From 1e7ddd837a0a104ef6f63856e01c6b455db38675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Sun, 3 Apr 2016 14:09:40 +0200 Subject: [PATCH 01/13] Added exif source --- vendor/exiv2-0.25/AUTHORS | 1 + vendor/exiv2-0.25/CMakeLists.txt | 255 + vendor/exiv2-0.25/CMake_msvc.txt | 80 + vendor/exiv2-0.25/COPYING | 340 + vendor/exiv2-0.25/COPYING-CMAKE-SCRIPTS | 22 + vendor/exiv2-0.25/FindExiv2.cmake | 80 + vendor/exiv2-0.25/README | 184 + vendor/exiv2-0.25/README-CMAKE | 233 + vendor/exiv2-0.25/TODO-CMAKE | 118 + vendor/exiv2-0.25/bootstrap.macports | 79 + vendor/exiv2-0.25/cm.bat | 83 + vendor/exiv2-0.25/config/CMakeChecks.txt | 330 + vendor/exiv2-0.25/config/Doxyfile | 1878 + vendor/exiv2-0.25/config/FindEXPAT.cmake | 31 + vendor/exiv2-0.25/config/FindIconv.cmake | 87 + vendor/exiv2-0.25/config/FindMSGFMT.cmake | 90 + vendor/exiv2-0.25/config/FindSSH.cmake | 31 + vendor/exiv2-0.25/config/Makefile.in | 147 + vendor/exiv2-0.25/config/ReadMe-Autotools.txt | 178 + vendor/exiv2-0.25/config/aclocal.m4 | 10200 ++++++ vendor/exiv2-0.25/config/config.guess | 1505 + vendor/exiv2-0.25/config/config.h.cmake | 280 + vendor/exiv2-0.25/config/config.h.in | 293 + vendor/exiv2-0.25/config/config.make | 62 + vendor/exiv2-0.25/config/config.mk.in | 203 + vendor/exiv2-0.25/config/config.rpath | 666 + vendor/exiv2-0.25/config/config.sub | 1739 + vendor/exiv2-0.25/config/configure.ac | 425 + vendor/exiv2-0.25/config/exiv2.lsm.cmake | 14 + vendor/exiv2-0.25/config/exiv2.pc.cmake | 11 + vendor/exiv2-0.25/config/exiv2.pc.in | 11 + .../exiv2-0.25/config/exiv2_uninstall.cmake | 22 + vendor/exiv2-0.25/config/exv_msvc.h.cmake | 5 + vendor/exiv2-0.25/config/install-sh | 519 + vendor/exiv2-0.25/config/ltmain.sh | 8413 +++++ vendor/exiv2-0.25/config/mkinstalldirs | 150 + vendor/exiv2-0.25/configure | 20007 +++++++++++ vendor/exiv2-0.25/contrib/buildForMac | 58 + vendor/exiv2-0.25/contrib/coverity.sh | 62 + vendor/exiv2-0.25/contrib/createEpsTestfiles | 33 + vendor/exiv2-0.25/contrib/diffeps | 18 + vendor/exiv2-0.25/contrib/makeUniversal | 30 + vendor/exiv2-0.25/contrib/organize/MD5.cpp | 235 + vendor/exiv2-0.25/contrib/organize/MD5.h | 50 + vendor/exiv2-0.25/contrib/organize/Makefile | 145 + vendor/exiv2-0.25/contrib/organize/README | 3 + vendor/exiv2-0.25/contrib/organize/boost.mk | 3 + .../exiv2-0.25/contrib/organize/helpers.cpp | 641 + .../exiv2-0.25/contrib/organize/helpers.hpp | 108 + .../exiv2-0.25/contrib/organize/organize.cpp | 766 + .../work/exiv2/contrib/organize/organize.cpp | 0 vendor/exiv2-0.25/doc/COPYING-XMPSDK | 30 + vendor/exiv2-0.25/doc/ChangeLog | 1591 + vendor/exiv2-0.25/doc/Makefile | 87 + vendor/exiv2-0.25/doc/README-XMP | 70 + vendor/exiv2-0.25/doc/cmake_doc.sh | 24 + vendor/exiv2-0.25/doc/cmd.txt | 50 + vendor/exiv2-0.25/doc/cmdxmp.txt | 85 + vendor/exiv2-0.25/doc/include/ascending.png | Bin 0 -> 201 bytes vendor/exiv2-0.25/doc/include/blank.png | Bin 0 -> 144 bytes vendor/exiv2-0.25/doc/include/descending.png | Bin 0 -> 201 bytes .../doc/include/exiv2-components.png | Bin 0 -> 6232 bytes .../exiv2-0.25/doc/include/sortabletable.css | 90 + .../exiv2-0.25/doc/include/sortabletable.js | 356 + vendor/exiv2-0.25/doc/index.html | 11 + vendor/exiv2-0.25/doc/templates/Makefile | 206 + .../exiv2-0.25/doc/templates/__CrwMapping__ | 146 + vendor/exiv2-0.25/doc/templates/__doctype__ | 1 + vendor/exiv2-0.25/doc/templates/__header2__ | 24 + vendor/exiv2-0.25/doc/templates/__index1__ | 10 + vendor/exiv2-0.25/doc/templates/__index2__ | 79 + vendor/exiv2-0.25/doc/templates/__index3__ | 7 + vendor/exiv2-0.25/doc/templates/__intro__ | 109 + vendor/exiv2-0.25/doc/templates/__maintitle__ | 1 + .../exiv2-0.25/doc/templates/__makernotes__ | 196 + .../doc/templates/crw-mapping.html.in | 36 + vendor/exiv2-0.25/doc/templates/exiv2.dot | 66 + vendor/exiv2-0.25/doc/templates/gen.py | 57 + .../doc/templates/getting-started.html.in | 17 + .../doc/templates/gpl-license.html.in | 389 + vendor/exiv2-0.25/doc/templates/iptc.awk | 48 + vendor/exiv2-0.25/doc/templates/iptc.xsl | 143 + .../doc/templates/makernote.html.in | 86 + .../doc/templates/tags-canon.html.in | 56 + .../doc/templates/tags-exif.html.in | 20 + .../doc/templates/tags-fujifilm.html.in | 19 + .../doc/templates/tags-iptc.html.in | 21 + .../doc/templates/tags-minolta.html.in | 38 + .../doc/templates/tags-nikon.html.in | 168 + .../doc/templates/tags-olympus.html.in | 61 + .../doc/templates/tags-panasonic.html.in | 26 + .../doc/templates/tags-pentax.html.in | 19 + .../doc/templates/tags-samsung.html.in | 26 + .../doc/templates/tags-sigma.html.in | 19 + .../doc/templates/tags-sony.html.in | 57 + .../doc/templates/tags-xmp-GPano.html.in | 42 + .../doc/templates/tags-xmp-MP.html.in | 46 + .../doc/templates/tags-xmp-MPRI.html.in | 27 + .../doc/templates/tags-xmp-MPReg.html.in | 27 + .../templates/tags-xmp-MicrosoftPhoto.html.in | 26 + .../doc/templates/tags-xmp-acdsee.html.in | 42 + .../doc/templates/tags-xmp-aux.html.in | 28 + .../doc/templates/tags-xmp-crs.html.in | 27 + .../doc/templates/tags-xmp-dc.html.in | 27 + .../doc/templates/tags-xmp-dcterms.html.in | 27 + .../doc/templates/tags-xmp-digiKam.html.in | 26 + .../doc/templates/tags-xmp-dwc.html.in | 29 + .../doc/templates/tags-xmp-exif.html.in | 35 + .../tags-xmp-expressionmedia.html.in | 28 + .../doc/templates/tags-xmp-iptc.html.in | 29 + .../doc/templates/tags-xmp-iptcExt.html.in | 31 + .../doc/templates/tags-xmp-kipi.html.in | 27 + .../doc/templates/tags-xmp-lr.html.in | 27 + .../doc/templates/tags-xmp-mediapro.html.in | 31 + .../doc/templates/tags-xmp-mwg-kw.html.in | 27 + .../doc/templates/tags-xmp-mwg-rs.html.in | 27 + .../doc/templates/tags-xmp-pdf.html.in | 26 + .../doc/templates/tags-xmp-photoshop.html.in | 27 + .../doc/templates/tags-xmp-plus.html.in | 29 + .../doc/templates/tags-xmp-tiff.html.in | 28 + .../doc/templates/tags-xmp-xmp.html.in | 27 + .../doc/templates/tags-xmp-xmpBJ.html.in | 27 + .../doc/templates/tags-xmp-xmpDM.html.in | 27 + .../doc/templates/tags-xmp-xmpMM.html.in | 34 + .../doc/templates/tags-xmp-xmpRights.html.in | 29 + .../doc/templates/tags-xmp-xmpTPg.html.in | 27 + vendor/exiv2-0.25/doc/templates/tags.awk | 44 + vendor/exiv2-0.25/doc/templates/tags.xsl | 110 + vendor/exiv2-0.25/doc/templates/xmp.awk | 43 + vendor/exiv2-0.25/doc/templates/xmp.xsl | 110 + vendor/exiv2-0.25/include/exiv2/asfvideo.hpp | 185 + vendor/exiv2-0.25/include/exiv2/basicio.hpp | 1304 + vendor/exiv2-0.25/include/exiv2/bmpimage.hpp | 134 + vendor/exiv2-0.25/include/exiv2/config.h | 51 + vendor/exiv2-0.25/include/exiv2/convert.hpp | 115 + vendor/exiv2-0.25/include/exiv2/cr2image.hpp | 160 + vendor/exiv2-0.25/include/exiv2/crwimage.hpp | 177 + vendor/exiv2-0.25/include/exiv2/datasets.hpp | 371 + .../exiv2-0.25/include/exiv2/easyaccess.hpp | 88 + vendor/exiv2-0.25/include/exiv2/epsimage.hpp | 128 + vendor/exiv2-0.25/include/exiv2/error.hpp | 331 + vendor/exiv2-0.25/include/exiv2/exif.hpp | 631 + vendor/exiv2-0.25/include/exiv2/exiv2.hpp | 73 + .../include/exiv2/exv_msvc-webready.h | 174 + vendor/exiv2-0.25/include/exiv2/exv_msvc.h | 174 + vendor/exiv2-0.25/include/exiv2/futils.hpp | 202 + vendor/exiv2-0.25/include/exiv2/gifimage.hpp | 135 + vendor/exiv2-0.25/include/exiv2/http.hpp | 23 + vendor/exiv2-0.25/include/exiv2/image.hpp | 653 + vendor/exiv2-0.25/include/exiv2/iptc.hpp | 326 + vendor/exiv2-0.25/include/exiv2/jp2image.hpp | 135 + vendor/exiv2-0.25/include/exiv2/jpgimage.hpp | 441 + .../include/exiv2/matroskavideo.hpp | 157 + vendor/exiv2-0.25/include/exiv2/metadatum.hpp | 321 + vendor/exiv2-0.25/include/exiv2/mrwimage.hpp | 140 + vendor/exiv2-0.25/include/exiv2/orfimage.hpp | 159 + vendor/exiv2-0.25/include/exiv2/pgfimage.hpp | 137 + vendor/exiv2-0.25/include/exiv2/pngimage.hpp | 140 + vendor/exiv2-0.25/include/exiv2/preview.hpp | 202 + .../exiv2-0.25/include/exiv2/properties.hpp | 310 + vendor/exiv2-0.25/include/exiv2/psdimage.hpp | 153 + .../include/exiv2/quicktimevideo.hpp | 253 + vendor/exiv2-0.25/include/exiv2/rafimage.hpp | 139 + vendor/exiv2-0.25/include/exiv2/riffvideo.hpp | 215 + vendor/exiv2-0.25/include/exiv2/rw2image.hpp | 159 + vendor/exiv2-0.25/include/exiv2/ssh.hpp | 109 + vendor/exiv2-0.25/include/exiv2/svn_version.h | 3 + vendor/exiv2-0.25/include/exiv2/tags.hpp | 238 + vendor/exiv2-0.25/include/exiv2/tgaimage.hpp | 136 + vendor/exiv2-0.25/include/exiv2/tiffimage.hpp | 225 + vendor/exiv2-0.25/include/exiv2/types.hpp | 554 + .../exiv2-0.25/include/exiv2/utilsvideo.hpp | 42 + vendor/exiv2-0.25/include/exiv2/value.hpp | 1764 + vendor/exiv2-0.25/include/exiv2/version.hpp | 196 + vendor/exiv2-0.25/include/exiv2/xmp.hpp | 419 + .../exiv2-0.25/include/exiv2/xmpsidecar.hpp | 120 + vendor/exiv2-0.25/msvc2003/ReadMe.txt | 217 + .../msvc2003/addmoddel/addmoddel.vcproj | 1 + .../msvc2003/convert-test/convert-test.vcproj | 1 + vendor/exiv2-0.25/msvc2003/copylibs.bat | 13 + vendor/exiv2-0.25/msvc2003/depends2.exe | Bin 0 -> 68608 bytes vendor/exiv2-0.25/msvc2003/diff.exe | Bin 0 -> 150528 bytes .../easyaccess-test/easyaccess-test.vcproj | 1 + .../msvc2003/exifcomment/exifcomment.vcproj | 1 + .../exifdata-test/exifdata-test.vcproj | 1 + .../msvc2003/exifdata/exifdata.vcproj | 1 + .../msvc2003/exifprint/exifprint.vcproj | 1 + .../msvc2003/exifvalue/exifvalue.vcproj | 1 + vendor/exiv2-0.25/msvc2003/exiv2.sln | 660 + vendor/exiv2-0.25/msvc2003/exiv2/exiv2.vcproj | 1 + .../msvc2003/exiv2json/exiv2json.vcproj | 1 + .../msvc2003/exiv2lib/exiv2lib.vcproj | 560 + .../msvc2003/exivsimple/exivsimple.cpp | 444 + .../msvc2003/exivsimple/exivsimple.h | 98 + .../msvc2003/exivsimple/exivsimple.vcproj | 1 + .../exiv2-0.25/msvc2003/exivsimple/stdafx.cpp | 29 + .../exiv2-0.25/msvc2003/exivsimple/stdafx.h | 34 + .../exiv2-0.25/msvc2003/geotag/geotag.vcproj | 1 + .../msvc2003/httptest/httptest.vcproj | 1 + .../exiv2-0.25/msvc2003/iotest/iotest.vcproj | 1 + .../msvc2003/iptceasy/iptceasy.vcproj | 1 + .../msvc2003/iptcprint/iptcprint.vcproj | 1 + .../msvc2003/iptctest/iptctest.vcproj | 1 + .../msvc2003/key-test/key-test.vcproj | 1 + .../largeiptc-test/largeiptc-test.vcproj | 1 + vendor/exiv2-0.25/msvc2003/libcharset1.dll | Bin 0 -> 11776 bytes vendor/exiv2-0.25/msvc2003/libiconv2.dll | Bin 0 -> 978432 bytes vendor/exiv2-0.25/msvc2003/libintl3.dll | Bin 0 -> 103424 bytes .../msvc2003/metacopy/metacopy.vcproj | 1 + .../msvc2003/mmap-test/mmap-test.vcproj | 1 + .../msvc2003/organize/organize.vcproj | 1 + .../msvc2003/path-test/path-test.vcproj | 1 + .../msvc2003/prevtest/prevtest.vcproj | 1 + .../msvc2003/remotetest/remotetest.vcproj | 1 + .../stringto-test/stringto-test.vcproj | 1 + .../msvc2003/taglist/taglist.vcproj | 1 + vendor/exiv2-0.25/msvc2003/test.jpg | Bin 0 -> 20599 bytes vendor/exiv2-0.25/msvc2003/test.png | Bin 0 -> 135047 bytes vendor/exiv2-0.25/msvc2003/test.tiff | Bin 0 -> 194752 bytes .../msvc2003/tiff-test/tiff-test.vcproj | 1 + .../msvc2003/utiltest/utiltest.vcproj | 1 + .../msvc2003/werror-test/werror-test.vcproj | 1 + .../msvc2003/write-test/write-test.vcproj | 1 + .../msvc2003/write2-test/write2-test.vcproj | 1 + .../msvc2003/xmpparse/xmpparse.vcproj | 1 + .../xmpparser-test/xmpparser-test.vcproj | 1 + .../msvc2003/xmpsample/xmpsample.vcproj | 1 + .../exiv2-0.25/msvc2003/xmpsdk/xmpsdk.vcproj | 1 + vendor/exiv2-0.25/msvc2005/ReadMe.txt | 532 + .../msvc2005/addmoddel/addmoddel.vcproj | 1 + vendor/exiv2-0.25/msvc2005/configure.bat | 3 + vendor/exiv2-0.25/msvc2005/configure.py | 415 + .../msvc2005/conntest/conntest.vcproj | 1 + .../msvc2005/convert-test/convert-test.vcproj | 1 + vendor/exiv2-0.25/msvc2005/copylibs.bat | 16 + .../easyaccess-test/easyaccess-test.vcproj | 1 + .../msvc2005/exifcomment/exifcomment.vcproj | 1 + .../exifdata-test/exifdata-test.vcproj | 1 + .../msvc2005/exifdata/exifdata.vcproj | 1 + .../msvc2005/exifprint/exifprint.vcproj | 1 + .../msvc2005/exifvalue/exifvalue.vcproj | 1 + vendor/exiv2-0.25/msvc2005/exiv2-webready.sln | 1071 + vendor/exiv2-0.25/msvc2005/exiv2.sln | 906 + vendor/exiv2-0.25/msvc2005/exiv2.vsprops | 19 + vendor/exiv2-0.25/msvc2005/exiv2/cleaner.bat | 2 + vendor/exiv2-0.25/msvc2005/exiv2/exiv2.vcproj | 1 + .../msvc2005/exiv2json/exiv2json.vcproj | 1 + .../msvc2005/exiv2lib/exiv2lib.vcproj | 1 + vendor/exiv2-0.25/msvc2005/expat/expat.vcproj | 1 + .../exiv2-0.25/msvc2005/expat201/expat.vcproj | 1 + .../exiv2-0.25/msvc2005/expat210/expat.vcproj | 1 + .../exiv2-0.25/msvc2005/geotag/geotag.vcproj | 1 + .../msvc2005/httptest/httptest.vcproj | 1 + .../exiv2-0.25/msvc2005/iotest/iotest.vcproj | 1 + .../msvc2005/iptceasy/iptceasy.vcproj | 1 + .../msvc2005/iptcprint/iptcprint.vcproj | 1 + .../msvc2005/iptctest/iptctest.vcproj | 1 + .../msvc2005/key-test/key-test.vcproj | 1 + .../largeiptc-test/largeiptc-test.vcproj | 1 + .../msvc2005/libcurl/libcurl.vcproj | 1 + .../msvc2005/libeay32/build_libeay32.bat | 55 + .../msvc2005/libeay32/libeay32.vcproj | 1 + .../msvc2005/libexiv2/build_libeay32.bat | 55 + .../msvc2005/libexiv2/libeay32.vcproj | 1 + .../msvc2005/libexiv2/libexiv2.vcproj | 1 + .../msvc2005/libexpat/libexpat.vcproj | 1 + .../msvc2005/libssh/include/config.h | 144 + .../exiv2-0.25/msvc2005/libssh/libssh.vcproj | 1 + .../msvc2005/metacopy/metacopy.vcproj | 1 + .../msvc2005/mmap-test/mmap-test.vcproj | 1 + .../msvc2005/openssl/build_openssl.bat | 80 + .../msvc2005/openssl/openssl.vcproj | 1 + .../msvc2005/path-test/path-test.vcproj | 1 + .../msvc2005/prevtest/prevtest.vcproj | 1 + .../msvc2005/remotetest/remotetest.vcproj | 1 + .../msvc2005/ssleay32/build_ssleay32.bat | 55 + .../msvc2005/ssleay32/ssleay32.vcproj | 1 + .../stringto-test/stringto-test.vcproj | 1 + .../msvc2005/taglist/taglist.vcproj | 1 + .../exiv2-0.25/msvc2005/testimages/test.jpg | Bin 0 -> 20599 bytes .../exiv2-0.25/msvc2005/testimages/test.png | Bin 0 -> 135047 bytes .../exiv2-0.25/msvc2005/testimages/test.tiff | Bin 0 -> 194752 bytes .../msvc2005/tiff-test/tiff-test.vcproj | 1 + .../msvc2005/tools/bin/depends32.exe | Bin 0 -> 68608 bytes .../msvc2005/tools/bin/depends64.exe | Bin 0 -> 75776 bytes vendor/exiv2-0.25/msvc2005/tools/bin/rm.exe | Bin 0 -> 61440 bytes vendor/exiv2-0.25/msvc2005/tools/bin/sed.exe | Bin 0 -> 49152 bytes .../msvc2005/tools/depends/Depends2.suo | Bin 0 -> 32768 bytes .../msvc2005/tools/depends/ReadMe.txt | 13 + .../msvc2005/tools/depends/depends.sln | 25 + .../msvc2005/tools/depends/depends.vcproj | 1 + .../tools/depends/include/DEPENDENCYLIST.H | 57 + .../msvc2005/tools/depends/include/EXEFILE.H | 54 + .../tools/depends/include/MEMORYMAPPEDFILE.H | 35 + .../msvc2005/tools/depends/include/PEEXE.H | 98 + .../tools/depends/include/modulefileinfo.h | 44 + .../tools/depends/src/DEPENDENCYLIST.CPP | 187 + .../msvc2005/tools/depends/src/EXEFILE.CPP | 72 + .../tools/depends/src/MEMORYMAPPEDFILE.CPP | 75 + .../msvc2005/tools/depends/src/PEEXE.CPP | 99 + .../msvc2005/tools/depends/src/depends.cpp | 321 + .../tools/depends/src/modulefileinfo.cpp | 42 + .../msvc2005/tools/depends/stdafx.cpp | 8 + .../msvc2005/tools/depends/stdafx.h | 15 + .../msvc2005/tools/depends/targetver.h | 13 + .../msvc2005/tools/issue984/issue984.cpp | 23 + .../msvc2005/tools/issue984/issue984.exe | Bin 0 -> 53248 bytes vendor/exiv2-0.25/msvc2005/tools/ppxml | 14 + .../msvc2005/tools/python/depend.py | 84 + .../exiv2-0.25/msvc2005/tools/python/tee.py | 127 + .../exiv2-0.25/msvc2005/tools/rm/ReadMe.txt | 21 + vendor/exiv2-0.25/msvc2005/tools/rm/rm.cpp | 308 + .../msvc2005/utiltest/utiltest.vcproj | 1 + .../msvc2005/werror-test/werror-test.vcproj | 1 + .../msvc2005/write-test/write-test.vcproj | 1 + .../msvc2005/write2-test/write2-test.vcproj | 1 + .../msvc2005/xmpparse/xmpparse.vcproj | 1 + .../xmpparser-test/xmpparser-test.vcproj | 1 + .../msvc2005/xmpsample/xmpsample.vcproj | 1 + .../exiv2-0.25/msvc2005/xmpsdk/xmpsdk.vcproj | 1 + vendor/exiv2-0.25/msvc2005/zlib/zlib.vcproj | 1 + .../exiv2-0.25/msvc2005/zlib123/zlib.vcproj | 1 + .../exiv2-0.25/msvc2005/zlib125/zlib.vcproj | 1 + .../exiv2-0.25/msvc2005/zlib127/zlib.vcproj | 1 + vendor/exiv2-0.25/po/CMakeLists.txt | 33 + vendor/exiv2-0.25/po/ChangeLog | 12 + vendor/exiv2-0.25/po/LINGUAS | 2 + vendor/exiv2-0.25/po/Makefile.in.in | 385 + vendor/exiv2-0.25/po/Makevars | 41 + vendor/exiv2-0.25/po/POTFILES.in | 22 + vendor/exiv2-0.25/po/Rules-quot | 47 + vendor/exiv2-0.25/po/boldquot.sed | 10 + vendor/exiv2-0.25/po/bs.po | 27028 +++++++++++++++ vendor/exiv2-0.25/po/de.po | 27939 +++++++++++++++ vendor/exiv2-0.25/po/en@boldquot.header | 25 + vendor/exiv2-0.25/po/en@quot.header | 22 + vendor/exiv2-0.25/po/es.po | 27057 +++++++++++++++ vendor/exiv2-0.25/po/exiv2.pot | 25135 ++++++++++++++ vendor/exiv2-0.25/po/fi.po | 26720 +++++++++++++++ vendor/exiv2-0.25/po/fr.po | 27890 +++++++++++++++ vendor/exiv2-0.25/po/gl.po | 26992 +++++++++++++++ vendor/exiv2-0.25/po/insert-header.sin | 23 + vendor/exiv2-0.25/po/ms.po | 27009 +++++++++++++++ vendor/exiv2-0.25/po/pl.po | 27574 +++++++++++++++ vendor/exiv2-0.25/po/pt.po | 27812 +++++++++++++++ vendor/exiv2-0.25/po/quot.sed | 6 + vendor/exiv2-0.25/po/remove-potcdate.sin | 19 + vendor/exiv2-0.25/po/ru.po | 28329 ++++++++++++++++ vendor/exiv2-0.25/po/sk.po | 27943 +++++++++++++++ vendor/exiv2-0.25/po/sv.po | 27186 +++++++++++++++ vendor/exiv2-0.25/po/ug.po | 26543 +++++++++++++++ vendor/exiv2-0.25/po/uk.po | 26887 +++++++++++++++ vendor/exiv2-0.25/po/vi.po | 26963 +++++++++++++++ vendor/exiv2-0.25/samples/CMakeLists.txt | 86 + vendor/exiv2-0.25/samples/Jzon.cpp | 1301 + vendor/exiv2-0.25/samples/Jzon.h | 474 + vendor/exiv2-0.25/samples/Makefile | 205 + vendor/exiv2-0.25/samples/addmoddel.cpp | 109 + vendor/exiv2-0.25/samples/conntest.cpp | 158 + vendor/exiv2-0.25/samples/convert-test.cpp | 37 + vendor/exiv2-0.25/samples/easyaccess-test.cpp | 73 + vendor/exiv2-0.25/samples/exifcomment.cpp | 66 + vendor/exiv2-0.25/samples/exifdata-test.cpp | 136 + vendor/exiv2-0.25/samples/exifdata.cpp | 201 + vendor/exiv2-0.25/samples/exifprint.cpp | 52 + vendor/exiv2-0.25/samples/exifvalue.cpp | 43 + vendor/exiv2-0.25/samples/exiv2json.cpp | 316 + vendor/exiv2-0.25/samples/geotag.cpp | 960 + vendor/exiv2-0.25/samples/httptest.cpp | 100 + vendor/exiv2-0.25/samples/iotest.cpp | 225 + vendor/exiv2-0.25/samples/iptceasy.cpp | 49 + vendor/exiv2-0.25/samples/iptcprint.cpp | 50 + vendor/exiv2-0.25/samples/iptctest.cpp | 174 + vendor/exiv2-0.25/samples/key-test.cpp | 199 + vendor/exiv2-0.25/samples/largeiptc-test.cpp | 69 + vendor/exiv2-0.25/samples/metacopy.cpp | 188 + vendor/exiv2-0.25/samples/metacopy.hpp | 86 + vendor/exiv2-0.25/samples/mmap-test.cpp | 41 + vendor/exiv2-0.25/samples/path-test.cpp | 39 + vendor/exiv2-0.25/samples/prevtest.cpp | 46 + vendor/exiv2-0.25/samples/remotetest.cpp | 105 + vendor/exiv2-0.25/samples/stringto-test.cpp | 77 + vendor/exiv2-0.25/samples/taglist.cpp | 70 + vendor/exiv2-0.25/samples/tiff-test.cpp | 106 + .../exiv2-0.25/samples/tiffaddpath-test.cpp | 139 + vendor/exiv2-0.25/samples/werror-test.cpp | 30 + vendor/exiv2-0.25/samples/write-test.cpp | 218 + vendor/exiv2-0.25/samples/write2-test.cpp | 240 + vendor/exiv2-0.25/samples/xmpparse.cpp | 50 + vendor/exiv2-0.25/samples/xmpparser-test.cpp | 66 + vendor/exiv2-0.25/samples/xmpsample.cpp | 216 + vendor/exiv2-0.25/src/CMakeLists.txt | 327 + vendor/exiv2-0.25/src/Makefile | 343 + vendor/exiv2-0.25/src/TODO | 39 + vendor/exiv2-0.25/src/actions.cpp | 2057 ++ vendor/exiv2-0.25/src/actions.hpp | 417 + vendor/exiv2-0.25/src/asfvideo.cpp | 821 + vendor/exiv2-0.25/src/basicio.cpp | 2675 ++ vendor/exiv2-0.25/src/bmpimage.cpp | 159 + vendor/exiv2-0.25/src/canonmn.cpp | 1868 + vendor/exiv2-0.25/src/canonmn_int.hpp | 150 + vendor/exiv2-0.25/src/casiomn.cpp | 603 + vendor/exiv2-0.25/src/casiomn_int.hpp | 84 + vendor/exiv2-0.25/src/convert.cpp | 1596 + vendor/exiv2-0.25/src/cr2image.cpp | 298 + vendor/exiv2-0.25/src/cr2image_int.hpp | 85 + vendor/exiv2-0.25/src/crwedit.cpp | 133 + vendor/exiv2-0.25/src/crwimage.cpp | 1421 + vendor/exiv2-0.25/src/crwimage_int.hpp | 752 + vendor/exiv2-0.25/src/crwparse.cpp | 47 + vendor/exiv2-0.25/src/datasets.cpp | 737 + vendor/exiv2-0.25/src/doxygen.hpp.in | 145 + vendor/exiv2-0.25/src/easyaccess.cpp | 491 + vendor/exiv2-0.25/src/epsimage.cpp | 1191 + vendor/exiv2-0.25/src/error.cpp | 211 + vendor/exiv2-0.25/src/exif.cpp | 945 + vendor/exiv2-0.25/src/exiv2.1 | 651 + vendor/exiv2-0.25/src/exiv2.cpp | 1369 + vendor/exiv2-0.25/src/exiv2app.hpp | 315 + vendor/exiv2-0.25/src/fujimn.cpp | 290 + vendor/exiv2-0.25/src/fujimn_int.hpp | 65 + vendor/exiv2-0.25/src/futils.cpp | 444 + vendor/exiv2-0.25/src/getopt_win32.c | 512 + vendor/exiv2-0.25/src/getopt_win32.h | 84 + vendor/exiv2-0.25/src/gifimage.cpp | 141 + vendor/exiv2-0.25/src/http.cpp | 424 + vendor/exiv2-0.25/src/i18n.h | 50 + vendor/exiv2-0.25/src/image.cpp | 628 + vendor/exiv2-0.25/src/image_int.hpp | 59 + vendor/exiv2-0.25/src/iptc.cpp | 556 + vendor/exiv2-0.25/src/jp2image.cpp | 629 + vendor/exiv2-0.25/src/jpgimage.cpp | 1105 + vendor/exiv2-0.25/src/localtime.c | 1444 + vendor/exiv2-0.25/src/makernote.cpp | 1235 + vendor/exiv2-0.25/src/makernote_int.hpp | 753 + vendor/exiv2-0.25/src/matroskavideo.cpp | 770 + vendor/exiv2-0.25/src/metadatum.cpp | 96 + vendor/exiv2-0.25/src/minoltamn.cpp | 2184 ++ vendor/exiv2-0.25/src/minoltamn_int.hpp | 162 + vendor/exiv2-0.25/src/mrwimage.cpp | 183 + vendor/exiv2-0.25/src/mrwthumb.cpp | 49 + vendor/exiv2-0.25/src/nikonmn.cpp | 2682 ++ vendor/exiv2-0.25/src/nikonmn_int.hpp | 284 + vendor/exiv2-0.25/src/olympusmn.cpp | 1689 + vendor/exiv2-0.25/src/olympusmn_int.hpp | 130 + vendor/exiv2-0.25/src/orfimage.cpp | 284 + vendor/exiv2-0.25/src/orfimage_int.hpp | 75 + vendor/exiv2-0.25/src/panasonicmn.cpp | 757 + vendor/exiv2-0.25/src/panasonicmn_int.hpp | 96 + vendor/exiv2-0.25/src/pentaxmn.cpp | 1414 + vendor/exiv2-0.25/src/pentaxmn_int.hpp | 128 + vendor/exiv2-0.25/src/pgfimage.cpp | 323 + vendor/exiv2-0.25/src/pngchunk.cpp | 684 + vendor/exiv2-0.25/src/pngchunk_int.hpp | 196 + vendor/exiv2-0.25/src/pngimage.cpp | 490 + vendor/exiv2-0.25/src/preview.cpp | 1162 + vendor/exiv2-0.25/src/private.h | 210 + vendor/exiv2-0.25/src/properties.cpp | 2532 ++ vendor/exiv2-0.25/src/psdimage.cpp | 712 + vendor/exiv2-0.25/src/quicktimevideo.cpp | 1661 + vendor/exiv2-0.25/src/rafimage.cpp | 160 + vendor/exiv2-0.25/src/rcsid_int.hpp | 67 + vendor/exiv2-0.25/src/riffvideo.cpp | 1255 + vendor/exiv2-0.25/src/rw2image.cpp | 282 + vendor/exiv2-0.25/src/rw2image_int.hpp | 71 + vendor/exiv2-0.25/src/samsungmn.cpp | 211 + vendor/exiv2-0.25/src/samsungmn_int.hpp | 69 + vendor/exiv2-0.25/src/sigmamn.cpp | 176 + vendor/exiv2-0.25/src/sigmamn_int.hpp | 76 + vendor/exiv2-0.25/src/sonymn.cpp | 777 + vendor/exiv2-0.25/src/sonymn_int.hpp | 81 + vendor/exiv2-0.25/src/ssh.cpp | 155 + vendor/exiv2-0.25/src/svn_version.h.in | 3 + vendor/exiv2-0.25/src/svn_version.sh | 43 + vendor/exiv2-0.25/src/tags.cpp | 3161 ++ vendor/exiv2-0.25/src/tags_int.hpp | 447 + vendor/exiv2-0.25/src/tgaimage.cpp | 176 + vendor/exiv2-0.25/src/tiff-test.cpp | 76 + vendor/exiv2-0.25/src/tiffcomposite.cpp | 1913 ++ vendor/exiv2-0.25/src/tiffcomposite_int.hpp | 1670 + vendor/exiv2-0.25/src/tifffwd_int.hpp | 120 + vendor/exiv2-0.25/src/tiffimage.cpp | 2513 ++ vendor/exiv2-0.25/src/tiffimage_int.hpp | 492 + vendor/exiv2-0.25/src/tiffmn-test.cpp | 212 + vendor/exiv2-0.25/src/tiffvisitor.cpp | 1638 + vendor/exiv2-0.25/src/tiffvisitor_int.hpp | 736 + vendor/exiv2-0.25/src/timegm.h | 94 + vendor/exiv2-0.25/src/types.cpp | 670 + vendor/exiv2-0.25/src/tzfile.h | 193 + vendor/exiv2-0.25/src/utils.cpp | 162 + vendor/exiv2-0.25/src/utils.hpp | 173 + vendor/exiv2-0.25/src/utilsvideo.cpp | 66 + vendor/exiv2-0.25/src/utiltest.cpp | 93 + vendor/exiv2-0.25/src/value.cpp | 1230 + vendor/exiv2-0.25/src/version.cpp | 520 + vendor/exiv2-0.25/src/xmp.cpp | 879 + vendor/exiv2-0.25/src/xmpdump.cpp | 35 + vendor/exiv2-0.25/src/xmpsidecar.cpp | 210 + vendor/exiv2-0.25/xmpsdk/CMakeLists.txt | 32 + vendor/exiv2-0.25/xmpsdk/include/MD5.h | 50 + .../xmpsdk/include/TXMPIterator.hpp | 235 + vendor/exiv2-0.25/xmpsdk/include/TXMPMeta.hpp | 1803 + .../exiv2-0.25/xmpsdk/include/TXMPUtils.hpp | 965 + vendor/exiv2-0.25/xmpsdk/include/XMP.incl_cpp | 63 + vendor/exiv2-0.25/xmpsdk/include/XMPSDK.hpp | 89 + vendor/exiv2-0.25/xmpsdk/include/XMP_Const.h | 1330 + .../xmpsdk/include/XMP_Environment.h | 164 + .../exiv2-0.25/xmpsdk/include/XMP_Version.h | 45 + .../include/client-glue/TXMPIterator.incl_cpp | 226 + .../include/client-glue/TXMPMeta.incl_cpp | 935 + .../include/client-glue/TXMPUtils.incl_cpp | 493 + .../xmpsdk/include/client-glue/WXMPFiles.hpp | 167 + .../include/client-glue/WXMPIterator.hpp | 83 + .../xmpsdk/include/client-glue/WXMPMeta.hpp | 622 + .../xmpsdk/include/client-glue/WXMPUtils.hpp | 322 + .../include/client-glue/WXMP_Common.hpp | 123 + vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.cpp | 504 + vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.hpp | 50 + vendor/exiv2-0.25/xmpsdk/src/MD5.cpp | 235 + vendor/exiv2-0.25/xmpsdk/src/Makefile | 153 + vendor/exiv2-0.25/xmpsdk/src/ParseRDF.cpp | 1296 + .../xmpsdk/src/UnicodeConversions.cpp | 1665 + .../xmpsdk/src/UnicodeConversions.hpp | 121 + .../xmpsdk/src/UnicodeInlines.incl_cpp | 129 + vendor/exiv2-0.25/xmpsdk/src/WXMPIterator.cpp | 188 + vendor/exiv2-0.25/xmpsdk/src/WXMPMeta.cpp | 1310 + vendor/exiv2-0.25/xmpsdk/src/WXMPUtils.cpp | 626 + .../xmpsdk/src/XMLParserAdapter.hpp | 140 + vendor/exiv2-0.25/xmpsdk/src/XML_Node.cpp | 463 + vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.cpp | 1468 + vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.hpp | 534 + vendor/exiv2-0.25/xmpsdk/src/XMPIterator.cpp | 736 + vendor/exiv2-0.25/xmpsdk/src/XMPIterator.hpp | 148 + .../exiv2-0.25/xmpsdk/src/XMPMeta-GetSet.cpp | 1212 + .../exiv2-0.25/xmpsdk/src/XMPMeta-Parse.cpp | 1291 + .../xmpsdk/src/XMPMeta-Serialize.cpp | 1343 + vendor/exiv2-0.25/xmpsdk/src/XMPMeta.cpp | 1649 + vendor/exiv2-0.25/xmpsdk/src/XMPMeta.hpp | 418 + .../xmpsdk/src/XMPUtils-FileInfo.cpp | 1346 + vendor/exiv2-0.25/xmpsdk/src/XMPUtils.cpp | 2135 ++ vendor/exiv2-0.25/xmpsdk/src/XMPUtils.hpp | 221 + vendor/exiv2-0.25/xmpsdk/src/XMP_BuildInfo.h | 22 + 542 files changed, 614037 insertions(+) create mode 100644 vendor/exiv2-0.25/AUTHORS create mode 100644 vendor/exiv2-0.25/CMakeLists.txt create mode 100644 vendor/exiv2-0.25/CMake_msvc.txt create mode 100644 vendor/exiv2-0.25/COPYING create mode 100644 vendor/exiv2-0.25/COPYING-CMAKE-SCRIPTS create mode 100755 vendor/exiv2-0.25/FindExiv2.cmake create mode 100644 vendor/exiv2-0.25/README create mode 100644 vendor/exiv2-0.25/README-CMAKE create mode 100644 vendor/exiv2-0.25/TODO-CMAKE create mode 100755 vendor/exiv2-0.25/bootstrap.macports create mode 100755 vendor/exiv2-0.25/cm.bat create mode 100644 vendor/exiv2-0.25/config/CMakeChecks.txt create mode 100644 vendor/exiv2-0.25/config/Doxyfile create mode 100644 vendor/exiv2-0.25/config/FindEXPAT.cmake create mode 100644 vendor/exiv2-0.25/config/FindIconv.cmake create mode 100644 vendor/exiv2-0.25/config/FindMSGFMT.cmake create mode 100644 vendor/exiv2-0.25/config/FindSSH.cmake create mode 100644 vendor/exiv2-0.25/config/Makefile.in create mode 100644 vendor/exiv2-0.25/config/ReadMe-Autotools.txt create mode 100644 vendor/exiv2-0.25/config/aclocal.m4 create mode 100755 vendor/exiv2-0.25/config/config.guess create mode 100644 vendor/exiv2-0.25/config/config.h.cmake create mode 100644 vendor/exiv2-0.25/config/config.h.in create mode 100644 vendor/exiv2-0.25/config/config.make create mode 100644 vendor/exiv2-0.25/config/config.mk.in create mode 100755 vendor/exiv2-0.25/config/config.rpath create mode 100755 vendor/exiv2-0.25/config/config.sub create mode 100644 vendor/exiv2-0.25/config/configure.ac create mode 100644 vendor/exiv2-0.25/config/exiv2.lsm.cmake create mode 100644 vendor/exiv2-0.25/config/exiv2.pc.cmake create mode 100644 vendor/exiv2-0.25/config/exiv2.pc.in create mode 100644 vendor/exiv2-0.25/config/exiv2_uninstall.cmake create mode 100644 vendor/exiv2-0.25/config/exv_msvc.h.cmake create mode 100755 vendor/exiv2-0.25/config/install-sh create mode 100755 vendor/exiv2-0.25/config/ltmain.sh create mode 100755 vendor/exiv2-0.25/config/mkinstalldirs create mode 100755 vendor/exiv2-0.25/configure create mode 100755 vendor/exiv2-0.25/contrib/buildForMac create mode 100755 vendor/exiv2-0.25/contrib/coverity.sh create mode 100755 vendor/exiv2-0.25/contrib/createEpsTestfiles create mode 100755 vendor/exiv2-0.25/contrib/diffeps create mode 100755 vendor/exiv2-0.25/contrib/makeUniversal create mode 100644 vendor/exiv2-0.25/contrib/organize/MD5.cpp create mode 100644 vendor/exiv2-0.25/contrib/organize/MD5.h create mode 100644 vendor/exiv2-0.25/contrib/organize/Makefile create mode 100644 vendor/exiv2-0.25/contrib/organize/README create mode 100644 vendor/exiv2-0.25/contrib/organize/boost.mk create mode 100644 vendor/exiv2-0.25/contrib/organize/helpers.cpp create mode 100644 vendor/exiv2-0.25/contrib/organize/helpers.hpp create mode 100644 vendor/exiv2-0.25/contrib/organize/organize.cpp create mode 100644 vendor/exiv2-0.25/contrib/organize/work/exiv2/contrib/organize/organize.cpp create mode 100644 vendor/exiv2-0.25/doc/COPYING-XMPSDK create mode 100644 vendor/exiv2-0.25/doc/ChangeLog create mode 100644 vendor/exiv2-0.25/doc/Makefile create mode 100644 vendor/exiv2-0.25/doc/README-XMP create mode 100755 vendor/exiv2-0.25/doc/cmake_doc.sh create mode 100644 vendor/exiv2-0.25/doc/cmd.txt create mode 100644 vendor/exiv2-0.25/doc/cmdxmp.txt create mode 100644 vendor/exiv2-0.25/doc/include/ascending.png create mode 100644 vendor/exiv2-0.25/doc/include/blank.png create mode 100644 vendor/exiv2-0.25/doc/include/descending.png create mode 100644 vendor/exiv2-0.25/doc/include/exiv2-components.png create mode 100644 vendor/exiv2-0.25/doc/include/sortabletable.css create mode 100644 vendor/exiv2-0.25/doc/include/sortabletable.js create mode 100644 vendor/exiv2-0.25/doc/index.html create mode 100644 vendor/exiv2-0.25/doc/templates/Makefile create mode 100644 vendor/exiv2-0.25/doc/templates/__CrwMapping__ create mode 100644 vendor/exiv2-0.25/doc/templates/__doctype__ create mode 100644 vendor/exiv2-0.25/doc/templates/__header2__ create mode 100644 vendor/exiv2-0.25/doc/templates/__index1__ create mode 100644 vendor/exiv2-0.25/doc/templates/__index2__ create mode 100644 vendor/exiv2-0.25/doc/templates/__index3__ create mode 100644 vendor/exiv2-0.25/doc/templates/__intro__ create mode 100644 vendor/exiv2-0.25/doc/templates/__maintitle__ create mode 100644 vendor/exiv2-0.25/doc/templates/__makernotes__ create mode 100644 vendor/exiv2-0.25/doc/templates/crw-mapping.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/exiv2.dot create mode 100755 vendor/exiv2-0.25/doc/templates/gen.py create mode 100644 vendor/exiv2-0.25/doc/templates/getting-started.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/gpl-license.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/iptc.awk create mode 100644 vendor/exiv2-0.25/doc/templates/iptc.xsl create mode 100644 vendor/exiv2-0.25/doc/templates/makernote.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-canon.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-exif.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-fujifilm.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-iptc.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-minolta.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-nikon.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-olympus.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-panasonic.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-pentax.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-samsung.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-sigma.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-sony.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-GPano.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-MP.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-MPRI.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-MPReg.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-MicrosoftPhoto.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-acdsee.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-aux.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-crs.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-dc.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-dcterms.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-digiKam.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-dwc.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-exif.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-expressionmedia.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-iptc.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-iptcExt.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-kipi.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-lr.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-mediapro.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-kw.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-rs.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-pdf.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-photoshop.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-plus.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-tiff.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-xmp.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-xmpBJ.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-xmpDM.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-xmpMM.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-xmpRights.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags-xmp-xmpTPg.html.in create mode 100644 vendor/exiv2-0.25/doc/templates/tags.awk create mode 100644 vendor/exiv2-0.25/doc/templates/tags.xsl create mode 100644 vendor/exiv2-0.25/doc/templates/xmp.awk create mode 100644 vendor/exiv2-0.25/doc/templates/xmp.xsl create mode 100644 vendor/exiv2-0.25/include/exiv2/asfvideo.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/basicio.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/bmpimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/config.h create mode 100644 vendor/exiv2-0.25/include/exiv2/convert.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/cr2image.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/crwimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/datasets.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/easyaccess.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/epsimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/error.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/exif.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/exiv2.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/exv_msvc-webready.h create mode 100644 vendor/exiv2-0.25/include/exiv2/exv_msvc.h create mode 100644 vendor/exiv2-0.25/include/exiv2/futils.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/gifimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/http.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/image.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/iptc.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/jp2image.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/jpgimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/matroskavideo.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/metadatum.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/mrwimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/orfimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/pgfimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/pngimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/preview.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/properties.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/psdimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/quicktimevideo.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/rafimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/riffvideo.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/rw2image.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/ssh.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/svn_version.h create mode 100644 vendor/exiv2-0.25/include/exiv2/tags.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/tgaimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/tiffimage.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/types.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/utilsvideo.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/value.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/version.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/xmp.hpp create mode 100644 vendor/exiv2-0.25/include/exiv2/xmpsidecar.hpp create mode 100644 vendor/exiv2-0.25/msvc2003/ReadMe.txt create mode 100644 vendor/exiv2-0.25/msvc2003/addmoddel/addmoddel.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/convert-test/convert-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/copylibs.bat create mode 100644 vendor/exiv2-0.25/msvc2003/depends2.exe create mode 100644 vendor/exiv2-0.25/msvc2003/diff.exe create mode 100644 vendor/exiv2-0.25/msvc2003/easyaccess-test/easyaccess-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exifcomment/exifcomment.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exifdata-test/exifdata-test.vcproj create mode 100755 vendor/exiv2-0.25/msvc2003/exifdata/exifdata.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exifprint/exifprint.vcproj create mode 100755 vendor/exiv2-0.25/msvc2003/exifvalue/exifvalue.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exiv2.sln create mode 100644 vendor/exiv2-0.25/msvc2003/exiv2/exiv2.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exiv2json/exiv2json.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exiv2lib/exiv2lib.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.cpp create mode 100644 vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.h create mode 100644 vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.cpp create mode 100644 vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.h create mode 100644 vendor/exiv2-0.25/msvc2003/geotag/geotag.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/httptest/httptest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/iotest/iotest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/iptceasy/iptceasy.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/iptcprint/iptcprint.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/iptctest/iptctest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/key-test/key-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/largeiptc-test/largeiptc-test.vcproj create mode 100755 vendor/exiv2-0.25/msvc2003/libcharset1.dll create mode 100755 vendor/exiv2-0.25/msvc2003/libiconv2.dll create mode 100755 vendor/exiv2-0.25/msvc2003/libintl3.dll create mode 100644 vendor/exiv2-0.25/msvc2003/metacopy/metacopy.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/mmap-test/mmap-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/organize/organize.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/path-test/path-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/prevtest/prevtest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/remotetest/remotetest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/stringto-test/stringto-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/taglist/taglist.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/test.jpg create mode 100644 vendor/exiv2-0.25/msvc2003/test.png create mode 100644 vendor/exiv2-0.25/msvc2003/test.tiff create mode 100644 vendor/exiv2-0.25/msvc2003/tiff-test/tiff-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/utiltest/utiltest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/werror-test/werror-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/write-test/write-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/write2-test/write2-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/xmpparse/xmpparse.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/xmpparser-test/xmpparser-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/xmpsample/xmpsample.vcproj create mode 100644 vendor/exiv2-0.25/msvc2003/xmpsdk/xmpsdk.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/ReadMe.txt create mode 100644 vendor/exiv2-0.25/msvc2005/addmoddel/addmoddel.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/configure.bat create mode 100755 vendor/exiv2-0.25/msvc2005/configure.py create mode 100644 vendor/exiv2-0.25/msvc2005/conntest/conntest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/convert-test/convert-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/copylibs.bat create mode 100644 vendor/exiv2-0.25/msvc2005/easyaccess-test/easyaccess-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/exifcomment/exifcomment.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/exifdata-test/exifdata-test.vcproj create mode 100755 vendor/exiv2-0.25/msvc2005/exifdata/exifdata.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/exifprint/exifprint.vcproj create mode 100755 vendor/exiv2-0.25/msvc2005/exifvalue/exifvalue.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2-webready.sln create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2.sln create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2.vsprops create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2/cleaner.bat create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2/exiv2.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2json/exiv2json.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/exiv2lib/exiv2lib.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/expat/expat.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/expat201/expat.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/expat210/expat.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/geotag/geotag.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/httptest/httptest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/iotest/iotest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/iptceasy/iptceasy.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/iptcprint/iptcprint.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/iptctest/iptctest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/key-test/key-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/largeiptc-test/largeiptc-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/libcurl/libcurl.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/libeay32/build_libeay32.bat create mode 100644 vendor/exiv2-0.25/msvc2005/libeay32/libeay32.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/libexiv2/build_libeay32.bat create mode 100644 vendor/exiv2-0.25/msvc2005/libexiv2/libeay32.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/libexiv2/libexiv2.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/libexpat/libexpat.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/libssh/include/config.h create mode 100644 vendor/exiv2-0.25/msvc2005/libssh/libssh.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/metacopy/metacopy.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/mmap-test/mmap-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/openssl/build_openssl.bat create mode 100644 vendor/exiv2-0.25/msvc2005/openssl/openssl.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/path-test/path-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/prevtest/prevtest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/remotetest/remotetest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/ssleay32/build_ssleay32.bat create mode 100644 vendor/exiv2-0.25/msvc2005/ssleay32/ssleay32.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/stringto-test/stringto-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/taglist/taglist.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/testimages/test.jpg create mode 100644 vendor/exiv2-0.25/msvc2005/testimages/test.png create mode 100644 vendor/exiv2-0.25/msvc2005/testimages/test.tiff create mode 100644 vendor/exiv2-0.25/msvc2005/tiff-test/tiff-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/tools/bin/depends32.exe create mode 100644 vendor/exiv2-0.25/msvc2005/tools/bin/depends64.exe create mode 100755 vendor/exiv2-0.25/msvc2005/tools/bin/rm.exe create mode 100755 vendor/exiv2-0.25/msvc2005/tools/bin/sed.exe create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/Depends2.suo create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/ReadMe.txt create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/depends.sln create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/depends.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/include/DEPENDENCYLIST.H create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/include/EXEFILE.H create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/include/MEMORYMAPPEDFILE.H create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/include/PEEXE.H create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/include/modulefileinfo.h create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/src/DEPENDENCYLIST.CPP create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/src/EXEFILE.CPP create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/src/MEMORYMAPPEDFILE.CPP create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/src/PEEXE.CPP create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/src/depends.cpp create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/src/modulefileinfo.cpp create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.cpp create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.h create mode 100644 vendor/exiv2-0.25/msvc2005/tools/depends/targetver.h create mode 100644 vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.cpp create mode 100755 vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.exe create mode 100755 vendor/exiv2-0.25/msvc2005/tools/ppxml create mode 100755 vendor/exiv2-0.25/msvc2005/tools/python/depend.py create mode 100755 vendor/exiv2-0.25/msvc2005/tools/python/tee.py create mode 100644 vendor/exiv2-0.25/msvc2005/tools/rm/ReadMe.txt create mode 100644 vendor/exiv2-0.25/msvc2005/tools/rm/rm.cpp create mode 100644 vendor/exiv2-0.25/msvc2005/utiltest/utiltest.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/werror-test/werror-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/write-test/write-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/write2-test/write2-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/xmpparse/xmpparse.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/xmpparser-test/xmpparser-test.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/xmpsample/xmpsample.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/xmpsdk/xmpsdk.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/zlib/zlib.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/zlib123/zlib.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/zlib125/zlib.vcproj create mode 100644 vendor/exiv2-0.25/msvc2005/zlib127/zlib.vcproj create mode 100644 vendor/exiv2-0.25/po/CMakeLists.txt create mode 100644 vendor/exiv2-0.25/po/ChangeLog create mode 100644 vendor/exiv2-0.25/po/LINGUAS create mode 100644 vendor/exiv2-0.25/po/Makefile.in.in create mode 100644 vendor/exiv2-0.25/po/Makevars create mode 100644 vendor/exiv2-0.25/po/POTFILES.in create mode 100644 vendor/exiv2-0.25/po/Rules-quot create mode 100644 vendor/exiv2-0.25/po/boldquot.sed create mode 100644 vendor/exiv2-0.25/po/bs.po create mode 100644 vendor/exiv2-0.25/po/de.po create mode 100644 vendor/exiv2-0.25/po/en@boldquot.header create mode 100644 vendor/exiv2-0.25/po/en@quot.header create mode 100644 vendor/exiv2-0.25/po/es.po create mode 100644 vendor/exiv2-0.25/po/exiv2.pot create mode 100644 vendor/exiv2-0.25/po/fi.po create mode 100644 vendor/exiv2-0.25/po/fr.po create mode 100644 vendor/exiv2-0.25/po/gl.po create mode 100644 vendor/exiv2-0.25/po/insert-header.sin create mode 100644 vendor/exiv2-0.25/po/ms.po create mode 100644 vendor/exiv2-0.25/po/pl.po create mode 100644 vendor/exiv2-0.25/po/pt.po create mode 100644 vendor/exiv2-0.25/po/quot.sed create mode 100644 vendor/exiv2-0.25/po/remove-potcdate.sin create mode 100644 vendor/exiv2-0.25/po/ru.po create mode 100644 vendor/exiv2-0.25/po/sk.po create mode 100644 vendor/exiv2-0.25/po/sv.po create mode 100644 vendor/exiv2-0.25/po/ug.po create mode 100644 vendor/exiv2-0.25/po/uk.po create mode 100644 vendor/exiv2-0.25/po/vi.po create mode 100644 vendor/exiv2-0.25/samples/CMakeLists.txt create mode 100644 vendor/exiv2-0.25/samples/Jzon.cpp create mode 100644 vendor/exiv2-0.25/samples/Jzon.h create mode 100644 vendor/exiv2-0.25/samples/Makefile create mode 100644 vendor/exiv2-0.25/samples/addmoddel.cpp create mode 100644 vendor/exiv2-0.25/samples/conntest.cpp create mode 100644 vendor/exiv2-0.25/samples/convert-test.cpp create mode 100644 vendor/exiv2-0.25/samples/easyaccess-test.cpp create mode 100644 vendor/exiv2-0.25/samples/exifcomment.cpp create mode 100644 vendor/exiv2-0.25/samples/exifdata-test.cpp create mode 100644 vendor/exiv2-0.25/samples/exifdata.cpp create mode 100644 vendor/exiv2-0.25/samples/exifprint.cpp create mode 100644 vendor/exiv2-0.25/samples/exifvalue.cpp create mode 100644 vendor/exiv2-0.25/samples/exiv2json.cpp create mode 100644 vendor/exiv2-0.25/samples/geotag.cpp create mode 100644 vendor/exiv2-0.25/samples/httptest.cpp create mode 100644 vendor/exiv2-0.25/samples/iotest.cpp create mode 100644 vendor/exiv2-0.25/samples/iptceasy.cpp create mode 100644 vendor/exiv2-0.25/samples/iptcprint.cpp create mode 100644 vendor/exiv2-0.25/samples/iptctest.cpp create mode 100644 vendor/exiv2-0.25/samples/key-test.cpp create mode 100644 vendor/exiv2-0.25/samples/largeiptc-test.cpp create mode 100644 vendor/exiv2-0.25/samples/metacopy.cpp create mode 100644 vendor/exiv2-0.25/samples/metacopy.hpp create mode 100644 vendor/exiv2-0.25/samples/mmap-test.cpp create mode 100644 vendor/exiv2-0.25/samples/path-test.cpp create mode 100644 vendor/exiv2-0.25/samples/prevtest.cpp create mode 100644 vendor/exiv2-0.25/samples/remotetest.cpp create mode 100644 vendor/exiv2-0.25/samples/stringto-test.cpp create mode 100644 vendor/exiv2-0.25/samples/taglist.cpp create mode 100644 vendor/exiv2-0.25/samples/tiff-test.cpp create mode 100644 vendor/exiv2-0.25/samples/tiffaddpath-test.cpp create mode 100644 vendor/exiv2-0.25/samples/werror-test.cpp create mode 100644 vendor/exiv2-0.25/samples/write-test.cpp create mode 100644 vendor/exiv2-0.25/samples/write2-test.cpp create mode 100644 vendor/exiv2-0.25/samples/xmpparse.cpp create mode 100644 vendor/exiv2-0.25/samples/xmpparser-test.cpp create mode 100644 vendor/exiv2-0.25/samples/xmpsample.cpp create mode 100644 vendor/exiv2-0.25/src/CMakeLists.txt create mode 100644 vendor/exiv2-0.25/src/Makefile create mode 100644 vendor/exiv2-0.25/src/TODO create mode 100644 vendor/exiv2-0.25/src/actions.cpp create mode 100644 vendor/exiv2-0.25/src/actions.hpp create mode 100644 vendor/exiv2-0.25/src/asfvideo.cpp create mode 100644 vendor/exiv2-0.25/src/basicio.cpp create mode 100644 vendor/exiv2-0.25/src/bmpimage.cpp create mode 100644 vendor/exiv2-0.25/src/canonmn.cpp create mode 100644 vendor/exiv2-0.25/src/canonmn_int.hpp create mode 100644 vendor/exiv2-0.25/src/casiomn.cpp create mode 100644 vendor/exiv2-0.25/src/casiomn_int.hpp create mode 100644 vendor/exiv2-0.25/src/convert.cpp create mode 100644 vendor/exiv2-0.25/src/cr2image.cpp create mode 100644 vendor/exiv2-0.25/src/cr2image_int.hpp create mode 100644 vendor/exiv2-0.25/src/crwedit.cpp create mode 100644 vendor/exiv2-0.25/src/crwimage.cpp create mode 100644 vendor/exiv2-0.25/src/crwimage_int.hpp create mode 100644 vendor/exiv2-0.25/src/crwparse.cpp create mode 100644 vendor/exiv2-0.25/src/datasets.cpp create mode 100644 vendor/exiv2-0.25/src/doxygen.hpp.in create mode 100644 vendor/exiv2-0.25/src/easyaccess.cpp create mode 100644 vendor/exiv2-0.25/src/epsimage.cpp create mode 100644 vendor/exiv2-0.25/src/error.cpp create mode 100644 vendor/exiv2-0.25/src/exif.cpp create mode 100644 vendor/exiv2-0.25/src/exiv2.1 create mode 100644 vendor/exiv2-0.25/src/exiv2.cpp create mode 100644 vendor/exiv2-0.25/src/exiv2app.hpp create mode 100644 vendor/exiv2-0.25/src/fujimn.cpp create mode 100644 vendor/exiv2-0.25/src/fujimn_int.hpp create mode 100644 vendor/exiv2-0.25/src/futils.cpp create mode 100644 vendor/exiv2-0.25/src/getopt_win32.c create mode 100644 vendor/exiv2-0.25/src/getopt_win32.h create mode 100644 vendor/exiv2-0.25/src/gifimage.cpp create mode 100644 vendor/exiv2-0.25/src/http.cpp create mode 100644 vendor/exiv2-0.25/src/i18n.h create mode 100644 vendor/exiv2-0.25/src/image.cpp create mode 100644 vendor/exiv2-0.25/src/image_int.hpp create mode 100644 vendor/exiv2-0.25/src/iptc.cpp create mode 100644 vendor/exiv2-0.25/src/jp2image.cpp create mode 100644 vendor/exiv2-0.25/src/jpgimage.cpp create mode 100644 vendor/exiv2-0.25/src/localtime.c create mode 100644 vendor/exiv2-0.25/src/makernote.cpp create mode 100644 vendor/exiv2-0.25/src/makernote_int.hpp create mode 100644 vendor/exiv2-0.25/src/matroskavideo.cpp create mode 100644 vendor/exiv2-0.25/src/metadatum.cpp create mode 100644 vendor/exiv2-0.25/src/minoltamn.cpp create mode 100644 vendor/exiv2-0.25/src/minoltamn_int.hpp create mode 100644 vendor/exiv2-0.25/src/mrwimage.cpp create mode 100644 vendor/exiv2-0.25/src/mrwthumb.cpp create mode 100644 vendor/exiv2-0.25/src/nikonmn.cpp create mode 100644 vendor/exiv2-0.25/src/nikonmn_int.hpp create mode 100644 vendor/exiv2-0.25/src/olympusmn.cpp create mode 100644 vendor/exiv2-0.25/src/olympusmn_int.hpp create mode 100644 vendor/exiv2-0.25/src/orfimage.cpp create mode 100644 vendor/exiv2-0.25/src/orfimage_int.hpp create mode 100644 vendor/exiv2-0.25/src/panasonicmn.cpp create mode 100644 vendor/exiv2-0.25/src/panasonicmn_int.hpp create mode 100644 vendor/exiv2-0.25/src/pentaxmn.cpp create mode 100644 vendor/exiv2-0.25/src/pentaxmn_int.hpp create mode 100644 vendor/exiv2-0.25/src/pgfimage.cpp create mode 100644 vendor/exiv2-0.25/src/pngchunk.cpp create mode 100644 vendor/exiv2-0.25/src/pngchunk_int.hpp create mode 100644 vendor/exiv2-0.25/src/pngimage.cpp create mode 100644 vendor/exiv2-0.25/src/preview.cpp create mode 100644 vendor/exiv2-0.25/src/private.h create mode 100644 vendor/exiv2-0.25/src/properties.cpp create mode 100644 vendor/exiv2-0.25/src/psdimage.cpp create mode 100644 vendor/exiv2-0.25/src/quicktimevideo.cpp create mode 100644 vendor/exiv2-0.25/src/rafimage.cpp create mode 100644 vendor/exiv2-0.25/src/rcsid_int.hpp create mode 100644 vendor/exiv2-0.25/src/riffvideo.cpp create mode 100644 vendor/exiv2-0.25/src/rw2image.cpp create mode 100644 vendor/exiv2-0.25/src/rw2image_int.hpp create mode 100644 vendor/exiv2-0.25/src/samsungmn.cpp create mode 100644 vendor/exiv2-0.25/src/samsungmn_int.hpp create mode 100644 vendor/exiv2-0.25/src/sigmamn.cpp create mode 100644 vendor/exiv2-0.25/src/sigmamn_int.hpp create mode 100644 vendor/exiv2-0.25/src/sonymn.cpp create mode 100644 vendor/exiv2-0.25/src/sonymn_int.hpp create mode 100644 vendor/exiv2-0.25/src/ssh.cpp create mode 100644 vendor/exiv2-0.25/src/svn_version.h.in create mode 100755 vendor/exiv2-0.25/src/svn_version.sh create mode 100644 vendor/exiv2-0.25/src/tags.cpp create mode 100644 vendor/exiv2-0.25/src/tags_int.hpp create mode 100644 vendor/exiv2-0.25/src/tgaimage.cpp create mode 100644 vendor/exiv2-0.25/src/tiff-test.cpp create mode 100644 vendor/exiv2-0.25/src/tiffcomposite.cpp create mode 100644 vendor/exiv2-0.25/src/tiffcomposite_int.hpp create mode 100644 vendor/exiv2-0.25/src/tifffwd_int.hpp create mode 100644 vendor/exiv2-0.25/src/tiffimage.cpp create mode 100644 vendor/exiv2-0.25/src/tiffimage_int.hpp create mode 100644 vendor/exiv2-0.25/src/tiffmn-test.cpp create mode 100644 vendor/exiv2-0.25/src/tiffvisitor.cpp create mode 100644 vendor/exiv2-0.25/src/tiffvisitor_int.hpp create mode 100644 vendor/exiv2-0.25/src/timegm.h create mode 100644 vendor/exiv2-0.25/src/types.cpp create mode 100644 vendor/exiv2-0.25/src/tzfile.h create mode 100644 vendor/exiv2-0.25/src/utils.cpp create mode 100644 vendor/exiv2-0.25/src/utils.hpp create mode 100644 vendor/exiv2-0.25/src/utilsvideo.cpp create mode 100644 vendor/exiv2-0.25/src/utiltest.cpp create mode 100644 vendor/exiv2-0.25/src/value.cpp create mode 100644 vendor/exiv2-0.25/src/version.cpp create mode 100644 vendor/exiv2-0.25/src/xmp.cpp create mode 100644 vendor/exiv2-0.25/src/xmpdump.cpp create mode 100644 vendor/exiv2-0.25/src/xmpsidecar.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/CMakeLists.txt create mode 100644 vendor/exiv2-0.25/xmpsdk/include/MD5.h create mode 100644 vendor/exiv2-0.25/xmpsdk/include/TXMPIterator.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/TXMPMeta.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/TXMPUtils.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/XMP.incl_cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/XMPSDK.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/XMP_Const.h create mode 100644 vendor/exiv2-0.25/xmpsdk/include/XMP_Environment.h create mode 100644 vendor/exiv2-0.25/xmpsdk/include/XMP_Version.h create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPIterator.incl_cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPMeta.incl_cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPUtils.incl_cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPFiles.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPIterator.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPMeta.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPUtils.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMP_Common.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/MD5.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/Makefile create mode 100644 vendor/exiv2-0.25/xmpsdk/src/ParseRDF.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/UnicodeInlines.incl_cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/WXMPIterator.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/WXMPMeta.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/WXMPUtils.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMLParserAdapter.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XML_Node.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPIterator.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPIterator.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPMeta-GetSet.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Parse.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Serialize.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPMeta.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPMeta.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPUtils-FileInfo.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPUtils.cpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMPUtils.hpp create mode 100644 vendor/exiv2-0.25/xmpsdk/src/XMP_BuildInfo.h diff --git a/vendor/exiv2-0.25/AUTHORS b/vendor/exiv2-0.25/AUTHORS new file mode 100644 index 0000000..9f06aef --- /dev/null +++ b/vendor/exiv2-0.25/AUTHORS @@ -0,0 +1 @@ +See doc/ChangeLog. Authors and other contributors are mentioned there. diff --git a/vendor/exiv2-0.25/CMakeLists.txt b/vendor/exiv2-0.25/CMakeLists.txt new file mode 100644 index 0000000..e0c178b --- /dev/null +++ b/vendor/exiv2-0.25/CMakeLists.txt @@ -0,0 +1,255 @@ +# CMake build system for exiv2 library and executables +# Copyright 2012- Robin Mills +# Copyright 2010-2012 Gilles Caulier +# Copyright 2008 Patrick Spendrin + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +## +# Running cmake in a tree in which we have run ./configure ; make +# creates include/exiv2/exv_conf.h which conflicts with cmake's own exv_conf.h +# This causes incorrect compilation and linking errors. +# +# It's OK to delete this as it will be recreated on demand by /Makefile +if( EXISTS "${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h" ) + file(REMOVE "${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h") +endif() +## + +CMAKE_MINIMUM_REQUIRED( VERSION 2.8.12 ) +PROJECT( exiv2 ) + +if( POLICY CMP0042 ) + cmake_policy(SET CMP0042 NEW) # enable MACOSX_RPATH support +else() + SET(CMAKE_MACOSX_RPATH 1) +endif() +SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + + +SET( PACKAGE_COPYRIGHT "Andreas Huggel" ) +SET( PACKAGE_BUGREPORT "ahuggel@gmx.net" ) +SET( PACKAGE "exiv2" ) +SET( PACKAGE_NAME "exiv2" ) +SET( PACKAGE_STRING "exiv2 0.25" ) +SET( PACKAGE_TARNAME "exiv2" ) +SET( PACKAGE_VERSION "0.25" ) +SET( PACKAGE_URL "http://www.exiv2.org" ) +SET( GENERIC_LIB_VERSION "14.0.0" ) +SET( GENERIC_LIB_SOVERSION "14" ) + +# options and their default values +OPTION( EXIV2_ENABLE_SHARED "Build exiv2 as a shared library (dll)" ON ) +OPTION( EXIV2_ENABLE_XMP "Build with XMP metadata support" ON ) +OPTION( EXIV2_ENABLE_LIBXMP "Build a static convenience Library for XMP" ON ) +OPTION( EXIV2_ENABLE_VIDEO "Build with video support" OFF ) +OPTION( EXIV2_ENABLE_PNG "Build with png support (requires libz)" ON ) +OPTION( EXIV2_ENABLE_NLS "Build native language support (requires gettext)" ON ) +OPTION( EXIV2_ENABLE_PRINTUCS2 "Build with Printucs2" ON ) +OPTION( EXIV2_ENABLE_LENSDATA "Build including lens data" ON ) +OPTION( EXIV2_ENABLE_COMMERCIAL "Build with the EXV_COMMERCIAL_VERSION symbol set" OFF ) +OPTION( EXIV2_ENABLE_BUILD_SAMPLES "Build the unit tests" ON ) +OPTION( EXIV2_ENABLE_BUILD_PO "Build translations files" OFF ) +OPTION( EXIV2_ENABLE_VIDEO "Build video support into library" OFF ) +OPTION( EXIV2_ENABLE_WEBREADY "Build webready support into library" OFF ) +OPTION( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo" ON ) +OPTION( EXIV2_ENABLE_SSH "USE Libssh for SshIo" ON ) + +IF( MINGW OR UNIX ) + IF ( CMAKE_CXX_COMPILER STREQUAL "g++" OR CMAKE_C_COMPILER STREQUAL "gcc" ) + ADD_DEFINITIONS(-Wall + -Wcast-align + -Wpointer-arith + -Wformat-security + -Wmissing-format-attribute + -Woverloaded-virtual + -W + ) + ENDIF() +ENDIF( MINGW OR UNIX ) + +INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/ ${CMAKE_SOURCE_DIR}/include/ ${CMAKE_SOURCE_DIR}/include/exiv2/) + +if( MSVC ) + + # cmake_policy(SET CMP0008) + + include(CMake_msvc.txt) + msvc_runtime_report() + msvc_runtime_configure(${EXIV2_ENABLE_SHARED}) + msvc_runtime_report() + + ADD_DEFINITIONS(-DPSAPI_VERSION=1) # to be compatible with <= WinVista (#905) + + set(E expat-2.1.0) + set(Z zlib-1.2.7) + set(C curl-7.39.0) + set(C libssh-0.5.5) + + if( NOT IS_DIRECTORY ./../${E} ) + set(OUT_OF_SOURCE 1) + endif() + + # link dependent libraries + FIND_PACKAGE(EXPAT QUIET) + if ( NOT EXPAT_LIBRARY ) + set(EXPAT_LIBRARY ${CMAKE_SOURCE_DIR}/../${E}/$(ConfigurationName)/expat) + set(EXPAT_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/../${E}/lib) + include_directories( ${EXPAT_INCLUDE_DIR} msvc64\\include src\\include) + endif() + + FIND_PACKAGE(CURL) + if ( NOT CURL_FOUND ) + set(CURL_LIBRARY ${CMAKE_SOURCE_DIR}/../${C}/$(ConfigurationName)/curl) + set(CURL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/../${C}) + include_directories( ${CURL_INCLUDE_DIR}) + endif() + + # FIND_PACKAGE(SSH) + if ( NOT SSH_FOUND ) + set(SSH_LIBRARY ${CMAKE_SOURCE_DIR}/../${C}/$(ConfigurationName)/ssh) + set(SSH_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/../${C}) + include_directories( ${SSH_INCLUDE_DIR}) + endif() + + FIND_PACKAGE(ZLIB QUIET) + if ( NOT ZLIB_FOUND ) + set(ZLIB_LIBRARY ${CMAKE_SOURCE_DIR}/../${Z}/$(ConfigurationName)/zlib) + set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/../${Z}) + endif() + include_directories(${ZLIB_INCLUDE_DIR}) + + if ( EXIV2_ENABLE_SHARED ) + add_library(${E} SHARED IMPORTED) + add_library(${Z} SHARED IMPORTED) + endif() + + ## + # Set the output directory + # x64/Win32 + if( CMAKE_SIZEOF_VOID_P MATCHES 8 ) + SET( P_DIR x64) + else() + set( P_DIR Win32 ) + endif() + + # DLL/static build + if( EXIV2_ENABLE_SHARED ) + set( T_DIR Dynamic ) + else() + set( T_DIR Static) + endif() + + set(B_DIR ${PROJECT_BINARY_DIR}/bin/${P_DIR}/${T_DIR}) + set(CMAKE_CURRENT_BINARY_DIR ${B_DIR}) + set(EXECUTABLE_OUTPUT_PATH ${B_DIR}) + set(LIBRARY_OUTPUT_PATH ${B_DIR}) +endif( MSVC ) + +IF( EXIV2_ENABLE_XMP ) + SET( HAVE_XMP_TOOLKIT ON ) + SET( XMPLIB "do" ) +ENDIF( EXIV2_ENABLE_XMP ) + +INCLUDE( config/CMakeChecks.txt ) + +SET( INSTALL_TARGET_STANDARD_ARGS + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) +SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + +## +# add sources from XMPSDK directory +# this needs to be done here to be visible to xmpsdk, src and sample sub directories +SET( XMPSRC ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ExpatAdapter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/MD5.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/ParseRDF.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/UnicodeConversions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPIterator.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPMeta.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/WXMPUtils.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XML_Node.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPCore_Impl.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPIterator.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-GetSet.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Parse.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta-Serialize.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPMeta.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils-FileInfo.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/src/XMPUtils.cpp +) + +# the following lines need to be added to circumvent the error in xmpsdk\src\MD5.h +IF( ${EXV_HAVE_STDINT_H} ) + ADD_DEFINITIONS( -DEXV_HAVE_STDINT_H ) +ENDIF( ${EXV_HAVE_STDINT_H} ) + +FIND_PACKAGE(Subversion QUIET) +SET(SVN_REVISION "0") +IF(SUBVERSION_FOUND) + IF(EXISTS "${CMAKE_SOURCE_DIR}/.svn") + Subversion_WC_INFO(${PROJECT_SOURCE_DIR} svnExiv2) + SET(SVN_REVISION "${svnExiv2_WC_REVISION}") + ENDIF() +ENDIF() +CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/src/svn_version.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/src/svn_version.h @ONLY) +MESSAGE(STATUS "SVN version: ${SVN_REVISION}") + +IF( NOT MSVC ) + # Issue #722: out of source builds compiled against standard include files such as /usr/local/lib/include/exiv2 + # do not use CREATE_SYMLINK or CMAKE_CAN_SYMLINK as they don't work on CYGWIN + EXECUTE_PROCESS( WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/src exiv2) + + IF( EXIV2_ENABLE_BUILD_SAMPLES ) + EXECUTE_PROCESS( WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/samples COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/src exiv2) + ENDIF( EXIV2_ENABLE_BUILD_SAMPLES ) + + IF( EXIV2_ENABLE_BUILD_PO ) + EXECUTE_PROCESS( WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/po COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/src exiv2) + ENDIF( EXIV2_ENABLE_BUILD_PO ) +ENDIF() + +ADD_SUBDIRECTORY( xmpsdk ) +ADD_SUBDIRECTORY( src ) + +IF( EXIV2_ENABLE_BUILD_SAMPLES ) + ADD_SUBDIRECTORY( samples ) +ENDIF( EXIV2_ENABLE_BUILD_SAMPLES ) + +IF( EXIV2_ENABLE_BUILD_PO ) + ADD_SUBDIRECTORY( po ) +ENDIF( EXIV2_ENABLE_BUILD_PO ) + +## +# tests +ADD_CUSTOM_TARGET(tests COMMAND make test "EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/" ) +ADD_CUSTOM_TARGET(teste COMMAND make teste "EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/" ) +ADD_CUSTOM_TARGET(testv COMMAND make testv "EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/" ) +ADD_CUSTOM_TARGET(testvw COMMAND make testvw "EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/" ) +ADD_CUSTOM_TARGET(testx COMMAND make testx "EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/test/" ) + +## +# http://dev.exiv2.org/boards/3/topics/1364 +# effectively does a make doc on the root directory +# has to run 'make config' and './configure' +# and copy bin/taglist to /bin/taglist for use by 'make doc' +IF( MINGW OR UNIX OR APPLE) + ADD_CUSTOM_TARGET(doc + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/doc" + COMMAND chmod +x ./cmake_doc.sh + COMMAND ./cmake_doc.sh "${CMAKE_BINARY_DIR}" + ) +ENDIF() + +## +# support for test suite TODO: fixup for MSVC and think a bit more before deploying this +# ENABLE_TESTING() +# INCLUDE(Dart) +# ADD_TEST(tests bash -c "cd ${CMAKE_SOURCE_DIR}/test/ ; make EXIV2_BINDIR=${CMAKE_BINARY_DIR}/bin" ) + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/CMake_msvc.txt b/vendor/exiv2-0.25/CMake_msvc.txt new file mode 100644 index 0000000..8af2fc0 --- /dev/null +++ b/vendor/exiv2-0.25/CMake_msvc.txt @@ -0,0 +1,80 @@ +## +# msvc tuning macros +macro(msvc_runtime_set_static_ignores bDynamic) + if(MSVC) + # don't link msvcrt for .exe which use shared libraries (use default libcmt) + if ( ${bDynamic} STREQUAL "OFF" ) + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRTD") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/NODEFAULTLIB:MSVCRT") + set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "/NODEFAULTLIB:MSVCRT") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/NODEFAULTLIB:MSVCRT") + endif() + endif() +endmacro() + +# http://stackoverflow.com/questions/10113017/setting-the-msvc-runtime-in-cmake +macro(msvc_runtime_configure bDynamic) + if(MSVC) + set(variables + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + ) + if( ${bDynamic} STREQUAL "ON" ) + message(STATUS "MSVC -> forcing use of dynamically-linked runtime." ) + foreach(variable ${variables}) + if(${variable} MATCHES "/MT") + string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}") + endif() + endforeach() + else() + message(STATUS "MSVC -> forcing use of statically-linked runtime." ) + foreach(variable ${variables}) + if(${variable} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}") + endif() + set(${variable} "${${variable}} /DXML_STATIC /D_LIB") + endforeach() + endif() + + # remove /Ob2 and /Ob1 - they cause linker issues + set(obs /Ob2 /Ob1) + foreach(ob ${obs}) + foreach(variable ${variables}) + if(${variable} MATCHES ${ob} ) + string(REGEX REPLACE ${ob} "" ${variable} "${${variable}}") + endif() + endforeach() + endforeach() + msvc_runtime_set_static_ignores(${bDynamic}) + endif() +endmacro() + +macro(msvc_runtime_report) + if(MSVC) + set(variables + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + # CMAKE_C_LINK_EXECUTABLE + ) + message(STATUS "Build flags:") + foreach(variable ${variables}) + message(STATUS " '${variable}': ${${variable}}") + endforeach() + message(STATUS "") + endif() +endmacro() + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/COPYING b/vendor/exiv2-0.25/COPYING new file mode 100644 index 0000000..c484a90 --- /dev/null +++ b/vendor/exiv2-0.25/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/vendor/exiv2-0.25/COPYING-CMAKE-SCRIPTS b/vendor/exiv2-0.25/COPYING-CMAKE-SCRIPTS new file mode 100644 index 0000000..4b41776 --- /dev/null +++ b/vendor/exiv2-0.25/COPYING-CMAKE-SCRIPTS @@ -0,0 +1,22 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/exiv2-0.25/FindExiv2.cmake b/vendor/exiv2-0.25/FindExiv2.cmake new file mode 100755 index 0000000..f929269 --- /dev/null +++ b/vendor/exiv2-0.25/FindExiv2.cmake @@ -0,0 +1,80 @@ +# - Try to find the Exiv2 library +# +# EXIV2_MIN_VERSION - You can set this variable to the minimum version you need +# before doing FIND_PACKAGE(Exiv2). The default is 0.12. +# +# Once done this will define +# +# EXIV2_FOUND - system has libexiv2 +# EXIV2_INCLUDE_DIR - the libexiv2 include directory +# EXIV2_LIBRARIES - Link these to use libexiv2 +# EXIV2_DEFINITIONS - Compiler switches required for using libexiv2 +# +# The minimum required version of Exiv2 can be specified using the +# standard syntax, e.g. find_package(Exiv2 0.17) +# +# For compatiblity, also the variable EXIV2_MIN_VERSION can be set to the minimum version +# you need before doing FIND_PACKAGE(Exiv2). The default is 0.12. + +# Copyright (c) 2010, Alexander Neundorf, +# Copyright (c) 2008, Gilles Caulier, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# Support EXIV2_MIN_VERSION for compatibility: +if(NOT Exiv2_FIND_VERSION) + set(Exiv2_FIND_VERSION "${EXIV2_MIN_VERSION}") +endif(NOT Exiv2_FIND_VERSION) + +# the minimum version of exiv2 we require +if(NOT Exiv2_FIND_VERSION) + set(Exiv2_FIND_VERSION "0.12") +endif(NOT Exiv2_FIND_VERSION) + + +if (NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + find_package(PkgConfig) + pkg_check_modules(PC_EXIV2 QUIET exiv2) + set(EXIV2_DEFINITIONS ${PC_EXIV2_CFLAGS_OTHER}) +endif (NOT WIN32) + + +find_path(EXIV2_INCLUDE_DIR NAMES exiv2/exif.hpp + HINTS + ${PC_EXIV2_INCLUDEDIR} + ${PC_EXIV2_INCLUDE_DIRS} + ) + +find_library(EXIV2_LIBRARY NAMES exiv2 libexiv2 + HINTS + ${PC_EXIV2_LIBDIR} + ${PC_EXIV2_LIBRARY_DIRS} + ) + + +# Get the version number from exiv2/version.hpp and store it in the cache: +if(EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION) + file(READ ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp EXIV2_VERSION_CONTENT) + string(REGEX MATCH "#define EXIV2_MAJOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}") + set(EXIV2_VERSION_MAJOR "${CMAKE_MATCH_1}") + + string(REGEX MATCH "#define EXIV2_MINOR_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}") + set(EXIV2_VERSION_MINOR "${CMAKE_MATCH_1}") + + string(REGEX MATCH "#define EXIV2_PATCH_VERSION +\\( *([0-9]+) *\\)" _dummy "${EXIV2_VERSION_CONTENT}") + set(EXIV2_VERSION_PATCH "${CMAKE_MATCH_1}") + + set(EXIV2_VERSION "${EXIV2_VERSION_MAJOR}.${EXIV2_VERSION_MINOR}.${EXIV2_VERSION_PATCH}" CACHE STRING "Version number of Exiv2" FORCE) +endif(EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION) + +set(EXIV2_LIBRARIES "${EXIV2_LIBRARY}") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Exiv2 REQUIRED_VARS EXIV2_LIBRARY EXIV2_INCLUDE_DIR + VERSION_VAR EXIV2_VERSION) + +mark_as_advanced(EXIV2_INCLUDE_DIR EXIV2_LIBRARY) + diff --git a/vendor/exiv2-0.25/README b/vendor/exiv2-0.25/README new file mode 100644 index 0000000..0426c5d --- /dev/null +++ b/vendor/exiv2-0.25/README @@ -0,0 +1,184 @@ +Exiv2 +***** + +Welcome to Exiv2, a C++ library and a command line utility to read and +write Exif, IPTC and XMP image metadata. The homepage of Exiv2 is: + + http://www.exiv2.org/ + +See doc/ChangeLog for a list of recent changes to Exiv2. + +Exiv2 API and tag reference documentation is at http://www.exiv2.org/doc +or you can build it and point your browser to doc/index.html. + +For more information on XMP support in Exiv2, see doc/README-XMP. + +Building and Installing +======================= + +You can build the libraries in the following ways: + +1 UNIX-like systems (including GNU/Linux, Mac OS X, Cygwin, MinGW) + - general notes follow + - FAQ concerning Cygwin/MSYS and Mac OS X: + http://dev.exiv2.org/projects/exiv2/wiki/FAQ + +2 Microsoft Visual C++ + - see msvc2003/ReadMe.txt (32bit build VC7.1/2003 2005,2008) + - see msvc2005/ReadMe.txt (32bit and 64bit build VC8/2005, 2008,2010,2012) + +3 CMake (experimental support for cmake on all platforms) + - see README-CMAKE for more information + +To build a commercial version of the Exiv2 library, see also section +"Commercial version" at the end of this file. + +On UNIX-like systems, use the GNU configure script. Run the following +commands from the top directory (containing this file) to configure, +build and install the library and utility: + + $ ./configure + $ make + $ sudo make install + +If you downloaded the source code from the subversion repository, you +won't have a configure script. Run 'make config' to generate it and see +the section "Hacking" below. + +The default install locations are /usr/local/lib for the library, +/usr/local/bin for the exiv2 utility and /usr/local/include/exiv2 for the +header files. Use the --prefix=directory option of the configure script to +change the default. Run './configure --help' to see a list of all options. + +To uninstall Exiv2 from a UNIX-like system, run: + + $ make uninstall + + +Dependencies +============ + +The following libexiv2 features are enabled by default and may*) +require external libraries. They can be controlled through configure +options. See also './configure --help'. + +Feature Package Configure options +-------------------------- -------- ---------------------------- +PNG image support zlib --without-zlib + --with-zlib=DIR +Native language support gettext --disable-nls +Characterset conversions libiconv --without-libiconv-prefix + --with-libiconv-prefix[=DIR] +XMP support expat --disable-xmp + --with-expat=DIR + +zlib http://zlib.net/ +gettext *) http://www.gnu.org/software/gettext/ +libiconv *) http://www.gnu.org/software/libiconv/ +expat http://expat.sourceforge.net/ + +*) Some systems have gettext and iconv in libc. The configure script +should detect this. + +On Linux, it is usually best to install the dependencies through the +package management system of the distribution together with the +corresponding development packages (for the header files and static +libraries). + +To build the sample programs in the samples/ directory ('make samples'), +you also need to have the pkg-config program. + +To generate the documentation ('make doc'), you will further need +doxygen, graphviz, python and xsltproc. + +pkg-config http://pkg-config.freedesktop.org/wiki/ +doxygen http://www.doxygen.org/ +graphviz http://www.graphviz.org/ +python http://www.python.org/ +xsltproc http://xmlsoft.org/XSLT/ +md5sum http://www.microbrew.org/tools/md5sha1sum/ + +Troubleshooting +=============== + +If you have problems building Exiv2 on UNIX-like systems, check the +generated config/config.mk and config/config.h files. You should *not* +need to modify any Makefile directly, in particular not src/Makefile! + + +Support +======= + +All project resources are accessible from the project website at + + http://dev.exiv2.org/wiki/exiv2 + +Please send feedback or queries to the Exiv2 forum. For new bug reports +and feature requests, please open an issue. + + +Linking your own code with Exiv2 +================================ + +A pkg-config .pc file is installed together with the library. +Application developers can use pkg-config(1) to obtain correct compile +and link time flags for the Exiv2 library. See samples/Makefile for an +example. + +If you downloaded Exiv2 directly from the subversion repository, and +you want to build it using the GNU configure script, then you need to +have GNU Autoconf installed on your system and create the configure +script as the first step: + + $ make config + +Then run the usual './configure; make; make install' commands. + +Exiv2 uses GNU Libtool in order to build shared libraries on a variety +of systems. While this is very nice for making usable binaries, it can +be a pain when trying to debug a program. For that reason, compilation +of shared libraries can be turned off by specifying the +--disable-shared option to the configure script. + +License +======= + +Copyright (C) 2004-2015 Andreas Huggel + +Exiv2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2 of the License, or (at your +option) any later version. + +Alternatively, Exiv2 is also available with a commercial license, +which allows it to be used in closed-source projects. Contact me for +more information. + +Exiv2 is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, +MA 02110-1301 USA. + +Commercial version +================== + +If you have a commercial license, you must disable NLS support and +the conversion of Nikon lens data to readable lens names to build a +commercial version of the Exiv2 library. + +To do this on Windows, compile the library with the preprocessor +symbol EXV_COMMERCIAL_VERSION defined in: + msvc2003\include\exv_msvc.h +or msvc2005\include\exv_msvc.h + +On UNIX-like systems, run the configure +script with the options --enable-commercial --disable-nls +--disable-lensdata. + +# That's all Folks +## diff --git a/vendor/exiv2-0.25/README-CMAKE b/vendor/exiv2-0.25/README-CMAKE new file mode 100644 index 0000000..70647c0 --- /dev/null +++ b/vendor/exiv2-0.25/README-CMAKE @@ -0,0 +1,233 @@ +------------------------------------------------------------------------------- +NOTE: + +* CMake scripts are "work in progress". + Use them only if you're prepared to fix them. + See TODO-CMAKE for known pending tasks. + +* The existing automake (./configure), msvc2003 and msvc2005 build files will continue + to be supported by exiv2 until at least v0.26. + We will flag them as "deprecated" for at least one release cycle (about 12 months). + Our plan is to only support CMake when our scripts are feature-complete, stable and documented. + + All help is appreciated. If you know and understand CMake (especially with Visual Studio) + please consider contributing your time and skill to help Exiv2 and CMake work well together. + +Robin Mills +robin@clanmills.com +2015-02-23 + +------------------------------------------------------------------------------- + +Exiv2 uses cmake, a cross-platform build system, to control the +compilation process using platform/compiler independent configuration files. + +TABLE OF CONTENTS +----------------- + +1 CMake resources +2 Building and Installing for Unix type systems +3 Building and Installing for Visual Studio Users +4 Building and Installing for other users (Xcode, Eclipse, Qt) + +1 CMake resources +================= + +You have to install cmake on your target system. + +Home: http://www.cmake.org/ +Help: http://www.cmake.org/cmake/help/help.html +Doc: http://www.cmake.org/cmake/help/documentation.html +Wiki: http://www.cmake.org/Wiki/CMake +FAQ: http://www.cmake.org/Wiki/CMake_FAQ + +2 Building and Installing on Linux +================================== + +This process also covers MacOS-X Terminal, Cygwin and MinGW users. + +a) From the command line + +Run the following commands from the top directory (containing this +file) to configure, build and install the library and utility: + + $ mkdir build + $ cd build + $ cmake .. + $ make + $ make install + +To modify the configuration + + $ ccmake .. + +Usual CMake options : + +-DCMAKE_INSTALL_PREFIX : decide where the program will be install on your computer. +-DCMAKE_BUILD_TYPE : decide which type of build you want. You can chose between: + "debugfull". : for hacking. Include all debug information. + "debug". + "profile". + "relwithdebinfo" : default. use gcc -O2 -g options. + "release" : generate stripped and optimized bin files. For packaging. + +Specific Exiv2 options : + +-DEXIV2_ENABLE_SHARED : Build exiv2 as a shared library (dll). [default=on ] +-DEXIV2_ENABLE_XMP : Build with XMP metadata support. [default=on ] +-DEXIV2_ENABLE_LIBXMP : Build a static convenience Library for XMP. [default=on ] +-DEXIV2_ENABLE_PNG : Build with png support (requires libz). [default=on ] +-DEXIV2_ENABLE_NLS : Build native language support (requires gettext). [default=on ] +-DEXIV2_ENABLE_PRINTUCS2 : Build with Printucs2. [default=on ] +-DEXIV2_ENABLE_LENSDATA : Build including lens data. [default=on ] +-DEXIV2_ENABLE_COMMERCIAL : Build with the EXV_COMMERCIAL_VERSION symbol set. [default=off] +-DEXIV2_ENABLE_BUILD_SAMPLES : Build the unit tests. [default=off] +-DEXIV2_ENABLE_BUILD_PO : Build translations files. [default=off] +-DEXIV2_ENABLE_CURL : USE Libcurl for HttpIo [default=off] +-DEXIV2_ENABLE_SSH : USE Libssh for SshIo [default=off] + +Default install locations + +Use -DCMAKE_INSTALL_PREFIX like this : + +"cmake . -DCMAKE_INSTALL_PREFIX=/usr" is equivalent to "./configure --prefix=/usr" with automake/configure. + +To uninstall Exiv2, run: + + $ make uninstall + +b) Using the cmake GUI + + ccmake + +3 Building and installing for DevStudio Users +============================================= + +exiv2 provides three build environment for users of Visual Studio: + +msvc2003: 32 bit build environment for MSVC 2003 +msvc2005: 32 bit AND 64 bit build environment for MSVC 2005 and later (2008/10/12/13) +cmake: This environment + +CMake doesn't build code. It generates build environments. +CMake is a language for describing builds and the CMake interpreter generates +the build environment for your system. + +CMake generates MSVC .sln and .vcproj files for your target environment. +The files generated by CMake provide 4 configs: Debug|Release|RelWithDebInfo|MinSizeRel +The current architecture of CMake requires you to decide before running cmake: +1) The version of DevStudio +2) 32bit or 64 bit builds +3) Building static or shared libraries + +Code FileSystem Layout +---------------------- + +I set up my environment as follows: + Directory of C:\gnu.cmake + +2012-05-31 09:49 exiv2 | Vanilla +2012-05-31 09:45 expat-2.1.0 | source +2012-05-30 16:22 zlib-1.2.7 | trees + +The command to run cmake is of the form: +cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64" + +There are many options for the cmake command, and many generators. I've added a little +batch file cm.bat for my convenience. +c:\> cm 2008 64 == cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64" + +Building from source +-------------------- + +There are 3 steps (build zlib/expat, build exiv2, test). +You can skip step 1 if you have prebuilt libraries (see note below) + +1) Building the support libraries expat and zlib with cmake + cd expat-2.1.0 + If you wish to use a static library (shared is default) + a) set expat-2.1.0/CMakeLists.txt static + option(BUILD_shared "build a shared expat library" ON) <------- Set OFF + b) You'll need the following patch (around line 23) + See "Note about expat-2.1.0/CMakeLists.txt" + + --- extract from CMakeLists.txt --- + option(XML_NS "Define to make XML Namespaces functionality available" ON) + + # rmills patch begin + include(../exiv2/CMake_msvc.txt) + msvc_runtime_configure(${BUILD_shared}) + # rmills patch end + + if(XML_DTD) + --- extract end --- + + cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64" + .... rattle roll .... + Open expat.sln and build all. + + Similar process for zlib-1.2.7 + You will not need to edit CMakeLists.txt (zlib builds shared and dynamic libraries) + cmake CMakeLists.txt -G "Visual Studio 9 2008 Win64" + .... rattle roll .... + Open zlib.sln and build all. + +2) Building exiv2 + CMake recommend building "out of source" which means building in a clean + directory BELOW the source tree: + eg cd exiv2 + Edit CMakeLists.txt to specify shared or static library (and other options) + You may need to change the path to expat and zlib to match your setup + + mkdir build + cd build + cmake -G "Visual Studio 9 2008 Win64" .. + ... rattle roll ... + Open build/exiv2.sln and build all. + +3) Location of built files (exiv2.exe, exiv2.dll etc) + exiv2\build\bin\{ x64 | Win32 }\{ Dynamic|Static }\{Config}\exiv2.exe etc.... + Config: Debug | MinSizeRel | Release | RelWithDebInfo + + The test suite is a bash script and requires Cygwin. + + cd /c/gnu/exiv2/test + ./testMSVC.sh ${PWD}/../build/bin/x64/Dynamic/Release + + or + ./testMSVC.sh ${PWD}/../build/bin/x64/Dynamic/ | tee foo.txt + ./verifyMSVC foo.txt + + +Note about expat-2.1.0/CMakeLists.txt +------------------------------------- + expat-2.1.0/CMakeLists.txt can build static or dynamic libraries. + However expat's CMakeLists.txt links with MSVCRTx.dll for both static and dynamic. + I've taken a decision to either link "All static" or "All dynamic" with no mixing. + This patch enforces my design and avoids linker headaches. + +Note about using prebuilt zlib, expat and iconv +----------------------------------------------- + +I expect you to setup the source build tree and build expat and zlib. +However you may wish to use prebuilt versions of zlib, iconv and expat. +Specify the location of the prebuilt libraries on the cmake command line: + +For example: +cmake -G "NMake Makefiles" .. -DEXPAT_LIBRARY=%KDE4_INSTALL_DIR%/lib/libexpat.lib + +Daniel has provided a patch (SVN:2893) which enables you to specify a ZLIB search path: +Example: + cmake.exe -G "Visual Studio 11 Win64" -DZLIB_ROOT=..\zlib-1.2.7-dev;..\zlib-1.2.7-dev\Release ... + +If ZLIB is not located on the path provided, the normal default (..\zlib-1.2.7) will be used. + +ToDo: More information about parameters -DEXPAT_LIBRARTY -DZLIB_LIBRARY etc. + +4 Building and Installing for other users (Xcode, Eclipse, Qt) +============================================================== + +To be written + +# That's all Folks +## diff --git a/vendor/exiv2-0.25/TODO-CMAKE b/vendor/exiv2-0.25/TODO-CMAKE new file mode 100644 index 0000000..46063d3 --- /dev/null +++ b/vendor/exiv2-0.25/TODO-CMAKE @@ -0,0 +1,118 @@ +Current Status + +ToDo: * Fix out of source builds for NMake + * Find and link iconv library on Windows + * Test Cygwin, MinGW, Xcode, NMake and more versions of MSVC + * Revisit searching for zlib, expat and iconv + * Work on the "inherited from Gilles" list below + +Bugs: * 2005/32/debug won't run. "SideBySide" error (manifest trouble) + * 2003/32 does not compile (1000's of template errors) + +Done: * Support for out of source builds (this is still suspect) + * Add header files to MSVC UI for exiv2lib (and changed exiv2bin->exiv2 and exiv2->exiv2lib) + * Searching better for expat, zlib and iconv + * write FindLibexiv2.cmake (Thank you, Gilles) + * Builds and passes the test suite on 2005/32, 2008/64, Mac-Lion/64/Makefiles and Ubuntu/12.04/32bit + * Updated documentation (README-CMAKE) + +Robin Mills +robin@clanmills.com +2012-06-09 + +Inherited from Gilles Caulier : + +* Review how samples are built: They should use the *installed* version + of libexiv2, not some temporary version in the src or build tree. + +* Compare the cmake-built shared library with the configure-built version. Do they differ? + Ideally they are the same. If not, we should understand the differences exactly. + +* Added cmake target to build/install doc. + +* Added Cmake target to release build and packaging. + +* Added support for cross-compiling : add information on how to cross-compile on Linux for Windows (MinGW) + (some applications and my own release-build process need this) to the README.CMAKE + +* Emacs M-c command to (re-)compile. + +* Migrate the whole README-CMAKE to README. + +------------------------------------------------------------------------------------- + +DONE * Can the logic needed to build the doc be re-written using cmake? + => Yes. We manage it with digiKam Doxygen documentation as well. + +DONE * Is it possible to not have CMakeLists.txt file in the top dir? + => No. It a deprecated solution from KitWare. I read more than one questions about this subject in devel forum. + +DONE * Need soname versioning for shared library. + +DONE * Add further messages to display option settings. + + ------------------------------------------------------------------ + -- Exiv2 0.18-pre1 feature configuration summary + -- + -- Build a shared library......... NO + -- PNG image support.............. YES + -- Native language support........ NO + + gettext is required for native language support. Make sure the + gettext header files are installed. You can get gettext from + http://www.gnu.org/software/gettext/ + + -- Conversion of Windows XP tags.. YES + -- Nikon lens database............ YES + -- XMP metadata support........... YES + ------------------------------------------------------------------ + +DONE * Add possibility to build xmp as a convenience library. + +DONE * Compilation fails if Expat (possibly also other dependencies?) is in a non-standard place. + +WONTFIX * This is probably not necessary in src/CMakeLists.txt / can be removed: + set( LIBEXIV2_SRC ${LIBEXIV2_SRC} getopt_win32.c ) + it is necessary as both windows compilers do not autoexport + +DONE * Do we need to worry about MSVC warnings like this: + d:\home\ahuggel\msys\src\exiv2\src\exif.hpp(245) : warning C4251: 'Exiv2::Exifdatum::value_' : class 'std::auto_ptr<_Ty>' + needs to have dll-interface to be used by clients of class 'Exiv2::Exifdatum' + with + [ + _Ty=Exiv2::Value + ] + +DONE * Is the pkgconfig file not installed in MinGW? - it is now. + +DONE * Added targets to build/install man page. + +DONE * Need g++ specific : compiler options (warnings) and settings (visibility). + +DONE * Manage eviv2.pc file with CMake, like it's do with kdegraphics/libs .pc file. + +DONE * Manage eviv2.lsm file with CMake, like it's do with kdegraphics/libs .lsm file. + +DONE * Added cmake target to uninstall Exiv2, based on KDE4 cmake script. + +DONE * The following options of the configure script should be supported + --disable-shared => -ENABLE_SHARED_EXIV2 + --disable-xmp => -ENABLE_XMP + --without-zlib => -ENABLE_PNG + --enable-commercial => -ENABLE_COMMERCIAL + --disable-lensdata => -ENABLE_LENSDATA + --disable-printucs2 => -ENABLE_PRINTUCS2 + --enable-nls => -ENABLE_NLS + +DONE * Cmake project: in root folder, common config in config sub-dir. + +DONE * Manage samples sub-dir with CMake. + +DONE * Rename configuration settings to EXIV2_*, e.g., EXIV2_ENABLE_SHARED. + +DONE * Manage i18n extraction to generate .po files. (See http://www.cmake.org/pipermail/cmake/2009-July/031003.html) + Port extract-messages.sh to CMake + +DONE * Add tests to check availability of msgmerge, xgettext, msgfmt programs. + +INFO * Check How does cmake handle RPATH? (I'll read up on this). diff --git a/vendor/exiv2-0.25/bootstrap.macports b/vendor/exiv2-0.25/bootstrap.macports new file mode 100755 index 0000000..0dd2879 --- /dev/null +++ b/vendor/exiv2-0.25/bootstrap.macports @@ -0,0 +1,79 @@ +#!/bin/sh + +# Copyright (c) 2008-2015, Gilles Caulier, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# Arguments : $1 : install path '/opt/local' (default). +# $2 : build type 'debugfull' to hack (default), 'release' for production. +# $3 : target type 'x86_64' for OSX Lion and later (default), 'i386' for Snow Leopard. +# $4 : extra CXX flags (empty by default) +# + +INSTALL_PREFIX=$1 +if [ "$INSTALL_PREFIX" = "" ]; then + # Standard Macports install + INSTALL_PREFIX=/opt/local + BUNDLE_INSTALL_DIR=/Applications/ +else + # Specific install path as /opt/exiv2 to build bundle PKG for example + BUNDLE_INSTALL_DIR=${INSTALL_PREFIX}/Applications/ +fi + +BUILD_TYPE=$2 +if [ "$BUILD_TYPE" = "" ]; then + BUILD_TYPE=debugfull +fi + +TARGET_TYPE=$3 +if [ "$TARGET_TYPE" = "" ]; then + TARGET_TYPE=x86_64 +fi + +EXTRA_CXX_FLAGS=$4 + +# Set devel env from MacOS-X through MacPorts +export QTDIR=${INSTALL_PREFIX}/lib +export QT_INCLUDE_DIR=${INSTALL_PREFIX}/include +export PATH=$QTDIR/bin:$PATH +export PKG_CONFIG_PATH=${INSTALL_PREFIX}/lib/pkgconfig:$PKG_CONFIG_PATH + +# We will work on command line using GNU make +export MAKEFILES_TYPE='Unix Makefiles' + +echo "Installing to $INSTALL_PREFIX for target $TARGET_TYPE with build mode $BUILD_TYPE and extra CXX flags $EXTRA_CXX_FLAGS" + +if [ ! -d "build.cmake" ]; then + mkdir build.cmake +fi + +cd build.cmake + +cmake -G "$MAKEFILES_TYPE" . \ + -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \ + -DCMAKE_OSX_ARCHITECTURES=${TARGET_TYPE} \ + -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} ${EXTRA_CXX_FLAGS}" \ + -DCMAKE_COLOR_MAKEFILE=ON \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_INSTALL_NAME_DIR=${INSTALL_PREFIX}/lib \ + -DCMAKE_SYSTEM_PREFIX_PATH="${INSTALL_PREFIX};/usr" \ + -DCMAKE_MODULE_PATH="${INSTALL_PREFIX}/share/cmake/modules" \ + -DEXIV2_ENABLE_SHARED=ON \ + -DEXIV2_ENABLE_XMP=ON \ + -DEXIV2_ENABLE_LIBXMP=ON \ + -DEXIV2_ENABLE_VIDEO=ON \ + -DEXIV2_ENABLE_PNG=ON \ + -DEXIV2_ENABLE_NLS=ON \ + -DEXIV2_ENABLE_PRINTUCS2=ON \ + -DEXIV2_ENABLE_LENSDATA=ON \ + -DEXIV2_ENABLE_COMMERCIAL=OFF \ + -DEXIV2_ENABLE_BUILD_SAMPLES=ON \ + -DEXIV2_ENABLE_BUILD_PO=ON \ + -DEXIV2_ENABLE_VIDEO=ON \ + -DEXIV2_ENABLE_WEBREADY=ON \ + -DEXIV2_ENABLE_CURL=ON \ + -DEXIV2_ENABLE_SSH=ON \ + -Wno-dev \ + .. diff --git a/vendor/exiv2-0.25/cm.bat b/vendor/exiv2-0.25/cm.bat new file mode 100755 index 0000000..1f0e23b --- /dev/null +++ b/vendor/exiv2-0.25/cm.bat @@ -0,0 +1,83 @@ +@echo off +setlocal + +rem ---------------------------- +rem Work in progress - not ready for production use +rem ---------------------------- + +rem ---------------------------- +rem cm - wrapper script for CMake +rem http://www.dostips.com/ + +goto:afterSyntax +rem ------------------------------- +rem Functions +:Syntax +echo useage: cm [ clean ^| unix ^| 2003 ^| 2005 ^| 2008 ^| 2010 [64]] "option"+ +goto:eof +:afterSyntax + +rem ---------------------------- +rem test command args +set "G=%1" +shift + +rem [option: 32|Win32|x64|64] +set Q= +set "P=%1" +if DEFINED P shift +IF NOT DEFINED P set P=x +if (%P%)==(x64) set P=64 +if (%P%)==(64) set Q=64 +if (%P%)==(Win32) set P=32 +if (%P%)==(32) set Q=32 +if (%P%)==(x) set P= +if DEFINED Q set P= + +rem ---------------------------- +rem figure out the generator (G) +if NOT DEFINED G ( + call:Syntax + goto:jail +) + +if "%G%"=="7" set G=2003 +if "%G%"=="8" set G=2005 +if "%G%"=="9" set G=2008 +if "%G%"=="10" set G=2010 + +if "%G%"=="2003" set "G=Visual Studio 7 .NET 2003" +if "%G%"=="2005" set "G=Visual Studio 8 2005" +if "%G%"=="2008" set "G=Visual Studio 9 2008" +if "%G%"=="2010" set "G=Visual Studio 10" + +if (%Q%)==(64) set "G=%G% Win64" + +rem ---------------------------- +rem Cleanup from last time +set C=CMakeCache.txt +set D=CMakeFiles +set X=xmdpsk +set Y=cmake_install.cmake +if EXIST %C% del %C% +if EXIST %D% rmdir/s/q %D% +if EXIST %X%\%C% del %X%\%C% +if EXIST %X%\%D% rmdir/s/q %X%\%D% +if EXIST %Y% del/s cmake_*.cmake >NUL + +rem ---------------------------- +rem really execute cmake +if NOT "%G%"=="clean" ( + rem echo.--------------------------------- + echo cmake CMakeLists.txt -G "%G%" %P% %1 %2 %3 %4 %5 + cmake CMakeLists.txt -G "%G%" %P% %1 %2 %3 %4 %5 +) + +rem ---------------------------- +rem cleanup and finish +:jail +endlocal +goto:eof + +rem That's All Folks! +rem diff --git a/vendor/exiv2-0.25/config/CMakeChecks.txt b/vendor/exiv2-0.25/config/CMakeChecks.txt new file mode 100644 index 0000000..0e9ae4f --- /dev/null +++ b/vendor/exiv2-0.25/config/CMakeChecks.txt @@ -0,0 +1,330 @@ +# CMake build system for exiv2 library and executables +# Copyright 2008 by Patrick Spendrin +# Copyright 2010 by Gilles Caulier +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# ConfigureChecks for exiv2 + +SET( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/config ) +INCLUDE( CheckIncludeFile ) +INCLUDE( CheckFunctionExists ) +INCLUDE( CheckSymbolExists ) +INCLUDE( CheckCSourceCompiles ) +INCLUDE( CheckCXXSourceCompiles ) + +INCLUDE( FindIconv ) + +SET( STDC_HEADERS ON ) +SET( HAVE_DECL_STRERROR_R 0 ) + +SET( HAVE_PRINTUCS2 ${EXIV2_ENABLE_PRINTUCS2} ) +SET( HAVE_LENSDATA ${EXIV2_ENABLE_LENSDATA} ) + +INCLUDE_DIRECTORIES( ${CMAKE_INCLUDE_PATH} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/xmpsdk/include ) +LINK_DIRECTORIES( ${CMAKE_LIBRARY_PATH} ) +SET( CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH} ) + +IF( EXIV2_ENABLE_PNG ) + FIND_PACKAGE( ZLIB ) + INCLUDE_DIRECTORIES( ${ZLIB_INCLUDE_DIR} ) + SET (HAVE_LIBZ ${ZLIB_FOUND}) +ENDIF( EXIV2_ENABLE_PNG ) + +IF( EXIV2_ENABLE_VIDEO ) + SET( ENABLE_VIDEO 1 ) +ENDIF( EXIV2_ENABLE_VIDEO ) + +IF( EXIV2_ENABLE_WEBREADY ) + SET( ENABLE_WEBREADY 1 ) + IF( EXIV2_ENABLE_CURL ) + FIND_PACKAGE( CURL ) + INCLUDE_DIRECTORIES( ${CURL_INCLUDE_DIR} ) + # FindCURL.cmake doesn't check for REQUIRED flags - so we need to check ourselves + IF( MINGW OR UNIX ) + IF (NOT CURL_FOUND) + MESSAGE(FATAL_ERROR "missing library curl required for HttpIo") + ELSE (NOT CURL_FOUND) + SET ( USE_CURL 1 ) + ENDIF( NOT CURL_FOUND ) + ENDIF( MINGW OR UNIX ) + ENDIF( EXIV2_ENABLE_CURL ) + + IF( EXIV2_ENABLE_SSH ) + FIND_PACKAGE( SSH ) + INCLUDE_DIRECTORIES( ${SSH_INCLUDE_DIR} ) + # FindSSH.cmake doesn't check for REQUIRED flags - so we need to check ourselves + IF( MINGW OR UNIX ) + IF (NOT SSH_FOUND) + MESSAGE(FATAL_ERROR "missing library libssh required for SshIo") + ELSE (NOT SSH_FOUND) + SET ( USE_SSH 1 ) + ENDIF( NOT SSH_FOUND ) + ENDIF( MINGW OR UNIX ) + ENDIF( EXIV2_ENABLE_SSH ) +ENDIF( EXIV2_ENABLE_WEBREADY ) + +IF (EXIV2_ENABLE_XMP) + FIND_PACKAGE(EXPAT) + INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR}) + # FindEXPAT.cmake doesn't check for REQUIRED flags - so we need to check ourselves + IF( MINGW OR UNIX ) + IF (NOT EXPAT_FOUND) + MESSAGE(FATAL_ERROR "missing library expat required for XMP") + ENDIF( NOT EXPAT_FOUND ) + ENDIF( MINGW OR UNIX ) +ENDIF (EXIV2_ENABLE_XMP) + +IF( EXIV2_ENABLE_SHARED ) + ADD_DEFINITIONS( -DEXV_HAVE_DLL ) + SET( STATIC_FLAG SHARED ) +ELSE( EXIV2_ENABLE_SHARED ) + SET( STATIC_FLAG STATIC ) +ENDIF( EXIV2_ENABLE_SHARED ) + +IF( EXIV2_ENABLE_NLS ) + IF( NOT LOCALEDIR ) + SET( LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale" ) + IF( WIN32 ) + STRING( REPLACE "/" "\\\\" LOCALEDIR ${LOCALEDIR} ) + ENDIF( WIN32 ) + ENDIF( NOT LOCALEDIR ) + ADD_DEFINITIONS( -DEXV_LOCALEDIR="${LOCALEDIR}" ) +ENDIF( EXIV2_ENABLE_NLS ) + +IF( EXIV2_ENABLE_COMMERCIAL ) + ADD_DEFINITIONS( -DEXV_COMMERCIAL_VERSION ) +ENDIF( EXIV2_ENABLE_COMMERCIAL ) + +FIND_PACKAGE(Iconv) +IF( ICONV_FOUND ) + SET( HAVE_ICONV 1 ) + INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR}) + MESSAGE ( "-- ICONV_LIBRARIES : " ${ICONV_LIBRARIES} ) +ENDIF( ICONV_FOUND ) + +IF( ICONV_ACCEPTS_CONST_INPUT ) + MESSAGE ( "ICONV_ACCEPTS_CONST_INPUT : yes" ) +ENDIF( ICONV_ACCEPTS_CONST_INPUT ) + +FIND_PACKAGE(MSGFMT) +IF(MSGFMT_FOUND) + MESSAGE(STATUS "Program msgfmt found (${MSGFMT_EXECUTABLE})") + SET( EXIV2_BUILD_PO 1 ) +ENDIF(MSGFMT_FOUND) + +# checking for Header files +check_include_file( "inttypes.h" have_inttypes_h ) +check_include_file( "libintl.h" HAVE_LIBINTL_H ) +check_include_file( "malloc.h" HAVE_MALLOC_H ) +check_include_file( "memory.h" HAVE_MEMORY_H ) +check_include_file( "iconv.h" HAVE_ICONV_H ) +check_include_file( "stdbool.h" HAVE_STDBOOL_H ) +check_include_file( "stdint.h" HAVE_STDINT_H ) +check_include_file( "stdlib.h" HAVE_STDLIB_H ) +check_include_file( "string.h" HAVE_STRING_H ) +check_include_file( "strings.h" HAVE_STRINGS_H ) +check_include_file( "unistd.h" HAVE_UNISTD_H ) +check_include_file( "wchar.h" HAVE_WCHAR_H ) +check_include_file( "sys/stat.h" HAVE_SYS_STAT_H ) +check_include_file( "sys/time.h" HAVE_SYS_TIME_H ) +check_include_file( "sys/types.h" HAVE_SYS_TYPES_H ) +check_include_file( "sys/mman.h" HAVE_SYS_MMAN_H ) +check_include_file( "process.h" HAVE_PROCESS_H ) +check_include_file( "regex.h" HAVE_REGEX ) + +check_function_exists( alarm HAVE_ALARM ) +check_function_exists( gmtime_r HAVE_GMTIME_R ) +check_function_exists( malloc HAVE_MALLOC ) +check_function_exists( memset HAVE_MEMSET ) +check_function_exists( mmap HAVE_MMAP ) +check_function_exists( munmap HAVE_MUNMAP ) +check_function_exists( realloc HAVE_REALLOC ) +check_function_exists( strchr HAVE_STRCHR ) +check_function_exists( strchr_r HAVE_STRCHR_R ) +check_function_exists( strerror HAVE_STRERROR ) +check_function_exists( strerror_r HAVE_STRERROR_R ) +check_function_exists( strtol HAVE_STRTOL ) +check_function_exists( timegm HAVE_TIMEGM ) +check_function_exists( vprintf HAVE_VPRINTF ) + +MESSAGE( STATUS "None: ${CMAKE_CXX_FLAGS}" ) +MESSAGE( STATUS "Debug: ${CMAKE_CXX_FLAGS_DEBUG}" ) +MESSAGE( STATUS "Release: ${CMAKE_CXX_FLAGS_RELEASE}" ) +MESSAGE( STATUS "RelWithDebInfo: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" ) +MESSAGE( STATUS "MinSizeRel: ${CMAKE_CXX_FLAGS_MINSIZEREL}" ) + +IF( HAVE_STDBOOL_H ) + CHECK_SYMBOL_EXISTS( "_Bool" stdbool.h HAVE__BOOL ) +ENDIF( HAVE_STDBOOL_H ) + +# struct tm in sys/time.h +IF( HAVE_SYS_TIME_H ) + CHECK_C_SOURCE_COMPILES( "#include +int main() { +struct tm t; +return 0; +}" TM_IN_SYS_TIME ) +ENDIF( HAVE_SYS_TIME_H ) + +##################################################################################### +# strerror_r returns char* + +# NOTE : reverting commit #2041, which break compilation under linux and windows + +CHECK_C_SOURCE_COMPILES( "#include +int main() { +char * c; +c = strerror_r(0,c,0); +return 0; +}" STRERROR_R_CHAR_P ) + +# function is declared with the above +IF( STRERROR_R_CHAR_P ) + SET( HAVE_DECL_STRERROR_R 1 ) +ENDIF( STRERROR_R_CHAR_P ) + +##################################################################################### + +# time.h and sys/time.h can be included in the same file +CHECK_C_SOURCE_COMPILES( "#include +#include +int main() { +return 0; +}" TIME_WITH_SYS_TIME ) + +# for msvc define to int in exv_conf.h +IF( NOT MSVC ) + SET( HAVE_PID_T TRUE ) +ENDIF( NOT MSVC ) + +SET( EXV_SYMBOLS ENABLE_NLS + ENABLE_VIDEO + ENABLE_WEBREADY + HAVE_ALARM + HAVE_DECL_STRERROR_R + HAVE_GMTIME_R + HAVE_ICONV + HAVE_ICONV_H + HAVE_INTTYPES_H + HAVE_LENSDATA + HAVE_LIBINTL_H + HAVE_LIBZ + HAVE_MALLOC_H + HAVE_MEMORY_H + HAVE_MEMSET + HAVE_MMAP + HAVE_MUNMAP + HAVE_PRINTUCS2 + HAVE_PROCESS_H + HAVE_REALLOC + HAVE_STDBOOL_H + HAVE_STDINT_H + HAVE_STDLIB_H + HAVE_STRCHR + HAVE_STRCHR_R + HAVE_STRERROR + HAVE_STRERROR_R + HAVE_STRINGS_H + HAVE_STRING_H + HAVE_STRTOL + HAVE_SYS_MMAN_H + HAVE_SYS_STAT_H + HAVE_SYS_TIME_H + HAVE_SYS_TYPES_H + HAVE_TIMEGM + HAVE_UNISTD_H + HAVE_VPRINTF + HAVE_WCHAR_H + HAVE_XMP_TOOLKIT + HAVE__BOOL + HAVE_REGEX + USE_CURL + USE_SSH + PACKAGE + PACKAGE_BUGREPORT + PACKAGE_NAME + PACKAGE_STRING + PACKAGE_TARNAME + PACKAGE_VERSION + STRERROR_R_CHAR_P + ) + +FOREACH( entry ${EXV_SYMBOLS} ) + SET( EXV_${entry} ${${entry}} ) + # NOTE: to hack... + # MESSAGE( EXV_${entry} " : " ${${entry}} ) +ENDFOREACH( entry ${EXV_SYMBOLS} ) + +CONFIGURE_FILE( config/config.h.cmake ${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h ) +CONFIGURE_FILE( config/exv_msvc.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/exv_msvc.h COPYONLY ) +INSTALL( FILES ${CMAKE_SOURCE_DIR}/include/exiv2/exv_conf.h DESTINATION include/exiv2 ) +INSTALL( FILES ${CMAKE_SOURCE_DIR}/include/exiv2/exv_msvc.h DESTINATION include/exiv2 ) +INSTALL( FILES ${CMAKE_SOURCE_DIR}/src/svn_version.h DESTINATION include/exiv2 ) + +CONFIGURE_FILE(config/exiv2_uninstall.cmake ${CMAKE_BINARY_DIR}/cmake_uninstall.cmake COPYONLY) +ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake") + +IF( NOT MSVC ) + CONFIGURE_FILE( config/exiv2.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/exiv2.pc @ONLY ) + INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2.pc DESTINATION lib/pkgconfig ) + CONFIGURE_FILE( config/exiv2.lsm.cmake ${CMAKE_CURRENT_BINARY_DIR}/exiv2.lsm) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2.lsm DESTINATION lib/pkgconfig ) +ENDIF( NOT MSVC ) + +# ****************************************************************************** +# output chosen build options +MACRO( OptionOutput _outputstring ) + IF( ${ARGN} ) + SET( _var "YES" ) + ELSE( ${ARGN} ) + SET( _var "NO" ) + ENDIF( ${ARGN} ) + MESSAGE( STATUS "${_outputstring}${_var}" ) +ENDMACRO( OptionOutput _outputstring ) + +MESSAGE( STATUS "------------------------------------------------------------------" ) +MESSAGE( STATUS "${PACKAGE_STRING} configure results <${PACKAGE_URL}>" ) +OptionOutput( "Building PNG support: " EXIV2_ENABLE_PNG AND ZLIB_FOUND ) +OptionOutput( "Building shared library: " EXIV2_ENABLE_SHARED ) +OptionOutput( "XMP metadata support: " EXIV2_ENABLE_XMP ) +OptionOutput( "Building static libxmp: " EXIV2_ENABLE_LIBXMP ) +OptionOutput( "Native language support: " EXIV2_ENABLE_NLS ) +OptionOutput( "Conversion of Windows XP tags: " EXIV2_ENABLE_PRINTUCS2 ) +OptionOutput( "Nikon lens database: " EXIV2_ENABLE_LENSDATA ) +OptionOutput( "Commercial build: " EXIV2_ENABLE_COMMERCIAL ) +OptionOutput( "Build the unit tests: " EXIV2_ENABLE_BUILD_SAMPLES ) +OptionOutput( "Building translations files: " EXIV2_ENABLE_BUILD_PO ) +OptionOutput( "Building video support: " EXIV2_ENABLE_VIDEO ) +OptionOutput( "Building webready support: " EXIV2_ENABLE_WEBREADY ) + +if ( EXIV2_ENABLE_WEBREADY ) +OptionOutput( "USE Libcurl for HttpIo: " EXIV2_ENABLE_CURL ) +OptionOutput( "USE Libssh for SshIo: " EXIV2_ENABLE_SSH ) +endif ( EXIV2_ENABLE_WEBREADY ) + +MESSAGE( STATUS "------------------------------------------------------------------" ) diff --git a/vendor/exiv2-0.25/config/Doxyfile b/vendor/exiv2-0.25/config/Doxyfile new file mode 100644 index 0000000..f296988 --- /dev/null +++ b/vendor/exiv2-0.25/config/Doxyfile @@ -0,0 +1,1878 @@ +# Doxyfile 1.8.3.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = Exiv2 + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. + +EXTENSION_MAPPING = + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented classes, +# or namespaces to their corresponding documentation. Such a link can be +# prevented in individual cases by by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields will be shown inline in the documentation +# of the scope in which they are defined (i.e. file, namespace, or group +# documentation), provided this scope is documented. If set to NO (the default), +# structs, classes, and unions are shown on a separate page (for HTML and Man +# pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penalty. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols. + +SYMBOL_CACHE_SIZE = 0 + +# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be +# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given +# their name and scope. Since this can be an expensive process and often the +# same symbol appear multiple times in the code, doxygen keeps a cache of +# pre-resolved symbols. If the cache is too small doxygen will become slower. +# If the cache is too large, memory is wasted. The cache size is given by this +# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text " + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../src/ ../include/exiv2/ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = ../samples/Jzon.h \ + ../samples/Jzon.cpp \ + ../src/actions.hpp \ + ../src/actions.cpp \ + ../src/getopt_win32.c \ + ../src/localtime.c \ + ../src/getopt_win32.h \ + ../src/private.h \ + ../src/timegm.h \ + ../src/tzfile.h + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = ../samples/ + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page (index.html). +# This can be useful if you have a project on for instance GitHub and want reuse +# the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 4 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefor more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search engine +# library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = html/exiv2.xml + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# managable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/vendor/exiv2-0.25/config/FindEXPAT.cmake b/vendor/exiv2-0.25/config/FindEXPAT.cmake new file mode 100644 index 0000000..3532d8c --- /dev/null +++ b/vendor/exiv2-0.25/config/FindEXPAT.cmake @@ -0,0 +1,31 @@ +# - Find expat +# Find the native EXPAT headers and libraries. +# +# EXPAT_INCLUDE_DIRS - where to find expat.h, etc. +# EXPAT_LIBRARIES - List of libraries when using expat. +# EXPAT_FOUND - True if expat found. +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# Look for the header file. +FIND_PATH(EXPAT_INCLUDE_DIR NAMES expat.h) + +# Look for the library. +FIND_LIBRARY(EXPAT_LIBRARY NAMES expat libexpat) + +# handle the QUIETLY and REQUIRED arguments and set EXPAT_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT DEFAULT_MSG EXPAT_LIBRARY EXPAT_INCLUDE_DIR) + +# Copy the results to the output variables. +IF(EXPAT_FOUND) + SET(EXPAT_LIBRARIES ${EXPAT_LIBRARY}) + SET(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR}) +ELSE(EXPAT_FOUND) + SET(EXPAT_LIBRARIES) + SET(EXPAT_INCLUDE_DIRS) +ENDIF(EXPAT_FOUND) + +MARK_AS_ADVANCED(EXPAT_INCLUDE_DIR EXPAT_LIBRARY) diff --git a/vendor/exiv2-0.25/config/FindIconv.cmake b/vendor/exiv2-0.25/config/FindIconv.cmake new file mode 100644 index 0000000..f245323 --- /dev/null +++ b/vendor/exiv2-0.25/config/FindIconv.cmake @@ -0,0 +1,87 @@ +# vim:ts=4:sw=4:expandtab:autoindent: +# +# The MIT License +# +# Copyright (c) 2008, 2009 Aristid Breitkreuz, Ash Berlin, Ruediger Sonderfeld +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +Include(CheckFunctionExists) +include(CheckCXXSourceCompiles) + +if(ICONV_INCLUDE_DIR) + set(ICONV_FIND_QUIETLY TRUE) +endif() + +find_path(ICONV_INCLUDE_DIR iconv.h) + +if(NOT ICONV_INCLUDE_DIR STREQUAL "ICONV_INCLUDE_DIR-NOTFOUND") + set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) + check_function_exists(iconv_open ICONV_IN_GLIBC) +endif() + +if(NOT ICONV_IN_GLIBC) + find_library(ICONV_LIBRARY NAMES iconv) + set(ICONV_TEST ${ICONV_LIBRARY}) +else() + set(ICONV_TEST "In glibc") +endif() + +set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) +set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) +check_cxx_source_compiles( + "#include + int main() { + iconv(iconv_t(-1), 0, 0, 0, 0); + }" + ICONV_COMPILES) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ICONV DEFAULT_MSG ICONV_TEST ICONV_INCLUDE_DIR ICONV_COMPILES) + +if(ICONV_FOUND) + set(ICONV_LIBRARIES ${ICONV_LIBRARY}) +else(ICONV_FOUND) + set(ICONV_LIBRARIES) +endif(ICONV_FOUND) + +if(ICONV_FOUND) + set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) + set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) + check_cxx_source_compiles( + "#include + int main() { + char *p = 0; + iconv(iconv_t(-1), &p, 0, 0, 0); + }" + ICONV_ACCEPTS_NONCONST_INPUT) + + set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) + set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) + check_cxx_source_compiles( + "#include + int main() { + char const *p = 0; + iconv(iconv_t(-1), &p, 0, 0, 0); + }" + ICONV_ACCEPTS_CONST_INPUT) +endif() + +mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR) diff --git a/vendor/exiv2-0.25/config/FindMSGFMT.cmake b/vendor/exiv2-0.25/config/FindMSGFMT.cmake new file mode 100644 index 0000000..9a73f2b --- /dev/null +++ b/vendor/exiv2-0.25/config/FindMSGFMT.cmake @@ -0,0 +1,90 @@ +# - FindMSGFMT.cmake for Hugin 0.7 +# file taken from rosegarden +# +# Find the gnu gettext msgfmt and msgmerge programs and define +# a macro that calls it to add message translations +# +# Defined variables: +# MSGFMT_FOUND +# MSGFMT_EXECUTABLE +# MSGMERGE_FOUND +# MSGMERGE_EXECUTABLE +# +# Macro: +# ADD_TRANSLATIONS +# +# mod for Windows build 07Nov2007 TKSharpless -- +# look in C:\MinGW after std. Unix places, that's where +# gettext automatically installed itself on my system. +# TODO find where else on Windows, Mac, etc gettext might be +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +IF(MSGFMT_EXECUTABLE) + SET(MSGFMT_FOUND TRUE) +ELSE(MSGFMT_EXECUTABLE) + FIND_PROGRAM(MSGFMT_EXECUTABLE NAMES msgfmt gmsgfmt msgfmt.exe + PATHS /bin /usr/bin /usr/local/bin c:/MinGW/bin ${SOURCE_BASE_DIR}/gettext/bin) + IF(MSGFMT_EXECUTABLE) + SET(MSGFMT_FOUND TRUE) + ELSE(MSGFMT_EXECUTABLE) + IF(NOT MSGFMT_FIND_QUIETLY) + IF(MSGFMT_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "msgfmt program couldn't be found") + ENDIF(MSGFMT_FIND_REQUIRED) + ENDIF(NOT MSGFMT_FIND_QUIETLY) + ENDIF(MSGFMT_EXECUTABLE) + MARK_AS_ADVANCED(MSGFMT_EXECUTABLE) +ENDIF (MSGFMT_EXECUTABLE) + +IF(MSGMERGE_EXECUTABLE) + SET(MSGMERGE_FOUND TRUE) +ELSE(MSGMERGE_EXECUTABLE) + FIND_PROGRAM(MSGMERGE_EXECUTABLE NAMES msgmerge gmsgmerge msgmerge.exe + PATHS /bin /usr/bin /usr/local/bin c:/MinGW/bin ${SOURCE_BASE_DIR}/gettext/bin) + IF(MSGMERGE_EXECUTABLE) + SET(MSGMERGE_FOUND TRUE) + ELSE(MSGMERGE_EXECUTABLE) + IF(NOT MSGMERGE_FIND_QUIETLY) + IF(MSGMERGE_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "msgmerge program couldn't be found") + ENDIF(MSGMERGE_FIND_REQUIRED) + ENDIF(NOT MSGMERGE_FIND_QUIETLY) + ENDIF(MSGMERGE_EXECUTABLE) + MARK_AS_ADVANCED(MSGMERGE_EXECUTABLE) +ENDIF (MSGMERGE_EXECUTABLE) + +MACRO(UPDATE_TRANSLATIONS _baseName) + SET(_outputs) + FOREACH(_file ${ARGN}) + GET_FILENAME_COMPONENT(_file_we ${_file} NAME_WE) + SET(_out "${CMAKE_CURRENT_SOURCE_DIR}/${_file_we}.po") + SET(_ref "${CMAKE_CURRENT_SOURCE_DIR}/${_baseName}.pot") + ADD_CUSTOM_COMMAND(OUTPUT ${_out} + COMMAND ${MSGMERGE_EXECUTABLE} ${_out} ${_ref} + DEPENDS ${_ref}) + SET(_outputs ${_outputs} ${_out}) + ENDFOREACH(_file) + SET(MSGMERGE_TARGET update_translations_${_baseName}) + ADD_CUSTOM_TARGET(${MSGMERGE_TARGET} ALL DEPENDS ${_outputs}) +ENDMACRO(UPDATE_TRANSLATIONS) + +MACRO(ADD_TRANSLATIONS _baseName) + SET(_outputs) + FOREACH(_file ${ARGN}) + GET_FILENAME_COMPONENT(_file_we ${_file} NAME_WE) + SET(_out "${CMAKE_CURRENT_BINARY_DIR}/${_file_we}.gmo") + SET(_in "${CMAKE_CURRENT_SOURCE_DIR}/${_file_we}.po") + ADD_CUSTOM_COMMAND( + OUTPUT ${_out} + COMMAND ${MSGFMT_EXECUTABLE} -o ${_out} ${_in} + DEPENDS ${_in} ) + INSTALL(FILES ${_out} + DESTINATION ${LOCALEDIR}/${_file_we}/LC_MESSAGES/ + RENAME ${_baseName}.mo ) + SET(_outputs ${_outputs} ${_out}) + ENDFOREACH(_file) + SET(MSGFMT_TARGET translations${_baseName}) + ADD_CUSTOM_TARGET(${MSGFMT_TARGET} ALL DEPENDS ${_outputs}) +ENDMACRO(ADD_TRANSLATIONS) diff --git a/vendor/exiv2-0.25/config/FindSSH.cmake b/vendor/exiv2-0.25/config/FindSSH.cmake new file mode 100644 index 0000000..2a6fa37 --- /dev/null +++ b/vendor/exiv2-0.25/config/FindSSH.cmake @@ -0,0 +1,31 @@ +# - Find libssh +# Find the native SSH headers and libraries. +# +# SSH_INCLUDE_DIRS - where to find libssh.h, etc. +# SSH_LIBRARIES - List of libraries when using libssh. +# SSH_FOUND - True if libssh found. +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# Look for the header file. +FIND_PATH(SSH_INCLUDE_DIR NAMES libssh/libssh.h) + +# Look for the library. +FIND_LIBRARY(SSH_LIBRARY NAMES ssh libssh) + +# handle the QUIETLY and REQUIRED arguments and set SSH_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SSH DEFAULT_MSG SSH_LIBRARY SSH_INCLUDE_DIR) + +# Copy the results to the output variables. +IF(SSH_FOUND) + SET(SSH_LIBRARIES ${SSH_LIBRARY}) + SET(SSH_INCLUDE_DIRS ${SSH_INCLUDE_DIR}) +ELSE(SSH_FOUND) + SET(SSH_LIBRARIES) + SET(SSH_INCLUDE_DIRS) +ENDIF(SSH_FOUND) + +MARK_AS_ADVANCED(SSH_INCLUDE_DIR SSH_LIBRARY) diff --git a/vendor/exiv2-0.25/config/Makefile.in b/vendor/exiv2-0.25/config/Makefile.in new file mode 100644 index 0000000..3bec3fe --- /dev/null +++ b/vendor/exiv2-0.25/config/Makefile.in @@ -0,0 +1,147 @@ +# ***************************************************** -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile.in +# Version: $Rev: 3782 $ +# Author(s): Andreas Huggel (ahu) +# History: 15-Jan-04, ahu: created +# +# Description: +# Simple top-level makefile that mainly forwards to makefiles in +# subdirectories. +# +# Restrictions: +# Requires GNU make. +# + +######################################################################## +# Makefile is a generated file. Do NOT change any settings in this file. +# Run ./configure with the appropriate options to regenerate the file +# and possibly others. +######################################################################## + +SHELL = /bin/sh +ENABLE_XMP = @ENABLE_XMP@ + +.PHONY: all doc config samples xmpsdk \ + mostlyclean clean distclean maintainer-clean \ + install uninstall tests teste testv + +all install: config/config.mk xmpsdk + cd src && $(MAKE) $(MAKECMDGOALS) + cd po && $(MAKE) $(MAKECMDGOALS) + +uninstall: config/config.mk + cd src && $(MAKE) $(MAKECMDGOALS) + cd po && $(MAKE) $(MAKECMDGOALS) + +doc: config/config.mk + cd doc && $(MAKE) $(MAKECMDGOALS) + +samples: config/config.mk + cd samples && $(MAKE) $(MAKECMDGOALS) + +tests: + cd test && $(MAKE) test + +teste testx testv: + cd test && $(MAKE) $@ + +exiv2 conntest exifprint remotetest: + cd src && $(MAKE) $0 + +MAJOR=$(shell grep "define.*EXIV2_.*_VERSION .*\\d*" src/version.hpp | grep MAJOR | sed -e 's/EXIV2//g' | tr -dC [:digit:]) +MINOR=$(shell grep "define.*EXIV2_.*_VERSION .*\\d*" src/version.hpp | grep MINOR | sed -e 's/EXIV2//g' | tr -dC [:digit:]) +VERSION=exiv2-$(MAJOR).$(MINOR) +tarball: + @rm -rf /tmp/$(VERSION) + @rm -rf /tmp/$(VERSION).tar + @rm -rf /tmp/$(VERSION).tar.gz + @rm -rf $(VERSION).tar.gz + svn export -q . /tmp/$(VERSION) + @cd /tmp/$(VERSION) ;\ + make config ;\ + cd - ; cd /tmp ;\ + tar cf $(VERSION).tar $(VERSION)/ ;\ + gzip $(VERSION).tar ;\ + cd - ;\ + mv /tmp/$(VERSION).tar.gz . ;\ + ls -alt $(VERSION).tar.gz + +configure: + make config + +config: + cd config && $(MAKE) -f config.make $(MAKECMDGOALS) + +xmpsdk: src/svn_version.h config/config.mk + if test "x$(ENABLE_XMP)" = "x1"; then cd xmpsdk/src && $(MAKE) $@; fi; + +src/svn_version.h: + cd src && $(MAKE) svn_version.h + +mostlyclean clean: config/config.mk + cd src && $(MAKE) $(MAKECMDGOALS) + cd doc && $(MAKE) $(MAKECMDGOALS) + cd samples && $(MAKE) $(MAKECMDGOALS) + cd test && $(MAKE) $(MAKECMDGOALS) + cd xmpsdk/src && $(MAKE) $(MAKECMDGOALS) + cd config && $(MAKE) -f config.make $(MAKECMDGOALS) + cd po && $(MAKE) $(MAKECMDGOALS) + rm -f include/exiv2/exv_conf.h src/svn_version.h + +# `make distclean' also removes files created by configuring +# the program. Running `make all distclean' prepares the project +# for packaging. +distclean: clean + rm -f config.log config.status libtool + rm -f *~ *.bak + if [ -e bin ]; then rm -rf bin ; fi + +# This removes almost everything, including the configure script! +maintainer-clean: distclean + rm -f configure + -cd test && $(MAKE) $(MAKECMDGOALS) + +config/config.mk: + $(error File config/config.mk does not exist. Did you run ./configure?) + +rebuild: + make distclean + make config + ./configure + make -j + sudo make install + make -j samples + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/config/ReadMe-Autotools.txt b/vendor/exiv2-0.25/config/ReadMe-Autotools.txt new file mode 100644 index 0000000..d66c34e --- /dev/null +++ b/vendor/exiv2-0.25/config/ReadMe-Autotools.txt @@ -0,0 +1,178 @@ +Configuration and Build Strategy 01-Sep-2000, ahu +-------------------------------- + +This is *not* an installation manual. See README and INSTALL for that. + +This document describes the main guidelines used for the configuration +and build system of this software package and summarizes the steps for +the involved processes. + + +1. Overview and Rationale + ---------------------- + +The `autoconf' package is used to gather system configuration data +(see `info autoconf'). System configuration data is kept in `config.mk' +and `config.h'. These files are included from Makefiles and source +files, respectively. + +System configuration is done from the top level of the directory tree. +Usually, `./configure' is enough to create all system configuration +files and Makefiles. In turn, `make distclean' issued from the top +level directory will remove all files created by the configuration and +build processes (while `make distclean' issued in a subdirectory will +only remove files created by the build process but no configuration +files). + +Makefiles should follow GNU Makefile conventions (see `info make'). + +Most targets in the top level Makefile simply call `make' in each +subdirectory and recursively perform a given task. This ensures that +Makefiles in the subdirectories are sufficently independent. It must +be possible to use all standard targets in all subdirectories to +independently work in a subdirectory with consistent targets. + +Using an existing, proven and well documented configuration system +saves us the effort of re-inventing the wheel. It allows us to draw +from a wealth of experience in this area. Building on carefully chosen +existing standards and conventions should not only save us from some +common pitfalls but also help people familiarize with our development +environment quickly. + + +2. Configuration + ------------- + +Preparing a software package for distribution (see section 2.1) is +very much a one time job. Maintenance of an already prepared package +is less challenging (see section 2.2) and only needs to be performed +from time to time. + +The strength of using the `autoconf' process is that configuring and +building a package, once it is prepared, is very simple (see section +2.3). In most cases, a `./configure; make' in the top level directory +should be enough to configure and build the entire package. + +2.1 The steps to prepare a software package for distribution + -------------------------------------------------------- + + 1. Run `autoscan' in top level directory + Input: source files + Output: `configure.scan' + 2. Manually examine and fix `configure.scan' + 3. Rename `configure.scan' to `configure.in' + 4. Manually create `acconfig.h' for additional AC_DEFINE'd symbols + 5. Run `autoheader' + Input: `configure.in' `acconfig.h' + Output: `config.h.in' + 6. Run `autoconf' + Input: `configure.in' `acconfig.h' + Output: `configure' + 7. Manually create `Makefile.in' template + + Here is a complete diagram showing this process (from `info autoconf'): + + source files --> [autoscan*] --> [configure.scan] --> configure.in + + configure.in --. .------> autoconf* -----> configure + +---+ + [aclocal.m4] --+ `---. + [acsite.m4] ---' | + +--> [autoheader*] -> [config.h.in] + [acconfig.h] ----. | + +-----' + [config.h.top] --+ + [config.h.bot] --' + + Makefile.in -------------------------------> Makefile.in + +2.2 Maintenance of a prepared package + --------------------------------- + +Only the most frequently used maintenance processes are described +here. + +2.2.1 `Makefile' changes + ------------------ + +`Makefile's are generated from the respective `Makefile.in' template +by the `configure' script. Therefore, if a change to a `Makefile' is +needed, it must be done in the `Makefile.in' template and the +`configure' script must be run to re-generate the `Makefile'. + +2.2.2 `configure.in' and `acconfig.h' updates + --------------------------------------- + +Such updates may be required to add a new feature or test to the +package. Also, from time to time, e.g., after substantial source code +changes or an upgrade of the `autoconf' package, it may be useful to +re-run `autoscan' and compare the resulting `configure.scan' with the +existing `configure.in' and check for new macros and tests suggested +in `configure.scan'. Usually, you can then easily update `configure.in' +manually. + +After applying the changes, `configure' and `config.h.in' need to be +re-built using `autoconf' and `autoheader', respectively (see section +2.1, steps 5. and 6.). + + +2.3 The steps to configuring and building a software package + -------------------------------------------------------- + + 1. Run `./configure' in top level directory + Input: `Makefile.in' `config.h.in' + Output: `Makefile' `config.mk' `config.h' + 2. Run `make' in the top level directory + Input: `Makefile' `config.mk' `config.h' source code + Output: Executables, Libraries, etc. + + The diagram showing this process (from `info autoconf') looks + like this: + + .-------------> config.cache + configure* ------------+-------------> config.log + | + [config.h.in] -. v .-> [config.h] -. + +--> config.status* -+ +--> make* + Makefile.in ---' `-> Makefile ---' + + +3. Makefile Conventions + -------------------- + +Makefiles should follow GNU Makefile conventions (see `info make'). + +3.1 Standard Makefile Targets + ------------------------- + +`all' + Compile the entire program. Should be the default target. + +`check' + Perform self-tests (if any). + +`install' + Compile the program and copy executables, libraries, etc., to the + file names where they should reside for actual use. + +`uninstall' + Delete all the installed files created by `install'. + +`clean' + Delete all files that are normally created by building the program. + +`mostlyclean' + Delete all files that are normally created by building the program, + except executables, libraries, etc. + +`distclean' + In the top level directory, delete all files that are created by + configuring or building the program. + In a subdirectory, same as `clean'. + +`maintainer-clean' + Delete almost everything from the current directory that can be + reconstructed with this Makefile. + +If in doubt about the standard targets and for more details, see GNU +Makefile conventions in `info make'. diff --git a/vendor/exiv2-0.25/config/aclocal.m4 b/vendor/exiv2-0.25/config/aclocal.m4 new file mode 100644 index 0000000..3af6a50 --- /dev/null +++ b/vendor/exiv2-0.25/config/aclocal.m4 @@ -0,0 +1,10200 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 56 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl +_LT_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\[$]0 --fallback-echo"')dnl " + lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` + ;; +esac + +_LT_OUTPUT_LIBTOOL_INIT +]) + + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +cat >"$CONFIG_LT" <<_LTEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. + +lt_cl_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AS_SHELL_SANITIZE +_AS_PREPARE + +exec AS_MESSAGE_FD>&1 +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +if test "$no_create" != yes; then + lt_cl_success=: + test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" + exec AS_MESSAGE_LOG_FD>/dev/null + $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false + exec AS_MESSAGE_LOG_FD>>config.log + $lt_cl_success || AS_EXIT(1) +fi +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_XSI_SHELLFNS + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_SHELL_INIT + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[_LT_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +[$]* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(lt_ECHO) +]) +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], + [An echo program that does not interpret backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[AC_CHECK_TOOL(AR, ar, false) +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1]) + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method == "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac +AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [fix_srcfile_path], [1], + [Fix the shell variable $srcfile for the compiler]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_PROG_CXX +# ------------ +# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ +# compiler, we have our own version here. +m4_defun([_LT_PROG_CXX], +[ +pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) +AC_PROG_CXX +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_CXX + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_CXX], []) + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[AC_REQUIRE([_LT_PROG_CXX])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_PROG_F77 +# ------------ +# Since AC_PROG_F77 is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_F77], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) +AC_PROG_F77 +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_F77 + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_F77], []) + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_REQUIRE([_LT_PROG_F77])dnl +AC_LANG_PUSH(Fortran 77) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${F77-"f77"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_PROG_FC +# ----------- +# Since AC_PROG_FC is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_FC], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) +AC_PROG_FC +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_FC + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_FC], []) + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_REQUIRE([_LT_PROG_FC])dnl +AC_LANG_PUSH(Fortran) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${FC-"f95"} + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC="$lt_save_CC" +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC="$lt_save_CC" +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. +m4_defun([_LT_PROG_XSI_SHELLFNS], +[case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $[*] )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +dnl func_dirname_and_basename +dnl A portable version of this function is already defined in general.m4sh +dnl so there is no need for it here. + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[[^=]]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$[@]"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]+=\$[2]" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]=\$$[1]\$[2]" +} + +_LT_EOF + ;; + esac +]) +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [0], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# Generated from ltversion.in. + +# serial 3012 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.2.6]) +m4_define([LT_PACKAGE_REVISION], [1.3012]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.2.6' +macro_revision='1.3012' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 4 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) + +dnl @synopsis CHECK_ZLIB() +dnl +dnl This macro searches for an installed zlib library. If nothing +dnl was specified when calling configure, it searches first in /usr/local +dnl and then in /usr. If the --with-zlib=DIR is specified, it will try +dnl to find it in DIR/include/zlib.h and DIR/lib/libz.a. If --without-zlib +dnl is specified, the library is not searched at all. +dnl +dnl If either the header file (zlib.h) or the library (libz) is not +dnl found, the configuration exits on error, asking for a valid +dnl zlib installation directory or --without-zlib. +dnl +dnl The macro defines the symbol HAVE_LIBZ if the library is found. You should +dnl use autoheader to include a definition for this symbol in a config.h +dnl file. Sample usage in a C/C++ source is as follows: +dnl +dnl #ifdef HAVE_LIBZ +dnl #include +dnl #endif /* HAVE_LIBZ */ +dnl +dnl @version $Id: aclocal.m4,v 1.7 2000/06/26 10:04:08 loic dead $ +dnl @author Loic Dachary +dnl with modifications by Andreas Huggel +dnl +AC_DEFUN([CHECK_ZLIB], +# +# Handle user hints +# +[AC_MSG_CHECKING(if zlib is wanted) +AC_ARG_WITH(zlib, +[ --with-zlib=DIR root directory path of zlib installation [defaults to + /usr/local or /usr if not found in /usr/local] + --without-zlib to disable zlib usage completely], +[if test "$withval" != no ; then + AC_MSG_RESULT(yes) + ZLIB_HOME="$withval" +else + AC_MSG_RESULT(no) +fi], [ +AC_MSG_RESULT(yes) +ZLIB_HOME=/usr/local +if test ! -f "${ZLIB_HOME}/include/zlib.h" +then + ZLIB_HOME=/usr +fi +]) +# +# Locate zlib, if wanted +# +if test -n "${ZLIB_HOME}" +then + ZLIB_OLD_LDFLAGS=$LDFLAGS + ZLIB_OLD_CPPFLAGS=$CPPFLAGS + # + # Adding /usr/lib or /usr/include to the flags/libs may + # hurt if using a compiler not installed in the standard + # place. + # + if test "${ZLIB_HOME}" != "/usr" + then + LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" + CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" + fi + AC_LANG_SAVE + AC_LANG_C + AC_CHECK_LIB(z, inflateEnd, [zlib_cv_libz=yes], [zlib_cv_libz=no]) + AC_CHECK_HEADER(zlib.h, [zlib_cv_zlib_h=yes], [zlib_cv_zlib_h=no]) + AC_LANG_RESTORE + if test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes" + then + # + # If both library and header were found, use them + # + AC_CHECK_LIB(z, inflateEnd) + AC_MSG_CHECKING(zlib in ${ZLIB_HOME}) + AC_MSG_RESULT(ok) + HAVE_LIBZ=1 + else + # + # If either header or library was not found, revert and bomb + # + AC_MSG_CHECKING(zlib in ${ZLIB_HOME}) + LDFLAGS="$ZLIB_OLD_LDFLAGS" + CPPFLAGS="$ZLIB_OLD_CPPFLAGS" + AC_MSG_RESULT(failed) + AC_MSG_ERROR(either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib) + fi +fi + +]) +# gettext.m4 serial 37 (gettext-0.14.4) +dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], ifelse([$1], [external], [no], [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AM_NLS + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + dnl Add a version number to the cache macros. + define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) + define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) + define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + + AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + dnl Now see whether libintl exists and depends on libiconv. + if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext_libintl=yes + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([bh_C_SIGNED])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl + AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ +mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ +strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ +__fsetlocking]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + gt_CHECK_DECL(_snprintf, [#include ]) + gt_CHECK_DECL(_snwprintf, [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL(feof_unlocked, [#include ]) + gt_CHECK_DECL(fgets_unlocked, [#include ]) + gt_CHECK_DECL(getc_unlocked, [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_ICONV + AM_LANGINFO_CODESET + if test $ac_cv_header_locale_h = yes; then + gt_LC_MESSAGES + fi + + if test -n "$INTL_MACOSX_LIBS"; then + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + gt_cv_func_CFPreferencesCopyAppValue, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + + +dnl gt_CHECK_DECL(FUNC, INCLUDES) +dnl Check whether a function is declared. +AC_DEFUN([gt_CHECK_DECL], +[ + AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, + [AC_TRY_COMPILE([$2], [ +#ifndef $1 + char *p = (char *) $1; +#endif +], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) + if test $ac_cv_have_decl_$1 = yes; then + gt_value=1 + else + gt_value=0 + fi + AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) +# lib-link.m4 serial 6 (gettext-0.14.3) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.50) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) +# lib-prefix.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) +# nls.m4 serial 2 (gettext-0.14.3) +dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) + +AC_DEFUN([AM_MKINSTALLDIRS], +[ + dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate it. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) +# po.m4 serial 7 (gettext-0.14.3) +dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + AC_MSG_RESULT( + [found $GMSGFMT program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + fi + + AC_OUTPUT_COMMANDS([ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# =========================================================================== +# http://autoconf-archive.cryp.to/ax_cxx_check_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CXX_CHECK_FLAG(FLAG-TO-CHECK,[PROLOGUE],[BODY],[ACTION-IF-SUCCESS],[ACTION-IF-FAILURE]) +# +# DESCRIPTION +# +# This macro tests if the C++ compiler supports the flag FLAG-TO-CHECK. If +# successfull execute ACTION-IF-SUCCESS otherwise ACTION-IF-FAILURE. +# PROLOGUE and BODY are optional and should be used as in AC_LANG_PROGRAM +# macro. +# +# This code is inspired from KDE_CHECK_COMPILER_FLAG macro. Thanks to +# Bogdan Drozdowski for testing and bug fixes. +# +# LAST MODIFICATION +# +# 2008-04-12 +# +# COPYLEFT +# +# Copyright (c) 2008 Francesco Salvestrini +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Macro Archive. When you make and +# distribute a modified version of the Autoconf Macro, you may extend this +# special exception to the GPL to apply to your modified version as well. + +AC_DEFUN([AX_CXX_CHECK_FLAG],[ + AC_PREREQ([2.61]) + AC_REQUIRE([AC_PROG_CXX]) + AC_REQUIRE([AC_PROG_SED]) + + flag=`echo "$1" | $SED 'y% .=/+-(){}<>:*,%_______________%'` + + AC_CACHE_CHECK([whether the C++ compiler accepts the $1 flag], + [ax_cv_cxx_check_flag_$flag],[ + + AC_LANG_PUSH([C++]) + + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $1" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([$2],[$3]) + ],[ + eval "ax_cv_cxx_check_flag_$flag=yes" + ],[ + eval "ax_cv_cxx_check_flag_$flag=no" + ]) + + CXXFLAGS="$save_CXXFLAGS" + + AC_LANG_POP + + ]) + + AS_IF([eval "test \"`echo '$ax_cv_cxx_check_flag_'$flag`\" = yes"],[ + : + $4 + ],[ + : + $5 + ]) +]) diff --git a/vendor/exiv2-0.25/config/config.guess b/vendor/exiv2-0.25/config/config.guess new file mode 100755 index 0000000..2852378 --- /dev/null +++ b/vendor/exiv2-0.25/config/config.guess @@ -0,0 +1,1505 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +# Free Software Foundation, Inc. + +timestamp='2010-08-21' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' HUP INT TERM + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-tilera-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/exiv2-0.25/config/config.h.cmake b/vendor/exiv2-0.25/config/config.h.cmake new file mode 100644 index 0000000..9786009 --- /dev/null +++ b/vendor/exiv2-0.25/config/config.h.cmake @@ -0,0 +1,280 @@ +/**/ +/* config.h. Generated by cmake from config.h.cmake. */ + +/* Define to 1 if you want to use `libssh' for SshIO. */ +#cmakedefine EXV_USE_SSH 1 + +/* Define to 1 if you want to use `libcurl' in httpIO. */ +#cmakedefine EXV_USE_CURL 1 + +/* Define to 1 if you have the `alarm' function. */ +#cmakedefine EXV_HAVE_ALARM + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#cmakedefine EXV_HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the `gmtime_r' function. */ +#cmakedefine EXV_HAVE_GMTIME_R 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_LIBINTL_H 1 + +/* Define to 1 if you require video support. */ +#cmakedefine EXV_ENABLE_VIDEO 1 + +/* Define to 1 if you require webready support. */ +#cmakedefine EXV_ENABLE_WEBREADY 1 + +#ifndef EXV_COMMERCIAL_VERSION + +/* Define to 1 to enable translation of Nikon lens names. */ +#cmakedefine EXV_HAVE_LENSDATA 1 + +/* Define to 1 if translation of program messages to the user's + native language is requested. */ +#cmakedefine EXV_ENABLE_NLS 1 + +/* Define to 1 if you have the `iconv' function. */ +#cmakedefine EXV_HAVE_ICONV 1 + +/* Define to 1 to enable conversion of UCS2 encoded Windows tags to UTF-8. */ +#cmakedefine EXV_HAVE_PRINTUCS2 1 + +#endif /* !EXV_COMMERCIAL_VERSION */ + +/* Define to `const' or to empty, depending on the second argument of `iconv'. */ +#cmakedefine ICONV_ACCEPTS_CONST_INPUT 1 +#if defined ICONV_ACCEPTS_CONST_INPUT +#define EXV_ICONV_CONST const +#else +#define EXV_ICONV_CONST +#endif + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_LIBINTL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_REGEX 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#cmakedefine EXV_HAVE_MALLOC 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_MALLOC_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#cmakedefine EXV_HAVE_MEMSET 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#cmakedefine EXV_HAVE_REALLOC 1 + +/* Define to 1 if stdbool.h conforms to C99. */ +#cmakedefine EXV_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#cmakedefine EXV_HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#cmakedefine EXV_HAVE_STRERROR 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#cmakedefine EXV_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#cmakedefine EXV_HAVE_STRTOL 1 + +/* Define to 1 if you have the `mmap' function. */ +#cmakedefine EXV_HAVE_MMAP 1 + +/* Define to 1 if you have the `munmap' function. */ +#cmakedefine EXV_HAVE_MUNMAP 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `timegm' function. */ +#cmakedefine EXV_HAVE_TIMEGM 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vprintf' function. */ +#cmakedefine EXV_HAVE_VPRINTF 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_WCHAR_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the `zlib' library. */ +#cmakedefine EXV_HAVE_LIBZ 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine EXV_HAVE_PROCESS_H 1 + +/* Define to 1 if you have the Adobe XMP Toolkit. */ +#cmakedefine EXV_HAVE_XMP_TOOLKIT 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#cmakedefine EXV_HAVE__BOOL 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#cmakedefine EXV_LSTAT_FOLLOWS_SLASHED_SYMLINK 1 + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine EXV_PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" + +/* Define to the name of this package. */ +#cmakedefine EXV_PACKAGE "@PACKAGE@" + +/* Define to the full name of this package. */ +#cmakedefine EXV_PACKAGE_NAME "@PACKAGE_NAME@" + +/* Define to the full name and version of this package. */ +#cmakedefine EXV_PACKAGE_STRING "@PACKAGE_STRING@" + +/* Define to the one symbol short name of this package. */ +#cmakedefine EXV_PACKAGE_TARNAME "@PACKAGE_TARNAME@" + +/* Define to the version of this package. */ +#cmakedefine EXV_PACKAGE_VERSION "@PACKAGE_VERSION@" + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS 1 + +/* Define to 1 if strerror_r returns char *. */ +#cmakedefine STRERROR_R_CHAR_P 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +#cmakedefine TM_IN_SYS_TIME 1 + +/* Define to empty if `const' does not conform to ANSI C. */ +#cmakedefine const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#cmakedefine inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#cmakedefine malloc + +/* Define to `int' if does not define. */ +#cmakedefine HAVE_PID_T 1 + +/* On Microsoft compilers pid_t has to be set to int. */ +#ifndef HAVE_PID_T +typedef int pid_t; +#endif + +/* Define to rpl_realloc if the replacement function should be used. */ +#cmakedefine realloc + +/* Define to `unsigned' if does not define. */ +#cmakedefine size_t + +#if defined(__CYGWIN32__) && !defined(__CYGWIN__) + /* For backwards compatibility with Cygwin b19 and + earlier, we define __CYGWIN__ here, so that + we can rely on checking just for that macro. */ +#define __CYGWIN__ __CYGWIN32__ +#define EXV_HAVE_GXXCLASSVISIBILITY +#endif + +/* File path separator */ +#if defined(WIN32) && !defined(__CYGWIN__) +#define EXV_SEPARATOR_STR "\\" +#define EXV_SEPARATOR_CHR '\\' +#else +#define EXV_SEPARATOR_STR "/" +#define EXV_SEPARATOR_CHR '/' +#endif + +/* Shared library support, see http://gcc.gnu.org/wiki/Visibility */ +#if defined(WIN32) && !defined(__CYGWIN__) +# define EXV_IMPORT __declspec(dllimport) +# define EXV_EXPORT __declspec(dllexport) +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +#else +# ifdef EXV_HAVE_GXXCLASSVISIBILITY +# define EXV_IMPORT __attribute__ ((visibility("default"))) +# define EXV_EXPORT __attribute__ ((visibility("default"))) +# define EXV_DLLLOCAL __attribute__ ((visibility("hidden"))) +# define EXV_DLLPUBLIC __attribute__ ((visibility("default"))) +# else +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif /* ! EXV_HAVE_GXXCLASSVISIBILITY */ +#endif /* ! WIN32 */ + +/* Define EXIV2API for DLL builds */ +#ifdef EXV_HAVE_DLL +# ifdef EXV_BUILDING_LIB +# define EXIV2API EXV_EXPORT +# else +# define EXIV2API EXV_IMPORT +# endif /* ! EXV_BUILDING_LIB */ +#else +# define EXIV2API +#endif /* ! EXV_HAVE_DLL */ + +/* + Visual Studio C++ 2005 (8.0) + Disable warnings about 'deprecated' standard functions + See, eg. http://www.informit.com/guides/content.asp?g=cplusplus&seqNum=259 +*/ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +# pragma warning(disable : 4996 4251) +#endif + +/* + If you're using Solaris and the Solaris Studio compiler + you must -library=stdcxx4 along with these inclusions below +*/ +#if defined(OS_SOLARIS) +#include +#include +#include +#include +#include +#if defined(__cplusplus) +#include +#include +#endif +#endif \ No newline at end of file diff --git a/vendor/exiv2-0.25/config/config.h.in b/vendor/exiv2-0.25/config/config.h.in new file mode 100644 index 0000000..b5706bd --- /dev/null +++ b/vendor/exiv2-0.25/config/config.h.in @@ -0,0 +1,293 @@ +#ifndef __CONFIG__H__ +#define __CONFIG__H__ + +#ifdef _MSC_VER +# include "exv_msvc.h" +#else + +/* Define to 1 if you want to use libssh */ +#undef USE_SSH + +/* Define to 1 if you want to use libcurl in httpIo */ +#undef USE_CURL + +/* Define to 1 if you have the `alarm' function. */ +#undef HAVE_ALARM + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#undef HAVE_DECL_STRERROR_R + +/* Define to 1 if you have the `gmtime_r' function. */ +#undef HAVE_GMTIME_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBINTL_H + +#ifndef EXV_COMMERCIAL_VERSION + +/* Define to 1 to enable translation of Nikon lens names. */ +#undef HAVE_LENSDATA + +/* Define to 1 if translation of program messages to the user's + native language is requested. */ +#undef ENABLE_NLS + +#endif /* !EXV_COMMERCIAL_VERSION */ + +/* Define to 1 to include video code in the library */ +#undef ENABLE_VIDEO + +/* Define to 1 to include webready code in the library */ +#undef ENABLE_WEBREADY + +/* Define to 1 if you have the `iconv' function. */ +#undef HAVE_ICONV + +/* Define to `const' or to empty, depending on the second argument of `iconv'. */ +#undef ICONV_CONST + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define to 1 if you have the header file. */ +#define HAVE_REGEX 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#undef HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the `lstat' function. */ +#undef HAVE_LSTAT + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#undef HAVE_REALLOC + +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `strerror_r' function. */ +#undef HAVE_STRERROR_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `mmap' function. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `timegm' function. */ +#undef HAVE_TIMEGM + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MMAN_H + +/* Define to 1 if you have the `zlib' library. */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the Adobe XMP Toolkit. */ +#undef HAVE_XMP_TOOLKIT + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#undef LSTAT_FOLLOWS_SLASHED_SYMLINK + +/* Define if C++ visibility support is enabled */ +#undef WANT_VISIBILITY_SUPPORT + +/* Define if we have / are building a shared library (DLL) */ +#undef HAVE_DLL + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the name of this package. */ +#undef PACKAGE + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if strerror_r returns char *. */ +#undef STRERROR_R_CHAR_P + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to rpl_realloc if the replacement function should be used. */ +#undef realloc + +/* Define to `unsigned' if does not define. */ +#undef size_t + +#if defined __CYGWIN32__ && !defined __CYGWIN__ + /* For backwards compatibility with Cygwin b19 and + earlier, we define __CYGWIN__ here, so that + we can rely on checking just for that macro. */ +#define __CYGWIN__ __CYGWIN32__ +#endif + +#if defined __MINGW32__ || defined __MINGW64__ +#ifndef __MINGW__ +#define __MINGW__ 1 +#endif +#endif + +/* File path separator */ +#if defined WIN32 && !defined __CYGWIN__ +#define SEPARATOR_STR "\\" +#define SEPARATOR_CHR '\\' +#else +#define SEPARATOR_STR "/" +#define SEPARATOR_CHR '/' +#endif + +/* Windows unicode path support */ +#if defined WIN32 && !defined __CYGWIN__ && !defined __MINGW__ +# define EXV_UNICODE_PATH +#endif + +/* Symbol visibility support */ +#ifdef WIN32 +# define EXV_IMPORT __declspec(dllimport) +# define EXV_EXPORT __declspec(dllexport) +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +#else +# ifdef EXV_WANT_VISIBILITY_SUPPORT +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define EXV_IMPORT __attribute__ ((visibility("default"))) +# define EXV_EXPORT __attribute__ ((visibility("default"))) +# define EXV_DLLLOCAL __attribute__ ((visibility("hidden"))) +# define EXV_DLLPUBLIC __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +# define EXV_IMPORT __global +# define EXV_EXPORT __global +# define EXV_DLLLOCAL __hidden +# define EXV_DLLPUBLIC __global +# else +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif +# else /* ! EXV_WANT_VISIBILITY_SUPPORT */ +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif /* ! EXV_WANT_VISIBILITY_SUPPORT */ +#endif /* ! WIN32 */ + +/* Define EXIV2API for DLL builds */ +#ifdef EXV_HAVE_DLL +# ifdef EXV_BUILDING_LIB +# define EXIV2API EXV_EXPORT +# else +# define EXIV2API EXV_IMPORT +# endif /* ! EXV_BUILDING_LIB */ +#else +# define EXIV2API +#endif /* ! EXV_HAVE_DLL */ + +/* + If you're using Solaris and the Solaris Studio compiler, then you really + do need to use -library=stdcxx4 along with these inclusions below +*/ +#if defined(OS_SOLARIS) +#include +#include +#include +#include +#include +#if defined(__cplusplus) +#include +#include +#endif +#endif + +#endif +#endif diff --git a/vendor/exiv2-0.25/config/config.make b/vendor/exiv2-0.25/config/config.make new file mode 100644 index 0000000..2110466 --- /dev/null +++ b/vendor/exiv2-0.25/config/config.make @@ -0,0 +1,62 @@ +# ***************************************************** -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: config.make +# Version: $Rev: 3777 $ +# Author(s): Andreas Huggel (ahu) +# History: 26-Feb-05, ahu: created +# +# Description: +# Simple makefile to automate config tasks +# +# Restrictions: +# Requires GNU make. +# + +# Default make target +all: config + +.PHONY: all config mostlyclean clean distclean maintainer-clean + +config: + autoconf -o ../configure + +mostlyclean clean: + rm -f configure.scan autoscan.log + rm -rf autom4te.cache/ + rm -f *~ *.bak *# + +distclean: clean + rm -f config.h ../src/exv_conf.h config.mk exiv2.pc + +# This removes almost everything, including the configure script! +maintainer-clean: distclean diff --git a/vendor/exiv2-0.25/config/config.mk.in b/vendor/exiv2-0.25/config/config.mk.in new file mode 100644 index 0000000..3477d4f --- /dev/null +++ b/vendor/exiv2-0.25/config/config.mk.in @@ -0,0 +1,203 @@ +# ***************************************************** -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: config.mk.in +# Version: $Rev: 3866 $ +# Author(s): Andreas Huggel (ahu) +# History: 10-Dec-03, ahu: created +# +# Description: +# Exiv2 system configuration file. +# + +# ********************************************************************** +# Exiv2 version for use with libtool (-version-info argument) +EXIV2_LTVERSION = @EXIV2_LTVERSION@ +# Compile for use with a commercial license +COMMERCIAL_VERSION = @COMMERCIAL_VERSION@ + +# ********************************************************************** +# Libtool +LIBTOOL = $(top_srcdir)/libtool +LIBTOOL_DEPS = $(top_srcdir)/@LIBTOOL_DEPS@ + +# ********************************************************************** +# C++ Compiler and precompiler +CXX = @CXX@ +GXX = @GXX@ + +# Common compiler flags (warnings, symbols [-ggdb], optimization [-O2], etc) +CXXFLAGS = @CXXFLAGS@ +ifeq ($(GXX),yes) + CXXFLAGS += -Wall -Wcast-align -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Woverloaded-virtual -W +endif + +# Command to run only the preprocessor +CXXCPP = @CXXCPP@ + +# Preprocessor flags +CPPFLAGS = -I../src -I../include/ -I../include/exiv2 @CPPFLAGS@ -DEXV_LOCALEDIR=\"$(localedir)\" +ifeq ($(COMMERCIAL_VERSION),yes) + CPPFLAGS += -DEXV_COMMERCIAL_VERSION=1 +endif + +# Linker flags and libraries +LDFLAGS = @LDFLAGS@ +LIBS = @LTLIBINTL@ @LTLIBICONV@ @LIBS@ + +# Suffix of executables +EXEEXT := @EXEEXT@ + +# ********************************************************************** +# C Compiler +CC = @CC@ +GCC = @GCC@ + +CFLAGS = @CFLAGS@ +ifeq ($(GCC),yes) + CFLAGS += -Wall +endif + +# ********************************************************************** +# XMP support +ENABLE_XMP = @ENABLE_XMP@ + +ifdef ENABLE_XMP + XMPSDK_LIBRARY = xmpsdk + XMPSDK_DIR = $(top_srcdir)/xmpsdk + XMPSDK_CPPFLAGS = -I$(XMPSDK_DIR)/include + XMPSDK_LDFLAGS = -L$(XMPSDK_DIR)/src + XMPSDK_LIBS = -l$(XMPSDK_LIBRARY) +else + # Enable additional warnings. XMP Toolkit doesn't compile + # with these. + ifeq ($(GXX),yes) + CXXFLAGS += -Wundef -pedantic + endif +endif + +# Libcurl need for httpIO if it's selected +CURL_CPPFLAGS = @CURL_CPPFLAGS@ +CURL_LDFLAGS = @CURL_LDFLAGS@ +CURL_LIBS = @CURL_LIBS@ + +# Libssh need for SshIO if it's selected +USE_SSH = @USE_SSH@ +SSH_CPPFLAGS = @SSH_CPPFLAGS@ +SSH_LDFLAGS = @SSH_LDFLAGS@ +SSH_LIBS = @SSH_LIBS@ + +# Expat library needed to compile the XMP Toolkit +EXPAT_LDFLAGS = @EXPAT_LDFLAGS@ +EXPAT_CPPFLAGS = @EXPAT_CPPFLAGS@ +EXPAT_LIBS = @EXPAT_LIBS@ + +# ********************************************************************** +# Video support +ENABLE_VIDEO = @ENABLE_VIDEO@ + +# ********************************************************************** +# Libraries, include files, functions +HAVE_LIBZ = @HAVE_LIBZ@ +HAVE_STDINT = @HAVE_STDINT@ +HAVE_TIMEGM = @HAVE_TIMEGM@ + +# ********************************************************************** +# Advanced auto-dependency generation +# http://make.paulandlesley.org/autodep.html +DEP_TRACKING = @DEP_TRACKING@ + +ifdef DEP_TRACKING + # Directory for dependency files + DEPDIR = .deps + + # Command to run the compiler or preprocessor to produce + # dependencies. If you're not using gcc, you may need to change + # this to something suitable for your compiler or simply unset + # the variable. See the link above for suggestions. + MAKEDEPEND = $(CXX) -MM $(CPPFLAGS) -o $*.d $< + + # Dependency files post-process commands + POSTDEPEND = if test ! -d $(DEPDIR); then mkdir $(DEPDIR); fi; \ + if test -e $*.d; then cp $*.d $(DEPDIR)/$*.d; \ + sed -e 's/^\#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $(DEPDIR)/$*.d; \ + $(RM) $*.d; fi + + # Compiler flags to generate dependency files at the same time + # as object files (for gcc) + ifeq ($(GXX),yes) + CXXFLAGS += -MMD + CFLAGS += -MMD + MAKEDEPEND = + endif +endif + +# ********************************************************************** +# Compilation shortcuts +COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c +COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c +# LINK.cc does not need $(LIBS), libtool's dark magic takes care of that +# when linking a binary with a libtool library. +LINK.cc = $(CXX) $(LDFLAGS) + +# ********************************************************************** +# Installation programs +INSTALL_EXE = @INSTALL@ +INSTALL_PROGRAM = $(INSTALL_EXE) +INSTALL_DATA = $(INSTALL_EXE) -m 644 +INSTALL_DIRS = $(top_srcdir)/config/mkinstalldirs + +# ********************************************************************** +# Other programs +RM = rm -f + +# ********************************************************************** +# Directories +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +# Source directory +srcdir = @srcdir@ + +# Installation directories +bindir = @bindir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = $(datadir)/locale +incdir = @includedir@/exiv2 +libdir = @libdir@ +mandir = @mandir@ +man1dir = $(mandir)/man1 + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/config/config.rpath b/vendor/exiv2-0.25/config/config.rpath new file mode 100755 index 0000000..c547c68 --- /dev/null +++ b/vendor/exiv2-0.25/config/config.rpath @@ -0,0 +1,666 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2007 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case $cc_basename in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case $cc_basename in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix4* | aix5*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + library_names_spec='$libname.a' + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd1*) + ;; + freebsd* | dragonfly*) + case "$host_os" in + freebsd[123]*) + library_names_spec='$libname$shrext$versuffix' ;; + *) + library_names_spec='$libname$shrext' ;; + esac + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + nto-qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile-* | tilegx-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/exiv2-0.25/config/configure.ac b/vendor/exiv2-0.25/config/configure.ac new file mode 100644 index 0000000..3f519bd --- /dev/null +++ b/vendor/exiv2-0.25/config/configure.ac @@ -0,0 +1,425 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.61) +AC_INIT(exiv2, 0.25, ahuggel@gmx.net) +# See http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +EXIV2_LTVERSION=14:0:0 +PACKAGE=$PACKAGE_NAME +VERSION=$PACKAGE_VERSION +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") +AC_DEFINE_UNQUOTED(VERSION, "$VERSION") +AC_SUBST(EXIV2_LTVERSION) +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) +AC_CONFIG_SRCDIR([src/exif.cpp]) +AC_CONFIG_HEADER([./config/config.h]) +AC_CONFIG_AUX_DIR([./config]) + +# --------------------------------------------------------------------------- +# Checks for programs. +# --------------------------------------------------------------------------- +# Don't use -g to compile C++ code +ac_cv_prog_cxx_g=no +AC_PROG_CXX +AC_PROG_CXXCPP +# Don't use -g to compile C code +ac_cv_prog_cc_g=no +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_CANONICAL_HOST + +# --------------------------------------------------------------------------- +# i18n support +# --------------------------------------------------------------------------- +AM_GNU_GETTEXT([external]) + +# --------------------------------------------------------------------------- +# Libtool support +# --------------------------------------------------------------------------- +LT_INIT +AC_SUBST([LIBTOOL_DEPS]) + +# --------------------------------------------------------------------------- +# Checks for libraries. +# --------------------------------------------------------------------------- +AC_CHECK_LIBM() +LIBS="$LIBS $LIBM" +CHECK_ZLIB() +AC_SUBST(HAVE_LIBZ,$HAVE_LIBZ) +AM_ICONV + +# --------------------------------------------------------------------------- +# Checks for header files. +# --------------------------------------------------------------------------- +AC_HEADER_STDC +AC_CHECK_HEADERS([libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h regex.h]) + +# --------------------------------------------------------------------------- +# Checks for typedefs, structures, and compiler characteristics. +# --------------------------------------------------------------------------- +AC_HEADER_STDBOOL +AC_C_CONST +AC_C_INLINE +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_STRUCT_TM +#AC_TYPE_UINT8_T +#AC_TYPE_UINT16_T +#AC_TYPE_UINT32_T +#AC_TYPE_INT16_T +#AC_TYPE_INT32_T +AC_SUBST(GXX,$GXX) +AC_SUBST(GCC,$GCC) + +# --------------------------------------------------------------------------- +# Checks for library functions. +# --------------------------------------------------------------------------- +#AC_FUNC_MKTIME - fails when using old autoconf with gcc-4.3, see eg. Debian Bug#425544, and we don't use the result anyway +AC_FUNC_MMAP +AC_FUNC_STRERROR_R +AC_CHECK_FUNCS([gmtime_r lstat memset mmap munmap strchr strerror strtol]) +AC_CHECK_FUNCS([timegm], HAVE_TIMEGM=1) +AC_SUBST(HAVE_TIMEGM,$HAVE_TIMEGM) + +# --------------------------------------------------------------------------- +# Miscellaneous +# --------------------------------------------------------------------------- +AC_MSG_CHECKING([whether to enable dependency tracking]) +AC_ARG_ENABLE(dependency-tracking, + [ --disable-dependency-tracking speeds up one-time build], + USE_TRACKING=$enableval, USE_TRACKING=yes) +AC_MSG_RESULT($USE_TRACKING) +DEP_TRACKING= +if test "$USE_TRACKING" = "yes"; then + DEP_TRACKING=1 +fi +AC_SUBST(DEP_TRACKING,$DEP_TRACKING) + +AC_MSG_CHECKING([whether to enable symbol visibility support]) +visibility=yes +# visibility support in cygwin/ming generates 1000's of warning, set off by default +case "$host_os" in + *mingw* | *cygwin*) visibility=no ;; +esac +AC_ARG_ENABLE(visibility, + [ --disable-visibility do not use symbol visibility support ], + VISIBILITY_SUPPORT=$enableval, VISIBILITY_SUPPORT=$visibility) +AC_MSG_RESULT($VISIBILITY_SUPPORT) +if test "$VISIBILITY_SUPPORT" = "yes"; then + # Sun Studio C++ compiler (which apparently ignores -fvisibility-inlines-hidden) + AX_CXX_CHECK_FLAG(-xldscope=hidden,[],[],[VISIBILITY_SUPPORT=yes],[VISIBILITY_SUPPORT=no]) + if test "$VISIBILITY_SUPPORT" = "yes"; then + CXXFLAGS="${CXXFLAGS} -xldscope=hidden" + else + # GNU g++ + AX_CXX_CHECK_FLAG(-fvisibility-inlines-hidden,[],[],[VISIBILITY_SUPPORT=yes],[VISIBILITY_SUPPORT=no]) + if test "$VISIBILITY_SUPPORT" = "yes"; then + CXXFLAGS="${CXXFLAGS} -fvisibility=hidden -fvisibility-inlines-hidden" + fi + fi + if test "$VISIBILITY_SUPPORT" = "yes"; then + AC_DEFINE(WANT_VISIBILITY_SUPPORT) + fi + if test "$enable_shared" = "yes"; then + AC_DEFINE(HAVE_DLL) + fi +fi + +AC_MSG_CHECKING([whether to use the lens database for Nikon lens names]) +AC_ARG_ENABLE(lensdata, + [ --disable-lensdata do not use the lens database for Nikon lens names ], + USE_LENSDATA=$enableval, USE_LENSDATA=yes) +AC_MSG_RESULT($USE_LENSDATA) +if test "$USE_LENSDATA" = "yes"; then + AC_DEFINE(HAVE_LENSDATA,1) +fi + +AC_MSG_CHECKING([whether to compile a commercial version of the Exiv2 library]) +AC_ARG_ENABLE(commercial, + [ --enable-commercial compile with the EXV_COMMERCIAL_VERSION symbol set ], + COMMERCIAL_VERSION=$enableval, COMMERCIAL_VERSION=no) +AC_MSG_RESULT($COMMERCIAL_VERSION) +AC_SUBST(COMMERCIAL_VERSION,$COMMERCIAL_VERSION) + +AC_MSG_CHECKING([whether to enable XMP support (requires expat)]) +AC_ARG_ENABLE(xmp, + [ --disable-xmp do not compile XMP support and the XMP Toolkit ], + USE_XMP_TOOLKIT=$enableval, USE_XMP_TOOLKIT=yes) +AC_MSG_RESULT($USE_XMP_TOOLKIT) + +AC_MSG_CHECKING([whether to compile with video support]) +AC_ARG_ENABLE(video, + [ --enable-video compile with video support ], + USE_VIDEO=$enableval, USE_VIDEO=no) +AC_MSG_RESULT($USE_VIDEO) +ENABLE_VIDEO= +if test "$USE_VIDEO" = "yes"; then + ENABLE_VIDEO=1 + AC_DEFINE(ENABLE_VIDEO) +fi +AC_SUBST(ENABLE_VIDEO,$ENABLE_VIDEO) + +AC_MSG_CHECKING([whether to compile with webready support]) +AC_ARG_ENABLE(webready, + [ --enable-webready compile Exiv2 library with webready support ], + ENABLE_WEBREADY=$enableval, ENABLE_WEBREADY=no) +AC_MSG_RESULT($ENABLE_WEBREADY) +if test "$enable_webready" = "yes"; then + AC_DEFINE(ENABLE_WEBREADY) +fi + +if test "$enable_webready" = "yes"; then + # libcurl option might change flags, so we save them initially + _cppflags="${CPPFLAGS}" + _ldflags="${LDFLAGS}" + + AC_ARG_WITH(curl, + [ --with-curl[[=DIR]] use libcurl in DIR],[ + if test "$withval" != "no" -a "$withval" != "yes"; then + CURL_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi + ]) + + USE_CURL= + if test "$with_curl" != "no"; then + # Check for libcurl library + found_curl=yes + CURL_CPPFLAGS= + CURL_LDFLAGS= + CURL_LIBS= + AC_CHECK_HEADERS(curl/curl.h, + AC_CHECK_LIB(curl, curl_easy_init,[ + USE_CURL=yes + AC_DEFINE([USE_CURL], [1], [Use libcurl library]) + CURL_LIBS="-lcurl" + if test "x${CURL_DIR}" != "x"; then + CURL_CPPFLAGS="-I${CURL_DIR}/include" + CURL_LDFLAGS="-L${CURL_DIR}/lib" + fi],[found_curl=no]),[found_curl=no]) + if test "$found_curl" = "no"; then + AC_MSG_ERROR(either specify a valid curl installation with --with-curl=DIR or use --without-curl) + fi + AC_SUBST(CURL_CPPFLAGS) + AC_SUBST(CURL_LDFLAGS) + AC_SUBST(CURL_LIBS) + fi + CPPFLAGS=${_cppflags} + LDFLAGS=${_ldflags} + + # libssh option might change flags, so we save them initially + _cppflags="${CPPFLAGS}" + _ldflags="${LDFLAGS}" + + AC_ARG_WITH(ssh, + [ --with-ssh[[=DIR]] use libssh in DIR],[ + if test "$withval" != "no" -a "$withval" != "yes"; then + SSH_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi + ]) + + USE_SSH= + if test "$with_ssh" != "no"; then + # Check for libssh library + found_ssh=yes + SSH_CPPFLAGS= + SSH_LDFLAGS= + SSH_LIBS= + AC_CHECK_HEADERS(libssh/libssh.h, + AC_CHECK_LIB(ssh, ssh_new,[ + USE_SSH=1 + AC_DEFINE([USE_SSH], [1], [Use libssh library]) + SSH_LIBS="-lssh" + if test "x${SSH_DIR}" != "x"; then + SSH_CPPFLAGS="-I${SSH_DIR}/include" + SSH_LDFLAGS="-L${SSH_DIR}/lib" + fi],[found_ssh=no]),[found_ssh=no]) + if test "$found_ssh" = "no"; then + AC_MSG_ERROR(either specify a valid libssh installation with --with-ssh=DIR or use --without-ssh) + fi + AC_SUBST(SSH_CPPFLAGS) + AC_SUBST(SSH_LDFLAGS) + AC_SUBST(SSH_LIBS) + fi + AC_SUBST(USE_SSH,$USE_SSH) + CPPFLAGS=${_cppflags} + LDFLAGS=${_ldflags} +fi + +# expat option might change flags, so we save them initially +_cppflags="${CPPFLAGS}" +_ldflags="${LDFLAGS}" + +AC_ARG_WITH(expat, +[ --with-expat[[=DIR]] use libexpat in DIR],[ + if test "$withval" != "no" -a "$withval" != "yes"; then + EXPAT_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi +]) + +ENABLE_XMP= +if test "$USE_XMP_TOOLKIT" = "yes"; then + # Check for expat library + found_expat=yes + EXPAT_CPPFLAGS= + EXPAT_LDFLAGS= + EXPAT_LIBS= + if test "$with_expat" != "no"; then + AC_CHECK_HEADERS(expat.h, + AC_CHECK_LIB(expat, XML_ParserCreate,[ + AC_DEFINE([HAVE_EXPAT], [], [Have Expat XML parser library]) + EXPAT_LIBS="-lexpat" + if test "x${EXPAT_DIR}" != "x"; then + EXPAT_CPPFLAGS="-I${EXPAT_DIR}/include" + EXPAT_LDFLAGS="-L${EXPAT_DIR}/lib" + fi],[found_expat=no]),[found_expat=no]) + fi + if test "$with_expat" = "no" -o "$found_expat" = "no"; then + AC_MSG_ERROR(either specify a valid expat installation with --with-expat=DIR or disable XMP support with --disable-xmp) + fi + AC_DEFINE(HAVE_XMP_TOOLKIT,1) + ENABLE_XMP=1 + AC_SUBST(EXPAT_CPPFLAGS) + AC_SUBST(EXPAT_LDFLAGS) + AC_SUBST(EXPAT_LIBS) +fi +AC_SUBST(ENABLE_XMP) + +CPPFLAGS=${_cppflags} +LDFLAGS=${_ldflags} + +# Udi's hack to add libiconv to the Libs section in exiv2.pc +if test "$enable_shared" = "no"; then + EXV_LIB_STATIC=$LTLIBICONV +else + EXV_LIB_STATIC= +fi +AC_SUBST(EXV_LIB_STATIC) + +# Add flag for DLL on Windows +# +# This must happen after all other configure checks, because +# the "-no-undefined" flag is only for libtool and must not be +# passed to GCC by accident. +# version.cpp requires link to psapi/Windows and dl/Unix builds +case "$host_os" in +*mingw* | *cygwin*) + LDFLAGS="$LDFLAGS -no-undefined -lpsapi -lwldap32 -lws2_32" ;; +*) + LDFLAGS="$LDFLAGS -ldl" ;; +esac + +# --------------------------------------------------------------------------- +# Create output files. +# --------------------------------------------------------------------------- +AC_CONFIG_FILES([./Makefile:./config/Makefile.in]) +AC_CONFIG_FILES([./config/config.mk]) +AC_CONFIG_FILES([./config/exiv2.pc]) +AC_CONFIG_FILES([./po/Makefile.in]) +AC_CONFIG_FILES([./src/doxygen.hpp]) +AC_OUTPUT + +# --------------------------------------------------------------------------- +# Configuration summary. +# --------------------------------------------------------------------------- + +echo "" +echo "------------------------------------------------------------------" +echo "-- Exiv2 $VERSION feature configuration summary" +echo "--" + +case "$enable_shared" in +yes) echo "-- Build a shared library......... YES" ;; +*) echo "-- Build a shared library......... NO" ;; +esac + +case "$VISIBILITY_SUPPORT" in +yes) echo "-- Use symbol visibility support.. YES" ;; +*) echo "-- Use symbol visibility support.. NO" ;; +esac + +case "x$HAVE_LIBZ" in +x1) echo "-- PNG image support.............. YES" ;; +*) echo "-- PNG image support.............. NO" + echo "" + echo "zlib is required for PNG support. Make sure the zlib header files" + echo "are installed and use --with-zlib=DIR if it is in a non-standard" + echo "location. You can get zlib from http://www.zlib.net/" + echo "" ;; +esac + +case "$USE_NLS" in +yes) echo "-- Native language support........ YES" ;; +*) echo "-- Native language support........ NO" + echo "" + echo "gettext is required for native language support. Make sure the" + echo "gettext header files are installed. You can get gettext from" + echo "http://www.gnu.org/software/gettext/" + echo "" ;; +esac + +case "$USE_LENSDATA" in +yes) echo "-- Nikon lens database............ YES" ;; +*) echo "-- Nikon lens database............ NO" ;; +esac + +case "$USE_XMP_TOOLKIT" in +yes) echo "-- XMP metadata support........... YES" ;; +*) echo "-- XMP metadata support........... NO" + echo "" + echo "Expat is required for XMP support. Make sure the Expat header" + echo "files are installed and use --with-expat=DIR if it is in a" + echo "non-standard location. You can get Expat from" + echo "http://expat.sourceforge.net/" + echo "" ;; +esac + +case "x$ENABLE_VIDEO" in +x1) echo "-- Video support.................. YES" ;; +*) echo "-- Video support.................. NO" +esac + +if test "$enable_webready" = "yes"; then + echo "-- Webready support............... YES" +else + echo "-- Webready support............... NO" +fi + +if test "$enable_webready" = "yes"; then +case "$USE_CURL" in +yes) echo "-- Using Lib Curl................. YES" ;; +*) echo "-- Using Lib Curl................. NO" + echo "" + echo "Libcurl is required for HttpIo in basicIo.cpp. Make sure the Curl header" + echo "files are installed and use --with-curl=DIR if it is in a" + echo "non-standard location. You can get Curl from" + echo "http://curl.haxx.se/libcurl/" + echo "" ;; +esac + +case "x$USE_SSH" in +x1) echo "-- Using Lib SSH.................. YES" ;; +*) echo "-- Using Lib SSH.................. NO" + echo "" + echo "Libssh is required for SshIo in basicIo.cpp. Make sure the libssh header" + echo "files are installed and use --with-ssh=DIR if it is in a" + echo "non-standard location. You can get libssh from" + echo "http://www.libssh.org/get-it/" + echo "" ;; +esac +fi + +echo "------------------------------------------------------------------" +echo "" + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/config/exiv2.lsm.cmake b/vendor/exiv2-0.25/config/exiv2.lsm.cmake new file mode 100644 index 0000000..f657ee8 --- /dev/null +++ b/vendor/exiv2-0.25/config/exiv2.lsm.cmake @@ -0,0 +1,14 @@ +Begin4 +Title: ${PACKAGE_NAME} +Version: ${PACKAGE_VERSION} +Entered-date: 2004-05-01 +Description: Exiv2 is a C++ library and a command line utility to manage image metadata. + It provides fast and easy read and write access to the Exif, IPTC and XMP metadata of images in various formats. +Keywords: image photo metadata exif iptc xmp makernotes +Author: ${PACKAGE_COPYRIGHT} <${PACKAGE_BUGREPORT}> +Maintained-by: ${PACKAGE_COPYRIGHT} <${PACKAGE_BUGREPORT}> +Primary-site: ${PACKAGE_URL} +Original-site: ${PACKAGE_URL} +Platforms: Linux and other Unices, MacOs-X, Win32. +Copying-policy: GPL +End diff --git a/vendor/exiv2-0.25/config/exiv2.pc.cmake b/vendor/exiv2-0.25/config/exiv2.pc.cmake new file mode 100644 index 0000000..256f8ac --- /dev/null +++ b/vendor/exiv2-0.25/config/exiv2.pc.cmake @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: exiv2 +Description: Exif and IPTC metadata library and tools +Version: @PACKAGE_VERSION@ +URL: @PACKAGE_URL@ +Libs: -L${libdir} -lexiv2 @EXV_LIB_STATIC@ +Cflags: -I${includedir} diff --git a/vendor/exiv2-0.25/config/exiv2.pc.in b/vendor/exiv2-0.25/config/exiv2.pc.in new file mode 100644 index 0000000..e74b18b --- /dev/null +++ b/vendor/exiv2-0.25/config/exiv2.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: exiv2 +Description: Image metadata library and tools +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lexiv2 @EXV_LIB_STATIC@ +Libs.private: @EXPAT_LDFLAGS@ @SSH_LDFLAGS@ @CURL_LDFLAGS@ @LTLIBINTL@ @LTLIBICONV@ @LIBS@ @EXPAT_LIBS@ @SSH_LIBS@ @CURL_LIBS@ +Cflags: -I${includedir} diff --git a/vendor/exiv2-0.25/config/exiv2_uninstall.cmake b/vendor/exiv2-0.25/config/exiv2_uninstall.cmake new file mode 100644 index 0000000..36dd9ba --- /dev/null +++ b/vendor/exiv2-0.25/config/exiv2_uninstall.cmake @@ -0,0 +1,22 @@ +IF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"${file}\"") + IF(EXISTS "${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF("${rm_retval}" STREQUAL 0) + ELSE("${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"${file}\"") + ENDIF("${rm_retval}" STREQUAL 0) + ELSE(EXISTS "${file}") + MESSAGE(STATUS "File \"${file}\" does not exist.") + ENDIF(EXISTS "${file}") +ENDFOREACH(file) diff --git a/vendor/exiv2-0.25/config/exv_msvc.h.cmake b/vendor/exiv2-0.25/config/exv_msvc.h.cmake new file mode 100644 index 0000000..f2fa241 --- /dev/null +++ b/vendor/exiv2-0.25/config/exv_msvc.h.cmake @@ -0,0 +1,5 @@ +/* +This file redirects to the configuration header file generated by cmake. +*/ + +#include "exv_conf.h" diff --git a/vendor/exiv2-0.25/config/install-sh b/vendor/exiv2-0.25/config/install-sh new file mode 100755 index 0000000..a5897de --- /dev/null +++ b/vendor/exiv2-0.25/config/install-sh @@ -0,0 +1,519 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-12-25.00 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/vendor/exiv2-0.25/config/ltmain.sh b/vendor/exiv2-0.25/config/ltmain.sh new file mode 100755 index 0000000..3506ead --- /dev/null +++ b/vendor/exiv2-0.25/config/ltmain.sh @@ -0,0 +1,8413 @@ +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION="2.2.6 Debian-2.2.6a-4" +TIMESTAMP="" +package_revision=1.3012 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/bin/sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} + +exit_cmd=: + + + + + +# Check that we have a working $ECHO. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell, and then maybe $ECHO will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case "$@ " in + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { +test "$mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac + + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." + + exit $? +} + + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + $ECHO "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + $ECHO "X----------------------------------------------------------------------" | $Xsed + $ECHO "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + $ECHO + $ECHO "If you ever happen to want to link against installed libraries" + $ECHO "in a given directory, LIBDIR, you must either use libtool, and" + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" + $ECHO "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" + $ECHO " during execution" + fi + if test -n "$runpath_var"; then + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" + $ECHO " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $ECHO + + $ECHO "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} + +test "$mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + $ECHO >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac + + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + + +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 + fi + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + ECHO=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$ECHO works! + : + else + # Restart under the correct shell, and then maybe \$ECHO will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $ECHO "\ + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +# define setmode _setmode +#else +# include +# include +# ifdef __CYGWIN__ +# include +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : ""), + (value ? value : ""))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done + fi + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | + $GREP . >/dev/null; then + $ECHO + if test "X$deplibs_check_method" = "Xnone"; then + $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + else + $ECHO "*** Warning: inter-library dependencies are not known to be supported." + fi + $ECHO "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $ECHO + $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + $ECHO "*** a static module, that should work as long as the dlopening" + $ECHO "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $ECHO "*** The inter-library dependencies that have been dropped here will be" + $ECHO "*** automatically added whenever a program is linked with this library" + $ECHO "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; + *) files="$files $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/vendor/exiv2-0.25/config/mkinstalldirs b/vendor/exiv2-0.25/config/mkinstalldirs new file mode 100755 index 0000000..6fbe5e1 --- /dev/null +++ b/vendor/exiv2-0.25/config/mkinstalldirs @@ -0,0 +1,150 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2004-02-15.20 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit 0 + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/vendor/exiv2-0.25/configure b/vendor/exiv2-0.25/configure new file mode 100755 index 0000000..4cd76eb --- /dev/null +++ b/vendor/exiv2-0.25/configure @@ -0,0 +1,20007 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for exiv2 0.25. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and ahuggel@gmx.net +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +$* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='exiv2' +PACKAGE_TARNAME='exiv2' +PACKAGE_VERSION='0.25' +PACKAGE_STRING='exiv2 0.25' +PACKAGE_BUGREPORT='ahuggel@gmx.net' +PACKAGE_URL='' + +ac_unique_file="src/exif.cpp" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_list= +ac_subst_vars='LTLIBOBJS +LIBOBJS +EXV_LIB_STATIC +ENABLE_XMP +EXPAT_LIBS +EXPAT_LDFLAGS +EXPAT_CPPFLAGS +USE_SSH +SSH_LIBS +SSH_LDFLAGS +SSH_CPPFLAGS +CURL_LIBS +CURL_LDFLAGS +CURL_CPPFLAGS +ENABLE_VIDEO +COMMERCIAL_VERSION +DEP_TRACKING +HAVE_TIMEGM +GCC +GXX +HAVE_LIBZ +LIBM +LIBTOOL_DEPS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +lt_ECHO +RANLIB +STRIP +AR +OBJDUMP +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +POSUB +LTLIBINTL +LIBINTL +INTLLIBS +LTLIBICONV +LIBICONV +INTL_MACOSX_LIBS +MSGMERGE +XGETTEXT +GMSGFMT +MSGFMT +USE_NLS +MKINSTALLDIRS +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +SET_MAKE +LN_S +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +CPP +ac_ct_CC +CFLAGS +CC +CXXCPP +OBJEXT +EXEEXT +ac_ct_CXX +CPPFLAGS +LDFLAGS +CXXFLAGS +CXX +VERSION +PACKAGE +EXIV2_LTVERSION +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +enable_shared +enable_static +with_pic +enable_fast_install +enable_libtool_lock +with_zlib +enable_dependency_tracking +enable_visibility +enable_lensdata +enable_commercial +enable_xmp +enable_video +enable_webready +with_curl +with_ssh +with_expat +' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC +CXXCPP +CC +CFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures exiv2 0.25 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/exiv2] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of exiv2 0.25:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-dependency-tracking speeds up one-time build + --disable-visibility do not use symbol visibility support + --disable-lensdata do not use the lens database for Nikon lens names + --enable-commercial compile with the EXV_COMMERCIAL_VERSION symbol set + --disable-xmp do not compile XMP support and the XMP Toolkit + --enable-video compile with video support + --enable-webready compile Exiv2 library with webready support + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-zlib=DIR root directory path of zlib installation defaults to + /usr/local or /usr if not found in /usr/local + --without-zlib to disable zlib usage completely + --with-curl[=DIR] use libcurl in DIR + --with-ssh[=DIR] use libssh in DIR + --with-expat[=DIR] use libexpat in DIR + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXXCPP C++ preprocessor + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +exiv2 configure 0.25 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------ ## +## Report this to ahuggel@gmx.net ## +## ------------------------------ ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by exiv2 $as_me 0.25, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# See http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +EXIV2_LTVERSION=14:0:0 +PACKAGE=$PACKAGE_NAME +VERSION=$PACKAGE_VERSION +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + + + + + +ac_config_headers="$ac_config_headers ./config/config.h" + +ac_aux_dir= +for ac_dir in ./config "$srcdir"/./config; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./config \"$srcdir\"/./config" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + +# --------------------------------------------------------------------------- +# Checks for programs. +# --------------------------------------------------------------------------- +# Don't use -g to compile C++ code +ac_cv_prog_cxx_g=no +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C++ compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Don't use -g to compile C code +ac_cv_prog_cc_g=no +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + +# --------------------------------------------------------------------------- +# i18n support +# --------------------------------------------------------------------------- + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +$as_echo_n "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGFMT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GMSGFMT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XGETTEXT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGMERGE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +$as_echo "$MSGMERGE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 +$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${acl_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${acl_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +$as_echo_n "checking for shared library run path origin... " >&6; } +if ${acl_cv_rpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +$as_echo "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then : + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } +if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } +if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_CFLocaleCopyCurrent=yes +else + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +$as_echo_n "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then : + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + + + + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +$as_echo_n "checking for GNU gettext in libc... " >&6; } +if ${gt_cv_func_gnugettext1_libc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_gnugettext1_libc=yes +else + gt_cv_func_gnugettext1_libc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 +$as_echo "$gt_cv_func_gnugettext1_libc" >&6; } + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if ${am_cv_func_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +$as_echo_n "checking for GNU gettext in libintl... " >&6; } +if ${gt_cv_func_gnugettext1_libintl+:} false; then : + $as_echo_n "(cached) " >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_gnugettext1_libintl=yes +else + gt_cv_func_gnugettext1_libintl=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext1_libintl=yes + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 +$as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } + fi + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +$as_echo_n "checking whether to use NLS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +$as_echo "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +$as_echo_n "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +$as_echo "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +$as_echo_n "checking how to link with libintl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +$as_echo "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + +$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# --------------------------------------------------------------------------- +# Libtool support +# --------------------------------------------------------------------------- +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.2.6' +macro_revision='1.3012' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$ac_tool_prefix"; then + for ac_prog in "dumpbin -symbols" "link -dump -symbols" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in "dumpbin -symbols" "link -dump -symbols" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:6464: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:6467: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:6470: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + + + + + + + + + + + + + + + + + + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 7664 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +_lt_caught_CXX_error=yes; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + + + + + + + + + + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9456: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:9460: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + + + + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9795: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:9799: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9900: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:9904: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9955: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:9959: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void) {} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 12338 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 12434 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } + + + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14390: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14394: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14489: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14493: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14541: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14545: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + +# --------------------------------------------------------------------------- +# Checks for libraries. +# --------------------------------------------------------------------------- +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5 +$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; } +if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmw $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char _mwvalidcheckl (); +int +main () +{ +return _mwvalidcheckl (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_mw__mwvalidcheckl=yes +else + ac_cv_lib_mw__mwvalidcheckl=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 +$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } +if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then : + LIBM="-lmw" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + LIBM="$LIBM -lm" +fi + + ;; +*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + LIBM="-lm" +fi + + ;; +esac + + +LIBS="$LIBS $LIBM" +# +# Handle user hints +# +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if zlib is wanted" >&5 +$as_echo_n "checking if zlib is wanted... " >&6; } + +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then : + withval=$with_zlib; if test "$withval" != no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + ZLIB_HOME="$withval" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +else + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +ZLIB_HOME=/usr/local +if test ! -f "${ZLIB_HOME}/include/zlib.h" +then + ZLIB_HOME=/usr +fi + +fi + +# +# Locate zlib, if wanted +# +if test -n "${ZLIB_HOME}" +then + ZLIB_OLD_LDFLAGS=$LDFLAGS + ZLIB_OLD_CPPFLAGS=$CPPFLAGS + # + # Adding /usr/lib or /usr/include to the flags/libs may + # hurt if using a compiler not installed in the standard + # place. + # + if test "${ZLIB_HOME}" != "/usr" + then + LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" + CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" + fi + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 +$as_echo_n "checking for inflateEnd in -lz... " >&6; } +if ${ac_cv_lib_z_inflateEnd+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflateEnd (); +int +main () +{ +return inflateEnd (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_inflateEnd=yes +else + ac_cv_lib_z_inflateEnd=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 +$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } +if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : + zlib_cv_libz=yes +else + zlib_cv_libz=no +fi + + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : + zlib_cv_zlib_h=yes +else + zlib_cv_zlib_h=no +fi + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes" + then + # + # If both library and header were found, use them + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 +$as_echo_n "checking for inflateEnd in -lz... " >&6; } +if ${ac_cv_lib_z_inflateEnd+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflateEnd (); +int +main () +{ +return inflateEnd (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_inflateEnd=yes +else + ac_cv_lib_z_inflateEnd=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 +$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } +if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zlib in ${ZLIB_HOME}" >&5 +$as_echo_n "checking zlib in ${ZLIB_HOME}... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } + HAVE_LIBZ=1 + else + # + # If either header or library was not found, revert and bomb + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zlib in ${ZLIB_HOME}" >&5 +$as_echo_n "checking zlib in ${ZLIB_HOME}... " >&6; } + LDFLAGS="$ZLIB_OLD_LDFLAGS" + CPPFLAGS="$ZLIB_OLD_CPPFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } + as_fn_error $? "either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib" "$LINENO" 5 + fi +fi + + +HAVE_LIBZ=$HAVE_LIBZ + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +$as_echo_n "checking for iconv... " >&6; } +if ${am_cv_func_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +$as_echo "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + +$as_echo "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +$as_echo_n "checking how to link with libiconv... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +$as_echo "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 +$as_echo_n "checking for iconv declaration... " >&6; } + if ${am_cv_proto_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_cv_proto_iconv_arg1="" +else + am_cv_proto_iconv_arg1="const" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +$as_echo "${ac_t:- + }$am_cv_proto_iconv" >&6; } + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + +# --------------------------------------------------------------------------- +# Checks for header files. +# --------------------------------------------------------------------------- +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +for ac_header in libintl.h locale.h malloc.h stdint.h stdlib.h string.h unistd.h sys/mman.h utime.h regex.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# --------------------------------------------------------------------------- +# Checks for typedefs, structures, and compiler characteristics. +# --------------------------------------------------------------------------- +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if ${ac_cv_header_stdbool_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #if false + "error: false is not 0" + #endif + #ifndef true + "error: true is not defined" + #endif + #if true != 1 + "error: true is not 1" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } + ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE__BOOL 1 +_ACEOF + + +fi + + +if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h +else + ac_cv_struct_tm=sys/time.h +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +#AC_TYPE_UINT8_T +#AC_TYPE_UINT16_T +#AC_TYPE_UINT32_T +#AC_TYPE_INT16_T +#AC_TYPE_INT32_T +GXX=$GXX + +GCC=$GCC + + +# --------------------------------------------------------------------------- +# Checks for library functions. +# --------------------------------------------------------------------------- +#AC_FUNC_MKTIME - fails when using old autoconf with gcc-4.3, see eg. Debian Bug#425544, and we don't use the result anyway + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + +ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default" +if test "x$ac_cv_have_decl_strerror_r" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR_R $ac_have_decl +_ACEOF + +for ac_func in strerror_r +do : + ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r" +if test "x$ac_cv_func_strerror_r" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRERROR_R 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5 +$as_echo_n "checking whether strerror_r returns char *... " >&6; } +if ${ac_cv_func_strerror_r_char_p+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ac_cv_func_strerror_r_char_p=no + if test $ac_cv_have_decl_strerror_r = yes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + char *p = strerror_r (0, buf, sizeof buf); + return !p || x; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_func_strerror_r_char_p=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else + # strerror_r is not declared. Choose between + # systems that have relatively inaccessible declarations for the + # function. BeOS and DEC UNIX 4.0 fall in this category, but the + # former has a strerror_r that returns char*, while the latter + # has a strerror_r that returns `int'. + # This test should segfault on the DEC system. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + extern char *strerror_r (); +int +main () +{ +char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + return ! isalpha (x); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_strerror_r_char_p=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5 +$as_echo "$ac_cv_func_strerror_r_char_p" >&6; } +if test $ac_cv_func_strerror_r_char_p = yes; then + +$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h + +fi + +for ac_func in gmtime_r lstat memset mmap munmap strchr strerror strtol +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in timegm +do : + ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm" +if test "x$ac_cv_func_timegm" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_TIMEGM 1 +_ACEOF + HAVE_TIMEGM=1 +fi +done + +HAVE_TIMEGM=$HAVE_TIMEGM + + +# --------------------------------------------------------------------------- +# Miscellaneous +# --------------------------------------------------------------------------- +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable dependency tracking" >&5 +$as_echo_n "checking whether to enable dependency tracking... " >&6; } +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; USE_TRACKING=$enableval +else + USE_TRACKING=yes +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_TRACKING" >&5 +$as_echo "$USE_TRACKING" >&6; } +DEP_TRACKING= +if test "$USE_TRACKING" = "yes"; then + DEP_TRACKING=1 +fi +DEP_TRACKING=$DEP_TRACKING + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable symbol visibility support" >&5 +$as_echo_n "checking whether to enable symbol visibility support... " >&6; } +visibility=yes +# visibility support in cygwin/ming generates 1000's of warning, set off by default +case "$host_os" in + *mingw* | *cygwin*) visibility=no ;; +esac +# Check whether --enable-visibility was given. +if test "${enable_visibility+set}" = set; then : + enableval=$enable_visibility; VISIBILITY_SUPPORT=$enableval +else + VISIBILITY_SUPPORT=$visibility +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $VISIBILITY_SUPPORT" >&5 +$as_echo "$VISIBILITY_SUPPORT" >&6; } +if test "$VISIBILITY_SUPPORT" = "yes"; then + # Sun Studio C++ compiler (which apparently ignores -fvisibility-inlines-hidden) + + + + + + flag=`echo "-xldscope=hidden" | $SED 'y% .=/+-(){}<>:*,%_______________%'` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler accepts the -xldscope=hidden flag" >&5 +$as_echo_n "checking whether the C++ compiler accepts the -xldscope=hidden flag... " >&6; } +if eval \${ax_cv_cxx_check_flag_$flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -xldscope=hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + + eval "ax_cv_cxx_check_flag_$flag=yes" + +else + + eval "ax_cv_cxx_check_flag_$flag=no" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CXXFLAGS="$save_CXXFLAGS" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +fi +eval ac_res=\$ax_cv_cxx_check_flag_$flag + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if eval "test \"`echo '$ax_cv_cxx_check_flag_'$flag`\" = yes"; then : + + : + VISIBILITY_SUPPORT=yes + +else + + : + VISIBILITY_SUPPORT=no + +fi + + if test "$VISIBILITY_SUPPORT" = "yes"; then + CXXFLAGS="${CXXFLAGS} -xldscope=hidden" + else + # GNU g++ + + + + + + flag=`echo "-fvisibility-inlines-hidden" | $SED 'y% .=/+-(){}<>:*,%_______________%'` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler accepts the -fvisibility-inlines-hidden flag" >&5 +$as_echo_n "checking whether the C++ compiler accepts the -fvisibility-inlines-hidden flag... " >&6; } +if eval \${ax_cv_cxx_check_flag_$flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + + eval "ax_cv_cxx_check_flag_$flag=yes" + +else + + eval "ax_cv_cxx_check_flag_$flag=no" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + CXXFLAGS="$save_CXXFLAGS" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +fi +eval ac_res=\$ax_cv_cxx_check_flag_$flag + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if eval "test \"`echo '$ax_cv_cxx_check_flag_'$flag`\" = yes"; then : + + : + VISIBILITY_SUPPORT=yes + +else + + : + VISIBILITY_SUPPORT=no + +fi + + if test "$VISIBILITY_SUPPORT" = "yes"; then + CXXFLAGS="${CXXFLAGS} -fvisibility=hidden -fvisibility-inlines-hidden" + fi + fi + if test "$VISIBILITY_SUPPORT" = "yes"; then + $as_echo "#define WANT_VISIBILITY_SUPPORT 1" >>confdefs.h + + fi + if test "$enable_shared" = "yes"; then + $as_echo "#define HAVE_DLL 1" >>confdefs.h + + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the lens database for Nikon lens names" >&5 +$as_echo_n "checking whether to use the lens database for Nikon lens names... " >&6; } +# Check whether --enable-lensdata was given. +if test "${enable_lensdata+set}" = set; then : + enableval=$enable_lensdata; USE_LENSDATA=$enableval +else + USE_LENSDATA=yes +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_LENSDATA" >&5 +$as_echo "$USE_LENSDATA" >&6; } +if test "$USE_LENSDATA" = "yes"; then + $as_echo "#define HAVE_LENSDATA 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile a commercial version of the Exiv2 library" >&5 +$as_echo_n "checking whether to compile a commercial version of the Exiv2 library... " >&6; } +# Check whether --enable-commercial was given. +if test "${enable_commercial+set}" = set; then : + enableval=$enable_commercial; COMMERCIAL_VERSION=$enableval +else + COMMERCIAL_VERSION=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMMERCIAL_VERSION" >&5 +$as_echo "$COMMERCIAL_VERSION" >&6; } +COMMERCIAL_VERSION=$COMMERCIAL_VERSION + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable XMP support (requires expat)" >&5 +$as_echo_n "checking whether to enable XMP support (requires expat)... " >&6; } +# Check whether --enable-xmp was given. +if test "${enable_xmp+set}" = set; then : + enableval=$enable_xmp; USE_XMP_TOOLKIT=$enableval +else + USE_XMP_TOOLKIT=yes +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_XMP_TOOLKIT" >&5 +$as_echo "$USE_XMP_TOOLKIT" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile with video support" >&5 +$as_echo_n "checking whether to compile with video support... " >&6; } +# Check whether --enable-video was given. +if test "${enable_video+set}" = set; then : + enableval=$enable_video; USE_VIDEO=$enableval +else + USE_VIDEO=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_VIDEO" >&5 +$as_echo "$USE_VIDEO" >&6; } +ENABLE_VIDEO= +if test "$USE_VIDEO" = "yes"; then + ENABLE_VIDEO=1 + $as_echo "#define ENABLE_VIDEO 1" >>confdefs.h + +fi +ENABLE_VIDEO=$ENABLE_VIDEO + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile with webready support" >&5 +$as_echo_n "checking whether to compile with webready support... " >&6; } +# Check whether --enable-webready was given. +if test "${enable_webready+set}" = set; then : + enableval=$enable_webready; ENABLE_WEBREADY=$enableval +else + ENABLE_WEBREADY=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENABLE_WEBREADY" >&5 +$as_echo "$ENABLE_WEBREADY" >&6; } +if test "$enable_webready" = "yes"; then + $as_echo "#define ENABLE_WEBREADY 1" >>confdefs.h + +fi + +if test "$enable_webready" = "yes"; then + # libcurl option might change flags, so we save them initially + _cppflags="${CPPFLAGS}" + _ldflags="${LDFLAGS}" + + +# Check whether --with-curl was given. +if test "${with_curl+set}" = set; then : + withval=$with_curl; + if test "$withval" != "no" -a "$withval" != "yes"; then + CURL_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi + +fi + + + USE_CURL= + if test "$with_curl" != "no"; then + # Check for libcurl library + found_curl=yes + CURL_CPPFLAGS= + CURL_LDFLAGS= + CURL_LIBS= + for ac_header in curl/curl.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "curl/curl.h" "ac_cv_header_curl_curl_h" "$ac_includes_default" +if test "x$ac_cv_header_curl_curl_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_CURL_CURL_H 1 +_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_easy_init in -lcurl" >&5 +$as_echo_n "checking for curl_easy_init in -lcurl... " >&6; } +if ${ac_cv_lib_curl_curl_easy_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char curl_easy_init (); +int +main () +{ +return curl_easy_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_curl_curl_easy_init=yes +else + ac_cv_lib_curl_curl_easy_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curl_curl_easy_init" >&5 +$as_echo "$ac_cv_lib_curl_curl_easy_init" >&6; } +if test "x$ac_cv_lib_curl_curl_easy_init" = xyes; then : + + USE_CURL=yes + +$as_echo "#define USE_CURL 1" >>confdefs.h + + CURL_LIBS="-lcurl" + if test "x${CURL_DIR}" != "x"; then + CURL_CPPFLAGS="-I${CURL_DIR}/include" + CURL_LDFLAGS="-L${CURL_DIR}/lib" + fi +else + found_curl=no +fi + +else + found_curl=no +fi + +done + + if test "$found_curl" = "no"; then + as_fn_error $? "either specify a valid curl installation with --with-curl=DIR or use --without-curl" "$LINENO" 5 + fi + + + + fi + CPPFLAGS=${_cppflags} + LDFLAGS=${_ldflags} + + # libssh option might change flags, so we save them initially + _cppflags="${CPPFLAGS}" + _ldflags="${LDFLAGS}" + + +# Check whether --with-ssh was given. +if test "${with_ssh+set}" = set; then : + withval=$with_ssh; + if test "$withval" != "no" -a "$withval" != "yes"; then + SSH_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi + +fi + + + USE_SSH= + if test "$with_ssh" != "no"; then + # Check for libssh library + found_ssh=yes + SSH_CPPFLAGS= + SSH_LDFLAGS= + SSH_LIBS= + for ac_header in libssh/libssh.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "libssh/libssh.h" "ac_cv_header_libssh_libssh_h" "$ac_includes_default" +if test "x$ac_cv_header_libssh_libssh_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSSH_LIBSSH_H 1 +_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssh_new in -lssh" >&5 +$as_echo_n "checking for ssh_new in -lssh... " >&6; } +if ${ac_cv_lib_ssh_ssh_new+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lssh $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ssh_new (); +int +main () +{ +return ssh_new (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ssh_ssh_new=yes +else + ac_cv_lib_ssh_ssh_new=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh_ssh_new" >&5 +$as_echo "$ac_cv_lib_ssh_ssh_new" >&6; } +if test "x$ac_cv_lib_ssh_ssh_new" = xyes; then : + + USE_SSH=1 + +$as_echo "#define USE_SSH 1" >>confdefs.h + + SSH_LIBS="-lssh" + if test "x${SSH_DIR}" != "x"; then + SSH_CPPFLAGS="-I${SSH_DIR}/include" + SSH_LDFLAGS="-L${SSH_DIR}/lib" + fi +else + found_ssh=no +fi + +else + found_ssh=no +fi + +done + + if test "$found_ssh" = "no"; then + as_fn_error $? "either specify a valid libssh installation with --with-ssh=DIR or use --without-ssh" "$LINENO" 5 + fi + + + + fi + USE_SSH=$USE_SSH + + CPPFLAGS=${_cppflags} + LDFLAGS=${_ldflags} +fi + +# expat option might change flags, so we save them initially +_cppflags="${CPPFLAGS}" +_ldflags="${LDFLAGS}" + + +# Check whether --with-expat was given. +if test "${with_expat+set}" = set; then : + withval=$with_expat; + if test "$withval" != "no" -a "$withval" != "yes"; then + EXPAT_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi + +fi + + +ENABLE_XMP= +if test "$USE_XMP_TOOLKIT" = "yes"; then + # Check for expat library + found_expat=yes + EXPAT_CPPFLAGS= + EXPAT_LDFLAGS= + EXPAT_LIBS= + if test "$with_expat" != "no"; then + for ac_header in expat.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" +if test "x$ac_cv_header_expat_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_EXPAT_H 1 +_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5 +$as_echo_n "checking for XML_ParserCreate in -lexpat... " >&6; } +if ${ac_cv_lib_expat_XML_ParserCreate+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lexpat $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XML_ParserCreate (); +int +main () +{ +return XML_ParserCreate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_expat_XML_ParserCreate=yes +else + ac_cv_lib_expat_XML_ParserCreate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5 +$as_echo "$ac_cv_lib_expat_XML_ParserCreate" >&6; } +if test "x$ac_cv_lib_expat_XML_ParserCreate" = xyes; then : + + +$as_echo "#define HAVE_EXPAT /**/" >>confdefs.h + + EXPAT_LIBS="-lexpat" + if test "x${EXPAT_DIR}" != "x"; then + EXPAT_CPPFLAGS="-I${EXPAT_DIR}/include" + EXPAT_LDFLAGS="-L${EXPAT_DIR}/lib" + fi +else + found_expat=no +fi + +else + found_expat=no +fi + +done + + fi + if test "$with_expat" = "no" -o "$found_expat" = "no"; then + as_fn_error $? "either specify a valid expat installation with --with-expat=DIR or disable XMP support with --disable-xmp" "$LINENO" 5 + fi + $as_echo "#define HAVE_XMP_TOOLKIT 1" >>confdefs.h + + ENABLE_XMP=1 + + + +fi + + +CPPFLAGS=${_cppflags} +LDFLAGS=${_ldflags} + +# Udi's hack to add libiconv to the Libs section in exiv2.pc +if test "$enable_shared" = "no"; then + EXV_LIB_STATIC=$LTLIBICONV +else + EXV_LIB_STATIC= +fi + + +# Add flag for DLL on Windows +# +# This must happen after all other configure checks, because +# the "-no-undefined" flag is only for libtool and must not be +# passed to GCC by accident. +# version.cpp requires link to psapi/Windows and dl/Unix builds +case "$host_os" in +*mingw* | *cygwin*) + LDFLAGS="$LDFLAGS -no-undefined -lpsapi -lwldap32 -lws2_32" ;; +*) + LDFLAGS="$LDFLAGS -ldl" ;; +esac + +# --------------------------------------------------------------------------- +# Create output files. +# --------------------------------------------------------------------------- +ac_config_files="$ac_config_files ./Makefile:./config/Makefile.in" + +ac_config_files="$ac_config_files ./config/config.mk" + +ac_config_files="$ac_config_files ./config/exiv2.pc" + +ac_config_files="$ac_config_files ./po/Makefile.in" + +ac_config_files="$ac_config_files ./src/doxygen.hpp" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by exiv2 $as_me 0.25, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +exiv2 config.status 0.25 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' +predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' +postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +AR \ +AR_FLAGS \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +SHELL \ +ECHO \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_wl \ +lt_prog_compiler_pic \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +fix_srcfile_path \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +fix_srcfile_path_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` + ;; +esac + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "./config/config.h") CONFIG_HEADERS="$CONFIG_HEADERS ./config/config.h" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "./Makefile") CONFIG_FILES="$CONFIG_FILES ./Makefile:./config/Makefile.in" ;; + "./config/config.mk") CONFIG_FILES="$CONFIG_FILES ./config/config.mk" ;; + "./config/exiv2.pc") CONFIG_FILES="$CONFIG_FILES ./config/exiv2.pc" ;; + "./po/Makefile.in") CONFIG_FILES="$CONFIG_FILES ./po/Makefile.in" ;; + "./src/doxygen.hpp") CONFIG_FILES="$CONFIG_FILES ./src/doxygen.hpp" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default-1":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +# --------------------------------------------------------------------------- +# Configuration summary. +# --------------------------------------------------------------------------- + +echo "" +echo "------------------------------------------------------------------" +echo "-- Exiv2 $VERSION feature configuration summary" +echo "--" + +case "$enable_shared" in +yes) echo "-- Build a shared library......... YES" ;; +*) echo "-- Build a shared library......... NO" ;; +esac + +case "$VISIBILITY_SUPPORT" in +yes) echo "-- Use symbol visibility support.. YES" ;; +*) echo "-- Use symbol visibility support.. NO" ;; +esac + +case "x$HAVE_LIBZ" in +x1) echo "-- PNG image support.............. YES" ;; +*) echo "-- PNG image support.............. NO" + echo "" + echo "zlib is required for PNG support. Make sure the zlib header files" + echo "are installed and use --with-zlib=DIR if it is in a non-standard" + echo "location. You can get zlib from http://www.zlib.net/" + echo "" ;; +esac + +case "$USE_NLS" in +yes) echo "-- Native language support........ YES" ;; +*) echo "-- Native language support........ NO" + echo "" + echo "gettext is required for native language support. Make sure the" + echo "gettext header files are installed. You can get gettext from" + echo "http://www.gnu.org/software/gettext/" + echo "" ;; +esac + +case "$USE_LENSDATA" in +yes) echo "-- Nikon lens database............ YES" ;; +*) echo "-- Nikon lens database............ NO" ;; +esac + +case "$USE_XMP_TOOLKIT" in +yes) echo "-- XMP metadata support........... YES" ;; +*) echo "-- XMP metadata support........... NO" + echo "" + echo "Expat is required for XMP support. Make sure the Expat header" + echo "files are installed and use --with-expat=DIR if it is in a" + echo "non-standard location. You can get Expat from" + echo "http://expat.sourceforge.net/" + echo "" ;; +esac + +case "x$ENABLE_VIDEO" in +x1) echo "-- Video support.................. YES" ;; +*) echo "-- Video support.................. NO" +esac + +if test "$enable_webready" = "yes"; then + echo "-- Webready support............... YES" +else + echo "-- Webready support............... NO" +fi + +if test "$enable_webready" = "yes"; then +case "$USE_CURL" in +yes) echo "-- Using Lib Curl................. YES" ;; +*) echo "-- Using Lib Curl................. NO" + echo "" + echo "Libcurl is required for HttpIo in basicIo.cpp. Make sure the Curl header" + echo "files are installed and use --with-curl=DIR if it is in a" + echo "non-standard location. You can get Curl from" + echo "http://curl.haxx.se/libcurl/" + echo "" ;; +esac + +case "x$USE_SSH" in +x1) echo "-- Using Lib SSH.................. YES" ;; +*) echo "-- Using Lib SSH.................. NO" + echo "" + echo "Libssh is required for SshIo in basicIo.cpp. Make sure the libssh header" + echo "files are installed and use --with-ssh=DIR if it is in a" + echo "non-standard location. You can get libssh from" + echo "http://www.libssh.org/get-it/" + echo "" ;; +esac +fi + +echo "------------------------------------------------------------------" +echo "" + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/contrib/buildForMac b/vendor/exiv2-0.25/contrib/buildForMac new file mode 100755 index 0000000..5e6aa79 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/buildForMac @@ -0,0 +1,58 @@ +#!/bin/bash + +## +# buildForMac +# example: contrib/buildForMac --[dis|en]able-shared +# +## + +## +# test OS level (L=9 SL==10 Lion = 11, ML=12) +LION="" +let os=$(uname -a | cut -d' ' -f 3 | cut -d'.' -f 1) +if [ $(( os >= 11 )) ]; then + LION="--with-zlib=/usr/lib" +fi + +if [ ! -d contrib ]; then + echo "you are in the wrong directory - please run $0 in the main directory (which includes contrib and src)" + exit 1 +fi +if [ ! -e configure ]; then make config ; fi +if [ -z $TARGET ]; then export TARGET="MACOSX_DEPLOYMENT_TARGET=10.5" ; fi + +# version=$(grep EXIV2_LTVERSION config/config.mk | cut "-d " -f 3 | cut -d: -f 1) +# lib=libexiv2.$version.dylib + +build() { + make clean + ./configure CFLAGS="$arch" CXXFLAGS="$arch" LDFLAGS="$arch -L${PWD}/xmpsdk/src" OBJCFLAGS="$arch" OBJCXXFLAGS="$arch" $TARGET $LION "$@" + make CFLAGS="$arch" CXXFLAGS="$arch" LDFLAGS="$arch -L${PWD}/xmpsdk/src" OBJCFLAGS="$arch" OBJCXXFLAGS="$arch" $TARGET all + # make CFLAGS="$arch" CXXFLAGS="$arch" LDFLAGS="$arch -L${PWD}/xmpsdk/src" OBJCFLAGS="$arch" OBJCXXFLAGS="$arch" $TARGET samples + if [ "$?" != "0" ]; then + echo build failed + exit + fi +} + +## +# build one architecture at a time +for arch in '-arch i386' '-arch x86_64' ; do + echo arch = $arch + a=${arch:6:100} + build "$@" + + ## + # copy .libs to .arch + for d in $(find . -name ".libs" -type d); do + D=$(dirname $d)/.$a + ditto $d $D + done +done + +## +# combine the builds into a universal +$(dirname $0)/makeUniversal + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/contrib/coverity.sh b/vendor/exiv2-0.25/contrib/coverity.sh new file mode 100755 index 0000000..9ceb4da --- /dev/null +++ b/vendor/exiv2-0.25/contrib/coverity.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +# Copyright (c) 2013-2015, Gilles Caulier, +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# Before to run this script you must set these shell variable : +# $EXIVCoverityToken with token of Exiv2 project given by Coverity SCAN +# $EXIVCoverityEmail with email adress to send SCAN result. +# +# Coverity Scan bin dir must be appended to PATH variable. +# +# See this url to see how to prepare your computer with Coverity SCAN tool: +# http://scan.coverity.com/projects/297/upload_form + +cd .. + +# Manage build sub-dir +if [ -d "build.cmake" ]; then + rm -rfv ./build.cmake +fi + +if [[ "$OSTYPE" == "linux-gnu" ]]; then + ./bootstrap.linux +elif [[ "$OSTYPE" == "darwin"* ]]; then + ./bootstrap.macports +else + echo "Unsupported platform..." + exit -1 +fi + +# Get active svn branch path to create SCAN import description string +svn info | grep "URL" | sed '/svn/{s/.*\(svn.*\)/\1/};' > ./build.cmake/svn_branch.txt +desc=$( /dev/null + +echo "Done. Coverity Scan tarball 'myproject.tgz' is uploaded and ready for analyse." +echo "That took approximately $SECONDS seconds to upload." + diff --git a/vendor/exiv2-0.25/contrib/createEpsTestfiles b/vendor/exiv2-0.25/contrib/createEpsTestfiles new file mode 100755 index 0000000..479a5b1 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/createEpsTestfiles @@ -0,0 +1,33 @@ +#!/bin/sh +set -eu + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 BASENAME" + exit 1 +fi + +set -x + +bin=../../../src +$bin/exiv2 -V + +exiv2version="`$bin/exiv2 -V | sed -n '1 s,^exiv2 [^ ]* \([^ ]*\).*,\1,p'`" + +rm -f $1.xmp +$bin/exiv2 -f -eX $1.eps + +cp $1.eps $1.eps.delxmp +if $bin/exiv2 -dx $1.eps.delxmp; then + sed -i "s,%Exiv2Version: $exiv2version,%Exiv2Version: _Exiv2Version_," $1.eps.delxmp +else + rm -f $1.eps.delxmp +fi + +cp $1.eps $1.eps.newxmp +cp eps-test-newxmp.exv $1.eps.exv +if $bin/exiv2 -ix $1.eps.newxmp; then + sed -i "s,%Exiv2Version: $exiv2version,%Exiv2Version: _Exiv2Version_," $1.eps.newxmp +else + rm -f $1.eps.newxmp +fi +rm -f $1.eps.exv diff --git a/vendor/exiv2-0.25/contrib/diffeps b/vendor/exiv2-0.25/contrib/diffeps new file mode 100755 index 0000000..934707e --- /dev/null +++ b/vendor/exiv2-0.25/contrib/diffeps @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ "$#" -ne 2 ] ; then + echo "Usage: $0 file1.eps file2.eps" + exit 1 +fi + +suffix='0a8baf61-6321-4899-86e8-8bf9ebd002b3' + +sed 's/\r$//; s/$//; s/\r/\n/g' < "$1" > "$1.$suffix" +sed 's/\r$//; s/$//; s/\r/\n/g' < "$2" > "$2.$suffix" + +diff -a -u "$1.$suffix" "$2.$suffix" +exitcode="$?" + +rm -f "$1.$suffix" "$2.$suffix" + +exit "$exitcode" diff --git a/vendor/exiv2-0.25/contrib/makeUniversal b/vendor/exiv2-0.25/contrib/makeUniversal new file mode 100755 index 0000000..4b086c6 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/makeUniversal @@ -0,0 +1,30 @@ +#!/bin/bash + +## +# makeUniversal - combine .i386 and .x86_64 build results into .libs +# this script is called by buildForMac +## + +## +# search for directories called .x86_64 +# run every file and lipo .x86_64/file .x86_64/file -> .libs/file +for D in $(find . -name ".x86_64"); do + for F in $(find $(dirname $D)/.x86_64 -type f); do + f=$(echo $F | sed -E -e "s/.x86_64/.i386/") + U=$(echo $F | sed -E -e "s/.x86_64/.libs/") + if [[ -e $f && -e $F ]]; then + # echo $F $f -> $U + lipo -arch i386 $f -arch x86_64 $F -create -output $U + if [ $? != '0' ]; then + echo FAILED lipo -arch i386 $f -arch x86_64 $F -create -output $U + else + eval $(stat -s $U) + s=$(printf "%10s" ${st_size}) + echo $(lipo -info $U|sed -E -e "s/Architectures in the fat file://" -e "s/ are://" -e "s#$U##" ) "$s" $U + fi + fi + done +done + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/contrib/organize/MD5.cpp b/vendor/exiv2-0.25/contrib/organize/MD5.cpp new file mode 100644 index 0000000..a6e2e82 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/MD5.cpp @@ -0,0 +1,235 @@ +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5_CTX structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + * + * Changed so as no longer to depend on Colin Plumb's `usual.h' header + * definitions; now uses stuff from dpkg's config.h. + * - Ian Jackson . + * Still in the public domain. + */ + +#include + +#include "MD5.h" + +using namespace std; + +static void +byteSwap(UWORD32 *buf, unsigned words) +{ + const uint32_t byteOrderTest = 0x1; + if (((char *)&byteOrderTest)[0] == 0) { + md5byte *p = (md5byte *)buf; + + do { + *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | + ((unsigned)p[1] << 8 | p[0]); + p += 4; + } while (--words); + } +} + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void +MD5Init(struct MD5_CTX *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bytes[0] = 0; + ctx->bytes[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void +MD5Update(struct MD5_CTX *ctx, md5byte const *buf, unsigned len) +{ + UWORD32 t; + + /* Update byte count */ + + t = ctx->bytes[0]; + if ((ctx->bytes[0] = t + len) < t) + ctx->bytes[1]++; /* Carry from low to high */ + + t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ + if (t > len) { + memcpy((md5byte *)ctx->in + 64 - t, buf, len); + return; + } + /* First chunk is an odd size */ + memcpy((md5byte *)ctx->in + 64 - t, buf, t); + byteSwap(ctx->in, 16); + MD5Transform(ctx->buf, ctx->in); + buf += t; + len -= t; + + /* Process data in 64-byte chunks */ + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteSwap(ctx->in, 16); + MD5Transform(ctx->buf, ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void +MD5Final(md5byte digest[16], struct MD5_CTX *ctx) +{ + int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ + md5byte *p = (md5byte *)ctx->in + count; + + /* Set the first char of padding to 0x80. There is always room. */ + *p++ = 0x80; + + /* Bytes of padding needed to make 56 bytes (-8..55) */ + count = 56 - 1 - count; + + if (count < 0) { /* Padding forces an extra block */ + memset(p, 0, count + 8); + byteSwap(ctx->in, 16); + MD5Transform(ctx->buf, ctx->in); + p = (md5byte *)ctx->in; + count = 56; + } + memset(p, 0, count); + byteSwap(ctx->in, 14); + + /* Append length in bits and transform */ + ctx->in[14] = ctx->bytes[0] << 3; + ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; + MD5Transform(ctx->buf, ctx->in); + + byteSwap(ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ +} + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f,w,x,y,z,in,s) \ + (w += f(x,y,z) + in, w = (w<>(32-s)) + x) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void +MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) +{ + register UWORD32 a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} diff --git a/vendor/exiv2-0.25/contrib/organize/MD5.h b/vendor/exiv2-0.25/contrib/organize/MD5.h new file mode 100644 index 0000000..00a5e94 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/MD5.h @@ -0,0 +1,50 @@ +#ifndef __MD5_h__ +#define __MD5_h__ + +/* + * This is the header file for the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5_CTX structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + * + * Changed so as no longer to depend on Colin Plumb's `usual.h' + * header definitions; now uses stuff from dpkg's config.h + * - Ian Jackson . + * Still in the public domain. + */ + +#include +#ifdef EXV_HAVE_STDINT_H +# include +#endif + +/* MSVC doesn't provide C99 types, but it has MS specific variants */ +#ifdef _MSC_VER +typedef unsigned __int32 uint32_t; +#endif + +typedef unsigned char md5byte; +typedef uint32_t UWORD32; + +struct MD5_CTX { + UWORD32 buf[4]; + UWORD32 bytes[2]; + UWORD32 in[16]; +}; + +extern void MD5Init(struct MD5_CTX *context); +extern void MD5Update(struct MD5_CTX *context, md5byte const *buf, unsigned len); +extern void MD5Final(unsigned char digest[16], struct MD5_CTX *context); +extern void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); + +#endif diff --git a/vendor/exiv2-0.25/contrib/organize/Makefile b/vendor/exiv2-0.25/contrib/organize/Makefile new file mode 100644 index 0000000..8693e13 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/Makefile @@ -0,0 +1,145 @@ +# ************************************************************* -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile +# Version: $Rev: 3777 $ +# Author(s): Andreas Huggel (ahu) +# History: 31-Jan-09, ahu: created +# +# Description: +# Simple Makefile to build the organize application. Requires installed +# exiv2 library and headers. Adapted from samples/Makefile. +# +# Restrictions: +# Requires GNU make. +# + +# ****************************************************************************** +# Default make target +all: ozbin + +# Include system configuration +top_srcdir = ../.. +include $(top_srcdir)/config/config.mk +include boost.mk + +# ****************************************************************************** +# Source files + +# Source files for the organize application +OZMAIN = organize.cpp +OZSRC = helpers.cpp MD5.cpp + +# ****************************************************************************** +# Initialisations +SHELL = /bin/sh + +.SUFFIXES: +.SUFFIXES: .c .cpp .o .so + +.PRECIOUS: %.cpp + +CPPFLAGS := -I$(BOOST_INC_DIR) `pkg-config exiv2 --cflags` +ifdef HAVE_STDINT + CPPFLAGS += -DEXV_HAVE_STDINT_H=1 +endif + +LDFLAGS := $(BOOST_LIBS) `pkg-config exiv2 --libs` + +OZOBJ = $(OZSRC:.cpp=.o) $(OZMAIN:.cpp=.o) +OZBIN = $(OZMAIN:.cpp=) +OZEXE = $(OZMAIN:.cpp=$(EXEEXT)) + +ifdef DEP_TRACKING +DEP = $(OZMAIN:%.cpp=$(DEPDIR)/%.d) $(OZSRC:%.cpp=$(DEPDIR)/%.d) +endif + +# ****************************************************************************** +# Rules +ozbin: $(OZBIN) + +$(OZOBJ): %.o: %.cpp + $(COMPILE.cc) -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +%.ii: %.cpp + set -e; \ + $(CXXCPP) -E $(CPPFLAGS) $< | sed '/^[ ]*$$/d' > $@ + +# ****************************************************************************** +# Targets +.PHONY: all ozbin relink binclean install uninstall mostlyclean clean distclean maintainer-clean + +ifdef DEP_TRACKING +# Include targets from dependency files +-include $(DEP) +endif + +$(OZBIN): $(OZOBJ) + $(LIBTOOL) --mode=link $(LINK.cc) -o $@ $(OZOBJ) + +relink: binclean organize + +install: + $(INSTALL_DIRS) $(DESTDIR)$(bindir) + @$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(OZEXE) $(DESTDIR)$(bindir)/$(OZEXE) + +uninstall: + @$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(bindir)/$(OZEXE) + -rmdir $(DESTDIR)$(bindir) + +# Remove binaries, e.g., to relink them +binclean: + $(RM) $(OZEXE) + +mostlyclean: + $(RM) core + $(RM) $(OZMAIN:.cpp=.ii) $(OZSRC:.cpp=.ii) + $(RM) $(OZMAIN:%.cpp=.libs/%.d) $(OZSRC:%.cpp=.libs/%.d) + -rmdir .libs + $(RM) $(OZOBJ) + +clean: binclean mostlyclean + +# Run `make distclean' from the top source directory to also remove +# files created by configuring the program. +distclean: clean +ifdef DEP_TRACKING + $(RM) $(DEP) + -rmdir $(DEPDIR) +endif + $(RM) *~ *.bak *# + +# This command is intended for maintainers to use; it deletes files +# that may need special tools to rebuild. +maintainer-clean: uninstall distclean diff --git a/vendor/exiv2-0.25/contrib/organize/README b/vendor/exiv2-0.25/contrib/organize/README new file mode 100644 index 0000000..26285f7 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/README @@ -0,0 +1,3 @@ +organize uses the Boost library (http://www.boost.org). +Configuration settings for Boost are in the file boost.mk +in this directory and should be changed as required. diff --git a/vendor/exiv2-0.25/contrib/organize/boost.mk b/vendor/exiv2-0.25/contrib/organize/boost.mk new file mode 100644 index 0000000..b7cd50c --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/boost.mk @@ -0,0 +1,3 @@ +# Boost configuration for organize - change paths and library names as needed +BOOST_INC_DIR = /usr/local/include/boost-1_37 +BOOST_LIBS = /usr/local/lib/libboost_system-gcc43-mt-1_37.a /usr/local/lib/libboost_filesystem-gcc43-mt-1_37.a /usr/local/lib/libboost_regex-gcc43-mt-1_37.a /usr/local/lib/libboost_program_options-gcc43-mt-1_37.a diff --git a/vendor/exiv2-0.25/contrib/organize/helpers.cpp b/vendor/exiv2-0.25/contrib/organize/helpers.cpp new file mode 100644 index 0000000..34e9df5 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/helpers.cpp @@ -0,0 +1,641 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2009 Brad Schick + * + * This file is part of the organize tool. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: helpers.cpp + Version: $Rev: 1762 $ + Author(s): Brad Schick (brad) + History: 19-Jan-09, brad: created +*/ +// ***************************************************************************** + +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include "helpers.hpp" + +#define BOOST_FILESYSTEM_NO_DEPRECATED + +namespace fs = boost::filesystem; +typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed); + + +std::string scrub(const std::string &dirty, bool strip_space = false) +{ + std::string scrub = boost::trim_copy(dirty); + if(strip_space) { + boost::regex space("\\s"); + scrub = boost::regex_replace(scrub, space, ""); + } + boost::regex dash("[:/\\\\|<>]"); + boost::regex under("[\"'\\[\\]\\{\\}#=%\\$\\?,\\+\\*]"); + scrub = boost::regex_replace(scrub, dash, "-"); + + return boost::regex_replace(scrub, under, "_"); +} + +bool exif_data(const Exiv2::Image *image, const char *key, Exiv2::ExifData::const_iterator &md) +{ + assert(image && key); + bool ok = false; + try { + const Exiv2::ExifData &exifData = image->exifData(); + Exiv2::ExifKey exifKey(key); + md = exifData.findKey(exifKey); + if(md != exifData.end() && md->typeId() != Exiv2::undefined) + ok = true; + } + catch(const Exiv2::AnyError&) { + } + return ok; +} + +bool exif_data_easy(const Exiv2::Image *image, EasyAccessFct easy, Exiv2::ExifData::const_iterator &md) +{ + assert(image && easy); + bool ok = false; + try { + const Exiv2::ExifData &exifData = image->exifData(); + md = easy(exifData); + if(md != exifData.end() && md->typeId() != Exiv2::undefined) + ok = true; + } + catch(const Exiv2::AnyError&) { + } + return ok; +} + + +bool iptc_data(const Exiv2::Image *image, const char *key, Exiv2::IptcData::const_iterator &md) +{ + bool ok = false; + assert(image && key); + try { + const Exiv2::IptcData &iptcData = image->iptcData(); + Exiv2::IptcKey iptcKey(key); + md = iptcData.findKey(iptcKey); + if(md != iptcData.end() && md->typeId() != Exiv2::undefined) + ok = true; + } + catch(const Exiv2::AnyError&) { + } + return ok; +} + +std::string exif_date(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.DateTimeDigitized", md); + if(!done) + done = exif_data(image, "Exif.Photo.DateTimeOriginal", md); + if(!done) + return ""; + + std::string date = scrub(md->print().substr(0,10)); + // Some files have zeros for dates, just fail in that case + if(boost::lexical_cast(date.substr(0,4))==0) + return ""; + + return date; +} + +std::string exif_year(const Exiv2::Image *image, const fs::path &path) +{ + std::string date = exif_date(image, path); + if(date.length()) + return date.substr(0,4); + else + return date; +} + +std::string exif_month(const Exiv2::Image *image, const fs::path &path) +{ + std::string date = exif_date(image, path); + if(date.length()) + return date.substr(5,2); + else + return date; +} + +std::string exif_day(const Exiv2::Image *image, const fs::path &path) +{ + std::string date = exif_date(image, path); + if(date.length()) + return date.substr(8,2); + else + return date; +} + +bool iptc_get_date(const Exiv2::Image *image, Exiv2::DateValue::Date &date) +{ + Exiv2::IptcData::const_iterator md; + bool done = iptc_data(image, "Iptc.Application2.DigitizationDate", md); + if(!done) + done = iptc_data(image, "Iptc.Application2.DateCreated", md); + if(!done) + return false; + date = ((Exiv2::DateValue*)md->getValue().get())->getDate(); + return date.year > 0; +} + +std::string iptc_date(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::DateValue::Date date; + if(iptc_get_date(image, date)) + return str(boost::format("%4d-%02d-%02d") % date.year % date.month % date.day); + else + return ""; +} + +std::string iptc_year(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::DateValue::Date date; + if(iptc_get_date(image, date)) + return str(boost::format("%4d") % date.year); + else + return ""; +} + +std::string iptc_month(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::DateValue::Date date; + if(iptc_get_date(image, date)) + return str(boost::format("%02d") % date.month); + else + return ""; +} + +std::string iptc_day(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::DateValue::Date date; + if(iptc_get_date(image, date)) + return str(boost::format("%02d") % date.day); + else + return ""; +} + +bool file_get_tm(const fs::path &path, std::tm &tm) +{ + std::time_t timer = fs::last_write_time(path); + if(time > 0) { + tm = *localtime(&timer); + return true; + } + else { + return false; + } +} + +std::string file_date(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%4d-%02d-%02d") % (tm.tm_year + 1900) % (tm.tm_mon + 1) % tm.tm_mday); + else + return ""; +} + +std::string file_year(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%4d") % (tm.tm_year + 1900)); + else + return ""; +} + +std::string file_month(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%02d") % (tm.tm_mon + 1)); + else + return ""; +} + +std::string file_day(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%02d") % tm.tm_mday); + else + return ""; +} + +/* +std::string xmp_date(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_year(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_month(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_day(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_time(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.DateTimeDigitized", md); + if(!done) + done = exif_data(image, "Exif.Photo.DateTimeOriginal", md); + if(!done) + return ""; + + std::string datetime = md->print(); + // Some files have zeros for dates, just fail in that case + if(boost::lexical_cast(datetime.substr(0,4)) == 0) + return ""; + + return scrub(datetime.substr(11)); +} + +std::string exif_hour(const Exiv2::Image *image, const fs::path &path) +{ + std::string time = exif_time(image, path); + if(time.length()) + return time.substr(0,2); + else + return time; +} + +std::string exif_minute(const Exiv2::Image *image, const fs::path &path) +{ + std::string time = exif_time(image, path); + if(time.length()) + return time.substr(3,2); + else + return time; +} + +std::string exif_second(const Exiv2::Image *image, const fs::path &path) +{ + std::string time = exif_time(image, path); + if(time.length()) + return time.substr(6,2); + else + return time; +} + +bool iptc_get_time(const Exiv2::Image *image, Exiv2::TimeValue::Time &time) +{ + Exiv2::IptcData::const_iterator md; + bool done = iptc_data(image, "Iptc.Application2.DigitizationTime", md); + if(!done) + done = iptc_data(image, "Iptc.Application2.TimeCreated", md); + if(!done) + return false; + time = ((Exiv2::TimeValue*)md->getValue().get())->getTime(); + // Zero is a valid time, so this one is hard to check. + return true; +} + +std::string iptc_time(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::TimeValue::Time time; + if(iptc_get_time(image, time)) + return str(boost::format("%02d-%02d-%02d") % time.hour % time.minute % time.second); + else + return ""; +} + +std::string iptc_hour(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::TimeValue::Time time; + if(iptc_get_time(image, time)) + return str(boost::format("%02d") % time.hour); + else + return ""; +} + +std::string iptc_minute(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::TimeValue::Time time; + if(iptc_get_time(image, time)) + return str(boost::format("%02d") % time.minute); + else + return ""; +} + +std::string iptc_second(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::TimeValue::Time time; + if(iptc_get_time(image, time)) + return str(boost::format("%02d") % time.second); + else + return ""; +} + +std::string file_time(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%02d-%02d-%02d") % tm.tm_hour % tm.tm_min % tm.tm_sec); + else + return ""; +} + +std::string file_hour(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%02d") % tm.tm_hour); + else + return ""; +} + +std::string file_minute(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%02d") % tm.tm_min); + else + return ""; +} + +std::string file_second(const Exiv2::Image *, const fs::path &path) +{ + std::tm tm; + if(file_get_tm(path, tm)) + return str(boost::format("%02d") % tm.tm_sec); + else + return ""; +} + +/*std::string xmp_time(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_hour(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_minute(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_second(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_dimension(const Exiv2::Image *image, const fs::path &path) +{ + return exif_width(image, path) + "-" + exif_height(image, path); +} + +std::string exif_width(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.PixelXDimension", md); + if(!done) + return ""; + return scrub(md->print()); +} + +std::string exif_height(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.PixelYDimension", md); + if(!done) + return ""; + return scrub(md->print()); +} + +std::string file_dimension(const Exiv2::Image *image, const fs::path &path) +{ + if(image) + return file_width(image, path) + "-" + file_height(image, path); + else + return ""; +} + +std::string file_width(const Exiv2::Image *image, const fs::path &) +{ + if(image) + return str(boost::format("%02d") % image->pixelWidth()); + else + return ""; +} + +std::string file_height(const Exiv2::Image *image, const fs::path &) +{ + if(image) + return str(boost::format("%02d") % image->pixelHeight()); + else + return ""; +} + +/* +std::string xmp_dimension(const Exiv2::Image *image, const fs::path &) +{ + return "" +} + +std::string xmp_width(const Exiv2::Image *image, const fs::path &) +{ + return ""; +} + +std::string xmp_height(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_model(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Image.Model", md); + if(!done) + return ""; + return scrub(md->print()); +} + +std::string exif_make(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Image.Make", md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_model(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_speed(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.ShutterSpeedValue", md); + if(!done) + done = exif_data(image, "Exif.Photo.ExposureTime", md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_speed(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_aperture(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.ApertureValue", md); + if(!done) + done = exif_data(image, "Exif.Photo.FNumber", md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_aperture(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_focal(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.FocalLength", md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_focal(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_distance(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.SubjectDistance", md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_distance(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_meter(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.MeteringMode", md); + if(!done) + return ""; + return scrub(md->print()); +} + +std::string exif_macro(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data_easy(image, Exiv2::macroMode, md); + if(!done) + return ""; + return scrub(md->print()); +} + +std::string exif_orientation(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data_easy(image, Exiv2::orientation, md); + if(!done) + return ""; + return scrub(md->print(), true); +} + +std::string exif_lens(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data_easy(image, Exiv2::lensName, md); + if(!done) + return ""; + return scrub(md->print()); +} + + +std::string exif_iso(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data_easy(image, Exiv2::isoSpeed, md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_meter(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + +std::string exif_keyword(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::ExifData::const_iterator md; + bool done = exif_data(image, "Exif.Photo.UserComment", md); + if(!done) + return ""; + return scrub(md->print()); +} + +std::string iptc_keyword(const Exiv2::Image *image, const fs::path &) +{ + Exiv2::IptcData::const_iterator md; + bool done = iptc_data(image, "Iptc.Application2.Keywords", md); + if(!done) + return ""; + return scrub(md->print()); +} + +/*std::string xmp_keyword(const Exiv2::Image *image, const fs::path &) +{ + return ""; +}*/ + diff --git a/vendor/exiv2-0.25/contrib/organize/helpers.hpp b/vendor/exiv2-0.25/contrib/organize/helpers.hpp new file mode 100644 index 0000000..158cea9 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/helpers.hpp @@ -0,0 +1,108 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2009 Brad Schick + * + * This file is part of the organize tool. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: helpers.hpp + Version: $Rev: 1762 $ + Author(s): Brad Schick (brad) + History: 19-Jan-09, brad: created +*/ +// ***************************************************************************** + + +#ifndef HELPERS_HPP_ +#define HELPERS_HPP_ + +#include + +#define BOOST_FILESYSTEM_NO_DEPRECATED +namespace fs = boost::filesystem; + + +typedef std::string (*pfunc)(const Exiv2::Image *image, const fs::path &path); + +// This would be a lot smaller if Exiv2 had support +// for unified metadata + +std::string exif_date(const Exiv2::Image *image, const fs::path &path); +std::string exif_year(const Exiv2::Image *image, const fs::path &path); +std::string exif_month(const Exiv2::Image *image, const fs::path &path); +std::string exif_day(const Exiv2::Image *image, const fs::path &path); +std::string iptc_date(const Exiv2::Image *image, const fs::path &path); +std::string iptc_year(const Exiv2::Image *image, const fs::path &path); +std::string iptc_month(const Exiv2::Image *image, const fs::path &path); +std::string iptc_day(const Exiv2::Image *image, const fs::path &path); +std::string file_date(const Exiv2::Image *image, const fs::path &path); +std::string file_year(const Exiv2::Image *image, const fs::path &path); +std::string file_month(const Exiv2::Image *image, const fs::path &path); +std::string file_day(const Exiv2::Image *image, const fs::path &path); +/*std::string xmp_date(const Exiv2::Image *image, const fs::path &path); +std::string xmp_year(const Exiv2::Image *image, const fs::path &path); +std::string xmp_month(const Exiv2::Image *image, const fs::path &path); +std::string xmp_day(const Exiv2::Image *image, const fs::path &path);*/ +std::string exif_time(const Exiv2::Image *image, const fs::path &path); +std::string exif_hour(const Exiv2::Image *image, const fs::path &path); +std::string exif_minute(const Exiv2::Image *image, const fs::path &path); +std::string exif_second(const Exiv2::Image *image, const fs::path &path); +std::string iptc_time(const Exiv2::Image *image, const fs::path &path); +std::string iptc_hour(const Exiv2::Image *image, const fs::path &path); +std::string iptc_minute(const Exiv2::Image *image, const fs::path &path); +std::string iptc_second(const Exiv2::Image *image, const fs::path &path); +std::string file_time(const Exiv2::Image *image, const fs::path &path); +std::string file_hour(const Exiv2::Image *image, const fs::path &path); +std::string file_minute(const Exiv2::Image *image, const fs::path &path); +std::string file_second(const Exiv2::Image *image, const fs::path &path); +/*std::string xmp_time(const Exiv2::Image *image, const fs::path &path); +std::string xmp_hour(const Exiv2::Image *image, const fs::path &path); +std::string xmp_minute(const Exiv2::Image *image, const fs::path &path); +std::string xmp_second(const Exiv2::Image *image, const fs::path &path);*/ +std::string exif_dimension(const Exiv2::Image *image, const fs::path &path); +std::string exif_width(const Exiv2::Image *image, const fs::path &path); +std::string exif_height(const Exiv2::Image *image, const fs::path &path); +std::string file_dimension(const Exiv2::Image *image, const fs::path &path); +std::string file_width(const Exiv2::Image *image, const fs::path &path); +std::string file_height(const Exiv2::Image *image, const fs::path &path); +/*std::string xmp_dimension(const Exiv2::Image *image, const fs::path &path); +std::string xmp_width(const Exiv2::Image *image, const fs::path &path); +std::string xmp_height(const Exiv2::Image *image, const fs::path &path);*/ +std::string exif_model(const Exiv2::Image *image, const fs::path &path); +std::string exif_make(const Exiv2::Image *image, const fs::path &path); +/*std::string xmp_model(const Exiv2::Image *image, const fs::path &path); +std::string xmp_make(const Exiv2::Image *image, const fs::path &path);*/ +std::string exif_speed(const Exiv2::Image *image, const fs::path &path); +//std::string xmp_speed(const Exiv2::Image *image, const fs::path &path); +std::string exif_aperture(const Exiv2::Image *image, const fs::path &path); +//std::string xmp_aperture(const Exiv2::Image *image, const fs::path &path); +std::string exif_focal(const Exiv2::Image *image, const fs::path &path); +//std::string xmp_focal(const Exiv2::Image *image, const fs::path &path); +std::string exif_distance(const Exiv2::Image *image, const fs::path &path); +//std::string xmp_distance(const Exiv2::Image *image, const fs::path &path); +std::string exif_meter(const Exiv2::Image *image, const fs::path &path); +//std::string xmp_meter(const Exiv2::Image *image, const fs::path &path); +std::string exif_macro(const Exiv2::Image *image, const fs::path &path); +std::string exif_orientation(const Exiv2::Image *image, const fs::path &path); +std::string exif_lens(const Exiv2::Image *image, const fs::path &path); +std::string exif_keyword(const Exiv2::Image *image, const fs::path &path); +std::string iptc_keyword(const Exiv2::Image *image, const fs::path &path); +//std::string xmp_keyword(const Exiv2::Image *image, const fs::path &path); +std::string exif_iso(const Exiv2::Image *image, const fs::path &path); + +#endif //HELPERS_HPP_ + diff --git a/vendor/exiv2-0.25/contrib/organize/organize.cpp b/vendor/exiv2-0.25/contrib/organize/organize.cpp new file mode 100644 index 0000000..cbd9379 --- /dev/null +++ b/vendor/exiv2-0.25/contrib/organize/organize.cpp @@ -0,0 +1,766 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2009 Brad Schick + * + * This file is part of the organize tool. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: organize.cpp + Version: $Rev: 3603 $ + Author(s): Brad Schick (brad) + History: 19-Jan-09, brad: created +*/ +// ***************************************************************************** + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "MD5.h" +#include "helpers.hpp" + +typedef Exiv2::byte md5digest[16]; + +namespace po = boost::program_options; + +bool g_verbose = false; +bool g_neednewline = false; + +// Array size should match number of SLOTs +boost::array g_run_order = {{-1, -1, -1, -1}}; +const int EXIF_SLOT = 0; +const int IPTC_SLOT = 1; +const int XMP_SLOT = 2; +const int FILE_SLOT = 3; + +const unsigned DOT_EVERY = 55; + +struct Pattern { + std::string pat; + std::string desc; + pfunc funcs[4]; // order should always be exif, iptc, xmp, file +}; + +struct PathPart { + std::string pre; + const Pattern *pat; + std::string post; + PathPart(std::string pre_, const Pattern *pat_, std::string post_) + : pre(pre_), pat(pat_), post(post_) {} +}; + +std::vector g_path_parts; + +// Instead of making these all global +struct ProcessParams { + const fs::path &dest_dir; + const bool dry_run; + const bool ignore_dups; + const bool ignore_unsorted; + const bool force; + const bool rename; + const bool symlink; + const bool verify; + const bool move; + const long limit_depth; + const fs::path &dups_dir; + const fs::path &unsorted_dir; + const std::vector &excludes; + unsigned dups_count; + unsigned unsorted_count; + unsigned dir_err_count; + unsigned file_err_count; + unsigned ok_count; + unsigned dups_ignored_count; + unsigned unsorted_ignored_count; + unsigned dir_ex_count; + unsigned file_ex_count; +}; + +void process_directory(const fs::path &directory, const long depth, + ProcessParams ¶ms); + +const Pattern g_patterns[] = { + {"@date", "date captured (2009-01-19)", + {exif_date, iptc_date, NULL, file_date} }, + {"@year", "year captured (2009)", + {exif_year, iptc_year, NULL, file_year} }, + {"@month", "month captured (01)", + {exif_month, iptc_month, NULL, file_month} }, + {"@day", "day captured (19)", + {exif_day, iptc_day, NULL, file_day} }, + {"@time", "time captured (14-35-27)", + {exif_time, iptc_time, NULL, file_time} }, + {"@hour", "hour captured (14)", + {exif_hour, iptc_hour, NULL, file_hour} }, + {"@min", "minute captured (35)", + {exif_minute, iptc_minute, NULL, file_minute} }, + {"@sec", "second captured (27)", + {exif_second, iptc_second, NULL, file_second} }, + {"@dim", "pixel dimension (2272-1704)", + {exif_dimension, NULL, NULL, file_dimension} }, + {"@x", "pixel width (2272)", + {exif_width, NULL, NULL, file_width} }, + {"@y", "pixel height (1704)", + {exif_height, NULL, NULL, file_height} }, + {"@make", "device make (Canon)", + {exif_make, NULL, NULL, NULL} }, + {"@model", "device model (Canon PowerShot S40)", + {exif_model, NULL, NULL, NULL} }, + {"@speed", "shutter speed (1-60)", + {exif_speed, NULL, NULL, NULL} }, + {"@aper", "aperture (F3.2)", + {exif_aperture, NULL, NULL, NULL} }, + {"@iso", "iso speed (400)", + {exif_iso, NULL, NULL, NULL} }, + {"@focal", "focal length (8.6 mm)", + {exif_focal, NULL, NULL, NULL} }, + {"@dist", "subject distance (1.03 m)", + {exif_distance, NULL, NULL, NULL} }, + {"@meter", "meter mode (multi-segment)", + {exif_meter, NULL, NULL, NULL} }, + {"@macro", "macro mode (Off)", + {exif_macro, NULL, NULL, NULL} }, + {"@orient", "orientation (top_left)", + {exif_orientation, NULL, NULL, NULL} }, + {"@lens", "lens name (Tamron 90mm f-2.8)", + {exif_lens, NULL, NULL, NULL} }, + {"@key", "first keyword (Family)", + {exif_keyword, iptc_keyword, NULL, NULL} }, + + {"", "", {NULL, NULL, NULL, NULL} } +}; + + +// Check that 'opt1' and 'opt2' are not specified at the same time. +void conflicting(const po::variables_map& vm, + const char* opt1, const char* opt2) +{ + if (vm.count(opt1) && !vm[opt1].defaulted() + && vm.count(opt2) && !vm[opt2].defaulted()) { + throw std::logic_error(std::string("conflicting options '") + + opt1 + "' and '" + opt2 + "'"); + } +} + +// Check that 'required' is present +void required(const po::variables_map& vm, const char* required) +{ + if (!vm.count(required) || vm[required].defaulted()) { + throw std::logic_error(std::string("required parameter '") + required + + "' is missing"); + } +} + +void info(const std::string &msg) +{ + if(g_verbose) { + std::cout << msg << "\n"; + g_neednewline = false; + } +} + +void error(const std::exception &e, const std::string &msg) +{ + if(g_neednewline) { + std::cout << "\n"; + g_neednewline = false; + } + std::cerr << e.what() << "\n"; + std::cerr << msg << std::endl; +} + +void usage_header(const char* exname) +{ + std::cout << "Usage: " << exname << " [options] source-dir dest-dir pattern\n"; +} + +void usage_full(const po::options_description &options, const char* exname) +{ + usage_header(exname); + std::cout << "\n Creates groups of files in new directories defined by a metadata 'pattern'.\n" << + " Files are copied, moved, or linked from 'source-dir' to 'dest-dir'.\n" << + " The destination directory should not be within the source directory.\n\n"; + std::cout << options; + + std::cout << "\nPattern values:\n"; + for( const Pattern *pattern = g_patterns; pattern->pat.length(); ++pattern) { + std::cout << " " << std::setw(8) << std::left << pattern->pat; + std::cout << pattern->desc << "\n"; + } + + std::cout << "\nExamples:\n"; + std::cout << " `" << exname << " -m mess clean @year-@month'\n"; + std::cout << " Moves files from 'mess' into directories of 'clean' according to\n" << + " year-month the file was captured (clean/2006-11/...)\n\n"; + std::cout << " `" << exname << " -o ie source find width-@x/height-@y'\n"; + std::cout << " Copies files into directories according first to pixel width then pixel\n" << + " height. Check iptc then exif metadata (find/width-2272/height-1704/...)\n\n"; + std::cout << " `" << exname << " -lf source find @aper/@hour'\n"; + std::cout << " Force create symlinks in directories according first to aperture then\n" << + " hour captured (find/F3.2/15/...)\n"; + + std::cout << std::endl; +} + +void version() +{ + std::cout << "organized 0.1\n" << + "Copyright (C) 2009 Brad Schick. \n\n" << + "This program is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU General Public License\n" + "as published by the Free Software Foundation; either version 2\n" + "of the License, or (at your option) any later version.\n" + "\n" + "This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU General Public\n" + "License along with this program; if not, write to the Free\n" + "Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" + "Boston, MA 02110-1301 USA" << std::endl; +} + +// Returns empty string if the destination subdirectory could not be determined +// for the supplied source file. +std::string build_dest(const fs::path &source_file) +{ + std::string dest; + + Exiv2::Image::AutoPtr image; + try { + image = Exiv2::ImageFactory::open(source_file.string()); + image->readMetadata(); + } + catch(const Exiv2::AnyError&) { + // No metadata, let things continue to try file info + } + + std::vector::iterator iter = g_path_parts.begin(); + std::vector::iterator end = g_path_parts.end(); + for( ; iter != end; ++iter) { + dest += iter->pre; + std::string result; + + const Pattern *pat = iter->pat; + for(unsigned fx = 0; fx < g_run_order.size(); ++fx) { + if(g_run_order[fx] != -1 && pat->funcs[g_run_order[fx]]) { + if(g_run_order[fx] == FILE_SLOT) { + // Always run file operations + result = pat->funcs[g_run_order[fx]](image.get(), source_file); + } + else if(image.get()) { + // No point in running metadata operations without an image + result = pat->funcs[g_run_order[fx]](image.get(), source_file); + } + if(result.length()) + break; + } + } + // If we found no data, even for part of pattern, give up and + // return no destination + if(!result.length()) + return result; + + dest += (result + iter->post); + } + return dest; +} + +bool md5sum(const fs::path &path, md5digest &digest) +{ + try { + Exiv2::FileIo io(path.string()); + if (io.open() != 0) + return false; + Exiv2::IoCloser closer(io); + + Exiv2::byte buff[4096]; + MD5_CTX context; + MD5Init(&context); + + long read_count = io.read(buff, 4096); + while(read_count) { + MD5Update(&context, buff, read_count); + read_count = io.read(buff, 4096); + } + MD5Final(digest, &context); + return true; + } + catch (std::exception& ) { + return false; + } +} + + +int main(int argc, char* argv[]) +{ + po::options_description options("Options"); + // Don't use default values because the help print it ugly and too wide + options.add_options() + ("move,m", "move files rather than copy") + ("symlink,s", "symlink files rather than copy (posix only)") + ("order,o", po::value(), + "order and types of metadata to read\ne=exif, i=iptc, f=file (default: eif)") + ("unsorted,u", po::value(), + "special directory to store unsorted files (default: unsorted)") + ("dups,d", po::value(), + "special directory to store files with duplicate names (default: duplicates)") + ("force,f", "overwrite duplicate files instead of using special directory") + ("rename,r", "rename duplicate files instead of using special directory") + ("ignore,i", "ignore both unsorted and duplicate files instead of using special directories") + ("ignore-unsorted", "ignore unsorted files instead of using special directory") + ("ignore-dups", "ignore duplicate files instead of using special directory") + ("verify", "verify copied or moved files and exit if incorrect") + ("exclude,x", po::value< std::vector >(), + "exclude directories and files that contain arg (case sensitive on all platforms)") + ("limit-depth,l", po::value(), + "limit recursion to specified depth (0 disables recursion)") + ("verbose,v", "prints operations as they happen") + ("dry-run,n", "do not make actual changes (implies verbose)") + ("help,h", "show this help message then exit") + ("version,V", "show program version then exit") + ; + + po::options_description hidden("Hidden Options"); + hidden.add_options() + ("source-dir", po::value< std::string >(), "directory of files to organize, may end in file wildcard") + ("dest-dir", po::value< std::string >(), "designation directory for files, may not be within source-dir") + ("pattern", po::value< std::string >(), "subdirectory pattern for grouping files within dest-dir") + ; + + po::options_description cmdline; + cmdline.add(options).add(hidden); + + po::positional_options_description positional; + positional.add("source-dir", 1); + positional.add("dest-dir", 1); + positional.add("pattern", 1); + + try { + po::variables_map vm; + po::store(po::command_line_parser(argc, argv). + options(cmdline).positional(positional).run(), vm); + po::notify(vm); + + if (vm.count("help")) { + usage_full(options, argv[0]); + return 0; + } + + if (vm.count("version")) { + version(); + return 0; + } + + conflicting(vm, "verify", "symlink"); + conflicting(vm, "move", "symlink"); + conflicting(vm, "unsorted", "ignore"); + conflicting(vm, "unsorted", "ignore-unsorted"); + conflicting(vm, "dups", "ignore"); + conflicting(vm, "dups", "ignore-dups"); + conflicting(vm, "force", "ignore"); + conflicting(vm, "force", "ignore-dups"); + conflicting(vm, "force", "rename"); + conflicting(vm, "rename", "ignore"); + conflicting(vm, "rename", "ignore-dups"); + required(vm, "source-dir"); + required(vm, "dest-dir"); + required(vm, "pattern"); + + const bool dry_run = vm.count("dry-run") != 0; + g_verbose = (vm.count("verbose") != 0 || dry_run); + + std::string order = "eif"; + if(vm.count("order")) { + order = vm["order"].as(); + + boost::to_lower(order); + if(order.length() > 3) { + throw std::logic_error(std::string("order is longer than 4 characters")); + } + } + + unsigned i = 0; + std::string::iterator end = order.end(); + for(std::string::iterator iter = order.begin(); iter != end && i < 4; ++iter, ++i) { + switch(*iter) { + case 'e': + g_run_order[i] = EXIF_SLOT; + break; + case 'i': + g_run_order[i] = IPTC_SLOT; + break; + case 'x': + throw std::logic_error(std::string("xmp not implemented yet '") + + *iter + "'"); + break; + case 'f': + g_run_order[i] = FILE_SLOT; + break; + default: + throw std::logic_error(std::string("unknown order character '") + + *iter + "'"); + } + } + + const fs::path source_dir( vm["source-dir"].as() ); + if( !exists(source_dir) || !is_directory(source_dir) ) { + throw std::logic_error(std::string("source '") + + source_dir.string() + "' must exist and be a directory"); + } + + const fs::path dest_dir( vm["dest-dir"].as() ); + if( exists(dest_dir) && !is_directory(dest_dir) ) { + throw std::logic_error(std::string("destination '") + + dest_dir.string() + "' must be a directory"); + } + + // Boost doesn't seem to have a way to get a canonical path, so this + // simple test is easy to confuse with some ../../'s in the paths. Oh + // well, this is good enough for now. + fs::path test_dest(dest_dir); + for(; !test_dest.empty(); test_dest = test_dest.parent_path()) { + if(fs::equivalent(source_dir, test_dest)) { + throw std::logic_error(std::string("dest-dir must not be within source-dir")); + } + } + + // Disect the pattern + std::string pattern = vm["pattern"].as(); + boost::regex regex( "([^@]*)(@[[:alpha:]]+)([^@]*)"); + boost::sregex_iterator m_iter = make_regex_iterator(pattern, regex); + boost::sregex_iterator m_end; + for( ; m_iter != m_end; ++m_iter) { + const boost::smatch &match = *m_iter; + const std::string &pre = match[1]; + const std::string &pat = match[2]; + const std::string &post = match[3]; + + // Should put this in a map, but there aren't that many options now + bool found = false; + for( const Pattern *pattern = g_patterns; pattern->pat.length(); ++pattern) { + if(pattern->pat == pat) { + PathPart part(pre, pattern, post); + g_path_parts.push_back(part); + found = true; + break; + } + } + + if(!found) { + throw std::logic_error(std::string("unknown pattern '") + pat + "'"); + } + } + + // Assign defaults to params that need them + const bool ignore = vm.count("ignore") != 0; + std::vector excludes; + if(vm.count("exclude")) + excludes = vm["exclude"].as< std::vector >(); + long limit_depth = LONG_MAX; + if(vm.count("limit-depth")) { + limit_depth = vm["limit-depth"].as(); + // Boost program_options doesn't work with unsigned, so do it manually + if( limit_depth < 0 ) + throw std::logic_error(std::string("recursion depth limit must be positive")); + } + std::string dups = "duplicates"; + if(vm.count("dups")) + dups = vm["dups"].as(); + const fs::path dups_dir = dest_dir / dups; + + std::string unsorted = "unsorted"; + if(vm.count("unsorted")) + unsorted = vm["unsorted"].as(); + const fs::path unsorted_dir = dest_dir / unsorted; + + ProcessParams params = { + dest_dir, + dry_run, + (vm.count("ignore-dups") != 0 || ignore), + (vm.count("ignore-unsorted") != 0 || ignore), + vm.count("force") != 0, + vm.count("rename") != 0, + vm.count("symlink") != 0, + vm.count("verify") != 0, + vm.count("move") != 0, + limit_depth, + dups_dir, + unsorted_dir, + excludes, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + process_directory(source_dir, 0, params); + + std::string op = "copied"; + if(params.symlink) + op = "linked"; + else if(params.move) + op = "moved"; + + if(dry_run) + op = std::string("would be ") + op; + + if(g_neednewline) + std::cout << "\n"; + + std::cout << "\n" << params.ok_count << " files " << op << "\n"; + std::cout << " " << params.dups_count << " duplicates\n"; + std::cout << " " << params.unsorted_count << " unsorted\n"; + if(params.dups_ignored_count) + std::cout << params.dups_ignored_count << " duplicates ignored\n"; + if(params.unsorted_ignored_count) + std::cout << params.unsorted_ignored_count << " unsorted ignored\n"; + if(params.dir_ex_count) + std::cout << params.dir_ex_count << " directories excluded\n"; + if(params.file_ex_count) + std::cout << params.file_ex_count << " files excluded\n"; + if(params.dir_err_count) + std::cout << params.dir_err_count << " directory errors\n"; + if(params.file_err_count) + std::cout << params.file_err_count << " file errors\n"; + + return 0; + } + catch (Exiv2::AnyError& e) { + error(e, std::string("Aborting")); + return -1; + } + catch(std::logic_error& e) { + error(e, ""); + usage_header(argv[0]); + std::cout << argv[0] << " -h for more help" << std::endl; + return -2; + } + catch(std::exception& e) { + error(e, "Aborting"); + return -3; + } +} + +boost::regex uregex("(.*?)\\(([[:digit:]]{1,2})\\)$"); + +fs::path uniquify(const fs::path &dest) +{ + std::string ext = dest.extension().string(); + std::string fname = dest.stem().string(); + fs::path parent = dest.parent_path(); + + unsigned number = 1; + std::string newfname; + fs::path newdest; + + boost::smatch match; + if(boost::regex_search(fname, match, uregex)) { + // Matches are indexes into fname, so don't change it while reading values + newfname = match[1]; + number = boost::lexical_cast(match[2]); + fname = newfname; + } + + do { + newfname = fname + "(" + boost::lexical_cast(++number) + ")" + ext; + newdest = parent / newfname; + } while(fs::exists(newdest)); + + return newdest; +} + +void process_directory(const fs::path &directory, const long depth, + ProcessParams ¶ms) +{ + // Exclude entire directories + bool exclude = false; + std::vector::const_iterator x_iter = params.excludes.begin(); + std::vector::const_iterator x_end = params.excludes.end(); + for( ; x_iter != x_end; ++x_iter ) { + if(boost::contains(directory.string(), *x_iter)) { + exclude = true; + break; + } + } + if(exclude) { + info(std::string("excluding directory: ") + directory.string() + + " matched: " + *x_iter); + ++params.dir_ex_count; + return; + } + + try { + fs::directory_iterator p_iter(directory), p_end; + for( ; p_iter != p_end; ++p_iter) { + if( is_directory(*p_iter) ) { + // recurse if we haven't hit the limit + if(depth < params.limit_depth) + process_directory(p_iter->path(), depth + 1, params); + else { + info(std::string("depth reached, skipping: ") + + p_iter->path().string()); + } + } + else if( is_regular_file(*p_iter) ) { + + // Check again for excluding file names + exclude = false; + x_iter = params.excludes.begin(); + for( ; x_iter != x_end; ++x_iter ) { + if(boost::contains(p_iter->path().string(), *x_iter)) { + exclude = true; + break; + } + } + if(exclude) { + info(std::string("excluding file: ") + p_iter->path().string() + + " matched: " + *x_iter); + ++params.file_ex_count; + continue; + } + + try { + const fs::path dest_subdir = build_dest(*p_iter); + fs::path dest_file; + if(!dest_subdir.empty()) + dest_file = params.dest_dir / dest_subdir; + else if(params.ignore_unsorted) { + info(std::string("ignoring unsorted: ") + p_iter->path().string()); + ++params.unsorted_ignored_count; + continue; + } + else { + info(std::string("unsorted file (missing metadata): ") + p_iter->path().string()); + dest_file = params.unsorted_dir; + ++params.unsorted_count; + } + + dest_file /= p_iter->path().filename(); + + if(fs::exists(dest_file)) { + if(params.ignore_dups) { + info(std::string("ignoring: ") + p_iter->path().string() + + " duplicates: " + dest_file.string()); + ++params.dups_ignored_count; + continue; + } + else { + if(params.force) { + info(std::string("force removing: ") + dest_file.string() + " for: " + + p_iter->path().string()); + if(!params.dry_run) + fs::remove(dest_file); + } + else if(params.rename) { + info(std::string("renaming: ") + p_iter->path().string() + + " duplicates: " + dest_file.string()); + dest_file = uniquify(dest_file); + } + else { + info(std::string("duplicate file: ") + p_iter->path().string() + + " of: " + dest_file.string()); + dest_file = params.dups_dir / dest_subdir / p_iter->path().filename(); + // Ugh, more dup possibilities + if(fs::exists(dest_file)) { + info(std::string("renaming: ") + p_iter->path().string() + + " duplicates: " + dest_file.string()); + dest_file = uniquify(dest_file); + } + } + ++params.dups_count; + } + } + + if(!params.dry_run) + fs::create_directories(dest_file.parent_path()); + + if(params.symlink) { + info(std::string("linking from: ") + p_iter->path().string() + + " to: " + dest_file.string()); + if(!params.dry_run) { + // The target of a symlink must be either absolute (aka complete) or + // relative to the location of the link. Easiest solution is to make + // a complete path. + fs::path target; + if(p_iter->path().is_complete()) + target = p_iter->path(); + else + target = fs::initial_path() / p_iter->path(); + fs::create_symlink(target, dest_file); + } + } + else { + info(std::string("copying from: ") + p_iter->path().string() + + " to: " + dest_file.string()); + if(!params.dry_run) { + // Copy the file and restore its write time (needed for posix) + std::time_t time = fs::last_write_time(*p_iter); + fs::copy_file(*p_iter, dest_file); + fs::last_write_time(dest_file, time); + if(params.verify) { + md5digest src_digest, dst_digest; + bool ok = md5sum(p_iter->path(), src_digest); + if(ok) + ok = md5sum(dest_file, dst_digest); + if(ok) + ok = (memcmp(src_digest,dst_digest, sizeof(md5digest))==0); + if(!ok) { + // Should probably find a more appropriate exception for this + throw std::runtime_error(std::string("File verification failed: '") + + p_iter->path().string() + "' differs from '" + + dest_file.string() + "'"); + } + else { + info(std::string("verification passed")); + } + } + } + } + if(params.move) { + info(std::string("removing: ") + p_iter->path().string()); + if(!params.dry_run) + fs::remove(*p_iter); + } + + if(!g_verbose && (params.ok_count % DOT_EVERY)==0) { + std::cout << "." << std::flush; + g_neednewline = true; + } + ++params.ok_count; + } + catch(fs::filesystem_error& e) { + error(e, std::string("skipping file: " + p_iter->path().string())); + ++params.file_err_count; + } + } + } + } + catch(fs::filesystem_error& e) { + error(e, std::string("skipping directory: " + directory.string())); + ++params.dir_err_count; + } +} + diff --git a/vendor/exiv2-0.25/contrib/organize/work/exiv2/contrib/organize/organize.cpp b/vendor/exiv2-0.25/contrib/organize/work/exiv2/contrib/organize/organize.cpp new file mode 100644 index 0000000..e69de29 diff --git a/vendor/exiv2-0.25/doc/COPYING-XMPSDK b/vendor/exiv2-0.25/doc/COPYING-XMPSDK new file mode 100644 index 0000000..00fbdd0 --- /dev/null +++ b/vendor/exiv2-0.25/doc/COPYING-XMPSDK @@ -0,0 +1,30 @@ +Copyright (c) 1999 - 2008, Adobe Systems Incorporated + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +* Neither the name of Adobe Systems Incorporated, nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/exiv2-0.25/doc/ChangeLog b/vendor/exiv2-0.25/doc/ChangeLog new file mode 100644 index 0000000..fdb70c2 --- /dev/null +++ b/vendor/exiv2-0.25/doc/ChangeLog @@ -0,0 +1,1591 @@ +Changes from version 0.24 to 0.25 +--------------------------------- + +* Exiv2 library + - 0000442: exivsimple has array index errors when stripping quotes form trivial input strings + (Thomas Beutlich) + - 0000707: Use SVN eol-style LF on all files + (Andreas Huggel, Robin Mills) + - 0000886: Access violation on IptcData::operator[] when key is invalid + (Robin Mills) + - 0000901: PNG images with tiff tags throw exceptions + - 0000934: Plasma kde crashes when specific jpeg is on the Desktop + (Robin Mills) + - 0000945: TIFF parser,Binary array elements should be decoded using the Makernote's endianness, not that of the image + (Andreas Huggel) + - 0000970: Coverity scan : Issue CID 981992 , 981993 + (Mahesh Hegde, Phil Harvey, Niels Kristian Bech Jensen) + - 0000984: Fix 'failed to rename file' problem caused by virus scanner in windows + (Axel Waggershauser, Thomas Beutlich,Robin Mills) + - 0000989: Wrong key name in output of addmodel sample + (Thomas Beutlich, Robin Mills) + - 0001019: Cppcheck: Suspicious usage of 'sizeof' with a numeric constant as parameter. + (Thomas Beutlich, Robin Mills) + - 0001021: Printing tags does not honor multi-byte label widths correctly + (Thomas Schmidt, Robin Mills) + - 0001039: Wrong ApertureValue written + (Torsten Flammiger, Robin Mills) + - 0001043: pyexiv2 fails on cifs shares on an Ubuntu client + (thoralf schulze, Robin Mills, Thomas Beutlich) + - 0001044: TIFF parser,Parse TIFF PageNumber + (Robin Mills) + - 0001047: Add new sample applications exifdata and exivvalue + (Robin Mills) + - 0001053: Add option -K Key (--key Key) to specify one or more keys to output. + (Robin Mills) + - 0001065: Is fileProtocol thread-safe? + (Max Pozdeev, Robin Mills) + - 0001072: test/tiff-test.sh is failing on Motorola PPC + (Robin Mills) + - 0001073: test/bugfixes-test.sh is producing results that change with the time-zone + (Robin Mills) + - 0001084: Garbage in Exif.Image.Make and Exif.Image.Model in some Samsung SRW files + +* XMP related + - 0000774: "exiv2 -eX" followed by "exiv2 -iX" produces invalid XMP metadata packet + (Alan Pater) + - 0000784: Writing Xmp.lr.hierarchicalSubject writes wrong datatype + (Lucas Beeler, Alan Pater) + - 0000863: Unicode issue writing to XMP sidecar + - 0000864: Mapping of Exif DateTime fields to XMP changed in spec + (Marcel Wiesweg, Alan Pater) + - 0000937: Support Darwin Core (DwC) XMP metadata + (Alan Pater) + - 0000946: Xmp.MPReg.PersonLiveCID vs. PersonLiveIdCID + (Phil Harvey, Alan Pater) + - 0001040: MWG-KW schema + (Alan Pater) + - 0001054: Overhaul exiv2json.cpp to build a deeply recursive JSON tree of XMP data + (Robin Mills) + - 0001058: xml:lang should be treated case insensitive + (Tobias E., Robin Mills) + - 0001059: Support ACDSee XMP properties + (Alan Pater) + - 0001063: Google Photo Sphere XMP namespace and properties + (Alan Pater) + +* Makernote related + - 0000833: Sony NEX Lens Information + (Pascal de Bruijn, Torsten Bronger, Robin Mills) + - 0000919: Handle Pentax makernotes in samsung-rebranded cameras + (Michael Karcher, Niels Kristian Bech Jensen) + - 0000924: Olympus XZ-1 FocusDistance incorrect + (Niels Kristian Bech Jensen) + - 0000929: Support Panasonic Makernote + (Nicolas Nicofo, T Modes, Niels Kristian Bech Jensen) + - 0000933: Casio Makernotes + (T Modes, Niels Kristian Bech Jensen) + - 0000954: patch: support for Exif.CanonFi.FocusDistanceUpper and Exif.CanonFi.FocusDistanceLower + (Roman Lebedev, Niels Kristian Bech Jensen) + - 0000965: Pentax K-3 MakerNote not recognized due to different maker tag + (Pascal de Bruijn, Niels Kristian Bech Jensen) + - 0000972: Update Panasoic EXIF Information + (Bernd Steinhauser, T Modes, Niels Kristian Bech Jensen) + - 0000981: Local build crashes in olympusmn.cpp + (Robin Mills) + - 0001037: MeasuredEV in CanonSi + (Axel Waggershauser, Robin Mills) + - 0001062: Exif.NikonWt.Timezone translated value can have 'cruft' + (Robin Mills) + +* Lens support related + - 0000834: detection of Pentax DA 35/2.4 lens + (Jaroslav and Pascal, Andreas Huggel) + - 0000839: Canon EOS M EF-M lenses + (Pascal de Bruijn, Robin Mills) + - 0000926: Lens matching on Canon + (Niels Kristian Bech Jensen) + - 0000927: Sigma Lens Not detected + (Niels Kristian Bech Jensen) + - 0000938: Tamron 18-270 is not detected anymore + (Torsten Bronger, Niels Kristian Bech Jensen) + - 0000942: Wrong aperture for Tamron 70-300? + (Torsten Bronger, Niels Kristian Bech Jensen) + - 0000943: Tamron lens names: USD excludes AF + (Torsten Bronger, Niels Kristian Bech Jensen) + - 0000944: Doubled "AF" for some Tokina lens model names on Nikon cameras + (Torsten Bronger, Niels Kristian Bech Jensen) + - 0000947: LensID 137 in exiv2 0.23 and 0.24 instead of Tamron as Sigma ??? + (Thomas Mörschel, Niels Kristian Bech Jensen) + - 0000948: Recognize Samsung NX 10mm Fisheye + (Pascal de Bruijn, Niels Kristian Bech Jensen) + - 0000951: Pentax/Sigma 24-70mm F2.8 IF EX DG HSM data + (Terence Duell, Niels Kristian Bech Jensen) + - 0000953: patch: add Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD for Canon + (Pekka Sarnila, Niels Kristian Bech Jensen) + - 0000959: Wrong value in Exiv data for Sigma lenses (24-105 & 50) + (Niels Kristian Bech Jensen) + - 0000969: Recognising Sigma 50mm F1.4 DG HSM + (Robin Mills, Niels Kristian Bech Jensen) + - 0000982: Improve detection of Canon lenses sharing the same IDs + (Alexander Steffen, Niels Kristian Bech Jensen) + - 0000988: New Lens: Samsung NX 16-50 PZ ED OIS + (Pascal de Bruijn, Robin Mills) + - 0000996: Sigma 28mm 1.8 EX DG MACRO wrongly detected as "lens 150" + (Niels Kristian Bech Jensen) + - 0001000: trivial: samsung lens id re-sorting + (Pascal de Bruijn, Robin Mills) + - 0001005: trivial: Canon EF-S 24mm f/2.8 STM detection + (Pascal de Bruijn) + - 0001026: Lens not recognized + (Bastien O, Niels Kristian Bech Jensen) + - 0001027: Lens not recognized + (Niels Kristian Bech Jensen) + - 0001036: New lens ID for Tamron 70-300mm f/4-5.6 Di VC USD (Canon mount) + (C M, Niels Kristian Bech Jensen) + - 0001051: Lens request Tamron SP AF 28-75mm F/2.8 XR Di LD Aspherical [IF] MACRO + (Petrov Vlad, Niels Kristian Bech Jensen) + - 0001070: New lens: Sigma 150-600mm f/5-6.3 DG OS HSM Contemporary for Canon + (Alexander Steffen, Niels Kristian Bech Jensen) + - 0001079: Rename Canon EF 50mm f/1.8 MkII + (Niels Kristian Bech Jensen) + +* Build environment related + - 0000697: config/ConfigureChecks.cmake: STRERROR_R_CHAR_P revisited + (Nikolai Saoukh, Robin Mills) + - 0000857: CMake compilation issue on MacOS-X 4.5.1/Mountain Lion + (Robin Mills) + - 0000859: Compilation warning using Clang + (Davide Anastasia, Andreas Huggel, Robin Mills) + - 0000905: Exiv2 does not run on Windows Vista + (Daniel Kaneider, Robin Mills) + - 0000916: Implement "Cloud Ready" + (Robin Mills, Tuan Nhu) + - 0000920: Cross compiling for Android on OSX is keep using '/usr/bin/gcc' + (Tao Wang, Gilles Caulier, Robin Mills) + - 0000939: make gen.py Python3 compatible + (Alex Turbov, Robin Mills) + - 0000940: Compilation warnings + (Robin Mills) + - 0000966: svn_version.sh not executable + (Michael Pratt, Robin Mills) + - 0000974: svn_version.h not installed, but included in installed version.hpp + (Jehan Pagès, Robin Mills) + - 0000976: Include Run-Time Search Path for Cmake Builds in exiv2 binary + ( Gilles Caulier, Nehal J Wani) + - 0000979: Temporary File Rename Issue on Windows/MSVC + (Robin Mills) + - 0000983: Fix Compiler Warnings when using GCC 4.8.1-4 + (Nehal J Wani) + - 0000991: Windows build broken (CMake+svn_version.sh) + (Daniel Kaneider, Robin Mills) + - 0000993: Generating svn_version.h with CMake + (Daniel Kaneider, Robin Mills) + - 0000994: CMake: wrong build rule for svn_version.h + (Jehan Pagès, Daniel Kaneider, Robin Mills) + - 0001007: exiv2 0.24 Build error on blackfin arch + (Nicolas Serafini, Robin Mills) + - 0001012: Avoid cyclic inclusion dependency between http.hpp and exiv2.hpp + (Thomas Beutlich, Robin Mills) + - 0001013: Fix includes of futils.hpp + (Thomas Beutlich, Robin Mills) + - 0001014: Duplicated header files + (Thomas Beutlich, Robin Mills) + - 0001015: Avoid MSVC x64 compiler warning in futils.cpp + (Thomas Beutlich, Robin Mills) + - 0001016: Duplicated header exv_msvc.h + (Thomas Beutlich, Robin Mills) + - 0001032: CMake doesn't build svn_version.h anymore + (Daniel Kaneider, Robin Mills) + - 0001046: Report the state of EXV_UNICODE_PATH in exiv2 -vV + (Robin Mills) + - 0001066: Unable to build for Mac OSX 10.6 + (Max Pozdeev, Robin Mills) + +* Video support related + - 0000858: SVN repository download size + (Daniel Kaneider, Robin Mills) + - 0000936: Video headers include internal include files and need to be added to exiv2.hpp + (Andreas Huggel, Robin Mills) + - 0000956: Support for .MTS movie format + (Abhinav Badola, Robin Mills) + - 0000960: Problem With Exiv2 ( Video files) + (Henrique Fernandes, Abhinav Badola) + - 0000961: Crash in digikam while reading metadata from a .MTS movie file + ( Gilles Caulier, Robin Mills) + - 0000999: Arithmetic exception in QuickTimeVideo::mediaHeaderDecoder + (Luca Carlon, Abhinav Badola) + - 0001017: Arithmetic exception in QuickTimeVideo::mediaHeaderDecoder + (Mathieu Clabaut) + - 0001033: webm with opus audio. Segmentation fault. + (Boris Bogar, Abhinav Badola) + - 0001069: Make Video Code a build option + (Robin Mills) + +* Translations + - 0000950: Typo in po/exiv2.pot, "Colort temperature" should be replaced by "Color temperature" + (Javier Lopez, Niels Kristian Bech Jensen) + - 0001003: Typos in German translation + (Thomas Beutlich) + - 0001004: Missing German translation + (Thomas Beutlich) + - 0001022: Tag description typo + (Thomas Beutlich) + - 0001025: Camera model names are defined as localized strings, causing automatic defaults to report incorrect names + (Niels Kristian Bech Jensen, Thomas Schmidt) + - 0001029: Fix common typos + (Thomas Beutlich, Robin Mills) + - 0001075: Swedish translation of exiv2 + (J A, Niels Kristian Bech Jensen) + - 0001085: Typos in strings + (Anders Jonsson, Alan Pater) + +* Documentation and website + - 0000869: Invalid links in XMP tag reference pages + (Alan Pater) + - 0000958: Which video formats are supported by exiv 0.24? + (Mahesh Hegde, Abhinav Badola) + - 0000986: Website: Invalid link to Exif spec + (Thomas Beutlich, Andreas Huggel) + - 0000987: Strange wording of Exif.Photo.SensitivityType + (Thomas Beutlich, Robin Mills) + - 0001006: Directory "test" missing from Exiv2 v0.24 tar/gunzip file + (Niels Kristian Bech Jensen, Robin Mills) + - 0001055: Provide coding guideline on the project Wiki + (Robin Mills) + + +Changes from version 0.23 to 0.24 +--------------------------------- + +* Exiv2 library + - 0000700: exiv2 (0.19-1) 00_hyphens_used_as_minus.diff + (Reported with patch by Mark Purcell, fixed by Niels Kristian Bech Jensen) + - 0000813: Video metadata support (Abhinav Badola for GSoC 2012) + - 0000820: Samsung NX100 JPG exports have broken EXIF (Reported by Pascal de Bruijn) + - 0000822: Warnings while compiling with g++4.5 + (Reported by Sebastien Gilles, fixed by Robin Mills) + - 0000831: For TIFF-like images, non-intrusive writing is not used when it should + (Reported by Thomas Lotze) + - 0000832: Patch to detect Carl Zeiss Planar T* 50mm f/1.4 ZE on Canon + (Reported with patch by Stian Grindvoll) + - 0000835: Exiv2 fails to compile under Linux (Volker Grabsch) + - 0000840: example1.cpp clang Mac OS X warnings (Reported by Jerry Jacobs) + - 0000841: Exiv2 crashes on input (Reported by Christian Grothoff) + - 0000843: Complete Samsung NX lenses portfolio recognition + (Reported with patch by Jaroslav Stepanek, updates by Pascal de Bruijn) + - 0000846: Porting the Video Code to MSVC (umbrella) + (Robin Mills, Abhinav Badola, Shawn Xiong) + - 0000847: Photoshop doesn't recognize its own EPS files after modification by Exiv2 + (Volker Grabsch) + - 0000849: autotools build (make config ; ./configure ; make) is broken + (Robin Mills) + - 0000854: Sigma 50mm f/1.4 on Canon not detected correctly + (Reported by Rick Gabriel, patch by Aakash Goenka) + - 0000860: PENTAX-DA 18-135mm F3.5-5.6 not detected correctly + (Reported by S. Verdoold, patch by Pascal de Bruijn) + - 0000861: Sigma 18-250mm not properly recognised on Pentax + (Reported by S. Verdoold, patch by Pascal de Bruijn) + - 0000862: Video code is failing the test suite (on all plaforms) + (Robin Mills, Abhinav Badola) + - 0000865: Patches for locale and boost issue (Patches by Mario anyc) + - 0000868: Support for two lens for sony mount + (Patch by Michal Babej) + - 0000870: Exif.OlympusEq.0x0403 tag + (Christoph Anton Mitterer, Robin Mills) + - 0000872: New Samsung NX 12-24mm f/4-5.6 ED + (Jaroslav Stepanek) + - 0000875: New lens "Tamron SP 24-70mm F/2.8 Di VC USD" + (Reported by Jean-Pierre Verrue, patch by Niels Kristian Bech Jensen) + - 0000876: New lens: Canon EF 35mm f/2 IS USM + (markus kanet, Robin Mills) + - 0000877: New camera: Canon EOS 6D + (markus kanet) + - 0000878: Update list of lenses for Olympus cameras. + (Niels Kristian Bech Jensen) + - 0000879: Add another lens for Olympus cameras. + (Niels Kristian Bech Jensen) + - 0000880: Another bunch of Olympus lens updates. + (Niels Kristian Bech Jensen) + - 0000881: One more Olympus lens - the list is complete. + (Niels Kristian Bech Jensen) + - 0000882: Nikon AF-S Nikkor 28mm f/1.8G not recognized + (Reported by Philip Johnsson, patch by Niels Kristian Bech Jensen) + - 0000884: Missing lenses reported by Paul Bissonnette + (Robin Mills) + - 0000887: Samsung D-Xenon 12-24mm not recognized + (Reported by Romain Henriet, patch by S. Verdoold) + - 0000888: (near-)infinite loop in video decoders + (Reported by Alyssa Milburn, patch by Abhinav Badola) + - 0000890: ASF: heap overflow + (Reported by Alyssa Milburn, patch by Abhinav Badola) + - 0000895: Sigma 30mm f/1.4 on Canon not detected correctly + (Reported by Christian Roumano, patch by Aakash Goenka) + - 0000896: User-readable output of Olympus' FocusDistance + (Patch by Teemu Rytilahti) + - 0000897: New Compilation Warnings + - 0000899: New lens: Pentax smc DA 18-135mm f/3.5-5.6 ED AL [IF] DC WR + (Reported by Matthieu Volat, patch by Pascal de Bruijn) + - 0000903: New Lens: Canon EF-S 55-250mm f/4-5.6 IS II + (Patch by Andrew Aylett) + - 0000904: Exiv2: lensName misreporting for some CR2s + (Reported by Pascal de Bruijn, patch by Niels Kristian Bech Jensen) + - 0000906: Mountain Lion Plugin crashes when setxattr called + (Robin Mills) + - 0000907: New Lens: Samsung NX 45mm f1.8 + (Pascal de Bruijn) + - 0000908: strerror_r gives no error message back + (Reported by Ãkos SzÅ‘ts, patch by Robin Mills) + - 0000909: New Lens: Samsung NX 45mm f1.8 2D/3D + (Pascal de Bruijn) + - 0000921: New Lens: Sigma 150-500mm f/5-6.3 APO DG OS HSM on Canon (Steve Fosdick) + - 0000928: Maintenance of Sony Makernote (Patch by Thomas Beutlich) + +* MSVC related + - 0000817: zlib 1.2.6 (Reported by Daniel Kaneider, fixed by Robin Mills) + - 0000824: undeclared identifier EXV_ICONV_CONST + (Reported by Thomas Beutlich, fixed by Robin Mills) + +* cmake related + - 0000685: incomplete handling of iconv dialects for cmake case (Nikolai Saoukh) + - 0000694: config/config.h.cmake: const must be without quotes + (Nikolai Saoukh, Gilles Caulier) + - 0000696: cmake: out of src compilation (Nikolai Saoukh, Gilles Caulier) + - 0000698: CMake Error at po/cmake_install.cmake: 36 + (Frank Hommes, Gilles Caulier) + - 0000722: Unit tests do not build with CMake and out of source build + (Johannes Wienke, Robin Mills) + - 0000728: typos in cmake files (Nikolai Saoukh, Gilles Caulier) + - 0000823: CMake compilation: exv_conf.h at the wrong place + (Sebastien Gilles, Robin Mills) + - 0000850: test harness does not run on CMake builds (Robin Mills) + - 0000852: CMake error on Win8/VS2012 with XMP (Patch by Daniel Kaneider) + - 0000853: CMake: more flexible zlib detection (Daniel Kaneider, Robin Mills) + - 0000856: CMake: building tests and refactoring on msvc + (Daniel Kaneider, Robin Mills) + + +Changes from version 0.22 to 0.23 +--------------------------------- + +* Exiv2 utility + - Allow to add/set tags without a value with the command line tool. + +* Exiv2 library + - 0000819: Recognize Pentax MakerNote in DNGPrivateData (Jonathan Kollasch) + - 0000815: Patch for Tokina 11-16mm f/2.8 on Canon (Chris Chiappa) + - 0000812: Exiv2 destroys hard links (Reported by Anders Kamf) + - 0000811: Typo in de.po (Thomas Beutlich) + - 0000810: assert(tiffType() == ttUndefined) error in tiffcomposite.cpp + (Reported by Auke Nauta) + - 0000809: abs ambiguity in nikonmn.cpp (Pavel Heimlich) + - 0000808: build failure in jpgimage.cpp - namespace (Pavel Heimlich) + - 0000807: spelling-error-in-binary usr/lib/libexiv2.so.9.0.0 + Continous Continuous (Mark Purcell) + - 0000806: spelling-error-in-manpage src/exiv2.1 explicitely explicitly + (Mark Purcell) + - 0000803: Rational/URational issue in convert.cpp (Pavel Heimlich) + - 0000800: Missing Photoshop IRB types (8BIM, PHUT, DCSR, AgHg) + (Michael Ulbrich, Volker Grabsch) + - 0000799: Exiv2 returns wrong XMP type for nested XMP keys + - 0000798: Add MS Photo RegionInfo and MetaWorkingGroup Regions schemas + (Benjamin H.) + - 0000797: A crash can occur with certain JPEGs. (Clint Rogers) + - 0000795: Set/Get of PNG comment (Reported by Thomas Beutlich) + - 0000794: Typo in exifFlash description (Thomas Beutlich) + - 0000793: PNG comment is not set (Thomas Beutlich) + - 0000792: New Canon Lens EF-S 18-55mm f/3.5-5.6 IS II (Andreas Ferber) + - 0000791: Tamron SP AF 17-50mm F/2,8 XR Di II LD Aspherical [IF] Nikon lens + (Philip Johnsson) + - 0000790: XMP embedding corrupts CorelDRAW EPS files + - 0000778: Add support for Windows Live Photo Gallery face tags (Leif Huhn) + - 0000635: [Wish] Write support for Canon RAW CR2 files + - Updated Nikon Lens lookup table to v4.3.428.01 of + Robert Rottmerhusen's fmountlens list. + - Added support for Nikon3 AF Fine Tune array. (Frans van den Bergh) + - Added Canon EF-S 18-55mm f/3.5-5.6 III lens. (Jon Charnas) + - Fixes to buildForMac to work with 0.22 on Leopard and Lion + (Robin Mills) + - Added several KIPI XMP properties (Gilles Caulier) + - Added cmake patch to fix compilation on MSVC with KDE Windows + (Ananta Palani) + - Fixed the supported metadata declared by the Image for several + image formats (mostly XMP was missing). + - Added support for CR2 IFD2 image preview. (An uncompressed TIFF + image without white-balance correction.) + +* MSVC related + - Added support for stdint.h being available in DevStudio 2010 + (Thanks to Ketil Wright for bringing this to our attention) + + +Changes from version 0.21.1 to 0.22 +----------------------------------- + +* Exiv2 utility + - Fixed time setting of -T option when DST is in effect. + - Added version hex number to the output of "exiv2 -V". + +* Exiv2 library + - 0000798: Added people/photo region tagging schemas + MS Photo 1.2 RegionInfo and MWG Regions + (Benjamin Henne) + - 0000785: Exif version 2.3 missing tag codes. (Patch by Jens Mueller) + - 0000782: Tamron 18-270mm lens. (Patch by Jens Mueller) + - 0000781: Exif 2.3 & DNG 1.2/1.3 tags. (Patch by Jens Mueller) + - 0000776: Some tests depend on system settings (locale, path, etc). + (Volker Grabsch) + - 0000775: Sort iptc data by record number when encoding. + (Patch by Matthias Baas) + - 0000772: New Tamron 70-300 mm lens improperly recognized. + (Reported by Marie-Noëlle Augendre, patch by Milan Knizek) + - 0000769: "Assertion `sv == d' failed" in 0.21.1 (r2474). + (Reported by Derek Chen-Becker, reproducer by Paolo Bacchilega) + - 0000767: Build failure on MinGW with GCC >= 4.6 because of "-no-undefined". + (Volker Grabsch) + - 0000765: Debug messages of psdimages.cpp go to stdout instead of stderr. + (Volker Grabsch) + - 0000764: PSD resource block handling patch II. + (Patch by Michael Ulbrich) + - 0000761: Setting metadata on an image should always succeed. + (Patch by Matthias Baas) + - 0000760: Exiv2 fails to write to JPEG with an empty APP13 Photoshop PS3 + segment. (Reported by Stefan Brandl) + - 0000757: Wrong ELSE statement in src/CMakeLists.txt. + (Reported by Michael Hansen) + - 0000708: On Windows (MSVC and MinGW builds), charset conversions now + use respective Windows functions if iconv is not available. + - 0000689: Support for Encapsulated PostScript (*.eps) files. + (Michael Ulbrich, Volker Grabsch) + - 0000439: The exiv2 library should be re-entrant. + (Patch by Jonathan Potter, GP Software) + - Fixed typo: SupplementalCategory -> SupplementalCategories. + (Jürgen Wolz) + - Added Tokina AT-X 107 AF DX Fish-eye 10-17mm f/3.5-4.5 lens. + (Milan Knizek) + - Added Exif.Panasonic.LensType to the Exiv2::lensName() + easy-access function. (Adrian Woodley) + - Added Exif.OlympusEq.LensModel to the Exiv2::lensName() + easy-access function. (Niels Kristian Bech Jensen) + - Added new function Exiv2::versionNumberHexString(). + (Volker Grabsch) + - Updated Nikon Lens lookup table to v4.3.423.01 of + Robert Rottmerhusen's fmountlens list. + - Updated Samsung makernote. + - Break-up ValueType constructor into two as a workaround for + a MSVC 7.1 bug. + - Simplified LogMsg to make it more portable and more efficient. + (The original version doesn't build with MSVC 7.1.) + +* MSVC related + - Added build environment for MSVC 64 bit builds. + (Robin Mills) + + +Changes from version 0.21 to 0.21.1 +----------------------------------- + +* Exiv2 library + - 0000759: Cannot extract exif data from Pentax K-x DNG file. + (Reported by Kenneth Bogert) + - 0000752: Crash when writing Exif.Image.Software. + (Reported by Jim Nelson) + - 0000750: Assertion in XmpParser::encode should be an exception. + - 0000749: Regression: Compilation error with EXV_HAVE_XMP_TOOLKIT undefined. + (Reported by Fulvio Senore) + - 0000745: Regression: Panasonic RW2 files are missing information. + (Reported by Matthias Welwarsky) + - Updated configuration files (config.guess, config.sub). + - Added new Color Label value to digiKam 2.0.0 XMP namespace. + (Gilles Caulier) + + +Changes from version 0.20 to 0.21 +--------------------------------- + +* Exiv2 utility + - 0000727: Exiv2 command line tool: grep should find all occurrences of a + tag, not only one. + (Reported by Steve Wright) + - Added option -q (quiet) to silence warnings and error messages + from the Exiv2 library to the exiv2 command line tool. + - Allow "migration" of XMP namespaces. + +* Exiv2 library + - 0000476: Error handler: Applications should be able to register an error + handler. (Based on work by Simson Garfinkel) + - 0000614: Silence warnings from code. + - 0000712: Support of Sigma 17-50 2.8 OS HSM. (Reported by Steffen bla) + - 0000713: Tag 0x0203 in Olympus makernotes should be "Lens ID". + - 0000719: Remove makernote classes and pretty-print functions from the + published interface. + - 0000721: Remove IfdId from the published interface. + - 0000726: Add support for Samsung's .SRW raw format. + (Reported by Oleg Yermakov) + - 0000564: Need a way to get a list of all supported tags. + (Reported by Jan Kundr) + - 0000593: The default type of Array element tags is incorrect. + - 0000625: New image formats and improved makernote support should not + break ABI. + - 0000678: Lensname missing with EF100mm f/2.8L Macro IS USM. + (Reported by Christoph Spiel) + - 0000711: exiv2 0.20 is corrupting ORF files from E-PL1. + (Reported by Mark Haun) + - 0000714: Problem compiling with Sun Studio - visibility. + (Reported by Pavel Heimlich) + - 0000717: Writing Exif.Image.ImageDescription in ORF file corrupts file. + (Reported by Wouter Portegijs) + - 0000734: Support for Tamron 17-50mm f/2.8 SP XR LD II Di VC. + (Reported by Jari-Matti Mäkelä) + - 0000735: Support for Sigma AF 50mm f/1.4 EX DG HSM. + (Reported by Jari-Matti Mäkelä) + - 0000736: Exiv2 crash on "print". + (Reported by Bastian Holst) + - 0000737: Metadata of Canon EF-S 18-55mm are not read correctly. + (Reported by G. Lechner) + - 0000739: exiv2 crashes when examining previews. + (Reported by Jim Nelson) + - 0000709: Typo in XMPCore_Impl.hpp. (Patch by Dimitri Schoolwerth) + - 0000716: Missing header in canonmp.cpp. (Patch by Pavel Heimlich) + - 0000723: Fix pkg-config file. (Patch by Johannes Wienke) + - 0000738: PSD resource block handling patch. + (Patch by Michael Ulbrich) + - Updated Nikon Lens lookup table to v4.3.410.01 of + Robert Rottmerhusen's fmountlens list. + - Introduced exiv2.hpp as a wrapper to include all Exiv2 objects. + - Added a count field to the Exif tag reference data. + (Patch by Matthias Baas) + - Added ExifKey::defaultCount() to access the new count reference + information. + - Fixed zlib uncompression of large PNG metadata buffers. + - Improved determination of MIME type. + - Updated Canon makernote. (Greg Mansfield, Axel Waggershauser) + - Updated Olympus makernote. (Greg Mansfield) + - Updated Sony and Minolta makernote tags. (Gilles Caulier) + - Fixed writing to pseudo memory mapped areas on Linux. + - Modified test for XMP files to not recognize any XML file with + a regular header as XMP. + - Added afPoint() easy-access function. + (Based on a patch by july) + - Updated Spanish translations. (Pablo Valdés) + +* MSVC related + - Updated MSVC project files (and notes) to build with + DevStudio 2010 (and with DevStudio 2003/5/8). (Robin Mills) + - Changes to MSVC build environment: renamed generated libraries. + (Robin Mills, Jon Roch-Berry) + + +Changes from version 0.19 to 0.20 +--------------------------------- + +* Exiv2 utility + - 0000683: %a broken in rename + (Reported by Göran Uddeborg) + - 0000572: It should be possible to insert newlines in text strings. + (Implemented using a new function by Leo Sutic) + - 0000562: Exif.Photo.UserComment unicode comment doesn't work + (Debian bug 486884) + - Added -g option to 'grep' info for individual tags. + +* Exiv2 library + - 0000705: Pentax 645D makernote update + (Patch by Michal ÄŒihaÅ™) + - 0000704: Update of Pentax makernote + (Patch by Michal ÄŒihaÅ™) + - 0000701: Nikon Capture NX won't save a NEF file manipulated with exiv2 + from SVN + (Reported by Frank Hommes) + - 0000699: Padding of XMP data results in invalid XMP JPEG segment larger + than 65535 bytes + (Patch by Joachim Gelhaus) + - 0000695: Add XMP support for src/metacopy + (Patch by Nikolai Saoukh) + - 0000693: src/psdimage.cpp: operands of ? are integers of different + signs: 'unsigned int' and 'long' + (Patch by Nikolai Saoukh) + - 0000690: Wrong conversion of IPTC SpecialInstructions in copyIptcToXmp() + (Patch by Volker Grabsch) + - 0000686: LLVM clang: error: default initialization of an object of const + type 'class Exiv2::IptcData const' requires a user-provided + default constructor. + (Reported by Nikolai Saoukh) + - 0000684: Exif.Image.SubIFDs should support more than 4 sub-IFDs + (Reported by frith [dot] foottit [at] gmail [dot] com in + digiKam bug 210259) + - 0000677: Nikon Makernote tags regression in exiv 0.19 + (Reported by Mark Purcell. digiKam bug 224094, Debian bug 579835) + - 0000674: ShutterSpeedValue should be a signed rational + (Patch by Olivier Tilloy) + - 0000673: Allow XMP sidecar files which start with a UTF-8 BOM + (Reported by Michael Friess) + - 0000672: Image file gets deleted when writing to it + (Reported with reproducer by Thomas Beutlich) + - 0000671: Writing to read-only TIFF-like file fails + - 0000668: "TIFF-safe" setExifData variant + - 0000666: Optimize binary array elements + - 0000665: Write support for Olympus RAW ORF files + - 0000662: Incorrect Unicode encoding of Exif UserComment tag + (Leo Sutic) + - 0000659: LensType not reported for Pentax K-x + (Reported by Piotr Ryszkiewicz) + - 0000611: Add support for makernote of Sony ARW files + (Gilles Caulier) + - 0000569: Unable to write GPS data in ORF files with digikam + (Reported by Johannes Wienke. digiKam bug 170693) + - Added Kipi XMP namespace used by digiKam kipi-plugins + (Gilles Caulier) + - Added iView Media Pro and MS Expression Media XMP schemas. + (Silversleeves) + - Generalized class Error, added class WError for use with + Unicode-Paths. + - Updated Nikon Lens lookup table to v4.3.401.01 of + Robert Rottmerhusen's fmountlens list. + - Various fixes and enhancements when building with MSVC. + (Robin Mills, Thomas Beutlich, Jens Mueller) + - Added several missing TIFF tags (from PageMaker 6.0, Adobe + OPI TIFF, Adobe TIFF&PM6 and TIFF/EP specs). + - Completed support for Nikon makernote (Jens Mueller) + + +Changes from version 0.18.2 to 0.19 +----------------------------------- + +* Exiv2 utility + - Inverted the meaning of -u to deal with large numbers of + unknown Nikon Makernote tags. + - -b option now also suppresses Byte and SByte values. + +* Exiv2 library + - 0000664: Crash when reading PNG image. + (Reported by Marcel Wiesweg. digiKam bug 220322) + - 0000661: Tag Exif.Image.ImageResources (0x8649 in IFD0) should have + type BYTE (1). + - 0000658: Exception to print raw from Olympus SP-560UZ. + (Reported by Francisco Javier Felix Belmonte) + - 0000657: Nef Metadata edit with Digikam make impossible to open it with + captureNX or ViewNX. + (Reported by Nicolas Boulesteix) + - 0000656: Broken image causes exiv2 to abort. + (Reported by Nathaniel W. Turner. digiKam bug 214913) + - 0000653: SVN 1912 fails to build. + (Reported by mike m) + - 0000652: Problems converting SubSec tags to XMP. + - 0000651: Exif tag: TimeZoneOffset (0x882a) and other TIFF/EP tags missing. + (Reported by Gary Cohen) + - 0000649: Converter fixes. + (Patches by Vladimir Nadvornik) + - 0000647: Seg fault with Olympus E-P1 orf. + (Reported by Udi Fuchs) + - 0000646: Additional lens data. + (Reported by mike m) + - 0000645: Conversion from XMP sidecar leaks XMP-SDK exception. + (digiKam bug 204042, patches by Vladimir Nadvornik) + - 0000642: string formatting of error #31. + (Patch by Matthias Barkhoff) + - 0000641: exiv2 "Image size" output broken for Nikon D700 NEF files. + (Reported by Martin Paris) + - 0000634: Locking error on windows when updating a TIFF file with + MemoryMapping enabled. + (Reported and fixed by Robin Mills) + - 0000629: Virtual functions should not be inlined. + - 0000627: typeId methods not available, -fvisibility-inlines-hidden + (Reported by Rex Dieter) + - 0000620: Update Nikon makernotes. + - 0000617: Optimize TIFF writing. + - 0000600: Upgrade XMP Toolkit to version 4.4.2. + - 0000581: Remove FindMetadatum* from API. + - 0000579: Implement memory mapping for Windows platforms. + (Based on an implementation by Robin Mills) + - 0000571: Need to convert character set when writing XMP sidecar. + (Reported by Franz Buchinger, patch by Vladimir Nadvornik) + - 0000533: Support multiple APP13 Photoshop 3.0 segments in a JPEG. + (Designed and implemented by Michael Ulbrich and Volker Grabsch) + - Changed FileIo and MemIo classes to use a Pimpl structure. + - Removed --disable-printucs2 configure option. + - Updated config files + - Added support for Canon FileInfo tags (Andi Clemens). + - Updated Nikon Lens lookup table to v4.1.361.01 of + Robert Rottmerhusen's fmountlens list. + - Added Sigma 28-80mm f/3.5-5.6 lens. + (Jo Hanika) + - Added support for Unicode paths on Windows (experimental) + (Based on work by Jonathan Potter, GP Software) + - Added easy-access functions saturation, sharpness, contrast and + sceneCaptureType. + (Jonathan Potter, GP Software) + - Fixed compilation warnings/error under MSVC when building for x64. + (Jonathan Potter, GP Software) + - On Windows, use Windows function for conversion of UCS-2 strings. + (Jonathan Potter, GP Software) + - Support for PGF files added. + (Gilles Caulier) + - Updated digiKam XMP properties. + (Gilles Caulier) + - Added iptc4xmpExt and plus XMP schemas. + (Based on a patch from Mikolaj Machowski). + - [translation] Updated Finnish translations. + (Mikael Lammentausta) + - [translations] Updated Polish translations. + (Michal Smoczyk) + + +Changes from version 0.18.1 to 0.18.2 +------------------------------------- + +* Exiv2 library + - 0000638: Valgrind reports errors when writing to PNG image. + - 0000636: Exiv2 corrupts certain NEF images when writing to them. + (digiKam bug 193228) + - 0000633: Editing via symlink does not work as expected. + (Reported by Vladimir Nadvornik. Also reported as + Debian bugs 466944 and 511273) + - 0000632: [translation] a few more small bugs. + (Reported by Michal Smoczyk) + - 0000631: [translation] a few bugs. + (Reported by Michal Smoczyk) + - 0000630: PNG images: CRC error in chunk zTXt. + (Reported by gegio 0, patch by Jochen Schug) + - 0000628: JPG images: Exiv2 puts comments directly after SOI. + (Reported by Johannes Hofmann) + - 0000626: PNG images: Setting IPTC preview corrupts PNG image. + (Reported by Gilles Caulier) + - 0000556: timegm() function should work with Windows 64bit time_t. + (Robin Mills) + - PNG images: Embed IPTC data in a Photoshop IRB. + - PNG images: Support creation of an image. (Gilles Caulier) + - JP2 images: Support creation of an image. (Gilles Caulier) + - Added a new Sigma lens to Minolta makernote. (Gilles Caulier) + - Updated Nikon Lens lookup table to v4.0.352.00 of + Robert Rottmerhusen's lens database. + - Fixed illegal read in ValueType::read(). + - [translation] Updated Polish translations. + (Michal Smoczyk) + + +Changes from version 0.18 to 0.18.1 +----------------------------------- + +* Utilities + - 0000612: Failed to delete XMP data from NEF (or any other TIFF-based) + images. (Reported by Martin Eriksson) + - 0000602: Exiv2 generated TIFF incompatible with libtiff. + (Reported by Udi Fuchs) + - Added new "organize" tool (Brad Schick). + +* Exiv2 library + - 0000623: Remove TiffPrinter visitor. + - 0000622: Exiv2 doesn't parse MicrosoftPhoto schema prefix correctly. + (Reported by Gilles Caulier / Sylvain Crouzillat) + - 0000619: Segfault when opening PNG image. + (Reported with patch by Lukasz Krzyzak) + - 0000618: Easy access to information which may be in different Exif tags. + (Based on a patch from Carsten Pfeiffer) + - 0000615: Setting the Exif makernote tag aborts if type is not + "undefined". (digiKam bug 182738) + - 0000609: Building a DLL of Exiv2 0.18 in MinGW requires -no-undefined + linker flag. (Reported with solution by Giuseppe Rota) + - 0000606: Add write support for Photoshop PSD image format. + (Patch from Michael Ulbrich) + - 0000604: Nikkor lens on Nikon D90 not recognized. + (Reported by Niels Kristian Bech Jensen) + - 0000603: Exiv2 does not read lens maker. + (Reported by Niels Kristian Bech Jensen) + - 0000594: Modifying images on an NTFS file system fails. + (digiKam bug 178103) + - 0000494: Patch for displaying focal length (Exif.Canon.FocalLength). + (Patch from Artis Rozentals) + - Updated Panasonic makernote. + - Added read-support for Panasonic RW2 raw images. + (With valuable input from Matthias Welwarsky) + - Some Nikon makernote updates. + - Updated Nikon Lens lookup table to v4.0.347.00 of + Robert Rottmerhusen's lens database. + - Fixed crash in Pentax makernote pretty-printing code. + (Reported by Marijn Kampf) + - Refactored TiffCreator: simplified, fixed several todo's, added + support for multiple TIFF tree structures. + +* MSVC related + - 0000621: windows librarys are forcing a link to + ..\..\..\zlib-1.2.3\projects\visual6\blah\blah. + (Reported by Peter J. Ersts, fix by Robin Mills) + + +Changes from version 0.18-pre2 to 0.18 +-------------------------------------- + +* Exiv2 utility + - 0000580: [tools] -M option fails and reports success. + (Reported by Daniel Blueman) + - [tools] Added options -pp and -ep to list and extract preview + images. + - [tools] Added option -pa to print all metadata, added control + for the type of metadata in option -P. + +* Exiv2 library + - 0000591: [build environment] Added missing #includes for g++ 4.4. + (Debian bug 505023, patch from Martin Michlmayr) + - 0000586: [metadata] ValueType constructor makes assumptions of the + endianness of the machine. (Reported by Dimitri) + - 0000584: [build environment] Linking fails for PreviewImage::pData(). + (Reported by Joakim Rosqvist) + - 0000583: [build environment] Linking fails when compiling. + (Reported by Joakim Rosqvist) + - 0000542: [exif] Exiv2 doesn't find exif data in attached file. + (Reported by Paolo Benvenuto) + - [exif] Updated Nikon lens info to v3.82 of Robert Rottmerhusen's + lens database. + - [exif] Fixed adjustment of invalid tag data. + (digiKam bug 177457) + - [exif] Catch unknown makernotes before reading the IFD. + (digiKam bug 174620) + - [exif] Introduced logic to fit Exif data in a 64kB block when + writing to JPEG images. + - [exif] Various TIFF parser improvements. + - [exif] Added support for Olympus FE and Raw Info subdirs and + tags. + - [design] class PreviewImage: Added members to access all preview + properties. + - [design] class Metadatum and derived classes: Added familyName() + and groupName(). + - [design] class ExifData: Added erase(beg, end). + - [translation] Updated Polish translations. + (Piotr Eljasiak) + - [translation] Updated German translation. + (Oliver Dörr) + - [translation] Updated Slovak translations. + (Ivan Masar) + +* MSVC related + - 0000578: [build environment] More fixes for the MSVC build environment. + (Robin Mills) + + +Changes from version 0.18-pre1 to 0.18-pre2 +------------------------------------------- + +* MSVC related + - 0000567: [build environment] Re-wrote MSVC build files. Now builds an + experimental DLL among other improvements. (Robin Mills) + +* Exiv2 library + - 0000570: [exif] Fuji SP-3000 Makernote not recognized. + (Reported by han AT whria DOT net) + - 0000516: [exif] Print functions need access to other tags. + - 0000473: [design] Support Preview images. (Vladimir Nadvornik) + - [exif] Fixed non-intrusive encoding for Minolta array elements. + - [exif] Fixed test whether data area is outside of the data buffer. + - [exif] Added check for circular IFD references to new TIFF parser. + - [exif] Added Exif.CanonCs.LensType and pretty-print function. + - [exif] Added Nikon decryption algorithm and use it to decode + lens data. + - [misc] Initialized variable which lead to crash on Windows. + (Reported by Robin Mills). + - [exif] Added synthesized info tags Exif.MakerNote.Offset and + Exif.MakerNote.ByteOrder. + - [misc] Some performance improvements. + (Analysis by Vladimir Nadvornik) + - [exif] Always add Exif.Photo.Makernote tag, even if the + makernote is decoded. + - [xmp] Fixed issue with custom namespaces ending with a #. + (Reported by chrysn) + - [exif] Added Olympus2 makernote support. (Vladimir Nadvornik) + - [translation] Updated German translation. + (Oliver Dörr) + - [translation] Updated Polish translation. + (Piotr Eljasiak) + - [design] Removed inline functions from class hierarchies. + (Patrick Spendrin) + + +Changes from version 0.17.1 to 0.18-pre1 +---------------------------------------- + +* Exiv2 library + - 0000568: [metadata] exiv2 -ps crash for some jpeg files. (Reported by + aurelien) + - 0000566: [miscellaneous] RSA licensed MD5.cpp file in exiv2 0.16. + (Reported with fix by Dirk Mueller) + - 0000565: [exif] IFDs and IFD offsets need to be aligned to word + boundaries. (Reported by iplabs.de) + - 0000554: [exif] Setting "Exif.Image.DateTime Date" gives "Value too + large" exception. (Debian Bug 426274) + - 0000553: [design] [U]Rational::toLong() and toFloat() should not divide + by 0. + - 0000528: [miscellaneous] typeSize is meant for Exif metadata only. + - 0000526: [metadata] Adding GPS info removes preview image from Nikon + Coolpix JPGs. (Reported by paulb) + - 0000524: [design] Publish only API objects in the installed header files. + - 0000523: [miscellaneous] C++ symbol visibility support for gcc builds. + - 0000464: [metadata] Write support for PNG images. (Gilles Caulier) + - 0000462: [exif] Write support for TIFF format ("New TIFF parser"). + - 0000405: [design] Separate metadata parsing from metadata storage. + - [metadata] Write support for JPEG2000 format. (Gilles Caulier) + - [exif] Updated Nikon lens info to v3.25 of Robert Rottmerhusen's + lens database. + - [xmp] Added Microsoft Photo and digiKam XMP schemas. + (Gilles Caulier) + - [exif] Added DNG tags. + + +Changes from version 0.17 to 0.17.1 +----------------------------------- + +* Exiv2 library + - 0000560: [xmp] Can't delete (last) XMP tag. (Reported by SerGioGioGio) + - 0000559: [exif] Crash when extracting Exif orientation flag from Kodak + DCR raw file. (Reported by Gilles Caulier) + - 0000558: [jpeg i/o] "Warning: JPEG format error, rc = 5" for most of my + JPEG files. (Reported with patch by Marcus Holland-Moritz) + - 0000552: [build environment] Build failure under Mac OS X 10.3.9 + (Reported by Marius Schamschula) + - [exif] Fixed several potential division by 0 bugs. + + +Changes from version 0.16 to 0.17 +--------------------------------- + +* Exiv2 utility + - [tools] exiv2 now writes a proper XMP sidecar file (it used to + just dump the XMP packet to a file). + - [tools] exiv2 can now also save Exif and IPTC data in the XMP + sidecar file (conversion of Exif/IPTC to/from XMP). + +* Exiv2 library + - 0000550: [design] Remove "MakerTagInfo registry" and registration logic. + - 0000547: [build environment] exiv2 0.16 fails to compile with gcc 4.3.0. + - 0000546: [exif] Exiv2 crashes while converting Nikon lens information + for pretty printing. + - 0000541: [translation] French translation mistake. + - 0000540: [xmp] Pretty-print functionality for XMP. + (Adrien Bustany for GHOP 98) + - 0000539: [xmp] Cannot add XMP properties in a custom namespace. + (Vladimir Nadvornik, S M Ryan) + - 0000532: [xmp] Added conversions to and from XMP. (Vladimir Nadvornik) + - 0000474: [design] Add a metadatum member to access translated tag values + without the need to use streams. + - [metadata] Added read support for jp2 and psd images, stubs for + gif, bmp and tga images, and pixelWidth and pixelHeight methods on + class Image. (Marco Piovanelli - Ovolab) + - [exif] Updated Nikon lens info to v3.18 of Robert Rottmerhusen's + lens database. + - [exif] Updated Pentax makernote tags. (Michal Cihar) + - [xmp] Added support for XMP sidecar files. + - [xmp] Improved XMP value toLong, toFloat and toRational using new + functions parseLong, parseFloat and parseRational. + (Vladimir Nadvornik) + - [xmp] Allow format options for XmpParser::encode. + (Vladimir Nadvornik) + - [xmp] Added LangAltValue::toString(const std::string&) to get + the value for a specific language qualifier. + (suggested by Marco Piovanelli) + - [xmp] Fixed XmpKey::tagLabel() for custom keys. + (Reported by Vladimir Nadvornik) + - [miscellaneous] Define pid_t using a typedef instead of #define in + Windows environments. (Robin Mills) + - [translation] Updated German translation. + (Oliver Dörr) + - [translation] Updated French translation. + (Fabien Salvi) + - [translation] Updated Polish translation. + (Piotr Eljasiak) + - [translation] Updated Russian translation. + (Alexandre Prokoudine) + - [translation] Added Slovak translation. + (helix84) + + +Changes from version 0.16-pre1 to 0.16 +-------------------------------------- + +* Exiv2 utility + - 0000484: [tools] exiv2 -T adjusts file timestamp wrongly. + (Reported by Dave Locke) + - 0000477: [tools] Adjust year, month and day of the timestamp. + (Based on a patch by David Grundberg) + - [tools] Modified fixiso action to handle Canon tags as well. + (Highlighted by Michael Mather) + +* Exiv2 library + - 0000537: [miscellaneous] Broken PNG image causes exiv2 to crash. + (digiKam bug 155105, reported by Michal Kosmulski) + - 0000534: [exif] Integer overflow when reading thumbnail. + (Reported by Meder Kydyraliev, Google Security Team) + - 0000533: [iptc] Read IPTC data from multiple APP13 Photoshop 3.0 segments. + - 0000531: [exif] Pentax lens info decoding. (Patch by Michal Cihar) + - [exif] Updated Nikon lens info to v2.99 of Robert Rottmerhusen's + lens database. + - [doc] Added reference tables for XMP properties to documentation. + - [miscellaneous] Updated German translation. + (Oliver Dörr) + - [miscellaneous] Updated Polish translation. + (Piotr Eljasiak) + +* MSVC related + - 0000535: [build environment] unlink() declaration conflicts with Visual + Studio stdio.h. (Reported with patch by Nikolai Saoukh) + - 0000514: [miscellaneous] Linking with libexiv2 masks system localtime, + and on MinGW, that of libexiv2 doesn't handle DST correctly. + - [build environment] Fixed compilation of the samples. + - [build environment] Added support for XMP to MSVC project files. + + +Changes from version 0.15 to 0.16-pre1 +-------------------------------------- + +* Exiv2 utility + - 0000463: [design] Add support for XMP metadata. + +* Exiv2 library + - 0000529: [exif] Add support for Pentax maker note. (Michal Cihar) + - 0000522: [exif] Lightzone-created JPEG causes exiv2 to segfault. + (Reported by Markus Spring) + - 0000463: [design] Add support for XMP metadata. + - [exif] Support for Olympus ORF format. (Jeff Costlow) + - [exif] Updated Nikon lens info to v2.40 of Robert Rottmerhusen's + lens database. + - [exif] Added Minolta lenses. (Hiroshi Kawashima) + - [exif] Ported various Exif tags from Exiftool. + (Gilles Caulier) + - [miscellaneous] Added i18n for XMP properties, XMP support + in PNG images. (Gilles Caulier) + - [build environment] Isolated sample programs in their own + directory. + - [miscellaneous] Updated French translation. + (Olivier Tilloy) + - [miscellaneous] Updated German translation. + (Oliver Dörr) + - [miscellaneous] Updated Polish translation. + (Piotr Eljasiak) + - [miscellaneous] Updated Russian translation. + (Alexandre Prokoudine) + + +Changes from version 0.14 to 0.15 +--------------------------------- + +* Exiv2 utility + - 0000518: Return code 0 when unable to insert exif tags. + (Reported by Daniel J Blueman) + - Rename action: Use Exif.Image.DateTime if + Exif.Photo.DateTimeOriginal is not present. (Highlighted by + mflanagan_swim) + +* Exiv2 library + - 0000521: [exif] Image with large invalid Exif tag crashes exiv2. + (Reported by Marco Piovanelli) + - 0000520: [exif] crash when loading certain image. + (Reported by Christian Weiske) + - 0000519: [exif] Another Minolta G500 file impossible to read after fix. + (Reported by Alexander Rabtchevich) + - 0000513: [exif] Sony Makernote crashes exiv2. + (Reported by Aaron D. Campbell) + - 0000512: [exif] Wrong AFPoints mapping for Canon cameras. + (Reported with patch by Rob Walker) + - 0000511: [exif] Minolta G500 RAW format support. + (Reported by Udi Fuchs) + - 0000509: [miscellaneous] Since v0.14 the version check macro doesn't work + in a precompiler #if test anymore. (Reported by Udi Fuchs) + - 0000449: [jpeg i/o] Uncouple IPTC and Exif reading. + - [exif] Updated Nikon lens info to v2.30 of Robert Rottmerhusen's + lens database. + - [Exif] Added additional values to the Exif.CanonCs.ISOSpeed. + lookup table. (Patrick Markert) + - [Exif] Canon ModelId patch. (Gerry Patterson) + - [miscellaneous] Updated German translation. + (Oliver Dörr) + - [miscellaneous] Updated Russian translation. + (Alexandre Prokoudine) + - [miscellaneous] Updated French translation. + (Stephane Pontier) + + +Changes from version 0.13 to 0.14 +--------------------------------- + +* Exiv2 utility + - [tools] exiv2 utility: Fixed handling of multiple rename options + -r, -t, -T + +* Exiv2 library + - 0000508: [exif] Fixed mapping of CRW rotation info to Exif orientation. + (Reported and analysed by Marco Piovanelli) + - 0000507: [exif] Fixed RAF read-support for systems without mmap. (Reported + by Udi Fuchs) + - [exif] Added tag names for a few tags used by Windows Vista and + ACDSee. (Gilles Caulier) + - [exif] Updated Nikon lens info to v2.20 of Robert Rottmerhusen's + lens database. + - [build environment] Switched to libtool's -version-info versioning + system. + - [build environment] By default, do not use the -g compiler option. + - [build environment] Added --disable-printucs2 configuration option + to disable Windows tag character convertion using libiconv. + - [build environment] Changes to make Exiv2 cross-compile smoothly + for win32 (Udi Fuchs) + - [build environment] Removed deprecated exiv2-config script and + some obsolescent autoconf macros pointed out by Udi Fuchs. + - [miscellaneous] Changed AnyError to inherit from std::exception; + changed the signature of AnyError::what(). (Suggested by Marco + Piovanelli) + - [miscellaneous] Fixed version check macro to actually check the + runtime version and not the compile-time version. Added version() + and versionNumber() functions. + - [miscellaneous] Updated German translation. (Oliver Dörr) + - [miscellaneous] Changed name of installed translation files to + lower case exiv2.mo. (Highlighted by Angelo Naselli) + + +Changes from version 0.12 to 0.13 +--------------------------------- + +* Exiv2 utility + - 0000504: [tools] exiv2 utility: allow use of -M and -m options with extract + and insert actions. + +* Exiv2 library + - 0000503: [metadata] Tiff generated by photoshop crashes exiv2 + (digikam bug 139658). + - 0000502: [iptc] New TIFF parser: Decode IPTC from Exif.Image.IPTCNAA. + (Reported by Walter Hangartner) + - 0000501: [iptc] IPTC field parsing is still too strict: shouldn't fail if + the type is not as expected. (Reported by Elsa Nordh) + - 0000497: [tools] exiv2 tool doesn't respect unix file rights. (Reported and + analysed by fabien) + - 0000491: [miscellaneous] Probe exiv2 for the extensions it supports. + (Suggested by Will Stokes) + - 0000461: [miscellaneous] Add i18n support. Requires gettext. + (Gilles Caulier) + The currently available translations are still work in progress: + Finnish by Mikael Lammentausta + French by Gilles Caulier (ported from libexif) and Olivier Tilloy + German by Gilles Caulier (ported from libexif) and Oliver Dörr + Russian by Alexandre Prokoudine + Polish, Spanish by Gilles Caulier, ported from libexif + - 0000460: [exif] Exiv2 should support to decode/encode Windows tags + Exif.Image.0x9c9b-0x9c9f. Requires libiconv. + (Suggested by Jose Oliver) + - 0000452: [exif] Non-intrusive writing does not update IFD. + - [exif] Updated Nikon lens info to v2.15 of Robert Rottmerhusen's + lens database. + - [exif] Added read-support for Fujifilm RAF images. + - [exif] Image class hierarchy refactored: Image now has containers + and provides default implementations for most methods. Calling + an unsupported method of any Image subclass now results in an + exception. Added a method to access the MIME type of an image. + +* MSVC related + - [exivsimple] Added get and set thumbnail functions. + (Christian Kuster) + + +Changes from version 0.11 to 0.12 +--------------------------------- + +* Exiv2 utility + - 0000493: [tools] exiv2 -T DST problem. + (Fix suggested by John ) + - 0000459: [exif] Exiv2 tool: Added a variable for the original filename to + the rename option. (Patch by Tobias Jahn) + +* Exiv2 library + - 0000498: [exif] Exiv2 cannot read the Exif data written after deleting all + tags. + - 0000496: [metadata] Digikam bug 136855: Editing metadata on a few selected + imagefiles and clicking forward or apply crashes digikam. + (Reported by several digikam users) + - 0000495: [exif] Image with corrupted metadata crashes Exiv2. (Reported as + digikam bug 136932 by Rainer Krienke) + - 0000490: [build environment] PNG support doesn't compile on MinGW/msys. + (Reported by Udi Fuchs and Will Stokes) + - 0000489: [build environment] exiv2.pc.in includes private/static libs by + default. (Reported with patch by Rex Dieter) + - 0000488: [metadata] GPSInfo Metadata should return decimal numbers. + (Feature requested by Fabien) + - 0000486: [build environment] Test bugfixes-test.sh error under Mac OS X x86. + (Reported with fix by Max Lapshin) + - [exif] Updated Nikon lens info to v2.07 of Robert Rottmerhusen's + lens database. + - [metadata] Added methods to access built-in read-only Exif taglists + and IPTC record lists. (Initiated by Max Lapshin) + - [iptc] Improved IPTC record descriptions using IIM4 specification + version 4.1. (Gilles Caulier) + - [exif] Improved Exif tag descriptions using Exif specification 2.2 + and libexif. (Gilles Caulier) + - [exif] Added and improved pretty print functions for some Exif + tags. (Gilles Caulier) + - [exif] Updated Minolta makernote. (Gilles Caulier, Paul Tribick) + +* MSVC related + - 0000487: Crash in exiv2.exe (built with VC++ 2005 Express) when examing TIFF + images (Reported with patch by Dimitri Schoolwerth) + + +Changes from version 0.10 to 0.11 +--------------------------------- + +* Exiv2 utility + - 0000485: [tools] Weird behaviour when Exif comments contain quotes (Reported + by Scott Baker) + - Changed exiv2 del command to delete all occurences of a tag. + (Christophe Paris) + +* Exiv2 library + - 0000483: [jpeg i/o] Assertion `sizeIptc' fails when reading metadata from + JPEG file. This happened when an image has an empty IPTC IRB. + (digikam bug 132582) + - 0000482: [exif] SONY DSLR-A100 RAW image crashes Exiv2. (Reported to ufraw + by Vishnu Natchu) + - 0000480: [iptc] JPEG APP13 (used to store IPTC IRB) can not be larger than + 64kB but IRB buffers can. (digikam bug 130525) + - 0000479: [exif] JPEGs edited with LightZone crash Exiv2. (Reported by Daniel + Hobe) + - 0000475: [design] Performance: Don't read TIFF-based files completely, use + memory mapping (only on Linux) to read only what is needed. Improves + performance by factor 6. + - 0000471: [exif] New TIFF parser: Create a CommentValue rather than a + DataValue for Exif.Photo.UserComment. (Reported with test program + by Marcel Wiesweg) + - [exif] New TIFF parser: Extract TIFF thumbnail from IFD1 if there + is one. + - [exif] Added read support for PNG images (Gilles Caulier) + - [exif] Updated Canon makernote tags and decoded additional composite + tags, based on Exiftool. Note that some tag names changed. + (David Cannings) + - [exif] Updated Nikon lens info to v2.02 of Robert Rottmerhusen's + lens database. + - [exif] Various smaller tag updates (Gilles Caulier, Jim Westveer, + Nicolas Vilars, Robert Peter) + +* MSVC related + - 0000455: [build environment] Exiv2 finally works with MSVC 2005. (Thanks to + Stephen and Maciej Sakrejda aka Maciek) + + +Changes from version 0.9.1 to 0.10 +---------------------------------- + +* Exiv2 utility + - 0000468: [tools] Added -P option to control what information is displayed + in print mode, added -b and -u options to control output of large + values and unknown tags. (Better print control suggested by Udi Fuchs) + - Display filename in print mode if processing multiple images, + like grep does. (Roger Larsson) + +* Exiv2 library + - 0000469: [miscellaneous] MemIo behaviour differs from FILE* and FileIo. + (Reported by Dimitri) + - 0000462: Support TIFF format, part 1: Read support for TIFF and TIFF-based + RAW formats, including NEF, CR2, PEF, SR2, DNG and MRW. + - 0000458: [build environment] Support pkg-config tool, + removed /include/exiv2 path from exiv2-config output. + (Suggested by Udi Fuchs) + - 0000456: [miscellaneous] Check for 0 pointer before invoking std::string + constructor on C-string. + - Added Minolta makernote. (Gilles Caulier) + - Added support for Exif.Image.Orientation for Canon CRW images. + - Improved the print functions for Exif.Nikon[13].AFFocusPos. + (Roger Larsson) + - Updated some Canon labels and translations (Patrice Boissonneault) + - Changed some Nikon tag names. (Based on feedback from Udi Fuchs) + - Added EXIV2_CHECK_VERSION macro for applications to check at runtime + which version of Exiv2 is installed. + +* MSVC related + Added COM project. (Patrice Boissonneault) + + +Changes from version 0.9 to 0.9.1 +--------------------------------- + +* Exiv2 library + - 0000451: [exif] Fixed bug where an invalid Exif tag was created for + the user comment, when the tag was newly added to an image. + (Thanks to Anatoliy Kovalenko for reporting this bug) + - Added enum MetadataId and Image::supportsMetadata() to check what + metadata an image class supports. Changed CrwImage to silently + ignore calls to Iptc related functions instead of throwing an Error. + (Thanks to Will Stokes for suggesting the check feature) + - Cleaned up some #include statements (mentioned here because this + may lead to unexpected compiler errors). + + +Changes from version 0.8 to 0.9 +------------------------------- + +* Exiv2 utility + - 0000450: [exif] Added action "fixiso" to copy the ISO setting from Nikon + Makernotes to the regular Exif tag Exif.Photo.ISOSpeedRatings. + - 0000448: [tools] Added options -p and -t, -T to preserve file timestamps and + set the timestamp according to the Exif timestamp. + (Thanks to Stephan Ahlswede for suggesting the -p feature) + - 0000446: [misc] Added option -c to set the JPEG comment to the utility. + (Thanks to Tristan Savatier for the suggestion) + +* Exiv2 library + - 0000447: [iptc] Fixed a buffer overflow in sscanf. (Thanks to Maciej Sakrejda + aka Maciek for reporting this bug and the hard work to recreate it) + - 0000438: [exif] Write support for Canon raw images. + - [exif] Updated Nikon lensdata to v2.00 of Robert Rottmerhusen's + amazing lens database. (Thanks to Robert for keeping me updated.) + - [build environment] Added an option to enable/disable dependency- + tracking to the configure script, which is useful to create + "Universal Binaries" under Mac OSX. + (Thanks to Will Stokes for the suggestion) + - [exivsimple] Changed DllTypeId::time and DllTypeId::date to + DllTypeId::isoTime and DllTypeId::isoDate to avoid a name clash. + + +Changes from version 0.7 to 0.8 +------------------------------- + +* Exiv2 utility + - [tools] Added -S .suf option to the utility. This allows, e.g, + to use Canon THM files as source file for the insert command. + - [doc] Added man page. (Based on Peter KELEMEN's Debian man page.) + +* Exiv2 library + - 0000445: [exif] Setting the comment on an image with an existing comment has + no effect. + - 0000444: [iptc] Exiv2 should not panic on slightly misformed IPTC format. + - 0000443: [exif] Exiv2 gives up on corrupted IOP directory. + - 0000440: [iptc] IPTC time without timezone raises exception. + - 0000438: [exif] Support Canon raw images (CRW and THM), currently read-only. + - 0000437: [exif] exiv2 -pt crashes if Exif.Canon.ImageNumber is < 1000. + - 0000433: [exif] Core dump if the value is empty. + - 0000424: [exif] Ifd::read, MakerNote::read and related methods should have + access to the complete data buffer. + - [exif] Updated Nikon lensdata to v1.19 of Robert Rottmerhusen's + list. + - Added a tag and dataset title (label). + - Added #ifndef SUPPRESS_WARNINGS blocks around all output from the + library: compile with -DSUPPRESS_WARNINGS for a quiet library. + - Implemented "copy-on-write" strategy for MemIo to ensure that the + original buffer is only copied if necessary and never modified. + - Added exiv2-config script. Applications that include exiv2 headers + and link with the installed library can use this in their build + commands. + + +Changes from version 0.6.2 to 0.7 +--------------------------------- + +* Exiv2 utility + - 0000422: [tools] Allow renaming pictures taken within one second. + (Reported by jussi AT jjussi DOT com) + - 0000423: [tools] Fixed problems with paths and -l option on Windows. + - [tools] Improved output data and format of the utility to + show the key. + +* Exiv2 library + - 0000404: [design] Insideout design change; made class Exiv2::Image + the top-level class of the library. (Brad Schick) + - 0000403: [design] Added I/O abstraction and implementations. (Brad Schick) + - 0000402: [design] Split image.cpp and hpp files into base class and + subclass files. (Brad Schick) + - 0000425: [exif] Added default type info to Exif tagtables. + - 0000427: [misc] Standardized factories according to the implementation. + of ImageFactory (MakerNoteFactory). Linking with mn.o is not + necessary anymore. + - 0000420: [build environment] Defines should have a library specific + prefix, like e.g., EXV_HAVE_CONFIG_H. + - 0000417: [exif] ExifData needs proper copy constructor and assignment. + - 0000426: [iptc] Fixed problem which prevented Exiv2 from reading IPTC + from jpeg files. (Jeffrey J. Early and others) + - [feature] Added Olympus, Panasonic and a basic Sony Makernote. + (Thanks to Will Stokes for the initial Olympus files) + - [feature] Improved Canon and Nikon Makernote support. + (Thanks to Robert Rottmerhusen for his Nikon lens info) + - [exif] Relaxed checking of Makernote IFD next pointer. + - [design] Overhauled exception handling. + + +Changes from version 0.6.1 to 0.6.2 +----------------------------------- + +* Exiv2 utility + - [feature] New -M option to run modification commands directly + from the command line. + - 0000421: [tools] Command parser fails if no type is specified with a + modify command. + - 0000416: [exif] Fix Exiv2 modify action to use non-intrusive writing + whenever possible. + - 0000418: [feature] Add Exiv2 option to specify path of extracted. + and inserted files. (Suggested by Brian Pugh) + +* Exiv2 library + - 0000408: [build environment] 0.6.1 does not build on OS X: Add libtool + support for automatic library creation (see README). + (Reported by Thomas Lunde and others) + - 0000409: [build environment] compiling emits type warnings. (Thomas Lunde + and others) + - 0000410: [build environment] config.h must be installed, -DHAVE_CONFIG_H + flag should not be necessary. (Daniel Foote and others) + - 0000411: [exif] Support non-standard Ifd layout. (Jeffrey J. Early) + + +Changes from version 0.6 to 0.6.1 +--------------------------------- + +* Exiv2 utility + + * Added option to modify Iptc and Exif metadata based on a command file + +* Exiv2 library + + * Fixed bug #407: Writing metadata to image after modifications may + lose thumbnail. Thanks to Jeffrey J. Early for pointing out this bug. + + * Added CommentValue + + +Changes from version 0.5 to 0.6 +------------------------------- + +* Exiv2 utility + + * Added options to extract, insert and delete different types of metadata + + * Added option to print the Jpeg comment + + * Changed semantics of print option `i' to Iptc + (`t' for translated Exif data) + + * Replaced std::cout << "\n" with std::endl to flush and get the + sequence with error output right + +* Exiv2 library + + * Added support to build Makernotes from scratch + + * Added support to build IFD1 (Thumbnail) entries from scratch + + * Open image files on demand rather than keeping them open. Bug #393 (Brad) + + * Added data area concept to Value, ValueType, Entry, Ifd. Feature #395 + + * Revamped Thumbnail classes to use the new data area feature. Feature #398 + + * Added ExifData::setJpegThumbnail + + * Improved implementation of Exif and Iptc keys, added support for + keys with unknown tag names + + * Added ExifData::op[] and Exifdatum op= and similar operators to + IptcData and Iptcdatum. This operator stuff allows for things like: + exifData["Exif.Thumbnail.Compression"] = uint16_t(6); + + * Converted class hierarchies to use std::auto_ptr where appropriate + + * Replaced custom integer types with C99 types + + * Added test data and drivers to the repository + + * Right align output stream for date and time writes. Bug #397 (Brad) + + * Updated documentation + +* MSVC related (Thanks to Brad Schick) + + * Added exivsimple: a Windows dll that allows languages such as + C# and VB to access limited metadata capabilities (Brad) + + * Added and write2-test projects to MSVC build (Brad) + + * Added mn.cpp to all MSVC projects. Fixes bug #396 (Brad) + + * Fixed various MSVC 7.1 build errors. Bug #394 (Brad) + + * Added write-test to MSVC build project (Brad) + + +Changes from version 0.4 to 0.5 +------------------------------- + +* Exiv2 utility + + * Added -pI print mode to print Iptc data. + + * Bugfix: Use timegm() and gmtime() instead of mktime() and + localtime() to avoid problems when adjusting timestamps. + Thanks to Samir Rostum for pointing out this bug. + + * Added timegm() from the tz distribution for platforms which + do not have this function. + +* Exiv2 library + + * Added full Iptc read and write support. Thanks to Brad Schick for + this and a lot more contributions to this release. + + * Converted Metadatum to an abstract base class, added Exifdatum + and Iptcdatum classes. Migration of existing programs: Use class + Exifdatum instead of Metadatum. (Brad Schick) + + * Added Key, ExifKey and IptcKey class hierarchy. Requires changes + to existing pograms: Use class ExifKey where plain std::string + keys were used before (e.g., ExifData::findKey()). + + * Changed Exif keys to 'Exif.ifdItem.tagName' to be consistent + with the new Iptc keys. All keys of existing programs need to be + updated. See the web pages or documentation for the new keys. + + * Revamped class Image and introduced byte* interface. (Brad Schick) + + * Added autoconf configure script. + + * Added MSVC project files. (Brad Schick) + + * Appended 'Id' to Ifd ids to work around a g++-3.4 problem. + + * Updated documentation. + + +Changes from version 0.3 to 0.4 +------------------------------- + +* Exiv2 utility + + * Less rigid command line argument parsing: Guess the action from the + option given and use print as the default action. + + * Print Nikon makernote values for ISO Speed, Quality and WhiteBalance + in the summary. + +* Exiv2 library + + * Fixed ExifData::copyFromMetadata to automatically add missing + offset tags. Thanks to Joseph Heled for identifying this bug. + + * Started to fix MSVC errors and warnings. Thanks to Steven R. King for + his work to get Exiv2 to compile on MSVC. The task is not yet + completed but the library should compile without too many warnings. + + * Added three different Nikon makernote formats. + + * IfdMakerNote: Replaced too simple prefix with a more general concept + of a makernote header. + + * Added the makernote buffer to the arguments passed to the makernote + create function. This allows the makernote create function to + determine the exact makernote needed based on its content. The new + concept is used to automatically determine which of the three Nikon + makernotes to create. + + * Fixed MakerNoteFactory::match() to prefer an exact match over a + wildcard match with the same number of matching characters (Key + "Nikon" now prefers registry entry "Nikon" over "Nikon*"), simplified + the return value of match() to an integer score value. + + * Sigma makernote: Added "FOVEON" and "*" to registry. + + * Added len argument and boundary checks to various read functions, + in particular, the IFD read method. + + * Improved handling of corrupt IFDs: Truncate field if offset points + outside of the available buffer. + + * Slightly improved error handling: strError() is now a static member + of ExifData. + + * Added exifcomment example program. + + * Fixed an embarassing bug in ExifData::updateEntries, which caused + write after erasing metadata to write back the original metadata. + + * Fixed TypeInfoTable to return invalid if typeId is too large. + + * Makefile: (un)install targets now only (un)install exiv2. + + * Code cleanup, documentation updates and miscellaneous bug fixes. diff --git a/vendor/exiv2-0.25/doc/Makefile b/vendor/exiv2-0.25/doc/Makefile new file mode 100644 index 0000000..d1e4046 --- /dev/null +++ b/vendor/exiv2-0.25/doc/Makefile @@ -0,0 +1,87 @@ +# ***************************************************** -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile +# Version: $Rev: 3777 $ +# Author(s): Andreas Huggel (ahu) +# History: 10-Dec-03, ahu: created +# +# Description: +# Simple Makefile to build the doxygen documentation +# +# Restrictions: +# Requires GNU make. +# + +# Default make target +all: doc + +# Include system configuration +top_srcdir = .. +include $(top_srcdir)/config/config.mk + +# ********************************************************************** +# ====================================================================== +# ********************************************************************** + +# Initialisations +SHELL = /bin/sh + +.SUFFIXES: + +# ********************************************************************** +# Targets +.PHONY: all doc doxygen tags mostlyclean clean distclean maintainer-clean + +doc: doxygen tags + +doxygen: + doxygen $(top_srcdir)/config/Doxyfile + +tags: + mkdir -p $(top_srcdir)/doc/html + cd $(top_srcdir)/doc/templates && $(MAKE) all + cp -f $(top_srcdir)/doc/templates/*.html $(top_srcdir)/doc/html/ + @echo "*****************************" + @echo "*** if you got lots of errors, try modifying" $(realpath $(top_srcdir)/config/Doxyfile) "***" + @echo "*****************************" + +mostlyclean clean: + $(RM) *~ *.bak *# + +distclean: clean + cd $(top_srcdir)/doc/templates && $(MAKE) $(MAKECMDGOALS) + +# This command is intended for maintainers to use; it deletes files +# that may need special tools to rebuild. +maintainer-clean: distclean + rm -rf $(top_srcdir)/doc/html/* diff --git a/vendor/exiv2-0.25/doc/README-XMP b/vendor/exiv2-0.25/doc/README-XMP new file mode 100644 index 0000000..1cfc048 --- /dev/null +++ b/vendor/exiv2-0.25/doc/README-XMP @@ -0,0 +1,70 @@ +Exiv2 XMP support +***************** + +On UNIX-like systems, XMP support is controlled with the --enable-xmp +and --disable-xmp options to the configure script. +Building Exiv2 with XMP support requires the Expat XML parser library +(http://expat.sourceforge.net/). The --with-expat configure option +can be used if it is installed in a non-standard directory. +The MSVC project files for Windows are setup to always build Exiv2 +with XMP support. + +See the main README file for general build information. + +For API documentation of XMP classes and samples, consult the online +documentation at http://www.exiv2.org/doc or build the documentation +and go to doc/html/getting-started.html + +For details on the XMP support of the exiv2 command line tool, see +the exiv2(1) manual page and the sample command file doc/cmdxmp.txt + + +XMP Toolkit +=========== + +Exiv2 uses the XMPCore component of the Adobe XMP Toolkit (XMP SDK) to +parse and serialize XMP packets. Currently, it is integrated and +distributed with Exiv2. The xmpsdk/ directory of the Exiv2 distribution +contains the XMP SDK source code. The final solution should eventually +use an external XMP Toolkit. + +Building the XMP Toolkit is transparent. Following the installation +steps described in the main README will ensure that the XMP Toolkit is +compiled if necessary. It is only needed if XMP support is enabled. +Building the XMP Toolkit results in a "convenience library" in +xmpsdk/src/. This library is only used to link the Exiv2 library with; +it is not installed. + +If you experience problems building this library, please email to the +Exiv2 forum for help, http://dev.exiv2.org/projects/exiv2/boards +and not to Adobe directly. + + +Source +====== + +XMP-Toolkit-SDK-4.4.2.zip obtained via +http://www.adobe.com/devnet/xmp/sdk/eula.html + +The following files were copied from the original XMP SDK +distribution, essentially: + +public/include/* -> xmpsdk/include +source/common/* -> xmpsdk/src +source/XMPCore/* -> xmpsdk/src +build/XMP_BuildInfo.h -> xmpsdk/src + +The MD5 functions included with XMP SDK were replaced with an +equivalent implementation which is in the public domain. For more +details refer to Exiv2 issue #600 and the SVN repository: + + http://dev.exiv2.org/issues/show/600 + http://dev.exiv2.org/repositories/browse/exiv2/trunk/xmpsdk + + +License +======= + +Copyright (c) 1999 - 2008, Adobe Systems Incorporated + +See the file doc/COPYING-XMPSDK for the XMP Toolkit license agreement. diff --git a/vendor/exiv2-0.25/doc/cmake_doc.sh b/vendor/exiv2-0.25/doc/cmake_doc.sh new file mode 100755 index 0000000..44dd676 --- /dev/null +++ b/vendor/exiv2-0.25/doc/cmake_doc.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +## +# this is called by the CMake build to build the docs +## +if [ $# == 1 ]; then + CMAKE_BINARY_DIR="$1" + cd .. + + if [ -e src/exv_conf.h ]; then + mv src/exv_conf.h src/exv_conf.h.keep + fi + make config + ./configure + if [ -e src/exv_conf.h.keep ]; then + mv src/exv_conf.h.keep src/exv_conf.h + fi + mkdir -p src/bin/ + cp -f "${CMAKE_BINARY_DIR}/bin/taglist" src/bin/ + make doc +fi + +# That's all Folks +## diff --git a/vendor/exiv2-0.25/doc/cmd.txt b/vendor/exiv2-0.25/doc/cmd.txt new file mode 100644 index 0000000..2daf491 --- /dev/null +++ b/vendor/exiv2-0.25/doc/cmd.txt @@ -0,0 +1,50 @@ +# Sample Exiv2 command file +# ------------------------- +# +# $ exiv2 -m cmd.txt file ... +# +# to apply the commands in cmd.txt to each file. Alternatively, commands can be +# run from the command line directly, without a command file: +# +# $ exiv2 -M"add Iptc.Application2.Credit String mee too!" file ... +# +# Note the quotes. Multiple -m and -M options are allowed and can be combined. +# +# Command file format +# ------------------- +# Empty lines and lines starting with # are ignored +# Each remaining line is a command. The format for command lines is +# [[] ] +# cmd = set|add|del +# set will set the value of an existing tag of the given key or add a tag +# add will add a tag (unless the key is a non-repeatable Iptc key) +# del will delete a tag +# key = Exiv2 Exif or Iptc key +# type = +# Byte|Ascii|Short|Long|Rational|Undefined|SShort|SLong|SRational|Comment +# for Exif keys, and +# String|Date|Time|Short|Undefined for Iptc keys +# The format for Iptc Date values is YYYY-MM-DD (year, month, day) and +# for Iptc Time values it is HH:MM:SS±HH:MM where HH:MM:SS refers to local +# hour, minute and seconds and ±HH:MM refers to hours and minutes ahead or +# behind Universal Coordinated Time. +# A default type is used if none is explicitly given. The default type is +# determined based on the key. +# value +# The remaining text on the line is the value. It can optionally be enclosed +# in double quotes ("value") +# + +add Iptc.Application2.Credit String "mee too! (1)" +add Iptc.Application2.Credit mee too! (2) +del Iptc.Application2.Headline + +set Iptc.Application2.Headline Filename + +add Exif.Image.WhitePoint Short 32 12 4 5 6 + +set Exif.Image.DateTime Ascii "Zwanzig nach fuenf" + set Exif.Image.Artist Ascii nobody + set Exif.Image.Artist "Vincent van Gogh" + +set Exif.Photo.UserComment Comment charset=Ascii This is an ASCII Exif comment diff --git a/vendor/exiv2-0.25/doc/cmdxmp.txt b/vendor/exiv2-0.25/doc/cmdxmp.txt new file mode 100644 index 0000000..313f8ac --- /dev/null +++ b/vendor/exiv2-0.25/doc/cmdxmp.txt @@ -0,0 +1,85 @@ +# Sample Exiv2 command file for XMP tags +# -------------------------------------- + +# Set basic properties. Exiv2 uses the value type of the XMP specification +# for the property, if it is not specified. The default XMP value type +# for unknown properties is a simple text value. + +# A simple text property. +set Xmp.dc.source xmpsample.cpp + +# An array item (unordered array). +set Xmp.dc.subject "Palmtree" + +# Add a 2nd array item +set Xmp.dc.subject "Rubbertree" + +# A language alternative (without a default) +set Xmp.dc.title lang=en-US Sunset on the beach +set Xmp.dc.title lang=de-DE Sonnenuntergang am Strand + +# Any properties can be set provided the namespace is known. +set Xmp.dc.one -1 +set Xmp.dc.two 3.1415 +set Xmp.dc.three 5/7 +set Xmp.dc.four 255 +set Xmp.dc.five 256 +set Xmp.dc.six false +set Xmp.dc.seven Seven + +# The value type can be specified. Exiv2 has support for a limited number +# of specific XMP types with built-in types: The basic XmpText, array +# types XmpAlt (alternative array), XmpBag (unordered array), XmpSeq +# (ordered array) and language alternatives LangAlt. + +# Simple text property with explicitly specified value type +set Xmp.dc.format XmpText "image/jpeg" + +# An ordered array +set Xmp.dc.creator XmpSeq "1) The first creator" +set Xmp.dc.creator "2) The second creator" +set Xmp.dc.creator "3) And another one" + +# A language alternative. The default entry of a langauge alternative +# doesn't need a language qualifier. +set Xmp.dc.description LangAlt lang=de-DE Hallo, Welt +set Xmp.dc.description LangAlt Hello, World + +# According to the XMP specification, Xmp.tiff.ImageDescription is an +# alias for Xmp.dc.description. Exiv2 treats an alias just like any +# other property. +set Xmp.tiff.ImageDescription TIFF image description +set Xmp.tiff.ImageDescription lang=de-DE TIFF Bildbeschreibung + +# Register a namespace which Exiv2 doesn't know yet with a prefix. +reg ns myNamespace/ + +# Add a property in the new custom namespace. +set Xmp.ns.myProperty myValue + +# There are no built-in Exiv2 value types for structures, qualifiers and +# nested types. However, these can be added by using an XmpText value and a +# path as the key. + +# Add a structure +set Xmp.xmpDM.videoFrameSize/stDim:w 16 +set Xmp.xmpDM.videoFrameSize/stDim:h 9 +set Xmp.xmpDM.videoFrameSize/stDim:unit inch + +# Add an element with a qualifier (using the namespace registered earlier) +set Xmp.dc.publisher James Bond +set Xmp.dc.publisher[1]/?ns:role secret agent + +# Add a qualifer to an array element of Xmp.dc.creator (added above) +set Xmp.dc.creator[2]/?ns:role programmer + +# Add an array of structures. First set a text property with just the +# array type. (Note: this is not the same as creating an XmpBag property.) +set Xmp.xmpBJ.JobRef XmpText type=Bag + +# Then set the array items. Each of them is a structure with two elements. +set Xmp.xmpBJ.JobRef[1]/stJob:name XmpText Birthday party +set Xmp.xmpBJ.JobRef[1]/stJob:role XmpText Photographer + +set Xmp.xmpBJ.JobRef[2]/stJob:name Wedding ceremony +set Xmp.xmpBJ.JobRef[2]/stJob:role Best man diff --git a/vendor/exiv2-0.25/doc/include/ascending.png b/vendor/exiv2-0.25/doc/include/ascending.png new file mode 100644 index 0000000000000000000000000000000000000000..c82b76ffe2c9d41a2f38a1c1115013cc0852f522 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3-ps+W+JLDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XI0Jk_Tw7XN{{R0EFVdQ&MBb@01yl}4*&oF literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/doc/include/blank.png b/vendor/exiv2-0.25/doc/include/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..cee9cd37a10ebe8d7fe6a6ed0d8d74a2889f6e9f GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv*$P6UUaa~gcQtTz3zOL*Scz7A*wL3%Pb^(Pr z3p^r=85p=efH0%e8j~47LAC&&5LY1m|NsA`H|O64vY1MO{DS{8Jl$^K1?2I2x;TbZ j+)DoO|34!$s|3ToYTbu_uiJV9r5HS2{an^LB{Ts5Dp4nx literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/doc/include/descending.png b/vendor/exiv2-0.25/doc/include/descending.png new file mode 100644 index 0000000000000000000000000000000000000000..4accf927bed9f998040ada65a35695bb758c78f1 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^96-#@!3-ps+W+JLDVB6cUq=Rp^(V|(yIunMk|nMY zCBgY=CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5XI0Jk_T>t<7-_p_onv&0MrCXRCq913h|0^A-< nECO>F1soiX9N|!6VB%rmQep^;zw7l7Xas|&tDnm{r-UW|t_U_c literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/doc/include/exiv2-components.png b/vendor/exiv2-0.25/doc/include/exiv2-components.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb7ae7064c4815d3a948c51f946787b1b836de5 GIT binary patch literal 6232 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 { + width: 100%; +} + +/* -------------------------------------------------------------------------- */ +.ParamTable { + text-align: right; +} + +.ParamTable td.Desc { + font-weight: bold; + text-align: right; +} + +/* -------------------------------------------------------------------------- */ +.ReportTable { + font: Icon; + width: 100%; + border: 1px Solid ThreeDShadow; + background: Window; + color: WindowText; + border-spacing: 0px; +} + +.ReportTable thead { + background: ButtonFace; + font-weight: bold; +} + +.ReportTable th { + border: 1px solid; + border-color: ButtonHighlight ButtonShadow + ButtonShadow ButtonHighlight; + cursor: default; + text-align: center; + padding: 1px 1px 1px 1px; +} + +.ReportTable th:active { + border-color: ButtonShadow ButtonHighlight + ButtonHighlight ButtonShadow; + padding: 1px 1px 1px 1px; +} + +.ReportTable tbody tr.OddRow { + background: #FFFFFF +} + +.ReportTable tbody tr.EvenRow { + background: #CCDBEA +} + +.ReportTable tfoot { + background: #FFFFFF; + font-weight: bold; +} + +.ReportTable tfoot tr { + border: 1px Solid ThreeDShadow; +} + +.ReportTable>td { + padding: 2px 5px; +} + +.ReportTable td.Total { + text-align: right; +} + +/* -------------------------------------------------------------------------- */ +.SortArrow { + width: 11px; + height: 11px; + background-position: center center; + background-repeat: no-repeat; + margin: 0 2px; +} + +.SortArrow.descending { + background-image: url("descending.png"); /* relative to this css file */ +} + +.SortArrow.ascending { + background-image: url("ascending.png"); /* relative to this css file */ +} diff --git a/vendor/exiv2-0.25/doc/include/sortabletable.js b/vendor/exiv2-0.25/doc/include/sortabletable.js new file mode 100644 index 0000000..4b877aa --- /dev/null +++ b/vendor/exiv2-0.25/doc/include/sortabletable.js @@ -0,0 +1,356 @@ +/*----------------------------------------------------------------------------\ +| Sortable Table 1.03 | +|-----------------------------------------------------------------------------| +| Created by Erik Arvidsson | +| (http://webfx.eae.net/contact.html#erik) | +| For WebFX (http://webfx.eae.net/) | +|-----------------------------------------------------------------------------| +| A DOM 1 based script that allows an ordinary HTML table to be sortable. | +|-----------------------------------------------------------------------------| +| Copyright (c) 1998 - 2002 Erik Arvidsson | +|-----------------------------------------------------------------------------| +| This software is provided "as is", without warranty of any kind, express or | +| implied, including but not limited to the warranties of merchantability, | +| fitness for a particular purpose and noninfringement. In no event shall the | +| authors or copyright holders be liable for any claim, damages or other | +| liability, whether in an action of contract, tort or otherwise, arising | +| from, out of or in connection with the software or the use or other | +| dealings in the software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| This software is available under the three different licenses mentioned | +| below. To use this software you must chose, and qualify, for one of those. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Non-Commercial License http://webfx.eae.net/license.html | +| Permits anyone the right to use the software in a non-commercial context | +| free of charge. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Commercial license http://webfx.eae.net/commercial.html | +| Permits the license holder the right to use the software in a commercial | +| context. Such license must be specifically obtained, however it's valid for | +| any number of implementations of the licensed software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | +| Permits anyone the right to use and modify the software without limitations | +| as long as proper credits are given and the original and modified source | +| code are included. Requires that the final product, software derivate from | +| the original source or any software utilizing a GPL component, such as | +| this, is also licensed under the GPL license. | +|-----------------------------------------------------------------------------| +| 2003-01-10 | First version | +| 2003-01-19 | Minor changes to the date parsing | +| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) | +| 2003-02-01 | Sloppy typo like error fixed in getInnerText | +|-----------------------------------------------------------------------------| +| Created 2003-01-10 | All changes are in the log above. | Updated 2003-02-01 | +\----------------------------------------------------------------------------*/ + +/* + Changes made (ahu): + + Support header TH element (headerOnclick) + + Added support for a TD attribute 'sortValue' (getRowValue): + If it is there, use its value for sorting instead of the cell content. + This allows sorting by a value that differs from what is seen on the + screen. As a simple example, consider sorting a column containing + formatted numbers: 1,000.00 + + + 15-May 2004, ahu: changed default sort order (on the first click) to + ascending (SortableTable.prototype.sort) + + ToDo: + - Allow for different Date formats +*/ + +function SortableTable(oTable, oSortTypes) { + + this.element = oTable; + this.tHead = oTable.tHead; + this.tBody = oTable.tBodies[0]; + this.document = oTable.ownerDocument || oTable.document; + + this.sortColumn = null; + this.descending = null; + + var oThis = this; + this._headerOnclick = function (e) { + oThis.headerOnclick(e); + }; + + + // only IE needs this + var win = this.document.defaultView || this.document.parentWindow; + this._onunload = function () { + oThis.destroy(); + }; + if (win && typeof win.attachEvent != "undefined") { + win.attachEvent("onunload", this._onunload); + } + + this.initHeader(oSortTypes || []); +} + +SortableTable.gecko = navigator.product == "Gecko"; +SortableTable.msie = /msie/i.test(navigator.userAgent); +// Mozilla is faster when doing the DOM manipulations on +// an orphaned element. MSIE is not +SortableTable.removeBeforeSort = SortableTable.gecko; + +SortableTable.prototype.onsort = function () {}; + +// adds arrow containers and events +// also binds sort type to the header cells so that reordering columns does +// not break the sort types +SortableTable.prototype.initHeader = function (oSortTypes) { + var cells = this.tHead.rows[0].cells; + var l = cells.length; + var img, c; + for (var i = 0; i < l; i++) { + c = cells[i]; + img = this.document.createElement("IMG"); + img.src = "../include/blank.png"; // relative to the file that uses this + c.appendChild(img); + if (oSortTypes[i] != null) { + c._sortType = oSortTypes[i]; + } + if (typeof c.addEventListener != "undefined") + c.addEventListener("click", this._headerOnclick, false); + else if (typeof c.attachEvent != "undefined") + c.attachEvent("onclick", this._headerOnclick); + } + this.updateHeaderArrows(); +}; + +// remove arrows and events +SortableTable.prototype.uninitHeader = function () { + var cells = this.tHead.rows[0].cells; + var l = cells.length; + var c; + for (var i = 0; i < l; i++) { + c = cells[i]; + c.removeChild(c.lastChild); + if (typeof c.removeEventListener != "undefined") + c.removeEventListener("click", this._headerOnclick, false); + else if (typeof c.detachEvent != "undefined") + c.detachEvent("onclick", this._headerOnclick); + } +}; + +SortableTable.prototype.updateHeaderArrows = function () { + var cells = this.tHead.rows[0].cells; + var l = cells.length; + var img; + for (var i = 0; i < l; i++) { + img = cells[i].lastChild; + if (i == this.sortColumn) + img.className = "SortArrow " + (this.descending ? "descending" : "ascending"); + else + img.className = "SortArrow"; + } +}; + +SortableTable.prototype.headerOnclick = function (e) { + // find TD or TH element + var el = e.target || e.srcElement; + while (el.tagName != "TD" && el.tagName != "TH") + el = el.parentNode; + + this.sort(el.cellIndex); +}; + +SortableTable.prototype.getSortType = function (nColumn) { + var cell = this.tHead.rows[0].cells[nColumn]; + var val = cell._sortType; + if (val != "") + return val; + return "String"; +}; + +// only nColumn is required +// if bDescending is left out the old value is taken into account +// if sSortType is left out the sort type is found from the sortTypes array + +SortableTable.prototype.sort = function (nColumn, bDescending, sSortType) { + if (sSortType == null) + sSortType = this.getSortType(nColumn); + + // exit if None + if (sSortType == "None") + return; + + if (bDescending == null) { + if (this.sortColumn != nColumn) + // 15-May 2004, ahu: change to false for ascending + this.descending = false; + else + this.descending = !this.descending; + } + + this.sortColumn = nColumn; + + if (typeof this.onbeforesort == "function") + this.onbeforesort(); + + var f = this.getSortFunction(sSortType, nColumn); + var a = this.getCache(sSortType, nColumn); + var tBody = this.tBody; + + a.sort(f); + + if (this.descending) + a.reverse(); + + if (SortableTable.removeBeforeSort) { + // remove from doc + var nextSibling = tBody.nextSibling; + var p = tBody.parentNode; + p.removeChild(tBody); + } + + // insert in the new order + var l = a.length; + for (var i = 0; i < l; i++) + tBody.appendChild(a[i].element); + + if (SortableTable.removeBeforeSort) { + // insert into doc + p.insertBefore(tBody, nextSibling); + } + + this.updateHeaderArrows(); + + this.destroyCache(a); + + if (typeof this.onsort == "function") + this.onsort(); +}; + +SortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) { + var oThis = this; + this._asyncsort = function () { + oThis.sort(nColumn, bDescending, sSortType); + }; + window.setTimeout(this._asyncsort, 1); +}; + +SortableTable.prototype.getCache = function (sType, nColumn) { + var rows = this.tBody.rows; + var l = rows.length; + var a = new Array(l); + var r; + for (var i = 0; i < l; i++) { + r = rows[i]; + a[i] = { + value: this.getRowValue(r, sType, nColumn), + element: r + }; + }; + return a; +}; + +SortableTable.prototype.destroyCache = function (oArray) { + var l = oArray.length; + for (var i = 0; i < l; i++) { + oArray[i].value = null; + oArray[i].element = null; + oArray[i] = null; + } +} + +SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) { + var c = oRow.cells[nColumn]; + var s = c.getAttribute("sortValue"); + if (!s) { + if (typeof c.innerText != "undefined") + s = c.innerText; + else + s = SortableTable.getInnerText(c); + } + return this.getValueFromString(s, sType); +}; + +SortableTable.getInnerText = function (oNode) { + var s = ""; + var cs = oNode.childNodes; + var l = cs.length; + for (var i = 0; i < l; i++) { + switch (cs[i].nodeType) { + case 1: //ELEMENT_NODE + s += SortableTable.getInnerText(cs[i]); + break; + case 3: //TEXT_NODE + s += cs[i].nodeValue; + break; + } + } + return s; +} + +SortableTable.prototype.getValueFromString = function (sText, sType) { + switch (sType) { + case "Number": + return Number(sText); + case "CaseInsensitiveString": + return sText.toUpperCase(); + case "Date": + var parts = sText.split("-"); + var d = new Date(0); + d.setFullYear(parts[0]); + d.setDate(parts[2]); + d.setMonth(parts[1] - 1); + return d.valueOf(); + } + return sText; +}; + +SortableTable.prototype.getSortFunction = function (sType, nColumn) { + return function compare(n1, n2) { + if (n1.value < n2.value) + return -1; + if (n2.value < n1.value) + return 1; + return 0; + }; +}; + +SortableTable.prototype.destroy = function () { + this.uninitHeader(); + var win = this.document.parentWindow; + if (win && typeof win.detachEvent != "undefined") { // only IE needs this + win.detachEvent("onunload", this._onunload); + } + this._onunload = null; + this.element = null; + this.tHead = null; + this.tBody = null; + this.document = null; + this._headerOnclick = null; + this.sortTypes = null; + this._asyncsort = null; + this.onsort = null; +}; + +/* -------------------------------------------------------------------------- */ + +function addClassName(el, sClassName) { + var s = el.className; + var p = s.split(" "); + var l = p.length; + for (var i = 0; i < l; i++) { + if (p[i] == sClassName) + return; + } + p[p.length] = sClassName; + el.className = p.join(" "); +} + +function removeClassName(el, sClassName) { + var s = el.className; + var p = s.split(" "); + var np = []; + var l = p.length; + var j = 0; + for (var i = 0; i < l; i++) { + if (p[i] != sClassName) + np[j++] = p[i]; + } + el.className = np.join(" "); +} diff --git a/vendor/exiv2-0.25/doc/index.html b/vendor/exiv2-0.25/doc/index.html new file mode 100644 index 0000000..0f2a1a3 --- /dev/null +++ b/vendor/exiv2-0.25/doc/index.html @@ -0,0 +1,11 @@ + + + + Exiv2 - Exif and Iptc metadata manipulation library and tools + + + + +

Click here to continue if you see this page for more than a moment...

+ + diff --git a/vendor/exiv2-0.25/doc/templates/Makefile b/vendor/exiv2-0.25/doc/templates/Makefile new file mode 100644 index 0000000..ec39085 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/Makefile @@ -0,0 +1,206 @@ +# ************************************************************* -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile +# Version: $Rev: 3777 $ +# Author(s): Andreas Huggel (ahu) +# History: 28-May-05, ahu: created +# +# Description: +# Simple Makefile to create html documentation from templates. Requires +# some special tools (awk, python, xsltproc) but really only needs to +# be used to update the documentation after changing Exiv2 tags in the +# source code. +# +# Restrictions: +# Only tested with GNU make. +# + +TABLES = Exif \ + Canon \ + CanonCs \ + CanonSi \ + CanonCf \ + CanonPi \ + CanonFi \ + CanonPa \ + CanonPr \ + Fujifilm \ + Minolta \ + MinoltaCsNew \ + MinoltaCs5D \ + MinoltaCs7D \ + Nikon1 \ + Nikon2 \ + Nikon3 \ + NikonVr \ + NikonPc \ + NikonWt \ + NikonIi \ + NikonAf \ + NikonAf2 \ + NikonAFT \ + NikonFi \ + NikonMe \ + NikonFl1 \ + NikonFl2 \ + NikonFl3 \ + NikonSiD80 \ + NikonSiD40 \ + NikonSiD300a \ + NikonSiD300b \ + NikonSi01xx \ + NikonCb1 \ + NikonCb2 \ + NikonCb2a \ + NikonCb2b \ + NikonCb3 \ + NikonCb4 \ + NikonLd1 \ + NikonLd2 \ + NikonLd3 \ + Olympus \ + OlympusCs \ + OlympusEq \ + OlympusRd \ + OlympusRd2 \ + OlympusIp \ + OlympusFi \ + OlympusFe1 \ + OlympusRi \ + Panasonic \ + PanasonicRaw \ + Pentax \ + Samsung2 \ + SamsungPictureWizard \ + Sigma \ + Sony1 \ + SonyMinolta \ + Sony1Cs \ + Sony1Cs2 \ + Sony1MltCs7D \ + Sony1MltCsOld \ + Sony1MltCsA100 + +SCHEMA = xmp_dc \ + xmp_dwc \ + xmp_dcterms \ + xmp_xmp \ + xmp_xmpRights \ + xmp_xmpMM \ + xmp_xmpBJ \ + xmp_xmpTPg \ + xmp_xmpDM \ + xmp_pdf \ + xmp_photoshop \ + xmp_lr \ + xmp_crs \ + xmp_tiff \ + xmp_exif \ + xmp_aux \ + xmp_iptc \ + xmp_MicrosoftPhoto \ + xmp_acdsee \ + xmp_digiKam \ + xmp_kipi \ + xmp_iptcExt \ + xmp_plus \ + xmp_mediapro \ + xmp_expressionmedia \ + xmp_GPano \ + xmp_MP \ + xmp_MPRI \ + xmp_MPReg \ + xmp_mwg-rs \ + xmp_mwg-kw + +TAGLIST = ../../bin/taglist + +# ********************************************************************** +# ====================================================================== +# ********************************************************************** + +# Initialisations +SHELL = /bin/sh + +.SUFFIXES: + +# Default make target +all: tags + +.PHONY: tags mostlyclean clean distclean maintainer-clean + +tags: $(TABLES) Iptc $(SCHEMA) + @./gen.py *.html.in + +$(TABLES): $(TAGLIST) + @echo Generating $@ table... + @$(TAGLIST) $@ | sed -e"s//\>/g" | awk -f tags.awk > $@.xml + @xsltproc tags.xsl $@.xml > $@.tmp + @sed "s/report1/$@/" $@.tmp > __$@__ + @touch $@ + @rm -f $@.tmp + +Iptc: $(TAGLIST) + @echo Generating $@ table... + @$(TAGLIST) $@ | sed -e"s//\>/g" -e"s/�/\±/g" \ + | awk -f iptc.awk > $@.xml + @xsltproc iptc.xsl $@.xml > $@.tmp + @sed "s/report1/$@/g" $@.tmp > __$@__ + @touch $@ + @rm -f $@.tmp + +$(SCHEMA): $(TAGLIST) + @echo Generating $@ table... + @echo $@ | sed "s/xmp_//" | xargs $(TAGLIST) | sed -e"s//\>/g" | awk -f xmp.awk > $@.xml + @xsltproc xmp.xsl $@.xml > $@.tmp + @sed "s/report1/$@/" $@.tmp > __$@__ + @touch $@ + @rm -f $@.tmp + +$(TAGLIST): + $(error File $(TAGLIST) does not exist. Did you build the library and programs in the src/ directory?) + +mostlyclean: + rm -f *.xml + rm -f *.tmp + +clean: mostlyclean + rm -f $(TABLES:%=__%__) __Iptc__ + rm -f $(SCHEMA:%=__%__) + rm -f $(TABLES) $(SCHEMA) Iptc + rm -f *.html + +distclean: clean + rm -f *~ + +maintainer-clean: distclean diff --git a/vendor/exiv2-0.25/doc/templates/__CrwMapping__ b/vendor/exiv2-0.25/doc/templates/__CrwMapping__ new file mode 100644 index 0000000..5a83e70 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__CrwMapping__ @@ -0,0 +1,146 @@ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Exif KeyCRW TagCRW Directory
Mapped to the image comment0x08050x300a
Exif.Image.Make
+Exif.Image.Model
0x080a0x2807
Exif.Canon.FirmwareVersion0x080b0x3004
Exif.Canon.OwnerName0x08100x2807
Exif.Canon.ImageType0x08150x2804
Exif.Canon.0x00020x10290x300b
Exif.CanonCs2.*
+Exif.Photo.FNumber (not used on write)
+Exif.Photo.ExposureTime (not used on write)
0x102a0x300b
Exif.CanonCs.*0x102d0x300b
Exif.CanonCf.*0x10330x300b
Exif.CanonPi.*0x10380x300b
Exif.Canon.WhiteBalanceTable0x10a90x300b
Exif.Photo.ColorSpace0x10b40x300b
Exif.Canon.0x00b50x10b50x300b
Exif.Canon.0x00c00x10c00x300b
Exif.Canon.0x00c10x10c10x300b
Exif.Photo.SubjectDistance0x18070x3002
Exif.Canon.SerialNumber0x180b0x3004
Exif.Photo.DateTimeOriginal0x180e0x300a
Exif.Image.Orientation
+Exif.Photo.PixelXDimension
+Exif.Photo.PixelYDimension
0x18100x300a
Exif.Canon.ImageNumber0x18170x300a
Exif.Canon.0x00150x183b0x300b
Exif.Thumbnail.Compression
+Exif.Thumbnail.JPEGInterchangeFormat
+Exif.Thumbnail.JPEGInterchangeFormatLength
0x2008root
diff --git a/vendor/exiv2-0.25/doc/templates/__doctype__ b/vendor/exiv2-0.25/doc/templates/__doctype__ new file mode 100644 index 0000000..2ebb925 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__doctype__ @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/doc/templates/__header2__ b/vendor/exiv2-0.25/doc/templates/__header2__ new file mode 100644 index 0000000..4102cc2 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__header2__ @@ -0,0 +1,24 @@ + + Exiv2 - Exif and IPTC metadata library and tools + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/exiv2-0.25/doc/templates/__index1__ b/vendor/exiv2-0.25/doc/templates/__index1__ new file mode 100644 index 0000000..fde8e94 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__index1__ @@ -0,0 +1,10 @@ + + diff --git a/vendor/exiv2-0.25/doc/templates/__index2__ b/vendor/exiv2-0.25/doc/templates/__index2__ new file mode 100644 index 0000000..7511383 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__index2__ @@ -0,0 +1,79 @@ + + + + +
+ + + + + + + + + + + +
+ +

Exiv2 Tag Tables

diff --git a/vendor/exiv2-0.25/doc/templates/__index3__ b/vendor/exiv2-0.25/doc/templates/__index3__ new file mode 100644 index 0000000..bf765c3 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__index3__ @@ -0,0 +1,7 @@ +
+ +
+ +

Exiv2 supported Raw File Formats

diff --git a/vendor/exiv2-0.25/doc/templates/__intro__ b/vendor/exiv2-0.25/doc/templates/__intro__ new file mode 100644 index 0000000..e268c9b --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__intro__ @@ -0,0 +1,109 @@ +

Namespaces

+ +

The Exiv2 library is made up of all +elements defined in the Exiv2 +namespace.

+ +

Classes

+ +

The top-level class of the Exiv2 library is Exiv2::Image. Exiv2::Image +defines the interface to access image metadata. Derived from +Exiv2::Image are implementations for different image formats. Most +importantly, they contain the logic to read metadata from the image +into Exiv2 metadata containers and write it back to the image. +Most applications will use +Exiv2::ImageFactory +to access images in files or memory, in which case the image format +is transparent to them. The factory determines the image format from the +data (not the file extension) and creates an object of the corresponding +Image subclass.

+ +

Exif and IPTC metadata is manipulated through the classes +Exiv2::ExifData +and Exiv2::IptcData. +They hold a container of Exif and IPTC metadata, respectively, and define +related methods to access and manipulate the metadata. +
+Exif tag and IPTC dataset reference information for the standard tags +and datasets is available in the two static classes +Exiv2::ExifTags and +Exiv2::IptcDataSets. +
+The metadata containers hold objects derived from +Exiv2::Metadatum. +Interface class Exiv2::Metadatum defines methods to access the +information of one metadatum. It models the tag data as a key and +value pair. +The abstract base class +Exiv2::Key defines the +interface for a key. Concrete keys implement Exif and IPTC keys. +The abstract base class +Exiv2::Value defines +the interface to access tag information, from which concrete values are +derived. The actual value used in a metadatum depends on the type of +the Exif tag or IPTC dataset. It is usually determined when the Exif or +IPTC metadata is read from an image. It is also possible to manually create +a Value and together with a key add it to an ExifData or IptcData +container.

+ +The classes to access XMP metadata are +Exiv2::XmpData, +Exiv2::Xmpdatum +and Exiv2::XmpKey. +They work similar to the corresponding Exif and IPTC classes. +The property reference information is in +Exiv2::XmpProperties. +In addition to the expected new members, class +Exiv2::Image +now also has an interface to access the raw XMP packet. +
+All XMP value types are supported: Simple types, structures, +arrays, property qualifiers and language alternatives. +
+XMP properties are accessed through keys of the form +"Xmp.<Prefix>.<PropertyPath>", where <Prefix> is the preferred +(or rather, registered) prefix for a schema namespace and +<PropertyPath> is the path of the XMP node. In its most basic +form, to address simple properties, <PropertyPath> is the name +of the property. In general, <PropertyPath> can be used to +address any XMP node, including array items, structure fields +qualifiers and deeply nested properties. +
+Any properties in known namespaces are supported and additional +namespaces can be registered. +
+The specialized Exiv2 values +Exiv2::XmpTextValue, +Exiv2::XmpArrayValue +and Exiv2::LangAltValue are +provided to simplify the use of XMP properties. +
+Note: Unlike Exif and IPTC tags, XMP properties do not have +a tag number. + +

Examples

+ +

There are several simple examples that demonstrate the basic use of Exiv2 +functionality: Exifprint +shows how the Exif data of an image can be read and written to the screen. +Iptcprint is a similar +example to print IPTC data. +Addmoddel shows how to +add, modify and delete Exif metadata. +Exifcomment shows how to +set the exif comment of an image. +Xmpsample.cpp contains examples +of how to set various types of XMP properties. +
+For more real-world code have a look at the implementation of the +different actions of the Exiv2 utility (actions.cpp).

+ +

Makernotes

+ +

Exif Makernote data can be accessed through ExifData in the same +way as the standard Exif tags. In other words, for each entry of a +known Makernote, there is a corresponding Metadatum in the ExifData +container. Makernote taglists are available in classes +Exiv2::<Make>MakerNote (e.g., +Exiv2::CanonMakerNote.) diff --git a/vendor/exiv2-0.25/doc/templates/__maintitle__ b/vendor/exiv2-0.25/doc/templates/__maintitle__ new file mode 100644 index 0000000..7d763df --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__maintitle__ @@ -0,0 +1 @@ +

Exif and IPTC metadata library and tools

\ No newline at end of file diff --git a/vendor/exiv2-0.25/doc/templates/__makernotes__ b/vendor/exiv2-0.25/doc/templates/__makernotes__ new file mode 100644 index 0000000..2776fa2 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/__makernotes__ @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MakeFormatHeaderEndian 1)Offsets 2)RefRemarks
CanonIFDNone  [2]Some CR2 images have a non-zero next-IFD pointer
CasioIFD---[4]Not supported by Exiv2 yet
FUJIIFD, usually at offset 12Starts with the string "FUJI" + and a 4 byte pointer to the IFDLittle-endian (II)Relative to the beginning of the makernote[1]Exif data uses big-endian (MM) byte order
Minolta, KONICA MINOLTAIFDNone  [5]Camera settings tag is encoded in big-endian (MM) style, regardless of + the encoding style of the Exif data
NIKONIFDNone  [3]Models using this makernote include E990, D1
NIKONIFD, at offset 8"Nikon\0" followed by two bytes of unknown meaning  [1]Models using this makernote include E700, E800, E900, E900S, E910, E950
NIKONIFD, usually at offset 18"Nikon\0" followed by 4 bytes which look like a version code + and a TIFF headerFrom makernote TIFF headerRelative to the start of the makernote TIFF header Models using this makernote include E5400, SQ, D2H, D70, D100, D200. + Makernote IFD of the D200 has no next-IFD pointer. (Is this a bug?)
OLYMPUSIFD, at offset 8"OLYMP\0" followed by two bytes of unknown meaning  [1] 
OLYMPUSIFD, at offset 12"OLYMPUS\0II" followed by two bytes of unknown meaning Relative to the beginning of the makernote  
PanasonicIFD without a next-IFD pointer at offset 12"Panasonic\0\0\0"  [8] 
PENTAXIFD at offset 6"AOC\0" followed by two bytes of unknown meaning  [11] 
SAMSUNGIFDNone Relative to the beginning of the makernote  
SanyoIFD---[6]Not supported by Exiv2 yet
SIGMA, FOVEONIFD, at offset 10"SIGMA\0\0\0" or "FOVEON\0\0" followed by two bytes + of unknown meaning  [7] 
SONYIFD without a next-IFD pointer at offset 12"SONY DSC \0\0\0"   Seen in Jpeg images, e.g., from DSC-W7, DSC-R1
SONYIFDNone   Seen in SR2 images, e.g., from DSC-R1
+ + +

+ + 1) If not specified, the byte order of the Exif data is applicable.
+ 2) If not specified, offsets are relative to the start of the TIFF header. +
+

diff --git a/vendor/exiv2-0.25/doc/templates/crw-mapping.html.in b/vendor/exiv2-0.25/doc/templates/crw-mapping.html.in new file mode 100644 index 0000000..c92fd0c --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/crw-mapping.html.in @@ -0,0 +1,36 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index3__ +

Canon CRW files: Mapping of CIFF to Exif tags

+
+ +

CRW files are encoded in CIFF format. CIFF format consists of a +header and a hierarchy of directories and entries, similar to TIFF +(but easier to deal with). In Exiv2, there is no CRW or CIFF type of +metadata. Instead, known and suitable CIFF tags are mapped to Exif +metadata, but not all CIFF tags are mapped. Exiv2 reads Canon CRW +files, parses the CIFF structure and maps known and suitable tags to +Exif metadata. Writing to CRW files entails a reverse mapping from +Exif metadata to the CIFF tags. This way it is possible, e.g., to +adjust the date when the image was taken by reading the CRW file, +modifying Exif.Photo.DateTimeOriginal and writing the Exif data back +to a CRW file. Tags for which there is no mapping defined are ignored +during both, reading and writing.

+ +

Reference: The Canon RAW (CRW) File Format by Phil Harvey.

+ +

Exiv2 supports the mappings listed in the table below.

+

Click on a column header to sort the table.

+ +
+__CrwMapping__ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/exiv2.dot b/vendor/exiv2-0.25/doc/templates/exiv2.dot new file mode 100644 index 0000000..07b02b9 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/exiv2.dot @@ -0,0 +1,66 @@ +################################################################################ +# File : exiv2.dot +# Version : $Rev: 572 $ +# Author(s): Andreas Huggel (ahu) +# History : 18-Feb-04, ahu: created +# 19-Mar-05, ahu: updated after inside-out change +# +# Description: +# Dot file for a graph showing the component dependencies ("uses in the +# interface") of the Exiv2 library. +# Run the following command to get the image: +# $ dot -Tgif -oexiv2.gif exiv2.dot +################################################################################ + +digraph "Exiv2 component dependencies" { + + L1 [shape=plaintext] ; + L2 [shape=plaintext] ; + L3 [shape=plaintext] ; + L4 [shape=plaintext] ; + L5 [shape=plaintext] ; + L6 [shape=plaintext] ; + + "L6" -> "L5" -> "L4" -> "L3" -> "L2" -> "L1" [style=invis] ; + + "exif" [shape=box] ; + "iptc" [shape=box] ; + "metadatum" [shape=box] ; + "ifd" [shape=box] ; + "image" [shape=box] ; + "tags" [shape=box] ; + "datasets" [shape=box] ; + "value" [shape=box] ; + "types" [shape=box] ; + "error" [shape=box] ; + "makernote" [shape=box] ; + "basicio" [shape=box] ; + "*mn" [shape=box] ; + "jpgimage" [shape=box] ; + + clusterrank="local"; + "basicio" -> "error" + "basicio" -> "types" + "*mn" -> "makernote" + "*mn" -> "tags" + "datasets" -> "metadatum" + "exif" -> "ifd" + "exif" -> "tags" + "exif" -> "error" + "ifd" -> "types" + "image" -> "basicio" + "iptc" -> "datasets" + "iptc" -> "error" + "jpgimage" -> "exif" + "jpgimage" -> "image" + "jpgimage" -> "iptc" + "makernote" -> "ifd" + "metadatum" -> "value" + "tags" -> "metadatum" + "value" -> "types" + + { rank=same; L1 "types" } + { rank=same; L2 "value" "ifd" } + { rank=same; L5 "image" "iptc" } + +} diff --git a/vendor/exiv2-0.25/doc/templates/gen.py b/vendor/exiv2-0.25/doc/templates/gen.py new file mode 100755 index 0000000..afc390d --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/gen.py @@ -0,0 +1,57 @@ +#! /usr/bin/env python +# ---------------------------------------------------------------------- +# Settings +vardir = "." +date_format = "%d-%b-%Y" + +# ---------------------------------------------------------------------- +# functions +def usage(): + print("""Usage: gen.py file.in [...] + Substitute placeholders in input files with content + """) + +def gen_html(file): + """Replace variables in the file with their content""" + text = open(file).read() + for var in vars: + vartext = open(vardir + "/" + var).read() + text = text.replace(var, vartext) + text = last_modified(text) + return text + +def last_modified(text): + """Substitute variable __last_modified__ with the current date""" + date = time.strftime(date_format, time.localtime()) + text = text.replace("__last_modified__", date) + return text + +# ---------------------------------------------------------------------- +# main +import sys +import os +import re +import time + +# Check command line arguments +if len(sys.argv) == 1: + usage() + sys.exit() + +# The input files from the command line +input = sys.argv[1:] + +# Get a list of all variables (files in the form __*__) from vardir +vars = os.listdir(vardir) +for i in range(len(vars)-1, -1, -1): + if re.match("^__.*__$", vars[i]): continue + del vars[i] +vars.sort() + +# Substitute variables in all input files +print("Substituting variables {0}".format(vars)) +for file in input: + print("Processing {0}...".format(file)) + text = gen_html(file) + file = file.replace(".in", "") + open(file, 'w').write(text) diff --git a/vendor/exiv2-0.25/doc/templates/getting-started.html.in b/vendor/exiv2-0.25/doc/templates/getting-started.html.in new file mode 100644 index 0000000..24dee47 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/getting-started.html.in @@ -0,0 +1,17 @@ +__doctype__ + +__header2__ + + +
+__index1__ + +

Getting started

+ +__intro__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/gpl-license.html.in b/vendor/exiv2-0.25/doc/templates/gpl-license.html.in new file mode 100644 index 0000000..7677fa5 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/gpl-license.html.in @@ -0,0 +1,389 @@ + + + + GNU General Public License + + + + + + + + + + + + + +
+__index1__ + +

GNU General Public License

+

Version 2, June 1991

+ +

Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
+Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed.

+ +

Preamble

+ +

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too.

+ +

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things.

+ +

To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it.

+ +

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights.

+ +

We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software.

+ +

Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations.

+ +

Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all.

+ +

The precise terms and conditions for copying, distribution and +modification follow.

+ +

GNU General Public License
+Terms And Conditions For Copying, Distribution And Modification

+ +

0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you".

+ +

Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does.

+ +

1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program.

+ +

You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee.

+ +

2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions:

+ +
    +
  1. +

    You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change.

    +
  2. + +
  3. +

    You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License.

    +
  4. + +
  5. +

    If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.)

    +
  6. +
+ +

These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it.

+ +

Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program.

+ +

In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License.

+ +

3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following:

+ +
    +
  1. +

    Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or,

    +
  2. + +
  3. +

    Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or,

    +
  4. + +
  5. +

    Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.)

    +
  6. +
+ +

The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable.

+ +

If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code.

+ +

4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance.

+ +

5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it.

+ +

6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License.

+ +

7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program.

+ +

If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances.

+ +

It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice.

+ +

This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License.

+ +

8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License.

+ +

9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns.

+ +

Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation.

+ +

10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally.

+ +

No Warranty

+ +

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION.

+ +

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES.

+ +
END OF TERMS AND CONDITIONS
+ +
+ +

How to Apply These Terms to Your New Programs

+ +

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms.

+ + +

To do so, attach the following notices to the program. It is +safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found.

+ + +
    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ +

Also add information on how to contact you by electronic and paper +mail.

+ +

If the program is interactive, make it output a short notice like this +when it starts in an interactive mode:

+ +
    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+ +

The hypothetical commands "show w" and "show c" should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than "show w" and "show c"; they could even be +mouse-clicks or menu items--whatever suits your program.

+ +

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names:

+ +
  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+ +

This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License.

+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/iptc.awk b/vendor/exiv2-0.25/doc/templates/iptc.awk new file mode 100644 index 0000000..95584df --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/iptc.awk @@ -0,0 +1,48 @@ +################################################################################ +# File : iptc.awk +# Version : $Rev: 570 $ +# Author(s): Andreas Huggel (ahu) +# History : 07-Feb-04, ahu: created +# +# Description: +# Awk script to convert a taglist to XML format used in the documentation. +# $ taglist [SectionName] | awk -f iptc.awk > iptc.xml +################################################################################ + +BEGIN { + FS = ", " + print ""; + print ""; + + print "" + print "
" + print "Iptc datasets defined in Exiv2" + print "" + print "

Datasets are defined according to the specification of the Iptc " + print "Information Interchange Model (IIM).

" + print "

Click on a column header to sort the table.

" + print "
" + print "
" + print "" +} + +{ + print " "; + print " " $1 "" + print " " $2 "" + print " " $3 "" + print " " $4 "" + print " " $5 "" + print " " $6 "" + print " " $7 "" + print " " $8 "" + print " " $9 "" + print " " $10 "" + print " " $11 "" + print " "; +} + +END { + print "" + print "
" +} diff --git a/vendor/exiv2-0.25/doc/templates/iptc.xsl b/vendor/exiv2-0.25/doc/templates/iptc.xsl new file mode 100644 index 0000000..290365c --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/iptc.xsl @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + +

+ +
+ + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + Tag (hex) + Tag (dec) + Key + Type + M. + R. + Min. bytes + Max. bytes + Tag description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yes + + + No + + + + + + + + + + Yes + + + No + + + + + + + + + + + + + + + + + + +
diff --git a/vendor/exiv2-0.25/doc/templates/makernote.html.in b/vendor/exiv2-0.25/doc/templates/makernote.html.in new file mode 100644 index 0000000..c363885 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/makernote.html.in @@ -0,0 +1,86 @@ +__doctype__ + +__header2__ + + +
+ +__index1__ + +

MakerNote Formats and Specifications

+ +

+The Makernote is tag 0x927c in the Exif IFD. According to the + +Exif 2.2 standard, the makernote is "a tag for manufacturers of +Exif writers to record any desired information. The contents are up to +the manufacturer, but this tag should not be used for any other than +its intended purpose."

+ +

Most vendors do not publish their makernote specifications. Most of the +specifications available on the Internet +were reverse-engineered. Judging from the size of many makernote +fields, manufacturers store a lot of information there and from the +available specifications, some of this is certainly quite +interesting. For example, makernotes may contain information about the +lens used, contrast, saturation and sharpness settings, image quality +settings, etc. For some more advanced camera settings, the Exif +standard doesn't define a standard tag, so camera vendors have to +resort to using the makernote. Unfortunately, in some cases, camera +vendors store important information only in proprietary makernote +fields, instead of using available Exif standard tags. The most +infamous example for this is Nikon's ISO settings tag.

+ +

Most vendors write the makernote in TIFF format, i.e., in the same +format as the rest of the Exif information is encoded. This appears to +be a sensible thing at first glance. Unfortunately, in general it +means that any change of an Exif tag, which moves the +makernote field, will corrupt it. It is an inherent problem of the +TIFF format that a writer must know the format and all extensions +used, in order to be able to write changes correctly; unknown tags are +potentially corrupted when they are moved (rearranged). But since +makernotes are usually proprietary, Exif writers often don't know +these details. The reason to write to the Exif data could be as simple +as to add copyright information, an Exif comment, etc. Some camera +manufacturers seem to have recognized this problem and now use a +modified TIFF format with offsets relative to somewhere at the +beginning of the makernote field for the makernote IFD to address the +issue.

+ +

The following table summarizes the structures of the makernote +field used by some vendors. Please let me know if you have additional +information.

+ +__makernotes__ + +

Exif.org has another table with similar + info and sample pictures: Digital + Camera Sample Images. According to this source, (at least some) Ricoh and + Kodak cameras do not write the makernote in IFD format.

+

References

+

[1] Exif + file format by TsuruZoh Tachibanaya
+ [2] EXIF Makernote + of Canon by David Burren
+ [3] Makernote + EXIF Tag of the Nikon 990 by Max Lyons
+ [4] "Makernote" + Exif tag of Casio by Eckhard Henkel
+ [5] Minolta + MakerNote by Dalibor Jelinek
+ [6] Sanyo + MakerNote by John Hawkins
+ [7] + SIGMA and FOVEON EXIF MakerNote Documentation by Foveon
+ [8] Panasonic + MakerNote Information by Tom Hughes
+ [9] + Various Makernote specifications from the + PHP JPEG Metadata Toolkit by Evan Hunter
+ [10] ExifTool, the most complete and up-to-date tool for reading and writing meta information in image files, by Phil Harvey
+ [11] EXIF: Pentax type3 Makernotes by Ger Vermeulen

+
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-canon.html.in b/vendor/exiv2-0.25/doc/templates/tags-canon.html.in new file mode 100644 index 0000000..629b5a1 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-canon.html.in @@ -0,0 +1,56 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Canon MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Canon cameras. These tags are defined by Exiv2 in accordance with [2].

+

Click on a column header to sort the table.

+
+__Canon__ +
+ +

Canon Camera Settings Tags

+

Click on a column header to sort the table.

+__CanonCs__ +
+ +

Canon Shot Info Tags

+

Click on a column header to sort the table.

+__CanonSi__ +
+ +

Canon Panorama Tags

+

Click on a column header to sort the table.

+__CanonPa__ +
+ +

Canon Custom Function Tags

+

Click on a column header to sort the table.

+__CanonCf__ +
+ +

Canon Picture Info Tags

+

Click on a column header to sort the table.

+__CanonPi__ +
+ +

Canon File Info Tags

+

Click on a column header to sort the table.

+__CanonFi__ +
+ +

Canon Processing Info Tags

+

Click on a column header to sort the table.

+__CanonPr__ +
+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-exif.html.in b/vendor/exiv2-0.25/doc/templates/tags-exif.html.in new file mode 100644 index 0000000..87bbbd9 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-exif.html.in @@ -0,0 +1,20 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Exif Tags supported by Exiv2

+
+

These are the Exif tags as defined in the Exif 2.2 standard.

+

IFD1 tags are not listed seperately. All IFD0 tags may also be present in IFD1, according to the standard. The second part of the Exiv2 key of an IFD1 tag is Thumbnail (instead of Image), the other two parts of the key are the same as for IFD0 tags.

+

Click on a column header to sort the table.

+
+__Exif__ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-fujifilm.html.in b/vendor/exiv2-0.25/doc/templates/tags-fujifilm.html.in new file mode 100644 index 0000000..355c92c --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-fujifilm.html.in @@ -0,0 +1,19 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Fujifilm MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Fujifilm cameras. These tags are defined by Exiv2 in accordance with [1].

+

Click on a column header to sort the table.

+
+__Fujifilm__ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-iptc.html.in b/vendor/exiv2-0.25/doc/templates/tags-iptc.html.in new file mode 100644 index 0000000..64757c1 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-iptc.html.in @@ -0,0 +1,21 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

IPTC datasets defined in Exiv2

+ +

Datasets are defined according to the specification of the IPTC +Information Interchange Model (IIM).

+ +

Click on a column header to sort the table.

+ +__Iptc__ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-minolta.html.in b/vendor/exiv2-0.25/doc/templates/tags-minolta.html.in new file mode 100644 index 0000000..c36a63c --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-minolta.html.in @@ -0,0 +1,38 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Minolta MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Minolta cameras. +The Exiv2 tags are based on [5], [9] and [10]. +

+

Click on a column header to sort the table.

+
+__Minolta__ +
+ +

Minolta Camera Settings (tags from older and newer cameras)

+

Click on a column header to sort the table.

+__MinoltaCsNew__ +
+ +

Minolta 5D Camera Settings

+

Click on a column header to sort the table.

+__MinoltaCs5D__ +
+ +

Minolta 7D Camera Settings

+

Click on a column header to sort the table.

+__MinoltaCs7D__ +
+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-nikon.html.in b/vendor/exiv2-0.25/doc/templates/tags-nikon.html.in new file mode 100644 index 0000000..f7559e4 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-nikon.html.in @@ -0,0 +1,168 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

There are three different Nikon MakerNote formats. Exiv2 will automatically detect the correct format for the Exif data from a particular Nikon camera model.

+

Nikon (format 1) MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Nikon cameras, such as the E990 and D1. These tags are defined by Exiv2 in accordance with [3].

+

Click on a column header to sort the table.

+
+__Nikon1__ +
+ +

Nikon (format 2) MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Nikon cameras, including the E700, E800, E900, E900S, E910, E950. These tags are defined by Exiv2 in accordance with [1].

+

Click on a column header to sort the table.

+
+__Nikon2__ +
+ +

Nikon (format 3) MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with newer Nikon cameras, e.g., the E5400, SQ, D2H, D70.

+

Click on a column header to sort the table.

+
+__Nikon3__ +
+ +

Nikon Vibration Reduction Tags

+

Click on a column header to sort the table.

+__NikonVr__ +
+ +

Nikon Picture Control Tags

+

Click on a column header to sort the table.

+__NikonPc__ +
+ +

Nikon World Time Tags

+

Click on a column header to sort the table.

+__NikonWt__ +
+ +

Nikon ISO Info Tags

+

Click on a column header to sort the table.

+__NikonIi__ +
+ +

Nikon Auto Focus Tags

+

Click on a column header to sort the table.

+__NikonAf__ +
+ +

Nikon Auto Focus 2 Tags

+

Click on a column header to sort the table.

+__NikonAf2__ +
+ +

Nikon AF Fine Tune Tags

+

Click on a column header to sort the table.

+__NikonAFT__ +
+ +

Nikon File Info Tags

+

Click on a column header to sort the table.

+__NikonFi__ +
+ +

Nikon Multi Exposure Tags

+

Click on a column header to sort the table.

+__NikonMe__ +
+ +

Nikon Flash Info 1 Tags

+

Click on a column header to sort the table.

+__NikonFl1__ +
+ +

Nikon Flash Info 2 Tags

+

Click on a column header to sort the table.

+__NikonFl2__ +
+ +

Nikon Flash Info 3 Tags

+

Click on a column header to sort the table.

+__NikonFl3__ +
+ +

Nikon Shot Info D80 Tags

+

Click on a column header to sort the table.

+__NikonSiD80__ +
+ +

Nikon Shot Info D40 Tags

+

Click on a column header to sort the table.

+__NikonSiD40__ +
+ +

Nikon Shot Info D300a Tags

+

Click on a column header to sort the table.

+__NikonSiD300a__ +
+ +

Nikon Shot Info D300b Tags

+

Click on a column header to sort the table.

+__NikonSiD300b__ +
+ +

Nikon Shot Info Tags

+

Click on a column header to sort the table.

+__NikonSi01xx__ +
+ +

Nikon Color Balance 1 Tags

+

Click on a column header to sort the table.

+__NikonCb1__ +
+ +

Nikon Color Balance 2 Tags

+

Click on a column header to sort the table.

+__NikonCb2__ +
+ +

Nikon Color Balance 2a Tags

+

Click on a column header to sort the table.

+__NikonCb2a__ +
+ +

Nikon Color Balance 2b Tags

+

Click on a column header to sort the table.

+__NikonCb2b__ +
+ +

Nikon Color Balance 3 Tags

+

Click on a column header to sort the table.

+__NikonCb3__ +
+ +

Nikon Color Balance 4 Tags

+

Click on a column header to sort the table.

+__NikonCb4__ +
+ +

Nikon Lens Data 1 Tags

+

Click on a column header to sort the table.

+__NikonLd1__ +
+ +

Nikon Lens Data 2 Tags

+

Click on a column header to sort the table.

+__NikonLd2__ +
+ +

Nikon Lens Data 3 Tags

+

Click on a column header to sort the table.

+__NikonLd3__ +
+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-olympus.html.in b/vendor/exiv2-0.25/doc/templates/tags-olympus.html.in new file mode 100644 index 0000000..cd27107 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-olympus.html.in @@ -0,0 +1,61 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Olympus MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Olympus cameras.

+

Click on a column header to sort the table.

+
+__Olympus__ +
+ +

Olympus Camera Settings Tags

+

Click on a column header to sort the table.

+__OlympusCs__ +
+ +

Olympus Equipment Tags

+

Click on a column header to sort the table.

+__OlympusEq__ +
+ +

Olympus Raw Development Tags

+

Click on a column header to sort the table.

+__OlympusRd__ +
+ +

Olympus Raw Development 2 Tags

+

Click on a column header to sort the table.

+__OlympusRd2__ +
+ +

Olympus Image Processing Tags

+

Click on a column header to sort the table.

+__OlympusIp__ +
+ +

Olympus Focus Info Tags

+

Click on a column header to sort the table.

+__OlympusFi__ +
+ +

Olympus FE Tags

+

Click on a column header to sort the table.

+__OlympusFe1__ +
+ +

Olympus Raw Info Tags

+

Click on a column header to sort the table.

+__OlympusRi__ +
+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-panasonic.html.in b/vendor/exiv2-0.25/doc/templates/tags-panasonic.html.in new file mode 100644 index 0000000..149c51a --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-panasonic.html.in @@ -0,0 +1,26 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Panasonic MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Panasonic cameras.

+

Click on a column header to sort the table.

+
+__Panasonic__ +
+

Panasonic RAW Tags defined in Exiv2

+
+

Tags found in IFD0 of Panasonic RAW and RW2 images.

+

Click on a column header to sort the table.

+
+__PanasonicRaw__ + + + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-pentax.html.in b/vendor/exiv2-0.25/doc/templates/tags-pentax.html.in new file mode 100644 index 0000000..d9712b5 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-pentax.html.in @@ -0,0 +1,19 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Pentax MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Pentax cameras.

+

Click on a column header to sort the table.

+
+__Pentax__ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-samsung.html.in b/vendor/exiv2-0.25/doc/templates/tags-samsung.html.in new file mode 100644 index 0000000..11a86f1 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-samsung.html.in @@ -0,0 +1,26 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Samsung MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Samsung cameras.

+

Click on a column header to sort the table.

+
+__Samsung2__ +
+ +

Samsung Picture Wizard Tags

+

Click on a column header to sort the table.

+__SamsungPictureWizard__ +
+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-sigma.html.in b/vendor/exiv2-0.25/doc/templates/tags-sigma.html.in new file mode 100644 index 0000000..c252216 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-sigma.html.in @@ -0,0 +1,19 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Sigma/Foveon MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Sigma/Foveon cameras. These tags are defined by Exiv2 in accordance with [7].

+

Click on a column header to sort the table.

+
+__Sigma__ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-sony.html.in b/vendor/exiv2-0.25/doc/templates/tags-sony.html.in new file mode 100644 index 0000000..4af010f --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-sony.html.in @@ -0,0 +1,57 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Sony MakerNote Tags defined in Exiv2

+
+

Tags found in the MakerNote of images taken with Sony cameras.

+

Click on a column header to sort the table.

+
+__Sony1__ +
+ +

Sony Minolta Tags

+

These are the same tags as found in the Minolta MakerNote. +In Sony images the group name is SonyMinolta.

+

Click on a column header to sort the table.

+__SonyMinolta__ +
+ +

Sony Camera Settings Tags

+

Click on a column header to sort the table.

+__Sony1Cs__ +
+ +

Sony Camera Settings 2 Tags

+

Click on a column header to sort the table.

+__Sony1Cs2__ +
+ +

Sony Minolta Camera Settings Tags

+

These are the same tags as the Minolta Camera Settings in the Minolta MakerNote. +In Sony images the group name is Sony1MltCsOld or Sony1MltCsNew.

+

Click on a column header to sort the table.

+__Sony1MltCsOld__ +
+ +

Sony Minolta Camera Settings 7D Tags

+

These are the same tags as the Minolta 7D Camera Settings in the Minolta MakerNote. +In Sony images the group name is Sony1MltCs7D.

+

Click on a column header to sort the table.

+__Sony1MltCs7D__ +
+ +

Sony Minolta Camera Settings A100 Tags

+

Click on a column header to sort the table.

+__Sony1MltCsA100__ +
+ +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-GPano.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-GPano.html.in new file mode 100644 index 0000000..6ecc1a2 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-GPano.html.in @@ -0,0 +1,42 @@ +__doctype__ + + + +__header2__ + + + +
+ +__index1__ + +__index2__ + +

Google Photo Sphere XMP schema

+ +

Panorama tags written by Google Photosphere. Specifies XMP properties that provide information regarding the creation and rendering of a panorama image. + +

    + +
  • Exiv2 keys are Xmp.GPano.<Property>
  • + +
  • The schema namespace URI is http://ns.google.com/photos/1.0/panorama/
  • + +
  • The preferred schema namespace prefix is GPano
  • + +
+ +Reference: Photo Sphere XMP Metadata

+ +

Click on a column header to sort the table.

+ +__xmp_GPano__ + +
+ + + + + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-MP.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-MP.html.in new file mode 100644 index 0000000..76d45df --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-MP.html.in @@ -0,0 +1,46 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Microsoft Photo 1.2 Region schema

+

The Microsoft XMP schemas for people tagging define a set of properties to tag individuals in digital photos. +

    +
  • Exiv2 keys are nested Xmp.MP.RegionInfo/MPRI:Regions/MPReg:<Property>
  • +
+
    +
  • The MP schema namespace URI is http://ns.microsoft.com/photo/1.2/
  • +
  • This schema namespace prefix is MP
  • +
+
    +
  • The MPRI schema namespace URI is http://ns.microsoft.com/photo/1.2/t/RegionInfo#
  • +
  • This schema namespace prefix is MPRI
  • +
+
    +
  • The MPReg schema namespace URI is http://ns.microsoft.com/photo/1.2/t/Region#
  • +
  • This schema namespace prefix is MPReg
  • +
+ +Reference: People Tagging Overview

+ +

Click on a column header to sort the table.

+ +__xmp_MP__ + +

+ +__xmp_MPRI__ + +

+ +__xmp_MPReg__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-MPRI.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-MPRI.html.in new file mode 100644 index 0000000..1ff3746 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-MPRI.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Microsoft Photo RegionInfo schema

+

The Microsoft Photo RegionInfo 1.2 schema provides a set of properties for region info. +

    +
  • Exiv2 keys are Xmp.MPRI.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/t/RegionInfo#
  • +
  • The preferred schema namespace prefix is MPRI
  • +
+Reference: People Tagging Overview

+ +

Click on a column header to sort the table.

+ +__xmp_MPRI__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-MPReg.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-MPReg.html.in new file mode 100644 index 0000000..8cd9820 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-MPReg.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Microsoft Photo Region schema

+

The Microsoft Photo Region 1.2 schema provides a set of properties for image regions. +

    +
  • Exiv2 keys are Xmp.MPReg.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.2/t/Region#
  • +
  • The preferred schema namespace prefix is MPReg
  • +
+Reference: People Tagging Overview

+ +

Click on a column header to sort the table.

+ +__xmp_MPReg__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-MicrosoftPhoto.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-MicrosoftPhoto.html.in new file mode 100644 index 0000000..9c21e02 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-MicrosoftPhoto.html.in @@ -0,0 +1,26 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Microsoft Photo Schema

+

This schema specifies XMP properties used by Microsoft. +

    +
  • Exiv2 keys are Xmp.MicrosoftPhoto.<Property> +
  • The schema namespace URI is http://ns.microsoft.com/photo/1.0/
  • +
  • The preferred schema namespace prefix is MicrosoftPhoto
  • +
+

+

Click on a column header to sort the table.

+ +__xmp_MicrosoftPhoto__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-acdsee.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-acdsee.html.in new file mode 100644 index 0000000..358acd2 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-acdsee.html.in @@ -0,0 +1,42 @@ +__doctype__ + + + +__header2__ + + + +
+ +__index1__ + +__index2__ + +

ACDSee XMP schema

+ +

Custom XMP properties written by ACDSee applications. + +

    + +
  • Exiv2 keys are Xmp.acdsee.<Property>
  • + +
  • The schema namespace URI is http://ns.acdsee.com/iptc/1.0/
  • + +
  • The preferred schema namespace prefix is acdsee
  • + +
+ +Reference: ACDSee Properties pane

+ +

Click on a column header to sort the table.

+ +__xmp_acdsee__ + +
+ + + + + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-aux.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-aux.html.in new file mode 100644 index 0000000..919d058 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-aux.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Exif Schema for Additional Exif Properties

+

The following table lists additional XMP properties that describe the equipment used to produce +Exif data. +

    +
  • Exiv2 keys are Xmp.aux.<Property> +
  • The schema namespace URI is http://ns.adobe.com/exif/1.0/aux/
  • +
  • The preferred schema namespace prefix is aux
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_aux__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-crs.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-crs.html.in new file mode 100644 index 0000000..14836d8 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-crs.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Camera Raw Schema

+

This schema specifies XMP properties associated with image files produced in camera raw mode. +

    +
  • Exiv2 keys are Xmp.crs.<Property> +
  • The schema namespace URI is http://ns.adobe.com/camera-raw-settings/1.0/
  • +
  • The preferred schema namespace prefix is crs
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_crs__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-dc.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-dc.html.in new file mode 100644 index 0000000..14e0743 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-dc.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Dublin Core Schema

+

The Dublin Core schema provides a set of commonly used XMP properties. +

    +
  • Exiv2 keys are Xmp.dc.<Property> +
  • The schema namespace URI is http://purl.org/dc/elements/1.1/
  • +
  • The preferred schema namespace prefix is dc
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_dc__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-dcterms.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-dcterms.html.in new file mode 100644 index 0000000..b4b3073 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-dcterms.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Qualified Dublin Core Schema

+

Qualified Dublin Core XMP properties are used under Darwin Core. +

    +
  • Exiv2 keys are nested: Xmp.dwc.Record/dcterms:<Property>
  • +
  • The schema namespace URI is http://purl.org/dc/terms/
  • +
  • The schema namespace prefix dcterms is only used for DwC Location properties: Xmp.dcterms.Location/dwc:<Property>
  • +
+Reference: DCMI Metadata Terms +

+

Click on a column header to sort the table.

+ +__xmp_dcterms__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-digiKam.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-digiKam.html.in new file mode 100644 index 0000000..ff01ff9 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-digiKam.html.in @@ -0,0 +1,26 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

digiKam Photo Management Schema

+

This schema specifies XMP properties used by digiKam. +

    +
  • Exiv2 keys are Xmp.digiKam.<Property> +
  • The schema namespace URI is http://www.digikam.org/ns/1.0/
  • +
  • The preferred schema namespace prefix is digiKam
  • +
+

+

Click on a column header to sort the table.

+ +__xmp_digiKam__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-dwc.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-dwc.html.in new file mode 100644 index 0000000..60a98ed --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-dwc.html.in @@ -0,0 +1,29 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Darwin Core Schema

+

The Darwin Core schema provides a set of XMP properties intended to facilitate the sharing of information about biological diversity. +

    +
  • Exiv2 keys are nested: Xmp.dwc.<Main Structure>/dwc:<Property>
  • +
  • The schema namespace URI is http://rs.tdwg.org/dwc/index.htm
  • +
  • Darwin Core uses some Qualified Dublin Core properties
  • +
  • The preferred schema namespace prefix is dwc except for Location properties which use dcterms
  • +
  • Some child properties under Record use the dcterms sub key prefix
  • +
+Reference: Darwin Core Terms +

+

Click on a column header to sort the table.

+ +__xmp_dwc__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-exif.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-exif.html.in new file mode 100644 index 0000000..fa5d022 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-exif.html.in @@ -0,0 +1,35 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Exif Schema for Exif-specific Properties

+

The following table lists the XMP properties defined solely by Exif.

+

Note: A number of Exif 2.3 properties are not included in XMP. These are generally + properties that relate directly to the image stream, or that are of little use without access + to the image stream. A general XMP principle is that XMP metadata should have value + in and of itself, separate from the primary file content. The omitted properties include: + StripOffsets, RowsPerStrip, StripByteCounts, JPEGInterchangeFormat, and + JPEGInterchangeFormatLength.

+

Note: Properties beginning with "GPS" are GPS properties that are also used by DIG-35 and + are part of the JPEG-2000 standard. +

    +
  • Exiv2 keys are Xmp.exif.<Property> +
  • The schema namespace URI is http://ns.adobe.com/exif/1.0/
  • +
  • The preferred schema namespace prefix is exif
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_exif__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-expressionmedia.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-expressionmedia.html.in new file mode 100644 index 0000000..a214456 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-expressionmedia.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Microsoft Expression Media schema

+

This is the Microsoft badged version of the + iView Media Pro schema. +

    +
  • Exiv2 keys are Xmp.expressionmedia.<Property>
  • +
  • The schema namespace URI is http://ns.microsoft.com/expressionmedia/1.0/
  • +
  • The preferred schema namespace prefix is expressionmedia
  • +
+Reference: ?

+ +

Click on a column header to sort the table.

+ +__xmp_expressionmedia__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-iptc.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-iptc.html.in new file mode 100644 index 0000000..1eda891 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-iptc.html.in @@ -0,0 +1,29 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

IPTC Core schema

+

This schema specifies the IPTC Core XMP properties. +

    +
  • Exiv2 keys are Xmp.iptc.<Property>
  • +
  • Creator Contact Info sub-keys are nested: Xmp.Iptc4xmpCore.CreatorContactInfo/Iptc4xmpCore:<Property>
  • +
  • The schema namespace URI is http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/
  • +
  • The preferred schema namespace prefix is Iptc4xmpCore
  • +
+Reference: "IPTC Core" Specification Version 1.2

+

Note: Exiv2 uses iptc (rather than Iptc4xmpCore) as the group name for keys of IPTC Core schema properties.

+ +

Click on a column header to sort the table.

+ +__xmp_iptc__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-iptcExt.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-iptcExt.html.in new file mode 100644 index 0000000..2d8cfb6 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-iptcExt.html.in @@ -0,0 +1,31 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

IPTC Extension schema

+

This schema specifies the IPTC Extension XMP properties. The IPTC + Extension schema extends and complements the IPTC Core schema by a set + of more granular properties and further specialized rights related + properties from the PLUS metadata schema. +

    +
  • Exiv2 keys are Xmp.iptcExt.<Property>
  • +
  • The schema namespace URI is http://iptc.org/std/Iptc4xmpExt/2008-02-29/
  • +
  • The preferred schema namespace prefix is Iptc4xmpExt
  • +
+Reference: IPTC Extension Specification Version 1.2 standard

+

Note: Exiv2 uses iptcExt (rather than Iptc4xmpExt) as the group name for keys of IPTC Extension schema properties.

+ +

Click on a column header to sort the table.

+ +__xmp_iptcExt__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-kipi.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-kipi.html.in new file mode 100644 index 0000000..5b12cfc --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-kipi.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

KDE Image Program Interface schema

+

KDE Image Program Interface schema tags, used by digiKam kipi-plugins. +

    +
  • Exiv2 keys are Xmp.kipi.<Property>
  • +
  • The schema namespace URI is http://www.digikam.org/ns/kipi/1.0/
  • +
  • The preferred schema namespace prefix is kipi
  • +
+Reference: ?

+ +

Click on a column header to sort the table.

+ +__xmp_kipi__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-lr.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-lr.html.in new file mode 100644 index 0000000..3010d78 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-lr.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Lightroom Schema

+

This schema specifies hierarchical keyword XMP properties used by Adobe Lightroom. +

    +
  • Exiv2 keys are Xmp.lr.<Property>
  • +
  • The schema namespace URI is http://ns.adobe.com/lightroom/1.0/
  • +
  • The preferred schema namespace prefix is lr
  • +
+Reference: Adobe Lightroom Keywords +

+

Click on a column header to sort the table.

+ +__xmp_lr__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-mediapro.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-mediapro.html.in new file mode 100644 index 0000000..a035f07 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-mediapro.html.in @@ -0,0 +1,31 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Photo One Media Pro schema

+

Photo One Media Pro XMP properties. Program was previously known as Microsoft Expression Media and iView Media Pro. +

    +
  • Exiv2 keys are Xmp.mediapro.<Property>
  • +
  • The schema namespace URI is http://ns.iview-multimedia.com/mediapro/1.0/
  • +
  • The preferred schema namespace prefix is mediapro
  • +
+Reference: ?

+ +

Click on a column header to sort the table.

+ +__xmp_mediapro__ + +

While owned by Microsoft the Microsoft Expression Media schema was used.

+ +__xmp_expressionmedia__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-kw.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-kw.html.in new file mode 100644 index 0000000..bf93f41 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-kw.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Metadata Working Group Keywords schema

+

The Metadata Working Group's schema for hierarchical keywords metadata. +

    +
  • Exiv2 keys are nested in the form Xmp.mwg-kw.Keywords/mwg-kw:Hierarchy/mwg-kw:<Property>
  • +
  • The schema namespace URI is http://www.metadataworkinggroup.com/schemas/keywords/
  • +
  • The preferred schema namespace prefix is mwg-kw
  • +
+Reference: Guidelines for Handling Image Metadata

+ +

Click on a column header to sort the table.

+ +__xmp_mwg-kw__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-rs.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-rs.html.in new file mode 100644 index 0000000..d1f87a0 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-mwg-rs.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Metadata Working Group Regions schema

+

The Metadata Working Group's schema for image region metadata. +

    +
  • Exiv2 keys are nested in the form Xmp.mwg-rs.Regions/mwg-rs:RegionList/mwg-rs:<Property>
  • +
  • The schema namespace URI is http://www.metadataworkinggroup.com/schemas/regions/
  • +
  • The preferred schema namespace prefix is mwg-rs
  • +
+Reference: Guidelines for Handling Image Metadata

+ +

Click on a column header to sort the table.

+ +__xmp_mwg-rs__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-pdf.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-pdf.html.in new file mode 100644 index 0000000..167192b --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-pdf.html.in @@ -0,0 +1,26 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ +

Adobe PDF schema

+

This schema specifies XMP properties used with Adobe PDF documents. +

    +
  • Exiv2 keys are Xmp.pdf.<Property> +
  • The schema namespace URI is http://ns.adobe.com/pdf/1.3/
  • +
  • The preferred schema namespace prefix is pdf
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_pdf__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-photoshop.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-photoshop.html.in new file mode 100644 index 0000000..286c573 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-photoshop.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Photoshop Schema

+

This schema specifies XMP properties used by Adobe Photoshop. +

    +
  • Exiv2 keys are Xmp.photoshop.<Property> +
  • The schema namespace URI is http://ns.adobe.com/photoshop/1.0/
  • +
  • The preferred schema namespace prefix is photoshop
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_photoshop__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-plus.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-plus.html.in new file mode 100644 index 0000000..252fcbd --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-plus.html.in @@ -0,0 +1,29 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

PLUS License Data Format schema

+

The PLUS License Data Format ("LDF") is an ordered group of fields available + for optional use in embedding and reading image license metadata in digital + files and other documents. +

    +
  • Exiv2 keys are Xmp.plus.<Property>
  • +
  • The schema namespace URI is http://ns.useplus.org/ldf/xmp/1.0/
  • +
  • The preferred schema namespace prefix is plus
  • +
+Reference: PLUS Technical Specification

+ +

Click on a column header to sort the table.

+ +__xmp_plus__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-tiff.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-tiff.html.in new file mode 100644 index 0000000..f35f56c --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-tiff.html.in @@ -0,0 +1,28 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

Exif Schema for TIFF Properties

+

The following table lists the XMP properties for TIFF-derived data. Only those TIFF properties that +are mentioned in the EXIF 2.2 specification are included here. +

    +
  • Exiv2 keys are Xmp.tiff.<Property> +
  • The schema namespace URI is http://ns.adobe.com/tiff/1.0/
  • +
  • The preferred schema namespace prefix is tiff
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_tiff__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-xmp.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmp.html.in new file mode 100644 index 0000000..9a99781 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmp.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

XMP Basic Schema

+

The XMP Basic Schema contains XMP properties that provide basic descriptive information. +

    +
  • Exiv2 keys are Xmp.xmp.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/
  • +
  • The preferred schema namespace prefix is xmp
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_xmp__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpBJ.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpBJ.html.in new file mode 100644 index 0000000..5b15ede --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpBJ.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

XMP Basic Job Ticket Schema

+

The following XMP schema describes very simple workflow or job information. +

    +
  • Exiv2 keys are Xmp.xmpBJ.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/bj/
  • +
  • The preferred schema namespace prefix is xmpBJ
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_xmpBJ__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpDM.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpDM.html.in new file mode 100644 index 0000000..5e68678 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpDM.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

XMP Dynamic Media Schema

+

This schema specifies XMP properties used by the Adobe dynamic media group. +

    +
  • Exiv2 keys are Xmp.xmpDM.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xmp/1.0/DynamicMedia/
  • +
  • The preferred schema namespace prefix is xmpDM
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_xmpDM__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpMM.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpMM.html.in new file mode 100644 index 0000000..6c7f197 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpMM.html.in @@ -0,0 +1,34 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

XMP Media Management Schema

+

The XMP Media Management Schema is primarily for use by digital asset management (DAM) systems.

+

The following XMP properties are "owned" by the DAM system and should be set by applications +under their direction; they should not be used by unmanaged files: xmpMM:ManagedFrom, +xmpMM:Manager, xmpMM:ManageTo, xmpMM:ManageUI, xmpMM:ManagerVariant.

+

The following properties are owned by the DAM system for managed files, but can also be +used by applications for unmanaged files: xmpMM:DerivedFrom, xmpMM:DocumentID, +xmpMM:RenditionClass, xmpMM:RenditionParams, xmpMM:VersionID, xmpMM:Versions.

+

The xmpMM:History property is always owned by the application. +

    +
  • Exiv2 keys are Xmp.xmpMM.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/mm/
  • +
  • The preferred schema namespace prefix is xmpMM
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_xmpMM__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpRights.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpRights.html.in new file mode 100644 index 0000000..44c0dcb --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpRights.html.in @@ -0,0 +1,29 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

XMP Rights Management Schema

+

This schema includes XMP properties related to rights management. These properties specify +information regarding the legal restrictions associated with a resource.
+Note: XMP is not a rights-enforcement mechanism. +

    +
  • Exiv2 keys are Xmp.xmpRights.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/rights/
  • +
  • The preferred schema namespace prefix is xmpRights
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_xmpRights__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpTPg.html.in b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpTPg.html.in new file mode 100644 index 0000000..fa50a4a --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags-xmp-xmpTPg.html.in @@ -0,0 +1,27 @@ +__doctype__ + +__header2__ + + +
+__index1__ +__index2__ + +

XMP Paged-Text Schema

+

The Paged-Text schema is used for XMP properties for text appearing on a page in a document. +

    +
  • Exiv2 keys are Xmp.xmpTPg.<Property> +
  • The schema namespace URI is http://ns.adobe.com/xap/1.0/t/pg/
  • +
  • The preferred schema namespace prefix is xmpTPg
  • +
+Reference: XMP Specification and Documentation +

+

Click on a column header to sort the table.

+ +__xmp_xmpTPg__ + +
+ + + + diff --git a/vendor/exiv2-0.25/doc/templates/tags.awk b/vendor/exiv2-0.25/doc/templates/tags.awk new file mode 100644 index 0000000..b883ea4 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags.awk @@ -0,0 +1,44 @@ +################################################################################ +# File : tags.awk +# Version : $Rev: 785 $ +# Author(s): Andreas Huggel (ahu) +# History : 07-Feb-04, ahu: created +# +# Description: +# Awk script to convert a taglist to XML format used in the documentation. +# $ taglist [itemName] | awk -f tags.awk > tags.xml +################################################################################ + +BEGIN { + FS = ", " # ,\t + print ""; + print ""; + + print "" + print "
" + print "XYZ MakerNote Tags defined in Exiv2" + print "" + print "

Tags found in the MakerNote of images taken with XYZ cameras. These tags " + print "are defined by Exiv2 in accordance with [X].

" + print "

Click on a column header to sort the table.

" + print "
" + print "
" + print "" +} + +{ + print " "; + print " " $1 "" + print " " $2 "" + print " " $3 "" + print " " $4 "" + print " " $5 "" + print " " $6 "" + print " " $7 "" + print " "; +} + +END { + print "" + print "
" +} diff --git a/vendor/exiv2-0.25/doc/templates/tags.xsl b/vendor/exiv2-0.25/doc/templates/tags.xsl new file mode 100644 index 0000000..e93f1c2 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/tags.xsl @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + +

+ +
+ + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + Tag (hex) + Tag (dec) + IFD + Key + Type + Tag description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/vendor/exiv2-0.25/doc/templates/xmp.awk b/vendor/exiv2-0.25/doc/templates/xmp.awk new file mode 100644 index 0000000..35ec169 --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/xmp.awk @@ -0,0 +1,43 @@ +################################################################################ +# File : xmp.awk +# Version : $Rev: 1327 $ +# Author(s): Andreas Huggel (ahu) +# History : 23-Nov-07, ahu: created +# +# Description: +# Awk script to convert an XMP property list to XML format used in the +# documentation. +# $ taglist [xmpList] | awk -f xmp.awk > [xmpList].xml +################################################################################ + +BEGIN { + FS = ", " # ,\t + print ""; + print ""; + + print "" + print "
" + print "XMP tags defined in Exiv2" + print "" + print "

Some description

" + print "

Click on a column header to sort the table.

" + print "
" + print "
" + print "" +} + +{ + print " "; + print " " $1 "" + print " " $2 "" + print " " $3 "" + print " " $4 "" + print " " $5 "" + print " " $6 "" + print " "; +} + +END { + print "" + print "
" +} diff --git a/vendor/exiv2-0.25/doc/templates/xmp.xsl b/vendor/exiv2-0.25/doc/templates/xmp.xsl new file mode 100644 index 0000000..24c0f5e --- /dev/null +++ b/vendor/exiv2-0.25/doc/templates/xmp.xsl @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + +

+ +
+ + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + Property + Label + Value type + Exiv2 type + Category + Description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/vendor/exiv2-0.25/include/exiv2/asfvideo.hpp b/vendor/exiv2-0.25/include/exiv2/asfvideo.hpp new file mode 100644 index 0000000..4a63d5a --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/asfvideo.hpp @@ -0,0 +1,185 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file asfvideo.hpp + @brief An Image subclass to support ASF video files + @version $Rev$ + @author Abhinav Badola for GSoC 2012 + mail.abu.to@gmail.com + @date 08-Aug-12, AB: created + */ +#ifndef ASFVIDEO_HPP +#define ASFVIDEO_HPP + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "image.hpp" +#include "tags_int.hpp" + +// ***************************************************************************** +// namespace extensions +using namespace Exiv2::Internal; + +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add ASF to the supported image formats + namespace ImageType { + const int asf = 24; //!< Treating asf as an image type> + } + + /*! + @brief Class to access ASF video files. + */ + class EXIV2API AsfVideo:public Image + { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for a ASF video. Since the constructor + can not return a result, callers should check the good() method + after object construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + AsfVideo(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + protected: + /*! + @brief Check for a valid tag and decode the block at the current IO + position. Calls tagDecoder() or skips to next tag, if required. + */ + void decodeBlock(); + /*! + @brief Interpret tag information, and call the respective function + to save it in the respective XMP container. Decodes a Tag + Information and saves it in the respective XMP container, if + the block size is small. + @param tv Pointer to current tag, + @param size Size of the data block used to store Tag Information. + */ + void tagDecoder(const TagVocabulary* tv, uint64_t size); + /*! + @brief Interpret File_Properties tag information, and save it in + the respective XMP container. + */ + void fileProperties(); + /*! + @brief Interpret Stream_Properties tag information, and save it + in the respective XMP container. + */ + void streamProperties(); + /*! + @brief Interpret Codec_List tag information, and save it in + the respective XMP container. + */ + void codecList(); + /*! + @brief Interpret Content_Description tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Data. + */ + void contentDescription(uint64_t size); + /*! + @brief Interpret Extended_Stream_Properties tag information, and + save it in the respective XMP container. + @param size Size of the data block used to store Tag Data. + */ + void extendedStreamProperties(uint64_t size); + /*! + @brief Interpret Header_Extension tag information, and save it in + the respective XMP container. + @param size Size of the data block used to store Tag Data. + */ + void headerExtension(uint64_t size); + /*! + @brief Interpret Metadata, Extended_Content_Description, + Metadata_Library tag information, and save it in the respective + XMP container. + @param meta A default integer which helps to overload the function + for various Tags that have a similar method of decoding. + */ + void metadataHandler(int meta = 1); + /*! + @brief Calculates Aspect Ratio of a video, and stores it in the + respective XMP container. + */ + void aspectRatio(); + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + AsfVideo(const AsfVideo& rhs); + //! Assignment operator + AsfVideo& operator=(const AsfVideo& rhs); + //@} + + private: + //! Variable to check the end of metadata traversing. + bool continueTraversing_; + //! Variable which stores current position of the read pointer. + uint64_t localPosition_; + //! Variable which stores current stream being processsed. + int streamNumber_; + //! Variable to store height and width of a video frame. + uint64_t height_, width_; + + }; //Class AsfVideo + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new AsfVideo instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newAsfInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Windows Asf Video. + EXIV2API bool isAsfType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef ASFVIDEO_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/basicio.hpp b/vendor/exiv2-0.25/include/exiv2/basicio.hpp new file mode 100644 index 0000000..8705c99 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/basicio.hpp @@ -0,0 +1,1304 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file basicio.hpp + @brief Simple binary IO abstraction + @version $Rev: 3091 $ + @author Brad Schick (brad) + brad@robotbattle.com + @date 04-Dec-04, brad: created + */ +#ifndef BASICIO_HPP_ +#define BASICIO_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include // for std::auto_ptr +#include // write the temporary file +#include // _O_BINARY in FileIo::FileIo +#include // timestamp for the name of temporary file +#include // std::memcpy + +// The way to handle data from stdin or data uri path. If EXV_XPATH_MEMIO = 1, +// it uses MemIo. Otherwises, it uses FileIo. +#ifndef EXV_XPATH_MEMIO +#define EXV_XPATH_MEMIO 0 +#endif +#ifndef EXV_USE_CURL +#define EXV_USE_CURL 0 +#endif +#ifndef EXV_USE_SSH +#define EXV_USE_SSH 0 +#endif + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + /*! + @brief An interface for simple binary IO. + + Designed to have semantics and names similar to those of C style FILE* + operations. Subclasses should all behave the same so that they can be + interchanged. + */ + class EXIV2API BasicIo { + public: + //! BasicIo auto_ptr type + typedef std::auto_ptr AutoPtr; + + //! Seek starting positions + enum Position { beg, cur, end }; + + //! @name Creators + //@{ + //! Destructor + virtual ~BasicIo(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Open the IO source using the default access mode. The + default mode should allow for reading and writing. + + This method can also be used to "reopen" an IO source which will + flush any unwritten data and reset the IO position to the start. + Subclasses may provide custom methods to allow for + opening IO sources differently. + + @return 0 if successful;
+ Nonzero if failure. + */ + virtual int open() = 0; + /*! + @brief Close the IO source. After closing a BasicIo instance can not + be read or written. Closing flushes any unwritten data. It is + safe to call close on a closed instance. + @return 0 if successful;
+ Nonzero if failure. + */ + virtual int close() = 0; + /*! + @brief Write data to the IO source. Current IO position is advanced + by the number of bytes written. + @param data Pointer to data. Data must be at least \em wcount + bytes long + @param wcount Number of bytes to be written. + @return Number of bytes written to IO source successfully;
+ 0 if failure; + */ + virtual long write(const byte* data, long wcount) = 0; + /*! + @brief Write data that is read from another BasicIo instance to + the IO source. Current IO position is advanced by the number + of bytes written. + @param src Reference to another BasicIo instance. Reading start + at the source's current IO position + @return Number of bytes written to IO source successfully;
+ 0 if failure; + */ + virtual long write(BasicIo& src) = 0; + /*! + @brief Write one byte to the IO source. Current IO position is + advanced by one byte. + @param data The single byte to be written. + @return The value of the byte written if successful;
+ EOF if failure; + */ + virtual int putb(byte data) = 0; + /*! + @brief Read data from the IO source. Reading starts at the current + IO position and the position is advanced by the number of bytes + read. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return DataBuf instance containing the bytes read. Use the + DataBuf::size_ member to find the number of bytes read. + DataBuf::size_ will be 0 on failure. + */ + virtual DataBuf read(long rcount) = 0; + /*! + @brief Read data from the IO source. Reading starts at the current + IO position and the position is advanced by the number of bytes + read. + @param buf Pointer to a block of memory into which the read data + is stored. The memory block must be at least \em rcount bytes + long. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return Number of bytes read from IO source successfully;
+ 0 if failure; + */ + virtual long read(byte* buf, long rcount) = 0; + /*! + @brief Read one byte from the IO source. Current IO position is + advanced by one byte. + @return The byte read from the IO source if successful;
+ EOF if failure; + */ + virtual int getb() = 0; + /*! + @brief Remove all data from this object's IO source and then transfer + data from the \em src BasicIo object into this object. + + The source object is invalidated by this operation and should not be + used after this method returns. This method exists primarily to + be used with the BasicIo::temporary() method. + + @param src Reference to another BasicIo instance. The entire contents + of src are transferred to this object. The \em src object is + invalidated by the method. + @throw Error In case of failure + */ + virtual void transfer(BasicIo& src) = 0; + /*! + @brief Move the current IO position. + @param offset Number of bytes to move the position relative + to the starting position specified by \em pos + @param pos Position from which the seek should start + @return 0 if successful;
+ Nonzero if failure; + */ +#if defined(_MSC_VER) + virtual int seek(int64_t offset, Position pos) = 0; +#else + virtual int seek(long offset, Position pos) = 0; +#endif + + /*! + @brief Direct access to the IO data. For files, this is done by + mapping the file into the process's address space; for memory + blocks, this allows direct access to the memory block. + @param isWriteable Set to true if the mapped area should be writeable + (default is false). + @return A pointer to the mapped area. + @throw Error In case of failure. + */ + virtual byte* mmap(bool isWriteable =false) =0; + /*! + @brief Remove a mapping established with mmap(). If the mapped area + is writeable, this ensures that changes are written back. + @return 0 if successful;
+ Nonzero if failure; + */ + virtual int munmap() =0; + //@} + + //! @name Accessors + //@{ + /*! + @brief Get the current IO position. + @return Offset from the start of IO if successful;
+ -1 if failure; + */ + virtual long tell() const = 0; + /*! + @brief Get the current size of the IO source in bytes. + @return Size of the IO source in bytes;
+ -1 if failure; + */ + virtual long size() const = 0; + //!Returns true if the IO source is open, otherwise false. + virtual bool isopen() const = 0; + //!Returns 0 if the IO source is in a valid state, otherwise nonzero. + virtual int error() const = 0; + //!Returns true if the IO position has reach the end, otherwise false. + virtual bool eof() const = 0; + /*! + @brief Return the path to the IO resource. Often used to form + comprehensive error messages where only a BasicIo instance is + available. + */ + virtual std::string path() const =0; +#ifdef EXV_UNICODE_PATH + /*! + @brief Like path() but returns a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + virtual std::wstring wpath() const =0; +#endif + /*! + @brief Returns a temporary data storage location. This is often + needed to rewrite an IO source. + + For example, data may be read from the original IO source, modified + in some way, and then saved to the temporary instance. After the + operation is complete, the BasicIo::transfer method can be used to + replace the original IO source with the modified version. Subclasses + are free to return any class that derives from BasicIo. + + @return An instance of BasicIo on success + @throw Error In case of failure + */ + virtual BasicIo::AutoPtr temporary() const = 0; + + /*! + @brief Mark all the bNone blocks to bKnow. This avoids allocating memory + for parts of the file that contain image-date (non-metadata/pixel data) + + @note This method should be only called after the concerned data (metadata) + are all downloaded from the remote file to memory. + */ + virtual void populateFakeData() {} + //@} + + protected: + //! @name Creators + //@{ + //! Default Constructor + BasicIo() {} + //@} + }; // class BasicIo + + /*! + @brief Utility class that closes a BasicIo instance upon destruction. + Meant to be used as a stack variable in functions that need to + ensure BasicIo instances get closed. Useful when functions return + errors from many locations. + */ + class EXIV2API IoCloser { + public: + //! @name Creators + //@{ + //! Constructor, takes a BasicIo reference + IoCloser(BasicIo& bio) : bio_(bio) {} + //! Destructor, closes the BasicIo reference + virtual ~IoCloser() { close(); } + //@} + + //! @name Manipulators + //@{ + //! Close the BasicIo if it is open + void close() { if (bio_.isopen()) bio_.close(); } + //@} + + // DATA + //! The BasicIo reference + BasicIo& bio_; + + private: + // Not implemented + //! Copy constructor + IoCloser(const IoCloser&); + //! Assignment operator + IoCloser& operator=(const IoCloser&); + }; // class IoCloser + + /*! + @brief Provides binary file IO by implementing the BasicIo + interface. + */ + class EXIV2API FileIo : public BasicIo { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that accepts the file path on which IO will be + performed. The constructor does not open the file, and + therefore never failes. + @param path The full path of a file + */ + FileIo(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like FileIo(const std::string& path) but accepts a + unicode path in an std::wstring. + @note This constructor is only available on Windows. + */ + FileIo(const std::wstring& wpath); +#endif + //! Destructor. Flushes and closes an open file. + virtual ~FileIo(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Open the file using using the specified mode. + + This method can also be used to "reopen" a file which will flush any + unwritten data and reset the IO position to the start. Although + files can be opened in binary or text mode, this class has + only been tested carefully in binary mode. + + @param mode Specified that type of access allowed on the file. + Valid values match those of the C fopen command exactly. + @return 0 if successful;
+ Nonzero if failure. + */ + int open(const std::string& mode); + /*! + @brief Open the file using using the default access mode of "rb". + This method can also be used to "reopen" a file which will flush + any unwritten data and reset the IO position to the start. + @return 0 if successful;
+ Nonzero if failure. + */ + virtual int open(); + /*! + @brief Flush and unwritten data and close the file . It is + safe to call close on an already closed instance. + @return 0 if successful;
+ Nonzero if failure; + */ + virtual int close(); + /*! + @brief Write data to the file. The file position is advanced + by the number of bytes written. + @param data Pointer to data. Data must be at least \em wcount + bytes long + @param wcount Number of bytes to be written. + @return Number of bytes written to the file successfully;
+ 0 if failure; + */ + virtual long write(const byte* data, long wcount); + /*! + @brief Write data that is read from another BasicIo instance to + the file. The file position is advanced by the number + of bytes written. + @param src Reference to another BasicIo instance. Reading start + at the source's current IO position + @return Number of bytes written to the file successfully;
+ 0 if failure; + */ + virtual long write(BasicIo& src); + /*! + @brief Write one byte to the file. The file position is + advanced by one byte. + @param data The single byte to be written. + @return The value of the byte written if successful;
+ EOF if failure; + */ + virtual int putb(byte data); + /*! + @brief Read data from the file. Reading starts at the current + file position and the position is advanced by the number of + bytes read. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return DataBuf instance containing the bytes read. Use the + DataBuf::size_ member to find the number of bytes read. + DataBuf::size_ will be 0 on failure. + */ + virtual DataBuf read(long rcount); + /*! + @brief Read data from the file. Reading starts at the current + file position and the position is advanced by the number of + bytes read. + @param buf Pointer to a block of memory into which the read data + is stored. The memory block must be at least \em rcount bytes + long. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return Number of bytes read from the file successfully;
+ 0 if failure; + */ + virtual long read(byte* buf, long rcount); + /*! + @brief Read one byte from the file. The file position is + advanced by one byte. + @return The byte read from the file if successful;
+ EOF if failure; + */ + virtual int getb(); + /*! + @brief Remove the contents of the file and then transfer data from + the \em src BasicIo object into the empty file. + + This method is optimized to simply rename the source file if the + source object is another FileIo instance. The source BasicIo object + is invalidated by this operation and should not be used after this + method returns. This method exists primarily to be used with + the BasicIo::temporary() method. + + @note If the caller doesn't have permissions to write to the file, + an exception is raised and \em src is deleted. + + @param src Reference to another BasicIo instance. The entire contents + of src are transferred to this object. The \em src object is + invalidated by the method. + @throw Error In case of failure + */ + virtual void transfer(BasicIo& src); + /*! + @brief Move the current file position. + @param offset Number of bytes to move the file position + relative to the starting position specified by \em pos + @param pos Position from which the seek should start + @return 0 if successful;
+ Nonzero if failure; + */ +#if defined(_MSC_VER) + virtual int seek(int64_t offset, Position pos); +#else + virtual int seek(long offset, Position pos); +#endif + /*! + @brief Map the file into the process's address space. The file must be + open before mmap() is called. If the mapped area is writeable, + changes may not be written back to the underlying file until + munmap() is called. The pointer is valid only as long as the + FileIo object exists. + @param isWriteable Set to true if the mapped area should be writeable + (default is false). + @return A pointer to the mapped area. + @throw Error In case of failure. + */ + virtual byte* mmap(bool isWriteable =false); + /*! + @brief Remove a mapping established with mmap(). If the mapped area is + writeable, this ensures that changes are written back to the + underlying file. + @return 0 if successful;
+ Nonzero if failure; + */ + virtual int munmap(); + /*! + @brief close the file source and set a new path. + */ + virtual void setPath(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like setPath(const std::string& path) but accepts a + unicode path in an std::wstring. + @note This method is only available on Windows. + */ + virtual void setPath(const std::wstring& wpath); +#endif + //@} + //! @name Accessors + //@{ + /*! + @brief Get the current file position. + @return Offset from the start of the file if successful;
+ -1 if failure; + */ + virtual long tell() const; + /*! + @brief Flush any buffered writes and get the current file size + in bytes. + @return Size of the file in bytes;
+ -1 if failure; + */ + virtual long size() const; + //! Returns true if the file is open, otherwise false. + virtual bool isopen() const; + //! Returns 0 if the file is in a valid state, otherwise nonzero. + virtual int error() const; + //! Returns true if the file position has reach the end, otherwise false. + virtual bool eof() const; + //! Returns the path of the file + virtual std::string path() const; +#ifdef EXV_UNICODE_PATH + /* + @brief Like path() but returns the unicode path of the file in an std::wstring. + @note This function is only available on Windows. + */ + virtual std::wstring wpath() const; +#endif + /*! + @brief Returns a temporary data storage location. The actual type + returned depends upon the size of the file represented a FileIo + object. For small files, a MemIo is returned while for large files + a FileIo is returned. Callers should not rely on this behavior, + however, since it may change. + @return An instance of BasicIo on success + @throw Error If opening the temporary file fails + */ + virtual BasicIo::AutoPtr temporary() const; + + /*! + @brief Mark all the bNone blocks to bKnow. This avoids allocating memory + for parts of the file that contain image-date (non-metadata/pixel data) + + @note This method should be only called after the concerned data (metadata) + are all downloaded from the remote file to memory. + */ + virtual void populateFakeData(); + //@} + + private: + // NOT IMPLEMENTED + //! Copy constructor + FileIo(FileIo& rhs); + //! Assignment operator + FileIo& operator=(const FileIo& rhs); + + // Pimpl idiom + class Impl; + Impl* p_; + + }; // class FileIo + + /*! + @brief Provides binary IO on blocks of memory by implementing the BasicIo + interface. A copy-on-write implementation ensures that the data passed + in is only copied when necessary, i.e., as soon as data is written to + the MemIo. The original data is only used for reading. If writes are + performed, the changed data can be retrieved using the read methods + (since the data used in construction is never modified). + + @note If read only usage of this class is common, it might be worth + creating a specialized readonly class or changing this one to + have a readonly mode. + */ + class EXIV2API MemIo : public BasicIo { + public: + //! @name Creators + //@{ + //! Default constructor that results in an empty object + MemIo(); + /*! + @brief Constructor that accepts a block of memory. A copy-on-write + algorithm allows read operations directly from the original data + and will create a copy of the buffer on the first write operation. + @param data Pointer to data. Data must be at least \em size + bytes long + @param size Number of bytes to copy. + */ + MemIo(const byte* data, long size); + //! Destructor. Releases all managed memory + virtual ~MemIo(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Memory IO is always open for reading and writing. This method + therefore only resets the IO position to the start. + + @return 0 + */ + virtual int open(); + /*! + @brief Does nothing on MemIo objects. + @return 0 + */ + virtual int close(); + /*! + @brief Write data to the memory block. If needed, the size of the + internal memory block is expanded. The IO position is advanced + by the number of bytes written. + @param data Pointer to data. Data must be at least \em wcount + bytes long + @param wcount Number of bytes to be written. + @return Number of bytes written to the memory block successfully;
+ 0 if failure; + */ + virtual long write(const byte* data, long wcount); + /*! + @brief Write data that is read from another BasicIo instance to + the memory block. If needed, the size of the internal memory + block is expanded. The IO position is advanced by the number + of bytes written. + @param src Reference to another BasicIo instance. Reading start + at the source's current IO position + @return Number of bytes written to the memory block successfully;
+ 0 if failure; + */ + virtual long write(BasicIo& src); + /*! + @brief Write one byte to the memory block. The IO position is + advanced by one byte. + @param data The single byte to be written. + @return The value of the byte written if successful;
+ EOF if failure; + */ + virtual int putb(byte data); + /*! + @brief Read data from the memory block. Reading starts at the current + IO position and the position is advanced by the number of + bytes read. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return DataBuf instance containing the bytes read. Use the + DataBuf::size_ member to find the number of bytes read. + DataBuf::size_ will be 0 on failure. + */ + virtual DataBuf read(long rcount); + /*! + @brief Read data from the memory block. Reading starts at the current + IO position and the position is advanced by the number of + bytes read. + @param buf Pointer to a block of memory into which the read data + is stored. The memory block must be at least \em rcount bytes + long. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return Number of bytes read from the memory block successfully;
+ 0 if failure; + */ + virtual long read(byte* buf, long rcount); + /*! + @brief Read one byte from the memory block. The IO position is + advanced by one byte. + @return The byte read from the memory block if successful;
+ EOF if failure; + */ + virtual int getb(); + /*! + @brief Clear the memory block and then transfer data from + the \em src BasicIo object into a new block of memory. + + This method is optimized to simply swap memory block if the source + object is another MemIo instance. The source BasicIo instance + is invalidated by this operation and should not be used after this + method returns. This method exists primarily to be used with + the BasicIo::temporary() method. + + @param src Reference to another BasicIo instance. The entire contents + of src are transferred to this object. The \em src object is + invalidated by the method. + @throw Error In case of failure + */ + virtual void transfer(BasicIo& src); + /*! + @brief Move the current IO position. + @param offset Number of bytes to move the IO position + relative to the starting position specified by \em pos + @param pos Position from which the seek should start + @return 0 if successful;
+ Nonzero if failure; + */ +#if defined(_MSC_VER) + virtual int seek(int64_t offset, Position pos); +#else + virtual int seek(long offset, Position pos); +#endif + /*! + @brief Allow direct access to the underlying data buffer. The buffer + is not protected against write access in any way, the argument + is ignored. + @note The application must ensure that the memory pointed to by the + returned pointer remains valid and allocated as long as the + MemIo object exists. + */ + virtual byte* mmap(bool /*isWriteable*/ =false); + virtual int munmap(); + int msync(); + //@} + + //! @name Accessors + //@{ + /*! + @brief Get the current IO position. + @return Offset from the start of the memory block + */ + virtual long tell() const; + /*! + @brief Get the current memory buffer size in bytes. + @return Size of the in memory data in bytes;
+ -1 if failure; + */ + virtual long size() const; + //!Always returns true + virtual bool isopen() const; + //!Always returns 0 + virtual int error() const; + //!Returns true if the IO position has reach the end, otherwise false. + virtual bool eof() const; + //! Returns a dummy path, indicating that memory access is used + virtual std::string path() const; +#ifdef EXV_UNICODE_PATH + /* + @brief Like path() but returns a unicode dummy path in an std::wstring. + @note This function is only available on Windows. + */ + virtual std::wstring wpath() const; +#endif + /*! + @brief Returns a temporary data storage location. Currently returns + an empty MemIo object, but callers should not rely on this + behavior since it may change. + @return An instance of BasicIo + */ + virtual BasicIo::AutoPtr temporary() const; + + /*! + @brief Mark all the bNone blocks to bKnow. This avoids allocating memory + for parts of the file that contain image-date (non-metadata/pixel data) + + @note This method should be only called after the concerned data (metadata) + are all downloaded from the remote file to memory. + */ + virtual void populateFakeData(); + + //@} + + private: + // NOT IMPLEMENTED + //! Copy constructor + MemIo(MemIo& rhs); + //! Assignment operator + MemIo& operator=(const MemIo& rhs); + + // Pimpl idiom + class Impl; + Impl* p_; + + }; // class MemIo + + /*! + @brief Provides binary IO for the data from stdin and data uri path. + */ +#if EXV_XPATH_MEMIO + class EXIV2API XPathIo : public MemIo { + public: + //! @name Creators + //@{ + //! Default constructor + XPathIo(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like XPathIo(const std::string& path) but accepts a + unicode url in an std::wstring. + @note This constructor is only available on Windows. + */ + XPathIo(const std::wstring& wpath); +#endif + //@} + private: + /*! + @brief Read data from stdin and write the data to memory. + @throw Error if it can't convert stdin to binary. + */ + void ReadStdin(); + /*! + @brief Read the data from data uri path and write the data to memory. + @param path The data uri. + @throw Error if no base64 data in path. + */ + void ReadDataUri(const std::string& path); + }; // class XPathIo +#else + class EXIV2API XPathIo : public FileIo { + public: + /*! + @brief The extension of the temporary file which is created when getting input data + to read metadata. This file will be deleted in destructor. + */ + static const std::string TEMP_FILE_EXT; + /*! + @brief The extension of the generated file which is created when getting input data + to add or modify the metadata. + */ + static const std::string GEN_FILE_EXT; + + //! @name Creators + //@{ + //! Default constructor that reads data from stdin/data uri path and writes them to the temp file. + XPathIo(const std::string& orgPath); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like XPathIo(const std::string& orgPath) but accepts a + unicode url in an std::wstring. + @note This constructor is only available on Windows. + */ + XPathIo(const std::wstring& wOrgPathpath); +#endif + //! Destructor. Releases all managed memory and removes the temp file. + virtual ~XPathIo(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Change the name of the temp file and make it untemporary before + calling the method of superclass FileIo::transfer. + */ + virtual void transfer(BasicIo& src); + + //@} + + //! @name Static methods + //@{ + /*! + @brief Read the data from stdin/data uri path and write them to the file. + @param orgPath It equals "-" if the input data's from stdin. Otherwise, it's data uri path. + @return the name of the new file. + @throw Error if it fails. + */ + static std::string writeDataToFile(const std::string& orgPath); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like writeDataToFile(const std::string& orgPath) but accepts a + unicode url in an std::wstring. + @note This constructor is only available on Windows. + */ + static std::string writeDataToFile(const std::wstring& wOrgPath); +#endif + //@} + + private: + // True if the file is a temporary file and it should be deleted in destructor. + bool isTemp_; + std::string tempFilePath_; + }; // class XPathIo +#endif + + /*! + @brief Utility class provides the block mapping to the part of data. This avoids allocating + a single contiguous block of memory to the big data. + */ + class EXIV2API BlockMap { + public: + //! the status of the block. + enum blockType_e {bNone, bKnown, bMemory}; + //! @name Creators + //@{ + //! Default constructor. the init status of the block is bNone. + BlockMap():type_(bNone), data_(NULL),size_(0) {} + //! Destructor. Releases all managed memory. + virtual ~BlockMap() { + if (data_) {std::free(data_); data_ = NULL;} + } + //@} + //! @name Manipulators + //@{ + /*! + @brief Populate the block. + @param source The data populate to the block + @param num The size of data + */ + void populate (byte* source, size_t num) { + size_ = num; + data_ = (byte*) std::malloc(size_); + type_ = bMemory; + std::memcpy(data_, source, size_); + } + /*! + @brief Change the status to bKnow. bKnow blocks do not contain the data, + but they keep the size of data. This avoids allocating memory for parts + of the file that contain image-date (non-metadata/pixel data) which never change in exiv2. + @param num The size of the data + */ + void markKnown(size_t num) { + type_ = bKnown; + size_ = num; + } + //@} + //! @name Accessors + //@{ + bool isNone() {return type_ == bNone;} + bool isInMem () {return type_ == bMemory;} + bool isKnown () {return type_ == bKnown;} + byte* getData () {return data_;} + size_t getSize () {return size_;} + //@} + private: + blockType_e type_; + byte* data_; + size_t size_; + }; // class BlockMap + + /*! + @brief Provides remote binary file IO by implementing the BasicIo interface. This is an + abstract class. The logics for remote access are implemented in HttpIo, CurlIo, SshIo which + are the derived classes of RemoteIo. + */ + class EXIV2API RemoteIo : public BasicIo { + public: + //! Destructor. Releases all managed memory. + virtual ~RemoteIo(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Connect to the remote server, get the size of the remote file and + allocate the array of blocksMap. + + If the blocksMap is already allocated (this method has been called before), + it just reset IO position to the start and does not flush the old data. + @return 0 if successful;
+ Nonzero if failure. + */ + virtual int open(); + /*! + @brief Reset the IO position to the start. It does not release the data. + @return 0 if successful;
+ Nonzero if failure. + */ + virtual int close(); + /*! + @brief Not support this method. + @return 0 means failure + */ + virtual long write(const byte* data, long wcount); + /*! + @brief Write data that is read from another BasicIo instance to the remote file. + + The write access is done in an efficient way. It only sends the range of different + bytes between the current data and BasicIo instance to the remote machine. + + @param src Reference to another BasicIo instance. Reading start + at the source's current IO position + @return The size of BasicIo instance;
+ 0 if failure; + @throw Error In case of failure + + @note The write access is only supported by http, https, ssh. + */ + virtual long write(BasicIo& src); + + /*! + @brief Not support + @return 0 means failure + */ + virtual int putb(byte data); + /*! + @brief Read data from the memory blocks. Reading starts at the current + IO position and the position is advanced by the number of + bytes read. + If the memory blocks are not populated (False), it will connect to server + and populate the data to memory blocks. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return DataBuf instance containing the bytes read. Use the + DataBuf::size_ member to find the number of bytes read. + DataBuf::size_ will be 0 on failure. + */ + virtual DataBuf read(long rcount); + /*! + @brief Read data from the the memory blocks. Reading starts at the current + IO position and the position is advanced by the number of + bytes read. + If the memory blocks are not populated (!= bMemory), it will connect to server + and populate the data to memory blocks. + @param buf Pointer to a block of memory into which the read data + is stored. The memory block must be at least \em rcount bytes + long. + @param rcount Maximum number of bytes to read. Fewer bytes may be + read if \em rcount bytes are not available. + @return Number of bytes read from the memory block successfully;
+ 0 if failure; + */ + virtual long read(byte* buf, long rcount); + /*! + @brief Read one byte from the memory blocks. The IO position is + advanced by one byte. + If the memory block is not populated (!= bMemory), it will connect to server + and populate the data to the memory block. + @return The byte read from the memory block if successful;
+ EOF if failure; + */ + virtual int getb(); + /*! + @brief Remove the contents of the file and then transfer data from + the \em src BasicIo object into the empty file. + + The write access is done in an efficient way. It only sends the range of different + bytes between the current data and BasicIo instance to the remote machine. + + @param src Reference to another BasicIo instance. The entire contents + of src are transferred to this object. The \em src object is + invalidated by the method. + @throw Error In case of failure + + @note The write access is only supported by http, https, ssh. + */ + virtual void transfer(BasicIo& src); + /*! + @brief Move the current IO position. + @param offset Number of bytes to move the IO position + relative to the starting position specified by \em pos + @param pos Position from which the seek should start + @return 0 if successful;
+ Nonzero if failure; + */ +#if defined(_MSC_VER) + virtual int seek(int64_t offset, Position pos); +#else + virtual int seek(long offset, Position pos); +#endif + /*! + @brief Not support + @return NULL + */ + virtual byte* mmap(bool /*isWriteable*/ =false); + /*! + @brief Not support + @return 0 + */ + virtual int munmap(); + //@} + //! @name Accessors + //@{ + /*! + @brief Get the current IO position. + @return Offset from the start of the memory block + */ + virtual long tell() const; + /*! + @brief Get the current memory buffer size in bytes. + @return Size of the in memory data in bytes;
+ -1 if failure; + */ + virtual long size() const; + //!Returns true if the memory area is allocated. + virtual bool isopen() const; + //!Always returns 0 + virtual int error() const; + //!Returns true if the IO position has reach the end, otherwise false. + virtual bool eof() const; + //!Returns the URL of the file. + virtual std::string path() const; +#ifdef EXV_UNICODE_PATH + /* + @brief Like path() but returns a unicode URL path in an std::wstring. + @note This function is only available on Windows. + */ + virtual std::wstring wpath() const; +#endif + /*! + @brief Returns a temporary data storage location. Currently returns + an empty MemIo object, but callers should not rely on this + behavior since it may change. + @return An instance of BasicIo + */ + virtual BasicIo::AutoPtr temporary() const; + + /*! + @brief Mark all the bNone blocks to bKnow. This avoids allocating memory + for parts of the file that contain image-date (non-metadata/pixel data) + + @note This method should be only called after the concerned data (metadata) + are all downloaded from the remote file to memory. + */ + virtual void populateFakeData(); + //@} + + protected: + //! @name Creators + //@{ + //! Default Constructor + RemoteIo() {p_=NULL;} + //@} + + // Pimpl idiom + class Impl; + Impl* p_; + }; // class RemoteIo + + /*! + @brief Provides the http read/write access for the RemoteIo. + */ + class EXIV2API HttpIo : public RemoteIo { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that accepts the http URL on which IO will be + performed. The constructor does not open the file, and + therefore never failes. + @param url The full path of url + @param blockSize the size of the memory block. The file content is + divided into the memory blocks. These blocks are populated + on demand from the server, so it avoids copying the complete file. + */ + HttpIo(const std::string& url, size_t blockSize = 1024); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like HttpIo(const std::string& url, size_t blockSize = 1024) but accepts a + unicode url in an std::wstring. + @note This constructor is only available on Windows. + */ + HttpIo(const std::wstring& wurl, size_t blockSize = 1024); +#endif + //@} + protected: + // NOT IMPLEMENTED + //! Copy constructor + HttpIo(HttpIo& rhs); + //! Assignment operator + HttpIo& operator=(const HttpIo& rhs); + // Pimpl idiom + class HttpImpl; + + //! @name Creators + //@{ + //! Default Destructor + virtual ~HttpIo(){} + //@} + }; + +#if EXV_USE_CURL == 1 + /*! + @brief Provides the http, https read/write access and ftp read access for the RemoteIo. + This class is based on libcurl. + */ + class EXIV2API CurlIo : public RemoteIo { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that accepts the URL on which IO will be + performed. + @param url The full path of url + @param blockSize the size of the memory block. The file content is + divided into the memory blocks. These blocks are populated + on demand from the server, so it avoids copying the complete file. + @throw Error if it is unable to init curl pointer. + */ + CurlIo(const std::string& url, size_t blockSize = 0); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like CurlIo(const std::string& url, size_t blockSize = 0) but accepts a + unicode url in an std::wstring. + @note This constructor is only available on Windows. + */ + CurlIo(const std::wstring& wurl, size_t blockSize = 0); +#endif + /*! + @brief Write access is only available for some protocols. This method + will call RemoteIo::write(const byte* data, long wcount) if the write + access is available for the protocol. Otherwise, it throws the Error. + */ + long write(const byte* data, long wcount); + /*! + @brief Write access is only available for some protocols. This method + will call RemoteIo::write(BasicIo& src) if the write access is available + for the protocol. Otherwise, it throws the Error. + */ + long write(BasicIo& src); + protected: + // NOT IMPLEMENTED + //! Copy constructor + CurlIo(CurlIo& rhs); + //! Assignment operator + CurlIo& operator=(const CurlIo& rhs); + // Pimpl idiom + class CurlImpl; + + //! @name Creators + //@{ + //! Default Destructor + virtual ~CurlIo(){} + //@} + }; +#endif + +#if EXV_USE_SSH == 1 + /*! + @brief Provides the ssh read/write access and sftp read access for the RemoteIo. + This class is based on libssh. + */ + class EXIV2API SshIo : public RemoteIo { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that accepts the URL on which IO will be + performed. + @param url The full path of url + @param blockSize the size of the memory block. The file content is + divided into the memory blocks. These blocks are populated + on demand from the server, so it avoids copying the complete file. + @throw Error if it is unable to init ssh session. + */ + SshIo(const std::string& url, size_t blockSize = 1024); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like SshIo(const std::string& url, size_t blockSize = 1024) but accepts a + unicode url in an std::wstring. + @note This constructor is only available on Windows. + */ + SshIo(const std::wstring& wurl, size_t blockSize = 1024); +#endif + //@} + protected: + // NOT IMPLEMENTED + //! Copy constructor + SshIo(SshIo& rhs); + //! Assignment operator + SshIo& operator=(const SshIo& rhs); + // Pimpl idiom + class SshImpl; + + //! @name Creators + //@{ + //! Default Destructor + virtual ~SshIo(){} + //@} + }; +#endif + +// ***************************************************************************** +// template, inline and free functions + + /*! + @brief Read file \em path into a DataBuf, which is returned. + @return Buffer containing the file. + @throw Error In case of failure. + */ + EXIV2API DataBuf readFile(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like readFile() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + EXIV2API DataBuf readFile(const std::wstring& wpath); +#endif + /*! + @brief Write DataBuf \em buf to file \em path. + @return Return the number of bytes written. + @throw Error In case of failure. + */ + EXIV2API long writeFile(const DataBuf& buf, const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like writeFile() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + EXIV2API long writeFile(const DataBuf& buf, const std::wstring& wpath); +#endif + /*! + @brief replace each substring of the subject that matches the given search string with the given replacement. + @return the subject after replacing. + */ + EXIV2API std::string ReplaceStringInPlace(std::string subject, const std::string& search, + const std::string& replace); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like ReplaceStringInPlace() but accepts a unicode path in an std::wstring. + @return the subject after replacing. + @note This function is only available on Windows. + */ + EXIV2API std::wstring ReplaceStringInPlace(std::wstring subject, const std::wstring& search, + const std::wstring& replace); +#endif +#if EXV_USE_CURL == 1 + /*! + @brief The callback function is called by libcurl to write the data + */ + EXIV2API size_t curlWriter(char* data, size_t size, size_t nmemb, std::string* writerData); +#endif +} // namespace Exiv2 +#endif // #ifndef BASICIO_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/bmpimage.hpp b/vendor/exiv2-0.25/include/exiv2/bmpimage.hpp new file mode 100644 index 0000000..30dd34d --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/bmpimage.hpp @@ -0,0 +1,134 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file bmpimage.hpp + @brief Windows Bitmap (BMP) image + @version $Rev: 3091 $ + @author Marco Piovanelli, Ovolab (marco) + marco.piovanelli@pobox.com + @date 05-Mar-2007, marco: created + */ +#ifndef BMPIMAGE_HPP_ +#define BMPIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "iptc.hpp" +#include "image.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add Windows Bitmap (BMP) to the supported image formats + namespace ImageType { + const int bmp = 14; //!< Windows bitmap (bmp) image type (see class BmpImage) + } + + /*! + @brief Class to access Windows bitmaps. This is just a stub - we only + read width and height. + */ + class EXIV2API BmpImage : public Image { + //! @name NOT Implemented + //@{ + //! Copy constructor + BmpImage(const BmpImage& rhs); + //! Assignment operator + BmpImage& operator=(const BmpImage& rhs); + //@} + + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open a Windows bitmap image. Since the + constructor can not return a result, callers should check the + good() method after object construction to determine success + or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + BmpImage(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + /*! + @brief Todo: Write metadata back to the image. This method is not + yet(?) implemented. Calling it will throw an Error(31). + */ + void writeMetadata(); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setExifData(const ExifData& exifData); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setIptcData(const IptcData& iptcData); + /*! + @brief Not supported. Calling this function will throw an instance + of Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + }; // class BmpImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new BmpImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newBmpInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Windows Bitmap image. + EXIV2API bool isBmpType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef BMPIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/config.h b/vendor/exiv2-0.25/include/exiv2/config.h new file mode 100644 index 0000000..d03a8cd --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/config.h @@ -0,0 +1,51 @@ +// config.h +// +#ifdef _MSC_VER +# ifdef EXV_MSVC_CONFIGURE +# include "exv_msvc_configure.h" +# else +# include "exv_msvc.h" +# endif +#else +# include "exv_conf.h" +#endif + +// Linux GCC 4.8 appears to be confused about strerror_r +#ifndef EXV_STRERROR_R_CHAR_P +#ifdef __gnu_linux__ +#define EXV_STRERROR_R_CHAR_P +#endif +#endif + +#if defined(__MINGW32__) || defined(__MINGW64__) +#ifndef __MING__ +#define __MING__ 1 +#endif +// Don't know why MinGW refuses to link libregex +#ifdef EXV_HAVE_REGEX +#undef EXV_HAVE_REGEX +#endif +#endif + +#ifndef __CYGWIN__ +#if defined(__CYGWIN32__) || defined(__CYGWIN64__) +#define __CYGWIN__ 1 +#endif +#endif + +#ifndef __LITTLE_ENDIAN__ +#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define __LITTLE_ENDIAN__ 1 +#endif +#endif +#endif + +#ifndef __LITTLE_ENDIAN__ +#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW__) +#define __LITTLE_ENDIAN__ 1 +#endif +#endif + +// That's all Folks! +// diff --git a/vendor/exiv2-0.25/include/exiv2/convert.hpp b/vendor/exiv2-0.25/include/exiv2/convert.hpp new file mode 100644 index 0000000..1f64ffd --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/convert.hpp @@ -0,0 +1,115 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file convert.hpp + @brief Exif and IPTC conversions to and from XMP + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net
+ Vladimir Nadvornik (vn) + nadvornik@suse.cz + @date 17-Mar-08, ahu: created basic converter framework
+ 20-May-08, vn: added actual conversion logic + */ +#ifndef CONVERT_HPP_ +#define CONVERT_HPP_ + +// included header files +#include "config.h" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + class IptcData; + class XmpData; + +// ***************************************************************************** +// free functions, template and inline definitions + + //! Convert (copy) Exif tags to XMP properties. + EXIV2API void copyExifToXmp(const ExifData& exifData, XmpData& xmpData); + //! Convert (move) Exif tags to XMP properties, remove converted Exif tags. + EXIV2API void moveExifToXmp(ExifData& exifData, XmpData& xmpData); + + //! Convert (copy) XMP properties to Exif tags. + EXIV2API void copyXmpToExif(const XmpData& xmpData, ExifData& exifData); + //! Convert (move) XMP properties to Exif tags, remove converted XMP properties. + EXIV2API void moveXmpToExif(XmpData& xmpData, ExifData& exifData); + + //! Detect which metadata are newer and perform a copy in appropriate direction. + EXIV2API void syncExifWithXmp(ExifData& exifData, XmpData& xmpData); + + //! Convert (copy) IPTC datasets to XMP properties. + EXIV2API void copyIptcToXmp(const IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0); + //! Convert (move) IPTC datasets to XMP properties, remove converted IPTC datasets. + EXIV2API void moveIptcToXmp(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0); + + //! Convert (copy) XMP properties to IPTC datasets. + EXIV2API void copyXmpToIptc(const XmpData& xmpData, IptcData& iptcData); + //! Convert (move) XMP properties to IPTC tags, remove converted XMP properties. + EXIV2API void moveXmpToIptc(XmpData& xmpData, IptcData& iptcData); + + /*! + @brief Convert character encoding of \em str from \em from to \em to. + If the function succeeds, \em str contains the result string. + + This function uses the iconv library, if the %Exiv2 library was compiled + with iconv support. Otherwise, on Windows, it uses Windows functions to + support a limited number of conversions and fails with a warning if an + unsupported conversion is attempted. If the function is called but %Exiv2 + was not compiled with iconv support and can't use Windows functions, it + fails with a warning. + + The conversions supported on Windows without iconv are: + + + + + + + + + + + +
fromto
UTF-8 UCS-2BE
UTF-8 UCS-2LE
UCS-2BE UTF-8
UCS-2BE UCS-2LE
UCS-2LE UTF-8
UCS-2LE UCS-2BE
ISO-8859-1UTF-8
ASCII UTF-8
+ + @param str The string to convert. It is updated to the converted string, + which may have a different size. If the function call fails, + the string is not modified. + @param from Charset in which the input string is encoded as a name + understood by \c iconv_open(3). + @param to Charset to convert the string to as a name + understood by \c iconv_open(3). + @return Return \c true if the conversion was successful, else \c false. + */ + EXIV2API bool convertStringCharset(std::string& str, const char* from, const char* to); + +} // namespace Exiv2 + +#endif // #ifndef CONVERT_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/cr2image.hpp b/vendor/exiv2-0.25/include/exiv2/cr2image.hpp new file mode 100644 index 0000000..ead4df7 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/cr2image.hpp @@ -0,0 +1,160 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file cr2image.hpp + @brief Class Cr2Image + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 22-Apr-06, ahu: created + */ +#ifndef CR2IMAGE_HPP_ +#define CR2IMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add CR2 to the supported image formats + namespace ImageType { + const int cr2 = 7; //!< CR2 image type (see class Cr2Image) + } + + /*! + @brief Class to access raw Canon CR2 images. Exif metadata + is supported directly, IPTC is read from the Exif data, if present. + */ + class EXIV2API Cr2Image : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing CR2 image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + Cr2Image(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Not supported. CR2 format does not contain a comment. + Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT implemented + //@{ + //! Copy constructor + Cr2Image(const Cr2Image& rhs); + //! Assignment operator + Cr2Image& operator=(const Cr2Image& rhs); + //@} + + }; // class Cr2Image + + /*! + @brief Stateless parser class for data in CR2 format. Images use this + class to decode and encode CR2 data. + See class TiffParser for details. + */ + class EXIV2API Cr2Parser { + public: + /*! + @brief Decode metadata from a buffer \em pData of length \em size + with data in CR2 format to the provided metadata containers. + See TiffParser::decode(). + */ + static ByteOrder decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ); + /*! + @brief Encode metadata from the provided metadata to CR2 format. + See TiffParser::encode(). + */ + static WriteMethod encode( + BasicIo& io, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData + ); + + }; // class Cr2Parser + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new Cr2Image instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a CR2 image. + EXIV2API bool isCr2Type(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef CR2IMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/crwimage.hpp b/vendor/exiv2-0.25/include/exiv2/crwimage.hpp new file mode 100644 index 0000000..f635049 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/crwimage.hpp @@ -0,0 +1,177 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file crwimage.hpp + @brief Class CrwImage to access Canon CRW images.
+ References:
+ The Canon RAW (CRW) File Format by Phil Harvey + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 28-Aug-05, ahu: created + */ +#ifndef CRWIMAGE_HPP_ +#define CRWIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "image.hpp" +#include "basicio.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + class IptcData; + +// ***************************************************************************** +// class definitions + + // Add CRW to the supported image formats + namespace ImageType { + const int crw = 3; //!< CRW image type (see class CrwImage) + } + + /*! + @brief Class to access raw Canon CRW images. Only Exif metadata and a + comment are supported. CRW format does not contain IPTC metadata. + */ + class EXIV2API CrwImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing CRW image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + CrwImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Not supported. CRW format does not contain IPTC metadata. + Calling this function will throw an Error(32). + */ + void setIptcData(const IptcData& iptcData); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + CrwImage(const CrwImage& rhs); + //! Assignment operator + CrwImage& operator=(const CrwImage& rhs); + //@} + + }; // class CrwImage + + /*! + Stateless parser class for Canon CRW images (Ciff format). + */ + class EXIV2API CrwParser { + public: + /*! + @brief Decode metadata from a Canon CRW image in data buffer \em pData + of length \em size into \em crwImage. + + This is the entry point to access image data in Ciff format. The + parser uses classes CiffHeader, CiffEntry, CiffDirectory. + + @param pCrwImage Pointer to the %Exiv2 CRW image to hold the metadata + read from the buffer. + @param pData Pointer to the data buffer. Must point to the data of + a CRW image; no checks are performed. + @param size Length of the data buffer. + + @throw Error If the data buffer cannot be parsed. + */ + static void decode(CrwImage* pCrwImage, const byte* pData, uint32_t size); + /*! + @brief Encode metadata from the CRW image into a data buffer (the + binary CRW image). + + @param blob Data buffer for the binary image (target). + @param pData Pointer to the binary image data buffer. Must + point to data in CRW format; no checks are + performed. + @param size Length of the data buffer. + @param pCrwImage Pointer to the %Exiv2 CRW image with the metadata to + encode. + + @throw Error If the metadata from the CRW image cannot be encoded. + */ + static void encode( + Blob& blob, + const byte* pData, + uint32_t size, + const CrwImage* pCrwImage + ); + + }; // class CrwParser + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new CrwImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newCrwInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a CRW image. + EXIV2API bool isCrwType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef CRWIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/datasets.hpp b/vendor/exiv2-0.25/include/exiv2/datasets.hpp new file mode 100644 index 0000000..d424574 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/datasets.hpp @@ -0,0 +1,371 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file datasets.hpp + @brief IPTC dataset and type information + @version $Rev: 3091 $ + @author Brad Schick (brad) + @date 24-Jul-04, brad: created + */ +#ifndef DATASETS_HPP_ +#define DATASETS_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "metadatum.hpp" + +// + standard includes +#include +#include // for std::pair +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + //! Details of an IPTC record. + struct EXIV2API RecordInfo { + //! Constructor + RecordInfo(uint16_t recordId, const char* name, const char* desc); + uint16_t recordId_; //!< Record id + const char* name_; //!< Record name (one word) + const char* desc_; //!< Record description + }; + + //! Details of an IPTC dataset. + struct EXIV2API DataSet { + //! Constructor + DataSet( + uint16_t number, + const char* name, + const char* title, + const char* desc, + bool mandatory, + bool repeatable, + uint32_t minbytes, + uint32_t maxbytes, + TypeId type, + uint16_t recordId, + const char* photoshop + ); + uint16_t number_; //!< Dataset number + const char* name_; //!< Dataset name + const char* title_; //!< Dataset title or label + const char* desc_; //!< Dataset description + bool mandatory_; //!< True if dataset is mandatory + bool repeatable_; //!< True if dataset is repeatable + uint32_t minbytes_; //!< Minimum number of bytes + uint32_t maxbytes_; //!< Maximum number of bytes + TypeId type_; //!< Exiv2 default type + uint16_t recordId_; //!< Record id + const char* photoshop_; //!< Photoshop string + }; // struct DataSet + + //! IPTC dataset reference, implemented as a static class. + class EXIV2API IptcDataSets { + public: + /*! + @name Record identifiers + @brief Record identifiers to logically group dataSets. There are other + possible record types, but they are not standardized by the IPTC + IIM4 standard (and not commonly used in images). + */ + //@{ + static const uint16_t invalidRecord = 0; + static const uint16_t envelope = 1; + static const uint16_t application2 = 2; + //@} + + //! @name Dataset identifiers + //@{ + static const uint16_t ModelVersion = 0; + static const uint16_t Destination = 5; + static const uint16_t FileFormat = 20; + static const uint16_t FileVersion = 22; + static const uint16_t ServiceId = 30; + static const uint16_t EnvelopeNumber = 40; + static const uint16_t ProductId = 50; + static const uint16_t EnvelopePriority = 60; + static const uint16_t DateSent = 70; + static const uint16_t TimeSent = 80; + static const uint16_t CharacterSet = 90; + static const uint16_t UNO = 100; + static const uint16_t ARMId = 120; + static const uint16_t ARMVersion = 122; + static const uint16_t RecordVersion = 0; + static const uint16_t ObjectType = 3; + static const uint16_t ObjectAttribute = 4; + static const uint16_t ObjectName = 5; + static const uint16_t EditStatus = 7; + static const uint16_t EditorialUpdate = 8; + static const uint16_t Urgency = 10; + static const uint16_t Subject = 12; + static const uint16_t Category = 15; + static const uint16_t SuppCategory = 20; + static const uint16_t FixtureId = 22; + static const uint16_t Keywords = 25; + static const uint16_t LocationCode = 26; + static const uint16_t LocationName = 27; + static const uint16_t ReleaseDate = 30; + static const uint16_t ReleaseTime = 35; + static const uint16_t ExpirationDate = 37; + static const uint16_t ExpirationTime = 38; + static const uint16_t SpecialInstructions = 40; + static const uint16_t ActionAdvised = 42; + static const uint16_t ReferenceService = 45; + static const uint16_t ReferenceDate = 47; + static const uint16_t ReferenceNumber = 50; + static const uint16_t DateCreated = 55; + static const uint16_t TimeCreated = 60; + static const uint16_t DigitizationDate = 62; + static const uint16_t DigitizationTime = 63; + static const uint16_t Program = 65; + static const uint16_t ProgramVersion = 70; + static const uint16_t ObjectCycle = 75; + static const uint16_t Byline = 80; + static const uint16_t BylineTitle = 85; + static const uint16_t City = 90; + static const uint16_t SubLocation = 92; + static const uint16_t ProvinceState = 95; + static const uint16_t CountryCode = 100; + static const uint16_t CountryName = 101; + static const uint16_t TransmissionReference = 103; + static const uint16_t Headline = 105; + static const uint16_t Credit = 110; + static const uint16_t Source = 115; + static const uint16_t Copyright = 116; + static const uint16_t Contact = 118; + static const uint16_t Caption = 120; + static const uint16_t Writer = 122; + static const uint16_t RasterizedCaption = 125; + static const uint16_t ImageType = 130; + static const uint16_t ImageOrientation = 131; + static const uint16_t Language = 135; + static const uint16_t AudioType = 150; + static const uint16_t AudioRate = 151; + static const uint16_t AudioResolution = 152; + static const uint16_t AudioDuration = 153; + static const uint16_t AudioOutcue = 154; + static const uint16_t PreviewFormat = 200; + static const uint16_t PreviewVersion = 201; + static const uint16_t Preview = 202; + //@} + + private: + //! Prevent construction: not implemented. + IptcDataSets() {} + //! Prevent copy-construction: not implemented. + IptcDataSets(const IptcDataSets& rhs); + //! Prevent assignment: not implemented. + IptcDataSets& operator=(const IptcDataSets& rhs); + + public: + /*! + @brief Return the name of the dataset. + @param number The dataset number + @param recordId The IPTC record Id + @return The name of the dataset or a string containing the hexadecimal + value of the dataset in the form "0x01ff", if this is an unknown + dataset. + */ + static std::string dataSetName(uint16_t number, uint16_t recordId); + /*! + @brief Return the title (label) of the dataset. + @param number The dataset number + @param recordId The IPTC record Id + @return The title (label) of the dataset + */ + static const char* dataSetTitle(uint16_t number, uint16_t recordId); + /*! + @brief Return the description of the dataset. + @param number The dataset number + @param recordId The IPTC record Id + @return The description of the dataset + */ + static const char* dataSetDesc(uint16_t number, uint16_t recordId); + /*! + @brief Return the photohsop name of a given dataset. + @param number The dataset number + @param recordId The IPTC record Id + @return The name used by photoshop for a dataset or an empty + string if photoshop does not use the dataset. + */ + static const char* dataSetPsName(uint16_t number, uint16_t recordId); + /*! + @brief Check if a given dataset is repeatable + @param number The dataset number + @param recordId The IPTC record Id + @return true if the given dataset is repeatable otherwise false + */ + static bool dataSetRepeatable(uint16_t number, uint16_t recordId); + /*! + @brief Return the dataSet number for dataset name and record id + + @param dataSetName dataSet name + @param recordId recordId + + @return dataSet number + + @throw Error if the \em dataSetName or \em recordId are invalid + */ + static uint16_t dataSet(const std::string& dataSetName, uint16_t recordId); + //! Return the type for dataSet number and Record id + static TypeId dataSetType(uint16_t number, uint16_t recordId); + /*! + @brief Return the name of the Record + @param recordId The record id + @return The name of the record or a string containing the hexadecimal + value of the record in the form "0x01ff", if this is an + unknown record. + */ + static std::string recordName(uint16_t recordId); + /*! + @brief Return the description of a record + @param recordId Record Id number + @return the description of the Record + */ + static const char* recordDesc(uint16_t recordId); + /*! + @brief Return the Id number of a record + @param recordName Name of a record type + @return the Id number of a Record + @throw Error if the record is not known; + */ + static uint16_t recordId(const std::string& recordName); + //! Return read-only list of built-in Envelope Record datasets + static const DataSet* envelopeRecordList(); + //! Return read-only list of built-in Application2 Record datasets + static const DataSet* application2RecordList(); + //! Print a list of all dataSets to output stream + static void dataSetList(std::ostream& os); + + private: + static int dataSetIdx(uint16_t number, uint16_t recordId); + static int dataSetIdx(const std::string& dataSetName, uint16_t recordId); + + static const DataSet* records_[]; + static const RecordInfo recordInfo_[]; + + }; // class IptcDataSets + + /*! + @brief Concrete keys for IPTC metadata. + */ + class EXIV2API IptcKey : public Key { + public: + //! Shortcut for an %IptcKey auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + /*! + @brief Constructor to create an IPTC key from a key string. + + @param key The key string. + @throw Error if the first part of the key is not 'Iptc' or + the remaining parts of the key cannot be parsed and + converted to a record name and a dataset name. + */ + explicit IptcKey(const std::string& key); + /*! + @brief Constructor to create an IPTC key from dataset and record ids. + @param tag Dataset id + @param record Record id + */ + IptcKey(uint16_t tag, uint16_t record); + //! Copy constructor + IptcKey(const IptcKey& rhs); + //! Destructor + virtual ~IptcKey(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Assignment operator. + */ + IptcKey& operator=(const IptcKey& rhs); + //@} + + //! @name Accessors + //@{ + virtual std::string key() const; + virtual const char* familyName() const; + /*! + @brief Return the name of the group (the second part of the key). + For IPTC keys, the group name is the record name. + */ + virtual std::string groupName() const; + virtual std::string tagName() const; + virtual std::string tagLabel() const; + virtual uint16_t tag() const; + AutoPtr clone() const; + //! Return the name of the record + std::string recordName() const; + //! Return the record id + uint16_t record() const; + //@} + + protected: + //! @name Manipulators + //@{ + /*! + @brief Set the key corresponding to the dataset and record id. + The key is of the form 'Iptc.recordName.dataSetName'. + */ + void makeKey(); + /*! + @brief Parse and convert the key string into dataset and record id. + Updates data members if the string can be decomposed, or throws + \em Error. + + @throw Error if the key cannot be decomposed. + */ + void decomposeKey(); + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual IptcKey* clone_() const; + + // DATA + static const char* familyName_; + + uint16_t tag_; //!< Tag value + uint16_t record_; //!< Record value + std::string key_; //!< Key + + }; // class IptcKey + +// ***************************************************************************** +// free functions + + //! Output operator for dataSet + EXIV2API std::ostream& operator<<(std::ostream& os, const DataSet& dataSet); + +} // namespace Exiv2 + +#endif // #ifndef DATASETS_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/easyaccess.hpp b/vendor/exiv2-0.25/include/exiv2/easyaccess.hpp new file mode 100644 index 0000000..de6514f --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/easyaccess.hpp @@ -0,0 +1,88 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file easyaccess.hpp + @brief Provides easy (high-level) access to some Exif meta data. + @version $Rev: 3091 $ + @author Carsten Pfeiffer + @date 28-Feb-09, gis: created + */ +#ifndef EASYACCESS_HPP_ +#define EASYACCESS_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" + +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + + //! Return the orientation of the image + EXIV2API ExifData::const_iterator orientation(const ExifData& ed); + //! Return the ISO speed used to shoot the image + EXIV2API ExifData::const_iterator isoSpeed(const ExifData& ed); + //! Return the flash bias value + EXIV2API ExifData::const_iterator flashBias(const ExifData& ed); + //! Return the exposure mode setting + EXIV2API ExifData::const_iterator exposureMode(const ExifData& ed); + //! Return the scene mode setting + EXIV2API ExifData::const_iterator sceneMode(const ExifData& ed); + //! Return the macro mode setting + EXIV2API ExifData::const_iterator macroMode(const ExifData& ed); + //! Return the image quality setting + EXIV2API ExifData::const_iterator imageQuality(const ExifData& ed); + //! Return the white balance setting + EXIV2API ExifData::const_iterator whiteBalance(const ExifData& ed); + //! Return the name of the lens used + EXIV2API ExifData::const_iterator lensName(const ExifData& ed); + //! Return the saturation level + EXIV2API ExifData::const_iterator saturation(const ExifData& ed); + //! Return the sharpness level + EXIV2API ExifData::const_iterator sharpness(const ExifData& ed); + //! Return the contrast level + EXIV2API ExifData::const_iterator contrast(const ExifData& ed); + //! Return the scene capture type + EXIV2API ExifData::const_iterator sceneCaptureType(const ExifData& ed); + //! Return the metering mode setting + EXIV2API ExifData::const_iterator meteringMode(const ExifData& ed); + //! Return the camera make + EXIV2API ExifData::const_iterator make(const ExifData& ed); + //! Return the camera model + EXIV2API ExifData::const_iterator model(const ExifData& ed); + //! Return the exposure time + EXIV2API ExifData::const_iterator exposureTime(const ExifData& ed); + //! Return the F number + EXIV2API ExifData::const_iterator fNumber(const ExifData& ed); + //! Return the subject distance + EXIV2API ExifData::const_iterator subjectDistance(const ExifData& ed); + //! Return the camera serial number + EXIV2API ExifData::const_iterator serialNumber(const ExifData& ed); + //! Return the focal length setting + EXIV2API ExifData::const_iterator focalLength(const ExifData& ed); + //! Return the AF point + EXIV2API ExifData::const_iterator afPoint(const ExifData& ed); + +} // namespace Exiv2 + +#endif // EASYACCESS_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/epsimage.hpp b/vendor/exiv2-0.25/include/exiv2/epsimage.hpp new file mode 100644 index 0000000..7a344fb --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/epsimage.hpp @@ -0,0 +1,128 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file epsimage.hpp + @brief EPS image. +
References: +
[1] Adobe PostScript Language Document Structuring Conventions Specification, Version 3.0, September 1992 +
[2] Adobe Encapsulated PostScript File Format Specification, Version 3.0, May 1992 +
[3] Adobe XMP Specification Part 3: Storage in Files, July 2010 +
[4] Re: Thumbnail data format in ai file, Dec 2003 + @version $Rev: $ + @author Michael Ulbrich (mul) + mul@rentapacs.de + @author Volker Grabsch (vog) + vog@notjusthosting.com + @date 7-Mar-2011, vog: created + */ +#ifndef EPSIMAGE_HPP_ +#define EPSIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 +{ + +// ***************************************************************************** +// class definitions + + // Add EPS to the supported image formats + namespace ImageType { + const int eps = 18; //!< EPS image type + } + + /*! + @brief Class to access EPS images. + */ + class EXIV2API EpsImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open a EPS image. Since the + constructor can't return a result, callers should check the + good() method after object construction to determine success + or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + EpsImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Not supported. + Calling this function will throw an instance of Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + EpsImage(const EpsImage& rhs); + //! Assignment operator + EpsImage& operator=(const EpsImage& rhs); + //@} + + }; // class EpsImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new EpsImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newEpsInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a EPS image. + EXIV2API bool isEpsType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef EPSIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/error.hpp b/vendor/exiv2-0.25/include/exiv2/error.hpp new file mode 100644 index 0000000..ab56576 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/error.hpp @@ -0,0 +1,331 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file error.hpp + @brief Error class for exceptions, log message class + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 15-Jan-04, ahu: created
+ 11-Feb-04, ahu: isolated as a component + */ +#ifndef ERROR_HPP_ +#define ERROR_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + /*! + @brief Class for a log message, used by the library. Applications can set + the log level and provide a customer log message handler (callback + function). + + This class is meant to be used as a temporary object with the + related macro-magic like this: + + + EXV_WARNING << "Warning! Something looks fishy.\n"; + + + which translates to + + + if (LogMsg::warn >= LogMsg::level() && LogMsg::handler()) + LogMsg(LogMsg::warn).os() << "Warning! Something looks fishy.\n"; + + + The macros EXV_DEBUG, EXV_INFO, EXV_WARNING and EXV_ERROR are + shorthands and ensure efficient use of the logging facility: If a + log message doesn't need to be generated because of the log level + setting, the temp object is not even created. + + Caveat: The entire log message is not processed in this case. So don't + make that call any logic that always needs to be executed. + */ + class EXIV2API LogMsg { + //! Prevent copy-construction: not implemented. + LogMsg(const LogMsg&); + //! Prevent assignment: not implemented. + LogMsg& operator=(const LogMsg&); + public: + /*! + @brief Defined log levels. To suppress all log messages, either set the + log level to \c mute or set the log message handler to 0. + */ + enum Level { debug = 0, info = 1, warn = 2, error = 3, mute = 4 }; + /*! + @brief Type for a log message handler function. The function receives + the log level and message and can process it in an application + specific way. The default handler sends the log message to + standard error. + */ + typedef void (*Handler)(int, const char*); + + //! @name Creators + //@{ + //! Constructor, takes the log message type as an argument + explicit LogMsg(Level msgType) : msgType_(msgType) {} + //! Destructor, passes the log message to the message handler depending on the log level + ~LogMsg() { if (msgType_ >= level_ && handler_) handler_(msgType_, os_.str().c_str()); } + //@} + + //! @name Manipulators + //@{ + //! Return a reference to the ostringstream which holds the log message + std::ostringstream& os() { return os_; } + //@} + + /*! + @brief Set the log level. Only log messages with a level greater or + equal \em level are sent to the log message handler. Default + log level is \c warn. To suppress all log messages, set the log + level to \c mute (or set the log message handler to 0). + */ + static void setLevel(Level level) { level_ = level; } + /*! + @brief Set the log message handler. The default handler writes log + messages to standard error. To suppress all log messages, set + the log message handler to 0 (or set the log level to \c mute). + */ + static void setHandler(Handler handler) { handler_ = handler; } + //! Return the current log level + static Level level() { return level_; } + //! Return the current log message handler + static Handler handler() { return handler_; } + //! The default log handler. Sends the log message to standard error. + static void defaultHandler(int level, const char* s); + + private: + // DATA + // The output level. Only messages with type >= level_ will be written + static Level level_; + // The log handler in use + static Handler handler_; + // The type of this log message + const Level msgType_; + // Holds the log message until it is passed to the message handler + std::ostringstream os_; + + }; // class LogMsg + +// Macros for simple access +//! Shorthand to create a temp debug log message object and return its ostringstream +#define EXV_DEBUG if (LogMsg::debug >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::debug).os() +//! Shorthand for a temp info log message object and return its ostringstream +#define EXV_INFO if (LogMsg::info >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::info).os() +//! Shorthand for a temp warning log message object and return its ostringstream +#define EXV_WARNING if (LogMsg::warn >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::warn).os() +//! Shorthand for a temp error log message object and return its ostringstream +#define EXV_ERROR if (LogMsg::error >= LogMsg::level() && LogMsg::handler()) LogMsg(LogMsg::error).os() + +#ifdef _MSC_VER +// Disable MSVC warnings "non - DLL-interface classkey 'identifier' used as base +// for DLL-interface classkey 'identifier'" +# pragma warning( disable : 4275 ) +#endif + + //! Generalised toString function + template + std::basic_string toBasicString(const T& arg) + { + std::basic_ostringstream os; + os << arg; + return os.str(); + } + + /*! + @brief Error class interface. Allows the definition and use of a hierarchy + of error classes which can all be handled in one catch block. + Inherits from the standard exception base-class, to make life + easier for library users (they have the option of catching most + things via std::exception). + */ + class EXIV2API AnyError : public std::exception { + public: + //! @name Creators + //@{ + //! Virtual destructor. + virtual ~AnyError() throw(); + //@} + + //! @name Accessors + //@{ + //! Return the error code. + virtual int code() const throw() =0; + //@} + }; // AnyError + + //! %AnyError output operator + inline std::ostream& operator<<(std::ostream& os, const AnyError& error) + { + return os << error.what(); + } + + /*! + @brief Simple error class used for exceptions. An output operator is + provided to print errors to a stream. + */ + template + class EXV_DLLPUBLIC BasicError : public AnyError { + public: + //! @name Creators + //@{ + //! Constructor taking only an error code + EXV_DLLLOCAL explicit BasicError(int code); + //! Constructor taking an error code and one argument + template + EXV_DLLLOCAL BasicError(int code, const A& arg1); + //! Constructor taking an error code and two arguments + template + EXV_DLLLOCAL BasicError(int code, const A& arg1, const B& arg2); + //! Constructor taking an error code and three arguments + template + EXV_DLLLOCAL BasicError(int code, const A& arg1, const B& arg2, const C& arg3); + //! Virtual destructor. (Needed because of throw()) + EXV_DLLLOCAL virtual ~BasicError() throw(); + //@} + + //! @name Accessors + //@{ + EXV_DLLLOCAL virtual int code() const throw(); + /*! + @brief Return the error message as a C-string. The pointer returned by what() + is valid only as long as the BasicError object exists. + */ + EXV_DLLLOCAL virtual const char* what() const throw(); +#ifdef EXV_UNICODE_PATH + /*! + @brief Return the error message as a wchar_t-string. The pointer returned by + wwhat() is valid only as long as the BasicError object exists. + */ + EXV_DLLLOCAL virtual const wchar_t* wwhat() const throw(); +#endif + //@} + + private: + //! @name Manipulators + //@{ + //! Assemble the error message from the arguments + EXIV2API void setMsg(); + //@} + + // DATA + int code_; //!< Error code + int count_; //!< Number of arguments + std::basic_string arg1_; //!< First argument + std::basic_string arg2_; //!< Second argument + std::basic_string arg3_; //!< Third argument + std::string msg_; //!< Complete error message +#ifdef EXV_UNICODE_PATH + std::wstring wmsg_; //!< Complete error message as a wide string +#endif + }; // class BasicError + + //! Error class used for exceptions (std::string based) + typedef BasicError Error; +#ifdef EXV_UNICODE_PATH + //! Error class used for exceptions (std::wstring based) + typedef BasicError WError; +#endif + +// ***************************************************************************** +// free functions, template and inline definitions + + //! Return the error message for the error with code \em code. + EXIV2API const char* errMsg(int code); + + template + BasicError::BasicError(int code) + : code_(code), count_(0) + { + setMsg(); + } + + template template + BasicError::BasicError(int code, const A& arg1) + : code_(code), count_(1), arg1_(toBasicString(arg1)) + { + setMsg(); + } + + template template + BasicError::BasicError(int code, const A& arg1, const B& arg2) + : code_(code), count_(2), + arg1_(toBasicString(arg1)), + arg2_(toBasicString(arg2)) + { + setMsg(); + } + + template template + BasicError::BasicError(int code, const A& arg1, const B& arg2, const C& arg3) + : code_(code), count_(3), + arg1_(toBasicString(arg1)), + arg2_(toBasicString(arg2)), + arg3_(toBasicString(arg3)) + { + setMsg(); + } + + template + BasicError::~BasicError() throw() + { + } + + template + int BasicError::code() const throw() + { + return code_; + } + + template + const char* BasicError::what() const throw() + { + return msg_.c_str(); + } + +#ifdef EXV_UNICODE_PATH + template + const wchar_t* BasicError::wwhat() const throw() + { + return wmsg_.c_str(); + } +#endif +#ifdef _MSC_VER +# pragma warning( default : 4275 ) +#endif + +} // namespace Exiv2 +#endif // #ifndef ERROR_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/exif.hpp b/vendor/exiv2-0.25/include/exiv2/exif.hpp new file mode 100644 index 0000000..92b7a91 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/exif.hpp @@ -0,0 +1,631 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file exif.hpp + @brief Encoding and decoding of Exif data + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 09-Jan-04, ahu: created + */ +#ifndef EXIF_HPP_ +#define EXIF_HPP_ + +// ***************************************************************************** +// included header files +#include "metadatum.hpp" +#include "tags.hpp" +#include "value.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +/*! + @brief Provides classes and functions to encode and decode Exif and Iptc data. + The libexiv2 API consists of the objects of this namespace. + */ +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + +// ***************************************************************************** +// class definitions + + /*! + @brief An Exif metadatum, consisting of an ExifKey and a Value and + methods to manipulate these. + */ + class EXIV2API Exifdatum : public Metadatum { + template friend Exifdatum& setValue(Exifdatum&, const T&); + public: + //! @name Creators + //@{ + /*! + @brief Constructor for new tags created by an application. The + %Exifdatum is created from a \em key / value pair. %Exifdatum copies + (clones) the \em key and value if one is provided. Alternatively, + a program can create an 'empty' %Exifdatum with only a key + and set the value using setValue(). + + @param key %ExifKey. + @param pValue Pointer to an %Exifdatum value. + @throw Error if the key cannot be parsed and converted. + */ + explicit Exifdatum(const ExifKey& key, const Value* pValue =0); + //! Copy constructor + Exifdatum(const Exifdatum& rhs); + //! Destructor + virtual ~Exifdatum(); + //@} + + //! @name Manipulators + //@{ + //! Assignment operator + Exifdatum& operator=(const Exifdatum& rhs); + /*! + @brief Assign \em value to the %Exifdatum. The type of the new Value + is set to UShortValue. + */ + Exifdatum& operator=(const uint16_t& value); + /*! + @brief Assign \em value to the %Exifdatum. The type of the new Value + is set to ULongValue. + */ + Exifdatum& operator=(const uint32_t& value); + /*! + @brief Assign \em value to the %Exifdatum. The type of the new Value + is set to URationalValue. + */ + Exifdatum& operator=(const URational& value); + /*! + @brief Assign \em value to the %Exifdatum. The type of the new Value + is set to ShortValue. + */ + Exifdatum& operator=(const int16_t& value); + /*! + @brief Assign \em value to the %Exifdatum. The type of the new Value + is set to LongValue. + */ + Exifdatum& operator=(const int32_t& value); + /*! + @brief Assign \em value to the %Exifdatum. The type of the new Value + is set to RationalValue. + */ + Exifdatum& operator=(const Rational& value); + /*! + @brief Assign \em value to the %Exifdatum. + Calls setValue(const std::string&). + */ + Exifdatum& operator=(const std::string& value); + /*! + @brief Assign \em value to the %Exifdatum. + Calls setValue(const Value*). + */ + Exifdatum& operator=(const Value& value); + void setValue(const Value* pValue); + /*! + @brief Set the value to the string \em value. Uses Value::read(const + std::string&). If the %Exifdatum does not have a Value yet, + then a %Value of the correct type for this %Exifdatum is + created. An AsciiValue is created for unknown tags. Return + 0 if the value was read successfully. + */ + int setValue(const std::string& value); + /*! + @brief Set the data area by copying (cloning) the buffer pointed to + by \em buf. + + Values may have a data area, which can contain additional + information besides the actual value. This method is used to set such + a data area. + + @param buf Pointer to the source data area + @param len Size of the data area + @return Return -1 if the %Exifdatum does not have a value yet or the + value has no data area, else 0. + */ + int setDataArea(const byte* buf, long len); + //@} + + //! @name Accessors + //@{ + //! Return the key of the %Exifdatum. + std::string key() const; + const char* familyName() const; + std::string groupName() const; + std::string tagName() const; + std::string tagLabel() const; + uint16_t tag() const; + //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) + int ifdId() const; + //! Return the name of the IFD + const char* ifdName() const; + //! Return the index (unique id of this key within the original IFD) + int idx() const; + /*! + @brief Write value to a data buffer and return the number + of bytes written. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @param buf Data buffer to write to. + @param byteOrder Applicable byte order (little or big endian). + @return Number of characters written. + */ + long copy(byte* buf, ByteOrder byteOrder) const; + std::ostream& write(std::ostream& os, const ExifData* pMetadata =0) const; + //! Return the type id of the value + TypeId typeId() const; + //! Return the name of the type + const char* typeName() const; + //! Return the size in bytes of one component of this type + long typeSize() const; + //! Return the number of components in the value + long count() const; + //! Return the size of the value in bytes + long size() const; + //! Return the value as a string. + std::string toString() const; + std::string toString(long n) const; + long toLong(long n =0) const; + float toFloat(long n =0) const; + Rational toRational(long n =0) const; + Value::AutoPtr getValue() const; + const Value& value() const; + //! Return the size of the data area. + long sizeDataArea() const; + /*! + @brief Return a copy of the data area of the value. The caller owns + this copy and %DataBuf ensures that it will be deleted. + + Values may have a data area, which can contain additional + information besides the actual value. This method is used to access + such a data area. + + @return A %DataBuf containing a copy of the data area or an empty + %DataBuf if the value does not have a data area assigned or the + value is not set. + */ + DataBuf dataArea() const; + //@} + + private: + // DATA + ExifKey::AutoPtr key_; //!< Key + Value::AutoPtr value_; //!< Value + + }; // class Exifdatum + + /*! + @brief Access to a Exif %thumbnail image. This class provides higher level + accessors to the thumbnail image that is optionally embedded in IFD1 + of the Exif data. These methods do not write to the Exif metadata. + Manipulators are provided in subclass ExifThumb. + + @note Various other preview and thumbnail images may be contained in an + image, depending on its format and the camera make and model. This + class only provides access to the Exif thumbnail as specified in the + Exif standard. + */ + class EXIV2API ExifThumbC { + public: + //! @name Creators + //@{ + //! Constructor. + ExifThumbC(const ExifData& exifData); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the thumbnail image in a %DataBuf. The caller owns the + data buffer and %DataBuf ensures that it will be deleted. + */ + DataBuf copy() const; + /*! + @brief Write the thumbnail image to a file. + + A filename extension is appended to \em path according to the image + type of the thumbnail, so \em path should not include an extension. + The function will overwrite an existing file of the same name. + + @param path File name of the thumbnail without extension. + @return The number of bytes written. + */ + long writeFile(const std::string& path) const; +#ifdef EXV_UNICODE_PATH + /*! + @brief Like writeFile() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + long writeFile(const std::wstring& wpath) const; +#endif + /*! + @brief Return the MIME type of the thumbnail, either \c "image/tiff" + or \c "image/jpeg". + */ + const char* mimeType() const; + /*! + @brief Return the file extension for the format of the thumbnail + (".tif" or ".jpg"). + */ + const char* extension() const; +#ifdef EXV_UNICODE_PATH + /*! + @brief Like extension() but returns the extension in a wchar_t. + @note This function is only available on Windows. + */ + const wchar_t* wextension() const; +#endif + //@} + + private: + // DATA + const ExifData& exifData_; //!< Const reference to the Exif metadata. + + }; // class ExifThumb + + /*! + @brief Access and modify an Exif %thumbnail image. This class implements + manipulators to set and erase the thumbnail image that is optionally + embedded in IFD1 of the Exif data. Accessors are provided by the + base class, ExifThumbC. + + @note Various other preview and thumbnail images may be contained in an + image, depending on its format and the camera make and model. This + class only provides access to the Exif thumbnail as specified in the + Exif standard. + */ + class EXIV2API ExifThumb : public ExifThumbC { + public: + //! @name Creators + //@{ + //! Constructor. + ExifThumb(ExifData& exifData); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Set the Exif thumbnail to the JPEG image \em path. Set + XResolution, YResolution and ResolutionUnit to \em xres, + \em yres and \em unit, respectively. + + This results in the minimal thumbnail tags being set for a JPEG + thumbnail, as mandated by the Exif standard. + + @throw Error if reading the file fails. + + @note No checks on the file format or size are performed. + @note Additional existing Exif thumbnail tags are not modified. + @note The JPEG image inserted as thumbnail image should not + itself contain Exif data (or other metadata), as existing + applications may have problems with that. (The preview + application that comes with OS X for one.) - David Harvey. + */ + void setJpegThumbnail( + const std::string& path, + URational xres, + URational yres, + uint16_t unit + ); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like setJpegThumbnail() but accepts a unicode path in an + std::wstring. + @note This function is only available on Windows. + */ + void setJpegThumbnail( + const std::wstring& wpath, + URational xres, + URational yres, + uint16_t unit + ); +#endif + /*! + @brief Set the Exif thumbnail to the JPEG image pointed to by \em buf, + and size \em size. Set XResolution, YResolution and + ResolutionUnit to \em xres, \em yres and \em unit, respectively. + + This results in the minimal thumbnail tags being set for a JPEG + thumbnail, as mandated by the Exif standard. + + @throw Error if reading the file fails. + + @note No checks on the image format or size are performed. + @note Additional existing Exif thumbnail tags are not modified. + @note The JPEG image inserted as thumbnail image should not + itself contain Exif data (or other metadata), as existing + applications may have problems with that. (The preview + application that comes with OS X for one.) - David Harvey. + */ + void setJpegThumbnail( + const byte* buf, + long size, + URational xres, + URational yres, + uint16_t unit + ); + /*! + @brief Set the Exif thumbnail to the JPEG image \em path. + + This sets only the Compression, JPEGInterchangeFormat and + JPEGInterchangeFormatLength tags, which is not all the thumbnail + Exif information mandatory according to the Exif standard. (But it's + enough to work with the thumbnail.) + + @throw Error if reading the file fails. + + @note No checks on the file format or size are performed. + @note Additional existing Exif thumbnail tags are not modified. + */ + void setJpegThumbnail(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like setJpegThumbnail(const std::string& path) but accepts a + unicode path in an std::wstring. + @note This function is only available on Windows. + */ + void setJpegThumbnail(const std::wstring& wpath); +#endif + /*! + @brief Set the Exif thumbnail to the JPEG image pointed to by \em buf, + and size \em size. + + This sets only the Compression, JPEGInterchangeFormat and + JPEGInterchangeFormatLength tags, which is not all the thumbnail + Exif information mandatory according to the Exif standard. (But it's + enough to work with the thumbnail.) + + @note No checks on the image format or size are performed. + @note Additional existing Exif thumbnail tags are not modified. + */ + void setJpegThumbnail(const byte* buf, long size); + /*! + @brief Delete the thumbnail from the Exif data. Removes all + Exif.%Thumbnail.*, i.e., Exif IFD1 tags. + */ + void erase(); + //@} + + private: + // DATA + ExifData& exifData_; //!< Reference to the related Exif metadata. + + }; // class ExifThumb + + //! Container type to hold all metadata + typedef std::list ExifMetadata; + + /*! + @brief A container for Exif data. This is a top-level class of the %Exiv2 + library. The container holds Exifdatum objects. + + Provide high-level access to the Exif data of an image: + - read Exif information from JPEG files + - access metadata through keys and standard C++ iterators + - add, modify and delete metadata + - write Exif data to JPEG files + - extract Exif metadata to files, insert from these files + - extract and delete Exif thumbnail (JPEG and TIFF thumbnails) + */ + class EXIV2API ExifData { + public: + //! ExifMetadata iterator type + typedef ExifMetadata::iterator iterator; + //! ExifMetadata const iterator type + typedef ExifMetadata::const_iterator const_iterator; + + //! @name Manipulators + //@{ + /*! + @brief Returns a reference to the %Exifdatum that is associated with a + particular \em key. If %ExifData does not already contain such + an %Exifdatum, operator[] adds object \em Exifdatum(key). + + @note Since operator[] might insert a new element, it can't be a const + member function. + */ + Exifdatum& operator[](const std::string& key); + /*! + @brief Add an Exifdatum from the supplied key and value pair. This + method copies (clones) key and value. No duplicate checks are + performed, i.e., it is possible to add multiple metadata with + the same key. + */ + void add(const ExifKey& key, const Value* pValue); + /*! + @brief Add a copy of the \em exifdatum to the Exif metadata. No + duplicate checks are performed, i.e., it is possible to add + multiple metadata with the same key. + + @throw Error if the makernote cannot be created + */ + void add(const Exifdatum& exifdatum); + /*! + @brief Delete the Exifdatum at iterator position \em pos, return the + position of the next exifdatum. Note that iterators into + the metadata, including \em pos, are potentially invalidated + by this call. + */ + iterator erase(iterator pos); + /*! + @brief Remove all elements of the range \em beg, \em end, return the + position of the next element. Note that iterators into + the metadata are potentially invalidated by this call. + */ + iterator erase(iterator beg, iterator end); + /*! + @brief Delete all Exifdatum instances resulting in an empty container. + Note that this also removes thumbnails. + */ + void clear(); + //! Sort metadata by key + void sortByKey(); + //! Sort metadata by tag + void sortByTag(); + //! Begin of the metadata + iterator begin() { return exifMetadata_.begin(); } + //! End of the metadata + iterator end() { return exifMetadata_.end(); } + /*! + @brief Find the first Exifdatum with the given \em key, return an + iterator to it. + */ + iterator findKey(const ExifKey& key); + //@} + + //! @name Accessors + //@{ + //! Begin of the metadata + const_iterator begin() const { return exifMetadata_.begin(); } + //! End of the metadata + const_iterator end() const { return exifMetadata_.end(); } + /*! + @brief Find the first Exifdatum with the given \em key, return a const + iterator to it. + */ + const_iterator findKey(const ExifKey& key) const; + //! Return true if there is no Exif metadata + bool empty() const { return count() == 0; } + //! Get the number of metadata entries + long count() const { return static_cast(exifMetadata_.size()); } + //@} + + private: + // DATA + ExifMetadata exifMetadata_; + + }; // class ExifData + + /*! + @brief Stateless parser class for Exif data. Images use this class to + decode and encode binary Exif data. + + @note Encode is lossy and is not the inverse of decode. + */ + class EXIV2API ExifParser { + public: + /*! + @brief Decode metadata from a buffer \em pData of length \em size + with binary Exif data to the provided metadata container. + + The buffer must start with a TIFF header. Return byte order + in which the data is encoded. + + @param exifData Exif metadata container. + @param pData Pointer to the data buffer. Must point to data in + binary Exif format; no checks are performed. + @param size Length of the data buffer + @return Byte order in which the data is encoded. + */ + static ByteOrder decode( + ExifData& exifData, + const byte* pData, + uint32_t size + ); + /*! + @brief Encode Exif metadata from the provided metadata to binary Exif + format. + + The original binary Exif data in the memory block \em pData, \em size + is parsed and updated in-place if possible ("non-intrusive" + writing). If that is not possible (e.g., if new tags were added), the + entire Exif structure is re-written to the \em blob ("intrusive" + writing). The return value indicates which write method was used. If + it is \c wmNonIntrusive, the original memory \em pData, \em size + contains the result and \em blob is empty. If the return value is + \c wmIntrusive, a new Exif structure was created and returned in + \em blob. The memory block \em pData, \em size may be partly updated in + this case and should not be used anymore. + + Encode is a lossy operation. It attempts to fit the Exif data into a + binary block suitable as the payload of a JPEG APP1 Exif segment, + which can be at most 65527 bytes large. Encode omits IFD0 tags that + are "not recorded" in compressed images according to the Exif 2.2 + specification. It also doesn't write tags in groups which do not occur + in JPEG images. If the resulting binary block is larger than allowed, + it further deletes specific large preview tags, unknown tags larger + than 4kB and known tags larger than 40kB. The operation succeeds even + if the end result is still larger than the allowed size. Application + should therefore always check the size of the \em blob. + + @param blob Container for the binary Exif data if "intrusive" + writing is necessary. Empty otherwise. + @param pData Pointer to the binary Exif data buffer. Must + point to data in Exif format; no checks are + performed. Will be modified if "non-intrusive" + writing is possible. + @param size Length of the data buffer. + @param byteOrder Byte order to use. + @param exifData Exif metadata container. + + @return Write method used. + */ + static WriteMethod encode( + Blob& blob, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData + ); + /*! + @brief Encode metadata from the provided metadata to Exif format. + + Encode Exif metadata from the \em ExifData container to binary Exif + format in the \em blob, encoded in \em byteOrder. + + This simpler encode method uses "intrusive" writing, i.e., it builds + the binary representation of the metadata from scratch. It does not + attempt "non-intrusive", i.e., in-place updating. It's better to use + the other encode() method, if the metadata is already available in + binary format, in order to allow for "non-intrusive" updating of the + existing binary representation. + + This is just an inline wrapper for + ExifParser::encode(blob, 0, 0, byteOrder, exifData). + + @param blob Container for the binary Exif data. + @param byteOrder Byte order to use. + @param exifData Exif metadata container. + */ + static void encode( + Blob& blob, + ByteOrder byteOrder, + const ExifData& exifData + ) + { + encode(blob, 0, 0, byteOrder, exifData); + } + + }; // class ExifParser + +} // namespace Exiv2 + +#endif // #ifndef EXIF_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/exiv2.hpp b/vendor/exiv2-0.25/include/exiv2/exiv2.hpp new file mode 100644 index 0000000..365a563 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/exiv2.hpp @@ -0,0 +1,73 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file exiv2.hpp + @brief Include all Exiv2 header files. + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 21-Jun-10, ahu: created + */ +#ifndef EXIV2_HPP_ +#define EXIV2_HPP_ + +// ***************************************************************************** +// included header files +#include "basicio.hpp" +#include "bmpimage.hpp" +#include "convert.hpp" +#include "cr2image.hpp" +#include "crwimage.hpp" +#include "datasets.hpp" +#include "easyaccess.hpp" +#include "epsimage.hpp" +#include "error.hpp" +#include "exif.hpp" +#include "futils.hpp" +#include "gifimage.hpp" +#include "http.hpp" +#include "image.hpp" +#include "iptc.hpp" +#include "jp2image.hpp" +#include "jpgimage.hpp" +#include "metadatum.hpp" +#include "mrwimage.hpp" +#include "orfimage.hpp" +#include "pgfimage.hpp" +#include "pngimage.hpp" +#include "preview.hpp" +#include "properties.hpp" +#include "psdimage.hpp" +#include "rafimage.hpp" +#include "rw2image.hpp" +#if EXV_USE_SSH == 1 +#include "ssh.hpp" +#endif +#include "tags.hpp" +#include "tgaimage.hpp" +#include "tiffimage.hpp" +#include "types.hpp" +#include "value.hpp" +#include "version.hpp" +#include "xmp.hpp" +#include "xmpsidecar.hpp" + +#endif // #ifndef EXIV2_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/exv_msvc-webready.h b/vendor/exiv2-0.25/include/exiv2/exv_msvc-webready.h new file mode 100644 index 0000000..c71c765 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/exv_msvc-webready.h @@ -0,0 +1,174 @@ +/* ***************************************************************** -*- C -*- */ +/*! + @file exv_msvc.h + @brief Configuration settings for MSVC + @version $Rev: 2320 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 07-Feb-04, ahu: created + */ + +#ifdef _MSC_VER +#ifndef _EXV_MSVC_H_ +#define _EXV_MSVC_H_ + +#if _MSC_VER >= 1600 +// stdint.h was introduced with DevStudio 2010 +#define EXV_HAVE_STDINT_H 1 +#endif +#if _MSC_VER >= 1900 +#define MSDEV_2014 1 +#elif _MSC_VER >= 1800 +#define MSDEV_2013 1 +#elif _MSC_VER >= 1700 +#define MSDEV_2012 1 +#elif _MSC_VER >= 1600 +#define MSDEV_2010 1 +#elif _MSC_VER >= 1500 +#define MSDEV_2008 1 +#elif _MSC_VER >= 1400 +#define MSDEV_2005 1 +#else +#define MSDEV_2003 1 +#endif + +#if MSDEV_2012 +#define HAVE_NTOHLL 1 +#endif + +/* Define to 1 if you have the header file. */ +// #define EXV_HAVE_REGEX 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_PROCESS_H 1 + +/* Define to the address where bug reports for this package should be sent. */ +#define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" + +/* Define to the full name of this package. */ +#define EXV_PACKAGE_NAME "exiv2" + +/* Define to the full name and version of this package. */ +#define EXV_PACKAGE_STRING "exiv2 0.25" + +/* Define to the one symbol short name of this package. */ +#define EXV_PACKAGE_TARNAME "exiv2" + +/* Define to the version of this package. */ +#define EXV_PACKAGE_VERSION "0.25" + +/* Define to `int' if does not define pid_t. */ +typedef int pid_t; + +#ifndef EXV_COMMERCIAL_VERSION + +/* Define to 1 to enable translation of Nikon lens names. */ +# define EXV_HAVE_LENSDATA 1 + +/* Define to 1 if translation of program messages to the user's + native language is requested. */ +# undef EXV_ENABLE_NLS + +#endif /* !EXV_COMMERCIAL_VERSION */ + +/* Define to 1 if you have the `iconv' function. */ +# undef EXV_HAVE_ICONV + +#ifdef EXV_HAVE_ICONV +#define EXV_ICONV_CONST const +#endif + +/* Define as 1 if you have the `zlib' library. (0 to omit zlib) [png support] */ +#define HAVE_LIBZ 1 + +#if HAVE_LIBZ + #define EXV_HAVE_LIBZ + // assist VC7.1 to compile vsnprintf + #if (_MSC_VER < 1400) && !defined(vsnprintf) + #define vsnprintf _vsnprintf + #endif +#endif + +/* Define to 1 if you have the Adobe XMP Toolkit. */ +#define EXV_HAVE_XMP_TOOLKIT 1 + +/* Define to 1 to enable video/audio metadata support. */ +# undef EXV_ENABLE_VIDEO + +/* Define to 1 to enable webready support. */ +#define EXV_ENABLE_WEBREADY 1 + +/* Define as 1 if you want to use curl to perform http I/O */ +#ifndef EXV_USE_CURL +#define EXV_USE_CURL 1 +#endif + +/* Define as 1 if you want to use libssh (for ssh:// and sftp:// support */ +#ifndef EXV_USE_SSH +#define EXV_USE_SSH 1 +#endif + +/* Help out our buddy curl */ +#ifndef EXV_HAVE_DLL +#define CURL_STATICLIB +#endif + +#pragma comment(lib, "ws2_32.lib") +#pragma comment(lib, "wldap32.lib") + +/* File path separator */ +#define EXV_SEPARATOR_STR "\\" +#define EXV_SEPARATOR_CHR '\\' + +/* Windows unicode path support */ +// #define EXV_UNICODE_PATH + +/* Define to 1 if you have the `mmap' function. */ +/* #undef EXV_HAVE_MMAP */ + +/* Define to 1 if you have the `munmap' function. */ +/* #undef EXV_HAVE_MUNMAP */ + +/* Shared library support */ +#ifdef EXV_HAVE_DLL +#define EXV_IMPORT __declspec(dllimport) +#define EXV_EXPORT __declspec(dllexport) +#define EXV_DLLLOCAL +#define EXV_DLLPUBLIC +#else +#define EXV_IMPORT +#define EXV_EXPORT +#define EXV_DLLLOCAL +#define EXV_DLLPUBLIC +#define EXIV2API +#endif + +/* Define EXIV2API for DLL builds */ +#ifdef EXV_HAVE_DLL +# ifdef EXV_BUILDING_LIB +# define EXIV2API EXV_EXPORT +# else +# define EXIV2API EXV_IMPORT +# endif /* ! EXV_BUILDING_LIB */ +#else +# define EXIV2API +#endif /* ! EXV_HAVE_DLL */ + + +/* + Disable warning 4251. This is warning from std templates about exporting interfaces +*/ +#ifdef EXV_HAVE_DLL +#pragma warning( disable : 4251 ) +#endif +/* + Visual Studio C++ 2005 (8.0) + Disable warnings about 'deprecated' standard functions + See, eg. http://www.informit.com/guides/content.asp?g=cplusplus&seqNum=259 +*/ +#if _MSC_VER >= 1400 +# pragma warning(disable : 4996) +#endif + +#endif /* _EXV_MSVC_H_ */ +#endif /* _MSC_VER */ diff --git a/vendor/exiv2-0.25/include/exiv2/exv_msvc.h b/vendor/exiv2-0.25/include/exiv2/exv_msvc.h new file mode 100644 index 0000000..b29f81e --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/exv_msvc.h @@ -0,0 +1,174 @@ +/* ***************************************************************** -*- C -*- */ +/*! + @file exv_msvc.h + @brief Configuration settings for MSVC + @version $Rev: 2320 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 07-Feb-04, ahu: created + */ + +#ifdef _MSC_VER +#ifndef _EXV_MSVC_H_ +#define _EXV_MSVC_H_ + +#if _MSC_VER >= 1600 +// stdint.h was introduced with DevStudio 2010 +#define EXV_HAVE_STDINT_H 1 +#endif +#if _MSC_VER >= 1900 +#define MSDEV_2014 1 +#elif _MSC_VER >= 1800 +#define MSDEV_2013 1 +#elif _MSC_VER >= 1700 +#define MSDEV_2012 1 +#elif _MSC_VER >= 1600 +#define MSDEV_2010 1 +#elif _MSC_VER >= 1500 +#define MSDEV_2008 1 +#elif _MSC_VER >= 1400 +#define MSDEV_2005 1 +#else +#define MSDEV_2003 1 +#endif + +#if MSDEV_2012 +#define HAVE_NTOHLL 1 +#endif + +/* Define to 1 if you have the header file. */ +// #define EXV_HAVE_REGEX 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_PROCESS_H 1 + +/* Define to the address where bug reports for this package should be sent. */ +#define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" + +/* Define to the full name of this package. */ +#define EXV_PACKAGE_NAME "exiv2" + +/* Define to the full name and version of this package. */ +#define EXV_PACKAGE_STRING "exiv2 0.25" + +/* Define to the one symbol short name of this package. */ +#define EXV_PACKAGE_TARNAME "exiv2" + +/* Define to the version of this package. */ +#define EXV_PACKAGE_VERSION "0.25" + +/* Define to `int' if does not define pid_t. */ +typedef int pid_t; + +#ifndef EXV_COMMERCIAL_VERSION + +/* Define to 1 to enable translation of Nikon lens names. */ +# define EXV_HAVE_LENSDATA 1 + +/* Define to 1 if translation of program messages to the user's + native language is requested. */ +# undef EXV_ENABLE_NLS + +#endif /* !EXV_COMMERCIAL_VERSION */ + +/* Define to 1 if you have the `iconv' function. */ +# undef EXV_HAVE_ICONV + +#ifdef EXV_HAVE_ICONV +#define EXV_ICONV_CONST const +#endif + +/* Define as 1 if you have the `zlib' library. (0 to omit zlib) [png support] */ +#define HAVE_LIBZ 1 + +#if HAVE_LIBZ + #define EXV_HAVE_LIBZ + // assist VC7.1 to compile vsnprintf + #if (_MSC_VER < 1400) && !defined(vsnprintf) + #define vsnprintf _vsnprintf + #endif +#endif + +/* Define to 1 if you have the Adobe XMP Toolkit. */ +#define EXV_HAVE_XMP_TOOLKIT 1 + +/* Define to 1 to build video support into the library */ +#undef EXV_ENABLE_VIDEO + +/* Define to 1 to build webready support into the library */ +#undef EXV_ENABLE_WEBREADY + +/* Define as 1 if you want to use curl to perform http I/O */ +#ifndef EXV_USE_CURL +#define EXV_USE_CURL 0 +#endif + +/* Define as 1 if you want to use libssh (for ssh:// and sftp:// support */ +#ifndef EXV_USE_SSH +#define EXV_USE_SSH 0 +#endif + +/* Help out our buddy curl */ +#ifndef EXV_HAVE_DLL +#define CURL_STATICLIB +#endif + +#pragma comment(lib, "ws2_32.lib") +#pragma comment(lib, "wldap32.lib") + +/* File path separator */ +#define EXV_SEPARATOR_STR "\\" +#define EXV_SEPARATOR_CHR '\\' + +/* Windows unicode path support */ +// #define EXV_UNICODE_PATH + +/* Define to 1 if you have the `mmap' function. */ +/* #undef EXV_HAVE_MMAP */ + +/* Define to 1 if you have the `munmap' function. */ +/* #undef EXV_HAVE_MUNMAP */ + +/* Shared library support */ +#ifdef EXV_HAVE_DLL +#define EXV_IMPORT __declspec(dllimport) +#define EXV_EXPORT __declspec(dllexport) +#define EXV_DLLLOCAL +#define EXV_DLLPUBLIC +#else +#define EXV_IMPORT +#define EXV_EXPORT +#define EXV_DLLLOCAL +#define EXV_DLLPUBLIC +#define EXIV2API +#endif + +/* Define EXIV2API for DLL builds */ +#ifdef EXV_HAVE_DLL +# ifdef EXV_BUILDING_LIB +# define EXIV2API EXV_EXPORT +# else +# define EXIV2API EXV_IMPORT +# endif /* ! EXV_BUILDING_LIB */ +#else +# define EXIV2API +#endif /* ! EXV_HAVE_DLL */ + + +/* + Disable warning 4251. This is warning from std templates about exporting interfaces +*/ +#ifdef EXV_HAVE_DLL +#pragma warning( disable : 4251 ) +#endif +/* + Visual Studio C++ 2005 (8.0) + Disable warnings about 'deprecated' standard functions + See, eg. http://www.informit.com/guides/content.asp?g=cplusplus&seqNum=259 +*/ +#if _MSC_VER >= 1400 +# pragma warning(disable : 4996) +#endif + +#endif /* _EXV_MSVC_H_ */ +#endif /* _MSC_VER */ diff --git a/vendor/exiv2-0.25/include/exiv2/futils.hpp b/vendor/exiv2-0.25/include/exiv2/futils.hpp new file mode 100644 index 0000000..e095991 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/futils.hpp @@ -0,0 +1,202 @@ +// ********************************************************* -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file futils.hpp + @brief Basic file utility functions required by Exiv2 + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 12-Dec-03, ahu: created
+ 02-Apr-05, ahu: moved to Exiv2 namespace + */ +#ifndef FUTILS_HPP_ +#define FUTILS_HPP_ + +// ********************************************************************* +// included header files +#include "config.h" +#include "types.hpp" + +#ifdef EXV_HAVE_STDINT_H +# include // for uint8_t +#endif + +// + standard includes +#include +#include +#include // for UINT_MAX + +// ********************************************************************* +// namespace extensions +namespace Exiv2 { + //! the name of environmental variables. + enum EnVar { envHTTPPOST = 0, envTIMEOUT = 1}; + //! the collection of protocols. + enum Protocol { pFile = 0, pHttp, pFtp, pHttps, pSftp, pSsh, pFileUri, pDataUri, pStdin}; +// ********************************************************************* +// free functions + /*! + @brief Return the value of environmental variable. + @param var The name of environmental variable. + @return the value of environmental variable. If it's empty, the default value is returned. + */ + EXIV2API std::string getEnv(EnVar var); + /*! + @brief Convert an integer value to its hex character. + @param code The integer value. + @return the input's hex character. + */ + EXIV2API char to_hex(char code); + /*! + @brief Convert a hex character to its integer value. + @param ch The hex character. + @return the input's integer value. + */ + EXIV2API char from_hex(char ch); + /*! + @brief Encode the input url. + @param str The url needs encoding. + @return the url-encoded version of str. + + @note Be sure to free() the returned string after use + Source: http://www.geekhideout.com/urlcode.shtml + */ + EXIV2API char* urlencode(char* str); + /*! + @brief Decode the input url. + @param str The url needs decoding. + @return the url-decoded version of str. + + @note Be sure to free() the returned string after use + Source: http://www.geekhideout.com/urlcode.shtml + */ + EXIV2API char* urldecode(const char* str); + /*! + @brief Like urlencode(char* str) but accept the input url in the std::string and modify it. + */ + EXIV2API void urldecode(std::string& str); + /*! + @brief Encode in base64 the data in data_buf and put the resulting string in result. + @param data_buf The data need to encode + @param dataLength Size in bytes of the in buffer + @param result The container for the result, NULL if it fails + @param resultSize Size in bytes of the out string, it should be at least ((dataLength + 2) / 3) * 4 + 1 + @return 1 indicate success + + @note Source: http://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/Base64 + */ + EXIV2API int base64encode(const void* data_buf, size_t dataLength, char* result, size_t resultSize); + /*! + @brief Decode base64 data and put the resulting string in out. + @param in The data need to decode. + @param out The container for the result, it should be large enough to contain the result. + @param out_size The size of out in bytes. + @return the size of the resulting string. If it fails, return -1. + + @note Source: https://github.com/davidgaleano/libwebsockets/blob/master/lib/base64-decode.c + */ + EXIV2API long base64decode(const char *in, char *out, size_t out_size); + /*! + @brief Return the protocol of the path. + @param path The path of file to extract the protocol. + @return the protocol of the path. + */ + EXIV2API Protocol fileProtocol(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like fileProtocol() but accept a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + EXIV2API Protocol fileProtocol(const std::wstring& wpath); +#endif + /*! + @brief Test if a file exists. + + @param path Name of file to verify. + @param ct Flag to check if path is a regular file. + @return true if path exists and, if ct is set, + is a regular file, else false. + + @note The function calls stat() test for path + and its type, see stat(2). errno is left unchanged + in case of an error. + */ + EXIV2API bool fileExists(const std::string& path, bool ct =false); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like fileExists(const std::string& path, bool ct =false) but + accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + EXIV2API bool fileExists(const std::wstring& wpath, bool ct =false); +#endif + /*! + @brief Get the path of file URL. + + @param url The file URL in the format file:/// or file:///. + @return the path of file URL. + */ + EXIV2API std::string pathOfFileUrl(const std::string& url); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like pathOfFileUrl(const std::string& url) but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + EXIV2API std::wstring pathOfFileUrl(const std::wstring& wurl); +#endif + /*! + @brief Return a system error message and the error code (errno). + See %strerror(3). + */ + EXIV2API std::string strError(); + + /*! + @brief A container for URL components. It also provides the method to parse a + URL to get the protocol, host, path, port, querystring, username, password. + + Source: http://stackoverflow.com/questions/2616011/easy-way-to-parse-a-url-in-c-cross-platform + */ + class Uri + { + public: + // DATA + std::string QueryString; //!< URL query string + std::string Path; //!< URL file path + std::string Protocol; //!< URL protocol + std::string Host; //!< URL host + std::string Port; //!< URL port + std::string Username; //!< URL username + std::string Password; //!< URL password + + /*! + @brief Parse the input URL to the protocol, host, path, username, password + */ + static Uri EXIV2API Parse(const std::string &uri); + + /*! + @brief Decode the url components. + */ + static void EXIV2API Decode(Uri& uri); + }; // class Uri + +} // namespace Exiv2 + +#endif // #ifndef FUTILS_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/gifimage.hpp b/vendor/exiv2-0.25/include/exiv2/gifimage.hpp new file mode 100644 index 0000000..582f582 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/gifimage.hpp @@ -0,0 +1,135 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file gifimage.hpp + @brief GIF image, implemented using the following references: + GIF89 specification by W3C
+ @version $Rev: 3091 $ + @author Marco Piovanelli, Ovolab (marco) + marco.piovanelli@pobox.com + @date 26-Feb-2007, marco: created + */ +#ifndef GIFIMAGE_HPP_ +#define GIFIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "iptc.hpp" +#include "image.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add GIF to the supported image formats + namespace ImageType { + const int gif = 11; //!< GIF image type (see class GifImage) + } + + /*! + @brief Class to access raw GIF images. Exif/IPTC metadata are supported + directly. + */ + class EXIV2API GifImage : public Image { + //! @name NOT Implemented + //@{ + //! Copy constructor + GifImage(const GifImage& rhs); + //! Assignment operator + GifImage& operator=(const GifImage& rhs); + //@} + + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open a GIF image. Since the + constructor can not return a result, callers should check the + good() method after object construction to determine success + or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + GifImage(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + /*! + @brief Todo: Write metadata back to the image. This method is not + yet(?) implemented. Calling it will throw an Error(31). + */ + void writeMetadata(); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setExifData(const ExifData& exifData); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setIptcData(const IptcData& iptcData); + /*! + @brief Not supported. Calling this function will throw an instance + of Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + }; // class GifImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new GifImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newGifInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a GIF image. + EXIV2API bool isGifType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef GIFIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/http.hpp b/vendor/exiv2-0.25/include/exiv2/http.hpp new file mode 100644 index 0000000..e4e5ad1 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/http.hpp @@ -0,0 +1,23 @@ +#ifndef HTTP_HPP_ +#define HTTP_HPP_ + +#include +#include +#include + +namespace Exiv2 { + typedef std::map dict_t; + typedef dict_t::iterator dict_i; + + EXIV2API int http(dict_t& request,dict_t& response,std::string& errors); + +} + +#ifndef EXV_USE_CURL +#define EXV_USE_CURL 0 +#endif +#if EXV_USE_CURL == 1 +#include +#endif + +#endif diff --git a/vendor/exiv2-0.25/include/exiv2/image.hpp b/vendor/exiv2-0.25/include/exiv2/image.hpp new file mode 100644 index 0000000..83d1534 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/image.hpp @@ -0,0 +1,653 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file image.hpp + @brief Class Image, defining the interface for all Image subclasses. + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Brad Schick (brad) + brad@robotbattle.com + @date 09-Jan-04, ahu: created
+ 11-Feb-04, ahu: isolated as a component
+ 19-Jul-04, brad: revamped to be more flexible and support IPTC
+ 15-Jan-05, brad: inside-out design changes + */ +#ifndef IMAGE_HPP_ +#define IMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "basicio.hpp" +#include "exif.hpp" +#include "iptc.hpp" +#include "xmp.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + //! Supported image formats + namespace ImageType { + const int none = 0; //!< Not an image + } + + //! Native preview information. This is meant to be used only by the PreviewManager. + struct NativePreview { + long position_; //!< Position + uint32_t size_; //!< Size + uint32_t width_; //!< Width + uint32_t height_; //!< Height + std::string filter_; //!< Filter + std::string mimeType_; //!< MIME type + }; + + //! List of native previews. This is meant to be used only by the PreviewManager. + typedef std::vector NativePreviewList; + + /*! + @brief Options for printStructure + */ + typedef enum { kpsNone, kpsBasic, kpsXMP } PrintStructureOption; + + /*! + @brief Abstract base class defining the interface for an image. This is + the top-level interface to the Exiv2 library. + + Image has containers to store image metadata and subclasses implement + read and save metadata from and to specific image formats.
+ Most client apps will obtain an Image instance by calling a static + ImageFactory method. The Image class can then be used to to read, write, + and save metadata. + */ + class EXIV2API Image { + public: + //! Image auto_ptr type + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + /*! + @brief Constructor taking the image type, a bitmap of the supported + metadata types and an auto-pointer that owns an IO instance. + See subclass constructor doc. + */ + Image(int imageType, + uint16_t supportedMetadata, + BasicIo::AutoPtr io); + //! Virtual Destructor + virtual ~Image(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Print out the structure of image file. + @throw Error if reading of the file fails or the image data is + not valid (does not look like data of the specific image type). + @caution This function is not thread safe and intended for exiv2 -pS for debugging. + */ + virtual void printStructure(std::ostream& out, PrintStructureOption option =kpsNone); + /*! + @brief Read all metadata supported by a specific image format from the + image. Before this method is called, the image metadata will be + cleared. + + This method returns success even if no metadata is found in the + image. Callers must therefore check the size of individual metadata + types before accessing the data. + + @throw Error if opening or reading of the file fails or the image + data is not valid (does not look like data of the specific image + type). + */ + virtual void readMetadata() =0; + /*! + @brief Write metadata back to the image. + + All existing metadata sections in the image are either created, + replaced, or erased. If values for a given metadata type have been + assigned, a section for that metadata type will either be created or + replaced. If no values have been assigned to a given metadata type, + any exists section for that metadata type will be removed from the + image. + + @throw Error if the operation fails + */ + virtual void writeMetadata() =0; + /*! + @brief Assign new Exif data. The new Exif data is not written + to the image until the writeMetadata() method is called. + @param exifData An ExifData instance holding Exif data to be copied + */ + virtual void setExifData(const ExifData& exifData); + /*! + @brief Erase any buffered Exif data. Exif data is not removed from + the actual image until the writeMetadata() method is called. + */ + virtual void clearExifData(); + /*! + @brief Assign new IPTC data. The new IPTC data is not written + to the image until the writeMetadata() method is called. + @param iptcData An IptcData instance holding IPTC data to be copied + */ + virtual void setIptcData(const IptcData& iptcData); + /*! + @brief Erase any buffered IPTC data. IPTC data is not removed from + the actual image until the writeMetadata() method is called. + */ + virtual void clearIptcData(); + /*! + @brief Assign a raw XMP packet. The new XMP packet is not written + to the image until the writeMetadata() method is called. + + Subsequent calls to writeMetadata() write the XMP packet from + the buffered raw XMP packet rather than from buffered parsed XMP + data. In order to write from parsed XMP data again, use + either writeXmpFromPacket(false) or setXmpData(). + + @param xmpPacket A string containing the raw XMP packet. + */ + virtual void setXmpPacket(const std::string& xmpPacket); + /*! + @brief Erase the buffered XMP packet. XMP data is not removed from + the actual image until the writeMetadata() method is called. + + This has the same effect as clearXmpData() but operates on the + buffered raw XMP packet only, not the parsed XMP data. + + Subsequent calls to writeMetadata() write the XMP packet from + the buffered raw XMP packet rather than from buffered parsed XMP + data. In order to write from parsed XMP data again, use + either writeXmpFromPacket(false) or setXmpData(). + */ + virtual void clearXmpPacket(); + /*! + @brief Assign new XMP data. The new XMP data is not written + to the image until the writeMetadata() method is called. + + Subsequent calls to writeMetadata() encode the XMP data to + a raw XMP packet and write the newly encoded packet to the image. + In the process, the buffered raw XMP packet is updated. + In order to write directly from the raw XMP packet, use + writeXmpFromPacket(true) or setXmpPacket(). + + @param xmpData An XmpData instance holding XMP data to be copied + */ + virtual void setXmpData(const XmpData& xmpData); + /*! + @brief Erase any buffered XMP data. XMP data is not removed from + the actual image until the writeMetadata() method is called. + + This has the same effect as clearXmpPacket() but operates on the + buffered parsed XMP data. + + Subsequent calls to writeMetadata() encode the XMP data to + a raw XMP packet and write the newly encoded packet to the image. + In the process, the buffered raw XMP packet is updated. + In order to write directly from the raw XMP packet, use + writeXmpFromPacket(true) or setXmpPacket(). + */ + virtual void clearXmpData(); + /*! + @brief Set the image comment. The new comment is not written + to the image until the writeMetadata() method is called. + @param comment String containing comment. + */ + virtual void setComment(const std::string& comment); + /*! + @brief Erase any buffered comment. Comment is not removed + from the actual image until the writeMetadata() method is called. + */ + virtual void clearComment(); + /*! + @brief Copy all existing metadata from source Image. The data is + copied into internal buffers and is not written to the image + until the writeMetadata() method is called. + @param image Metadata source. All metadata types are copied. + */ + virtual void setMetadata(const Image& image); + /*! + @brief Erase all buffered metadata. Metadata is not removed + from the actual image until the writeMetadata() method is called. + */ + virtual void clearMetadata(); + /*! + @brief Returns an ExifData instance containing currently buffered + Exif data. + + The contained Exif data may have been read from the image by + a previous call to readMetadata() or added directly. The Exif + data in the returned instance will be written to the image when + writeMetadata() is called. + + @return modifiable ExifData instance containing Exif values + */ + virtual ExifData& exifData(); + /*! + @brief Returns an IptcData instance containing currently buffered + IPTC data. + + The contained IPTC data may have been read from the image by + a previous call to readMetadata() or added directly. The IPTC + data in the returned instance will be written to the image when + writeMetadata() is called. + + @return modifiable IptcData instance containing IPTC values + */ + virtual IptcData& iptcData(); + /*! + @brief Returns an XmpData instance containing currently buffered + XMP data. + + The contained XMP data may have been read from the image by + a previous call to readMetadata() or added directly. The XMP + data in the returned instance will be written to the image when + writeMetadata() is called. + + @return modifiable XmpData instance containing XMP values + */ + virtual XmpData& xmpData(); + /*! + @brief Return a modifiable reference to the raw XMP packet. + */ + virtual std::string& xmpPacket(); + /*! + @brief Determine the source when writing XMP. + + Depending on the setting of this flag, writeMetadata() writes + XMP from the buffered raw XMP packet or from parsed XMP data. + The default is to write from parsed XMP data. The switch is also + set by all functions to set and clear the buffered raw XMP packet + and parsed XMP data, so using this function should usually not be + necessary. + + If %Exiv2 was compiled without XMP support, the default for this + flag is true and it will never be changed in order to preserve + access to the raw XMP packet. + */ + void writeXmpFromPacket(bool flag); + /*! + @brief Set the byte order to encode the Exif metadata in. + + The setting is only used when new Exif metadata is created and may + not be applicable at all for some image formats. If the target image + already contains Exif metadata, the byte order of the existing data + is used. If byte order is not set when writeMetadata() is called, + little-endian byte order (II) is used by default. + */ + void setByteOrder(ByteOrder byteOrder); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the byte order in which the Exif metadata of the image is + encoded. Initially, it is not set (\em invalidByteOrder). + */ + ByteOrder byteOrder() const; + /*! + @brief Check if the Image instance is valid. Use after object + construction. + @return true if the Image is in a valid state. + */ + bool good() const; + /*! + @brief Return the MIME type of the image. + + @note For each supported image format, the library knows only one MIME + type. This may not be the most specific MIME type for that format. In + particular, several RAW formats are variants of the TIFF format with + the same magic as TIFF itself. Class TiffImage handles most of them + and thus they all have MIME type "image/tiff", although a more + specific MIME type may exist (e.g., "image/x-nikon-nef"). + */ + virtual std::string mimeType() const =0; + /*! + @brief Return the pixel width of the image. + */ + virtual int pixelWidth() const; + /*! + @brief Return the pixel height of the image. + */ + virtual int pixelHeight() const; + /*! + @brief Returns an ExifData instance containing currently buffered + Exif data. + + The Exif data may have been read from the image by + a previous call to readMetadata() or added directly. The Exif + data in the returned instance will be written to the image when + writeMetadata() is called. + + @return read only ExifData instance containing Exif values + */ + virtual const ExifData& exifData() const; + /*! + @brief Returns an IptcData instance containing currently buffered + IPTC data. + + The contained IPTC data may have been read from the image by + a previous call to readMetadata() or added directly. The IPTC + data in the returned instance will be written to the image when + writeMetadata() is called. + + @return modifiable IptcData instance containing IPTC values + */ + virtual const IptcData& iptcData() const; + /*! + @brief Returns an XmpData instance containing currently buffered + XMP data. + + The contained XMP data may have been read from the image by + a previous call to readMetadata() or added directly. The XMP + data in the returned instance will be written to the image when + writeMetadata() is called. + + @return modifiable XmpData instance containing XMP values + */ + virtual const XmpData& xmpData() const; + /*! + @brief Return a copy of the image comment. May be an empty string. + */ + virtual std::string comment() const; + /*! + @brief Return the raw XMP packet as a string. + */ + virtual const std::string& xmpPacket() const; + /*! + @brief Return a reference to the BasicIo instance being used for Io. + + This refence is particularly useful to reading the results of + operations on a MemIo instance. For example after metadata has + been modified and the writeMetadata() method has been called, + this method can be used to get access to the modified image. + + @return BasicIo instance that can be used to read or write image + data directly. + @note If the returned BasicIo is used to write to the image, the + Image class will not see those changes until the readMetadata() + method is called. + */ + virtual BasicIo& io() const; + /*! + @brief Returns the access mode, i.e., the metadata functions, which + this image supports for the metadata type \em metadataId. + @param metadataId The metadata identifier. + @return Access mode for the requested image type and metadata identifier. + */ + AccessMode checkMode(MetadataId metadataId) const; + /*! + @brief Check if image supports a particular type of metadata. + This method is deprecated. Use checkMode() instead. + */ + bool supportsMetadata(MetadataId metadataId) const; + //! Return the flag indicating the source when writing XMP metadata. + bool writeXmpFromPacket() const; + //! Return list of native previews. This is meant to be used only by the PreviewManager. + const NativePreviewList& nativePreviews() const; + //@} + + protected: + // DATA + BasicIo::AutoPtr io_; //!< Image data IO pointer + ExifData exifData_; //!< Exif data container + IptcData iptcData_; //!< IPTC data container + XmpData xmpData_; //!< XMP data container + std::string comment_; //!< User comment + std::string xmpPacket_; //!< XMP packet + int pixelWidth_; //!< image pixel width + int pixelHeight_; //!< image pixel height + NativePreviewList nativePreviews_; //!< list of native previews + + private: + //! @name NOT implemented + //@{ + //! Copy constructor + Image(const Image& rhs); + //! Assignment operator + Image& operator=(const Image& rhs); + //@} + + // DATA + const int imageType_; //!< Image type + const uint16_t supportedMetadata_; //!< Bitmap with all supported metadata types + bool writeXmpFromPacket_;//!< Determines the source when writing XMP + ByteOrder byteOrder_; //!< Byte order + + }; // class Image + + //! Type for function pointer that creates new Image instances + typedef Image::AutoPtr (*NewInstanceFct)(BasicIo::AutoPtr io, bool create); + //! Type for function pointer that checks image types + typedef bool (*IsThisTypeFct)(BasicIo& iIo, bool advance); + + /*! + @brief Returns an Image instance of the specified type. + + The factory is implemented as a static class. + */ + class EXIV2API ImageFactory { + friend bool Image::good() const; + public: + /*! + @brief Create the appropriate class type implemented BasicIo based on the protocol of the input. + + "-" path implies the data from stdin and it is handled by StdinIo. + Http path can be handled by either HttpIo or CurlIo. Https, ftp paths + are handled by CurlIo. Ssh, sftp paths are handled by SshIo. Others are handled by FileIo. + + @param path %Image file. + @param useCurl Indicate whether the libcurl is used or not. + If it's true, http is handled by CurlIo. Otherwise it is handled by HttpIo. + @return An auto-pointer that owns an BasicIo instance. + @throw Error If the file is not found or it is unable to connect to the server to + read the remote file. + */ + static BasicIo::AutoPtr createIo(const std::string& path, bool useCurl = true); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like createIo() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + static BasicIo::AutoPtr createIo(const std::wstring& wpath, bool useCurl = true); +#endif + /*! + @brief Create an Image subclass of the appropriate type by reading + the specified file. %Image type is derived from the file + contents. + @param path %Image file. The contents of the file are tested to + determine the image type. File extension is ignored. + @param useCurl Indicate whether the libcurl is used or not. + If it's true, http is handled by CurlIo. Otherwise it is handled by HttpIo. + @return An auto-pointer that owns an Image instance whose type + matches that of the file. + @throw Error If opening the file fails or it contains data of an + unknown image type. + */ + static Image::AutoPtr open(const std::string& path, bool useCurl = true); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like open() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + static Image::AutoPtr open(const std::wstring& wpath, bool useCurl = true); +#endif + /*! + @brief Create an Image subclass of the appropriate type by reading + the provided memory. %Image type is derived from the memory + contents. + @param data Pointer to a data buffer containing an image. The contents + of the memory are tested to determine the image type. + @param size Number of bytes pointed to by \em data. + @return An auto-pointer that owns an Image instance whose type + matches that of the data buffer. + @throw Error If the memory contains data of an unknown image type. + */ + static Image::AutoPtr open(const byte* data, long size); + /*! + @brief Create an Image subclass of the appropriate type by reading + the provided BasicIo instance. %Image type is derived from the + data provided by \em io. The passed in \em io instance is + (re)opened by this method. + @param io An auto-pointer that owns a BasicIo instance that provides + image data. The contents of the image data are tested to determine + the type. + @note This method takes ownership of the passed + in BasicIo instance through the auto-pointer. Callers should not + continue to use the BasicIo instance after it is passed to this method. + Use the Image::io() method to get a temporary reference. + @return An auto-pointer that owns an Image instance whose type + matches that of the \em io data. If no image type could be + determined, the pointer is 0. + @throw Error If opening the BasicIo fails + */ + static Image::AutoPtr open(BasicIo::AutoPtr io); + /*! + @brief Create an Image subclass of the requested type by creating a + new image file. If the file already exists, it will be overwritten. + @param type Type of the image to be created. + @param path %Image file to create. File extension is ignored. + @return An auto-pointer that owns an Image instance of the requested + type. + @throw Error If the image type is not supported. + */ + static Image::AutoPtr create(int type, const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like create() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + static Image::AutoPtr create(int type, const std::wstring& wpath); +#endif + /*! + @brief Create an Image subclass of the requested type by creating a + new image in memory. + @param type Type of the image to be created. + @return An auto-pointer that owns an Image instance of the requested + type. + @throw Error If the image type is not supported + */ + static Image::AutoPtr create(int type); + /*! + @brief Create an Image subclass of the requested type by writing a + new image to a BasicIo instance. If the BasicIo instance already + contains data, it will be overwritten. + @param type Type of the image to be created. + @param io An auto-pointer that owns a BasicIo instance that will + be written to when creating a new image. + @note This method takes ownership of the passed in BasicIo instance + through the auto-pointer. Callers should not continue to use the + BasicIo instance after it is passed to this method. Use the + Image::io() method to get a temporary reference. + @return An auto-pointer that owns an Image instance of the requested + type. If the image type is not supported, the pointer is 0. + */ + static Image::AutoPtr create(int type, BasicIo::AutoPtr io); + /*! + @brief Returns the image type of the provided file. + @param path %Image file. The contents of the file are tested to + determine the image type. File extension is ignored. + @return %Image type or Image::none if the type is not recognized. + */ + static int getType(const std::string& path); +#ifdef EXV_UNICODE_PATH + /*! + @brief Like getType() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + static int getType(const std::wstring& wpath); +#endif + /*! + @brief Returns the image type of the provided data buffer. + @param data Pointer to a data buffer containing an image. The contents + of the memory are tested to determine the image type. + @param size Number of bytes pointed to by \em data. + @return %Image type or Image::none if the type is not recognized. + */ + static int getType(const byte* data, long size); + /*! + @brief Returns the image type of data provided by a BasicIo instance. + The passed in \em io instance is (re)opened by this method. + @param io A BasicIo instance that provides image data. The contents + of the image data are tested to determine the type. + @return %Image type or Image::none if the type is not recognized. + */ + static int getType(BasicIo& io); + /*! + @brief Returns the access mode or supported metadata functions for an + image type and a metadata type. + @param type The image type. + @param metadataId The metadata identifier. + @return Access mode for the requested image type and metadata identifier. + @throw Error(13) if the image type is not supported. + */ + static AccessMode checkMode(int type, MetadataId metadataId); + /*! + @brief Determine if the content of \em io is an image of \em type. + + The \em advance flag determines if the read position in the + stream is moved (see below). This applies only if the type + matches and the function returns true. If the type does not + match, the stream position is not changed. However, if + reading from the stream fails, the stream position is + undefined. Consult the stream state to obtain more + information in this case. + + @param type Type of the image. + @param io BasicIo instance to read from. + @param advance Flag indicating whether the position of the io + should be advanced by the number of characters read to + analyse the data (true) or left at its original + position (false). This applies only if the type matches. + @return true if the data matches the type of this class;
+ false if the data does not match + */ + static bool checkType(int type, BasicIo& io, bool advance); + + private: + //! @name Creators + //@{ + //! Prevent construction: not implemented. + ImageFactory(); + //! Prevent copy construction: not implemented. + ImageFactory(const ImageFactory& rhs); + //@} + + }; // class ImageFactory + +// ***************************************************************************** +// template, inline and free functions + + //! Append \em len bytes pointed to by \em buf to \em blob. + void append(Exiv2::Blob& blob, const byte* buf, uint32_t len); + +} // namespace Exiv2 + +#endif // #ifndef IMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/iptc.hpp b/vendor/exiv2-0.25/include/exiv2/iptc.hpp new file mode 100644 index 0000000..97b3a53 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/iptc.hpp @@ -0,0 +1,326 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file iptc.hpp + @brief Encoding and decoding of IPTC data + @version $Rev: 3091 $ + @author Brad Schick (brad) + brad@robotbattle.com + @date 31-Jul-04, brad: created + */ +#ifndef IPTC_HPP_ +#define IPTC_HPP_ + +// ***************************************************************************** +// included header files +#include "metadatum.hpp" +#include "types.hpp" +#include "error.hpp" +#include "value.hpp" +#include "datasets.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + +// ***************************************************************************** +// class definitions + + /*! + @brief An IPTC metadatum ("dataset"), consisting of an IptcKey and a + Value and methods to manipulate these. + */ + class EXIV2API Iptcdatum : public Metadatum { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for new tags created by an application. The + %Iptcdatum is created from a key / value pair. %Iptcdatum + copies (clones) the value if one is provided. Alternatively, a + program can create an 'empty' %Iptcdatum with only a key and + set the value using setValue(). + + @param key The key of the %Iptcdatum. + @param pValue Pointer to a %Iptcdatum value. + @throw Error if the key cannot be parsed and converted + to a tag number and record id. + */ + explicit Iptcdatum(const IptcKey& key, + const Value* pValue =0); + //! Copy constructor + Iptcdatum(const Iptcdatum& rhs); + //! Destructor + virtual ~Iptcdatum(); + //@} + + //! @name Manipulators + //@{ + //! Assignment operator + Iptcdatum& operator=(const Iptcdatum& rhs); + /*! + @brief Assign \em value to the %Iptcdatum. The type of the new Value + is set to UShortValue. + */ + Iptcdatum& operator=(const uint16_t& value); + /*! + @brief Assign \em value to the %Iptcdatum. + Calls setValue(const std::string&). + */ + Iptcdatum& operator=(const std::string& value); + /*! + @brief Assign \em value to the %Iptcdatum. + Calls setValue(const Value*). + */ + Iptcdatum& operator=(const Value& value); + void setValue(const Value* pValue); + /*! + @brief Set the value to the string \em value, using + Value::read(const std::string&). + If the %Iptcdatum does not have a Value yet, then a %Value of + the correct type for this %Iptcdatum is created. If that + fails (because of an unknown dataset), a StringValue is + created. Return 0 if the value was read successfully. + */ + int setValue(const std::string& value); + //@} + + //! @name Accessors + //@{ + long copy(byte* buf, ByteOrder byteOrder) const; + std::ostream& write(std::ostream& os, const ExifData* pMetadata =0) const; + /*! + @brief Return the key of the Iptcdatum. The key is of the form + 'Iptc.recordName.datasetName'. Note however that the key + is not necessarily unique, i.e., an IptcData object may contain + multiple metadata with the same key. + */ + std::string key() const; + /*! + @brief Return the name of the record (deprecated) + @return record name + */ + std::string recordName() const; + /*! + @brief Return the record id + @return record id + */ + uint16_t record() const; + const char* familyName() const; + std::string groupName() const; + /*! + @brief Return the name of the tag (aka dataset) + @return tag name + */ + std::string tagName() const; + std::string tagLabel() const; + //! Return the tag (aka dataset) number + uint16_t tag() const; + TypeId typeId() const; + const char* typeName() const; + long typeSize() const; + long count() const; + long size() const; + std::string toString() const; + std::string toString(long n) const; + long toLong(long n =0) const; + float toFloat(long n =0) const; + Rational toRational(long n =0) const; + Value::AutoPtr getValue() const; + const Value& value() const; + //@} + + private: + // DATA + IptcKey::AutoPtr key_; //!< Key + Value::AutoPtr value_; //!< Value + + }; // class Iptcdatum + + //! Container type to hold all metadata + typedef std::vector IptcMetadata; + + /*! + @brief A container for IPTC data. This is a top-level class of + the %Exiv2 library. + + Provide high-level access to the IPTC data of an image: + - read IPTC information from JPEG files + - access metadata through keys and standard C++ iterators + - add, modify and delete metadata + - write IPTC data to JPEG files + - extract IPTC metadata to files, insert from these files + */ + class EXIV2API IptcData { + public: + //! IptcMetadata iterator type + typedef IptcMetadata::iterator iterator; + //! IptcMetadata const iterator type + typedef IptcMetadata::const_iterator const_iterator; + + // Use the compiler generated constructors and assignment operator + + //! @name Manipulators + //@{ + /*! + @brief Returns a reference to the %Iptcdatum that is associated with a + particular \em key. If %IptcData does not already contain such + an %Iptcdatum, operator[] adds object \em Iptcdatum(key). + + @note Since operator[] might insert a new element, it can't be a const + member function. + */ + Iptcdatum& operator[](const std::string& key); + /*! + @brief Add an %Iptcdatum from the supplied key and value pair. This + method copies (clones) the value. A check for non-repeatable + datasets is performed. + @return 0 if successful;
+ 6 if the dataset already exists and is not repeatable + */ + int add(const IptcKey& key, Value* value); + /*! + @brief Add a copy of the Iptcdatum to the IPTC metadata. A check + for non-repeatable datasets is performed. + @return 0 if successful;
+ 6 if the dataset already exists and is not repeatable;
+ */ + int add(const Iptcdatum& iptcdatum); + /*! + @brief Delete the Iptcdatum at iterator position pos, return the + position of the next Iptcdatum. Note that iterators into + the metadata, including pos, are potentially invalidated + by this call. + */ + iterator erase(iterator pos); + /*! + @brief Delete all Iptcdatum instances resulting in an empty container. + */ + void clear() { iptcMetadata_.clear(); } + //! Sort metadata by key + void sortByKey(); + //! Sort metadata by tag (aka dataset) + void sortByTag(); + //! Begin of the metadata + iterator begin() { return iptcMetadata_.begin(); } + //! End of the metadata + iterator end() { return iptcMetadata_.end(); } + /*! + @brief Find the first Iptcdatum with the given key, return an iterator + to it. + */ + iterator findKey(const IptcKey& key); + /*! + @brief Find the first Iptcdatum with the given record and dataset it, + return a const iterator to it. + */ + iterator findId(uint16_t dataset, + uint16_t record = IptcDataSets::application2); + //@} + + //! @name Accessors + //@{ + //! Begin of the metadata + const_iterator begin() const { return iptcMetadata_.begin(); } + //! End of the metadata + const_iterator end() const { return iptcMetadata_.end(); } + /*! + @brief Find the first Iptcdatum with the given key, return a const + iterator to it. + */ + const_iterator findKey(const IptcKey& key) const; + /*! + @brief Find the first Iptcdatum with the given record and dataset + number, return a const iterator to it. + */ + const_iterator findId(uint16_t dataset, + uint16_t record = IptcDataSets::application2) const; + //! Return true if there is no IPTC metadata + bool empty() const { return count() == 0; } + //! Get the number of metadata entries + long count() const { return static_cast(iptcMetadata_.size()); } + /*! + @brief Return the exact size of all contained IPTC metadata + */ + long size() const; + /*! + @brief Return the metadata charset name or 0 + */ + const char *detectCharset() const; + //@} + + private: + // DATA + IptcMetadata iptcMetadata_; + }; // class IptcData + + /*! + @brief Stateless parser class for IPTC data. Images use this class to + decode and encode binary IPTC data. + */ + class EXIV2API IptcParser { + public: + /*! + @brief Decode binary IPTC data in IPTC IIM4 format from a buffer \em pData + of length \em size to the provided metadata container. + + @param iptcData Metadata container to add the decoded IPTC datasets to. + @param pData Pointer to the data buffer to read from. + @param size Number of bytes in the data buffer. + + @return 0 if successful;
+ 5 if the binary IPTC data is invalid or corrupt + */ + static int decode( + IptcData& iptcData, + const byte* pData, + uint32_t size + ); + /*! + @brief Encode the IPTC datasets from \em iptcData to a binary + representation in IPTC IIM4 format. + + Convert the IPTC datasets to binary format and return it. Caller owns + the returned buffer. The copied data follows the IPTC IIM4 standard. + + @return Data buffer containing the binary IPTC data in IPTC IIM4 format. + */ + static DataBuf encode( + const IptcData& iptcData + ); + + private: + // Constant data + static const byte marker_; // Dataset marker + + }; // class IptcParser + +} // namespace Exiv2 + +#endif // #ifndef IPTC_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/jp2image.hpp b/vendor/exiv2-0.25/include/exiv2/jp2image.hpp new file mode 100644 index 0000000..8dd221a --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/jp2image.hpp @@ -0,0 +1,135 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file jp2image.hpp + @brief JPEG-2000 image, implemented using the following references: + ISO/IEC JTC 1/SC 29/WG1 N2401: JPEG 2000 Part 6 FCD 15444-6
+ @version $Rev: 3091 $ + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @author Marco Piovanelli, Ovolab (marco) + marco.piovanelli@pobox.com + @date 12-Mar-2007, marco: created + */ +#ifndef JP2IMAGE_HPP_ +#define JP2IMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "iptc.hpp" +#include "image.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 +{ + +// ***************************************************************************** +// class definitions + + // Add JPEG-2000 to the supported image formats + namespace ImageType + { + const int jp2 = 15; //!< JPEG-2000 image type + } + + /*! + @brief Class to access JPEG-2000 images. + */ + class EXIV2API Jp2Image : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open a JPEG-2000 image. Since the + constructor can not return a result, callers should check the + good() method after object construction to determine success + or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + Jp2Image(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + Jp2Image(const Jp2Image& rhs); + //! Assignment operator + Jp2Image& operator=(const Jp2Image& rhs); + /*! + @brief Provides the main implementation of writeMetadata() by + writing all buffered metadata to the provided BasicIo. + @param oIo BasicIo instance to write to (a temporary location). + + @return 4 if opening or writing to the associated BasicIo fails + */ + EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); + //@} + + }; // class Jp2Image + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new Jp2Image instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newJp2Instance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a JPEG-2000 image. + EXIV2API bool isJp2Type(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef JP2IMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/jpgimage.hpp b/vendor/exiv2-0.25/include/exiv2/jpgimage.hpp new file mode 100644 index 0000000..50eaffd --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/jpgimage.hpp @@ -0,0 +1,441 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file jpgimage.hpp + @brief Class JpegImage to access JPEG images + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Brad Schick (brad) + brad@robotbattle.com + @author Volker Grabsch (vog) + vog@notjusthosting.com + @author Michael Ulbrich (mul) + mul@rentapacs.de + @date 15-Jan-05, brad: split out from image.cpp + */ +#ifndef JPGIMAGE_HPP_ +#define JPGIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Supported JPEG image formats + namespace ImageType { + const int jpeg = 1; //!< JPEG image type (see class JpegImage) + const int exv = 2; //!< EXV image type (see class ExvImage) + } + + /*! + @brief Helper class, has methods to deal with %Photoshop "Information + Resource Blocks" (IRBs). + */ + struct EXIV2API Photoshop { + // Todo: Public for now + static const char ps3Id_[]; //!< %Photoshop marker + static const char* irbId_[]; //!< %Photoshop IRB markers + static const char bimId_[]; //!< %Photoshop IRB marker (deprecated) + static const uint16_t iptc_; //!< %Photoshop IPTC marker + static const uint16_t preview_; //!< %Photoshop preview marker + + /*! + @brief Checks an IRB + + @param pPsData Existing IRB buffer + @param sizePsData Size of the IRB buffer + @return true if the IRB marker is known and the buffer is big enough to check this;
+ false otherwise + */ + static bool isIrb(const byte* pPsData, + long sizePsData); + /*! + @brief Validates all IRBs + + @param pPsData Existing IRB buffer + @param sizePsData Size of the IRB buffer, may be 0 + @return true if all IRBs are valid;
+ false otherwise + */ + static bool valid(const byte* pPsData, + long sizePsData); + /*! + @brief Locates the data for a %Photoshop tag in a %Photoshop formated memory + buffer. Operates on raw data to simplify reuse. + @param pPsData Pointer to buffer containing entire payload of + %Photoshop formated data, e.g., from APP13 Jpeg segment. + @param sizePsData Size in bytes of pPsData. + @param psTag %Tag number of the block to look for. + @param record Output value that is set to the start of the + data block within pPsData (may not be null). + @param sizeHdr Output value that is set to the size of the header + within the data block pointed to by record (may not be null). + @param sizeData Output value that is set to the size of the actual + data within the data block pointed to by record (may not be null). + @return 0 if successful;
+ 3 if no data for psTag was found in pPsData;
+ -2 if the pPsData buffer does not contain valid data. + */ + static int locateIrb(const byte *pPsData, + long sizePsData, + uint16_t psTag, + const byte **record, + uint32_t *const sizeHdr, + uint32_t *const sizeData); + /*! + @brief Forwards to locateIrb() with \em psTag = \em iptc_ + */ + static int locateIptcIrb(const byte *pPsData, + long sizePsData, + const byte **record, + uint32_t *const sizeHdr, + uint32_t *const sizeData); + /*! + @brief Forwards to locatePreviewIrb() with \em psTag = \em preview_ + */ + static int locatePreviewIrb(const byte *pPsData, + long sizePsData, + const byte **record, + uint32_t *const sizeHdr, + uint32_t *const sizeData); + /*! + @brief Set the new IPTC IRB, keeps existing IRBs but removes the + IPTC block if there is no new IPTC data to write. + + @param pPsData Existing IRB buffer + @param sizePsData Size of the IRB buffer, may be 0 + @param iptcData Iptc data to embed, may be empty + @return A data buffer containing the new IRB buffer, may have 0 size + */ + static DataBuf setIptcIrb(const byte* pPsData, + long sizePsData, + const IptcData& iptcData); + + }; // class Photoshop + + /*! + @brief Abstract helper base class to access JPEG images. + */ + class EXIV2API JpegBase : public Image { + public: + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + + /*! + @brief Print out the structure of image file. + @throw Error if reading of the file fails or the image data is + not valid (does not look like data of the specific image type). + @caution This function is not thread safe and intended for exiv2 -pS for debugging. + */ + void printStructure(std::ostream& out, PrintStructureOption option); + //@} + + protected: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. + @param type Image type. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new image should be created (true). + @param initData Data to initialize newly created images. Only used + when \em create is true. Should contain data for the smallest + valid image of the calling subclass. + @param dataSize Size of initData in bytes. + */ + JpegBase(int type, + BasicIo::AutoPtr io, + bool create, + const byte initData[], + long dataSize); + //@} + + //! @name Accessors + //@{ + /*! + @brief Determine if the content of the BasicIo instance is of the + type supported by this class. + + The advance flag determines if the read position in the stream is + moved (see below). This applies only if the type matches and the + function returns true. If the type does not match, the stream + position is not changed. However, if reading from the stream fails, + the stream position is undefined. Consult the stream state to obtain + more information in this case. + + @param iIo BasicIo instance to read from. + @param advance Flag indicating whether the position of the io + should be advanced by the number of characters read to + analyse the data (true) or left at its original + position (false). This applies only if the type matches. + @return true if the data matches the type of this class;
+ false if the data does not match + */ + virtual bool isThisType(BasicIo& iIo, bool advance) const =0; + //@} + + //! @name Manipulators + //@{ + /*! + @brief Writes the image header (aka signature) to the BasicIo instance. + @param oIo BasicIo instance that the header is written to. + @return 0 if successful;
+ 4 if the output file can not be written to + */ + virtual int writeHeader(BasicIo& oIo) const =0; + //@} + + // Constant Data + static const byte dht_; //!< JPEG DHT marker + static const byte dqt_; //!< JPEG DQT marker + static const byte dri_; //!< JPEG DRI marker + static const byte sos_; //!< JPEG SOS marker + static const byte eoi_; //!< JPEG EOI marker + static const byte app0_; //!< JPEG APP0 marker + static const byte app1_; //!< JPEG APP1 marker + static const byte app13_; //!< JPEG APP13 marker + static const byte com_; //!< JPEG Comment marker + static const byte sof0_; //!< JPEG Start-Of-Frame marker + static const byte sof1_; //!< JPEG Start-Of-Frame marker + static const byte sof2_; //!< JPEG Start-Of-Frame marker + static const byte sof3_; //!< JPEG Start-Of-Frame marker + static const byte sof5_; //!< JPEG Start-Of-Frame marker + static const byte sof6_; //!< JPEG Start-Of-Frame marker + static const byte sof7_; //!< JPEG Start-Of-Frame marker + static const byte sof9_; //!< JPEG Start-Of-Frame marker + static const byte sof10_; //!< JPEG Start-Of-Frame marker + static const byte sof11_; //!< JPEG Start-Of-Frame marker + static const byte sof13_; //!< JPEG Start-Of-Frame marker + static const byte sof14_; //!< JPEG Start-Of-Frame marker + static const byte sof15_; //!< JPEG Start-Of-Frame marker + static const char exifId_[]; //!< Exif identifier + static const char jfifId_[]; //!< JFIF identifier + static const char xmpId_[]; //!< XMP packet identifier + + private: + //! @name NOT implemented + //@{ + //! Default constructor. + JpegBase(); + //! Copy constructor + JpegBase(const JpegBase& rhs); + //! Assignment operator + JpegBase& operator=(const JpegBase& rhs); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Initialize the image with the provided data. + @param initData Data to be written to the associated BasicIo + @param dataSize Size in bytes of data to be written + @return 0 if successful;
+ 4 if the image can not be written to. + */ + EXV_DLLLOCAL int initImage(const byte initData[], long dataSize); + /*! + @brief Provides the main implementation of writeMetadata() by + writing all buffered metadata to the provided BasicIo. + @param oIo BasicIo instance to write to (a temporary location). + + @return 4 if opening or writing to the associated BasicIo fails + */ + EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); + //@} + + //! @name Accessors + //@{ + /*! + @brief Advances associated io instance to one byte past the next + Jpeg marker and returns the marker. This method should be called + when the BasicIo instance is positioned one byte past the end of a + Jpeg segment. + @return the next Jpeg segment marker if successful;
+ -1 if a maker was not found before EOF + */ + EXV_DLLLOCAL int advanceToMarker() const; + //@} + + }; // class JpegBase + + /*! + @brief Class to access JPEG images + */ + class EXIV2API JpegImage : public JpegBase { + friend EXIV2API bool isJpegType(BasicIo& iIo, bool advance); + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing Jpeg image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + JpegImage(BasicIo::AutoPtr io, bool create); + //@} + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + protected: + //! @name Accessors + //@{ + bool isThisType(BasicIo& iIo, bool advance) const; + //@} + //! @name Manipulators + //@{ + /*! + @brief Writes a Jpeg header (aka signature) to the BasicIo instance. + @param oIo BasicIo instance that the header is written to. + @return 0 if successful;
+ 2 if the input image is invalid or can not be read;
+ 4 if the temporary image can not be written to;
+ -3 other temporary errors + */ + int writeHeader(BasicIo& oIo) const; + //@} + + private: + // Constant data + static const byte soi_; // SOI marker + static const byte blank_[]; // Minimal Jpeg image + + // NOT Implemented + //! Default constructor + JpegImage(); + //! Copy constructor + JpegImage(const JpegImage& rhs); + //! Assignment operator + JpegImage& operator=(const JpegImage& rhs); + + }; // class JpegImage + + //! Helper class to access %Exiv2 files + class EXIV2API ExvImage : public JpegBase { + friend EXIV2API bool isExvType(BasicIo& iIo, bool advance); + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing EXV image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + ExvImage(BasicIo::AutoPtr io, bool create); + //@} + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + protected: + //! @name Accessors + //@{ + bool isThisType(BasicIo& iIo, bool advance) const; + //@} + //! @name Manipulators + //@{ + int writeHeader(BasicIo& oIo) const; + //@} + + private: + // Constant data + static const char exiv2Id_[]; // EXV identifier + static const byte blank_[]; // Minimal exiv2 file + + // NOT Implemented + //! Default constructor + ExvImage(); + //! Copy constructor + ExvImage(const ExvImage& rhs); + //! Assignment operator + ExvImage& operator=(const ExvImage& rhs); + + }; // class ExvImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new JpegImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newJpegInstance(BasicIo::AutoPtr io, bool create); + //! Check if the file iIo is a JPEG image. + EXIV2API bool isJpegType(BasicIo& iIo, bool advance); + /*! + @brief Create a new ExvImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newExvInstance(BasicIo::AutoPtr io, bool create); + //! Check if the file iIo is an EXV file + EXIV2API bool isExvType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef JPGIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/matroskavideo.hpp b/vendor/exiv2-0.25/include/exiv2/matroskavideo.hpp new file mode 100644 index 0000000..a00a3ea --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/matroskavideo.hpp @@ -0,0 +1,157 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file matroskavideo.hpp + @brief An Image subclass to support Matroska video files + @version $Rev$ + @author Abhinav Badola for GSoC 2012 + mail.abu.to@gmail.com + @date 18-Jun-12, AB: created + */ +#ifndef MATROSKAVIDEO_HPP_ +#define MATROSKAVIDEO_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "image.hpp" +#include "tags_int.hpp" + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add MKV to the supported image formats + namespace ImageType { + const int mkv = 21; //!< Treating mkv as an image type> + } + + // Todo: Should be hidden + /*! + @brief Helper structure for the Matroska tags lookup table. + */ + struct MatroskaTags { + uint64_t val_; //!< Tag value + const char* label_; //!< Translation of the tag value + + //! Comparison operator for use with the find template + bool operator==(uint64_t key) const { return val_ == key; } + }; // struct TagDetails + + /*! + @brief Class to access Matroska video files. + */ + class EXIV2API MatroskaVideo : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for a Matroska video. Since the constructor + can not return a result, callers should check the good() method + after object construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + MatroskaVideo(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + protected: + /*! + @brief Function used to calulate the size of a block. + This information is only stored in one byte. + The size of the block is calculated by counting + the number of leading zeros in the binary code of the byte. + Size = (No. of leading zeros + 1) bytes + @param b The byte, which stores the information to calculate the size + @return Return the size of the block. + */ + uint32_t findBlockSize(byte b); + /*! + @brief Check for a valid tag and decode the block at the current IO position. + Calls contentManagement() or skips to next tag, if required. + */ + void decodeBlock(); + /*! + @brief Interpret tag information, and save it in the respective XMP container. + @param mt Pointer to current tag, + @param buf Pointer to the memory area with the tag information. + @param size Size of \em buf. + */ + void contentManagement(const MatroskaTags* mt, const byte* buf, long size); + /*! + @brief Calculates Aspect Ratio of a video, and stores it in the + respective XMP container. + */ + void aspectRatio(); + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + MatroskaVideo(const MatroskaVideo& rhs); + //! Assignment operator + MatroskaVideo& operator=(const MatroskaVideo& rhs); + //@} + + private: + //! Variable to check the end of metadata traversing. + bool continueTraversing_; + //! Variable to store height and width of a video frame. + uint64_t height_, width_; + + }; // class MatroskaVideo + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new MatroskaVideo instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newMkvInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Matroska Video. + EXIV2API bool isMkvType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef MATROSKAVIDEO_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/metadatum.hpp b/vendor/exiv2-0.25/include/exiv2/metadatum.hpp new file mode 100644 index 0000000..f096094 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/metadatum.hpp @@ -0,0 +1,321 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file metadatum.hpp + @brief Provides abstract base classes Metadatum and Key + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Brad Schick (brad) + brad@robotbattle.com + @date 09-Jan-04, ahu: created
+ 31-Jul-04, brad: isolated as a component
+ 23-Aug-04, ahu: added Key + */ +#ifndef METADATUM_HPP_ +#define METADATUM_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "value.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + +// ***************************************************************************** +// class definitions + + /*! + @brief Abstract base class defining the %Key of a metadatum. + Keys are used to identify and group metadata. + */ + class EXIV2API Key { + public: + //! Shortcut for a %Key auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Destructor + virtual ~Key(); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the key of the metadatum as a string. The key is of the + form 'familyName.groupName.tagName'. Note however that the + key is not necessarily unique, e.g., an ExifData may contain + multiple metadata with the same key. + */ + virtual std::string key() const =0; + //! Return an identifier for the type of metadata (the first part of the key) + virtual const char* familyName() const =0; + //! Return the name of the group (the second part of the key) + virtual std::string groupName() const =0; + //! Return the name of the tag (which is also the third part of the key) + virtual std::string tagName() const =0; + //! Return a label for the tag + virtual std::string tagLabel() const =0; + //! Return the tag number + virtual uint16_t tag() const =0; + /*! + @brief Return an auto-pointer to a copy of itself (deep copy). + The caller owns this copy and the auto-pointer ensures that it + will be deleted. + */ + AutoPtr clone() const; + /*! + @brief Write the key to an output stream. You do not usually have + to use this function; it is used for the implementation of + the output operator for %Key, + operator<<(std::ostream &os, const Key &key). + */ + std::ostream& write(std::ostream& os) const { return os << key(); } + //@} + + protected: + //! @name Manipulators + //@{ + /*! + @brief Assignment operator. Protected so that it can only be used + by subclasses but not directly. + */ + Key& operator=(const Key& rhs); + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual Key* clone_() const =0; + + }; // class Key + + //! Output operator for Key types + inline std::ostream& operator<<(std::ostream& os, const Key& key) + { + return key.write(os); + } + + /*! + @brief Abstract base class defining the interface to access information + related to one metadata tag. + */ + class EXIV2API Metadatum { + public: + //! @name Creators + //@{ + //! Default Constructor + Metadatum(); + //! Copy constructor + Metadatum(const Metadatum& rhs); + //! Destructor + virtual ~Metadatum(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Set the value. This method copies (clones) the value pointed + to by pValue. + */ + virtual void setValue(const Value* pValue) =0; + /*! + @brief Set the value to the string buf. + Uses Value::read(const std::string& buf). If the metadatum does + not have a value yet, then one is created. See subclasses for + more details. Return 0 if the value was read successfully. + */ + virtual int setValue(const std::string& buf) =0; + //@} + + //! @name Accessors + //@{ + /*! + @brief Write the interpreted value to a string. + + Implemented in terms of write(), see there. + */ + std::string print(const ExifData* pMetadata =0) const; + /*! + @brief Write value to a data buffer and return the number + of bytes written. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @param buf Data buffer to write to. + @param byteOrder Applicable byte order (little or big endian). + @return Number of characters written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder) const =0; + /*! + @brief Write the interpreted value to an output stream, return + the stream. + + The method takes an optional pointer to a metadata container. + Pretty-print functions may use that to refer to other metadata as it + is sometimes not sufficient to know only the value of the metadatum + that should be interpreted. Thus, it is advisable to always call this + method with a pointer to the metadata container if possible. + + This functionality is currently only implemented for Exif tags. + The pointer is ignored when used to write IPTC datasets or XMP + properties. + + Without the optional metadata pointer, you do not usually have to use + this function; it is used for the implementation of the output + operator for %Metadatum, + operator<<(std::ostream &os, const Metadatum &md). + + See also print(), which prints the interpreted value to a string. + */ + virtual std::ostream& write( + std::ostream& os, + const ExifData* pMetadata =0 + ) const =0; + /*! + @brief Return the key of the metadatum. The key is of the form + 'familyName.groupName.tagName'. Note however that the key + is not necessarily unique, e.g., an ExifData object may + contain multiple metadata with the same key. + */ + virtual std::string key() const =0; + //! Return the name of the metadata family (which is also the first part of the key) + virtual const char* familyName() const =0; + //! Return the name of the metadata group (which is also the second part of the key) + virtual std::string groupName() const =0; + //! Return the name of the tag (which is also the third part of the key) + virtual std::string tagName() const =0; + //! Return a label for the tag + virtual std::string tagLabel() const =0; + //! Return the tag + virtual uint16_t tag() const =0; + //! Return the type id of the value + virtual TypeId typeId() const =0; + //! Return the name of the type + virtual const char* typeName() const =0; + //! Return the size in bytes of one component of this type + virtual long typeSize() const =0; + //! Return the number of components in the value + virtual long count() const =0; + //! Return the size of the value in bytes + virtual long size() const =0; + //! Return the value as a string. + virtual std::string toString() const =0; + /*! + @brief Return the n-th component of the value converted to + a string. The behaviour of the method is undefined if there + is no n-th component. + */ + virtual std::string toString(long n) const =0; + /*! + @brief Return the n-th component of the value converted to long. + The return value is -1 if the value is not set and the behaviour + of the method is undefined if there is no n-th component. + */ + virtual long toLong(long n =0) const =0; + /*! + @brief Return the n-th component of the value converted to float. + The return value is -1 if the value is not set and the behaviour + of the method is undefined if there is no n-th component. + */ + virtual float toFloat(long n =0) const =0; + /*! + @brief Return the n-th component of the value converted to Rational. + The return value is -1/1 if the value is not set and the behaviour + of the method is undefined if there is no n-th component. + */ + virtual Rational toRational(long n =0) const =0; + /*! + @brief Return an auto-pointer to a copy (clone) of the value. The + caller owns this copy and the auto-poiner ensures that it will + be deleted. + + This method is provided for users who need full control over the + value. A caller may, e.g., downcast the pointer to the appropriate + subclass of Value to make use of the interface of the subclass to set + or modify its contents. + + @return An auto-pointer containing a pointer to a copy (clone) of the + value, 0 if the value is not set. + */ + virtual Value::AutoPtr getValue() const =0; + /*! + @brief Return a constant reference to the value. + + This method is provided mostly for convenient and versatile output of + the value which can (to some extent) be formatted through standard + stream manipulators. Do not attempt to write to the value through + this reference. An Error is thrown if the value is not set; as an + alternative to catching it, one can use count() to check if there + is any data before calling this method. + + @return A constant reference to the value. + @throw Error if the value is not set. + */ + virtual const Value& value() const =0; + //@} + + protected: + //! @name Manipulators + //@{ + /*! + @brief Assignment operator. Protected so that it can only be used + by subclasses but not directly. + */ + Metadatum& operator=(const Metadatum& rhs); + //@} + + }; // class Metadatum + + /*! + @brief Output operator for Metadatum types, writing the interpreted + tag value. + */ + inline std::ostream& operator<<(std::ostream& os, const Metadatum& md) + { + return md.write(os); + } + + /*! + @brief Compare two metadata by tag. Return true if the tag of metadatum + lhs is less than that of rhs. + */ + EXIV2API bool cmpMetadataByTag(const Metadatum& lhs, const Metadatum& rhs); + /*! + @brief Compare two metadata by key. Return true if the key of metadatum + lhs is less than that of rhs. + */ + EXIV2API bool cmpMetadataByKey(const Metadatum& lhs, const Metadatum& rhs); + +} // namespace Exiv2 + +#endif // #ifndef METADATUM_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/mrwimage.hpp b/vendor/exiv2-0.25/include/exiv2/mrwimage.hpp new file mode 100644 index 0000000..696e6f7 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/mrwimage.hpp @@ -0,0 +1,140 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file mrwimage.hpp + @brief Minolta RAW image, implemented using the following references: + Minolta Raw file format by Dalibor Jelinek + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 13-May-06, ahu: created + */ +#ifndef MRWIMAGE_HPP_ +#define MRWIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add MRW to the supported image formats + namespace ImageType { + const int mrw = 5; //!< MRW image type (see class MrwImage) + } + + /*! + @brief Class to access raw Minolta MRW images. Exif metadata is supported + directly, IPTC is read from the Exif data, if present. + */ + class EXIV2API MrwImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing MRW image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + MrwImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + /*! + @brief Todo: Write metadata back to the image. This method is not + yet implemented. Calling it will throw an Error(31). + */ + void writeMetadata(); + /*! + @brief Todo: Not supported yet, requires writeMetadata(). Calling + this function will throw an Error(32). + */ + void setExifData(const ExifData& exifData); + /*! + @brief Todo: Not supported yet, requires writeMetadata(). Calling + this function will throw an Error(32). + */ + void setIptcData(const IptcData& iptcData); + /*! + @brief Not supported. MRW format does not contain a comment. + Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + MrwImage(const MrwImage& rhs); + //! Assignment operator + MrwImage& operator=(const MrwImage& rhs); + //@} + + }; // class MrwImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new MrwImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newMrwInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a MRW image. + EXIV2API bool isMrwType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef MRWIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/orfimage.hpp b/vendor/exiv2-0.25/include/exiv2/orfimage.hpp new file mode 100644 index 0000000..3e4e424 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/orfimage.hpp @@ -0,0 +1,159 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file orfimage.hpp + @brief Olympus RAW image + @version $Rev: 3091 $ + @author Jeff Costlow + costlow@gmail.com + @date 31-Jul-07, costlow: created + */ +#ifndef ORFIMAGE_HPP_ +#define ORFIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add ORF to the supported image formats + namespace ImageType { + const int orf = 9; //!< ORF image type (see class OrfImage) + } + + /*! + @brief Class to access raw Olympus ORF images. Exif metadata is supported + directly, IPTC is read from the Exif data, if present. + */ + class EXIV2API OrfImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing ORF image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + OrfImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Not supported. ORF format does not contain a comment. + Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + OrfImage(const OrfImage& rhs); + //! Assignment operator + OrfImage& operator=(const OrfImage& rhs); + //@} + + }; // class OrfImage + + /*! + @brief Stateless parser class for data in ORF format. Images use this + class to decode and encode ORF data. + See class TiffParser for details. + */ + class EXIV2API OrfParser { + public: + /*! + @brief Decode metadata from a buffer \em pData of length \em size + with data in ORF format to the provided metadata containers. + See TiffParser::decode(). + */ + static ByteOrder decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ); + /*! + @brief Encode metadata from the provided metadata to ORF format. + See TiffParser::encode(). + */ + static WriteMethod encode( + BasicIo& io, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData + ); + }; // class OrfParser + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new OrfImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newOrfInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is an ORF image. + EXIV2API bool isOrfType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef ORFIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/pgfimage.hpp b/vendor/exiv2-0.25/include/exiv2/pgfimage.hpp new file mode 100644 index 0000000..1c0f743 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/pgfimage.hpp @@ -0,0 +1,137 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file pgfimage.hpp + @brief PGF image, implemented using the following references: + PGF specification from libpgf web site
+ @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @date 16-Jun-09, gc: submitted + */ +#ifndef PGFIMAGE_HPP_ +#define PGFIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 +{ + +// ***************************************************************************** +// class definitions + + // Add PGF to the supported image formats + namespace ImageType + { + const int pgf = 17; //!< PGF image type (see class PgfImage) + } + + /*! + @brief Class to access PGF images. Exif and IPTC metadata are supported + directly. + */ + class EXIV2API PgfImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing PGF image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + PgfImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const { return "image/pgf"; } + //@} + + private: + //! @name NOT implemented + //@{ + //! Copy constructor + PgfImage(const PgfImage& rhs); + //! Assignment operator + PgfImage& operator=(const PgfImage& rhs); + /*! + @brief Provides the main implementation of writeMetadata() by + writing all buffered metadata to the provided BasicIo. + @param oIo BasicIo instance to write to (a temporary location). + + @return 4 if opening or writing to the associated BasicIo fails + */ + EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); + //! Read Magick number. Only version >= 6 is supported. + byte readPgfMagicNumber(BasicIo& iIo); + //! Read PGF Header size encoded in 32 bits integer. + uint32_t readPgfHeaderSize(BasicIo& iIo); + //! Read header structure. + DataBuf readPgfHeaderStructure(BasicIo& iIo, int* width, int* height); + //@} + + }; // class PgfImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new PgfImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newPgfInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a PGF image. + EXIV2API bool isPgfType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef PGFIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/pngimage.hpp b/vendor/exiv2-0.25/include/exiv2/pngimage.hpp new file mode 100644 index 0000000..2fa940d --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/pngimage.hpp @@ -0,0 +1,140 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file pngimage.hpp + @brief PNG image, implemented using the following references: + PNG specification by W3C
+ PNG tags list by Phil Harvey
+ @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @date 12-Jun-06, gc: submitted + */ +#ifndef PNGIMAGE_HPP_ +#define PNGIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 +{ + +// ***************************************************************************** +// class definitions + + // Add PNG to the supported image formats + namespace ImageType + { + const int png = 6; //!< PNG image type (see class PngImage) + } + + /*! + @brief Class to access PNG images. Exif and IPTC metadata are supported + directly. + */ + class EXIV2API PngImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing PNG image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + PngImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + + /*! + @brief Print out the structure of image file. + @throw Error if reading of the file fails or the image data is + not valid (does not look like data of the specific image type). + @caution This function is not thread safe and intended for exiv2 -pS for debugging. + */ + void printStructure(std::ostream& out, PrintStructureOption option); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + private: + //! @name NOT implemented + //@{ + //! Copy constructor + PngImage(const PngImage& rhs); + //! Assignment operator + PngImage& operator=(const PngImage& rhs); + /*! + @brief Provides the main implementation of writeMetadata() by + writing all buffered metadata to the provided BasicIo. + @param oIo BasicIo instance to write to (a temporary location). + + @return 4 if opening or writing to the associated BasicIo fails + */ + EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); + //@} + + }; // class PngImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new PngImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newPngInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a PNG image. + EXIV2API bool isPngType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef PNGIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/preview.hpp b/vendor/exiv2-0.25/include/exiv2/preview.hpp new file mode 100644 index 0000000..34cb3a6 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/preview.hpp @@ -0,0 +1,202 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file preview.hpp + @brief Classes to access all preview images embedded in an image. + @version $Rev: 3091 $ + @author Vladimir Nadvornik (vn) + nadvornik@suse.cz + @date 18-Sep-08, vn: created + */ +#ifndef PREVIEW_HPP_ +#define PREVIEW_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "image.hpp" +#include "basicio.hpp" + +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + //! Type of preview image. + typedef int PreviewId; + + /*! + @brief Preview image properties. + */ + struct EXIV2API PreviewProperties { + //! Preview image mime type. + std::string mimeType_; + //! Preview image extension. + std::string extension_; +#ifdef EXV_UNICODE_PATH + //! Unicode preview image extension in an std::wstring + std::wstring wextension_; +#endif + //! Preview image size in bytes. + uint32_t size_; + //! Preview image width in pixels or 0 for unknown width. + uint32_t width_; + //! Preview image height in pixels or 0 for unknown height. + uint32_t height_; + //! Identifies type of preview image. + PreviewId id_; + }; + + //! Container type to hold all preview images metadata. + typedef std::vector PreviewPropertiesList; + + /*! + @brief Class that holds preview image properties and data buffer. + */ + class EXIV2API PreviewImage { + friend class PreviewManager; + public: + //! @name Constructors + //@{ + //! Copy constructor + PreviewImage(const PreviewImage& rhs); + //! Destructor. + ~PreviewImage(); + //@} + + //! @name Manipulators + //@{ + //! Assignment operator + PreviewImage& operator=(const PreviewImage& rhs); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return a copy of the preview image data. The caller owns + this copy and %DataBuf ensures that it will be deleted. + */ + DataBuf copy() const; + /*! + @brief Return a pointer to the image data for read-only access. + */ + const byte* pData() const; + /*! + @brief Return the size of the preview image in bytes. + */ + uint32_t size() const; + /*! + @brief Write the thumbnail image to a file. + + A filename extension is appended to \em path according to the image + type of the preview image, so \em path should not include an extension. + The function will overwrite an existing file of the same name. + + @param path File name of the preview image without extension. + @return The number of bytes written. + */ + long writeFile(const std::string& path) const; +#ifdef EXV_UNICODE_PATH + /*! + @brief Like writeFile() but accepts a unicode path in an std::wstring. + @note This function is only available on Windows. + */ + long writeFile(const std::wstring& wpath) const; +#endif + /*! + @brief Return the MIME type of the preview image, usually either + \c "image/tiff" or \c "image/jpeg". + */ + std::string mimeType() const; + /*! + @brief Return the file extension for the format of the preview image + (".tif" or ".jpg"). + */ + std::string extension() const; +#ifdef EXV_UNICODE_PATH + /*! + @brief Like extension() but returns the unicode encoded extension in + an std::wstring. + @note This function is only available on Windows. + */ + std::wstring wextension() const; +#endif + /*! + @brief Return the width of the preview image in pixels. + */ + uint32_t width() const; + /*! + @brief Return the height of the preview image in pixels. + */ + uint32_t height() const; + /*! + @brief Return the preview image type identifier. + */ + PreviewId id() const; + //@} + + private: + //! Private constructor + EXV_DLLLOCAL PreviewImage(const PreviewProperties& properties, DataBuf data); + + PreviewProperties properties_; //!< Preview image properties + byte* pData_; //!< Pointer to the preview image data + uint32_t size_; //!< Size of the preview image data + + }; // class PreviewImage + + /*! + @brief Class for extracting preview images from image metadata. + */ + class EXIV2API PreviewManager { + public: + //! @name Constructors + //@{ + //! Constructor. + PreviewManager(const Image& image); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the properties of all preview images in a list + sorted by preview width * height, starting with the smallest + preview image. + */ + PreviewPropertiesList getPreviewProperties() const; + /*! + @brief Return the preview image for the given preview properties. + */ + PreviewImage getPreviewImage(const PreviewProperties& properties) const; + //@} + + private: + const Image& image_; + + }; // class PreviewManager +} // namespace Exiv2 + +#endif // #ifndef PREVIEW_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/properties.hpp b/vendor/exiv2-0.25/include/exiv2/properties.hpp new file mode 100644 index 0000000..de08347 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/properties.hpp @@ -0,0 +1,310 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file properties.hpp + @brief XMP property and type information.
References:
+ XMP Specification from Adobe + (Property descriptions copied from the XMP specification with the permission of Adobe) + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @date 13-Jul-07, ahu: created + */ +#ifndef PROPERTIES_HPP_ +#define PROPERTIES_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "metadatum.hpp" +#include "tags.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class XmpKey; + +// ***************************************************************************** +// class definitions + + //! Category of an XMP property + enum XmpCategory { xmpInternal, xmpExternal }; + + //! Information about one XMP property. + struct EXIV2API XmpPropertyInfo { + //! Comparison operator for name + bool operator==(const std::string& name) const; + + const char* name_; //!< Property name + const char* title_; //!< Property title or label + const char* xmpValueType_; //!< XMP value type (for info only) + TypeId typeId_; //!< Exiv2 default type for the property + XmpCategory xmpCategory_; //!< Category (internal or external) + const char* desc_; //!< Property description + }; + + //! Structure mapping XMP namespaces and (preferred) prefixes. + struct EXIV2API XmpNsInfo { + //! For comparison with prefix + struct Prefix { + //! Constructor. + Prefix(const std::string& prefix); + //! The prefix string. + std::string prefix_; + }; + //! For comparison with namespace + struct Ns { + //! Constructor. + Ns(const std::string& ns); + //! The namespace string + std::string ns_; + }; + //! Comparison operator for namespace + bool operator==(const Ns& ns) const; + //! Comparison operator for prefix + bool operator==(const Prefix& prefix) const; + + const char* ns_; //!< Namespace + const char* prefix_; //!< (Preferred) prefix + const XmpPropertyInfo* xmpPropertyInfo_; //!< List of known properties + const char* desc_; //!< Brief description of the namespace + }; + + //! XMP property reference, implemented as a static class. + class EXIV2API XmpProperties { + //! Prevent construction: not implemented. + XmpProperties(); + //! Prevent copy-construction: not implemented. + XmpProperties(const XmpProperties& rhs); + //! Prevent assignment: not implemented. + XmpProperties& operator=(const XmpProperties& rhs); + + public: + /*! + @brief Return the title (label) of the property. + @param key The property key + @return The title (label) of the property, 0 if the + key is of an unknown property. + */ + static const char* propertyTitle(const XmpKey& key); + /*! + @brief Return the description of the property. + @param key The property key + @return The description of the property, 0 if the + key is of an unknown property. + */ + static const char* propertyDesc(const XmpKey& key); + /*! + @brief Return the type for property \em key. The default + for unknown keys is xmpText. + @param key The property key + @return The type of the property + */ + static TypeId propertyType(const XmpKey& key); + /*! + @brief Return information for the property for key. + + If the key is a path to a nested property (one which contains a slash, + like \c Xmp.MP.RegionInfo/MPRI:Regions), determines the innermost element + (\c Xmp.MPRI.Regions) and returns its property information. + + @param key The property key + @return A pointer to the property information, 0 if the + key is of an unknown property. + */ + static const XmpPropertyInfo* propertyInfo(const XmpKey& key); + /*! + @brief Return the namespace name for the schema associated + with \em prefix. + @param prefix Prefix + @return The namespace name + @throw Error if no namespace is registered with \em prefix. + */ + static std::string ns(const std::string& prefix); + /*! + @brief Return the namespace description for the schema associated + with \em prefix. + @param prefix Prefix + @return The namespace description + @throw Error if no namespace is registered with \em prefix. + */ + static const char* nsDesc(const std::string& prefix); + /*! + @brief Return read-only list of built-in properties for \em prefix. + @param prefix Prefix + @return Pointer to the built-in properties for prefix, may be 0 if + none is configured in the namespace info. + @throw Error if no namespace is registered with \em prefix. + */ + static const XmpPropertyInfo* propertyList(const std::string& prefix); + /*! + @brief Return information about a schema namespace for \em prefix. + Always returns a valid pointer. + @param prefix The prefix + @return A pointer to the related information + @throw Error if no namespace is registered with \em prefix. + */ + static const XmpNsInfo* nsInfo(const std::string& prefix); + /*! + @brief Return the (preferred) prefix for schema namespace \em ns. + @param ns Schema namespace + @return The prefix or an empty string if namespace \em ns is not + registered. + */ + static std::string prefix(const std::string& ns); + //! Print a list of properties of a schema namespace to output stream \em os. + static void printProperties(std::ostream& os, const std::string& prefix); + + //! Interpret and print the value of an XMP property + static std::ostream& printProperty(std::ostream& os, + const std::string& key, + const Value& value); + /*! + @brief Register namespace \em ns with preferred prefix \em prefix. + + If the prefix is a known or previously registered prefix, the + corresponding namespace URI is overwritten. + + @note This invalidates XMP keys generated with the previous prefix. + */ + static void registerNs(const std::string& ns, const std::string& prefix); + /*! + @brief Unregister a custom namespace \em ns. + + The function only has an effect if there is a namespace \em ns + registered earlier, it does not unregister built-in namespaces. + + @note This invalidates XMP keys generated in this namespace. + */ + static void unregisterNs(const std::string& ns); + /*! + @brief Unregister all custom namespaces. + + The function only unregisters namespaces registered earlier, it does not + unregister built-in namespaces. + + @note This invalidates XMP keys generated in any custom namespace. + */ + static void unregisterNs(); + //! Type for the namespace registry + typedef std::map NsRegistry; + /*! + @brief Get the registered namespace for a specific \em prefix from the registry. + */ + static const XmpNsInfo* lookupNsRegistry(const XmpNsInfo::Prefix& prefix); + + // DATA + static NsRegistry nsRegistry_; //!< Namespace registry + + }; // class XmpProperties + + /*! + @brief Concrete keys for XMP metadata. + */ + class EXIV2API XmpKey : public Key { + public: + //! Shortcut for an %XmpKey auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + /*! + @brief Constructor to create an XMP key from a key string. + + @param key The key string. + @throw Error if the first part of the key is not 'Xmp' or + the second part of the key cannot be parsed and converted + to a known (i.e., built-in or registered) schema prefix. + */ + explicit XmpKey(const std::string& key); + /*! + @brief Constructor to create an XMP key from a schema prefix + and a property name. + + @param prefix Schema prefix name + @param property Property name + + @throw Error if the schema prefix is not known. + */ + XmpKey(const std::string& prefix, const std::string& property); + //! Copy constructor. + XmpKey(const XmpKey& rhs); + //! Virtual destructor. + virtual ~XmpKey(); + //@} + + //! @name Manipulators + //@{ + //! Assignment operator. + XmpKey& operator=(const XmpKey& rhs); + //@} + + //! @name Accessors + //@{ + virtual std::string key() const; + virtual const char* familyName() const; + /*! + @brief Return the name of the group (the second part of the key). + For XMP keys, the group name is the schema prefix name. + */ + virtual std::string groupName() const; + virtual std::string tagName() const; + virtual std::string tagLabel() const; + //! Properties don't have a tag number. Return 0. + virtual uint16_t tag() const; + + AutoPtr clone() const; + + // Todo: Should this be removed? What about tagLabel then? + //! Return the schema namespace for the prefix of the key + std::string ns() const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual XmpKey* clone_() const; + + private: + // Pimpl idiom + struct Impl; + Impl* p_; + + }; // class XmpKey + +// ***************************************************************************** +// free functions + + //! Output operator for property info + EXIV2API std::ostream& operator<<(std::ostream& os, const XmpPropertyInfo& propertyInfo); + +} // namespace Exiv2 + +#endif // #ifndef PROPERTIES_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/psdimage.hpp b/vendor/exiv2-0.25/include/exiv2/psdimage.hpp new file mode 100644 index 0000000..14bdb4f --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/psdimage.hpp @@ -0,0 +1,153 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file psdimage.hpp + @brief Photoshop image, implemented using the following references: + Adobe Photoshop 6.0 File Format Specification by Adobe
+ @version $Rev: 3091 $ + @author Marco Piovanelli, Ovolab (marco) + marco.piovanelli@pobox.com + @author Michael Ulbrich + mul@rentapacs.de + @date 05-Mar-2007, marco: created + */ +#ifndef PSDIMAGE_HPP_ +#define PSDIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "iptc.hpp" +#include "image.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add PSD to the supported image formats + namespace ImageType { + const int psd = 12; //!< Photoshop (PSD) image type (see class PsdImage) + } + + /*! + @brief Class to access raw Photoshop images. + */ + class EXIV2API PsdImage : public Image { + //! @name NOT Implemented + //@{ + //! Copy constructor + PsdImage(const PsdImage& rhs); + //! Assignment operator + PsdImage& operator=(const PsdImage& rhs); + //@} + + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open a Photoshop image. Since the + constructor can not return a result, callers should check the + good() method after object construction to determine success + or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + PsdImage(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Not supported. Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the MIME type of the image. + + The MIME type returned for Photoshop images is "image/x-photoshop". + + @note This should really be "image/vnd.adobe.photoshop" + (officially registered with IANA in December 2005 -- see + http://www.iana.org/assignments/media-types/image/vnd.adobe.photoshop) + but Apple, as of Tiger (10.4.8), maps this official MIME type to a + dynamic UTI, rather than "com.adobe.photoshop-image" as it should. + */ + std::string mimeType() const; + //@} + + private: + //! @name Manipulators + //@{ + EXV_DLLLOCAL void readResourceBlock(uint16_t resourceId, uint32_t resourceSize); + /*! + @brief Provides the main implementation of writeMetadata() by + writing all buffered metadata to the provided BasicIo. + @param oIo BasicIo instance to write to (a temporary location). + + @return 4 if opening or writing to the associated BasicIo fails + */ + EXV_DLLLOCAL void doWriteMetadata(BasicIo& oIo); + EXV_DLLLOCAL uint32_t writeExifData(const ExifData& exifData, BasicIo& out); + //@} + + //! @name Accessors + //@{ + EXV_DLLLOCAL uint32_t writeIptcData(const IptcData& iptcData, BasicIo& out) const; + EXV_DLLLOCAL uint32_t writeXmpData(const XmpData& xmpData, BasicIo& out) const; + //@} + + }; // class PsdImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new PsdImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newPsdInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Photoshop image. + EXIV2API bool isPsdType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef PSDIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/quicktimevideo.hpp b/vendor/exiv2-0.25/include/exiv2/quicktimevideo.hpp new file mode 100644 index 0000000..6ecd550 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/quicktimevideo.hpp @@ -0,0 +1,253 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file quicktimevideo.hpp + @brief An Image subclass to support Quick Time video files + @version $Rev$ + @author Abhinav Badola for GSoC 2012 + mail.abu.to@gmail.com + @date 28-Jun-12, AB: created + */ +#ifndef QUICKTIMEVIDEO_HPP +#define QUICKTIMEVIDEO_HPP + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "image.hpp" +#include "tags_int.hpp" + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add qtime to the supported image formats + namespace ImageType { + const int qtime = 22; //!< Treating qtime as an image type> + } + + /*! + @brief Class to access QuickTime video files. + */ + class EXIV2API QuickTimeVideo:public Image + { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for a QuickTime video. Since the constructor + can not return a result, callers should check the good() method + after object construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + QuickTimeVideo(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + protected: + /*! + @brief Check for a valid tag and decode the block at the current IO + position. Calls tagDecoder() or skips to next tag, if required. + */ + void decodeBlock(); + /*! + @brief Interpret tag information, and call the respective function + to save it in the respective XMP container. Decodes a Tag + Information and saves it in the respective XMP container, if + the block size is small. + @param buf Data buffer which cotains tag ID. + @param size Size of the data block used to store Tag Information. + */ + void tagDecoder(Exiv2::DataBuf & buf, unsigned long size); + + private: + /*! + @brief Interpret file type of the video, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void fileTypeDecoder(unsigned long size); + /*! + @brief Interpret Media Header Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void mediaHeaderDecoder(unsigned long size); + /*! + @brief Interpret Video Header Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void videoHeaderDecoder(unsigned long size); + /*! + @brief Interpret Movie Header Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void movieHeaderDecoder(unsigned long size); + /*! + @brief Interpret Track Header Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void trackHeaderDecoder(unsigned long size); + /*! + @brief Interpret Handler Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void handlerDecoder(unsigned long size); + /*! + @brief Interpret Tag which contain other sub-tags, + and save it in the respective XMP container. + */ + void multipleEntriesDecoder(); + /*! + @brief Interpret Sample Description Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void sampleDesc(unsigned long size); + /*! + @brief Interpret Image Description Tag, and save it + in the respective XMP container. + */ + void imageDescDecoder(); + /*! + @brief Interpret User Data Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void userDataDecoder(unsigned long size); + /*! + @brief Interpret Preview Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void previewTagDecoder(unsigned long size); + /*! + @brief Interpret Meta Keys Tags, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void keysTagDecoder(unsigned long size); + /*! + @brief Interpret Track Aperture Tags, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void trackApertureTagDecoder(unsigned long size); + /*! + @brief Interpret Nikon Tag, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void NikonTagsDecoder(unsigned long size); + /*! + @brief Interpret Tags from Different Camera make, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void CameraTagsDecoder(unsigned long size); + /*! + @brief Interpret Audio Description Tag, and save it + in the respective XMP container. + */ + void audioDescDecoder(); + /*! + @brief Helps to calculate Frame Rate from timeToSample chunk, + and save it in the respective XMP container. + */ + void timeToSampleDecoder(); + /*! + @brief Recognizes which stream is currently under processing, + and save its information in currentStream_ . + */ + void setMediaStream(); + /*! + @brief Used to discard a tag along with its data. The Tag will + be skipped and not decoded. + @param size Size of the data block that is to skipped. + */ + void discard(unsigned long size); + /*! + @brief Calculates Aspect Ratio of a video, and stores it in the + respective XMP container. + */ + void aspectRatio(); + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + QuickTimeVideo(const QuickTimeVideo& rhs); + //! Assignment operator + QuickTimeVideo& operator=(const QuickTimeVideo& rhs); + //@} + + private: + //! Variable which stores Time Scale unit, used to calculate time. + uint64_t timeScale_; + //! Variable which stores current stream being processsed. + int currentStream_; + //! Variable to check the end of metadata traversing. + bool continueTraversing_; + //! Variable to store height and width of a video frame. + uint64_t height_, width_; + + }; //QuickTimeVideo End + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new QuicktimeVideo instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newQTimeInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Quick Time Video. + EXIV2API bool isQTimeType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // QUICKTIMEVIDEO_HPP diff --git a/vendor/exiv2-0.25/include/exiv2/rafimage.hpp b/vendor/exiv2-0.25/include/exiv2/rafimage.hpp new file mode 100644 index 0000000..efca623 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/rafimage.hpp @@ -0,0 +1,139 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file rafimage.hpp + @brief Fujifilm RAW image + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 05-Feb-07, ahu: created + */ +#ifndef RAFIMAGE_HPP_ +#define RAFIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add RAF to the supported image formats + namespace ImageType { + const int raf = 8; //!< RAF image type (see class RafImage) + } + + /*! + @brief Class to access raw Fujifilm RAF images. Exif metadata is + supported directly, IPTC is read from the Exif data, if present. + */ + class EXIV2API RafImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing RAF image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + RafImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + /*! + @brief Todo: Write metadata back to the image. This method is not + yet implemented. Calling it will throw an Error(31). + */ + void writeMetadata(); + /*! + @brief Todo: Not supported yet, requires writeMetadata(). Calling + this function will throw an Error(32). + */ + void setExifData(const ExifData& exifData); + /*! + @brief Todo: Not supported yet, requires writeMetadata(). Calling + this function will throw an Error(32). + */ + void setIptcData(const IptcData& iptcData); + /*! + @brief Not supported. RAF format does not contain a comment. + Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT implemented + //@{ + //! Copy constructor + RafImage(const RafImage& rhs); + //! Assignment operator + RafImage& operator=(const RafImage& rhs); + //@} + + }; // class RafImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new RafImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newRafInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a RAF image. + EXIV2API bool isRafType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef RAFIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/riffvideo.hpp b/vendor/exiv2-0.25/include/exiv2/riffvideo.hpp new file mode 100644 index 0000000..3715ad7 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/riffvideo.hpp @@ -0,0 +1,215 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file riffvideo.hpp + @brief An Image subclass to support RIFF video files + @version $Rev$ + @author Abhinav Badola for GSoC 2012 + mail.abu.to@gmail.com + @date 18-Jun-12, AB: created + */ +#ifndef RIFFVIDEO_HPP +#define RIFFVIDEO_HPP + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "image.hpp" +#include "tags_int.hpp" + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add RIFF to the supported image formats + namespace ImageType { + const int riff = 20; //!< Treating riff as an image type> + } + + /*! + @brief Class to access RIFF video files. + */ + class EXIV2API RiffVideo:public Image + { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for a Riff video. Since the constructor + can not return a result, callers should check the good() method + after object construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + RiffVideo(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + const char* printAudioEncoding(uint64_t i); + //@} + + protected: + /*! + @brief Check for a valid tag and decode the block at the current IO + position. Calls tagDecoder() or skips to next tag, if required. + */ + void decodeBlock(); + /*! + @brief Interpret tag information, and call the respective function + to save it in the respective XMP container. Decodes a Tag + Information and saves it in the respective XMP container, if + the block size is small. + @param buf Data buffer which cotains tag ID. + @param size Size of the data block used to store Tag Information. + */ + void tagDecoder(Exiv2::DataBuf& buf, unsigned long size); + /*! + @brief Interpret Junk tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void junkHandler(long size); + /*! + @brief Interpret Stream tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void streamHandler(long size); + /*! + @brief Interpret Stream Format tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void streamFormatHandler(long size); + /*! + @brief Interpret Riff Header tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void aviHeaderTagsHandler(long size); + /*! + @brief Interpret Riff List tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void listHandler(long size); + /*! + @brief Interpret Riff Stream Data tag information, and save it + in the respective XMP container. + @param size Size of the data block used to store Tag Information. + */ + void streamDataTagHandler(long size); + /*! + @brief Interpret INFO tag information, and save it + in the respective XMP container. + */ + void infoTagsHandler(); + /*! + @brief Interpret Nikon Tags related to Video information, and + save it in the respective XMP container. + */ + void nikonTagsHandler(); + /*! + @brief Interpret OpenDML tag information, and save it + in the respective XMP container. + */ + void odmlTagsHandler(); + //! @brief Skips Particular Blocks of Metadata List. + void skipListData(); + /*! + @brief Interprets DateTimeOriginal tag or stream name tag + information, and save it in the respective XMP container. + @param size Size of the data block used to store Tag Information. + @param i parameter used to overload function + */ + void dateTimeOriginal(long size, int i = 0); + /*! + @brief Calculates Sample Rate of a particular stream. + @param buf Data buffer with the dividend. + @param divisor The Divisor required to calculate sample rate. + @return Return the sample rate of the stream. + */ + double returnSampleRate(Exiv2::DataBuf& buf, long divisor = 1); + /*! + @brief Calculates Aspect Ratio of a video, and stores it in the + respective XMP container. + @param width Width of the video. + @param height Height of the video. + */ + void fillAspectRatio(long width = 1,long height = 1); + /*! + @brief Calculates Duration of a video, and stores it in the + respective XMP container. + @param frame_rate Frame rate of the video. + @param frame_count Total number of frames present in the video. + */ + void fillDuration(double frame_rate, long frame_count); + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + RiffVideo(const RiffVideo& rhs); + //! Assignment operator + RiffVideo& operator=(const RiffVideo& rhs); + //@} + + private: + //! Variable to check the end of metadata traversing. + bool continueTraversing_; + //! Variable which stores current stream being processsed. + int streamType_; + + }; //Class RiffVideo + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new RiffVideo instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newRiffInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Riff Video. + EXIV2API bool isRiffType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // RIFFVIDEO_HPP diff --git a/vendor/exiv2-0.25/include/exiv2/rw2image.hpp b/vendor/exiv2-0.25/include/exiv2/rw2image.hpp new file mode 100644 index 0000000..ea011ff --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/rw2image.hpp @@ -0,0 +1,159 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file rw2image.hpp + @brief Class Rw2Image + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 06-Jan-09, ahu: created + */ +#ifndef RW2IMAGE_HPP_ +#define RW2IMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add RW2 to the supported image formats + namespace ImageType { + const int rw2 = 16; //!< RW2 image type (see class Rw2Image) + } + + /*! + @brief Class to access raw Panasonic RW2 images. Exif metadata is + supported directly, IPTC and XMP are read from the Exif data, if + present. + */ + class EXIV2API Rw2Image : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open an existing RW2 image. Since the + constructor can not return a result, callers should check the + good() method after object construction to determine success or + failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + Rw2Image(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + /*! + @brief Todo: Write metadata back to the image. This method is not + yet implemented. Calling it will throw an Error(31). + */ + void writeMetadata(); + /*! + @brief Todo: Not supported yet, requires writeMetadata(). Calling + this function will throw an Error(32). + */ + void setExifData(const ExifData& exifData); + /*! + @brief Todo: Not supported yet, requires writeMetadata(). Calling + this function will throw an Error(32). + */ + void setIptcData(const IptcData& iptcData); + /*! + @brief Not supported. RW2 format does not contain a comment. + Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT implemented + //@{ + //! Copy constructor + Rw2Image(const Rw2Image& rhs); + //! Assignment operator + Rw2Image& operator=(const Rw2Image& rhs); + //@} + + }; // class Rw2Image + + /*! + @brief Stateless parser class for data in RW2 format. Images use this + class to decode and encode RW2 data. Only decoding is currently + implemented. See class TiffParser for details. + */ + class EXIV2API Rw2Parser { + public: + /*! + @brief Decode metadata from a buffer \em pData of length \em size + with data in RW2 format to the provided metadata containers. + See TiffParser::decode(). + */ + static ByteOrder decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ); + + }; // class Rw2Parser + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new Rw2Image instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newRw2Instance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a RW2 image. + EXIV2API bool isRw2Type(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef RW2IMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/ssh.hpp b/vendor/exiv2-0.25/include/exiv2/ssh.hpp new file mode 100644 index 0000000..a28499c --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/ssh.hpp @@ -0,0 +1,109 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +#ifndef SSH_HPP_ +#define SSH_HPP_ + +// included header files +#include "config.h" + +#if EXV_USE_SSH == 1 +#include +#include +#include +#include +#include "error.hpp" +#include "types.hpp" +#include "futils.hpp" + +namespace Exiv2 { + /*! + @brief The class provides the high-level functions related to libssh. + It makes the libssh transparent. The functions in this class can + be used without the requirement of understanding libssh. + */ + class EXIV2API SSH { + public: + //! @name Creators + //@{ + /*! + @brief Constructor to set up the connection to ssh server. + @param host The host name of ssh server. + @param user The username used to connect to ssh server. + @param pass The password used to connect to ssh server. + @param port The port to connect to ssh server. Set empty string to use the default port. + @throw Error if it fails to connect the server. + */ + SSH (const std::string& host, const std::string& user, const std::string& pass, const std::string port = ""); + //! Destructor + ~SSH(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Run the command on the remote machine. + @param cmd The command + @param output The container for the command's output + @return 0 (SSH_OK) if there is no error. + */ + int runCommand(const std::string& cmd, std::string* output); + /*! + @brief SCP data to the remote machine. + @param filePath The path of the new file on the remote machine where the data is saved. + @param data The data copied to the remote machine. + @param size The size of the data. + @return 0 (SSH_OK) if there is no error. + @throw Error if it is unable to copy the data. + */ + int scp(const std::string& filePath, const byte* data, size_t size); + /*! + @brief Return the sftp file handle of the file on the remote machine to read the data. + @param filePath The path of the file on the remote machine. + @param handle The container for the file handle. + @throw Error if it is unable to get the sftp file handle. + + @note Be sure to close() the file handle after use. + */ + void getFileSftp(const std::string& filePath, sftp_file& handle); + //@} + private: + /*! + @brief Open the sftp session. + */ + void openSftp(); + // DATA + //! The number of seconds to wait while trying to connect. + long timeout_; + //! the ssh server host + std::string host_; + //! the username + std::string user_; + //! the password + std::string pass_; + //! the ssh session + ssh_session session_; + //! the sftp session + sftp_session sftp_; + }; // class SSH +} // namespace Exiv2 +#endif + +#endif // #ifdef EXIV2_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/svn_version.h b/vendor/exiv2-0.25/include/exiv2/svn_version.h new file mode 100644 index 0000000..359f6e8 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/svn_version.h @@ -0,0 +1,3 @@ +#ifndef SVN_VERSION +#define SVN_VERSION 0 +#endif diff --git a/vendor/exiv2-0.25/include/exiv2/tags.hpp b/vendor/exiv2-0.25/include/exiv2/tags.hpp new file mode 100644 index 0000000..2b2bbee --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/tags.hpp @@ -0,0 +1,238 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tags.hpp + @brief Exif tag and type information + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 15-Jan-04, ahu: created
+ 11-Feb-04, ahu: isolated as a component + */ +#ifndef TAGS_HPP_ +#define TAGS_HPP_ + +// ***************************************************************************** +// included header files +#include "metadatum.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + class ExifKey; + class Value; + struct TagInfo; + +// ***************************************************************************** +// type definitions + + //! Type for a function pointer for functions interpreting the tag value + typedef std::ostream& (*PrintFct)(std::ostream&, const Value&, const ExifData* pExifData); + //! A function returning a tag list. + typedef const TagInfo* (*TagListFct)(); + +// ***************************************************************************** +// class definitions + + //! The details of an Exif group. Groups include IFDs and binary arrays. + struct EXIV2API GroupInfo { + struct GroupName; + bool operator==(int ifdId) const; //!< Comparison operator for IFD id + bool operator==(const GroupName& groupName) const; //!< Comparison operator for group name + int ifdId_; //!< IFD id + const char* ifdName_; //!< IFD name + const char* groupName_; //!< Group name, unique for each group. + TagListFct tagList_; //!< Tag list + }; + + //! Search key to find a GroupInfo by its group name. + struct EXIV2API GroupInfo::GroupName { + GroupName(const std::string& groupName); //!< Constructor + std::string g_; //!< Group name + }; + + //! Tag information + struct EXIV2API TagInfo { + //! Constructor + TagInfo( + uint16_t tag, + const char* name, + const char* title, + const char* desc, + int ifdId, + int sectionId, + TypeId typeId, + int16_t count, + PrintFct printFct + ); + uint16_t tag_; //!< Tag + const char* name_; //!< One word tag label + const char* title_; //!< Tag title + const char* desc_; //!< Short tag description + int ifdId_; //!< Link to the (preferred) IFD + int sectionId_; //!< Section id + TypeId typeId_; //!< Type id + int16_t count_; //!< The number of values (not bytes!), 0=any, -1=count not known. + PrintFct printFct_; //!< Pointer to tag print function + }; // struct TagInfo + + //! Access to Exif group and tag lists and misc. tag reference methods, implemented as a static class. + class EXIV2API ExifTags { + //! Prevent construction: not implemented. + ExifTags(); + //! Prevent copy-construction: not implemented. + ExifTags(const ExifTags& rhs); + //! Prevent assignment: not implemented. + ExifTags& operator=(const ExifTags& rhs); + + public: + //! Return read-only list of built-in groups + static const GroupInfo* groupList(); + //! Return read-only list of built-in \em groupName tags. + static const TagInfo* tagList(const std::string& groupName); + + //! Print a list of all standard Exif tags to output stream + static void taglist(std::ostream& os); + //! Print the list of tags for \em groupName + static void taglist(std::ostream& os, const std::string& groupName); + + //! Return the name of the section for an Exif \em key. + static const char* sectionName(const ExifKey& key); + //! Return the default number of components (not bytes!) \em key has. (0=any, -1=count not known) + static uint16_t defaultCount(const ExifKey& key); + //! Return the name of the IFD for the group. + static const char* ifdName(const std::string& groupName); + + /*! + @brief Return true if \em groupName is a makernote group. + */ + static bool isMakerGroup(const std::string& groupName); + /*! + @brief Return true if \em groupName is a TIFF or Exif IFD, else false. + This is used to differentiate between standard Exif IFDs + and IFDs associated with the makernote. + */ + static bool isExifGroup(const std::string& groupName); + + }; // class ExifTags + + /*! + @brief Concrete keys for Exif metadata and access to Exif tag reference data. + */ + class EXIV2API ExifKey : public Key { + public: + //! Shortcut for an %ExifKey auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + /*! + @brief Constructor to create an Exif key from a key string. + + @param key The key string. + @throw Error if the first part of the key is not 'Exif' or + the remainin parts of the key cannot be parsed and + converted to a group name and tag name. + */ + explicit ExifKey(const std::string& key); + /*! + @brief Constructor to create an Exif key from the tag number and + group name. + @param tag The tag value + @param groupName The name of the group, i.e., the second part of + the Exif key. + @throw Error if the key cannot be constructed from the tag number + and group name. + */ + ExifKey(uint16_t tag, const std::string& groupName); + /*! + @brief Constructor to create an Exif key from a TagInfo instance. + @param ti The TagInfo instance + @throw Error if the key cannot be constructed from the tag number + and group name. + */ + ExifKey(const TagInfo& ti); + //! Copy constructor + ExifKey(const ExifKey& rhs); + //! Destructor + virtual ~ExifKey(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Assignment operator. + */ + ExifKey& operator=(const ExifKey& rhs); + //! Set the index. + void setIdx(int idx); + //@} + + //! @name Accessors + //@{ + virtual std::string key() const; + virtual const char* familyName() const; + virtual std::string groupName() const; + //! Return the IFD id as an integer. (Do not use, this is meant for library internal use.) + int ifdId() const; + virtual std::string tagName() const; + virtual uint16_t tag() const; + virtual std::string tagLabel() const; + //! Return the tag description. + std::string tagDesc() const; // Todo: should be in the base class + //! Return the default type id for this tag. + TypeId defaultTypeId() const; // Todo: should be in the base class + + AutoPtr clone() const; + //! Return the index (unique id of this key within the original Exif data, 0 if not set) + int idx() const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual ExifKey* clone_() const; + + private: + // Pimpl idiom + struct Impl; + Impl* p_; + + }; // class ExifKey + +// ***************************************************************************** +// free functions + + //! Output operator for TagInfo + EXIV2API std::ostream& operator<<(std::ostream& os, const TagInfo& ti); + +} // namespace Exiv2 + +#endif // #ifndef TAGS_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/tgaimage.hpp b/vendor/exiv2-0.25/include/exiv2/tgaimage.hpp new file mode 100644 index 0000000..6de1973 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/tgaimage.hpp @@ -0,0 +1,136 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tgaimage.hpp + @brief Truevision TARGA v2 image, implemented using the following references: + Truevision TGA page on Wikipedia
+ TGA(tm) File Format Specification + @version $Rev: 3090 $ + @author Marco Piovanelli, Ovolab (marco) + marco.piovanelli@pobox.com + @date 05-Mar-2007, marco: created + */ +#ifndef TGAIMAGE_HPP_ +#define TGAIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "iptc.hpp" +#include "image.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add TARGA to the supported image formats + namespace ImageType { + const int tga = 13; //!< Truevision TARGA (tga) image type (see class TgaImage) + } + + /*! + @brief Class to access raw TARGA images. This is just a stub - we only + read width and height. + */ + class EXIV2API TgaImage : public Image { + //! @name NOT Implemented + //@{ + //! Copy constructor + TgaImage(const TgaImage& rhs); + //! Assignment operator + TgaImage& operator=(const TgaImage& rhs); + //@} + + public: + //! @name Creators + //@{ + /*! + @brief Constructor to open a Targa image. Since the + constructor can not return a result, callers should check the + good() method after object construction to determine success + or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + */ + TgaImage(BasicIo::AutoPtr io); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + /*! + @brief Todo: Write metadata back to the image. This method is not + yet(?) implemented. Calling it will throw an Error(31). + */ + void writeMetadata(); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setExifData(const ExifData& exifData); + /*! + @brief Todo: Not supported yet(?). Calling this function will throw + an instance of Error(32). + */ + void setIptcData(const IptcData& iptcData); + /*! + @brief Not supported. Calling this function will throw an instance + of Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + }; // class TgaImage + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new TgaImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newTgaInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a Targa v2 image. + EXIV2API bool isTgaType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef TGAIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/tiffimage.hpp b/vendor/exiv2-0.25/include/exiv2/tiffimage.hpp new file mode 100644 index 0000000..7ca67ad --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/tiffimage.hpp @@ -0,0 +1,225 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tiffimage.hpp + @brief Class TiffImage + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 15-Mar-06, ahu: created + */ +#ifndef TIFFIMAGE_HPP_ +#define TIFFIMAGE_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add TIFF to the supported image formats + namespace ImageType { + const int tiff = 4; //!< TIFF image type (see class TiffImage) + const int dng = 4; //!< DNG image type (see class TiffImage) + const int nef = 4; //!< NEF image type (see class TiffImage) + const int pef = 4; //!< PEF image type (see class TiffImage) + const int arw = 4; //!< ARW image type (see class TiffImage) + const int sr2 = 4; //!< SR2 image type (see class TiffImage) + const int srw = 4; //!< SRW image type (see class TiffImage) + } + + /*! + @brief Class to access TIFF images. Exif metadata is + supported directly, IPTC is read from the Exif data, if present. + */ + class EXIV2API TiffImage : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor that can either open an existing TIFF image or create + a new image from scratch. If a new image is to be created, any + existing data is overwritten. Since the constructor can not return + a result, callers should check the good() method after object + construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new file should be created (true). + */ + TiffImage(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + + /*! + @brief Print out the structure of image file. + @throw Error if reading of the file fails or the image data is + not valid (does not look like data of the specific image type). + @caution This function is not thread safe and intended for exiv2 -pS for debugging. + */ + void printStructure(std::ostream& out, PrintStructureOption option); + + /*! + @brief Not supported. TIFF format does not contain a comment. + Calling this function will throw an Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + int pixelWidth() const; + int pixelHeight() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + TiffImage(const TiffImage& rhs); + //! Assignment operator + TiffImage& operator=(const TiffImage& rhs); + //@} + + //! @name Accessors + //@{ + //! Return the group name of the group with the primary image. + std::string primaryGroup() const; + //@} + + private: + // DATA + mutable std::string primaryGroup_; //!< The primary group + mutable std::string mimeType_; //!< The MIME type + mutable int pixelWidth_; //!< Width of the primary image in pixels + mutable int pixelHeight_; //!< Height of the primary image in pixels + + }; // class TiffImage + + /*! + @brief Stateless parser class for data in TIFF format. Images use this + class to decode and encode TIFF data. It is a wrapper of the + internal class Internal::TiffParserWorker. + */ + class EXIV2API TiffParser { + public: + /*! + @brief Decode metadata from a buffer \em pData of length \em size + with data in TIFF format to the provided metadata containers. + + @param exifData Exif metadata container. + @param iptcData IPTC metadata container. + @param xmpData XMP metadata container. + @param pData Pointer to the data buffer. Must point to data in TIFF + format; no checks are performed. + @param size Length of the data buffer. + + @return Byte order in which the data is encoded. + */ + static ByteOrder decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ); + /*! + @brief Encode metadata from the provided metadata to TIFF format. + + The original binary image in the memory block \em pData, \em size is + parsed and updated in-place if possible ("non-intrusive" writing). + If that is not possible (e.g., if new tags were added), the entire + TIFF structure is re-written to the \em io instance ("intrusive" writing).
+ The return value indicates which write method was used. If it is + \c wmNonIntrusive, the original memory \em pData, \em size contains + the result and nothing is written to \em io. If the return value is + \c wmIntrusive, a new TIFF structure was created and written to + \em io. The memory block \em pData, \em size may be partly updated + in this case and should not be used anymore. + + @note If there is no metadata to encode, i.e., all metadata + containers are empty, then the return value is \c wmIntrusive + and nothing is written to \em io, i.e., no TIFF header is written. + + @param io IO instance to write the binary image to in case of + "intrusive" writing. Nothing is written to \em io in + the case of "non-intrusive" writing. + @param pData Pointer to the binary image data buffer. Must + point to data in TIFF format; no checks are + performed. Will be modified if "non-intrusive" + writing is possible. + @param size Length of the data buffer. + @param byteOrder Byte order to use. + @param exifData Exif metadata container. + @param iptcData IPTC metadata container. + @param xmpData XMP metadata container. + + @return Write method used. + */ + static WriteMethod encode( + BasicIo& io, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData + ); + + }; // class TiffParser + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new TiffImage instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newTiffInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is a TIFF image. + EXIV2API bool isTiffType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef TIFFIMAGE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/types.hpp b/vendor/exiv2-0.25/include/exiv2/types.hpp new file mode 100644 index 0000000..32efbd6 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/types.hpp @@ -0,0 +1,554 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file types.hpp + @brief Type definitions for %Exiv2 and related functionality + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 09-Jan-04, ahu: created
+ 11-Feb-04, ahu: isolated as a component
+ 31-Jul-04, brad: added Time, Data and String values + */ +#ifndef TYPES_HPP_ +#define TYPES_HPP_ + +// included header files +#include "config.h" + +#include "version.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include + +#ifdef EXV_HAVE_STDINT_H +# include +#elif defined(_MSC_VER) +// MSVC (before 2010) doesn't provide C99 types, but it has MS specific variants +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; +typedef __int8 int8_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +typedef __int64 int64_t; +#endif + +// MSVC macro to convert a string to a wide string +#ifdef EXV_UNICODE_PATH +# define EXV_WIDEN(t) L ## t +#endif + +/*! + @brief Macro to make calls to member functions through a pointer more readable. + See the C++ FAQ LITE, item + [33.5] How can I avoid syntax errors when calling a member function using a pointer-to-member-function?. + */ +#define EXV_CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember)) + +// Simple min and max macros +//! Simple common min macro +#define EXV_MIN(a,b) ((a) < (b) ? (a) : (b)) +//! Simple common max macro +#define EXV_MAX(a,b) ((a) > (b) ? (a) : (b)) + +// ***************************************************************************** +// forward declarations +struct tm; + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// type definitions + + //! 1 byte unsigned integer type. + typedef uint8_t byte; + + //! 8 byte unsigned rational type. + typedef std::pair URational; + //! 8 byte signed rational type. + typedef std::pair Rational; + + //! Type to express the byte order (little or big endian) + enum ByteOrder { invalidByteOrder, littleEndian, bigEndian }; + + //! Type to indicate write method used by TIFF parsers + enum WriteMethod { wmIntrusive, wmNonIntrusive }; + + //! An identifier for each type of metadata + enum MetadataId { mdNone=0, mdExif=1, mdIptc=2, mdComment=4, mdXmp=8 }; + + //! An identifier for each mode of metadata support + enum AccessMode { amNone=0, amRead=1, amWrite=2, amReadWrite=3 }; + + /*! + @brief %Exiv2 value type identifiers. + + Used primarily as identifiers when creating %Exiv2 Value instances. + See Value::create. 0x0000 to 0xffff are reserved for TIFF (Exif) types. + */ + enum TypeId { + unsignedByte = 1, //!< Exif BYTE type, 8-bit unsigned integer. + asciiString = 2, //!< Exif ASCII type, 8-bit byte. + unsignedShort = 3, //!< Exif SHORT type, 16-bit (2-byte) unsigned integer. + unsignedLong = 4, //!< Exif LONG type, 32-bit (4-byte) unsigned integer. + unsignedRational = 5, //!< Exif RATIONAL type, two LONGs: numerator and denumerator of a fraction. + signedByte = 6, //!< Exif SBYTE type, an 8-bit signed (twos-complement) integer. + undefined = 7, //!< Exif UNDEFINED type, an 8-bit byte that may contain anything. + signedShort = 8, //!< Exif SSHORT type, a 16-bit (2-byte) signed (twos-complement) integer. + signedLong = 9, //!< Exif SLONG type, a 32-bit (4-byte) signed (twos-complement) integer. + signedRational =10, //!< Exif SRATIONAL type, two SLONGs: numerator and denumerator of a fraction. + tiffFloat =11, //!< TIFF FLOAT type, single precision (4-byte) IEEE format. + tiffDouble =12, //!< TIFF DOUBLE type, double precision (8-byte) IEEE format. + tiffIfd =13, //!< TIFF IFD type, 32-bit (4-byte) unsigned integer. + string =0x10000, //!< IPTC string type. + date =0x10001, //!< IPTC date type. + time =0x10002, //!< IPTC time type. + comment =0x10003, //!< %Exiv2 type for the Exif user comment. + directory =0x10004, //!< %Exiv2 type for a CIFF directory. + xmpText =0x10005, //!< XMP text type. + xmpAlt =0x10006, //!< XMP alternative type. + xmpBag =0x10007, //!< XMP bag type. + xmpSeq =0x10008, //!< XMP sequence type. + langAlt =0x10009, //!< XMP language alternative type. + invalidTypeId =0x1fffe, //!< Invalid type id. + lastTypeId =0x1ffff //!< Last type id. + }; + + //! Container for binary data + typedef std::vector Blob; + +// ***************************************************************************** +// class definitions + + //! Type information lookup functions. Implemented as a static class. + class EXIV2API TypeInfo { + //! Prevent construction: not implemented. + TypeInfo(); + //! Prevent copy-construction: not implemented. + TypeInfo(const TypeInfo& rhs); + //! Prevent assignment: not implemented. + TypeInfo& operator=(const TypeInfo& rhs); + + public: + //! Return the name of the type, 0 if unknown. + static const char* typeName(TypeId typeId); + //! Return the type id for a type name + static TypeId typeId(const std::string& typeName); + //! Return the size in bytes of one element of this type + static long typeSize(TypeId typeId); + + }; + + /*! + @brief Auxiliary type to enable copies and assignments, similar to + std::auto_ptr_ref. See http://www.josuttis.com/libbook/auto_ptr.html + for a discussion. + */ + struct EXIV2API DataBufRef { + //! Constructor + DataBufRef(std::pair rhs) : p(rhs) {} + //! Pointer to a byte array and its size + std::pair p; + }; + + /*! + @brief Utility class containing a character array. All it does is to take + care of memory allocation and deletion. Its primary use is meant to + be as a stack variable in functions that need a temporary data + buffer. + */ + class EXIV2API DataBuf { + public: + //! @name Creators + //@{ + //! Default constructor + DataBuf() : pData_(0), size_(0) {} + //! Constructor with an initial buffer size + explicit DataBuf(long size) : pData_(new byte[size]), size_(size) {} + //! Constructor, copies an existing buffer + DataBuf(const byte* pData, long size); + /*! + @brief Copy constructor. Transfers the buffer to the newly created + object similar to std::auto_ptr, i.e., the original object is + modified. + */ + DataBuf(DataBuf& rhs); + //! Destructor, deletes the allocated buffer + ~DataBuf() { delete[] pData_; } + //@} + + //! @name Manipulators + //@{ + /*! + @brief Assignment operator. Transfers the buffer and releases the + buffer at the original object similar to std::auto_ptr, i.e., + the original object is modified. + */ + DataBuf& operator=(DataBuf& rhs); + /*! + @brief Allocate a data buffer of at least the given size. Note that if + the requested \em size is less than the current buffer size, no + new memory is allocated and the buffer size doesn't change. + */ + void alloc(long size); + /*! + @brief Release ownership of the buffer to the caller. Returns the + buffer as a data pointer and size pair, resets the internal + buffer. + */ + std::pair release(); + //! Reset value + void reset(std::pair =std::make_pair((byte*)(0),long(0))); + //@} + + /*! + @name Conversions + + Special conversions with auxiliary type to enable copies + and assignments, similar to those used for std::auto_ptr. + See http://www.josuttis.com/libbook/auto_ptr.html for a discussion. + */ + //@{ + DataBuf(DataBufRef rhs) : pData_(rhs.p.first), size_(rhs.p.second) {} + DataBuf& operator=(DataBufRef rhs) { reset(rhs.p); return *this; } + operator DataBufRef() { return DataBufRef(release()); } + //@} + + // DATA + //! Pointer to the buffer, 0 if none has been allocated + byte* pData_; + //! The current size of the buffer + long size_; + }; // class DataBuf + + +// ***************************************************************************** +// free functions + + //! Read a 2 byte unsigned short value from the data buffer + EXIV2API uint16_t getUShort(const byte* buf, ByteOrder byteOrder); + //! Read a 4 byte unsigned long value from the data buffer + EXIV2API uint32_t getULong(const byte* buf, ByteOrder byteOrder); + //! Read an 8 byte unsigned rational value from the data buffer + EXIV2API URational getURational(const byte* buf, ByteOrder byteOrder); + //! Read a 2 byte signed short value from the data buffer + EXIV2API int16_t getShort(const byte* buf, ByteOrder byteOrder); + //! Read a 4 byte signed long value from the data buffer + EXIV2API int32_t getLong(const byte* buf, ByteOrder byteOrder); + //! Read an 8 byte signed rational value from the data buffer + EXIV2API Rational getRational(const byte* buf, ByteOrder byteOrder); + //! Read a 4 byte single precision floating point value (IEEE 754 binary32) from the data buffer + EXIV2API float getFloat(const byte* buf, ByteOrder byteOrder); + //! Read an 8 byte double precision floating point value (IEEE 754 binary64) from the data buffer + EXIV2API double getDouble(const byte* buf, ByteOrder byteOrder); + + //! Output operator for our fake rational + EXIV2API std::ostream& operator<<(std::ostream& os, const Rational& r); + //! Input operator for our fake rational + EXIV2API std::istream& operator>>(std::istream& is, Rational& r); + //! Output operator for our fake unsigned rational + EXIV2API std::ostream& operator<<(std::ostream& os, const URational& r); + //! Input operator for our fake unsigned rational + EXIV2API std::istream& operator>>(std::istream& is, URational& r); + + /*! + @brief Convert an unsigned short to data, write the data to the buffer, + return number of bytes written. + */ + EXIV2API long us2Data(byte* buf, uint16_t s, ByteOrder byteOrder); + /*! + @brief Convert an unsigned long to data, write the data to the buffer, + return number of bytes written. + */ + EXIV2API long ul2Data(byte* buf, uint32_t l, ByteOrder byteOrder); + /*! + @brief Convert an unsigned rational to data, write the data to the buffer, + return number of bytes written. + */ + EXIV2API long ur2Data(byte* buf, URational l, ByteOrder byteOrder); + /*! + @brief Convert a signed short to data, write the data to the buffer, + return number of bytes written. + */ + EXIV2API long s2Data(byte* buf, int16_t s, ByteOrder byteOrder); + /*! + @brief Convert a signed long to data, write the data to the buffer, + return number of bytes written. + */ + EXIV2API long l2Data(byte* buf, int32_t l, ByteOrder byteOrder); + /*! + @brief Convert a signed rational to data, write the data to the buffer, + return number of bytes written. + */ + EXIV2API long r2Data(byte* buf, Rational l, ByteOrder byteOrder); + /*! + @brief Convert a single precision floating point (IEEE 754 binary32) float + to data, write the data to the buffer, return number of bytes written. + */ + EXIV2API long f2Data(byte* buf, float f, ByteOrder byteOrder); + /*! + @brief Convert a double precision floating point (IEEE 754 binary64) double + to data, write the data to the buffer, return number of bytes written. + */ + EXIV2API long d2Data(byte* buf, double d, ByteOrder byteOrder); + + /*! + @brief Print len bytes from buf in hex and ASCII format to the given + stream, prefixed with the position in the buffer adjusted by + offset. + */ + EXIV2API void hexdump(std::ostream& os, const byte* buf, long len, long offset =0); + + /*! + @brief Return true if str is a hex number starting with prefix followed + by size hex digits, false otherwise. If size is 0, any number of + digits is allowed and all are checked. + */ + EXIV2API bool isHex(const std::string& str, + size_t size =0, + const std::string& prefix =""); + + /*! + @brief Converts a string in the form "%Y:%m:%d %H:%M:%S", e.g., + "2007:05:24 12:31:55" to broken down time format, + returns 0 if successful, else 1. + */ + EXIV2API int exifTime(const char* buf, struct tm* tm); + + /*! + @brief Translate a string using the gettext framework. This wrapper hides + all the implementation details from the interface. + */ + EXIV2API const char* exvGettext(const char* str); + +#ifdef EXV_UNICODE_PATH + //! Convert an std::string s to a unicode string returned as a std::wstring. + EXIV2API std::wstring s2ws(const std::string& s); + //! Convert a unicode std::wstring s to an std::string. + EXIV2API std::string ws2s(const std::wstring& s); + +#endif + /*! + @brief Return a \em long set to the value represented by \em s. + + Besides strings that represent \em long values, the function also + handles \em float, \em Rational and boolean + (see also: stringTo(const std::string& s, bool& ok)). + + @param s String to parse + @param ok Output variable indicating the success of the operation. + @return Returns the \em long value represented by \em s and sets \em ok + to \c true if the conversion was successful or \c false if not. + */ + EXIV2API long parseLong(const std::string& s, bool& ok); + + /*! + @brief Return a \em float set to the value represented by \em s. + + Besides strings that represent \em float values, the function also + handles \em long, \em Rational and boolean + (see also: stringTo(const std::string& s, bool& ok)). + + @param s String to parse + @param ok Output variable indicating the success of the operation. + @return Returns the \em float value represented by \em s and sets \em ok + to \c true if the conversion was successful or \c false if not. + */ + EXIV2API float parseFloat(const std::string& s, bool& ok); + + /*! + @brief Return a \em Rational set to the value represented by \em s. + + Besides strings that represent \em Rational values, the function also + handles \em long, \em float and boolean + (see also: stringTo(const std::string& s, bool& ok)). + Uses floatToRationalCast(float f) if the string can be parsed into a + \em float. + + @param s String to parse + @param ok Output variable indicating the success of the operation. + @return Returns the \em Rational value represented by \em s and sets \em ok + to \c true if the conversion was successful or \c false if not. + */ + EXIV2API Rational parseRational(const std::string& s, bool& ok); + + /*! + @brief Very simple conversion of a \em float to a \em Rational. + + Test it with the values that you expect and check the implementation + to see if this is really what you want! + */ + EXIV2API Rational floatToRationalCast(float f); + +// ***************************************************************************** +// template and inline definitions + + /*! + @brief Find an element that matches \em key in the array \em src. + + Designed to be used with lookup tables as shown in the example below. + Requires a %Key structure (ideally in the array) and a comparison operator + to compare a key with an array element. The size of the array is + determined automagically. Thanks to Stephan Broennimann for this nifty + implementation. + + @code + struct Bar { + int i; + int k; + const char* data; + + struct Key; + bool operator==(const Bar::Key& rhs) const; + }; + + struct Bar::Key { + Key(int a, int b) : i(a), k(b) {} + int i; + int k; + }; + + bool Bar::operator==(const Bar::Key& key) const // definition + { + return i == key.i && k == key.k; + } + + const Bar bars[] = { + { 1, 1, "bar data 1" }, + { 1, 2, "bar data 2" }, + { 1, 3, "bar data 3" } + }; + + int main ( void ) { + const Bar* bar = find(bars, Bar::Key(1, 3)); + if (bar) std::cout << bar->data << "\n"; + else std::cout << "Key not found.\n"; + return 0; + } + @endcode + */ + template + const T* find(T (&src)[N], const K& key) + { + const T* rc = std::find(src, src + N, key); + return rc == src + N ? 0 : rc; + } + + //! Template used in the COUNTOF macro to determine the size of an array + template char (&sizer(T (&)[N]))[N]; +//! Macro to determine the size of an array +#define EXV_COUNTOF(a) (sizeof(Exiv2::sizer(a))) + + //! Utility function to convert the argument of any type to a string + template + std::string toString(const T& arg) + { + std::ostringstream os; + os << arg; + return os.str(); + } + + /*! + @brief Utility function to convert a string to a value of type \c T. + + The string representation of the value must match that recognized by + the input operator for \c T for this function to succeed. + + @param s String to convert + @param ok Output variable indicating the success of the operation. + @return Returns the converted value and sets \em ok to \c true if the + conversion was successful or \c false if not. + */ + template + T stringTo(const std::string& s, bool& ok) + { + std::istringstream is(s); + T tmp; + ok = is >> tmp ? true : false; + std::string rest; + is >> std::skipws >> rest; + if (!rest.empty()) ok = false; + return tmp; + } + + /*! + @brief Specialization of stringTo(const std::string& s, bool& ok) for \em bool. + + Handles the same string values as the XMP SDK. Converts the string to lowercase + and returns \c true if it is "true", "t" or "1", and \c false if it is + "false", "f" or "0". + */ + template<> + bool stringTo(const std::string& s, bool& ok); + + /*! + @brief Return the greatest common denominator of n and m. + (Implementation from Boost rational.hpp) + + @note We use n and m as temporaries in this function, so there is no + value in using const IntType& as we would only need to make a copy + anyway... + */ + template + IntType gcd(IntType n, IntType m) + { + // Avoid repeated construction + IntType zero(0); + + // This is abs() - given the existence of broken compilers with Koenig + // lookup issues and other problems, I code this explicitly. (Remember, + // IntType may be a user-defined type). +#ifdef _MSC_VER +#pragma warning( disable : 4146 ) +#endif + if (n < zero) + n = -n; + if (m < zero) + m = -m; +#ifdef _MSC_VER +#pragma warning( default : 4146 ) +#endif + + // As n and m are now positive, we can be sure that %= returns a + // positive value (the standard guarantees this for built-in types, + // and we require it of user-defined types). + for(;;) { + if(m == zero) + return n; + n %= m; + if(n == zero) + return m; + m %= n; + } + } + +} // namespace Exiv2 + +#endif // #ifndef TYPES_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/utilsvideo.hpp b/vendor/exiv2-0.25/include/exiv2/utilsvideo.hpp new file mode 100644 index 0000000..f1eb034 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/utilsvideo.hpp @@ -0,0 +1,42 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file utilsvideo.hpp + @brief An Image subclass to support RIFF video files + @version $Rev$ + Mahesh Hegde 2014 + maheshmhegade@gmail.com + @date 16-Aug-14, AB: created + */ +#include "tags_int.hpp" + +namespace Exiv2 +{ + +class UtilsVideo +{ +public: + static bool compareTagValue(Exiv2::DataBuf &buf, const char *str); + static bool compareTagValue(Exiv2::DataBuf& buf,const char arr[][5],int32_t arraysize); + static bool simpleBytesComparison(Exiv2::DataBuf& buf ,const char* str,int32_t size); +}; // class UtilsVideo + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/include/exiv2/value.hpp b/vendor/exiv2-0.25/include/exiv2/value.hpp new file mode 100644 index 0000000..831eab3 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/value.hpp @@ -0,0 +1,1764 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file value.hpp + @brief Value interface and concrete subclasses + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 09-Jan-04, ahu: created + 11-Feb-04, ahu: isolated as a component + 31-Jul-04, brad: added Time, Data and String values + */ +#ifndef VALUE_HPP_ +#define VALUE_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + /*! + @brief Common interface for all types of values used with metadata. + + The interface provides a uniform way to access values independent of + their actual C++ type for simple tasks like reading the values from a + string or data buffer. For other tasks, like modifying values you may + need to downcast it to a specific subclass to access its interface. + */ + class EXIV2API Value { + public: + //! Shortcut for a %Value auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Constructor, taking a type id to initialize the base class with + explicit Value(TypeId typeId); + //! Virtual destructor. + virtual ~Value(); + //@} + //! @name Manipulators + //@{ + /*! + @brief Read the value from a character buffer. + + @param buf Pointer to the data buffer to read from + @param len Number of bytes in the data buffer + @param byteOrder Applicable byte order (little or big endian). + + @return 0 if successful. + */ + virtual int read(const byte* buf, long len, ByteOrder byteOrder) =0; + /*! + @brief Set the value from a string buffer. The format of the string + corresponds to that of the write() method, i.e., a string + obtained through the write() method can be read by this + function. + + @param buf The string to read from. + + @return 0 if successful. + */ + virtual int read(const std::string& buf) =0; + /*! + @brief Set the data area, if the value has one by copying (cloning) + the buffer pointed to by buf. + + Values may have a data area, which can contain additional + information besides the actual value. This method is used to set such + a data area. + + @param buf Pointer to the source data area + @param len Size of the data area + @return Return -1 if the value has no data area, else 0. + */ + virtual int setDataArea(const byte* buf, long len); + //@} + + //! @name Accessors + //@{ + //! Return the type identifier (Exif data format type). + TypeId typeId() const { return type_; } + /*! + @brief Return an auto-pointer to a copy of itself (deep copy). + The caller owns this copy and the auto-pointer ensures that + it will be deleted. + */ + AutoPtr clone() const { return AutoPtr(clone_()); } + /*! + @brief Write value to a data buffer. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @param buf Data buffer to write to. + @param byteOrder Applicable byte order (little or big endian). + @return Number of bytes written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder) const =0; + //! Return the number of components of the value + virtual long count() const =0; + //! Return the size of the value in bytes + virtual long size() const =0; + /*! + @brief Write the value to an output stream. You do not usually have + to use this function; it is used for the implementation of + the output operator for %Value, + operator<<(std::ostream &os, const Value &value). + */ + virtual std::ostream& write(std::ostream& os) const =0; + /*! + @brief Return the value as a string. Implemented in terms of + write(std::ostream& os) const of the concrete class. + */ + std::string toString() const; + /*! + @brief Return the n-th component of the value as a string. + The default implementation returns toString(). The behaviour + of this method may be undefined if there is no n-th + component. + */ + virtual std::string toString(long n) const; + /*! + @brief Convert the n-th component of the value to a long. + The behaviour of this method may be undefined if there is no + n-th component. + + @return The converted value. + */ + virtual long toLong(long n =0) const =0; + /*! + @brief Convert the n-th component of the value to a float. + The behaviour of this method may be undefined if there is no + n-th component. + + @return The converted value. + */ + virtual float toFloat(long n =0) const =0; + /*! + @brief Convert the n-th component of the value to a Rational. + The behaviour of this method may be undefined if there is no + n-th component. + + @return The converted value. + */ + virtual Rational toRational(long n =0) const =0; + //! Return the size of the data area, 0 if there is none. + virtual long sizeDataArea() const; + /*! + @brief Return a copy of the data area if the value has one. The + caller owns this copy and DataBuf ensures that it will be + deleted. + + Values may have a data area, which can contain additional + information besides the actual value. This method is used to access + such a data area. + + @return A DataBuf containing a copy of the data area or an empty + DataBuf if the value does not have a data area assigned. + */ + virtual DataBuf dataArea() const; + /*! + @brief Check the \em ok status indicator. After a to conversion, + this indicator shows whether the conversion was successful. + */ + bool ok() const { return ok_; } + //@} + + /*! + @brief A (simple) factory to create a Value type. + + The following Value subclasses are created depending on typeId:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
typeId%Value subclass
invalidTypeId%DataValue(invalidTypeId)
unsignedByte%DataValue(unsignedByte)
asciiString%AsciiValue
string%StringValue
unsignedShort%ValueType < uint16_t >
unsignedLong%ValueType < uint32_t >
unsignedRational%ValueType < URational >
invalid6%DataValue(invalid6)
undefined%DataValue
signedShort%ValueType < int16_t >
signedLong%ValueType < int32_t >
signedRational%ValueType < Rational >
tiffFloat%ValueType < float >
tiffDouble%ValueType < double >
tiffIfd%ValueType < uint32_t >
date%DateValue
time%TimeValue
comment%CommentValue
xmpText%XmpTextValue
xmpBag%XmpArrayValue
xmpSeq%XmpArrayValue
xmpAlt%XmpArrayValue
langAlt%LangAltValue
default:%DataValue(typeId)
+ + @param typeId Type of the value. + @return Auto-pointer to the newly created Value. The caller owns this + copy and the auto-pointer ensures that it will be deleted. + */ + static AutoPtr create(TypeId typeId); + + protected: + /*! + @brief Assignment operator. Protected so that it can only be used + by subclasses but not directly. + */ + Value& operator=(const Value& rhs); + // DATA + mutable bool ok_; //!< Indicates the status of the previous to conversion + + private: + //! Internal virtual copy constructor. + virtual Value* clone_() const =0; + // DATA + TypeId type_; //!< Type of the data + + }; // class Value + + //! Output operator for Value types + inline std::ostream& operator<<(std::ostream& os, const Value& value) + { + return value.write(os); + } + + //! %Value for an undefined data type. + class EXIV2API DataValue : public Value { + public: + //! Shortcut for a %DataValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor. + explicit DataValue(TypeId typeId =undefined); + //! Constructor + DataValue(const byte* buf, + long len, ByteOrder byteOrder =invalidByteOrder, + TypeId typeId =undefined); + //! Virtual destructor. + virtual ~DataValue(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Read the value from a character buffer. + + @note The byte order is required by the interface but not + used by this method, so just use the default. + + @param buf Pointer to the data buffer to read from + @param len Number of bytes in the data buffer + @param byteOrder Byte order. Not needed. + + @return 0 if successful. + */ + virtual int read(const byte* buf, + long len, + ByteOrder byteOrder =invalidByteOrder); + //! Set the data from a string of integer values (e.g., "0 1 2 3") + virtual int read(const std::string& buf); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + /*! + @brief Write value to a character data buffer. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @param buf Data buffer to write to. + @param byteOrder Byte order. Not needed. + @return Number of characters written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; + virtual long count() const; + virtual long size() const; + virtual std::ostream& write(std::ostream& os) const; + /*! + @brief Return the n-th component of the value as a string. + The behaviour of this method may be undefined if there is no + n-th component. + */ + virtual std::string toString(long n) const; + virtual long toLong(long n =0) const; + virtual float toFloat(long n =0) const; + virtual Rational toRational(long n =0) const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual DataValue* clone_() const; + + public: + //! Type used to store the data. + typedef std::vector ValueType; + // DATA + ValueType value_; //!< Stores the data value + + }; // class DataValue + + /*! + @brief Abstract base class for a string based %Value type. + + Uses a std::string to store the value and implements defaults for + most operations. + */ + class EXIV2API StringValueBase : public Value { + public: + //! Shortcut for a %StringValueBase auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Constructor for subclasses + explicit StringValueBase(TypeId typeId); + //! Constructor for subclasses + StringValueBase(TypeId typeId, const std::string& buf); + //! Copy constructor + StringValueBase(const StringValueBase& rhs); + //! Virtual destructor. + virtual ~StringValueBase(); + //@} + + //! @name Manipulators + //@{ + //! Read the value from buf. This default implementation uses buf as it is. + virtual int read(const std::string& buf); + /*! + @brief Read the value from a character buffer. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Pointer to the data buffer to read from + @param len Number of bytes in the data buffer + @param byteOrder Byte order. Not needed. + + @return 0 if successful. + */ + virtual int read(const byte* buf, + long len, + ByteOrder byteOrder =invalidByteOrder); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + /*! + @brief Write value to a character data buffer. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Data buffer to write to. + @param byteOrder Byte order. Not used. + @return Number of characters written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; + virtual long count() const; + virtual long size() const; + virtual long toLong(long n =0) const; + virtual float toFloat(long n =0) const; + virtual Rational toRational(long n =0) const; + virtual std::ostream& write(std::ostream& os) const; + //@} + + protected: + //! Assignment operator. + StringValueBase& operator=(const StringValueBase& rhs); + //! Internal virtual copy constructor. + virtual StringValueBase* clone_() const =0; + + public: + // DATA + std::string value_; //!< Stores the string value. + + }; // class StringValueBase + + /*! + @brief %Value for string type. + + This can be a plain Ascii string or a multipe byte encoded string. It is + left to caller to decode and encode the string to and from readable + text if that is required. + */ + class EXIV2API StringValue : public StringValueBase { + public: + //! Shortcut for a %StringValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor. + StringValue(); + //! Constructor + explicit StringValue(const std::string& buf); + //! Virtual destructor. + virtual ~StringValue(); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual StringValue* clone_() const; + + }; // class StringValue + + /*! + @brief %Value for an Ascii string type. + + This class is for null terminated single byte Ascii strings. + This class also ensures that the string is null terminated. + */ + class EXIV2API AsciiValue : public StringValueBase { + public: + //! Shortcut for a %AsciiValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor. + AsciiValue(); + //! Constructor + explicit AsciiValue(const std::string& buf); + //! Virtual destructor. + virtual ~AsciiValue(); + //@} + + //! @name Manipulators + //@{ + using StringValueBase::read; + /*! + @brief Set the value to that of the string buf. Overrides base class + to append a terminating '\\0' character if buf doesn't end + with '\\0'. + */ + virtual int read(const std::string& buf); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + /*! + @brief Write the ASCII value up to the the first '\\0' character to an + output stream. Any further characters are ignored and not + written to the output stream. + */ + virtual std::ostream& write(std::ostream& os) const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual AsciiValue* clone_() const; + + }; // class AsciiValue + + /*! + @brief %Value for an Exif comment. + + This can be a plain Ascii string or a multipe byte encoded string. The + comment is expected to be encoded in the character set indicated (default + undefined), but this is not checked. It is left to caller to decode and + encode the string to and from readable text if that is required. + */ + class EXIV2API CommentValue : public StringValueBase { + public: + //! Character set identifiers for the character sets defined by %Exif + enum CharsetId { ascii, jis, unicode, undefined, + invalidCharsetId, lastCharsetId }; + //! Information pertaining to the defined character sets + struct CharsetTable { + //! Constructor + CharsetTable(CharsetId charsetId, + const char* name, + const char* code); + CharsetId charsetId_; //!< Charset id + const char* name_; //!< Name of the charset + const char* code_; //!< Code of the charset + }; // struct CharsetTable + //! Charset information lookup functions. Implemented as a static class. + class EXIV2API CharsetInfo { + //! Prevent construction: not implemented. + CharsetInfo() {} + //! Prevent copy-construction: not implemented. + CharsetInfo(const CharsetInfo&); + //! Prevent assignment: not implemented. + CharsetInfo& operator=(const CharsetInfo&); + + public: + //! Return the name for a charset id + static const char* name(CharsetId charsetId); + //! Return the code for a charset id + static const char* code(CharsetId charsetId); + //! Return the charset id for a name + static CharsetId charsetIdByName(const std::string& name); + //! Return the charset id for a code + static CharsetId charsetIdByCode(const std::string& code); + + private: + static const CharsetTable charsetTable_[]; + }; // class CharsetInfo + + //! Shortcut for a %CommentValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor. + CommentValue(); + //! Constructor, uses read(const std::string& comment) + explicit CommentValue(const std::string& comment); + //! Virtual destructor. + virtual ~CommentValue(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Read the value from a comment + + The format of \em comment is: +
+ [charset=["]Ascii|Jis|Unicode|Undefined["] ]comment +
+ The default charset is Undefined. + + @return 0 if successful
+ 1 if an invalid character set is encountered + */ + int read(const std::string& comment); + /*! + @brief Read the comment from a byte buffer. + */ + int read(const byte* buf, long len, ByteOrder byteOrder); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + long copy(byte* buf, ByteOrder byteOrder) const; + /*! + @brief Write the comment in a format which can be read by + read(const std::string& comment). + */ + std::ostream& write(std::ostream& os) const; + /*! + @brief Return the comment (without a charset="..." prefix) + + The comment is decoded to UTF-8. For Exif UNICODE comments, the + function makes an attempt to correctly determine the character + encoding of the value. Alternatively, the optional \em encoding + parameter can be used to specify it. + + @param encoding Optional argument to specify the character encoding + that the comment is encoded in, as an iconv(3) name. Only used + for Exif UNICODE comments. + + @return A string containing the comment converted to UTF-8. + */ + std::string comment(const char* encoding =0) const; + /*! + @brief Determine the character encoding that was used to encode the + UNICODE comment value as an iconv(3) name. + + If the comment \em c starts with a BOM, the BOM is interpreted and + removed from the string. + + Todo: Implement rules to guess if the comment is UTF-8 encoded. + */ + const char* detectCharset(std::string& c) const; + //! Return the Exif charset id of the comment + CharsetId charsetId() const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual CommentValue* clone_() const; + + public: + // DATA + ByteOrder byteOrder_; //!< Byte order of the comment string that was read + + }; // class CommentValue + + /*! + @brief Base class for all Exiv2 values used to store XMP property values. + */ + class EXIV2API XmpValue : public Value { + public: + //! Shortcut for a %XmpValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! XMP array types. + enum XmpArrayType { xaNone, xaAlt, xaBag, xaSeq }; + //! XMP structure indicator. + enum XmpStruct { xsNone, xsStruct }; + + //! @name Creators + //@{ + explicit XmpValue(TypeId typeId); + //@} + + //! @name Accessors + //@{ + //! Return XMP array type, indicates if an XMP value is an array. + XmpArrayType xmpArrayType() const; + //! Return XMP struct, indicates if an XMP value is a structure. + XmpStruct xmpStruct() const; + virtual long size() const; + /*! + @brief Write value to a character data buffer. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Data buffer to write to. + @param byteOrder Byte order. Not used. + @return Number of characters written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; + //@} + + //! @name Manipulators + //@{ + //! Set the XMP array type to indicate that an XMP value is an array. + void setXmpArrayType(XmpArrayType xmpArrayType); + //! Set the XMP struct type to indicate that an XMP value is a structure. + void setXmpStruct(XmpStruct xmpStruct =xsStruct); + /*! + @brief Read the value from a character buffer. + + Uses read(const std::string& buf) + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Pointer to the data buffer to read from + @param len Number of bytes in the data buffer + @param byteOrder Byte order. Not needed. + + @return 0 if successful. + */ + virtual int read(const byte* buf, + long len, + ByteOrder byteOrder =invalidByteOrder); + virtual int read(const std::string& buf) =0; + //@} + + /*! + @brief Return XMP array type for an array Value TypeId, xaNone if + \em typeId is not an XMP array value type. + */ + static XmpArrayType xmpArrayType(TypeId typeId); + + protected: + /*! + @brief Assignment operator. Protected so that it can only be used + by subclasses but not directly. + */ + XmpValue& operator=(const XmpValue& rhs); + + private: + // DATA + XmpArrayType xmpArrayType_; //!< Type of XMP array + XmpStruct xmpStruct_; //!< XMP structure indicator + + }; // class XmpValue + + /*! + @brief %Value type suitable for simple XMP properties and + XMP nodes of complex types which are not parsed into + specific values. + + Uses a std::string to store the value. + */ + class EXIV2API XmpTextValue : public XmpValue { + public: + //! Shortcut for a %XmpTextValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Constructor. + XmpTextValue(); + //! Constructor, reads the value from a string. + explicit XmpTextValue(const std::string& buf); + //@} + + //! @name Manipulators + //@{ + using XmpValue::read; + /*! + @brief Read a simple property value from \em buf to set the value. + + Sets the value to the contents of \em buf. A optional keyword, + \em type is supported to set the XMP value type. This is useful for + complex value types for which Exiv2 does not have direct support. + + The format of \em buf is: +
+ [type=["]Alt|Bag|Seq|Struct["] ]text +
+ + @return 0 if successful. + */ + + virtual int read(const std::string& buf); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const; + long size() const; + virtual long count() const; + /*! + @brief Convert the value to a long. + The optional parameter \em n is not used and is ignored. + + @return The converted value. + */ + virtual long toLong(long n =0) const; + /*! + @brief Convert the value to a float. + The optional parameter \em n is not used and is ignored. + + @return The converted value. + */ + virtual float toFloat(long n =0) const; + /*! + @brief Convert the value to a Rational. + The optional parameter \em n is not used and is ignored. + + @return The converted value. + */ + virtual Rational toRational(long n =0) const; + virtual std::ostream& write(std::ostream& os) const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual XmpTextValue* clone_() const; + + public: + // DATA + std::string value_; //!< Stores the string values. + + }; // class XmpTextValue + + /*! + @brief %Value type for simple arrays. Each item in the array is a simple + value, without qualifiers. The array may be an ordered (\em seq), + unordered (\em bag) or alternative array (\em alt). The array + items must not contain qualifiers. For language alternatives use + LangAltValue. + + Uses a vector of std::string to store the value(s). + */ + class EXIV2API XmpArrayValue : public XmpValue { + public: + //! Shortcut for a %XmpArrayValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Constructor. \em typeId can be one of xmpBag, xmpSeq or xmpAlt. + explicit XmpArrayValue(TypeId typeId =xmpBag); + //@} + + //! @name Manipulators + //@{ + using XmpValue::read; + /*! + @brief Read a simple property value from \em buf and append it + to the value. + + Appends \em buf to the value after the last existing array element. + Subsequent calls will therefore populate multiple array elements in + the order they are read. + + @return 0 if successful. + */ + virtual int read(const std::string& buf); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const; + virtual long count() const; + /*! + @brief Return the n-th component of the value as a string. + The behaviour of this method may be undefined if there is no + n-th component. + */ + virtual std::string toString(long n) const; + virtual long toLong(long n =0) const; + virtual float toFloat(long n =0) const; + virtual Rational toRational(long n =0) const; + /*! + @brief Write all elements of the value to \em os, separated by commas. + + @note The output of this method cannot directly be used as the parameter + for read(). + */ + virtual std::ostream& write(std::ostream& os) const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual XmpArrayValue* clone_() const; + + public: + //! Type used to store XMP array elements. + typedef std::vector ValueType; + // DATA + std::vector value_; //!< Stores the string values. + + }; // class XmpArrayValue + + /*! + @brief %LangAltValueComparator + + #1058 + https://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf + XMP spec chapter B.4 (page 42) the xml:lang qualifier is to be compared case insensitive. + */ + struct LangAltValueComparator { + bool operator() (const std::string& str1, const std::string& str2) const + { + int result = str1.size() < str2.size() ? 1 + : str1.size() > str2.size() ? -1 + : 0 + ; + std::string::const_iterator c1 = str1.begin(); + std::string::const_iterator c2 = str2.begin(); + if ( result==0 ) for ( + ; result==0 && c1 != str1.end() + ; ++c1, ++c2 + ) { + result = tolower(*c1) < tolower(*c2) ? 1 + : tolower(*c1) > tolower(*c2) ? -1 + : 0 + ; + } + return result < 0 ; + } + }; + + /*! + @brief %Value type for XMP language alternative properties. + + A language alternative is an array consisting of simple text values, + each of which has a language qualifier. + */ + class EXIV2API LangAltValue : public XmpValue { + public: + //! Shortcut for a %LangAltValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Constructor. + LangAltValue(); + //! Constructor, reads the value from a string. + explicit LangAltValue(const std::string& buf); + //@} + + //! @name Manipulators + //@{ + using XmpValue::read; + /*! + @brief Read a simple property value from \em buf and append it + to the value. + + Appends \em buf to the value after the last existing array element. + Subsequent calls will therefore populate multiple array elements in + the order they are read. + + The format of \em buf is: +
+ [lang=["]language code["] ]text +
+ The XMP default language code x-default is used if + \em buf doesn't start with the keyword lang. + + @return 0 if successful. + */ + virtual int read(const std::string& buf); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const; + virtual long count() const; + /*! + @brief Return the text value associated with the default language + qualifier \c x-default. The parameter \em n is not used, but + it is suggested that only 0 is passed in. Returns an empty + string and sets the ok-flag to \c false if there is no + default value. + */ + virtual std::string toString(long n) const; + /*! + @brief Return the text value associated with the language qualifier + \em qualifier. Returns an empty string and sets the ok-flag + to \c false if there is no entry for the language qualifier. + */ + std::string toString(const std::string& qualifier) const; + virtual long toLong(long n =0) const; + virtual float toFloat(long n =0) const; + virtual Rational toRational(long n =0) const; + /*! + @brief Write all elements of the value to \em os, separated by commas. + + @note The output of this method cannot directly be used as the parameter + for read(). + */ + virtual std::ostream& write(std::ostream& os) const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual LangAltValue* clone_() const; + + public: + //! Type used to store language alternative arrays. + typedef std::map ValueType; + // DATA + /*! + @brief Map to store the language alternative values. The language + qualifier is used as the key for the map entries. + */ + ValueType value_; + + }; // class LangAltValue + + /*! + @brief %Value for simple ISO 8601 dates + + This class is limited to parsing simple date strings in the ISO 8601 + format CCYYMMDD (century, year, month, day). + */ + class EXIV2API DateValue : public Value { + public: + //! Shortcut for a %DateValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor. + DateValue(); + //! Constructor + DateValue(int year, int month, int day); + //! Virtual destructor. + virtual ~DateValue(); + //@} + + //! Simple Date helper structure + struct EXIV2API Date { + Date() : year(0), month(0), day(0) {} + int year; //!< Year + int month; //!< Month + int day; //!< Day + }; + + //! @name Manipulators + //@{ + /*! + @brief Read the value from a character buffer. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Pointer to the data buffer to read from + @param len Number of bytes in the data buffer + @param byteOrder Byte order. Not needed. + + @return 0 if successful
+ 1 in case of an unsupported date format + */ + virtual int read(const byte* buf, + long len, + ByteOrder byteOrder =invalidByteOrder); + /*! + @brief Set the value to that of the string buf. + + @param buf String containing the date + + @return 0 if successful
+ 1 in case of an unsupported date format + */ + virtual int read(const std::string& buf); + //! Set the date + void setDate(const Date& src); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + /*! + @brief Write value to a character data buffer. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Data buffer to write to. + @param byteOrder Byte order. Not used. + @return Number of characters written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; + //! Return date struct containing date information + virtual const Date& getDate() const; + virtual long count() const; + virtual long size() const; + virtual std::ostream& write(std::ostream& os) const; + //! Return the value as a UNIX calender time converted to long. + virtual long toLong(long n =0) const; + //! Return the value as a UNIX calender time converted to float. + virtual float toFloat(long n =0) const; + //! Return the value as a UNIX calender time converted to Rational. + virtual Rational toRational(long n =0) const; + //@} + + private: + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual DateValue* clone_() const; + + // DATA + Date date_; + + }; // class DateValue + + /*! + @brief %Value for simple ISO 8601 times. + + This class is limited to handling simple time strings in the ISO 8601 + format HHMMSS�HHMM where HHMMSS refers to local hour, minute and + seconds and �HHMM refers to hours and minutes ahead or behind + Universal Coordinated Time. + */ + class EXIV2API TimeValue : public Value { + public: + //! Shortcut for a %TimeValue auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor. + TimeValue(); + //! Constructor + TimeValue(int hour, int minute, int second =0, + int tzHour =0, int tzMinute =0); + + //! Virtual destructor. + virtual ~TimeValue(); + //@} + + //! Simple Time helper structure + struct Time + { + Time() : hour(0), minute(0), second(0), tzHour(0), tzMinute(0) {} + + int hour; //!< Hour + int minute; //!< Minute + int second; //!< Second + int tzHour; //!< Hours ahead or behind UTC + int tzMinute; //!< Minutes ahead or behind UTC + }; + + //! @name Manipulators + //@{ + /*! + @brief Read the value from a character buffer. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Pointer to the data buffer to read from + @param len Number of bytes in the data buffer + @param byteOrder Byte order. Not needed. + + @return 0 if successful
+ 1 in case of an unsupported time format + */ + virtual int read(const byte* buf, + long len, + ByteOrder byteOrder =invalidByteOrder); + /*! + @brief Set the value to that of the string buf. + + @param buf String containing the time. + + @return 0 if successful
+ 1 in case of an unsupported time format + */ + virtual int read(const std::string& buf); + //! Set the time + void setTime(const Time& src); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + /*! + @brief Write value to a character data buffer. + + The user must ensure that the buffer has enough memory. Otherwise + the call results in undefined behaviour. + + @note The byte order is required by the interface but not used by this + method, so just use the default. + + @param buf Data buffer to write to. + @param byteOrder Byte order. Not used. + @return Number of characters written. + */ + virtual long copy(byte* buf, ByteOrder byteOrder =invalidByteOrder) const; + //! Return time struct containing time information + virtual const Time& getTime() const; + virtual long count() const; + virtual long size() const; + virtual std::ostream& write(std::ostream& os) const; + //! Returns number of seconds in the day in UTC. + virtual long toLong(long n =0) const; + //! Returns number of seconds in the day in UTC converted to float. + virtual float toFloat(long n =0) const; + //! Returns number of seconds in the day in UTC converted to Rational. + virtual Rational toRational(long n =0) const; + //@} + + private: + //! @name Manipulators + //@{ + /*! + @brief Set time from \em buf if it conforms to \em format + (3 input items). + + This function only sets the hour, minute and second parts of time_. + + @param buf A 0 terminated C-string containing the time to parse. + @param format Format string for sscanf(). + @return 0 if successful, else 1. + */ + EXV_DLLLOCAL int scanTime3(const char* buf, const char* format); + /*! + @brief Set time from \em buf if it conforms to \em format + (6 input items). + + This function sets all parts of time_. + + @param buf A 0 terminated C-string containing the time to parse. + @param format Format string for sscanf(). + @return 0 if successful, else 1. + */ + EXV_DLLLOCAL int scanTime6(const char* buf, const char* format); + //@} + + //! @name Accessors + //@{ + //! Internal virtual copy constructor. + EXV_DLLLOCAL virtual TimeValue* clone_() const; + //@} + + // DATA + Time time_; + + }; // class TimeValue + + //! Template to determine the TypeId for a type T + template TypeId getType(); + + //! Specialization for an unsigned short + template<> inline TypeId getType() { return unsignedShort; } + //! Specialization for an unsigned long + template<> inline TypeId getType() { return unsignedLong; } + //! Specialization for an unsigned rational + template<> inline TypeId getType() { return unsignedRational; } + //! Specialization for a signed short + template<> inline TypeId getType() { return signedShort; } + //! Specialization for a signed long + template<> inline TypeId getType() { return signedLong; } + //! Specialization for a signed rational + template<> inline TypeId getType() { return signedRational; } + //! Specialization for a float + template<> inline TypeId getType() { return tiffFloat; } + //! Specialization for a double + template<> inline TypeId getType() { return tiffDouble; } + + // No default implementation: let the compiler/linker complain + // template inline TypeId getType() { return invalid; } + + /*! + @brief Template for a %Value of a basic type. This is used for unsigned + and signed short, long and rationals. + */ + template + class ValueType : public Value { + public: + //! Shortcut for a %ValueType\ auto pointer. + typedef std::auto_ptr > AutoPtr; + + //! @name Creators + //@{ + //! Default Constructor. + ValueType(); + //! Constructor. + // The default c'tor and this one can be combined, but that causes MSVC 7.1 to fall on its nose + explicit ValueType(TypeId typeId); + //! Constructor. + ValueType(const byte* buf, long len, ByteOrder byteOrder, TypeId typeId =getType()); + //! Constructor. + explicit ValueType(const T& val, TypeId typeId =getType()); + //! Copy constructor + ValueType(const ValueType& rhs); + //! Virtual destructor. + virtual ~ValueType(); + //@} + + //! @name Manipulators + //@{ + //! Assignment operator. + ValueType& operator=(const ValueType& rhs); + virtual int read(const byte* buf, long len, ByteOrder byteOrder); + /*! + @brief Set the data from a string of values of type T (e.g., + "0 1 2 3" or "1/2 1/3 1/4" depending on what T is). + Generally, the accepted input format is the same as that + produced by the write() method. + */ + virtual int read(const std::string& buf); + /*! + @brief Set the data area. This method copies (clones) the buffer + pointed to by buf. + */ + virtual int setDataArea(const byte* buf, long len); + //@} + + //! @name Accessors + //@{ + AutoPtr clone() const { return AutoPtr(clone_()); } + virtual long copy(byte* buf, ByteOrder byteOrder) const; + virtual long count() const; + virtual long size() const; + virtual std::ostream& write(std::ostream& os) const; + /*! + @brief Return the n-th component of the value as a string. + The behaviour of this method may be undefined if there is no + n-th + component. + */ + virtual std::string toString(long n) const; + virtual long toLong(long n =0) const; + virtual float toFloat(long n =0) const; + virtual Rational toRational(long n =0) const; + //! Return the size of the data area. + virtual long sizeDataArea() const; + /*! + @brief Return a copy of the data area in a DataBuf. The caller owns + this copy and DataBuf ensures that it will be deleted. + */ + virtual DataBuf dataArea() const; + //@} + + //! Container for values + typedef std::vector ValueList; + //! Iterator type defined for convenience. + typedef typename std::vector::iterator iterator; + //! Const iterator type defined for convenience. + typedef typename std::vector::const_iterator const_iterator; + + // DATA + /*! + @brief The container for all values. In your application, if you know + what subclass of Value you're dealing with (and possibly the T) + then you can access this STL container through the usual + standard library functions. + */ + ValueList value_; + + private: + //! Internal virtual copy constructor. + virtual ValueType* clone_() const; + + // DATA + //! Pointer to the buffer, 0 if none has been allocated + byte* pDataArea_; + //! The current size of the buffer + long sizeDataArea_; + }; // class ValueType + + //! Unsigned short value type + typedef ValueType UShortValue; + //! Unsigned long value type + typedef ValueType ULongValue; + //! Unsigned rational value type + typedef ValueType URationalValue; + //! Signed short value type + typedef ValueType ShortValue; + //! Signed long value type + typedef ValueType LongValue; + //! Signed rational value type + typedef ValueType RationalValue; + //! Float value type + typedef ValueType FloatValue; + //! Double value type + typedef ValueType DoubleValue; + +// ***************************************************************************** +// free functions, template and inline definitions + + /*! + @brief Read a value of type T from the data buffer. + + We need this template function for the ValueType template classes. + There are only specializations of this function available; no default + implementation is provided. + + @param buf Pointer to the data buffer to read from. + @param byteOrder Applicable byte order (little or big endian). + @return A value of type T. + */ + template T getValue(const byte* buf, ByteOrder byteOrder); + // Specialization for a 2 byte unsigned short value. + template<> + inline uint16_t getValue(const byte* buf, ByteOrder byteOrder) + { + return getUShort(buf, byteOrder); + } + // Specialization for a 4 byte unsigned long value. + template<> + inline uint32_t getValue(const byte* buf, ByteOrder byteOrder) + { + return getULong(buf, byteOrder); + } + // Specialization for an 8 byte unsigned rational value. + template<> + inline URational getValue(const byte* buf, ByteOrder byteOrder) + { + return getURational(buf, byteOrder); + } + // Specialization for a 2 byte signed short value. + template<> + inline int16_t getValue(const byte* buf, ByteOrder byteOrder) + { + return getShort(buf, byteOrder); + } + // Specialization for a 4 byte signed long value. + template<> + inline int32_t getValue(const byte* buf, ByteOrder byteOrder) + { + return getLong(buf, byteOrder); + } + // Specialization for an 8 byte signed rational value. + template<> + inline Rational getValue(const byte* buf, ByteOrder byteOrder) + { + return getRational(buf, byteOrder); + } + // Specialization for a 4 byte float value. + template<> + inline float getValue(const byte* buf, ByteOrder byteOrder) + { + return getFloat(buf, byteOrder); + } + // Specialization for a 8 byte double value. + template<> + inline double getValue(const byte* buf, ByteOrder byteOrder) + { + return getDouble(buf, byteOrder); + } + + /*! + @brief Convert a value of type T to data, write the data to the data buffer. + + We need this template function for the ValueType template classes. + There are only specializations of this function available; no default + implementation is provided. + + @param buf Pointer to the data buffer to write to. + @param t Value to be converted. + @param byteOrder Applicable byte order (little or big endian). + @return The number of bytes written to the buffer. + */ + template long toData(byte* buf, T t, ByteOrder byteOrder); + /*! + @brief Specialization to write an unsigned short to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, uint16_t t, ByteOrder byteOrder) + { + return us2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write an unsigned long to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, uint32_t t, ByteOrder byteOrder) + { + return ul2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write an unsigned rational to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, URational t, ByteOrder byteOrder) + { + return ur2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write a signed short to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, int16_t t, ByteOrder byteOrder) + { + return s2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write a signed long to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, int32_t t, ByteOrder byteOrder) + { + return l2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write a signed rational to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, Rational t, ByteOrder byteOrder) + { + return r2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write a float to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, float t, ByteOrder byteOrder) + { + return f2Data(buf, t, byteOrder); + } + /*! + @brief Specialization to write a double to the data buffer. + Return the number of bytes written. + */ + template<> + inline long toData(byte* buf, double t, ByteOrder byteOrder) + { + return d2Data(buf, t, byteOrder); + } + + template + ValueType::ValueType() + : Value(getType()), pDataArea_(0), sizeDataArea_(0) + { + } + + template + ValueType::ValueType(TypeId typeId) + : Value(typeId), pDataArea_(0), sizeDataArea_(0) + { + } + + template + ValueType::ValueType(const byte* buf, long len, ByteOrder byteOrder, TypeId typeId) + : Value(typeId), pDataArea_(0), sizeDataArea_(0) + { + read(buf, len, byteOrder); + } + + template + ValueType::ValueType(const T& val, TypeId typeId) + : Value(typeId), pDataArea_(0), sizeDataArea_(0) + { + value_.push_back(val); + } + + template + ValueType::ValueType(const ValueType& rhs) + : Value(rhs), value_(rhs.value_), pDataArea_(0), sizeDataArea_(0) + { + if (rhs.sizeDataArea_ > 0) { + pDataArea_ = new byte[rhs.sizeDataArea_]; + std::memcpy(pDataArea_, rhs.pDataArea_, rhs.sizeDataArea_); + sizeDataArea_ = rhs.sizeDataArea_; + } + } + + template + ValueType::~ValueType() + { + delete[] pDataArea_; + } + + template + ValueType& ValueType::operator=(const ValueType& rhs) + { + if (this == &rhs) return *this; + Value::operator=(rhs); + value_ = rhs.value_; + + byte* tmp = 0; + if (rhs.sizeDataArea_ > 0) { + tmp = new byte[rhs.sizeDataArea_]; + std::memcpy(tmp, rhs.pDataArea_, rhs.sizeDataArea_); + } + delete[] pDataArea_; + pDataArea_ = tmp; + sizeDataArea_ = rhs.sizeDataArea_; + + return *this; + } + + template + int ValueType::read(const byte* buf, long len, ByteOrder byteOrder) + { + value_.clear(); + long ts = TypeInfo::typeSize(typeId()); + if (ts != 0) + if (len % ts != 0) len = (len / ts) * ts; + for (long i = 0; i < len; i += ts) { + value_.push_back(getValue(buf + i, byteOrder)); + } + return 0; + } + + template + int ValueType::read(const std::string& buf) + { + std::istringstream is(buf); + T tmp; + ValueList val; + while (!(is.eof())) { + is >> tmp; + if (is.fail()) return 1; + val.push_back(tmp); + } + value_.swap(val); + return 0; + } + + template + long ValueType::copy(byte* buf, ByteOrder byteOrder) const + { + long offset = 0; + typename ValueList::const_iterator end = value_.end(); + for (typename ValueList::const_iterator i = value_.begin(); i != end; ++i) { + offset += toData(buf + offset, *i, byteOrder); + } + return offset; + } + + template + long ValueType::count() const + { + return static_cast(value_.size()); + } + + template + long ValueType::size() const + { + return static_cast(TypeInfo::typeSize(typeId()) * value_.size()); + } + + template + ValueType* ValueType::clone_() const + { + return new ValueType(*this); + } + + template + std::ostream& ValueType::write(std::ostream& os) const + { + typename ValueList::const_iterator end = value_.end(); + typename ValueList::const_iterator i = value_.begin(); + while (i != end) { + os << std::setprecision(15) << *i; + if (++i != end) os << " "; + } + return os; + } + + template + std::string ValueType::toString(long n) const + { + ok_ = true; + return Exiv2::toString(value_[n]); + } + + // Default implementation + template + long ValueType::toLong(long n) const + { + ok_ = true; + return static_cast(value_[n]); + } + // Specialization for rational + template<> + inline long ValueType::toLong(long n) const + { + ok_ = (value_[n].second != 0); + if (!ok_) return 0; + return value_[n].first / value_[n].second; + } + // Specialization for unsigned rational + template<> + inline long ValueType::toLong(long n) const + { + ok_ = (value_[n].second != 0); + if (!ok_) return 0; + return value_[n].first / value_[n].second; + } + // Default implementation + template + float ValueType::toFloat(long n) const + { + ok_ = true; + return static_cast(value_[n]); + } + // Specialization for rational + template<> + inline float ValueType::toFloat(long n) const + { + ok_ = (value_[n].second != 0); + if (!ok_) return 0.0f; + return static_cast(value_[n].first) / value_[n].second; + } + // Specialization for unsigned rational + template<> + inline float ValueType::toFloat(long n) const + { + ok_ = (value_[n].second != 0); + if (!ok_) return 0.0f; + return static_cast(value_[n].first) / value_[n].second; + } + // Default implementation + template + Rational ValueType::toRational(long n) const + { + ok_ = true; + return Rational(value_[n], 1); + } + // Specialization for rational + template<> + inline Rational ValueType::toRational(long n) const + { + ok_ = true; + return Rational(value_[n].first, value_[n].second); + } + // Specialization for unsigned rational + template<> + inline Rational ValueType::toRational(long n) const + { + ok_ = true; + return Rational(value_[n].first, value_[n].second); + } + // Specialization for float. + template<> + inline Rational ValueType::toRational(long n) const + { + ok_ = true; + // Warning: This is a very simple conversion, see floatToRationalCast() + return floatToRationalCast(value_[n]); + } + // Specialization for double. + template<> + inline Rational ValueType::toRational(long n) const + { + ok_ = true; + // Warning: This is a very simple conversion, see floatToRationalCast() + return floatToRationalCast(static_cast(value_[n])); + } + + template + long ValueType::sizeDataArea() const + { + return sizeDataArea_; + } + + template + DataBuf ValueType::dataArea() const + { + return DataBuf(pDataArea_, sizeDataArea_); + } + + template + int ValueType::setDataArea(const byte* buf, long len) + { + byte* tmp = 0; + if (len > 0) { + tmp = new byte[len]; + std::memcpy(tmp, buf, len); + } + delete[] pDataArea_; + pDataArea_ = tmp; + sizeDataArea_ = len; + return 0; + } +} // namespace Exiv2 + +#endif // #ifndef VALUE_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/version.hpp b/vendor/exiv2-0.25/include/exiv2/version.hpp new file mode 100644 index 0000000..b9f88b6 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/version.hpp @@ -0,0 +1,196 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file version.hpp + @brief Precompiler define and a function to test the %Exiv2 version. + References: Similar versioning defines are used in KDE, GTK and other + libraries. See http://apr.apache.org/versioning.html for accompanying + guidelines. + @version $Rev: 3371 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 31-May-06, ahu: created + */ +#ifndef VERSION_HPP_ +#define VERSION_HPP_ + +// ***************************************************************************** +// included header files +// + standard includes +#include +#include +#if EXV_HAVE_REGEX +#include +typedef std::vector exv_grep_keys_t ; +#else +typedef std::vector exv_grep_keys_t ; +#endif + +/*! + @brief %Exiv2 MAJOR version number of the library used at compile-time. + */ +#define EXIV2_MAJOR_VERSION (0) +/*! + @brief %Exiv2 MINOR version number of the library used at compile-time. + */ +#define EXIV2_MINOR_VERSION (25) +/*! + @brief %Exiv2 PATCH version number of the library used at compile-time. + */ +#define EXIV2_PATCH_VERSION (0) +/*! + @brief Make an integer version number for comparison from a major, minor and + a patch version number. + */ +#define EXIV2_MAKE_VERSION(major,minor,patch) \ + (((major) << 16) | ((minor) << 8) | (patch)) +/*! + @brief The %Exiv2 version number of the library used at compile-time as + an integer number for easy comparison. + */ +#define EXIV2_VERSION \ + EXIV2_MAKE_VERSION(EXIV2_MAJOR_VERSION,EXIV2_MINOR_VERSION,EXIV2_PATCH_VERSION) +/*! + @brief Deprecated version check macro. Do not use. + + This macro has flaws and only remains for backward compatibility. + Use EXIV2_TEST_VERSION and testVersion() instead. + */ +#define EXIV2_CHECK_VERSION(major,minor,patch) \ + ( Exiv2::versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch) ) +/*! + @brief Macro to test the version of the available %Exiv2 library at compile-time. + Return true if it is the same as or newer than the passed-in version. + + Versions are denoted using a triplet of integers: \em MAJOR.MINOR.PATCH . + + @code + // Don't include the file directly, it is included by + // . Early Exiv2 versions didn't have version.hpp and the macros. + + #include + + // Make sure an EXIV2_TEST_VERSION macro exists: + + #ifdef EXIV2_VERSION + # ifndef EXIV2_TEST_VERSION + # define EXIV2_TEST_VERSION(major,minor,patch) \ + ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) + # endif + #else + # define EXIV2_TEST_VERSION(major,minor,patch) (false) + #endif + + std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n" + << "Runtime Exiv2 version is " << Exiv2::version() << "\n"; + + // Test the Exiv2 version available at runtime but compile the if-clause only if + // the compile-time version is at least 0.15. Earlier versions didn't have a + // testVersion() function: + + #if EXIV2_TEST_VERSION(0,15,0) + if (Exiv2::testVersion(0,13,0)) { + std::cout << "Available Exiv2 version is equal to or greater than 0.13\n"; + } + else { + std::cout << "Installed Exiv2 version is less than 0.13\n"; + } + #else + std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVersion()\n"; + #endif + @endcode + */ +#define EXIV2_TEST_VERSION(major,minor,patch) \ + ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + /*! + @brief Return the version of %Exiv2 available at runtime as an integer. + */ + EXIV2API int versionNumber(); + /*! + @brief Return the version string Example: "0.25.0" (major.minor.patch) + */ + EXIV2API std::string versionString(); + /*! + @brief Return the version of %Exiv2 as hex string of fixed length 6. + */ + EXIV2API std::string versionNumberHexString(); + /*! + @brief Return the version of %Exiv2 available at runtime as a string. + */ + EXIV2API const char* version(); + /*! + @brief Test the version of the available %Exiv2 library at runtime. Return + true if it is the same as or newer than the passed-in version. + + Versions are denoted using a triplet of integers: \em major.minor.patch . + + @code + // Don't include the file directly, it is included by + // . Early Exiv2 versions didn't have version.hpp and the macros. + + #include + + // Make sure an EXIV2_TEST_VERSION macro exists: + + #ifdef EXIV2_VERSION + # ifndef EXIV2_TEST_VERSION + # define EXIV2_TEST_VERSION(major,minor,patch) \ + ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) ) + # endif + #else + # define EXIV2_TEST_VERSION(major,minor,patch) (false) + #endif + + std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n" + << "Runtime Exiv2 version is " << Exiv2::version() << "\n"; + + // Test the Exiv2 version available at runtime but compile the if-clause only if + // the compile-time version is at least 0.15. Earlier versions didn't have a + // testVersion() function: + + #if EXIV2_TEST_VERSION(0,15,0) + if (Exiv2::testVersion(0,13,0)) { + std::cout << "Available Exiv2 version is equal to or greater than 0.13\n"; + } + else { + std::cout << "Installed Exiv2 version is less than 0.13\n"; + } + #else + std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVersion()\n"; + #endif + @endcode + */ + EXIV2API bool testVersion(int major, int minor, int patch); + + /*! + @brief dumpLibraryInfo implements the exiv2 option --version --verbose + used by exiv2 test suite to inspect libraries loaded at run-time + */ + EXIV2API void dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys); +} // namespace Exiv2 + + + +#endif // VERSION_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/xmp.hpp b/vendor/exiv2-0.25/include/exiv2/xmp.hpp new file mode 100644 index 0000000..00c07e2 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/xmp.hpp @@ -0,0 +1,419 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file xmp.hpp + @brief Encoding and decoding of XMP data + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 13-Jul-07, ahu: created + */ +#ifndef XMP_HPP_ +#define XMP_HPP_ + +// ***************************************************************************** +// included header files +#include "metadatum.hpp" +#include "properties.hpp" +#include "value.hpp" +#include "types.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + +// ***************************************************************************** +// class definitions + + /*! + @brief Information related to an XMP property. An XMP metadatum consists + of an XmpKey and a Value and provides methods to manipulate these. + */ + class EXIV2API Xmpdatum : public Metadatum { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for new tags created by an application. The + %Xmpdatum is created from a key / value pair. %Xmpdatum + copies (clones) the value if one is provided. Alternatively, a + program can create an 'empty' %Xmpdatum with only a key and + set the value using setValue(). + + @param key The key of the %Xmpdatum. + @param pValue Pointer to a %Xmpdatum value. + @throw Error if the key cannot be parsed and converted + to a known schema namespace prefix and property name. + */ + explicit Xmpdatum(const XmpKey& key, + const Value* pValue =0); + //! Copy constructor + Xmpdatum(const Xmpdatum& rhs); + //! Destructor + virtual ~Xmpdatum(); + //@} + + //! @name Manipulators + //@{ + //! Assignment operator + Xmpdatum& operator=(const Xmpdatum& rhs); + /*! + @brief Assign std::string \em value to the %Xmpdatum. + Calls setValue(const std::string&). + */ + Xmpdatum& operator=(const std::string& value); + /*! + @brief Assign const char* \em value to the %Xmpdatum. + Calls operator=(const std::string&). + */ + Xmpdatum& operator=(const char* value); + /*! + @brief Assign a boolean \em value to the %Xmpdatum. + Translates the value to a string "true" or "false". + */ + Xmpdatum& operator=(const bool& value); + /*! + @brief Assign a \em value of any type with an output operator + to the %Xmpdatum. Calls operator=(const std::string&). + */ + template + Xmpdatum& operator=(const T& value); + /*! + @brief Assign Value \em value to the %Xmpdatum. + Calls setValue(const Value*). + */ + Xmpdatum& operator=(const Value& value); + void setValue(const Value* pValue); + /*! + @brief Set the value to the string \em value. Uses Value::read(const + std::string&). If the %Xmpdatum does not have a Value yet, + then a %Value of the correct type for this %Xmpdatum is + created. If the key is unknown, a XmpTextValue is used as + default. Return 0 if the value was read successfully. + */ + int setValue(const std::string& value); + //@} + + //! @name Accessors + //@{ + //! Not implemented. Calling this method will raise an exception. + long copy(byte* buf, ByteOrder byteOrder) const; + std::ostream& write(std::ostream& os, const ExifData* pMetadata =0) const; + /*! + @brief Return the key of the Xmpdatum. The key is of the form + 'Xmp.prefix.property'. Note however that the + key is not necessarily unique, i.e., an XmpData object may + contain multiple metadata with the same key. + */ + std::string key() const; + const char* familyName() const; + //! Return the (preferred) schema namespace prefix. + std::string groupName() const; + //! Return the property name. + std::string tagName() const; + std::string tagLabel() const; + //! Properties don't have a tag number. Return 0. + uint16_t tag() const; + TypeId typeId() const; + const char* typeName() const; + // Todo: Remove this method from the baseclass + //! The Exif typeSize doesn't make sense here. Return 0. + long typeSize() const; + long count() const; + long size() const; + std::string toString() const; + std::string toString(long n) const; + long toLong(long n =0) const; + float toFloat(long n =0) const; + Rational toRational(long n =0) const; + Value::AutoPtr getValue() const; + const Value& value() const; + //@} + + private: + // Pimpl idiom + struct Impl; + Impl* p_; + + }; // class Xmpdatum + + //! Container type to hold all metadata + typedef std::vector XmpMetadata; + + /*! + @brief A container for XMP data. This is a top-level class of + the %Exiv2 library. + + Provide high-level access to the XMP data of an image: + - read XMP information from an XML block + - access metadata through keys and standard C++ iterators + - add, modify and delete metadata + - serialize XMP data to an XML block + */ + class EXIV2API XmpData { + public: + //! XmpMetadata iterator type + typedef XmpMetadata::iterator iterator; + //! XmpMetadata const iterator type + typedef XmpMetadata::const_iterator const_iterator; + + //! @name Manipulators + //@{ + /*! + @brief Returns a reference to the %Xmpdatum that is associated with a + particular \em key. If %XmpData does not already contain such + an %Xmpdatum, operator[] adds object \em Xmpdatum(key). + + @note Since operator[] might insert a new element, it can't be a const + member function. + */ + Xmpdatum& operator[](const std::string& key); + /*! + @brief Add an %Xmpdatum from the supplied key and value pair. This + method copies (clones) the value. + @return 0 if successful. + */ + int add(const XmpKey& key, const Value* value); + /*! + @brief Add a copy of the Xmpdatum to the XMP metadata. + @return 0 if successful. + */ + int add(const Xmpdatum& xmpdatum); + /*! + @brief Delete the Xmpdatum at iterator position pos, return the + position of the next Xmpdatum. + + @note Iterators into the metadata, including pos, are potentially + invalidated by this call. + */ + iterator erase(iterator pos); + //! Delete all Xmpdatum instances resulting in an empty container. + void clear(); + //! Sort metadata by key + void sortByKey(); + //! Begin of the metadata + iterator begin(); + //! End of the metadata + iterator end(); + /*! + @brief Find the first Xmpdatum with the given key, return an iterator + to it. + */ + iterator findKey(const XmpKey& key); + //@} + + //! @name Accessors + //@{ + //! Begin of the metadata + const_iterator begin() const; + //! End of the metadata + const_iterator end() const; + /*! + @brief Find the first Xmpdatum with the given key, return a const + iterator to it. + */ + const_iterator findKey(const XmpKey& key) const; + //! Return true if there is no XMP metadata + bool empty() const; + //! Get the number of metadata entries + long count() const; + //@} + + private: + // DATA + XmpMetadata xmpMetadata_; + }; // class XmpData + + /*! + @brief Stateless parser class for XMP packets. Images use this + class to parse and serialize XMP packets. The parser uses + the XMP toolkit to do the job. + */ + class EXIV2API XmpParser { + public: + //! Options to control the format of the serialized XMP packet. + enum XmpFormatFlags { + omitPacketWrapper = 0x0010UL, //!< Omit the XML packet wrapper. + readOnlyPacket = 0x0020UL, //!< Default is a writeable packet. + useCompactFormat = 0x0040UL, //!< Use a compact form of RDF. + includeThumbnailPad = 0x0100UL, //!< Include a padding allowance for a thumbnail image. + exactPacketLength = 0x0200UL, //!< The padding parameter is the overall packet length. + writeAliasComments = 0x0400UL, //!< Show aliases as XML comments. + omitAllFormatting = 0x0800UL //!< Omit all formatting whitespace. + }; + /*! + @brief Decode XMP metadata from an XMP packet \em xmpPacket into + \em xmpData. The format of the XMP packet must follow the + XMP specification. This method clears any previous contents + of \em xmpData. + + @param xmpData Container for the decoded XMP properties + @param xmpPacket The raw XMP packet to decode + @return 0 if successful;
+ 1 if XMP support has not been compiled-in;
+ 2 if the XMP toolkit failed to initialize;
+ 3 if the XMP toolkit failed and raised an XMP_Error + */ + static int decode( XmpData& xmpData, + const std::string& xmpPacket); + /*! + @brief Encode (serialize) XMP metadata from \em xmpData into a + string xmpPacket. The XMP packet returned in the string + follows the XMP specification. This method only modifies + \em xmpPacket if the operations succeeds (return code 0). + + @param xmpPacket Reference to a string to hold the encoded XMP + packet. + @param xmpData XMP properties to encode. + @param formatFlags Flags that control the format of the XMP packet, + see enum XmpFormatFlags. + @param padding Padding length. + @return 0 if successful;
+ 1 if XMP support has not been compiled-in;
+ 2 if the XMP toolkit failed to initialize;
+ 3 if the XMP toolkit failed and raised an XMP_Error + */ + static int encode( std::string& xmpPacket, + const XmpData& xmpData, + uint16_t formatFlags =useCompactFormat, + uint32_t padding =0); + /*! + @brief Lock/unlock function type + + A function of this type can be passed to initialize() to + make subsequent registration of XMP namespaces thread-safe. + See the initialize() function for more information. + + @param pLockData Pointer to the pLockData passed to initialize() + @param lockUnlock Indicates whether to lock (true) or unlock (false) + */ + typedef void (*XmpLockFct)(void* pLockData, bool lockUnlock); + + /*! + @brief Initialize the XMP Toolkit. + + Calling this method is usually not needed, as encode() and + decode() will initialize the XMP Toolkit if necessary. + + The function takes optional pointers to a callback function + \em xmpLockFct and related data \em pLockData that the parser + uses when XMP namespaces are subsequently registered. + + The initialize() function itself still is not thread-safe and + needs to be called in a thread-safe manner (e.g., on program + startup), but if used with suitable additional locking + parameters, any subsequent registration of namespaces will be + thread-safe. + + Example usage on Windows using a critical section: + + @code + void main() + { + struct XmpLock + { + CRITICAL_SECTION cs; + XmpLock() { InitializeCriticalSection(&cs); } + ~XmpLock() { DeleteCriticalSection(&cs); } + + static void LockUnlock(void* pData, bool fLock) + { + XmpLock* pThis = reinterpret_cast(pData); + if (pThis) + { + (fLock) ? EnterCriticalSection(&pThis->cs) + : LeaveCriticalSection(&pThis->cs); + } + } + } xmpLock; + + // Pass the locking mechanism to the XMP parser on initialization. + // Note however that this call itself is still not thread-safe. + Exiv2::XmpParser::initialize(XmpLock::LockUnlock, &xmpLock); + + // Program continues here, subsequent registrations of XMP + // namespaces are serialized using xmpLock. + + } + @endcode + + @return True if the initialization was successful, else false. + */ + static bool initialize(XmpParser::XmpLockFct xmpLockFct =0, void* pLockData =0); + /*! + @brief Terminate the XMP Toolkit and unregister custom namespaces. + + Call this method when the XmpParser is no longer needed to + allow the XMP Toolkit to cleanly shutdown. + */ + static void terminate(); + + private: + /*! + @brief Register a namespace with the XMP Toolkit. + */ + static void registerNs(const std::string& ns, + const std::string& prefix); + /*! + @brief Delete a namespace from the XMP Toolkit. + + XmpProperties::unregisterNs calls this to synchronize namespaces. + */ + static void unregisterNs(const std::string& ns); + + // DATA + static bool initialized_; //! Indicates if the XMP Toolkit has been initialized + static XmpLockFct xmpLockFct_; + static void* pLockData_; + + }; // class XmpParser + +// ***************************************************************************** +// free functions, template and inline definitions + + inline Xmpdatum& Xmpdatum::operator=(const char* value) + { + return Xmpdatum::operator=(std::string(value)); + } + + inline Xmpdatum& Xmpdatum::operator=(const bool& value) + { + return operator=(value ? "True" : "False"); + } + + template + Xmpdatum& Xmpdatum::operator=(const T& value) + { + setValue(Exiv2::toString(value)); + return *this; + } + +} // namespace Exiv2 + +#endif // #ifndef XMP_HPP_ diff --git a/vendor/exiv2-0.25/include/exiv2/xmpsidecar.hpp b/vendor/exiv2-0.25/include/exiv2/xmpsidecar.hpp new file mode 100644 index 0000000..38f0f2a --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/xmpsidecar.hpp @@ -0,0 +1,120 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file xmpsidecar.hpp + @brief An Image subclass to support XMP sidecar files + @version $Rev: 3090 $ + @author Andreas Huggel + ahuggel@gmx.net + @date 07-Mar-08, ahu: created + */ +#ifndef XMPSIDECAR_HPP_ +#define XMPSIDECAR_HPP_ + +// ***************************************************************************** +// included header files +#include "image.hpp" +#include "basicio.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class definitions + + // Add XMP to the supported image formats + namespace ImageType { + const int xmp = 10; //!< XMP sidecar files (see class XmpSidecar) + } + + /*! + @brief Class to access XMP sidecar files. They contain only XMP metadata. + */ + class EXIV2API XmpSidecar : public Image { + public: + //! @name Creators + //@{ + /*! + @brief Constructor for an XMP sidecar file. Since the constructor + can not return a result, callers should check the good() method + after object construction to determine success or failure. + @param io An auto-pointer that owns a BasicIo instance used for + reading and writing image metadata. \b Important: The constructor + takes ownership of the passed in BasicIo instance through the + auto-pointer. Callers should not continue to use the BasicIo + instance after it is passed to this method. Use the Image::io() + method to get a temporary reference. + @param create Specifies if an existing image should be read (false) + or if a new image should be created (true). + */ + XmpSidecar(BasicIo::AutoPtr io, bool create); + //@} + + //! @name Manipulators + //@{ + void readMetadata(); + void writeMetadata(); + /*! + @brief Not supported. XMP sidecar files do not contain a comment. + Calling this function will throw an instance of Error(32). + */ + void setComment(const std::string& comment); + //@} + + //! @name Accessors + //@{ + std::string mimeType() const; + //@} + + private: + //! @name NOT Implemented + //@{ + //! Copy constructor + XmpSidecar(const XmpSidecar& rhs); + //! Assignment operator + XmpSidecar& operator=(const XmpSidecar& rhs); + //@} + + }; // class XmpSidecar + +// ***************************************************************************** +// template, inline and free functions + + // These could be static private functions on Image subclasses but then + // ImageFactory needs to be made a friend. + /*! + @brief Create a new XmpSidecar instance and return an auto-pointer to it. + Caller owns the returned object and the auto-pointer ensures that + it will be deleted. + */ + EXIV2API Image::AutoPtr newXmpInstance(BasicIo::AutoPtr io, bool create); + + //! Check if the file iIo is an XMP sidecar file. + EXIV2API bool isXmpType(BasicIo& iIo, bool advance); + +} // namespace Exiv2 + +#endif // #ifndef XMPSIDECAR_HPP_ diff --git a/vendor/exiv2-0.25/msvc2003/ReadMe.txt b/vendor/exiv2-0.25/msvc2003/ReadMe.txt new file mode 100644 index 0000000..0d507e0 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/ReadMe.txt @@ -0,0 +1,217 @@ +Notes about msvc2003 32 bit build of exiv2 +------------------------------------------ + ++-----------------------------------------------------------+ +| msvc2003 builds 32bit binaries | +| with Visual Studio 2003 .Net | +| | +| msvc2005 builds 32bit and 64bit binaries | +| with Visual Studio 2005/8/10/12/13/14 | ++-----------------------------------------------------------+ + +Updated: 2015-01-12 + +Tools +----- + +Created and Tested With: VC7.1 (Visual Studio .Net) + +All builds in msvc2003 are 32bit. + +1) Build environments (solution files) + exiv2.sln - this builds the exiv2 libraries (static and dynamic) + and the utility and test programs (exiv2.exe, exifprint.exe) + + DEPENDS on zlib-1.2.3 and expat-2.0.1 + + +How to build and test exiv2 +---------------------------- + +1) Dependancies for exiv2 + You need expat-2.0.1 AND zlib-1.2.3 which you can download from + http://expat.sourceforge.net/ and http://zlib.net/, respectively. + expat-2.0.1, zlib-1.2.3 and exiv2 should be in the same directory + + I usually use c:\gnu, however the name 'c:\gnu' does not matter + nor does it have to be a topmost directory. + + c:\gnu\expat-2.0.1 <---- vanilla expat + c:\gnu\zlib-1.2.3 <---- vanilla zlib + c:\gnu\exiv2 <---- this directory + + You can download the libraries from http://clanmills.com/files/exiv2libs.zip (20mb) + This archive includes libraries for use by msvc2003 and msvc2005. + + If you unzip exiv2libs.zip into c:\exiv2libs, the batch file msvc2003/copylibs.zip + will copy the files from c:\exiv2libs to the correct location. + +2) Build expat. See expat documents for details. + + If you have copied expat-2.0.1 from the archive, you can skip this step. + + This is what I do: + a) Open expat-2.0.1\expat.dsw with DevStudio + This converts the expat-2.0.1 VC6 work space to DevStudio project files + Say "Yes" to everything. + + b) Build/Batch Build/Select + { expat | expat-static } { debug | release } (4 targets) + / Build + + Rattle roll.... less than a minute ...... rattle grrrrrrrr rump. + ========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + +3) Build zlib. See zlib documents for details. + + If you have copied zlib-1.2.3 from the archive, you can skip this step. + + This is what I do: + a) Open zlib\zlib-1.2.3\projects\visualc6\zlib.dsw with DevStudio + This converts the zlib-1.2.3 VC6 workspace to DevStudio project files + Say "Yes" to everything. + + b) Build/Batch Build/Select + { zlib } {DLL Debug | DLL Release | LIB Debug | LIB Release } (4 targets) + Build + + Rattle roll.... less than a minute ...... snap, crackle, pop (lots of warnings) + ========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + +4) Open the sln file exiv2\msvc2003\exiv2.sln + +5) Build/Batch Build/Select All/Build + + This will build all the necessary libraries and all the test programs. + At the end of building, you should see the beautiful output: + + ========== Build: 104 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + + The build takes 6 minutes on my iMac with a 2.8GHz Duo Core Intel Processor + and 4GBytes of Ram running XP/Pro SP3. + + +--------------------------------------------+ + | DISK SPACE WARNING | + +--------------------------------------------+ + + The total build consumes 1.0GBytes of disk space. + There are 112 targets (4 expats, 4 zlibs and 108 exiv2 targets) + The pdb (debugging) files consume 300MB. + The debug exiv2 static library alone (exiv2.lib) is 35MB + + A more modest build is to build exiv2 + { Debug | Release | DebugDLL | ReleaseDLL } + This consumes: 400MB + + A minimum build is to build exiv2/Release + This consumes: 100MB + +6) Test from the Command Line (cmd.exe): + + Use the bash/Cygwin (or msys) script test/testMSVC.sh to run the test suite. + Please see msvc2005/ReadMe.txt for more information. + +Where are the libraries and executables? +---------------------------------------- + +exiv2\msvc2003\bin\{Debug | DebugDLL | Release | ReleaseDLL } + +What's been built? +------------------ + +Static and dynamic version of exiv2, expat, zlib and the exiv2 sample programs +Debug and Release versions of all targets. + +The static libraries link with MT (MTd for Debug). +The objects are built to use the Static C runtime Libraries. + +DLL targets link dynamically +- exiv2.exe requires libexpat.dll, exiv2.dll and zlib1.dll (zlib1d.dll for debug) +- the objects use the dynamic c runtime dlls (MSVCR70.dll and friends) + +Linking Applications with the exiv2 libraries +--------------------------------------------- + +The following 'flavors' have been build: + +a) DLLs + MD build and work + +DebugDLL| ReleaseDLL = MD{d} : link exiv2{d}.lib, xmpsdk.lib, libexpat.lib and zlib1{d}.lib + Runtime DLLS : exiv2{d}.dll, libexpat.dll, zlib1{d}.dll and MSVC{R|P}{_0D.dll) + _ = 7 for VS2003, 8 for VS2005 and 9 for VS2008 + The MSVC*.dll's are on most machines and a free download from Microsoft + +b) Static + MT build and work + +Debug | Release = MT{d} : link exiv2s{d}.lib, libexpatMT.lib, zlib{d}.lib xmpsdk.lib + Runtime DLLs : none + +c) Static + MD will work (but not built) + +During the development of the build environment, this was working. +However it was dropped from the release because expat-2.0.1 does not support an MD build. + +When you choose to link your application with the exiv2 library, can choose any of the 3 configurations. Please use Google to find additional advice about which flavor is best for your needs. + +d) DLLs + MT WILL NOT FUNCTION even if you build it + +Do not build DLLs + MT. Exiv2.dll exports STL template objects which will crash when linked with the MT run-time. This is because Exiv2.dll is linked with it's own (static) c-runtime library. Exiv2.exe is linked with a different c-runtime library. The two cannot co-exist. + +This is not a bug. There is no workaround. + +Bugs +---- + +Please consult the issue database: +http://dev.exiv2.org/projects/exiv2/issues + +Support and Questions +--------------------- + +Information/Documentation : http://www.exiv2.org/index.html +Discussion Forum : http://dev.exiv2.org/wiki/exiv2 +The MSVC2003 build environment : Please contact me directly by email. + +Robin Mills +robin@clanmills.com +http://clanmills.com + +APPENDIX + +The following topics are documented for additional information about the status of the build. + +A) Build warning messages +B) Partial Build errors +C) Debugging exiv2 library code +D) Boost library name conventions + +A) Build warning messages +------------------------- + +The following warning and message are part of the build: + +1) exiv2.lib(xmlparse.obj) : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification + To eliminate this message, you will have to modify project settings in expat-2.0.1 and rebuild expat. + +2) zlib.lib(zutil.obj) : warning LNK4217: locally defined symbol _malloc imported in function _zcalloc + I believe this is coming from zlib which uses the local (MD) c-runtime library. + It's harmess (although frightening) + +B) Partial Build errors +----------------------- + +Andreas assures me that if you cannot build some targets, eg exifprint/ReleaseDLL on a clean VC71 machine. I havne't been able to reproduced this. Please drop me an email if you find any of those. I'm cross-eyed building different flavors of this on different version of DevStudio. + +C) Debugging exiv2 library code +------------------------------- + +You may wish to debug the exiv2 library code using one of the test utilities. Examples: exiv2.exe and exifprint.exe. You'll find this a little frustrating because the exiv2.sln file contains all the test programs. When you change the library code, DevStudio will relink all 20 test programs. To avoid this frustration, unload the project files which you are no using. For example, if you are debugging exiv2.exe, you only require the following projects to be loaded: + +xmpsdk +exiv2lib +exiv2 + +(when exiting DevStudio, say "No" when it asks you if you wish to save changes to exiv2.sln) + +# That's all Folks +## diff --git a/vendor/exiv2-0.25/msvc2003/addmoddel/addmoddel.vcproj b/vendor/exiv2-0.25/msvc2003/addmoddel/addmoddel.vcproj new file mode 100644 index 0000000..ba91db8 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/addmoddel/addmoddel.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/convert-test/convert-test.vcproj b/vendor/exiv2-0.25/msvc2003/convert-test/convert-test.vcproj new file mode 100644 index 0000000..6acc09f --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/convert-test/convert-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/copylibs.bat b/vendor/exiv2-0.25/msvc2003/copylibs.bat new file mode 100644 index 0000000..950b56b --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/copylibs.bat @@ -0,0 +1,13 @@ +@echo off +rem copylibs.bat +rem get the support libraries +rem +setlocal +set EXIV2LIBS=c:\exiv2libs + +xcopy/yesihq %EXIV2LIBS%\expat-2.0.1 ..\..\expat-2.0.1 +xcopy/yesihq %EXIV2LIBS%\zlib-1.2.3 ..\..\zlib-1.2.3 + + +rem That's all Folks! +rem ----------------- \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/depends2.exe b/vendor/exiv2-0.25/msvc2003/depends2.exe new file mode 100644 index 0000000000000000000000000000000000000000..2f31e2b0afeb06767e2364778e98f3b01068b4e4 GIT binary patch literal 68608 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

!PFd z#?eS_{&Cou*p`G-(IfC3n;L(MC_Ct#F0ul$fuqv|h*d&woN+tqP3Va!if=4@ zxI=3WzVdP(|EU-^beKbC70kDIn*xmk9SXC96@`V$Fn0XD6Lu|Rw|?Y$v-b3Tt#<2P z*Z$Qqu6o;8h?GUdU)Vw!*Hz-C^yg_poKIHmWbq1RRVTPCA}|U*hKJ2vMt4=p?E2hg z*b8XqaLH>I#SitPVpg=0evewuxjv}Nz3+gXZCI==$1au?iR3YqJj4145ON(`|0h=6 z%W#adyy#K9=%}VeN|tLVD!QZyqLdkKpzz$HA1A_%6u!CWr-^WY!q*f96X8cFd}+~R ziSQ;04=ef!h4Ea-@@9mMHOp~}>R6S&VR3T2U^=NS|;4VR5)!DiBdPQ#@UOLGcr=f145!QyumWLp-4F-y@Z4193G zH_Z|%qBDH_GGt)KXV%|bRHa-;2Nh9ld;tqppEB21;pLAGON`I{iSQ`aFbr(SuGX)~ zfan!NV8qAnM*IXqPSUQR10pbTj01FA71|Lt3aEa5?lpoUuLR_y9fEb?o)=8TT77yd z`zx;5M99iT!i8QXjqVC~WSc$$W{34RU#2?gqHpi-FT+LO5=2F(8L5GH6uCL2DQSkj zz}|eRV@DX$&zo48Xtf$)q|%arQB`JdPBA?8CQFI9+2d?H0o5NaAgM3ZpU+W}>(8gD zzd%X0wi$-7vPH`rjh#RP@5SXPwrRMtSrYwvZuB#ea0CfLqnQRNLm=ohEa1-h2ck(O z)9Y_utehikFNZB5W)P}T=KG11C2l%j&@=JzG$|nJZbR^H0Xf( z6}1I@s4NgT%0S_^X=%zVyoOc;^`{rWBAz7?5S-@5>bpYI6H?S5-nM>2sE>5Ig(-Nx1+P0Pf&~@BOZuIV@_iJ+t5FI zUIM%GRWyxx8RoYp7u`m8`}Kl)bS^AdQqi`lS*jK9CE&6OaiEHdU|lyK0=_|SQ|z-B zq1Ibg---(#P*<#;!D68=l7cn|H03v7Qx0VcPVDej#Fg>v*1k#~6>xy$Mo~a%%W~AE zi#Gru&sZ^{1TzzZYTGU#hO2XAiP8l&hYN(b_!w5NfuRiUJ}Y?Lk05BMMaP>5=>ah6^I_e&Sj_8qg1BmcHDJEKy&a3V_brGTv{nZ_TOo+{B5Pbisd3ljK%e{u ziiUxG#L-B`11+Q!)(a-#H`qjKnCRp-w@t!T&Ng@Q5PhB8=FXMc+!Kbhxi3d>YMXls zp1W|fp_H#7L^;sqhgKBU9dqkiA`Lr50==yoYXZWG&>p(pt(kgjH+j9o(@}KUHkf< z=AU3+Qwaq`D)U|1bkfSF)X%lmM{CB+3sh!; z<==u)6vu6fezQ0-#$ZyZ6gTdDz~J5nuRMU&Epe=r8-Y=D2*E{CFmG`va^C9LOnQGq zbT}^Dpv{&YD-O?WVsl>!;B0r<~^ND0jyMqpqlYeeUP(Kl}m2GjRWSXdtYlojuY*uU>CX3b<#)Nxs;PVCq2y?K;A<7W<8QyAyEfZqrD(nXCpVd>SFzd`hm@AB}H1xfcR z6pNVacacn`nRPG9!sW;-xK|nH{7lAKz5ca~QOB5Krd3FdmbR znDakhR`@$*#Y?KorIIkV4RunX$FBU7n1#&J23r(>u9b9hh?RC?#J=c)EYNVnSxU&9quj!x0K>X!S^J-@kb$d zq{7^~X_lqABnjm<%}UbRtXf2reyG26*gf>a3Mh-#mZU|J2!~(wLv1l(U==|aMl6)t z)SrqnMgtKUpM)=l`n&LPeC_y-<735-cId^Ab-?9tIowllPr>bi+Xc59Za3T*+!)+m zxV=FeWLDfu=(5J* z?d)_LormorIE9|_#xrbk{(k<;mkjV*e-^!_vC0X{C4Mvd1bnMnz@Qm=l6ZGJya2_> z>`LRoY~#T!wi$-ZJC7)6c%RwDHP(hcKt za3T>C@jr#JieFhz2FJx#L9w4DXse*JEvz<_#8VQOv!(z5+}x4 zfu1#^=}8E@PfzF&)b0|LLn{8W^OXI*nXg~H>4XI=5sMx|I? z#mlY(54!4NVW+O~L-`@`s{{#2-MIk64f-HxEX@?JNWt|}j01OWh>tyc1ZHlD#p}W+ zPU$^U@hX=k|D7UqJXSz7eUKD^XTZOoLoBmpve=fm-o)VnJ!`jiH2?K>C<;d|(I<-s z@wfxpM{HAZuW&LRKyZDn+L}g1KVrnPlV+6Mgx7QDsb51lb~cUTt0?PbRXUy>jE25X zFfk58v^*%e%@(|eh>h9Yvm!!0BL-~zCH1(&EUy}UeH*Mtv@RomFRtt3tijTta5lXc zIj?W*P;y^@xB^W%9LZ3UqHhJK8&pePC>)&L*YEqb-`5-W)!6-R^cw$72pA9JFYdrb zLD;Us%5JU=8_8?8?Z@)}>OTBH%0M>^FO*^4g4alHg~`^#zX3e%%kf(B(1qW4&+s9@ zgl|QuVRj_?28vz_npByFeVEWT)GwdiOEgfYv80NT+7yZoj*E$W0J9m<#xciuET zNgajA;WyoBRh?)x%)5qksP8b?O@_COZavzrwOYbw_llXE)tsd5wV;?UKu%;jd3J9S z(f8RE3<*^JVZ^pk`EQ{7-C8Iq+60km88!Z;ReP8-s(ftF6?b8_%DUe(+;UIovrTGPN&iJDJv}S6GXx6mmr6$ zPQ0@nf4C+q1b&Nm3;8M_0h?=JK^Na_eAdf@=|ykc+px{PH@~$RJPX>Gk$9^LO|Ko6 zkW!L6uNfyn*gdCxW2?OmPi%f_RqT03n{b|LA=}3uwjaip)(|;PI0qrLU?EaczWy}| z9%90MNpPrOX&Aq@ei;<~ei3Y28m9j7kLWNMJ3sPkU>BG7=(P>H4v(jsahKDFD>&?{ z!ZAlMV$`V>6)+>O^h*c983;jS?3FW{2CH*g3Zy*gG{or9sA zf=hn7Cx;c}pmL~us&i?hoPoY3dn(%-fW;Asnq%(A9gUA6V#Cau_WXAio;{25Yi|q| z-y#=D*lDjF!53eKHD({S+u0E?WUMp8y?kaE1VL0=J!=Sw#gfQf(C#(G(LA0t97qj7(BmKyBbN@4g`~|4&oT zQq@@nVt_Dubr-!lDtadaS4S@BD%yqoZ#cA(TI58RZ}* z^&3yeQ3qCe&>Vg6E-T0u1O>H`Y7$haOHfQt=T79_P^87$*G@$@nVmY4|0oAk>4hHW zkC9YCm589qePCf1_A85lDh2>wMq{B(r@t?O)foZw0(!T<3(Xo~cNU!h;$Y{9j>1Jw z5Jx@5??Bt=KnH&gBF#XJ3s_RsiSQa~uE2&ykU20>8=olJ zgC}^PWrQ+MT%wH^QeHkV(YL*esb|jib5J7PL_6dBo)Vv!>)0$#0>WaN7Z6}{%AjdZ z8Zi->ED90x_iY-qn7|2uT(5H)~-2=Ft3giur3Fn7>(x`TJ{R-Y~7f zz@@2;Yo`pJyU!5azcY7#^!oSu7`HiGul}$^x~y7sGS(pb}y>n zHvoVhvd+R3Jc%dy`um7##Jta(NP{AVRNOD>dXBn361@9VfA=3o)c3moK8y);yy$+6 z#0&d=q>wc6G}HI{p3ZpbET#dIkXHP96mG1M`8wg+`6}T$xnH;$e3@{w_(F1T;N>Ei z!)FUOmrob&L|!P|N&GtDPUcq%cM2aT+-yEdxKsIX;ZEaeaJ7AIV~v~lJxdrA^B&=r z^3%ed!#@|UmwznW`TTw1F64)WyO_5LcNyO!+~s_SaQ*zZ!d=OKCEQi~=fYL^&xE^< zKPueyd=p$kVMjei8DB@SI~vLR1L18V@4pD|X7W}FFEM34M|dA6?{wiMD?EOK@NOk< zp71_H-W=h5mb{t5`#gDvz^m<>)URq0ouU-56j!pi@(MoiMGFlCdNg_~ETM=qyeDFy z-za!S#Q1oaV!l(z23BHsB|jU_v&}5U=}LY+9`l$Pli^B!F&sYUy8@vXU1f^ zl3$L;RGBe3uH;?um{}rbO|GlpH4)?E1r(FO2J*itibLa{5XE!;;{s8<@ogdkiQ>?V znxc3XMDZh2FHvkW=BcENKixd6X$ZvfHwVP>EdC)lUqUS3K1eLbF3cA{mW3TOy~~EZ zeG=rwG{}^WU)yr=GAmvrIba|j;$?G+NNTeQCJ<4*uMnuj#W z?ipy+rPyplNA(Bgc}lWTmZ6@e%t=jI*oQF611ocny~f+LIK^1lxef!h=~8|SOGknV zkBDvD{{em2BQU%8NBXcS8=zZB=w1fv!%FMiq#lp^1rDMqso{;jh=&V zA-RU(<&j*+}&YeONubpjo0%2J6G#1up0d0^ZUAzYNc0dik5vM90jE!p z>R~+och+&!sE16ss|Gf3StQ!f<-;vZ{zu<--nU^^I^`D}b{sy&O{s}x94dvPyhz4}ZSz}$Q*R{Kf=JfBEGN~)Z(hVs$s>M@Pcc3D?8H0MN#1m*_ zC4-f>Cd2;>k@HvoX`a-=;_M_E^E5REx(z&Vqqe)mWjsevLnVR`LEB4(Q}GnENl+h} zaU~9ts;clB4c?=S)AA+g5qmBNIuW~7f9vxL!C#xCs91{BD+ISK! zVBrycyu2o(rjlqQlp<<-ydz%n@#{q;c+QU=ZZh~q0D|d+1)ZQkSACLSfi_T2q>xlW zp0QMJzbXUAop`4FFpLW$5_KM_PVr|VTy5)RmpJ0B&E_v5RhU?rAbdnbtj-vZmn5z) zG4os)x0oDziY+#+-91Qv5#>RLm~|ofA3A=`hO2_W(~Fe{QeD zUiJJV>c#x3ejG*b!!(E9g@vv0Q0@>(m!Zt)XONa~WIPgg<(|i%_4pCu*j!m_@6(52 z{ME6pEc61z|CIRO~9IjG>WI zVy9tS>1eE{((y+~ZVr}O@E1nrX640ZyUyeF?hRuqv1PII7eTB)%Q z!H9&8xJT0w_ecm#?PKXpaq|w?6XFh7@-DhghSwr<6kG_bs3_;pjFzPFdtq}-qh$hW zZ7!3W56MrHh1Mh7(C6xU>CRENwUN)32f7 z5#0Vt(Ts_;eBcVUcn;Z4>Z>{uDl=T?*EmrSw%AE}7SslMI=2-#MRs+fnz8>QZ!f*c> zg%7&NjPzD@B9xwVdSuUk=j>PPID9hPE*3t!9P#^E8@bk_(OK{>MhyN67{MIvJbL2j zmq(AMA5go`e$Bc7gHDa@X7Gm&whk! z5FbhGAUnoBqeYy|9)bT8ulXmLD;4-_d0Ock>V`=NEG_1!S)LL-@#(}R=|dN zu>f8VVAv>hLaht?V?U>|ZbZ6Ka1#0ve(Y5-=l)@Nb$~qN|MQQK>uLgRp69{=N&;8*NYkM(exf7yP@A{WPjtv0YV|hyiFi6_gyX4C$T={GsKTF~s%wXp z=W)css9H^hMe5bZV496Z0~_S+Pot^y?p3dLURH*naacLe+tkr)9xOuN)n_e3JRWwM zw_Gnf5}CD}_VpBVjcFN*zX8LB3gggBvIMmrEG#=&H;R>=BqPzv#d`5@SmB(Ep5TAp zMRwnbl?&pBC}pg%c6o)dpuH+OinRZA$LX)lz$RPbGfC(Oi?j<78_w`22~DgpsgLNh zmgl$fYp}5!7!lo|!@v+|k%sgKp|8iW9A5}zXz*%9Hl)F9(-C+S82P1l!6q}OgxpXq z(PJQ2ft2ybK)R2?n#R;y)8ECzpU>HeUb5wOP<#s&W4!O>K{N7*h?L`z>&(cPMWj6* zc^4w9S~3vA5~5Ru9DJ&XN%RehBBule^liN&9T&!s$aCZIkikg|7YaE5kT@myvw6f?CX*y^c>Sf?xugwP z0j+ArHu`Hz(TT#*hl;>x?#2ocmp6o*&;n5a3=vZ&AtDHAU#M??{Zk?B!+52;c|k_w ze9IX1Qeni8N23SH|KmMQLI%yDXHfs{M!+Vv0vKlh4+yI5b3zQX`zQVhll>Qvq`~5$ z<$in3H8t%EiT}Dh_R+0w{0Xg}K1nmvj-f*5VwJoH>Hc zjfX;)Z=tB2h>ADb5%?(rf`5vKZJQB7g+=Ih^Xzbi@X^_!qw(jcGyaC|Y_gdy{kdo> zx-yymI!=L)Ukve&$b*x{E7;85QgHGl)<&A>4u0)vTp8mdQ63l{a!-Q~DrCA(Qi?vo z-yHGVDo;{|Ab&bp>YViNBysJT1%5fI{f&1P8kYn1ZoN>UC&$;!$0c z?xR0T5-)ZOip7!1MPzSPEu+!*|0|HEKRgQN5_laY#QSQJkAFa?8q`SI1lHXeg}8 z%ABFj)M!fZ-+-mG!tp=~zPV2P_;T>GWbz8f##DUs5Vf%qQ5%;c>VXw*{M_%w&zfcU z*{});_aJWL1BlzW7I7Olt_ljxbMW)JE(o?Am=GOSo%#K9zt=D!;a$b8r%vsDm$!wx=}CVuCJ64d0)}EyF#!9nx%MZ z2&MpQ|KIk$1um*;`~LugPKZK9MMgOqCWVg~W|-HR7s@CW=m?0K4?q|M9R}_^5W1r1 zNP!dO?dknxWo2cL+qIjPm6@cesil<_x2&+Jj^Y1iMLvov|L@voW*AVr{eJg<@9*>b z|2(i}pR?b4?X}n5d+oLN#*G;ejz+zo`fl^|V^M9Xf5i%(-+Rnoe;giuTn~?(dHexy zI@X?B<8jSf5EC76%aKOG0->jOpmC+*s$1N8oE=I56RRNFFf%wB`QzhQpFR@BBBh-a zRKzYSB3M-U7ifgt>p+RMZq zebU;Ex{!E=2y=*5&{B~k@m~zp1vJ2($4HY9dJA;-Iy&F!Oywu@F7&kEc6*0%++13< zAqAHHI!b96xF-0sx}l?V#?N$=;{CRiT)!v%gsoZCYZR&3wjgQC{XhopaCe5)MM{Z*N;zAI~aTNbDXl-Tz{ObNis*) zXeJ01AGIg-VD3UFdo2x-e;_+-)POApy{oL^Hr#RvhAp5JlBwakZw$>aJ7=<;7 zNuYCm9;@!>qT&fhee0XF7wabk0Hd>lu#0# zx7L9d+go@96KHr7^2PGwF<@#eT#lIoJIxo_Nre}>t5b~X zeTeQbC}Fm~%QvsS2xMNIj@jH3L}?Q)d|wUU`9K zfn+wZbhwZwmLh{Vbv|O)fqj#t1cl~Vz%&HIM}(v%*ZBdWFA%h1-FK zaLSLxD7?8*^%c77&06*=$1kp|Wm+Xip%03STSp0Rx4?s3cmYQEVEpn>9*=H=SKLQ{ z2E7}*Fv-V3xiJ%;s~V|%IP#`(0b25^L4Hbxm#TdPf2@C_@BNAGW;G*kCQ*I(Rej6>Y$9SZG5n?RFf#Nwc6M9%iINDK4R0+lHe9xRN;=>(Vw zwzN=0;Aoo(FM-fv>!%|{<5tc=0PJmLrL|$JN0-gtNLA_QfIe|=D`EY5c=NNQ{VhaD zQLVbogrMd|BCfdGFN3@9H7Y-clZQa3p*WF;ut;}Vy9W1(_+S(Tq^Kg|Za;vJo<@ql zhsDdpj|S-a8X~>J<6crK-zxK+0jgUkOz^SHL^f}x@`=?P@R-}f>;yA<;#p-p!(?1z zIi_RMAqe(IF-r2c5F&h!6RmNn zj5b;tv+%*^#JhF=d&#wjRn@9XG8%r4!91K{YZo`zA`(VZeBfpIYZOTjmZ)*}L7Ny$ zDsF;kX&eoE8;FPE6a%oIq#W4y7K!rVdz`|bRiugjdzq_PmvJv$l95s7L$NORv0_Co96Y^!-P1FV zs>dLf1%-&%Og^LDVMW0uzEp;&T@kFkh`%U7)Go0E8^HEluPaX!6qHW~4Ysr#2cw(T z(n9g3wz3nLZ2neTK{?%)5NNn<{AY11?+-LGR-OJGsk>|~E7K|Pxf-x1Hfl3@a?1~}+6gJfDLD5)LxY$kTqBM%Y`grN+XzQ?H*B1UR5 zedG7NMs}Rn;d_nw@r+p*Jx|A4s5e32(VYg?n9<5wBAY7(RL~V?Sk=p3naOW z0vohLnf_R^@XM_f9%5(g5kmlxXMr@&`YhbZ%ED)BRe?WD;(?chqV5_P~N=d>J#6zT1+?$78 z{tu5HJe!ts;RCd!4S5u4=>dq=h?e&JIxS&Hb+H)1NnfzEVgxsf5#VA+{~MjNZNd#e zO*q9t`!Q@C>M2N_FvP;VsCjyO=TPCPP;A2Ucx~4Dat^cGL4vf$q=T46O>Y;ThsclB z&H_q86f1~Fp|X2pg$H*5rk{G#{t=d zcRnRjJ%)za8SnoC(+YWU2eeJb``W2g(W{0{>fGJ%%NXwfUru6VCkDQ$-Y8gN&WVB3 z?KdG!b{5Nc_L3ZTrw%We%HGiMiyRX>YXX`JRE1X!G}L+q8)h;qQUd544mY3*i#)zl z@!m_}-8+Q&k{D)sC6g$L=P5f|z>#~D@12Bd|BL(LUW%P^qE+IN#%;7N3*gz7m<1;urdhaBNsN7F8i6cyE93i#m_6Gr1Syus!mGH8)H1W;zI4Jfiy?hhSrA@DjAR zpt2TBNXckRV*H>zB%$(Ngm1~oBUls8J9#9qEM1zM5G5{9ABlQ@Hk`tO@28o&By|t2 z%sY7P9{4b@ zU%*ia`_3SfG)#ySey$H?;T+?G zc;uQfXoeQCeGsCdA+y2fxn_gZGnCZXpQ^!u-DR;Se*quaj->`VntGxnY#FXsumGuo zE&I2>#Qz-8VF55bEKGkUY0G^#{%4k0DqC* zkHw0i!$J-;vj__cFlWU~k>-n1NS7|NAqYZ}WXeC7#SU$nM+;h}AJ4UsN1PRr)k?MO zX@PbL8semVFPu>Kg%yv!XELBD+rp@FBxWfu|HOjHqY9{hj9StT)>?6<53xy7HKTbDyYcFg zY_S>l+5}FZgT@_gT%&C}8EiNv+^`cEqN{if#2ax)1-2lJ03kumV(kvXDmy$*oKrmX zAVV{j4Mk;vxjS0M_srfASjlK9O@`2l_IT#`+pu2~N=<=%vJj%h&>q))o&zi2@=ObC zp6wjeHp9Q8^~?BzL2dq+*J+a_3s9@;W|K)DNhXO|zLUBlj_k!cJ48f%_ltWp8XzFINL03o#h6LU#~jRQ%G76F66ap^UvUtlbR}4^R#ZUu`n(TL&glz3f~{ zl6i}Nq$yrbm=qpiEIA1yUm~26B>y5=PdifU%^ns#A(@{P?_W#==l`s83@t`Q3v_Q2 zdc-OIU5mCSVB>R6ye>;pAI)b;mqwG1i*U08R1=`HLT9_x@5O9oVzZp8BattRT`b{$ ztceyTQzR?`D`vjIM3H$m`yL<^l4?K$?dQU9L6}CW0UPOyZmkyaCm2FraJZ6`&w-{H z@P~=P50SnjUo94Bzn?ev z=)>rG$$OTh6MN+u=_fKm^VtPj(o@pS-*nG9QCb%YYuRl*_7R#FHXKt!4G@=rWj>L( zpvFo9FX4k&6bH%#0c(G2fG{8_m)dXv_cR~6uL0eMLGLIu)@^r3(8tjMn461jiLMkU zE8$0Y4PNg3W+ixeAcW{mtVcQxVp5Au+Mwq=X4VKLe5)tH*D9TsE4=)=*q_kR7oEu` z24I!t#6YR%2bvIbP>04>gr@_?F5@NA^9krAbUYD}EzU_Y=1iT??nyMV^L$fKYb4M@!5Ce-l$YKk#SQ;xd;47LwdN4L(L*eaTq8v31C|Z3ysAu^yNdughK^@$U zOGy20&{KynITQ>{xSQj>2_8F0ZfP{XSh6Hq==uP`ceS=h`KL;w_V^VLo}go-X5_1r zVAZ7AEiI=hYaZNtJP{Hh7os0F_rxCIW5O8lK=gukfvm)AKvSL$9k?&pzd}Enr5Y_X zAuYrwNRj0o$S_VB5T1reske-4@f9fJj?hWRT6WTLnm;RH`Dqy)ZXCb-G&}29y8JX9 zcI>^vSDS|Z>b;85 zKk5|ux8XDu;S?mj!K@b|6k^e0P5NH+Om;!2JA`Q&BM~rEe+0F>s9l7qCD1L9_$N#K zsx*J>kf^;;t-(fz#dNIX#|WzsRM6pvaZ)q4%i6;&&BHL5cvzC(66;TFsg^W;vQ!D? z-->%{(K2$RIOD}Xz=jJnqcFx63Nh7WJ-IgqI&AQ~>~N<95k>Tn@a+^oaLM!YX0Ni6 zU{$hZ$2JuFJB+IYE6K*T(56og_XtI>JaluySMS3bQ-9$xya+OQLW0Efnw!`LQEDRl z7mhA3>Oe$8Fl&M;GEQZIsBdnE&%U3d!||=SL^iR-y3-~&f1&n(<$d8p2%`KAO-K!F zU)aOGZf9Qyg;(&^ypi05Ka)dFd~*}I5&qFcnyKSJzX+)qZ3s%3A#6po7!smiVpLZJ z1smZA(7>w0fhc_IsJfx~mVnGHUn*(92epBz)CQ(X{qy2|_IC73?fk@8cOvoM9ex|6 zD@!e4zsq>qOOSn#CIL8d_DRgjG3X{O9Y)Z&C{f(wvD+GtXgQ|tLPJ4oJ#v6^?K+}%Tp01_L<3OVCAf)UM(0}Hj6|dW1^|ek4&j2hbPNi90b6x~L@k0tt3>Mhk}zhS&h= zyK@L=lTlnP?4g=x{XOa*%w+?i|3}PX!1YD+LeXMwEPB^0=-I@!%(<8e>Ohp*6RiE<0{X-}!Tl5Fgo#0y+rwOD!6nF^wj*7zCoyB6 z9|&?LUwtCy!T5&V=O+~kz@mw!>t&?B`Pd%3XAvyJ*mr0tn0frc>F_RXe3-9@W>dh%K+^)`VoP@KGC-knW|I~PJQVh7Vy1@De zG}Pf@tQ%Tp9zPLf@nUk6j6NN)(5Nt!1F1mQej^>^p@*cP-M-xvv+K!Tp{DQHXs~~r z0iKAPgpE|rf*HiliS0}#wlkTI)5Kr~H(KmLCwu2R6r=QYYWO-+T;nTXSk(MqrS2@Q zF_GHi!~}>wE)ki)AjSmZ8X>uXza%cM@h7|qOEI(aZ6S`r;ocy`AvkER$G9nmj>0_p zY9MY3DFZmEkV4`+kT;MQi!A6&xN(WNj!aCgFUuK3DZ%F#Z=*A~lqDth7)yj`ikS5u z!q2Ed&;xWwHnKkAN)XO0oCP!$6VhQzuLceIv!f*CTBw){(P$)a8axrVETdMw6nI3< zRI7y2Q^YdLC7+Ut*C9cJS}fm*w$x%hgd?56T*J}T1pH9G;~JNq4^wt>5Gf_@*4Kf7 z7N~c!6EJZ=Ceg`kP%KD-ANNRmp`+O@yvryR^J?$V9xO@hkm#((mVMfTOEIloXm0|y zY+GjvQQ6!sU6yoMO(M$dHubR!&Sz#5=rw$hEhA zVGpX1mF`7G7V(`6eYM~*EP~}f)8NuIlLnQZT%6>d=Bta3a*fu_N~js-pO)m$l|t$A z>bMuZ$;5)dEyc*dabu_TyodQ@=P=P8hzWBNT1AwAVKa$ZxOkp)a(%}nd9;>_ZBaCL zv`VJ~m#8C1D1_-BKu$KJ=V0MH|EF_dH{IVUo)C%~vA_qQ$f<-6sH(p8Ml5Fw=-NWZ zHa4|18K*_hXio790jaUA*?t_N2lOF8V-F;^;tWe<=ExhJ0ggL%FvAGXV9Vz1sOh8k zP6Gu%9MrO63o*%6bS$89k02DHlDEhEZzL7rPw=tD@g-(m((giR7%kq8qglCuz~ejo zH@3s)^W<|4`TXo}L8n;%jmO}0A315k5RUGE)9&aZ@RN4PbY7;Hqna8LYF~JIF`)XE z~icEIuo;{x$3Xn*jZvS~YGpHCwpkn=ITlcj2s%n=K(P z+n%v-AHe?Cp6zd4F`3+{0cQbn6cyJiZrDvU9HjT z^t{1nGFvjnPsp@RoRl^B#+$NprcAX>%gxKj38XV;-8_5F+u&k|lKQ2~I3qG*b(U0>+HF-8PLJJ%@0&O)m&;ATZ#Jjo(zvl) zCf>4HmNV^r{Z4eaC%Wu*4rZR+Q&8;iviC`0?-_(j3Y@|@IWOnH-}Nl66sOnW5MQ|g zAS+s+iszyRa04RaC0467nx1qyXJdh7THDNlQcfe6&#(;y5@k}dmKK#4;o-R2>RLQf z_}~U|QYj26{^*mNQ021LR(Nc#suH`~&2g2Sn=9d}I2UKf-&n4c^V~92JY~h@Fb#vb((wkF2Up zR)UsCi2+lTr!gf}mDLpvd#NmCT#3VVy{ydZETJ|g=CimrQ%<+X{RYFDz~%BBeOfJybH=@?&{(alo#HqtvmW4EF52oe)tNN-7Z#MZoY_bPdPGO zQ+iVWzibGCV67e!NIA;HMH~ zSK%pl+0ha~1&jLoKR;dqfl7-##mMepvC6}mC2RC9`|rGVH)V#XJU75#P=VmIl@(}E zAUdjVB6qLT>m~#)F8+Vm9^Rmz)K$8!8(<* z_EZKY=Ai~#P5noR6Hyez-t3HmIWDK7#8u_4D)Yz+Dp)Beq^5@Oku5SkuqQ4C?P2WL zv7DjWRkgqcZssfoNA`+6tO<1(K%td*^zfJ%Fm>{#mr-Cm*qg9@kod}7jdx7I*>hjm zdkfxK=K&XJsf6C|410&1KV*-IUFiL;uy@RFLiT}V{?{8auK!;O`hD@QzstG4voHeq zwZE0z*?)cgFXwvyNLB2&{DsG`g6sW@#Mtn+`~}0y{@2$(cUJw&aGb=ynF1n~hyI}8 z@SC1s4U)McqW3Q{;it9J^jqHe|qlE8=wEn3!65-_|le_UwL)wYujGm-ulLlop0{iz2~jH`}V*6&VhsP zzW4s24?g^;?XMqya`@BFK5swr#g`plef^Da^xMv3|L1St9smA^AG>}!aq`sZpMUB8 z`@VY&arFb1I zjvFzirMNPxT@?y0 zhl4vs%MEB~xV2$<0|Wq3w>I3mq9GwV8WMoU#zqY2HExXw5$-rE*2BMK_Z#A{97q$27ud&F)n;(h^Q^hbw6U4l5R=Fz zV9x5WV{9)*Ez2fRQk82IWq5)E(`s2(g&ouUlJYuPrrllQs;CY)bF%R?(-%EuxLn0` z2o!GD>m7mwSqdl1udBBAi=>E6XJu|GW(g)9Y;v;zRbM)aE2=DZBG09=8k89`-;%28 zIyRvSPM#|;GYMq2DB!1Nz9@Y-zfZ``eoK6%br{VfOM$6gDP~52DLYNV2|Zj<&`<9S z7qfZMwa8u`%=SObQkdUgE8VdQc4cduG8{E#qPAD2K42MB{pR>?m{?3WMFn5}|2kSf>ZJ?ik_@K1H z-HW2i;%eX_NL#;_iJ+fzW`N2bqR(?@pvVnzMX^gnIZbDKBMQ)^y{wo-RN*D)MO7$% zR%Pc3FJ`_^tVKWts|3nlpEet4tYq&&`>rYz^H4(~71UYHd{+BpSrniIdY=bj?h?Rt z0E5BEnM_7*B;LmX#sE?QHvpC_fuHMOQW(HeKnmorqhTTlhiNu${{_Gt2^a?$W4eJu z5H6M83GkDOj~kd9$3ZZ|*akj1qSN6BZv+g-w*e8E5NUv(87-5)!a@jk92Ez>dX_!a@>H2Hzo{3i+unCTlTn$h}J(h=Z6{X$slV zv*xcj)Ecl7Pz!JXiU9e5Y=8xz0=)7D+;Ixt96%Nz1rQ4u4Yy>#7P!k`CIJ!w34nM& zEPw-ax8dw)Ko{UR;21yvbO71`hXHMXLx6*T{eV4yoq+9tt$;0nO@NJnX8{`k>jCQk zYXNHj_W)J{ZU;00Rsw1P4nQejCcpwv0b~FU(Ebt90IUNv0OkNJfFwZohsYCP3t$6a zJzy>1c0f6x2#^oR1f&3@fc6jIAFvuw3djN^1317T;A{inb^zfN{XM#U^!^wGU@U+k z0Y(=b8=GLbfl&tr9~gsRD1s3Q1|}GvV3>l@3JqHDOqe=l>h%0%j9)}a9obEUe3;2i z%c?Ni;Na$g1lnemmB9h-lk83qCnS@_6%O!W&cK96GIKrLY5R{tmQ!HUbVnk zaSQs$Dz=)VmyH+AmL(V$P5exXwiwvRA6_x>3uS-%b=w&j|i7-Ur_9rfR5W$ zv7j88p9&MQL=HxNHL*8lBGiRh+HIrb@NH@w5Dh@YN zp5`4F_)&RL27K#7KUk}L0rd76*4>^L*THDrEPM@&@{vV9|HX$clsbs`r3jy!mzig~ zLF;<-KjOyU_0$z#H@!QxCJOc?`Z>8(^DCTlP)Hiax#wisAtNqzr_ISl|BJRCvKU)k zI=@d&B#3`2*7kxAtpo1IcN?H9U{8M7gcfc+c*w5>K;dL?3qIj)@yK)Vp|CQ12jdIc zlS$#j{gR#V19o}!3txoq@_-$=2cPgX!^4m}>Hn+=i-*d#0pFVd!Mu>4bCr$49ZZA& zO3>O}9QV-kl>X2#s~|fIBvWvV76^PuE(wi<0}g_s{R|M*X_` z=jvZ~AFug!_X57JdwBjhJjv$1?)~$3&-h<=|1h%`H(!OlW9vc)4@ibvGqKm-`mpys z{rtT=r*C>tB@D$geSw9W1)wL0Z)j(R+;1(na1R2)-NWYp>)tSB@1T<&=YhI&;QSGI}>nE zL|;zNA>@Pd)ebYrr>Vc7Cs-ch(;K&9jQBOPW15##g;|*9myv4n3qWe-_x; z;O|_I>e~ytRR0cLs#p#~!f9T+tB&dIpmHNg?iDulq~T#6hQd_uXS-x@1=ifW$y29{ zEyWydR}>V0CU~K=;`C%zkm^d6s}2F5l{hf5D}feA26rF)kl4#s>?zOSo{T`8=Lqo^ zF+_EpGlP3rQs|&*ww-fE!Z*q5GR2vAcCmB8?}p7o2;;7Q>3McY8Mv@=YB?w44IqoUuORS5ar3pEPf(o)x zY7Hu?p(vPIaNK1Q)ZKZV-;JE?&a^|LXMx>i!!#Wg%stHVB;pG@4kQJl_=aV28zk8z z`kLT^jt~%>2U?(c%y*I5_Trkethv8J0}a{e@11*)rIEqZ$MSc$1k7!ZWHTs8SQgn!Cp$}AOg@J(e7HU4mqGhn3Y$Swy-SJardo68 z{S#mT?WCe~0x8QuhRU5Le>s?EIRf=N17ms$K`75CEd{FF&}5Y4JKV4ob>q_LD^P}X zdJk#MDd~&h?-;eDu=@W~SZ(GrY3^jqa)(Ru9Ck?WB@yAuZ7q@+z&aygj;Fljc}fGs z$947QmuQ&ghM>?JBPda8uO^5%J9KAouap0?9k`p$6JiE;i)2PcseM9uu`9nShcs)( z*Lmz*>$&3rwgf7vn7s*@yJIf<5&5OukzAY8i6tn8W>Ga&Wd@fY#Tb^&?qa%aP_|+L zLBwU`H@~7}Q6Q$LDW(8-3A6#AZ7Pc~#3nM_EG=Rfn?Vf$owoiYn&B+XLwgn@zAGx% zpTgwff#`t<+b?e@1q2Ka`B6?3dP zqX4py!eZiF7RV^cATstnA@B_{ zU}16t_IUvl892W( z#J?$n|Au7FO9Fu=d|nce{Tnj(?@Qu;Iw|}JIY*>Kx*i={(Tchi!vmOm;&bukk;g@I z`NQqq^k!Mwz|0Ns-}>0ckI6*mvwoMK5v?o%bMtTXpAqo?BK#kCwBymC+*gkZkIp`S z{7WBUA*P`tp7!y)k7Zop#|uABJKO*JZJ)KD<~YStF=w%Fi?W#s0iXXW-kx&G(kCzf z>^J4Je_rX9@!%ufhjqULSjTu5>n7c}Cm89Ie=<4LHOY$TDT>WtLCA~d5_fO!kdHkicx4#6Y=@=lmwQ*2yM{wc52wi;Nb@$pYQG`0(W zs9nc^XKCMu?f^gz7!61PBm-oCL_j=13g~_hdJX^qa2U`AI0QHd*bmqP*a_GU*b3MJ z*aX-Jcowi8um-Ri&;%g=4S-reHJ}tQ2Veta0xSRnKn_R(!~-sp^zsejMPpH*d%&yO zF2bJ8e*nt@5An7Lgrl%z2A?^PBK_Y0LI2@pb2+y~eM zcpvZsARhk40dfEi0JTe6qX@23;FCR>R-1K7W}a+}EC(AXWwr{t$7NqMTBgwHG^3e< zU{2nRF?n^^Az7=J1%1!PrX}}WnZaIbFY$^Rb7hcskdlNcMkX6qBa^wys}@76kZD?A zBNme?k+hPWJppI7EA%=UwtDs1BS>DV176Col~q;^u{K#c0+!gwxJY)sz%ggdr$}bd zUp5dd{{{1Z1_r=_@IvGNh7!5~Zn zR4?63(^>Z0VpEFY5YmkX1i^A0i-)FKhS1hVo2#M*jcS429dZnJwz9T|7L{$Uu{&fA z`ZbOyc29QJR4uZ*M##Js86~ta+c=`E*x|O1Fd4>$;_e$b6n~hHvr;#V>yuZ*xKN=H z+%PVPPm?XfmXVo>?c6hG244P|ZyGS1LjA?a6XcWRGv#aLkI7$?mngi7+Y~=5BxzIA zW~Hr7dm_!GELZ-ZyjXR$DpjRcO;Aly%~qAE+^RcOFRS*czE`Q!`SkJWlhbYKGt%d# zm!`j){#AN+x?HVNYt;sIrut^JOMSQcN%dy+JL-v=MVdP`4{6qGW@{U?>$NXwTeTl+ zztDcC{kvA7Q|qj{r*s>2FX^`F-qh{ay|4RNC+PmB8=_CuyY+|kNA;KUSMy`}e7=Ie zpMQw|GykArlVO+PLqnHAVk|W7G2Uz{GL@MerX{93OrM&*GwL_SeIMP4Fz${$voP&}6QT-xht9ce$Mb*Dut6O>8HQOa6nz4A6? zt8$m}ZRPvQ$*QTU=_q@#YJtkB@~W1oe5zHdKd9EI)~PnAHmbI&-c;>X9aMd+`cm~b z)z7LPRa|;P`p|S)x;otm>^RczOn(%(`8NGjdbB!LeYx7Ao}$iIFIF#A->-f~{k-}W z_1o(2)wgP%&}`DYtm)Rp=;QS_=*Q_z`bqkHeWCt$`jz@S_4n!@(67@!rQfCBum4DY zSl^-lR^O%nMIXms&L{CV@CshdoB3=$mv`{>ypO+!Kh583e#Cr;%8rKoEXuBu*U7Wf zW~3FSdDHGn`yy?ta;NgJvP*fBYLV(ylwe%?q;yyMTj__=r>GaGSF7(;KdbIhU#uzC zEYRGh*`_(5xkj6+ovU4~{aLHgP0_XL-_ytPSMt{)bv>WS*CO2({t12~zk~mVzs8Vf zC_^p%XyA=c8h06a(StsszW|ci)g9_@Q7b3aXVel+tmaZpqDH2XJb_W__04t6#0ZPyev~ z3H=`ZD1ID2p3ebo%m;P2k?w8$gZu{m4gMYeL;h?27oIm{8C-_Nh82d}438TMj3vef z<4eW^#*d9>i~~(WOjnp@nC6&Pnw~PfV>)6wZ5m`AXRa`RVHV6>5oFY;uL$`-`9}Hc z@{{ri#WcknMVVr;Vud1IIZ-)9nXjCsEJTgGtNaE$a!L3&gA=jq?1k5Vhtv%o!GP=BfZNj*uEqp8+-HTP*A0B$=p-)sJ^iPjF*Ua2)| zty-J5P+P98*ZxWSIc{X>(x&QEI*YDOw?cOZxJaBn1?@>oKm8#)849IqkkGX z{7ipbAIT^1*YR5ZTf;D;)@U|PGG-fX#(ZPF@iAj7xZi%`LE|A~oAI!*-PmCqYf_oC zCWFahdcyR)X}{@xQ=93qsofM|PBqUpmzvAX4zx3mxz@bI++f~oJ_rucW6I^)WLPSR9&^st6QR5u4~e@=(=^$`a$4b>w)ukfb9-&^9X(*<5{WT8fHF=pTW=J z%XkmJiGP>>8$ZUNGU$Qd6r<7TGd3IVHGXTn+BDs?-L%Veh52f82FkF;{E+!+^Y>o+6hqvbElcga7O|6R^27Al6OJ*j#Q zz21ka)2i3f_omNRKdgRA-3ktI4XE>Pnr_tD#oBRNop!u7M>}6zp{>$3YS(G4x);!o zozY#X*MWnt(|@8rsn6x-@_w}X=TP34`Pcbfd>bEcEJYd9O?ndwvk`n6#$)mw^1+Is ziZP0x6jvz|RC86Q(`z-W^)G>T-!LSbR-0ZieSmuHFda2<+r>Q*9!0HUiK0QVQn6Zb z59+U7(V-9&#}vmEU5ZnR__PEP{~d(x7TW6u-LvR(H|e(Mw(7R)cIx(^=RK%9q-z7m zYS(q32R^1duItjBLLG8?iC(IYMZc7wPt+&rW%^{atkHV8UZvLtT341nTW>>uHB&!F zU!*V9m+Kw+YQ0Bat6!pTKo8cWza1Ru9?XE)vZ$bBbARR+$ZEn|UT$MU#2Gd4qWm@w9f44y5uF zd6v9f-Xy;VyltzzP2MFxB~MT!DpU%sVkWS?MzKY)lVQ4B!KKO4ENMk)OVHxirEO1Z zPvev_wD=;7q&&)dlUWrw0pG2w5PP)T23d?Np=62u4*nS5#dq@(L#!dekYq?Uj7AGH7%~mn;BIrk*|r-F8V(uS42KQv zh7N;ZIA%DGk(G#DiBW2dHO3ngjETl1qs*9WOfil&%8e>;B7@Ol%rs^NxY11G9Agpa zxZLP4RvSIWTH_M*A*+pRjBAbSjO)?fo;7Y{HMJFWMVv}79%Hq2%Gix9KoZkN)C=en ta}rwfRLQk+`nvF3z`z9zT)@Bu3|zp#1q@ukzy%Ckz`z9z{MRw?e*xL0mn;AP literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2003/diff.exe b/vendor/exiv2-0.25/msvc2003/diff.exe new file mode 100644 index 0000000000000000000000000000000000000000..85f370d867509ac4040071014ae28a43fe761558 GIT binary patch literal 150528 zcmeFa3v?7k_CMZ}Ok@%#bbv&I25ELDLL>tj3~L4w9LR$J0iq;=8Z?0flHHJGGd&R8 zButzcN!tuY7hQFIz*l!yT~}Fk5l}H97;t@T#1#>I;A`!101?~}9+Lm(R(DS(0sQ(q z=YRg^{LcBKo$ji-b?erB)$OY4nz^^MagiLy8FBUXaokqi>7RrB{pmk$6b~J}eJJ-* z^gCm=8VcSSQ&d^y6zb}0m)DoA5SEtJ)YOW?k_w^TRU=f@2s!f?2rFvKD<;Io##l7e zg}EG8V2I)#Ir?{pmc;B^NOVVVCU(ao$GO$a zYxhU6esP?j!cqmQgMZphO_WA(n|VCeMQ~5i{r{tX6U2%J5pBg;KrazQeWlKX{S!E@ zbV7NVScbfA%69+;|8v*SpZf)xxIu@DzL;!MHaKa_y^ofyK^i?BLI|1BO|y?ZFusv zi?=mN+TNqMS*L07@$GoIWI8DUYHmQVGgur%7guaxkpCT}%is zFQoEUP_F!$fMTf)$)wyIiyV^dti?gf{38ae7b zVF9bi?v-nk~(F}AOq@Jwb6WLE^ZJ^s<0$Hfs7XB}mmxo<07%|(m_U!( zI&J5oPw-wSASb;mNBiF7TmJ)Q$Tg;xueoC!*YYDdP~Q6k3f(H$_arXCk zuL*@no6hz1t&v}4K#ZgEAE<=UHh&SR(UY$s2{!A%8b_6N$d?~s6{R;kouyJWx--W_ zRfcUxm26W>Cp9{6_1A5F@oLU?P{qGaB`9;Gudm^9xp8Ejr1;}Uf&(eN)QnO8Y^1M! zTr`8@Tv4w?00U@g&=@E$td!RhCH9@LWXQBK0oJFASiX~yXtXE`C=-%s*+t55>ut9$ z?vypAw7i6zpsWk6*cfn<4g(lSxj+%os&S-^c1 z5ivQ{qS)e4SL@dHLPB)sMnK6A=hO2G4^oZY(x|vXc*ENx{pL@Q!AX-jq)9y@UIvt^ zm;U$%<<|&9$2Spvafs1(P?{`Iwd%`_TanF4)-)tvXOCG9Jo4VlhX8$h$C-#HDDC+{{v+?*iaWmrZTQz&+Ne_nmUyYrVus0(a>Yrag~{M%)Z@3Tvk(KR3_ON6 zB1a5%X%*RsLbj&-CRT-hh(Lf%hX%5N;3kq;7NB)CeVICiMl+y>88Tyd$DxRnF3(Y; zlx|U87!C#1EE}59Ih^A>S#@BWk@p@!2o8PBL7Tb^bxnAUG(~=altg}p)C)v8E28@=t)DJdw%k-q?Kj`{A!A$<_Bcduxg z>u#Kk=U!N1A{t6Ll@bIWGnJP}aTgioB1;bJI8$mcOOxlPs56JHz7A#K(DyO|E$H0Mx;!ObVfP;9D0-?b@?|~ z)**8@E{=mJTj}PtcyVJ=EPzDGT|hWwQE&Yj2HGytxX;X2ng+}!5JJA@Pnr|qz2(F& zH8V?hK)iPy zf}d)q%-=Q0*`jJ0e)Cp>eHz*GR_})-8qtwBIZcB5+JH=7k95p+Oddr_;RzZ&XAJz> z-qU@3wjSF-&9dFEj(UptF0lq)`~7GcVgn-1rs5 zu!*su*Tk>A3-t6^e4DRuaBUMtIk@9^_%|-@N(VO#*JxZ;TvKt)!lic$!f7OiFB*lu zeF>C-Yl%1!xv<9@5myBjf+gxm8fZDVmvj{hs=WVe6u&7~BLzGEFQs0AH8j!ybop

*OMo(^}*aq?H_`LMQEUe_iv(l$V2Z+_$|iK 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 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2003/easyaccess-test/easyaccess-test.vcproj b/vendor/exiv2-0.25/msvc2003/easyaccess-test/easyaccess-test.vcproj new file mode 100644 index 0000000..4328e06 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/easyaccess-test/easyaccess-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exifcomment/exifcomment.vcproj b/vendor/exiv2-0.25/msvc2003/exifcomment/exifcomment.vcproj new file mode 100644 index 0000000..8af2a4d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exifcomment/exifcomment.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exifdata-test/exifdata-test.vcproj b/vendor/exiv2-0.25/msvc2003/exifdata-test/exifdata-test.vcproj new file mode 100644 index 0000000..5a875e1 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exifdata-test/exifdata-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exifdata/exifdata.vcproj b/vendor/exiv2-0.25/msvc2003/exifdata/exifdata.vcproj new file mode 100755 index 0000000..c0a2fc1 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exifdata/exifdata.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exifprint/exifprint.vcproj b/vendor/exiv2-0.25/msvc2003/exifprint/exifprint.vcproj new file mode 100644 index 0000000..016ebd5 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exifprint/exifprint.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exifvalue/exifvalue.vcproj b/vendor/exiv2-0.25/msvc2003/exifvalue/exifvalue.vcproj new file mode 100755 index 0000000..fb02d50 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exifvalue/exifvalue.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exiv2.sln b/vendor/exiv2-0.25/msvc2003/exiv2.sln new file mode 100644 index 0000000..dd6aa86 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exiv2.sln @@ -0,0 +1,660 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifprint", "exifprint\exifprint.vcproj", "{8391174F-52D5-4111-A0FE-E87135301CFB}" + ProjectSection(ProjectDependencies) = postProject + {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 + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-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 + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-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 + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-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 + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2lib", "exiv2lib\exiv2lib.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2", "exiv2\exiv2.vcproj", "{07293CAC-00DA-493E-90C9-5D010C2B1B53}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifcomment", "exifcomment\exifcomment.vcproj", "{0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmoddel", "addmoddel\addmoddel.vcproj", "{271E59C4-81F9-4231-85D3-E7DDB2E2BC08}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "taglist", "taglist\taglist.vcproj", "{2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utiltest", "utiltest\utiltest.vcproj", "{7E0025E8-CFBE-4941-BEB7-825F14A87EE1}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "metacopy", "metacopy\metacopy.vcproj", "{F59D0AD2-6948-474B-B506-AD14EC9BE551}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptcprint", "iptcprint\iptcprint.vcproj", "{52034F65-28AA-4E3F-A44D-C91F6F0922F8}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptctest", "iptctest\iptctest.vcproj", "{C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exivsimple", "exivsimple\exivsimple.vcproj", "{EB7F30DE-DD77-4311-BB66-FFDF972052C7}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write2-test", "write2-test\write2-test.vcproj", "{BBDB5742-0A55-4C2C-973C-E876AAED6ABE}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write-test", "write-test\write-test.vcproj", "{94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "iotest\iotest.vcproj", "{5D43ECB3-681D-4732-9395-AB81CD283F6C}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptceasy", "iptceasy\iptceasy.vcproj", "{D8B36F3A-34BB-4540-A731-EEABF1DC2E05}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifdata-test", "exifdata-test\exifdata-test.vcproj", "{36F0C797-F6BD-4F5C-8DB2-651D8502872D}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "largeiptc-test", "largeiptc-test\largeiptc-test.vcproj", "{408EB518-B855-404E-9BDC-B58F60DFA9B2}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpsdk", "xmpsdk\xmpsdk.vcproj", "{09877CF4-83B6-44FE-A2E2-629AA5C8093E}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpsample", "xmpsample\xmpsample.vcproj", "{948E8E86-7F47-46B0-95B2-ED24805F3C9F}" + ProjectSection(ProjectDependencies) = postProject + {07293CAC-00DA-493E-90C9-5D010C2B1B53} = {07293CAC-00DA-493E-90C9-5D010C2B1B53} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpparse", "xmpparse\xmpparse.vcproj", "{948E8E86-7F47-46B0-95B2-ED24805F3CAF}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpparser-test", "xmpparser-test\xmpparser-test.vcproj", "{948E8E86-7F47-46B0-95B2-ED24805F3CBF}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stringto-test", "stringto-test\stringto-test.vcproj", "{156423D3-5FBB-45C6-A7CA-675B32F45C15}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prevtest", "prevtest\prevtest.vcproj", "{9D2A443C-93D3-4144-B911-D7CA7CD85DE7}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmap-test", "mmap-test\mmap-test.vcproj", "{2F4235D0-B5F5-4C59-981D-BA006734B56E}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert-test", "convert-test\convert-test.vcproj", "{2F4235D0-B5F5-4C59-981D-BA006734B56E}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff-test", "tiff-test\tiff-test.vcproj", "{2F4235D0-B5F5-4C59-981D-BA006734B56E}" + ProjectSection(ProjectDependencies) = postProject + {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 + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifdata", "exifdata\exifdata.vcproj", "{D8B36F3A-34BB-4540-A731-EEABF1DC2E05}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifvalue", "exifvalue\exifvalue.vcproj", "{D8B36F3A-34BB-4540-A731-EEABF1DC2E05}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2json", "exiv2json\exiv2json.vcproj", "{8391174F-52D5-4111-A0FE-E87135301CFB}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + DebugDLL = DebugDLL + Release = Release + ReleaseDLL = ReleaseDLL + EndGlobalSection + GlobalSection(ProjectDependencies) = postSolution + 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 + {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 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug.ActiveCfg = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug.Build.0 = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL.Build.0 = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release.ActiveCfg = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release.Build.0 = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug.ActiveCfg = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug.Build.0 = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL.Build.0 = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release.ActiveCfg = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release.Build.0 = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Debug.ActiveCfg = Debug|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Debug.Build.0 = Debug|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.DebugDLL.Build.0 = DebugDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Release.ActiveCfg = Release|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Release.Build.0 = Release|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Debug.ActiveCfg = Debug|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Debug.Build.0 = Debug|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.DebugDLL.Build.0 = DebugDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Release.ActiveCfg = Release|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Release.Build.0 = Release|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Debug.ActiveCfg = Debug|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Debug.Build.0 = Debug|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.DebugDLL.Build.0 = DebugDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Release.ActiveCfg = Release|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Release.Build.0 = Release|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.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 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Debug.ActiveCfg = Debug|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Debug.Build.0 = Debug|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.DebugDLL.Build.0 = DebugDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Release.ActiveCfg = Release|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Release.Build.0 = Release|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Debug.ActiveCfg = Debug|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Debug.Build.0 = Debug|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.DebugDLL.Build.0 = DebugDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Release.ActiveCfg = Release|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Release.Build.0 = Release|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Debug.ActiveCfg = Debug|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Debug.Build.0 = Debug|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.DebugDLL.Build.0 = DebugDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Release.ActiveCfg = Release|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Release.Build.0 = Release|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Debug.ActiveCfg = Debug|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Debug.Build.0 = Debug|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.DebugDLL.Build.0 = DebugDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Release.ActiveCfg = Release|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Release.Build.0 = Release|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Debug.ActiveCfg = Debug|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Debug.Build.0 = Debug|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.DebugDLL.Build.0 = DebugDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Release.ActiveCfg = Release|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Release.Build.0 = Release|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Debug.ActiveCfg = Debug|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Debug.Build.0 = Debug|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.DebugDLL.Build.0 = DebugDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Release.ActiveCfg = Release|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Release.Build.0 = Release|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Debug.ActiveCfg = Debug|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Debug.Build.0 = Debug|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.DebugDLL.Build.0 = DebugDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Release.ActiveCfg = Release|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Release.Build.0 = Release|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug.ActiveCfg = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug.Build.0 = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL.Build.0 = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release.ActiveCfg = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release.Build.0 = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Debug.ActiveCfg = Debug|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Debug.Build.0 = Debug|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.DebugDLL.Build.0 = DebugDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Release.ActiveCfg = Release|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Release.Build.0 = Release|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Debug.ActiveCfg = Debug|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Debug.Build.0 = Debug|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.DebugDLL.Build.0 = DebugDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Release.ActiveCfg = Release|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Release.Build.0 = Release|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug.ActiveCfg = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug.Build.0 = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL.Build.0 = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release.ActiveCfg = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release.Build.0 = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Debug.ActiveCfg = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Debug.Build.0 = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.DebugDLL.Build.0 = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Release.ActiveCfg = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Release.Build.0 = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Debug.ActiveCfg = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Debug.Build.0 = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.DebugDLL.Build.0 = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Release.ActiveCfg = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Release.Build.0 = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Debug.ActiveCfg = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Debug.Build.0 = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.DebugDLL.Build.0 = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Release.ActiveCfg = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Release.Build.0 = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Debug.ActiveCfg = Debug|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Debug.Build.0 = Debug|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.DebugDLL.Build.0 = DebugDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Release.ActiveCfg = Release|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Release.Build.0 = Release|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Debug.ActiveCfg = Debug|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Debug.Build.0 = Debug|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.DebugDLL.Build.0 = DebugDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Release.ActiveCfg = Release|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Release.Build.0 = Release|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug.ActiveCfg = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug.Build.0 = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL.Build.0 = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Release.ActiveCfg = Release|Win32 + {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 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug.ActiveCfg = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug.Build.0 = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL.Build.0 = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Release.ActiveCfg = Release|Win32 + {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 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug.ActiveCfg = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug.Build.0 = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL.Build.0 = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Release.ActiveCfg = Release|Win32 + {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 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug.ActiveCfg = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug.Build.0 = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL.Build.0 = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release.ActiveCfg = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release.Build.0 = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug.ActiveCfg = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug.Build.0 = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL.Build.0 = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release.ActiveCfg = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release.Build.0 = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.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 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DebugDLL|Win32 = DebugDLL|Win32 + Release|Win32 = Release|Win32 + ReleaseDLL|Win32 = ReleaseDLL|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug|Win32.ActiveCfg = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug|Win32.Build.0 = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release|Win32.ActiveCfg = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release|Win32.Build.0 = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.ActiveCfg = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.Build.0 = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|Win32.ActiveCfg = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|Win32.Build.0 = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|Win32.ActiveCfg = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|Win32.Build.0 = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|Win32.ActiveCfg = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|Win32.Build.0 = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Debug|Win32.ActiveCfg = Debug|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Debug|Win32.Build.0 = Debug|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Release|Win32.ActiveCfg = Release|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.Release|Win32.Build.0 = Release|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {0BDCE87F-A5FE-49AE-BE6D-A2A3E2BB69CE}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Debug|Win32.ActiveCfg = Debug|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Debug|Win32.Build.0 = Debug|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Release|Win32.ActiveCfg = Release|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.Release|Win32.Build.0 = Release|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {271E59C4-81F9-4231-85D3-E7DDB2E2BC08}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Debug|Win32.ActiveCfg = Debug|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Debug|Win32.Build.0 = Debug|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Release|Win32.ActiveCfg = Release|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.Release|Win32.Build.0 = Release|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {2CDD0F47-E4B8-4C48-AD56-64C0A67EC89B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Debug|Win32.Build.0 = Debug|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Release|Win32.ActiveCfg = Release|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Release|Win32.Build.0 = Release|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Debug|Win32.ActiveCfg = Debug|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Debug|Win32.Build.0 = Debug|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Release|Win32.ActiveCfg = Release|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.Release|Win32.Build.0 = Release|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {F59D0AD2-6948-474B-B506-AD14EC9BE551}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Debug|Win32.ActiveCfg = Debug|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Debug|Win32.Build.0 = Debug|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Release|Win32.ActiveCfg = Release|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.Release|Win32.Build.0 = Release|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {52034F65-28AA-4E3F-A44D-C91F6F0922F8}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Debug|Win32.Build.0 = Debug|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Release|Win32.ActiveCfg = Release|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.Release|Win32.Build.0 = Release|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {C8F41CDA-76AA-4053-A8DE-F80892C1C2FC}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Debug|Win32.ActiveCfg = Debug|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Debug|Win32.Build.0 = Debug|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Release|Win32.ActiveCfg = Release|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.Release|Win32.Build.0 = Release|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {EB7F30DE-DD77-4311-BB66-FFDF972052C7}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug|Win32.ActiveCfg = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Debug|Win32.Build.0 = Debug|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Release|Win32.ActiveCfg = Release|Win32 + {2F4235D0-B5F5-4C59-981D-BA006734B56E}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Debug|Win32.ActiveCfg = Debug|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Debug|Win32.Build.0 = Debug|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Release|Win32.ActiveCfg = Release|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.Release|Win32.Build.0 = Release|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {BBDB5742-0A55-4C2C-973C-E876AAED6ABE}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Debug|Win32.ActiveCfg = Debug|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Debug|Win32.Build.0 = Debug|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Release|Win32.ActiveCfg = Release|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.Release|Win32.Build.0 = Release|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {94A7505B-3A53-40F0-95A2-2ECB1CEC7C57}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Debug|Win32.ActiveCfg = Debug|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Debug|Win32.Build.0 = Debug|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Release|Win32.ActiveCfg = Release|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.Release|Win32.Build.0 = Release|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {5D43ECB3-681D-4732-9395-AB81CD283F6C}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug|Win32.ActiveCfg = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Debug|Win32.Build.0 = Debug|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release|Win32.ActiveCfg = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.Release|Win32.Build.0 = Release|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {D8B36F3A-34BB-4540-A731-EEABF1DC2E05}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Debug|Win32.ActiveCfg = Debug|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Debug|Win32.Build.0 = Debug|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Release|Win32.ActiveCfg = Release|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.Release|Win32.Build.0 = Release|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {36F0C797-F6BD-4F5C-8DB2-651D8502872D}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Debug|Win32.ActiveCfg = Debug|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Debug|Win32.Build.0 = Debug|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Release|Win32.ActiveCfg = Release|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.Release|Win32.Build.0 = Release|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {408EB518-B855-404E-9BDC-B58F60DFA9B2}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|Win32.ActiveCfg = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|Win32.Build.0 = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|Win32.ActiveCfg = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|Win32.Build.0 = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Debug|Win32.ActiveCfg = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Debug|Win32.Build.0 = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Release|Win32.ActiveCfg = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.Release|Win32.Build.0 = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3C9F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Debug|Win32.ActiveCfg = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Debug|Win32.Build.0 = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Release|Win32.ActiveCfg = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.Release|Win32.Build.0 = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CAF}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Debug|Win32.ActiveCfg = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Debug|Win32.Build.0 = Debug|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Release|Win32.ActiveCfg = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.Release|Win32.Build.0 = Release|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {948E8E86-7F47-46B0-95B2-ED24805F3CBF}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Debug|Win32.ActiveCfg = Debug|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Debug|Win32.Build.0 = Debug|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Release|Win32.ActiveCfg = Release|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.Release|Win32.Build.0 = Release|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {156423D3-5FBB-45C6-A7CA-675B32F45C15}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Debug|Win32.ActiveCfg = Debug|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Debug|Win32.Build.0 = Debug|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Release|Win32.ActiveCfg = Release|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.Release|Win32.Build.0 = Release|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {9D2A443C-93D3-4144-B911-D7CA7CD85DE7}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/exiv2-0.25/msvc2003/exiv2/exiv2.vcproj b/vendor/exiv2-0.25/msvc2003/exiv2/exiv2.vcproj new file mode 100644 index 0000000..dcfe599 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exiv2/exiv2.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exiv2json/exiv2json.vcproj b/vendor/exiv2-0.25/msvc2003/exiv2json/exiv2json.vcproj new file mode 100644 index 0000000..a86bb75 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exiv2json/exiv2json.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exiv2lib/exiv2lib.vcproj b/vendor/exiv2-0.25/msvc2003/exiv2lib/exiv2lib.vcproj new file mode 100644 index 0000000..6f90dca --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exiv2lib/exiv2lib.vcproj @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.cpp b/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.cpp new file mode 100644 index 0000000..0efd6b1 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.cpp @@ -0,0 +1,444 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: exivsimple.cpp + Version: $Rev: 3777 $ + Author(s): Brad Schick + Christian Kuster + History: 12-Nov-04, brad: created + */ +// ***************************************************************************** + +#include "stdafx.h" +#include "exivsimple.h" +#include +#include +#include +#include +#include + +struct ImageWrapper +{ + Exiv2::Image::AutoPtr image; +}; + +// Returns NULL (0) handle if failed. +EXIVSIMPLE_API HIMAGE OpenFileImage(const char *file) +{ + assert(file); + + // See if file exists. Sorry for very bad error handling + if (INVALID_FILE_ATTRIBUTES == GetFileAttributes(file)) { + return 0; + } + + ImageWrapper *imgWrap = new ImageWrapper; + try { + imgWrap->image = Exiv2::ImageFactory::open(file); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } + if (imgWrap->image.get() == 0) { + delete imgWrap; + return 0; + } + // Load existing metadata + try { + imgWrap->image->readMetadata(); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } + + return (HIMAGE)imgWrap; +} + +EXIVSIMPLE_API HIMAGE OpenMemImage(const BYTE *data, unsigned int size) +{ + assert(data); + ImageWrapper *imgWrap = new ImageWrapper; + + try { + imgWrap->image = Exiv2::ImageFactory::open(data, size); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } + if (imgWrap->image.get() == 0) { + delete imgWrap; + return 0; + } + // Load existing metadata + try { + imgWrap->image->readMetadata(); + } + catch(const Exiv2::AnyError&) { + delete imgWrap; + return 0; + } + + return (HIMAGE)imgWrap; +} + +EXIVSIMPLE_API void FreeImage(HIMAGE img) +{ + if (img) { + ImageWrapper *imgWrap = (ImageWrapper*)img; + delete imgWrap; + } +} + +// Returns 0 on success +EXIVSIMPLE_API int SaveImage(HIMAGE img) +{ + assert(img); + ImageWrapper *imgWrap = (ImageWrapper*)img; + try { + imgWrap->image->writeMetadata(); + } + catch(const Exiv2::AnyError&) { + return 1; + } + return 0; +} + +// Note that if you have modified the metadata in any way and want the +// size of the image after these modifications, you must call SaveImage +// before calling ImageSize. +// Returns -1 on failure, otherwise the image size +EXIVSIMPLE_API int ImageSize(HIMAGE img) +{ + assert(img); + ImageWrapper *imgWrap = (ImageWrapper*)img; + return imgWrap->image->io().size(); +} + +// Note that if you have modified the metadata in any way and want the +// image data after these modifications, you must call SaveImage before +// calling ImageData. +// Returns number of bytes read, 0 if failure +EXIVSIMPLE_API int ImageData(HIMAGE img, BYTE *buffer, unsigned int size) +{ + assert(img); + int result = 0; + ImageWrapper *imgWrap = (ImageWrapper*)img; + Exiv2::BasicIo &io = imgWrap->image->io(); + if(io.open() == 0) { + result = imgWrap->image->io().read(buffer, size); + io.close(); + } + return result; +} + +EXIVSIMPLE_API void SetThumbnail(HIMAGE img, const BYTE *buffer, unsigned int size) +{ + ImageWrapper *imgWrap = (ImageWrapper*)img; + Exiv2::ExifData& exifData = imgWrap->image->exifData(); + Exiv2::ExifThumb exifThumb(exifData); + exifThumb.setJpegThumbnail(buffer, size); +} + +EXIVSIMPLE_API unsigned int GetThumbnail(HIMAGE img, BYTE *buffer, unsigned int size) +{ + ImageWrapper *imgWrap = (ImageWrapper*)img; + Exiv2::ExifData& exifData = imgWrap->image->exifData(); + Exiv2::ExifThumb exifThumb(exifData); + Exiv2::DataBuf buf = exifThumb.copy(); + if (buf.size_ == 0) { + return 0; + } + if (buf.size_ > (long)size) { + return unsigned int(-1); + } + memcpy(buffer, buf.pData_, buf.size_); + return buf.size_; +} + +// This is weird because iptc and exif have not been "unified". Once +// they are unified, this DLL should not have to know +// about either... just generic images, keys, values, etc. +// +// buffsize should be the total size of *buff (including space for null) +// Note that if there is more than one entry (for some IPTC datasets) this +// returns the first one found. Currently no way to get the others. +// Returns 0 on success +EXIVSIMPLE_API int ReadMeta(HIMAGE img, const char *key, char *buff, int buffsize) +{ + assert(img && key && buff); + if (img==0 || key==0 || buff==0 || buffsize==0) return -1; + ImageWrapper *imgWrap = (ImageWrapper*)img; + int rc = 2; + + Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); + Exiv2::ExifData &exifData = imgWrap->image->exifData(); + + try { + // First try iptc + Exiv2::IptcKey iptcKey(key); + rc = 1; + Exiv2::IptcData::const_iterator iter = iptcData.findKey(iptcKey); + if (iter != iptcData.end()) { + strncpy(buff, iter->value().toString().c_str(), buffsize); + buff[buffsize-1] = 0; + rc = 0; + } + } + catch(const Exiv2::AnyError&) { + } + + if (rc) { + // No iptc value, so try exif + try { + Exiv2::ExifKey exifKey(key); + rc = 1; + Exiv2::ExifData::const_iterator iter = exifData.findKey(exifKey); + if (iter != exifData.end()) { + strncpy(buff, iter->value().toString().c_str(), buffsize); + buff[buffsize-1] = 0; + rc = 0; + } + } + catch(const Exiv2::AnyError&) { + } + } + + return rc; +} + +// Overwrites existing value if found, otherwise creates a new one. +// Passing invalidTypeId causes the type to be guessed. +// Guessing types is accurate for IPTC, but not for EXIF. +// Returns 0 on success +EXIVSIMPLE_API int ModifyMeta(HIMAGE img, const char *key, const char *val, DllTypeId type) +{ + assert(img && key && val); + if (img==0 || key==0 || val==0) return -1; + ImageWrapper *imgWrap = (ImageWrapper*)img; + int rc = 2; + + Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); + Exiv2::ExifData &exifData = imgWrap->image->exifData(); + + std::string data(val); + { + size_t dataLen = data.length(); + // if data starts and ends with quotes, remove them + if (dataLen > 1 && *(data.begin()) == '\"' && *(data.rbegin()) == '\"') { + data = data.substr(1, dataLen-2); + } + } + + try { + Exiv2::IptcKey iptcKey(key); + rc = 1; + + if (type == invalidTypeId) + type = (DllTypeId)Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); + Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); + value->read(data); + + Exiv2::IptcData::iterator iter = iptcData.findKey(iptcKey); + if (iter != iptcData.end()) { + iter->setValue(value.get()); + rc = 0; + } + else { + rc = iptcData.add(iptcKey, value.get()); + } + } + catch(const Exiv2::AnyError&) { + } + + if (rc) { + // Failed with iptc, so try exif + try { + Exiv2::ExifKey exifKey(key); + rc = 1; + + // No way to get value type for exif... string is the most common + if (type == invalidTypeId) + type = asciiString; + Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); + value->read(data); + + Exiv2::ExifData::iterator iter = exifData.findKey(exifKey); + if (iter != exifData.end()) { + iter->setValue(value.get()); + rc = 0; + } + else { + exifData.add(exifKey, value.get()); + rc = 0; + } + } + catch(const Exiv2::AnyError&) { + } + } + + return rc; +} + +// Always creates a new metadata entry. +// Passing invalidTypeId causes the type to be guessed. +// Guessing types is accurate for IPTC, but not for EXIF. +// Returns 0 on success +EXIVSIMPLE_API int AddMeta(HIMAGE img, const char *key, const char *val, DllTypeId type) +{ + assert(img && key && val); + if (img==0 || key==0 || val==0) return -1; + ImageWrapper *imgWrap = (ImageWrapper*)img; + int rc = 2; + + Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); + Exiv2::ExifData &exifData = imgWrap->image->exifData(); + + std::string data(val); + { + size_t dataLen = data.length(); + // if data starts and ends with quotes, remove them + if (dataLen > 1 && *(data.begin()) == '\"' && *(data.rbegin()) == '\"') { + data = data.substr(1, dataLen-2); + } + } + + try { + Exiv2::IptcKey iptcKey(key); + rc = 1; + + if (type == invalidTypeId) + type = (DllTypeId)Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); + Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); + value->read(data); + + rc = iptcData.add(iptcKey, value.get()); + } + catch(const Exiv2::AnyError&) { + } + + if (rc) { + // Failed with iptc, so try exif + try { + Exiv2::ExifKey exifKey(key); + rc = 1; + + // No way to get value type for exif... string is the most common + if (type == invalidTypeId) + type = asciiString; + Exiv2::Value::AutoPtr value = Exiv2::Value::create((Exiv2::TypeId)type); + value->read(data); + + exifData.add(exifKey, value.get()); + rc = 0; + } + catch(const Exiv2::AnyError&) { + } + } + + return rc; +} + +// If multiple entries exist, this only remove the first one +// found. Call multiple times to remove many. +// Returns 0 on success +EXIVSIMPLE_API int RemoveMeta(HIMAGE img, const char *key) +{ + assert(img && key); + if (img==0 || key==0) return -1; + ImageWrapper *imgWrap = (ImageWrapper*)img; + int rc = 2; + + Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); + Exiv2::ExifData &exifData = imgWrap->image->exifData(); + + try { + Exiv2::IptcKey iptcKey(key); + rc = 1; + Exiv2::IptcData::iterator iter = iptcData.findKey(iptcKey); + if (iter != iptcData.end()) { + iptcData.erase(iter); + rc = 0; + } + } + catch(const Exiv2::AnyError&) { + } + + if (rc) { + // No iptc value, so try exif + try { + Exiv2::ExifKey exifKey(key); + rc = 1; + Exiv2::ExifData::iterator iter = exifData.findKey(exifKey); + if (iter != exifData.end()) { + exifData.erase(iter); + rc = 0; + } + } + catch(const Exiv2::AnyError&) { + } + } + + return rc; +} + +EXIVSIMPLE_API int EnumMeta(HIMAGE img, METAENUMPROC proc, void *user) +{ + assert(img && proc); + if (img==0 || proc==0) return -1; + ImageWrapper *imgWrap = (ImageWrapper*)img; + bool more = true; + + Exiv2::IptcData &iptcData = imgWrap->image->iptcData(); + Exiv2::ExifData &exifData = imgWrap->image->exifData(); + + Exiv2::IptcData::const_iterator iend = iptcData.end(); + for (Exiv2::IptcData::const_iterator i = iptcData.begin(); + i != iend && more; ++i) { + more = proc(i->key().c_str(), i->value().toString().c_str(), user); + } + + Exiv2::ExifData::const_iterator eend = exifData.end(); + for (Exiv2::ExifData::const_iterator e = exifData.begin(); + e != eend && more; ++e) { + more = proc(e->key().c_str(), e->value().toString().c_str(), user); + } + + return 0; +} + + +BOOL APIENTRY DllMain( HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} diff --git a/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.h b/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.h new file mode 100644 index 0000000..938137f --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.h @@ -0,0 +1,98 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file exivsimple.h + @brief Limited metadata dll for win32 + @version $Rev: 3777 $ + @author Brad Schick (brad) + brad@robotbattle.com + Christian Kuster (kusti) + christian@kusti.ch + @date 12-Nov-04, brad: created + */ +#ifndef EXIVSIMPLE_H_ +#define EXIVSIMPLE_H_ + +// ***************************************************************************** + + +#ifdef EXIVSIMPLE_EXPORTS +#define EXIVSIMPLE_API __declspec(dllexport) +#else +#define EXIVSIMPLE_API __declspec(dllimport) +#endif + +DECLARE_HANDLE (HIMAGE); + +#ifdef __cplusplus +extern "C" +{ +#endif + +// These types should match those in types.hpp. Copied here so that +// exiv2 headers are not needed. +// For all of the functions +// that take a type, passing invalidTypeId causes the type to be guessed. +// Guessing types is accurate for IPTC but not for EXIF. +enum DllTypeId { invalidTypeId, unsignedByte, asciiString, unsignedShort, + unsignedLong, unsignedRational, invalid6, undefined, + signedShort, signedLong, signedRational, + string, isoDate, isoTime, + lastTypeId }; + +typedef bool (CALLBACK* METAENUMPROC)(const char *key, const char *value, void *user); + +EXIVSIMPLE_API HIMAGE OpenFileImage(const char *file); +EXIVSIMPLE_API HIMAGE OpenMemImage(const BYTE *data, unsigned int size); +EXIVSIMPLE_API void FreeImage(HIMAGE img); +EXIVSIMPLE_API int SaveImage(HIMAGE img); +EXIVSIMPLE_API int ImageSize(HIMAGE img); +EXIVSIMPLE_API int ImageData(HIMAGE img, BYTE *buffer, unsigned int size); +EXIVSIMPLE_API int ReadMeta(HIMAGE img, const char *key, char *buff, int buffsize); +EXIVSIMPLE_API int EnumMeta(HIMAGE img, METAENUMPROC proc, void *user); +EXIVSIMPLE_API int AddMeta(HIMAGE img, const char *key, const char *val, DllTypeId type); +EXIVSIMPLE_API int ModifyMeta(HIMAGE img, const char *key, const char *val, DllTypeId type); +EXIVSIMPLE_API int RemoveMeta(HIMAGE img, const char *key); +/*! + @brief Set the Thumbnail + + @param img Handle to the image + @param buffer Pointer to the Thumbnail data (JPEG) + @param size Size of the thumbnail in bytes +*/ +EXIVSIMPLE_API void SetThumbnail(HIMAGE img, const BYTE *buffer, unsigned int size); +/*! + @brief Get the Thumbnail + + @param img Handle to the image + @param buffer Pointer where the thumbnaildata is written to (large enough!) + @param size Size of buffer + + @return size of the thumbnail, 0 if failed to read the thumbnail, + (unsigned int)-1 if buffer is too small. +*/ +EXIVSIMPLE_API unsigned int GetThumbnail(HIMAGE img, BYTE *buffer, unsigned int size); + +#ifdef __cplusplus +} +#endif + +#endif // #ifndef EXIVSIMPLE_H_ diff --git a/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.vcproj b/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.vcproj new file mode 100644 index 0000000..ec87fa4 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exivsimple/exivsimple.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.cpp b/vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.cpp new file mode 100644 index 0000000..ddd590b --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.cpp @@ -0,0 +1,29 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: stdafx.cpp + Version: $Rev: 3777 $ + Author(s): Brad Schick + History: 12-Nov-04, brad: created + */ +// ***************************************************************************** + +#include "stdafx.h" diff --git a/vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.h b/vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.h new file mode 100644 index 0000000..912eab4 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/exivsimple/stdafx.h @@ -0,0 +1,34 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file stdafx.h + @brief Precompiled header file support + @version $Rev: 3777 $ + @author Brad Schick (brad) + brad@robotbattle.com + @date 12-Nov-04, brad: created + */ +// ***************************************************************************** + +#pragma once + +#define WIN32_LEAN_AND_MEAN +#include diff --git a/vendor/exiv2-0.25/msvc2003/geotag/geotag.vcproj b/vendor/exiv2-0.25/msvc2003/geotag/geotag.vcproj new file mode 100644 index 0000000..691e04b --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/geotag/geotag.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/httptest/httptest.vcproj b/vendor/exiv2-0.25/msvc2003/httptest/httptest.vcproj new file mode 100644 index 0000000..28b51c5 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/httptest/httptest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/iotest/iotest.vcproj b/vendor/exiv2-0.25/msvc2003/iotest/iotest.vcproj new file mode 100644 index 0000000..e0ae0bb --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/iotest/iotest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/iptceasy/iptceasy.vcproj b/vendor/exiv2-0.25/msvc2003/iptceasy/iptceasy.vcproj new file mode 100644 index 0000000..84693ba --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/iptceasy/iptceasy.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/iptcprint/iptcprint.vcproj b/vendor/exiv2-0.25/msvc2003/iptcprint/iptcprint.vcproj new file mode 100644 index 0000000..a31a97d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/iptcprint/iptcprint.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/iptctest/iptctest.vcproj b/vendor/exiv2-0.25/msvc2003/iptctest/iptctest.vcproj new file mode 100644 index 0000000..6808345 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/iptctest/iptctest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/key-test/key-test.vcproj b/vendor/exiv2-0.25/msvc2003/key-test/key-test.vcproj new file mode 100644 index 0000000..da4b0be --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/key-test/key-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/largeiptc-test/largeiptc-test.vcproj b/vendor/exiv2-0.25/msvc2003/largeiptc-test/largeiptc-test.vcproj new file mode 100644 index 0000000..d6e5c15 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/largeiptc-test/largeiptc-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/libcharset1.dll b/vendor/exiv2-0.25/msvc2003/libcharset1.dll new file mode 100755 index 0000000000000000000000000000000000000000..aec4d2319a712f35421506a16b03a9cdf66f4b61 GIT binary patch literal 11776 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

;c<8!K8N2Ca0LJ3TQTOeXf2N$whVz0Q+XhHSD6e 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

-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%0D^VB{Or~Bd*3ns+zBBAy8 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 z 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¨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 z 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 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2003/libintl3.dll b/vendor/exiv2-0.25/msvc2003/libintl3.dll new file mode 100755 index 0000000000000000000000000000000000000000..ec11e6b19911c2714181f57f8c2f05bee40958b0 GIT binary patch literal 103424 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

`vu%HaL>c7hkFg~ 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 \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/mmap-test/mmap-test.vcproj b/vendor/exiv2-0.25/msvc2003/mmap-test/mmap-test.vcproj new file mode 100644 index 0000000..8fee61b --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/mmap-test/mmap-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/organize/organize.vcproj b/vendor/exiv2-0.25/msvc2003/organize/organize.vcproj new file mode 100644 index 0000000..0290034 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/organize/organize.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/path-test/path-test.vcproj b/vendor/exiv2-0.25/msvc2003/path-test/path-test.vcproj new file mode 100644 index 0000000..ac0549f --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/path-test/path-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/prevtest/prevtest.vcproj b/vendor/exiv2-0.25/msvc2003/prevtest/prevtest.vcproj new file mode 100644 index 0000000..ea42ce1 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/prevtest/prevtest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/remotetest/remotetest.vcproj b/vendor/exiv2-0.25/msvc2003/remotetest/remotetest.vcproj new file mode 100644 index 0000000..85e899a --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/remotetest/remotetest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/stringto-test/stringto-test.vcproj b/vendor/exiv2-0.25/msvc2003/stringto-test/stringto-test.vcproj new file mode 100644 index 0000000..e046e10 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/stringto-test/stringto-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/taglist/taglist.vcproj b/vendor/exiv2-0.25/msvc2003/taglist/taglist.vcproj new file mode 100644 index 0000000..4640b48 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/taglist/taglist.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/test.jpg b/vendor/exiv2-0.25/msvc2003/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa0e7bbf7ea8504fd3ddb3931b0d9ee350e760d1 GIT binary patch literal 20599 zcmeFZ1yoke_b+}P9$H#Dq&uXgL%O@WyBlc)6p<7}I;Bf#M3C+l5D;mkq`U3`ec$){ zy}w)k-}|7jax1Hk@i+Xw)t@?s{APL9C+FPXBFmxZgEwUaxU8W)+28psAz|KYta z*;!e6_*i-QSh>mAIQcj@`PexCfGi~CFAZQsLel@n(l2QL^r{R1u>gPoN`hr&XJ?It z{-qg=axCoM*gOvMn+E~|1>#`-mg5}{0g!)d0TUGe5B)_v?BDd*c(}j$lj9No^b6W3 z9_bIp05S64JX!I6cYPr#0su^5eE1!PAOgUHldQk=WMgH`g8XB(ESTRInG683puaIf zGKk^+vL-5S4%%PxQEqb3|H7#7IT(NBfTNOw_Ycnf-52C;So8ks>kj|v3xq)4pT6$A zB@gy*nP_?Nf8^XT{Z4mIbp%2>FeCrBM(V#s19^XY6#yXxF&UVH{*+*GU+4b&T8$ID z{0R{Kp@RMiJ@|vML3{&hcqfSk9Ap}BOz$x0XRsk4`U^*blsilT(&Ir7zw>hf5Kn^k zzr&!P!|s94z;FLVm#GAh?&)Lz00$4C-qYWJm#o3w)*YcU>gKa0RPTT;9meC z0F->!*ZuPX5dOg+0U-VtOmdGw-#`oi9{rXHfq<%z-qR&OdIqTNotzQSTj&7FdmfMh zxd))Sr-L4ZJOWVPcZvpjkUccFX@i{zn1jx z?Qy5iU4p&61!cnB%l%D32m6MQft0}8+goBX7;V5Da0gm{SAxHHJ%Jge73H1=wg&=l z1HoS~!62#vYe3mOzWWisJp{7A871i6Gk)tR@^|fT0D+u>AP7SFhko(z^)d=leE-#) zLME#$Aq4=EHm(j{CaxA_nij5ZHcpOYY%Hv7fU1+JjU$*22Kzyh3U+MRK{dENnG6=!h2I~D!zL$RrwzL0- z?XUX3DR)){FaAB>-W~z}b-ruyoAz&d{4MCe1Mm^;AC1OVulzw^E9JNe+810crWs&|9s|4VlkAOmfK0?sYJ|NKXrMBdvD z7Mz>^Hz!Eey#g4ZCg98t69ifK7ljb-JoEph|IHTo?IUU6TKPNOt-#=__kT`8`%AOm zDj9=bj|4!F$q5>f6hv%IpEIbHxDQu26Dd$f+L1n3wQBY8cAL3x(l9NzUkQ0-UQqglV zQPHx|J|blnWM<=j!pFx)!5}Oy#PgKn2`@JU2?+@W83h{!1sfe185y0B5E+?}P>Jv^ zDgCdc+g1P*5%302BM@=`1``6sgxq#OazIVtAouBy^5859g@uDhKtw`*02=Lg9r*jZ z`d=!+vnB)zg@J{_!NJ0UV*KyUVX&BRSmbP?@DEi?5GY)**@NS<5hK-YAf%?DrK4xy z?c*EzJS;ro#mmU}gg1#vZ2$mDRQNpBtO|2Zu+;C#PrU7nq>RFtD&tScE&3AuwKdH;V}iN6rS1C8~m8 z;_{G!Js1)DX7fYv53{h_n?bJ;2r)Y_p#c^ZAxehMBR1$raA9`i|P6 zt&G;Gs`r6diOGE=d71D7Qv`Ha+EM~^Pu{GA{Xlc-A_I>U27VyTfoJwCTK=+ zblYZAab#r=-ep5m`e(JbVqB47N5i|k7m^&UWW2(`J;jKZW|7{=l>&*~8>;NHrrx4r ziNeVzWvE2z3DR%4+bM#p-#aUfy-A$vu@h}Bi%&8=kO=*754Cm(1fYADK^UA=FhE9%ttdrGz{v4F2{t zVSKXDrf*aw&?joL?h27y#kN?_DH(p7mDv60;^?G!N>fVtW#+S&@H$3b-<5r64{@}r z6du|LJxc9pjO;B6X09m)zCa$?2=Xq+{n*1P@vv+(m$4z1gO%mMEL8Rxk|t5$aoQBG zHhex{)>t!b@GhJqtQDb!Bupb?evk!oM@UA0PlShdF7Tq{DSTJLEFOn=fy?D=)lDGb zmwkiIUI~qOk!aVBDBR_O_jJb5RyMG1Q#1LJc24u+9ZyvG*0P(hNA$pQFC9ytfHd`7Z!y72p6mOxDqV734*Juc=L_CLDl6T)AyrUo?fr3NL-~4zDm@E zX@eE1PyUpe`caFigOZ%w*Ti!3A53{H8fd#_nUj@F6}z9f3VTfo*`(8~RtGAHWl|LOB?^b`qF0pZP*v7^Ela+9>N6U5$et0Xb}>%%j9@#tr+i2Zh4u2=(M{lM zz|~7vPvWrstzl_qM@ximu{Qo5$8qUOq!{U$Cl>EY1$=eqm$x$YuhQq`-~=y-)eB6T z6)pqOgJ#Y!m! z`bK*%)g&WMbDF~_^1z4Jz-oPp)oU|1jl^)I4kpv+*)4U@os{r__9t0S>X!?D$~)mg zqi@>2NE{r`9-qCA=C_DtFBF<|$#bEJ6eaiA%fLRA^wP$7F*)0(EFgjQ1 z=^IZWi_R~#DNoH428N`Sm0Z!Ojs^W09e>EwtJg*uw){#=KQ%|NZcl@(s`~E%|9tQ$Mp`ob50gKh5w%rPGF_ly+_)>E@XLXQajJFLV3R z$r}gjSIY+}M1{Z1qBUk@>`|Qg0xyc;_N-4iT(cvLC1vs_+_z#rNamhW_n-}S&HGl=O=Tpus}?jn#9MhV819@p zVB>EtSw+(uYQ6~4)uPI1xegqvsebLqEJ=y+oun;P2+k_)GVsj{ zyF{uZVLS644XT8UxUqH-jaA*W1%_`{#>;f-d|X872|QKOGAq_K zDF&QdEi`8jK5W~&4Dyzl)O~0`C8`otv zi9zNYzpbWDv9&uazM@ioua{$y*t9@Qcd{_WQ93PEyzx+n8zogvDx+9RX)?P>uY#k> zC_8LX?nFGnBPCR+Y_{*w3-lS49IYNxirovSjrJLtaTm$@bF( z0RO68uw__x)phc_LN-wgmEp&5Cp^Ql{509p4w&^E8jf=9MrimkcZ}-(J!@&o-L=BHg2IQNSJxq?sebsLPOpgceIJL(n72;f)Azf1E zgDw+i*It4G0<-Tke(^ny>)OPt+kHRVs=0*!+{7=J*TR(#gAX~T9eAl<)ji-A9eTA? z9di2CK)OSwkblFYYIIIG(NX_ll5w%13=a_C(Y%x{)J1T#BfK5gdm@d;^j-Smcx!ms zK*<1|4efJf^#lv9cDd}Q){iUZjyH)3{_kI*AkoB7S*;2dy;u@ZugYI>B5-0YvPgOY zaPwoTd|4)nvPbEFX@HY^#P6{#xRsLQH&{kEU2^%^N@H(W)xfFkNu&FjO=-elSW6@S zE%5ltH~)|uGM&UjV&{&M3~cnRSS6&Hru4jLZ9fZtU|DiZ6|%{d%<0AcQdb`?ibfiG zRuZ-^kw5X!Cr+|!UUHTw+U*Q2^R>@tiigFc*u>}_iF!kZ6D|9r*D!KMVV}{%{Us;* ziwt5|CD9o(x~gg(KFl)7{{Pg8{r%cm({@AwUE1}xQ`dh%SBiEIkVZ=omc z$wv`C5*Z$=6%buIu9~7Hq{$hdG0=PCp~>%cfPj#_aXw`rh|~1Q!*lj?pY-k(WTC1+ zD6@zlwNITXxau&T?;^S-U->K{*)hpls;3(*qM*z~M_2clud?sxdz}HAm*$j14I|yo zjsqeCD?wvSSG7AoQ6RO$Vj`hpS!l0Ni|h|{Sp`|U`PckzLQ}j|9`P>Eo4+Yp%y-qi zF3~?LQKLhGyYr?4zMo z*4anR@oi4Qx0_U+$~b~{i7j8NZEi^V?VRjuKg#wE5=u%+3z)}+c<+pJ=1ks5Wlhz; z)%&sHtSVSaXg@YcU>%FvhlaG`Vu1TGxU)lpHy#S- z8J27_Hq52$Lnq6!6IYpaf}!-}r;NmySNsTS+qMQy+NsJqWxF}nzf`;&%x84m+JlD# zyKNg|*9={zqqvN$m;(qlDBr&8K>Q`SI<5F)_n9VKZBbyh!8s#iF{58tW5M`X2BBi= znh|Sv7e}?>q+sY5-S7G9VNS~W2+d4X4%;%OA_N5Ml_cjEks0$(3)UQpm1t_ye9Xtr z46BZ;P^bqJp?ZO+LfK=+~2d^wt%BHr+V{7JL8+AuVxBDNblCmEZDMImf0J`wHo0XaR=*#ez*5hg8^nErycHT68hnE@>>bisJtfEfUQ)CpN}DAh zqGDZwCgtNVUv{l22gFaPi>s5L)SL?XP)44%E&Z$`E580JtctLha%xkKOUm|=lp$uz zFbr`Tx;RgY!7b29=i%MmA=> z76QgM!~r->npS*Xd^kyCJ8>&@7(Kr1b-kJId9Jpebn4R8*F9{5xP0mM9gm}HLe`+> zPW@VjJdc;LCENI-7qkCiELwm*miKia@=@W6yg6|;0X}a}KC=nlR|9s+yp^VJIityp zjBqG(SRAu86ePn<&_~bLn=P$v9OW2Qhj8-Wc~%&>qj>Mw1zCmJehNjO#J_ zhEAS6C)+#Va6Nf+W%C)$r+ha$Htr!uj}BY6V<6gbR9;T%Gbv4j@@vJ4%g00YDL-Vf z=9}vu*%u-{b?Z^uU2c|uPjq{>=AW*{#{ErBh})}I5aFKvCDH~2Vc6EJ?+Vl4UN~q`Fw%EV8o}#ZVqQ$2aWYgy= zIhao`8$Khc_e{(A@pL%q7*@~D^J8j%$`3dKCCUjc@-puPwF%Diaz_h}2Oh9N^-wC5 zo9exd+P9t_lW(c?45Eh@=3HjZM85Z^D-{~DGbZ#(5MKwrIxH{InZR*m+4&wNKguZC zYJNPMIS|v=Twig95dLj>=6LD5&6GkAtQ%txpI>WuckR)6P0qaWl7Nu|H;?2d_X zqKVjF1crIdhzDA0)>g4s-5GqygxcS@>ju7UiQubI^l(dOh47&%Y$~iOFzi;pA>7fPVjg@L4L~ry)#H*04g&S9W_FYZH~GmnlafI(E@i^T8?| zaZ{Z{xt7AmTi|)ug3j!0Y9PA!Y&;b;>Y>#;lE!nNjqfdJJRdqXdw*z)&MRGZCAu3r z9q_yFrN0Qn$PqWgkDBSIJU99k`viSpN^nWV|Gn-fFR8&89=RZ)vs04Psj5x>;2$wr z1!x}oVh0@g{QO=5A2n^vnpVGMyCwE+?C9)ozAo6B-0#CFEmv=6coZSjl5Y_)Ib7C) z?WviN$ap$;@)%|VbJiwBHcLpM>{EvFsV7zDL_m#N=V_+peoZl3TR%a}{z}XQ@`=_@ zANzwCj6VB<=Fl6Rp3-c8A>;OQttSs1>k{4iE0tF03!s5moUup>8Em)>(hlu7dFj zDdV-!*ws+T$qqB~jRZ4&k4ntMrJ8_HIWtQ+3&Ffy7iL>`Oq`NaiPg<{xmHP4-P5nF z95o&6 zz85!Ko4%46wYbKx$h#q}C=MiVo~JiG<)?RuAxCQsnJ4G?)~sgmt7biw$R5&es1-MQJzlgJ}M#LKF4;_lX2 znu#kjHxEi~WuGXisv%)4sZ}G<$cs0nWux}ap_=F~Sd&)brN)XNt0`-^w}7ujVmEX2 z@$gxw;xhxDxhyI;)VT9deT=Z;3IDuz9@A@cBX&ur3X&Kf$%3r2v z=S30%iEGWKXqu~LAjcDBBKLRG9?FPUTgWhk)KojXz@e<1vK|Tbuj$1ah1G~}BO%he z30u3$vj#c(EZWN+))d>7`2*r5z@{`TVN32@Vx-6?X)T+b(CM+FJfp0I^08k-xzaD0 zj#9Uhhb)X(=APuF#Um``9u@CbQCTXg`?bifMt4?;@%P8_3an3zue!0|Twa=%As#V) z8`H@i%e_3c9aD%|c<#SD5SzQHWP2Dx68>rLq^$V!Q!L|Jl@YRq%oX8>MvuY$J=t5G z#~nMDk4L<=SCOw{^pdY{0d^`Rf%B@f%WtSMPA@5X|I)}Uzj7N4$_~|=~ zY_|Y*6H$!H)cIu8$)0VBOxP48wrlz7hV-?(&5Wv(&CCyqiaK|n&sEkJ{2jEg6pUoX z98CxnD-tsKwkOeBq$%okP}c>*Np?A@T+=k4RF|*lUnAS!>&FMEe$s@`d`V@{YP<|w z23~CD?^AMBeKUZ~7#p)*jCrKlo^-SOC{cxwGuf{a<)ZEu(5?P(NNe=?)5u|D(8w#( z2O+J8aX+vpAE{rC;n%kOu%4}02qa9(57@Wp%&Vx58~>Tm{ph6tOJ|B*hnL!@h<>1~ zj;9m{86~i@HQ$g^R$!)^y76&3L<{AcXm<_A02RGS_qt}(@a?zTCG=?-F)<@$RV7Io zd5QZlK=d9HXJ`AnS6mK`?yjm*PszadC1eQGzyt6t6bkSdz%?;*a~4%rmjCN@&VMXV zChy-)0prYfvNRAUpH~3vK7Jw+H3A2dV*io<-zaFVV29w_p1XIE*jB%>$Q?HQjn(h4 zm%Fn&$YXtn&8$tp*b0arh?!i~RYCcXLJ*@_{l@io*z`Bfbl;< zgWy{`;(utmp#V@C2&%{Q4~+)Y1$zhpK7Id(cBp!9D+unen zxUlqaw(uQ@{79V-3{Vl#$}x)z=YlY$jr^YN27NY$b0kVIyKIY$ssPazYE9mxPsvmqnDlsCZcvng1#+D)x0~v}=rItX-UAyjz0j z8?Qw7B*(Wl$wu$gQY2G((rD8krr%_2WR7PwWM}5Q$aTwe&Ubq6Sm0P_S7cReTB28~ zRwiFAQ6W_Mq>A+e{YR>5(i-AgqB_EQ%=)v2;l`{c_fJyI1kKx@TUy?<+J6ymBWXKt zpX{jVeADIGt_>hT{v1CSt?u(T+vu%SiM~9TYvl0Y=dRvY_omq)wcQ$@y_b6 zw%zQ#pnZb_-b38Oy`%2qj1%`$nKP2JU*~NXNtf1F0@qmA>o=cnt?uINAjFU#Fy+t+ z*co_ogx5%j$Z04%sO#u&Fh#L;u#<4P@cIZ83BM3iljuK+Agv(#PJu@Gl**Yphh~Zn zguvs&}o3py*h>w4SzM+R3$ zP|yn=nm#bSF#BmfY0+s}YgJ(V*5;+Hznz=Cjf1hHzLSo#ri-Slo}00|8R!S5UMk+A zKJ31<&q)37{jmZt0?~s|gONkvLLs47&yT{k!hb}Jyl8n@8kzDcD=PDKPIPumR%~iq zeEh3~fH%&GCP~U~g_0TGJ$!eavYtAa_Axy@BRunYR!DYGPGIh{Jgm4fSzx?jeRNoegnpX;zNwX4~H*CmPdQW%E#j;Jicm8a!+AT z?M@GTYn}Np`+hFzd-%Nj52FR?MYbjUrOV~{mFCs-wP))(Kc8%1Z|rUkZk2Cm@1*@o z+Kt`|-}gUoJv2YkJeE4)KBYRtIJ-IDzL>u3ysEj*zj<@3dpG_-D8w7a7n%e66J89V z9!Us!7{vnh7X2M2BUU4}FitrhIldP`8{sW6ABpv&B+_28D+*RhL#jyXI+`UqWO`Nx z1x9NoKjv2~NslvFv)QuPGdR*X)44Lav!0~$yyK1Md%^!qz+O;CNJ5xd1&y7*;%#aJa@WeXK0RX#N;bqw`ujcv{ET7%l3bt-i; z^g{Iw40sH&41XC78kd>Gn7W#2n~PX5TH;$FSY25EvRSpAx0|*fa~N>!aB6fecgc6n za7%T6=aK4};g#cE;8WyV49*KB{)GW~;JgqM92(*hYWiF+OeI_bYLDf?H> zcy41}R{qQPZUu&gGDVMz(TZ0~YD-_2nUr%^pj50>ey&RU;QLX(TC|3?7QOboZoPh@ zp}n!bsrXZLv(0DG7NVAu*6}Y@ZE@|+9V(q{U07ZF-6K6EyLc( zy{`UKY~#r$=a$g6)=u!RPkZS5iHA>*=}zq~NUvS)#{c))cef_Ma|1xG6#!_n0f2lQ z0HmV<0F68t$V?0X%BTRK&I`b>U;{8H0{~=T01VlAse z;2jvR`vsT+b|A3e{K5rMg4jYLAbF5B$Px@J3@wa2j5|y^%n%d?$_sUYmOxiwNns6O zQ(V0k+YrzZj1fK{!Xp|Y)+0Sc@<5tE=0J`^-hZI+paF#(B?{#n z)duxDnkrg9x-@z>h8)HirXJ=xme)hXhnd)%*!?)#IBU4xcqn+;_`LXE30w)W2y2LR zh;E4sNR&vDEkyg8D}JyJGc20H6C$Z7CusbRQ@Z0ZNYh=ap6IcUeWfaJz@jmQxZQV zucUEhm}FVxc;!VEloXAWJeA{B%2mhJE;VR1HML%8ck9CHiRr&G_-aIKY-$p1+G@6M zL1k%R_11dQmcY)yKF49xiQU=XrPmF|-PEJP^U_<&=dJIpUvvO-V0W-}DDv~NaK(t7 zm#<$jM0G|R#azb4CeXk6l%()>|6OIOXF6}jan{Ei`#i?{rGkti{Sva$jq>`+S05~^ zWomir2^*H0N}2;&RK75`<8(s0_Iq~v_6Kf;F-952#lBijMSiQA&HJA8b~rD%&+rKF zs_+@`I|#xEZxA*R#SpU)Z;(uoI*@6RUn1{-W8aKIkMa%`88ry?49yK~AKeZ893uo1 z4Kp2!1*`3$-oqp8SR4wRkGN8}^LU>4nD~_hDg?)bsYK#LyTqv^vf#*7;DB%}aSm{Ga5q1x z;VI?K=1b;}76=ve6><}H7I7AJdg?9~ARZ}^E?F%#BE2hfC$pg^q1q9h5$%qKH1M6_$3Fh1$G7-gSep~SYg%E_lG zC23|EsF@Af=DBEjweJlI;fpFtjLNXedn=!RkgP_nS*R;-P;I>al>1q`73oW7`^!#+ zZoHnYzV?BvU>J;#lLN;nw1r z;G^NUfX_QU;Sx~>u^tH#$?T(aQX?`7vY+JT6yB8bRFA2#sjq03Y5V9t(5EtlFxoPy zFh5}-c?|P-oppe%l0AtdfYXLchg<%M2oDD@B_9qy9RIPvs^FB+fN-Zst7y~HX0b2g z{StGMyVA%qRI*%h3i9R(!HPLbeaa`QbZSQGsTx1DXtX_b`t->30}U38gpJ>tteLT! z2U|>7F1${-KC8A}BTvB6?;-7j^luDK40n$_<{{Kx5_8x!9!~!LwIGQRdf#qE^?@woU<-2p>J$Ca{llTi;+DOX$ zh0RUG<^ICH)?$i(VM|v@)xWTw}1M2`ZvFYo5bHdzSin@ z-w53ExO%8+{DtkDSa@EF$_UCdPUyI@*?Q@qU)}uN<{?0?UJ6y-mw|pJ(>0 z`pbvRmiX+vj5{F^A`%iBavC{$dbtc69h;2*&*^tmXcEu^g;4w*6$*aN^goIUz3l*M z{x1yv1l1<}9|pAE-Piy15uy#)aY1o?xg?V4VzBcoACSz>JnK3yLU@ zR@xAs<@t1S0*D45YH2&~DQ8IMvU3xWX$%vJvr9(qg(k`B=%wNwau68jXLJh~D4~SY zBg=ApfdmhqZzx14UFynkhQ*V$=UguiIs3N|0@3tDzUTI?(p?;r)ed871c!NTIG0)G z(N{N5!=f48UbzFWKV@j|?`{pte&}y}oQP+}!e^El72(qdW z`+@yYks5iK!PnR=ZCT(en|)siy9ZAfywojF9$WVy_DN{(qxPv=;H$)Qc@dOZZ&O4H zv57ziGl=ak3L-I>dXg^Ti=+L}Uh1BOsD*@C;q_+aru2|=?|w*#%j;^CNGdr?tMsec zq#+RkAZ}uP>rB0CcUW8#mT$$p&hS{oss+1P3C^2$hz{o02>b$qi-IP((q843LbL~^ zeT3t#TGaSeReXSjX20Bl-uQv0t4UHu!{fp)6q&ZeeUzM(bSS8}6{95+1(v>iv zUOvNZVhkpwi2UV3RHUDx^o%!U2EF;~(6@%7i$Qq@r)CHRvc{-sU;Fi1=n}}Om0S`u z;_6Ut0gUDOXf(twK{%SA>ZzY5Zn2@)<#_>ufyjfg{_j1!sfd!VT8T3&aLlY@IW2s) zjte#CUf-;t91D{|DY2J}4K3z)C`BCywUOwtyrnktbV|AYJhq&P&)l)@kl2myI7S zM!I;&4}4!YkVuLaSw!^?m^{tM279<>5P{mns)MwKASC} zt(^nzLA3T`^1$Kq6I=S}bF&b1dB1Mb^{dFbW<67w{5(kCG2n7`LsLvQAoqBvig#TA zLnyQF9i{vaUiDrAD9YUWPg|};f+TqTDk}5SO;p~mQBApGm) zck8O9D>111Q_zgQ1$*&1nXhjoqv`=vfL~OTXZcaJ@<`88az`s&TM<6&$x)|(fUxzn zj-J)PGzr^{)IsrJ;;=xbpT`vgeKvVV&$NG&Hu@5*JC_1t16Kzg9ge|g4O(g$gsYhK zv+=O_p)BHV0^Vu-sB6)UZr?KO{yNh(ujpb{>7O!RwpuraeaC|*d8T0T%<3LQf4cA& zY#M{)%si?0k;AM+Pq1DpU@eyHrCNlp1c@MIx@~BzCeuwD;3RKTmS7H#kDsgNbeWOG zm%lS&O1tLS0VkFU5zPJvu&6`~#Zf*P4YznB zlX>jkJX5<0qBSibUNMe>3{O>IL!wni6QzZph^cjBrB%CPejKrKA!!yA=Bx6>p_+-p z-WgUICskx%Q%ismPcH!A}dD{@p1R! zWFzjFU#r0nTCyM|rNA<^OeMr$Hzri(@qxo*1?o2D13gx(Y?1aE3tvY>X=CwE1-FE* zy(N!$O1QsWvai=|=u*-%Vwu@=tED)q$MZcpT0@41hmi0t;}9`4^tO^&O%?{D9n1o} zBnXE56JC4OBj=Gq9$UYJhmXsw<4ne8RNwh1j<|IR_Y`}#8y|HGy$QGcrk}})AYevt zR7PbQ-KW&&LwpNl9@w!gv7xRlw$%wQF>J~uA4o9{PbkCJwD3?xdB7g$WPg0)i0Bg9 zx8I3FnEi`g`>Nr)tF$KNap9L`8=e!DPTdJLi!c6p2)x8D8KSoUX;+CAEQ|M+E@HT~ zroN9c0+bv)eJ_jirGIa^==su1yKd-v82V#tP!=AkOVZbKkY?2!lgHrGy7T(h#SLi~ zO_2MO4W_D(;Sa9YOeRR?NDrsx%W76I+6mYZV1LEAG*z?+4^=rj%*<=9R2%P2ZyetO zgh5zrA#6V)wV<{NHUeGN6MPFE_`DmNfj!tQ4z<=d+Arc7EXjyZhQL+NsLXW#byjFf zV}6vVE4(lt3un2W&GI}_<{AQNM0p@`9JSQT$hz;nbBLS1;Jc}|`knx3g7-f8L9Oj* zORvJBi;4WCD7Za?q@5~^%v1!TMBx(W)~TY1FR{FrGcpscbT+9+bu&wRujOe#Zn;s)KvUN~fH zB?#~p{}N;sy)n&58hB4@4^JH$IvQqqWLYJX3$twWIj%rLFgHQDsV+r@ zMHPeK<5Z^7Wc4wT0{0|4+-D0xA-C?u6nDI&lN9B;1ARPIIb-95Gw>mj^%7ID;?b3~ zC$19kx3i`AB5Ew!3ipgKFA7(l0YH}>(RYA*lh93>lJ`qI*LWj@=Lr9__(NZgLh||q z%GWNUZ)O@q??QrPx|DEG*WL=?&6>H;ngs5_KMAR5e`X<85)U#ZnjJa`U;wm6~#v7qVuil6Y5r4Tx>q8@k z%xWX?dR$Cj!iYt^TYAtA<5;9mx-^;JVk(sQCcWEG0t_trDfob5LEpNzHAr?*5nbM8 z_-CMQF@yk4hG3ZsFTxRFM&KQLU!OD5g75w>;n<=)I4X0`%LW1*QH; zB&}%x|M;6I_aSrw67+M<56;fhy|;jQhH&qDa+GW_+;u0)bF=dauStF)Ul>;Q_9~(2 zIBuBSR{&jJM-A4V-lYHr$A(<`EIFqOn@g+~7TJPIwed}|X2A?lrx zArQ1n;}9s^6cO-e@G<;x$->jo(n88Xk1%lq-rb;el)0_l6J!?hFm1R^kz-+_w)6t7 zj{Mm{Ch#9Yg(Av@$#rJ*C2yADyb_hM%?^dvCmZ$TJgS4gD!R(7bLR2zb3D{!q^BZ% zC%vIz{(2IYnUU`Vb{)q|{hURtg5;c_FynfLl8|M@yBi1b>(66`j)qid+A&uyCO&lJ zl(bB=|6KzgO`IHpYRe2bUnTw? z(oXc1idM=TIa6zxemM!N+lGY2pmUX$eBcLLwk8}RBiOiDgus!>^zLMq{CQrcZ-A!X zi!zsxX;}XSjm-SZ@F=P^UIkdj#TvhbeX4JB17eCF7|YrhGzHJ4%h zPCCmuw~GLZn+)CcEY_KGJ2C=I%0d6C2@#QuBN~T-Dpgz3d2NtR zD(Snsb(ZKE>jQ2`lq+0+NFgG=mSEM^EihTeOoLbJv+M`I7|s7Eu&wevLG^6fjy-z& zRm#+uRlJ^-kA8KNXRYskTA=V)_UV&Xja4k~CqpFIUw7AIr=-l@0v0*qI70S2u!Q~T zRL_=poqdLN<${Bt*!aYSTW3*f618H4<-V#CC>%ZFm~!+`T4e1To}C+48;siVE~Eu? z-);9TuFA?t$m{R=7gbv~r1BaaUG}RfG%ssEV3YZeu}Up!GMBGMb35^($V8R22#d}) zl1S3g29>sFEjCq*Oc9PXmvxyL4@87$g{oV*9#8bUkR~_KDZxfZjC`g1vZ3%0?yXCE zY3SN=O9jcM8<60X$bjL061VLp_qM9I$iEMZUy6g%-dTz4aM0*u0|!ie4;Go|>=f}a zaC`yo+d3sUAvp`~*R~kN(2z38o9 z@VGHruhCX(ibA(nwf*ueiJ+1-f~Dgiw`eKX(hPUB8YK;L+U?vkuX{irJ?>*@ihEh} zJMZqg@uMtrUf^Lu2tT@Q@aT<>Km{BAvTanXRN#0^zP>`fG>P|Y+|_Hj4%Y2gNj*OB zKb-X4yAQdTjYK$fr_;-vT_{l&0vQfJw=a8O0bhQtMcrqFKM>f z`Z@$+HJNJ^<*up@1Jj$)zX1diV?(aTT^ihputhf}+^ zVd00*K{jp_+-qGzX2C$QNBGdzPTi!TF6}QE5;2SBKtN7$&2a3%2eXXlXf+9$++CIA z;o6jq=BX<#ZMC+EGi@|9ymA-u4Ezn^AAXV8B4K8H`^L){BC-{uTc4B9NO2SD=;U;D z3%u2TstzB1h=vxZqj(p`5WsCzp034@@%j~m0Y(=l$~ zdtb`yUP**qI7-)x&>M<|{)q=1aO5Ewh`$((G~Rkn5lJqIbh~^heO3qC)rvs?T-6Kr zCBJ~u#zQnUheUT`z!ScFyjzzmgcnCY?MsXz!n)eI?N8*;Sl&kwWAQ{Zm%33An{3nT z=NdjZ5Ed=kv0y}F>7m6frLe=xy7QpRhJwO~={}sOhA*&Iv{7C+9>wtRo(t|LT(7Zw z@W>uf#$q0oX{Tb)c$@R^tVIV;q%~n+Cj=jTdA|bBbGrWC=GF8v*@4R-QvwB@C%M~{ zP;-4A?5Ol!OS1YNTa%NjKgUlFY3&{v=H8Ws05MI9Fk|h1XiWy`O zJ*tNnpi%94GVp-hfB0r{G$W8WKqE{>N4q-Y3v%^atXrTgVJ$93{NzS`tE5L0olo3| zoM@GW-P}n;Sje_%z!A#%dR0%Hy*2Q$o5J{)37uVYQYI@4aF6#H+_fonRTkhqam@(b zX0~knbZIfOX3|ILKP~0RUsvZ?kTN43VxHthTVw{tFFXpX_u8|T2KwM{-0Yp6>>iggCLOvqtXJWD3hhB4#9L z%%eg?H|fdWWi=ysp#~onz1L^8_t?^~jH){KU5)|gOP7fT+vrsJ7hE;99ILrPqZtST zfdz*px?KSsE?d{O%*2J`%#nMDOaXZr49tob1o6_?u|3jc(eG>7I2=ibDqpse(g88f zY}dlNJ&FCWYNJTdjj4;2=7$Rc;(K#3Wma=hPnN|X2y+iMZAWw-tN>6qjkjwqUT z-_YeUuRX3QuG>}`|Mf#iJ)N*@h(VvmN!+k+nj`eu%!-6fEq1j`vPmFk@a z@(S{9vmF=olcVW5Gc{-sw9@`KzAE0vq~hKnOz%=_d@6}v+1tIUtlUOu$yDs>Gvs^9 zh0DrkzE0vjDD!Yf67HSoPhdSe4}mJKi_h3SOWdLk8l4v4uKrwT%x4Boi6AE#mvh#8 ziP>FrPH}?Zcvr5FQSgEmdiw08V1w|YF54`XD8y8iEw29bSKx4&a>LvHXt{7m#=;WY z6e3@Me<0yP!kQPCBuka+EG{-2r9hbA_3&ivC(eRxF-nF4vdfH?_riQ@9#5>A9M0$A ziG-T%K8|J|xYvtrw)kB%t2m6EgmS9 z3#UG#d7>8~{#N!|9dU%VoA zW>|U0`V`+4FJ|B?D^e@TYr`ZgEP)I}f^%yTv3kd$(R1}|F(5!?b}W}Iqq{=bGcTG3 zsh9ZCMCH ze&-P$el&6JsOxDg-AlDzL{en$*-NrW$x>CQHsnJaGonte4f|ul_nL2lylV9&5An)6 zLQ4%9&sG8i6uqb?eO(Qv*HFEz>t*xy4=2 zn4q^(IiiXX85gj5Nw^+2oDZ-60II1h?4;l?SxoSCl*z>m-s4mIM53LkcbQe*P z<2~y5%iF6KVpQ$q(M1SEC6}Sy`P0$Y1BU0`iYkD2$X|BcmK==nK`XdAmItN}G*Lx@ z<@-lvj%a`xaHl^*{{YvgNy5e0unmxU_UG~DiYqdhnJ&1Dk=K^z)|l(d0tZ?srXe30 N&Pn?BqKYUH|Jj(aBuxMS literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2003/test.png b/vendor/exiv2-0.25/msvc2003/test.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc802ac1a222125494d64e65feede941775dbd8 GIT binary patch literal 135047 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]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 LNkvXXu0mjfn3*bt literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2003/test.tiff b/vendor/exiv2-0.25/msvc2003/test.tiff new file mode 100644 index 0000000000000000000000000000000000000000..f2b19fa7c27dbac68d6c37060c4cd2cd318b0cdf GIT binary patch literal 194752 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 z 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 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2003/tiff-test/tiff-test.vcproj b/vendor/exiv2-0.25/msvc2003/tiff-test/tiff-test.vcproj new file mode 100644 index 0000000..1c9abe6 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/tiff-test/tiff-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/utiltest/utiltest.vcproj b/vendor/exiv2-0.25/msvc2003/utiltest/utiltest.vcproj new file mode 100644 index 0000000..1d1433c --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/utiltest/utiltest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/werror-test/werror-test.vcproj b/vendor/exiv2-0.25/msvc2003/werror-test/werror-test.vcproj new file mode 100644 index 0000000..d5e40c1 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/werror-test/werror-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/write-test/write-test.vcproj b/vendor/exiv2-0.25/msvc2003/write-test/write-test.vcproj new file mode 100644 index 0000000..0c153ec --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/write-test/write-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/write2-test/write2-test.vcproj b/vendor/exiv2-0.25/msvc2003/write2-test/write2-test.vcproj new file mode 100644 index 0000000..8e76a0a --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/write2-test/write2-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/xmpparse/xmpparse.vcproj b/vendor/exiv2-0.25/msvc2003/xmpparse/xmpparse.vcproj new file mode 100644 index 0000000..59623f5 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/xmpparse/xmpparse.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/xmpparser-test/xmpparser-test.vcproj b/vendor/exiv2-0.25/msvc2003/xmpparser-test/xmpparser-test.vcproj new file mode 100644 index 0000000..e0924b7 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/xmpparser-test/xmpparser-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/xmpsample/xmpsample.vcproj b/vendor/exiv2-0.25/msvc2003/xmpsample/xmpsample.vcproj new file mode 100644 index 0000000..c07ebe2 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/xmpsample/xmpsample.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2003/xmpsdk/xmpsdk.vcproj b/vendor/exiv2-0.25/msvc2003/xmpsdk/xmpsdk.vcproj new file mode 100644 index 0000000..feac1a3 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2003/xmpsdk/xmpsdk.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/ReadMe.txt b/vendor/exiv2-0.25/msvc2005/ReadMe.txt new file mode 100644 index 0000000..310a59e --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/ReadMe.txt @@ -0,0 +1,532 @@ +exiv2\msvc2005\ReadMe.txt +------------------------- + ++-----------------------------------------------------------+ +| msvc2005 builds 32bit and 64bit binaries | +| with Visual Studio 2005/8/10/12/13/14 | +| msvc2003 builds 32bit binaries | +| with Visual Studio 2003/5/8 | ++-----------------------------------------------------------+ + +Updated: 2015-05-08 + +Robin Mills +http://clanmills.com +email: robin@clanmills.com + +#### +T A B L E o f C O N T E N T S + +1 Build Instructions +1.1 Tools +1.2 Install zlib and expat sources. +1.3 Open exiv2\msvc2005\exiv2.sln +1.4 Configuring build options (such as video and webready) +1.5 Building with exiv2-webready.sln +1.6 What is build +1.7 Express editions of DevStudio (or 32 bit only builds, or 64 bit only builds) + +2 Design +2.1 Architecture +2.2 Relationship with msvc build environment + +3 Batch builds and tests +3.1 buildall.bat +3.2 Running the test suite + +4 Building Applications to use Exiv2 +4.1 Recommended work-flow to create applications +4.2 Compiler Include Paths and Options +4.3 Library Link Order +4.4 tools/bin/depends32.exe and depends64.exe +4.5 exiv2.exe --verbose --version + +5 Acknowledgment of prior work +5.1 Differences between inherited project and the exiv2 projects + +## End Table of Contents End ## +#### + +1 Build Instructions + +1.1 Tools + This has been tested with the "Pro" versions of VS 2005/08/10/12 + Some Express editions don't support 64 bit builds + however it is possible to build 32 bit libraries with "Express". + See notes below about DevStudio Express and building only Win32 or x64 builds + + You need a DOS version of perl to build openssl. Not the cygwin version. + I use ActiveState Perl. + + configure.bat is used to configure "non-standard" version of exiv2 + configure.bat requires a python3 interpreter. I use ActivePython. + ActivePython 3.4.1.0 (ActiveState Software Inc.) based on + Python 3.4.1 (default, Aug 7 2014, 13:09:27) [MSC v.1600 64 bit (AMD64)] on win32 + + You need Cygwin to run the test suite because it is written in bash. + +1.2 Install zlib and expat sources. + I use the directory c:\gnu for this purpose, however the name isn't important. + + c:\gnu>dir + Directory of c:\gnu + 2010-12-05 10:05

exiv2 <--- this tree + 2012-05-04 23:35 expat <--- "vanilla" expat 2.1.0 source tree + 2012-05-04 23:35 zlib <--- "vanilla" zlib 1.2.7 source tree + 2012-05-04 23:35 curl <--- "vanilla" curl 7.39.0 source tree + 2012-05-04 23:35 openssl <--- "vanilla" openssl 1.0.1j source tree + 2012-05-04 23:35 libssh <--- "vanilla" libssh 0.5.5 source tree + c:\gnu> + + You can obtain the libraries from http://clanmills.com/files/exiv2libs.zip (20mb) + I copy those to the directory c:\exiv2libs + The script msvc2005/copylibs.bat will copy them from c:\exiv2libs to the correct location + + 11/05/2014 07:26 AM curl-7.39.0 + 12/07/2014 09:18 AM expat-2.1.0 + 12/17/2014 09:40 AM libssh-0.5.5 + 12/17/2014 09:38 AM openssl-1.0.1j + 12/07/2014 09:18 AM zlib-1.2.7 + + The following directories are also in the archive for use by msvc2003 + 01/07/2015 11:11 AM expat-2.0.1 + 01/07/2015 11:10 AM zlib-1.2.3 + + The URLs from which to obtain zlib and expat are documented in exiv2\msvc2003\ReadMe.txt + expat-2.1.0 is available from http://voxel.dl.sourceforge.net/sourceforge/expat/expat-2.1.0.tar.gz + zlib-1.2.7 is available from http://zlib.net/zlib-1.2.7.tar.gz + curl is available from http://curl.haxx.se/download.html + openssh is available from https://www.openssl.org/source/ + libssh is available from https://www.libssh.org/get-it/ + +1.3 Open exiv2\msvc2005\exiv2.sln + Projects are zlib, expat, xmpsdk, exiv2lib, exiv2, addmoddel etc... + Build/Batch build... Select All, Build + - 36 projects (zlib, expat, xmpsdk, exiv2lib, exiv2, addmoddel etc) + x 2 Platforms (x64|Win32) + x 4 Configurations (Debug|Release|DebugDLL|ReleaseDLL) + = 38x2x4 = 304 builds. + + When building with webready, you add 5 libraries for a total of 344 builds. + + If you haven't installed the x64 compiler, don't select the 64 bit configurations! + You may have to hand-edit the vcproj and sln files to hide the 64 bit information. + See the notes about DevStudio Express for more information about this. + + Build time is 20 minutes on a 2.2GHz Duo Core and consumes 3.0 gBytes of disk space. + Build time with webready is of the order of one hour as we add 5 libraries. + (libcurl, libeay32, ssleay32, libssh, openssl) + +1.4 Configuring build options (such as video and webready) + + The batch file configure.bat is used to reconfigure for various options. + You will need a python3 interpreter. I personally use ActivePython 3.4.1 + + C:\cygwin64\home\rmills\gnu\exiv2\trunk\msvc2005>configure -h + Usage: configure.py [options] + + Options: + -h, --help show this help message and exit + -A, --with-app build sample apps (false) + -a, --without-app do not build apps + -C, --with-curl enable curl + -c, --without-curl disable curl + -E, --with-expat enable expat (true) + -e, --without-expat disable expat + -O, --with-openssl enable openssl + -o, --without-openssl + disable openssl + -S, --with-ssh enable ssh + -s, --without-ssh disable ssh + -T, --with-test build test programs (true) + -t, --without-test do not build test progs + -W, --enable-webready + enable webready (false) + -w, --disable-webready + enable webready + -V, --enable-video enable video (false) + -v, --disable-video disable video + -X, --enable-xmp enable xmp (true) + -x, --disable-xmp disable xmp + -Z, --with-zlib enable zlib/png (true) + -z, --without-zlib disable zlib/png + -d, --default default + + When you run configure.bat it creates a new solution exiv2_configure.sln + configure.bat does not modify the solution or project files used by exiv2.sln + Instead it creates a parallel set of projects files. For example exivprint\exifprint_configure.vcproj + +1.5 Building with exiv2-webready.sln + The solution exiv2-webready.sln was used during development before + we created the configure.bat script to generate solution/project files + We have decided to ship this build mechanism for v0.25 only. + + Building the complete library with webready support requires building + 5 additional libraries. This is time consuming. The build time + increases from 5 to 20 minutes. + + By default, you will not build with webready. + + To build with webready: + 1 copy include\exiv2\exv_msvc-webready.h include\exiv2\exv_msvc.h + 2 open msvc2005\exiv2-webready.vcproj + +1.6 What is built + The DLL builds use the DLL version of the C runtime libraries + The Debug|Release builds use static C runtime libraries + This is discussed in exiv2\msvc2003\ReadMe.txt + +1.7 Express editions of DevStudio (or 32 bit only builds, or 64 bit only builds) + Some Express Editions do not provide a 64 bit compiler. + You can build 32 bit libraries with DevStudio Express (with a little effort) + + Before loading the project, use the python script setbuild.py to select Win32: + + c:\gnu\exiv2\msvc2005>setbuild.py Win32 + + setbuild.py is none destructive. If you have a 64 bit compiler, you can: + 1) Restore the build environment with: setbuild.py all + 2) Select x64 bit builds only with: setbuild.py x64 + + If you don't have python available (it's a free download from ActiveState.com), + you can "doctor" to project files manually to remove mentiosn of X64 using an editor: + + Cleanup your tree and edit the files. + cd exiv2\msvc2005 + call cleaner.bat + for /r %f in (*.vcproj) do notepad %f + for /r %f in (*.sln) do notepad %f + + I personally don't recommend notepad for any purpose at all. + I use TextPad http://www.textpad.com/ Notepad++ is also good. + + DevStudio Express 2010 does not have the "Batch Build" feature. + Select "exiv2" right-click "Set as Startup Project" and + Select Platform="Win32" Configuration="Debug|DebugDLL|Release|ReleaseDLL" Build. + Build the Configurations you need. Build time is about 2 minutes/Configuration. + + To remove the "memory" of old configurations: + setbuild.py reset + +2 Design + + expat and zlib1.2.5 (and earlier) do not provide 64 bit builds for DevStudio. + + The projects provided for zlib1.2.7 support 64 bit builds, however it didn't + work cleanly for me. They use different projects for VC9 and VC10. + They don't provide support for VC8 or 11beta. + + I have created build environments for zlib and expat within exiv2/msvc2005. + I don't include the source code for zlib or expat - only the build environment. + + You are expected to install the "vanilla" expat and zlib libraries + in a directory at the same level as exiv2. + I personally always build in the directory c:\gnu, + however the name/location/spaces of the build directory are all irrelevant, + it's only the relative position of expat-2.1.0 and zlib-1.2.7 that matter. + The names expat-2.1.0 and zlib-1.2.7 are fixed (and used by the .vcproj files) + + zlib and expat + exiv2\msvc2005\zlib\zlib.vcproj DevStudio files + ..\..\..\zlib Source code + + exiv2\msvc2005\expat\expat.vcproj DevStudio files + ..\..\..\expat Source code + +2.1 Architecture + There are directories for every component: + The libraries: zlib, expat, xmpsdk, exiv2lib + Applications: exiv2.exe + Sample Apps: exifprint.exe, addmoddel.exe and many more (used by test suite) + + For each component, there are three build directories: + exiv2lib\build intermediate results + exiv2lib\Win32\{Debug|Release|DebugDLL|ReleaseDLL} 32 bit builds + exiv2lib\x64\{Debug|Release|DebugDLL|ReleaseDLL} 64 bit builds + + Final builds and include directories (for export to "foreign" projects) + bin\{win32|x64}\Win32\{Debug|Release|DebugDLL|ReleaseDLL} + +2.2 Relationship with msvc2003 build environment + msvc2005 is similar to msvc2003. + However there are significant differences: + 1) msvc2005 supports 64 bit and 32 bit builds + 2) msvc2005 provides projects to build expat, zlib, curl, libssh and openssl + 3) msvc2005 is designed to accomodate new versions of expat and zlib when they become available. + 4) msvc2005 supports DevStudio 2005 and later (no support for 2003) + 5) msvc2005 does not require you to build 'vanilla' expat and zlib projects in advance + 6) msvc2005 does not support the organize application + 7) msvc2005 supports building with zlib1.2.7 or 1.2.8 + 8) msvc2005 supports building with expat2.1.0 or expat2.0.1 + + msvc2003 will continue to be supported for 32 bit builds using DevStudio 2003/05/08, + however there is no plan to enhance or develop msvc2003 going forward. + +3 Batch builds and tests + +3.1 buildall.bat + This was intended to be a "throw away" kind of script and it's grown to be quite useful. + You will have to run vcvars32.bat for the compiler you intend to use to ensure devenv is + on your path. + + It doesn't know anything about building only x64 or only Win32. Change the script if you + want something special. + +3.2 Running the test suite + You will need to install cygwin to run the test suite. + + This is a two stage process: + Step1: Build exiv2 for cygwin and run the test suite + Typical Unix type build: + make config + ./configure --disable-visibility + export PKG_CONFIG_PATH=$PWD/config + make clean ; make ; make samples ; make install ; cd test ; make test + + Step2: set the environment variable EXIV2_BINDIR appropriately and rerun make test + export EXIV2_BINDIR= + + I find the following little bash loop very useful. You should test + against all the directories in the msvc2005/bin directory: + for d in $(find /c/gnu.2005/exiv2/msvc2005/bin \ + -name exiv2.exe -exec dirname {} ";"); do + export EXIV2_BINDIR=$d + echo --------------------------------- + echo ---- $d ---- + echo --------------------------------- + make test + done + + Free gift: (you get what you pay for) + The script testMSVC.sh to runs this loop for you. + The script verifyMSVC.sh validates the output of testMSVC.sh + I've added those for my convenience and I hope you'll find them useful. + + And to pass the time (the test suite takes about an hour to run) + I recommend running listdlls exiv2.exe occasionally during testing to be + confident that the test suite is running the MSVC built + versions of exiv2 and libraries. + + From cygwin: + while sleep 1 do; listdlls exiv2.exe ; done + or + while sleep 10 do ; listdlls exiv2.exe | grep exiv2.exe ; done + + Note: Cygwin currently ships diff-utils 2.9.2 which treats binary files differently + from 2.8.7 (on Mac) and 3.2 (on Ubuntu 12.04). For this reason, the executable (and + support dlls) for GNU diff.exe 2.8.7 is provided in msvc2003/diff.exe. + The test suite has been "doctored" on cygwin to modify the path appropriately to + use this preferred version of diff.exe. + +4 Building Applications to use Exiv2 + +4.1 Recommended work-flow to create applications + + a) add your code code to a sample applications (such as exifprint.exe) + get the code building and running from there. + our program will be called exifprint.exe + you will be very confident that your code works! + + b) copy /msvc2005/exifprint to /msvc2005/yourprojectname + get yourprojectname.exe to build and run. + By using /msvc2005/exifprint as a template,: + i) you can build 32/64 dll/static debug/release "out of the box". + ii) your include path, dependent libraries and link order are already set. + Revert your changes to /msvc2005/exifprint + + c) move /msvc2005/yourprojectname in your buildtree. + + d) It's a good idea for your buildtree to reference /msvc2005 + When you reference , you can update occasionally + and rebuild with little effort. + + Of course, there are always other ways to achieve your goals in software. + You may prefer to copy the generated libs and dlls in bin/$platform/$configuration + to your build tree. When you do this, you will have to explicitly link + the libraries you have copied. + +4.2 Compiler Include Paths and Options + + The correct include paths and compiler options are revealed in Visual Studio, + by examining exifprint/Properties/C++/Command Line: + + /Od + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\../include" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\../include/exiv2" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\../xmpsdk/include" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\../../expat/lib" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\../../zlib" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\/../../curl/include" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\/../../libssh/include" + /I "C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\xssl/Win32/Release/include" + /D "WIN32" /D "_NDEBUG" /D "_CONSOLE" /D "BUILD_GETOPT" /D "EXV_HAVE_DLL" /D "_MBCS" + /Gm /EHsc /MD /Fo"build/x64/ReleaseDLL\\" /Fd"build/x64/ReleaseDLL\vc80.pdb" + /FR"build/x64/ReleaseDLL\\" /W3 /nologo /c /Zi /TP /errorReport:promptThe correct library link order + +4.3 Library Link Order + + The correct order is revealed in Visual Studio, + by examining exifprint/Properties/Linker/Command-Line: + + /OUT:"C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin/x64/ReleaseDLL\exifprint.exe" + /INCREMENTAL:NO /NOLOGO /MANIFEST /MANIFESTFILE:"build/x64/ReleaseDLL\exifprint.exe.intermediate.manifest" + /SUBSYSTEM:CONSOLE /MACHINE:X64 /ERRORREPORT:PROMPT kernel32.lib user32.lib + gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib + "..\bin\x64\releasedll\libexiv2.lib" "..\bin\x64\releasedll\xmpsdk.lib" + "..\bin\x64\releasedll\libexpat.lib" "..\bin\x64\releasedll\zlib1.lib" + + I don't believe you have to explicitly link msvc{r|p}XXX as they are linked automatically by the version of Visual Studio. + 800=Visual Studio 2005, 900=2008, 100=2010, 110=2012, 120=2013. + +4.4 tools/bin/depends32.exe and depends64.exe + + C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll>depends64 exiv2.exe + libexpat.dll + PSAPI.DLL + NSI.dll + API-MS-Win-Core-DelayLoad-L1-1-0.dll + API-MS-Win-Core-Interlocked-L1-1-0.dll + RPCRT4.dll + API-MS-Win-Core-LocalRegistry-L1-1-0.dll + msvcrt.dll + WS2_32.dll + zlib1.dll + API-MS-Win-Security-Base-L1-1-0.dll + API-MS-Win-Core-Profile-L1-1-0.dll + API-MS-Win-Core-Util-L1-1-0.dll + API-MS-Win-Core-Fibers-L1-1-0.dll + API-MS-Win-Core-ErrorHandling-L1-1-0.dll + API-MS-Win-Core-Debug-L1-1-0.dll + API-MS-Win-Core-String-L1-1-0.dll + API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll + API-MS-Win-Core-Localization-L1-1-0.dll + API-MS-Win-Core-SysInfo-L1-1-0.dll + API-MS-Win-Core-Misc-L1-1-0.dll + API-MS-Win-Core-NamedPipe-L1-1-0.dll + API-MS-Win-Core-LibraryLoader-L1-1-0.dll + API-MS-Win-Core-ThreadPool-L1-1-0.dll + API-MS-Win-Core-IO-L1-1-0.dll + API-MS-Win-Core-File-L1-1-0.dll + API-MS-Win-Core-Synch-L1-1-0.dll + API-MS-Win-Core-Handle-L1-1-0.dll + API-MS-Win-Core-Memory-L1-1-0.dll + API-MS-Win-Core-Heap-L1-1-0.dll + API-MS-Win-Core-ProcessThreads-L1-1-0.dll + KERNELBASE.dll + ntdll.dll + API-MS-Win-Core-RtlSupport-L1-1-0.dll + KERNEL32.dll + libexiv2.dll + Not found: MSVCR80.dll + Not found: MSVCP80.dll + exiv2.exe + Not found: MSVCR80.dll + Not found: MSVCP80.dll + + C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll> + +4.5 exiv2.exe --verbose --version + + You can inspect build information using exiv2 -v -V (verbose version): + + C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll>exiv2 -v -V + exiv2 0.25 001900 (64 bit build) + Copyright (C) 2004-2015 Andreas Huggel. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301 USA + exiv2=0.25.0 + platform=windows + compiler=MSVC + bits=64 + dll=1 + debug=0 + version=8.00 + date=Feb 1 2015 + time=21:45:35 + svn=3592 + ssh=0 + curl==0 + id=$Id: version.cpp 3564 2015-01-11 21:38:40Z robinwmills $ + executable=C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll\exiv2.exe + library=C:\Windows\SYSTEM32\ntdll.dll + library=C:\Windows\system32\kernel32.dll + library=C:\Windows\system32\KERNELBASE.dll + library=C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll\libexiv2.dll + library=C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll\zlib1.dll + library=C:\Windows\WinSxS\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_88e41e092fab0294\MSVCR80.dl + library=C:\Windows\system32\msvcrt.dll + library=C:\Windows\system32\WS2_32.dll + library=C:\Windows\system32\RPCRT4.dll + library=C:\Windows\system32\NSI.dll + library=C:\Windows\WinSxS\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_88e41e092fab0294\MSVCP80.dl + library=C:\Windows\system32\PSAPI.DLL + library=C:\cygwin64\home\rmills\gnu\exiv2\video-write\msvc2005\bin\x64\releasedll\libexpat.dll + have_regex=0 + have_strerror_r=0 + have_gmtime_r=0 + have_inttypes=0 + have_libintl=0 + have_lensdata=1 + have_iconv=0 + have_memory=0 + have_memset=0 + have_lstat=0 + have_stdbool=0 + have_stdint=0 + have_stdlib=0 + have_strlib=0 + have_strchr=0 + have_strerror=0 + have_strerror_r=0 + have_strings_h=0 + have_strtol=0 + have_mmap=0 + have_munmap=0 + have_sys_stat=0 + have_timegm=0 + have_unistd_h=0 + have_sys_mman=0 + have_libz=1 + have_xmptoolkit=1 + have_bool=0 + have_strings=0 + have_sys_types=0 + have_unistd=0 + + The keys library=path are based on the actual libraries loaded in memory by exiv2.exe + The output of exiv2.exe -v -V is used by the test suite to verify that we are using + the correct libraries and not some other bandits which happen to reside on the host machine. + +5 Acknowledgement of prior work + This work is based on work by the following people: + zlib 64 bit build + + Copyright (C) 2000-2004 Simon-Pierre Cadieux. + Copyright (C) 2004 Cosmin Truta. + For conditions of distribution and use, see copyright notice in zlib.h. + + And was obtained from: http://www.achacha.org/vc2008_zlib/ + + expat 64 bit build + http://www.start64.com/index.php?option=com_content&task=view&id=3461&Itemid=114 + + I recognise and respect the work performed by those individuals. + +5.1 Differences between inherited projects and the exiv2 projects + There is no compatiblity. + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/msvc2005/addmoddel/addmoddel.vcproj b/vendor/exiv2-0.25/msvc2005/addmoddel/addmoddel.vcproj new file mode 100644 index 0000000..3caba96 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/addmoddel/addmoddel.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/configure.bat b/vendor/exiv2-0.25/msvc2005/configure.bat new file mode 100644 index 0000000..9a4eeab --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/configure.bat @@ -0,0 +1,3 @@ +@%COPY_CONFIG% >nul +@REM set COPY_CONFIG=copy/y y:\gnu\exiv2\trunk\msvc2005\configure.py +@python configure.py %*% \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/configure.py b/vendor/exiv2-0.25/msvc2005/configure.py new file mode 100755 index 0000000..e231009 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/configure.py @@ -0,0 +1,415 @@ +#!/usr/bin/python3 + +import os +import sys +import uuid +import optparse +import datetime +import platform +import xml.dom.minidom + +def empty(): + return set([]) + +global uid # dict: UID of every projects +global project # dict: dependency sets for every project +global strings # dict: Visual Studio Strings +global ignore # set: projects/directories to ignore +global filters # dict: patterns of filenames to be removed from the build +global filter # set: patterns of filenames to be removed from the build +global externlib # set: project to never filter (zlib etc) +global format # str: output format +global build # set: projects to be built + +format = '%-20s\t%s' +externlib= set(['libcurl' , 'libexpat' , 'zlib' , 'libcurl' + ,'libeay32' , 'ssleay32' , 'libssh' , 'openssl' + ]) +ignore = set(['expat' , 'expat201' , 'expat210' , 'tests' , 'testv' + ,'zlib123' , 'zlib125' , 'zlib127' , 'tools' , 'exiv2lib' + ]) +apps = set(['exifdata' , 'exifvalue' , 'geotag' , 'xmpsample' ]) +tests = set(['exifdata-test', 'conntest' , 'convert-test', 'easyaccess-test', 'exifcomment' , 'httptest' + , 'iotest' , 'iptceasy' , 'iptcprint' , 'iptctest' , 'key-test' , 'largeiptc-test' + , 'mmap-test' , 'path-test' , 'prevtest' , 'remotetest' , 'stringto-test' , 'taglist' + , 'tiff-test' , 'utiltest' , 'werror-test' , 'write-test' , 'write2-test' , 'xmpparse' + , 'xmpparser-test' + ]) +# always = set(['exiv2' , 'exiv2json' , 'addmoddel' , 'exifprint' , 'metacopy' ]) +build=empty() + +## +# build dict:uid - hunt the tree for .vcproj files +uid = {} +for d in os.listdir('.'): + if os.path.isdir(d) & (not d in ignore): + for root, dirs, files in os.walk(d): + for file in files: + ext = ".vcproj" + if file.endswith(ext) & (file.find('configure') < 0): + uid[d]=str(uuid.uuid1()) + +## +# define project dependances +# This table is generated with the command 'tools/python/depends.py exiv2-webready.sln format' +project = {} +for p in uid: + project[p]=empty() + +project['addmoddel' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['conntest' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['convert-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['easyaccess-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['exifcomment' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['exifdata' ] = set(['libexiv2']) +project['exifdata-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['exifprint' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['exifvalue' ] = set(['libexiv2']) +project['exiv2' ] = set(['libeay32', 'ssleay32', 'libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['exiv2json' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['geotag' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['httptest' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['iotest' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['iptceasy' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['iptcprint' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['iptctest' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['key-test' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['largeiptc-test' ] = set(['zlib', 'libexpat', 'libexiv2', 'libcurl', 'xmpsdk']) +project['libcurl' ] = set(['libssh', 'libeay32', 'ssleay32']) +project['libeay32' ] = set(['openssl']) +project['libexiv2' ] = set(['libeay32', 'ssleay32', 'libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libssh']) +project['libexpat' ] = set([ ]) +project['libssh' ] = set(['zlib', 'libeay32', 'ssleay32']) +project['metacopy' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['mmap-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['openssl' ] = set([ ]) +project['path-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['prevtest' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['remotetest' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['ssleay32' ] = set(['openssl']) +project['stringto-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['taglist' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['tiff-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['utiltest' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['werror-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['write-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['write2-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['xmpparse' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['xmpparser-test' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['xmpsample' ] = set(['libcurl', 'zlib', 'libexpat', 'xmpsdk', 'libexiv2', 'libssh']) +project['xmpsdk' ] = set([ ]) +project['zlib' ] = set([ ]) +## +# filter +filters={} +filters['zlib' ] = set(['png' ]) +filters['video' ] = set(['video']) +filters['xmp' ] = set(['xmp' ]) +filters['webready' ] = set([ ]) +filter=empty() + +## +# MSVC strings +strings = {} +strings['UID' ] = str(uuid.uuid1()) + +strings['Begin' ]='''Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +''' + '# Created by:%s at:%s using:%s on:%s in:%s\n' % (sys.argv[0], datetime.datetime.now().time(), platform.node(), platform.platform(), os.path.abspath('.')) +strings['End' ] = '' + +strings['globalBegin' ] = 'Global' +strings['globalEnd' ] = 'EndGlobal' + +strings['platforms' ] = ''' +\tGlobalSection(SolutionConfigurationPlatforms) = preSolution +\t\tDebug|Win32 = Debug|Win32 +\t\tDebug|x64 = Debug|x64 +\t\tDebugDLL|Win32 = DebugDLL|Win32 +\t\tDebugDLL|x64 = DebugDLL|x64 +\t\tRelease|Win32 = Release|Win32 +\t\tRelease|x64 = Release|x64 +\t\tReleaseDLL|Win32 = ReleaseDLL|Win32 +\t\tReleaseDLL|x64 = ReleaseDLL|x64 +\t\tEndGlobalSection +''' +strings['postSolutionBegin' ] = '\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n' +strings['postSolutionEnd' ] = '\tEndGlobalSection\n' + +strings['postProjectBegin' ] = '\tProjectSection(ProjectDependencies) = postProject\n' +strings['postProjectEnd' ] = '\tProjectSectionEnd\n' + +strings['preSolution' ] = '''\tGlobalSection(SolutionProperties) = preSolution +\t\tHideSolutionNode = FALSE +\tEndGlobalSection +''' +## +# {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.ActiveCfg = Debug|Win32 +def compilationForProject(uid): + result = '' + for t in [ 'Debug' , 'DebugDLL' , 'Release' , 'ReleaseDLL' ]: + for p in [ 'Win32','x64']: + for z in ['ActiveCfg','Build.0']: + result = result + '\t\t{%s}.%s|%s.%s = %s|%s\n' % (uid,t,p,z,t,p) + return result; + +def compilationTable(): + result = strings['postSolutionBegin'] + for p in project: + if type(project[p]) == type(empty()): + result = result + compilationForProject(uid[p]) + return result + strings['postSolutionEnd'] + +## +# Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexiv2", "libexiv2\libexiv2_configure.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}" +# ProjectSection(ProjectDependencies) = postProject +# {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} +# ... +# EndProjectSection +# EndProject +## +def projectRecord(project,projects): + print( format % ((project), '{ }' if len(projects) == 0 else projects)) + + UID = strings['UID'] + vcnew = "%s\%s_configure.vcproj" % (project,project) # write in DOS notation for Visual Studio + result = 'Project("{%s}") = "%s", "%s", "{%s}"\n' % (UID,project,vcnew,uid[project]) + + count = 0 + out = strings['postProjectBegin'] + for p in projects: + if not p in ignore: + count=count+1 + out = out + '\t\t{%s} = {%s}\n' % (uid[p],uid[p]) + out = out + strings['postProjectEnd'] + if count > 0: + result = result + out + + result = result + 'EndProject\n' + return result + +## +# filter ....exv_msvc.h... -> ....exv_msvc_configure.h.... +def modifyHeaderName(line): + headerold='exv_msvc.h' + headernew='exv_msvc_configure.h' + if line.find(headerold): + line=line.replace(headerold,headernew) + return line + +## +# Filter proj\proj.vcproj -> proj\proj_configure.vcproj +def writeVCproj(project,projects): + vcold = os.path.join(project,("%s.vcproj" % project) ) # path to old file + vcnew = os.path.join(project,("%s_configure.vcproj" % project) ) # path to new file + xmllines = xml.dom.minidom.parse(vcold).toprettyxml().split('\n') + out = "" + for line in xmllines: + # 1) Update the project GUID + projectGUID='ProjectGUID="{' + if line.find( projectGUID) > 0: + start = line.find(projectGUID) + len(projectGUID) + olduid=line[start:line.find('}',start)-1] + line=line.replace(olduid,uid[project]); + + # 2) Filter off unwanted files and modify the msvc header file + if (not project in externlib) & (line.find( 'File RelativePath=' ) >= 0): + for pattern in filter: + if ( line.find(pattern) > 0 ): + line ='' + line=modifyHeaderName(line) + + # 3) Add a preprocessor symbol to ask config.h to read exv_msvc_configure.h + ppold= 'PreprocessorDefinitions="' + ppnew=ppold+'EXV_MSVC_CONFIGURE;' + if line.find( ppold ) > 0: + line=line.replace(ppold,ppnew) + + if len(line)>0: + out = out + line + '\n' + + open(vcnew,'w').write(out) + +## +# not assert! +def cantHappen(condition,message): + if condition: + print(message) + exit(1) + +def headerFilter(path,options): + result= '' + lines = open(path).readlines(); + truth = {} + truth['USE_CURL' ] = options.curl + truth['USE_SSH' ] = options.ssh + truth['ENABLE_WEBREADY' ] = options.webready + truth['ENABLE_VIDEO' ] = options.video + truth['HAVE_XMP_TOOLKIT'] = options.xmp + truth['HAVE_ZLIB' ] = options.zlib + truth['HAVE_EXPAT' ] = options.expat + for line in lines: + start=line.find('EXV_') + if (start > 0) & ((line.find('define')>0) | (line.find('undef')>0)): + key = line[start+4:line.find(' ',start+4)] + if key in truth: + line = ('#define EXV_%s 1\n' % key) if truth[key] else ('#undef EXV_%s\n' % key) + line=modifyHeaderName(line) + result += line + + return result + +def enableWebready(option, opt_str, value, parser): + b=True + parser.values.webready = b + parser.values.openssl = b + parser.values.ssh = b + parser.values.curl = b + +def disableWebready(option, opt_str, value, parser): + b=False + parser.values.webready = b + parser.values.openssl = b + parser.values.ssh = b + parser.values.curl = b + +def main(): + global uid + global project + global strings + global ignore + global filter + global filters + global externlib + global format + global build + + ## + # set up argument parser + usage = "usage: %prog [options]+" + parser = optparse.OptionParser(usage) + parser = optparse.OptionParser() + + parser.add_option('-A', '--with-app' , action='store_true' , dest='app' ,help='build sample apps (false)' ,default=False) + parser.add_option('-a', '--without-app' , action='store_false', dest='app' ,help='do not build apps' ) + parser.add_option('-C', '--with-curl' , action='store_true' , dest='curl' ,help='enable curl' ,default=False) + parser.add_option('-c', '--without-curl' , action='store_false', dest='curl' ,help='disable curl' ) + parser.add_option('-E', '--with-expat' , action='store_true' , dest='expat' ,help='enable expat (true)' ,default=True) + parser.add_option('-e', '--without-expat' , action='store_false', dest='expat' ,help='disable expat' ) + parser.add_option('-O', '--with-openssl' , action='store_true' , dest='openssl' ,help='enable openssl' ,default=False) + parser.add_option('-o', '--without-openssl' , action='store_false', dest='openssl' ,help='disable openssl' ) + parser.add_option('-S', '--with-ssh' , action='store_true' , dest='ssh' ,help='enable ssh' ,default=False) + parser.add_option('-s', '--without-ssh' , action='store_false', dest='ssh' ,help='disable ssh' ) + parser.add_option('-T', '--with-test' , action='store_true' , dest='test' ,help='build test programs (true)',default=True) + parser.add_option('-t', '--without-test' , action='store_false', dest='test' ,help='do not build test progs' ) + parser.add_option('-W', '--enable-webready' , action='callback' , dest='webready',help='enable webready (false)' ,callback=enableWebready,default=False) + parser.add_option('-w', '--disable-webready', action='callback' , dest='webready',help='enable webready' ,callback=disableWebready) + parser.add_option('-V', '--enable-video' , action='store_true' , dest='video' ,help='enable video (false)' ,default=False) + parser.add_option('-v', '--disable-video' , action='store_false', dest='video' ,help='disable video' ) + parser.add_option('-X', '--enable-xmp' , action='store_true' , dest='xmp' ,help='enable xmp (true)' ,default=True) + parser.add_option('-x', '--disable-xmp' , action='store_false', dest='xmp' ,help='disable xmp' ) + parser.add_option('-Z', '--with-zlib' , action='store_true' , dest='zlib' ,help='enable zlib/png (true)' ,default=True) + parser.add_option('-z', '--without-zlib' , action='store_false', dest='zlib' ,help='disable zlib/png' ) + parser.add_option('-d' , '--default' , action='store_true' , dest='default' ,help='default' ,default=False) + + ## + # no arguments, report and quit + if len(sys.argv) == 1: + parser.print_help() + return + + ## + # parse and test for errors + (options, args) = parser.parse_args() + cantHappen(options.curl & (not options.webready),'cannot use curl without webready' ); + cantHappen(options.openssl & (not options.webready),'cannot use openssl without webready'); + cantHappen(options.ssh & (not options.webready),'cannot use libssh without webready'); + cantHappen(options.xmp & (not options.expat ),'cannot use xmp without expat' ); + + if not options.app: + ignore = ignore | apps; + if not options.test: + ignore = ignore | tests; + + ## + # print options + print(format % ('Option' , 'Value')) + print(format % ('------' , '-----')) + for o, v in sorted(options.__dict__.items()): + if o != 'default': + print(format % (o, v)) + print() + print(format % ('Project','Dependancy')) + print(format % ('-------','----------')) + + ## + # learn the filters + if options.video: + filters['video']=empty() + if options.webready: + filters['webready']=empty() + if options.xmp: + filters['xmp']=empty() + if options.zlib: + filters['zlib']=empty() + filter = filters['video'] | filters['xmp'] | filters['webready'] | filters['zlib'] + + ## + # learn build candidates + for p in project: + skip = p in ignore + skip = skip | ((p == 'libssh' ) & ( not options.ssh )) + skip = skip | ((p == 'libcurl' ) & ( not options.curl )) + skip = skip | ((p == 'openssl' ) & ( not options.openssl)) + skip = skip | ((p == 'libeay32' ) & ( not options.openssl)) + skip = skip | ((p == 'ssleay32' ) & ( not options.openssl)) + skip = skip | ((p == 'xmpsdk' ) & ( not options.xmp )) + skip = skip | ((p == 'libexpat' ) & ( not options.expat )) + skip = skip | ((p == 'zlib' ) & ( not options.zlib )) + if not skip: + build.add(p) + # build projects that intersect with the build! + for p in build: + project[p] = project[p] & build + + ## + # write solution file + sln='exiv2_configure.sln' + s = open(sln,'w') + s.write(strings['Begin']) + + for p in sorted(build): + s.write(projectRecord(p,project[p])) + + # write compilation table + s.write(strings['globalBegin']) + s.write(strings['platforms' ]) + s.write(compilationTable()) + s.write(strings['preSolution']) + s.write(strings['globalEnd' ]) + + # finish + s.write(strings['End']) + s.close() + + ## + # write project files + for p in sorted(build): + writeVCproj(p,project[p]) + + ## + # write exv_msvc_configure.h by filtering exv_msvc.h + include = os.path.join('..','include','exiv2') + oldh = os.path.join(include,'exv_msvc.h'); + newh = os.path.join(include,'exv_msvc_configure.h'); + open(newh,'w').write(headerFilter(oldh,options)) + + print() + print('MSVC 2005 Solution file created: ' + sln) + print('header = %s\n' % os.path.abspath(newh)) + +if __name__ == "__main__": + main() + +# That's all Folks +## \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/conntest/conntest.vcproj b/vendor/exiv2-0.25/msvc2005/conntest/conntest.vcproj new file mode 100644 index 0000000..621b149 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/conntest/conntest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/convert-test/convert-test.vcproj b/vendor/exiv2-0.25/msvc2005/convert-test/convert-test.vcproj new file mode 100644 index 0000000..7bc431d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/convert-test/convert-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/copylibs.bat b/vendor/exiv2-0.25/msvc2005/copylibs.bat new file mode 100644 index 0000000..0140012 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/copylibs.bat @@ -0,0 +1,16 @@ +@echo off +rem copylibs.bat +rem get the support libraries +rem +setlocal +set EXIV2LIBS=c:\exiv2libs + +xcopy/yesihq %EXIV2LIBS%\expat-2.1.0 ..\..\expat +xcopy/yesihq %EXIV2LIBS%\zlib-1.2.7 ..\..\zlib +xcopy/yesihq %EXIV2LIBS%\openssl-1.0.1j ..\..\openssl +xcopy/yesihq %EXIV2LIBS%\libssh-0.5.5 ..\..\libssh +xcopy/yesihq %EXIV2LIBS%\curl-7.39.0 ..\..\curl + + +rem That's all Folks! +rem ----------------- \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/easyaccess-test/easyaccess-test.vcproj b/vendor/exiv2-0.25/msvc2005/easyaccess-test/easyaccess-test.vcproj new file mode 100644 index 0000000..84f5133 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/easyaccess-test/easyaccess-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exifcomment/exifcomment.vcproj b/vendor/exiv2-0.25/msvc2005/exifcomment/exifcomment.vcproj new file mode 100644 index 0000000..a01aea6 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exifcomment/exifcomment.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exifdata-test/exifdata-test.vcproj b/vendor/exiv2-0.25/msvc2005/exifdata-test/exifdata-test.vcproj new file mode 100644 index 0000000..5299509 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exifdata-test/exifdata-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exifdata/exifdata.vcproj b/vendor/exiv2-0.25/msvc2005/exifdata/exifdata.vcproj new file mode 100755 index 0000000..8d97b23 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exifdata/exifdata.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exifprint/exifprint.vcproj b/vendor/exiv2-0.25/msvc2005/exifprint/exifprint.vcproj new file mode 100644 index 0000000..92d29d5 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exifprint/exifprint.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exifvalue/exifvalue.vcproj b/vendor/exiv2-0.25/msvc2005/exifvalue/exifvalue.vcproj new file mode 100755 index 0000000..e9b4e6d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exifvalue/exifvalue.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exiv2-webready.sln b/vendor/exiv2-0.25/msvc2005/exiv2-webready.sln new file mode 100644 index 0000000..7c9f416 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2-webready.sln @@ -0,0 +1,1071 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexiv2", "libexiv2\libexiv2.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} = {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} = {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2", "exiv2\exiv2.vcproj", "{07293CAC-00DA-493E-90C9-5D010C2B1B53}" + ProjectSection(ProjectDependencies) = postProject + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} = {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} = {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpsdk", "xmpsdk\xmpsdk.vcproj", "{09877CF4-83B6-44FE-A2E2-629AA5C8093E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexpat", "libexpat\libexpat.vcproj", "{6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib1", "zlib\zlib.vcproj", "{8308C68D-E12B-4C71-96F4-7137F6BEB654}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmoddel", "addmoddel\addmoddel.vcproj", "{83914D93-57B3-4718-8A50-662C17C4AE8F}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptctest", "iptctest\iptctest.vcproj", "{AD41F87C-242B-4B61-B767-A9879F0D5C04}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easyaccess-test", "easyaccess-test\easyaccess-test.vcproj", "{30E18D87-0147-4601-9ED2-4D5291645DB3}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "largeiptc-test", "largeiptc-test\largeiptc-test.vcproj", "{953404C9-B20A-4D17-8262-9D9AD1CDC5C1}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert-test", "convert-test\convert-test.vcproj", "{D802FE1E-7868-4034-92B8-00865E1CABAB}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "iotest\iotest.vcproj", "{21F0CEB1-D850-4C29-88BF-1CE4171824E6}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptcprint", "iptcprint\iptcprint.vcproj", "{A7D22798-1262-4194-94A5-C636BCB68329}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "key-test", "key-test\key-test.vcproj", "{F11358FA-AA36-46E1-BA80-A17B8042BF9B}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmap-test", "mmap-test\mmap-test.vcproj", "{556CB4FC-33BB-4E67-AB0E-1865E67176A5}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prevtest", "prevtest\prevtest.vcproj", "{FC7120EC-BEB2-4CC3-9B90-B022F560E584}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stringto-test", "stringto-test\stringto-test.vcproj", "{9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff-test", "tiff-test\tiff-test.vcproj", "{C34B11A1-B707-46B2-8053-2FA236B369CF}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "werror-test", "werror-test\werror-test.vcproj", "{430C4512-CC73-4943-8CDF-71DEA573BD47}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write-test", "write-test\write-test.vcproj", "{98A9F59D-FDFE-4B27-88FE-2625F1E7597F}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write2-test", "write2-test\write2-test.vcproj", "{E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifdata-test", "exifdata-test\exifdata-test.vcproj", "{FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifprint", "exifprint\exifprint.vcproj", "{BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpsample", "xmpsample\xmpsample.vcproj", "{45CA5427-4260-4F4A-86B0-FB7AE233D76B}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpparser-test", "xmpparser-test\xmpparser-test.vcproj", "{85121FD0-01A1-49BA-B168-CC8D90F91A6F}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpparse", "xmpparse\xmpparse.vcproj", "{1708EFC1-414E-4712-80A5-813A6F38814C}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifcomment", "exifcomment\exifcomment.vcproj", "{D291B6EF-986B-4222-ADA6-38A2EC2A56CE}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "metacopy", "metacopy\metacopy.vcproj", "{AD231915-942F-4083-9671-85E26A5798B0}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "path-test", "path-test\path-test.vcproj", "{E04D48BF-F529-4267-9311-908E94DF5A49}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptceasy", "iptceasy\iptceasy.vcproj", "{6860BB9B-2053-46CD-9E2D-EEC199D68982}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "taglist", "taglist\taglist.vcproj", "{DBD630FC-0DA9-41EB-925D-70654D01F6FA}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utiltest", "utiltest\utiltest.vcproj", "{495BC686-DF50-4250-B469-9C6B7B33A4B8}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geotag", "geotag\geotag.vcproj", "{E3073076-4837-4DDB-89E5-5AC297C7481D}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "httptest", "httptest\httptest.vcproj", "{4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}" + ProjectSection(ProjectDependencies) = postProject + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2json", "exiv2json\exiv2json.vcproj", "{4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl\libcurl.vcproj", "{F36F075A-880D-47BA-805F-C47850062121}" + ProjectSection(ProjectDependencies) = postProject + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} = {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} = {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remotetest", "remotetest\remotetest.vcproj", "{B25A3F96-68E8-4FD4-860E-2C33E539B892}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conntest", "conntest\conntest.vcproj", "{E015DB8C-C463-4A6B-88EA-AFC671D84B5B}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {729E4E11-3BBA-4306-B53C-8AEC45E70E10} = {729E4E11-3BBA-4306-B53C-8AEC45E70E10} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {F36F075A-880D-47BA-805F-C47850062121} = {F36F075A-880D-47BA-805F-C47850062121} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libssh", "libssh\libssh.vcproj", "{729E4E11-3BBA-4306-B53C-8AEC45E70E10}" + ProjectSection(ProjectDependencies) = postProject + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} = {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} = {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openssl", "openssl\openssl.vcproj", "{3D77E4F8-02EE-491F-B01C-EE8012CABA18}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay32", "libeay32\libeay32.vcproj", "{2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}" + ProjectSection(ProjectDependencies) = postProject + {3D77E4F8-02EE-491F-B01C-EE8012CABA18} = {3D77E4F8-02EE-491F-B01C-EE8012CABA18} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay32", "ssleay32\ssleay32.vcproj", "{6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}" + ProjectSection(ProjectDependencies) = postProject + {3D77E4F8-02EE-491F-B01C-EE8012CABA18} = {3D77E4F8-02EE-491F-B01C-EE8012CABA18} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifdata", "exifdata\exifdata.vcproj", "{1A091C40-C0F3-4405-B99E-CA60B9855D77}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifvalue", "exifvalue\exifvalue.vcproj", "{B85BDC90-013A-4D6B-B774-F2D7E0067DA6}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + DebugDLL|Win32 = DebugDLL|Win32 + DebugDLL|x64 = DebugDLL|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseDLL|Win32 = ReleaseDLL|Win32 + ReleaseDLL|x64 = ReleaseDLL|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.ActiveCfg = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.Build.0 = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|x64.ActiveCfg = Debug|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|x64.Build.0 = Debug|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|Win32.ActiveCfg = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|Win32.Build.0 = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|x64.ActiveCfg = Release|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|x64.Build.0 = Release|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|Win32.ActiveCfg = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|Win32.Build.0 = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|x64.ActiveCfg = Debug|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|x64.Build.0 = Debug|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|Win32.ActiveCfg = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|Win32.Build.0 = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|x64.ActiveCfg = Release|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|x64.Build.0 = Release|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|Win32.ActiveCfg = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|Win32.Build.0 = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|x64.ActiveCfg = Debug|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|x64.Build.0 = Debug|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|Win32.ActiveCfg = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|Win32.Build.0 = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|x64.ActiveCfg = Release|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|x64.Build.0 = Release|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|Win32.ActiveCfg = Debug|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|Win32.Build.0 = Debug|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|x64.ActiveCfg = Debug|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|x64.Build.0 = Debug|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|Win32.ActiveCfg = Release|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|Win32.Build.0 = Release|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|x64.ActiveCfg = Release|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|x64.Build.0 = Release|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|Win32.ActiveCfg = Debug|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|Win32.Build.0 = Debug|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|x64.ActiveCfg = Debug|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|x64.Build.0 = Debug|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|Win32.ActiveCfg = Release|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|Win32.Build.0 = Release|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|x64.ActiveCfg = Release|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|x64.Build.0 = Release|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|Win32.ActiveCfg = Debug|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|Win32.Build.0 = Debug|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|x64.ActiveCfg = Debug|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|x64.Build.0 = Debug|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|Win32.ActiveCfg = Release|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|Win32.Build.0 = Release|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|x64.ActiveCfg = Release|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|x64.Build.0 = Release|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|Win32.ActiveCfg = Debug|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|Win32.Build.0 = Debug|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|x64.ActiveCfg = Debug|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|x64.Build.0 = Debug|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|Win32.ActiveCfg = Release|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|Win32.Build.0 = Release|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|x64.ActiveCfg = Release|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|x64.Build.0 = Release|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|Win32.ActiveCfg = Debug|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|Win32.Build.0 = Debug|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|x64.ActiveCfg = Debug|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|x64.Build.0 = Debug|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|Win32.ActiveCfg = Release|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|Win32.Build.0 = Release|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|x64.ActiveCfg = Release|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|x64.Build.0 = Release|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|Win32.ActiveCfg = Debug|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|Win32.Build.0 = Debug|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|x64.ActiveCfg = Debug|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|x64.Build.0 = Debug|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|Win32.ActiveCfg = Release|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|Win32.Build.0 = Release|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|x64.ActiveCfg = Release|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|x64.Build.0 = Release|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|Win32.ActiveCfg = Debug|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|Win32.Build.0 = Debug|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|x64.ActiveCfg = Debug|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|x64.Build.0 = Debug|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|Win32.ActiveCfg = Release|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|Win32.Build.0 = Release|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|x64.ActiveCfg = Release|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|x64.Build.0 = Release|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|Win32.Build.0 = Debug|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|x64.ActiveCfg = Debug|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|x64.Build.0 = Debug|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|Win32.ActiveCfg = Release|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|Win32.Build.0 = Release|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|x64.ActiveCfg = Release|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|x64.Build.0 = Release|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|Win32.ActiveCfg = Debug|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|Win32.Build.0 = Debug|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|x64.ActiveCfg = Debug|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|x64.Build.0 = Debug|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|Win32.ActiveCfg = Release|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|Win32.Build.0 = Release|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|x64.ActiveCfg = Release|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|x64.Build.0 = Release|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|Win32.ActiveCfg = Debug|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|Win32.Build.0 = Debug|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|x64.ActiveCfg = Debug|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|x64.Build.0 = Debug|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|Win32.ActiveCfg = Release|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|Win32.Build.0 = Release|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|x64.ActiveCfg = Release|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|x64.Build.0 = Release|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|Win32.Build.0 = Debug|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|x64.ActiveCfg = Debug|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|x64.Build.0 = Debug|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|Win32.ActiveCfg = Release|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|Win32.Build.0 = Release|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|x64.ActiveCfg = Release|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|x64.Build.0 = Release|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|Win32.ActiveCfg = Debug|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|Win32.Build.0 = Debug|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|x64.ActiveCfg = Debug|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|x64.Build.0 = Debug|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|Win32.ActiveCfg = Release|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|Win32.Build.0 = Release|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|x64.ActiveCfg = Release|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|x64.Build.0 = Release|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|Win32.Build.0 = Debug|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|x64.ActiveCfg = Debug|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|x64.Build.0 = Debug|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|Win32.ActiveCfg = Release|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|Win32.Build.0 = Release|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|x64.ActiveCfg = Release|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|x64.Build.0 = Release|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|Win32.ActiveCfg = Debug|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|Win32.Build.0 = Debug|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|x64.ActiveCfg = Debug|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|x64.Build.0 = Debug|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|Win32.ActiveCfg = Release|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|Win32.Build.0 = Release|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|x64.ActiveCfg = Release|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|x64.Build.0 = Release|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|Win32.ActiveCfg = Debug|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|Win32.Build.0 = Debug|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|x64.ActiveCfg = Debug|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|x64.Build.0 = Debug|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|Win32.ActiveCfg = Release|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|Win32.Build.0 = Release|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|x64.ActiveCfg = Release|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|x64.Build.0 = Release|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|Win32.ActiveCfg = Debug|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|Win32.Build.0 = Debug|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|x64.ActiveCfg = Debug|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|x64.Build.0 = Debug|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|Win32.ActiveCfg = Release|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|Win32.Build.0 = Release|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|x64.ActiveCfg = Release|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|x64.Build.0 = Release|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|Win32.ActiveCfg = Debug|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|Win32.Build.0 = Debug|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|x64.ActiveCfg = Debug|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|x64.Build.0 = Debug|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|Win32.ActiveCfg = Release|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|Win32.Build.0 = Release|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|x64.ActiveCfg = Release|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|x64.Build.0 = Release|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|Win32.ActiveCfg = Debug|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|Win32.Build.0 = Debug|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|x64.ActiveCfg = Debug|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|x64.Build.0 = Debug|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|Win32.ActiveCfg = Release|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|Win32.Build.0 = Release|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|x64.ActiveCfg = Release|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|x64.Build.0 = Release|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|Win32.ActiveCfg = Debug|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|Win32.Build.0 = Debug|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|x64.ActiveCfg = Debug|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|x64.Build.0 = Debug|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|Win32.ActiveCfg = Release|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|Win32.Build.0 = Release|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|x64.ActiveCfg = Release|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|x64.Build.0 = Release|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|Win32.ActiveCfg = Debug|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|Win32.Build.0 = Debug|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|x64.ActiveCfg = Debug|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|x64.Build.0 = Debug|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|Win32.ActiveCfg = Release|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|Win32.Build.0 = Release|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|x64.ActiveCfg = Release|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|x64.Build.0 = Release|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|Win32.ActiveCfg = Debug|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|Win32.Build.0 = Debug|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|x64.ActiveCfg = Debug|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|x64.Build.0 = Debug|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|Win32.ActiveCfg = Release|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|Win32.Build.0 = Release|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|x64.ActiveCfg = Release|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|x64.Build.0 = Release|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|Win32.ActiveCfg = Debug|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|Win32.Build.0 = Debug|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|x64.ActiveCfg = Debug|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|x64.Build.0 = Debug|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|Win32.ActiveCfg = Release|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|Win32.Build.0 = Release|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|x64.ActiveCfg = Release|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|x64.Build.0 = Release|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|Win32.ActiveCfg = Debug|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|Win32.Build.0 = Debug|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|x64.ActiveCfg = Debug|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|x64.Build.0 = Debug|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|Win32.ActiveCfg = Release|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|Win32.Build.0 = Release|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|x64.ActiveCfg = Release|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|x64.Build.0 = Release|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|Win32.Build.0 = Debug|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|x64.ActiveCfg = Debug|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|x64.Build.0 = Debug|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|Win32.ActiveCfg = Release|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|Win32.Build.0 = Release|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|x64.ActiveCfg = Release|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|x64.Build.0 = Release|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|Win32.ActiveCfg = Debug|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|Win32.Build.0 = Debug|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|x64.ActiveCfg = Debug|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|x64.Build.0 = Debug|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|Win32.ActiveCfg = Release|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|Win32.Build.0 = Release|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|x64.ActiveCfg = Release|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|x64.Build.0 = Release|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|Win32.ActiveCfg = Debug|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|Win32.Build.0 = Debug|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|x64.ActiveCfg = Debug|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|x64.Build.0 = Debug|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|Win32.ActiveCfg = Release|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|Win32.Build.0 = Release|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|x64.ActiveCfg = Release|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|x64.Build.0 = Release|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|Win32.ActiveCfg = Debug|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|Win32.Build.0 = Debug|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|x64.ActiveCfg = Debug|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|x64.Build.0 = Debug|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|Win32.ActiveCfg = Release|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|Win32.Build.0 = Release|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|x64.ActiveCfg = Release|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|x64.Build.0 = Release|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|Win32.ActiveCfg = Debug|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|Win32.Build.0 = Debug|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|x64.ActiveCfg = Debug|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|x64.Build.0 = Debug|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|Win32.ActiveCfg = Release|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|Win32.Build.0 = Release|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|x64.ActiveCfg = Release|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|x64.Build.0 = Release|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {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 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|Win32.ActiveCfg = Debug|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|Win32.Build.0 = Debug|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|x64.ActiveCfg = Debug|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|x64.Build.0 = Debug|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|Win32.ActiveCfg = Release|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|Win32.Build.0 = Release|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|x64.ActiveCfg = Release|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|x64.Build.0 = Release|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|Win32.ActiveCfg = Debug|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|Win32.Build.0 = Debug|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|x64.ActiveCfg = Debug|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|x64.Build.0 = Debug|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|Win32.ActiveCfg = Release|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|Win32.Build.0 = Release|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|x64.ActiveCfg = Release|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|x64.Build.0 = Release|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {F36F075A-880D-47BA-805F-C47850062121}.Debug|Win32.ActiveCfg = Debug|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.Debug|Win32.Build.0 = Debug|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.Debug|x64.ActiveCfg = Debug|x64 + {F36F075A-880D-47BA-805F-C47850062121}.Debug|x64.Build.0 = Debug|x64 + {F36F075A-880D-47BA-805F-C47850062121}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {F36F075A-880D-47BA-805F-C47850062121}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {F36F075A-880D-47BA-805F-C47850062121}.Release|Win32.ActiveCfg = Release|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.Release|Win32.Build.0 = Release|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.Release|x64.ActiveCfg = Release|x64 + {F36F075A-880D-47BA-805F-C47850062121}.Release|x64.Build.0 = Release|x64 + {F36F075A-880D-47BA-805F-C47850062121}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {F36F075A-880D-47BA-805F-C47850062121}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {F36F075A-880D-47BA-805F-C47850062121}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|Win32.ActiveCfg = Debug|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|Win32.Build.0 = Debug|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|x64.ActiveCfg = Debug|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|x64.Build.0 = Debug|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|Win32.ActiveCfg = Release|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|Win32.Build.0 = Release|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|x64.ActiveCfg = Release|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|x64.Build.0 = Release|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|Win32.ActiveCfg = Debug|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|Win32.Build.0 = Debug|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|x64.ActiveCfg = Debug|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|x64.Build.0 = Debug|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|Win32.ActiveCfg = Release|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|Win32.Build.0 = Release|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|x64.ActiveCfg = Release|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|x64.Build.0 = Release|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Debug|Win32.ActiveCfg = Debug|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Debug|Win32.Build.0 = Debug|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Debug|x64.ActiveCfg = Debug|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Debug|x64.Build.0 = Debug|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Release|Win32.ActiveCfg = Release|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Release|Win32.Build.0 = Release|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Release|x64.ActiveCfg = Release|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.Release|x64.Build.0 = Release|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {729E4E11-3BBA-4306-B53C-8AEC45E70E10}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Debug|Win32.ActiveCfg = Debug|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Debug|Win32.Build.0 = Debug|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Debug|x64.ActiveCfg = Debug|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Debug|x64.Build.0 = Debug|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Release|Win32.ActiveCfg = Release|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Release|Win32.Build.0 = Release|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Release|x64.ActiveCfg = Release|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.Release|x64.Build.0 = Release|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {3D77E4F8-02EE-491F-B01C-EE8012CABA18}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Debug|Win32.ActiveCfg = Debug|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Debug|Win32.Build.0 = Debug|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Debug|x64.ActiveCfg = Debug|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Debug|x64.Build.0 = Debug|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Release|Win32.ActiveCfg = Release|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Release|Win32.Build.0 = Release|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Release|x64.ActiveCfg = Release|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.Release|x64.Build.0 = Release|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {2C117585-9BA4-4BFE-8335-E3E9D51D4DA7}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.Debug|Win32.ActiveCfg = Debug|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.Debug|Win32.Build.0 = Debug|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.Debug|x64.ActiveCfg = Debug|x64 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.Release|Win32.ActiveCfg = Release|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.Release|Win32.Build.0 = Release|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.Release|x64.ActiveCfg = Release|x64 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|Win32.Build.0 = Debug|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|x64.ActiveCfg = Debug|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|x64.Build.0 = Debug|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|Win32.ActiveCfg = Release|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|Win32.Build.0 = Release|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|x64.ActiveCfg = Release|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|x64.Build.0 = Release|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|Win32.ActiveCfg = Debug|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|Win32.Build.0 = Debug|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|x64.ActiveCfg = Debug|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|x64.Build.0 = Debug|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|Win32.ActiveCfg = Release|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|Win32.Build.0 = Release|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|x64.ActiveCfg = Release|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|x64.Build.0 = Release|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/exiv2-0.25/msvc2005/exiv2.sln b/vendor/exiv2-0.25/msvc2005/exiv2.sln new file mode 100644 index 0000000..236e069 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2.sln @@ -0,0 +1,906 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexiv2", "libexiv2\libexiv2.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2", "exiv2\exiv2.vcproj", "{07293CAC-00DA-493E-90C9-5D010C2B1B53}" + ProjectSection(ProjectDependencies) = postProject + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpsdk", "xmpsdk\xmpsdk.vcproj", "{09877CF4-83B6-44FE-A2E2-629AA5C8093E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexpat", "libexpat\libexpat.vcproj", "{6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib1", "zlib\zlib.vcproj", "{8308C68D-E12B-4C71-96F4-7137F6BEB654}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmoddel", "addmoddel\addmoddel.vcproj", "{83914D93-57B3-4718-8A50-662C17C4AE8F}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptctest", "iptctest\iptctest.vcproj", "{AD41F87C-242B-4B61-B767-A9879F0D5C04}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easyaccess-test", "easyaccess-test\easyaccess-test.vcproj", "{30E18D87-0147-4601-9ED2-4D5291645DB3}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "largeiptc-test", "largeiptc-test\largeiptc-test.vcproj", "{953404C9-B20A-4D17-8262-9D9AD1CDC5C1}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert-test", "convert-test\convert-test.vcproj", "{D802FE1E-7868-4034-92B8-00865E1CABAB}" + ProjectSection(ProjectDependencies) = postProject + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "iotest\iotest.vcproj", "{21F0CEB1-D850-4C29-88BF-1CE4171824E6}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptcprint", "iptcprint\iptcprint.vcproj", "{A7D22798-1262-4194-94A5-C636BCB68329}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "key-test", "key-test\key-test.vcproj", "{F11358FA-AA36-46E1-BA80-A17B8042BF9B}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmap-test", "mmap-test\mmap-test.vcproj", "{556CB4FC-33BB-4E67-AB0E-1865E67176A5}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prevtest", "prevtest\prevtest.vcproj", "{FC7120EC-BEB2-4CC3-9B90-B022F560E584}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stringto-test", "stringto-test\stringto-test.vcproj", "{9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff-test", "tiff-test\tiff-test.vcproj", "{C34B11A1-B707-46B2-8053-2FA236B369CF}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "werror-test", "werror-test\werror-test.vcproj", "{430C4512-CC73-4943-8CDF-71DEA573BD47}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write-test", "write-test\write-test.vcproj", "{98A9F59D-FDFE-4B27-88FE-2625F1E7597F}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "write2-test", "write2-test\write2-test.vcproj", "{E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifdata-test", "exifdata-test\exifdata-test.vcproj", "{FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifprint", "exifprint\exifprint.vcproj", "{BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpsample", "xmpsample\xmpsample.vcproj", "{45CA5427-4260-4F4A-86B0-FB7AE233D76B}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpparser-test", "xmpparser-test\xmpparser-test.vcproj", "{85121FD0-01A1-49BA-B168-CC8D90F91A6F}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmpparse", "xmpparse\xmpparse.vcproj", "{1708EFC1-414E-4712-80A5-813A6F38814C}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifcomment", "exifcomment\exifcomment.vcproj", "{D291B6EF-986B-4222-ADA6-38A2EC2A56CE}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "metacopy", "metacopy\metacopy.vcproj", "{AD231915-942F-4083-9671-85E26A5798B0}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "path-test", "path-test\path-test.vcproj", "{E04D48BF-F529-4267-9311-908E94DF5A49}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iptceasy", "iptceasy\iptceasy.vcproj", "{6860BB9B-2053-46CD-9E2D-EEC199D68982}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "taglist", "taglist\taglist.vcproj", "{DBD630FC-0DA9-41EB-925D-70654D01F6FA}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utiltest", "utiltest\utiltest.vcproj", "{495BC686-DF50-4250-B469-9C6B7B33A4B8}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {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}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "httptest", "httptest\httptest.vcproj", "{4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2json", "exiv2json\exiv2json.vcproj", "{4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "remotetest", "remotetest\remotetest.vcproj", "{B25A3F96-68E8-4FD4-860E-2C33E539B892}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "conntest", "conntest\conntest.vcproj", "{E015DB8C-C463-4A6B-88EA-AFC671D84B5B}" + ProjectSection(ProjectDependencies) = postProject + {8308C68D-E12B-4C71-96F4-7137F6BEB654} = {8308C68D-E12B-4C71-96F4-7137F6BEB654} + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} = {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A} + {09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E} + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifdata", "exifdata\exifdata.vcproj", "{1A091C40-C0F3-4405-B99E-CA60B9855D77}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifvalue", "exifvalue\exifvalue.vcproj", "{B85BDC90-013A-4D6B-B774-F2D7E0067DA6}" + ProjectSection(ProjectDependencies) = postProject + {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + DebugDLL|Win32 = DebugDLL|Win32 + DebugDLL|x64 = DebugDLL|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseDLL|Win32 = ReleaseDLL|Win32 + ReleaseDLL|x64 = ReleaseDLL|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.ActiveCfg = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.Build.0 = Debug|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|x64.ActiveCfg = Debug|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|x64.Build.0 = Debug|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|Win32.ActiveCfg = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|Win32.Build.0 = Release|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|x64.ActiveCfg = Release|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Release|x64.Build.0 = Release|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {831EF580-92C8-4CA8-B0CE-3D906280A54D}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|Win32.ActiveCfg = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|Win32.Build.0 = Debug|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|x64.ActiveCfg = Debug|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Debug|x64.Build.0 = Debug|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|Win32.ActiveCfg = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|Win32.Build.0 = Release|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|x64.ActiveCfg = Release|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.Release|x64.Build.0 = Release|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {07293CAC-00DA-493E-90C9-5D010C2B1B53}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|Win32.ActiveCfg = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|Win32.Build.0 = Debug|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|x64.ActiveCfg = Debug|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Debug|x64.Build.0 = Debug|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|Win32.ActiveCfg = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|Win32.Build.0 = Release|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|x64.ActiveCfg = Release|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.Release|x64.Build.0 = Release|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {09877CF4-83B6-44FE-A2E2-629AA5C8093E}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|Win32.ActiveCfg = Debug|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|Win32.Build.0 = Debug|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|x64.ActiveCfg = Debug|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Debug|x64.Build.0 = Debug|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|Win32.ActiveCfg = Release|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|Win32.Build.0 = Release|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|x64.ActiveCfg = Release|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.Release|x64.Build.0 = Release|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|Win32.ActiveCfg = Debug|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|Win32.Build.0 = Debug|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|x64.ActiveCfg = Debug|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Debug|x64.Build.0 = Debug|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|Win32.ActiveCfg = Release|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|Win32.Build.0 = Release|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|x64.ActiveCfg = Release|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.Release|x64.Build.0 = Release|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {8308C68D-E12B-4C71-96F4-7137F6BEB654}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|Win32.ActiveCfg = Debug|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|Win32.Build.0 = Debug|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|x64.ActiveCfg = Debug|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Debug|x64.Build.0 = Debug|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|Win32.ActiveCfg = Release|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|Win32.Build.0 = Release|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|x64.ActiveCfg = Release|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.Release|x64.Build.0 = Release|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {83914D93-57B3-4718-8A50-662C17C4AE8F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|Win32.ActiveCfg = Debug|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|Win32.Build.0 = Debug|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|x64.ActiveCfg = Debug|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Debug|x64.Build.0 = Debug|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|Win32.ActiveCfg = Release|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|Win32.Build.0 = Release|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|x64.ActiveCfg = Release|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.Release|x64.Build.0 = Release|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {AD41F87C-242B-4B61-B767-A9879F0D5C04}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|Win32.ActiveCfg = Debug|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|Win32.Build.0 = Debug|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|x64.ActiveCfg = Debug|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Debug|x64.Build.0 = Debug|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|Win32.ActiveCfg = Release|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|Win32.Build.0 = Release|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|x64.ActiveCfg = Release|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.Release|x64.Build.0 = Release|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {30E18D87-0147-4601-9ED2-4D5291645DB3}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|Win32.ActiveCfg = Debug|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|Win32.Build.0 = Debug|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|x64.ActiveCfg = Debug|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Debug|x64.Build.0 = Debug|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|Win32.ActiveCfg = Release|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|Win32.Build.0 = Release|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|x64.ActiveCfg = Release|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.Release|x64.Build.0 = Release|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {953404C9-B20A-4D17-8262-9D9AD1CDC5C1}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|Win32.ActiveCfg = Debug|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|Win32.Build.0 = Debug|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|x64.ActiveCfg = Debug|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Debug|x64.Build.0 = Debug|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|Win32.ActiveCfg = Release|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|Win32.Build.0 = Release|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|x64.ActiveCfg = Release|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.Release|x64.Build.0 = Release|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {D802FE1E-7868-4034-92B8-00865E1CABAB}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|Win32.Build.0 = Debug|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|x64.ActiveCfg = Debug|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Debug|x64.Build.0 = Debug|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|Win32.ActiveCfg = Release|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|Win32.Build.0 = Release|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|x64.ActiveCfg = Release|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.Release|x64.Build.0 = Release|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {21F0CEB1-D850-4C29-88BF-1CE4171824E6}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|Win32.ActiveCfg = Debug|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|Win32.Build.0 = Debug|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|x64.ActiveCfg = Debug|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Debug|x64.Build.0 = Debug|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|Win32.ActiveCfg = Release|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|Win32.Build.0 = Release|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|x64.ActiveCfg = Release|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.Release|x64.Build.0 = Release|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {A7D22798-1262-4194-94A5-C636BCB68329}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|Win32.ActiveCfg = Debug|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|Win32.Build.0 = Debug|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|x64.ActiveCfg = Debug|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Debug|x64.Build.0 = Debug|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|Win32.ActiveCfg = Release|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|Win32.Build.0 = Release|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|x64.ActiveCfg = Release|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.Release|x64.Build.0 = Release|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {F11358FA-AA36-46E1-BA80-A17B8042BF9B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|Win32.Build.0 = Debug|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|x64.ActiveCfg = Debug|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Debug|x64.Build.0 = Debug|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|Win32.ActiveCfg = Release|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|Win32.Build.0 = Release|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|x64.ActiveCfg = Release|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.Release|x64.Build.0 = Release|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {556CB4FC-33BB-4E67-AB0E-1865E67176A5}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|Win32.ActiveCfg = Debug|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|Win32.Build.0 = Debug|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|x64.ActiveCfg = Debug|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Debug|x64.Build.0 = Debug|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|Win32.ActiveCfg = Release|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|Win32.Build.0 = Release|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|x64.ActiveCfg = Release|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.Release|x64.Build.0 = Release|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {FC7120EC-BEB2-4CC3-9B90-B022F560E584}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|Win32.ActiveCfg = Debug|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|Win32.Build.0 = Debug|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|x64.ActiveCfg = Debug|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Debug|x64.Build.0 = Debug|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|Win32.ActiveCfg = Release|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|Win32.Build.0 = Release|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|x64.ActiveCfg = Release|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.Release|x64.Build.0 = Release|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {9DCEE051-A07B-4C6B-B2BC-0814F0C323AA}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|Win32.ActiveCfg = Debug|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|Win32.Build.0 = Debug|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|x64.ActiveCfg = Debug|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Debug|x64.Build.0 = Debug|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|Win32.ActiveCfg = Release|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|Win32.Build.0 = Release|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|x64.ActiveCfg = Release|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.Release|x64.Build.0 = Release|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {C34B11A1-B707-46B2-8053-2FA236B369CF}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|Win32.ActiveCfg = Debug|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|Win32.Build.0 = Debug|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|x64.ActiveCfg = Debug|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Debug|x64.Build.0 = Debug|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|Win32.ActiveCfg = Release|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|Win32.Build.0 = Release|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|x64.ActiveCfg = Release|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.Release|x64.Build.0 = Release|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {430C4512-CC73-4943-8CDF-71DEA573BD47}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|Win32.ActiveCfg = Debug|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|Win32.Build.0 = Debug|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|x64.ActiveCfg = Debug|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Debug|x64.Build.0 = Debug|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|Win32.ActiveCfg = Release|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|Win32.Build.0 = Release|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|x64.ActiveCfg = Release|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.Release|x64.Build.0 = Release|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {98A9F59D-FDFE-4B27-88FE-2625F1E7597F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|Win32.ActiveCfg = Debug|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|Win32.Build.0 = Debug|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|x64.ActiveCfg = Debug|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Debug|x64.Build.0 = Debug|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|Win32.ActiveCfg = Release|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|Win32.Build.0 = Release|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|x64.ActiveCfg = Release|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.Release|x64.Build.0 = Release|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|Win32.ActiveCfg = Debug|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|Win32.Build.0 = Debug|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|x64.ActiveCfg = Debug|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Debug|x64.Build.0 = Debug|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|Win32.ActiveCfg = Release|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|Win32.Build.0 = Release|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|x64.ActiveCfg = Release|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.Release|x64.Build.0 = Release|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {FEF9C19E-F774-4D8A-991C-A566C1B2E8B6}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|Win32.ActiveCfg = Debug|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|Win32.Build.0 = Debug|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|x64.ActiveCfg = Debug|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Debug|x64.Build.0 = Debug|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|Win32.ActiveCfg = Release|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|Win32.Build.0 = Release|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|x64.ActiveCfg = Release|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.Release|x64.Build.0 = Release|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|Win32.ActiveCfg = Debug|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|Win32.Build.0 = Debug|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|x64.ActiveCfg = Debug|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Debug|x64.Build.0 = Debug|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|Win32.ActiveCfg = Release|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|Win32.Build.0 = Release|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|x64.ActiveCfg = Release|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.Release|x64.Build.0 = Release|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {45CA5427-4260-4F4A-86B0-FB7AE233D76B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|Win32.ActiveCfg = Debug|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|Win32.Build.0 = Debug|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|x64.ActiveCfg = Debug|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Debug|x64.Build.0 = Debug|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|Win32.ActiveCfg = Release|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|Win32.Build.0 = Release|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|x64.ActiveCfg = Release|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.Release|x64.Build.0 = Release|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {85121FD0-01A1-49BA-B168-CC8D90F91A6F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|Win32.ActiveCfg = Debug|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|Win32.Build.0 = Debug|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|x64.ActiveCfg = Debug|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Debug|x64.Build.0 = Debug|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|Win32.ActiveCfg = Release|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|Win32.Build.0 = Release|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|x64.ActiveCfg = Release|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.Release|x64.Build.0 = Release|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {1708EFC1-414E-4712-80A5-813A6F38814C}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|Win32.ActiveCfg = Debug|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|Win32.Build.0 = Debug|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|x64.ActiveCfg = Debug|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Debug|x64.Build.0 = Debug|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|Win32.ActiveCfg = Release|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|Win32.Build.0 = Release|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|x64.ActiveCfg = Release|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.Release|x64.Build.0 = Release|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {D291B6EF-986B-4222-ADA6-38A2EC2A56CE}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|Win32.Build.0 = Debug|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|x64.ActiveCfg = Debug|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Debug|x64.Build.0 = Debug|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|Win32.ActiveCfg = Release|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|Win32.Build.0 = Release|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|x64.ActiveCfg = Release|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.Release|x64.Build.0 = Release|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {AD231915-942F-4083-9671-85E26A5798B0}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|Win32.ActiveCfg = Debug|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|Win32.Build.0 = Debug|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|x64.ActiveCfg = Debug|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Debug|x64.Build.0 = Debug|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|Win32.ActiveCfg = Release|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|Win32.Build.0 = Release|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|x64.ActiveCfg = Release|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.Release|x64.Build.0 = Release|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E04D48BF-F529-4267-9311-908E94DF5A49}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|Win32.ActiveCfg = Debug|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|Win32.Build.0 = Debug|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|x64.ActiveCfg = Debug|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Debug|x64.Build.0 = Debug|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|Win32.ActiveCfg = Release|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|Win32.Build.0 = Release|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|x64.ActiveCfg = Release|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.Release|x64.Build.0 = Release|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {6860BB9B-2053-46CD-9E2D-EEC199D68982}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|Win32.ActiveCfg = Debug|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|Win32.Build.0 = Debug|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|x64.ActiveCfg = Debug|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Debug|x64.Build.0 = Debug|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|Win32.ActiveCfg = Release|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|Win32.Build.0 = Release|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|x64.ActiveCfg = Release|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.Release|x64.Build.0 = Release|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {DBD630FC-0DA9-41EB-925D-70654D01F6FA}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|Win32.ActiveCfg = Debug|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|Win32.Build.0 = Debug|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|x64.ActiveCfg = Debug|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Debug|x64.Build.0 = Debug|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|Win32.ActiveCfg = Release|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|Win32.Build.0 = Release|Win32 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|x64.ActiveCfg = Release|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.Release|x64.Build.0 = Release|x64 + {495BC686-DF50-4250-B469-9C6B7B33A4B8}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {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 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|Win32.ActiveCfg = Debug|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|Win32.Build.0 = Debug|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|x64.ActiveCfg = Debug|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Debug|x64.Build.0 = Debug|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|Win32.ActiveCfg = Release|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|Win32.Build.0 = Release|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|x64.ActiveCfg = Release|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.Release|x64.Build.0 = Release|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|Win32.ActiveCfg = Debug|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|Win32.Build.0 = Debug|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|x64.ActiveCfg = Debug|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Debug|x64.Build.0 = Debug|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|Win32.ActiveCfg = Release|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|Win32.Build.0 = Release|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|x64.ActiveCfg = Release|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.Release|x64.Build.0 = Release|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|Win32.ActiveCfg = Debug|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|Win32.Build.0 = Debug|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|x64.ActiveCfg = Debug|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Debug|x64.Build.0 = Debug|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|Win32.ActiveCfg = Release|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|Win32.Build.0 = Release|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|x64.ActiveCfg = Release|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.Release|x64.Build.0 = Release|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {B25A3F96-68E8-4FD4-860E-2C33E539B892}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|Win32.ActiveCfg = Debug|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|Win32.Build.0 = Debug|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|x64.ActiveCfg = Debug|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Debug|x64.Build.0 = Debug|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|Win32.ActiveCfg = Release|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|Win32.Build.0 = Release|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|x64.ActiveCfg = Release|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.Release|x64.Build.0 = Release|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E015DB8C-C463-4A6B-88EA-AFC671D84B5B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|Win32.Build.0 = Debug|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|x64.ActiveCfg = Debug|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Debug|x64.Build.0 = Debug|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|Win32.ActiveCfg = Release|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|Win32.Build.0 = Release|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|x64.ActiveCfg = Release|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.Release|x64.Build.0 = Release|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {1A091C40-C0F3-4405-B99E-CA60B9855D77}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|Win32.ActiveCfg = Debug|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|Win32.Build.0 = Debug|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|x64.ActiveCfg = Debug|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Debug|x64.Build.0 = Debug|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|Win32.ActiveCfg = Release|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|Win32.Build.0 = Release|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|x64.ActiveCfg = Release|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.Release|x64.Build.0 = Release|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {B85BDC90-013A-4D6B-B774-F2D7E0067DA6}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/exiv2-0.25/msvc2005/exiv2.vsprops b/vendor/exiv2-0.25/msvc2005/exiv2.vsprops new file mode 100644 index 0000000..a7ad2ea --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2.vsprops @@ -0,0 +1,19 @@ + + + + + + + + + diff --git a/vendor/exiv2-0.25/msvc2005/exiv2/cleaner.bat b/vendor/exiv2-0.25/msvc2005/exiv2/cleaner.bat new file mode 100644 index 0000000..778d276 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2/cleaner.bat @@ -0,0 +1,2 @@ +del/s *.vcxproj *.ncb *.user *.filters *.sdf +for /r %d in (build,win32,x64) do rmdir/s/q %d diff --git a/vendor/exiv2-0.25/msvc2005/exiv2/exiv2.vcproj b/vendor/exiv2-0.25/msvc2005/exiv2/exiv2.vcproj new file mode 100644 index 0000000..c2d7420 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2/exiv2.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exiv2json/exiv2json.vcproj b/vendor/exiv2-0.25/msvc2005/exiv2json/exiv2json.vcproj new file mode 100644 index 0000000..22133f0 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2json/exiv2json.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/exiv2lib/exiv2lib.vcproj b/vendor/exiv2-0.25/msvc2005/exiv2lib/exiv2lib.vcproj new file mode 100644 index 0000000..18ebce6 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/exiv2lib/exiv2lib.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/expat/expat.vcproj b/vendor/exiv2-0.25/msvc2005/expat/expat.vcproj new file mode 100644 index 0000000..d19056d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/expat/expat.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/expat201/expat.vcproj b/vendor/exiv2-0.25/msvc2005/expat201/expat.vcproj new file mode 100644 index 0000000..367dce5 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/expat201/expat.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/expat210/expat.vcproj b/vendor/exiv2-0.25/msvc2005/expat210/expat.vcproj new file mode 100644 index 0000000..cdfd05b --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/expat210/expat.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/geotag/geotag.vcproj b/vendor/exiv2-0.25/msvc2005/geotag/geotag.vcproj new file mode 100644 index 0000000..a39ca80 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/geotag/geotag.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/httptest/httptest.vcproj b/vendor/exiv2-0.25/msvc2005/httptest/httptest.vcproj new file mode 100644 index 0000000..eb15c14 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/httptest/httptest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/iotest/iotest.vcproj b/vendor/exiv2-0.25/msvc2005/iotest/iotest.vcproj new file mode 100644 index 0000000..811e0d9 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/iotest/iotest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/iptceasy/iptceasy.vcproj b/vendor/exiv2-0.25/msvc2005/iptceasy/iptceasy.vcproj new file mode 100644 index 0000000..22f9f4c --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/iptceasy/iptceasy.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/iptcprint/iptcprint.vcproj b/vendor/exiv2-0.25/msvc2005/iptcprint/iptcprint.vcproj new file mode 100644 index 0000000..5575141 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/iptcprint/iptcprint.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/iptctest/iptctest.vcproj b/vendor/exiv2-0.25/msvc2005/iptctest/iptctest.vcproj new file mode 100644 index 0000000..14504db --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/iptctest/iptctest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/key-test/key-test.vcproj b/vendor/exiv2-0.25/msvc2005/key-test/key-test.vcproj new file mode 100644 index 0000000..701b7f9 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/key-test/key-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/largeiptc-test/largeiptc-test.vcproj b/vendor/exiv2-0.25/msvc2005/largeiptc-test/largeiptc-test.vcproj new file mode 100644 index 0000000..adc8597 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/largeiptc-test/largeiptc-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/libcurl/libcurl.vcproj b/vendor/exiv2-0.25/msvc2005/libcurl/libcurl.vcproj new file mode 100644 index 0000000..abf01bb --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libcurl/libcurl.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/libeay32/build_libeay32.bat b/vendor/exiv2-0.25/msvc2005/libeay32/build_libeay32.bat new file mode 100644 index 0000000..fb33956 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libeay32/build_libeay32.bat @@ -0,0 +1,55 @@ +@echo off +echo +++ +echo +++ building %*+++ +echo +++ + +setlocal ENABLEEXTENSIONS + +set PLATFORM=%1 +set CONFIG=%2 +set OutDir=%3 +set VCInstallDir=%4 +set ProjectDir=%5 +set SolutionDir=%6 +set Action=%7 + +echo +++ PLATFORM = %PLATFORM% +echo +++ CONFIG = %CONFIG% +echo +++ OutDir = %OutDir% +echo +++ VCInstallDir = %VCInstallDir% +echo +++ ProjectDir = %ProjectDir% +echo +++ SolutionDir = %SolutionDir% +echo +++ Action = %Action% +echo +++ +echo. + +@echo on +cd %PROJECTDIR%..\..\..\openssl +set BUILD=0 +if %ACTION% == rebuild set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ssleay32.lib set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\libeay32.lib set BUILD=build +if %BUILD% == 0 GOTO POSTPROCESS + + +set SHARED=shared +if %CONFIG% == Debug set SHARED=no-shared +if %CONFIG% == Release set SHARED=no-shared + +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ mkdir %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + + copy/y %ProjectDir%..\openssl\%PLATFORM%\%CONFIG%\lib\*.lib %SolutionDir%bin\%PLATFORM%\%CONFIG%\ +if %SHARED% == shared copy/y %ProjectDir%..\openssl\%PLATFORM%\%CONFIG%\bin\*.dll %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + +:POSTPROCESS + +set ERRORLEVEL=0 +echo OK +goto EOF + +:ERROR +set ERRORLEVEL=911 + +:EOF +rem That's all Folks +rem ---------------- diff --git a/vendor/exiv2-0.25/msvc2005/libeay32/libeay32.vcproj b/vendor/exiv2-0.25/msvc2005/libeay32/libeay32.vcproj new file mode 100644 index 0000000..b990f56 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libeay32/libeay32.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/libexiv2/build_libeay32.bat b/vendor/exiv2-0.25/msvc2005/libexiv2/build_libeay32.bat new file mode 100644 index 0000000..fb33956 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libexiv2/build_libeay32.bat @@ -0,0 +1,55 @@ +@echo off +echo +++ +echo +++ building %*+++ +echo +++ + +setlocal ENABLEEXTENSIONS + +set PLATFORM=%1 +set CONFIG=%2 +set OutDir=%3 +set VCInstallDir=%4 +set ProjectDir=%5 +set SolutionDir=%6 +set Action=%7 + +echo +++ PLATFORM = %PLATFORM% +echo +++ CONFIG = %CONFIG% +echo +++ OutDir = %OutDir% +echo +++ VCInstallDir = %VCInstallDir% +echo +++ ProjectDir = %ProjectDir% +echo +++ SolutionDir = %SolutionDir% +echo +++ Action = %Action% +echo +++ +echo. + +@echo on +cd %PROJECTDIR%..\..\..\openssl +set BUILD=0 +if %ACTION% == rebuild set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ssleay32.lib set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\libeay32.lib set BUILD=build +if %BUILD% == 0 GOTO POSTPROCESS + + +set SHARED=shared +if %CONFIG% == Debug set SHARED=no-shared +if %CONFIG% == Release set SHARED=no-shared + +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ mkdir %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + + copy/y %ProjectDir%..\openssl\%PLATFORM%\%CONFIG%\lib\*.lib %SolutionDir%bin\%PLATFORM%\%CONFIG%\ +if %SHARED% == shared copy/y %ProjectDir%..\openssl\%PLATFORM%\%CONFIG%\bin\*.dll %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + +:POSTPROCESS + +set ERRORLEVEL=0 +echo OK +goto EOF + +:ERROR +set ERRORLEVEL=911 + +:EOF +rem That's all Folks +rem ---------------- diff --git a/vendor/exiv2-0.25/msvc2005/libexiv2/libeay32.vcproj b/vendor/exiv2-0.25/msvc2005/libexiv2/libeay32.vcproj new file mode 100644 index 0000000..b990f56 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libexiv2/libeay32.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/libexiv2/libexiv2.vcproj b/vendor/exiv2-0.25/msvc2005/libexiv2/libexiv2.vcproj new file mode 100644 index 0000000..cd7ea5e --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libexiv2/libexiv2.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/libexpat/libexpat.vcproj b/vendor/exiv2-0.25/msvc2005/libexpat/libexpat.vcproj new file mode 100644 index 0000000..b129b53 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libexpat/libexpat.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/libssh/include/config.h b/vendor/exiv2-0.25/msvc2005/libssh/include/config.h new file mode 100644 index 0000000..0f0b503 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libssh/include/config.h @@ -0,0 +1,144 @@ +#ifdef _MSC_VER +#include +#define strdup _strdup +#define close _close +#include // for snprintf (C99) +#define snprintf _snprintf +#endif + +/* Name of package */ +#define PACKAGE "libssh" + +/* Version number of package */ +#define VERSION "0.5.5" + +/* #undef LOCALEDIR */ +#define DATADIR "/usr/local/share/libssh" +#define LIBDIR "/usr/local/lib" +#define PLUGINDIR "/usr/local/lib/libssh-4" +#define SYSCONFDIR "/usr/local/etc" + +// TODO: fix and document this in msvc2005/ReadMe.txt +#define BINARYDIR "/c/Users/rmills/gnu/libssh/build" +#define SOURCEDIR "/c/Users/rmills/gnu/libssh/libssh-0.5.5" + +// Visual Studio 2012 supports ntohll +#if _MSC_VER >= 1700 +#define HAVE_NTOHLL 1 +#endif + + +/************************** HEADER FILES *************************/ + +/* Define to 1 if you have the header file. */ +#define HAVE_ARGP_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PTY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_OPENSSL_AES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WSPIAPI_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_OPENSSL_BLOWFISH_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_OPENSSL_DES_H 1 + +/* Define to 1 if you have the header file. */ +//#define HAVE_PTHREAD_H 1 + + +/*************************** FUNCTIONS ***************************/ + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* Define to 1 if you have the `_snprintf' function. */ +/* #undef HAVE__SNPRINTF */ + +/* Define to 1 if you have the `_snprintf_s' function. */ +/* #undef HAVE__SNPRINTF_S */ + +/* Define to 1 if you have the `vsnprintf' function. */ +#define HAVE_VSNPRINTF 1 + +/* Define to 1 if you have the `_vsnprintf' function. */ +/* #undef HAVE__VSNPRINTF */ + +/* Define to 1 if you have the `_vsnprintf_s' function. */ +/* #undef HAVE__VSNPRINTF_S */ + +/* Define to 1 if you have the `strncpy' function. */ +#define HAVE_STRNCPY 1 + +/* Define to 1 if you have the `cfmakeraw' function. */ +#define HAVE_CFMAKERAW 1 + +/* Define to 1 if you have the `getaddrinfo' function. */ +#define HAVE_GETADDRINFO 1 + +/* Define to 1 if you have the `poll' function. */ +//#define HAVE_POLL 1 + +/* Define to 1 if you have the `select' function. */ +#define HAVE_SELECT 1 + +/* Define to 1 if you have the `regcomp' function. */ +#define HAVE_REGCOMP 1 + +/* Define to 1 if you have the `clock_gettime' function. */ +//#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the `ntohll' function. */ +/* #undef HAVE_NTOHLL */ + +/*************************** LIBRARIES ***************************/ + +/* Define to 1 if you have the `crypto' library (-lcrypto). */ +#define HAVE_LIBCRYPTO 1 + +/* Define to 1 if you have the `gcrypt' library (-lgcrypt). */ +/* #undef HAVE_LIBGCRYPT */ + +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +//#define HAVE_PTHREAD 1 + + +/**************************** OPTIONS ****************************/ + +/* Define to 1 if you want to enable ZLIB */ +#define WITH_LIBZ 1 + +/* Define to 1 if you want to enable SFTP */ +#define WITH_SFTP 1 + +/* Define to 1 if you want to enable SSH1 */ +/* #undef WITH_SSH1 */ + +/* Define to 1 if you want to enable server support */ +#define WITH_SERVER 1 + +/* Define to 1 if you want to enable debug output for crypto functions */ +/* #undef DEBUG_CRYPTO */ + +/* Define to 1 if you want to enable pcap output support (experimental) */ +#define WITH_PCAP 1 + +/* Define to 1 if you want to enable calltrace debug output */ +#define DEBUG_CALLTRACE 1 + +/*************************** ENDIAN *****************************/ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +/* #undef WORDS_BIGENDIAN */ diff --git a/vendor/exiv2-0.25/msvc2005/libssh/libssh.vcproj b/vendor/exiv2-0.25/msvc2005/libssh/libssh.vcproj new file mode 100644 index 0000000..b65cb80 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/libssh/libssh.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/metacopy/metacopy.vcproj b/vendor/exiv2-0.25/msvc2005/metacopy/metacopy.vcproj new file mode 100644 index 0000000..cbab8ab --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/metacopy/metacopy.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/mmap-test/mmap-test.vcproj b/vendor/exiv2-0.25/msvc2005/mmap-test/mmap-test.vcproj new file mode 100644 index 0000000..826257f --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/mmap-test/mmap-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/openssl/build_openssl.bat b/vendor/exiv2-0.25/msvc2005/openssl/build_openssl.bat new file mode 100644 index 0000000..525b6bd --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/openssl/build_openssl.bat @@ -0,0 +1,80 @@ +@echo off +echo +++ +echo +++ building %* +++ +echo +++ + +setlocal ENABLEEXTENSIONS + +set PLATFORM=%1 +set CONFIG=%2 +set OutDir=%3 +set VCInstallDir=%4 +set ProjectDir=%5 +set SolutionDir=%6 +set Action=%7 + +echo +++ PLATFORM = %PLATFORM% +echo +++ CONFIG = %CONFIG% +echo +++ OutDir = %OutDir% +echo +++ VCInstallDir = %VCInstallDir% +echo +++ ProjectDir = %ProjectDir% +echo +++ SolutionDir = %SolutionDir% +echo +++ Action = %Action% +echo +++ +echo. + +perl --version > nul 2> nul +if ERRORLEVEL 1 ( + echo perl is not available + goto ERROR +) + +if NOT EXIST %PROJECTDIR%\..\..\..\openssl ( + echo %PROJECTDIR%\..\..\..\openssl does not exist + goto ERROR +) + +@echo on +cd %PROJECTDIR%..\..\..\openssl +set BUILD=0 +if %ACTION% == rebuild set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ssleay32.lib set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\libeay32.lib set BUILD=build +if %BUILD% == 0 GOTO POSTPROCESS + +set VCVARS=vcvars32.bat +set VCCONFIG=VC-WIN32 +set DO=ms\do_ms.bat +if %PLATFORM% == x64 ( + set VCCONFIG=VC-WIN64A + set VCVARS=x86_amd64\vcvarsx86_amd64.bat + SET DO=ms\do_win64a.bat +) +call %VCInstallDir%\bin\%VCVARS% + +set SHARED=shared +if %CONFIG% == Debug set SHARED=no-shared +if %CONFIG% == Release set SHARED=no-shared + +set MAKEFILE=ms\ntdll.mak +if %SHARED% == no-shared set MAKEFILE=ms\nt.mak +perl Configure %VCCONFIG% no-asm %SHARED% --prefix=%ProjectDir%%PLATFORM%\%CONFIG% +call %DO% +nmake -f %MAKEFILE% +nmake -f %MAKEFILE% install +nmake -f %MAKEFILE% clean + +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ mkdir %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + copy/y %ProjectDir%%PLATFORM%\%CONFIG%\lib\*.lib %SolutionDir%bin\%PLATFORM%\%CONFIG%\ +if %SHARED% == shared copy/y %ProjectDir%%PLATFORM%\%CONFIG%\bin\*.dll %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + +:POSTPROCESS +set ERRORLEVEL=0 +goto EOF + +:ERROR +set ERRORLEVEL=911 + +:EOF +rem That's all Folks +rem ---------------- diff --git a/vendor/exiv2-0.25/msvc2005/openssl/openssl.vcproj b/vendor/exiv2-0.25/msvc2005/openssl/openssl.vcproj new file mode 100644 index 0000000..fbc9659 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/openssl/openssl.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/path-test/path-test.vcproj b/vendor/exiv2-0.25/msvc2005/path-test/path-test.vcproj new file mode 100644 index 0000000..c71df46 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/path-test/path-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/prevtest/prevtest.vcproj b/vendor/exiv2-0.25/msvc2005/prevtest/prevtest.vcproj new file mode 100644 index 0000000..45357a9 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/prevtest/prevtest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/remotetest/remotetest.vcproj b/vendor/exiv2-0.25/msvc2005/remotetest/remotetest.vcproj new file mode 100644 index 0000000..596de9c --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/remotetest/remotetest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/ssleay32/build_ssleay32.bat b/vendor/exiv2-0.25/msvc2005/ssleay32/build_ssleay32.bat new file mode 100644 index 0000000..fb33956 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/ssleay32/build_ssleay32.bat @@ -0,0 +1,55 @@ +@echo off +echo +++ +echo +++ building %*+++ +echo +++ + +setlocal ENABLEEXTENSIONS + +set PLATFORM=%1 +set CONFIG=%2 +set OutDir=%3 +set VCInstallDir=%4 +set ProjectDir=%5 +set SolutionDir=%6 +set Action=%7 + +echo +++ PLATFORM = %PLATFORM% +echo +++ CONFIG = %CONFIG% +echo +++ OutDir = %OutDir% +echo +++ VCInstallDir = %VCInstallDir% +echo +++ ProjectDir = %ProjectDir% +echo +++ SolutionDir = %SolutionDir% +echo +++ Action = %Action% +echo +++ +echo. + +@echo on +cd %PROJECTDIR%..\..\..\openssl +set BUILD=0 +if %ACTION% == rebuild set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ssleay32.lib set BUILD=build +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\libeay32.lib set BUILD=build +if %BUILD% == 0 GOTO POSTPROCESS + + +set SHARED=shared +if %CONFIG% == Debug set SHARED=no-shared +if %CONFIG% == Release set SHARED=no-shared + +if NOT EXIST %SolutionDir%bin\%PLATFORM%\%CONFIG%\ mkdir %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + + copy/y %ProjectDir%..\openssl\%PLATFORM%\%CONFIG%\lib\*.lib %SolutionDir%bin\%PLATFORM%\%CONFIG%\ +if %SHARED% == shared copy/y %ProjectDir%..\openssl\%PLATFORM%\%CONFIG%\bin\*.dll %SolutionDir%bin\%PLATFORM%\%CONFIG%\ + +:POSTPROCESS + +set ERRORLEVEL=0 +echo OK +goto EOF + +:ERROR +set ERRORLEVEL=911 + +:EOF +rem That's all Folks +rem ---------------- diff --git a/vendor/exiv2-0.25/msvc2005/ssleay32/ssleay32.vcproj b/vendor/exiv2-0.25/msvc2005/ssleay32/ssleay32.vcproj new file mode 100644 index 0000000..2727eca --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/ssleay32/ssleay32.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/stringto-test/stringto-test.vcproj b/vendor/exiv2-0.25/msvc2005/stringto-test/stringto-test.vcproj new file mode 100644 index 0000000..db2dca0 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/stringto-test/stringto-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/taglist/taglist.vcproj b/vendor/exiv2-0.25/msvc2005/taglist/taglist.vcproj new file mode 100644 index 0000000..def7424 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/taglist/taglist.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/testimages/test.jpg b/vendor/exiv2-0.25/msvc2005/testimages/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa0e7bbf7ea8504fd3ddb3931b0d9ee350e760d1 GIT binary patch literal 20599 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 N&Pn?BqKYUH|Jj(aBuxMS literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/testimages/test.png b/vendor/exiv2-0.25/msvc2005/testimages/test.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc802ac1a222125494d64e65feede941775dbd8 GIT binary patch literal 135047 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]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 LNkvXXu0mjfn3*bt literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/testimages/test.tiff b/vendor/exiv2-0.25/msvc2005/testimages/test.tiff new file mode 100644 index 0000000000000000000000000000000000000000..f2b19fa7c27dbac68d6c37060c4cd2cd318b0cdf GIT binary patch literal 194752 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 z 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 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/tiff-test/tiff-test.vcproj b/vendor/exiv2-0.25/msvc2005/tiff-test/tiff-test.vcproj new file mode 100644 index 0000000..02d84a0 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tiff-test/tiff-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/tools/bin/depends32.exe b/vendor/exiv2-0.25/msvc2005/tools/bin/depends32.exe new file mode 100644 index 0000000000000000000000000000000000000000..b52d37c2821e74177ad022c20701f293eed65279 GIT binary patch literal 68608 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 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/tools/bin/depends64.exe b/vendor/exiv2-0.25/msvc2005/tools/bin/depends64.exe new file mode 100644 index 0000000000000000000000000000000000000000..9f14207a994f5c0320e3399ff1daf38221176f61 GIT binary patch literal 75776 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 MU;}sn|0&P^1DquV-2eap literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/tools/bin/sed.exe b/vendor/exiv2-0.25/msvc2005/tools/bin/sed.exe new file mode 100755 index 0000000000000000000000000000000000000000..0390cb858f94dae2e8d6900506d2e0ddf2209562 GIT binary patch literal 49152 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 KZ73}tmHS^gc&dy5 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/Depends2.suo b/vendor/exiv2-0.25/msvc2005/tools/depends/Depends2.suo new file mode 100644 index 0000000000000000000000000000000000000000..f1ecba26e7c60bb3d9bba7b20f0f8b5a3b413627 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/ReadMe.txt b/vendor/exiv2-0.25/msvc2005/tools/depends/ReadMe.txt new file mode 100644 index 0000000..cb7ce89 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/ReadMe.txt @@ -0,0 +1,13 @@ +Depends/ReadMe.txt +------------------ + +This project is "depends" and is code from MSJ (now MSDN) in 1997. I appreciate and respect the code provided by Matt Pietrik. I have made the following changes: +1) Added the -q option +2) Added the MSVC build environment (for 32bit and 64bit builds) +3) Modified the default response to report 1 and 2. + +The projects builds depends32.exe and depends64.exe which are used by runner32.bat and runner64.bat to test dependancies post build. + +Robin Mills +http://clanmills.com +2011-01-02 diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/depends.sln b/vendor/exiv2-0.25/msvc2005/tools/depends/depends.sln new file mode 100644 index 0000000..189a405 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/depends.sln @@ -0,0 +1,25 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "depends", "depends.vcproj", "{E24D66E3-65A9-4BEB-8579-039AD77C2EFF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Debug|Win32.ActiveCfg = Debug|Win32 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Debug|Win32.Build.0 = Debug|Win32 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Debug|x64.ActiveCfg = Debug|x64 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Debug|x64.Build.0 = Debug|x64 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Release|Win32.ActiveCfg = Release|Win32 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Release|Win32.Build.0 = Release|Win32 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Release|x64.ActiveCfg = Release|x64 + {E24D66E3-65A9-4BEB-8579-039AD77C2EFF}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/depends.vcproj b/vendor/exiv2-0.25/msvc2005/tools/depends/depends.vcproj new file mode 100644 index 0000000..7afc763 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/depends.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/include/DEPENDENCYLIST.H b/vendor/exiv2-0.25/msvc2005/tools/depends/include/DEPENDENCYLIST.H new file mode 100644 index 0000000..4955f68 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/include/DEPENDENCYLIST.H @@ -0,0 +1,57 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: DEPENDENCYLIST.H +//========================================== +#ifndef __DEPLIST_H__ +#define __DEPLIST_H__ + +#ifndef __MODULEFILEINFO_H__ +#include "modulefileinfo.h" +#endif + +enum errModuleDependencyList { errMDL_NO_ERROR, + errMDL_FILE_NOT_FOUND, + errMDL_NOT_PE_FILE, + errMDL_GENERAL_FAILURE }; + +// +// The MODULE_DEPENDENCY_LIST class creates a linked list of MODULE_FILE_INFO +// structures. In theory, this list will represent every executable file +// loaded by the Win32 loader when the executable is loaded. The class creates +// the list by starting with the file passed to the constructor, and recursing +// through all the import tables. +// +class MODULE_DEPENDENCY_LIST +{ + public: + + MODULE_DEPENDENCY_LIST( PSTR pszFileName ); + + ~MODULE_DEPENDENCY_LIST( ); + + BOOL IsValid( void ){ return (BOOL)(m_errorType == errMDL_NO_ERROR); } + + errModuleDependencyList GetErrorType( void ){ return m_errorType; } + + PSTR GetErrorString( void ); + + PMODULE_FILE_INFO GetNextModule( PMODULE_FILE_INFO p ); + + PMODULE_FILE_INFO LookupModule( PSTR pszFileName, BOOL fFullName ); + + unsigned GetNumberOfModules( void ){ return m_cModules; } + + protected: + + unsigned m_cModules; // Number of modules in list + + PMODULE_FILE_INFO m_pList; // Pointer to head of linked list + + // Recursively adds modules to the list + errModuleDependencyList AddModule( PSTR pszFullName ); + + errModuleDependencyList m_errorType; // Error type +}; + +#endif diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/include/EXEFILE.H b/vendor/exiv2-0.25/msvc2005/tools/depends/include/EXEFILE.H new file mode 100644 index 0000000..ae4ecba --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/include/EXEFILE.H @@ -0,0 +1,54 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: EXEFILE.H +//========================================== +#ifndef __EXEFILE_H__ +#define __EXEFILE_H__ + +#ifndef __MEMMAPFL_H__ +#include "memorymappedfile.h" +#endif + +// MakePtr is a macro that allows you to easily add to values (including +// pointers) together without dealing with C's pointer arithmetic. It +// essentially treats the last two parameters as DWORDs. The first +// parameter is used to typecast the result to the appropriate pointer type. +#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD)(ptr) + (DWORD)(addValue)) + +enum EXE_TYPE { exeType_Invalid, exeType_DOS, exeType_NE, exeType_VXD, + exeType_LX, exeType_PE }; + +enum errEXE_FILE { errEXE_FILE_NO_ERROR, + errEXE_FILE_FILE_NOT_FOUND, + errEXE_FILE_INVALID_FORMAT }; + +class EXE_FILE : public MEMORY_MAPPED_FILE +{ + public: + + EXE_FILE( PSTR pszFileName ); + ~EXE_FILE( ){ ; } + + BOOL IsValid( void ){ return errMMF_NoError == m_errorType; } + + errEXE_FILE GetErrorType( void ){ return m_errorType; } + + DWORD GetSecondaryHeaderOffset( void ){ return m_secondaryHeaderOffset; } + + EXE_TYPE GetExeType( void ){ return m_exeType; } + + PSTR GetFileTypeDescription( void ); + + protected: + + errEXE_FILE m_errorType; + + private: + + LONG m_secondaryHeaderOffset; + EXE_TYPE m_exeType; + +}; + +#endif diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/include/MEMORYMAPPEDFILE.H b/vendor/exiv2-0.25/msvc2005/tools/depends/include/MEMORYMAPPEDFILE.H new file mode 100644 index 0000000..c0db0e2 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/include/MEMORYMAPPEDFILE.H @@ -0,0 +1,35 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: MEMORYMAPPEDFILE.H +//========================================== +#ifndef __MEMMAPFL_H__ +#define __MEMMAPFL_H__ + +enum errMMF { errMMF_NoError, errMMF_FileOpen, + errMMF_FileMapping, errMMF_MapView }; + +class MEMORY_MAPPED_FILE +{ + public: + + MEMORY_MAPPED_FILE( PSTR pszFileName ); + ~MEMORY_MAPPED_FILE(void); + + PVOID GetBase( void ){ return m_pMemoryMappedFileBase; } + DWORD GetFileSize( void ){ return m_cbFile; } + BOOL IsValid( void ) { return errMMF_NoError == m_errCode; } + errMMF GetErrorType(){ return m_errCode; } + + private: + + HANDLE m_hFile; + HANDLE m_hFileMapping; // Handle of memory mapped file + PVOID m_pMemoryMappedFileBase; + DWORD m_cbFile; + errMMF m_errCode; +}; + +typedef MEMORY_MAPPED_FILE *PMEMORY_MAPPED_FILE; + +#endif diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/include/PEEXE.H b/vendor/exiv2-0.25/msvc2005/tools/depends/include/PEEXE.H new file mode 100644 index 0000000..95a9c95 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/include/PEEXE.H @@ -0,0 +1,98 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: PEEXE.H +//========================================== +#ifndef __PEEXE_H__ +#define __PEEXE_H__ + +#ifndef __EXEFILE_H__ +#include "exefile.h" +#endif + +class PE_EXE : public EXE_FILE +{ + public: + + PE_EXE( PSTR pszFileName ); + ~PE_EXE( ){ } + + BOOL IsValid() { return m_pNtHdr ? TRUE : FALSE; } + + // For those who want at the data directly + PIMAGE_NT_HEADERS GetIMAGE_NT_HEADERS( void ) { return m_pNtHdr; } + + // IMAGE_FILE_HEADER fields + WORD GetMachine( void ) + { return m_pNtHdr->FileHeader.Machine; } + WORD GetNumberOfSections( void ) + { return m_pNtHdr->FileHeader.NumberOfSections; } + DWORD GetTimeDateStamp(void) + { return m_pNtHdr->FileHeader.TimeDateStamp; } + DWORD GetCharacteristics( void ) + { return m_pNtHdr->FileHeader.Characteristics; } + + // IMAGE_OPTIONAL_HEADER fields + DWORD GetSizeOfCode( void ) + { return m_pNtHdr->OptionalHeader.SizeOfCode; } + DWORD GetSizeOfInitializedData( void ) + { return m_pNtHdr->OptionalHeader.SizeOfInitializedData; } + DWORD GetSizeOfUninitializedData( void ) + { return m_pNtHdr->OptionalHeader.SizeOfUninitializedData; } + DWORD GetAddressOfEntryPoint( void ) + { return m_pNtHdr->OptionalHeader.AddressOfEntryPoint; } + DWORD GetBaseOfCode( void ) + { return m_pNtHdr->OptionalHeader.BaseOfCode; } +/* + DWORD GetBaseOfData( void ) + { return m_pNtHdr->OptionalHeader.BaseOfData; } +*/ + DWORD GetImageBase( void ) + { return m_pNtHdr->OptionalHeader.ImageBase; } + DWORD GetSectionAlignment( void ) + { return m_pNtHdr->OptionalHeader.SectionAlignment; } + DWORD GetFileAlignment( void ) + { return m_pNtHdr->OptionalHeader.FileAlignment; } + WORD GetMajorOperatingSystemVersion( void ) + { return m_pNtHdr->OptionalHeader.MajorOperatingSystemVersion; } + WORD GetMinorOperatingSystemVersion( void ) + { return m_pNtHdr->OptionalHeader.MinorOperatingSystemVersion; } + WORD GetMajorImageVersion( void ) + { return m_pNtHdr->OptionalHeader.MajorImageVersion; } + WORD GetMinorImageVersion( void ) + { return m_pNtHdr->OptionalHeader.MinorImageVersion; } + WORD GetMajorSubsystemVersion( void ) + { return m_pNtHdr->OptionalHeader.MajorSubsystemVersion; } + WORD GetMinorSubsystemVersion( void ) + { return m_pNtHdr->OptionalHeader.MinorSubsystemVersion; } +// DWORD GetWin32VersionValue( void ) +// { return m_pNtHdr->OptionalHeader.Win32VersionValue; } + DWORD GetSizeOfImage( void ) + { return m_pNtHdr->OptionalHeader.SizeOfImage; } + DWORD GetSizeOfHeaders( void ) + { return m_pNtHdr->OptionalHeader.SizeOfHeaders; } + WORD GetSubsystem( void ) + { return m_pNtHdr->OptionalHeader.Subsystem; } + DWORD GetSizeOfStackReserve( void ) + { return m_pNtHdr->OptionalHeader.SizeOfStackReserve; } + DWORD GetSizeOfStackCommit( void ) + { return m_pNtHdr->OptionalHeader.SizeOfStackCommit; } + DWORD GetSizeOfHeapReserve( void ) + { return m_pNtHdr->OptionalHeader.SizeOfHeapReserve; } + DWORD GetSizeOfHeapCommit( void ) + { return m_pNtHdr->OptionalHeader.SizeOfHeapCommit; } + + DWORD GetDataDirectoryEntryRVA( DWORD id ); + PVOID GetDataDirectoryEntryPointer( DWORD id ); + DWORD GetDataDirectoryEntrySize( DWORD id ); + + PVOID GetReadablePointerFromRVA( DWORD rva ); + + protected: + + DWORD RVAToFileOffset( DWORD rva ); + + PIMAGE_NT_HEADERS m_pNtHdr; +}; + +#endif diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/include/modulefileinfo.h b/vendor/exiv2-0.25/msvc2005/tools/depends/include/modulefileinfo.h new file mode 100644 index 0000000..27b17b5 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/include/modulefileinfo.h @@ -0,0 +1,44 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: MODULEFILEINFO.H +//========================================== +#ifndef __MODULEFILEINFO_H__ +#define __MODULEFILEINFO_H__ + +class MODULE_DEPENDENCY_LIST; + +// +// This structure represents one executable file in a module dependency list. +// Both the base filename and the complete path are stored. +// +class MODULE_FILE_INFO +{ + public: + + MODULE_FILE_INFO( PSTR pszFileName ); + ~MODULE_FILE_INFO( void ){} + + PSTR GetBaseName( void ){ return m_szBaseName; } + PSTR GetFullName( void ){ return m_szFullName; } + + // For enumerating through the unlocatable imported modules + MODULE_FILE_INFO * GetNextNotFoundModule( MODULE_FILE_INFO * ); + + private: + + MODULE_FILE_INFO * m_pNext; + MODULE_FILE_INFO * m_pNotFoundNext; + + char m_szBaseName[MAX_PATH]; + char m_szFullName[MAX_PATH]; + + // And an unlocatable module to the "not found" list + void AddNotFoundModule( PSTR pszFileName ); + + friend class MODULE_DEPENDENCY_LIST; +}; + +typedef MODULE_FILE_INFO * PMODULE_FILE_INFO; + +#endif diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/src/DEPENDENCYLIST.CPP b/vendor/exiv2-0.25/msvc2005/tools/depends/src/DEPENDENCYLIST.CPP new file mode 100644 index 0000000..6b5a904 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/src/DEPENDENCYLIST.CPP @@ -0,0 +1,187 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: DEPENDENCYLIST.CPP +//========================================== +#include +#include +#pragma hdrstop +#include "peexe.h" +#include "dependencylist.h" + +MODULE_DEPENDENCY_LIST::MODULE_DEPENDENCY_LIST( PSTR pszFileName ) +{ + m_errorType = errMDL_GENERAL_FAILURE; + m_cModules = 0; + m_pList = 0; + + // Make a copy of the path that we can modify to get just the path portion + PSTR pszJustPath = _strdup( pszFileName ); + if ( !pszJustPath ) + return; + + BOOL fHasPath = FALSE; + PSTR pszEnd = strrchr( pszJustPath, '\\' ); + if ( pszEnd ) + { + *pszEnd = 0; /// Strip off the filename + fHasPath = TRUE; + } + + // + // If a path was part of the input filename, save the current directory, + // then switch to the new directory. + // + char szOriginalPath[MAX_PATH]; + if ( fHasPath ) + { + // This doesn't take into account "App_Paths"! + GetCurrentDirectory(MAX_PATH, szOriginalPath); // Save original dir + SetCurrentDirectory( pszJustPath ); // Switch to app's dir + } + + // + // recursively build the module list + // + m_errorType = AddModule( pszFileName ); + + if ( fHasPath ) // Set things back to the way they were + SetCurrentDirectory( szOriginalPath ); + + free( pszJustPath ); // Free the copy of the path that we allocated +} + + +MODULE_DEPENDENCY_LIST::~MODULE_DEPENDENCY_LIST( ) +{ + PMODULE_FILE_INFO pTemp; + + // Delete each MODULE_FILE_INFO structures in the regular linked list + pTemp = m_pList; + while ( pTemp ) + { + pTemp = m_pList->m_pNext; + + // Before we delete the module, delete each MODULE_FILE_INFO + // structures in the not found list + PMODULE_FILE_INFO pNotFound = m_pList->m_pNotFoundNext; + while ( pNotFound ) + { + pNotFound = m_pList->m_pNotFoundNext->m_pNotFoundNext; + delete m_pList->m_pNotFoundNext; + m_pList->m_pNotFoundNext = pNotFound; + } + + // Now it's OK to delete the module + delete m_pList; + m_pList = pTemp; + m_cModules--; + } + + m_pList = 0; +} + + + +PMODULE_FILE_INFO MODULE_DEPENDENCY_LIST::GetNextModule( PMODULE_FILE_INFO p ) +{ + // Returns the next module in the linked list of MODULE_FILE_INFO's + return p ? p->m_pNext : m_pList; +} + + +// Given the name of a file, find the MODULE_FILE_INFO structure that +// represents it. The fFullName parameter specifies whether the full path +// names or just the base file names will be compared. +PMODULE_FILE_INFO MODULE_DEPENDENCY_LIST::LookupModule( PSTR pszFileName, + BOOL fFullName ) +{ + PMODULE_FILE_INFO p = m_pList; // Start at the list head + + while ( p ) // While there's still entries in the list... + { + PSTR pszCompName = fFullName ? p->m_szFullName : p->m_szBaseName; + + if ( 0 == lstrcmpi( pszFileName, pszCompName ) ) + return p; + + p = p->m_pNext; + } + + return 0; +} + + +PSTR MODULE_DEPENDENCY_LIST::GetErrorString( void ) +{ + switch ( m_errorType ) + { + case errMDL_NO_ERROR: return "No error"; + case errMDL_FILE_NOT_FOUND: return "File not found"; + case errMDL_NOT_PE_FILE: return "Not a PE file"; + case errMDL_GENERAL_FAILURE:return "General failure"; + default: return ""; + } +} + + +// Adds a modules to the MODULE_FILE_INFO list. If the module imports other +// modules, this routine recurses to add them, and check their imports. +errModuleDependencyList +MODULE_DEPENDENCY_LIST::AddModule( PSTR pszFileName ) +{ + PE_EXE peFile( pszFileName ); // Get easy access to the executable + + if ( FALSE == peFile.IsValid() ) // A valid PE file??? + return (errModuleDependencyList)peFile.GetErrorType(); + + PMODULE_FILE_INFO pNew = new MODULE_FILE_INFO( pszFileName ); + if ( !pNew ) + return errMDL_GENERAL_FAILURE; + + pNew->m_pNext = m_pList; + m_pList = pNew; + + m_cModules++; + + // + // Now see if this module imports any other modules. If so, we need + // to recurse and add them as well. + // + if (0 == peFile.GetDataDirectoryEntrySize( IMAGE_DIRECTORY_ENTRY_IMPORT )) + return errMDL_NO_ERROR; + + // Make a pointer to the imports table + PIMAGE_IMPORT_DESCRIPTOR pImportDir; + pImportDir = (PIMAGE_IMPORT_DESCRIPTOR) + peFile.GetDataDirectoryEntryPointer(IMAGE_DIRECTORY_ENTRY_IMPORT); + if ( !pImportDir ) + return errMDL_NO_ERROR; + + // While there are still non-null IMAGE_IMPORT_DESCRIPTORs... + while ( pImportDir->Name ) + { + // Get a pointer to the imported module's base name + PSTR pszBaseName; + pszBaseName = (PSTR)peFile.GetReadablePointerFromRVA(pImportDir->Name); + if ( !pszBaseName ) + break; + + // Check to see if it's already in our list. Don't add again if so. + if ( 0 == LookupModule( pszBaseName, FALSE ) ) + { + // Search path supposedly has the same searching algorithm as + // the the Win32 loader... + char szPath[MAX_PATH]; + PSTR pszDontCare; + if ( SearchPath(0, pszBaseName, 0, MAX_PATH, szPath, &pszDontCare)) + AddModule( szPath ); + else + pNew->AddNotFoundModule( pszBaseName ); + } + + pImportDir++; // Advance to next imported module + } + + return errMDL_NO_ERROR; +} diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/src/EXEFILE.CPP b/vendor/exiv2-0.25/msvc2005/tools/depends/src/EXEFILE.CPP new file mode 100644 index 0000000..79e8449 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/src/EXEFILE.CPP @@ -0,0 +1,72 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: EXEFILE.CPP +//========================================== +#include +#pragma hdrstop +#include "exefile.h" + +EXE_FILE::EXE_FILE( PSTR pszFileName ) : MEMORY_MAPPED_FILE( pszFileName ) +{ + m_errorType = errEXE_FILE_FILE_NOT_FOUND; + m_secondaryHeaderOffset = -1; // A bogus value to catch bugs + m_exeType = exeType_Invalid; + + if ( FALSE == MEMORY_MAPPED_FILE::IsValid() ) + return; // m_errorType already set to errEXE_FILE_FILE_NOT_FOUND + + // If we get here, the file exists, and was mapped. We're still not + // sure that it's a valid EXE though + m_errorType = errEXE_FILE_INVALID_FORMAT; + + if ( GetFileSize() < sizeof(IMAGE_DOS_HEADER) ) + return; + + PIMAGE_DOS_HEADER pDosHdr = (PIMAGE_DOS_HEADER)GetBase(); + if ( IMAGE_DOS_SIGNATURE != pDosHdr->e_magic ) + return; + + // If we get here, it's at least a DOS 'MZ' file + m_errorType = errEXE_FILE_NO_ERROR; + + if ( pDosHdr->e_lfarlc < 0x40 ) // Theoretically, this field must be >= + { // 0x40 for it to be a non-DOS executable + m_exeType = exeType_DOS; + return; + } + + // Sanity check. Make sure the "new header" offset isn't past the end + // of the file + if ( pDosHdr->e_lfanew > (LONG)GetFileSize() ) + return; + + // Make a pointer to the secondary header + m_secondaryHeaderOffset = pDosHdr->e_lfanew; + PWORD pSecondHdr = MakePtr( PWORD, GetBase(), m_secondaryHeaderOffset ); + + // Decide what type of EXE, based on the start of the secondary header + switch ( *pSecondHdr ) + { + case IMAGE_OS2_SIGNATURE: m_exeType = exeType_NE; break; + case IMAGE_VXD_SIGNATURE: m_exeType = exeType_VXD; break; + case 0x4558: m_exeType = exeType_LX; break; // OS/2 2.X + } + + if ( *(PDWORD)pSecondHdr == IMAGE_NT_SIGNATURE ) + m_exeType = exeType_PE; +} + +PSTR EXE_FILE::GetFileTypeDescription( void ) +{ + // Returns a static string that describes what type this file is + switch ( m_exeType ) + { + case exeType_DOS: return "DOS"; + case exeType_NE: return "NE"; + case exeType_VXD: return "VXD"; + case exeType_LX: return "LX"; + case exeType_PE: return "PE"; + default: return "Invalid"; + } +} diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/src/MEMORYMAPPEDFILE.CPP b/vendor/exiv2-0.25/msvc2005/tools/depends/src/MEMORYMAPPEDFILE.CPP new file mode 100644 index 0000000..89237bb --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/src/MEMORYMAPPEDFILE.CPP @@ -0,0 +1,75 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: MEMORYMPAPPEDFILE.CPP +//========================================== +#include +#pragma hdrstop +#include "memorymappedfile.h" + +MEMORY_MAPPED_FILE::MEMORY_MAPPED_FILE( PSTR pszFileName ) +{ + // + // Given a filename, the constructor opens a file handle, creates a file + // mapping, and maps the entire file into memory. + // + m_hFile = INVALID_HANDLE_VALUE; + m_hFileMapping = 0; + m_pMemoryMappedFileBase = 0; + m_cbFile = 0; + m_errCode = errMMF_FileOpen; // Initial error code: not found + + // First get a file handle + m_hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0); + + if ( m_hFile == INVALID_HANDLE_VALUE ) + { + m_errCode = errMMF_FileOpen; + return; + } + + m_cbFile = ::GetFileSize( m_hFile, 0 ); + + // Now, create a file mapping + m_hFileMapping = CreateFileMapping(m_hFile,NULL, PAGE_READONLY, 0, 0,NULL); + if ( m_hFileMapping == 0 ) + { + // Oops. Something went wrong. Clean up. + CloseHandle(m_hFile); + m_hFile = INVALID_HANDLE_VALUE; + m_errCode = errMMF_FileMapping; + return; + } + + m_pMemoryMappedFileBase = (PCHAR)MapViewOfFile( m_hFileMapping, + FILE_MAP_READ, 0, 0, 0); + + if ( m_pMemoryMappedFileBase == 0 ) + { + // Oops. Something went wrong. Clean up. + CloseHandle(m_hFileMapping); + m_hFileMapping = 0; + CloseHandle(m_hFile); + m_hFile = INVALID_HANDLE_VALUE; + m_errCode = errMMF_MapView; + return; + } + + m_errCode = errMMF_NoError; +} + +MEMORY_MAPPED_FILE::~MEMORY_MAPPED_FILE(void) +{ + // Clean up everything that was created by the constructor + if ( m_pMemoryMappedFileBase ) + UnmapViewOfFile( m_pMemoryMappedFileBase ); + + if ( m_hFileMapping ) + CloseHandle( m_hFileMapping ); + + if ( m_hFile != INVALID_HANDLE_VALUE ) + CloseHandle( m_hFile ); + + m_errCode = errMMF_FileOpen; +} diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/src/PEEXE.CPP b/vendor/exiv2-0.25/msvc2005/tools/depends/src/PEEXE.CPP new file mode 100644 index 0000000..56f2f29 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/src/PEEXE.CPP @@ -0,0 +1,99 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: PEEXE.CPP +//========================================== +#include +#include +#pragma hdrstop +#include "peexe.h" + +PE_EXE::PE_EXE( PSTR pszFileName ) : EXE_FILE( pszFileName ) +{ + m_pNtHdr = 0; + + if ( FALSE == EXE_FILE::IsValid() ) + return; + + // It's an EXE, but is it a *PE* file??? If not, set code and bail + if ( GetExeType() != exeType_PE ) + { + m_errorType = errEXE_FILE_INVALID_FORMAT; + return; + } + + m_pNtHdr = MakePtr(PIMAGE_NT_HEADERS,GetBase(),GetSecondaryHeaderOffset()); +} + +DWORD PE_EXE::GetDataDirectoryEntryRVA( DWORD id ) +{ + // Given a IMAGE_DIRECTORY_ENTRY_XXX value (see WINNT.H), retrive the + // RVA stored in the corresponding slot + + if ( id >= IMAGE_NUMBEROF_DIRECTORY_ENTRIES ) + return (DWORD)-1; + + return m_pNtHdr->OptionalHeader.DataDirectory[id].VirtualAddress; +} + +PVOID PE_EXE::GetDataDirectoryEntryPointer( DWORD id ) +{ + // Given a IMAGE_DIRECTORY_ENTRY_XXX value (see WINNT.H), return a pointer + // to memory that corresponds to the RVA in the specified slot. + + if ( id >= IMAGE_NUMBEROF_DIRECTORY_ENTRIES ) + return (PVOID)-1; + + DWORD va = m_pNtHdr->OptionalHeader.DataDirectory[id].VirtualAddress; + + if ( !va ) // Return 0 if the RVA is 0 + return 0; + + return GetReadablePointerFromRVA( va ); +} + +DWORD PE_EXE::GetDataDirectoryEntrySize( DWORD id ) +{ + // Given a IMAGE_DIRECTORY_ENTRY_XXX value (see WINNT.H), retrive the + // size value stored in the corresponding slot + + if ( id >= IMAGE_NUMBEROF_DIRECTORY_ENTRIES ) + return (DWORD)-1; + + return m_pNtHdr->OptionalHeader.DataDirectory[id].Size; +} + +PVOID PE_EXE::GetReadablePointerFromRVA( DWORD rva ) +{ + // Given an RVA, translate it into a pointer within our linear memory + // mapping for the executable. + + DWORD fileOffset = RVAToFileOffset( rva ); + if ( (DWORD)-1 == fileOffset ) + return 0; + + return MakePtr( PVOID, GetBase(), fileOffset ); +} + +DWORD PE_EXE::RVAToFileOffset( DWORD rva ) +{ + // Given an RVA, figure out which section encompasses it. Next, using + // the PointerToRawData field for the found section, return an actual + // file offset that corresponds to the RVA + + PIMAGE_SECTION_HEADER pSectHdr = IMAGE_FIRST_SECTION( m_pNtHdr ); + + for ( unsigned i = 0; i < GetNumberOfSections(); i++, pSectHdr++ ) + { + DWORD cbMaxOnDisk + = min( pSectHdr->Misc.VirtualSize, pSectHdr->SizeOfRawData ); + + DWORD startSectRVA = pSectHdr->VirtualAddress; + DWORD endSectRVA = startSectRVA + cbMaxOnDisk; + + if ( (rva >= startSectRVA) && (rva < endSectRVA) ) + return pSectHdr->PointerToRawData + (rva - startSectRVA); + } + + return (DWORD)-1; // RVA not found in the section table... Ooops! +} diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/src/depends.cpp b/vendor/exiv2-0.25/msvc2005/tools/depends/src/depends.cpp new file mode 100644 index 0000000..ccd38a0 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/src/depends.cpp @@ -0,0 +1,321 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: DEPENDS.CPP +//========================================== +#include +#include +#include "dependencylist.h" +#include "peexe.h" + +//============================== Variables =============================== +char g_szHelpSyntax[] = +"DEPENDS - Matt Pietrek, 1997, for MSJ\n" +"Syntax: DEPENDS [args] \n" +" /v show version information\n" +" /t show time & date information\n" +" /p show full path\n" +" /q quiet (don't report some MS dlls)\n" +" /l show link time & date information\n\n"; + +char * g_pszPrimaryFile = 0; + +BOOL g_fShowDateTime = FALSE; +BOOL g_fShowLinkDateTime = FALSE; +BOOL g_fShowVersion = FALSE; +BOOL g_fShowFullPath = FALSE; +BOOL g_fQuiet = FALSE; + +//============================== Prototypes =============================== +void DisplayFileInformation( PMODULE_FILE_INFO pModInfo,BOOL bQuiet ); +void ShowVersionInfo( PSTR pszFileName ); +BOOL TimeDateStampToFileTime( DWORD timeDateStamp, LPFILETIME pFileTime ); +BOOL GetFileDateAsString( LPFILETIME pFt, char * pszDate, unsigned cbIn ); +BOOL GetFileTimeAsString( LPFILETIME pFt, char * pszTime, unsigned cbIn, + BOOL fSeconds ); + +//=================================== Code ================================ + +BOOL ProcessCommandLine( int argc, char * argv[] ) +{ + BOOL fSawFileName = FALSE; + + if ( argc < 2 ) + return FALSE; + + for ( int i = 1; i < argc; i++ ) + { + PSTR pArg = argv[i]; + + if ( (*pArg == '/') || (*pArg == '-') ) // Is it a switch char? + { + pArg++; // Point past switch char + + if ( 0 == lstrcmpi( pArg, "v" ) ) + g_fShowVersion = TRUE; + else if ( 0 == lstrcmpi( pArg, "t" ) ) + g_fShowDateTime = TRUE; + else if ( 0 == lstrcmpi( pArg, "l" ) ) + g_fShowLinkDateTime = TRUE; + else if ( 0 == lstrcmpi( pArg, "p" ) ) + g_fShowFullPath = TRUE; + else if ( 0 == lstrcmpi( pArg, "q" ) ) + g_fQuiet = TRUE; + else + { + printf( "Unrecognized option: \"%s\"\n", pArg ); + return FALSE; + } + } + else + { + if ( fSawFileName ) + return FALSE; + + g_pszPrimaryFile = pArg; + fSawFileName = TRUE; + } + } + + return fSawFileName; +} + +LPCTSTR getModuleBase(PMODULE_FILE_INFO pModule,BOOL bQuiet) +{ + LPCTSTR base = pModule->GetBaseName() ; + LPCTSTR result = base ; + if ( bQuiet ) { + // keep quiet about these guys - they're build/compiler dependent + if ( _strnicmp(base,"MSVCR",5) == 0 ) result = NULL ; + if ( _strnicmp(base,"MSVCP",5) == 0 ) result = NULL ; + if ( _strnicmp(base,"API-MS-Win",10) == 0 ) result = NULL ; + } + return result ; +} + +int main( int argc, char * argv[] ) +{ + if ( !ProcessCommandLine( argc, argv ) ) + { + printf( "%s %d bit build\n%s",argv[0],8*sizeof(void*),g_szHelpSyntax ); + return 1; + } + + MODULE_DEPENDENCY_LIST depends( g_pszPrimaryFile ); + + if ( !depends.IsValid() ) + { + printf( "Error: %s %s\n", g_pszPrimaryFile, depends.GetErrorString() ); + return 1; + } + + PMODULE_FILE_INFO pModInfo = 0; + + while ( pModInfo = depends.GetNextModule( pModInfo ) ) + { + DisplayFileInformation( pModInfo,g_fQuiet ); + + PMODULE_FILE_INFO pNotFound = 0; + + while ( pNotFound = pModInfo->GetNextNotFoundModule(pNotFound) ) + { + LPCTSTR base = getModuleBase(pNotFound,g_fQuiet) ; + if ( base ) printf( " Not found: %s\n", base ); + } + } + + return 0; +} + +void DisplayFileInformation( PMODULE_FILE_INFO pModInfo, BOOL bQuiet ) +{ + LPCTSTR base = getModuleBase(pModInfo,bQuiet); + if ( !base ) return ; + printf( "%-14s", base) ; // ->GetBaseName() ); + + PSTR pszFullName = pModInfo->GetFullName(); + + if ( g_fShowDateTime ) + { + HFILE hFile = _lopen( pszFullName, OF_READ ); + if ( HFILE_ERROR != hFile ) + { + FILETIME ft; + + if ( GetFileTime( (HANDLE)hFile, 0, 0, &ft ) ) + { + char szFileDate[32] = { 0 }; + char szFileTime[32] = { 0 }; + + GetFileDateAsString(&ft, szFileDate, sizeof(szFileDate) ); + GetFileTimeAsString(&ft, szFileTime, sizeof(szFileTime), + TRUE); + + printf( "%s %s ", szFileDate, szFileTime ); + } + + _lclose( hFile ); + } + } + + if ( g_fShowLinkDateTime ) + { + FILETIME ft; + char szFileDate[32] = { 0 }; + char szFileTime[32] = { 0 }; + + PE_EXE exe( pszFullName ); + + TimeDateStampToFileTime( exe.GetTimeDateStamp(), &ft ); + + GetFileDateAsString(&ft, szFileDate, sizeof(szFileDate) ); + GetFileTimeAsString(&ft, szFileTime, sizeof(szFileTime), + TRUE); + + printf( "%s %s ", szFileDate, szFileTime ); + } + + if ( g_fShowFullPath ) + printf( "(%s)", pszFullName ); + + printf( "\n" ); + + if ( g_fShowVersion ) + ShowVersionInfo( pszFullName ); +} + +void ShowVersionInfo( PSTR pszFileName ) +{ + DWORD cbVerInfo, dummy; + + // How big is the version info? + cbVerInfo = GetFileVersionInfoSize( pszFileName, &dummy ); + if ( !cbVerInfo ) + return; + + // Allocate space to hold the info + PBYTE pVerInfo = new BYTE[cbVerInfo]; + if ( !pVerInfo ) + return; + + _try + { + if ( !GetFileVersionInfo(pszFileName, 0, cbVerInfo, pVerInfo) ) + _leave; + + char * predefResStrings[] = + { + "CompanyName", + "FileDescription", + "FileVersion", + "InternalName", + "LegalCopyright", + "OriginalFilename", + "ProductName", + "ProductVersion", + 0 + }; + + for ( unsigned i=0; predefResStrings[i]; i++ ) + { + char szQueryStr[ 0x100 ]; + char szQueryStr2[0x100 ]; + + // Format the string with the 1200 codepage (Unicode) + wsprintf( szQueryStr, "\\StringFileInfo\\%04X%04X\\%s", + GetUserDefaultLangID(), 1200, + predefResStrings[i] ); + + // Format the string with the 1252 codepage (Windows Multilingual) + wsprintf( szQueryStr2, "\\StringFileInfo\\%04X%04X\\%s", + GetUserDefaultLangID(), 1252, + predefResStrings[i] ); + // We may want to format a string with the "0000" codepage + + PSTR pszVerRetVal; + UINT cbReturn; + BOOL fFound; + + // Try first with the 1252 codepage + fFound = VerQueryValue( pVerInfo, szQueryStr, + (LPVOID *)&pszVerRetVal, &cbReturn ); + if ( !fFound ) + { + // Hmm... 1252 wasn't found. Try the 1200 codepage + fFound = VerQueryValue( pVerInfo, szQueryStr2, + (LPVOID *)&pszVerRetVal, &cbReturn ); + } + + if ( fFound ) + printf( " %s %s\n", predefResStrings[i], pszVerRetVal ); + } + } + _finally + { + delete []pVerInfo; + } +} + + +// Convert a TimeDateStamp (i.e., # of seconds since 1/1/1970) into a FILETIME + +BOOL TimeDateStampToFileTime( DWORD timeDateStamp, LPFILETIME pFileTime ) +{ + __int64 t1970 = 0x019DB1DED53E8000; // Magic... GMT... Don't ask.... + + __int64 timeStampIn100nsIncr = (__int64)timeDateStamp * 10000000; + + __int64 finalValue = t1970 + timeStampIn100nsIncr; + + memcpy( pFileTime, &finalValue, sizeof( finalValue ) ); + + return TRUE; +} + +BOOL GetFileDateAsString( LPFILETIME pFt, char * pszDate, unsigned cbIn ) +{ + FILETIME ftLocal; + SYSTEMTIME st; + + if ( !FileTimeToLocalFileTime( pFt, &ftLocal ) ) + return FALSE; + + if ( !FileTimeToSystemTime( &ftLocal, &st ) ) + return FALSE; + + char szTemp[12]; + + wsprintf( szTemp, "%02u/%02u/%04u", + st.wMonth, st.wDay, st.wYear ); + lstrcpyn( pszDate, szTemp, cbIn ); + + return TRUE; +} + +BOOL GetFileTimeAsString( LPFILETIME pFt, char * pszTime, unsigned cbIn, + BOOL fSeconds ) +{ + FILETIME ftLocal; + SYSTEMTIME st; + + if ( !FileTimeToLocalFileTime( pFt, &ftLocal ) ) + return FALSE; + + if ( !FileTimeToSystemTime( &ftLocal, &st ) ) + return FALSE; + + char szTemp[12]; + + if ( fSeconds ) // Want seconds??? + { + wsprintf( szTemp, "%02u:%02u:%02u", st.wHour, st.wMinute, st.wSecond ); + } + else // No thanks.. Just hours and minutes + { + wsprintf( szTemp, "%02u:%02u", st.wHour, st.wMinute ); + } + + lstrcpyn( pszTime, szTemp, cbIn ); + + return TRUE; +} diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/src/modulefileinfo.cpp b/vendor/exiv2-0.25/msvc2005/tools/depends/src/modulefileinfo.cpp new file mode 100644 index 0000000..ac82223 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/src/modulefileinfo.cpp @@ -0,0 +1,42 @@ +//========================================== +// Matt Pietrek +// Microsoft Systems Journal, Feb 1997 +// FILE: MODULEFILEINFO.CPP +//========================================== +#include +#include "modulefileinfo.h" + +MODULE_FILE_INFO::MODULE_FILE_INFO( PSTR pszFileName ) +{ + m_pNext = 0; + m_pNotFoundNext = 0; + + // Find the last '\\' to obtain a pointer to just the base filename part + PSTR pszBaseName = strrchr( pszFileName, '\\' ); + if ( pszBaseName ) // We found a path, so advance to the base filename + pszBaseName++; + else + pszBaseName = pszFileName; // No path. Use the same name for both + + // Initialize the new MODULE_FILE_INFO, and stick it at the head + // of the list. + lstrcpyn( m_szFullName, pszFileName, sizeof(m_szFullName) ); + lstrcpyn( m_szBaseName, pszBaseName, sizeof(m_szBaseName) ); + +} + +void MODULE_FILE_INFO::AddNotFoundModule( PSTR pszFileName ) +{ + PMODULE_FILE_INFO pNew = new MODULE_FILE_INFO( pszFileName ); + + pNew->m_pNotFoundNext = m_pNotFoundNext; + m_pNotFoundNext = pNew; +} + +MODULE_FILE_INFO * MODULE_FILE_INFO::GetNextNotFoundModule( PMODULE_FILE_INFO p) +{ + PMODULE_FILE_INFO pNext = p ? p->m_pNotFoundNext : m_pNotFoundNext; + + return pNext; +} + diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.cpp b/vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.cpp new file mode 100644 index 0000000..061fd2f --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// Depends2.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.h b/vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.h new file mode 100644 index 0000000..47a0d02 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/vendor/exiv2-0.25/msvc2005/tools/depends/targetver.h b/vendor/exiv2-0.25/msvc2005/tools/depends/targetver.h new file mode 100644 index 0000000..a38195a --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/depends/targetver.h @@ -0,0 +1,13 @@ +#pragma once + +// The following macros define the minimum required platform. The minimum required platform +// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run +// your application. The macros work by enabling all features available on platform versions up to and +// including the version specified. + +// Modify the following defines if you have to target a platform prior to the ones specified below. +// Refer to MSDN for the latest info on corresponding values for different platforms. +#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. +#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + diff --git a/vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.cpp b/vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.cpp new file mode 100644 index 0000000..48682ce --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.cpp @@ -0,0 +1,23 @@ +#include +#include + +int main(int argc, char** argv) +{ + printf("Opening file '%s' with FILE_SHARE_DELETE access...\n", argv[1]); + + HANDLE hFile = CreateFileA(argv[1], GENERIC_READ, + FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + if (hFile == INVALID_HANDLE_VALUE) { + printf("failed to open file\n"); + return -1; + } + + Sleep(10); + + CloseHandle(hFile); + + return 0; +} + diff --git a/vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.exe b/vendor/exiv2-0.25/msvc2005/tools/issue984/issue984.exe new file mode 100755 index 0000000000000000000000000000000000000000..be9add1a64971631b69248097b56123fcdf373c4 GIT binary patch literal 53248 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 => 'indented'); + +$xml->parse(\*STDIN); +$xml->print(); + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/msvc2005/tools/python/depend.py b/vendor/exiv2-0.25/msvc2005/tools/python/depend.py new file mode 100755 index 0000000..55b6845 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/python/depend.py @@ -0,0 +1,84 @@ +#!/usr/bin/python3 + +## +# read an MSVC solution file and generate the project dependency table +# syntax: tools/python/depend solution-file [format] +# - the argument 'format' can be anything! +## + +import os +import sys + +def main(): + ## + # no arguments, report and quit + if len(sys.argv)==1: + print('%s solutionfile' % sys.argv[0]) + return + bFormat = len(sys.argv)>2 + + sln=sys.argv[1] + print(sln) + + lines=open(sln).readlines() + + project={} + depends={} + bDepends = False + for line in lines: + if line.find('Project(')>=0: + start = line.find(' = "') + end = line.find('"',start+4) + name = line[start+4:end] + start = line.find('{',end) + end = line.find('}',start) + uid = line[start+1:end] + project[uid] = name + if line.find('Global')>0: + break + + # print(project) + + for line in lines: + if line.find('Project(')>=0: + start = line.find(' = "') + end = line.find('"',start+4) + name = line[start+4:end] + depends[name]=set([]) + + if bDepends & (line.find('ProjectSectionEnd')>0): + bDepends=False + if (not bDepends) & (line.find('ProjectSection(ProjectDependencies)')>=0): + bDepends=True + if bDepends: + start = line.find('{') + end = line.find('}',start+1) + if (start>0) & (end>0): + uid = line[start+1:end] + # print('found uid = ',uid) + if not name in depends: + depends[name]=set([]) + if uid in project: + depends[name].add(project[uid]) + if line.find('Global')>0: + break + + for p in sorted(depends.keys()): + if bFormat: + s=str(depends[p]) + s=s.replace('{','[').replace('}',']') + s=s.replace('set()','[ ]') + P="project['" + p + "']" + print('%-30s = set(%s)' % (P,s) ) + else: + print('%-20s %s' % (p,depends[p]) ) + + +# project['xmpparser-test' ] = set(['libexiv2','xmpsdk' ]) + + +if __name__ == "__main__": + main() + +# That's all Folks +## \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/tools/python/tee.py b/vendor/exiv2-0.25/msvc2005/tools/python/tee.py new file mode 100755 index 0000000..4bb2878 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/python/tee.py @@ -0,0 +1,127 @@ +#!/usr/bin/python3 + +## +# tee.py +# This little script was an effort tsort the dependancies +# I don't actually need it because I've used depend.py to extract +# the dependency table from exiv2-webready.sln and pasted it into configure.py +## + +import os +import sys +import uuid +import optparse +import datetime +import platform +import xml.dom.minidom + +class GraphError(Exception): + pass + +def tsort(partials): + """ + Copyright Nathan Hurst 2001 + Licenced under the LGNU GPL. see COPYING for details. + """ + preds = {} + succs = {} + output = [] + distinct_value = (0,) # Julian Satchell suggested I use a unique + # identifier, rather than None as my sentinel + for i in partials: + prev = distinct_value; + for j in i: + if(not j in preds): + preds[j] = 0; + + if(not j in succs): + succs[j] = {}; + if(not prev is distinct_value): + if(not prev in succs): + succs[prev] = {}; + if(not j in succs[prev]): + succs[prev][j] = 1; + preds[j] = preds[j] + 1; + prev = j + + starts = list(map(lambda a: a[0], filter(lambda a: (a[1] == 0), preds.items()))) + while(len(starts) > 0): + start = starts[0] + starts = starts[1:] # prune off start + output = output + [start]; + for i in succs[start].keys(): + preds[i] = preds[i] - 1; + if(preds[i] == 0): + starts.append(i) + del succs[start]; + result=[] + for i in reversed(output): + result.append(i) + return result + +def empty(): + return set([]) + +ignore = set(['expat' , 'expat201' , 'expat210' , 'tests' , 'testv' + ,'zlib123' , 'zlib125' , 'zlib127' , 'tools' , 'exiv2lib' + ]) + +## +# build dict:uid - hunt the tree for .vcproj files +uid = {} +for d in os.listdir('.'): + if os.path.isdir(d) & (not d in ignore): + for root, dirs, files in os.walk(d): + for file in files: + ext = ".vcproj" + if file.endswith(ext) & (file.find('configure') < 0): + uid[d]=str(uuid.uuid1()) + + +externlib= set(['libcurl' , 'libexpat' , 'zlib' , 'libcurl' + ,'libeay32' , 'ssleay32' , 'libssh' , 'openssl' + ]) + + +## +# define project dependances +# TODO: read exiv-webready.sln to build project/dependency set +project = {} +# no dependancy +for p in externlib: + project[p]=empty() + +## +# dependancies +project['xmpparser-test' ] = set(['libexiv2','xmpsdk' ]) +project['xmpparse' ] = set(['libexiv2','xmpsdk' ]) +project['xmpsample' ] = set(['libexiv2','xmpsdk' ]) +project['xmpsdk' ] = set([ 'libexpat' ]) +project['geotag' ] = set([ 'libexpat','libexiv2']) +project['libexiv2' ] = set([ 'libexpat','xmpsdk' ,'zlib','libcurl','libeay32','ssleay32','libssh','openssl']) +project['libcurl' ] = set(['libeay32','ssleay32','libssh' ]) +project['libssh' ] = set(['libeay32','ssleay32','openssl' ]) +project['libeay32' ] = set(['openssl' ]) +project['ssleay32' ] = set(['openssl' ]) +project['openssl' ] = set(['libcurl' , 'libssh' ]) +project['libexiv2' ] = set(['openssl' ,'zlib','xmpsdk']) + +## +# all others depend on libexiv2 +for p in uid: + if not p in project: + project[p]=set(['libexiv2']) + +## +# tsort the dependencies +edges=[] +for p in project: + for d in project[p]: + edges.append([p,d]) + +print(edges) +print('-------------') +print(tsort(edges)) + +# That's all folks +## diff --git a/vendor/exiv2-0.25/msvc2005/tools/rm/ReadMe.txt b/vendor/exiv2-0.25/msvc2005/tools/rm/ReadMe.txt new file mode 100644 index 0000000..c2c5bee --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/rm/ReadMe.txt @@ -0,0 +1,21 @@ +This is a native version of the unix command rm +It can delete files and trees +rm.exe -rf [directory|file] + + +I've added this for use by the script jenkins_build.bat +We have to remove the support libraries which are copied during the build +I gave up on rmdir and del +becase the file openssl/NUL isn't removed a causes havoc. + +http://hg.mozilla.org/users/jford_mozilla.com/jhford-native-rm/file/84a240176b93/rm.cpp + +Code is built +call vcvars32.bat +nmake rm.exec + +I provide the 32-bit version for use on Win32 and x64 platforms in tools/bin/rm.exe + +Robin Mills +robin@clanmills.com +2014-12-18 + diff --git a/vendor/exiv2-0.25/msvc2005/tools/rm/rm.cpp b/vendor/exiv2-0.25/msvc2005/tools/rm/rm.cpp new file mode 100644 index 0000000..56f503c --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/tools/rm/rm.cpp @@ -0,0 +1,308 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/* Written in 2011, 2012 by John Ford + * + * This program is a replacement for the Posix 'rm' utility implemented as + * a native Windows win32 application. Build using accompanying Makefile + * make + * or by running + * cl rm.cpp + */ +#include +#include +#include +#include + + + +/* TODO: + * -should the wow64fsredirection stuff be applicable to the whole app + * or only per empty_directory invocation? + * -support simple unix-style paths (i.e. map /c/dir1/file1 to c:\\dir1\\file1) + * -return non-zero if no files are deleted and -f isn't specified + * -multi-thread deletions + */ + +/* This function takes an errNum, filename of the file being operated on and + * a stdio file handle to the file where output should be printed + */ +void print_error(DWORD errNum, wchar_t* filename, FILE* fhandle){ + wchar_t* msg; + FormatMessageW( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + errNum, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPWSTR) &msg, + 0, NULL); + fwprintf(fhandle, L"\"%ws\" - %ws", filename, msg); +} + +/* Remove an empty directory. This will fail if there are still files or + * other directories in the directory specified by name + */ +BOOL del_directory(wchar_t* name, BOOL force, BOOL verbose, BOOL quiet){ + BOOL rv = TRUE; + if (verbose) { + fwprintf(stdout, L"deleting directory \"%ws\"\n", name); + } + BOOL delStatus = RemoveDirectoryW(name); + if (!delStatus) { + rv = FALSE; + if (!quiet) { + print_error(GetLastError(), name, stderr); + } + } + if (verbose) { + fwprintf(stdout, L"deleted directory \"%ws\"\n", name); + } + return rv; +} + +/* Remove a file. If force is true, read only and system file system + * attributes are cleared before deleting the file + */ +BOOL del_file(wchar_t* name, BOOL force, BOOL verbose, BOOL quiet){ + BOOL rv = TRUE; + if (force) { + DWORD fileAttr = GetFileAttributesW(name); + if (fileAttr == INVALID_FILE_ATTRIBUTES) { + if (!quiet) { + fwprintf(stderr, L"invalid file attributes for \"%ws\"\n", name); + } + // Hmm, should I still try to delete the file? + return FALSE; + } + if (fileAttr & FILE_ATTRIBUTE_DIRECTORY) { + if (!quiet) { + fwprintf(stderr, L"%ws is a directory, not a file\n", name); + rv = FALSE; + } + } + // Should really only have one SetFileAttributes + if (fileAttr & FILE_ATTRIBUTE_SYSTEM || + fileAttr & FILE_ATTRIBUTE_READONLY) { + DWORD toSet = FILE_ATTRIBUTE_NORMAL; + if (verbose) { + wprintf(L"changing \"%ws\" file attributes to be removable\n", name); + } + DWORD setAttrStatus = SetFileAttributesW(name, toSet); + if (!setAttrStatus){ + rv = FALSE; + if (!quiet) { + print_error(setAttrStatus, name, stderr); + } + } + } + } + if (verbose) { + fwprintf(stdout, L"deleting \"%ws\"\n", name); + } + BOOL delStatus = DeleteFileW(name); + if (!delStatus) { + rv = FALSE; + if (!quiet) + print_error(GetLastError(), name, stderr); + } else if (verbose) { + fwprintf(stdout, L"deleted \"%ws\"\n", name); + } + return rv; +} + +/* This function will recursively remove all files in a directory + * then the directory itself. + */ +BOOL empty_directory(wchar_t* name, BOOL force, BOOL verbose, BOOL quiet){ + BOOL rv = TRUE; + DWORD ffStatus; + WIN32_FIND_DATAW findFileData; + // TODO: Don't waste so much memory! + wchar_t dir[MAX_PATH]; + HANDLE hFind = INVALID_HANDLE_VALUE; + // Used while disabling Wow64 FS Redirection + //Unused for now PVOID* wow64value = NULL; + + /* without a trailing \*, the listing for "c:\windows" would show info + * for "c:\windows", not files *inside* of "c:\windows" + */ + StringCchCopyW(dir, MAX_PATH, name); // TODO: Check return + StringCchCatW(dir, MAX_PATH, L"\\*"); + + /* We don't know what's going on, but Wow64 redirection + * is not working quite right. Since nothing we have should + * be in a location that needs Wow64, we should be fine to + * ignore it + */ + //Wow64DisableWow64FsRedirection(wow64value); + + hFind = FindFirstFileW(dir, &findFileData); + + if (hFind == INVALID_HANDLE_VALUE) { + rv = FALSE; + if (!quiet) { + print_error(GetLastError(), name, stderr); + } + return rv; + } + + do { + wchar_t fullName[MAX_PATH]; + StringCchCopyW(fullName, MAX_PATH, name); + StringCchCatW(fullName, MAX_PATH, L"\\"); + StringCchCatW(fullName, MAX_PATH, findFileData.cFileName); + if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + if (wcscmp(L".", findFileData.cFileName) != 0 && wcscmp(L"..", findFileData.cFileName) != 0){ + if (!empty_directory(fullName, force, verbose, quiet)){ + rv = FALSE; + } + } + } else { + if (!del_file(fullName, force, verbose, quiet)) { + rv = FALSE; + } + } + } while (FindNextFileW(hFind, &findFileData) != 0); + + /* if (!Wow64RevertWow64FsRedirection(wow64value)) { + * if (!quiet) { + * fwprintf(stderr, L"Error restoring Wow64 FS Redirection\n"); + * } + * return FALSE; + * } + */ + + ffStatus = GetLastError(); + if (ffStatus != ERROR_NO_MORE_FILES) { + print_error(ffStatus, findFileData.cFileName, stderr); + rv = FALSE; + } + + FindClose(hFind); + + del_directory(name, force, verbose, quiet); + + return rv; + +} + +/* This function is used to delete a file or directory specified by the + * 'name' variable. The type of 'name' is figured out. If the recurse + * option is TRUE, directories will be recursively emptied then deleted. + * If force is TRUE, file attributes will be changed to allow the program + * to delete the file. The verbose option will cause non-fatal error messages + * to print to stderr. The quiet option will suppress all but fatal + * error messages + */ +BOOL del(wchar_t* name, BOOL recurse, BOOL force, BOOL verbose, BOOL quiet) { + BOOL rv = TRUE; + DWORD fileAttr = GetFileAttributesW(name); + if (fileAttr == INVALID_FILE_ATTRIBUTES){ + rv = FALSE; + if (!quiet) { + fwprintf(stderr, L"Invalid file attributes for \"%ws\"\n", name); + } + } else if (fileAttr & FILE_ATTRIBUTE_DIRECTORY) { + if (recurse){ + if (!empty_directory(name, force, verbose, quiet)){ + rv = FALSE; + } + } else { + if (!del_directory(name, force, verbose, quiet)){ + rv = FALSE; + } + } + } else { + if (!del_file(name, force, verbose, quiet)){ + rv = FALSE; + } + } + return rv; +} + +/* This struct is used by the command line parser */ +struct node{ + node *next; + wchar_t* data; +}; + +int wmain(int argc, wchar_t** argv) +{ + int exitCode = 0; + int i, j; + BOOL verbose = FALSE, force = FALSE, quiet = FALSE, recurse = FALSE; + BOOL onlyFiles = FALSE; + struct node *previous = NULL; + struct node *start = NULL; + for (i = 1 ; i < argc ; i++) { + if (wcscmp(argv[i], L"--") == 0) { + /* Once we've seen '--' as an arg in the argv, + * we want to interpret everything after that point + * as a file + */ + onlyFiles = TRUE; + } else if (!onlyFiles && argv[i][0] == L'-') { + /* Before the -- appears (if ever), we assume that all + * args starting with - are options. If I wanted to do + * full words, I would have a check for the second char + * being another - in a case and use that case and wsccmp + * to set the options. + */ + for (j = 1 ; j < wcslen(argv[i]) ; j++) { + switch(argv[i][j]){ + case L'v': + verbose = TRUE; + break; + case L'q': + quiet = TRUE; + break; + case L'r': + recurse = TRUE; + break; + case L'f': + force = TRUE; + break; + default: + fwprintf(stderr, L"The option -%wc is not valid\n", argv[i][j]); + exitCode = 1; + } + } + } else { + /* If there are no more options, or we are forcing the rest of the + * args to be files, we add them to the linked list. This list stores + * args in reverse order to what is on the command line. + */ + struct node *nextNode = (struct node *) malloc(sizeof(struct node)); + nextNode->data = argv[i]; + nextNode->next = previous; + previous = nextNode; + start = nextNode; + } + } + if (verbose && quiet) { + fwprintf(stderr, L"The -q (quiet) and -v (verbose) options are incompatible\n"); + exitCode = 1; + } + /* If everything is good, its time to start deleting the files. + * We do this by traversing the linked list, deleting the current + * node then deleting the current node before moving to the next + */ + if (!exitCode) { + struct node* current = start; + while (current != NULL){ + BOOL result = del(current->data, recurse, force, verbose, quiet); + if (!result) { + exitCode = 1; + } + struct node* cleanup = current; + current = current->next; + free(cleanup); + } + } + + return exitCode; +} diff --git a/vendor/exiv2-0.25/msvc2005/utiltest/utiltest.vcproj b/vendor/exiv2-0.25/msvc2005/utiltest/utiltest.vcproj new file mode 100644 index 0000000..0510e35 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/utiltest/utiltest.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/werror-test/werror-test.vcproj b/vendor/exiv2-0.25/msvc2005/werror-test/werror-test.vcproj new file mode 100644 index 0000000..378b552 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/werror-test/werror-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/write-test/write-test.vcproj b/vendor/exiv2-0.25/msvc2005/write-test/write-test.vcproj new file mode 100644 index 0000000..70032d7 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/write-test/write-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/write2-test/write2-test.vcproj b/vendor/exiv2-0.25/msvc2005/write2-test/write2-test.vcproj new file mode 100644 index 0000000..a81bd1e --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/write2-test/write2-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/xmpparse/xmpparse.vcproj b/vendor/exiv2-0.25/msvc2005/xmpparse/xmpparse.vcproj new file mode 100644 index 0000000..1ce37ad --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/xmpparse/xmpparse.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/xmpparser-test/xmpparser-test.vcproj b/vendor/exiv2-0.25/msvc2005/xmpparser-test/xmpparser-test.vcproj new file mode 100644 index 0000000..a95a426 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/xmpparser-test/xmpparser-test.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/xmpsample/xmpsample.vcproj b/vendor/exiv2-0.25/msvc2005/xmpsample/xmpsample.vcproj new file mode 100644 index 0000000..0f26d5d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/xmpsample/xmpsample.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/xmpsdk/xmpsdk.vcproj b/vendor/exiv2-0.25/msvc2005/xmpsdk/xmpsdk.vcproj new file mode 100644 index 0000000..b142f59 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/xmpsdk/xmpsdk.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/zlib/zlib.vcproj b/vendor/exiv2-0.25/msvc2005/zlib/zlib.vcproj new file mode 100644 index 0000000..0a70d6d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/zlib/zlib.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/zlib123/zlib.vcproj b/vendor/exiv2-0.25/msvc2005/zlib123/zlib.vcproj new file mode 100644 index 0000000..0202db3 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/zlib123/zlib.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/zlib125/zlib.vcproj b/vendor/exiv2-0.25/msvc2005/zlib125/zlib.vcproj new file mode 100644 index 0000000..c682330 --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/zlib125/zlib.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/msvc2005/zlib127/zlib.vcproj b/vendor/exiv2-0.25/msvc2005/zlib127/zlib.vcproj new file mode 100644 index 0000000..ebe121d --- /dev/null +++ b/vendor/exiv2-0.25/msvc2005/zlib127/zlib.vcproj @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vendor/exiv2-0.25/po/CMakeLists.txt b/vendor/exiv2-0.25/po/CMakeLists.txt new file mode 100644 index 0000000..63b3773 --- /dev/null +++ b/vendor/exiv2-0.25/po/CMakeLists.txt @@ -0,0 +1,33 @@ +# CMake build system for exiv2 library and executables +# Copyright 2008 by Patrick Spendrin +# Copyright 2010-2012 by Gilles Caulier +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +# automatically include all po files in the directory +FILE(GLOB PO_FILES *.po) + +if ( NOT MSVC ) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() + +UPDATE_TRANSLATIONS(exiv2 ${PO_FILES}) + +ADD_TRANSLATIONS(exiv2 ${PO_FILES}) + +ADD_CUSTOM_TARGET( pot-update + COMMAND xgettext -d ${PACKAGE_NAME} + -s + -D ${CMAKE_CURRENT_SOURCE_DIR}/.. + -o ${PACKAGE_NAME}.pot + -p ${CMAKE_CURRENT_SOURCE_DIR}/ + --from-code=UTF-8 + --files-from=POTFILES.in + -j + --keyword=_ + --package-name=${PACKAGE_NAME} + --package-version=${PACKAGE_VERSION} + --copyright-holder=${PACKAGE_COPYRIGHT} + --msgid-bugs-address=${PACKAGE_BUGREPORT} + ) diff --git a/vendor/exiv2-0.25/po/ChangeLog b/vendor/exiv2-0.25/po/ChangeLog new file mode 100644 index 0000000..af49ff7 --- /dev/null +++ b/vendor/exiv2-0.25/po/ChangeLog @@ -0,0 +1,12 @@ +2006-10-31 gettextize + + * Makefile.in.in: New file, from gettext-0.14.6. + * boldquot.sed: New file, from gettext-0.14.6. + * en@boldquot.header: New file, from gettext-0.14.6. + * en@quot.header: New file, from gettext-0.14.6. + * insert-header.sin: New file, from gettext-0.14.6. + * quot.sed: New file, from gettext-0.14.6. + * remove-potcdate.sin: New file, from gettext-0.14.6. + * Rules-quot: New file, from gettext-0.14.6. + * POTFILES.in: New file. + diff --git a/vendor/exiv2-0.25/po/LINGUAS b/vendor/exiv2-0.25/po/LINGUAS new file mode 100644 index 0000000..026f5f6 --- /dev/null +++ b/vendor/exiv2-0.25/po/LINGUAS @@ -0,0 +1,2 @@ +# Set of available languages. +bs de es fi fr gl ms pl pt ru sk sv ug uk vi diff --git a/vendor/exiv2-0.25/po/Makefile.in.in b/vendor/exiv2-0.25/po/Makefile.in.in new file mode 100644 index 0000000..acefa5f --- /dev/null +++ b/vendor/exiv2-0.25/po/Makefile.in.in @@ -0,0 +1,385 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.14.4 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + +GMSGFMT = @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT stamp-po + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po *.gmo + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/vendor/exiv2-0.25/po/Makevars b/vendor/exiv2-0.25/po/Makevars new file mode 100644 index 0000000..4154518 --- /dev/null +++ b/vendor/exiv2-0.25/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Andreas Huggel + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = ahuggel@gmx.net + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/vendor/exiv2-0.25/po/POTFILES.in b/vendor/exiv2-0.25/po/POTFILES.in new file mode 100644 index 0000000..490acfa --- /dev/null +++ b/vendor/exiv2-0.25/po/POTFILES.in @@ -0,0 +1,22 @@ +# List of source files with translatable strings, generated with +# $ grep -l '[N ]_(' src/*.cpp src/*.hpp | sort +# Note: Please run 'make update-po' after changing this list + +src/actions.cpp +src/canonmn.cpp +src/crwimage.cpp +src/datasets.cpp +src/error.cpp +src/exiv2.cpp +src/fujimn.cpp +src/minoltamn.cpp +src/nikonmn.cpp +src/olympusmn.cpp +src/panasonicmn.cpp +src/pentaxmn.cpp +src/properties.cpp +src/sigmamn.cpp +src/sonymn.cpp +src/tags.cpp +src/tiffimage.cpp +src/tiffvisitor.cpp diff --git a/vendor/exiv2-0.25/po/Rules-quot b/vendor/exiv2-0.25/po/Rules-quot new file mode 100644 index 0000000..9c2a995 --- /dev/null +++ b/vendor/exiv2-0.25/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/vendor/exiv2-0.25/po/boldquot.sed b/vendor/exiv2-0.25/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/vendor/exiv2-0.25/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g +s/“/“/g +s/â€/â€/g +s/‘/‘/g +s/’/’/g diff --git a/vendor/exiv2-0.25/po/bs.po b/vendor/exiv2-0.25/po/bs.po new file mode 100644 index 0000000..c03b477 --- /dev/null +++ b/vendor/exiv2-0.25/po/bs.po @@ -0,0 +1,27028 @@ +# Bosnian translation for exiv2 +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the exiv2 package. +# +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2015-04-13 21:19+0000\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 22:57+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "NeuspjeÅ¡no otvaranje datoteke\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Naziv datoteke" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "VeliÄina datoteke" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Bajtova" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "MIME tip" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "VeliÄina slike" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "" +"Exchangeable image file format (Exif) podaci nisu pronaÄ‘eni u ovoj " +"datoteci.\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "ProizvoÄ‘aÄ fotoaparata" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Model fotoaparata" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Vrijeme slike" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Broj slike" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Dužina ekspozicije" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Blenda" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Kompenzacija ekspozicije" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Blic" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Kompenzacija blica" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Žižna daljina" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "35 mm ekvivalent" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Udaljenost od objekta" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Brzina .ISO slike" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "NaÄin ekspozicije" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Mod mjerenja" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Makro mod" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Kvalitet slike" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Exif rezolucija" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Ravnoteža bijele" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "SliÄica" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Nikakva" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Autorska prava" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Exif komentar" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(zabranjena binarna vrijednost)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Komentar JPEG slike" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Pregled" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "pikseli" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "bajta" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Nema oznaka" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "niti" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "pronaÄ‘eni u datoteci" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Vremenska oznaka nije podeÅ¡ena u ovoj datoteci" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "NeuspjeÅ¡na analiza vremenske oznake" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "u datoteci" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Ažuriranje vremenske oznake u" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Brisanje podataka o sliÄicama" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "BriÅ¡em Exif podatke iz datoteke" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "BriÅ¡em IPTC podatke iz datoteke" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "BriÅ¡em JPEG komentar iz datoteke" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "BriÅ¡em XMP podatke iz datoteke" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Slika ne sadrži Exif sliÄicu\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Pisanje umanjene sliÄice" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "do datoteke" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Exif podaci ne sadrže umanjenu sliÄicu\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "Slika ne sadrži pregled" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Pisanje pregleda" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Postavljanje JPEG komentara" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Dodaj" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Upozorenje" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Neuspjelo Äitanje" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "vrijednost" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Postavi" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Del" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Vremenska oznaka metadatuma s kljuÄem" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "nije postavljeno\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "PodeÅ¡avam" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "od" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "godina" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "godina" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "mjeseci" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "mjesec" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "dana" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "dan" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Ne mogu prilagoditi vremensku oznaku za" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "do" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "Standardno obilježje Exif ISO ne postoji; nije promjenjeno\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Postavljanje vrijednosti Exif ISO na" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Nema korisniÄkih komentara za Exif" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "PronaÄ‘en Exif korisniÄki komentar sa neoÄekivanom vrstom podataka" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Nema UNICODE komentara korisnika za Exif" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "Postavljanje Exif UNICODE korisniÄkog komentara na" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Pisanje Exif podataka iz" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Pisanje IPTC podataka iz" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Pisanje XMP podataka iz" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Pisanje JPEG komentara iz" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Matapodaci se ne mogu upisati u datoteku" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Format imena datoteke rezultovao je praznim imenom datoteke" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Ova datoteka već ima pravilno ime" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Datoteka" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "postoji. [O]briÅ¡i, p[r]eimenuj ili pre[s]koÄi?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Preimenovanje datoteke u" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "ažuriranje vremenske oznake" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "NeuspjeÅ¡no preimenovanje" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "PiÅ¡i preko" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "IskljuÄeno" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "UkljuÄeno" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Format 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Format 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "Uklj (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "Uklj (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Nepoznato" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Postavke kamere" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Razne postavke kamere" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Žižna daljina" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Informacija o snimku" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Informacija o snimku" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Vrsta slike" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Vrsta slike" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Firmware verzije" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Firmware verzija" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "DatoteÄni broj" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "DatoteÄni broj" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Ime vlasnika" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Serijski broj" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Serijski broj kamere" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "Informacija o aparatu" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "Informacija o aparatu" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Posebne funkcije" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "Oznaka modela" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Oznaka modela" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Informacija o slici" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Informacija o slici" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "Važeće podruÄje sliÄice" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "Važeće podruÄje sliÄice" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "Format serijskog broja" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "Format serijskog broja" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Super makro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Super makro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "AF Info" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "AF info" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "Originalna pozicija podataka za odluku" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "Originalna pozicija podataka za odluku" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Tablica balansa bijelog" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Tablica balansa bijelog" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Model Objektiva" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "model objektiva" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Interni serijski broj" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Interni serijski broj" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Podaci za uklanjanje praÅ¡ine" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "Podaci za uklanjanje praÅ¡ine" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "PrilagoÄ‘ene funkcije" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "Informacije o obradi" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "Informacije o obradi" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "Mjkerena boja" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "Mjkerena boja" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "Prostor boja" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "VRD pozicija" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "VRD pozicija" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "Informacija o senzoru" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "Informacija o senzoru" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "Podaci o bojama" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "Podaci o bojama" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Nepoznata CanonMakerNote oznaka" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "EkonomiÄno" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normalno" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Fino" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Super fino" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Normalni film" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Film" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Automatski" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Uklanjanje crvenih oÄiju" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Spora sinhronizacija" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Automatski + crveno oko" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "UkljuÄeno+ crveno oko" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "SpoljaÅ¡nji" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "PojedinaÄno/tajmer" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Neprekidno" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Film" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Neprekidno, prednost brzini" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Neprekidno, nisko" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Neprekidno, visoko" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "AF jednog snimka" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "AI servo AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AI žiža AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "RuÄno podesiva žiža" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Jednostruko" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Pan žiža" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Velika" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Srednja" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Mala" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Srednje 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Srednje 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Srednje 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Potpuna automatika" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "RuÄno" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Pejzaž" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Brza blenda" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Sporo blenda" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Noćni prizor" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Sivo" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Portret" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Sport" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Makro / približavanje" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Crno-bijelo" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Živo" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutralno" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "IskljuÄen blic" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Duga blenda" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "LIšće" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "u sobi" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Vatromet" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Plaža" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Pod vodom" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Snijeg" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Djeca i ljubimci" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Noćni snimci" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Digitalni makro" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Moje boje" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Mirna slika" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Ostalo" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Nisko" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Visoko" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/d" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Automatska visina" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Podrazumijevano" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Spot" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "ProsjeÄno" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Procjena" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "DjelimiÄno" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Centrirano težinski" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Nepoznato" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Makro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Veoma blizu" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Blizu" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Srednji opseg" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Dalek opseg" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "BeskonaÄno" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "RuÄno biranje AF" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "NiÅ¡ta (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Automatski izabrano" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Desno" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Centar" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Lijevo" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Automatsko AF biranje taÄke" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Lako fotografisanje (automatski)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Program (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Prioritet zatvaraÄa (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Prioritet blende (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "RuÄno (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Neokidaj" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Upaljen" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Spoljni blic" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "UnutraÅ¡nji blic" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "Omogućena sinhronizacija FP" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Korišćena druga zastava sinhronizacije" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "Korišćena FP sinhronizacija" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "Normalna AE" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Kompenzacija ekspozicije" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "ZakljuÄavanje AE" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "AE zakljuÄavanje + Kompenzacija ekspozicije" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Bez AE" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "UkljuÄeno, samo slikanje" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "AF taÄka" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Glatko" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "Crnobijelo" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "PrilagoÄ‘eno" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Moji podaci o boji" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Puni" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "sRAW1 (mRAW)" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "sRAW2 (sRAW)" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "SamomjeraÄ" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "SamomjeraÄ" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Kvalitet" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Mod blica" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Postavka režima blica" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Režim upravljanja" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Postavka režima upravljanja" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Žižni mod" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Postavka režima fokusa" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "VeliÄina slike" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Jednostavni režim" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Mod lakog slikanja" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Digitalno uvećanje" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Digitalno uvećanje" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Kontrast" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Postavljanje kontrasta" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Zasićenje" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Postavljanje zasićenja" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "OÅ¡trina" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Postavka oÅ¡trine" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "ISO brzi režim" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Postavka ISO brzine" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Režim mjerenja" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Postavka mjerećeg režima" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Vrsta fokusa" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Postavka vrste fokusa" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "AF taÄka odabrana" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Program ekspozicije" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Postavka režima ekspozicije" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Vrta leća" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Tip soÄiva" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "SoÄivo" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"'duga' i 'kratka' žariÅ¡na duljina objektiva (u \"žariÅ¡noj jedinici) i " +"'žariÅ¡ne jedinice po mm-u" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Kratka žižna daljina" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Kratka žižna daljina" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "Jedinice žiže" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "Žižne jedinice" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Maksimalna blenda" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Maksimalna blenda" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Minimalna blenda" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Minimalna blenda" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Aktivnost blica" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Trajanje blica" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Detalji blica" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Detalji blica" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Kontinualna žiža" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Fokusiraj neprekidno podeÅ¡avanje" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "AESetting" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "PodeÅ¡avanje AE" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Stabilizacija slike" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Stabilizacija slike" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Prikaži blendu" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Otvor prikaza" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Å irina izvora zuma" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "Å irina zumiranja izvora" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "Å irina odrediÅ¡ta zuma" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "Å irina odrediÅ¡ta zuma" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "Spot naÄin mjerenja" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "Spot naÄin mjerenja" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Foto Efekt" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Efekat fotografije" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "RuÄni izlaz blica" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "RuÄni izlaz blica" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Ton boje" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Nijansa boja" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "SRAW Kvalitet tona" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "SRAW kvalitet" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Nepoznate opcije Canon kamere 1 tag" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Dnevno svjetlo" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "OblaÄno" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Volfram" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Fluorescentno" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Crno - bijelo" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "SijenÄenje" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "BuÄna temperatura (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "PC Set 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Dnevnosvjetlosna fluroscentna" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "PrilagoÄ‘eno 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "PrilagoÄ‘eno 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "PrilagoÄ‘eno 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "PC Set 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "PC Set 5" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "GN (prioritet udaljenosti)" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "lijevo" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "sredina" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "desno" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "ISO brzina koriÅ¡tena" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "ISO brzina koriÅ¡tena" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "Mjerljivo EV" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "OdrediÅ¡na blenda" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Ciljna brzina slikanja" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Ciljna brzina slikanja" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Ravnoteža bijele" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Postavljanje ravnoteže bijele" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Sekvenca" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Broj sekvenci (ako je u kontinualnom emitovanju)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "KoriÅ¡tena AF taÄka" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "KoriÅ¡tena AF taÄka" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Blic" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Udaljenost subjekta" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Udaljenost objekta (jedinice nisu jasne)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Otvor blende" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "ZatvaraÄka vrijednost brzine" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Brzina zatvaraÄa" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "Mjereni EV 2" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Nepoznata postavka Canon Kamere 2 tag" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "S lijeva nadesno" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "S desna nalijevo" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Odozdo prema gore" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Odozgo prema dolje" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "2x2 matrca (u pravcu kazaljke)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Panoramski kadar" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Broj panoramskog kadra" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Smijer panoram" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Smijer panorame" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Nepoznat Canon Panorama tag" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Smanjenje Å¡uma" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Redukcija Å¡uma pri dugoj ekspoziciji" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "OkidaÄ Ae zakljucan" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "OkidaÄke tipke za zakljuÄavanje" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Zatvori Ogledalo" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Zatvori ogledalo" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Koraci nivoa ekspozicije" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "TV/AV i nivo izlozenosti" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "AF pomoćnik" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "AF pomoćno svijetlo" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "ProsjeÄna sinhronizaciona brzina blica" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Brzina okidanja u prosjeku" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "AEB sekvenca" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "AEB sekvenca/automatsko otkazivanje" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Sinhronizacija okidaÄa" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Sinhronizacija zavjese zatvaraÄa" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "SoÄivo AF Stop Dugme" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "SoÄivo AF Stop Dugme Fn. PrekidaÄ" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Automatska redukcija poptunog blica" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Automatska redukcija poptunog blica" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Meni Dugme za Povratak" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Povratana pozicija meni dugmeta" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Postavljanje funkcije dugmeta" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "Postavljanje funkcije dugmeta u toku slikanja" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "ÄŒišćenje senzora" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "ÄŒišćenje senzora" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "Superizloženi displej" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "Superizloženi displej" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "PuÅ¡tanje OkidaÄa bez CF Kartice" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "PuÅ¡tanje OkidaÄa bez CF Kartice" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Nepoznata Canon funkcijska oznaka" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "sredina desno" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "dno" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "vrh" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "sredina lijevo" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "gore lijevo" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "gore desno" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "dolje lijevo" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "dolje desno" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Å irina slike" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Å irina slike" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Visina slike" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Visina slike" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Å irina slike kao snimak" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Å irina slike kao snimak" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Visina slike kao snimak" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Visina slike kao snimak" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "AF taÄke koriÅ¡tene" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "AF taÄke koriÅ¡tene" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "AF taÄke koriÅ¡tene 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "AF taÄke koriÅ¡tene (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Nepoznat tag za Canon sliku" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "WB" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Razglednica" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Å iroki ekran" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Srednji Film" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "Mali Film" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "On 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "On 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "On (shift AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "On (shift GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Žuta" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Narandžasta" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Crvena" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Zelena" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Plava" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Purpurna" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Mod Zagrade" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Vrijednost zagrade" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "Zagrada snimke Broj" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "Sirovi Jpg Kvalitet" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Sirova Jpg VeliÄina" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "WB Mod Zagrade" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "WB Vrijednost Zagrade AB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "WB zagrada vrijednosti GM-a" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Filter Efekt" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Efekat tonova" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "makro povećanje" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "makro povećanje" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "Snimanje uživo" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "Snimanje uživo" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Fokus distanca" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Fokus distanca" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "Blokiranje ekspozicije blicem" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "Blokiranje ekspozicije blicem" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Nepoznata oznaka Canon datoteke" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "UobiÄajeno" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "Najniže" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "NajviÅ¡e" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "Visoko zasićenje" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "nisko zasićenje" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "CM Set 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "CM Set 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "Kor Def. 1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "Kor Def. 2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "Kor Def. 3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "PC 1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "PC 2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "PC 3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "Vijerno" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monohromatski" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Detalji blica" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "Linija datog tona" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Linija tona" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "OÅ¡trina frekvencije" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "OÅ¡trina frekvencije" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "Senzorna crvena razina" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "Senzorna crvena razina" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "Senzorna plava razina" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "Senzorna plava razina" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "Bijelo- crveni balans" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "Bijelo- crveni balans" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "bijelo-plavi balans" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "Bijelo-plavi balans" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "Bijeli balans" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "Temperatura boje" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Temperatura boje" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "Stil slike" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Stil slike" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "Digitalni dobitak" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "digitalni dobitak" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "WBShiftAB" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "WBShift AB" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "WBShiftGM" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "WB Shift GM" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "Nepoznata Canon obradna Info oznake" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "zaglavlje ili offset" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "oznaka" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "sm" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "tip" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "veliÄina" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "pomak" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(neispravno)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "IIM omotni zapis" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "IIM aplikacisjki zapis broj dva" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Verzija modela" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Binarni broj koji identificira verzije modela podataka za razmjenu I. dio, " +"koriÅ¡tenu od strane davatelja usluga. Verzijski brojevi se dodjeljuju prema " +"IPTC i NAA organizaciji." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "OdrediÅ¡te" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Ovaj DataSet omogućen nekim pružateljima mrežnih usluga koji zahtijevaju " +"usmjeravaÄke informacije iznad odgovarajućih OSI slojeva." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Format datoteke" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Binarni broj predstavlja format datoteke.Format datoteke mora biti " +"registriran s IPTC ili NAA s jedinstvenim brojem dodijeljenim na njega." +"Informacije se koriste za usmjeravanje podataka k odgovarajućih sistema kako " +"bi se omogućilo prijemnom sistemu da bi obavljanjao odgovarajuće zadatke" +"(akcije) tamo gdje su zadate." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Verzija datoteke" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Binarni broj predstavlja odreÄ‘enu verziju File Format-a odreÄ‘enu " +" oznakom." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "ID Servisa" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "OdreÄ‘uje dobavljaÄa i proizvod" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Broj omotnica" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Znakovi formiraju broj koji će biti jedinstven za datum naveden u " +" oznaci Identifikatora servisa oznaÄenoj kao " +" . Ako identiÄan broj omotnica se pojavi na isti datum i " +"istim identifikatorom servisa , zapisii 2-9 moraju biti nepromijenjeni od " +"orginala. To nije predviÄ‘eno da bude sekvencijalni serijski broj." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Å ifra proizvoda" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Omogućuje usluga identificiranja podskupova svoje ukupne usluge. Koristi se " +"za primanje organizacije podataka na kojima se odabira, put, ili na drugi " +"naÄin obraÄ‘uju podatci." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Prioritetna omotnica" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"OdreÄ‘uje prioritet u rukovanju omotnicom , a ne uredniÄku hitnost (vidi " +" oznaku). \"1\" oznaÄava najhitnije, \"5\" normalne hitnosti, i " +"\"8\" najmanje hitni primjerak. Broj \"9\" oznaÄava KorisniÄki definiran " +"prioritet. Broj \"0\" je rezerviran za buduću uporabu." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Poslano dana" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Koristi format CCYYMMDD (st., godina, mjesec, dan), kao definiran u ISO 8601 " +"za oznaÄavanje godine, mjeseca i dana usluga poslanih materijala." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Time sent oznacava vrijeme u koje je poslat neki materijal" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Koristi oblik HHMMSS: HHMM gdje HHMMSS se odnosi na lokalne sate, minute i " +"sekunde i HHMM odnosi se na sate i minute ispred (+) ili iza (-) " +"Univerzalno koordiniranom vremenu kao Å¡to je opisano u ISO 8601. To je " +"vrijeme kada je usluga poslala materijal." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "skup znakova" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Ova oznaka se sastoji od jedne ili viÅ¡e kontrolnih funkcija koje se koriste " +"za najavu, pozivanje ili dizajniranje skupa kodiranih znakova .Kontrolne " +"funkcije slijede ISO 2022 standard i mogu se sastojati od znakova kao Å¡to " +"su escape kontrolni i jednog ili viÅ¡e grafiÄkih znakova." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Unikatno ime predmeta" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Ovaj znak pridonosi globalnoj jedistvenoj identifikaciji za objekte " +"( predmete) specificirane u IIM, neovisnih od pružaoca i bilo koje medija " +"forme. Korisnik mora biti siguran da je UNO unikatan. Predmeti sa Istim UNO-" +"om su identiÄni ( isti)." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Arm identifikator" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"DataSet identificira sažetak identifikator veze Metoda (ARM) koji je opisan " +"u dokumentu registriranom od pokretaÄa ARM s IPTC i NAA organizacija." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "ARM Verzija" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Ova oznaka sadrži binarni broj koji predstavlja partikularnu verziju ARM-a " +"specificiranom oznakom." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "snimana verzija" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Binarni broj identificira verziju modela podataka za razmjen , II dio, " +"koriÅ¡tenog od strane davatelja usluga. Verzijski brojevi se dodjeljuju prema " +"IPTC i NAA organizacija." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Vrsta objekta" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"Vrsta objekta se koristi za razlikovanje izmeÄ‘u razliÄitih vrsta objekata " +"unutar IIM . Prvi dio je broj koji predstavlja jeziÄki neovisnu meÄ‘unarodnu " +"referencu na tip objekta iza koga je dvotaÄka. U drugom dijelu, ako se " +"koristi, je tekst prikaz broja Vrsta objekta se sastoji od grafiÄkih " +"znakova te razmaka ili na engleskom ili na jeziku servisa kao Å¡to je " +"navedeno u " + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Atributi objekta" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"Atribut objekta definira prirodu objekta neovisno od subjekta. Prvi dio " +"broja reprezentira jezik neovisan od internacionalne reference ka atributu " +"Objekta popraćeno separatorom dvotaÄkom." + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Ime objekta" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"Koristi se kao skraćena referenca za objekt. Promjene postojećih podataka, " +"kao Å¡to su ažurirane priÄe ili novo- isjeÄene fotografije, trebaju biti " +"identificirani u oznaci ." + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Naslov dokumenta" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Izmijeni stanje" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "Status od objektnih podataka, prema praksi korisnika usluga" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "UredniÄke promjene" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"OznaÄava vrstu ažuriranja da je to objekt koji pruža prethodni objekt. Link " +"na prethodni objekt je napravljen koristeći oznaku i " +", prema praksi usluga korisnika ." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Hitnost" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"OdreÄ‘uje uredniÄku hitnost sadržaja, a ne nužno prioritet rukovanja " +"omotnicom (vidi oznaku ).\"1\" je najhitniji, \"5\" " +"normalno i \"8\" oznaÄava najmanje hitni primjerak." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Tema" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "Subjektna referenca struktuirana tema subjekta" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Kategorija" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"UtvrÄ‘uje predmet objekta podataka u miÅ¡ljenju korisnika. Popis kategorija " +"će se održavati od strane regionalnog registra, gdje je to moguće, u " +"protivnom davatelj usluga" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Dopunske kategorije" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"Dopunske kategorije dodatno poboljÅ¡avaju predmet objekta podataka. Dodatna " +"kategorija može ukljuÄivati ​​bilo koju od kategorija koje su priznate kao " +"oznake koriÅ¡tene u . InaÄe, izbor dopunske kategorije su " +"prepuÅ¡teni korisniku usluga." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Dopunske kategorije" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "UÄvršćivajući ID" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Identificira objekat podataka koji je obiÄno predvidiv. Omogućava odmah i " +"pronalazak ili povratak takvog objekta (predmeta)" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "KljuÄne rijeÄi" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"Koristi za oznaÄavanje odreÄ‘ene rijeÄi za pronalaženje informacija. OÄekuje " +"se da će pružatelj razliÄite vrste podataka koji se odnose na predmet " +"koristiti istu kljuÄnu rijeÄ, omogućujući primanje sustava ili podsustava za " +"pretraživanje kroz sve vrste podataka za sliÄne materijale." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Kod lokacije" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"OznaÄava kod zemlje / geografski položaj upućuje sadržajem objekta. Gdje ISO " +"je uspostavio odgovarajući pozivni broj zemlje prema ISO 3166, taj će se " +"koristiti kod. Kada ISO 3166 ne daju dovoljno za identifikaciju lokacije ili " +"države, npr. brodovi na moru, svemir, IPTC će dodijeliti odgovarajuća tri " +"znaka u skladu s odredbama ISO 3166 kako bi se izbjegao sukob." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Naziv lokacije" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Pruža puni naziv zemlje / geografski položaj upućuen sadržajem predmeta, " +"prema smjernicama pružaoca usluga." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Datum izdavanja" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"OznaÄava u obliku CCYYMMDD najraniji datum za koga pružalac usluga " +"namjerava koristit objekt. Slijedi ISO 8601 standard." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Vrijeme objavljivanja" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"OznaÄava u obliku HHMMSS:HHMM najranije vrijeme za koje pružalac usluga " +"namjerava koristiti objekt. Slijedi ISO 8601 standard." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Datum isteka" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"OznaÄava u obliku CCYYMMDD najkasniji datum za koga pružalac usluga " +"namjerava koristit objekt. Slijedi ISO 8601 standard." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Vrijeme isteka" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"OznaÄava u obliku HHMMSS:HHMM najkasnije vrijeme za koga pružalac usluga " +"namjerava koristiti objekat. Slijedi ISO 8601 standard." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Specijalne instrukcije" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Druge uredniÄke upute o koriÅ¡tenju objekta podataka, kao Å¡to su embargo i " +"upozorenja." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Instrukcije" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Predložena akcija" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"ukazuje na vrstu radnje koju objekt pruža prema prethodnom objektu. Link na " +"prethodni objekt je napravljen koristeći oznake i " +", prema praksi usluga." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Referentne usluge" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Identificira uslugu identifikatora važne koverte na koju se trenutni objekt " +"odnosi." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Datum reference" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "Identificira datum važne omotnice na koju se konkretni objekt odnosi" + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Broj reference" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "Identificira datum važne omotnice na koju se konkretni objekt odnosi" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Datum kreiranja" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Predstavljeno u obliku CCYYMMDD da odredi datum kreiranja intelektualnog " +"sadržaja objekta podataka umjesto datuma stvaranja fiziÄke reprezentacije. " +"Slijedi ISO 8601 standard." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Vrijeme kreiranja" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Prikazano u obliku HHMMSS:HHMM, za odreÄ‘ivanje sata nastanka izvora " +"materijala intelektualnog sadržaja podataka objekta, umjesto nastanka " +"fizikne predstave. Slijedi standard ISO 8601." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Datum digitalizacije" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Zastupljeni u obliku CCYYMMDD da odredi datum kada je digitalni prikaz " +"objekta podataka stvoren. Slijedi ISO 8601 standard." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Vrijeme digitalizacije" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Predstavljen u obliku HHMMSS: HHMM za oznaÄavanje vremena kada je digitalni " +"prikaz objekta podataka stvoren. Slijedi ISO 8601 standard." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Program" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" +"Identificira vrstu programa koriÅ¡tenu da prepozna podatke datog objekta" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Verzija programa" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" +"Koristi se da se pronaÄ‘e verzija programa spomenutog pod oznakom ." + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Ciklus objekta" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "Koristi se da se identificira uredniÄki ciklus datih podataka" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "po redu" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "Sadrži ime kreatora objekta podataka, npr. pisac, fotograf i grafiÄar." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Autor" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Po redu naslov" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" +"Po redu naslov je naslov stvaratelja ili kreatora objekta podataka. Gdje se " +"koristi, po redu naslov bi trebao slijediti po-redu tj. kako se modificira" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Grad" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"UtvrÄ‘uje grad objekta podataka podrijetla sukladno smjernicama koje utvrÄ‘uje " +"davatelj." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "pod mjesto" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"UtvrÄ‘uje mjesto u gradu iz kojeg potjeÄe objekt podataka, u skladu sa " +"smjernicama koje utvrÄ‘uje davatelj usluga." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "pokrajina drzave" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "Identificira region/državo kao izvor u skladu s smijernicami ponuÄ‘aÄa." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Fed.jedinica/provincija" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Oznaka zemlje" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Oznacava kod drzave/primarne lokacije gdje je intelektualno vlasnistvo " +"podatka kreirano, npr. uslikana fotografija, odrzan dogadjaj. Gdje ISO ima " +"uspostavljen odgovarajuci kod drzave prema ISO 3166, taj kod ce se " +"iskoristiti. Kada ISO 3166 ne omogucavaju dovoljno za identifikaciju " +"lokacije ili nove drzave, npr. brod na moru, svemir, IPTC ce dodijeliti " +"odgovarajuci kod od tri znaka prema odredbama ISO 3166 da bi se izbjegli " +"sukobi." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Naziv zemlje" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Nudi puno, objavljivo ime države / primarno mjesto, gdje je nastalo " +"intelektualno svojstvo podataka objekta u skladu s smijernicama ponuÄ‘aÄa." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Zemlja" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Prijenosna referenca" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"Broj predstavlja mjesto izvornog prijenosa u skladu s praksom pružaoca " +"usluga." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Naslov" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "Objavljiv unos, koji nudi sinopsis sadržaja podataka objekta." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Zasluge" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "UtvrÄ‘uje pružaoca objekta podataka, a ne nužno vlasnika / kreatora." + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Izvor" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Prikazuje originalnog vlasnika intelektualnog sadržaja podataka objekta. To " +"može biti agencija, Älan agencije ili pojedinac." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "Sadrži napomene o autorskim pravima" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Obavijest o autorskim pravima" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Osoba" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Identificira osobu ili organizaciju koja može dati dodatne informacije o " +"pozadini objekta podataka" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Naslov" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "textualni opis podataka objekta" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Opis" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "pisac" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Identifikacija imena osobe ukljuÄene u pisanom obliku, ureÄ‘ivanje ili " +"ispravljanje objekt podatke ili opis / sažetak." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Rasterizovani naslov" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"Sadrži opis rasteriziranih podataka objekta upotrebljava se gdje su za napis " +"zahtijevani znakovi, koji nisu bili kodirani." + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Prikazuje boju komponenata na slici" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orijentacija slike" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Prikazuje ili ukazuje na raspored na slici" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Jezik" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"OpiÅ¡e glavni državni jezik objekta prema dvocifrenom kodu ISO 639:1988. Ne " +"odreÄ‘uje ili pokazuje na neki znakovni niz, mada se koristi za unutraÅ¡nje " +"usmjeravanje, na primjer do razliÄitih urednika." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Vrsta zvuka" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Prikazuje vrstu audio zapisa" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Audio stopa" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Prikazuje stopu uzorkovanja u hercima na audio sadržaju" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Audio rezolucija" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "OznaÄava rezoluciju audio sadržaja." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Audio trajanje" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "oznaÄava trajanje audio sadržaja" + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Kraj zvuka" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Identificira sadržaj kraja audio objekta podataka, u skladu sa smjernicama " +"koje utvrÄ‘uje davatelj usluga." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Format pregleda" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Binarni broj koji predstavlja format datoteke za pregled objekta podataka. " +"Format datoteke mora biti registriran s IPTC ili NAA organizacija s " +"jedinstvenim broj dodijeljen na njega." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Pregled verzije" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Binarni broj, koji predstavlja odreÄ‘enu verziju vrste datoteke predpregleda " +"podataka objekta, koji su odreÄ‘eni u oznaci ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Pregled dokumenta" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Binarni pregled slike dokumenta" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Nevažeće)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Nepoznat skup podataka" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "GreÅ¡ka %0: arg2=%2, arg3=%3, arg1=%1." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Uspjeh" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Ovo ne izgleda kao %1 slika" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Nevažeći skup podataka pod imenom `%1'" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Nevažeći naziv zapisa `%1'" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "PogreÅ¡an kljuÄ `%1'" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "nevažeće ima oznake ili ifdId `%1', ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Vrijednost nije postavljena" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Neuspjelo otvaranje izvora podataka: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Neuspjelo otvaranje daotteke (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "F%1 ajl sadrži podatak koji ima nepoznatu sliku" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Memorija sadrzi podatak sa nepoznatim tipom slike" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Slika vrste %1 nije podržana" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Nije uspio oÄitati sliku podatka" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Ovo ne izgleda kao JPEG slika" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "%1 neuspjelo otvaranje fajla za Äitanje i pisanje: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Neuspjelo preimenovanje fajla kao %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Transfer nije uspio: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Transfer memorije nije uspio %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "NeuspjeÅ¡no Äitanje ulaznog dokumenta" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Neuspjelo pisanje slike" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Ulazni dokument ne sadrzi validnu sliku" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "Nevažeći ifdId %1" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Entry::setValue: Vrijednost prevelika (tag=%1, size=%2, requested=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea: Vrijednost prevelika (tag=%1, size=%2, requested=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Pozicija izvan opsega" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Nepodržan tip pomaka podruÄja podataka" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "PogreÅ¡an skup znakova: `%1'" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Nepodržan format datuma" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Nepodržan format vremena" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Pisanje na %1 slike nije podržano" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Postavljanje %1 i %2 slike nije podrzano" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Ovo ne izgleda kao CRW slika" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: nije podržano" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "Nema informacije o imenskom prostoru za XMP prefix `%1'" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"nema prefiksa registrovanog u prostoru za ime %2 potrebno za stazu svojstava " +"%1" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "VeliÄina %1 JPEG segmenta je veća od 65535 bajtova" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Nepodržan Xmpdatum %1 tipa %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "nepodržan XMP node %1 sa opt=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "XMP Toolkit greÅ¡ka %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Neuspjelo ocitavanje Lang Alt property %1 with opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "neuspjelo oÄitavanje Lang Alt qualifier %1 with opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "neuspjelo Å¡ifriranje Lang Alt property %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "neuspjelo odrediti ime iz %1, namespace %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "Imenski prostor sheme %1 nije registrovan s alatom XMP" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "nema imena registrovanog sa prefixom `%1'" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Aliases nisu podržani. Molimo poÅ¡aljite ovaj XMP paket ahuggel@gmx.net '% " +"1', '% 2', '% 3'" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Nevaććci XmpText tip `%1'" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "TIFF direktorij %1 ima previÅ¡e elemenata" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Visestruki TIFF element niza oznacava %1 u jednom imeniku" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "TIFF array element oznaka %1 ima pogreÅ¡nu vrstu" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 ima pogreÅ¡nu XMP vvrijednost tipa `%2'" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Autorsko pravo (C) 2004-2013 Andreas Huggel\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Ovaj program je slobodan softver, možete ga redistribuirati i / ili\n" +"mijenjati pod uvjetima GNU Opće javne licence\n" +"kako ju je objavio Free Software Foundation; inaÄica 2\n" +"dozvole, ili (po svom izboru) bilo koje kasnije verzije.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Ovaj program se distribuira u nadi da će biti koristan, ali NEMA NIKAKVIH " +"GARANCIJA; Äak ni implicitnih garancija za UPOTREBNU VREDNOST ili NAMENE U " +"ODREÄENE SVRHE. Pogledajte Gnuovu OpÅ¡tu javnu licencu ( GNU General Public " +"License) za viÅ¡e informacija.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Trebali bi dobiti primjerak GNU Opće javne\n" +"Licence uz ovaj program, ako ne, pisati besplatno\n" +"Software Foundation, Inc, 51 Franklin Street, petom katu,\n" +"Boston, MA 02110-1301 Sjedinjene AmeriÄke Države\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Upotreba:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ opcije ] [ akcije ] datoteka ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "rukovanje the Exif metadata slikama\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Akcije:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Podesi Exif vremenske oznake prema zadanom vremenu. Ova " +"radnja\n" +" zahtijeva " +"barem jednu od opcija -a,-Y,-O ili -D.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Prikaz metapodataka slike.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Brisanje metapodataka slike iz datoteke.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Umetni metapodatak iz odgovarajućih *.exv datoteka.\n" +" Koristi -S " +"opciju da promijeniÅ¡ nastavak ulaznih datoteka.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | izvaditi Extract metapodatak u *.exv, *.xmp i minijaturne slikovne " +"podatke.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | preimenuj Rename podatak i/ili postavi vremenski pecat podatka prema\n" +" Exif kreira vremenski pecat. Format imena datoteke moze se " +"postaviti sa\n" +" -r format, opcije vremenskog pecata se kontrolisu sa -t i -" +"T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Primjeni komande da izmijeniÅ¡ (dodaÅ¡, podesiÅ¡, izbriÅ¡eÅ¡) Exif " +"i \n" +" IPTC metapodatak slike ili " +"postavi JPEG komentar.\n" +" Zahtijeva opcije -c,-m ili " +"-M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Kopiraj ISO podeÅ¡avanje iz Nikon Makernote u obiÄnu\n" +"Exif oznaku.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" +" fc | fixcom Pretvori UNICODE Exif komentar korisnika u UCS-2. Navedeno \n" +" znakovno " +"kodiranje može biti odreÄ‘eno sa -n opcijom.\n" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opcije:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Prikaži ovu pomoć i izaÄ‘i\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Prikaži verziju programa i izaÄ‘i.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Budi preopsiran tokom trajanja programa.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" +" -q UtiÅ¡ati poruke upozorenja ili greski prilikom pokretanja programa " +"(quiet).\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" +" -Q lvl Postavi nivo bilježenja na d(ebug), i(nfo), w(arning), e(rror) " +"ili m(ute).\n" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Prikazati velike binarne velicine\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Prikaži nepoznate oznake.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g key Samo izlazne informacije za ovaj kljuc (grep)\n" + +#: src/exiv2.cpp:271 +#, fuzzy +msgid " -K key Only output info for this key (exact match).\n" +msgstr " -g key Samo izlazne informacije za ovaj kljuc (grep)\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n enc Skup znakova da se koristi za dekodiranje UNICODE Exif korisnickih " +"komentara.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k SaÄuvaj vremenske oznake datoteke (zadrži).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t TakoÄ‘er podesi vremensku oznaku datoteke u 'Preimenuj' akciji " +"(naglasenije od -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Samo podesi vremensku oznaku u 'Preimenuj' akciji, ne preimenuj\n" +" datoteku " +"(naglaÅ¡enije od -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -f Ne zahtijevaj prije zamjene sa već postojećom datotekom (na silu).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F Ne zahtijevaj prije preimenovanja datoteka (Na silu).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a time PodeÅ¡avanje vremena u formatu [-]HH[:MM[:SS]]. Ova opcija\n" +" je " +"samo upotrijebljiva sa 'podesi' akcijom.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y yrs PodeÅ¡avanje godine sa 'podesi' akcijom.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mon PodeÅ¡avanje mjeseca sa 'podesi' akcijom.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D day PodeÅ¡avanje dana sa 'podesi' akcijom.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr " -p mode Å tampaj režim za 'print' akciju. Mogući režimi su:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s: Ispisi pregled Exif metapodataka (default)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a: print Exif, IPTC i XMP metapodatak (kratica za -Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t: interepretiran (preveden) Exif podatak (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v: obiÄan Exif podatak vrijednosti (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : heksadekadni prikaz Exif podataka (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : IPTC vrijednosti podataka (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : XMP svojstva (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : JPEG komentar\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : lista dostupnih pregleda\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : obiÄna vrijednost podataka\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " X : XMP svojstva\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs Ispis zastave za finu kontrolu oznaku liste ('print' akcije)\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : ukljuÄuje Exif oznake u listi\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : IPTC skupa podataka\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : XMP svojstva\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x: isprintati kolonu sa oznacenim brojem\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : grupno ime\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : kljuÄ\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : labela oznake\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : ime oznake\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : vrsta\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : broj komponenata\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : velilÄina u bajtovima\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : obiÄna vrijednost podataka\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : tumaÄenje ( prevod) podatka\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : hexdump podatka\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr " -d tgt izbrisati cilj za \"delete \" akciju. Mogući ciljevi su :\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : svi podržani metapodaci (podrazumijevano)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e :Exif sekcija\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : Exif thumbnail samo\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : IPTC podatak\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : XMP paket\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Ubacuje cilj(eve) za radnju 'ubaci'. Moguci ciljevi su\n" +" Iste kao one za -d opciju, plus modifikator.\n" +" X : Ubaci metapodatak iz XMP vezane datoteke .xmp\n" +" Samo JPEG slicice mogu biti ubacene, trebaju biti imenovane\n" +" -thum.jpg\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt Cilj(evi) izdvajanja za radnju 'izdvajanje'. Moguci ciljevi\n" +" su isti kao oni za -d opciju, plus cilj za izdvajanje\n" +" pregled slike i modifikator da generira XMP vezanu datoteku:\n" +" p[[, ...]] : Izdvojeni pregled slika.\n" +" X : Izdvoji metapodatak Xmp vezanom podatku .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt format datoteke za akciju preimenovanja.\n" +" Format stringa slijedi strftime. Naredne kljuÄne rijeÄi su " +"podržane:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - originalna datoteka bez ekstenzija\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - naziv foldera koji sadrži originalnu datoteku\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - ime foldera iznad\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " odgovarajuće ime dokumenta je formata " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt JPEG napisi znakovni komentar koji ces postaviti na slici.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m file Komandna datoteka za izmjenu akcije.Format za komande je\n" +"set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M cmd komandna linija za akciju modificiranja.\n" +" Format za komandu je isti kao linije kod komande fajla.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l-dir lokacija(direktorij) za fajlove da budu ubaÄeni od ili izdvojenii " +"u.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S.suf koristi sufikse .suf za izvorne datoteke za komandu ubacivanja.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Opcija" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "traži argument\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Neprepoznata opcija" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt je povratio neoÄekivani znak" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "Nevažeći argument" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Nevažeći argument" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ignorisana viÅ¡ka opcija" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "nije kompatibilno sa predhodnom opcijom\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Ignorisana viÅ¡ka opcija -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "greÅ¡ka u gramatickom rasclanjivanju - opcijski argument" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "opcija -a nije kompatibilna sa predhodnom opcijom\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "GreÅ¡ka u analizi" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "opcija argumenta" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Neprepoznat nacin ispisa" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "ignorisanje viÅ¡ka opcije -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "opcija -p nije kompaktibilna sa predhodnom opcijom\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Neprepoznato ispisivanje stavke" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "ignorisanje viÅ¡ka opcije -p" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "Opcija -P nije kompatibilna sa predhodnom opcijom\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "Opcija -d nije kompatibilna sa predhodnom opcijom\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "Opcija -e nije kompatibilna sa predhodnom opcijom\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "Opcija -i nijekompatibilna s prethodnom opcijom\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "Akcija koja je prilagodjena nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "Akcija ispisa nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "Akcija brisanja nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "Akcija izdvajanja nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "Akcija umetanja nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "Akcija preimenovanja nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "Akcija izmjene nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "Akcija prepravke iso nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "Akcija prepravljanja com nije kompatibilna sa datom opcijom\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Akcija mora biti navedena\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "Akcija podeÅ¡avanja zahtijeva barem jednu -a, -Y, -O ili -D opciju\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "Akcija izmjene zahtijeva barem -c, -m ili -M opciju\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Barem jedna datoteka je potrebna\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "GreÅ¡ka kod raÅ¡Älanjivanja argumenata -m opcije.\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "GreÅ¡ka kod raÅ¡Älanjivanja argumenata -M opcije.\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" +"-l opcija moze biti koriÅ¡tena samo s akcijama za ejkstrakciju ili umetanje\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "-S opcija moze biti koristena sa akcijom umetanja\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "-t opcija moze biti koristena sa akcijom preimenovanja\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "-T opcija moze biti koristena sa akcijom preimenovanja\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Neprepoznato " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "odrediÅ¡te" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Nevazeći broj pregleda" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "neuspjelo otvaranje datoteke naredbi za Äitanje\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "linija" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "-M opcija" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Nevažeća datoteka naredbi" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Nevažeća komanda" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Nevažeća tipka" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Nevažeća datoteka naredbi" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Meki režim 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Meki režim 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "ÄŒvrsti režim 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "ÄŒvrsti režim 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Flourescentno (dnevna svjetlost)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Flourescentno ( toplo bijelo)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Flourescentno( hladno bijela )" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Užareno" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "NiÅ¡ta ( crna i bijela )" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Ispravka crvenih oÄiju" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Noćna scena" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Program AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Prirodno svjetlo" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "nezamagljeno" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Zalazak sunca" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Muzej" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Žurka" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Cvijet" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Tekst" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Prirodno svjetlo i bljesak" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "apertura- prioritet AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Prioritet brzine zatvaraÄa AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Bez bljeska i bljesak" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Hrom" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Å irok" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Standard" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Studio portrait" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Studio portrait Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "NeobraÄ‘en" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Standard (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Å iroki režim 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Å iroki režim 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Režim filmske simulacije" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Verzija" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Fujifilm zapis nota verzija" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Ovaj broj je unikatan, i sadrži datum nastanka, ali nije isti broj kao onaj " +"na kameri" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Postavka kvaliteta slike" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Boja" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "zasićenje kroma podeÅ¡avanje" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "podeÅ¡avanje bljeska" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Postavke blica" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "podeÅ¡avanje kompenzacije jaÄine bljeska" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Makro mode postavljanje" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Postavljanje moda fokusiranja" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Spora sinhronizacija" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Postavke sporog sinhro moda" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Režim slike" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Postavka režima slike" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Neprekidno snimanje i automatsko postavljanje" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Broj sekvence" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Broj sekvence" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "FinePix bojeolor" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Postavka boja Fuji FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Zamagljena upozorenja" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Zamagljeni status upozorenja" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Upozorenje fokusa" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Status greÅ¡ke auto fokusa" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Upozorenje izloženosti" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Status upozorenja autoekspozicije" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "dinamiÄki raspon" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "dinamiÄki raspon" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Filmski režim" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Filmski režim" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "izmjena dinamiÄkog raspona" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Izmjena dinamiÄkog raspona" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "DinamiÄki opseg razvoja" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Razvoj dinamickog raspona" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Minimalna žižna daljina" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Minimalna žižna daljina" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Maksimalna žižna daljina" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Maksimalna žižna daljina" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "maximalna apertura na minimalnom fokusu" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Maksimalna blenda na minimalnoj žižnoj daljini" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Maksimalna blenda na maksimalnoj žižnoj daljini" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "blenda na maksimalnoj žižnoj daljini" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Izvor datoteke" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Izvor datoteke" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Redni broj" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Redni broj" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Broj kadra" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Broj kadra" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "nepoznata fuji oznaka" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Prirodna boja" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Živopisne boje" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarizacija" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Prirodan" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "Prirodna sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Prirodna+ sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "VeÄe" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Noćni portret" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Super fino" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Ekstra fino" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Makernote verzija" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "niz 'MLT0'(nije zakljuÄen nulom)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Postavke aparata (standardne stari)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "Standardne postavke aparata (Stari modeli poput D5, D7, S304, i S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Postavke aparata (standardne novi)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "Standardne postavke aparata (Stari modeli poput D7u, D7i, i D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Postavke aparata (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Postavke aparata (za Dynax 7D model)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Slikovni stabilizacijski podaci" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Slikovni stabilizacijski podaci" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "WB Info A100" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "Informacija o balansu bijelog za Sony DSLR-A100" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Zbijena velicina slike" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Stisnuta veliÄina slike" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Jpeg sliÄica640x480 piksela" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Pozicija sliÄice" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Pozicija sliÄice" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Dužina sliÄice" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "VeliÄina sliÄice" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Režim scene" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Režim boja" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Režim boja" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Kvalitet slike" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Kompenzacija izloženosti blica" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "kompenzacija izloženosti blica u EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Telekonverter model" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "RAW+JPG zapis" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "RAW i JPEG fajlovi snimljeni" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Zonsko uklapanje" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Zonsko uklapanje" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Temperatura boje" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "Id objektiva" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "identifikator objekta" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "Filter za kompenzaciju boja" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" +"Filter kompenzacije boja: negativna je zelena, pozitivna purpurnocrvena" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "Fino podeÅ¡avanje balansa bijelog" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "Vrijednost finog podeÅ¡avanja balansa bijelog" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "Stabilizacija slike A100" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Stabilizacija slike za Sony DSLR-A100" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Postavke fotoaparata(5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Postavke fotoaparata (za Dynax 5D model)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Prikaz IM" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "ocitavanjeIM informacija" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Postavke fotoaparata (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Postavke fotoaparata (za Z1, DImage X, i F100 modele)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Nepoznata Minolta MakerNote oznaka" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Prednost otvora" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Prednost zatvaraÄa" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Punjenje bljeska" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "rijetki bljesak" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "BežiÄna mreža" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Fluorescent 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Puna veliÄina" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Super glatak" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "extra glatak" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Sam okvir" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "OdbrojavaÄ" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Podupiranje" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Interval" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS stalni" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS stalni" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Multi-segment" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Centar prosjeÄnog opterećenja" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Elektronsko povećanje" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Vrh" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Gore - desno" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Dolje - desno" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Dno" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Dolje - lijevo" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Gore - lijevo" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Jak" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "UmekÅ¡an" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Noćni portret" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Sportska akcija" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Vrijeme isteka filma" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Standardna forma" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "FDorma podataka" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Priordne boje" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Crno-bijelo" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Žive boje" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Nema zone" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Centar zona ( horizontalna orjentacija)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Centar zona ( vertikalna orjentacija)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Lijeva zona" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Desna zona" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Auto fokus" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Å irok fokus (normalni)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "taÄka fokusa" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Ekspozicija" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filter" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Nije ugnježden" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Ugnježden" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Tekst + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Napredna integracija udaljenosti)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Pre-blic TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "ruÄna kontrola bljeska" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Režim ekspozicije" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Mod sa blicom" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Mod vožnje" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "ISO Vrijednost" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Dužina ekspozicije" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "FBroj" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "F- broj" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Makro režim" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Kompenzacija izloženosti" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Klasificiraj korak" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Uokviren korak" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Intervalna dužina" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Intervalna dužina" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Intervalni broj" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "intervalni broj" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Fokus distanca" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Fokusna distanca" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "Blic je koriÅ¡ten" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "FleÅ¡ okinut" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Minolta datum" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Minolta datum" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Minolta vrijeme" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Minolta vrijeme" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Broj datoteke u memoriji" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Broj datoteke u memoriji" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Broj zadnje slike" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Broj zadnje slike" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Balans crvene boje" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "balans boja crveni" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Balans zelene boje" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "balans boja zeleni" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "balans boja plavi" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "balans boja plavi" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Program predmeta" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Program predmeta" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "ISO postavke" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "ISO postavke" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Minolta model" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Minolta model" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Intervalni mod" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Intervalni režim" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Ime direktorija" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Ime direktorija" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Režim boja" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Filter boje" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Filter boja" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Crni i bijeli filter" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "crno-bijeli filter" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Interni bljesak" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Osvjetljenje" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "taÄka fokusa Point x" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "taÄka fokusa Point x" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "TaÄka fokusa Point Y" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "taÄka fokusa point Y" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Å iroka fokus zona" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Å iroka fokus zona" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Žižni mod" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "podruÄje fokusa" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "Pozicija DEC prekidaÄa" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "Pozicija DEC prekidaÄa" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Profil boja" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Profil boja" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "Obilježje podatka" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Mjerenje bljeska" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "mjerenje bljeska" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "nepoznata opcija podeÅ¡avanja Minolta kamere" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "Program-shift A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "Program-shift S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvini" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "Zasebni bljesak AF" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "stalni Af" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "Automatski AF" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB( PRIRODNO)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRBG(prirodno+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horizontalno (normal)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Okreni 90 u smjeru sata" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Okreni 270 u smjeru sata" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "AF taÄke" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "af taÄke" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Prostor boja" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Prostor boja" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "Slobodne slike memorijske kartice" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "slobodna memorija kartice slika" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Nijansa" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Rotacija" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Broj slike" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Redukcija Å¡uma" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "UkljuÄeno poklapanje zona" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "UkljuÄeno poklapanje zona" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Nepoznata 7D oznaka podeÅ¡avanja Minolta kamere" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "Program shift A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "program shift s" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "Noćni pogled / portret" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200( visoko poklapanje zone )" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80(nisko poklapanje zone)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB (ICC)" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Sredina" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Gore" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Gore desno" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Dolje desno" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Dolje" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Dolje lijevo" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Gore lijevo" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Izbor" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "Prirodni +" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "scena vjetra" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "VeÄernja scena" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Fokus pozicija" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Fokus pozicija" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "fokus podruÄje" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "ispravljanje izloženosti" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "revizija izloženosti" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "Rotacija2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "ZavrÅ¡ena slika" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Manuelno podeÅ¡avanje ekspozicije" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Manuelno podeÅ¡avanje ekspozicije" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Af režim" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Af režim" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Nepoznata 5D oznaka podeÅ¡avanja Minolta kamere" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "Vlastita Å¡toperica 10s" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "Vlastita Å¡toperica 2s" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Nisko uokvirenje balansa bijelog" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "Visoko uokvirenje balansa bijelog" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "jednookvirni braketing je nizak" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "Kontinualno uokviravanje nisko" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "jednokvirni braketing je visok" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "Kontinualno uokviravanje visoko" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Napredno" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "kontinuirani braketing" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "samookvirni braketing" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "balans bijele boje braketing" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "PrepodeÅ¡eno" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Temperatura boje/ boja filtera" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Temperatura" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "PodeÅ¡avanje" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "UÄitaj" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "U redu" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "GreÅ¡ka" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Slika i informacije" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Samo slika" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "slika i histogram" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "punjenje bljeska" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "Držanje fokusa" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "DOF pregled" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Zadrži" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Prebaci" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "Držanje usmjerenja" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "Preklop usmjerenja" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Brzina zatvaranja" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "Abmijent i bljesak" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "Samo ambijent" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0.3 sekunde" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0.6 sekundi" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Automatski" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "auto rotacija" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Horizontalno" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "RuÄna rotacija" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "unutar raspona" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "van ili preko dometa" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Van dometa" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "nenaznaceno" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "ispod skale" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "dno skale" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "vrh skale" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "preko skale" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "am." + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "mf" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "UgraÄ‘eno" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Vrlo nizak" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "Dopola puno" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "dovoljna jaÄina" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "PodeÅ¡vanje kompenzacije ekspozicije" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "PodeÅ¡vanje kompenzacije ekspozicije" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "Visokobrzinska sinhronizacija" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "visoka brzina sync" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "RuÄno vrijeme ekspozicije" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "RuÄno vrijeme ekspozicije" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "ruÄni Fbroj" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "Režim voÄ‘enja 2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "Režim voÄ‘enja 2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "lokalna AF taÄke oblasti" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "AF mod oblasti" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "FleÅ¡ mod" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "Postavke kompenzacije ekspozicije blicom" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "Postavke kompenzacije ekspozicije blicom" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "PodeÅ¡avanje ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "Režim uklapanja zona" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "Režim optimizatora dinamiÄkog opsega" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "dinamiÄki optimizer" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "prioritetno postavljanje zatvaraÄa puÅ¡tanje" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Vrijeme samomjeraÄa" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Samoodbrojavanje vremena" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "Stalno uokviravanje" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "Uokviravanje u jednom kadru" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "Uokviravanje u jednom kadru" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Uokviravane balansa bijelog" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "PodeÅ¡avanje ravnoteže bijele" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Unaprijed postavljeni balans bijelog" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Postavka za bijeli balans" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "PodeÅ¡avanje zemperatura boje" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "Postavljanje temperature boje" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "Vlastito crno-bijelo podeÅ¡avanje" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "Vlastito crno-bijelo podeÅ¡avanje" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "DinamiÄke postavke alata za optimizaciju raspona" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "Vlastito podeÅ¡avanje nivoa crvenog" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "Vlastito podeÅ¡avanje nivoa crvenog" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "Vlastito podeÅ¡avanje nivoa zelenog" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "Vlastito podeÅ¡avanje nivoa zelenog" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "Vlastito podeÅ¡avanje nivoa plavog" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "PodeÅ¡avanje WB plavog nivoa" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "PodeÅ¡avanje WB GreÅ¡ka" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "Fino podeÅ¡avanje balansa bijelog" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "Filter za podeÅ¡avanje boja" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Sony velicina slike" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "Vrijeme reprodukcije odmah" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "Vrijeme reprodukcije odmah" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "Postavka reprodukcije odmah" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "instant playback podeÅ¡avanje" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "Eye Start AF" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "Eye start AF" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "Redukcija crvenog oka" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "Redukcija crvenog oka" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "zadani bljesak" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "zadani bljesak" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "Redoslijed automatskog uokviravanja" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "Redoslijed automatskog uokviravanja" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "Dugme za zadržavanje fokusiranja" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "Dugme za zadržavanje fokusiranja" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "AEL dugme" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "AEL dugme" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "set izbornika" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "kontrolni toÄkić postavljen" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "Režim kompenzacije ekspozicije" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "Režim kompenzacije ekspozicije" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "AF pomoć" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "zakljuÄan okidaÄ kartice" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "zakljuÄan okidaÄ kartice" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "zakljuÄan okidaÄ objektiva" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "zakljuÄan okidaÄ objektiva" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "AF osvjetljenje okruženja" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "AF osvjetljenje okruženja" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "IskljuÄen zaslon monitora" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "IskljuÄen zaslon monitora" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "Snimanje zaslona" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "Snimanje zaslona" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "IzvoÄ‘enje prikaza" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "IzvoÄ‘enje prikaza" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "indikator izloženosti" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "indikator izloženosti" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "AEL indikator izloženosti" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "AEL indikator izloženosti" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "indikator izloženosti zadnji" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" +"Zadnji indikator ekspozicije( indikator za posljednji udarac braketinga)" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "Pokazatelj skale za mjerenje" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" +"Mjerenje off pokazatelja razmjera ( dva trokuta trepere kad su ispod ili " +"iznad mjerne skale)" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "indikator ekspozicije bljeska" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "indikator ekspozicije bljeska" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "indikator ekspozicije bljeska sljedeći" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" +"indikator ekspozicije bljeska sljedeći (indikator za sljedeći snimak pri " +"uokviravanju)" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "indikator ekspozicije bljeska zadnji" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" +"indikator ekspozicije bljeska zadnji (indikator ekspozicije za zadnji snimak " +"pri uokviravanju)" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "PrekidaÄ režima fokusa" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "PrekidaÄ režima fokusa" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Vrsta bljeska" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Vrsta bljeska" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "AE zakljuÄavanje" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" +"kompenzacija boja filtera: negativna je zelena , pozitivna je purpurno crvena" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Nivo baterije" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "Napunjenost baterije" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Nepoznata oznaka Sony odeÅ¡avanja kamere" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "ÄŒisto" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Duboko" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Svjetlo" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Noćni prikaz" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "Jesenje lišće" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Lokalno" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Gore-desno" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Dolje-desno" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Dolje-lijevo" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Gore-lijevo" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Sasvim desno" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Sasvim lijevo" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "Napredno automatsko" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "Napredni nivo" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "Izdanje" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "Raw + JPEG" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "KOMPRESIRANI raw" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "KOMPRESIRANI RAW+JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "Minolta AF 2x APO (D)" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO II" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "ISO podeÅ¡avanje je koriÅ¡teno" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Visoka tipka" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Niska tipka" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "Ekstra visoko" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Jedno podruÄje" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "DinamiÄko podruÄje" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "DinamiÄko podruÄje, najblizi subjekt" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Grupna dinamika" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Jedno podrucje( Å¡iroko)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "dinamiÄko okruženje" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Gore - lijevo" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Gore - desno" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Donje - lijevo" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Dolje- desno" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "maksimalno lijevo" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "maksimalno desno" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Vatra, ruÄno" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Vatra, vanjski" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "vatra, zapovjedniÄki naÄin" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "vatra, ttl naÄin" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "KaÅ¡njenje" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "PC kontrola" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "Uokvirenje ekspozicije" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "Automatsko ISO" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "balans bijele boje braketing" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "IR kontrola" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "kontinuirani braketing" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "PC kontrola" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "izlaganje braketinga" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "NekoriÅ¡teni LE-NR zastoj" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "IR kontrola" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Auto izdanje" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "RuÄno izdanje" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "s gubicima (tip 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Nekompresovano" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Bez gubitaka" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "s gubicima (tip 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "C/B" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "Podsijecanje" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Mala slika" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "D- rasvjeta" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Crveno oko" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "Cyanotype" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "Nebesko svjetlo" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "topli ton" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "PodeÅ¡avanje boja" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "Preklapanje slike" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Minimalna" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Nikon Makernote verzija" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "ISO brzina" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "IzoÅ¡travanje" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "PodeÅ¡avanje izoÅ¡travanja slika" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Fokus" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "PodeÅ¡avanje blica" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "PodeÅ¡avanje bljeska" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "ISO izbor" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "ISO selekcija" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Kanta za podatke" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Izdvajanje podataka" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "PodeÅ¡avanje slike" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Postavke podeÅ¡avanja slika" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Pomoćne leće" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Pomoćne leće (adapter)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Vlastita udaljenost fokusa" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "digitalno zoom podeÅ¡avanje" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "Af fokus pozicija" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Informacija o AF poziji fokusa" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "nepoznata Nikon1MakerNote oznaka" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "kontinuirani autofokus" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Zasebno fokusiranje" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Nije u upotrebi" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "NagaÄ‘anje" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA osnovno" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA normalno" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA odliÄno" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA osnovno" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA normalno" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA odliÄno" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Svjetlo+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Svetlo-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Kontrast+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Kontrast-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Brzina svjetlosti" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "nepoznata Nikon2MakerNote oznaka" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Flash ureÄ‘aj" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "UreÄ‘aj sa bljeskom" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "PodeÅ¡avanje balansa bijelog" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "PodeÅ¡avanje balansa bijelog" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "WB RB nivoi" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "WB RB nivoi" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "smjena programa" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "smjena programa" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Razlika ekspozicije" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Razlika ekspozicije" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "PokazivaÄ na pregled slika" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "ofset IFD koji sadrži pregled slike" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "FleÅ¡ komp" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "podeÅ¡avanje kompenzacije blica" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Granice slike" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Granica slike" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "Kompenzacija ekspozicije blicom" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Kompenzacija uokvirenja blicom" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Kompenzacija uokvirenja blicom primijenjena" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Kompenzacija uokvirenja ekspozicije" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "AE Kompenzacija uokvirenja ekspozicije primijenjena" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Obrada slika" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Obrada slika" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "Rezanje visokom brzinom" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "Rezanje visoke brzine" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "podesavanje izlozenosti" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "podesavanje izlozenosti" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "vr info" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "vr info" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "Ovjera slike" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "autenticnost slike" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "aktivirano osvjetljenje" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "aktivirano osvjetljenje" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "Kontrola slike" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " Kontrola slike" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "svjetsko vrijeme" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "svjetsko vrijeme" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "ISO informacije" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "ISO info" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "kontrola vinjete" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "kontrola vinjete" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "kompenzacija tona" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "kompenzacija tona" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "vrsta blica koja je koriÅ¡tena" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Režim slikanja" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Režim rada: Slikanje" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "auto braket oslobaÄ‘anje" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "auto braket oslobaÄ‘anje" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "fstops objektiva" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "kontrast krive" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Kontrast krive" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "nijasna boje" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "nijansa boje" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Scenski naÄin" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Izvor svjetla" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "izvor svjetla" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "info slikanja" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "PodeÅ¡anjavanje nijanse" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "PodeÅ¡avanje nijanse" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "NEF kompresija" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "NEF kompresija" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Linearizacijska Tabela" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Linearizacijska Tabela" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Balans boja" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Ravnoteža boja" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Podaci objektiva" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "podesavanje podataka objektiva" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "Centar neobraÄ‘ene slike" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "Centar neobraÄ‘ene slike" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "senzorna velicina pixela" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "VeliÄina piksela detektora" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "pomocnik na sceni" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "Scenski asistent" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "Historija dodjerivanja" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "Historija dodjerivanja" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Serijski broj" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Serijski broj kamere, obiÄno poÄinje zsa \"NO=\"" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "VeliÄina podataka slike" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "velicina slike" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "broj slike" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "broj slike" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "izbrisan broj slike" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Izbrisani broj slike" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "broj zatvaranja" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "broj slika napravljenih kamerom" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "info bljeska" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Optimizacija slike" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Optimizacije slike" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "promjena programa" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Programska varijacija" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "af odgovor" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "af odgovor" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "ViÅ¡estruka ekspozicija" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "visoko iso smanjenje Å¡uma" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "Efekat toniranja" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "AF info 2" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "info podatka" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "AF podeÅ¡avanje" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Hvatanje podataka" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Hvatanje podataka" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "Verzija hvatanja" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "verzija snimka" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "ofset snimka" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "ofset snimka" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "skeniranje IFD" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "ICC profil" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "Hvatanje izlaza" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Nepoznata nikon3 oznaka proizvoÄ‘aÄa" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Ne" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Da" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "G/M/D" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "M/D/G" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "D/M/G" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "smanjenje vibracije" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Smanjenje vibracije" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Nepoznata oznaka za Nikon Redukciju Vibracije" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Podrazumijevana podeÅ¡avanja" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Brzo prilagoÄ‘avanje" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Puna kontrola" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "plavo- zelena" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "ljubicasto - plava" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "crveno- ljubicasta" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Naziv" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "Baza" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Podesi" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Brzo prilagoÄ‘avanje" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "filter efekat" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "zasićenje toniranja" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "zasićenje toniranja" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "Nepoznata oznaka za Nikon Kontrolu Slike" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "AF fino podeÅ¡avanje" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "AF fino podeÅ¡avanje" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "AF indeks finog podeÅ¡avanja" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "AF indeks finog podeÅ¡avanja" + +#: src/nikonmn.cpp:732 +msgid "AF Fine Tune Adjustment" +msgstr "AF prilagoÄ‘enje finog podeÅ¡avanja" + +#: src/nikonmn.cpp:732 +msgid "AF fine tune adjustment" +msgstr "AF prilagoÄ‘enje finog podeÅ¡avanja" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Nepoznata oznaka za Nikon AF Fino podeÅ¡avanje" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "Vremenska zona" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "Ljetno vrijeme" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "Ljetno vrijeme" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "format prikaza datuma" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Format prikaza datuma" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "Nepoznata oznaka Nikon svjetskog vremena" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Hi 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Hi 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Hi 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Hi 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Hi 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Hi 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Hi 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Lo 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Lo 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Lo 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Lo 1.0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "ISO povecanje" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "Iso povecanje" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "ISO povecanje broj dva" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "iso ekspanzija 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "nepoznata nikon iso info oznaka" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "jedno podrucje" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "dinamiÄko podruÄje" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "dinamiÄko podruÄje, najbliži subjekt" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "dinamicka grupa" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "jedno podruÄje ( Å¡iroko)" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "dinamiÄko podruÄje (prostrano)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Sredina - lijevo" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Sredina - desno" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "Skroz lijevo" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "Skroz desno" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "Af podruÄje" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "AF taÄka" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "Af taÄka u fokusu" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "AF taÄka u fokusu" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "nepoznata nikon auto fokus oznaka" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "upaljeno (51- bodtaÄka)" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "upaljeno(11-taÄaka)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "upaljeno (51- bodtaÄka)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "upaljeno (51- bodtaÄka)" + +#: src/nikonmn.cpp:857 +#, fuzzy +msgid "On (73-point, new)" +msgstr "upaljeno (51- bodtaÄka)" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "upaljeno(11-taÄaka)" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "kontrast detektovan af" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "kontrast detektovan af" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "faza otkrivena AF" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "faza otkrivena AF" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "primarna AF taÄka" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "primarna AF taÄka" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "AF Å¡irina slike" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "AF Å¡irina slike" + +#: src/nikonmn.cpp:870 +msgid "AF Image Height" +msgstr "AF tezina slike" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "AF visina slike" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "AF podruÄje x pozicije" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "AF podruÄje x pozicije" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "AF podruÄje y pozicije" + +#: src/nikonmn.cpp:872 +msgid "AF area y position" +msgstr "AF podruÄje y pozicije" + +#: src/nikonmn.cpp:873 +msgid "AF Area Width" +msgstr "Å irina AF podruÄja" + +#: src/nikonmn.cpp:873 +msgid "AF area width" +msgstr "Å irina AF podruÄja" + +#: src/nikonmn.cpp:874 +msgid "AF Area Height" +msgstr "Visina AF podruÄja" + +#: src/nikonmn.cpp:874 +msgid "AF area height" +msgstr "Visina AF podruÄja" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "Detektor kontrasta AF u fokusu." + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "Detektor kontrasta AF u fokusu." + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Oznaka za nepoznati Nikon Auto Focus 2" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "Broj direktorija" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "Broj direktorija" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "Nepoznata oznaka za Nikon Info datoteku" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "ViÅ¡estruka ekspozicija" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "Sloj slike" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Režim viÅ¡estruke ekspozicije" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Režim viÅ¡estruke ekspozicije" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "Snimci viÅ¡estruke ekspozicije" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "Snimci viÅ¡estruke ekspozicije" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "Visestruka izlozenost je dobijena automatski." + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "Visestruka izlozenost je dobijena automatski." + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Nepoznata oznaka Nikon viÅ¡estruke ekspozicije" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "UnutraÅ¡nji" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "1.01 (SB-800 or Metz 58 AF-1)" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Auto blenda" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "GN (prioritet udaljenosti)" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "ponavljanje bljeska" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "odskoÄni bljesak" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "adapter Å¡irokog bljeska" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "Amber" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "izvor bljeska" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "izvor bljeska" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "Eksterni Flash Firmware" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "Eksterni Flash Firmware" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "Zastave vanjskog blica." + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "Zastave vanjskog blica." + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "Fokusna Dužina Bljeska" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "Flash fokusna dužina" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "Mjera ponavljanja bljeska" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "Mjera ponavljanja bljeska" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "broj ponavljanja bljeska" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "broj ponavljanja bljeska" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "GN udaljenost bljeska" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "GN udaljenost bljeska" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "Grupa A kontrolnog režima bljeska" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "Grupa A kontrolnog režima bljeska" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "Grupa B kontrolnog režima bljeska" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "Grupa B kontrolnog režima bljeska" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "Filter boje bljeska" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "Filter boje bljeska" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "BrojaÄ zatvaraÄa" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Nepoznata Nikon Shot Info D80 oznaka" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "Nivo bljeska" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "Nivo bljeska" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Nepoznata Nikon Shot Info D40 oznaka" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "AF Fino Podesavanje Adj" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "AF fino podesavanje Adj" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Nepoznata Nikon Shot Info D300 (a) oznaka" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Nepoznata Nikon Shot Info D300 (b) oznaka" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "UkljuÄeno (3)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "broj zatvaranja 1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "broj zatvaranja 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "Redukcija vibracije 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "Redukcija vibracije 1" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "broj zatvaranja 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "broj zatvaranja 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "redukcija vibracije 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "redukcija vibracije 2" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "Nepoznata Nikon Shot Info oznaka" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "WB RBGG razine" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "WB RBGG nivoi" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Nepoznata oznaka Nikon Balans boje 1" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "WB RGGB nivoi" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "WB RGGB nivoi" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Nepoznata oznaka Nikon Balans boje 2" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Nepoznata oznaka Nikon Balans boje 2" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Nepoznata oznaka Nikon Balans boje 2b" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "WB RGGB nivoi" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "WB RGGB nivoi" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Nepoznata oznaka Nikon Balans boje 3" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "WB RGGB nivoi" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "WB RGGB nivoi" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Nepoznata oznaka Nikon Balans boje 4" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "Identifikacioni broj objektiva" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "Identifikacioni broj objektiva" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "F-prekidi soÄiva" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "F-prekidi soÄiva" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "minimalna žariÅ¡na daljina" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "minimalna žariÅ¡na daljina" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Maksimalna fokusna dužina" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Maksimalna fokusna dužina" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Maksimalan otvor na minimalnom fokusu" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Maksimalan otvor na minimalnom fokusu" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Maksimalan otvor na maksimalnom fokusu" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Maksimalan otvor na maksimalnom fokusu" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "MCU verzija" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "MCU verzija" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Nepoznati Nikon Podatak Objektiva 1 Oznaka" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "Izlazni Ä‘aÄki položaj" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "Izlazni Ä‘aÄki položaj" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "AF otvor" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "AF otvor" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "Efektivni maksimalni otvor" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "Efektivni maksimalni otvor" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Nepoznata oznaka Nikon Podatka Objektiva 2" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "Maksimalan otvor na minimalnoj dužini fokusa" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "Maksimalan otvor na maksimalnoj dužini fokusa" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Nepoznata oznaka Nikon Podatka Objektiva 3" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "najbliži subjekat" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "grupni dinamiÄki af" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "nikakav" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "koriÅ¡teno" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "Svih 11 taÄaka" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Jedan okvir" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "standardni kvalitet ( SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "visoki kvalitet (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "super visoka kvaliteta (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "UkljuÄeno(podesi)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Sport" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "pejzaž+portret" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Auto portret" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 u 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "noćni portret" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Hrana" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Dokumenta" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "slikanje i selektiranje" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "plaža i snijeg" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "samo portret+ brojaÄ vremena" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Svijeća" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "dozvoljeno svijetlo" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "iza stakla" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "moj naÄin" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "ljubimac" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "podvodna Å¡irina1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "podvodni makro" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "slikanje i selektiranje 1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "slikanje i selektiranje 2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Digitalna stabilizacija slike" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "Aukcija" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "podvodna Å¡irina 2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Djeca" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "prirodna makro" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "podvodno slikanje" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "vodiÄ za slikanje" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "vanjski i unutraÅ¡nji" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Prepleteno" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progresivno" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "SliÄica" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Mala slika" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Tijelo Firmware verzije" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Tijelo firmware verzije" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "specijalni naÄin" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "naÄin slikanja" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Crno-bijeli naÄin" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Crno-bijeli režim" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Omjer digitalnog zumiranja" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Dijagonala žariÅ¡ne ravni" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Fokusna dijagonalna osnova" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Parametri distorzije objektiva" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Parametri zakrivljenosti objektiva" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Tip kamere" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Vrsta aparata" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Ascii format podatka kao [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID foto-aparata" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "ID podaci kamere" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Softver" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Pregled slike" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Pregledna slika" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "Pred Slikanje Okviri" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "Pred-slikanje okviri" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "bijela ploÄa" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "bijela ploÄa" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "WB na dodir" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Balans bijele boje na dodir" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "bijelo balansiran bracket" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "bijelo balansiran bracket" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmver" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Prikaz podatka 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "RazliÄita podeÅ¡avanja kamere 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Prikaz podatka 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "raznovrsna podeÅ¡avanja kamere 2" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "vrijednost brzine zatvranja" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "ISO vrijednost brzine" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "VeliÄina otvora" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "vrijednost osvjetljenja" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Zagrada" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Vrijednost kompenzacije izlaganja" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Temperatura senzora" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Senzorska temperatura" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Temperature objektiva" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "temperatura leće" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "Stanje osvjetljenja" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Uslov svjetla" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Domet fokusa" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "Doseg žiže" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Uvećaj" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "BrojaÄ koraka uvećavanja" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "makro fokus" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "BrojaÄ koraka makro fokusa" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Faktor oÅ¡trine" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Faktor oÅ¡trine" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Nivo punjenja bljeska" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "nivo punjenja bljeska" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matrica boja" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matrica boja" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Crnilo" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Razina crne" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "naÄin bijelog balansa" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Balans crvene" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Balans crvene" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Balans plave" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Balans plave" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Broj matrice boja" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Matrica boja mumber" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "serijski broj dva" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "serijski broj dva" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Nadomešćivanje osvjetljenja blicom" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Vanjski odskoÄni bljesak" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Vanjski odskoÄni bljesak" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Vanjsko Zumiranje Bljeska" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Vanjsko zumiranje bljeska" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Vanjski naÄin bljeska" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Vanjski režim bljeska" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Regulacija boje" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "kontrola boja" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "Važeći bitovi" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Važeći bitovi" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "FilterProvedenogJezgrovanja" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "Filter provedenog jezgovanja" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Srazmjer kompresije" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Omjer kompresije" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "UgraÄ‘en pregled slike" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Pomak slike koja se pregleda." + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "VeliÄina pregleda slike" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "CCD naÄin skeniranja" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "CCD naÄin skeniranja" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Korak infiniti objektiva" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Korak BeskonaÄnosti objektiva" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Obližnji korak objektiva" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Obližnji korak objektiva" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "informacije o opremi" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "Oprema za kameru sub-IFD" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "Postavke kamere sub-IFD" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Sirovi razvoj" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "Osjetljivi razvoj sub-IFD" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "Osjetljivi razvoj 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "Sirovi razvoj 2 sub-IFD" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Procesiranje slike sub-IFD" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Informacija o fokusu" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "Fokus sub-IFD" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Sirova Informacija" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "Sirova sub-IFD" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Nepoznata oznaka za OlympusMakerNote" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Promjena programa" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "SrediÅ¡nje težinski prosjek" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "uzorak+AF" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "kontrola Obilježi + Markiraj" + +#: src/olympusmn.cpp:496 +msgid "Spot+Shadow control" +msgstr "kontrola Obilježi + OsjenÄi" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "samo AF" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "Sekvencijalno snimanje AF" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "viÅ¡e AF" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "AF nije koriÅ¡ten" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "AF koriÅ¡ten" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Nije spreman" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Spreman" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "Popuni" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "spora sinhronizacija" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "Prisilni na" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "2. zastor" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "kanal 1,nisko" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "Kanal 2,nisko" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "Kanal 3,nisko" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "Kanal 4,nisko" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "Kanal 1,srednje" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "Kanal 2,srednje" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "Kanal 3,srednje" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "Kanal 4,srednje" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "Kanal 1,visoko" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "Kanal 2,visoko" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "Kanal 3,visoko" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "Kanal 4,visoko" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500K (Lijepo vrijeme sa sjenom)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (OblaÄno)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (Lijepo vrijeme)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (žarna nit)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (kao Volfram svjetlo)" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Auto blenda" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Auto (Bljesak)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (fluorescentna svjetlost)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (Neutralna bijela fluorescentno)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (Hladno bijelo fluorescentno)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Bijela fluorescentna svjetlost" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "WB na dodir" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "WB na dodir" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "WB na dodir" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "WB na dodir" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "UobiÄajeni WB 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "UobiÄajeni WB 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "UobiÄajeni WB 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "UobiÄajeni WB 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (PoboljÅ¡anje crvene boje)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (PoboljÅ¡anje zelene boje)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (PoboljÅ¡anje plave boje)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (tonovi kože)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "Pro Photo RGB" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Filter za Å¡um" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "Filter Å uma(ISO Porast)" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "ZatiÅ¡ano" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "monotonija" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "ukljuÄeno,naÄin 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "ukljuÄeno,naÄin 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "ukljuÄeno,naÄin 3" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Verzija postavki kamere" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Verzija postavki za kameru" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Validni pregled slike" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Pregled slike ispravan" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "PoÄetak pregleda slike" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "PoÄetak pregleda slike" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Dužina pregleda slike" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Duzina pregleda slike" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Automatsko zakljuÄavanje ekspozicije" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "Promjena izlaganja" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "Pomak izloženosti" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Proces fokusa" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Proces fokusa" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "AF pretraga" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "AF pretraga" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "AF oblasti" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "AF oblasti" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "AF odabrana taÄka" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "AF Fino podeÅ¡avanje" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "AF Fino podeÅ¡avanje" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "Daljinsko upravljanje bljeska" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "Daljinsko upravljanje bljeska" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "Režim kontrole bljeska" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "Režim kontrole bljeska" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "fleÅ¡ intenzitet" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "fleÅ¡ intenzitet" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "ruÄna fleÅ¡ snaga" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "ruÄna fleÅ¡ snaga" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "bijeli balans 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "bijeli balans 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Temperatura ravnoteže bijele" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "bijeli balans temperatura" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "PrilagoÄ‘ena saturacija" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "UobiÄajeno zasićenje" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "modificirano zasićenje" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "modificirano zasićenje" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "PodeÅ¡avanje kontrasta" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "PodeÅ¡avanje oÅ¡trine" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Popravka distorzije" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Popravka distorzije" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Kompenzacija sjenÄenja" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Kompenzacija sjenÄenja" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Faktor kompresije" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Faktor kompresije" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Gradacija" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Režim slike" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Režim zasićenja slike" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Režim zasićenja slike" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Nijanse slike" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Nijanse slike" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Kontrast slike" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Kontrast slike" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "OÅ¡trina slike" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "OÅ¡trina slike" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Crno-bijeli filter slike" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Crno-bijeli filter slike" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Ton slike" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Ton slike" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Filter Å¡uma" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "UmjetniÄki filter" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "UmjetniÄki filter" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "MagiÄni filter" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "MagiÄni filter" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Panorama naÄin" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Panorama naÄin" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "kvalitet slike 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "kvalitet slike 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "Pritisak manometra" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Pritisak manometra" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "OÄitavanje manometra" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "OÄitavanje manometra" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Produženi WB Detektor" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Produženi WB Detektor" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "Razina vrtnje" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "Razina vrtnje" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "Parcela nivoa mjeraca" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "Parcela nivoa mjeraca" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "Nepoznata OlympusCs oznaka" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "Jednostavni E-sistem" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "E-sistem" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "verzija opreme" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "verzija opreme" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Serijski broj" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Serijski broj objektiva" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Serijski broj objektiva" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Firmware verzija lece" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Firmware verzija lece" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Maximalni otvor na trenutnom fokusu" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Maximalni otvor na trenutnom fokusu" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Osobine Objektiva" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Postavke Objektiva" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Produžetak" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Serijski broj produžetka" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Serijski broj produžetka" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Produžetak Model" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Produžetak Model" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "ProÅ¡irena Verzija MaÅ¡insko-programske opreme" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "ProÅ¡irena verzija maÅ¡insko-programske opreme" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Konverzija Leće" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Konverzija leće" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Model bljeska" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Model Bljeska" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Firmware verzija blica" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Firmware verzija blica" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Serijski Broj Bljeska" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "nepoznata OlympusEq oznaka" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Visoka brzina" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "visoka funkcija" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "napredna visoka brzina" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "napredna visoka funkcija" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Izvorno" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "ureÄ‘eni(pejsaž)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "ureÄ‘eni(portret)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "WB Boja Uzorak" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "WB siva taÄka" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "Osjetljivi Razvoj Verzija" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "Osjetljivi razvoj verzija" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "otklon ekspozicije" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Prednaponska vrijednost osvjetljenja" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Vrijednost balansa bijele boje" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Vrijednost balansa bijele boje" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "WB Fino PrilagoÄ‘avanje" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "WB fino podeÅ¡avanje" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "siva taÄka" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "siva taÄka" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Saturacijsko Isticanje" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Saturacijsko isticanje" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "Memorijski Naglasak Boje" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "Memorijski naglasak boje" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Vrijednost kontrasta" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Vrijednost kontrasta" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "vrijednosti oÅ¡trine" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "vrijednosti oÅ¡trine" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Pogon" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Izmijeni status" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Postavke" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Nepoznata OlympusRd oznaka" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "Osjetljivi Razvoj 2 Verzija" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "Osjetljivi razvoj 2 verzija" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Bijeli balans pinog prilagoÄ‘avanja" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "PM zasićenje" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "PM kontrast" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "PM oÅ¡trina" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "PM BW Filter" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "PM BW filter" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "PM ton slike" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "PM nijansa boje" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "automatska gradacija" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "auto gradacija" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "PM filter Å¡uma" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "Filter Å¡uma moda slike" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Nepoznata OlympusRd2 oznaka" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "UkljuÄeno(2 okvira)" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "UkljuÄeno(3 okvira)" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "Verzija obrade slike" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "Verzija obrade slike" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "WB RB nivoi 3000K" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "WB RB nivoi 3000K" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "WB RB nivoi 3300K" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "WB RB nivoi 3300K" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "WB RB nivoi 3600K" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "WB RB nivoi 3600K" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "WB RB nivoi 3900K" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "WB RB nivoi 3900K" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "WB RB nivoi 4000K" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "WB RB nivoi 4000K" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "WB RB nivoi 4300K" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "WB RB nivoi 4300K" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "WB RB nivoi 4500K" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "WB RB nivoi 4500K" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "WB RB nivoi 4800K" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "WB RB nivoi 4800K" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "WB RB nivoi 5300K" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "WB RB nivoi 5300K" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "WB RB nivoi 6000K" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "WB RB nivoi 6000K" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "WB RB nivoi 6600K" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "WB RB nivoi 6600K" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "WB RB nivoi 7500K" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "WB RB nivoi 7500K" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "WB RB nivoi CWB1" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "WB RB nivoi CWB1" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "WB RB nivoi CWB2" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "WB RB nivoi CWB2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "WB RB nivoi CWB3" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "WB RB nivoi CWB3" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "WB RB nivoi CWB4" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "WB RB nivoiCWB4" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "WB G nivo 3000K" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "WB G nivo 3000K" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "WB G nivo 3300K" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "WB G nivo 3300K" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "WB G nivo 3600K" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "WB G nivo 3600K" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "WB G nivo 3900K" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "WB G nivo 3900K" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "WB G nivo 4000K" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "WB G nivo 4000K" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "WB G nivo 4300K" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "WB G nivo 4300K" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "WB G nivo 4500K" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "WB G nivo 4500K" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "WB G nivo 4800K" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "WB G nivo 4800K" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "WB G nivo 5300K" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "WB G nivo 5300K" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "WB G nivo 6000K" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "WB G nivo 6000K" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "WB G nivo 6600K" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "WB G nivo 6600K" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "WB G Nivo 7500K" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "WB G nivo 7500K" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "WB G nivo" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "WB G nivo" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "PoboljÅ¡anje" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Vrijednosti poboljÅ¡anja" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "Vrijednosti poboljÅ¡anja" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "Fliter provedenog jezgrovanja" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring Values" +msgstr "Vrijednosti Provedenog Jezgrovanja" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring values" +msgstr "Vrijednosti provedenog jezgrovanja" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Nivo crne" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Baza dobitaka" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Baza pojaÄanja" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Valjani bitovi" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Izreži Lijevo" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Izreži lijevo" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Izreži Vrh" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Izreži vrh" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Izreži po Å irini" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Izreži po Å¡irini" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Izreži po Visini" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Izreži po visini" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "Nacin visestruke izlozenosti" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "Nacin visestruke izlozenosti" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "Proporcija" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "Razmjera" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "Okvir pogleda" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "Izgled okvira" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "Prepoznavanje lica" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "Prepoznavanje lica" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "PodruÄje prepoznavanja lica" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "PodruÄje prepoznavanja lica" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Nepoznata Olympuslp oznaka" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "OdskoÄiti ili Ugasiti" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "Usmjeriti" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Verzija informacija o fokusu" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Verzija informacija o fokusu" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Automatski fokus" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "Detektovanje scene" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "detektovanje scene" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "PodruÄje Scene" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "PodruÄje scene" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Podatak o prepoznavanju scene" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Podatak o prepoznavanju scene" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Broj Koraka Zumiranja" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Broj Koraka Fokusa" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Broj koraka fokusa" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Fokusni korak BeskonaÄnost" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Fokusni korak BeskonaÄnost" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Fokusni korak izbliza" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Fokusni korak Izbliza" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Vanjski bljesak" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Vodeći broj vanjskog blica" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Prirucnicki broj vanjskog blica" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "RuÄni bljesak" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "RuÄni bljesak" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "nepoznata OlympusFi oznaka" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "nepoznata OlympusFi oznaka" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "dobro vrijeme" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "Volfram (sa žarnom niti)" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "veÄernje sunÄeve zrake" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Dnevno svjetlo fluorescentno (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Dnevno bijelo fluorescentno (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "hladno bijelo fluorescentno (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "bijelo fluorescentno (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Bijeli balans na dodir" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "PrilagoÄ‘eno 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "Sirova Info Verzija" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "Sirova info verzija" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "WB_RB Nivoi Upotrijebljeni" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "WB_RB nivoi upotrijebljeni" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "WB_RB nivoi - Automatski" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "WB_RB nivoi - Automatski" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "WB_RB Nivoi Sjene" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "WB_RB nivoi sjene" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "WB_RB nivoi - OblaÄno" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "WB_RB nivoi - OblaÄno" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "WB_RB nivoi - Lijepo vrijeme" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "WB_RB nivoi - Lijepo vrijeme" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "WB_RB nivoi - volfram" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "WB_RB nivoi - volfram" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "WB_RB nivoi - Zalazak sunca" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "WB_RB nivoi - zalazak sunca" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "WB_RB nivoi - Dnevna florescentna svjetlost" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "WB_RB nivoi - Dnevna svjetlost fluorescent" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "WB_RB nivoi - Dnevna bijela svjetlost fluorescent" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "WB_RB nivoi - Dnevna bijela svjetlost fluorescent" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "WB_RB nivoi - Hladno bijela svjetlost fluorescent" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "WB_RB nivoi - Hladno bijela svjetlost fluorescent" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "WB_RB nivoi - Bijela svjetlost fluorescent" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "WB_RB nivoi - Bijela svjetlost fluorescent" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Paleta Boja2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Matrica boja 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Crno nivo 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Crno nivo 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "YCbCr koeficijenti" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "YCbCr koeficijenti" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "Valjana dubina pixela" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "Valjana dubina pixela" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Balans bijele Comp" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Balans bijele comp" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "PodeÅ¡avanje zasićenja" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "PodeÅ¡avanje nijanse" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "PodeÅ¡avanje nijanse" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "CM kompenzacija ekspozicie" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "CM kompenzacija ekspozicie" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "CM Bijeli balans" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "CM Bijeli balans" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "CM Balans Bijele Comp" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "CM balans bijele comp" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "CM Bijeli Balans Sive TaÄke" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "CM bijeli balans sive taÄke" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "CM Zasićenost" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "CM Zasićenost" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "CM Nijansa" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "CM Nijansa" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "CM kontrast" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "CM kontrast" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "CM oÅ¡trina" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "CM oÅ¡trina" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "nepoznata OlympusRi oznaka" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Korisnik - izabran" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Auto - izmjena" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Brzo" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "Jedan dodir" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-AF" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-AF" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "Imager AF" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "AF sensor" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "Meki Fokus" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "Pop Art" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "Blijeda i svijetla boja" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "Blagi ton" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "Pribodna rupa" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "Zrnast Film" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "Diorama" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "Prekriži proces" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Riblje oko" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "Crtanje" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +#, fuzzy +msgid "Pale & Light Color II" +msgstr "Blijeda i svijetla boja" + +#: src/olympusmn.cpp:1514 +#, fuzzy +msgid "Pop Art II" +msgstr "Pop Art" + +#: src/olympusmn.cpp:1515 +#, fuzzy +msgid "Pin Hole II" +msgstr "Pribodna rupa" + +#: src/olympusmn.cpp:1516 +#, fuzzy +msgid "Pin Hole III" +msgstr "Pribodna rupa" + +#: src/olympusmn.cpp:1517 +#, fuzzy +msgid "Grainy Film II" +msgstr "Zrnast Film" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Meki Fokus" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Priordne boje" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Minimalna blenda" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Izbor" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Prekriži proces" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Priordne boje" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Priordne boje" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Diorama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Upravljaj UI" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Upravljaj UI" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Prirodna boja" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Prirodna boja" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Prirodna boja" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "Lijevo (ili n/a)" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "centar (horizontalno)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "centar (vertikalno)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "vrh-lijevo (horizontalno)" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "vrh-lijevo (horizontalno)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "vrh-desno (horizontalno)" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "lijevo (horizontalno)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "srednje-lijevo (horizontalno)" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "srednje-desno (horizontalno)" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "desno (horizontalno)" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "dno-lijevo (horizontalno)" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "dno-centar (horizontalno)" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "dno-desno (horizontalno)" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "vrh-lijevo (vertikalno)" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "vrh-centar (vertikalno)" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "vrh-desno (vertikalno)" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "lijevo (vertikalno)" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "srednje-lijevo (vertikalno)" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "srednje-desno (vertikalno)" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "desno (vertikalno)" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "dno-lijevo (vertikalno)" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "dno-centar (vertikalno)" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "dno-desno (vertikalno)" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "jedan cilj" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "svi ciljevi" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "dinamiÄni jedan cilj" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Vrlo visoka" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Pokretna slika" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Mali Film" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogen" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "automatski, fokus dugme" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "auto, neprekidno" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "Paniranje" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "tele-makro" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Makro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "krajolik" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Prioritet brzine okidaÄa" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "pregled filma" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "Jednostavno" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "efekti boje" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "noćni krajolik" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "Beba" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "nježna koža" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Svjetlost svijeće" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Zvjezdano nebo" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "visoka osjetljivost" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Pomoć za panoramu" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "ZraÄna slika" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "Inteligentni ISO" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "bijela ploÄa" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "Velika brzina kontinualnog snimanja" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "Inteligentni - Automatski" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Multi-mjesto" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Domet prijenosa" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Blic" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Skener filma" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Moje boje" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Panoramski kadar" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "HDR" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "RuÄni sumrak" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Daljinski upravljaÄ" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Digitalni filter" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Auto portret" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Odnos" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "noćni krajolik" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Plavo nebo" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "AF osvjetljenje okruženja" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Noćni portret" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +#, fuzzy +msgid "Cute Desert" +msgstr "Kostimograf" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +#, fuzzy +msgid "Clear Sports Shot" +msgstr "Napredna snimanja sportova" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "toplo" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Dobro" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "nizak/visok kvalitet" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "NeograniÄeno" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "Srednje nisko" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "Srednje visoko" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "Nisko (-1)" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "Visoko (+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Najniže (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "NajviÅ¡e (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "Okreni 90 u smjeru sata" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Nije potrebnoa" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Nije potrebnoa" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "EX optics" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Telephoto" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "Kuća" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Standardna (boja)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "DinamiÄna (boja)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "prirode (boja)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "glatko (boja)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Standardno (C/B)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "DinamiÄno (C/B)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "Glatko (C/B)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Vibrirajuće" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Zagrada" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Produžetak" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Automatski" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Standardna forma" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "Okreni 90 u smjeru sata" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "Okreni 90 u smjeru sata" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "S lijeva nadesno" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "S desna nalijevo" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Odozgo prema dolje" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Odozdo prema gore" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Vremenska skala" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Informacije o lokaciji." + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Izbor" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Zvuk" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "PodrÅ¡avanje bijelog balansa" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "FlashBias" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Exif verzija" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Efekat Boje" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "efekt boje" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"vrijeme u 1/100 s od kad je kamera ukljuÄena do kad je slika upisana u " +"memorijsku karticu" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Rafalni režim" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Rafalni režim" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Redukcija Å¡uma" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "SamobrojaÄ" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "AF pomoćnik" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "starost bebe" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby (or pet) age 1" +msgstr "starosti bebe (ili ljubimca)" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "optiÄki naÄin zumiranja" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "optiÄki naÄin zumiranja" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "dan putovanja" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "dan putovanja" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Svjetska lokacija vremena" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Svjetska lokacija vremen" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "GPS Vremenski PeÄat" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "Program ISO" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Vrsta scene" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "GPS Vremenski PeÄat" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Lice Detektirano" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "PodeÅ¡avanje zemperatura boje" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Temperatura boje" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Podupiranje" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "WB Podesi AB" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "WB podesi AB. Pozitivan je pomjeraj prema plavom." + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "WB Podesi GM" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "WBPodesiGM.Pozitivno je korak prema zelenom." + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "info bljeska" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Redukcija Å¡uma duge ekspozicije" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Af fokus pozicija" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Prepoznavanje lica" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "Sporedni Tip" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "Sporedni tip" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Serijski broj tijela" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "Domet prijenosa" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Inteligentni - Automatski" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Firmware verzije" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Prepoznavanje lica AF" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Upozorenje fokusa" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Mjerenje bljeska" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Naslov" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "starost bebe" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby name (or pet name)" +msgstr "starosti bebe (ili ljubimca)" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Lokacija" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Država" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Inteligentni - Automatski" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Brzina zatvaranja" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "DinamiÄki opseg razvoja" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Nema dotjerivanja" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Grad" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Stil slike" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Orijentacija slike" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "Reži ugao" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Smijer panoram" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "RAW+JPG zapis" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "vanjski i unutraÅ¡nji" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Brzina zatvaraÄa" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Otvor blende" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "Dodir AF" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "IzraÄ‘ivaÄBiljeÅ¡ki Verzija" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "IzraÄ‘ivaÄBiljeÅ¡ki verzija" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "WB Crveni Nivo" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "WB crveni nivo" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "WB Zeleni Nivo" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "WB Nivo zelene boje" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "WB Nivo plave boje" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "WB Nivo plave boje" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "GPS Vremenski PeÄat" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "GPS Vremenski PeÄat" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "starost bebe" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby (or pet) age 2" +msgstr "starosti bebe (ili ljubimca)" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "Domet prijenosa" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Nepoznata PanasonicMakerNote oznaka" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "TaÄkasti naÄin rada UKLJ" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "TaÄkasti naÄin rada ISKLJ ili 3-podruÄje(velika brzina)" + +#: src/panasonicmn.cpp:564 +#, fuzzy +msgid "23-area" +msgstr "5-podruÄje" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "Fokusiranje na taÄku" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "5-podruÄje" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "1-podruÄje" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "1-podruÄje (velike brzine)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "3-podruÄje (auto)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "3-podruÄje (lijevo)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "3-podruÄje (centar)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "3-podruÄje (desno)" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Fokusiranje na taÄku" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "nije postavljeno\n" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "Panasonic Rijetka Verzija" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Å irina senzora" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Å irina senzora" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Visina Senzora" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Visina senzora" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Gornja granica senzora" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Gornja granica senzora" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Lijeva granica senzora" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Lijeva granica senzora" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Crveni balans (pronaÄ‘eno u Digilux 2 RAW slikama)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "ProizvoÄ‘aÄ" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "Proizvodjac opreme za snimanje" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Model" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "Ime modela ili broj modela opreme" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "Å tampane trake" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "Å tampane trake" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Usmjerenje" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "Redovi po traci" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "Broj redova po traci" + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "Broj bajtova trake" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "Broj bajtova trake" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "Pomak neobradjenog podatka" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "Pomak sirovog podatka" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Exif IFD Pointer" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "PokazivaÄ na Exif IFD" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "GPS Info IFD Pointer" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "PokazivaÄ na GPS Info IFD" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Nepoznata PanasonicRaw oznaka" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Noćna scena" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Dobro" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Bolje" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Najbolje" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 ili 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 ili 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 ili 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Automatski, nije okinuo" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +msgid "Off, Did not fire" +msgstr "IskljuÄen, nije otkazan" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Automatski, nije okinuo, umanjenje crvenih oÄiju" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "UkljuÄen.Nije otkazan.Wireless (Glavni)" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Automatski, okinuo" + +#: src/pentaxmn.cpp:253 +msgid "On, Fired" +msgstr "UkljuÄen, otkazan" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Automatski, okinuo, umanjenje crvenih oÄiju" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "UkljuÄeno, uklanjanje crvenih oÄiju" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "UkljuÄen, Wireless (glavni)" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "UkljuÄen, Wireless (Kontrola)" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "UkljuÄeno, mekano" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "UkljuÄeno, sporo usklaÄ‘ivanje" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "UkljuÄeno, sporo usklaÄ‘ivanje, uklanjanje crvenih oÄiju" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "On, prateća zavjesa" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Pan Fokus" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "AF-A" + +#: src/pentaxmn.cpp:276 +msgid "Contrast-detect" +msgstr "Kontrast-detektovan" + +#: src/pentaxmn.cpp:277 +msgid "Tracking Contrast-detect" +msgstr "Praćenje kontrasta-detektovano" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Nepokretna sredina" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "Automatsko AF pracenje" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "Prepoznavanje lica AF" + +#: src/pentaxmn.cpp:287 +msgid "AF Select" +msgstr "AF odabran" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "Fiksirani centar ili viÅ¡estruko" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Gore - sredina" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Dolje - sredina" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "ViÅ¡e segmenata" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Ponderacija prema centru" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "DnevnoFluorescentno" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "Bijela dnevna fluorescentna svjetlost" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "Bijela fluorescentna svjetlost" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "PodeÅ¡avanje zemperatura boje" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Odabrano od strane korisnika" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Automatski (Dnevna svjetlost)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Automatski (Sjena)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (Bljesak)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Automatski (volfram)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Automatski (Dnevna bijela fluorescentna svjetlost)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Automatski (Dnevna bijela fluorescentna svjetlost)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Automatski (Bijela fluorescentna svjetlost)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Automatski (OblaÄno)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Podesi (Vatrometi?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Srednje nisko" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Srednje visoko" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Srednje lagano" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "Srednje teÅ¡ko" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Vrlo lagano" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Vrlo Ävrsto" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Rodni grad" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Mexico City" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "ÄŒikago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Majami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "Njujork" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracus" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio di Žaneiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "London" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Pariz" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Milano" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rim" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlin" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istanbul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Kairo" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jerusalim" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moskva" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Teheran" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubai" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "KaraÄi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Katmandu" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Yangon" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapur" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Pnom Pen" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Džakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Peking" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Å angaj" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Tajpej" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaide" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokio" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sidnej" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Noumea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Alžir" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Atena" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Stokholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lisabon" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Kopenhagen" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "VarÅ¡ava" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "Prag" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "BudimpeÅ¡ta" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "NeobraÄ‘eno" + +#: src/pentaxmn.cpp:570 +msgid "Resized" +msgstr "promjenjeno" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Izrezano" + +#: src/pentaxmn.cpp:573 +msgid "Digital Filter 6" +msgstr "Digitalni FIlter 6" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "Spajanje okvira" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Program velike brzine" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "DOF Program" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "MTF Program" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Noćna scena portet" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Bez Blica" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surfovanje ili snijeg" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Djeca" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "Nivo osvjetljenja" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "Noćno pucketanje" + +#: src/pentaxmn.cpp:602 +msgid "Blue Sky" +msgstr "Plavo nebo" + +#: src/pentaxmn.cpp:604 +msgid "Night Scene HDR" +msgstr "Noćna scena HDR" + +#: src/pentaxmn.cpp:606 +msgid "Quick Macro" +msgstr "Quick Macro" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "Fluorescentno" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (Standard)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (Portret)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (Pejzaž)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (Makro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (Sport)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Zeleni režim" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Prioritet brzine okidaÄa" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Prioritet otvora" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Sijalica" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Promjena TV programa" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Promjena AV programa" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Prioritet otvoranja (UgaÅ¡eno Automatsko otvaranje)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "RuÄno (UgaÅ¡eno Automatsko otvaranje)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Sijalica (UgaÅ¡eno Automatsko otvaranje)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Prioritet okidanja" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "AE Prioritet okidanja i otvaranja" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "AE Prioritet okidanja i otvaranja (1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "AE Prioritet osjetljivosti" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "AE Prioritet osjetljivosti (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "Bljesak X-Sync Brzina AE" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "Bljesak X-Sync Brzina AE (1)" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Auto Program (DOF)" + +#: src/pentaxmn.cpp:647 +#, fuzzy +msgid "Auto Program (Hi-Speed)" +msgstr "Auto Program (DOF)" + +#: src/pentaxmn.cpp:648 +msgid "Auto Program (DOF)" +msgstr "Auto Program (DOF)" + +#: src/pentaxmn.cpp:649 +msgid "Auto Program (MTF)" +msgstr "Auto Program (MTF)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "Auto Program (Shallow DOF)" + +#: src/pentaxmn.cpp:651 +msgid "Blur control" +msgstr "Kontrola zamaglivanja" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "Video (30 fps)" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "Video (24 fps)" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "neprekidno (Hi)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Rafal" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "Video" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "SamookidaÄ (12 sek)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "SamookidaÄ (2 sek)" + +#: src/pentaxmn.cpp:669 +#, fuzzy +msgid "Mirror Lock-up" +msgstr "Zatvori Ogledalo" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Daljinski upravljaÄ (3 s)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Daljinski upravljaÄ" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Velika brzina kontinualnog snimanja" + +#: src/pentaxmn.cpp:675 +msgid "HDR Strong 1" +msgstr "HDR Strong 1" + +#: src/pentaxmn.cpp:676 +msgid "HDR Strong 2" +msgstr "HDR Strong 2" + +#: src/pentaxmn.cpp:677 +msgid "HDR Strong 3" +msgstr "HDR Strong 3" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "HDR Auto" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 ili bez leća" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "K ili M Lens" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "A Serija Leća" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Svjetlo" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "Preokret filma" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "zraÄeći" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Najslabije" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Slabo" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Jako" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Nije prosireno braketiranje" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Nepoznato " + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Verzija Pentax Makernote-a" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Režim snimanja kamere" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Rezolucija pregleda slke" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Dužina pregleda slike" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "VeliÄina IFD koji sadrži pregled slike" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Identifikacija modela" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Identifikacija Pentax modela" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Datum" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Vrijeme" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "PodeÅ¡avanja kvaliteta slike" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "PodeÅ¡avanje veliÄine slike" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "PodeÅ¡avanje Bljesak režima" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "PodeÅ¡avanje Fokus režima" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "OznaÄena AF taÄka" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "AF tacka u fokusu" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "F-broj" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "ISO osjetljivost" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Postavke ISO osjetljivosti" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Nacin mjerenja" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "AutoBracketing" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "Balans plave boje" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Balans crvene boje" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Žićna daljina" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Mjesto stanovanja" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "Ljetno vrijeme u vaÅ¡em mjestu" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Da li je ljetno vrijeme aktivno u vaÅ¡em mjestu" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Ljetno vrijeme u odrediÅ¡tu" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Da li je ljetno vrijeme aktivno u odrediÅ¡tu" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "DSP Firmware Verzija" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "CPU Firmware Verzija" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Vrijednost svjetlosti" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" +"Kamera je izracunala vrijednost svijetla, ukljucujuci kompenzaciju " +"ekspozicije" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "pomak prostora slike" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "Sirova veliÄina slike" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Granice pregleda slike" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "PodeÅ¡avanje osjetljivosti" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Digitalni Filter" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Toplina kamere" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Nijansa slike" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Redukcija treÅ¡enja" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Informacija o redukciji treÅ¡enja" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "DinamiÄka proÅ¡irenost dometa" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Visoka ISO redukcija Å¡uma" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "AF PodeÅ¡avanje" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Crna taÄka" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Bijela taÄka" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Informacije o snimku" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "AE Informacija" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Informacija o objektivu" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Informacija o bljesku" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "AEM segmenti mjerenja" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "DeponijaABlica" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "DeponijaBBlica" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "WB_RGGB nivoi - dnevna svjetlost" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "WB_RGGB nivoi - SjenÄenje" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "WB_RGGB nivoi - OblaÄno" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "WB_RGGB nivoi - Volfram" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "WB_RGGB nivoi - FluorescentnoD" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "WB_RGGB nivoi - FluorescentnoN" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "WB_RGGB nivoi - FluorescentnoW" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "WB_RGGB nivoi - Bljesak" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Informacija o kameri" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Informacija o bateriji" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "AF Informacija" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "Informacija o boji" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Nepoznata PentaxMakerNote oznaka" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Dublin Core shema" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "digiKam shema upravljanja fotografije" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "KDE Å ema Interfejsa Programa za slike" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "XMP osnovna Å¡ema" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "XMP Upravljenje Pravima Å¡ema" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "XMP Upravljanje Medijima Å¡ema" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "XMP Osnovni tiket posla Å¡ema" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "XMP Stranica-Tekst Å¡ema" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "XMP DinamiÄna Media Å¡ema" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Microsoft Photo shema" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Adobe photoshop shema" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Adobe PDF shema" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Adobe photoshop shema" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Osjetljiva Kamera Å¡ema" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Exif Å ema za TIFF Svojstva" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Exif Å¡ema za Exif-specifiÄna Svojstva" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Exif Å¡ema za Dodatna Exif Svojstva" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "IPTC Jezgro Å¡ema" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "IPTC Å ema produženja" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "PLUS Licenca Podatak Format Shema" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "iView Media Pro Å¡ema" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "Ekpression Media shema" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "Microsoft Photo 1.2 Å¡ema" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "Microsoft Photo RegionInfo Å¡ema" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "Microsoft Photo Region Å¡ema" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "Å ema regiona radne grupe za metapodatke" + +#: src/properties.cpp:138 +#, fuzzy +msgid "Metadata Working Group Keywords schema" +msgstr "Å ema regiona radne grupe za metapodatke" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "XMP ProÅ¡irena Video Å¡ema" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "XMP ProÅ¡irena Audio Å¡ema" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Dublin Core shema" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Dublin Core shema" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Adobe PDF shema" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Colorant struktura" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Dimenzije strukture" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Font strukture" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Ikonica strukture" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Struktura resursa dogaÄ‘aja" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "ResusrsRef struktura" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Verzija strukture" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Osnovni Posao/Tijek strukture" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "PovrÅ¡inska struktura" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Kvalifikator za xmp:Identifikator" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Doprinosilac" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Saradnici resursima (koji nisu autori)" + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "PodrÅ¡ka" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"Prostorna ili vremenska tema resursa, prostorna primjenjivost resursa, ili " +"nadležnost pod kojima je resurs je relevantan." + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Stvaralac" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "Autori resursa (popisani po prednosti, ako je znaÄajno)" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Datum(i) kad se neÅ¡to zanimljivo dogodilo resursu." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Tekstualni opsi sadržaja resursa.ViÅ¡estruke vrijednosti mogu biti " +"predstavljeni za razliÄite jezike." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Format" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"Format datoteke iskoriÅ¡ten za spaÅ¡avanje resursa. Alati i aplikacije trebaju " +"postaviti ovu osobinu u format spaÅ¡avanja podataka. Može ukljuÄivati " +"odgovarajuće parametre." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identifikator" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Jedinstven identifikator resursa. PreporuÄeno, najbolja praksa je " +"identificirati resurs po znaÄenju stringa prilagoÄ‘avajući se formalnom " +"identifikacionom sistemu." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "NeureÄ‘en niz specificirajući jezike iskoriÅ¡tene u resursu." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "IzdavaÄ" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Entitet odgovoran za pravljenje dostupnih resursa. Primjeri izdavaÄa " +"ukljuÄuju osobu, organizaciju, ili servis. TipiÄno, ime izdavaÄa bi trebalo " +"biti dato tako da ukazuje na entitet." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Odnos" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Veze sa ostalim dokumentima. PreporuÄeno, najbolja praksa je identificirati " +"povezani resurs po znaÄenju stringa prilagoÄ‘avajući se formalnom " +"identifikacionim sistemom." + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Prava" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Neformalna izjava prava, odabrana jezikom. TipiÄno, informacije o pravima " +"ukljuÄuju izjavu o raznim imovinskim pravima povezanih s resursima, " +"ukljuÄujući i prava intelektualnog vlasniÅ¡tva." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Jedinstven identifikator djela iz kojeg je resurs izveden." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"NeureÄ‘en niz opisnih fraza ili kljuÄnih rijeÄi koje specificiraju temu " +"sadržaja resursa." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"Naslov dokumenta, ili dodijeljeno ime resursu. TipiÄno, biće ime po kojem je " +"resurs poznat." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Tip" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "Tip dokumenta; naprimjer, novela, poema, ili radni dokument." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Lista oznaka" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"Lista potpunih putanja u obliku stringa. Putanja hijerarhije je rastavljena " +"sa '/' znakom ( npr.: \"City/Paris/Monument/Eiffel Tower\")" + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Naslovi Imena autora" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" +"Popis svih imena autora naslova za svaki jezik alternativni naslov je " +"smjesten u XMP tag." + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "Naslovi Datum/Vrijeme oznaka" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" +"Lista svih naslova datum/vrijeme oznaka za svaki jezik alternativni naslov " +"postavi u standardne XMP oznake" + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Historija slike" + +#: src/properties.cpp:197 +#, fuzzy +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" +"XML baziran na sadržaju liste svih akcija izvrÅ¡enih na ovoj slici sa " +"urednikom za slike (kao Å¡to su rezanje, rotiranje, ispravljanja boje, " +"podeÅ¡avanja, itd.)." + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "PodeÅ¡avanje taÄnosti objektiva" + +#: src/properties.cpp:198 +#, fuzzy +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" +"Lista postavki alata Lens Correction koristenih za popravku lecne " +"distorzije. Ovo ukljucuje alate Batch Queue Manager i Uredjivac slike " +"bazirane na LensFun biblioteci." + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Boja label-a" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" +"Boja label-a dodijeljena je ovoj stavci. Moguće vrijednosti su: \"0\": nema " +"label-a; \"1\": Crvena; \"2\": Narandžasta ; \"3\": Žuta; \"4\": Zelena; " +"\"5\": Plava; \"6\": LjubiÄasta; \"7\": SIva; \"8\": Crna; \"9\": Bijela." + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "Dobavna oznaka" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" +"Dobavna oznaka koja se pridruži ovom objektu. Moguće vrijednosti su \"0\": " +"nema oznake; \"1\": odbaÄen objekt; \"2\": objekt Äeka validaciju; \"3\": " +"objekt prihvaćen." + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Enfuse Ulaznih Fajlova" + +#: src/properties.cpp:206 +#, fuzzy +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" +"Lista datoteka obraÄ‘enih sa Enfuse programom koristeći ExpoBlending alat." + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "Enfuse Ulaznih Fajlova" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" +"Lista datoteka obraÄ‘enih sa Enfuse programom koristeći ExpoBlending alat." + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Enfuse Postavke" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" +"Lista Enfuse podeÅ¡avanja iskoriÅ¡tenih za mijeÅ¡anje slike sa mnoÅ¡tvom drugih " +"sa ExpBlending alatom." + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "Identifikator PicasaWeb objekta" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "Identifikator objekta s PicasaWeb web usluge" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "Identifikator Yandex Fotki objekta" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "Identifikator objekta s Yandex Fotki web usluge" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Savjeti" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"NeureÄ‘en niz specificirajući osobine koje su bile izmijenjene izvan autorske " +"aplikacije. Svaka stavka bi trebala sadržavati pojedini namespace i XPath " +"odvojen jednim ASCII razmakom (U+0020)." + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "Osnovni URL" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"Bazni URL za povezane URL-ove u sadrzaju dokumenta. Ako ovaj dokument sadrzi " +"Internet linkove, i ti linkovi su povezani, oni su povezani za bazni url. " +"Ovo svojstvo omogucava standardni put za ugradjene povezane URLove da budu " +"tumaceni alatima. Web autorski alati bi trebali postaviti vrijednost " +"baziranu na njihovom poimanju gdje ce se URLovi tumaciti." + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Datum unosa" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "Datum i vrijene resursa su izvorno kreirani." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Alat za kreiranje" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"Ime prve poznate alatke upotrijebljene za kreiranje resursa. Ako je " +"historija predstavljena u metapodacima, ova vrijednost bi trebala biti " +"ekvivalentna osobini xmpMM::History's softwareAgent." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Neuredjen niz tekstualnih znakova koji nedvosmisleno identificiraju podatak " +"unutar datog konteksta. Clan niza moze biti uslovljen sa xmpidq:Scheme da " +"obiljezava formalni identifikacioni sistem kojem taj identifikator odgovara. " +"Napomena: dc:identifikator objekat se ne koristi zato sto nedostaje " +"definirane sheme kvalifikatora i zato sto je definirana u XMP Specifikaciji " +"kao jednostavni (jednoznacni) objekat." + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Oznaka" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"RijeÄ ili kratka fraza koja identificira dokument kao Älan korisniÄki " +"definisane kolekcije. Upotrijebljeno za organizaciju dokumenata u " +"pretraživanju datoteka." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Datum metapodatka" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"Datum i vrijeme kada je metapodatak za ovaj resurs posljednji put spaÅ¡en. " +"Trebalo bi biti isto vrijeme ili joÅ¡ skorije od xmp:ModifyDate." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Datum modifikacije" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"Datum i vrijeme posljednje izmjene resursa. Vrijednost ove osobine nije " +"potrebno isto kao sistemska izmjena datuma datoteke jer je postavljeno prije " +"nego je datoteka izmijenjena." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Nadimak" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Kratko neformalno ime za resurs." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Ocjena" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Broj koji pokazuje status dokumenta povezanog sa ostalim dokumentima, " +"upotrijebljeno za organizaciju dokumenata u pretraživanju datoteka. " +"Vrijednosti su korisniÄki definisane unutar aplikacijski definisanog domena." + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "SliÄice" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Alternativni niz male slike za datoteku, koja se može razlikovati u " +"karakteristikama kao Å¡to su veliÄina ili kodu slike." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Certifikat" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Online certifikat o pravima izmjene." + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "OznaÄeno" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Pokazuje da je ovo legalno izmijenjen resurs." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Vlasnik" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "NeureÄ‘en niz specificirajući legalne vlasnike resursa." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Uvjeti o upotrebi" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Tekstualne instrukcije kako resurs može biti legalno upotrijebljen." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Web IzvjeÅ¡taj" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Lokacija web stranice opisujući vlasnika i/ili pravni izvjeÅ¡taj za ovaj " +"resurs" + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Izvedeno Iz" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" +"Referenca na originalni dokument iz kojeg je ovo izvedeno. To je minimalna " +"referenca;za komponente koje nedostaju pretpostavlja se da su " +"nepromjenjene. Na primjer, nova verzija je potrebna samo da specificira " +"instancu ID i broj verzije od prethodne verzije, ili prevoÄ‘enje je potrebno " +"samo da specificira instancu ID i izvedbu klase originala." + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "Dokument ID" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" +"UobiÄajeni identifikator za sve verzije prevoda dokumenta. Trebao bi biti " +"baziran na UUID; pogledaj Document and Instance IDs ispod." + +#: src/properties.cpp:268 +msgid "History" +msgstr "Istorija" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" +"Uredjeni niz korisniÄkih akcija visokoe razine koje su rezultirale u ovom " +"resursu. Namjera je dati ljudskim Äitateljima opće naznake o poduzetim " +"koracima da bi se promjenilo iz prethodne verzije u ovu. Popis bi trebao " +"biti na apstraktnoj razini, to nije namjera da bude iscrpljujucih pritiskana " +"tipke ili druge detaljne historije." + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "Instanca ID" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" +"Identifikator za specifiÄnu inkarnaciju dokumenta, ažuriran svaki put kad se " +"fajl spasi. Trebao bi biti baziran na UUID; pogledaj Document and Instance " +"IDs ispod." + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Upravljano Iz" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" +"Pozivanje na dokument kakav je bio prije upravljanja. To je postavljena kada " +"je upravljani dokument uveden s sistem za upravljanje sredstvima koja " +"trenutno ne posjeduj . To može ili ne može ukljuÄiti reference na razliÄite " +"sisteme upravljanja ." + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Rukovodilac" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" +"Naziv sistema za upravljanje imovinom koji upravlja ovim resursom. Uz xmpMM: " +"ManagerVariant, to govori aplikaciji koje sistem za upravljanje imovinom da " +"kontaktiraju u vezi ovog dokumenta." + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "Upravljati" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" +"URI koji identificira upravljani resurs za sistem upravljanja sredstvima ," +"prisutnost ovog svojstva je formalna indikacija da je ovaj resurs " +"upravljan . Oblik i sadržaj tog URI je privatan za sistem za upravljanje " +"resursima" + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "Upravljaj UI" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" +"URL koji može biti upotrijebljen za pristup informacijama o upravljanom " +"resursu na web pretraživaÄu. Može se zahtijevati odreÄ‘eni plug-in " +"pretraživaÄa." + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "Varijanta menadžera" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" +"OdreÄ‘uje odreÄ‘enu varijantu sistema za upravljanje imovinom.Oblik ovog " +"objekta je privatan za odreÄ‘eni sistem upravljanja imovinom." + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Klasa Izlaganja" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" +"Naziv izvedbe klase za taj resurs . Ovo svojstvo bi trebao biti odsutno ili " +"postavljeno na zadane za verziji dokumenta koja nije izvedena izvedba ." + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Parametri izlaganja" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" +"Moze se koristiti da bi se obezbjedili dodatni parametri za izlaganje koji " +"su previse kompleksni ili verbalni da bi se sifrirali u xmpMM: " +"RenditionClass." + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "Verzija ID" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" +"Identifikator verzije dokumenta za ovaj resurs. Svaka verzija dokumenta " +"dobija novi identifikator, obicno jednostavno rastuce cijele brojeve 1, 2, " +"3 ... itd. Sistem upravljanja medijima moze imati konvencije ili podrzana " +"grananja koja zahtijevaju kompleksnije sheme." + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Verzije" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" +"Historija verzija povezana sa ovim resursom. Ulaz [1] je najstarija poznata " +"verzija za ovaj dokument, ulaz [posljednji()] je najcesca verzija. Tipicno, " +"sistem upravljanja medijima bi popunio podatke o verziji u metapodatku na " +"check-in. To nije garancija da ce citava historija verzija od prve od ove " +"postojati u xmpMM:Versions vlasnistvu. Unutrasnje informacije o verziji mogu " +"biti kompresovane ili uklonjene i historija verzije moze biti skracena u " +"nekoj tacki." + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Zadnji URL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Zastarjela za privatnu zaÅ¡titu." + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "PrevoÄ‘enje" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Zastarjela u korist xmpMM:DerivedFrom. Referenca na dokument od kojeg je ovo " +"izvdeno." + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "Spasi ID" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "Zastarjelo. Prethodno koriÅ¡teno samo za podrÅ¡ku xmpMM:LastURL posjeda." + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Poslovna Referenca" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" +"Reference fajla upravljanja vanjskim poslom za posao procesa u kojem je " +"koristen dokument. Koristenje imena poslova je pod kontrolom korisnika. " +"Tipicno koristenje bi trebalo biti da se identifikuju svi dokumenti koji su " +"dio odredjenog posla ili ugovora. Postoje visestruke vrijednosti zbog toga " +"sto moze vise poslova koristiti odredjeni dokument u bilo koje vrijeme, to " +"moze biti korisno da se zadrz i historijska informacija o poslu ciji je dio " +"bio dokument prije." + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Maksimalna VeliÄina Stranice" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"VeliÄina najveće stranice u dokumentu(ukljuÄujući bilo koji sadržani " +"dokument)." + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Broj strana" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "Broj stranica u dokumentu(ukljuÄujući bilo koji sadržani dokument)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Fontovi" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"NeureÄ‘eni niz fontova koji su koriÅ¡teni u dokumentu(ukljuÄujući bilo koji " +"sadržani dokument)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Koloranti" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"UreÄ‘eni niz koloranata(satova) koji su koriÅ¡teni u dokumentu(ukljuÄujući " +"bilo koji sadržani dokument)." + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Tablica Imena" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"UreÄ‘eni niz tablica imena su potrebni za printanje dokumenta(ukljuÄujući " +"bilo koji sadržani dokument)." + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Referenca Projekta" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "Referenca na projekat koji je kreirao ovaj fajl." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Video brzina" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Video brzina. Jedna od: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Video Okvir VeliÄina" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "VeliÄina okvira. Na primjer: w:720, h: 480, unit:pixels" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Omjer video pixela" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "Omjer, izražen kao ht/wd. Npr: \"648/720\" = 0.9" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Video Dubljina Piksela" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"VeliÄina bita za pojedinaÄni komponentu boje od piksela. Standardni 32-bitni " +"pikseli imaju 8 bita po komponenti. Jedan od:8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Video Prostor Boje" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"Prostor boje. Jedan od: sRGB (koriÅ¡ten od strane Photoshop-a), CCIR-601 " +"(koriÅ¡ten za NTSC), CCIR-709 (koriÅ¡ten za HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Video Alfa Režim" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "Alfa režim. Jedan od: ravno, unaprijed-pomnoženo." + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "Video Alfa ViÅ¡estruka Boja" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" +"Boja u CMYK ili RGB koriÅ¡tena kao unaprijed pomnožena boja kad je alfa režim " +"pred-pomnožen." + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "Video Alpha Unity je transparentna." + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "Kada istina,unity je jasno, kada lažno, neprozirno je." + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Video kompresor" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Video kompresija koriÅ¡tena. Naprimjer, jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Poredak video polja" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "Poredak polja za video. Jedan od: Gornji, donji, progresivan." + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Povucite Dolje" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" +"Faza uzorkovanja filma pred konveziju u video(povući-dolje). Jedan od: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Audio Stopa Uzorka" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"Audio stopa uzorka. Može biti bilo koja vrijednost, ali uobiÄajeno je 32000, " +"41100, or 48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Audio Tip Uzorka" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Audio tip uzorka. Jedan od: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Audio Tip Kanala" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Audio tip kanala. Jedan od:Mono, Stereo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Audio Kompresor" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Audio kompresor koriÅ¡ten. Naprimjer, MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Položaj zvuÄnika" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" +"Opis uglova zvuÄnika od prednjeg centra u stepenima. Naprimjer : \"Lijevo = " +"-30, Desno = 30, Centar = 0, LFE = 45, Lijevo okruženje = -110, Desno " +"okruženje = 110\"" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Brzina prijenosa podataka datoteke" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" +"Podatak datoteke je izražen u megabajtima po sekundi. Naprimjer: \"36/10\" = " +"3.6 MB/sec" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Ime trake" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" +"Naziv trake na kojoj je klip snimljen, postavljen u toku procesa snimanja." + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Alternativno ime trake" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" +"Alternativni naziv trake, postavljen putem prozora projekta ili preko " +"Timecode dijaloga u Premiere-u.Ako je alternativni naziv postavljen i nije " +"vraćen, naziv je prikazan." + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Kod Startnog Vremena" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "Vremenski kod prvog okvira videa u fajlu, kao dobijeni iz uredjaja." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Alternativni Timecode" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"Timecode postavljen od strane korisnika. Kad je oznaÄeno, koristi se umjesto " +"poÄetnog Timecode-a." + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Trajanje" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Trajanje multimedijalne datoteke." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Scena" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Naziv scene." + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Naziv snimka" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "Ime snimka ili uzeti." + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Datum snimka" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Datum i vrijeme kad je video snimljen." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Mjesto snimka." + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"Naziv mjesta gdje je video snimljen. Naprimjer: \"Oktoberfest, Munich Germany" +"\". Za preciznije pozicioniranje, iskoristi EXIF GPS vrijednosti." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Log Komentar" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "KorisniÄki log komentari" + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Markeri" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "UreÄ‘ena lista markera." + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Priložena medija" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "NeureÄ‘ena lista svih medija iskoriÅ¡tenih za kreiranje ove medije." + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "Apsolutni Vrhunac Puta Audio Datoteke" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"Apsolutni put do vrhunca audio fajla datoteke. Ako je prazno, ne postoji " +"vrhunac fajla." + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "Relativni Vrhunac Puta Audio Datoteke" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"Relativni put do vrhunca audio fajla datoteke. Ako je prazno, ne postoji " +"vrhunac fajla." + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Datum modificiranja videa" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Datum i vrijeme kad je video modificiran." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Datum modificiranja audio datoteke." + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Datum i vrijeme kad je audio datoteka modificirana." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Datum modificiranja metapodatka" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Datum i vrijeme kada je metapodatak modificiran." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "IzvoÄ‘aÄ" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Naziv izvoÄ‘aÄa ili izvoÄ‘aÄa." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Album" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Naziv albuma." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Broj numere" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" +"Brojcana vrijednost pokazuje redosljed audio datoteke unutar svog izvornog " +"snimanja." + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Žanr" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Naziv žanra." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Informacije o autorskim pravima." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Datum kada je naziv publiciran." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Kompozitor" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Ime kompozitora" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Inženjer" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Ime inženjera" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Tempo audio datoteke" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Instrument" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "MuziÄki instrument." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Uvod" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "Trajanje vremena dovodjenja za muziku na cekanju." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Out Cue" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "Vrijeme poÄetka postepenog stiÅ¡avanja." + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Relativna vremenska oznaka" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "Vrijeme poÄetka medije unutar audio projekta." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Petlja" + +#: src/properties.cpp:384 +#, fuzzy +msgid "When true, the clip can be looped seamlessly." +msgstr "Kada istina, isjecak se stalno vrti" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Broj otkucaja" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "Broj otkucaja." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "KljuÄ" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "MuziÄka skala. Jedno od: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Režim rastezanja" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"Nacin audio istezanja. Jedan od: Fiksirana dužina, mjera za vrijeme, " +"resample, uplitanje bita, Hybrid." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Parametri vremenske skale" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "Dodatni parametri za režim rastezanja vremenske skale." + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Parametri Resemplovanja" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Dodatni parametri za Resemplovanje nacina istezanja." + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Parametri spajanja otkucaja." + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Dodatni parametri za režim rastezanja Spajanja otkucaja." + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Vremenska mjera" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"Vremenska mjera muzike, jedno od: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, " +"ostalo." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Tip skale" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" +"MuziÄka skala koriÅ¡tena u muzici. Jedna od njih: Major, Minor, Obje, " +"Nijedna. Nijedna je najÄešće koriÅ¡tena za instrumente bez asocijacijske " +"skale, kao sto su bubnjevi." + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Serijski broj kamere." + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Serijski broj kamere." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Datum sticanja." + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Datum sticanja." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "ProizvoÄ‘aÄ bljeska" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "ProizvoÄ‘aÄ bljeska." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Model bljeska." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Posljednja kljuÄna rijeÄ IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Posljednja kljuÄna rijeÄ IPTC." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Posljednja kljuÄna rijeÄ XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Posljednja kljuÄna rijeÄ XMP." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "ProizvoÄ‘aÄ objektiva" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "ProizvoÄ‘aÄ objektiva." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Model objektiva." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Postotak ocjena" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Postotak ocjena." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Informacija o slici" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "KljuÄne rijeÄi." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "PDF Verzija" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Verzija PDF datoteke (naprimjer : 1.0, 1.3, i sl.)" + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "ProizvoÄ‘aÄ" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Naziv alata koji je kreirao PDF dokument" + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Pozicija autora" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "Naslov po liniji." + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "PisaÄ naslova" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "PisaÄ / Urednik" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Kategorija. OgraniÄena na 3 7-bita ASCII karaktera." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Grad." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "Zemlja / lokacija porijekla." + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Zahvala." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" +"Datum kada je intelektualni sadržaj dokumenta stvoren ( umjesto datuma " +"nastanka fiziÄke reprezentacije ) , prateći IIM konvencije . Na primjer ," +"fotografije snimljene za vrijeme ameriÄkog graÄ‘anskog rata će imati datum " +"stvaranja tokom tog doba (1861-1865) , a ne datim kada je slika " +"digitalizirana za arhiviranje ." + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Naslov" + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Posebne instrukcije" + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Izvor." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Provincija/država." + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Dodatna kategorija." + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Izvorna referenca prenosa." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Važnost. Dozvoljeni raspon je 1-8." + +#: src/properties.cpp:452 +msgid "inches" +msgstr "InÄi" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Auto obasjanje" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Kad je taÄno, \"Svjetlost\" je automatski podeÅ¡ena." + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Automatski kontrast" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Kad je taÄno, \"Kontrast\" je automatski podeÅ¡ena." + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Automatska Ekspozicija" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Kad je taÄno, \"Ekspozicija\" je automatski podeÅ¡ena." + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Automatske sjene" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Kad je taÄno, \"Sjene\" su automatski podeÅ¡ene." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Plava nijansa" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Postavljanje plave nijanse. opseg -100 do 100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Zasićenje plave" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Postavka zasićenja plave. Opseg -100 do +100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Postavka osvjetljenja. Opseg 0 do +150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Profil kamere" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "PodeÅ¡avanje \"Profil kamere\"." + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Hromatsko odstupanje plave boje" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"\"Hromatska Aberacije, Fiksirana Plavo/Žuta Resa\" postavka. Rang -100 do " +"+100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Hromatsko odstupanje crvene boje" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"\"Hromatska Aberacije, Fiksirana Crveno/Cijan Resa\" postavka. Rang -100 do " +"+100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Redukcija Å¡uma boje" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "PodeÅ¡avanje \"Redukcija Å uma Slike\" .Raspon 0 do +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "PodeÅ¡avanje \"Kontrast\". Raspon -50 do +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "Kada \"Ima izrezano\" je tacno, vrh izrezanog je pod pravim uglom." + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" +"Kada \"Ima izrezano\" je tacno, lijevo od izrezanog je pod pravim uglom." + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "Reži dno." + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "Kada \"Ima izrezano\" je tacno, dno izrezanog je pod pravim uglom." + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Reži desno" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" +"Kada \"Ima izrezano\" je tacno, desno od izrezanog je pod pravim uglom." + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Reži ugao" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "Kada \"Ima Izrezano\" je istina, ugao izrezivanja je pravougaoni." + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "Å irina rezultujuće izrezane slike u CropUnits jedinicama." + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "Visina rezultujuće izrezane slike u CropUnits jedinicama." + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Jedinice rezanja" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "Jedinice za Rezanje Å irine i Rezanje visine. 0=pixeli, 1=inÄi, 2=cm" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "PodeÅ¡avanje \"Ekspozicija\".Raspon -4.0 do +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Zelena nijansa" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "PodeÅ¡avanje \"Zelena nijansa\". Raspon -100 do +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Zasićenost zelene boje" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "PodeÅ¡avanje \"Zasićenost zelene boje\". Raspon -100 do +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Ima Izrezano" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "Kada je taÄno, slika ima pravougaonasto rezanje." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Ima Postavke" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "Kad je taÄno, ne-zadane sirove postvake kamere." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "IzglaÄ‘ivanje svjetlosti" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "PodeÅ¡avanje \"IzglaÄ‘ivanje svjetlosti\". Raspon 0 do +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Sirovo Ime Fajla" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Naziv fajla neobradjenog fajla (nije kompletiran put )" + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Crvena nijansa" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "PodeÅ¡avanje \"Crvena nijansa\". Raspon -100 do +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Zasićenje crvene" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "\"Zasićenost crvene boje\".Raspon -100 do +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "PodeÅ¡avanje \"Zasićenost\". Raspon -100 do +100." + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Sijenke" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "PodeÅ¡avanje \"Sjene\". Raspon 0 do +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Nijansa sjene" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "PodeÅ¡avanje \"Nijansa sjene\". Raspon -100 do +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "PodeÅ¡avanje \"OÅ¡trina\". Raspon 0 do +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "PodeÅ¡avanje \"Toplina\". Raspon 2000 do 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Tinta" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "PodeÅ¡avanje \"Nijansa\". Raspon -150 do +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Kriva nijanse" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "Niz pokazivaca (Cijeli broj, Cijeli broj) definiraju \"Krivu nijanse\"" + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Naziv krive nijanse" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"Ime Krive Nijanse opisano sa ToneCurve. Jedno od: Linearno, Umjeren " +"Kontrast, Jak Kontrast, Prilagodjeno ili korisnicki kreirano ime." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Verzija Camera Raw dodatka." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "KoliÄina vinjete" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "PodeÅ¡avanje \"KoliÄina vinjetiranja\". Raspon -100 do +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "SrediÅ¡nja taÄka vinjete" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "PodeÅ¡avanje \"SrediÅ¡nja taÄka vinjetiranja\". Raspon 0 do +100.\"" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" +"PodeÅ¡avanje \"Bijeli balans\". Jedan od: Kao snimak, Automatski, Dnevna " +"svjetlost, OblaÄno, Hladno, Metalik, Fluorescentno, Sa bljeskom, Napredno" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "TIFF oznaka 256, 0x100. Å irina slike u pixelima." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Dužina slike" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "TIFF oznaka 257, 0x101. Visina slike u pixelima." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bitova po uzorku" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "TIFF oznaka 258, 0x102. Broj bita po komponenti na svakom kanalu." + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Kompresija" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "TIFF oznaka 259, 0x103. Å ema kompresije: 1=nekompresovano; 6=JPEG" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Fotometrijsko predstavljanje" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "TIFF oznaka 262, 0x106. Kompozicija pixela: 2=RGB; 6=YCbCr" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" +"TIFF oznaka 274, 0x112. Orijentacija:1 = 0. red na vrhu, 0. kolona lijevo 2 " +"= 0. red na vrhu, 0. kolona desno 3 = 0. red na dnu, 0. kolona desno 4 = 0. " +"red na dnu, o. kolona lijevo 5 = 0. red lijevo, 0. kolona na vrhu 6 = 0. red " +"desno, 0. kolona na vrhu 7 = 0. red desno, 0. kolona na dnu 8 = 0. red " +"lijevo, 0. kolona na dnu" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Uzorci po pixelu" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "TIFF oznaka 277, 0x115. Broj komponenti po pixelu." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Raspored Planara" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "TIFF oznaka 284, 0x11C. Podaci izgleda: 1 = zrnasto; 2 = planarno." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "YCbCr Sub Semplovanje" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" +"TIFF oznaka 530, 0x212. Omjer uzorkovanja komponenti signala boje: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "YCbCr položaj" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" +"TIFF oznaka 531, 0x213. Pozicija sjajnih naspram komponenti osvjetljenosti:1 " +"= usmjereno; 2 = co-položeno." + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "X Rezolucija" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" +"TIFF oznaka 282, 0x11A. Horizontalna rezolucija u pixelima po jedinici." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Y Rezolucija" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "TIFF oznaka 283, 0x11B. Vertikalna rezolucija u pixelima po jedinici." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Jedinica rezolucije" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"TIFF oznaka 296, 0x128. Jedinica upotrijebljena za Xrezoluciju i " +"Yrezoluciju. Vrijednost je jedna od: 2 = inÄi; 3 = centimetri." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Funkcija prijenosa" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" +"TIFF oznaka 301, 0x12D. Funkcija prenosa za sliku opisanu u tablicnom stilu " +"sa 3 * 256 unosa." + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Bijela taÄka" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "TIFF oznaka 318, 0x13E. Kromatizitet bijele taÄke." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Glavna nijansiranost" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "TIFF oznaka 319, 0x13F. Kromatizitet tri osnovne boje." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" +"TIFF oznaka 529, 0x211. Matrica koeficijenata za RGB do YCbCr transformacija." + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Referenca Crno-bijelo" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "TIFF oznaka 532, 0x214. Referenca vrijednosti taÄke crno-bijelo" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Datum i vrijeme" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" +"TIFF oznaka 306, 0x132 (osnovna) i EXIF oznaka 37520, 0x9290 (subsekund). " +"Datum i vrijeme stvaranja slike (nema vremenskih zona u EXIF), pohranjeni u " +"ISO 8601 formatu, nisu orginalni EXIF format. Ovo svojstvo ukljuÄuje " +"vrijednost za atributa EXIF SubSecTime. NAPOMENA: Ovaj objekt je pohranjen u " +"XMP kao XMP: ModifyDate." + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Opis slike" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"TIFF oznaka 270, 0x10E. Opis slike.Napomena: Ova osobina je pohranjena u XMP " +"kao dc:opis." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Kreiraj" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "TIFF oznaka 271, 0x10F. ProizvoÄ‘aÄ opreme za snimanje." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "TIFF oznaka 272, 0x110. Naziv modela ili broj opreme." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"TIFF tag 305, 0x131. Softver ili firmver koristen za generiranje slike. " +"Napomena: Ovaj objekat je pohranjen u XMP kao xmp:CreatorTool. " + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"TIFF oznaka 315, 0x13B. Vlasnik kamere, fotograf ili tvorac slike. Napomena: " +"Ovo svosjtvo je saÄuvano u XMP kao prva stavka u dc:creator nizu." + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"TIFF oznaka 33432, 0x8298. Informacija o autorskim pravima. Napomena: ovo " +"svojstvo je saÄuvano u XMP kao dc:rights." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Exif verzija" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "EXIF oznaka 36864, 0x9000. Broj EXIF verzije." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Verzija flashpix-a" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "EXIF oznaka 40960, 0xA000. Verzija FlashPixa-a." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "EXIF oznaka 40961, 0xA001. Informacija o prostoru boje" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Postavke komponenti" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"EXIF tag 37121, 0x9101. Konfiguracija komponenti u podatku: 4 5 6 0 (ako je " +"RGB kompresovan podatak), 1 2 3 0 (ostali sluÄajevi)." + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Kompresovani bitovi po pixelu" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"EXIF oznaka 37122, 0x9102. NaÄin kompresije upotrijebljen za kompresovanu " +"sliku je pokazan u jedinicama bita po pixelu." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Piksel X Dimenzija" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "EXIF oznaka 40962, 0xA002. Važeća Å¡irina, u pixelima." + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Piksel Y Dimenzija" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "EXIF oznaka 40963, 0xA003. Važeća visina slike, u pixelima." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "KorisniÄki komentar" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "EXIF oznaka 37510, 0x9286. Komentari od strane korisnika." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Povezana ZvuÄna Datoteka." + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"EXIF tag 40964, 0xA004. \"8.3\" naziv datoteke za povezanu audtio datoteku." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Izvorni datum i vrijeme" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"EXIF oznake 36867, 0x9003 (primarno) i 37521, 0x9291 (subsekunde). Datum i " +"vrijeme kad je originalna slika generirana, u ISO 8601 formatu. UkljuÄuje " +"EXIF SubSecTimeOrigina podatak." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Digitalizovani datum i vrijeme" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"EXIF oznaka 36868, 0x9004 (primarno) i 37522, 0x9292 (subsekunde). Datum i " +"vrijeme kad je slika pohranjena kao digitalni podatak, može biti isti kao i " +"DatumVrijemeOriginal ako je originalno pohranjeno u digitalnoj formi. " +"Pohranjeno u ISO 8601 formatu. UkljuÄuje EXIF SubSecVremenskiDigitaliziran " +"podatak." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "EXIF oznaka 33434, 0x829A. Vrijeme izlaganja u sekundama." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "F broj" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "EXIF oznaka 33437, 0x829D. F broj." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "EXIF oznaka 34850, 0x8822. Klasa programa iskoriÅ¡tena za izlaganje." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Spektralna osjetljivost" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "EXIF oznaka 34852, 0x8824. Spektralna osjetljivost za svaki kanal." + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "ISOOcjeneBrzine" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"EXIF oznaka 34855, 0x8827. ISO Brzina i ISO Å irina od ulaznog ureÄ‘aja kako " +"su specificirane u ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"EXIF tag 34856, 0x8828. Opto-elektroniÄka konverzija funkcije kako je " +"navedeno u ISO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"EXIF oznaka 37377, 0x9201. Brzina zatvaraÄa, jedinica je APEX. Pogledak " +"Aneex C od EXIF specifikacije." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "EXIF oznaka 37378, 0x9202. Otvor objektiva, jedinica je APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Vrijednost osvjetljenja" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "EXIF oznaka 37379, 0x9203. JaÄina osvjetljenja, jedinica je APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "EXIF oznaka 37380, 0x9204. Izloženost prednaponu, jedinica je APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Maksimalna Vrijednost Otvaranja" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "EXIF oznaka 37381, 0x9205. Najmanji F broj objekitva, u APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "EXIF oznaka 37382, 0x9206. Udaljenost do predmeta, u metrima." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "EXIF oznaka 37383, 0x9207. NaÄin mjerenja." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "EXIF oznaka 37384, 0x9208. Izvor svjetlosti." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" +"EXIF oznaka 37385, 0x9209. Bljeskava svjetla (bljeskalica) izvor podataka." + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "EXIF oznaka 37386, 0x920A. Fokusna dužina objektiva, u milimetrima." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Oblast subjekta" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"EXIF oznaka 37396, 0x9214. Lokacija i podruÄje glavnog predmeta u " +"cjelokupnom prizoru." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Stanje energije blica" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "EXIF oznaka 41483, 0xA20B. Bljeskava energija tijekom slikanja slike." + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Prostorni frekventni odziv" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"EXIF oznaka 41484, 0xA20C. Ulazni ureÄ‘aj tabela prostorne frekvencije i SFR " +"vrijednosti kako su specificirane u ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Rezolucija X fokusne ravni" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"EXIF oznaka 41486, 0xA20E. Horizontalna fokusna rezolucija, mjerena u " +"pixelima po jedinici." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Rezolucija Y fokusne ravni" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"EXIF oznaka 41487, 0xA20F. Vertikalna fokusna rezolucija, mjerena u pixelima " +"po jedinici." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Jedinica rezolucije žižne ravni" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" +"EXIF oznaka 41488, 0xA210. Jedinica koriÅ¡tena za FocalPlaneXResolution i " +"FocalPlaneYResolution." + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Položaj subjekata" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" +"EXIF oznaka 41492, 0xA214. Lokacija glavnog subjekta scene. Prva vrijednost " +"je horizontalni piksel i druga vrijednost je vertikalni piksel na kojem se " +"glavni subjekat pojavljuje." + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Indeks ekspozicije" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "EXIF oznaka 41493, 0xA215. Izlaganje indeksa ulaznog ureÄ‘aja." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Metod oÄitavanja" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "EXIF oznaka 41495, 0xA217. Tip senzora slike na ulaznom ureÄ‘aju." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "EXIF oznaka 41728, 0xA300. Pokazuje izvor slike." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Vrsta scene" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "EXIF oznaka 41729, 0xA301. Pokazuje tip scene." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "CFA Å¡ablon" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" +"EXIF oznaka 41730, 0xA302. Niz geometrijskih uzoraka smisla fotografije " +"filtera boje." + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "PrilagoÄ‘eno renderovanje" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"EXIF oznaka 41985, 0xA401. Pokazuje upotrebu posebog obraÄ‘ivanja slike." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"EXIF oznaka 41986, 0xA402. Pokazuje režim izlaganja postavljen kada je slika " +"snimljena." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"EXIF oznaka 41987, 0xA403. Pokazuje režim bijeli balans postavljen kada je " +"slika snimljena." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Odnos digitalno uvećanja" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"EXIF oznaka 41988, 0xA404. Ukazuje na omjer digitalnog uvećanja kad je slika " +"uslikana." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Žižna daljina na 35mm filmu" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"EXIF oznaka 41989, 0xA405. OznaÄava ekvivalent žariÅ¡ne daljine " +"pretpostavljene za 35mm fotoaparat, u mm. Vrijednost 0 znaÄi da je žariÅ¡ne " +"daljina je nepoznata. Imajte na umu da se ova oznaka razlikuje od " +"FocalLength oznake." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Tip uslikane fotografije" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "EXIF oznaka 41990, 0xA406. Ukazuje na tip scene kad je uslikano." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Kontrola pojaÄanja" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"EXIF oznaka 41991, 0xA407. Ukazuje na stupen ukupne prilagodbe pojaÄanja " +"slike." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"EXIF oznaka 41992, 0xA408. Ukazuje na smjer procesiranja primjenjenog " +"kontrasta od strane fotoaparata." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"EXIF oznaka 41993, 0xA409. Ukazuje na smjer saturacije procesiranja " +"primjenjenog od strane fotoaparata." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"EXIF oznaka 41994, 0xA40A. Ukazuje na smjer oÅ¡trine procesiranja " +"primjenjenog od strane fotoaparata." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Opis postavke ureÄ‘aja" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"EXIF oznaka 41995, 0xA40B. Ukazuje na informaciju uvjeta slikanja slike za " +"odreÄ‘ene modele fotoaparata." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Opseg udaljenosti subjekta" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "EXIF oznaka 41996, 0xA40C. Ukazuje na udaljenost do subjekta." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "Jedinstveni ID slike" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"EXIF oznaka 42016, 0xA420. Identifikator oznaÄen jedinstveno na svakoj " +"slici. Snimljeno je kao 32 znak ASCII string, ekvivalentno heksadecimalnoj " +"notaciji i 128-bitnoj fiksnoj dužini." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "Oznaka GPS verzije" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" +"GPS oznaka 0, 0x00. Decimalno kodiranje za svaki od Äetiri bita sa periodom " +"separatora. Trenutna vrijednost je \"2.0.0.0\"." + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS geografska Å¡irina" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" +"GPS oznaka 2, 0x02 (pozicija) i 1, 0x01 (Sjever/Jug). Ukazuje na Å¡irinu." + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS geografska dužina" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" +"GPS oznaka 4, 0x04 (pozicija) i 3, 0x03 (Istok/Zapad). Ukazuje na dužinu." + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "GPS Referenca Nadmorske Visine" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" +"GPS oznaka 5, 0x05. Ukazuje da li je nadmorska visina iznad ili ispod nivoa " +"mora." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPS nadmorska visina" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "GPS oznaka 6, 0x06. Pokazuje visinu u metrima." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "GPS Vremenski PeÄat" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" +"GPS oznaka 29 (datum), 0x1D, i, i GPS oznaka 7 (vrijeme), 0x07. Vremenski " +"pecat GPS podatka u koordiniranom univerzalnom vremenu. Napomena: " +"GPSVremenskiPecat oznaka je nova u EXIF 2,2.GPS vremenski pecat u EXIF 2,1 " +"ne ukljuÄuje datum. Ako nije prisutna, komponentu datuma za XMP treba uzeti " +"iz EXIF: DateTimeOriginal, ili ako i to takodjer nedostaje iz exif:" +"DateTimeDigitized. Ako datum nije dostupan ne pisati exif:GPSTimeStamp XMP-" +"u." + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "GPS Sateliti" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "GPS oznaka 8, 0x08. Informacije o satelitu, format je nespecificiran." + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "GPS Status" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "GPS oznaka 9, 0x09. Status GPS prijemnika u vrijeme kreiranja slike." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS Modalitet Mjerenja" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "GPS oznaka 10, 0x0A. GPS modalitet mjerenja, tip Tekst." + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "GPS oznaka 11, 0x0B. Stepen preciznosti za GPS podatke." + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "GPS Brzina Reference" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "GPS oznaka 12, 0x0C. Jedinice koriÅ¡tene za mjerenje brzine." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPS brzina" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "GPS oznaka 13, 0x0D. Brzina kretanja GPS prijemnika." + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "GPS Traka Referance" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "GPS oznaka 14, 0x0E. Referenca na smjer kretanja." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "GPS Traka" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"GPS oznaka 15, 0x0F. Smjer GPS kretanja, raspon vrijednosti od 0 do 359.99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "GPS Referenca Smjera Slike" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "GPS oznaka 16, 0x10. Referenca na smjer slike." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "GPS pravac slike" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"GPS oznaka 17, 0x11. Smjer slike kad je uslikana, raspon vrijednosti od 0 " +"do 359.99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "GPS Datum Mapa" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "GPS oznaka 18, 0x12. Podaci geodetskog premjeravanja." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "GPS Å irina OdrediÅ¡ta" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" +"GPS oznaka 20, 0x14 (pozicija) i 19, 0x13 (Sjever/Jug). Ukazuje na Å¡irinu " +"odrediÅ¡ta." + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "GPS geografska dužina OdrediÅ¡ta" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" +"GPS oznaka 22, 0x16 (pozicija) i 21, 0x15 (Istok/Zapad). Ukazuje na dužinu " +"odrediÅ¡ta." + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "GPS Referenca Smjera OdrediÅ¡ta" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "GPS oznaka 23, 0x17. Referenca za smjer kretanja." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "GPD Smjer OdrediÅ¡ta" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "GPS oznaka 24, 0x18. Smjer odrediÅ¡ta, vrijednosti od0 do 359.99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "Referenca udaljenosti ka GPS odrediÅ¡tu" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "GPS oznaka 25, 0x19. Jedinice koriÅ¡tene za brzinu mjerenja." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "GPS Udaljenost OdrediÅ¡ta" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "GPS oznaka 26, 0x1A. Udaljenost do odrediÅ¡ta." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "GPS Metod Procesiranja" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" +"GPS oznaka 27, 0x1B. Niz karaktera u koji je snimljeno ime metode koriÅ¡tene " +"za pronalazak lokacije." + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "GPS Informacije PodruÄja" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "GPS oznaka 28, 0x1C. Znakovni string spaÅ¡ava naziv GPS podruÄja." + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "GPS Diferencijal" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"GPS oznaka 30, 0x1E. Ukazuje na to da li je korekcija diferencijala bila " +"primjenjena na GPS prijemnik." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "Opis leće koriÅ¡tene za slikanje. Na primjer, \"70-200 mm f/2.8-4.0\"." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "Serijski broj kamere ili tijela kamere koriÅ¡tene za slikanje." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Kreatorov Kontakt Info" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" +"Kreatorove kontakt informacije osiguravaju sve potrebne informacije o " +"dolasku u kontakt sa kreatorom ovog novog objekta i obuhvataju set pod-" +"svojstava za pravilno adresiranje." + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Kontakt Info-Adresa" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"Adresni dio informacije o kontaktu. Sastoji se od dodatnog naziva tvrtke i " +"svih potrebnih informacija kako bi pronaÅ¡li zgradu ili poÅ¡tansko sanduÄe " +"kojem bi posta trebala biti poslata." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Kontakt Info-Grad" + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Kreatorov Kontakt Info" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Kontakt Info-Država/Provincija" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Kontakt Info-Država/Provincija" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Kontakt Info-PoÅ¡tanski Kod" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Kontakt Info-Država" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Kreatorov Kontakt Info" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Kontakt Info-Email" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "Kontakt informacija dijela email adrese." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Kontakt Info-Telefon" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Kreatorov Kontakt Info" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Kontakt Info-Web URL" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Kreatorov Kontakt Info" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Intelektualni Žanr" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" +"Opisuje prirodu, intelektualne ili žurnalistićke karakteristice novog " +"objekta, ne baÅ¡ njegov sadržaj." + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "IPTC Scena" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" +"Opisuje scenu sadržaja slike. Specificira jedan ili viÅ¡e uvjeta IPTC \"Scene-" +"NewsCodes\". Svaka Scena je predstvaljena kao string od 6 znakova u " +"neureÄ‘enoj listi." + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "IPTC Kod Subjekta" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" +"OdreÄ‘uje jedan ili viÅ¡e subjekata iz IPTC \"Subject-NewsCodes\" taksonomije " +"da kategoriziraju sadržaj. Svaki subjekt je predstavljen kao niz od 8 " +"znamenki u jednu neureÄ‘enu listu." + +#: src/properties.cpp:682 +#, fuzzy +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" +"Naziv lokacije na koju se sadržaj odnosi – bilo da je mjesto prikazano u " +"vizualnim medijima ili navedeno u tekstualnom ili zvucnom mediju. To ime " +"lokacije mogao bi biti ili naziv “pod-lokacije†ili ime poznatog mjesta ili " +"(prirodnog) spomenika izvan grada. U smislu “pod-lokacijeâ€â€“ ovaj element je " +"na Äetvrtom nivou geografske hijerarhije odozgo prema dole." + +#: src/properties.cpp:687 +#, fuzzy +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" +"Sadrzaj koda drzave je fokusiran na -- ili je drzava prikazana u vizuelom " +"mediju ili je navedena u tekstualnom ili zvucnom mediju. Ovaj element je na " +"vrhu/prvom nivou odozgo prema dole geografskoj hijerarhiji. Sifra treba biti " +"uzeta iz ISO 3166 dva ili tri slova. Puni naziv drzave treba ici u \"Drzava" +"\" element." + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "Dodatne model informacije" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" +"Informacije o nacionalnosti i drugim Äinjenicama modela u objavljenom modelu " +"slike." + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "Kod istaknute organizacije." + +#: src/properties.cpp:697 +#, fuzzy +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" +"Kod iz provjerenog rjeÄnika za identifikaciju organizacije ili kompanije " +"koja je istaknuta na slici." + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "Kontrolirani Uvjet Vokabulara" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" +"Uvjet za opisivanje sadržaja slike vrijednosšću iz Kontroliranog Vokabulara." + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "GodiÅ¡te modela" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" +"Starost ljudskog modela u trenutku kad je ova slika snimljena na objavljenom " +"modelu slike." + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "Naziv istaknute organizacije" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "Naziv organizacije ili kompanije koja je istaknuta na slici." + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "Osoba prikazana" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "Ime osobe prikazane na slici." + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "Digitalni identifikator Slike" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" +"Globalno jedinstveni identifikator za ove digitalne slike. Stvoren je I " +"primjenjuje se od strane kreatora digitalne slike u vrijeme njegovog " +"nastanka. Ova vrijednost ne smije se mijenjati nakon tog vremena." + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "FiziÄki tip izvorne slike" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "Tip izvorne digitalne datoteke." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "DogaÄ‘aj" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "Imena ili opisi specifiÄnog dogaÄ‘aja na kojem je slika snimljena." + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "Maksimalno dostupna visina." + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"Maksimalna dostupna visina u pikselima izvorne fotografije s koje je ova " +"fotografija izvedena smanjenjem." + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "Maksimalno dostupna Å¡irina" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"Maksimalna dostupna sirina u pikselima izvorne fotografije s koje je ova " +"fotografija izvedena smanjenjem." + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "Unos registra" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" +"I oznaka elementa registra i oznaka organizacije registra da bi se " +"zabilježila registracija digitalne slike u registru.." + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "Unos registra - Identifikator stavke" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" +"Jedinstveni identifikator izraÄ‘en od strane registra i primjenjen od strane " +"stvaratelja digitalne slike. Ova vrijednost ne smije se mijenjati nakon Å¡to " +"je primijenjena. Ovaj identifikator je povezan s odgovarajućom Organizacijom " +"Identifikacionih Registara." + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "Unos registra - Identifikator organizacije" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" +"Identifikator za registar koje je izdalo odgovarajući registar ID " +"fotografije." + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "IPTC polja posljednja izmijenjena." + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" +"Datum i opcionalno vrijeme kada su bilo koja od IPTC polja metapodataka " +"slike posljednja izmijenjena." + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "Lokacija prikazana" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "Lokacija prikazana na slici." + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "Lokacija kreirana." + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "Lokacija gdje je slika snimljena." + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Lokacija - Grad" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Ime grada lokacije." + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "ISO - kod lokacije-države" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "ISO kod države lokacije." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Lokacija - Ime države" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "Ime države lokacije." + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "Lokacija - Provincija / Država" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "Ime podregije države - provincija ili mjesto - lokacije." + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "Lokacija - Podlokacija" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" +"Ime podlokacije. Ovo ime sublokacije moglo bi biti ili naziv sublokacije po " +"gradu ili naziv po dobro poznatoj lokaciji ili (prirodnom) spomeniku van " +"grada." + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "Lokacija - Svjetska zona" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "Naziv svjetske zone ili lokacije." + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "UmjetniÄko djelo ili objekat na slici" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "Skup podataka o umjetniÄkom djelu ili objektu sa slike." + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "UmjetniÄko djelo - Zapažanje autorskih prava" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" +"Sadrži sve potrebne obavijesti o autorskim pravima za podnoÅ¡enje zahtjeva " +"intelektualnog vlasniÅ¡tva za umjetniÄka djela ili objekt na slici, i treba " +"identificirati sadaÅ¡njeg vlasnika autorskih prava ovog djela povezanog s " +"pravima intelektualnog vlasniÅ¡tva." + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "UmjetniÄko djelo ili objekat - Tvorac" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" +"Sadrži ime umjetnika koji je kreirano umjetniÄko djelo ili objekat sa slike. " +"U sluÄajevima gdje umjetnik ne bi mogao ili ne bi trebao biti identificiran " +"naziv kompanije ili organizacije bi bio prikladan." + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "UmjetniÄko djelo ili objekt - Datum kreiranja" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" +"OznaÄava datum i vrijeme kada je umjetniÄko djelo ili predmet na slici " +"stvoren. Ovo se odnosi na umjetniÄka djela ili predmete s pripadajućim " +"pravima intelektualnog vlasniÅ¡tva." + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "UmjetniÄko djelo ili objekat - Izvor" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" +"Organizacija drži i registruje umjetniÄko djelo ili predmet na slici u svrhe " +"skladiÅ¡tenja iste." + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "UmjetniÄko djelo ili objekat - Izvorni popisni broj" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" +"Broj inventara izdan od strane organizacije ili tijela drži i registrira " +"umjetniÄko djelo ili predmet na slici." + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "UmjetniÄko djelo ili objekat - Natpis" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "Refererenca za umjetniÄko djelo ili objekat sa slike." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "Skeniraj sa filma" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "Skeniraj iz providnog (ukljuÄujući slajd)" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "Skeniraj sa Å¡tampe" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "Kamera RAW" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "Kamera TIFF" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "Kamera JPEG" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "PLUS Verzija" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "Broj verzije PLUS standarda na mjestu za vrijeme transakcije." + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Licencirani" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" +"Stranka ili stranke kojima je licenca odobrena od strane licencora pod " +"licencom transakcije." + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "ID licenciranog" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "Opcionalni PLUS - ID identificira svakog licensa." + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "Ime licenciranog." + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "Imena svakog od licenciranih" + +#: src/properties.cpp:746 +msgid "End User" +msgstr "Krajnji Korisnik" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "Stranka ili stranke u konaÄnici koriste sliku pod licencom." + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "ID krajnjeg korisnika" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "Fakultativni PLUS-ID identificira svakog krajnjeg korisnika." + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "Ime Krajnjeg Korisnika" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "Ime svakog Krajnjeg Korisnika" + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "Licensor" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "Stranka ili stranke odobravaju licencu za korisnika licence." + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "ID licensora" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "Opcionalni PLUS - ID identificira svakog licensora." + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "Ime licensora" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "Ime svakog licensora." + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "Adresa licensora" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "Ulica licensora" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "Detalji o adresi licensora" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "Dodatni detalji o e-mail adresi licensora." + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "Grad licensora" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "Naziv grada licensora." + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "Država ili provincija licensora." + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "Naziv države ili provincije licensora." + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "PoÅ¡tanski kod licensora" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "PoÅ¡tanski kod ili Zip kod licensora" + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "Država licensora" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "Naziv države licensora." + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "Telefon licensora tip 1" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "Telefon licensora tip 1." + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "Telefon licensora 1" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "Licencor Broj Telefona 1" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "Licencor Tip Telefona 2" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "Licencor Tip Telefona 2" + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "Licencor Telefon 2" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "Licencor Broj Telefona 2" + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "Licencor Email" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "Licencor Email adresa." + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "Licencor URL" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "Licencor world wide web adresa." + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "Licencor BiljeÅ¡ke" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" +"Dopunski podaci za uporabu u identificiranju i kontaktiranju licencora / s." + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "PLUS Media Sumarni Kod" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" +"PLUS-standardizirani alfanumeriÄki kod niza sumirajući medijske obiÄaje " +"ukljuÄene u dozvoli." + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "Startni Datum Licence" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "Datum kad licenca poÄne djelovati." + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "Datum Isteka Licence" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "Datum kad licenca istiÄe." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "OgraniÄenja medije" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" +"Prepreke ograniÄavaju opseg PLUS Media koriÅ¡tenja podataka navedenim u " +"licenci za jedinstveno imenovan podatak ili podatak koji nije imenovan u " +"PLUS Media Matrixu." + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "Zona ograniÄenja" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" +"Prepreke ograniÄavaju opseg geografskoj raspodjeli za odreÄ‘ene gradove, " +"države, pokrajine ili druga podruÄja kako bi se ukljuÄili ili iskljuÄili iz " +"PLUS regija navedenih u “Media Usages†navedenoj u licenci." + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "OgraniÄenja Proizvoda i Usluge" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" +"Prepreke ograniÄavaju koriÅ¡tenje slike za promociju udruženja s imenom " +"proizvoda ili usluge." + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "OgraniÄenja Slikovne Datoteke" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" +"OgraniÄenja pri promjeni imena slikovne datotek, metapodatka ili tipa " +"datoteke." + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "OgraniÄenja Promjene Slike" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" +"OgraniÄenja na promjene slike pri rezanju, okretanju, retuÅ¡iranju, " +"kolorizaciji, de-kolorizaciji ili spajanju." + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "OgraniÄenja Dupliranja Slike" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "OgraniÄenja na kreiranje duplikata slike." + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "Model Status Izdanja" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" +"Sažima dostupnost i opseg modela izdanja dopuÅ¡tajući koriÅ¡tenje sliÄnosti " +"osoba koje se pojavljuju u fotografiji." + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "Oznaka verzije modela" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "Opcionalni identifikator povezan sa svakim izdatim modelom." + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "Upozorenje na maloljetnost modela" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" +"Starost najmlaÄ‘eg modela prikazanog na slici, u vrijeme kada je slika " +"napravljena." + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "Status Izdanja VlasniÅ¡tva" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" +"Sažima dostupnost i opseg modela izdanja dopuÅ¡tajući koriÅ¡tenje sliÄnosti " +"osoba koje se pojavljuju u fotografiji." + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "Izdanje VlasniÅ¡tva ID" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "Izborni identifikator dodjeljen svakom Izdanju VlasniÅ¡tva." + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "Druga OgraniÄenja" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "Dodatna ograniÄenja na licencu." + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "Potrebna kreditna linija" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "Imenovanje zahtjeva, ako ih ima." + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "Upozorenje Sadržaj za Odrasle" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" +"Upozorenje ukazuje na prisutnost sadržaja koji nije prikladan za " +"maloljetnike." + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "Drugi Zahtjevo Licence" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "Dodatni zahtjevi licence." + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Uvjeti i Stanja Tekst" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Uvjeti i Stanja primjenjena na licencu." + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "Uvjeti i Stanja URL" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "URL za Uvjete i Stanja primjenjena na licencu." + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Drugi Uvjeti Licence" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "Dodatni uvjeti licence" + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "Identificira tip dostavljene slike." + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "ID slika licensora" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "Opcionalni identifikator dodijeljen slici od strane licensora." + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "Ime Slikovne Datoteke Pri Prispjeću" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "Naziv slikovne datoteke dostavljen licensu za upotrebu pod licencom." + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "Format Slikovne Datoteke Pri Prispjeću" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "Format slikovne datoteke dostavljene licensu za upotrebu pod licencom." + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "VeliÄina Slikovne Datoteke Pri Prispjeću" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "Velicina slikovne datoteke dostavljene licensu." + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "Status Autorskih Prava" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "Status autorskih prava slike." + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "Broj Registracije Autorskih Prava" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" +"Broj Registracije Autorskih Prava, ako postoji, primjeni na licenciranu " +"sliku." + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "Datum Prve Publikacije" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "Datum na koji je slika prvi put publikovana." + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "Vlasnik Autorskih Prava" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "Vlasnik vlasnika autorskih prava u licenciranoj slici." + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "ID Vlasnika Autorskih Prava" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "Izborni PLUS-ID identificirajući svakog Vlasnika autorskih prava." + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "Ime Vlasnika Autorskih Prava" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "Ime Vlasnika Autorskih Prava" + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "ID Slike Vlasnika Autorskih Prava" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" +"Izborni identifikator dodjeljen od strane Vlasnika Autoskih Prava slici." + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Kreator Slike" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "Kreator/i slike." + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "ID Kreatora Slike" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "Izborni PLUS-ID identificira svakog Kreatora Slike." + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "Kreator Slike Ime" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "Ime Kreatora Slike" + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "Kreator Slike Slika ID" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "Izborni identifikator dodjeljen od Kreatora Slike slici." + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "DobavljaÄ Slike ID" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "Izborni PLUS-ID identifikuje DobavljaÄa slike." + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "DobavljaÄ Slike Ime" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "Ime DobavljaÄa Slike" + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "DobavljaÄ Slike Slika ID" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "Izbroni identifikator dodijeljen od strane DobavljaÄa Slike slici." + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "ID slike licensa." + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "Opcionalni identifikator dodijeljen slici od strane licensa." + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "BiljeÅ¡ke o slici licensa" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "BiljeÅ¡ke dodane od strane licensa." + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "Drugi podaci slike" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "Dodatni podaci o slici" + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "Licenca ID" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "Izborni PLUS-ID dodjeljen od Licencora za Licencu." + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "Licencora Transacija ID" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "Identifikator dodijeljen od strane licensora za" + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "ID transakcije licensa." + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" +"Identifikator dodjeljen licencom za licencine reference i internu upotrebu." + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "Projekat Dozvole Referenca" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "Naziv reference projekta ili opis dodijeljen od strane licensa." + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "Datum transakcije licensa" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "Datum transakcije licensa" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Ponovna upotreba" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" +"OznaÄava da li je licenca ponavljana ili je poÄetna licenca. Ponovna " +"upotreba može zahtijevati da dozvola pohranjena u datotekama prethodno " +"dostavljena kupacu bude unaprjeÄ‘ena." + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "Drugi Lincencirani Dokumenti" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "Referentni podaci za dodatnim dokumentima povezanim s licencom." + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "Ostale informacije o licensu" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "Dodatne lincencirane informacije" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "Opciono polje koje koristi davalac lience diskrecijom." + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "PrilagoÄ‘eno 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "PrilagoÄ‘eno 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "PrilagoÄ‘eno 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "Opciono polje koje koristi primalac lience diskrecijom." + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "PrilagoÄ‘eno 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "PrilagoÄ‘eno 8" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "PrilagoÄ‘eno 9" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "PrilagoÄ‘eno 10" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "Poterbno upozorenje da je sadržaj namijenjen odraslim" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "Nije potrebnoa" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "ZaÅ¡tićeno" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "Javno vlasniÅ¡tvo" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "Susjedmni kredit na sliku" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "Kredit u PodruÄju Kredita" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "Kredit Slike" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "Ne zahtjeva" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "Nema kolorizacije" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "Nema rezanja" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "Nema dekolorizacije" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "Nema okretanja" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "Nema spajanja" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "Nema dotjerivanja" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "Duplikacija samo po potrebi pod licencom" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "Nema ograniÄenja duplikacije" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "Nema duplikacije" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "Održavanja Imena Fajla" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "Održavanje Tipa Fajla" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "Održavanja ID-a u Imenu Fajla" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "Održavanje Metapodatka" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "Windows Bitmapa (BMP)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Digitalni Negativ (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "Enkapsulirani PostScript (EPS)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "GrafiÄki format za razmjenu (GIF)" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "JPEG format za razmjenu (JPG, JIF, JFIF)" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "Macintosh slika (PICT)" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "Prenosna mrežna grafika (PNG)" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "Photoshop Dokument (PSD)" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "Sirovi format slike" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "OznaÄeni format slike (TIFF)" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "Windows medijska fotografija (HD foto)" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "Preko 50 MB" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "Do 1 MB" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "Do 10 MB" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "Do 30 MB" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "Do 50 MB" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "Ilustrovana slika" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "Multimedija ili složena slika" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Fotografija" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "Ćelija" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "FAX" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "Pejdžer" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "Posao" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "Nepoznata starost" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "Starost 25 ili viÅ¡e" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "Starost 24" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "Starost 23" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "Starost 22" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "Starost 21" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "Starost 20" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "Starost 19" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "Starost 18" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "Starost 17" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "Starost 16" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "Starost 15" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "Starost 14 ili manje" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "Nije primjenjivo" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "NeograniÄena izdavanja modela" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "OgraniÄena ili nedovrÅ¡ena izdavana modela" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "NeograniÄena izdanja svojstava" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "OgraniÄena ili nekompletna izdanja svojstava" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "Upotreba ponavljanja" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "Fiktivna Identifikacija" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Status" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "Notacija Äini sliku jedinstvenom" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Ljudi" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "KatalogSetovi" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "Opisni markeri kataloga stavki po sadržaju" + +#: src/properties.cpp:978 +msgid "RegionInfo" +msgstr "RegionInfo" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "Korijen metapodataka za Microsoft Photo oznaÄaavnje ljudi" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "Regioni" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "Sadrži oznake regiona/osoba" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "DateRegionsValid" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "Datum kada je zadnji region kreiran" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "PersonDisplayName" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "Ime osobe u datom pravougaoniku" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "Pravougaonik" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "Pravougaonik koji identificira osobu unutaar fotografije" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "PersonEmailDigest" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" +"SHA-1 kriptovana kontrolna suma Windows Live e-mail adrese za datu osobu" + +#: src/properties.cpp:994 +#, fuzzy +msgid "Person LiveId CID" +msgstr "PersonLiveCID" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "Predstava kao predznaÄeni decimalni broj za Windows Live CID te osobe" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "AppliedToDimensions" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "Å irina i visina slike kada se smijeÅ¡taju regionski podaci" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "RegionList" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "Lista regionskih struktura" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "PodruÄje" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "Namjena regiona (Lice|Životinja|Fokus|BarCode)" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "Ime / kratak opis sadržaja regiona slike" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" +"Scenario upotrebe za dato podruÄje fokusa (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "FocusUsage" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "BarCodeValue" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "Vrijednost dekodiranog Bar koda" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "ProÅ¡irenja" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "Svako XMP svojstvo najviÅ¡eg nivoa koje opisuje sadržaj regiona" + +#: src/properties.cpp:1015 +#, fuzzy +msgid "Main structure containing keyword based information" +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Lista regionskih struktura" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "KljuÄne rijeÄi" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Lista regionskih struktura" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Panorama naÄin" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Hvatanje podataka" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Procesirajući Softver" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Vrsta objekta" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "Udaljenost subjekta u metrima." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Datum Prve Publikacije" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Datum snimka" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "" +"Datum i vrijeme kada je orginalni video generisan, u ISO 8601 formatu. " + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "NaÄin ekspozicije" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Å irina izvorne slike" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Visina izvorne slike" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Jedinstveni model aparata" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +msgid "Archival Location" +msgstr "Arhivska lokacija" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "Informacija o arhivskoj lokaciji" + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "Aranžer" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "Informacija o aranžeru." + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "KljuÄne rijeÄi" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Information about the Arranger Keywords." +msgstr "Informacija o aranžeru." + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Omjer video pixela" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" +"Omjer Å irina : Visina,pomaže da se utvrdi kako će se video prikazati na " +"ekranu" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Omjer video pixela" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Opis slike" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Sirovo Ime Fajla" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +msgid "Brightness setting." +msgstr "Postavka svjetlosti." + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Redoslijed bajtova" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Informacije o autorskim pravima." + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Minimalna blenda" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "Å irina video snimka u pikselima" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Visina AF podruÄja" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "Maksimalan otvor na minimalnom fokusu" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Video kodek postavke" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +#, fuzzy +msgid "Video Codec Decode Info" +msgstr "Opis Video kodeka" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +msgid "Video Codec Description" +msgstr "Opis Video kodeka" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "textualni opis podataka objekta" + +#: src/properties.cpp:1076 +msgid "Video Codec Information" +msgstr "Informacija o Video kodeku" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +#, fuzzy +msgid "Video Codec Download URL" +msgstr "Opis Video kodeka" + +#: src/properties.cpp:1077 +#, fuzzy +msgid "Video Codec Download URL." +msgstr "Opis Video kodeka" + +#: src/properties.cpp:1078 +msgid "Video Codec Settings" +msgstr "Video kodek postavke" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Log Komentar" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "Informacije o komentaru." + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Kompresija" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Kompresija" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +#, fuzzy +msgid "Information about the Composer." +msgstr "Informacije o komentaru." + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Windows KljuÄne RijeÄi" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Information about the Composer Keywords." +msgstr "Informacije o verziji kompresora." + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Kompresija" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Video kompresor" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Video kompresor" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +msgid "Compressor Version" +msgstr "Verzija kompresora" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "Informacije o verziji kompresora." + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Tip kamere" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Omjer kompresije" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"EXIF oznaka 41992, 0xA408. Ukazuje na smjer procesiranja primjenjenog " +"kontrasta od strane fotoaparata." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "Kostimograf" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Datum unosa" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "Reži dno." + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "Broj pixela koji treba odstraniti od dna." + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "Izreži Lijevo" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "Broj piksela koji treba odsraniti sa lijeve strane." + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "Reži desno" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "Broj piksela koji treba odsraniti sa desne strane." + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "Izreži Vrh" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "Broj piksela koji treba odsraniti sa vrha." + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Trenutni ICC Profil" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "XML paket" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" +"Datum i vrijeme kada je orginalni video generisan, u ISO 8601 formatu. " + +#: src/properties.cpp:1111 +#, fuzzy +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"EXIF oznaka 36868, 0x9004 (primarno) i 37522, 0x9292 (subsekunde). Datum i " +"vrijeme kad je slika pohranjena kao digitalni podatak, može biti isti kao i " +"DatumVrijemeOriginal ako je originalno pohranjeno u digitalnoj formi. " +"Pohranjeno u ISO 8601 formatu. UkljuÄuje EXIF SubSecVremenskiDigitaliziran " +"podatak." + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Datum vrijeme originalno" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Reprodukcija Boje" + +#: src/properties.cpp:1114 +#, fuzzy +msgid "Video Track Default On" +msgstr "Dužina trajanja video snimka" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"EXIF oznaka 41988, 0xA404. Ukazuje na omjer digitalnog uvećanja kad je slika " +"uslikana." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "ProÅ¡irenja" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "Informacije o dimenzijama video okvira." + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Usmjeriti" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "Informacije o direktoru." + +#: src/properties.cpp:1118 +#, fuzzy +msgid "Video Display Unit" +msgstr "Snimanje zaslona" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "distribuira" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "distribuira, npr. ime osobe ili organizacije." + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Vrsta fokusa" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "snimana verzija" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Verzija modela" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Trajanje medijske datoteke . Mjereno u mili sekundama." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "EBML Verzija" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +msgid "EBML Version" +msgstr "EBML Verzija" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "UreÄ‘ivani Blok 1/Jezik" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "Informacije o ureÄ‘ivanju/Jezik" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "UreÄ‘ivani Blok 2/Jezik" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "UreÄ‘ivani Blok 3/Jezik" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "UreÄ‘ivani Blok 4/Jezik" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "UreÄ‘ivani Blok 5/Jezik" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "UreÄ‘ivani Blok 6/Jezik" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "UreÄ‘ivani Blok 7/Jezik" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "UreÄ‘ivani Blok 8/Jezik" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "UreÄ‘ivani Blok 9/Jezik" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "Uredio" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "Uredio, npr ime osobe ili organizacije." + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +#, fuzzy +msgid "Encoded By" +msgstr "Uredio" + +#: src/properties.cpp:1138 +#, fuzzy +msgid "Encoded By, i.e. name of person or organization." +msgstr "Uredio, npr ime osobe ili organizacije." + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +#, fuzzy +msgid "Encoded Pixels width in pixels" +msgstr "Å irina video snimka u pikselima" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +#, fuzzy +msgid "Information about the Encoder." +msgstr "Informacija o aranžeru." + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Alternativni Timecode" + +#: src/properties.cpp:1143 +#, fuzzy +msgid "Engineer, in most cases name of person." +msgstr "TehniÄar, ime osobe u većini sluÄajeva." + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "informacije o opremi" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "Informacije o opremi koriÅ¡tenoj za snimanje videa." + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "PodeÅ¡vanje kompenzacije ekspozicije" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Program ekspozicije" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Vrijeme ekspozicije, dato u sekundama." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "Opis Video kodeka" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID" +msgstr "Naziv Fajla" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Naziv Fajla" + +#: src/properties.cpp:1151 +msgid "File Length" +msgstr "Dužina datoteke" + +#: src/properties.cpp:1151 +msgid "File length." +msgstr "Dužina datoteke." + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Naziv datoteke" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name or Absolute File Path" +msgstr "Apsolutni Vrhunac Puta Audio Datoteke" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "VeliÄina datoteke" + +#: src/properties.cpp:1153 +msgid "File Size, in MB" +msgstr "VeliÄina datoteke, u MB" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Tip Poddatoteke" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "Ekstenzija datoteke ili tip datoteke" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "Primijenjene postavke efekta filtera" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "EXIF oznaka 37386, 0x920A. Fokusna dužina objektiva, u milimetrima." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Ukupni broj fremova" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "Ukupni broj okvira u videu." + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Visina AF podruÄja" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Height of frames in a video" +msgstr "Ukupni broj okvira u videu." + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Å irina AF podruÄja" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Width of frames in a video" +msgstr "Ukupni broj okvira u videu." + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "GPS koordinate" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "Informacije o GPS koordinatama." + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "Datumska oznaka GPS podataka, " + +#: src/properties.cpp:1171 +#, fuzzy +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" +"GPS oznaka 17, 0x11. Smjer slike kad je uslikana, raspon vrijednosti od 0 " +"do 359.99." + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "GPS oznaka 16, 0x10. Referenca na smjer slike." + +#: src/properties.cpp:1173 +#, fuzzy +msgid "(North/South). Indicates latitude." +msgstr "" +"GPS oznaka 2, 0x02 (pozicija) i 1, 0x01 (Sjever/Jug). Ukazuje na Å¡irinu." + +#: src/properties.cpp:1174 +#, fuzzy +msgid "(East/West). Indicates longitude." +msgstr "" +"GPS oznaka 4, 0x04 (pozicija) i 3, 0x03 (Istok/Zapad). Ukazuje na dužinu." + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "GPS oznaka 18, 0x12. Podaci geodetskog premjeravanja." + +#: src/properties.cpp:1176 +#, fuzzy +msgid "Satellite information, format is unspecified." +msgstr "GPS oznaka 8, 0x08. Informacije o satelitu, format je nespecificiran." + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "Datumska oznaka GPS podataka, " + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Mod Zagrade" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +#, fuzzy +msgid "Grouping" +msgstr "Nema rezanja" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "Informacije o grupisanju." + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Opis slike" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Tip skale" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Handler Vendor ID" +msgstr "ID proizvoÄ‘aÄa" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "ProizvoÄ‘aÄ objektiva." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Visina Senzora" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +#, fuzzy +msgid "Video height in pixels" +msgstr "Å irina video snimka u pikselima" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "Postavke podeÅ¡avanja slika" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +#, fuzzy +msgid "Information Banner Image." +msgstr "Informacija o aranžeru." + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "Info URL" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Information Banner URL." +msgstr "Informationi URL." + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Informationi URL." + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "Dodatne informacije o filmu." + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "Info Text" + +#: src/properties.cpp:1192 +msgid "Information Text." +msgstr "Informacioni Text." + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "Info URL" + +#: src/properties.cpp:1193 +msgid "Information URL." +msgstr "Informationi URL." + +#: src/properties.cpp:1194 +#, fuzzy +msgid "Information about the ISO Setting." +msgstr "Informacije o ISRC kodu." + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "ISRC kod" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "Informacije o ISRC kodu." + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Podaci objektiva" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Video Junk data" +msgstr "Å irina video zapisa" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Jezik" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Žićna daljina" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Trajanje multimedijalne datoteke." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Vrta leća" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Osvijetljenost." + +#: src/properties.cpp:1201 +msgid "Lightness." +msgstr "Osvijetljenost." + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Informacije o lokaciji." + +#: src/properties.cpp:1202 +msgid "Location Information." +msgstr "Informacije o lokaciji." + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "URL logo ikone" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "URL logotipa" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Model opreme" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "ProizvoÄ‘aÄ opreme za snimanje" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Tip kamere" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Maker Note Type of the camera." +msgstr "SFR kamere." + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "IzraÄ‘ivaÄBiljeÅ¡ki Verzija" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "IzraÄ‘ivaÄBiljeÅ¡ki Verzija" + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "URL proizvoÄ‘aÄa" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "ProizvoÄ‘aÄ objektiva." + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "EXIF oznaka 37381, 0x9205. Najmanji F broj objekitva, u APEX." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Maksimalna Vrijednost Otvaranja" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Brzina prijenosa podataka datoteke" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "Datum kada je medijski zapis kreiran" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "Media Track Duration" +msgstr "Dužina medijskog zapisa" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Verzija modela" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "Jezik oznake" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Datum izmjene video snimka" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "Vremenska skala medija" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +msgid "Medium." +msgstr "Srednji." + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Datum metapodatka" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Datum metapodatka" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Mod mjerenja" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "Mikrosekundi po fremu" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Vrsta slike" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "Pokazuje video format" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Verzija datoteke" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +msgid "Equipment Model" +msgstr "Model opreme" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "Naziv modela ili broj opreme." + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Naziv lokacije" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Contains the modification date of the video" +msgstr "OgraniÄenja na kreiranje duplikata slike." + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Verzija modela" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +#, fuzzy +msgid "Music By, i.e. name of person or organization." +msgstr "Uredio, npr ime osobe ili organizacije." + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +#, fuzzy +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" +"Sadrži naziv aplikacije koriÅ¡tene za kreiranje datoteke (poput \"mkvmerge " +"0.8.1\")" + +#: src/properties.cpp:1232 +#, fuzzy +msgid "Name of song or the event." +msgstr "Ime osobe prikazane na slici." + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "Tekst + ID#" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +msgid "Number Of Colours" +msgstr "Broj boja" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "Ukupni broj upotrebljenih boja" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "Broj boja" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Broj otkucaja" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Total number of parts in the video." +msgstr "Ukupni broj okvira u videu." + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Usmjerenje" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Name of organization associated with the video." +msgstr "Naziv organizacije ili kompanije koja je istaknuta na slici." + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Žurka" + +#: src/properties.cpp:1248 +msgid "Part." +msgstr "Dio." + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "IzvoÄ‘aÄi" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "IzvoÄ‘aÄi ukljuÄeni u video." + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "IzvoÄ‘aÄi" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "IzvoÄ‘aÄi" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "URL izvoÄ‘aÄa" + +#: src/properties.cpp:1251 +#, fuzzy +msgid "Performer's dedicated URL." +msgstr "URL izvoÄ‘aÄa" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Kontrola slike" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Kontrola slike" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Kontrola slike" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Kontrola slike" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Kontrola slike" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Kontrola slike" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Kontrola slike" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Kontrola slike" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Kontrola slike" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Informacija o Video kodeku" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Kontrola slike" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Izbor" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Izbor" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Jednostavni režim" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Information about the Play Mode." +msgstr "Informacije o ISRC kodu." + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "Sadrži podatke o vanjskom mediju." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +#, fuzzy +msgid "The number of Image Planes in the video" +msgstr "Ukupni broj okvira u videu." + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Dužina ekspozicije" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "The time value of the time of the movie poster." +msgstr "Vrijeme poÄetka medije unutar audio projekta." + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Datum reference" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Datum pretpregleda" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "Prikazuje vrstu audio zapisa" + +#: src/properties.cpp:1273 +msgid "Preview Date" +msgstr "Datum pretpregleda" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +msgid "Preview Duration" +msgstr "Duzina trajanja pregleda" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Trajanje medijske datoteke . Mjereno u mili sekundama." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Pregledna slika" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Verzija koriÅ¡tenog software-a." + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "ProizvoÄ‘aÄ" + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By, i.e. name of person or organization." +msgstr "Uredio, npr ime osobe ili organizacije." + +#: src/properties.cpp:1278 +#, fuzzy +msgid "Producer involved with the video." +msgstr "IzvoÄ‘aÄi ukljuÄeni u video." + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "KljuÄne rijeÄi" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Information about the Producer Keywords." +msgstr "Informacije o izdavaÄkom studiju." + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "IzdavaÄki studio" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production aperture width in pixels" +msgstr "Å irina video snimka u pikselima" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "IzdavaÄki studio" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +#, fuzzy +msgid "Production Designer" +msgstr "IzdavaÄki studio" + +#: src/properties.cpp:1282 +#, fuzzy +msgid "Information about the Production Designer." +msgstr "Informacije o izdavaÄkom studiju." + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "IzdavaÄki studio" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "Informacije o izdavaÄkom studiju." + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "Proizvod." + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "Proizvod." + +#: src/properties.cpp:1286 +#, fuzzy +msgid "Rate" +msgstr "Odnos." + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "Odnos." + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "Procijenjen" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "Starost potrebna za gledanje video snimka." + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "Ocjenjivanje, npr. 7 ili 8 (uglavnom od 10)" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "Naziv oznake izdavaÄa" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "Naziv oznake izdavaÄa, ili ime organizacije koja je snimila video." + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "URL oznake izdavaÄa" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "URL oznake izdavaÄa" + +#: src/properties.cpp:1291 +msgid "Recording Copyright" +msgstr "Autorska prava na snimak" + +#: src/properties.cpp:1291 +msgid "Recording Copyright." +msgstr "Autorska prava na snimak." + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Drugi Zahtjevo Licence" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "Informacije o zahtjevima." + +#: src/properties.cpp:1293 +#, fuzzy +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"TIFF oznaka 296, 0x128. Jedinica upotrijebljena za Xrezoluciju i " +"Yrezoluciju. Vrijednost je jedna od: 2 = inÄi; 3 = centimetri." + +#: src/properties.cpp:1294 +#, fuzzy +msgid "Ripped By" +msgstr "Uredio" + +#: src/properties.cpp:1294 +#, fuzzy +msgid "Ripped By, i.e. name of person or organization." +msgstr "Uredio, npr ime osobe ili organizacije." + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"EXIF oznaka 41993, 0xA409. Ukazuje na smjer saturacije procesiranja " +"primjenjenog od strane fotoaparata." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "Sporedni žanr" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "Naziv sporednog žanra..." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Izbor" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "The time value for the start time of the current selection." +msgstr "Broj verzije PLUS standarda na mjestu za vrijeme transakcije." + +#: src/properties.cpp:1298 +msgid "Selection Duration" +msgstr "Dužina trajanja selekcije" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +msgid "Send Duration" +msgstr "Trajanje slanja" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "Software koriÅ¡ten za generisanje / kreiranje Video podataka." + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Firmware verzije" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "Verzija koriÅ¡tenog software-a." + +#: src/properties.cpp:1304 +msgid "Song Writer" +msgstr "Tekstopisac" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "Ime tekstopisca." + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Tekstopisac" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Tekstopisac" + +#: src/properties.cpp:1307 +msgid "Source Credits" +msgstr "Zasluge za izvornik" + +#: src/properties.cpp:1307 +msgid "Source Credits." +msgstr "Zasluge za izvornik." + +#: src/properties.cpp:1308 +msgid "Source Form" +msgstr "Izvorna forma" + +#: src/properties.cpp:1308 +msgid "Source Form." +msgstr "zvorna forma." + +#: src/properties.cpp:1309 +msgid "Source Image Height" +msgstr "Visina izvorne slike" + +#: src/properties.cpp:1310 +msgid "Source Image Width" +msgstr "Å irina izvorne slike" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "Å irina video snimka u pikselima" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "Glumci" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "Uloge, imena poznatih ljudi koji se pojavljuju na video snimku." + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Kod Startnog Vremena" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Status" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "broj zatvaranja" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "Broj otkucaja" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Naziv snimka" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Kvalitet slike" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Audio Stopa Uzorka" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Ukupni broj fremova" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Dodatni Uzorci" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Tip skale" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Jezik podnaslova" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +#, fuzzy +msgid "Subtitle Codec Decode Info" +msgstr "Podnaslov videa." + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Informacija o Video kodeku" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Contains additional information about subtitles." +msgstr "Sadrži podatke o vanjskom mediju." + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Video kodek postavke" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +#, fuzzy +msgid "Subtitle Track Enabled" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Jezik podnaslova" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "Podnaslov videa." + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "KljuÄne rijeÄi" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "KljuÄne rijeÄi." + +#: src/properties.cpp:1330 +msgid "Subtitles Language" +msgstr "Jezik podnaslova" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "Jezik na kojem su podnaslovi." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +#, fuzzy +msgid "Subtitle Track Lacing" +msgstr "Jezik podnaslova" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +msgid "Subject. " +msgstr "Predmet. " + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Ime trake" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Podrazumijevana podeÅ¡avanja" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +msgid "Tag Language" +msgstr "Jezik oznake" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "Jezik koriÅ¡ten za definisanje oznaka" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Ime trake" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +#, fuzzy +msgid "Tag String" +msgstr "Glumci" + +#: src/properties.cpp:1338 +#, fuzzy +msgid "Information contained in a Tags" +msgstr "Informacije o grupisanju." + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Vrsta slike" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "TehniÄar" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "TehniÄar, ime osobe u većini sluÄajeva." + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Dužina sliÄice" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Duzina pregleda slike" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Dužina pregleda slike" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Dužina sliÄice" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Validni pregled slike" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Vremenska skala" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Plocice pomaka" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +msgid "Time Scale" +msgstr "Vremenska skala" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect Settings Applied." +msgstr "Primijenjene postavke efekta filtera" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "Ukupni broj fremova" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Broj otkucaja" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "GPS Traka" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "Informacije o snimci." + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "Datum kreiranja video snimka" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "Dužina trajanja video snimka" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +#, fuzzy +msgid "Video Track Forced" +msgstr "Sloj video snimka" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Broj numere" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Makernote verzija" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +#, fuzzy +msgid "Video Track Lacing" +msgstr "Sloj video snimka" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "Track Language" +msgstr "Jezik snimka" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "The Language in which a particular stream is recorded in." +msgstr "Jezik na kojem su podnaslovi." + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "Sloj video snimka" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +msgid "Video Track Modify Date" +msgstr "Datum izmjene video snimka" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Broj numere" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Broj numere" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "JaÄina zvuka snimka" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown Information" +msgstr "Nepoznata informacija" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Video URN" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "Video URN" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Program" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" +"Postavke software-a koriÅ¡tenog za generisanje / kreiranje Video podataka." + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "Vendor" +msgstr "ID proizvoÄ‘aÄa" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "Programer kompresora koji generiraju komprimirane podatke" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "Vendor ID" +msgstr "ID proizvoÄ‘aÄa" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Kvalitet" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "Video brzina" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Video Okvir VeliÄina" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Video Okvir VeliÄina" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Tip skale" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +#, fuzzy +msgid "Watermark URL" +msgstr "URL proizvoÄ‘aÄa" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Fino podeÅ¡avanje balansa bijelog" + +#: src/properties.cpp:1385 +msgid "Video Width" +msgstr "Å irina video zapisa" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Windows Procjenjivanje" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Information about the Window Location." +msgstr "Informacija o arhivskoj lokaciji" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "pisac" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "Napisali, npr. ime osobe ili organizacije." + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Pisanje pregleda" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" +"Sadrži naziv aplikacije koriÅ¡tene za kreiranje datoteke (poput \"mkvmerge " +"0.8.1\")" + +#: src/properties.cpp:1390 +#, fuzzy +msgid "Horizontal resolution in pixels per unit." +msgstr "Vertikalna rezolucija u pikselima po jedinici." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "Godina snimanja video snimka." + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "Vertikalna rezolucija u pikselima po jedinici." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Balans crvene" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "Prikazuje ravnotežu audio snimka (lijevo-desno)" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bitova po uzorku" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bita po uzorku" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Audio kodek postavke" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "Kodek koriÅ¡ten za Audio Kodiranje/Dekodiranje" + +#: src/properties.cpp:1402 +#, fuzzy +msgid "Audio Codec Decode Info" +msgstr "O Audio kodeku" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +msgid "Audio Codec Description" +msgstr "O Audio kodeku" + +#: src/properties.cpp:1404 +#, fuzzy +msgid "Audio Codec Download URL" +msgstr "O Audio kodeku" + +#: src/properties.cpp:1404 +#, fuzzy +msgid "Audio Codec Download URL." +msgstr "O Audio kodeku" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Informacija o Video kodeku" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +msgid "Audio Codec Settings" +msgstr "Audio kodek postavke" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Audio trajanje" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "Broj mikrosekundi trajanja audio komada." + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Standardna skala" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Dužina audio snimka" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1411 +#, fuzzy +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Audio stopa" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "Audio Stopa Uzorka" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"Audio stopa uzorka. Može biti bilo koja vrijednost, ali uobiÄajeno je 32000, " +"41100, or 48000." + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Audio Stopa Uzorka" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "pronaÄ‘eni u datoteci" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "pronaÄ‘eni u datoteci" + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "Datum kreiranja audio snimka" + +#: src/properties.cpp:1430 +msgid "Audio Track Duration" +msgstr "Dužina audio snimka" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "Dužina audio snimka" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "Audio snimak omogućen" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Sloj video snimka" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Datum izmjene video snimka" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "Audio URL" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "Audio URN" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Naziv žanra." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Datum modificiranja metapodatka" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "Godina snimanja video snimka." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Kratko neformalno ime za resurs." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Licencirani" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Desna zona" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Prava" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +#, fuzzy +msgid "A bibliographic reference for the resource." +msgstr "Kratko neformalno ime za resurs." + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Poslovna Referenca" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +#, fuzzy +msgid "*Main structure* containing Darwin Core location based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "snimana verzija" + +#: src/properties.cpp:1469 +#, fuzzy +msgid "*Main structure* containing record based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Instrukcije" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Izbor" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Režim rezolucije" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Kanta za podatke" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Kod lokacije" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Tablica Imena" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Jedinstven identifikator djela iz kojeg je resurs izveden." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Informacioni Text." + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Osobine Objektiva" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +#, fuzzy +msgid "*Main structure* containing occurrence based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "Licenca ID" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "ruÄni Fbroj" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +#, fuzzy +msgid "Comments or notes about the Occurrence." +msgstr "Informacija o aranžeru." + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Broj direktorija" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Snimanje zaslona" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Postavi" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "IzdavaÄki studio" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Gradacija" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Fokus pozicija" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Intervalni broj" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Fiktivna Identifikacija" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Priložena medija" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Referenca Projekta" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "AEB sekvenca" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +#, fuzzy +msgid "*Main structure* containing organism based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Ime vlasnika" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Dodatni Uzorci" + +#: src/properties.cpp:1616 +#, fuzzy +msgid "*Main structure* containing material sample based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "VeÄernja scena" + +#: src/properties.cpp:1619 +#, fuzzy +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +#, fuzzy +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +#, fuzzy +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Dodatni Uzorci" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +#, fuzzy +msgid "*Main structure* containing event based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +#, fuzzy +msgid "*Main structure* containing human observation based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +#, fuzzy +msgid "*Main structure* containing machine observation based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "DogaÄ‘aj" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Datum unosa" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Datum unosa" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Uvod" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "mjesec" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Datum kad licenca istiÄe." + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "KaÅ¡njenje" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Datum unosa" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "format uzorka" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "SMin Vrijednost Uzorka" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "DatoteÄni broj" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Licencor BiljeÅ¡ke" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +#, fuzzy +msgid "Comments or notes about the Event." +msgstr "Informacije o komentaru." + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Kod lokacije" + +#: src/properties.cpp:1706 +#, fuzzy +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Lokacija" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Neprekidno" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Fed.jedinica/provincija" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Zemlja" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Kvalitet" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Lokalno" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "textualni opis podataka objekta" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Kod lokacije" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Kod lokacije" + +#: src/properties.cpp:1779 +#, fuzzy +msgid "Comments or notes about the Location." +msgstr "Informacija o arhivskoj lokaciji" + +#: src/properties.cpp:1781 +#, fuzzy +msgid "Verbatim Coordinates" +msgstr "GPS koordinate" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "GPS Å irina OdrediÅ¡ta" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "GPS geografska dužina OdrediÅ¡ta" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "GPS Å irina OdrediÅ¡ta" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "GPS geografska dužina" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +#, fuzzy +msgid "Coordinate Precision" +msgstr "GPS koordinate" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Poslovna Referenca" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Datum reference" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Referentne usluge" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Broj reference" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +#, fuzzy +msgid "*Main structure* containing geological context based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Format" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Amber" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Crvena" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Fiktivna Identifikacija" + +#: src/properties.cpp:1904 +#, fuzzy +msgid "*Main structure* containing identification based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Fiktivna Identifikacija" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Identifikator" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identifikator" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "GPS Referenca Smjera Slike" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Fiktivna Identifikacija" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Fiktivna Identifikacija" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Status" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +#, fuzzy +msgid "*Main structure* containing taxonomic based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Orginalni naziv Raw Fajla" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Ime dokumenta" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Tablica Imena" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Orginalni naziv Raw Fajla" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Snimajuci Offset" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "IzdavaÄ" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "Datum na koji je slika prvi put publikovana." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Sigurnosna Klasifikacija" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Redoslijed ispunjavanja" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Prirodna boja" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +#, fuzzy +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Izvor datoteke" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Blok Resursa Slika" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "izvor bljeska" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Mjerenje Interoperabilnosti" + +#: src/properties.cpp:2066 +#, fuzzy +msgid "*Main structure* containing measurement based information." +msgstr "Glavna struktura koja sadrži regionalne informacije" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Mjerenje u toku" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Mjerenje u toku" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Vrijednosti mjerenja Å¡uma." + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Mjerenje Interoperabilnosti" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Mjerenje Interoperabilnosti" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Mjerenje Interoperabilnosti" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Mjerenje Interoperabilnosti" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "GPS Modalitet Mjerenja" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Mjerenje u toku" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "textualni opis podataka objekta" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Datum i vrijeme" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Ime snimka ili uzeti." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Kategorija" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Režim rezolucije" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Režim rezolucije" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Režim Autofokusa" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Režim Autofokus" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "PodeÅ¡avanje fokusa" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "PodeÅ¡avanje fokusa" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Rang Leće" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Opseg žižne daljine soÄiva" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Sijenka" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Istaknuto" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Popuni svjetlo" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "x3 Popuni svjetlo" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "PodeÅ¡avanje boja" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "PodeÅ¡avanje boja" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Režim podeÅ¡avanja" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Režim podeÅ¡avanja" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Auto braket" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Automatska potpora" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Nepoznata SigmaMakerNote oznaka" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-Segment" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "Napredno Lv1" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "Napredno Lv2" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "Napredno Lv3" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "Napredno Lv4" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "Napredno Lv5" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "Noćna scena / Sumrak" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "ZatvaraÄ velike Brzine" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Portret sumraka" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Auto portret" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "ZatvaraÄ s osmjehom" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "Visoka Osjetljivost" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "Napredna snimanja sportova" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panorama" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "Anti zamagljenost pokreta" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "Ispravka pozadinskog svjetla HDR" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "makro fokus" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "nježna koža" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "ID slika" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "UkljuÄeno (Neprestano)" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "UkljuÄeno (Snimanje)" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "Plus" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Bijela Flourescentna" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "Popularna Bijela Flourescentna" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "Dnevna Bijela Flourescentna" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Užareno" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Bijela fluorescentna svjetlost" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Podvodni 1 (Plava Voda)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Podvodni 2(Zelena Voda)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "Stalni - AF" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "Centar AF" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "TaÄka AF" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "Fleksibilna TaÄka AF" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "Dodir AF" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "RuÄna žiža" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "Lice Detektirano" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "Zatvori Fokus" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "Nacin visestrukog blica" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "Å irina slike u viÅ¡estrukom burst režimu" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "Visina slike u viÅ¡estrukom burst režimu" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "JPEG prikaz slike" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "Automatski HDR" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "Opseg visoke definicije" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Informacija o snimku" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "Sony Model ID" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "Reprodukcija Boje" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "DinamiÄki optimizator opsega" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "Minolta MakerNote" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Puna VeliÄina Slike" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Prikaz VeliÄine Slike" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Prikaz veliÄine slike" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "AF Iluminator" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "JPEG kvalitet" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Režim Izdavanja" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Broj slike u kontinualnom burst režimu" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "Anti - Zamagljenost" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "Redukcija Å¡uma duge ekspozicije" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "Inteligentni automatski režim" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "Nepoznata Sony1MakerNote oznaka" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Neprestano visoko" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Neprestano nisko" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "Niski optimizator D opsega uokviravanja" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "Jesen" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "ADI" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "StyleBox1" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "Automatski bez bljeska" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "Nivo optimizatora dinamiÄkog opsega" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "Kreativni Stil" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "Zona Podudaranja Vrijednosti" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "AF sa okidaÄem" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "Visoka ISO redukcija Å¡uma" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Stil Slike" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Nepoznata Sony1 Fotoaparat Postavke oznaka" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Nepoznata Sony1 Fotoaparat Postavke 2 oznaka" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Nepoznati odjeljak" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Struktura slikovnog podatka" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Snimajuci Offset" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Karakteristike slikovnog podatka" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Ostali podaci" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Exif struktura podataka" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Konfiguracija slike" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Informacije o korisniku" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Povezana datoteka" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Datum i vrijeme" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Uvjeti snimanja slike" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "GPS informacije" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Interoperabilne informacije" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "SpecifiÄne informacije prodavatelja" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Adobe DNG oznake" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Panasonic RAW oznake" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "TIFF/EP oznake" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "TIFF PageMaker 6.0 oznake" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Adobe OPI oznake" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Zadnji odjeljak" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Primarna slika" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Minijatura/ Prikaz slike" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Izvorna slika, viÅ¡estraniÄna datoteka" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Smanjeni pregled / Prikaz fotografije, Visestranicna datoteka" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Primarna slika, Transparentna maska" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Minijatura/ Prikaz slike, Transparentna maska" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Primarna slika, Visestranicna datoteka, transparentna maska" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" +"Smanjeni pregled / Prikaz fotografije, Visestranicna datoteka, transparentna " +"maska" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Slikovni podatak pune rezolucije" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Smanjena-rezolucija slikovnog podatka" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "Jedna strana visestranicne slike." + +#: src/tags.cpp:245 +msgid "inch" +msgstr "inÄ" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Group 3 Fax" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Group 4 Fax" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (stari stil)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG B&W" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Color" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "Naredna 2-bita RLE" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF kompresovan" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "Samsung SRW kompresovan" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-rijeÄ" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Punjenje" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "IT8 Monohromatska Slika" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 Binarno Linearno" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (10-bit LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-bit ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Kodak DCS kodiranje" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI logaritamska osvjetljenost za RLE kompresiju" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "SGI Log 24-upakovani biti" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF kompresovano" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR kompresovano" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF kompresovano" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "Bijelo je nula" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "Crno je nula" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "RGB Paleta" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Maska prozirnosti" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Niz Filtera Boja" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Linearni Raw" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "Bez podrhtavanja ili polutoniranja" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "Tehnika ureÄ‘enog taÄkanja ili polutonova" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Randomizirani proces" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "gore, lijevo" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "gore, desno" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "dolje, desno" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "dolje, lijevo" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "lijevo, gore" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "desno, gore" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "desno, dno" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "lijevo, dno" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "Bez koriÅ¡tene Å¡eme predviÄ‘anja" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Horizontalno diferenciranje" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "nije CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "NeredznaÄeni cjelobrojni podaci" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "PredznaÄeni cjelobrojni podaci u komplementu dvojke" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "IEEE podatak s pokretnim zarezom" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "Nedefinirani format podatka" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "Neindeksirano" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "Indeksirano" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Centrirano" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Co-sited" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Bez blica" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "Aktivirano, povratno svjetlo nije prepoznato" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "Aktivirano, povratno svjetlo je prepoznato" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Da, ne okida" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Da, obavezno" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Da,obavezno, povratna svjetlost nije detektirana" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Da, obavezno, povratna svjetlost je detektirana" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Ne, obavezno" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "Aktivirano, povratno svjetlo ni je prepoznato" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Ne, automatski" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Da, automatski" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Da, automatski, povratna svjetlost nije detektirana" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Da, automatski, detektovano povratnok svjetlo" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Nema blic" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Ne, nema funkcije bljeska" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Da, smanjenje efekta crvenih oÄiju" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Da, smanjenje efekta crvenih oÄiju, povratna svijetlost nije otkrivena" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Da, smanjenje efekta crvenih oÄiju, povratna svijetlost je otkrivena" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Da, obavezno, smanjenje efekta crvenih oÄiju" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Da, obavezno, smanjenje efekta crvenih oÄiju, povratna svijetlost nije " +"otkrivena" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" +"Da, obavezno, smanjenje efekta crvenih oÄiju, povratna svijetlost je " +"otkrivena" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Ne, smanjenje efekta crvenih oÄiju" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Ne, automatski, smanjenje efekta crvenih oÄiju" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Da, automatski, smanjenje efekta crvenih oÄiju" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" +"Da, automatski, smanjenje efekta crvenih oÄiju, povratna svjetlost nije " +"detektirana" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" +"Da, automatski, smanjenje efekta crvenih oÄiju, povratna svjetlost je " +"detektirana" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Pravougli(ili kvadratni) tlocrt" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "Cik-cak raspored A: parni stupci su pomaknuti prema dolje za 1/2 reda" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "Cik-cak raspored B: parni stupovi su pomaknuti prema gore za 1/2 reda" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" +"Cik-cak raspored C: parni redovi su pomaknuti prema desno za 1/2 kolone" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" +"Cik-cak raspored D: parni redovi su pomaknuti prema lijevo za 1/2 kolone" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Procesirajući Softver" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "Ime i verzija softera koristenog za kasniju obradu slike." + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Novi tip poddatoteke" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "OpÅ¡ta naznaka vrste podataka koja se nalazi u ovoj poddatoteci." + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "Tip Poddatoteke" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"Opste indikacije o vrsti podatka sadrzanog u ovom podfolderu. Ovo polje je " +"zastarjelo. Umjesto tog treba koristiti NoviPodfolderTip polje." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Broj kolona u podacima slike, jednak broju piksela po redu. U JPEG sažetim " +"podacima, JPEG etiketa se koristi umjesto ove etikete." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Broj redova podataka slike. U JPEG sažetim podacima, JPEG etiketa se koristi " +"umjesto ove etikete." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bita po uzorku" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Broj bita po sastavnom djelu slike. U ovom stanardu svaki dio slike ima 8 " +"bita, tako da je vrijednost etikete 8. Pogledajte . Kod " +"JPEG sažimanja, JPEG obeliživaÄ se koristi umjesto ove etikete." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Å ema sažimanja koja se koristi za podatke slike. Ako je glavna slika JPEG " +"sažeta, oznaka nije neophodna i izostavljena je. Kada sliÄice za pregled " +"koriste JPEG sažimanje, vrijednost etikete je 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Sastav piksela. Kod JPEG sažetih podataka, JPEG obilježivaÄ se koristi " +"umjesto ove etikete." + +#: src/tags.cpp:444 +#, fuzzy +msgid "Thresholding" +msgstr "OdreÄ‘ivanje praga" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" +"Za crne i bijele TIFF datoteke koje predstavljaju nijanse sive, koriÅ¡tena " +"tehnika za konverziju iz sivih u crne i bijele piksele" + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "Å irina Ćelije" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" +"Å irina matrice za taÄkanje ili polutonove koriÅ¡tene za datoteku taÄkastih " +"ili polutonova." + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "Dužina Ćelije" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" +"Å irina matrice za taÄkanje ili polutonove koriÅ¡tene za datoteku taÄkastih " +"ili polutonova." + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Redoslijed ispunjavanja" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "LogiÄki poredak bita unutar bajta" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Ime dokumenta" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"String slova kojim se zadaje naslov slike. To može biti primjedba kao Å¡to je " +"\"1988 izlet firme\" ili bilo Å¡ta. Ne mogu da se koriste slova od 2 bajta. " +"Ako je potrebno da se oni koriste, kuca se u Exif Private etiketi " +"." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"ProizvoÄ‘aÄ opreme za slikanje. To je proizvoÄ‘aÄ DSC, skenera, video " +"digitajzer ili druge opreme koja se koristi za stvaranje slika. Ako je polje " +"prazno, smatra se da je nepoznato." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Ime modela ili broj modela opreme. To je ime modela ili broj DSC, skenera, " +"video digitajzer ili druge opreme koja se koristi za stvaranje slika. Ako je " +"polje prazno, smatra se da je nepoznato." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Za svaku traku, bajtska Å¡tampa te trake. PreporuÄljivo je da se unese " +"vrijednost manja od 64 kilobajta. Kod JPEG sažetih podataka, oznaka nije " +"neophodna i izostavljena je. Pogledajte i i " + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Položaj slike u smislu redova i kolona." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Uzoraka po pikselu" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Broj sastavnih dijelova po pikselu. PoÅ¡to se standard odnosi na RGB i YCbCr " +"slike, vrijednost etikete je 3. Kod JPEG sažetih podataka, JPEG obilježivaÄ " +"se koristi umjesto ove etikete." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Redova po traci" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"Broj redova po traci. Broj redova u slici koja je izdeljena na trake. Kod " +"JPEG sažetih podataka, oznaka nije neophodna i izostavljena je. Pogledajte i " +" i " + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Broj bajtova na traci" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"Ukupan broj bajtova za svaku traku. Kod JPEG sažetih podataka, oznaka nije " +"neophodna i izostavljena je." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "X-Rezolucija" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Broj piksela po u pravcu. Ako je nepoznata " +"rezolucija, 72 [dpi] je postavljeno." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Y-Rezolucija" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Broj piksela po u pravcu. Postavlja se ista " +"vrijednost kao u ." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"NaznaÄava da li će komponente taÄaka biti zapisane u ravnom ili raÅ¡trkanom " +"obliku. U JPEG kompresovanim datotekama biće korišćen JPEG marker umjesto " +"ove oznake. Ako ovo polje ne postoji, koristi se TIFF vrijednosti 1 " +"(raÅ¡trkano)." + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "Siva Jedinica Odgovora" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "Preciznost informacije sadržane u SivaOdgovorKrivulja." + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "Siva Odgovor Krivulja" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "Za podatke o nivou sivog, optiÄka gustoća za svaki mogući piksel." + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "T4 Opcije" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "T.4-opcije kodiranja" + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "T6 Opcije" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "T.6-opcije kodiranja" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Jedinica za mjerenje i . Ista jedinica se koristi " +"za i . Ako je nepoznata rezolucija slike, " +"postavlja se 2 (inÄa)." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Broj slike" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Ime dokumenta iz kojeg je ova slika skenirana" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Funkcija prijenosa za sliku, opisana u tabularnom stilu. ObiÄno ova oznaka " +"niej neophodna, obzirom da je paleta boja oznaÄena pomoću ." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Ova etiketa pamti ime i verziju softvera ili firmvera foto-aparata ili " +"ulaznog ureÄ‘aja koji je napravio sliku. Oblik unosa nije preciziran, ali je " +"preporuÄljivo da bude sliÄno primjeru koji je prikazan dolje. Ako se polje " +"ostavi prazno, smatra se da je nepoznato." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Vrijeme i datum kreiranja slike. U Exif standardu, je to vrijeme i datum kad " +"je datoteka promjenjena." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Ova oznaka bilježi ime vlasnika kamere, fotografa ili kreatora slike. " +"Detaljan format nije naveden, ali se preporuÄuje da se informacije napiÅ¡u " +"kao u primjeru ispod radi lakÅ¡e interoperabilnosti. Kada je polje ostalo " +"prazno, tretira se kao nepoznata. . npr) \"Vasnik kamere, Džon Smit, " +"Fotograf, Majkl Braun, Tvorac slika, Ken Džejms\"" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "Domaćin Kompjuter" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Ova oznaka sadrži informaciju o domaćinu kompjutera koriÅ¡tenu za generiranje " +"slike." + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Prediktor" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" +"Prediktor je matematiÄki operator koji se primijeni na podatke slike prije " +"Å¡eme kodiranja." + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"KoliÄina crno-bijelih nijansi bijelih dijelova slike. ObiÄno ova oznaka nije " +"neophodna, ozirom da je paleta boja naznaÄena sa ." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"KoliÄina tri osnovne boje u slici. ObiÄno ova oznaka nije neophodna, obzirom " +"da se paleta boja oznaÄava sa ." + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Mapa boja" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" +"Mapa boja za paletu boja slike. Ovo polje definiÅ¡e Crveno-zeleno-plavu mapu " +"boja (Äesto naziva lookup tabela) za-paletu boja. U-slici s paletom boja, " +"piksel vrednost se koristi za indeksiranje u RGB tabeli pronalaženja." + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "savjeti za polutonove" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" +"Svrha poljai HalftoneHints je da se prenese u funkciji polutonova raspon " +"sivih nivoa u okviru odreÄ‘ene kolorimetrijske-slike koja bi trebalo da " +"zadrži tonski detalj." + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Å irina PloÄice" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "Å irina ploÄice u pikselima. Ovo je broj kolona u svakoj ploÄici." + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Dužina ploÄice" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" +"Dužina (visina) ploÄice u pikselima.Ovo je broj redova u svakoj ploÄici." + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Plocice pomaka" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"Za svaku ploÄicu, bajt pozicija te ploÄice, kao kompresovana i saÄuvan na " +"disku. Pozicija je navedena u odnosu na poÄetak TIFF datoteke. Imajte na umu " +"da to podrazumijeva da svaka ploÄica ima položaj nezavisno od lokacija " +"drugih ploÄica." + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Brojanje Bita PloÄice" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"Za svaku ploÄicu, broj (komprimiranih)bita u toj ploÄici. Pogledaj " +"PloÄicaOffsets za opis kako su biti brojanja poredani." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "SubIFD pomaci" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"OdreÄ‘eno od strane Adobe korporacije za omogićavanje TIFF Trees u okviru " +"TIFF datoteke." + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Postavi tintu" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"Set tinti koji se koristi u odvojenoj (PhotometricInterpretation = 5) slici." + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "Imena Tinte" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"Ime svake tinte koriÅ¡tene u razdvojenoj(PhotometricInterpretation=5) slici." + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "broj tinti" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" +"Broj tinti. Obicno jednak SemplesPerPixel, osim ako postoje dodatni uzorci." + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "TaÄkasti doseg" + +#: src/tags.cpp:622 +#, fuzzy, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "Sastavne vrijednosti koje odgovaraju 0% dot i 100% dot." + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "ciljani printer" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "Opis okruženja Å¡tampanja za koje je to razdvajanje namijenjeno." + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "Dodatni Uzorci" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" +"Specificira da svaki piksel ima m dodatnih uzoraka Äija interpretacija je " +"definirana jednom vrijednošću navedenom u nastavku." + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "format uzorka" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" +"Ovo polje specificira kako interpretiraju svaki uzorak podatka u pikselima." + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "SMin Vrijednost Uzorka" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "Ovo polje specificira najmanju vrijednost uzorka." + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "SMaks Vrijednost Uzorka" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "Ovo polje specificira najveću vrijednost uzorka." + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Domet prijenosa" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "Prosiruje doseg TransferFunction" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "IsjeÄak Puta" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" +"TIFF ClipPath je namijenjen da kopira suÅ¡tinu funkcionalnosti kreiranja " +"PostScript staze." + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "X IsjeÄak Puta Jedinice" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"Broj jedinica koje proÅ¡iruju sliku, u uvjetima cjelobrojnih ClipPath " +"koordinata." + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "Y IsjeÄak Puta Jedinice" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"Broj jedinica koje povećavaju sliku, u uvjetima cjelobrojnih ClipPath " +"koordinata." + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" +"Indeksirane slike su slike u kojima su 'pikseli \"ne predstavljaju " +"vrijednosti boja, već indeks (obiÄno 8-bitni) u posebnoj tabeli boja, koja " +"se zove ColorMap." + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "JPEG tabele" + +#: src/tags.cpp:661 +#, fuzzy +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" +"Ova opciona oznaka se može koristiti za kodiranje JPEG kvantizacijske i " +"Hafmanove tabele za kasniju upotrebu u procesu JPEG dekompresije" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "OPI Proxy" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" +"OPIProxy daje informaciju da li ova slika u niskoj rezoluciji pokazuje na " +"sliku visoke rezolucije (Adobe OPI)." + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "JPEG proces" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" +"Ovo polje ukazuje na proces koriÅ¡ten za se proizvedu komprimirani podaci" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "JPEG format" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"Raspon prema startnom bajtu (SOI) JPEG kompresovanog umanjenog prikaza " +"slike. Ovo se ne koristi kao primarni podatak JPEG slike." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "Dužina u JPEG formatu" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"Broj batova JPEG kompresovanog umanjenog prikaza slike. Ovo se ne koristi " +"kao primarni podatak JPEG slike. JPEG umanjeni prikazi se ne dijele, ali su " +"zapisani kao kontinualni JPEG tokovi bitova poÄev od SOI do EOI. Appn i COM " +"markeri ne treba da se zapisuju. Kompresovani umanjeni prikazi slika moraju " +"biti zapisani u ne viÅ¡e od 64 kilobajtova, ukljuÄujući i sve postale podatke " +"koji se zapisuju u APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "JPEG Restart Interval" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Ovo polje ukazuje na dužinu restart intervala koriÅ¡tenog u komprimiranim " +"slikovnim podacima." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "JPEG Lossless Predikatori" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" +"Ovo polje pokazuje na listu lossless predikatora-selektirane vrijednosti, " +"jednu po jednu komponentu." + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "JPEG Point Pretvorbe" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" +"Ovo polje pokazuje na listu vrijednosti point pretvorbi, jednu po jednu " +"komponentu." + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "JPEG Q-Tabele" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" +"Ovo polje pokazuje na listu pozicija kvantizacijske tabele, jedna po " +"komponenti." + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "JPEG DC-Tabele" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" +"Ovo polje pokazuje na listu pozicija DC Huffman tabele ili Huffman tabele " +"bez gubitaka, jedna po komponenti." + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "JPEG AC-Tabele" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" +"Ovo polje pokazuje na listu pozicija AC Huffman tabele, jedna po komponenti." + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Koeficijenti matrice za transformaciju iz RGB u YCbCr. Nije naznaÄena " +"podrazumijevana vrijednost u TIFF, ali se ovdje koristi vrijednost data u " +"dodatku E dokumenta \"Color Space Guidelines\". Paleta boja se deklariÅ¡e " +"oznakom \"color space\", a podrazumijevana vrijednost daje optimalne " +"karakteristike interoperabilnosti." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "YCbCr podsemplovanje" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Odnos uzoraka dijelova hromiranja u odnosu na jaÄinu osvjetljenja. Kod JPEG " +"sažetih podataka, JPEG obilježivaÄ se koristi umjesto ove etikete." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"Pozicija komponenti boja u relaciji sa komponentama osvjetljenja. Ovo polje " +"je dizajnirano samo za JPEG kompresovane podatke ili nekompresovane YCbCr " +"podatke. Podrazumevano za TIFF je 1 (centrirano), ali kada je Y:Cb:Cr = " +"4:2:2 preporuÄljivo je u ovom standardu da 2 (co-sited) bude korišćeno za " +"zapis podataka, kako bi se poboljÅ¡ao kvalitet slike kada se gleda na TV " +"sistemima. Kada ovo polje ne postoji, Äitalac će koristiti podrazumevano za " +"TIFF. U sluÄaju kada je Y:Cb:Cr = 4:2:0, preporuÄen je podrazumevano za TIFF " +"(centrirano). Ako ÄitaÄ nema podrÅ¡ku za obje vrste , " +"trebalo bi da prati podrazumevano za TIFF bez obzira na vrijednost u ovom " +"polju. PreporuÄljivo je da ÄitaÄi butu sposobni i za centrirano i za co-" +"sited pozicioniranje." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Referentni nivo crno/bele" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"Referentna vrijednost crnila i referentna vrijednost bjelila. Za TIFF se " +"niÅ¡ta ne podrazumijeva, ali sljedeće vrijednosti su date kao " +"podrazumijevane. Paleta boja je deklarisana u informacionoj oznaci za paletu " +"boja, a podrazumijevane vrijednosti su one koje daju optimalne " +"karakteristike slike." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "XML paket" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "XMP MetaPodatak (Adobe technote 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Windows Procjenjivanje" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Procjenjivanje koriÅ¡teno od strane Windows-a" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Windows Postotak Procjenjivanja" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" +"Procjenjivanje oznaka koriÅ¡tena od strane Windows-a, vrijednost u postotcima" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "ID slika" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" +"ImageID je puna putanja originalne slike visoke rezolucije, ili bilo koje " +"druge niske koja jedinstveno identifikuje originalnu sliku (Adobe OPI)." + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "CFA Ponovljene Dimenzije Uzorka" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" +"Sadrži dvije vrijednosti koje predstavljaju minimum redova i kolina za " +"defirniranje ponavljanog uzorka od filtera niza boje." + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"OdreÄ‘uje niz filtera boja i (CFA) geometrijski uzorak senzora slika kada se " +"senzor podruÄja boja s jednim Äipom koristi. Ne odnosi se na sve senzorske " +"boje." + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Informacije o autorskim pravima. U ovom standardu oznaka se koristi da ukaže " +"na fotografova i urednikova autorska prava. To je obavjeÅ¡tenje o autorskim " +"pravima lica ili organizacije koja traži prava nad slikom. Interoperabilnost " +"autorskih izjava, ukljuÄujući datum i prava treba da budu napisani u ovom " +"polju, na primjer \". Copyright, DŽon Smit, 19kk Sva prava zadržana.\". U " +"ovom standardu polje bilježi i fotografa i urednika autorska prava, jedni na " +"poseban deo izjave. Kada postoji jasna razlika izmeÄ‘u fotografovih i " +"urednikovih autorskih prava, to treba da bude napisano u redoslijedu " +"fotografovih zatim urednikovih autorskih pravima, odvojenih vrijednostima " +"NULL (u ovom sluÄaju, jer je izjava takoÄ‘e zavrÅ¡ava sa NULL, postoje dva " +"koda NULL) . Kada je samo fotografovo autorsko pravo navedeno, ono se " +"zavrÅ¡ava jednim NULL kodom. Kada je samo urednikovo autorsko pravo dato, " +"fotografov autorski dio se sastoji od jednog razmaka praćenog NULL kodom, a " +"zatim su navedena urednikova autorska prava. Kada je polje ostalo prazno, " +"ono se tretira kao nepoznata." + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "Vrijeme ekspozicije, dato u sekundama." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "F broj." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Sadrži IPTC/NAA zapis" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Blok Resursa Slika" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "Sadrži informacije ugraÄ‘ene od Adobe Photoshop aplikacije" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"PokazivaÄ na Exif IFD. Interopeabilnosti radi, Exif IFD imaju istu strukturu " +"kao kod IFD-a navedenog u TIFF-u, ali ne sadrži podatke slike kao u sluÄaju " +"TIFF-a." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Inter Boja Profil" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Sadrži karakter ili profil prostora boja u InterColor Consortium (ICC) " +"formatu" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"Programska klasa koju aparat koristi da podesi osvjetljenje kada slika." + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "Ukazuje na spektralnu osjetljivost za svaki kanal koji kamera koristi." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"PokazivaÄ na GPS Info IFD. Interoperabilna struktura GPS Info IFD-a kao kod " +"Exif IFD ali ne sadrži podatke slike." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "Stopa ISO brzine" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"OznaÄava ISO brzinu i ISO obim aparata ili ulaznog ureÄ‘aja kao Å¡to je " +"precizirano u ISO 12232." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Ukazuje na Opto-ElektriÄnu Konverzija Funkciju(OECF) specificiranu u ISO " +"14524." + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "Isprepletenost" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "Ukazuje na polje broja od viÅ¡epoljnih slika." + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "Pomak vremenske zone" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" +"Ova opcionalna oznaka kodira vremensku zonu sata kamere (u odnosu na vrijeme " +"po GriniÄu) koriÅ¡tene za kreiranje DataTimeOriginal tag-vrednost kada je " +"fotografija snimljena. To takoÄ‘e može da sadrži i vremensku zonu korišćenu " +"za kreiranje DateTime vrijednosti oznake kada je slika modifikovana." + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "Režim samomjeraÄa" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "Broj sekundi snimanja slike zakaÅ¡njenja od pritiska na dugme." + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "Datum vrijeme originalno" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "Datum i vrijeme kada je originalna slika generisana." + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"SpecifiÄno za kompresovane podatke; navodi komprimirane bite po pikselu." + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Brzina zatvaraÄa" + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "objektiv" + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "Vrijednost osvjetljenja." + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "Izloženost prednaponu." + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Najveći otvor blende" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "Najmanji F broj leće." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "Udaljenost subjekta u metrima." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Mod za mjerenje." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Vrsta izvora" + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "Ukazuje na status blica nakon Å¡to je slika uslikana." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "Stvarna fokusna dužina leće, u mm." + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "Iznos blic energije(BCPS)." + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "SFR kamere." + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Å um" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "Vrijednosti mjerenja Å¡uma." + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Broj piksela po FocalPlaneResolutionUnit (37392) u Å irinaSlike smjeru za " +"glavnu sliku." + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Broj piksela po FocalPlaneResolutionUnit (37392) u DužinaSlike smjeru za " +"glavnu sliku." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"Jedinica mjere za FocalPlaneXResolution(37390) i FocalPlaneYResolution" +"(37391)." + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "Broj dodijeljen slici, npr. sekvenca slika u lancu." + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "Sigurnosna Klasifikacija" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "Sigurnosna klasifikacija dodjeljena slici." + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "Zapisnik o tome Å¡ta je uraÄ‘eno na slici." + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "Ukazuje na lokaciju i podruÄje glavnog subjekta u ukupnoj sceni." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"Kodira indeks ekspozicije fotoaparata postavljajući kad je slika snimljena." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "TIFF/EP standardni ID" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Sadrži Äetiri ASCII znaka predstavljajući TIFF/EP standardnu verziju od TIFF/" +"EP datoteke, primjer '1','0','0','0'" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "Tip senzora slike." + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Windows Naslov" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Naslov oznaka koriÅ¡tena od strane WIndows-a, kodirana u UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Windows Komentar" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Komentar oznaka koriÅ¡tena od strane Windows-a, kodirana u UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Windows Autor" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Autor oznaka koriÅ¡tena od strane Windows-a, kodirana u UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Windows KljuÄne RijeÄi" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "KljuÄne rijeÄi oznaka koriÅ¡tena od strane Windows-a, kodirana u UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Windows Subjekat" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Subjekat oznaka koriÅ¡tena od strane Windows-a, kodirana u UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "Ispis Slike Podudaranje" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "Ispis Slike Podudaranje, potreban opis." + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "DNG verzija" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"Ova oznaka kodira broj DNG verzije Äetvrtog reda . Za datoteke usklaÄ‘en s " +"verzijom 1.1.0.0 od DNG specifikacije, ova oznaka trebala bi sadržati bite: " +"1,1,0,0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "DNG zastarjela verzija" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Ova oznaka navodi najstariju verziju Digital Negative specifikacije za koju " +"je kompatibilna datoteka. ÄŒitaÄi ne trebaju pokuÅ¡atj Äitanje datoteke ako " +"ta oznaka odreÄ‘uje broj verzije koja je viÅ¡a od broja verzije specifikacije " +"na kojoj je ÄitaÄ temeljen. Osim provjere verzijska oznake, ÄitaÄi trebaju, " +"za sve oznake, provjeriti vrste, brojeve i vrijednosti, kako bi provjerili " +"da je u stanju ispravno proÄitati datoteku." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Jedinstveni model aparata" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"DefiniÅ¡e jedinstveno, ne-lokalizovane ime modela aparata koji je stvorio " +"sliku u RAW datoteci. Ovo ime bi trebalo da sadrži ime proizvoÄ‘aÄa da se " +"izbjegavaju sukobi, a ne bi trebalo da bude lokalizovano, Äak i ako je je " +"naziv kamera samo lokalizovan naziv za razliÄita tržiÅ¡ta (vidi " +"LocalizedCameraModel). Ovaj string može da koristi softver za Äitanje radi " +"preferencija indeksa po modelu i zamjenskih profila." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Lokalizirani model kamere" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"SliÄno polju UniqueCameraModel osim Å¡to se ime kamere može lokalizovati za " +"razna tržiÅ¡ta da se usaglasi s imenom kamere za lokalizaciju." + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "CFA Oblast Boje" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" +"Pruža mapiranje izmeÄ‘u vrijednosti u CFAPattern oznaci i obiÄnih brojeva u " +"LinearRaw prostoru. To je potrebna oznaka za slike koje nisu RGB CFA." + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "CFA Izgled" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "Opisuje specijalni izgled od CFA." + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" +"Opisuje tabelu pronalaženja koja mapira uskladiÅ¡tene vrijednosti u linearne " +"vrednosti. Ova oznaka se obiÄno koristi da se poveća odnos kompresije " +"pamćenjem sirovih podataka u nelinearan, viÅ¡e vizuelno uniforman prostor sa " +"manjim brojem ukupnih nivoa kodiranja. Ako SamplesPerPixel nije jednak " +"jedan, ova tabela se odnosi na sve uzorke za svaki piksel." + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "Crni Nivo Ponavljanja Zamućenja" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "OdreÄ‘uje ponavljanje veliÄine uzorka za CrniNivo oznaku." + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" +"Navodi nulto osvjetljenje (tzv. termiÄko crno ili crni tok) nivo kodiranja, " +"kao ponavljajući uzorak. Porijeklo ovog obrasca je gornji lijevi ugao " +"pravougaonika ActiveArea. Vrijednosti se Äuvaju u redoslijedu skeniranja red-" +"kolona-uzorak." + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Crni Nivo Delta H" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" +"Ako je nivo kodiranja nulto osvjetljenja funkcija kolone slike, " +"BlackLevelDeltaH odreÄ‘uje razliku izmeÄ‘u nivoa kodiranja nultog osvjetljenja " +"i osnovnog nivoa kodiranja nultog osvjetljenja. Ako SamplesPerPixel nije " +"jednak jedan, jedna tabela se primjenjuje za sve uzorke datog piksela." + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Crni Nivo Delta V" + +#: src/tags.cpp:929 +#, fuzzy +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" +"Ako je nivo kodiranja nulto osvjetljenja funkcija kolone slike, " +"BlackLevelDeltaH odreÄ‘uje razliku izmeÄ‘u nivoa kodiranja nultog osvjetljenja " +"i osnovnog nivoa kodiranja nultog osvjetljenja. Ako SamplesPerPixel nije " +"jednak jedan, jedna tabela se primjenjuje za sve uzorke datog piksela." + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Bijeli nivo" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "Standardna skala" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "Podrazumijevano ishodiÅ¡te za odsjecanje" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" +"Sirove slike Äesto pohrane dodatne piksele oko rubova konaÄnoj slici. Ti " +"dodatni pikseli spreÄavaju interpolacijske negativne efekte u blizini rubova " +"na konaÄnoj slici. DefaultCropOrigin odreÄ‘uje ishodiÅ¡te podruÄja konaÄne " +"slike u sirovim koordinatama slika (tj. prije nego je DefaultScale " +"primijenjen), u odnosu na ActiveArea pravougaonik u gornjem lijevom uglu." + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "Standardna veliÄina rezanja" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" +"Sirove slike Äesto pohrane dodatne piksele oko rubova konaÄnoj slici. Ti " +"dodatni pikseli spreÄavaju interpolacijske negativne efekte u blizini rubova " +"na konaÄnoj slici. DefaultCropSize odreÄ‘uje veliÄinu podruÄja konaÄne slike " +"u sirovim koordinatama slika (tj. prije nego je DefaultScale primijenjen)." + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matrica boja 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matrica boja 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Kalibracija Kamere 1" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "Kalibracija Kamere 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "Redukcijska Matrica 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "Redukcijska Matrica 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Analogni Balans" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Kao neutralno slikanje" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "Kao bijelo XY slikanje" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "Osnovi Izloženosti" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" +"Modeli kamera se razlikuju u trade-offu , istaknutom headroomu i sumu sijena " +"koje prave. Neki ostavljaju velike kolicine istaknutog headroom prilikom " +"normalnog izlaganja. Ovo omogucava veliku negativnu kompenzaciju prilikom " +"izlaganja da bude primjeljena tokom konverzije neobradjenih podataka, ali " +"takodjer znaci da ce normalno izlaganje imati vise suma sjene. Drugi modeli " +"pustaju manje headroom prilikom normalnog izlaganja. Ovo omogucava manje " +"negativnu konpenzaciju prilikom izlaganja, ali daje kao rezultat manji sum " +"sjene prilikom normalnog izlaganja. Zbog ovih razlika konverter neobradjenih " +"podataka mora da mijenja svoju nultu tacku za kontrolu konpenzacije prilikom " +"izlaganja od modela do modela. DeselineExposure odredjuje koliko (u eV) " +"treba pomjeriti nultu tacku. Pozitivne vrijednosti rezultiraju svjetlijim " +"zadanim vrijednostima, dok negativne vrijednosti rezultiraju tamnijim " +"zadanim vrijednostima." + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "Osnovi Å uma" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +msgid "Baseline Sharpness" +msgstr "Osnovi IzoÅ¡trenosti" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "Bayer Zelena Podjela" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" +"Samo se primjenjuje na CFA slike koristeci bayer sablon za filtriranje " +"vektora. Ova oznaka navodi, u arbitrarnim jedinicama, koliko usko su " +"vrijednosti zelenih piksela u plavo / zelenim redovima pratiti vrijednosti " +"zelenih piksela u crveno / zelenim redovima. Vrijednost nula znaci da su " +"dvije vrste zelenih piksela usko povezani, a nenulta vrijednost oznacava " +"razliku medju njima. Raspon koristenja za ovu oznaku je od 0 (nema razlike) " +"do oko 5000(velika razlika)." + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "Linearna granica odgovora" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" +"Neki senzori imaju nepredvidljivu nelinearni odziv kada su blizu sve gornje " +"granice radijusa dekodiranja. Ova nelinearnost uzrokuje pomjeranje boja u " +"oznacenim prostorima rezultujuce slike, dok converter ne konpenzuje ovaj " +"efekat. LinearResponseLimit oznacava dio radijusa dekodiranja iznad kojeg " +"odziv postaje znacajno nelinearan." + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"KameraSerijskiBroj posjeduje serijski broj kamere ili tijela kamere koja je " +"snimila sliku." + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Informacije o Leći" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" +"Sadrži informacije o objektivu kojim je uslikana slika. Ako je minimum f-" +"zaustavi nepoznato, onda bi trebalo biti kodirano s 0/0." + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "Chroma Blur PreÄnik" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" +"ChromaBlurRadius daje prijedlog DNG citacu koliko chroma blura(zamucenja) " +"treba biti primjenjeno na sliku. Ako je ova oznaka izostavljena, citac ce " +"koristiti zadanu kolicinu chroma blura(zamucenja). Uobicajno ova oznaka se " +"ukljucuje za ne-CFA slike, jer se kolicina chroma blura(zamucenja) potrebnog " +"za mozaicne slike je zavisno od demozaicnog algoritma, u tom slucaju se " +"zadana vrijednost DNG citaca optimizuje pomocu Demozaicnog algoritma." + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "Anti Alias Snaga" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" +"Daje prijedlog DNG citacu o tome koliko je kamerin anti-aliasing filter jak. " +"Vrijendost 0.0 znaci da nema anti-aliasing filtera(to znaci da je kamera " +"sklona aliasingu sa nekim subjektima) dok vrijednost 1.0 znaci da kamera ima " +"jak anti-aliasing filter(to znaci da kamera gotovo nikada ne proizvodi " +"aliasing)" + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "Skala Sjene" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" +"Ova oznaka je koriÅ¡tena od Adobe Camera Raw za kontrolu osjetljivosti od " +"njegovog 'Shadows' klizaÄa." + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "DNG Privatni Podaci" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" +"Pruzna nacin da proizvodjaci kamera pohranjuju private podatke u DNG fajlu " +"za upotrebu soibstvenih konvertera, i da imaju te podatke pripremljene za " +"programe koji edituju DNG fajlove." + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "Sigurnost IzraÄ‘ivaÄaBiljeÅ¡ki" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" +"MakeNoteSafetly daje DNG citacu do znanja kada god je sigurno pripremiti " +"oznaku EXIF MakerNote za ostale EXIF podatke. Fajl brovseri i drugi " +"softveri za upravljanje slika, prilikom procesuiranja slike sa unaprijed " +"ugradjenom MakerNote trebaju biti pripremljeni da svaka slicica ugradjena u " +"MakerNote moze biti neazurirana, i moze da ne pokazuje pravo stanje slike u " +"punoj velicini." + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "Kalibracija Osvjetljenost 1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" +"Osvjetljenost koriÅ¡tena za prvi set oznaka kalibracije boje(ColorMatrix1, " +"CameraCalibration1, ReductionMatrix1). Legalne vrijednosti za ovu oznaku su " +"iste kao i legalne vrijednosti za IzvorSvjetlosti EXIF oznaku." + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "Kalibracija Osvjetljenost 1" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" +"Osvjetljenost koriÅ¡tena za opcionalni drugi set oznaka kalibracije " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). Legalne vrijednosti za " +"ovu oznaku su iste kao i legalne vrijednosti za KalibracijaOsvjetljenosti1 " +"oznaku; kako bilo, ako su obje ukljuÄene ,nijednoj nije dozvoljeno da ima " +"vrijednost 0 (nepoznato)." + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "Skala Najboljeg Kvaliteta" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" +"Za neke kamere, najbolja moguća kvaliteta slike se ne postiže Äuvajući " +"ukupan broj piksela tokom pretvorbe. Na primjer, Fujifilm SuperCCD slike " +"imaju maksimum detalja kada je njihov broj piksela uduplan. Ova oznaka " +"specificira iznos za koji vrijednost PodrazumijevanaSkala oznake treba biti " +"pomnožena da bi se postigla najbolja kvaliteta veliÄine slike." + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "Jedinstveni identifikaotr sirovih podataka" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" +"Ova oznaka sadrzi 16 bitni jedinstveni identfikator za sirove slikovne " +"podatke u DNG fajlu. DNG citaci mogu koristiti ovu oznaku da prepoznaju " +"djelimicno sirove slike, cak i ako je naziv slike u metadata sadrzajnom " +"konteneru promjenjen. Ako DNG citac kreira takav identifikator, onda treba " +"koristiti takav algoritam koji ce osigurati da bude malo vjerovatno da dvije " +"razlicite slike zavrse sa istim identifikatorom." + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Orginalni naziv Raw Fajla" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" +"Ako je DNG datoteka konvertovana iz ne-DNS rijetke datoteke, onda ova oznaka " +"sadrži ime od te originalne rijetke datoteke." + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "Orginalni podaci Raw Fajla" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" +"Ako je DNG fajl konvertovan iz neDNG fajla onda ova oznaka sadrzi " +"kompresovan sadrzaj orginalnog neobradjenog fajla. Sadrzaj ove oznake uvijek " +"koristi Big-endian bitski nacin soritranja. Ova oznaka sadrzi sekvence " +"blokova podataka. Buduce verzije DBG specifikatora mogu definirati blokove " +"podataka, tako da DNG citaci trebaju ignorirati dodatne bitove kod " +"rasclanjivanja oznake. DNG citaci takodjer trebaju takodjer primjetiti kkada " +"blokovi podataka nedostaju na kraju sekvence, i trebali bi preuzeti zadanu " +"vrijednost svih blokova koji nedostaju. Ne postoje poravnavajuci ili puneci " +"bitovi izmedju blokova podataka." + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Aktivno podruÄje" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" +"Ovaj Äetverougao definira aktivne (nemaskirane) piksele senzora.Redoslijed " +"pravougaonih koordinata je: gore, lijevo, dole, desno." + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Maskirana PodruÄja" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" +"Ova oznaka sadrzi listu ne preklopljenih pravouglih koordinata potpuno " +"maskiranih piksela, koji pomocu DNG citaca mogu biti koristeni za " +"odredjivanje razine crnog dekodiranja. Redoslijed svake pravougaone " +"coordinate je : gore, lijevo,dole,desno. Ako je razina crnog dekodiranaj vec " +"smanjena kod sirovih slikovnih podataka, onda ova oznaka ne bi trebala biti " +"koristena, jer maskirani pikseli nisu vise korisni." + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "Kao-Shot ICC Profila" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" +"Ova oznaka sadrzi ICC profil koji u kombinaciji sa AsShotPreProfileMatrix " +"oznakom, omogucuje proizvodjacu kamere nacin da odredi zadano renderiranje " +"boja iz korodinata u prostoru boja kamere (referentne linearne vrijednosti) " +"unutar ICC prostora za konektovanje profila. ICC proctor za konektovanje " +"prostora je izlaz povezan sakalorimetrijskim prostorom, dok su ostale oznake " +"za kalibraciju boja u DNG-u odredjuju konverziju unutar scensko povezanog " +"kalorimetrijskog prostora. Ovo znaci da renderovanje u ovom profile treba " +"ukljucivati bilo koji zeljeni ton skalu mapiranja potrebnog za konverziju " +"izmedju scenski povezanih vrijednosti i izlazno povezanih vrijendosti." + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "Kao-Shot Pre-Profil Matrica" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" +"Ova oznaka se koristi u kombinaciji sa AsShotICCProfile oznakom. Ona " +"odredjuje matricu koja bi trebala biti dodana kordinatama boja kamere prije " +"procesuiranja vrijednosti kroz ICC profil odredjen. AsShotICCProfile " +"oznakom. Matrica je pohranjena u po pravilu skeniranja reda. Ako je " +"ColorPlanes veci od tri, onda se dimenzije podataka o bojama matrice mogu" +"(ali nije potrebno) smanjiti na tri, u tom slucaju AsShotICCProfile bi " +"trebao imati tri umjesto ColorPlanes ulaznih komponenti." + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Trenutni ICC Profil" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Ova oznaka se koristi u kombinaciji sa CurrentPreProfileMatrix oznakom. " +"Oznake CurrentICCProfile i CurrentPreProfileMatrix imaju istu svrhu i " +"upotrebu kao par oznaka AsShotICCProfile i AsShotPreProfileMatrix, osim sto " +"su za koristenje cistih file editor prije nego onih od proizvodjaca kamere." + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "Trenutna Pred-Profil Matrica" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Ova oznaka se koristi u kombinaciji sa CurrentPreProfileMatrix oznakom. " +"Oznake CurrentICCProfile i CurrentPreProfileMatrix imaju istu svrhu i " +"upotrebu kao par oznaka AsShotICCProfile i AsShotPreProfileMatrix, osim sto " +"su za koristenje cistih file editor prije nego onih od proizvodjaca kamere." + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Referenca Projekta" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "Kalibracija Kamere 1" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +#, fuzzy +msgid "Profile Calibration Signature" +msgstr "Kalibracija Osvjetljenost 1" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Kao-Shot ICC Profila" + +#: src/tags.cpp:1235 +#, fuzzy +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" +"UTF-8 string koji sadrži ime aplikacije koja je kreirala predpregled saÄuvan " +"u IFDu." + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Smanjenje Å¡uma" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Tablica Imena" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Kriva nijanse" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +#, fuzzy +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Ova oznaka sadrži informaciju o domaćinu kompjutera koriÅ¡tenu za generiranje " +"slike." + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Autorska prava" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +msgid "Forward Matrix 1" +msgstr "Prednja matrica 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +msgid "Forward Matrix 2" +msgstr "Forward Matrix 2" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "Naziv aplikacije predpregleda" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" +"UTF-8 string koji sadrži ime aplikacije koja je kreirala predpregled saÄuvan " +"u IFDu." + +#: src/tags.cpp:1309 +msgid "Preview Application Version" +msgstr "Verzija aplikacije predpregleda" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" +"UTF-8 string koji sadrži broj verzije aplikacije koja je kreirala " +"predpregled saÄuvan u IFDu." + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Naziv aplikacije predpregleda" + +#: src/tags.cpp:1314 +#, fuzzy +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" +"UTF-8 string koji sadrži ime aplikacije koja je kreirala predpregled saÄuvan " +"u IFDu." + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Opis postavke ureÄ‘aja" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Video Prostor Boje" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Datum pretpregleda" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Centar neobraÄ‘ene slike" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +#, fuzzy +msgid "Original Raw File Digest" +msgstr "Orginalni podaci Raw Fajla" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +msgid "Noise Profile" +msgstr "Profil Å¡uma" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Nepoznata IFD oznaka" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Nije definisano" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Kreativni program" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Akcijski program" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Portretski naÄin" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Pejzažni naÄin" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Multi-mjesto" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Volfram (svjetlo sa žarnom niti)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Lijepo vrijeme" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "OblaÄno vrijeme" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Dnevna svjetlost flourescentno (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Dnevna bijela flourescentno (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Hladna bijela flourescentno (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Bijela flourescentno (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Standardno svjetlo A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Standardno svjetlo B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Standardno svjetlo C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "ISO studio volfram" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Drugi izvor svjetla" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "NepodeÅ¡eno" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "JednoÄipna oblast boje" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "DvoÄipna oblast boje" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "TroÄipna oblast boje" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "Sekvencijalna oblast boje" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Trilinearni senzor" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Linearna sekvencijalna boja" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Skener filma" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "Reflekcijski ispis skener" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Digitalni fotoaparat" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Direktno fotografirano" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Normalni proces" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "PrilagoÄ‘eni proces" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Malo povećanje" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Visoko povećanje" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Malo povećanje" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Smanji visoke pragove" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Blizak pogled" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Udaljeni pogled" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Vrijeme osvjetljenja u sekundama (sec)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"OznaÄava spektralnu osjetljivost svakog kanala koji je aparat koristio. " +"Vrijednost etikete je ASCII string koje je u skladu sa standardnom koji je " +"razvio ASTM tehnÄki komitet." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "Opto-Electoric Funkcija Konverzije" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"OznaÄava Opto-Electoric Conversion Function (OECF) preciziranu u ISO 14524. " +" veza izmeÄ‘u optiÄkog ulaza aparata i vrijednosti slike." + +#: src/tags.cpp:1573 +msgid "Sensitivity Type" +msgstr "Tip osjetljivosti" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "Standardna izlazna osjetljivost" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "PreporuÄeni indeks ekspozicije" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "ISO brzi režim" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "ISO brzi režim" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"Verzija ovog standarda je podržana. Nepostojanje ovog polja je odstupanje od " +"prilagoÄ‘enosti ovom standardu." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Datum i vrijeme (prvobitno)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Datum i vrijeme pravljenja prvobitne fotografije. Za digitalne aparate pamte " +"se datum i vrijeme stvaranja slike." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Dazum i vrijeme (digitilizovano)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Datum i vrijeme kada je slika pohranjena kao digitalni podatak." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Informacije specifiÄne za kompresovane podatke. Kanali svake komponente su " +"ureÄ‘eni od prve komponente do Äetvrte. Za nekompresovane podatke, ureÄ‘ivanje " +"je dato u oznaci . U svakom sluÄaju, obzirom da " +" može jednino da izrazi redoslijed Y, Cb i Cr, " +"ova oznaka je obezbeÄ‘ena kada kompresovani podaci koriste komponente " +"drugacije od Y, Cb, i Cr i da bi se obezbijedila podrÅ¡ka za druge sekvence." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Sažeti biti po pikselu" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Informacije vezane za sažete podatke. Mod za sažimanje koji se koristi za " +"sažimanje slika se mjeri u jedinici bitovi po pikselu." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"Brzina zatvaraÄa. Jedinica je u APEX (Additive System of Photographic " +"Exposure) podeÅ¡avanju." + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Otvor soÄiva. Jedinica je u APEX vrijednosti." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Vrijednost svjetline. Jedinica je vrijednost APEX-a. ObiÄno je u opsegu " +"-99.99 to 99.99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Kompenzacija ekspozicije" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"Kompenzacija ekspozicije. Jedinica je vrijednost APEX-a. ObiÄno je u opsegu " +"-99.99 to 99.99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"Najmanji broj F soÄiva. Jedinica je vrijednost APEX-a. ObiÄno je u opsegu " +"00.00 to 99.99, ali nije ograniÄena u ovom opsegu." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" +"Ova etiketa se popuni kada se fotografiÅ¡e uz pomoć elektronskog blica " +"(stroba)." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"Stvarna žižna daljina soÄiva u mm. Nema pretvaranja za žižnu daljinu 35 mm " +"filmske kamere." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Ova etiketa oznaÄava položaj i mjesto glavnog subjekta na sveobuhvatnoj " +"slici." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "BiljeÅ¡ka fotografa" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Etiketa za prizvoÄ‘aÄa Exif u kojoj smeÅ¡ta željene informacije. Sadržaj " +"zavisi od proizvoÄ‘aÄa." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" +"Oznaka za Exif korisnike, za pisanje kljucnih rijeci i komentara na slici, " +"osim onih u , i bez ogranicenja karakterskog koda kao " +"oznaka ." + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Sub-sekunde Vrijeme" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "Etiketa koja pamti djeliće sekunde za etiketu ." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Sub-sekunde Originalno Vrijeme" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "Etiketa koja pamti djeliće sekunde za etiketu ." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Digitalizacija Vremena ispod sekunde" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "Etiketa koja pamti djeliće sekunde za etiketu ." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "FlashPix verzija" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "Format FlashPix verzije podržan od FPXR datoteke." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"Oznaka o informacijama o prostoru(koji zauzima) boja se uvijek biljezi kao " +"specifikator prostora(prostoru kojeg zauzimaju) boja. Uobicajno sRGB se " +"koristi da se defines eprostor boja temljeno na osnovu specifikacija PC " +"monitora i okoline. Ako se koristi neki drugi prostor boja a ne sRGB, onda " +"se postavlja Uncalibrated. Podatci u formatu slike snimljeni kao " +"Uncalibrated mogu biti tretirani kao sRGB ako s ekonvertuju u FleshPix." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Informacije specifiÄne za kompresovane podatke. Kada se zapisuje " +"kompresovani fajl, ispravna Å¡irina smislene slike mora biti zapisana u ovoj " +"oznaci, bez obzira na to da li postoje poravnjavajući podaci ili marker " +"restarta. Ova oznaka ne bi trebalo da se nalazi u nekompresovanom fajlu." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Informacije specifiÄne za kompresovane podatke. Kada je kompresovana datotka " +"snimljena, validna veliÄina slike mora biti spremljena u ovom tagu, bilo tu " +"ili ne podataka u poravnanju ili restart markera. Ovaj tag ne bi trebao " +"postojati u nekompresovanoj datoteci. Budući da poravnanje podataka nije " +"potrebno u vertikalnom smjeru, broj linija spremljenih u ovom tagu ustvari " +"je isti kao i onaj spremljen u SOF." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" +"Ova oznaka se koristi za snimanje imena audio datoteke vezane uz slikovni " +"podatak. Jedina relacijska informacija snimljena ovdje je Exif audio naziv " +"datoteke i ekstenzija (ASCII string sastavljen od 8 znakova+'.'+ 3 znaka). " +"Put nije snimljen." + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "IFD pokazivac interoprebilnosti" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"Interoperabilni IFD je sastavljen od tagova koji spremaju informacije da " +"osiguraju interoperabilnost i na njega pokazuje sljedeći tag lociran u Exif " +"IFD. Interoperabilna struktura interoperabilnog IFD-a je ista kao i TIFF " +"definirana IFD struktura, ali ne sadrći slikovne podatke karakteristiÄno " +"usporeÄ‘ene sa normalnim TIFF IFD." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"OznaÄava vrijednost stroba (blica) kada je slika napravljena i mjeri se Beam " +"Candle Power Seconds (BCPS)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" +"Ovaj tag sprema tabelu frenkvencija kamere ili ulaznog ureÄ‘aja u pravcu " +"dužine, visine i dijagonalnog smjera slike, kao Å¡to je specificirano u ISO " +"12233." + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "X- rezolucija žariÅ¡ne ravni," + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"OznaÄava broj piksela u smjeru Å¡irine slike (X) po " +" na žariÅ¡noj ravnini kamere." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Y- rezolucija žariÅ¡ne ravni," + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Pokazuje broj piksela u smjeru visine slike (V) po " +" na žariÅ¡noj ravni kamere." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"OznaÄava jedinicu mjere za i " +". Ova vrijednost je ista kao kod ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Ukazuje na položaj glavnog objekta na sceni. Vrijednost ove oznake " +"predstavlja piksele u centru glavnog objekta u odnosu na lijevi kraj, " +"prije procese rotacije po oznaci. Prva vrijednost ukazuje na X " +"broj kolna i druga ukazuje na Y broj redova." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Vrijednost osvjetljenja" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"OznaÄava vrijednost osvjetljenja na aparatu ili ulaznom ureÄ‘aju kada je " +"uslikano." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "OznaÄava tip senzora na aparatu ili ulaznom ureÄ‘aju." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Ukazuje na izvor slike. Ako je DSC snimio sliku, ova oznaka vrijednosti od " +"ove oznake će uvijek biti postavljena na 3, ukazujući na to da je slika " +"snimljenana DSC." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"OznaÄava vrstu prizora. Ako je DSC uslikao fotografiju, vrijednost etikete " +"mora uvijek biti 1, oznaÄavajući da je fotografija neposredno uslikana." + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "Polje Uzorka Filtera Boje" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"NaznaÄava geometrijski Å¡ablon niza filtera boja (CFA) senzora slike kada se " +"koristi senzor opsega boja na jednom Äipu. Nema uticaja na sve metode " +"senzora." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Ovaj tag oznaÄava upotrebu specijalnog procesiranja na podacima slike, kao " +"Å¡to je prevoÄ‘enje na izlaz. Kada je specijalno procesiranje zavrÅ¡eno, od " +"ÄitaÄa se oÄekuje da onesposobi ili minimizira bilo kakvo daljnje " +"procesovanje." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Ovaj tag pokazuje mod izloženosti kada je slika bila snimana. U auto-" +"bracketing modu, kamera snima seriju okvirova iste scene pod razliÄitim " +"postavkama izloženosti." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "Ova etiketa oznaÄava vrijednost moda ravnoteže bele kada je uslikano." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Ova etiketa oznaÄava vrijednost digitalnog uvećanja kada je slikano. " +"Vrijednost 0 oznaÄava da digitalno uvećanje nije korišćeno." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Ova oznaka ukazuje na ekvivalentnu žariÅ¡nu duzinu pod predpostavkom za 35mm " +"film fotoaparata, u mm.Vrijednost 0 znaÄi da je žariÅ¡na duzina je " +"nepoznata. Imajte na umu da se ovaj tag razlikuje od oznake." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Ova oznaka ukazuje na tip scene koja je uslikana. Može biti koriÅ¡tena i za " +"zabilježavanja naÄina u kom je slika uslikana. Primjetite da se ovo " +"razlikuje od oznake." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Ova oznaka predstavlja stepen opÅ¡teg prilagoÄ‘enja pojaÄanja" + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Etiketa oznaÄava smjer obrade kontrasta koji je aparat primijenio kada je " +"uslikao." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Etiketa oznaÄava smijer obrade zasićenja koji je aparat primijenio kada je " +"uslikao." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Etiketa oznaÄava smjer obrade oÅ¡trine koja je aparat primijenio kada je " +"uslikao." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Etiketa oznaÄava uslove slikanja tog specifiÄnog foto-aparata. The tag is " +"used only to indicate the picture-taking conditions in the reader." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Ova etiketa oznaÄava udaljenost subjekta." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Etiketa jedinstveno obilježava svaku fotografiju. Pamti se kao ASCII string " +"koji je jednak heksadecimalnoj bilježenju i stalne je dužine od 128 bitova." + +#: src/tags.cpp:1839 +msgid "Camera Owner Name" +msgstr "Ime vlasnika kamere" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" +"Ova oznaka sadrži ime vlasnika kamere koriÅ¡tene za slikanje, snimljeno u " +"ASCII string." + +#: src/tags.cpp:1843 +msgid "Body Serial Number" +msgstr "Serijski broj tijela" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" +"Ova oznaka sadrži serijski broj tijela kamere koriÅ¡tene za slikanje, " +"snimljen u ASCII string." + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "Specifikacije objektiva" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +msgid "Lens Make" +msgstr "ProizvoÄ‘aÄ objektiva" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" +"Ova oznaka sadrži naziv proizvoÄ‘aÄa objektiva, snimljen u ASCII string." + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" +"Ova oznaka sadrži ime modela objektiva i broj modela objektiva, snimljene u " +"ASCII string." + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" +"Ova oznaka sadrži serijski broj izmjenjivog objektiva koji je koriÅ¡ten za " +"slikanje, snimljen u ASCII string." + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Nepoznatna Exif oznaka" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Sjever" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Jug" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Istok" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Zapad" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Iznad nivoa mora" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Ispod nivoa mora" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Mjerenje u toku" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Mjerenje Interoperabilnosti" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Dvodimenzionalno mjerenje" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Trodimenzionalno mjerenje" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "Ävorova" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Pravi smjer" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Magnetni smjer" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilometri" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Milje" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "ÄŒvor" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Bez korekcije" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Ispravka privaćena" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"OznaÄava verziju od . Ovo je verzija 2.0.0.0. Ova etiketa je " +"obavezna kad je prisutna etiketa . (Primjedba: Etiketa " +" se izražava u bajtovima, za razliku od etikete ." +"Ako je verzija 2.0.0.0, vrijednost etikete je 02000000.H)." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "GPS Referenca Å irine" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"OznaÄava sjevernu ili južnu geogr. Å¡irinu. ASCII slovo 'N' oznaÄava " +"sjevernu, a 'S' južnu Å¡irinu.." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"OznaÄava geogr. Å¡irinu. Ona se mjeri u stepenima, minutima i sekundama i " +"zapisuje u racionalnim brojevima. Ako su izraženi i stepeni, minuti i " +"sekunde, koristi se oblik dd/1,mm/1,ss/1. Ako je izraženo samo u stepenima i " +"minutima, i minuti su, recimo, izraženi u dvije decimale, oblik je dd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "GPS Referenca Dužine" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"OznaÄava istoÄnu ili zapadnu geogr. dužinu. ASCII slovo 'E' je za istoÄnu, " +"a 'W' za zapadnu dužinu." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"OznaÄava geogr. dužinu. Ona se mjeri u stepenima, minutima i sekundama i " +"zapisuje u racionalnim brojevima. Ako su izraženi i stepeni, minuti i " +"sekunde, koristi se oblik dd/1,mm/1,ss/1. Ako je izraženo samo u stepenima i " +"minutima, i minuti su, recimo, izraženi u dvije decimale, oblik je dd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"OznaÄava visinu u odnosu na obilježivaÄ visine. Ako se mjeri u odnosu na " +"nivo mora, i visina je iznad nivoa mora, postavlja se 0. Ako je visina ispod " +"nivoa mora, postavlja se 1 i na visinu se gleda kao na apsolutnu vrijednost " +"u etiketi GSPAltitude. Jedinica su metri. Ova etiketa je tipa BYTE, za " +"razliku od drugih etiketa upućivaÄa." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"OznaÄava visinu u odnosu na upućivaÄ u GPSAltitudeRef. Visina se izražava " +"kao racionalni broj. Jedinica su metri." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" +"Pokazuje vrijeme kao UTC (koordiniranom univerzalnom vremenu). izrazen kao tri racionalne vrijednosti pokazujuci sat, minute, i " +"sekunde (atomski sat)." + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" +"Ukazuje na GPS satelite koriÅ¡tene za mjerenje. Ova oznaka može biti " +"koriÅ¡tena za opis broja satelita, njihovog ID broja, ugla elevacije, " +"azimuta, SNR-a i drugih informacija u ASCII notaciji. Format nije " +"sprecificiran. Ako je GPS prijemnik onesposobljen za mjerenje, vrijednost " +"oznake je ostavljenja na NULL." + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" +"Ukazuje na status GPS prijemnika kad je slika snimljena. \"A\" znaci da je " +"mjerenje u tijeku, i \"V\" znaÄi da je mjerenje interoperabilno." + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" +"Ukazuje na GPS naÄin mjerenja. \"2\" znaÄi dvodimenzionalno mjerenje i \"3\" " +"znaÄi trodimenzionalno mjerenje je u tijeku." + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "GPS podaci stepena preciznosti" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" +"Ukazuje na GPS DOP (stupanj preciznosti podataka). HDOP vrijednosti je " +"zapisana tijekom dvodimenzionalnog mjerenja, i PDOP tijekom " +"trodimenzionalnog mjerenja." + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" +"Ukazuje na jedinicu koriÅ¡tenu za izražavanje GPS brzine kretanja prijemnika. " +"\"K\" \"M\" i \"N\" predstavljaju redom kilometre po satu, milje po satu i " +"Ävorove." + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "Ukazuje na brzinu GPS kretanja primjenika." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "GPS praćenje Ref" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Ukazuje na referencu za usmjeravanje GPS kretanja prijemnika. \"T\" " +"predstavlja taÄan pravac i \"M\" je magnetni pravac kretanja." + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"Ukazuje na smjer kretanja GPS prijemnika. Raspon vrijednosti je izmeÄ‘u " +"0.00 i 359.99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Ukazuje nagovjeÅ¡taj za davanje smjera slike kada je slikana. ''T'' oznaÄava " +"pravi smjer i ''M'' magnetni pravac." + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"Ukazuje na smjer slike kad je snimljena. Raspon vrijednosti je izmeÄ‘u 0.00 " +"i 359.99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" +"Ukazuje geodetski pregled podataka koriÅ¡tene od GPS prijemnika. Ako je " +"pregled podataka ograniÄen na Japan, vrijednost oznake je \"TOKYO\" ili " +"\"WGS-84\"." + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "GPS Referenca Å irine OdrediÅ¡ta" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Pokazuje da li je smjer destinacije sjeverno ili južno. ASCII vrijednost \"N" +"\" oznaÄava sjevernu, a \"S\" južnu usmjerenost." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"Pokazuje geografsku Å¡irinu destinacijske taÄke. Geografska Å¡irina je " +"izražena kao tri racionalne vrijednosti koje predstavljaju stepene, minute i " +"sekunde, respektivno. Ako je geografskas Å¡irina izražena u stepenima, " +"minutama i sekundama, tipiÄni format bi bio dd/1.mm/1.ss/1. Kad su stepeni i " +"minute koriÅ¡tene i, na primjer, frakcije u minutama su dane do dva decimalna " +"mjesta, format bi bio dd/1.mmmmm/100,0/1." + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "GPS Referenca Dužine OdrediÅ¡ta" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"Pokazuje da li je udaljenost do krajnje destinacije istoÄno ili zapadno " +"orijentisana.ASCII vrijednost \"E\" pokazuje istoÄni, a \"W\" zapadni smjer." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"Pokazuje geografsku dužinu destinacijske taÄke. Geografska dužina je " +"izražena kao tri racionalne vrijednosti koje predstavljaju stepene, minute i " +"sekunde, respektivno. Ako je geografska dužina izražena u stepenima, " +"minutama i sekundama, tipiÄni format bi bio ddd/1,mm/1,ss/1. Kadas su " +"stepeni i minute koriÅ¡tene i, na primjer, frakcije minuta su dane sa dva " +"decimalna mjesta, format će biti ddd/1,mmmm/100,0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Pokazuje uputu za odreÄ‘ivanje pravca destinacije.\"T\" obilježava stvarni " +"pravac, a \"M\" magnetni." + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" +"Ukazuje na smjer prema taÄki odrediÅ¡ta. Raspon vrijednosti je izmeÄ‘u 0.00 i " +"359.99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" +"Pokazuje jedinicu upotrijebljenu za izražavanje udaljenosti do krajnje " +"destinacije. \"K\",\"M\" i \"N\" predstavljaju kilometre, milje i Ävorova." + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Pokazuje udaljenost do odrediÅ¡ta" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" +"Znakovni string snima naziv metode upotrijebljene za pretraživanje lokacije." +"Prvi bajt pokazuje upotrijebljeni znakovni kod i popraćen je nazivom metode." + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" +"Znakovni string snima ime GPS lokacije. Prvi bajt ukazuje na upotrijebljeni " +"znakovni kod i popraćen je imenom GPS lokacije." + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "GPS oznaka datuma" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" +"Znakovni string snima informacije o datumu i vremenu u odnosu na UTC " +"(Koordinirano svjetsko vrijeme). Format je \"GGGG:MM:DD.\"" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" +"Ukazuje na to da li je na GPS prijemnik primjenjena diferencijalna korekcija." + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Nepoznat GPS Info tag" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Interoperabilni indeks" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"NaznaÄava identifikaciju interoperabilnog pravila. Koristite \"R98\" za " +"naznaÄavanje ExifR98 pravila. Koriste se Äetiri bajta ukljuÄujući i " +"terminacioni kod (NULL). Pogledajte zasebno poglavlje za preporuÄena pravila " +"interoperabilnosti Exif standarda (ExifR98) za ostale oznake." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Interoperabilnosna Verzija" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Verzija interoperabilnosti" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Vezani format datoteka slike" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Format fajla slike" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Å irina povezane slike" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Dužina povezane slike" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Nepoznata oznaka za interoperabilnost Exif" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "Pomak" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "Pomak od makernote od poÄetka TIFF zaglavlja." + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Redoslijed bajtova" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" +"Redoslijed bajtova koriÅ¡ten za MarkerNote oznake, MM' (big-endian) or " +"'II' (little-endian)." + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Nepoznata Exiv2 Makernote info oznaka" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Nepoznata oznaka" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Digitalni zoom nije koriÅ¡ten" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "TIFF zaglavlje, offset" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "little endian kodiranje" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "big endian kodiranje" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "bajta" diff --git a/vendor/exiv2-0.25/po/de.po b/vendor/exiv2-0.25/po/de.po new file mode 100644 index 0000000..e2f781a --- /dev/null +++ b/vendor/exiv2-0.25/po/de.po @@ -0,0 +1,27939 @@ +# translation of de.po to german +# translation of de.po to +# German translations of Exiv2. +# Copyright: +# This file is distributed under the same license as the Exiv2 package. +# +# Free Software Foundation, Inc., 2002. +# Lutz Mueller , 2002. +# Marcus Meissner , 2004, 2005. +# Oliver Dörr , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: de\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2008-11-16 21:57+0100\n" +"Last-Translator: Oliver Dörr \n" +"Language-Team: german \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Die Datei konnte nicht geöffnet werden\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Dateiname" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Dateigröße" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Bytes" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "MIME-Typ" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Bildgröße" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Es wurden keine Exif-Daten in der Datei gefunden\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Kamerahersteller" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Kameramodell" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Zeitstempel des Bildes" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Bildnummer" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Belichtungszeit" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Blende" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Belichtungskontrolle" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Blitz" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Blitzkontrolle" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Brennweite" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "35 mm äquivalent" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Entfernung des Motivs" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "ISO Geschwindigkeit" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Belichtungsmodus" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Messmodus" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Makromodus" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Bildqualität" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Exif-Auflösung" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Weißabgleich" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Vorschau" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Keine" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Copyright" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Exif-Kommentar" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(Binärer Wert unterdrückt)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "JPEG-Kommentar" + +#: src/actions.cpp:767 +#, fuzzy +msgid "Preview" +msgstr "Vorschaudaten" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "Pixel" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "Bytes" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Keines der Felder" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "noch" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "wurde in der Datei gefunden" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "" +"Der Erstellungszeitstempel der Bilddatei ist nicht in der Datei gesetzt." + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Der Zeitstempel konnte nicht verarbeitet werden." + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "in der Datei" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Aktualisiere den Zeitstempel auf" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Die Vorschaudaten werden gelöscht." + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Die Exif-Daten der Datei werden gelöscht." + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Die IPTC-Daten der Datei werden gelöscht." + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Der JPEG-Kommentar der Datei wird gelöscht." + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Die XMP-Daten der Datei werden gelöscht." + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Das Bild enthält keine Exif-Bildvorschau.\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Die Vorschau wird geschrieben." + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "in die Datei" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Die Exif-Daten enthalten keine Vorschau.\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Der JPEG-Kommentar wird gesetzt." + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Hinzufügen" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Warnung" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Fehler beim Lesen" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "Wert" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Setzen" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Löschen" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Zeitstempel des Metadatums mit Schlüssel" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "nicht gesetzt\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Justiere" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "durch" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "Jahre" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "Jahr" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "Monate" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "Monat" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "Tage" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "Tag" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Der Zeitstempel konnte nicht verändert werden von" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "nach" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "" +"Es existiert ein Standard-Exif-ISO-Stichwort; dies wird nicht geändert\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Setze den Exif-ISO Wert auf" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Kein Exif-Nutzerkommentar gefunden" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Exif-Nutzerkommentar mit unerwartetem Wertetyp gefunden" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Kein UNICODE-Exif-Nutzerkommentar gefunden" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "Setze den UNICODE-Exif-Nutzerkommentar auf" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Schreibe die Exif-Daten von" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Schreibe die IPTC-Daten von" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Schreibe die XMP-Daten von" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Schreibe den JPEG-Kommentar von" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Die Metadaten konnten nicht in die Datei geschrieben werden" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Das Format des Dateinamens führt zu keinem Dateinamen für die Datei" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Diese Datei hat schon den richtigen Namen" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Datei" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "existiert [O]überschreiben, [r]umbenennen oder [s]überspringen?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Die Datei wird umbenannt nach" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "aktualisiere Zeitstempel" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Fehler beim Umbenennen" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Überschreiben" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Aus" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "An" + +#: src/canonmn.cpp:363 +#, fuzzy +msgid "Format 1" +msgstr "Format" + +#: src/canonmn.cpp:364 +#, fuzzy +msgid "Format 2" +msgstr "Format" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +#, fuzzy +msgid "On (1)" +msgstr "An" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +#, fuzzy +msgid "On (2)" +msgstr "An" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Unbekannt" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Kameraeinstellungen" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Verschiedene Kameraeinstellungen" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Brennweite" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Aufnahmeinfo" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Aufnahmeinformation" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Bildtyp" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Bildtyp" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Firmware Version" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Firmware Version" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +#, fuzzy +msgid "File Number" +msgstr "Blende" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +#, fuzzy +msgid "File number" +msgstr "Dateiname" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Besitzername" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Seriennummer" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Kamera-Seriennummer" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "Kamerainformation" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "Kamerainformation" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Angepasste Funktionen" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "Modell-ID" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Modell-ID" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Bild-Info" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Bild-Info" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "Vorschaubild" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Vorschaubild" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Seriennummer 2" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Seriennummer 2" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Supermakro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Supermakro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF Info" +msgstr "Autofokus-Information" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF info" +msgstr "Autofokus-Information" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Weißabgleichstabelle" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Weißabgleichstabelle" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Linsenmodell" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Linsenmodell" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Interne Seriennummer" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Interne Seriennummer" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "Angepasste Funktionen" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "Verarbeitungssoftware" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "Verarbeitungssoftware" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "Natürliche Farbe" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "Natürliche Farben" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "Farbraum" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD Offset" +msgstr "Offset" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD offset" +msgstr "Offset" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "Linseninformation" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "Aufnahmeinfo" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Farbmatrix" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "Meine Farbdaten" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Canon" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Economy" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normal" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Fein" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "Roh" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Superfein" + +#: src/canonmn.cpp:438 +#, fuzzy +msgid "Normal Movie" +msgstr "Normale Verarbeitung" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Film" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Automatisch" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Rote-Augen" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Langsame Synchronisation" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Auto + Rote-Augen" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "An + Rote-Augen" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Extern" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Einzel / Timer" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Kontinuierlich" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Film" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Kontinuierlich, Gerschwindigkeit prioritisiert" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Kontinuierlich, niedrig" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Kontinuierlich, hoch" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Eine Aufnahme mit Autofokus" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "" + +#: src/canonmn.cpp:469 +#, fuzzy +msgid "AI focus AF" +msgstr "Automatischer Fokus" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Manueller Fokus" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Einzel" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Schwenk-Fokus" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Groß" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Mittel" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Klein" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Mittel 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Mittel 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Mittel 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Vollautomatisch" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manuell" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Landschaft" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Schneller Verschluss" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Langsamer Verschluss" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Nachtszene" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Grauskalierung" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Portrait" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Sport" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Makro/Großaufnahme" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Schwarz/Weiß" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Vivid" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutral" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Blitz aus" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Langsamer Verschluss" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Blätter" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Innen" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Feuerwerk" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Strand" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Unterwasser" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Schnee" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Kinder & Tiere" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Nachtaufnahme" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Digitales Makro" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Meine Farben" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Standbild" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Andere" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Niedrig" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Hoch" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/v" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Automatisch Hoch" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Standard" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Punkt" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Durchschnitt" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Bewertend" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Partiell" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Zentriert gewichtet" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Unbekannt" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Macro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Sehr nahe Aufnahme" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Nahaufnahme" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Mittlere Entfernung" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Weite Entfernung" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Unendlich" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Manuelle Auswahl des Autofokus-Punktes" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Keine (Manueller Fokus)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Automatische Erfassung" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Rechts" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Zentriert" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Links" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Autofokus-Punktauswahl" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Einfach Aufnahme (Auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Programm (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Verschlusspriorität (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Blendenpriorität (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manuell (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Blitz löste nicht aus" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Blitz ausgelöst" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Externer Blitz" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Eingebauter Blitz" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "" + +#: src/canonmn.cpp:980 +#, fuzzy +msgid "FP sync used" +msgstr "Benutzter Autofokus-Punkt" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "Normale automatische Belichtung" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Belichtungskompensation" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "Automatische Belichtungssperre" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "Automatische Belichtungssperre + Belichtungskompensation" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Keine automatische Belichtung" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "An, nur Aufnahme" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Autofokus-Punkt" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Glatt" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "S&W" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Benutzerdefiniert" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Meine Farbdaten" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Vollbild" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Selbstauslöser" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Selbstauslöser" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Qualität" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Blitzmodus" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Blitzmodus-Einstellungen" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Antriebsmodus" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Antriebsmodus-Einstellungen" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Fokusmodus" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Fokusmodus-Einstellung" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Bildgröße" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Einfacher Modus" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Einfacher Aufnahmemodus" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Digitaler Zoom" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Digitaler Zoom" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Kontrast" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Kontrasteinstellungen" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Sättigung" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Sättigungseinstellung" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Schärfe" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Schärfeneinstellung" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "ISO Geschwindigkeitseinstellung" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Belichtungsmessungsmodus" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Belichtungsmessungsmodus-Einstellungen" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Fokustyp" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Fokustypeinstellung" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Ausgewählter Autofokus-Punkt" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Belichtungsprogramm" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Belichtungseinstellung" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Linsentyp" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Linsentyp" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Linse" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"Brennweite der Linse, 'lang' und 'kurz', in Brennweiteneinheiten und " +"Brennweiteeinheit in mm" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +#, fuzzy +msgid "Short focal" +msgstr "Punktfokus" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "Brennweite" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "Brennweite" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Maximale Blende" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Maximale Blende" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Minimale Blende" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Minimale Blende" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Blitzaktivität" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Blitzaktivität" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Blitzdetails" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Blitzdetails" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Kontinuierlicher Fokus" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Einstellung des kontinuierlichen Fokus" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Automatische Belichtung-Einstellungen" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Automatische Belichtung-Einstellungen" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Bildstabilisierung" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Bildstabilisierung" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Blende anzeigen" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Blende anzeigen" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Quellweite zoomen" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "Quellweite zoomen" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "Zielweite zoomen" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "Zielweite zoomen" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "Belichtungsmessungsmodus" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Der Messmodus." + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Fotoeffekt" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Fotoeffekt" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Manuell ausgelöst" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "Manuell ausgelöst" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Farbton" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Farbton" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "Bildqualität" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 1" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Tageslicht" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Wolkiges Wetter" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Wolframlicht" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Leuchtstoffröhre" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Schwarz/Weiß" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Schatten" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Manuelle Temperatur (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "PC Satz 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "PC Satz 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "PC Satz 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Flursozierendes Tageslicht" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Benutzerdefiniert 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Benutzerdefiniert 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Benutzerdefiniert 3" + +#: src/canonmn.cpp:1115 +#, fuzzy +msgid "PC Set 4" +msgstr "PC Satz 1" + +#: src/canonmn.cpp:1116 +#, fuzzy +msgid "PC Set 5" +msgstr "PC Satz 1" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Verschlusspriorität" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "Links" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "Zentriert" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "Rechts" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Zielblende" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Zielverschlussgeschwindigkeit" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Zielverschlussgeschwindigkeit" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Weißabgleich" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Weißabgleichseinstellung" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Reihenfolge" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Fortlaufende Nummer (wenn Sie im Burst-Modus fotografieren)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Benutzter Autofokus-Punkt" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Benutzter Autofokus-Punkt" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Blitzkontrolle" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Entfernung des Motivs" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Motivabstand (Einheiten nicht klar definiert)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Blendenwert" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Verschlussgeschwindigkeitswert" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Verschlussgeschwindigkeit" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 2" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "links nach rechts" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "rechts nach links" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "unten nach oben" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "oben nach unten" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "2x2 Matrix (Im Uhrzeigersinn)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Panoramaeinzelbild" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Nummer des Panoramaeinzelbildes" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Pamoramarichtung" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Pamoramarichtung" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Unbekanntes Canon-Panoramafeld" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Rauschunterdrückung" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Rauschreduktion einer langen Belichtung" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter Ae Lock" +msgstr "Verschlussgeschwindigkeit" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter/AE lock buttons" +msgstr "Verschlusszähler" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Spiegelvorauslösung" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Spiegelvorauslösung" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +#, fuzzy +msgid "Exposure Level Increments" +msgstr "Belichtungsabstand" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Autofokus-Unterstützung" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Autofokus-Lichtunterstützung" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Flash Sync Speed Av" +msgstr "Blitztyp" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Shutter speed in Av mode" +msgstr "Verschlusswert" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "AEB Sequenz" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "AEB Sequenz/Automatischer Abbruch" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "Verschlusszähler" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "Verschlusszähler" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Stoppknopf der Autofokus-Linse" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Stoppknopf der Autofokus-Linse Funktionswechsel" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Automatische Verringerung des Aufhellblitzes" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Automatische Verringerung des Aufhellblitzes" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Menüknopf \"Eingabe\"" + +#: src/canonmn.cpp:1219 +#, fuzzy +msgid "Menu button return position" +msgstr "Menüknopf \"Eingabe\"" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Knopffunktion setzen" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Sensorenreinigung" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Sensorenreinigung" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "Eingeblendetes Display" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "Eingeblendetes Display" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "Mitte - rechts" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "Unten" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "Oben" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "Mitte - links" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "Oben - links" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "Oben - rechts" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "Unten - links" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "Unten - rechts" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Bildbreite" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Bildbreite" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Bildhöhe" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Bildhöhe" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Bildbreite während der Aufnahme" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Bildbreite bei der Aufnahme" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Bildhöhe bei der Aufnahme" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Bildhöhe (bei der Aufnahme)" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Benutzte Autofokus-Punkte" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Benutzte Autofokus-Punkte" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Benutzte Autofokus-Punkte 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Benutzte Autofokus-Punkte (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +#, fuzzy +msgid "ISO" +msgstr "Aufnahmeinfo" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +#, fuzzy +msgid "Medium Movie" +msgstr "Mittel 1" + +#: src/canonmn.cpp:1294 +#, fuzzy +msgid "Small Movie" +msgstr "Film" + +#: src/canonmn.cpp:1300 +#, fuzzy +msgid "On 1" +msgstr "An" + +#: src/canonmn.cpp:1301 +#, fuzzy +msgid "On 2" +msgstr "An" + +#: src/canonmn.cpp:1309 +#, fuzzy +msgid "On (shift AB)" +msgstr "Eine Aufnahme mit Autofokus" + +#: src/canonmn.cpp:1310 +#, fuzzy +msgid "On (shift GM)" +msgstr "Eine Aufnahme mit Autofokus" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Gelb" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Orange" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Rot" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Grün" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Blau" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Lila" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Automatischer Erfassungsschritt" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Automatischer Erfassungsschritt" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "Automatischer Erfassungsschritt" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "Bildqualität" + +#: src/canonmn.cpp:1338 +#, fuzzy +msgid "Raw Jpg Size" +msgstr "Bildgröße" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Automatischer Erfassungsschritt" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "Weißabgleichswert" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "Weißabgleichswert" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +#, fuzzy +msgid "Filter Effect" +msgstr "Farbeffekt" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect" +msgstr "Fotoeffekt" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro Magnification" +msgstr "Elektronische Vergrößerung" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro magnification" +msgstr "Elektronische Vergrößerung" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +#, fuzzy +msgid "Live view shooting" +msgstr "Antriebsmodus-Einstellungen" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Fokusabstand" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Fokusabstand" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "Blitzbelichtungskompensation" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "Blitzbelichtungskompensation" + +#: src/canonmn.cpp:1351 +#, fuzzy +msgid "Unknown Canon File Info tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Standard" + +#: src/canonmn.cpp:1369 +#, fuzzy +msgid "Lowest" +msgstr "Abwärts-Links" + +#: src/canonmn.cpp:1373 +#, fuzzy +msgid "Highest" +msgstr "Hoch" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "Sättigung" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "Sättigung" + +#: src/canonmn.cpp:1384 +#, fuzzy +msgid "CM Set 1" +msgstr "PC Satz 1" + +#: src/canonmn.cpp:1385 +#, fuzzy +msgid "CM Set 2" +msgstr "PC Satz 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monochrom" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Blitzdetails" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "Farbtonkurve" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Farbtonkurve" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "SharpnessFrequency" +msgstr "Schärfe" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "Sharpness frequency" +msgstr "Schärfe-Wert" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "SensorRedLevel" +msgstr "WB_RGGBLevelsShade" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "Schwarzlevel" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "SensorBlueLevel" +msgstr "WB_RGGBLevelsShade" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "Schwarzlevel" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Weißabgleich" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Weißabgleich 2" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr "Weißabgleichswert" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr "Weißabgleichstabelle" + +#: src/canonmn.cpp:1411 +#, fuzzy +msgid "WhiteBalance" +msgstr "Weißabgleich" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Farbtemperatur" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Farbtemperatur" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "PictureStyle" +msgstr "Bildmodus" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "Picture style" +msgstr "Bildmodus" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "Digitales Makro" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "Digitales Makro" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "Eine Aufnahme mit Autofokus" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "Eine Aufnahme mit Autofokus" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "Header, offset" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "Feld" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "Ordner" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "Typ" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "Größe" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "Offset" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(ungültig)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "IIM Umschlagsdatensatz" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "IIM Anwendungsdatensatz 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Modellversion" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Eine binäre Zahl, die die Version des Informations-Austausch-Modell (IIM) " +"vom Anbieter, Teil 1identifiziert. Die Versionsnummern werden von der IPTC " +"und NAA Organisationen zugewiesen." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Ziel" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Dieser Datensatz ist für die Anbieter die Weiterleitungsinformationen " +"oberhalb der entsprechenden OSI-Layer benötigen." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Dateiformat" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Eine binäre Nummer die das Dateiformat repräsentiert. Das Format muss bei " +"IPTC oder NAA durch eine eindeutige Nummer registriert werden, die dem " +"Format zugeordnet wird. Diese Information wird benutzt, um die Daten an das " +"richtige System weiterzuleiten und erlaubt es dem empfangenden System die " +"richtigen Aktionen durchzuführen." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Dateiversion" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Eine binäre Zahl, die genaue Version des Dateiformats angibt, das durch den " +" Feld angegeben wurde." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Dienst-ID" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Identifiziert den Anbieter und das Produkt" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Umschlagsnummer" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Die Zeichen ergeben eine Zahl, die eindeutig ist für das Datum, dass durch " +"das -Feld angegeben wurde und für die Dienst-ID, die durch das " +"-Feld angegeben wurde, ist. Wenn identische " +"Umschlagsnummern mit dem gleichen Datum und der gleichen Dienst-ID " +"auftauchen, dann müssen die Datensätze 2-9 identisch mit dem Original sein. " +"Dies ist nicht als fortlaufende Seriennummer gedacht." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Produkt-ID" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Erlaubt es einem Anbieter eine Teilmenge seiner Dienste zu identifizieren. " +"Sie wird dazu benutzt, damit die empfangende Organisation wählen kann wie " +"die Daten weitergeleitet oder anderweitig behandelt werden." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Unschlagspriorität" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"Gibt die Behandlungspriorität des Umschlags an und nicht die redaktionelle " +"Wichtigkeit. Dazu ist das -Feld gedacht. \"1\" steht für die " +"höchste Priorität, \"5\" für normal und \"8\" für die geringste. Die Nummer " +"\"9\" ist für eine benutzerdefinierte Priorität und \"0\" für eine " +"zukünftige Anwendung." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Sendedatum" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Benutzt das Format CCYYMMDD (Jahrhundert/C, Jahr/Y, Monat/M, Tag/D), wie im " +"ISO Standard 8601 angegeben, um das Jahr, den Monat und den Tag anzugeben an " +"dem das Material gesendet wurde." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Sendezeit" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Benutzt das Format HHMMSS:HHMM wobei HHMMSS die lokale Stunde/H, Minute/M " +"und Sekunden/S darstellt und HHMM die Stunden/H und Minuten/M bevor (+) oder " +"hinter (-) der UTC Zeit die im ISO Standard 8601 beschrieben wird. Dies ist " +"die Uhrzeit zu der das Material versendet wurde." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Zeichensatz" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Dieses Feld enthält eine oder mehrere Kontrollfunktionen die benutzt werden " +"für die Ankündigung, Aufruf oder Zuweisung von kodierten Zeichensätzen. Die " +"Kontrollfunktionen folgen dem ISO 2022 Standard und können aus einem Escape " +"Kontrollzeichen und mehreren Graphikzeichen bestehen." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Eindeutiges Namensobjekt" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Dieses Feld stellt, wie im IIM spezifiziert, eine globale eindeutige " +"Identifikation für Objekte zur Verfügung, die unabhängig vom Anbieter und " +"der Medienform ist. Der Anbieter muss gewährleisten, dass das eindeutige " +"Namensobjekt auch wirklich eindeutig ist. D.h. Objekte mit demselben " +"Namensobjekt sind identisch." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "ARM-ID" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"Das \"DataSet\" identifiziert die \"Abstract Relationship Method-ID\" (ARM). " +"Dies ist in einem Dokument beschrieben, dass der Urheber des ARM bei den " +"Organisationen IPTC und NAA registriert hat." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "ARM-Version" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Dieses Feld enthält eine binäre Nummer die die genaue Version des ARM " +"angibt, der mit dem Feld angegeben wurde." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Datensatzversion" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Eine binäre Nummer, die vom Erzeuger angepasst wurde, die die Version des " +"\"Information Interchange Model, Part II\" angibt. Die versionen werden " +"durch die Organisationen IPTC und NAA zugewiesen." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Motivtyp" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"Der Objekttyp wird benutzt, um zwischen verschiedenen Typen innerhalb des " +"IIM zu unterscheiden. Der erste Teil ist eine Nummer, die ein " +"sprachunabhängige Referenz auf den Objekttyp gefolgt von einem Doppelpunkt " +"bildet. Der zweite Teil, wenn er benutzt wird, ist eine Textrepräsentation " +"der Nummer des Objekttyps, die aus graphischen Zeichen und Freistellen in " +"Englisch oder in der Sprache besteht, die mit dem Feld " +"angegeben wurde." + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Motivattribut" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"Das Attribut Objekt definiert die Natur des Objektes unabhängig vom Motiv. " +"Der erste Teil ist eine Nummer, gefolgt von einem Doppelpunkt, die " +"sprachunabhängig die international Referenz auf das Objektattribut " +"repräsentiert. Der zweite Teil enthält, wenn er benutzt wird, einen Text aus " +"Zeichen und Freizeichen, in englisch oder der Sprache die durch das Feld " +" angegeben wird. Dieser Text repräsentiert die " +"Attributnummer." + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Motivname" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"Wird als Kurzreferenz für das Motiv benutzt. Wird zu existierenden Daten wie " +"z.B. aktualisierten Stories, neuen Zuschnitten der geänderten Fotos, " +"aktualisiert. Sollte mit dem Feld identifiziert werden." + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Dokumententitel" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Bearbeitungsstatus" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "Der Status der Motivdaten wie der Anbieter ihn benutzen will." + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Redaktionelle Aktualisierung" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"Gibt den Typ der Aktualisierung zwischen diesem und dem vorangegangenen " +"Objekt an. Die Verknüpfung zu dem vorangegangenen Objekt wird über die " +"Felder und hergestellt. Dies geschieht durch " +"die Standards des Anbieters." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Dringlichkeit" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Gibt die redaktionelle Wichtigkeit des Inhalts an und nicht notwendigerweise " +"die Wichtigkeit, mit der der Umschlag behandelt werden muss. Siehe Feld " +". \"1\" ist die höchste, \"5\" normal und \"8\" die " +"niedrigste Wichtigkeit." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Motiv" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" +"Die Referenz des Motivs ist eine strukturierte Definition des Motivs, um das " +"es sich dreht." + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Kategorie" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"Identifiziert das Motiv der Objektdaten aus der Sicht des Anbieters. Eine " +"Liste von Kategorien wird durch eine regionale Instanz, insofern vorhanden, " +"verwaltet. Wenn nicht wird die Liste vom Anbieter bereitgestellt." + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Zusätzliche Kategorie" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"Zusätzliche Kategorien verfeinern das Motiv der Objektdaten. Eine " +"zusätzliche Kategorie kann jede bekannte Kategorie die im Feld " +"enthalten ist. Falls nicht, so bleibt die Auswahl der zusätzlichen Kategorie " +"beim Anbieter." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Zusätzliche Kategorien" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "Fix-ID" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Identifiziert Objektdaten die häufiger und vorhersagbar wieder auftreten. " +"Dadurch wird es dem Benutzer möglich ein solches Objekt schnell zu finden " +"oder wieder aufzurufen." + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Schlüsselbegriffe" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"Schlüsselbegriffe werden benutzt, um spezielle Abfrageworte zu hinterlegen. " +"Dabei wird davon ausgegangen, dass verschiedenen Typen von Daten, die mit " +"demselben Motiv in Verbindung stehen, dieselben Schlüsselbegriffe benutzen. " +"Dies erlaubt es dem empfangenden System oder den Subsystemen über alle Typen " +"von Daten zu suchen um zusammengehörendes Material zu finden." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Ortscode" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"Gibt den Code des Landes bzw. der geographischen Lage an, die den Inhalt des " +"Motivs entspricht. Wenn ISO einen passenden Ländercode in der ISO 3166 " +"eingeführt hat, dann wird dieser benutzt. Wenn kein Code für die Lokation " +"existiert, z.B. für Schiffe auf See oder im Weltraum, dann wird IPTC einen " +"entsprechenden Code gemäß der Vorschriften von ISO 3166 aus drei Zeichen " +"einführen um Konflikte zu vermeiden." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Ortsname" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Stellt einen kompletten, veröffentlichbaren Namen des Landes/des " +"geographischen Ortes zur Verfügung der dem Inhalt des Motivs entspricht. " +"Dies geschieht nach den Richtlinien des Anbieters." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Freigabedatum" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"Gibt im Format JJJJMMTT das früheste Datum an, an dem der Anbieter eine " +"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Freigabezeit" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"Gibt im Format SSMMSS:HHMM die früheste Zeit an, an dem der Anbieter eine " +"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Verfalldatum" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Gibt im Format JJJJMMTT das letzte Datum an, an dem der Anbieter eine " +"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Verfallzeit" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Gibt im Format SSMMSS:HHMM die letzte Zeit an, an dem der Anbieter eine " +"Benutzung des Motivs vorgesehen hat. Es folgt dem ISO 8601 Standard." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Besondere Anweisungen" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Andere redaktionelle Anweisungen, wie z.B. Embargos und Warnungen, bezüglich " +"der Benutzung der Objektdaten." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Anweisungen" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Empfohlene Aktion" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"Gibt den Typ der Aktion an, die dieses Objekt für ein vorangegangenes Objekt " +"zur Verfügung stellt. Die Verknüpfung zum vorangegangenen Objekt wird mit " +"den Feldern und nach den Standards des " +"Anbieters hergestellt." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Referenzdienst" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Gibt den Dienstidentifizierer eines vorangegangenen Umschlags an, auf den " +"das aktuelle Objekt verweist." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Referenzdatum" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" +"Gibt das Datum eines vorangegangenen Umschlags an, auf den das aktuelle " +"Objekt verweist." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Referenznummer" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" +"Gibt die Umschlagsnummer eines vorangegangenen Umschlags an, auf den das " +"aktuelle Objekt verweist." + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Erstellungsdatum" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Gibt in der Form JJJJMMTT das Datum des intellektuellen Inhalts an dem die " +"Objektdaten erstellt wurden an. Nicht jedoch das datum der Erstellung der " +"phyiskalischen Repräsentation. Es wird der ISO 8601 Standard benutzt." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Erstellungszeit" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Gibt in der Form SSMMSS:HHMM die Uhrzeit des intellektuellen Inhalts an dem " +"die Objektdaten erstellt wurden an. Nicht jedoch das datum der Erstellung " +"der phyiskalischen Repräsentation. Es wird der ISO 8601 Standard benutzt." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Digitalisierungsdatum" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Gibt in der Form JJJJMMTT das Datum an, an dem die digitale Version der " +"Objektdaten erstellt wurde. Es wird der ISO 8601 Standard benutzt." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Digitalisierungszeit" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Gibt in der Form SSMMSS:HHMM die Uhrzeit an, an dem die digitale Version der " +"Objektdaten erstellt wurde. Es wird der ISO 8601 Standard benutzt." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Programm" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "Gibt den benutzen Programmtyp zum Erzeugen der Objektdaten an." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Programmversion" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" +"Gibt die Version des Programms an, dass mit dem Feld angegeben " +"swurde." + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Objektzyklus" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "Gibt den redaktionellen Zyklus der Objektdaten an." + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Verfasserzeile" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"Enthält den Namen des Erstellers, wie z.B. Autor, Fotograph oder Graphiker, " +"des Motivs." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Autor" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Titel der Verfasserzeile" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" +"Der Titel der Verfasserzeile ist der Titel des oder der Ersteller der " +"Objektdaten." + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Stadt" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"Identifiziert die Stadt, nach dem Standard des Anbieters, in der das Motiv " +"liegt." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Genauer Ort" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"Identifiziert den Ort innerhalb der Stadt, nach dem Standard des Anbieters, " +"in der das Motiv liegt." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Provinz/Staat" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" +"Identifiziert enthält die Provinz bzw. den Staat, nach dem Standard des " +"Anbieters, in der das Motiv liegt." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Staat/Provinz" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Länderkode" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Gibt den Kode des Landes/des primären Ortes an, in dem das geistige Eigentum " +"der Objektdaten erstellt wurde. Dies ist z.B. für ein Foto der Ort an dem es " +"gemacht wurde oder ein Ereigniss geschah. Für die Orte die von dem " +"entsprechenden ISO-Länderkode 3166 erfasst sind, wird diese Kode benutzt. " +"Wenn ISO 3166 keine adäquate Möglichkeit zur Identifikation darstellt, z.B. " +"bei Schiffen oder im Weltraum, dann wird IPTC einen passenden Kode aus drei " +"Zeichen zur Verfügung stellen. Hierbei wird die ISO 3166 zur Vermeidung von " +"Konflikten berücksichtigt." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Ländername" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Stellt den vollen, veröffentlichbarern Namen des Landes bzw. der primären " +"Lokation zur Verfügung, wo das intellektuelle Eigentum der Objektdaten " +"erstellt wurde. Hierbei werden die Richtlinien des Anbieters beachtet." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Land" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Übertragungsreferenz" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"Ein Code nach den Standards des Anbieters, der den Ursprung der " +"Originalübertragung angibt." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Schlagzeile" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" +"Ein veröffentlichbarer Eintrag, der eine Zusammenfassung des Inhalts der " +"Objektdaten zur Verfügung stellt." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Anbieter" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" +"Identifiziert den Anbieter der Objektdaten. Dies ist nicht unbedingt der " +"Besitzer oder der Ersteller." + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Quelle" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Identifiziert den Originalbesitzer des intellektuellen Inhalts der " +"Objektdaten. Dies kan eine Agentur, ein Mitglied einer Agentur oder ein " +"Individuum sein." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "Enthält die Notwendigen Copyright-Notizen." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Copyright-Notiz" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Kontakt" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Identifiziert die Person oder Organisation, die weitere " +"Hintergrundinformationen über die Objektdaten zur Verfügung stellen kann." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Abschnitt" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "Eine textuelle Beschreibung der Objektdaten." + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Beschreibung" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Schreiber" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Identifiziert den Namen der Person, die beim Schreiben, Bearbeiten oder dem " +"Korrigieren der Objektdaten, der Beschriftung oder der Zusammenfassung " +"beteiligt war." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Gerasterte Beschriftung" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"Enthält die Beschreibung der Objektdaten gerastert und wird benutzt wenn " +"nicht kodierte Zeichen für die Beschriftung benötigt werden." + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Gibt die Farbkomponenten eines Bildes an." + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Bild-Orientierung" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Gibt das Layout eines Bildes an." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Sprache" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"Beschreibt die Hauptsprache eines Objektes. Dazu wird der zwei Zeichen-Kode " +"nach ISO 639:1988 benutzt. Dadurch wird keine Zeichensatzkodierung definiert " +"oder impliziert. Es kann aber für eine interen Weiterleitung benutzt werden, " +"z:B. durch die richtigen redaktionellen Abteilungen." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Audiotyp" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Gibt den Typen eines Audioinhalts an." + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Audiorate" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Gibt die Sampling Rate eines Audioinhalts in Hertz an." + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Audioauflösung" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "Gibt die Sampling-Auflösung eines Audioinhalts an." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Audiodauer" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Gibt der Dauer eines Audioinhalts an." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Audio-Outcue" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Identifiziert den Inhlat am Ende eines Audiodatenobjektes nach den " +"Anbieterrichtlinen." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Vorschauformat" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Eine binäre Zahl die das Dateiformat der Vorschau der Objektdaten " +"repräsentiert. Das Dateiformat muss bei den Organisationen IPTC oder NAA " +"registriert sein und bekommt dort die eindeutige Zahl zugewiesen." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Vorschauversion" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Eine binäre Zahl die die genaue Version eines der Vorschau eines " +"Datenobjektes im Feld angibt." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Vorschaudaten" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Vorschaudaten des binären Bildes." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Ungültig)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Unbekannter Datensatz" + +#: src/error.cpp:55 +#, fuzzy +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Fehler %0: arg1=%1, arg2=%2, arg3=%3." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Erfolgreich" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Dies scheint kein %1-Bild zu sein." + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Ungültiger Datensatzname \"%1\"" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Ungültiger Datensatzname \"%1\"" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Ungültiger Schlüssel \"%1\"" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Ungültiger Feldname oder IFD-ID `%1', IFD-ID %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Wert nicht gesetzt" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Die Datenquelle konnte nicht geöffnet werden: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Die Datei konnte nicht geöffnet werden (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: Die Datei enthält Daten eines unbekannten Bildtyps." + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Der Speicher enthält Daten eines unbekannten Bildtypes." + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Der Bildtyp %1 wird nicht unterstützt." + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Die Bilddaten konnten nicht gelesen werden." + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Dies scheint kein JPEG-Bild zu sein." + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" +"%1: Die Datei konnte nicht für Lese- und Schreibzugriff gemappt werden: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Datei konnte nicht umbenannt werden nach %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Transfer fehlgeschlagen: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Speichertransfer fehlgeschlagen: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Die Eingabedaten konnten nicht gelesen werden." + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Das Bild konnte nicht geschrieben werden." + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Die Eingabedaten enthalten kein gültiges Bild." + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "Ungültige IFD-ID %1" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Entry::setValue: Wert zu groß (Feld=%1, Größe=%2, Angefragt=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Entry::setDataArea: Wert zu groß (Feld=%1, Größe=%2, Angefragt=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Offset ausserhalb des zulässigen Bereiches" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Nicht unterstützter Datenbereich für den Offsettyp" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "Ungültiger Zeichensatz: \"%1\"" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Nicht unterstütztes Datumsformat" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Nicht unterstütztes Zeitformat" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Das Schreiben von %2-Bildern wird nicht unterstützt." + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Das Setzen von %1 in %2-Bildern wird nicht unterstützt." + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Dies scheint kein CRW Bild zu sein." + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: Nicht unterstützt" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "Keine Namensrauminformation für den XMP-Präfix `%1' verfügbar" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"Es ist kein Präfix registriert für den Namensraum `%2', dieser wird benötigt " +"für den Eigenschaftspfad `%1'" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "Die Größe des %1 JPEG-Segments ist größer als 65535 Bytes." + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Nicht verwaltbares XMP-Datum %1 vom Typ %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "Nicht verwaltbarer XMP-Knoten %1 mit opt=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Fehler des XMP-Werkzeugsatzes %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" +"Fehler beim Dekodieren der alternativen Spracheigenschaft %1 mit opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Fehler beim Dekodieren der alternativen Sprachvermerks %1 mit opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Fehler beim Enkodieren der alternativen Spracheigenschaft %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" +"Fehler bei der Bestimmung des Eigenschaftsnamen aus dem Pfad %1, Namensraum " +"%2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "Namensraum des Schemas %1 ist nicht im XMP Werkzeugsatz registriert" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Es ist kein Namensraum für den Präfix `%1' registriert" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Aliase werden nicht unterstützt. Bitte senden Sie dieses XMP-Packet an " +"ahuggel@gmx.net `%1', `%2', `%3'" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Ungültiger Xmp-Texttyp `%1'" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "Der TIFF Ordner %1 hat zu viele Einträge" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Mehrfache TIFF-Feldelemente %1 in einem Ordner" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "Das TIFF-Feldelement %1 hat den falschen Typ" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 hat ungültigen XMP-Wertetyp \"%1\"" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Copyright (C) 2004-2015 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Dieses Programm ist freie Software. Sie können es weitergeben und/oder\n" +"verändern unter den Bedingungen der GNU General Public Lizenz, die von\n" +"der Free Software Foundation veröffentlicht wurde. Gültig ist die Version 2\n" +"der Lizenz oder, wenn Sie es wünschen, spätere Versionen.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Dieses Programm wird Ihnen in der Hoffnung zur Verfügung gestellt,\n" +"das Sie es brauchbar finden. Es gibt KEINE GARANTIE, noch nicht mal\n" +"eine implizite Zusicherung allgemeiner Gebrauchstauglichkeit oder der\n" +"Zusicherung der erforderlichen Gebrauchstauglichkeit. Weitere Details\n" +"finden Sie in der GNU General Public Lizenz.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Sie sollten mit diesem Programm eine Kopie der GNU General Public\n" +"Lizenz bekommen haben. Falls nicht, so wenden Sie sich bitte an die\n" +"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Benutzung:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ Optionen ] [ Aktionen ] Datei ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Ändert die Exif-Metadaten von Bildern.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Aktionen:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust ändert die Exif-Zeitstempel um eine gegebene Zeit. Diese\n" +" Aktion benötigt mindestens eine der Optionen -a, -Y, -O oder " +"-D.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Druckt die Metadaten des Bildes.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Löscht die Bildmetadaten aus den Dateien.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Fügt die Metadaten aus den zugehörigen *.exv Dateien ein.\n" +" Benutzen Sie die Option -S um die Erweiterung der " +"Eingabedateien zu ändern.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Extrahiert die Metadaten in *.exv, *.xmp und " +"Bildvorschaudateien.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Benennt Dateien und/oder setzt die Dateizeitstempel passend " +"zu den\n" +" Exif-Erstellungszeitstempeln. Das Format der Dateinamen kann " +"mit der Option\n" +" -r format gesetzt werden. Die Optionen der Zeitstempel " +"werden mit -t und -T kontrolliert.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Wendet Kommandos zum Ändern (Hinzufügen, Setzen, Löschen) " +"der Exif- und\n" +" IPTC-Metadaten von Bilddateien an oder setzt den JPEG-" +"Kommentar.\n" +" Benötigt zusätzlich eine Option von -c, -m oder -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Kopiert die ISO-Einstellungen aus der Nikon-" +"Herstellerbemerkung in das reguläre\n" +" Exif-Feld.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" +" fc | fixcom Konvertiert den UNICODE-Exif-Nutzerkommentar nach UCS-2. Die " +"zugehörige\n" +" Zeichenkodierung kann mit der Option -n angegeben werden.\n" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Optionen:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Gibt diese Hilfe aus und beendet sich.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Zeigt die Programmversion an und beendet sich.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Ausführliche Meldungen während des Programmlaufs.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" +" -q Schaltet Warnungen und Fehlermeldungen während des Programmlaufs " +"stumm (quiet).\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" +" -Q lvl Setzt das Log-Level zu d(ebug), i(nfo), w(arning), e(rror) oder m" +"(ute).\n" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Zeigt große binäre Werte an.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Zeigt unbekannte Felder an.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g key Ausgabe nur für diesen Schlüssel (grep).\n" + +#: src/exiv2.cpp:271 +#, fuzzy +msgid " -K key Only output info for this key (exact match).\n" +msgstr " -g key Ausgabe nur für diesen Schlüssel (grep).\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n enc Setzt den Zeichensatz, um UNICODE-Exif-Nutzerkommentare zu " +"dekodieren.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Bewahrt die Dateizeitstempel (keep).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Setzt bei der Aktion 'Umbenennen' auch die Zeitstempel der Datei " +"(überschreibt -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Setzt bei der Aktion 'Umbenennen' nur die Dateizeitstempel und " +"benennt die Datei nicht um (überschreibt -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -f Keine Nachfrage beim Überschreiben existierender Dateien " +"(force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F Keine Nachfrage beim Umbenennen von Dateien (Force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a time Zeitjustierung im Format [-]HH[:MM[:SS]]. Diese Option wird\n" +" nur in Zusammenhang mit der Aktion 'adjust' benutzt.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y yrs Justierung von Jahren in der Aktion 'adjust'.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mon Justierung der Monate in der Aktion 'adjust'.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D day Justierung von Tagen in der Aktion 'adjust'.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr " -p mode Druckmodus für die Aktion 'Drucken'. Mögliche Modi sind:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" +" s : druckt eine Zusammenfassung der Exif-Metadaten (Standard)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : druckt Exif-, IPTC- und XMP-Metadaten (Kurzform für -" +"Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t : interpretierte (übersetzte) Exif-Daten (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : blanke Exif-Datenwerte (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : Hexdump der Exif-Daten (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : IPTC-Datenwerte (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : XMP-Eigenschaften (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : JPEG-Kommentar\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : listet verfügbare Voransichten auf\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : Blanker Datenwert\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " X : XMP-Eigenschaften\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs Druckflags zur Feinsteuerung der Feldliste (Aktion 'Drucken'). " +"Gültig sind:\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : berücksichtigt Exif-Felder in der List\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : IPTC-Datensätze\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : XMP-Eigenschaften\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : druckt eine Spalte mit der Feldnummer\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : Gruppenname\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : Schlüssel\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : Feldlabel\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : Feldname\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : Typ\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : Anzahl der Komponenten (Zähler)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : Größe in Bytes\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : Blanker Datenwert\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : interpretierte, übersetzte Daten\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : Hexdump der Daten\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" +" -d tgt Löschziel(e) für die Aktion \"Löschen\". Mögliche Ziele sind:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : alle unterstützten Metadaten (Standard)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : Exif-Abschnitt\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : Nur die Exif-Vorschau\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : IPTC-Daten\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : XMP-Paket\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Einfügeziel(e) für die Aktion \"Einfügen\". Mögliche Ziele sind\n" +" die gleichen wie bei der Option -d und ein Modifizierer:\n" +" X : Fügt die Metadaten aus der XMP-Zusatzdatei .xmp ein\n" +" Nur JPEG-Bildvorschauen können eingefügt werden. Sie müssen den " +"Namen\n" +" -thumb.jpg haben.\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt Extraktionsziel(e) für die Aktion 'Extrahieren'. Mögliche Ziele " +"sind\n" +" die gleichen wie bei der Option -d sowie ein Ziel zum " +"Extrahieren\n" +" von Vorschaubildern und ein Modifizierer zum Erzeugen einer XMP-" +"Zusatzdatei:\n" +" p[[, ...]] : Extrahiert Vorschaubilder.\n" +" X : Extrahiert die Metadaten in die XMP-Zusatzdatei .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Dateinamensformat für die Aktion 'Umbenennen'. Die " +"Formatierungszeichenkette\n" +" entspricht strftime(3). Die folgenden Schlüsselwörter werden " +"unterstützt:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - Originaldateiname ohne Erweiterung\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - Name des Ordners in dem die Originaldatei liegt\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - Name des Elternordners\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Das Standardformat des Dateinamens ist " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt JPEG-Kommentar, der im Bild gesetzt wird.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m datei Befehlsdatei für die Aktion \"Modifizieren\". Das Format für die " +"Befehle ist\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M bef Befehlszeile für die Aktion \"Modifizieren\". Das Format für die\n" +" Befehle ist das gleiche wie der Befehlsdatei.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l ord Ort (Ordner) für die Dateien, aus denen eingefügt bzw. extrahiert " +"wird.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf Benutzt den Suffix .suf für die Quelldateien beim Befehl " +"Einfügen.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Option" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "benötigt ein Argument\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Unbekannte Option" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "\"getopt\" gab einen unerwarteten Zeichencode zurück" + +#: src/exiv2.cpp:410 +#, fuzzy +msgid "Invalid argument" +msgstr "Ungültiger Schlüssel" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Ungültiger Schlüssel" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Die überzählige Option wird ignoriert" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "kann nicht mit einer vorangegangenen Option zusammen benutzt werden\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Die überflüssige Option \"-a\" wird ignoriert" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Fehler beim Verarbeiten des Arguments \"-a\"" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" +"Die Option \"-a\" kann nicht mit einer vorangegangenen Option zusammen " +"benutzt werden\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Fehler bei der Verarbeitung" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "Optionsargument" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Unbekannter Druckmodus" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Die überflüssige Option \"-p\" wird ignoriert" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" +"Die Option \"-p\" kann nicht mit einer vorangegangenen Option zusammen " +"benutzt werden\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Unbekannter Druckeintrag" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Die überflüssige Option \"-P\" wird ignoriert" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" +"Die Option \"-P\" kann nicht mit einer vorangegangenen Option zusammen " +"benutzt werden\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" +"Die Option \"-d\" kann nicht mit einer vorangegangenen Option zusammen " +"benutzt werden\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" +"Die Option \"-e\" kann nicht mit einer vorangegangenen Option zusammen " +"benutzt werden\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" +"Die Option \"-i\" kann nicht mit einer vorangegangenen Option zusammen " +"benutzt werden\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" +"Die Aktion \"adjust\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" +"Die Aktion \"print\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" +"Die Aktion \"delete\" kann nicht mit den anderen Option zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" +"Die Aktion \"extract\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" +"Die Aktion \"insert\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" +"Die Aktion \"rename\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" +"Die Aktion \"modify\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" +"Die Aktion \"fixiso\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden \n" + +#: src/exiv2.cpp:824 +#, fuzzy +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" +"Die Aktion \"fixiso\" kann nicht mit den anderen Optionen zusammen benutzt " +"werden \n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Eine Aktion muss angegeben werden\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" +"Die Aktion \"justieren\" benötigt mindestens eine der Optionen \"-a\", \"-Y" +"\", \"-O\" oder \"-D\"\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" +"Die Aktion \"modify\" benötigt mindestens eine der Optionen \"-c\", \"-m\" " +"oder \"-M\"\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Es muss mindestens eine Datei angegeben werden\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Fehler beim Verarbeiten der Argumente der Option \"-m\"\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Fehler beim Verarbeiten der Argumente der Option \"-M\"\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" +"-l Option kann nur bei den Aktionen \"extract\" und \"insert\" benutzt " +"werden\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "-S Option kann nur bei der Aktion \"insert\" benutzt werden\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "-t Option kann nur bei der Aktion \"rename\" benutzt werden.\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "-T Option kann nur bei der Aktion \"rename\" benutzt werden.\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Unbekannt" + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "Ziel" + +#: src/exiv2.cpp:1065 +#, fuzzy +msgid "Invalid preview number" +msgstr "Intervallnummer" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Die Kommandozeile konnte nicht gelesen werden\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "Zeile" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "Option \"-M\"" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Ungültige Kommandozeile" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Ungültiges Kommando" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Ungültiger Schlüssel" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Ungültige Kommandozeile" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Softmodus 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Softmodus 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "Hartmodus 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "Hartmodus 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Fluoreszenz (Tageslicht)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Fluoreszenz (warmes Weiß)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Fluoreszenz (kaltes Weiß)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Glühend" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Nichts (Schwarz/Weiß)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Rote Augen reduzieren" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Nachtszene" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Program \"automatische Belichtung\"" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Natürliches Licht" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti-Unschärfe" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Sonnenuntergang" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Museum" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Feier" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Blume" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Text" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Natürliches Licht & Blitz" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Blendenpriorität AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +#, fuzzy +msgid "Shutter speed priority AE" +msgstr "Verschlussgeschwindigkeit-Priorität" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Kein Blitz & Blitz" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Chrom" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Weit" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Standard" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Studioportrait" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Studioportrait Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Roh" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Standard (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Weitenmodus 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Weitenmodus 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Film-Simulationsmodus" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Version" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Version der Fujifilm Herstellerbemerkung" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Die Nummer ist eindeutig und enthält das Datum der Herstellung. Es handelt " +"sich nicht, um die gleiche Nummer wie die auf dem Kameragehäuse." + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Bildqualitätseinstellung" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Farbe" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Chroma-Sättigungseinstellungen" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Blitzeinstellung" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Blitzstärke" + +#: src/fujimn.cpp:205 +#, fuzzy +msgid "Flash firing strength compensation setting" +msgstr "Blitzkompensationseinstellung" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Makromoduseinstellung" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Fokusmoduseinstellung" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Langsame Synchronisation" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Einstellungen des langsamen Synchronisationsmodus" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Bildmodus" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Bildmoduseinstellung" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Einstellungen für kontinuierliche Aufnahmen oder Belichtungsreihen" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Sequenznummer" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Sequenznummer" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "FinePix Farbe" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Fuji FinePix Farbeinstellung" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Unschärfewarnung" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Unschärfewarnung-Status" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Fokuswarnung" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Status der Auto-Fokuswarnung" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Belichtungswarnung" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Status der Auto-Belichtungswarnung" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Dynamischer Bereich" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Dynamischer Bereich" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Filmmodus" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Filmmodus" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Dynamische Bereichseinstellung" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Dynamische Bereichseinstellung" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Entwicklungsdynamischer Bereich" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Entwicklungsdynamischer Bereich" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Minimale Fokuslänge" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Minimale Fokuslänge" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Maximale Fokuslänge" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Maximale Fokuslänge" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Maximale Blende bei maximalem Fokus" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Maximale Blende bei maximalem Fokus" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Dateiquelle" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Dateiquelle" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Ablaufsnummer" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Ablaufsnummer" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Einzelbildnummer" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Einzelbildnummer" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Fujii" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Natürliche Farbe" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Vivid Farbe" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarisation" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Natürlich" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "Natürliches sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Natürlich + sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Abend" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Nachtportrait" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Superfein" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Extrafein" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Version der Herstellerbemerkung" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Kameraeinstellungen(Alter Standard)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Standard-Kameraeinstellungen (für alte Kameras wie z.B. D5, D7, S304 und " +"S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Kameraeinstellungen(Neuer Standard)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" +"Standard-Kameraeinstellungen (für neue Kameras wie z.B. D7u, D7i und D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Kameraeinstellungen (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Kameraeinstellungen (für das Modell Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Bildstabilisierungsdaten" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Bildstabilisierungsdaten" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Komprimierte Bildgröße" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Komprimierte Bildgröße" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Jpeg-Vorschau 640x480 Pixel" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Bildvorschauoffset" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Offset der Bildvorschau" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Bildvorschaulänge" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Größe der Bildvorschau" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Szenenmodus" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Farbmodus" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Farbmodus" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Bildqualität" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Blitzkompensation" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Blitzkompensation in EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +#, fuzzy +msgid "Teleconverter Model" +msgstr "Modell der Erweiterung" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Zonenabgleich" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Zonenabgleich" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Farbtemperatur" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "Linsen-ID" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Linsen-Identifizierung" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "Tonkompensation" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Weißabgleichstabelle" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Weißabgleichswert" + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "Bildstabilisierung" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Bildstabilisierungsdaten" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Kameraeinstellungen (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Kameraeinstellungen (für Dynax 5D Modell)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +#, fuzzy +msgid "PrintIM information" +msgstr "GPS-Informationen" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Kameraeinstellungen (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Kameraeinstellungen (für Z1, DImage X und F100 Modelle)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Minolta" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Blendenpriorität" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Verschlusspriorität" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Aufhellblitz" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Rear-Flash-Sync" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Drahtlos" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Fluroszierend 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Volle Größe" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Superfein" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Extrafein" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "Einzelbild" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "Selbstauslöser" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Automatische Erfassung" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Intervall" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS fortlaufend" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS fortlaufend" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Mehr-Segment" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Mittelpunkt gewichteter Durchschnitt" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Elektronische Vergrößerung" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Oben" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Oben - rechts" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Unten - rechts" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Unten" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Unten - links" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Oben - links" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Hart" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "Weich" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Nachtportrait" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Sportaktion" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Zeitrafferfilm" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Standardformat" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Datenformat" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Natürliche Farben" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Schwarz/weiß" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Vivid Farbe" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Keine Zone" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Mittelzone (Horizontale Orientierung)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Mittelzone (Vertikale Orientierung)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Linke Zone" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Rechte Zone" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Automatischer Fokus" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Weiter Fokus (Normal)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Punktfokus" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Belichtung" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filter" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Nicht eingebettet" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Eingebettet" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Text + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Advanced Distance Integration)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Pre-flash TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Manuelle Blitzkontrolle" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Belichtungsmodus" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Blitzmodus" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Antriebsmodus" + +#: src/minoltamn.cpp:512 +#, fuzzy +msgid "ISO Value" +msgstr "ISO-Geschwindigkeitswert" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Belichtungszeit" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "F Nummer." + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "Die F Nummer" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Makromodus" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Belichtungskompensierung" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Automatischer Erfassungsschritt" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Automatischer Erfassungsschritt" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Intervalllänge" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Intervalllänge" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Intervallnummer" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Intervallnummer" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Fokusabstand" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Fokusabstand" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Blitzgerät" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Blitz aus" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Minolta Datum" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Minolta Datum" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Minolta Zeit" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Minolta Zeit" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Dateinummerspeicher" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Dateinummerspeicher" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Bildnummer" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Bildnummer" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Roter Farbabgleich" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Roter Farbabgleich" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Grüner Farbabgleich" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Grüner Farbabgleich" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Blauer Farbabgleich" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Blauer Farbabgleich" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Motiv-Programm" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Motiv-Programm" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "ISO-Einstellungen" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "ISO-Einstellung" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Minolta Modell" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Minolta Modell" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Intervallmodus" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Intervallmodus" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Ordnername" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Ordnername" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Farbmodus" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Farbfilter" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Farbfilter" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Schwarz/Weiß-Filter" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Schwarz/Weiß-Filter" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Eingebauter Blitz" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Helligkeit" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "Punktschärfe X-Wert" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "Punktschärfe X-Wert" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "Punktschärfe Y-Wert" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "Punktschärfe Y-Wert" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Weite Fokuszone" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Weite Fokuszone" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Fokusmodus" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Fokusbereich" + +#: src/minoltamn.cpp:628 +#, fuzzy +msgid "DEC Switch Position" +msgstr "Autofokus-Position" + +#: src/minoltamn.cpp:629 +#, fuzzy +msgid "DEC switch position" +msgstr "Autofokus-Position" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Farbprofil" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Farbprofil" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +#, fuzzy +msgid "Data Imprint" +msgstr "Datendump" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Blitzdosierung" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Blitzdosierung" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Unbekanntes Feld in den Minolta-Kameraeinstellungen" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Programmwechsel" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Programmwechsel" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Roh+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "Einzelaufnahme-Autofokus" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "Kontinuierlicher Autofokus" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "Automatischer Autofokus" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Natürlich)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Natürlich+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horizontal (Normal)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "90 Grad drehen (Im Uhrzeigersinn)" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "270 Grad drehen (Im Uhrzeigersinn)" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Autofokus-Punkte" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Autofokus-Punkte" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Farbraum" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Farbraum" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "Freie Bilder auf der Speicherkarte" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "Freie Bilder auf der Speicherkarte" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Sättigung" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Drehung" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Bildnummer" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Rauschreduktion" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "Zonenabgleich eingeschaltet" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "Zonenabgleich eingeschaltet" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Unbekanntes Feld in den Minolta-Kameraeinstellungen für 7D" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Programmwechsel" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Programmwechsel" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "Nachtportrait" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (Zonenabgleich Hoch)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80 (Zonenabgleich Niedrig)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +#, fuzzy +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Zentriert" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Aufwärts" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Aufwärts - Rechts" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Abwärts - Rechts" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Abwärts" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Abwärts - Links" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Aufwärts -. Links" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Auswahl" + +#: src/minoltamn.cpp:947 +#, fuzzy +msgid "Natural+" +msgstr "Natürlich" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "Nachtszene" + +#: src/minoltamn.cpp:950 +#, fuzzy +msgid "Evening Scene" +msgstr "Abend" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Fokusposition" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Fokusposition" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Fokusbereich" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Belichtungs-Revision" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "Belichtungs-Revision" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "Drehung" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +#, fuzzy +msgid "Picture Finish" +msgstr "Bild-Info" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Manuelle Belichtungskontrolle" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Manuelle Belichtungskontrolle" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Autofokus-Modus" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Autofokus-Modus" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Unbekanntes Feld in den Minolta-Kameraeinstellungen für 5D" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "Selbstauslöser (12 Sek.)" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "Selbstauslöser (2 Sek.)" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr "Weißabgleichsreihe" + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr "Weißabgleichsreihe" + +#: src/minoltamn.cpp:1106 +#, fuzzy +msgid "Single-frame Bracketing Low" +msgstr "Einzelbild" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Automatischer Erfassung" + +#: src/minoltamn.cpp:1108 +#, fuzzy +msgid "Single-frame Bracketing High" +msgstr "Einzelbild" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Kontinuierlich, hoch" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +#, fuzzy +msgid "Continuous Bracketing" +msgstr "Kontinuierlich, hoch" + +#: src/minoltamn.cpp:1156 +#, fuzzy +msgid "Single-Frame Bracketing" +msgstr "Einzelbild" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "Weißabgleichsreihe" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Voreinstellung" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +#, fuzzy +msgid "Color Temperature/Color Filter" +msgstr "Farbtemperatur" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Temperatur" + +#: src/minoltamn.cpp:1213 +#, fuzzy +msgid "Setup" +msgstr "Setzen" + +#: src/minoltamn.cpp:1214 +#, fuzzy +msgid "Recall" +msgstr "Gelb" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "Bildkonfiguration" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Bildtyp" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Bildhöhe" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "Aufhellblitz" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "Fokusmodus" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Vorschaudaten" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +#, fuzzy +msgid "Toggle" +msgstr "Ton" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Punktmodus" + +#: src/minoltamn.cpp:1260 +#, fuzzy +msgid "Spot Toggle" +msgstr "Punktmodus" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Verschlusszeit" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +#, fuzzy +msgid "Automatic" +msgstr "Automatischer Autofokus" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "Autokontrast" + +#: src/minoltamn.cpp:1291 +#, fuzzy +msgid "Horizontal" +msgstr "Horizontal (Normal)" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "Manuell ausgelöst" + +#: src/minoltamn.cpp:1302 +#, fuzzy +msgid "Within Range" +msgstr "Linsenweite" + +#: src/minoltamn.cpp:1303 +#, fuzzy +msgid "Under/Over Range" +msgstr "Transferbereich" + +#: src/minoltamn.cpp:1304 +#, fuzzy +msgid "Out of Range" +msgstr "Offset ausserhalb des zulässigen Bereiches" + +#: src/minoltamn.cpp:1309 +#, fuzzy +msgid "Not Indicated" +msgstr "Undefiniert" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "Unterwasser" + +#: src/minoltamn.cpp:1311 +#, fuzzy +msgid "Bottom of Scale" +msgstr "unten nach oben" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +#, fuzzy +msgid "Over Scale" +msgstr "Standard-Skalierung" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +#, fuzzy +msgid "Built-in" +msgstr "Ausfüllen" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Sehr niedrig" + +#: src/minoltamn.cpp:1350 +#, fuzzy +msgid "Half Full" +msgstr "Vollbild" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "Belichtungskompensierung" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "Belichtungskompensation" + +#: src/minoltamn.cpp:1362 +#, fuzzy +msgid "High Speed Sync" +msgstr "Hohe Empfindlichkeit" + +#: src/minoltamn.cpp:1363 +#, fuzzy +msgid "High speed sync" +msgstr "Hohe Empfindlichkeit" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "Belichtungszeit" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "Belichtungszeit" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Intervallnummer" + +#: src/minoltamn.cpp:1377 +#, fuzzy +msgid "Drive Mode 2" +msgstr "Antriebsmodus" + +#: src/minoltamn.cpp:1378 +#, fuzzy +msgid "Drive mode 2" +msgstr "Antriebsmodus" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Autofokus-Modus" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Blitzmodus" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "Blitzkompensation" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "Blitzkompensation in EV" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +#, fuzzy +msgid "ISO Setting" +msgstr "ISO-Einstellungen" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Zonenabgleich" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +#, fuzzy +msgid "Dynamic Range Optimizer Mode" +msgstr "Dynamische Bereichseinstellung" + +#: src/minoltamn.cpp:1408 +#, fuzzy +msgid "Dynamic range optimizer mode" +msgstr "Dynamische Bereichserweiterung" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +#, fuzzy +msgid "Self Timer Time" +msgstr "Selbstauslöser" + +#: src/minoltamn.cpp:1435 +#, fuzzy +msgid "Self timer time" +msgstr "Selbstauslöser" + +#: src/minoltamn.cpp:1438 +#, fuzzy +msgid "Continuous bracketing" +msgstr "Kontinuierlich, hoch" + +#: src/minoltamn.cpp:1440 +#, fuzzy +msgid "Single Frame Bracketing" +msgstr "Weißabgleichsauslöser" + +#: src/minoltamn.cpp:1441 +#, fuzzy +msgid "Single frame bracketing" +msgstr "Weißabgleichsauslöser" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Weißabgleichsauslöser" + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "Weißabgleichseinstellung" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Weißabgleich" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "Weißabgleich" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Farbtemperatur" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Farbtemperatur" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Benutzerdefiniert WB 1" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "Benutzerdefiniert WB 1" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Dynamische Bereichseinstellung" + +#: src/minoltamn.cpp:1464 +#, fuzzy +msgid "Custom WB Red Level" +msgstr "WB_RGGBLevelsShade" + +#: src/minoltamn.cpp:1465 +#, fuzzy +msgid "Custom WB red level" +msgstr "Schwarzlevel" + +#: src/minoltamn.cpp:1467 +#, fuzzy +msgid "Custom WB Green Level" +msgstr "Schwarzlevel" + +#: src/minoltamn.cpp:1468 +#, fuzzy +msgid "Custom WB green level" +msgstr "Schwarzlevel" + +#: src/minoltamn.cpp:1470 +#, fuzzy +msgid "Custom WB Blue Level" +msgstr "WB_RGGBLevelsShade" + +#: src/minoltamn.cpp:1471 +#, fuzzy +msgid "CustomWB blue level" +msgstr "Schwarzlevel" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Benutzerdefiniert WB 1" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Weißabgleich-Anpassung" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "Blitzkompensationswert" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "Bildgröße" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "Eine Aufnahme mit Autofokus" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Rote Augen reduzieren" + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Rote Augen reduzieren" + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Blitzdetails" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "Blitzdetails" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "Automatische Erfassung" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "Automatischer Erfassung" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "Fokusmodus-Einstellung" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "Fokusmodus-Einstellung" + +#: src/minoltamn.cpp:1515 +#, fuzzy +msgid "AEL Button" +msgstr "Automatische Belichtung-Einstellungen" + +#: src/minoltamn.cpp:1516 +#, fuzzy +msgid "AEL button" +msgstr "Automatische Belichtung-Einstellungen" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "Kontrasteinstellung" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "Kontrast" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Belichtungskompensierung" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Belichtungskompensation" + +#: src/minoltamn.cpp:1525 +#, fuzzy +msgid "AF assist" +msgstr "Autofokus-Unterstützung" + +#: src/minoltamn.cpp:1527 +#, fuzzy +msgid "Card Shutter Lock" +msgstr "Verschlusszähler" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "Schneller Verschluss" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "Langsamer Verschluss" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "Langsamer Verschluss" + +#: src/minoltamn.cpp:1533 +#, fuzzy +msgid "AF Area Illumination" +msgstr "GPS Bereichsinformation" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Autofokus-Modus" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +#, fuzzy +msgid "Record Display" +msgstr "Eingeblendetes Display" + +#: src/minoltamn.cpp:1540 +#, fuzzy +msgid "Record display" +msgstr "Eingeblendetes Display" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Belichtungsindex" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Belichtungsindex" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Belichtungsindex" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +#, fuzzy +msgid "Exposure Bracketing Indicator Last" +msgstr "Belichtungserfassung" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "Blitzkompensation" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Blitzbelichtungskompensation" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "Blitzkompensation" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "Blitzkompensation" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "Fokusmodus" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Fokusmodus-Einstellung" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Blitztyp" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Blitztyp" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "Automatische Belichtungssperre" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Batteriestatus" + +#: src/minoltamn.cpp:1588 +#, fuzzy +msgid "Battery level" +msgstr "Batteriestatus" + +#: src/minoltamn.cpp:1592 +#, fuzzy +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 1" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +#, fuzzy +msgid "Clear" +msgstr "Jahr" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +#, fuzzy +msgid "Deep" +msgstr "Denver" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +#, fuzzy +msgid "Light" +msgstr "Rechts" + +#: src/minoltamn.cpp:1950 +#, fuzzy +msgid "Night View" +msgstr "Nachtszene" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +#, fuzzy +msgid "Local" +msgstr "Ort" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "Oben - rechts" + +#: src/minoltamn.cpp:2007 +#, fuzzy +msgid "Bottom-Right" +msgstr "Unten - rechts" + +#: src/minoltamn.cpp:2009 +#, fuzzy +msgid "Bottom-Left" +msgstr "Unten - links" + +#: src/minoltamn.cpp:2011 +#, fuzzy +msgid "Top-Left" +msgstr "Oben - links" + +#: src/minoltamn.cpp:2012 +#, fuzzy +msgid "Far-Right" +msgstr "Rechts zuschneiden" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "Links zuschneiden" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +#, fuzzy +msgid "Advanced Auto" +msgstr "Fortgeschrittene hohe Funktion" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "Fortgeschrittene hohe Empfindlichkeit" + +#: src/minoltamn.cpp:2041 +#, fuzzy +msgid "AF" +msgstr "Autofokus-S" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Freigabedatum" + +#: src/minoltamn.cpp:2054 +#, fuzzy +msgid "RAW " +msgstr "Roh" + +#: src/minoltamn.cpp:2055 +#, fuzzy +msgid "CRAW " +msgstr "Roh" + +#: src/minoltamn.cpp:2058 +#, fuzzy +msgid "RAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2059 +#, fuzzy +msgid "CRAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Kompressionsrate" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "Komprimierte Bildgröße" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Benutzte ISO-Einstellungen" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Hoher Schlüssel" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Niedriger Schlüssel" + +#: src/nikonmn.cpp:80 +#, fuzzy +msgid "Extra High" +msgstr "Extrafein" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Einzelbereich" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Dynamischer Bereich" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Dynamischer Bereich, nächstes Motiv" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Gruppendynamisch" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Einzelbereich (Weit)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Dynamischer Bereich (Weit)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Aufwärts-Links" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Aufwärts-Rechts" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Abwärts-Links" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Abwärts-Rechts" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "Ganz Links" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "Ganz Rechts" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Ausgelöst, manuell" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Ausgelöst, extern" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "Ausgelöst, Kommandomodus" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Ausgelöst, TTL-Modus" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Verzögerung" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "PC Kontrolle" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Belichtungserfassung" + +#: src/nikonmn.cpp:156 +#, fuzzy +msgid "Auto ISO" +msgstr "Automatisch" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Weißabgleichsreihe" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "IR Kontrolle" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Kontinuierlich, hoch" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "PC Kontrolle" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Belichtungserfassung" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "IR Kontrolle" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Automatisch ausgelöst" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "Manuell ausgelöst" + +#: src/nikonmn.cpp:182 +#, fuzzy +msgid "Lossy (type 1)" +msgstr "Linsentyp" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Unkomprimiert" + +#: src/nikonmn.cpp:184 +#, fuzzy +msgid "Lossless" +msgstr "Los Angeles" + +#: src/nikonmn.cpp:185 +#, fuzzy +msgid "Lossy (type 2)" +msgstr "Linsentyp" + +#: src/nikonmn.cpp:191 +#, fuzzy +msgid "B & W" +msgstr "S&W" + +#: src/nikonmn.cpp:193 +#, fuzzy +msgid "Trim" +msgstr "Zeit" + +#: src/nikonmn.cpp:194 +#, fuzzy +msgid "Small picture" +msgstr "Film" + +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "Tageslicht" + +#: src/nikonmn.cpp:196 +#, fuzzy +msgid "Red eye" +msgstr "Rote-Augen" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "Typ" + +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "Tageslicht" + +#: src/nikonmn.cpp:199 +#, fuzzy +msgid "Warm tone" +msgstr "Farbton" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Farbton" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Bildton" + +#: src/nikonmn.cpp:207 +#, fuzzy +msgid "Minimal" +msgstr "Manuell" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Version der Herstellerbemerkung von Nikon" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "ISO-Geschwindigkeit" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Schärfung" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Bildschärfungseinstellung" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Fokus" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Blitzeinstellung" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Blitzeinstellung" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "ISO-Auswahl" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "ISO-Auswahl" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Datendump" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Datendump" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Bildanpassung" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Bildanpassung-Einstellung" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Zusatzlinse" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Zusatzlinse (Adapter)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Manueller Fokusabstand" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Digitale Zoomeinstellung" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "Autofokus-Position" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Autofokus-Positioninformation" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Kontinuierlicher Autofokus" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Einzel Autofokus" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Nicht benutzt" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "Raten" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA Basis" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA Normal" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA Fein" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA Basis" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA Normal" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA Fein" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Helligkeit+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Helligkeit-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Kontrast+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Kontrast-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Speedlight" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon2" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Blitzgerät" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Blitzgerät" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Weißabgleichskontrolle" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Weißabgleichskontrolle" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB levels" +msgstr "Schwarzlevel" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "Programmwechsel" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "Programmwechsel" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Belichtungsabstand" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Belichtungsabstand" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Zeiger auf ein Vorschaubild" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +#, fuzzy +msgid "Offset to an IFD containing a preview image" +msgstr "Offset des Vorschaubildes" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Blitzkompensation" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Blitzkompensationseinstellung" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Bildgrenzen" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Bildgrenzen" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Blitzbelichtungskompensation" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "Blitzkompensation" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "Blitzbelichtungskompensation" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "Belichtungserfassung" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "AE bracket compensation applied" +msgstr "Blitzkompensationswert" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Bildverarbeitung" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Bildverarbeitung" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "Hohe Empfindlichkeit" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "Höhe des Zuschnitts" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Belichtungswarnung" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Belichtungswarnung" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "Rohinfo" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR info" +msgstr "Rohinfo" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "Bild-Orientierung" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "Bild-Orientierung" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Bild-Info" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Bild-Info" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "Minolta Zeit" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "Minolta Zeit" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO Info" +msgstr "Aufnahmeinfo" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO info" +msgstr "ISO-Einstellung" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette Control" +msgstr "Vignettierungsmenge" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette control" +msgstr "Vignettierungsmenge" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Tonkompensation" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Tonkompensation" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Modus des benutzten Blitzes" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Aufnahmemodus" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Aufnahmemodus" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "Auslöser der Automatische Erfassung" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "Auslöser der Automatische Erfassung" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "Blendeneinstellung der Linse" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "Kontrast-Wert" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "Kontrast-Wert" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Farbton" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Farbton" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Szenenmodus" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Lichtquelle" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Lichtquelle" + +#: src/nikonmn.cpp:583 +#, fuzzy +msgid "Shot info" +msgstr "Aufnahmeinfo" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Sättigungsanpassung" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Sättigungsanpassung" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Kompression" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Kompression" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Linearisierungstabelle" + +#: src/nikonmn.cpp:588 +#, fuzzy +msgid "Linearization table" +msgstr "Linearisierungstabelle" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color Balance" +msgstr "Farbabgleich 1" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color balance" +msgstr "Roter Farbabgleich" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Linsendaten" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Linsendaten-Einstellungen" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "Rohbild-Center" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "Rohbild-Center" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Sensor-Pixelgröße" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Sensor-Pixelgröße" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "Autofokus-Unterstützung" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene assist" +msgstr "Szenenbereich" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch History" +msgstr "Historie" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch history" +msgstr "Historie" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Seriennummer" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Bilddatengröße" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Bilddatengröße" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Bildanzahl" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Bildanzahl" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted Image Count" +msgstr "Bildanzahl löschen" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted image count" +msgstr "Bildanzahl löschen" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Verschlusszähler" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Anzahl der Fotos dieser Kamera" + +#: src/nikonmn.cpp:603 +#, fuzzy +msgid "Flash info" +msgstr "Blitzinformation" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Bildoptimierung" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Bildoptimierung" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "Programmvariation" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Programmvariation" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "Autofokus-Antwort" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "Autofokus-Antwort" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Hohe ISO-Rauschreduktion" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "Fotoeffekt" + +#: src/nikonmn.cpp:612 +#, fuzzy +msgid "AF info 2" +msgstr "Autofokus-Information" + +#: src/nikonmn.cpp:613 +#, fuzzy +msgid "File info" +msgstr "Dateiname" + +#: src/nikonmn.cpp:614 +#, fuzzy +msgid "AF tune" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Eingelesene Daten" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Eingelesene Daten" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "Version der gelesenen Daten" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "Version der gelesenen Daten" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "Erfassungsoffsets" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "Erfassungsoffsets" + +#: src/nikonmn.cpp:621 +#, fuzzy +msgid "Scan IFD" +msgstr "Speicherungs-ID" + +#: src/nikonmn.cpp:622 +#, fuzzy +msgid "ICC profile" +msgstr "Farbprofil" + +#: src/nikonmn.cpp:623 +#, fuzzy +msgid "Capture output" +msgstr "Eingelesene Daten" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon3" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Nein" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Ja" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration Reduction" +msgstr "Verzerrungskorrektur" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration reduction" +msgstr "Verzerrungskorrektur" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" + +#: src/nikonmn.cpp:667 +#, fuzzy +msgid "Default Settings" +msgstr "Besitzt Einstellungen" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick Adjust" +msgstr "Sättigungsanpassung" + +#: src/nikonmn.cpp:669 +#, fuzzy +msgid "Full Control" +msgstr "Farbkontrolle" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +#, fuzzy +msgid "Purple-blue" +msgstr "Lila" + +#: src/nikonmn.cpp:693 +#, fuzzy +msgid "Red-purple" +msgstr "Lila" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +#, fuzzy +msgid "Name" +msgstr "Spitzname" + +#: src/nikonmn.cpp:701 +#, fuzzy +msgid "Base" +msgstr "Basis-Adresse" + +#: src/nikonmn.cpp:702 +#, fuzzy +msgid "Adjust" +msgstr "Justiere" + +#: src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick adjust" +msgstr "Sättigungsanpassung" + +#: src/nikonmn.cpp:709 +#, fuzzy +msgid "Filter effect" +msgstr "Farbeffekt" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "Sättigung" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "Sättigung" + +#: src/nikonmn.cpp:713 +#, fuzzy +msgid "Unknown Nikon Picture Control Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:744 +#, fuzzy +msgid "Timezone" +msgstr "Ton" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "Tageslicht" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "Tageslicht" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date Display Format" +msgstr "Dateiformat" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date display format" +msgstr "Datenformat" + +#: src/nikonmn.cpp:748 +#, fuzzy +msgid "Unknown Nikon World Time Tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" + +#: src/nikonmn.cpp:759 +#, fuzzy +msgid "Hi 0.3" +msgstr "HV10" + +#: src/nikonmn.cpp:760 +#, fuzzy +msgid "Hi 0.5" +msgstr "HV10" + +#: src/nikonmn.cpp:761 +#, fuzzy +msgid "Hi 0.7" +msgstr "HV10" + +#: src/nikonmn.cpp:762 +#, fuzzy +msgid "Hi 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:763 +#, fuzzy +msgid "Hi 1.3" +msgstr "HV10" + +#: src/nikonmn.cpp:764 +#, fuzzy +msgid "Hi 1.5" +msgstr "HV10" + +#: src/nikonmn.cpp:765 +#, fuzzy +msgid "Hi 1.7" +msgstr "HV10" + +#: src/nikonmn.cpp:766 +#, fuzzy +msgid "Hi 2.0" +msgstr "HV10" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "HV10" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "HV10" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "HV10" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +#, fuzzy +msgid "Lo 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO Expansion" +msgstr "ISO-Auswahl" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO expansion" +msgstr "ISO-Auswahl" + +#: src/nikonmn.cpp:785 +#, fuzzy +msgid "ISO 2" +msgstr "Aufnahmeinfo" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO Expansion 2" +msgstr "ISO-Auswahl" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO expansion 2" +msgstr "ISO-Auswahl" + +#: src/nikonmn.cpp:788 +#, fuzzy +msgid "Unknown Nikon Iso Info Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "Einzelbereich" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "Dynamischer Bereich" + +#: src/nikonmn.cpp:800 +#, fuzzy +msgid "Dynamic Area, Closest Subject" +msgstr "Dynamischer Bereich, nächstes Motiv" + +#: src/nikonmn.cpp:801 +#, fuzzy +msgid "Group Dynamic" +msgstr "Gruppendynamisch" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Einzelbereich (Weit)" + +#: src/nikonmn.cpp:803 +#, fuzzy +msgid "Dynamic Area (wide)" +msgstr "Dynamischer Bereich (Weit)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Mitte - links" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Mitte - rechts" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "Links zuschneiden" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "Rechts zuschneiden" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Autofokus-Modus" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "Autofokus-Punkt" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Benutzte Autofokus-Punkte" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Benutzte Autofokus-Punkte" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "An" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "An" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "An" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "Kontrasteinstellungen" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "Kontrasteinstellungen" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase Detect AF" +msgstr "Fehler beim Lesen" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase detect AF" +msgstr "Fehler beim Lesen" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "Graupunkt" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "Graupunkt" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Bildbreite" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Bildbreite" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Bildhöhe" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "Bildhöhe" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "Autofokus-Position" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "Autofokus-Position" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "Autofokus-Position" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "Autofokus-Position" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Autofokus-Modus" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Autofokus-Modus" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Autofokus-Modus" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "Rechts zuschneiden" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "Kontrasteinstellungen" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "Kontrasteinstellungen" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Ablaufsnummer" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Ablaufsnummer" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Bildton" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Belichtungsmodus" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "Mehrfache Belichtung" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Unbekanntes Feld in den benutzerdefinierten Funktionen von Canon" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Intern" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +#, fuzzy +msgid "iTTL-BL" +msgstr "TTL" + +#: src/nikonmn.cpp:992 +#, fuzzy +msgid "iTTL" +msgstr "TTL" + +#: src/nikonmn.cpp:993 +#, fuzzy +msgid "Auto Aperture" +msgstr "Blende" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +#, fuzzy +msgid "Repeating Flash" +msgstr "Wiedergabeklasse" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Kein Blitz" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "F Nummer." + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "Dateiquelle" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "Dateiquelle" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +#, fuzzy +msgid "0x0005" +msgstr "1000" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Externer Blitzzoom" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Externer Blitzmodus" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "Externer Blitz" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "Externer Blitz" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "Maximale Fokuslänge" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "Maximale Fokuslänge" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Die Datei wird umbenannt nach" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "Manuelle Blitzkontrolle" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "Fokusabstand" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "Fokusabstand" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Farbfilter" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Farbfilter" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Verschlusszähler" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "Blitzgerät" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "Blitzgerät" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Benutzter Autofokus-Punkt" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "An" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "Verschlusszähler" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Verschlusszähler" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Verzerrungskorrektur" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Verzerrungskorrektur" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "Verschlusszähler" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Verschlusszähler" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration Reduction 2" +msgstr "Verzerrungskorrektur" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration reduction 2" +msgstr "Verzerrungskorrektur" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "Unbekanntes Feld in der Canon-Bildinfo" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG levels" +msgstr "Schwarzlevel" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Farbabgleich 1" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB levels" +msgstr "Schwarzlevel" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Farbabgleich 2" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Farbabgleich 2" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Farbabgleich 2" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG levels" +msgstr "Schwarzlevel" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Unbekanntes Canon-Panoramafeld" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG levels" +msgstr "Schwarzlevel" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Unbekanntes Canon-Panoramafeld" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Linsen-Seriennummer" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Linsen-Seriennummer" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "Blendeneinstellung der Linse" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "Blendeneinstellung der Linse" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Minimale Fokuslänge" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Minimale Fokuslänge" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Maximale Fokuslänge" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Maximale Fokuslänge" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Maximale Blende bei maximalem Fokus" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Maximale Blende bei maximalem Fokus" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "ARM-Version" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "ARM-Version" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "Autofokus-Position" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "Fokusposition" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Blende" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Blende" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective Max Aperture" +msgstr "Maximale Blende" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective max aperture" +msgstr "Maximale Blende" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" + +#: src/nikonmn.cpp:1399 +#, fuzzy +msgid "Max aperture at min focal length" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/nikonmn.cpp:1400 +#, fuzzy +msgid "Max aperture at max focal length" +msgstr "Maximale Blende bei maximalem Fokus" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon1" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Nächstes Motiv" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "Gruppen dynamischer Autofokus" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "Keine" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "benutzt" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "Autofokus-Punkte" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Einzelbild" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Standard Qualität (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Hohe Qualität (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Super Hohe Qualität (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "Ein (Standard)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Sport" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Landschaft und Portrait" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Selbstportrait" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 in 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Nacht und Portrait" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Essen" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Dokumente" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "Aufnehmen & Auswählen" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Strand & Schnee" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "Selbstportrait und -Auslöser" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Kerze" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "Verfügbares Licht" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Hinter Glas" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "Eigener Modus" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Haustier" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "Unterwasser-Weite1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "Unterwasser-Makro" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "Aufnehmen & Auswählen1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "Aufnehmen & Auswählen2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Digitale Bildstabilisierung" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "Auktion" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Unterwasser Weite2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Kinder" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "Natur-Makro" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "Unterwasser-Aufnahme" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "Aufnahmehilfe" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Intern + Extern" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Interlaced" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progressiv" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Vorschaubild" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Vorschaubild" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "Firmware Version" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "Firmware Version" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Spezialmodus" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Bildaufnahmemodus" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Schwarz/Weiß-Modus" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Schwarz/Weiß-Modus" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Digitale Zoomrate" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Brennebene" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Brennebene" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Linsenverzerrungsparameter" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Linsenverzerrungsparameter" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Kameratyp" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Kameratyp" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "ASCII-Formatdaten wie z.B. bei [BildInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "Kamera ID" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Kamera ID-Daten" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Software" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +#, fuzzy +msgid "Preview Image" +msgstr "Bildvorschau gültig" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +#, fuzzy +msgid "Preview image" +msgstr "Bildvorschau gültig" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "Vorerfassungsbilder" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "Vorerfassungsbilder" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Weißabgleich" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Weißabgleich" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Weißabgleichsreihe" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Weißabgleichsreihe" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmware" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Datendump 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Verschiedene Kameraeinstellungen 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Datendump 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Verschiedene Kameraeinstellungen 2" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Verschlusswert" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "ISO-Geschwindigkeitswert" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Blendenwert" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Helligkeitswert" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Erfassung" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Blitzkompensationswert" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Sensortemperatur" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Sensortemperatur" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Linsentemperatur" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Linsentemperatur" + +#: src/olympusmn.cpp:294 +#, fuzzy +msgid "Light Condition" +msgstr "Hohe Funktionen" + +#: src/olympusmn.cpp:295 +#, fuzzy +msgid "Light condition" +msgstr "Hohe Funktionen" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "Fokusbereich" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "Fokusbereich" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Zoom" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "Zoom-Schrittweite" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Makro-Fokus" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "Makro-Fokus-Schrittweite" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Schärfefaktor" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Schärfefaktor" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Batteriestatus des Blitzes" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Batteriestatus des Blitzes" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Farbmatrix" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Farbmatrix" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Weißabgleichsmodus" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Rotabgleich" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Rotabgleich" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Blauabgleich" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Blauabgleich" + +#: src/olympusmn.cpp:342 +#, fuzzy +msgid "Color Matrix Number" +msgstr "Farbmatrix 1" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Farbmatrix 2" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Seriennummer 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Seriennummer 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Blitzbelichtungskompensation" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "Externer Blitzmodus" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "Externer Blitzmodus" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Externer Blitzzoom" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Externer Blitzzoom" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Externer Blitzmodus" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Externer Blitzmodus" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Farbkontrolle" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Farbkontrolle" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "Gültige Bits" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Gültige Bits" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "Kernfiilter" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "Kernfilter" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Kompressionsrate" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Kompressionsrate" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Eingebettetes Vorschaubild" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Offset des Vorschaubildes" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Größe des Vorschaubildes" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "CCD-Scanmodus" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "CCD-Scanmodus" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Unendlicher Linsenschritt" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Unendlicher Linsenschritt" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Naher Linsenschritt" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Naher Linsenschritt" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Ausrüstungsinfo" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "Kamerasausrüstung Unter-IFD" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "Kameraeinstellungen (Unter-IFD)" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Rohentwicklung" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "Rohentwicklung Unter-IFD" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "Rohentwicklung 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "Rohentwicklung 2 Unter-IFD" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Bildverarbeitung Unter-IFD" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Fokus-Info" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "Fokus Unter-IFD" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Rohinfo" + +#: src/olympusmn.cpp:466 +#, fuzzy +msgid "Raw sub-IFD" +msgstr "Fokus Unter-IFD" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Programmwechsel" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Mittelpunkt gewichteter Durchschnitt" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "Muster und Autofokus" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Farbkontrolle" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "Einzel-Autofokus" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "Serienaufnahmen-Autofokus" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "Mehrfacher Autofokus" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "Autofokus wurde nicht benutzt" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "Autofokus wurde benutzt" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Nicht bereit" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Fertig" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "Ausfüllen" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "Langsame Synchronisation" + +#: src/olympusmn.cpp:534 +#, fuzzy +msgid "Forced On" +msgstr "Leuchtstoffröhre" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +#, fuzzy +msgid "7500K (Fine Weather with Shade)" +msgstr "5300K (Gutes Wetter)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (Wolkig)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (Gutes Wetter)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (Wolframlicht)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (Ähnlich Wolframlicht)" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Blende" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Automatisch (Blitz)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (Tageslicht-Fluroszierend)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (Neutral-Weiß-Fluroszierend)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (Kühl-Weiß-Fluroszierend)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Weiß fluoreszent" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "Benutzerdefiniert WB 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "Benutzerdefiniert WB 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "Benutzerdefiniert WB 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "Benutzerdefiniert WB 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (Rotverbesserung)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (Grünverbesserung)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (Blauverbesserung)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (Hauttöne)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Rauschfilter" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "Rauschfilter (ISO-Boost)" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Stumm" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "Monoton" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "An, Modus 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "An, Modus 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "An, Modus 1" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Kameraeinstellungen-Version" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Kameraeinstellungen-Version" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Bildvorschau gültig" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Bildvorschau gültig" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "Start der Bildvorschau" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "Start der Bildvorschau" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Länge der Bildvorschau" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Länge der Bildvorschau" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Automatische Belichtungssperre" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "Belichtungszeit" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "Belichtungszeit" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Fokusverarbeitung" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Fokusverarbeitung" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "Autofokus-Suche" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "Autofokus-Suche" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Autofokus-Bereiche" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Autofokus-Bereiche" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Ausgewählter Autofokus-Punkt" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF Fine Tune Adjust" +msgstr "Benutzter Autofokus-Punkt" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF fine tune adjust" +msgstr "Benutzter Autofokus-Punkt" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "Fernbedienung" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "Fernbedienung" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Blitzmodus" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Blitzmodus" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "Blitzaktivität" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "Blitzaktivität" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "Blitzstärke" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "Manuelle Blitzkontrolle" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Weißabgleich 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Weißabgleich 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Weißabgleichstemperatur" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Weißabgleichstemperatur" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Benutzerdefinierte Sättigung" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Benutzerdefinierte Sättigung" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Geänderte Sättigung" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Geänderte Sättigung" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Kontrasteinstellung" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Schärfeneinstellung" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Verzerrungskorrektur" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Verzerrungskorrektur" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Abschattungskompensation" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Abschattungskompensation" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Kompressionsrate" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Kompressionsrate" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Gradation" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Bildmodus" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Bildmodus-Sättigung" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Bildmodus-Sättigung" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Bildmodus-Farbton" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Bildmodus-Farbton" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Bildmodus-Kontrast" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Bildmodus-Kontrast" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Bildmodus-Schärfe" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Bildmodus-Schärfe" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Bildmodus-Monochromfilter" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Bildmodus-Monochromfilter" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Bildmodus-Ton" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Bildmodus-Ton" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Rauschfilter" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Filter" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Farbfilter" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Digitaler Filter" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Digitaler Filter" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Panorama-Modus" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Panorama-Modus" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Bildqualität 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Bildqualität 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer Pressure" +msgstr "Druckmesser-Druck" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Druckmesser-Druck" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Druckmesser-Lesen" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Druckmesser-Lesen" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB Detect" +msgstr "Szenenerkennung" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB detect" +msgstr "Szenenerkennung" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "Ausrüstungsversion" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "Ausrüstungsversion" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Seriennummer" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Linsen-Seriennummer" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Linsen-Seriennummer" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Linsen-Firmware Version" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Linsen-Firmware Version" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Maximale Blende bei aktuellem Fokus" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Maximale Blende bei aktuellem Fokus" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Linseneigenschaften" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Linseneigenschaften" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Erweiterung" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Seriennummer der Erweiterung" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Seriennummer der Erweiterung" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Modell der Erweiterung" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Modell der Erweiterung" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Firmware Version der Erweiterung" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Firmware Version der Erweiterung" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion Lens" +msgstr "Versionen" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion lens" +msgstr "Kernfilter" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Blitzmodell" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Blitzmodell" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Firmware Version des Blitzes" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Firmware Version des Blitzes" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Seriennummer des Blitzes" + +#: src/olympusmn.cpp:771 +#, fuzzy +msgid "Unknown OlympusEq tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Hohe Empfindlichkeit" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "Hohe Funktionen" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "Fortgeschrittene hohe Empfindlichkeit" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "Fortgeschrittene hohe Funktion" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Original" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Bearbeitet (Landschaft)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Bearbeitet (Portrait)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "Weißabgleich-Farbtemperatur" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "Weißabgleich-Graupunkt" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "Version der Rohentwicklung" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "Version der Rohentwicklung" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Belichtungsfehler" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +#, fuzzy +msgid "Exposure bias value" +msgstr "Belichtungsfehler" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Weißabgleichswert" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Weißabgleichswert" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "Sättigungsanpassung" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "Sättigungsanpassung" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "Graupunkt" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "Graupunkt" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation Emphasis" +msgstr "Sättigungseinstellung" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation emphasis" +msgstr "Sättigungseinstellung" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Meine Farben" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory color emphasis" +msgstr "Meine Farben" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Kontrast-Wert" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Kontrast-Wert" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "Schärfe-Wert" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Schärfe-Wert" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +#, fuzzy +msgid "Engine" +msgstr "Techniker" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Bearbeitungsstatus" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Einstellungen" + +#: src/olympusmn.cpp:830 +#, fuzzy +msgid "Unknown OlympusRd tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Rohentwicklung" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "Roh-Entwicklungsinformation" + +#: src/olympusmn.cpp:889 +#, fuzzy +msgid "White balance fine adjustment" +msgstr "Weißabgleich-Anpassung" + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "Sättigung" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "Kontrast" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "Schärfe" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW Filter" +msgstr "Filter" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW filter" +msgstr "Filter" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Bildmodus" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Bildmodus" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto Gradation" +msgstr "Audiodauer" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto gradation" +msgstr "Audiodauer" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "PM Noise Filter" +msgstr "Rauschfilter" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "Bildmoduseinstellung" + +#: src/olympusmn.cpp:909 +#, fuzzy +msgid "Unknown OlympusRd2 tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Ein (Standard)" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Ein (Standard)" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Bildverarbeitung" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Informationen zur Bildverarbeitung" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB Levels 3000K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB levels 3000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB Levels 3300K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB levels 3300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB Levels 3600K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB levels 3600K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB Levels 3900K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB levels 3900K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB Levels 4000K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB levels 4000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB Levels 4300K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB levels 4300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB Levels 4500K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB levels 4500K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB Levels 4800K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB levels 4800K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB Levels 5300K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB levels 5300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB Levels 6000K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB levels 6000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB Levels 6600K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB levels 6600K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB Levels 7500K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB levels 7500K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB Levels CWB1" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB levels CWB1" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB Levels CWB3" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB levels CWB3" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB Levels CWB4" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB levels CWB4" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G Level 3000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G level 3000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G Level 3300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G level 3300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G Level 3600K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G level 3600K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G Level 3900K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G level 3900K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G Level 4000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G level 4000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G Level 4300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G level 4300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G Level 4500K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G level 4500K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G Level 4800K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G level 4800K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G Level 5300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G level 5300K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G Level 6000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G level 6000K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G Level 6600K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G level 6600K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G Level 7500K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G level 7500K" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "Verbesserer" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Verbesserer-Werte" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer values" +msgstr "Verbesserer-Werte" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Kernfiilter" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Kernfilter" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Kernfilter" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:975 +#, fuzzy +msgid "Gain Base" +msgstr "Basis-Adresse" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Gültige Bits" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Links zuschneiden" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Links zuschneiden" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Oben zuschneiden" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Oben zuschneiden" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Breite des Zuschnitts" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Breite des Zuschnitts" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Höhe des Zuschnitts" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Höhe des Zuschnitts" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Belichtungsmodus" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Mehrfache Belichtung" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +#, fuzzy +msgid "Aspect Ratio" +msgstr "Video-Pixelverhältnis" + +#: src/olympusmn.cpp:985 +#, fuzzy +msgid "Aspect ratio" +msgstr "Video-Pixelverhältnis" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Video-Pixelverhältnis" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Video-Pixelverhältnis" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +#, fuzzy +msgid "Face Detect" +msgstr "Fehler beim Lesen" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +#, fuzzy +msgid "Face detect" +msgstr "Fehler beim Lesen" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "Fehler beim Lesen" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "Fehler beim Lesen" + +#: src/olympusmn.cpp:990 +#, fuzzy +msgid "Unknown OlympusIp tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "Direkt" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Version der Fokus-Information" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Version der Fokus-Information" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Automatischer Fokus" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "Szenenerkennung" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "Szenenerkennung" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Szenenbereich" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Szenenbereich" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Szenenerkennungsdaten" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Szenenerkennungsdaten" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Zoom-Schrittweite" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Fokus-Schrittweite" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Fokus-Schrittweite" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "Fokuseinstellung" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "Fokuseinstellung" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "Fokustyp" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "Fokusabstand" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Externer Blitz" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Externer Blitzmodus" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Externer Blitzmodus" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Manuell ausgelöst" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Manuell ausgelöst" + +#: src/olympusmn.cpp:1025 +#, fuzzy +msgid "Unknown OlympusFi tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:1049 +#, fuzzy +msgid "Fine Weather" +msgstr "Gutes Wetter" + +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "weißglühendes Wolfram Licht" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "Abend" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Tageslicht Leuchtstoff (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +#, fuzzy +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Tageslichtweiß Leuchtstoff (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +#, fuzzy +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Kühles weißes Leuchtstofflicht (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +#, fuzzy +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Weißes Leuchtstofflicht (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/olympusmn.cpp:1057 +#, fuzzy +msgid "Custom 1-4" +msgstr "Benutzerdefiniert 1" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "Version der Fokus-Information" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "Version der Fokus-Information" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB Levels Used" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB levels used" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB Levels Auto" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB levels auto" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB Levels Shade" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB levels shade" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB Levels Cloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB levels cloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB Levels Fine Weather" +msgstr "WB_RGGBLevelsFlash" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB levels fine weather" +msgstr "WB_RGGBLevelsFlash" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB Levels Tungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB levels tungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB Levels Evening Sunlight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB levels evening sunlight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB Levels Daylight Fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB levels daylight fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB Levels Day White Fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB levels day white fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB Levels Cool White Fluor" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB levels cool white fluor" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "WB_RGGBLevelsFluorescentD" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "WB_RGGBLevelsFluorescentD" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color Matrix2" +msgstr "Farbmatrix 2" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color matrix 2" +msgstr "Farbmatrix 2" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black Level 2" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black level 2" +msgstr "Schwarzlevel" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "YCbCr Koeffizienten" + +#: src/olympusmn.cpp:1077 +#, fuzzy +msgid "YCbCr coefficients" +msgstr "YCbCr Koeffizienten" + +#: src/olympusmn.cpp:1078 +#, fuzzy +msgid "Valid Pixel Depth" +msgstr "Video-Pixeltiefe" + +#: src/olympusmn.cpp:1078 +#, fuzzy +msgid "Valid pixel depth" +msgstr "Video-Pixeltiefe" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Weißabgleich 2" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Weißabgleich 2" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "Sättigungseinstellung" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "Besitzt Einstellungen" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "Automatische Belichtung-Einstellungen" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM Exposure Compensation" +msgstr "Belichtungskompensierung" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM exposure compensation" +msgstr "Belichtungskompensation" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Weißabgleich" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Weißabgleich" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Weißabgleich 2" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Weißabgleich 2" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "Weißabgleichsreihe" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "Weißabgleichsauslöser" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "Sättigung" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "Sättigung" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM Hue" +msgstr "Sättigung" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM hue" +msgstr "Sättigung" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "Kontrast" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "Kontrast" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "Schärfe" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "Schärfe" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Olympus" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Vom Benutzer ausgewählt" + +#: src/olympusmn.cpp:1122 +#, fuzzy +msgid "Auto-Override" +msgstr "Überschreiben" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Schnell" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "Eine Berührung" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "Eindeutige Bildnummer" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "Autofokus-Suche" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Punktfokus" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Rechte Zone" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Panorama" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Fokusverarbeitung" + +#: src/olympusmn.cpp:1510 +#, fuzzy +msgid "Fish Eye" +msgstr "Energie des Blitzes" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +#, fuzzy +msgid "Dramatic Tone" +msgstr "Aufnahmeinformation" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Punktfokus" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Natürliche Farben" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Minimale Blende" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Auswahl" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Fokusverarbeitung" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Natürliche Farben" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Natürliche Farben" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Panorama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Verwaltungs-UI" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Verwaltungs-UI" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Natürliche Farbe" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Natürliche Farbe" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Natürliche Farbe" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "Linke Zone" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +#, fuzzy +msgid "Center (horizontal)" +msgstr "Mittelzone (Horizontale Orientierung)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +#, fuzzy +msgid "Center (vertical)" +msgstr "Mittelzone (Vertikale Orientierung)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Mittelzone (Horizontale Orientierung)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "Horizontal (Normal)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Horizontal (Normal)" + +#: src/olympusmn.cpp:1630 +#, fuzzy +msgid "Bottom-left (horizontal)" +msgstr "Unten - links" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "Unten - links" + +#: src/olympusmn.cpp:1632 +#, fuzzy +msgid "Bottom-right (horizontal)" +msgstr "Unten - rechts" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "Zentriert" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "Oben - rechts" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +#, fuzzy +msgid "Mid-right (vertical)" +msgstr "Mitte - rechts" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +#, fuzzy +msgid "Bottom-left (vertical)" +msgstr "Unten - links" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "Unten - links" + +#: src/olympusmn.cpp:1643 +#, fuzzy +msgid "Bottom-right (vertical)" +msgstr "Unten - rechts" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Einzelbereich" + +#: src/olympusmn.cpp:1681 +#, fuzzy +msgid "All Target" +msgstr "Ziel" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Dynamische Bereichseinstellung" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Sehr hoch" + +#: src/panasonicmn.cpp:60 +#, fuzzy +msgid "Motion Picture" +msgstr "Bildmodus" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogen" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "Automatisch, Fokusknopf" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "Automatisch, dauerhaft" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "Autofokus-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "Autofokus-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "Verschieben" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Telemakro" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Macro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Szene" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Verschlussgeschwindigkeit-Priorität" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Nahaufnahme" + +#: src/panasonicmn.cpp:123 +#, fuzzy +msgid "Simple" +msgstr "Einzel" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Farbeffekt" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Nachtszene" + +#: src/panasonicmn.cpp:132 +#, fuzzy +msgid "Baby" +msgstr "durch" + +#: src/panasonicmn.cpp:133 +#, fuzzy +msgid "Soft skin" +msgstr "Weich" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Kerzenlicht" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "Standard Licht A" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "ISO-Empfindlichkeit" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Panorama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +#, fuzzy +msgid "Intelligent ISO" +msgstr "Intervalllänge" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Weißabgleich" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "Einstellung des kontinuierlichen Fokus" + +#: src/panasonicmn.cpp:146 +#, fuzzy +msgid "Intelligent auto" +msgstr "Intervalllänge" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Mehr-Punkt" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Transferbereich" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Blitzkontrolle" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Filmscanner" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Meine Farben" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Panoramaeinzelbild" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Kerzenlicht" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Fernbedienung" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Digitaler Filter" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Selbstportrait" + +#: src/panasonicmn.cpp:163 +#, fuzzy +msgid "Silky Skin" +msgstr "Weich" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Beziehung" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Nachtszene" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Blau" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "GPS Bereichsinformation" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Nachtportrait" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Warm" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Kalt" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Niedrige/Hohe Qualität" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "Unendlich" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "Mittel 1" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "Mittel 1" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "Hoch" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +#, fuzzy +msgid "Highest (+2)" +msgstr "Hoch" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "90 Grad drehen (Im Uhrzeigersinn)" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Nicht benutzt" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Nicht benutzt" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +#, fuzzy +msgid "Home" +msgstr "Rom" + +#: src/panasonicmn.cpp:294 +#, fuzzy +msgid "Standard (color)" +msgstr "Standardformat" + +#: src/panasonicmn.cpp:295 +#, fuzzy +msgid "Dynamic (color)" +msgstr "Dynamischer Bereich" + +#: src/panasonicmn.cpp:296 +#, fuzzy +msgid "Nature (color)" +msgstr "Natürliche Farben" + +#: src/panasonicmn.cpp:297 +#, fuzzy +msgid "Smooth (color)" +msgstr "Glatt" + +#: src/panasonicmn.cpp:298 +#, fuzzy +msgid "Standard (B&W)" +msgstr "Standard (100%)" + +#: src/panasonicmn.cpp:299 +#, fuzzy +msgid "Dynamic (B&W)" +msgstr "Dynamischer Bereich" + +#: src/panasonicmn.cpp:300 +#, fuzzy +msgid "Smooth (B&W)" +msgstr "Glatt" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Dynamisch" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Erfassung" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Erweiterung" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Automatisch" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Standardformat" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "90 Grad drehen (Im Uhrzeigersinn)" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "90 Grad drehen (Im Uhrzeigersinn)" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "links nach rechts" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "rechts nach links" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "oben nach unten" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "unten nach oben" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Sendezeit" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Aufnahmeinformation" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Auswahl" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Audio" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Weißabgleich-Anpassung" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Blitzkontrolle" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Exif-Version" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Farbeffekt" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Farbeffekt" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Burst Mode" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Burst Mode" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Rauschreduktion" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Selbstauslöser" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Autofokus-Unterstützung" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "durch" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical Zoom Mode" +msgstr "Spezialmodus" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical zoom mode" +msgstr "Filmmodus" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "Reisetag" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "Reisetag" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World Time Location" +msgstr "Aufnahmeort" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World time location" +msgstr "Aufnahmeort" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "GPS-Zeitstempel" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Programm" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Szenentyp" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "GPS-Zeitstempel" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Fehler beim Lesen" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Farbtemperatur" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Farbtemperatur" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Automatische Erfassung" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "Sättigungsanpassung" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "Sättigungsanpassung" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Blitzinformation" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Rauschreduktion einer langen Belichtung" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Autofokus-Position" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Fehler beim Lesen" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Linsentyp" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "Linsentyp" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Seriennummer" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "Transferbereich" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Intervalllänge" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Firmware Version" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Information zu der Schüttelreduktion" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Fokuswarnung" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Blitzdosierung" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Titel" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "durch" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Ort" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Staat" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Intervalllänge" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Verschlusszeit" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Entwicklungsdynamischer Bereich" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Rauschunterdrückung" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Stadt" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Bildmodus" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Bild-Orientierung" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "Winkel zuschneiden" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Pamoramarichtung" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Fotoeffekt" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Intern + Extern" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Verschlussgeschwindigkeit" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Messung wird durchgeführt" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "Version der Herstellerbemerkung" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "Version der Herstellerbemerkung" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB Red Level" +msgstr "WB_RGGBLevelsShade" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB red level" +msgstr "Schwarzlevel" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB Green Level" +msgstr "Schwarzlevel" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB green level" +msgstr "Schwarzlevel" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB Blue Level" +msgstr "WB_RGGBLevelsShade" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB blue level" +msgstr "Schwarzlevel" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "GPS-Zeitstempel" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "GPS-Zeitstempel" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "durch" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "Transferbereich" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Panasonic" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Punktmodus" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "Punktfokus" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Punktfokus" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "nicht gesetzt\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "Linsen-Firmware Version" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "Breite des Zuschnitts" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "Breite des Zuschnitts" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "Sensorenreinigung" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "Sensorenreinigung" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor Top Border" +msgstr "Sensortemperatur" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor top border" +msgstr "Sensortemperatur" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor Left Border" +msgstr "Sensortemperatur" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor left border" +msgstr "Sensortemperatur" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Hersteller" + +#: src/panasonicmn.cpp:739 +#, fuzzy +msgid "The manufacturer of the recording equipment" +msgstr "TIFF-Feld 271, 0x10F. Hersteller der Aufnahmeausrüstung." + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Modell" + +#: src/panasonicmn.cpp:740 +#, fuzzy +msgid "The model name or model number of the equipment" +msgstr "TIFF-Feld 272, 0x110. Modellname oder -nummer der Ausrüstung." + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "Strip Offsets" + +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "Strip Offsets" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientierung" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "Rows Per Strip" +msgstr "Zeilen pro Strip" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "The number of rows per strip" +msgstr "Die Anzahl der Takte." + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Strip Byte Anzahl" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Strip Byte Anzahl" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "Eindeutige ID der Rohdaten" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "Header, offset" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Exif IFD Zeiger" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "GPS Info IFD Zeiger" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Panasonic" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Nachtszene" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Gut" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Besser" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Am Besten" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 oder 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 oder 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 oder 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Blitz nicht ausgelöst, automatisch" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Blitz löste nicht aus" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Blitz nicht ausgelöst, automatisch, Rote-Augen-Reduktion" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Blitz ausgelöst, automatisch" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Blitz ausgelöst" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Blitz ausgelöst, automatisch, Rote-Augen-Reduktion" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Ein, Rote Augen reduzieren" + +#: src/pentaxmn.cpp:256 +#, fuzzy +msgid "On, Wireless (Master)" +msgstr "Ein, Drahtlos" + +#: src/pentaxmn.cpp:257 +#, fuzzy +msgid "On, Wireless (Control)" +msgstr "Ein, Drahtlos" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Ein, weich" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Ein, langsame Synchronisation" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Ein, langsame Synchronisation, Rote-Augen-Reduktion" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Schwenk-Fokus" + +#: src/pentaxmn.cpp:275 +#, fuzzy +msgid "AF-A" +msgstr "Autofokus-S" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Kontrasteinstellungen" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Kontrasteinstellungen" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Fixierte Mitte" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "Automatischer Autofokus" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Auswahl" + +#: src/pentaxmn.cpp:305 +#, fuzzy +msgid "Fixed Center or multiple" +msgstr "Fixierte Mitte" + +#: src/pentaxmn.cpp:307 +#, fuzzy +msgid "Top-center" +msgstr "Zentriert" + +#: src/pentaxmn.cpp:313 +#, fuzzy +msgid "Bottom-center" +msgstr "Unten - links" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Mehr-Segment" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Zentriert gewichtet" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "Tageslicht fluoreszent" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "Tagesweiß fluoreszent" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "Weiß fluoreszent" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Farbtemperatur" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Vom Benutzer ausgewählt" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Automatisch (Tageslicht)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Automatisch (Schatten)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Automatisch (Blitz)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Automatisch (Wolframlicht)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Automatisch (Tageslicht fluoreszent)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Automatisch (Tageslicht fluoreszent)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Automatisch (Leuchstoffröhre)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Automatisch (Wolkiges Wetter)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Voreingestellt (Feuerwerk?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Mitte bis niedrig" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Mitte bis hoch" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Mitte bis weich" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "Mitte bis hart" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Sehr weich" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Sehr hart" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Heimatstadt" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Mexico Stadt" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "New York" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracas" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "London" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paris" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Mailand" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rom" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlin" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istanbul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Kairo" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jerusalem" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moskau" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Dschidda" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Teheran" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubai" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Karatschi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Kathmandu" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dhaka" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Rangun" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientiane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapur" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Jakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hongkong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Peking" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Shanghai" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Taipei" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seoul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaide" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokio" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Nouméa" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Algier" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Athen" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Stockholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lissabon" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Kopenhagen" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "Warschau" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "Prag" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "Budapest" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Unverarbeitet" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "größengeändert" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Zugeschnitten" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Digitaler Filter" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Hi-Speed Programm" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "DOF Programm" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "MTF Programm" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Nachtportrait" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Kein Blitz" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surfen & Schnee" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Kinder" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "Bildhöhe" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "Nachtaufnahme" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "Blau" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Nachtszene" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Supermakro" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "Leuchtstoffröhre" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (Standard)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (Portrait)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (Landschaft)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (Makro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (Sport)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Grüner Modus" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Verschlussgeschwindigkeit-Priorität" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Blendenpriorität" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Glühbirne" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Programmwechsel" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Programmwechsel" + +#: src/pentaxmn.cpp:635 +#, fuzzy +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Blendenpriorität (Av)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Verschlusspriorität" + +#: src/pentaxmn.cpp:640 +#, fuzzy +msgid "Shutter & Aperture Priority AE" +msgstr "Verschlussgeschwindigkeit-Priorität" + +#: src/pentaxmn.cpp:641 +#, fuzzy +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Verschlussgeschwindigkeit-Priorität" + +#: src/pentaxmn.cpp:642 +#, fuzzy +msgid "Sensitivity Priority AE" +msgstr "Empfindlichkeit justieren" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Programm (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Programm (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Programm (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Farbkontrolle" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Kontinuierlich (Hi)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Bersten" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +#, fuzzy +msgid "Video" +msgstr "Weit" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Selbstauslöser (12 Sek.)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Selbstauslöser (2 Sek.)" + +#: src/pentaxmn.cpp:669 +#, fuzzy +msgid "Mirror Lock-up" +msgstr "Spiegelvorauslösung" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Fernbedienung (3 Sec)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Fernbedienung" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Einstellung des kontinuierlichen Fokus" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Stark" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Stark" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Stark" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Automatisch" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 oder keine Linsen" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "K,M Linsen" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "A-Serien Linsen" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Helligkeit" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Schwächste" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Schwach" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Stark" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Keine erweiterte Erfassung" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Unbekannt" + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Version der Pentax-Herstellerbemerkung" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Kamera-Aufnahmemodus" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Auflösung des Vorschaubildes" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Länge des Vorschaubildes" + +#: src/pentaxmn.cpp:1155 +#, fuzzy +msgid "Size of an IFD containing a preview image" +msgstr "Größe des Vorschaubildes" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Modellidentifikation" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Pentax-Modellidentifikation" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Datum" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Zeit" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Bildqualitätseinstellungen" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Bildgröße-Einstellungen" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Blitzmodus-Einstellungen" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Fokusmodus-Einstellungen" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Ausgewählter Autofokus-Punkt" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "Benutzte Autofokus-Punkte" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "F-Nummer" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "ISO-Empfindlichkeit" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "ISO-Empfindlichkeitseinstellungen" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Messmodus" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Automatischer Erfassung" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Blauabgleich" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Roter Farbabgleich" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Brennweite" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Heimatstadt" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "Heimatstadt (Sommerzeit)" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Sommerzeit aktiv in der Heimatstadt" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Zielort (Sommerzeit)" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Ist die Sommerzeit aktiv im Zielort" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "DSP-Firmware Version" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "CPU-Firmware Version" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Helligkeitswert" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" +"Der von der Kamera berechnete Helligkeitswert inklusive " +"Belichtungskompensation" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "Bilddatengröße" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "Bildgröße" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Vorschau der Bildränder" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Empfindlichkeit justieren" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Digitaler Filter" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Kameratemperatur" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Bildton" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Schüttelreduktion" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Information zu der Schüttelreduktion" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "Dynamische Bereichserweiterung" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Hohe ISO-Rauschreduktion" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "Sättigungsanpassung" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Schwarzpunkt" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Weißpunkt" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Aufnahmeinfo" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +#, fuzzy +msgid "AEInfo" +msgstr "Autofokus-Information" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Linseninformation" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Blitzinformation" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "AEMeteringSegments" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "FlashADump" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "FlashBDump" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "WB_RGGBLevelsShade" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "WB_RGGBLevelsFluorescentD" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "WB_RGGBLevelsFluorescentN" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "WB_RGGBLevelsFluorescentW" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "WB_RGGBLevelsFlash" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Kamerainformation" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Batterieinformation" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "Autofokus-Information" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "Farbinfo" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Pentax" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Dublin-Hauptschema" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "digiKam-Fotoverwaltungsschema" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "XMP-Basisschema" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "XMP-Rechteverwaltungsschema" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "XMP-Mediverwaltungsschema" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "XMP-Basis-Job-Ticket-Schema" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "XMP eingelagertes Textschema" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "XMP-Dynamisches Medienschema" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Microsoft-Fotoschema" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Adobe Photoshop-Schema" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Adobe PDF-Schema" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Adobe Photoshop-Schema" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Kamera-Rohschema" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Exif-Schema für TIFF-Eigenschaften" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Exif-Schema für Exif-spezifische Eigenschaften" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Exif-Schema für zusätzliche Exif-Eigenschaften" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "IPTC-Hauptschema" + +#: src/properties.cpp:129 src/properties.cpp:130 +#, fuzzy +msgid "IPTC Extension schema" +msgstr "IPTC-Hauptschema" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +#, fuzzy +msgid "iView Media Pro schema" +msgstr "XMP-Dynamisches Medienschema" + +#: src/properties.cpp:133 +#, fuzzy +msgid "Expression Media schema" +msgstr "IPTC-Hauptschema" + +#: src/properties.cpp:134 +#, fuzzy +msgid "Microsoft Photo 1.2 schema" +msgstr "Microsoft-Fotoschema" + +#: src/properties.cpp:135 +#, fuzzy +msgid "Microsoft Photo RegionInfo schema" +msgstr "Microsoft-Fotoschema" + +#: src/properties.cpp:136 +#, fuzzy +msgid "Microsoft Photo Region schema" +msgstr "Microsoft-Fotoschema" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "IPTC-Hauptschema" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "IPTC-Hauptschema" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Dublin-Hauptschema" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Dublin-Hauptschema" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Adobe PDF-Schema" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Farbmittelstruktur" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Dimensionsstruktur" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Schriftartstruktur" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Vorschaustruktur" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Eventstruktur der Ressource" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "RessourceRef-Struktur" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Versionsstruktur" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Basisaufgabe/Arbeitsablaufstruktur" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Farbmittelstruktur" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Kennzeichnung für XMP:Identifikator" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Mitwirkende" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Andere Mitwirkende als die Autoren bei den Ressourcen." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Abdeckung" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Ersteller" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "Die Autoren der Ressource in der Ordnung Ihres Beitrags." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Daten an denen etwas Interessantes an der Ressource geschah." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Eine textliche Beschreibung des Inhalts der Ressource. Mehrere Werte können " +"für unterschiedliche Sprachen vorhanden sein." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Format" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"Das zum Speichern der Ressource benutzte Dateiformat. Werkzeuge und " +"Programme sollten diese Eignschaft setzen, um das Format der Daten zu " +"speichern. Es kann auch It zugehörige Kennzeichnungen enthalten." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identifizierer" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Eindeutiger Identifikator der Ressource. Die praktische Empfehlung ist es, " +"die Ressource über eine Zeichnkette zu identifizieren, die einem formellen " +"Identifikationssystem entspricht." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" +"Eine unsortierte Liste die die in der Ressource benutzten Sprachen aufzählt." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Herausgeber" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Eine Entität die benutzt wird, um die Ressource zur Verfügung zu stellen. " +"Beispiele für den Herausgeber könnten eine Person, eine Organisation oder " +"ein Dienst sein. Typischerweise sollte der Name eines Herausgebers benutzt " +"werden, um die Entität zu kennzeichen" + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Beziehung" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Beziehungen zu anderen Dokumenten. Die Empfehlung aus der Praxis ist es, die " +"betreffende Ressource durch eine Zeichenkette zu identifizieren, die einem " +"formellen Identifizierungssystem entspricht." + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Rechte" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Informelle Rechtsaussage die durch die Sprache ausgewählt wird. " +"Typischerweise enthalten Rechtsinformationen eine Aussage über verschiedene " +"Eigenschaftsrechte, inklusive geistige Eigentumsrechte, die mit der " +"Ressource assoziert sind." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "" +"Eindeutige Identifikation der Arbeit von der diese Ressource abgeleitet " +"wurde." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Eine ungeordnete Liste von beschreibenden Begriffen oder Sitchwörtern, die " +"das Thema des Inhalts der Ressource angeben." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"Der Titel des Dokuments oder der Name den die Ressource hat. Normalerweise " +"ist dies der Name unter dem die Ressource allgemein bekannt ist." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Typ" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "En Dokumenttyp wie z.B. Roman, Gedicht oder Arbeitspapier." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Felderliste" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"Die Liste des kompletten Stichwortpfads als Zeichenkette. Die Teile der " +"Zeichenkette werden durch das Zeichen \"/\" getrennt, wie z.B. in \"Stadt/" +"Paris/Monument/Eiffelturm\"." + +#: src/properties.cpp:195 +#, fuzzy +msgid "Captions Author Names" +msgstr "Ländername" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "aktualisiere Zeitstempel" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Bildhöhe" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Linsendaten-Einstellungen" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "Farbraum" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Name" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Panoramaeinzelbild" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "Besitzt Einstellungen" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Hinweise" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"Eine ungeordnete Liste, die Eigenschaften angibt, die ausserhalb der " +"erstellenden Anwendung bearbeitet wurden. Jeder Eintrag sollte seinen " +"Namensraum und XPath enthalten, die über ein ASCII-Leerzeichen (U+0020). " +"getrennt sind." + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "Basis-Adresse" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"Die Basis-URL für relative URL's im Dokument. Wenn dieses Dokument " +"Verknüpfungen im Internet enthält und diese relativ sind, dann sind sie " +"relativ zu dieser Basis-URL. Diese Eigenschaft stellt einen Standard für " +"eingebettete URL's zur Verfügung, damit sie von Werkzeugen interpretiert " +"werden können. Web-Autorenwerkzeuge sollten diesen Wert, basierend auf Ihrer " +"Absicht wie URL's interpretiert werden, setzen." + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "" +"Das Datum und die Uhrzeit, an dem die Ressource im Original erstellt wurde." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Erstellungswerkzeug" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"Der Name des ersten bekannten Werkzeuges, mit dem die Ressource erstellt " +"wurde. Wenn in den Metadaten eine Historie geführt wird, dann sollte dieser " +"Wert gleich dem in der Eigenschaft xmpMM:History's softwareAgent sein." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Eine ungeordnete Liste von Zeichenketten, die die Ressource in einem " +"gegebenenen Kontext eindeutig identifizieren. Ein Listeneintrag kann mit dem " +"xmpidq:Scheme qualifiziert werden, um das formale Identifikationssystem zu " +"bezeichnen, dem der Identifikator folgt. Achtung: Die Eigenschaft dc:" +"identifier wird nicht benutzt, da ihr ein definierter Schemavermerk fehlt " +"und sie in der XMP-Spezifikation als als einfache, einwertige Eigenschaft " +"definiert wurde." + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Name" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"Ein Wort oder eine kurze Umschreibung, die das Dokument als einen Teil einer " +"benutzerdefinierten Sammlung identifiziert. Es wird benutzt, um die " +"Dokumente in einem Dateimanager zu organisieren." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Metadaten-Datum" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"Das Datum und die Zeit, an dem die Metadaten dieser Ressource das letzte Mal " +"geändert wurden. Es sollte das gleiche oder ein aktuelleres Datum als xmp:" +"ModifyDate sein." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Änderungsdatum" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"Das Datum und die Zeit, an dem die Ressource zuletzt geändert wurde. " +"Achtung: Der Wert dieser Eigenschaft muss nicht der gleiche sein wie das " +"Änderungsdatum des Dateisystems, da es gesetzt wird bevor die Datei " +"gespeichert wird." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Spitzname" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Ein kurzer informeller Name für die Ressource." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Bewertung" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Eine Zahl, die den Dokumentenstatus relativ zu anderen Dokumenten " +"beschreibt. Sie wird benutzt, um Dokumente in einem Dateimanager zu " +"organisieren. Die Werte werden vom Benutzer innerhalb eines von der " +"Anwendung vorgegebenen Bereichs gesetzt." + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Vorschaubilder" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Eine alternative Liste von Vorschaubildern für eine Datei. Diese können sich " +"in Eigenschaften wie z.B. Größe oder Bildkodierung unterscheiden." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Zertifikat" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Online-Rechteverwaltungszertifikat" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Markiert" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Zeigt an, dass dies eine Ressource ist, deren Rechte verwaltet sind." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Besitzer" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" +"Eine ungeordnete Liste von einem oder mehreren rechtlichen Besitzer einer " +"Ressource." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Benutzungsbedingungen" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Textbeschreibung wie die Ressource legal benutzt werden kann." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Web-Angaben" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Die Adresse einer Web-Seite, die den Besitzer und/oder die Rechteangaben für " +"die Ressource beschreibt." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Abgeleitet von" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" +"Eine Referenz auf das Originaldokument, von dem dieses hier abgeleitet " +"wurde. Es handelt sich um eine minimale Referenz. Bei fehlenden Komponenten " +"können Sie davon ausgehen, dass sie nicht geändert wurden. So müssen Sie für " +"eine neue Version z.B. nur die Instanz-ID und die Versionsnummer der " +"vorangegangenen Version angeben. Eine Wiedergabe braucht also nur die " +"Instanz-ID und die Wiedergabeklasse des Originals angeben." + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "Dokumenten-ID" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" +"Der allgemeine Identifikator für alle Versionen und Wiedergaben eines " +"Dokuments. Er sollte daher auf der UUID basieren. Sehen Sie dazu die " +"Dokumenten- und Instanz-ID's unten." + +#: src/properties.cpp:268 +msgid "History" +msgstr "Historie" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" +"Eine sortierte Liste von groben umschriebenen Benutzeraktionen, die zu " +"dieser Ressource führten. Dadurch sollen menschliche Leser eine Idee von den " +"Schritten bekommen, die von der vorangegangenen Version zu dieser geführt " +"haben. Diese Liste sollte auf einer abstrakten Ebene vorliegen. Es ist nicht " +"gedacht als vollständige Zusammenstellung aller Tastenanschläge oder als " +"detailierte Anleitung." + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "Instanz-ID" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" +"Eine Identikator für eine spezielle Version des Dokumentes, der jedes Mal " +"aktualisiert wird, wenn die Datei gespeichert wird. Er sollte auf einer UUID " +"basieren. Sehen Sie dazu unten die Dokumenten- und Instanz-ID's." + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Verwaltet von" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" +"Eine Referenz auf das vormals unverwaltete Dokument. Diese wird gesetzt, " +"wenn ein verwaltetes Dokument in eine Bestandsverwaltung aufgenommen wird, " +"die es nicht besitzt. Es kann oder auch nicht Referenzen auf verschiedene " +"Verwaltungssysteme enthalten." + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Verwalter" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" +"Der Name des Verwaltungssystems das diese Ressource verwaltet. Zusammen mit " +"xmpMM: ManagerVariant, teilt es der Anwendung mit, welches " +"Bestandsverwaltungssystem zu diesem Dokument kontaktiert werden muss." + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "Verwaltet für" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" +"Eine URI die die verwaltete Ressource für das Bestandsverwaltungssystem " +"identifiziert. Das Vorhandensein dieser Eigenschaft ist ein formaler " +"Indikator, dass diese Ressource verwaltet ist. Form und Inhalt dieser URI " +"ist nur für das Bestandsverwaltungssystem." + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "Verwaltungs-UI" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" +"Eine URI die benutzt werden kann, um Informationen über die verwaltete " +"Ressource mittels eines Web-Browsers zu bekommen. Sie setzt unter Umständen " +"ein Browsermodul voraus." + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "Verwaltungsvariante" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" +"Gibt eine bestimmte Variante des Bestandsverwaltungssystems an. Das Format " +"dieser Eigenschaft ist nur für die angegebene Bestandsverwaltungssystem." + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Wiedergabeklasse" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" +"Die Wiedergabeklasse für diese Ressource. Diese Eigenschaft sollte fehlen " +"oder auf den Standard gesetzt sein für alle Dokumentenversionen die keine " +"abgeleitete Umsetzungen sind." + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Wiedergabeparameter" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" +"Kann benutzt werden, um zusätzliche Wiedergabeparameter zur Verfügung zu " +"stellen, die zu komplex oder zu umfangreich sind, um in der Wiedergabeklasse " +"xmpMM: gespeichert zu werden." + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "Version-ID" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" +"Der Identifikator für die Version des Dokumentes für diese Ressource. Jede " +"Version eines Dokumentes bekommt einen neuen Identifikator, der " +"normalerweise einfach durch das Hochzählen 1, 2, 3 . . . und so weiter " +"gebildet. Medienverwaltungssystemw haben unter Umständen andere Konventionen " +"oder unterstützen Abzweigungen die ein komplexeres Schema benötigen." + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Versionen" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" +"Die Historie der Versionen die mit dieser Ressource assoziert ist. Der " +"Eintrag [1] ist die älteste bekannte Version für dieses Dokument, der " +"Eintrag [letzter()] ist die aktuellste Version. Typischerweise trägt ein " +"Medienverwaltungssystem die Versionsinformationen in den Metadaten bei der " +"Aufnahme ein. Es gibt aber keine Garantie, dass eine komplette Historie von " +"dem ersten bis zu dem gerade präsentierten in der Eigenschaft xmpMM:Versions " +"vorhanden ist. Interne Versionsinformationen können komprimiert oder " +"gelöscht und die Versionshistorie kann an einem Punkt abgeschnitten werden." + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Letzte Adresse" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Veraltet wegen dem Schutz der Privatsphäre." + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Wiedergabe von" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Veraltet und durch xmpMM:DerivedFrom ersetzt. Eine Referenz auf das Dokument " +"von dem dieses eine Ableitung ist." + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "Speicherungs-ID" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" +"Veraltet. Wurde vorher benutzt, um die Eigenschaft xmpMM:LastURL zu " +"unterstützen" + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Jobreferenz" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" +"Referenzen auf ein externe Jobverwaltungsdatei für einen for einen Prozess " +"in dem das Dokument benutzt wird. Die Benutzung der Jobnamen liegt unter dre " +"Kontrolle des Benutzers. Eine typische Anwendung ist es alle Dokumente zu " +"identifizieren, die Teil eines bestimmten Jobs oder Vertrags sind. Es können " +"mehrere Werte eingegeben werden, da ein Dokument zu mehr als einen Job zur " +"gleichen Zeit zugehören kann. Ebenfalls kann es sinnvoll sein historische " +"Informationen zu speichern, in welchem Jobs das Dokument früher benutzt " +"wurde." + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Maximale Seitengröße" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"Die Größe der größten Seite, inklusive aller eingebetten Seiten, im Dokument." + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Anzahl der Seiten" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" +"Die Anzahl der Seiten, inklusive aller eingebetten Seiten, des Dokuments." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Schriftarten" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Eine ungeordnete Liste von Zeichensätzen die in diesem Dokument benutzt " +"werden. Diese enthält auch die Zeichensätze von eingebetteten Dokumenten." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Farbmittel" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Eine ungeordnete Liste von Farbmitteln die in diesem Dokument benutzt " +"werden. Diese enthält auch alle Farbmittel in eingebetteten Dokumenten." + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Druckstocknamen" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Eine geordnete Liste von Druckstocknamen, die benötigt werden um das " +"Dokument zu drucken. Diese enthält auch die Druckstöcke aus allen " +"eingebetteten Druckstöcken." + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Projektreferenz" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Video-Bildrate" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Für die Video-Bildrate mögliche Werte sind: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Video-Bildgröße" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" +"Die Größe des Video Bildes, z.B. Breite: 720, Höhe: 480, Einheit: Pixel" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Video-Pixelverhältnis" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" +"Das Verhältnis der Videopixel augedrückt als Höhe/Breite, z.B.: \"648/720\" " +"= 0.9." + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Video-Pixeltiefe" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"Die Größe in Bits für jede Farbkomponente eines Pixels. Standard Windows 32-" +"Bit Pixel haben 8 Bit pro Farbe. Erlaubt sind : 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Video-Farbraum" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"Der benutzte Farbraum. Erlaubt sind: sRGB (von Photoshop), CCIR-601 (von " +"NTSC), CCIR-709 (von HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Video-Alphamodus" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "Der benutzte Alphamodus. Erlaubt sind: straight, pre-multiplied." + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Videokompression" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Benutzte Videokompression, z.B. jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Video-Feldreihenfolge" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Nach unten ziehen" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Audio-Abtastrate" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"Die Audio-Abtastrate kann ein beliebiger Wert sein. Empfohlen sind die Werte " +"32000, 41100, oder 48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Audio-Abtasttyp" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Der Audio-Abtasttyp, ein Wert aus: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Audio-Kanaltyp" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Der Audio-Kanaltyp, ein Wert aus: Mono, Stereo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Audio-Kompression" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Die benutzte Audio-Kompression, z.B. MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Lautsprecheraufstellung" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Dateidatenrate" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" +"Das Verhältnis der Videopixel augedrückt als Höhe/Breite, z.B.: \"648/720\" " +"= 0.9." + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Bandname" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Alternativer Bandname" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Startzeitstempel" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" +"Der Zeitstempel des ersten Bildes des Videos in der Datei. Er stammt von der " +"Gerätekontrolle." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Alternativer Zeitstempel" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"Ein Zeitstempel der vom Benutzer. Wenn er gesetzt ist, dann wird er anstatt " +"des Startzeitstempels benutzt." + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Dauer" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Die Abspieldauer der Mediendatei." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Szene" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Der Name der Szene." + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Aufnahmename" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Aufnahmedatum" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Das Datum und die Uhrzeit an dem das Video aufgenommen wurde." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Aufnahmeort" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"Der Name des Ortes, z.B. \"Oktoberfest, München, Deutschland\", an dem das " +"Video aufgenommen wurde. Für eine genauere Positionsbestimmung sollten Sie " +"die Exif-GPS-Werte benutzen." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Protokollkommentar" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Protokollkommentar des Benutzers." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Markierungen" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "Eine geordnete Liste von Markierungen" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Mitwirkende Medien" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" +"Ein ungeordnete Liste aller Medien die benutzt wurdenum dieses Medium zu " +"erstellen." + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Änderungsdatum des Videos" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Das Datum und die Uhrzeit der letzten Änderung des Videos." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Änderungsdatum der Audiodaten" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Das Datum und die Uhrzeit der letzten Änderung der Audiodaten." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Änderungsdatum der Metadaten" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Künstler" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Der Name des Künstlers bzw. der Künstler." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Album" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Der Name des Albums." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Stücknummer" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" +"Ein numerischer Wert, der die Reihenfolge der Audiodatei in der " +"Originalaufnahme anzeigt." + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Genre" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Der Name des Genres." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Die urheberrechtliche Information." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Das Datum andem der Titel veröffentlicht wurde." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Verfasser" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Der Name des Verfassers." + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Techniker" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Der Name des Technikers." + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Geschwindigkeit" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Die Geschwindigkeit des Audio." + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Instrument" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Das musikalische Instrument." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Introzeit" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "Die Dauer der Einführungszeit für Wartemusik." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Out Cue" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "Die Zeit zu der ausgeblendet werden sollte." + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Relativer Zeitstempel" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "Die Startzeit des Mediums innerhalb des Audioprojektes." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Schleife" + +#: src/properties.cpp:384 +#, fuzzy +msgid "When true, the clip can be looped seamlessly." +msgstr "" +"Wenn dieser gesetzt ist, dann kann der Clip nahtlos in einer Schleife laufen." + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Taktanzahl" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "Die Anzahl der Takte." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Schlüssel" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"Der musikalische Schlüssel des Audios. Dies ist einer aus : C, C#, D, D#, E, " +"F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Stretchmodus" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"Der Audio-Stretchmodus ist einer aus: Feste Länge, Zeitskalieren, Resample, " +"Taktverbund und Hybrid." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Zeitskalierungsparameter" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "Zusätzliche Parameter für den Zeitskalierungs-Stretchmodus." + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Paramter des Resamples" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Zusätzliche Parameter für den Stretchmodus des Resamples" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Parameter des Taktverbundes" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Zusätzliche Parameter für den Stretchmodus des Taktverbundes." + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Takt-Signatur" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"Die Takt-Signatur der Musik ist eine von: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8 oder andere." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Skalierungstyp" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Kamera-Seriennummer" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Kamera-Seriennummer." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Erwerbungsdatum" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Erwerbungsdatum." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Hersteller des Blitzes." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Hersteller des Blitzes." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Blitzmodell." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Letzter IPTC-Schlüsselbegriff" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Letzter IPTC-Schlüsselbegriff." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Letzter XMP-Schlüsselbegriff" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Letzter XMP-Schlüsselbegriff." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Linsen-Hersteller" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Linsen-Hersteller." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Linsenmodell." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Bewertung in Prozent" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Bewertung in Prozent." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Bild-Info" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Schlüsselbegriffe." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "PDF-Version" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Die Version der PDF-Datei, z.B. 1.0, 1.3 usw." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Hersteller" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Der Name des Werkzeugs, dass das PDF-Dokument erstellt hat." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Position des Autors." + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "Titel der Verfasserzeile." + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Abschnittsautor" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Autor/Verfasser" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Diese Kategorie ist auf drei 7-Bit ASCII-Zeichen beschränkt." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Stadt." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "Land/Primäre Lokation." + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Danksagungen." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Schlagzeile." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Besondere Anweisungen." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Quelle." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Provinz/Staat." + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Zusätzliche Kategorie." + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Original-Übertragungsreferenz." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Dringlichkeit. Der gültige Bereich ist 1-8." + +#: src/properties.cpp:452 +msgid "inches" +msgstr "Zoll" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Automatische Helligkeit" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" +"Wenn diese Option gesetzt ist, dann wird die Helligkeit automatisch justiert." + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Autokontrast" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" +"Wenn diese Option gesetzt ist, dann wird der kontrast automatisch justiert." + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Automatische Belichtung" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" +"Wenn diese Option gesetzt ist, dann wird die Belichtung automatisch justiert." + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Automatisch (Schatten)" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" +"Wenn diese Option gesetzt ist, dann werden die Schatten automatisch justiert." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Blauabgleich" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Einstellungen des Blauabgleichs. Der Bereich geht von -100 bis 100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Blau-Sättigung" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Einstellungen der Blausättigung. Der Bereich geht von -100 bis +100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Die Einstellung der Helligkeit. Der Bereich geht von 0 bis + 150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Kameraprofil" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Einstellungen des Kameraprofils." + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Chromatische Aberration Blau" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Einstellung \"Chromatische Aberration, Blau/Gelb-Ränder korrigieren\". " +"Bereich von -100 bis +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Chromatische Aberration Rot" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Einstellung \"Chromatische Aberration, Rot/Cyan-Ränder korrigieren\". " +"Bereich von -100 bis +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Farbrauschunterdrückung" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "" +"Einstellung der \"Farbrauschunterdrückung\". Im Bereich von 0 bis +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Einstellung des \"Kontrastes\". Im Bereich von -50 bis +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" +"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck oben " +"zugeschnitten" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" +"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck links " +"zugeschnitten" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "Unten zuschneiden" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" +"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck unten " +"zugeschnitten" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Rechts zuschneiden" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" +"Wenn die Option \"Zuschneiden\" gesetzt ist, dann wird das Rechteck rechts " +"zugeschnitten" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Winkel zuschneiden" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" +"Wenn die Option \"Zuschneiden\" gesetzt ist, dann werden die Winkel des " +"Rechtecks zugeschnitten" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "Breite des zugeschnittenen Bildes in zugeschnittenen Einheiten." + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "Höhe des zugeschnittenen Bildes in zugeschnittenen Einheiten." + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Zuschnittene Einheiten" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" +"Einheit für \"Breite des Zuschnitts\" und \"Höhe des Zuschnitts\": 0=Pixel, " +"1=Zoll, 2=Zentimeter" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Einstellung der \"Belichtung\". Im Bereich von -4.0 bis +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Grünabgleich" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Einstellung des \"Grünabgleichs\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Grünsättigung" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Einstellung der \"Grünsättigung\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Wurde zugeschnitten" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" +"Wenn die Option gesetzt ist, dann hat das Bild ein zuschneidendes Rechteck." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Besitzt Einstellungen" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" +"Wenn diese Option gesetzt ist, dann wurden nicht die Standardeinstellungen " +"der Kamera genutzt." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +#, fuzzy +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Einstellungen der Blausättigung. Der Bereich geht von -100 bis +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Rohdateiname" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Dateiname der Rohdatei (nicht der komplette Pfad)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Rotabgleich" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Einstellung des \"Rotabgleichs\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Rotsättigung" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Einstellungen der \"Rotsättigung\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Einstellungen der\"Sättigung\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Schatten" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Einstellungen der\"Schatten\". Im Bereich von 0 bis +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Dunkle Tinte" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Einstellungen der\"dunklen Tinte\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Einstellungen der\"Schärfe\". Im Bereich von 0 bis +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Einstellungen der\"Temperatur\". Im Bereich von 2000 bis 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Tinte" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Einstellungen der \"Tinte\". Im Bereich von -150 bis +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Farbtonkurve" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" +"Vektor von Punkten (Ganzzahlig, Ganzzahlig) der eine \"Farbtonkurve\" " +"beschreibt." + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Name der Farbtonkurve" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"Der Name der Farbtonkurve ist einer der folgenden: Linear, Mittler Kontrast, " +"Starker Kontrast, Anwendungsspezifisch oder ein benutzerdefinierter " +"voreingestellter Name." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Version des Kamerarohmoduls." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Vignettierungsmenge" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "" +"Einstellungen der \"Vignettierungsmenge\". Im Bereich von -100 bis +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Vignettierungsmittelpunkt" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "" +"Einstellung des \"Vignettierungsmittelpunkt\". Im Bereich von -150 bis +150." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "TIFF-Feld 256, 0x100: Bildbreite in Pixeln." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Bildlänge" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "TIFF-Feld 257, 0x101: Bildbreite in Pixeln." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bits pro Abtastung" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "TIFF-Feld 258, 0x102: Anzahl der Bits pro Komponente in jedem Kanal." + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Kompression" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" +"TIFF-Feld 259, 0x103: Kompressionsschema: 1 = keine Kompression; 6 = JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Fotometrische Interpretation" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "TIFF-Feld 262, 0x106, Pixelzusammensetzung: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Abtastung pro Pixel" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "TIFF-Feld 277, 0x115: Anzahl der Komponenten pro Pixel." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Planar Konfiguration" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "TIFF-Feld 284, 0x11C. Datenlayout:1 = kompakt; 2 = flach." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "YCbCr Sub Sampling" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "YCbCr Positionierung" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "x-Auflösung" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "TIFF-Feld 282, 0x11A. Horizontale Auflösung in Pixeln pro Einheit." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "y-Auflösung" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "TIFF-Feld 283, 0x11B. Vertikale Auflösung in Pixeln pro Einheit." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Maßeinheit der Auflösung" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"TIFF-Feld 296, 0x128. Die für die x- und y-Auflösung benutzten Einheiten. " +"Der Wert ist: 2 = Zoll; 3 = Zentimeter." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "(Farb)transfer Funktion" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Weißpunkt" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "TIFF-Feld 318, 0x13E. Chromatizität des Weißpunktes." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Primäre Chromazität" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "TIFF-Feld 319, 0x13F. Chromatizität der drei Primärfarben." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Schwarz/Weiß-Referenz" + +#: src/properties.cpp:534 +#, fuzzy +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "TIFF-Feld 318, 0x13E. Chromatizität des Weißpunktes." + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Datum und Uhrzeit" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Bildbeschreibung" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"TIFF-Feld 270, 0x10E. Beschreibung des Bildes. Achtung: Diese Eigenschaft " +"wird in XMP unter dc:description gespeichert." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Hersteller" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "TIFF-Feld 271, 0x10F. Hersteller der Aufnahmeausrüstung." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "TIFF-Feld 272, 0x110. Modellname oder -nummer der Ausrüstung." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"TIFF-Feld 305, 0x131. Software oder Firmware, die benutzt wurde um die " +"Bilder zu erstellen. Achtung: Diese Eigenschaft wird in XMP unter xmp:" +"CreatorTool gespeichert." + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"TIFF-Feld 315, 0x13B. Kamerabesitzer, Fotograph oder Bildersteller. Achtung: " +"Diese Eigenschaft wird in XMP als erster Eintrag im Feld dc:creator " +"gespeichert." + +#: src/properties.cpp:548 +#, fuzzy +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"TIFF-Feld 270, 0x10E. Beschreibung des Bildes. Achtung: Diese Eigenschaft " +"wird in XMP unter dc:description gespeichert." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Exif-Version" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "Exif-Feld 36864, 0x9000. Exif-Versionsnummer." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "FlashPix Version" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "Exif-Feld 40960, 0xA000. Version des FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "Exif-Feld 40961, 0xA001. Informationen über den Farbraum." + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Komponentenkonfiguration" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Komprimierte Bits pro Pixel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Exif-Feld 37122, 0x9102. Kompressionsmodus der benutzt wurde, um das Bild zu " +"komprimieren in der Einheit Bits pro Pixel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Pixel X-Dimension" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "Exif-Feld 40962, 0xA002. Gültige Bildbreite in Pixeln." + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Pixel Y-Dimension" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "Exif-Feld 40963, 0xA003. Gültige Bildhöhe in Pixeln." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Nutzerkommentar" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "Exif-Feld 37510, 0x9286. Kommentar des Benutzers." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Zugehörige Audiodatei" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"Exif-Feld 40964, 0xA004. Ein \"8.3\" Dateiname für die zugehörige Sounddatei." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Datum und Uhrzeit (Original)" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"Exif-Feld 36867, 0x9003 (primär) und 37521, 0x9291 (Sekundenbruchteile). " +"Datum und Zeit, im ISO 8601-Format, an dem das Originalbild erstellt wurde. " +"Enthält die Exif-SubSecTimeOriginal Daten." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Datum und Uhrzeit (Digitalisiert)" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"Exif-Feld 36868, 0x9004 (primär) und 37522, 0x9292 (Sekundenbruchteilen). " +"Datum und Zeit zu dem das Bild als digitale Daten gespeichert wurde. Der " +"Wert is identisch mit DateTimeOriginal, falls das Bild im original digital " +"gespeichert wurde. Gespeichert wird im ISO 8601-Format und enthält die Exif-" +"SubSecTimeDigitized-Daten." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Exif-Feld 33434, 0x829A. Belichtungszeit in Sekunden." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Blende" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "Exif-Feld 33437, 0x829D. Blende." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" +"Exif-Feld 34850, 0x8822. Klasse des Programmes das für die Belichtung " +"benutzt wurde." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Spektrale Empfindlichkeit" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "Exif-Feld 34852, 0x8824. Spektrale Empfindlichkeit jedes Kanals." + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"Exif-Feld 34855, 0x8827. Gibt die ISO Geschwindigkeit und -breite der Kamera " +"bzw. des Eingabegeräts an, wie in ISO 12232 spezifiziert." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"Exif-Feld 34856, 0x8828. Verfahren zur Messung optoelektronischer Kennlinien " +"wie in ISO 14524 spezifiziert." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"Exif-Feld 37377, 0x9201. Verschlussgeschwindigkeit. Die Einheit ist APEX. " +"Siehe auch Anhang C der Exif-Spezifikation." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "Exif-Feld 37378, 0x9202. Linsenblende, Einheit ist APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Helligkeitswert" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "Exif-Feld 37379, 0x9203. Helligkeit, Einheit ist APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "Exif-Feld 37380, 0x9204. Belichtungsfehler, Einheit ist APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Maximale Blende" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "Exif-Feld 37381, 0x9205. Die kleineste Blende der Linse, in APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." + +#: src/properties.cpp:586 +#, fuzzy +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." + +#: src/properties.cpp:587 +#, fuzzy +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "Exif-Feld 33437, 0x829D. Blende." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +#, fuzzy +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Motivbereich" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Exif-Feld 37396, 0x9214. Dieses Feld gibt die Position und Größe des " +"Hauptmotivs in der Szene an." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Energie des Blitzes" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +#, fuzzy +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"Exif-Feld 34855, 0x8827. Gibt die ISO Geschwindigkeit und -breite der Kamera " +"bzw. des Eingabegeräts an, wie in ISO 12232 spezifiziert." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Fokusebene x-Auflösung" + +#: src/properties.cpp:594 +#, fuzzy +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "TIFF-Feld 282, 0x11A. Horizontale Auflösung in Pixeln pro Einheit." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Fokusebene y-Auflösung" + +#: src/properties.cpp:595 +#, fuzzy +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "TIFF-Feld 283, 0x11B. Vertikale Auflösung in Pixeln pro Einheit." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Einheit der Angaben der Fokusebene" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Ort des Motivs" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Belichtungsindex" + +#: src/properties.cpp:600 +#, fuzzy +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" +"Exif-Feld 41495, 0xA217. Gibt den Sensortyp in der Kamera bzw. Eingabegerät " +"an." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Bildsensor" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"Exif-Feld 41495, 0xA217. Gibt den Sensortyp in der Kamera bzw. Eingabegerät " +"an." + +#: src/properties.cpp:602 +#, fuzzy +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "Exif-Feld 41996, 0xA40C gibt den Abstand zum Motiv an." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Szenentyp" + +#: src/properties.cpp:603 +#, fuzzy +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "Exif-Feld 41996, 0xA40C gibt den Abstand zum Motiv an." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "CFA Pattern" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Besondere Verarbeitung" + +#: src/properties.cpp:605 +#, fuzzy +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " +"Aufnahme eingestellt war." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " +"Aufnahme eingestellt war." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Exif-Feld 41987, 0xA403 enthält den Weißabgleichsmodus, der zur Aufnahme " +"eingestellt war." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Digitale Zoomrate" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"EXIF-Feld 41988, 0xA404 gibt den Grad des digitalen Zooms an mit dem das " +"Bild aufgenommen wurde." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Brennweite in 35mm Film" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Dieses Feld gibt die äquivalente Brennweite bei angenommener 35mm Filmkamera " +"an. Der Wert 0 bedeutet das die Brennweite unbekannt ist. Es unterscheidet " +"sich vom Feld." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Szenenmodus" + +#: src/properties.cpp:612 +#, fuzzy +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" +"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " +"Aufnahme eingestellt war." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Körnungskontrolle" + +#: src/properties.cpp:613 +#, fuzzy +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"Exif-Feld 41986, 0xA402. Dieses Feld enthält den Belichtungsmodus, der zur " +"Aufnahme eingestellt war." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Exif-Feld 41992, 0xA408 gibt die Richtung der Kontrastbearbeitung an, die " +"bei der Aufnahme des Bildes angewandt wurde." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Exif-Feld 41993, 0xA409 gibt die Richtung der Sättigungsbearbeitung an, die " +"bei der Aufnahme des Bildes angewandt wurde." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Exif-Feld 41994, 0xA40A gibt die Richtung der Schärfebearbeitung bei der " +"Aufnahme des Bildes an." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Beschreibung der Geräteeinstellungen" + +#: src/properties.cpp:617 +#, fuzzy +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Dieses Feld enthält Informationen über die Bildaufnahmebedingungen eines " +"bestimmten Kameramodells. Es wird nur zur Angabe der Bedingungen im Leser " +"benutzt." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Motivabstand" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Exif-Feld 41996, 0xA40C gibt den Abstand zum Motiv an." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "Eindeutige Bildnummer" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Exif-Feld 42016, 0xA420. Dieses Feld gibt einen eindeutigen Bild-" +"Identifikator an. Er wird als ASCII-Zeichenkette in mit einer Länge von 32 " +"Zeichen aufgezeichnet und hat damit in hexadezimaler Notation eine 128 Bit " +"Länge." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "GPS Version ID" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS-Breitengrad" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS-Längengrad" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "GPS-Höhenreferenz" + +#: src/properties.cpp:625 src/properties.cpp:1168 +#, fuzzy +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "GPS-Feld 6, 0x06 gibt die Höhe in Metern an." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPS-Höhe" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "GPS-Feld 6, 0x06 gibt die Höhe in Metern an." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "GPS-Zeitstempel" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "GPS-Satelliten" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "GPS-Status" + +#: src/properties.cpp:634 +#, fuzzy +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS-Messungsmodus" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "GPS-Geschwindigkeitsreferenz" + +#: src/properties.cpp:637 +#, fuzzy +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPS-Geschwindigkeit" + +#: src/properties.cpp:638 +#, fuzzy +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "GPS-Spurreferenz" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "GPS-Spur" + +#: src/properties.cpp:640 +#, fuzzy +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " +"Wertebereich geht von 0,00 bis 359,99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +#, fuzzy +msgid "GPS Image Direction Reference" +msgstr "GPS-Bildrichtung" + +#: src/properties.cpp:641 +#, fuzzy +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "GPS-Bildrichtung" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " +"Wertebereich geht von 0,00 bis 359,99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "GPS-Status" + +#: src/properties.cpp:643 +#, fuzzy +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "GPS Breitengrad des Ziels" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "GPS Längengrad des Ziels" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "GPS Referenz zur Richtung zum Ziel" + +#: src/properties.cpp:646 +#, fuzzy +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "GPS Richtung zum Ziel" + +#: src/properties.cpp:647 +#, fuzzy +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" +"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " +"Wertebereich geht von 0,00 bis 359,99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "GPS Referenz zur Entfernung des Objektes" + +#: src/properties.cpp:648 +#, fuzzy +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "GPS Entfernung des Objekts" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "GPS Verarbeitungsmethode" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "GPS Bereichsinformation" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +#, fuzzy +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "GPS-Feld 6, 0x06 gibt die Höhe in Metern an." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"Die Seriennummer der Kamera oder des Kamerakörpers mit dem das Foto gemacht " +"wurde." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Kontaktinfo des Erstellers" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Kontaktinfo-Adresse" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"Der Teil der Kontaktinformation für die Adresse. Besteht aus einem " +"optionalen Firmennamen und alle benötigten Informationen um das Gebäude oder " +"das Postfach zu finden, um Briefe dort hin zusenden." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Kontaktinfo-Stadt" + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Kontaktinfo des Erstellers" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Kontaktinfo-Staat/Provinz" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Kontaktinfo-Staat/Provinz" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Kontaktinfo-Postleitzahl" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Kontaktinfo-Land" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Kontaktinfo des Erstellers" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Kontaktinfo-E-Mail" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "Der Teil der Kontaktinformation der die E-Mail Adresse enthält." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Kontaktinfo-Telefon" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Kontaktinfo des Erstellers" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Kontaktinfo-Web URL" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Kontaktinfo des Erstellers" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "IPTC-Szene" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "IPTC-Motivkode" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +#, fuzzy +msgid "Additional model info" +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Modell" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +#, fuzzy +msgid "Person shown" +msgstr "Versionen" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Digitale Bildstabilisierung" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "Die Abspieldauer der Mediendatei." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +#, fuzzy +msgid "Event" +msgstr "Abend" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "Verfügbares Licht" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "Maximale Fokuslänge" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +#, fuzzy +msgid "Registry Entry" +msgstr "Feldeintrag" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +#, fuzzy +msgid "Registry Entry-Item Identifier" +msgstr "Feldeintrag" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +#, fuzzy +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "Ortscode" + +#: src/properties.cpp:711 +#, fuzzy +msgid "A location shown in the image." +msgstr "Offset des Vorschaubildes" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Ortscode" + +#: src/properties.cpp:712 +#, fuzzy +msgid "The location the photo was taken." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:713 +#, fuzzy +msgid "Location-City" +msgstr "Ort" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Name of the city of a location." +msgstr "Der Name des Künstlers bzw. der Künstler." + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Ortscode" + +#: src/properties.cpp:714 +#, fuzzy +msgid "The ISO code of a country of a location." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "Ortsname" + +#: src/properties.cpp:715 +#, fuzzy +msgid "The name of a country of a location." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "Provinz/Staat" + +#: src/properties.cpp:716 +#, fuzzy +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "Genauer Ort" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "Ortscode" + +#: src/properties.cpp:718 +#, fuzzy +msgid "The name of a world region of a location." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:719 +#, fuzzy +msgid "Artwork or object in the image" +msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." + +#: src/properties.cpp:719 +#, fuzzy +msgid "A set of metadata about artwork or an object in the image." +msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "Copyright-Notiz" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +#, fuzzy +msgid "Artwork or object-Creator" +msgstr "Copyright-Notiz" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +#, fuzzy +msgid "Artwork or object-Date Created" +msgstr "Copyright-Notiz" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +#, fuzzy +msgid "Artwork or object-Source" +msgstr "Copyright-Notiz" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +#, fuzzy +msgid "Artwork or object-Source inventory number" +msgstr "Copyright-Notiz" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +#, fuzzy +msgid "Artwork or object-Title" +msgstr "Copyright-Notiz" + +#: src/properties.cpp:725 +#, fuzzy +msgid "A reference for the artwork or object in the image." +msgstr "Eine Referenz zu dem Projekt das diese Datei erstellt hat." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "Kamera ID" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "Kamera ID" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "Kamera ID" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "PDF-Version" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +#, fuzzy +msgid "Licensee" +msgstr "Linse" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "Linsen-ID" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Ortsname" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Name of each Licensee." +msgstr "Der Name der Szene." + +#: src/properties.cpp:746 +#, fuzzy +msgid "End User" +msgstr "Erweiterung" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +#, fuzzy +msgid "End User ID" +msgstr "Erweiterung" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Besitzername" + +#: src/properties.cpp:748 +#, fuzzy +msgid "Name of each End User." +msgstr "Der Name der Szene." + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Linse" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "Linsen-ID" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Ortsname" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Name of each Licensor." +msgstr "Der Name der Szene." + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor Address" +msgstr "Linseneigenschaften" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor street address." +msgstr "Ländername" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Licensor Address Detail" +msgstr "Kontaktinfo-Postleitzahl" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Additional Licensor mailing address details." +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Mexico Stadt" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City name." +msgstr "Ländername" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "Staat/Provinz" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "Staat/Provinz" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "Kontaktinfo-Postleitzahl" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code or Zip Code." +msgstr "Kontaktinfo-Postleitzahl" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Land" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Ländername" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1" +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1." +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone 1" +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone number 1." +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "Linsen-Seriennummer" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "Ortsname" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "Kontaktinfo-Postleitzahl" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Letzte Adresse" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "Linseneigenschaften" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "GPS-Messungsmodus" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Szenenerkennungsdaten" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "Das Datum und die Uhrzeit an dem das Video aufgenommen wurde." + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Linsendaten" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Der Name der Szene." + +#: src/properties.cpp:768 +#, fuzzy +msgid "Media Constraints" +msgstr "Kontrast" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +#, fuzzy +msgid "Region Constraints" +msgstr "Kontrast" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +#, fuzzy +msgid "Product or Service Constraints" +msgstr "Autokontrast" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "Bildgröße-Einstellungen" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +#, fuzzy +msgid "Image Alteration Constraints" +msgstr "Bildqualitätseinstellungen" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "Bildqualitätseinstellungen" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Freigabedatum" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "Modell-ID" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +#, fuzzy +msgid "Property Release Status" +msgstr "Freigabedatum" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +#, fuzzy +msgid "Property Release ID" +msgstr "Modell-ID" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "Autokontrast" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Additional constraints on the license." +msgstr "Zusätzliche Parameter für den Stretchmodus des Taktverbundes." + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "Nicht benutzt" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Other License Requirements" +msgstr "Linseninformation" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Additional license requirements." +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:783 +#, fuzzy +msgid "Terms and Conditions Text" +msgstr "Aufnahmebedingungen" + +#: src/properties.cpp:783 +#, fuzzy +msgid "Terms and Conditions applying to the license." +msgstr "Zusätzliche Parameter für den Stretchmodus des Taktverbundes." + +#: src/properties.cpp:784 +#, fuzzy +msgid "Terms and Conditions URL" +msgstr "Aufnahmebedingungen" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "Aufnahmebedingungen" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Additional license conditions." +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:786 +#, fuzzy +msgid "Identifies the type of image delivered." +msgstr "Identifiziert den Anbieter und das Produkt" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "Linsen-ID" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +#, fuzzy +msgid "Image File Name As Delivered" +msgstr "Zugehöriges Bilddateiformat" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +#, fuzzy +msgid "Image File Format As Delivered" +msgstr "Zugehöriges Bilddateiformat" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +#, fuzzy +msgid "Image File Size As Delivered" +msgstr "Zugehöriges Bilddateiformat" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "Copyright" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Copyright-Notiz" + +#: src/properties.cpp:792 +#, fuzzy +msgid "Copyright Registration Number" +msgstr "Besitzername" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Digitalisierungsdatum" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "Das Datum andem der Titel veröffentlicht wurde." + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "Copyright" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "Copyright" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Besitzername" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Name of Copyright Owner." +msgstr "Copyright" + +#: src/properties.cpp:797 +#, fuzzy +msgid "Copyright Owner Image ID" +msgstr "Copyright" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "Bild-Orientierung" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Creator/s of the image." +msgstr "Offset des Vorschaubildes" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Bild-Orientierung" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Bildton" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "Rohbild-Center" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "Bild-Orientierung" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "Eindeutige Bildnummer" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Bildgröße" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Name of Image Supplier." +msgstr "Rohbild-Center" + +#: src/properties.cpp:804 +#, fuzzy +msgid "Image Supplier Image ID" +msgstr "Eindeutige Bildnummer" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "Bildanzahl löschen" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "Bildanzahl löschen" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Notes added by Licensee." +msgstr "Der Name der Szene." + +#: src/properties.cpp:807 +#, fuzzy +msgid "Other Image Info" +msgstr "Linseninformation" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "Linsen-ID" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +#, fuzzy +msgid "Licensor Transaction ID" +msgstr "Verfalldatum" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +#, fuzzy +msgid "Licensee Transaction ID" +msgstr "Verfalldatum" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +#, fuzzy +msgid "Licensee Project Reference" +msgstr "Projektreferenz" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "Verfalldatum" + +#: src/properties.cpp:812 +#, fuzzy +msgid "The date of the License Transaction." +msgstr "Der Name der Szene." + +#: src/properties.cpp:813 +#, fuzzy +msgid "Reuse" +msgstr "benutzt" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +#, fuzzy +msgid "Other License Documents" +msgstr "Aufnahmebedingungen" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Linseninformation" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Benutzerdefiniert 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "Nicht benutzt" + +#: src/properties.cpp:839 +#, fuzzy +msgid "Protected" +msgstr "Produkt-ID" + +#: src/properties.cpp:840 +#, fuzzy +msgid "Public Domain" +msgstr "Nach unten ziehen" + +#: src/properties.cpp:846 +#, fuzzy +msgid "Credit Adjacent To Image" +msgstr "Bildvorschau gültig" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "Bildvorschau gültig" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "Undefiniert" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "Solarisation" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "Solarisation" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +#, fuzzy +msgid "No Merging" +msgstr "Rauschunterdrückung" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "Rauschunterdrückung" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +#, fuzzy +msgid "No Duplication Constraints" +msgstr "Bildqualitätseinstellungen" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "Audiodauer" + +#: src/properties.cpp:871 +#, fuzzy +msgid "Maintain File Name" +msgstr "Rohdateiname" + +#: src/properties.cpp:872 +#, fuzzy +msgid "Maintain File Type" +msgstr "Rohdateiname" + +#: src/properties.cpp:873 +#, fuzzy +msgid "Maintain ID in File Name" +msgstr "Originaler Rohdateiname" + +#: src/properties.cpp:874 +#, fuzzy +msgid "Maintain Metadata" +msgstr "Minolta Datum" + +#: src/properties.cpp:879 +#, fuzzy +msgid "Windows Bitmap (BMP)" +msgstr "Windows-Titel" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +#, fuzzy +msgid "Graphics Interchange Format (GIF)" +msgstr "JPEG Interchange Format" + +#: src/properties.cpp:883 +#, fuzzy +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "JPEG Interchange Format" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +#, fuzzy +msgid "Tagged Image File Format (TIFF)" +msgstr "Zugehöriges Bilddateiformat" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +#, fuzzy +msgid "Up to 1 MB" +msgstr "Optio A10" + +#: src/properties.cpp:897 +#, fuzzy +msgid "Up to 10 MB" +msgstr "Optio A10" + +#: src/properties.cpp:898 +#, fuzzy +msgid "Up to 30 MB" +msgstr "Optio 30" + +#: src/properties.cpp:899 +#, fuzzy +msgid "Up to 50 MB" +msgstr "Optio S50" + +#: src/properties.cpp:904 +#, fuzzy +msgid "Illustrated Image" +msgstr "Zugehörige Bildbreite" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +#, fuzzy +msgid "Cell" +msgstr "Gelb" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Verwalter" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "Unbekannt" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +#, fuzzy +msgid "Unlimited Model Releases" +msgstr "Modell-ID" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Modellidentifikation" + +#: src/properties.cpp:961 src/properties.cpp:970 +#, fuzzy +msgid "Status" +msgstr "GPS-Status" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +#, fuzzy +msgid "People" +msgstr "Lila" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Intervallnummer" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Linseninformation" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "Versionen" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "Datum und Uhrzeit (Original)" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date the last region was created" +msgstr "Das Datum andem der Titel veröffentlicht wurde." + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Druckstocknamen" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "Originaler Rohdateiname" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Pixel X-Dimension" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Versionen" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Versionsstruktur" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "Autofokus-Bereiche" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Fokusbereich" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Automatischer Erfassungsschritt" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "Versionen" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Versionsstruktur" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Schlüsselbegriffe" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Versionsstruktur" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Panorama-Modus" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Eingelesene Daten" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Verarbeitungssoftware" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Motivtyp" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "Die Entfernung zum Motiv (in Metern)." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Digitalisierungsdatum" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Aufnahmedatum" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Belichtungsmodus" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Bildbreite" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Bildhöhe" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Eindeutiges Kameramodell" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Aufnahmeort" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "Orange" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Schlüsselbegriffe" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Video-Pixelverhältnis" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Video-Pixelverhältnis" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Bildbeschreibung" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Rohdateiname" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Schärfeneinstellung" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Füllreihenfolge" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Die urheberrechtliche Information." + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Minimale Blende" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Autofokus-Modus" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "Maximale Blende bei minimalem Fokus" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Videokompression" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Beschreibung der Geräteeinstellungen" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "Eine textuelle Beschreibung der Objektdaten." + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Bildkonfiguration" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Antriebsmodus-Einstellungen" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Protokollkommentar" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Kompression" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Kompression" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Windows-Schlüsselbegriffe" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Kompression" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Videokompression" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Videokompression" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Kompression" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Kameratyp" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Kompressionsrate" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"Exif-Feld 41992, 0xA408 gibt die Richtung der Kontrastbearbeitung an, die " +"bei der Aufnahme des Bildes angewandt wurde." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "Unten zuschneiden" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "Links zuschneiden" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "Rechts zuschneiden" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "Oben zuschneiden" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Aktuelles ICC-Profil" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "Datenbereich" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +#, fuzzy +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." + +#: src/properties.cpp:1111 +#, fuzzy +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"Exif-Feld 36868, 0x9004 (primär) und 37522, 0x9292 (Sekundenbruchteilen). " +"Datum und Zeit zu dem das Bild als digitale Daten gespeichert wurde. Der " +"Wert is identisch mit DateTimeOriginal, falls das Bild im original digital " +"gespeichert wurde. Gespeichert wird im ISO 8601-Format und enthält die Exif-" +"SubSecTimeDigitized-Daten." + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Datum und Uhrzeit (Original)" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Farbrauschunterdrückung" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"EXIF-Feld 41988, 0xA404 gibt den Grad des digitalen Zooms an mit dem das " +"Bild aufgenommen wurde." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Versionen" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Direkt" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +#, fuzzy +msgid "Video Display Unit" +msgstr "Eingeblendetes Display" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Fokustyp" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "Datensatzversion" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Modellversion" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Die Abspieldauer der Mediendatei." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Datensatzversion" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "ARM-Version" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "Video-Bildrate" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Alternativer Zeitstempel" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Ausrüstungsinfo" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Belichtungskompensierung" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Belichtungsprogramm" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Belichtungszeit in Sekunden." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "Beschreibung der Geräteeinstellungen" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description, usually found in ASF type files." +msgstr "Beschreibung der Geräteeinstellungen" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Datei" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Datei" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Kachellänge" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Kachellänge" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Dateiname" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Dateigröße" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Dateigröße" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Neuer Unterdateityp" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "Exif-Feld 37382, 0x9206. Die Entfernung zum Motiv (in Metern)." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Bildanzahl" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Autofokus-Modus" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Autofokus-Modus" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +#, fuzzy +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" +"GPS-Feld 17, 0x11. Gibt die Richtung an in der das Bild gemacht wurde. Der " +"Wertebereich geht von 0,00 bis 359,99." + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "GPS-Feld 26, 0x1A. Die Entfernung zum Objekt (in Metern)." + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "Zeitstempel des Metadatums mit Schlüssel" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Einfacher Modus" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Bildbeschreibung" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Skalierungstyp" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Linsen-Hersteller." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Sensorenreinigung" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "Bildanpassung-Einstellung" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "Basis-Adresse" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "Autofokus-Positioninformation" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "Text" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "Letzte Adresse" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Linsendaten" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Sprache" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Brennweite" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Die Abspieldauer der Mediendatei." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Linsentyp" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Helligkeit" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Helligkeit" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Letzte Adresse" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Ausrüstungsinfo" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Manufacturer of recording equipment" +msgstr "TIFF-Feld 271, 0x10F. Hersteller der Aufnahmeausrüstung." + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Kameratyp" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Version der Herstellerbemerkung" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Version der Herstellerbemerkung" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "Basis-Adresse" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Linsen-Hersteller." + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "Exif-Feld 37381, 0x9205. Die kleineste Blende der Linse, in APEX." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Maximale Blende" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Dateidatenrate" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Audiodauer" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Modellversion" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "GPS-Messungsmodus" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Änderungsdatum der Metadaten" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Mittel" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Metadaten-Datum" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Metadaten-Datum" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Messmodus" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Bildtyp" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Dateiversion" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Ausrüstungsinfo" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "TIFF-Feld 272, 0x110. Modellname oder -nummer der Ausrüstung." + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Ortsname" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Modellversion" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "Text + ID#" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "Taktanzahl" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Total number of colours used" +msgstr "Fortlaufende Nummer (wenn Sie im Burst-Modus fotografieren)" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "Taktanzahl" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Taktanzahl" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Orientierung" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Feier" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Feier" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Schlüsselbegriffe" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Schlüsselbegriffe." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Bild-Info" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Bild-Info" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Bild-Info" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Bild-Info" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Bild-Info" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Bild-Info" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Bild-Info" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Bild-Info" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Bild-Info" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Bildmodus-Sättigung" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Bild-Info" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Auswahl" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Auswahl" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Einfacher Modus" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "Der Teil der Kontaktinformation für das Land." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Belichtungszeit" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "The time value of the time of the movie poster." +msgstr "Die Startzeit des Mediums innerhalb des Audioprojektes." + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Referenzdatum" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Vorschaudaten" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "Gibt den Typen eines Audioinhalts an." + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Vorschaudaten" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Vorschaudaten" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Die Abspieldauer der Mediendatei." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Bildvorschau gültig" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Die Abspieldauer der Mediendatei." + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Hersteller" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Schlüsselbegriffe" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Blende" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Blende" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "Produkt-ID" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "Produkt-ID" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "Produkt-ID" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Fotoeffekt" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Fotoeffekt" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Elementen" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +#, fuzzy +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"TIFF-Feld 296, 0x128. Die für die x- und y-Auflösung benutzten Einheiten. " +"Der Wert ist: 2 = Zoll; 3 = Zentimeter." + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"Exif-Feld 41993, 0xA409 gibt die Richtung der Sättigungsbearbeitung an, die " +"bei der Aufnahme des Bildes angewandt wurde." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Der Name des Genres." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Auswahl" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Audiodauer" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Dauer" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Firmware Version" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Abschnittsautor" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Windows-Schlüsselbegriffe" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Schlüsselbegriffe." + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Anbieter" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Danksagungen." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Quelle" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Quelle." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Bildhöhe" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Bildbreite" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Standard Licht A" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Startzeitstempel" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "GPS-Status" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Verschlusszähler" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "Taktanzahl" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Aufnahmename" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Bildqualität" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "Bildqualität" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Audio-Abtastrate" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Strip Byte Anzahl" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Bits pro Abtastung" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Skalierungstyp" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Startzeitstempel" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Bildmoduseinstellung" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Titel" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Schlüsselbegriffe" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Schlüsselbegriffe." + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Sprache" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "Der Name der Szene." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Motiv" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Bandname" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Besitzt Einstellungen" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Sprache" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Bandname" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Bildtyp" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Bildvorschaulänge" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Länge der Bildvorschau" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Länge der Bildvorschau" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Bildvorschaulänge" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Bildvorschau gültig" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Unterwasser" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Kachel-Offsets" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Sendezeit" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +#, fuzzy +msgid "Total Frame Count" +msgstr "Kachel-Byte-Anzahl" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Taktanzahl" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "GPS-Spur" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "Video-Bildrate" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "Audiodauer" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Stücknummer" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Version der Herstellerbemerkung" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Sprache" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "Video-Bildrate" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Änderungsdatum des Videos" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Stücknummer" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Stücknummer" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Stücknummer" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Weit" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Weit" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Programm" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "" +"Dieses Feld gibt einen Hinweis auf die Verarbeitung die benutzt wurde, um " +"die komprimierten Daten zu erzeugen." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "Linsen-ID" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Qualität" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "Video-Bildrate" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Video-Bildgröße" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Video-Bildgröße" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Skalierungstyp" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Weißabgleichstabelle" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Kachelbreite" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Windows-Bewertung" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Schreiber" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +msgid "Writing App" +msgstr "" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +#, fuzzy +msgid "Horizontal resolution in pixels per unit." +msgstr "TIFF-Feld 282, 0x11A. Horizontale Auflösung in Pixeln pro Einheit." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Das Datum und die Uhrzeit der letzten Änderung des Videos." + +#: src/properties.cpp:1392 +#, fuzzy +msgid "Vertical resolution in pixels per unit." +msgstr "TIFF-Feld 283, 0x11B. Vertikale Auflösung in Pixeln pro Einheit." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Rotabgleich" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "Gibt den Abstand zum Zielpunkt an." + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bits pro Abtastung" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bits per Sample." + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Audio-Kompression" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Bildbeschreibung" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Fokusmodus-Einstellungen" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Audiodauer" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Standard-Skalierung" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Automatische Erfassung" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Audiorate" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "Audio-Abtastrate" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"Die Audio-Abtastrate kann ein beliebiger Wert sein. Empfohlen sind die Werte " +"32000, 41100, oder 48000." + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Audio-Abtastrate" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "wurde in der Datei gefunden" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "wurde in der Datei gefunden" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Auslöser der Automatische Erfassung" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Audiodauer" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Automatischer Erfassung" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "Audiodauer" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Audiotyp" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Änderungsdatum der Audiodaten" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "Audiorate" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "Audiorate" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Der Name des Genres." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Identifizierer" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "Das Datum und die Uhrzeit der letzten Änderung des Videos." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Ein kurzer informeller Name für die Ressource." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Linse" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Rechte Zone" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Rechte" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +#, fuzzy +msgid "A bibliographic reference for the resource." +msgstr "Ein kurzer informeller Name für die Ressource." + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Jobreferenz" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Eingeblendetes Display" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Anweisungen" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Auswahl" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Auflösungsmodus" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Datendump" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Ortscode" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Druckstocknamen" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "" +"Eindeutige Identifikation der Arbeit von der diese Ressource abgeleitet " +"wurde." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Linseneigenschaften" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +#, fuzzy +msgid "Occurrence" +msgstr "Linsen-ID" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "Linsen-ID" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Intervallnummer" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +#, fuzzy +msgid "Occurrence Details" +msgstr "Linsen-ID" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Ablaufsnummer" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Eingeblendetes Display" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "Bildqualität" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Setzen" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Produkt-ID" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Gradation" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Fokusposition" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Intervallnummer" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Modellidentifikation" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Mitwirkende Medien" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Projektreferenz" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "AEB Sequenz" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "Orientierung" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Aufnahmename" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +#, fuzzy +msgid "Organism Associated Occurrences" +msgstr "AEB Sequenz" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +#, fuzzy +msgid "Associated Organisms" +msgstr "Projektreferenz" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +#, fuzzy +msgid "Organism Remarks" +msgstr "Messung wird durchgeführt" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Bits pro Abtastung" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Abend" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Bits pro Abtastung" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Abend" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +#, fuzzy +msgid "Parent Event ID" +msgstr "Abend" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +#, fuzzy +msgid "Event Earliest Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Aktuelles ICC-Profil" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "Monat" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Der Name der Szene." + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Verzögerung" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Erstellungsdatum" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Dateiformat" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "Audio-Abtastrate" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +#, fuzzy +msgid "Sampling Size Unit" +msgstr "Dateiformat" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Blende" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Linseneigenschaften" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Ortscode" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Ort" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Kontinuierlich" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Staat/Provinz" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Land" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Qualität" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Ort" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "Eine textuelle Beschreibung der Objektdaten." + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Dateidatenrate" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Ortscode" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Ortscode" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "GPS Breitengrad des Ziels" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "GPS Längengrad des Ziels" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "GPS Breitengrad des Ziels" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "GPS-Längengrad" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +#, fuzzy +msgid "Geodetic Datum" +msgstr "GPS-Feld 11, 0x0B. Grad der Präzision der GPS-Daten" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Jobreferenz" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Referenzdatum" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Referenzdienst" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Referenznummer" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Aufnahmeinformation" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "F Nummer." + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Rot" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Modellidentifikation" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Modellidentifikation" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Identifizierer" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identifizierer" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "GPS-Bildrichtung" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Modellidentifikation" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Modellidentifikation" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "GPS-Status" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Originaler Rohdateiname" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Dokumentenname" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Druckstocknamen" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Originaler Rohdateiname" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Fotoeffekt" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Herausgeber" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "Das Datum andem der Titel veröffentlicht wurde." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Elektronische Vergrößerung" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Füllreihenfolge" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Stücknummer" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Natürliche Farbe" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Dateiquelle" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Bildressourcenblock" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Dateiquelle" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Messungskompatibilität" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Messung wird durchgeführt" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Messung wird durchgeführt" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Messung wird durchgeführt" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Messungskompatibilität" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Messungskompatibilität" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Messungskompatibilität" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Messungskompatibilität" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "GPS-Messungsmodus" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Messung wird durchgeführt" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Eine textuelle Beschreibung der Objektdaten." + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Datum und Uhrzeit" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Der Name der Aufnahme." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +#, fuzzy +msgid "Notes" +msgstr "Linseneigenschaften" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Kategorie" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Auflösungsmodus" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Auflösungsmodus" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Autofokusmodus" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Autofokusmodus" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Fokuseinstellung" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Fokuseinstellung" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Linsenweite" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Linsenbrennweitenbereich" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Schatten" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Spitzlichter" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Fülllicht" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "X3 Fülllicht" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Farbanpassung" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Farbanpassung" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Anpassungsmodus" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Anpassungsmodus" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Automatische Erfassung" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Automatischer Erfassung" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Sigma" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-Segment" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "Nachtszene" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "Nachtportrait" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Selbstportrait" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "Langsamer Verschluss" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "ISO-Empfindlichkeit" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panorama" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "Bildmodus" + +#: src/sonymn.cpp:170 +#, fuzzy +msgid "Backlight Correction HDR" +msgstr "Ohne Korrektur" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Makro-Fokus" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "Weich" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "Eindeutige Bildnummer" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "Kontinuierlich" + +#: src/sonymn.cpp:190 +#, fuzzy +msgid "On (Shooting)" +msgstr "Aufnahmemodus" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "Weiß fluoreszent" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "Weiß fluoreszent" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "Tagesweiß fluoreszent" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Glühend" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Weiß fluoreszent" + +#: src/sonymn.cpp:221 +#, fuzzy +msgid "Underwater 1 (Blue Water)" +msgstr "Unterwasser-Weite1" + +#: src/sonymn.cpp:222 +#, fuzzy +msgid "Underwater 2 (Green Water)" +msgstr "Unterwasser-Aufnahme" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "Zentriert" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Punkt" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +#, fuzzy +msgid "Touch AF" +msgstr "Ein-Tasten-Weißabgleich" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "Manueller Fokus" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "Fehler beim Lesen" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "Automatischer Fokus" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "Burst Mode" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "Zugehörige Bildbreite" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "Bildhöhe" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "Bildvorschau gültig" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "Automatisch Hoch" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "Aufnahmeinformation" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "Modell-ID" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "Farbrauschunterdrückung" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +#, fuzzy +msgid "Dynamic Range Optimizer" +msgstr "Dynamische Bereichseinstellung" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Minolta Datum" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "Bildgröße" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "Bildvorschau gültig" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "Bildvorschau gültig" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "Qualität" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Freigabedatum" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Fortlaufende Nummer (wenn Sie im Burst-Modus fotografieren)" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Anti-Unschärfe" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "Rauschreduktion einer langen Belichtung" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +#, fuzzy +msgid "Intelligent Auto" +msgstr "Intervalllänge" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Sony" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "Kontinuierlich, hoch" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "Kontinuierlich, niedrig" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "Bildoptimierung" + +#: src/sonymn.cpp:536 +#, fuzzy +msgid "Autumn" +msgstr "Auktion" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Automatisch (Blitz)" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +#, fuzzy +msgid "Dynamic Range Optimizer Level" +msgstr "Dynamische Bereichseinstellung" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Erstellungsdatum" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "Zonenabgleich" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "Schneller Verschluss" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Hohe ISO-Rauschreduktion" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Bildtyp" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 1" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Unbekanntes Feld in den Canon-Kameraeinstellungen 2" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Unbekannter Abschnitt" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Bilddatenstruktur" + +#: src/tags.cpp:190 +#, fuzzy +msgid "Recording offset" +msgstr "Fotoeffekt" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Bilddatencharakteristik" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Andere Daten" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Exif-Datenstruktur" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Bildkonfiguration" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Benutzerinformationen" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Zugehörige Datei" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Datum und Uhrzeit" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Aufnahmebedingungen" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "GPS-Informationen" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Interoperabelitätsinformationen." + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Herstellerspezifische Informationen" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Adobe DNG -Felder" + +#: src/tags.cpp:204 +#, fuzzy +msgid "Panasonic RAW tags" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Panasonic" + +#: src/tags.cpp:205 +#, fuzzy +msgid "TIFF/EP tags" +msgstr "TIFF/EP Standard ID" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +#, fuzzy +msgid "Adobe OPI tags" +msgstr "Adobe OPI -Felder" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Letzter Abschnitt" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Anfangsbild" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Bildvorschau" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Anfangsbild, Mehrseitendatei" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Vorschaubild, Mehrseitendatei" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Anfangsbild, Transparenzmaske" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Bildvorschau, Transparenzmaske" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Anfangsbild, Mehrseitendatei, Transparenzmaske" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "Vorschaubild, Mehrseitendatei, Transparenzmaske" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Bilddaten in voller Auflösung" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Bilddaten in reduzierter Auflösung" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "Zoll" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Fax-Gruppe 3" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Fax-Gruppe 4" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (alter Stil)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG B&W" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Farbe" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "Nächsten 2-Bits RLE" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF komprimiert" + +#: src/tags.cpp:263 +#, fuzzy +msgid "Samsung SRW Compressed" +msgstr "Epson ERF komprimiert" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-Wort" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Einlage" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Zeilenarbeit RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "IT8 Monochrombild" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 binäre Zeilenkunst" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (10-Bit LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-Bit ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Kodak DCS Encoding" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI Log beleuchtetes RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "SGI Log 24-bits gepackt" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF komprimiert" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR komprimiert" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF komprimiert" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "Null ist weiß" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "Null ist schwarz" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "RGB Palette" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Transparenzmaske" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Farbfilterliste" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Lineares Roh" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "Normale Verarbeitung" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "oben - links" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "oben - rechts" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "unten - rechts" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "unten - links" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "links - oben" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "rechts - oben" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "rechts - unten" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "links - unten" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +#, fuzzy +msgid "not CMYK" +msgstr "CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "Nicht unterstütztes Datumsformat" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "Undefiniert" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +msgid "B" +msgstr "" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +#: src/tags.cpp:354 +#, fuzzy +msgid "A+B-C" +msgstr "Autofokus-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "zentriert" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Co-sited" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Kein Blitz" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Blitz ausgelöst, keine Reflektion erkannt" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Blitz ausgelöst, Reflektion erkannt" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Blitz löste nicht aus" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Blitz ausgelöst, festgelegter Modus" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Blitz ausgelöst, festgelegter Modus, keine Reflektion erkannt" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Blitz ausgelöst, festgelegter Modus, Reflektion erkannt" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Blitz nicht ausgelöst, festgelegter Modus" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Blitz wurde nicht ausgelöst, keine Reflektion erkannt" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Blitz nicht ausgelöst, automatisch" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Blitz ausgelöst, automatisch" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Blitz ausgelöst, automatisch, keine Reflektion erkannt" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Blitz ausgelöst, automatisch, Reflektion erkannt" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Keine Blitzlichtfunktion." + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Keine Blitzlichtfunktion." + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Blitz ausgelöst, Rote-Augen-Reduktion" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Blitz ausgelöst, Rote-Augen-Reduktion, keine Reflektion erkannt" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Blitz ausgelöst, Rote-Augen-Reduktion, Reflektion erkannt" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Blitz ausgelöst, fester Modus, Rote-Augen-Reduktion" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Blitz ausgelöst, fester Modus, Rote-Augen-Reduktion, keine Reflektion erkannt" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" +"Blitz ausgelöst, fester Modus, Rote-Augen-Reduktion, Reflektion erkannt" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Blitz nicht ausgelöst, Rote-Augen-Reduktion" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Blitz nicht ausgelöst, automatisch, Rote-Augen-Reduktion" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Blitz ausgelöst, automatisch, Rote-Augen-Reduktion" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Blitz ausgelöst, Rote-Augen-Reduktion, keine Reflektion erkannt" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Blitz ausgelöst, automatisch, Rote-Augen-Reduktion, Reflektion erkannt" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Verarbeitungssoftware" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" +"Der Name und die Version der Software, die benutzt wurde um das Bild nach zu " +"bearbeiten." + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Neuer Unterdateityp" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Genereller Hinweis auf die Art der Daten in dieser Unterdatei" + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "Neuer Unterdateityp" + +#: src/tags.cpp:416 +#, fuzzy +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "Genereller Hinweis auf die Art der Daten in dieser Unterdatei" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Die Anzahl der Spalten der Bilddaten, gleich zu der Anzahl an Pixel per " +"Zeile. Im JPEG Datenstrom wird ein JPEG Marker anstelle dieses Feldes " +"verwendet." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Die Anzahl an Spalten in den Bilddaten. In einem JPEG Datenstrom wird ein " +"JPEG Marker anstelle dieses Feldes verwendet." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bits per Sample." + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Die Anzahl der Bits pro Image Komponente. In diesem Standard ist jede " +"Komponente 8 Bit, und somit der Wert dieses Feldes 8. Siehe auch " +". Im JPEG Datenstrom wird ein JPEG Marker statt diesem " +"Feld benutzt." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Das Kompressionsschema, das für diese Bilddaten verwendet wird. Wenn ein " +"Primärbild komprimiert wird, ist diese Spezifikation nicht notwendig und " +"wird weggelassen. Wenn die Vorschaubilder JPEG Kompression verwenden, hat " +"dieses Feld den Wert 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Der Pixel Aufbau. Im JPEG Datenstrom wird ein JPEG Marker statt diesem Feld " +"benutzt." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "Breite des Zuschnitts" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Kachellänge" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Füllreihenfolge" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Die logische Reihenfolge der Bits in einem Byte." + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Dokumentenname" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Eine ASCII Zeichenkette der den Titel des Bildes spezifiziert. Dieser kann " +"ein Kommentar sein wie zb \"1988 Firmen Picknick\" oder ähnlich. 2 Byte " +"Character Codes können nicht benutzt werden. Wenn ein 2 Byte Code notwendig " +"ist, sollte das Exif Privatfeld benutzt werden." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Der Hersteller des Bildaufzeichnungsgerätes.Dies ist der Hersteller der " +"Kamera, des Scanners, des Video Digitalisierers oder anderem Equipment " +"welches dieses Bild erzeugte. Wenn das Feld leer ist, wird er als unbekannt " +"behandelt." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Der Name oder die Modellnummer des Equipments. Dies ist der Name oder die " +"Modellnummer der Kamera, des Scanners, des Video Digitalisierers oder des " +"Equipments, das das Bild generiert hat. Wenn das Feld leer ist, wird es als " +"unbekannt behandelt." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Für jeden Strip ist dies das Offset für diesen Strip in Bytes. Es wird " +"empfohlen, diese so zu wählen, das die Anzahl an Byts pro Strip nicht 64 " +"KBytes überschreitet. In einem JPEG Datenstrom diese Spezifikation nicht " +"nötig und wird weggelassen. Siehe auch und ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Die Bildausrichtung in Sicht von Spalten und Zeilen." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Samples pro Pixel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Die Anzahl der Komponenten pro Pixel. Da sicher dieser Standard auf RGB und " +"YCbCr Bilder bezieht, ist der Wert dieses Feldes immer 3. Im JPEG Datenstrom " +"wird anstatt diesem Feld ein JPEG Marker benutzt." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Zeilen pro Strip" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"Die Anzahl der Zeilen pro Strip. Dieses ist die Anzahl der Zeilen in einem " +"Strip falls ein Bild in Strips unterteilt ist. In einem JPEG Datenstrom ist " +"dieses Feld nicht nötig und wird weggelassen. Siehe auch und " +"." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Strip Byte Anzahl" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"Die Anzahl der Bytes pro Strip. In einem JPEG Datenstrom ist dieses Feld " +"nicht nötig und wird weggelassen." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Auflösung in x-Richtung" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Die Anzahl an Pixel pro in der Richtung. Wenn " +"keine bekannt ist, werden 72 [dpi] angenommen." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Auflösung in y-Richtung" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Die Anzahl an Pixel pro in der Richtung. " +"Derselbe Wert wie in wird spezifiziert." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Zeigt an, ob Pixelkomponenten im planarer oder \"chunky\" Format vorliegen. " +"In einem JPEG Bild wird ein JPEG Marker statt diesem Feld benutzt. Wenn " +"dieses Feld nicht existiert wird das TIFF Default 1 (\"chunky\") angenommen." + +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "Graupunkt" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +#, fuzzy +msgid "Gray Response Curve" +msgstr "Farbtonkurve" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "Option" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "Option" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Die Einheit zur Messung von und . Die selbe " +"Einheit wird für und verwendet. Wenn diese " +"unbekannt ist, wird der Standard von 2 (Zoll) angenommen." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Bildnummer" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Der Name des Dokuments von dem das Bild eingelesen wurde." + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Eine Transferfunktion für das Bild, beschrieben in tabuliertem Stil. " +"Normalerweise ist dieses Feld nicht nötig, da der Farbraum bereits im " +"Farbraum Informationsfeld angegeben wurde ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Dieses Feld spezifiziert den Namen und die Version der Software oder " +"Firmware des Kameras oder anderen Bildeingabegerätes, das dieses Bild " +"erzeugt hat. Das detaillierte Format ist nicht spezifiziert, aber es ist " +"empfohlen, das das untenstehende Beispiel nachgeahmt wird. Wenn das Feld " +"leer ist, wird es als unbekannt angenommen." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Das Datum und die Uhrzeit der Erstellung des Bildes. In diesem Exif-Standard " +"ist es das Datum und die Zeit der letzten Änderung." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Dieses Feld enthält den Namen des Besitzers der Kamera, des Fotographen oder " +"Bilderschaffers. Das Format ist nicht festgelegt, aber es wird empfohlen die " +"Informationen wie in unten stehendem Beispiel anzugeben für bessere " +"Interoperabilität. Wenn das Feld leer ist, wird der Name als unbekannt " +"angenommen." + +#: src/tags.cpp:564 +#, fuzzy +msgid "Host Computer" +msgstr "Host-Rechner" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Dieses Feld enthält Informationen über den Host-Rechner, der benutzt wurde " +"um das Bild zu generieren." + +#: src/tags.cpp:568 +#, fuzzy +msgid "Predictor" +msgstr "Anbieter" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Die Chromazität des Weißpunktes des Bildes. Normalerweise ist dieses Feld " +"nicht nötig, da der Farbraum im -Feld spezifiziert wird." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Die Chromazität der drei primären Farben des Bildes. Normalerweise ist " +"dieses Feld nicht notwendig, da der Farbraum bereits im Farbraum " +"Informationsfeld angeben wurde." + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Farbmatrix" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Kachelbreite" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Kachellänge" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Kachel-Offsets" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Kachel-Byte-Anzahl" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "SubIFD Offsets" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"Definiert von der Adobe Corporation um TIFF Bäume innerhalb von TIFF Dateien " +"zu erlauben." + +#: src/tags.cpp:612 +#, fuzzy +msgid "Ink Set" +msgstr "Setzen" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Besitzername" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "Taktanzahl" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Dynamischer Bereich" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "Zielblende" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "Bits pro Abtastung" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Dateiformat" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "Audio-Abtastrate" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "Maximale Blende" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Transferbereich" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "Erweitert den Bereich der Transferfunktion" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "JPEG-Verarbeitung" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "JPEG-Verarbeitung" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" +"Dieses Feld gibt einen Hinweis auf die Verarbeitung die benutzt wurde, um " +"die komprimierten Daten zu erzeugen." + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "JPEG Interchange Format" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"Der Abstand zum Startbyte (SOI) der JPEG Vorschaubilddaten. Dieses Feld wird " +"nicht für die primären JPEG Daten benutzt." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "JPEG Interchange Format Länge" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"Die Anzahl an Bytes von JPEG Daten im Vorschaubild. Dieses Feld wird nicht " +"für die primären Bilddaten benutzt. JPEG Vorschaudaten werden nicht " +"aufgeteilt, sondern als kontinuierlicher Datenstrom zwischen den SOI und EOI " +"Markern aufgezeichnet. JPEG komprimierte Vorschaubilder müssen inklusive " +"aller anderen Daten in weniger als 64 KByte aufgezeichnet werden um in den " +"APP1 JPEG Marker zu passen." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +#, fuzzy +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Dieses Feld gibt einen Hinweis auf die Verarbeitung die benutzt wurde, um " +"die komprimierten Daten zu erzeugen." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "JPEG-Verarbeitung" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +#, fuzzy +msgid "JPEG DC-Tables" +msgstr "JPEG-Verarbeitung" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +#, fuzzy +msgid "JPEG AC-Tables" +msgstr "JPEG-Verarbeitung" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Die Matrix Koeffizienten für Transformationen von RGB in YCbCr Imagedaten. " +"In TIFF ist kein Default angegeben, aber hier wird der Wert, der in Appendix " +"E \"Color Space Guidelines\" angegeben ist, als Default verwendet. Der " +"Farbraum ist im Farbraum Informationsfeld deklariert, mit dem Standardwert, " +"welche die beste Bild Interoperabilität unter diesen Bedingungen ergibt." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "YCbCr Sub Sampling" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Die Samplingrate der Chrominanz Komponenten in Bezug zu den " +"Helligkeitskomponenten. In JPEG Datenströmen wird ein JPEG Marker anstelle " +"dieses Feldes verwendet." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Schwarz/Weiß Referenz" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"Der Referenz Schwarzwert und der Referenzweißwert. Im TIFF Standard sind " +"keine Standards angegeben, aber unten stehende Werte werden als Default hier " +"verwendet. Der Farbraum ist in einem Farbraum Informationsfeld deklariert, " +"mit dem Wert als Standard, der die besten Bildwerte für Interoperabilität " +"garantiert." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "XML Paket" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "XMP-Metadaten (Adobe Technische Notiz 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Windows-Bewertung" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Bewertungsfeld das von Windows benutzt wird." + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Windows-Bewertung in Prozent" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Bewertungsfeld das von Windows benutzt wird. Der Wert ist in Prozent." + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "Eindeutige Bildnummer" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Gibt das geometrische Muster des Farbfilter Arrays (CFA - Color Filter " +"Array) des Bildsensors an, wenn ein 1-Chip-Farbflächen-Sensor benutzt wird. " +"Es bezieht sich nicht auf alle Sensormethoden." + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Copyright Information. In diesem Standard wird dieses Feld dafür benutzt, um " +"sowohl das Copyright des Fotographen als auch des Editors anzugeben. Es " +"beinhaltet die Copyright Notiz der Person oder der Organisation die Rechte " +"an dem Bild einfordert. Die interoperable Copyrightnotiz sollte in dieses " +"Feld geschrieben werden; z.B., \"Copyright Claudia Mustermann, 200x. All " +"rights reserved.\" In diesem Standard enthält dieses Feld sowohl Copyright " +"des Fotographen als auch des Editors in getrennten Feldern. Wenn das Feld " +"leer ist, wird es als unbekannt gewertet." + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "Belichtungszeit in Sekunden." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "Die F Nummer." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Enthält den IPTC/NAA Eintrag." + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Bildressourcenblock" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" +"Enthält die Informationen die von dem Programm Adobe Photoshop eingebettet " +"wurden." + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Ein Zeiger auf die Exif IFD Interoperabilität, Exif IFD hat die gleiche " +"Struktur wie die des im TIFF spezifizierte IFD, allerdings enthält es keine " +"Bilddaten wie im Fall von TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Farbprofile" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Enthält eine Farbrofil zur Charakterisierung des Farbraums gemäß dem " +"InterColor Consortium (ICC)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"Die Programmklasse, die die Kamera zum Setzen der Belichtungszeit bei der " +"Aufnahme benutzte." + +#: src/tags.cpp:807 +#, fuzzy +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "Exif-Feld 34852, 0x8824. Spektrale Empfindlichkeit jedes Kanals." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Ein Zeiger auf das GPS Info IFD. Die Interoperabilitätsstruktur des GPS Info " +"IFD hat, genau wie das Exif IFD, keine Bilddaten." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"Gibt die ISO Geschwindigkeit und Breite der Kamera bzw. des Eingabegeräts " +"an, wie in ISO 12232 spezifiziert." + +#: src/tags.cpp:814 +#, fuzzy +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Exif-Feld 34856, 0x8828. Verfahren zur Messung optoelektronischer Kennlinien " +"wie in ISO 14524 spezifiziert." + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Interlaced" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Indicates the field number of multifield images." +msgstr "Gibt das Layout eines Bildes an." + +#: src/tags.cpp:816 +#, fuzzy +msgid "Time Zone Offset" +msgstr "Kachel-Offsets" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "Selbstauslöser" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Datum und Uhrzeit (Original)" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "Das Datum und die Uhrzeit der letzten Änderung der Metadaten." + +#: src/tags.cpp:825 +#, fuzzy +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"Zu den komprimierten Daten gehörige Informationen. Der Kompressionsmodus der " +"für ein komprimiertes Bild verwendet wird ist hier in Teilbits per Pixel " +"angegeben." + +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "Verschlussgeschwindigkeit" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Minimale Blende" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "Die Anzahl der Takte." + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Belichtungskontrolle" + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Maximale Blende" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "Der Name der Szene." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "Die Entfernung zum Motiv (in Metern)." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Der Messmodus." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Die Art der Lichtquelle." + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "" +"Dieses Feld enthält den Weißabgleichsmodus, der zur Aufnahme eingestellt war." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +#, fuzzy +msgid "Noise" +msgstr "Keine" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Die Anzahl an Pixel pro in der Richtung. " +"Derselbe Wert wie in wird spezifiziert." + +#: src/tags.cpp:840 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Die Anzahl an Pixel pro in der Richtung. " +"Derselbe Wert wie in wird spezifiziert." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "Elektronische Vergrößerung" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security classification assigned to the image." +msgstr "Elektronische Vergrößerung" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +#, fuzzy +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" +"Dieses Feld gibt die Position und Größe des Hauptmotivs in der Szene an." + +#: src/tags.cpp:846 +#, fuzzy +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"Gibt den Belichtungsindex an, der in der Kamera oder im Eingabegerät während " +"der Aufnahme selektiert ist." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "TIFF/EP Standard ID" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Enthält vier ASCII Zeichen, wie z.B. \"1\",\"0\",\"0\",\"0\", die die TIFF/" +"EP Standardversion der TIFF/EP Datei repräsentiert." + +#: src/tags.cpp:851 +#, fuzzy +msgid "Type of image sensor." +msgstr "Rohbild-Center" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Windows-Titel" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Titelfeld, in UCS2 kodiert, das von Windows benutzt wird." + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Windows-Kommentar" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Kommentarfeld, in UCS2 kodiert, das von Windows benutzt wird." + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Windows-Autor" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Autorfeld, in UCS2 kodiert, das von Windows benutzt wird." + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Windows-Schlüsselbegriffe" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Schlüsselfelder, kodiert in UCS2, die von Windows benutzt werden." + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Windows-Motiv" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Motivfeld, kodiert in UCS2, das von Windows benutzt wird." + +#: src/tags.cpp:867 +#, fuzzy +msgid "Print Image Matching" +msgstr "Zonenabgleich" + +#: src/tags.cpp:868 +#, fuzzy +msgid "Print Image Matching, description needed." +msgstr "Zonenabgleich" + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "DNG-Version" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "DNG-Rückversion" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Eindeutiges Kameramodell" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Lokalisiertes Kameramodell" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "CFA Ebenenfarbe" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "Schwarzlevel Delta H" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Schwarzlevel Delta H" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Schwarzlevel Delta V" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Weißlevel" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "Standard-Skalierung" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Standard-Skalierung" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Farbmatrix 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Farbmatrix 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Kamerakalibrierung 1" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "Kamerakalibrierung 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +#, fuzzy +msgid "Reduction Matrix 1" +msgstr "Farbmatrix 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +#, fuzzy +msgid "Reduction Matrix 2" +msgstr "Farbmatrix 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Analogabgleich" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Neutral wie aufgenommen" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "Weiß XY wie aufgenommen " + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "Mehrfache Belichtung" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Schärfe" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"CameraSerialNumber enthält die Seriennummer der Kamera oder des " +"Kamerakörpers mit dem das Foto gemacht wurde." + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Linseninformation" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "Blitzstärke" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "Schatten-Skalierung" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "DNG-Privatdaten" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "Anmerkungen des Herstellers" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "Verzerrungskorrektur" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "Standard-Skalierung" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "Eindeutige ID der Rohdaten" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Originaler Rohdateiname" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +#, fuzzy +msgid "Original Raw File Data" +msgstr "Originaler Rohdateiname" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Aktiver Bereich" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Maskierte Bereiche" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "Aktuelles ICC-Profil" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Aktuelles ICC-Profil" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +#, fuzzy +msgid "Current Pre-Profile Matrix" +msgstr "Aktuelles ICC-Profil" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Projektreferenz" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "Kamerakalibrierung 1" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +#, fuzzy +msgid "Profile Calibration Signature" +msgstr "Verzerrungskorrektur" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Aktuelles ICC-Profil" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Rauschunterdrückung" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Druckstocknamen" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Farbtonkurve" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +#, fuzzy +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Dieses Feld enthält Informationen über den Host-Rechner, der benutzt wurde " +"um das Bild zu generieren." + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Copyright" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Farbmatrix 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Farbmatrix 2" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Vorschaudaten" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Vorschauversion" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Bildvorschau gültig" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Beschreibung der Geräteeinstellungen" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Video-Farbraum" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Vorschaudaten" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Rohbild-Center" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +#, fuzzy +msgid "Original Raw File Digest" +msgstr "Originaler Rohdateiname" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Rauschfilter" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Unbekanntes IFD-Feld" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Undefiniert" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Kreativprogramm" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Aktionsprogramm" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Portraitmodus" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Landschaftsmodus" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Mehr-Punkt" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "weißglühendes Wolfram Licht" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Gutes Wetter" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Wolkiges Wetter" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Tageslicht Leuchtstoff (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Tageslichtweiß Leuchtstoff (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Kühles weißes Leuchtstofflicht (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Weißes Leuchtstofflicht (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Standard Licht A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Standard Licht B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Standard Licht C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "ISO Studio Wolfram" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Andere Lichtquelle" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Unkalibriert" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "Einzel-Chip-Farbsensor" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "Zwei-Chip-Farbsensor" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "Drei-Chip-Farbsensor" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "Farb-sequentieller Bereich" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Trilinearer Sensor" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Farb-sequentieller linear" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Filmscanner" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "Reflexiondruckscanner" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Digitalkamera" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Direkt fotographiert" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Normale Verarbeitung" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Gesonderte Verarbeitung" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Langsamer Zugewinn" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Schneller Zugewinn" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Langsame Abnahme" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Schnelle Abnahme" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Nahaufnahme" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Große Entfernung" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Belichtungszeit in Sekunden." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"Gibt die spektrale Empfindlichkeit jedes Kanals der Kamera an. Der Wert des " +"Feldes ist eine ASCII-Zeichenkette kompatibel mit dem Standard der vom ASTM " +"Technical Committee entwickelt wurde." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"Gibt die Opto Elektronische Konvertierungsfunktion (OECF) an, die in ISO " +"14524 spezifiziert ist. ist der Zusammenhang zwischen dem optischen " +"Input und den Bildwerten." + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "ISO-Empfindlichkeit" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Spektrale Empfindlichkeit" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Belichtungsindex" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "ISO Geschwindigkeitsangabe" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"Die Version des Exif Standards die unterstützt wird. Wenn dieses Feld nicht " +"vorhanden ist wird angenommen, das der Standard nicht beachtet wird." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Datum und Uhrzeit (original)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Das Datum und die Uhrzeit zu der das Bild generiert wurde. Für eine " +"Digitalkamera ist das der Zeitpunkt an dem das Bild geschossen wurde." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Datum und Uhrzeit (digitalisiert)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "" +"Das Datum und die Uhrzeit der Speicherung des Bildes als digitale Daten." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Zu den komprimierten Daten gehörende Informationen. Die Kanäle jeder " +"Komponente sind in der Reihenfolge erster bis vierter sortiert. Für " +"unkomprimierte Daten ist das Datenlayout im -Feld " +"spezifiziert. Da aber nur die Reihenfolge von Y, " +"Cb und Cr angeben kann, wird dieses Feld dann benutzt, wenn die " +"komprimierten Daten andere Komponenten als Y, Cb und Cr benutzen, oder um " +"die Unterstützung anderer Sequenzen zu erlauben." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Komprimierte Bits per Pixel" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Zu den komprimierten Daten gehörige Informationen. Der Kompressionsmodus der " +"für ein komprimiertes Bild verwendet wird ist hier in Teilbits per Pixel " +"angegeben." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"Verschlussgeschwindigkeit. Die Einheit ist die APEX (Additive System of " +"Photographic Exposure) Einstellung" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Die Linsenblende. Die Einheit ist der APEX Wert." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Die Helligkeit. Die Einheit ist der APEX Wert. Normalerweise ist dieser Wert " +"zwischen -99.99 und 99.99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Belichtungskontrolle" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"Die Belichtungskontrolle. Die Einheit ist der APEX Wert. Normalerweise wird " +"diese innerhalb des Bereiches -99.99 bis 99.99 spezifiziert." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"Die kleinste F Nummer der Linse. Die Einheit ist der APEX Wert. " +"Normalerweise wird es im Bereich von 00.00 bis 99.99 angegeben, ist aber " +"nicht limitiert auf diesen Bereich." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" +"Dieser Eintrag wird aufgezeichnet, wenn das Bild mit einem Blitz gemacht " +"wurde." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"Die wirkliche Brennweite der Linse, in mm. Es wird nicht auf das 35mm " +"Filmkamera Äquivalent konvertiert." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Dieses Feld gibt die Position und Größe des Hauptmotivs in der Szene an." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Anmerkungen des Herstellers" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Ein Feld für die Hersteller von Exif-Schreibern um variable Informationen " +"abzuspeichern. Der Inhalt ist vom Hersteller abhängig." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Sekundenbruchteile/Zeit" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" +"Das Feld wird benutzt um Sekundenbruchteile für das -Feld zu " +"erfassen." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Sekundenbruchteile (original)" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Das Feld wird benutzt um Sekundenbruchteile für des -Feld " +"zu erfassen." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Sekundenbruchteile (digitalisiert)" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Das Feld wird benutzt um Sekundenbruchteile für das -Feld " +"zu erfassen." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "FlashPix Version" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "Die FlashPix Formatversion die von einer FPXR Datei unterstützt wird." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"Das Farbrauminformationsfeld wird immer als Farbraumspezifikator " +"gespeichert. Normalerweise wird sRGB benutzt, um den Farbraum an PC und " +"Monitor anzupassen. Wenn ein anderer Farbraum als sRGB benutzt wird, wird " +"\"unkalibriert\" gesetzt. Bilddaten, die als unkalibriert aufgezeichnet " +"wurden, können als sRGB betrachtet werden, wenn sie in FlashPix konvertiert " +"werden." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Informationen spezifisch zu den komprimierten Daten. Wenn eine komprimierte " +"Datei aufgezeichnet wird, muss die Breite des sinnvollen Bildausschnitts in " +"diesem Feld aufgezeichnet werden, egal ob Padding Daten oder ein Restart " +"Marker vorhanden sind. Dieser Feld sollte nicht in einer unkomprimierten " +"Datei existieren." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Informationen spezifisch zu den komprimierten Daten. Wenn eine komprimierte " +"Datei aufgezeichnet wird, muss die Höhe des sinnvollen Bildausschnitts in " +"diesem Feld aufgezeichnet werden, egal ob Padding Daten oder ein Restart " +"Marker vorhanden sind. Dieses Feld sollte nicht in einer unkomprimierten " +"Datei existieren. Da Padding in der Vertikalen nicht nötig ist, ist die " +"Anzahl an Zeilen in diesem Feld die gleiche wie die im JPEG SOF Marker." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" +"Dieses Feld wird benutzt, um den Namen einer Audiodatei zu speichern, die zu " +"den Bilddaten gehört. Die einzigen Informationen die hier gespeichert " +"werden, sind der Dateiname und seinen Erweiterung. Also eine ASCII-" +"Zeichenkette bestehend aus acht Zeichen, einem \".\" und drei weiteren " +"Zeichen. Der Pfad wird nicht gespeichert." + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "Interoperabilitäts IFD-Zeiger" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"Das Interoperabilitäts IFD besteht aus Feldern, die Informationen enthalten, " +"die die Interoperabilität sicherstellen. Die Interoperabilitätsstruktur des " +"Interoperabilitäts IFD ist die gleiche wie in der TIFF IFD Struktur, enthält " +"aber keine Bildcharakteristiken wie das normale TIFF IFD." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"Gibt die Energie des Blitzes zum Zeitpunkt der Aufnahme an, in Beam Candle " +"Power Seconds (BCPS)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "Fokusebene x-Auflösung" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"Gibt die Anzahl an Pixeln in der Breite (X Ebene) pro " +" in der Fokusebene an." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Fokusebene y-Auflösung" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Gibt die Anzahl an Pixeln in der Höhe (Y Ebene) pro " +" in der Fokusebene an." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"Gibt die Einheit für die Messung der und der " +" an. Der Wert ist der gleiche wie ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Gibt den Ort des Hauptmotivs in der Szene an. Der Wert dieses Feldes " +"repräsentiert den Pixel im Zentrum des Hauptmotivs relativ zur linken " +"Bildkante, vor der Rotation (siehe -Feld). Der erste Wert gibt die " +"X, der zweite die Y Koordinate an." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Belichtungsindex" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Gibt den Belichtungsindex an, der in der Kamera oder im Eingabegerät während " +"der Aufnahme selektiert ist." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "Gibt den Sensortyp in der Kamera bzw. Eingabegerät an." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Gibt die Quelle des Bildes an. Wenn das Bild durch eine Digitalkamera " +"aufgenommen wurde, ist der Wert 3." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Gibt den Typ der Szene an. Wenn eine Digitalkamera die Szene aufgenommen " +"hat, muss diese Zahl immer auf 1 gesetzt werden, um anzugeben, das die Szene " +"direkt fotographiert wurde." + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Farbfilterliste" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Gibt das geometrische Muster des Farbfilter Arrays (CFA - Color Filter " +"Array) des Bildsensors an, wenn ein 1 Chip Farbflächen Sensor benutzt wird. " +"Es bezieht sich nicht auf alle Sensormethoden." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Dieses Feld gibt einen Hinweis auf eine besondere Verarbeitung der Bilddaten " +"wie z:B. den Berechnungen zur Ausgabe. Wenn eine besondere Verarbeitung " +"durchgeführt wurde, dann wird der Betrachter gebeten keine oder nur eine " +"minimale weitere Verarbeitung durchzuführen." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Dieses Feld gibt den Belichtungsmodus bei der Aufnahme des Bildes an. Bei " +"der automatischen Erfassung nimmt die Kamera mehrere Bilder derselben Szene " +"mit verschiedenen Belichtungseinstellungen auf." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Dieses Feld enthält den Weißabgleichsmodus, der zur Aufnahme eingestellt war." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Dieses Feld gibt die digitale Zoomrate bei der Aufnahme des Bildes an. Wenn " +"der Divisor 0 ist, wurde kein Digitalzoom benutzt." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Dieses Feld gibt die äquivalente Brennweite bei angenommener 35mm Filmkamera " +"an. Der Wert 0 bedeutet das die Brennweite unbekannt ist. Es unterscheidet " +"sich vom -Feld." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Dieses Feld gibt an welche Art von Szene aufgenommen wurde. Es kann auch zum " +"Angeben des Aufnahmemodus verwendet werden. Beachten Sie, das es sich vom " +"-Feld unterscheidet." + +#: src/tags.cpp:1812 +#, fuzzy +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Dieses Feld gibt den Motivabstand an." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Dieses Feld gibt die Richtung der Kontrastbearbeitung an, die bei der " +"Aufnahme des Bildes angewandt wurde." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Dieses Feld gibt die Richtung der Sättigungsbearbeitung an, die bei der " +"Aufnahme des Bildes angewandt wurde." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Dieses Feld gibt die Richtung der Schärfebearbeitung bei der Aufnahme des " +"Bildes an." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Dieses Feld enthält Informationen über die Bildaufnahmebedingungen eines " +"bestimmten Kameramodells. Es wird nur zur Angabe der Bedingungen im Leser " +"benutzt." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Dieses Feld gibt den Motivabstand an." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Dieses Feld gibt eine eindeutige Bild-Identifizierung an. Sie wird als ASCII-" +"Zeichenkette in hexadezimaler Schreibweise aufgezeichnet und hat 128 Bit " +"Länge." + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Besitzername" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Seriennummer" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Hersteller spezifische Informationen" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Linsenmodell" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Unbekanntes Exif-Feld" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Norden" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Süden" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Osten" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Westen" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Über dem Meeresspiegel" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Unter dem Meeresspiegel" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Messung wird durchgeführt" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Messungskompatibilität" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Zweidimensionale Messung" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Dreidimensionale Messung" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "Knoten" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Echte Richtung" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Magnetische Richtung" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilometer" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Meilen" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "Knoten" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Ohne Korrektur" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Korrektur wurde angewendet" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"Gibt die Version des Feldes an. Die Version ist 2.0.0.0. Es ist " +"zwingend erforderlich wenn ein -Feld vorhanden ist. Beachten Sie " +"bitte, :das -Feld ist in Bytes spezifiziert, im Unterschied " +"zum -Feld. Für die Version 2.0.0.0 ist der Wert des Feldes " +"02000000 H." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "GPS-Breitengradreferenz" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"Gibt an, ob die Breite in nördlicher oder südlicher Breite angegeben ist. " +"Der ASCII Wert \"N\" gibt nördliche Breite an, der Wert \"S\" ist südliche " +"Breite." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"Enthält den Breitengrad. Der Breitengrad wird durch drei RATIONAL Werte " +"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " +"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " +"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " +"dann ist das Format, dd/1, mmmm/100, 0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "GPS-Längengradreferenz" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"Gibt an, ob die Länge östliche oder westliche Länge ist. ASCII 'E' steht für " +"östliche Länge und 'W' für westliche." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"Enthält den Längengrad. Der Längengrad wird durch drei RATIONAL Werte " +"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " +"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " +"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " +"dann ist das Format, dd/1, mmmm/100, 0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"Gibt die Referenzhöhe an. Wenn die Referenz der Meeresspiegel ist, und die " +"Höhe ist über dem Meeresspiegel, dann ist dieser Wert 0. Wenn sie unter dem " +"Meeresspiegel ist, dann ist hier ein Wert von 1 und die Höhe ist als " +"absoluter Wert im -Feld angegeben. Die verwendete Einheit ist " +"Meter. Beachten sie, das dieses Feld den Typ BYTE hat." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"Gibt die Höhe über der Referenz Höhe an in an. Höhe ist ein " +"RATIONAL Wert. Die Referenzeinheit ist Meter." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" +"Gibt die Zeit in UTC (Universal Time Coordinated ) an. wird " +"durch drei RATIONAL Werte ausgegeben, die die Stunde, die Minute und die " +"Sekunden mit einer Atomuhr gemessen angeben." + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" +"Gibt die GPS-Satelliten an, die für die Messung benutzt wurden. Dieses Feld " +"kann dafür benutzt werden, um die Anzahl der Satelliten, ihre ID-Nummer, den " +"Erhöhungswinkel, die Abweichung, SNR und andere Informationen mit ASCII-" +"Zeichen zu speichern. Es ist kein Format vorgegeben. Wenn der GPS-Empfänger " +"die Messung nicht durchführen kann, dann wird dieser Wert auf NULL gesetzt." + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" +"Gibt den Status des GPS-Empfängers bei der Aufnahme des Bildes wieder. \"A\" " +"bedeutet, dass die Messung in Arbeit war und \"V\" bedeutet, dass die " +"Messung kompatibel ist." + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" +"Gibt den GPS-Messungsmoduis an. \"2\" steht für eine zwei-dimensionale " +"Messung und \"3\" für drei-dimensional." + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "Grad der Präzision der GPS-Daten" + +#: src/tags.cpp:1999 +#, fuzzy +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" +"Gibt den GPS-Messungsmoduis an. \"2\" steht für eine zwei-dimensionale " +"Messung und \"3\" für drei-dimensional." + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +#, fuzzy +msgid "Indicates the speed of GPS receiver movement." +msgstr "Gibt den Typen eines Audioinhalts an." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "GPS-Spurreferenz" + +#: src/tags.cpp:2010 +#, fuzzy +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Gibt die Referenz für die Richtung des Zielbuildes während der Aufnahme an. " +"\"T\" bezeichnet die wahre und \"M\" die magnetische Richtung." + +#: src/tags.cpp:2014 +#, fuzzy +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"Gibt die Richtung an in der das Bild gemacht wurde. Der Wertebereich geht " +"von 0.00 bis 359.99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Gibt die Referenz für die Richtung des Zielbuildes während der Aufnahme an. " +"\"T\" bezeichnet die wahre und \"M\" die magnetische Richtung." + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"Gibt die Richtung an in der das Bild gemacht wurde. Der Wertebereich geht " +"von 0.00 bis 359.99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "GPS Referenz zum Breitengrad des Ziels" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Gibt an, ob die Breite in nördlicher oder südlicher Breite angegeben ist. " +"Der ASCII Wert \"N\" gibt nördliche Breite an, der Wert \"S\" ist südliche " +"Breite." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"Enthält den Breitengrad. Der Breitengrad wird durch drei RATIONAL Werte " +"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " +"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " +"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " +"dann ist das Format, dd/1, mmmm/100, 0/1." + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "GPS Referenz auf den Längengrad des Ziels" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"Gibt an, ob die Länge östliche oder westliche Länge ist. ASCII \"E\" steht " +"für östliche Länge und \"W\" für westliche." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"Enthält den Längengrad. Der Längengrad wird durch drei RATIONAL Werte " +"angegeben, den Grad, die Minuten und die Sekunden. Wenn Grad, Minuten und " +"Sekunden angegeben werden, ist das Format dd/1, mm/1, ss/1. Wenn Grade und " +"Minuten benutzt werden und, z.B., Minutenteil auf 2 Stellen Genauigkeit, " +"dann ist das Format, dd/1, mmmm/100, 0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Gibt eine Referenz für die Richtung des Zielpunktes an. \"T\" bezeichnet die " +"wahre und \"M\" die magnetische Richtung." + +#: src/tags.cpp:2057 +#, fuzzy +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" +"Gibt die Richtung an in der das Bild gemacht wurde. Der Wertebereich geht " +"von 0.00 bis 359.99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Gibt den Abstand zum Zielpunkt an." + +#: src/tags.cpp:2068 +#, fuzzy +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" +"Eine Zeichenkette die den Namen des GPS Bereichs enthält. Das erste Byte " +"weisst auf den verwendeten Zeichensatz hin und wird dann vom Namen des GPS " +"Bereichs gefolgt." + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" +"Eine Zeichenkette die den Namen des GPS Bereichs enthält. Das erste Byte " +"weisst auf den verwendeten Zeichensatz hin und wird dann vom Namen des GPS " +"Bereichs gefolgt." + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "GPS Datumsstempel" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Unbekanntes GPSInfo-Feld" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Interoperabilitätsindex" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Spezifiziert die Identifikation der Interoperabilitätsregel. Benutzen Sie " +"\"R98\" für ExifR98 Regeln. Vier Bytes werden benutzt inklusive des " +"Endecodes (NULL). Sehen Sie dazu auch das separate Dokument der " +"\"Recommended Exif Interoperability Rules\" (ExifR98) für andere Felder die " +"für ExifR98 benutzt werden." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Interoperabilitätsversion" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Interoperabilitätsversion" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Zugehöriges Bilddateiformat" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Dateiformat der Bilddatei" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Zugehörige Bildbreite" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Zugehörige Bildlänge" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Unbekanntes Exif-Kompatibilitätsfeld" + +#: src/tags.cpp:2128 +#, fuzzy +msgid "Offset" +msgstr "Offset" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +#, fuzzy +msgid "Byte Order" +msgstr "Füllreihenfolge" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Unbekanntes Herstellerbemerkungsfeld von Nikon2" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Unbekanntes Feld" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Digital Zoom wurde nicht benutzt" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "TIFF-Header, offset" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "\"Little-Endian\" kodiert" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "\"Big Endian\" kodiert" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "Bytes" diff --git a/vendor/exiv2-0.25/po/en@boldquot.header b/vendor/exiv2-0.25/po/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/vendor/exiv2-0.25/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/vendor/exiv2-0.25/po/en@quot.header b/vendor/exiv2-0.25/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/vendor/exiv2-0.25/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/vendor/exiv2-0.25/po/es.po b/vendor/exiv2-0.25/po/es.po new file mode 100644 index 0000000..6598f3d --- /dev/null +++ b/vendor/exiv2-0.25/po/es.po @@ -0,0 +1,27057 @@ +# Spanish translations of Exiv2. +# Copyright: +# Free Software Foundation, Inc., 2002 +# Fabian Mandelbaum , 2002 +# This file is distributed under the same license as the Exiv2 package. +# Este archivo se distribuye bajo la misma licencia que el paquete Exiv2. +# +msgid "" +msgstr "" +"Project-Id-Version: Exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2015-05-10 14:00-0500\n" +"Last-Translator: Alan Pater \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-Basepath: ..\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Fallo al abrir el archivo\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Nombre de archivo" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Tamaño de archivo" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Bytes" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Tipo de MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Tamaño de imagen" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "No se encontraron datos EXIF en el archivo\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Fabricante de la camara" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Modelo de la cámara" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Fecha de la imagen" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Número de imagen" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Tiempo de exposición" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Apertura" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Ajuste de exposición" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Flash" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Ajuste del flash" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Distancia focal" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "equivalente 35mm" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Distancia al objetivo" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Velocidad ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Modo de exposición" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Modo de cálculo de la exposición óptima" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Modo de macro" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Calidad de imagen" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Resolución Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Balance de blancos" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Miniatura" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Ninguno" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Copyright" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Comentario Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(Valor binario suprimido)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Comentario JPEG" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Vista previa" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "píxeles" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "bytes" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Ninguna de las etiquetas" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "ni" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "encontrado en el archivo" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "No se registró el momento de creación de la imagen" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Fallo al procesar la fecha y hora" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "en el archivo" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Actualizando fecha y hora a" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Borrando datos de vista en miniatura" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Borrando los datos Exif del archivo" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Borrando los metadatos IPTC del archivo" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Borrando los comentarios JPEG del archivo" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Borrando los metadatos XMP del archivo" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "La imagen no contiene una miniatura Exif\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Escribiendo vista en miniatura" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "al archivo" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "los datos Exif no contienen una miniatura\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "La imagen no tiene vista previa" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Escribiendo vista previa" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Configurar comentario JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Añadir" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Aviso" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Fallo de lectura" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "valor" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Ajuste" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Borrar" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Metadatos de fecha y hora con clave" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "no establecido\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Ajustando" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "por" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "años" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "año" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "meses" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "mes" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "días" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "día" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "No se puede ajustar fecha y hora" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "a" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "la etiqueta ISO Exif standard ya existe; no se modifica\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Estableciando valor Exif ISO a" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "No se encontraron comentarios Exif del usuario" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Comentario Exif del usuario con un tipo de valor inesperado" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Comentario Exif UNICODE del usuario no encontrado" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "Configurar comentario Exif UNICODE" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Escribiendo datos Exif desde" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Escribiendo datos IPTC desde" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Escribiendo datos XMP desde" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Escribiendo comentario JPEG desde" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "No se pudieron escribir los metadatos al archivo" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Nombre del archivo perdido por un problema de formato." + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "El nombre del archivo ya es el correcto" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Archivo" + +# context here? File = archivo , to fill = llenar +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "ya existe. S[O]breescribir, [r]enombrar or [s]altar?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Renombrando archivo a" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "actualizando fecha y hora" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Fallo al renombrar" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Sobreescribir" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Apagado" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Encendido" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "Encendido (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "Encendido (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "RGB de Adobe" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Desconocido" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Configuración de la cámara" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Varias configuraciones de la cámara" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Distancia focal" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Información de disparo" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Información de disparo" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Tipo de imagen" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Tipo de imagen" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Versión del Firmware" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Versión de Firmware" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Número de archivo" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Número de archivo" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Nombre del propietario" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Número de serie" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Número de serie de la cámara" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Funciones personalizadas" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "Identidad de modelo" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Identidad de modelo" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Información de la imagen" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Información de la imagen" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Super Macro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Super macro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "Información AF" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "Información AF" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Tabla de balance de blancos" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Tabla de balance de blancos" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Modelo de lentes" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Número de serie interno" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Número de serie interno" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Datos de eliminación de polvo" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "Funciones personalizadas" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "Color medido" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "Espacio de color" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "Posición VRD" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Etiqueta CanonMakerNote desconocida" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Modo económico" + +# ## Economía ? it depends on the context +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normal" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Fino" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "En bruto" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Superfino" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Película normal" + +#: src/canonmn.cpp:439 +msgid "Movie (2)" +msgstr "Película (2)" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Automático" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Ojos rojos" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Sincronización lenta" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Auto + ojos rojos" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "Encendido + ojos rojos" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Externo" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Único / temporizador" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Contínuo" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Película" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Continuo, prioridad de velocidad" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Continuo, bajo" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Continuo, alto" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Un disparo AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "Servo AF de IA" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "Exposición automática" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Foco manual" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Sencillo" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Enfoque panorámico" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Grande" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Medio" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Pequeña" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Medio 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Medio 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Medio 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Totalmente automático" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manual" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Paisaje" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Disparador rápido" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Disparador lento" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Escena nocturna" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Escala de grises" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Retrato" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Deportes" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Macro / acercamiento" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Blanco y Negro" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Expresivo" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutral" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Sin flash" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Disparador largo" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Follaje" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Interior" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Fuegos artificiales" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Escena de playa" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Lluvioso" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Nieve" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Niños y Mascotas" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Instantánea nocturna" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Macro digital" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Mis colores" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Imagen estática" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Otros" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Poca luz" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Alto" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/d" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Altura automática" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Predeteminado" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Punto" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Promedio" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Evaluativo" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Parcial" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Peso centrado" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Desconocido" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Macro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Muy cerca" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Cerca" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Rango medio" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Rango lejano" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Infinito" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Punto de selección manual de AF" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Ninguno (Enfoque manual)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Autoseleccionado" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Derecha" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Centro" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Izquierda" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Selección automática de punto AF" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Disparo sencillo (Auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Programa (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Prioridad del obturador (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Prioridad de apertura (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manual (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "No disparó." + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Disparado" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Flash externo" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Flash interno" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "Medición a través de la Lente (TTL)" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "Sincronización FP activada" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Usada la sincronía de segunda-cortina" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "Usado el modo de sincronización FP" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "AE Normal" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Compensación de la exposición" + +# context? tiempo de exposición = Exposure timne. Probably better as "Tiempo de compensación de la exposición" +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "Bloqueo de la Exposición Automática" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "AE bloqueado + compensación de exposición" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Sin AE" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "Encendido, solo disparo" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Punto AF" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Suavizado" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "B/N" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Perzonalizado" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Mis datos de color" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Completo" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Disparador automático" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Disparo automático" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Calidad" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Modo del flash" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Ajuste del modo de flash" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Modo de controlador" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Configuración de modo de ajuste" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Modo de enfoque" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Ajuste del modo de enfoque" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Tamaño de imagen" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Modo sencillo" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Modo de disparo sencillo" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Zoom digital" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Zoom digital" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Contraste" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Ajuste de contraste" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Saturación" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Ajuste de saturación" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Nitidez" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Ajuste de nitidez" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Modo de velocidad ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Ajuste de velocidad ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Modo de métrica (Exposición automática)" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Ajuste del modo de medición" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Tipo de foco" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Ajuste de tipo de foco" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Punto de enfoque AF seleccionado" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Programa de exposición" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Ajuste de modo de exposición" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Tipo de lentes" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Tipo de lentes" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Lentes" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"longitud focal «larga» y «corta» (en «unidades focales») y «unidades focales " +"por mm»" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Focal corta" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Focal corta" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Apertura máxima" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Apertura máxima" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Apertura mínima" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Apertura mínima" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Actividad del flash" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Actividad del flash" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Detalles del flash" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Detalles del Flash" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Foco contínuo" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Ajuste de foco contínuo" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Configuración AE" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Configuración AE" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Estabilización de imagen" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Estabilización de imagen" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Apertura de visor" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Apertura de visor" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Amplitud de la fuente de zomm" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "Amplitud de la fuente de zoom" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "Ancho de Objetivo" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "Ancho de objetivo" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Efecto foto" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Efecto foto" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Tono de color" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Tono de color" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "Calidad de tono SRAW" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "Calidad SRAW" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Configuración de la cámara Canon etiqueta 1 desconocida" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Luz de día" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Nublado" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Tungsteno" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "iluminación con fluorescente" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Blanco y negro" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Sombra" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Temperatura manual (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "Ajuste PC 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "Ajuste PC 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "Ajuste PC 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Luz de día fluorescente" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Personalizado 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Personalizado 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Personalizado 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "Ajuste PC 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "Ajuste PC 5" + +#: src/canonmn.cpp:1117 +msgid "Auto (ambience priority)" +msgstr "" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "izquierda" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "centro" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "derecho" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Velocidad ISO usada" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "velocidad ISO usada" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Abertura del objetivo" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Velocidad de obturación del objetivo" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Velocidad de obturación del objetivo" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Balance de blanco" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Ajuste de balance de blancos" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Secuencia" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Número de secuencia (si estamos en modo ráfaga)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Punto de enfoque AF utilizado" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Punto de enfoque AF utilizado" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Ajuste del flash" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Distancia al tema" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Distancia al objetivo (las unidades no estan determinadas)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Valor de apertura" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Valor velocidad del obturador" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Velocidad del obturador" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Configuración de la cámara Canon etiqueta 2 desconocida" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "De izquierda a derecha" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "De derecha a izquierda" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "De abajo a arriba" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "De arriba a abajo" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "matriz 2x2 (en sentido de las agujas del reloj)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Cuadro panorámico" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Número de cuadro panorámico" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Dirección del panorama" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Dirección del panorama" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Etiqueta de panorama Canon desconocida" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Reducción de ruido" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Reducción del ruido de larga exposición" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Bloqueo de Ae del obturador" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "Disparador/botones de bloqueo AE" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Bloqueo del espejo" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Bloqueo del espejo" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Incremento del nivel de exposición" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "Tv/Av y nivel de exposición" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Asistente AF" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Apoyo a Autofocus claro" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Promedio de velocidad de sincronización deñ flash" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Velocidad del obturador en modo Av" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "Secuencia AEB" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "secuencia AEB / autocancelación" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Sincronización de la cortina de disparo" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Sincronización de la cortina de disparo" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Botón de parada del AF de la lente" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Interruptor Fn. detener AF de lentes" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "auto reducción de flash de relleno" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Auto reducción del flash de relleno" + +# ### can be improved probably +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Volver al menú" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Botón de menú volver a la posición" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Establecer la función del botón" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "ESTABLECER la función del botón al disparar" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Limpieza del sensor" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Limpieza del sensor" + +# ### ? +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "Enfoque en imágenes superpuestas" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "Enfoque en imágenes superpuestas" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "Liberación del obturador sin tarjeta CF" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "Liberación del obturador con o sin tarjeta CF" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Etiqueta de función personalizada de Canon desconocida" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "medio-derecha" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "inferior" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "superior" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "medio-izquierda" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "superior-izquierda" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "superior-derecha" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "abajo - izquierda" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "abajo- derecha" + +# ### ? +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Ancho de la imagen" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "ancho de la imagen" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Altura de la imagen" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Altura de la imagen" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Ancho de la imagen en el disparo" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Ancho de la imagen (en el disparo)" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Altura de la imagen en el disparo" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Altura de la imagen (en el disparo)" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Punto AF usado" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Punto AF usado" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Punto AF usado 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Puntos de AF usados (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Etiqueta de información de la imagen Cannon desconocida" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "BN" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Postal" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Pantalla panorámica" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Película mediana" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "Película pequeña" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "En 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "En 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "Encendido (cambiar AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "Encendido (cambiar GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Amarillo" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Naranja" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Rojo" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Verde" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Azul" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Púrpura" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Modo de disparo múltiple" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Valor de disparo múltiple" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "Número de disparos múltiples" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "Calidad Raw Jpg" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Tamaño Jpg raw" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "Balance de blancos en modo de disparo múltiple" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "Balance de blancos valor de disparo múltiple AB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "Balance de blancos valor de disparo múltiple GM" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Efecto de filtro" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Efecto de matiz" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +# ### ? +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "" + +#: src/canonmn.cpp:1347 +msgid "Focus Distance Upper" +msgstr "" + +#: src/canonmn.cpp:1348 +msgid "Focus Distance Lower" +msgstr "" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Etiqueta de información de archivo Canon desconocida" + +# don't understand well the context +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Estándar" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "Saturación alto" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "Saturación bajo" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "Ajuste CM 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "Ajuste CM 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monocromo" + +#: src/canonmn.cpp:1399 +msgid "Fine Detail" +msgstr "Detalle fino" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "Curva de tono" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Curva de tono" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Temperatura de color" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "Etiqueta desconocido" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "Encabezado, offset" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "etiqueta" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "directorio" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "tipo" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "tamaño" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "compensación" + +# ### ? offset = soft? +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(no válida)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "Registro de sobre IIM" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "Registro de aplicación IIM 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Versión del modelo" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Un número binario identificando la versión del modelo de intercambio de " +"información, Parte I, usado por el proveedor. Los números de version son " +"asignados por las organizaciones IPTC y NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Destino" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Este conjunto de datos es para acomodar algunos proveedores que requieren " +"información de enrutamiento sobre las capas OSI apropiadas" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Formato de archivo" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Un número binario representando el formato del archivo. Dicho formato debe " +"estar registrado por medio de un número único asignado por IPTC o NAA. La " +"información se usa para dirigir los datos al sistema apropiado y permitir al " +"sistema receptor ejecutar las acciones que sean apropiadas." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Versión del archivo" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Un número binario representando la versión particular del formato de archivo " +"especificado por la etiqueta ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Id del Servicio" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Identifica al proveedor y al producto" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Número de sobre" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Los caracteres de un número que será único para la fecha especificada en la " +"etiqueta y para el Identificador de servicio en la etiqueta " +". Si aparecen números de sobre iguales con la misma fecha " +"y el mismo identificador de servicio, los registros 2-9 no deben cambiar con " +"respecto al original. Esto no está orientado a ser un número de serie " +"secuencial de recepción de cheque." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Id del Producto" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Permite a un proveedor identificar subconjuntos de su servicio global. " +"Utilizado para recepcionar los datos organizativos de un modo que permita " +"seleccionar, dirigir o manipular los datos de varios modos." + +# ### can be improved +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Clasificación de los sobres por prioridades" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"No especifica la urgencia editorial (para eso véase la etiqueta )" +"sino la prioridad de manejo de los sobres. \"1\" indica el más urgente, " +"\"5\" urgencia normal y \"8\" las copias menos urgentes. El \"9\" permite al " +"usuario definir una prioridad personalizada. El \"0\" está reservado para " +"usos futuros." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Fecha del envío" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Usa el formato SSAAMMDD (siglo, año, mes, día) definido en ISO 8601 para " +"indicar año, mes y día en que el servicio envió el material." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Hora enviada" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Utiliza el formato HHMMSS:HHMM donde HHMMSS se refiere a la hora local, " +"minuto y segundos y HHMM se refiere a horas y minutos posteriores (+) o " +"antes (-) delUniversal Coordinated Time tal y como está descrito en la ISO " +"8601. Este es el momento en que el servicio envió el material." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Juego de caracteres" + +# ################################################# stop. rev 26 jul 2010 +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Esta etiqueta consiste en una o mas funciones de control utilizadas para el " +"anuncio, invocación o designio de juegos de caracteres codificados. Las " +"funciones de control siguen el estándar ISO 2022 y pueden consistir en el " +"caracter de control escape y uno o más caracteres gráficos." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Objeto Nombre Único" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Esta etiqueta proporciona un identificador único globalmente para objetos, " +"independiente del proveedor y para cualquier tipo de medio, tal y como está " +"especificado en el IIM. El proveedor debe garantizar que el UNO es único. " +"Los objetos con el mismo UNO son idénticos." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Identificador ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"El DataSet identifica al Abstract Relationship Method identifier (ARM) que " +"es descrito en un documento registrado por el creador del ARM con las " +"organizaciones IPTC y NAA." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "Versión ARM" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Consiste en un número binario representando la versión particular del ARM " +"especificado por la etiqueta ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Versión de registro" + +# ## ? not translated +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Número binario, asignado por las organizaciones IPTC y NAA, que identifica " +"la versión del Modelo de Intercambio de Información, Parte II, utilizado por " +"el proveedor." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Tipo de objeto" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"Tipo de Objeto; se utiliza para distinguir entre diferentes tipos de objetos " +"dentro del IIM. Consta de dos partes separadas por un signo de dos puntos, " +"siendo la segunda parte opcional. La primera es un número de referencia " +"internacional e independiente del lenguaje para un tipo de objeto; La " +"segunda una representación textual del Object Type Number mediante " +"caracteres gráficos y espacios, bien en Inglés o en el lenguaje del servicio " +"indicado en la etiqueta ." + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Atributo de objeto" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"El Object Attribute define la naturaleza del objeto independientemente del " +"tema que trate. Consta de dos partes separadas por un signo de dos puntos, " +"siendo la segunda parte opcional.La primera es un número de referencia " +"internacional (independiente del lenguaje) para un atributo del objeto; La " +"segunda una representación textual del Object Attribute Number mediante " +"caracteres gráficos y espacios, bien en Inglés o en el lenguaje del servicio " +"indicado en la etiqueta " + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Nombre del objeto" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"Utilizado como referencia rápida (taquigráfica) para el objeto. Los cambios " +"a datos existentes, como historias actualizadas o nuevos recortes en fotos, " +"deben estar identificados en la etiqueta ." + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Título del documento" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Editar estado" + +# ### temptatively, can have several meanings here +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" +"Estatus de los datos del objeto, de acuerdo con la costumbre del proveedor " + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Actualización Editorial" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"Indica el tipo de actualización que éste objeto proporciona a un objeto " +"previo. El enlace al objeto previo se hace usando las etiquetas " +" y , de acuerdo a las costumbres del proveedor." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Urgencia (de edición)" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Especifica la urgencia editorial del contenido y no equivale necesariamente " +"a la prioridad de manejo del sobre (véase ). El \"1\" es " +"el más urgente, \"5\" indica normal y \"8\" denota a la copia menos " +"prioritaria." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Tema" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "La referencia Sujeto es una definición estructurada del contenido" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Categoria" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"Identifica el tema del objeto dato en opinión del proveedor. Donde sea " +"posible una lista de categorías será mantenida por un registro regional, en " +"otro caso sera proporcionada por el proveedor." + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Categoría suplementaria" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"Las categorías suplementarias permiten refinar el tema de un objeto de " +"datos. Una categoría suplementaria puede incluir cualquiera de las " +"categorías ya reconocidas en la etiqueta . Por lo demás, la " +"selección de categorías suplementarias se deja al proveedor." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Categorías suplementarias" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "Id de arreglo" + +# ## only my best effort, can be improved probably +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Identifica objetos de datos que recurren a menudo y de modo predecible, " +"permitiendo a los usuarios encontrarlos inmediatamente o rellamarlos cuando " +"se precise." + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Palabras Clave" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"Utilizado para indicar palabras clave específicas. Se espera que un " +"proveedor de varios tipos de datos ligados a un mismo tema utilice la misma " +"palabra clave, permitiendo al sistema receptor o a los distintos subsistemas " +"encontrar rápidamente todo el material relacionado entre todos los tipos de " +"datos." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Código de localización" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"Indica el código de País/localización geográfica referenciado por el " +"contenido de un objeto. Allí donde la ISO 3166 haya establecido un código " +"apropiado de país se utilizará ése código. En caso contrario (ej. el espacio " +"o barcos en alta mar, IPTC asignará un código de tres caracteres apropiado " +"bajo las previsiones de la ISO 3166 para evitar conflictos." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Nombre de localidad" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Proporciona un nombre, publicable y completo, del país o localización " +"geográfica referenciado por el contenido de un objeto, de acuerdo a las " +"directrices del proveedor." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Fecha de lanzamiento" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"Designa la fecha inicial (expresada en forma CCYYMMDD) a partir de la cual " +"el proveedor tiene intención de que un objeto concreto pueda ser usado. " +"Sigue el estándar ISO 8601." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Tiempo de liberación" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"Designa la hora inicial (expresada en forma HHMMSS:HHMM) a partir de la cual " +"el proveedor tiene intención de que un objeto concreto pueda ser usado. " +"Sigue el estándar ISO 8601." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Fecha de Expiración" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Designa la fecha de expiración de la validez de un objeto para su uso " +"(expresada en forma CCYYMMDD) a partir de la cual el proveedor o el usuario " +"consideran que ya no debe utilizarse mas dicho objeto. Sigue el estándar ISO " +"8601." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Hora de expiración" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Designa la hora de expiración de la validez de un objeto para su uso " +"(expresada en forma HHMMSS:HHMM) a partir de la cual el proveedor o el " +"usuario consideran que ya no debe utilizarse mas dicho objeto. Sigue el " +"estándar ISO 8601." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Instrucciones especiales" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Instrucciones editoriales adicionales sobre el uso del objeto dato, como " +"embargos y avisos." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Instrucciones" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Acción sugerida" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"Indica el tipo de acción que este objeto proporciona a un objeto anterior. " +"La liga al objeto anterior se hace usando las etiquetas y " +", de acuerdo a las prácticas del proveedor." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Servicio de referencia" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Identifica el identificador de servicio de un sobre anterior en el cual el " +"objeto actual se referencia." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Fecha de referencia" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" +"Identifica la fecha de un sobre anterior en el cual el objeto actual se " +"referencia." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Número de referencia" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" +"Identifica el número de sobre de un sobre anterior en el cual el objeto " +"actual se referencia" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Fecha de creación" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Representado en el formato CCYYMMDD designa la fecha de la creación del " +"contenido intelectual del objeto o de la creación física de la " +"representación. Sigue el estándar ISO 8601." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Hora de creación" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Representado en la forma HHMMSS:HHMM para designar el horario en el que el " +"contenido intelectual de la fuente actual del objeto de datos se creó, en " +"lugar de la creación de la representación física. Siguiendo el estándar ISO " +"8601." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Fecha de digitalización" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Representado en la forma CCYYMMDD para designar la fecha en la que la " +"representación digital de el objeto de datos fue creada. Siguiendo el " +"estandar ISO 8601." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Hora de digitalización" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Representado en el formato HHMMSS:HHMM para designar la hora en la que se " +"creó la representación digital del objeto de datos. Sigue el estándar ISO " +"8601." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Programa" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" +"Identifica el tipo de programa usado para originar los datos del objeto." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Versión del programa" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" +"Usado para identificar la versión del programa mencionado en la etiqueta " +"" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Ccilo de objeto" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "Utilizado para identificar el ciclo editorial de los datos del objeto." + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Por-Línea" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"Contiene el nombre del creador de los datos del objeto, p.e. escritor, " +"fotógrafo o artista gráfico." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Autor" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Título por línea" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" +"Un título por-línea es el título del creador o creadores de un objeto de " +"datos. Cuando se usa, un título por-línea debería seguir los por-línea que " +"modifica." + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Ciudad" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"Identifica la ciudad de los datos del objeto original de acuerdo con las " +"indicaciones establecidas por el proveedor." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Sublocalización" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"Identifica el lugar dentro de una ciudad desde donde el objeto data se " +"origina, de acuerdo a los lineamientos establecidos por el proveedor." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Estado provincia" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" +"Identifica la provincia/estado de origen de acuerdo con las indicaciones " +"establecidas por el proveedor." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Estado/Provincia" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Código de país" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Indica el código del país o localización primaria donde la propiedad " +"intelectual del objeto de datos fue creado, por ejemplo, dónde fue tomada " +"una foto, ocurrió un evento. Cuando ISO ha establecido un código de país " +"apropiado bajo ISO 3166, ese código será usado. Cuando ISO 3166 no " +"proporcione adecuadamente la identificación para una localización o un nuevo " +"país, o bien barcos en alta mar, el espacio exterior, IPCT asignará una " +"código apropiado de tres caracteres, bajo las condiciones de ISO 3166 para " +"evitar conflictos." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Nombre del país" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Proporciona el nombre del país completo y publicable o la localización " +"primaria donde la propiedad intelectual del objeto de datos se creó, de " +"acuerdo con los criterios del proveedor." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Pais" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Referencia de transmisión" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"Código que representa la localidad de la transmisión original de acuerdo a " +"las prácticas del proveedor." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Titular" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" +"Un entrada publicable que proporciona la sinopsis de los contenidos de los " +"datos del objeto." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Crédito" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" +"Identifica el proveedor de los datos del objeto, no necesariamente el " +"propietario/creador" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Origen" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Identifica el propietario intelectual original de los contenidos de los " +"datos del objeto. Puede ser una agencia, un miembro de una agencia o un " +"individuo." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "Contiene cualquier aviso necesario de copyright." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Mención de copyright" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Contacto" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Identifica a la persona u organización que pueden proporcionar mayor " +"información de soporte del objeto de datos." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Subtítulo" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "Descripción textual de los datos del objeto." + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Descripción" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Grabador" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Identificación del nombre de la persona autora del escrito, edición o " +"corrección del objeto de datos o de su resumen." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Título rasterizado" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"Contiene la descripción de datos del objeto rasterizado y es usado donde los " +"caracteres que no se han codificado se requieren para el titulo" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Indica los componentes de color de una imagen" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orientación de la imagen" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Indica la disposición de una imagen." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Idioma" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"Describe el principal idioma nacional del objeto de datos, de acuerdo con " +"los códigos de dos letras de ISO 639:1988. No define ni implica algún juego " +"de caracteres codificado, pero se usa para el ruteado interno, por ejemplo " +"los varios escritorios editoriales." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Tipo de audio" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Indica el tipo de contenido de audio" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Tasa de audio" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Indica la frecuencia en Hertzios de un contenido de audio" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Resolución de audio" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "Indica la resolución muestreo de un contenido de audio." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Duración del audio" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Indica la duración de un contenido de audio." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Cola de salida del sonido" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Identifica el contenido del final de un objeto de datos de audio, de acuerdo " +"a los lineamientos establecidos por el proveedor." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Formato de previsualización" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Un número binario que representa el formato de archivo de la " +"previsualización del objeto de datos. El formato de archivo debe estar " +"registrado con las organizaciones IPTC o NAA con un número único asignado." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Versión de vista previa" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Un número binario representando la versión particular del formato de archivo " +"de la vista previa de los datos del objeto especificado en la etiqueta " +"" + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Previsualizar datos" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Previsualizar datos de la imagen binaria." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Inválido)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Conjunto de datos desconodido" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Error %0: arg2=%2, arg3=%3, arg1=%1." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Éxito." + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "No parece como la imagen %1" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Nombre de conjunto de datos inválido «%1»" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Nombre de registro inválido «%1»" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Clave inválida «%1»" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Nombre de etiqueta inválido o ifdld «%1», ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Valor no establecido" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Fallo al abrir la fuente de datos: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Fallo al abrir el archivo (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: El archivo contiene datos de un tipo de imagen desconocido" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "La memoria contiene datos de una imagen de tipo desconocido" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "El tipo de imagen %1 no está soportada" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Fallo al leer los datos de la imagen" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "No parece una imagen JPEG" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "%1: Fallo al asignar el archivo para lectura y escritura: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Fallo al renombrar el archivo a %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Transferencia fallida: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Fallo en la transferencia de memoria: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Fallo al leer los datos de entrada" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Fallo al escribir la imagen" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Los datos de entrada no contienen una imagen válida" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "ifdId %1 inválido" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setValue: Valor demasiado grande (etiqueta=%1, tamaño=%2, solicitado=" +"%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea: Valor demasiado grande (etiqueta=%1, tamaño=%2, " +"solicitado=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Posición fuera de rango" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Tipo de datos de compensación de área no soportado" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "Juego de caracteres no válido «%1»" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "No se admite el formato de la fecha" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "No se admite el formato de la hora" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Escribir a %1 imágenes no está permitido" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Configurar %1 en imágenes %2 no está permitido" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "No parece una imagen CRW" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: No pemitido" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" +"No hay información del nombre de espacio disponible para el prefijo XMP «%1»" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"Sin prefijo registrado para el nombre de espacio «%2», necesario para la " +"propiedad ruta «%1»" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "El tamaño del segmento JPEG %1 es mayor de 65535 bytes" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Xmpdatum %1 no manejado para el tipo %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "nodo XMP %1 n o manejado con opc=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Error %1 de las herramientas XMP: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Fallo al decodificar Lang Alt propiedad %1 con opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Fallo al decodificar calificador Lang Alt %1 con opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Fallo al codificar propiedad Lang Alt %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" +"Fallo al determinar nombre de propiedad desde ruta %1, nombre de espacio %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" +"Esquema de nombre de espacio %1 no registrado con el kit de herramientas XMP" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Nombre de espacio no registrado para prefijo «%1»" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Los alias no están permitidos. Por favor envíe este paquete XMP a " +"ahuggel@gmx.net «%1», «%2», «%3»" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Tipo XmpText «%1» inválido" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "Directorio TIFF %1 tiene demasiadas entradas" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Múltiples etiquetas de elementos de orden TIFF %1 en un directorio" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "Tipo equivocado para etiqueta de elemento de orden TIFF %1" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 tiene un tipo de valor XMP «%2» inválido" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Este programa es software libre; puede redistribuirlo y/o\n" +"modificarlo bajo los términos de la licencia pública general GNU\n" +"publicada por la Free Software Foundatiojn; en la versión 2\n" +"de la licencia, o (a su elección) en cualquier versión posterior.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Este programa se distribuye con la esperanza de que sea útil,\n" +"pero SIN NINGUNA GARANTÃA; ni siquiera la garantía implícita de\n" +"COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Véase la\n" +"Licencia Pública General de GNU para obtener más detalles.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Debe haber recibido una copia de la licencia pública\n" +"general GNU con este progra,a; en caso contrario, escriba\n" +"a la Free Software Foundation, Inc Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Uso:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ opciones ] [ acción ] archivo ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "manipular los metadatos Exif de las imágenes.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Acciones:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Ajusta las marcas de tiempo Exif por el nombre dado. Esta " +"acción\n" +" requiere al menos una de las opciones -a, -Y, -O o -D\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Imprime los metadatos de la imagen.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Borra los metadatos de la imagen de los archivos.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Inserta metadatos desde los correpsondientes archivos *." +"exv.\n" +" Use la opción -S para cambiar el sufijo de los archivos de " +"entrada.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Extrae metadatos a *.exv, *xmp y archivos de imágenes en " +"miniatura\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Renombra los archivos o ajusta las fechas de acuerdo a\n" +" la fecha de creación del Exif. El formato del nombre del " +"archivo puede ajustarse con\n" +" -r formato, las opciones de la fecha son controladas con -t " +"y -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Aplica a órdenes para modificar (añadir, establecer, borrar) " +"el Exif y\n" +" metadatos IPTC de archivos de imágenes o establecer el " +"comentario JPEG.\n" +" Requiere la opción -c, -m o -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Copia ajuste del ISO de la marca Nikon a la etiqueta\n" +" Exif regular.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opciones:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Muestra esta ayuda y sale.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Muestra la versión del programa y sale.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Verbosidad mientras corre el programa.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" +" -Q lvl Configurar nivel-registro para d(ebug), i(nfo), w(arning), e" +"(rror) or m(ute).\n" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Muestra los grandes valores binarios.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Muestra etiquetas desconocidas.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g clave Solo información de salida para esta clave (grep).\n" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Preserva el sello de tiempo del archivo (mantiene).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t También ajusta la fecha del archivo en la acción " +"'renombrar' (reemplaza -k)\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Solo ajusta la fecha del archivo en la acción 'renombrar', no lo " +"renombra\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -f No muestra antes de sobreescribir archivos existentes (forzar).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F No muestra antes de renombrar archivos (Forzar).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a hora Ajusta la hora en el formato [-]HH[:MM[:SS]]. Esta opción\n" +" solo se utiliza con la acción 'adjust'.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y yrs Ajuste del año con la acción 'adjust'\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mon Ajuste del mes con la acción 'adjust'\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D day Ajuste del día con la acción 'adjust'\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" +" -p mode Modo de impresión para la acción 'print'. Los modos posibles " +"son:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" +" s : imprime un sumario de los metadatos Exif (predeterminado)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : imprimir Exif, IPTC y XMP metadata (atajo para -Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t : datos Exif (-PEkyct) interpretados (traducidos)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : valores de datos Exif sin formato (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : volcado hexadecimal de los datos Exif (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : valores de datos IPTC (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : propiedades XMP (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c: Comentario JPEG\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : listar previsualizaciones disponibles\n" + +#: src/exiv2.cpp:294 +msgid " S : print structure of image\n" +msgstr "" + +#: src/exiv2.cpp:295 +msgid " X : extract XMP from image\n" +msgstr "" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs Imprime banderas para un control preciso de las listas de " +"etiquetas (acción «imprimir»):\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : incluye etiquetas Exif en la lista\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : conjunto de datos IPTC\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : propirdades XMP\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : imprime una columna con el número de etiqueta\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : nombre de grupo\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : clave\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : tag etiqueta\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : nombre de etiqueta\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : tipo\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : número de componentes (cuenta)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : tamaño en bytes\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v: valor de datos planos\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : datos interpretados (traducidos)\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : volcado hexadecimal de los datos\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" +" -d tgt Elimina objetivo(s) para la acción 'eliminar'. Objetivos " +"posibles:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : todos los metadatos soportados (predeterminado)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : sección Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : Solo miniatura Exif\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i: Datos IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : paquete XMP\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Inserta objetivo(s) para la acción «insertar». Los objetivos " +"posibles son\n" +" los mismos que para la opción -d, más un modificador :\n" +" X: Inserta los metadatos desde un archivo XMP .xmp\n" +" Solo pueden insertarse miniaturas de tipo JPEG, deben nombrarse " +"como\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt Extrae objetivo(s) para la acción «extraer». Los objetivos " +"posibles\n" +" son los mismos que para la opción -d, más un objetivo a extraer\n" +" imágenes de previsualización y un modificador para generar un " +"archivo XMP\n" +" p[[,...]] : Extrae previsualización de imagen.\n" +" X: Extrae los metadatos a un archivo XMP .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Formato de nombre archivo para la acción «rename». El formato de " +"la cadena\n" +" corresponde a strftime(3). Las siguientes palabras clave están " +"permitidas:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - nombre de archivo original sin extensión\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - nombre del directorio que mantiene el archivo " +"original\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - nombre del directorio padre\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " El formato del nombre de archivo predeterminado es " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c comentario Comentario para colocar en la imagen JPEG\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m archivo Archivo que contiene órdenes para la acción 'modificar'. El " +"formato de las órdenes es.\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M cmd Línea de ordenes para la acción de modificar. El formato de\n" +" las órdenes es el mismo que el de la líneas del archivo de " +"órdenes.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l directorio Lugar del directorio que contiene los archivos a ser " +"insertados o extraídos.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf Usa el sufijo .suf para archivos fuentes en la orden insertar.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Opcion" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "requiere un argumento\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Opción no reconocida" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt retorno un código de caracter inesperado" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "Argumento no válido" + +#: src/exiv2.cpp:434 +msgid "Invalid regexp" +msgstr "regex no válida" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ignorando opción surplus" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "no es compatible con la opción previa\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Ignorando opción sobrante -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Error al analizar el argumento de la opción -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "La opción -a no es compatible con la opción previa\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Error de análisis" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "argumento de opción" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Modo de impresión desconocidoLa" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Ignorando la opción sobrante -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "La opción -p no es compatible con la opción previa\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Elemento de impresión deconocido" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Ignorando la opción sobrante -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "La opción -P no es compatible con la opción previa\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "La opción -d no es compatible con la opción previa\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "La opción -e no es compatible con la opción previa\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "La opción -i no es compatible con la opción previa\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "La acción de ajuste no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "La acción de impresión no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "La acción de borrado no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "La acción de extracción no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "La acción de inserción no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "La acción de renombrado no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "La acción de modificación no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "La acción fixiso no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "La acción fixcom no es compatible con las opciones dadas\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Se debe especificar una acción\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "El ajuste de la acción requiere al menos una opción -a, -Y, -O o -D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "La acción de modificar requiere al menos una opción -c, -m o -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Se requiere un archivo al menos\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Error al analizar los argumentos de la opción -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Error al analizar los argumentos de la opción -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" +"la opción -l solo puede ser usada con acciones de extracción o inserción\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "La opción -S solo puede ser usada con la acción de inserción\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "la opción -t solo puede ser usada con la acción de renombrado\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "La opción -T solo puede usarse con la acción de renombrado\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Desconocido " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "objetivo" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Número de vista previa inválido" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Fallo al abrir el archivo de órdenes para lectura\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "línea" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "Opción -M" + +#: src/exiv2.cpp:1180 +msgid "Invalid command line:" +msgstr "" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Orden inválida" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Clave no válida" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Línea de orden inválida" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Modo suave 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Modo suave 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "Modo duro 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "Modo duro 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Fluorescente (luz de día)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Fluorescente (blanco cálido)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Fluorescente (blanco frio)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Incandescente" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Ninguno (B/N)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Reducción de ojos rojos." + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Escena nocturna" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Programa AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Luz natural" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti falta de definición" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Puesta de sol" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Museo" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Fiesta" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Flor" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Texto" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Luz natural y flash" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Prioridad de apertura AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Prioridad de velocidad del obturador AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Sin flash y flash" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Cromo" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Amplio" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Estándard" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Retrato de estudio" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Retrato de estudio Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "En bruto" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Estándar (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Panorámico 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Panorámico 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Modo de simulación de película" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Versión" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Vversión Fujifilm Makernote" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Este número es único, y contiene la fecha de manufactura, pero no es el " +"mismo número que el impreso en el cuerpo de la cámara" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Configuración de calidad de imagen" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Color" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Configuración de saturación de croma" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Tono" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Configuración de modo de disparo del flash" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Fuerza del flash" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "Configuración de la compensación de potencia de disparo del flash" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Ajuste de modo de macro" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Configuración de modo de enfoque" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Sincronización lenta" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Configuración del modo de sincronización lento" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Modo de imagen" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Configuración del modo de imagen" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Disparo continuo o configuracion disparo multiple" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Número de secuencia" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Número de secuencia" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "Color FinePix" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Ajuste de color Fuji FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Aviso de falta de definición" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Estado de aviso de desenfoque" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Aviso de foco" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Estatus de aviso de enfoque automático" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Aviso de exposición" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Estaus de aviso de exposición automática" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Rango dinámico" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Rango dinámico" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Modo de película" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Modo de película" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Configuración de rango dinámico" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Configuración de rango dinámico" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Rango dinámico de desarrollo" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Rango dinámico de desarrollo" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Distancia focal mínima" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Distancia focal mínima" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Distancia focal máxima" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Distancia focal máxima" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Apertura máxima con el mínimo focal" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Apertura máxima con el mínimo focal" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Apertura máxima con el máximo focal" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Apertura máxima con el máximo focal" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Fuente de archivo" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Fuente de archivo" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Número de pedido" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Número de pedido" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Número de fotograma" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Número de fotograma" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Etiqueta FujiMakerNote desconocida" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Color natural" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Color vívido" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarización" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Natural" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "sRGB natural" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Natural + sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Anochecer" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Retrato nocturno" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Superfino" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Extrafino" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Versión de la nota del fabricante" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "Secuencia 'MLT0' (sin terminacion nula)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Configuración de cámara (Est.ant)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Configuración estándar de cámara (Antiguos modelos de cámara como D5, D7, " +"S304 y S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Configuración de cámara (Nuevo Est.)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" +"Configuración estándar de cámara (Modelos nuevos de cámara como D7u, D7i y " +"D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Configuración de cámara (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Configuración de cámara (para modelo Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Datos de estabilización de imagen" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Datos de estabilización de imagen" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Tamaño de imagen comprimida" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Tamaño de imagen comprimida" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "miniatura Jpeg 640x480 pixeles" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Posición de la miniatura" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Posición de la miniatura" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Longitud de la miniatura" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Tamaño de la miniatura" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Modo de escena" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Modo de color" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Modo de color" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Calidad de imagen" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Compensación de la exposición al flash" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Compensación de la exposición al flash en EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Modelo de teleconvertidor" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "Grabación RAW+JPG" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "Grabación de archivos RAW y JPG" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Zona coincidente" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Zona coincidente" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Temperatura de color" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID de la lente" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Identificador de lentes" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "Filtro de compensación de color" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" +"Filtro de compensación del color: el verde es negativo, el magenta es " +"positivo" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "Ajuste detallado de equilibrio de blancos" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "Valor de ajuste detallado de equilibrio de blancos" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Configuración de cámara (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Configuración de cámara (para modelo Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Impresión de mensajería instantánea" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "Información PrintIM" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Configuración de cámara (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Configuración de cámara (para modelos Z1, DImage X y F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Etiqueta Minolta MakerNote desconocida" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Prioridad de apertura" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Prioridad del obturador" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Flash de relleno" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Sincronización de flash trasero" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Inalámbrico" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Fluorescente 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Tamaño completo" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Super fino" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Extra fino" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Cuadro único" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "Temporizador" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Multiexposición (Bracketing)" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Intervalo" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS continuo" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS continuo" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Multisegmento" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Media ponderada centrada" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Magnificación electrónica" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Al principio" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Arriba - derecha" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Abajo - derecha" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Al final" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Abajo - izquierda" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Arriba - izquierda" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Duro" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "Suave" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Retrato nocturno" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Acción deportiva" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Tiempo transcurrido de la película" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Formulario estándar" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Formulario de datos" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Color natural" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Blanco y negro" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Color vívido" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Sin zona" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Zona central (orientación horizontal)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Zona central (orientación vertical)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Zona izquierda" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Zona derecha" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Enfoque automático" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Enfoque amplio (normal)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Enfoque puntual" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Exposición" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filtro" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "No incrustado" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Incrustado" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Texto + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Integración avanzada de distancia)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Pre-flash TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Control de flash manual" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Modo de exposición" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Modo flash" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Modo de controlador" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "Valor ISO" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Tiempo de exposición" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "Número F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "El número F." + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Modo de macro" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Compensación de la exposición" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Paso de ráfaga" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Paso de ráfaga" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Tamaño del intervalo" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Tamaño del intervalo" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Número de intervalo" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Número de intervalo" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Distancia de enfoque" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Distancia de enfoque" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "Con flash" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "Flash disparado" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Fecha Minolta" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Fecha Minolta" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Hora Minolta" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Hora Minolta" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Memoria de número de archivo" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Memoria de número de archivo" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Número de la última imagen" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Número de la última imagen" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Balance de colo rojo" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Balance de colo rojo" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Balance de colo verde" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Balance de colo verde" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Balance de colo azul" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Balance de colo azul" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Tema del programa" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Tema del programa" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Configuración ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Configuración ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Modelo Minolta" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Modelo Minolta" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Modo de intervalo" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Modo de intervalo" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Nombre de la carpeta" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Nombre de carpeta" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Modo de color" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Filtro de color" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Filtro de color" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Filtro de blanco y negro" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Filtro de blanco y negro" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Flash interno" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Brillo" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "Punto X de enfoque puntual" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "Punto X de enfoque puntual" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "Punto de enfoque Y" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "Punto de enfoque Y" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Zona de foco amplio" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Zona de foco amplio" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Modo de enfoque" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Ãrea de enfoque" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "Cambio de posición DEC" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "Cambio de posición DEC" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Perfil de color" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Perfil de color" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "Impresión de datos" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Medición del flash" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Medición del flash" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Etiqueta de configuración de cámara Minolta desconocida" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "Programa-desplazamiento A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "Programa-desplazamiento S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "AF un disparo" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "AF continuo" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "AF automático" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Natural)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Natural+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horizontal (normal)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Rotar 90 SH" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Rotar 270 SH" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Puntos AF" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Puntos AF" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Espacio de color" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Espacio de color" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "Eliminar las imágenes de la tarjeta de memoria" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "Eliminar las imágenes de la tarjeta de memoria" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Tonalidad" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Rotación" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Número de imagen" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Reducción de ruido" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "Coincidencia de zonas activada" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "Coincidencia de zonas activada" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Configuración de camara Minolta desconocida en etiqueta 7D" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "Cambio de programa A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "Cambio de programa S" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (Coincidencia de zonas alta)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80 (Coincidencia de zonas baja)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Central" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Arriba" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Arriba - derecha" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Abajo- derecha" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Abajo" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Abajo- izquierda" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Arriba - izquierda" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Selección" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Posición del foco" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Posición del foco" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Ãrea de enfoque" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Revisión de exposición" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "Revisión de exposición" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Ajuste manual de exposición" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Ajuste manual de exposición" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Modo AF" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Modo AF" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Configuración de etiqueta desconocida de la cámara 5d Minolta" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "Autodispàro (10 seg.)" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "Autodisparo (2 seg.)" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Balance de blancos ráfaga bajo" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "Balance de blancos ráfaga alto" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "Ráfaga de toma única bajo" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "Agrupamiento continuo bajo" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "Ráfaga de fotograma único alta" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "Agrupamiento continuo alto" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Avanzado" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "Ráfaga continua" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Preestablecer" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Temperatura de color/ Filtro de color" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Temperatura" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "Configuración" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "Aceptar" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "Error" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Imagen e información" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Solo imagen" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "Imagen e histograma" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "Flash de relleno" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "Mantener foco" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "Vista previa DOF" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Retener" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Conmutar" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "Mantener ubicación" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "Intercambio de ubicación" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Velocidad del obturador" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "Ambiente y flash" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "Solo ambiente" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0,3 segundos" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0,6 segundos" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Automático" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "Girar automáticamente" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Horizontal" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "Girar manualmente" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "Dentro del rango" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Fuera de rango" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "No indicado" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "Bajo la escala" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "AM" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "MF" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Integrado" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Muy baja" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "Queda suficiente energía" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "Configuración de la compensación de exposición" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "Configuración de la compensación de exposición" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "Sincronización de alta velocidad" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "Sincronización de alta velocidad" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "Tiempo de exposición manual" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "Tiempo de exposición manual" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "número F. manual" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "Modo de área AF" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "ModoFlash" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "Ajuste ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Hora del temporizador" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Hora del temporizador" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "Ráfaga continua" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "Ráfaga de fotograma único" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Balance de blancos de disparo múltiple" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "Ajuste del balance de blancos" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Balance de blanco preestablecido" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Balance de blanco preestablecido" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "Configuración de temperatura de color" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "Configuración de temperatura de color" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "Configuración de BN personalizada" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "Configuración de BN personalizada" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Tamaño de imagen Sony" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "Tiempo de reproducción instantáneo" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "Tiempo de reproducción instantáneo" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "Configuración de reproducción instantánea" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "Enfoque automático Eye-Start" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "AF de comienzo de ojo" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "Reducción de ojos rojos" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "Reducción de ojos rojos" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "Flash predeterminado" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "Flash predeterminado" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "Botón AEL" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "Botón AEL" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "Establecer el dial de control" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "Modo de compensación de exposición" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "Modo de compensación de exposición" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "Asistente AF" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "Bloqueo de disparador de lente" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "Bloqueo de disparador de lente" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "Iluminación del área AF" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "Iluminación del área AF" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "Mostrar grabación" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "Mostrar grabación" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "Mostrar reproducción" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "Encender pantalla" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "Indicador de exposición" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "Indicador de exposición" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "Indicador de exposición AEL" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" +"Indicador de medición fuera de escala (dos triángulos intermitentes cuando " +"se encuentre por debajo o por encima de la escala de medición)" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "Indicador de exposición de flash" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "Indicador de exposición de flash" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "Siguiente indicador de exposición de flash" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" +"Siguiente indicador de exposición de flash (indicador para el siguiente " +"disparo en ráfaga)" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" +"Último indicador de exposición de flash (indicador para el último disparo en " +"ráfaga)" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "Conmutador de modo de flash" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "Conmutador de modo de flash" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Tipo de flash" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Tipo de flash" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "Bloqueo de AE" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" +"Filtro de compensación de color: negativo es verde, positivo es magenta" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Nivel de la batería" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "Nivel de batería" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Etiqueta Sony desconocido" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Limpio" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Profundo" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Claro" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Vista nocturna" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "Hojas de otoño" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Local" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Arriba derecha" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Abajo derecha" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Abajo izquierda" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Arriba izquierda" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Lejos derecha" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Lejos izquierda" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "Auto avanzado" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "Nivel avanzado" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "Versión" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "Raw + JPEG" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "RAW comprimido" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "RAW comprimido + JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "Minolta AF 2x APO (D)" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO II" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Velocidad ISO usada" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Clave alta" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Clave baja" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "Extra alto" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Ãrea única" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Ãrea dinámica" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Ãrea dinámica, sujeto muy cercano" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Grupo dinámico" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Ãrea única (ancho)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Ãrea dinámica (ancha)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Superior- izquierda" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Superior-derecha" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Inferior-izquierda" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Inferior-derecha" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "más a la izquierda" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "más a la derecha" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "disparo, manual" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Disparo, externo" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "Disparo, modo comando" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Disparo, modo TTL" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Retardo" + +#: src/nikonmn.cpp:153 +msgid "PC Control" +msgstr "" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "Horquillado de exposición" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "ISO automática" + +#: src/nikonmn.cpp:157 +msgid "White-Balance Bracketing" +msgstr "" + +#: src/nikonmn.cpp:158 +msgid "IR Control" +msgstr "" + +#: src/nikonmn.cpp:159 +msgid "D-Lighting Bracketing" +msgstr "" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "Control PC" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Sucesión de exposiciones" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "Retraso LE-NR sin usar" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "Control IR" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Lanzamiento automatico" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "Lanzamiento manual" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "Con pérdida (tipo 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Descomprimido" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Sin pérdida" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "Con pérdida (tipo 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "B y N" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "Afinar" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Imagen pequeña" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "D-Iluminación" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Ojo rojo" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "Cianotipo" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "Luz natural" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "Tono caliente" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "Color personalizado" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "Solapamiento de imagen" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Mínimo" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Versión de la nota del fabricante Nikon" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "Velocidad ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Nitidez" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Configuración de la nitidez de la imagen" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Foco" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Configuración del flash" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Configuración del flash" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Selección ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Selección ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Volcado de datos" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Volcado de datos" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Ajuste de la imagen" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Configuración del ajuste de imagen" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Lentes auxiliares" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Lentes auxiliares (adaptador)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Distancia manual de foco" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Configuración de zoom digital" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "Posición de foco AF" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Información de posición de foco AF" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Etiqueta Nikon1MakerNote desconocida" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Auto foco continuo" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Autofocus único" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "No usado" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "estimación" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA Básico" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA Normal" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA Fino" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA Básico" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA Normal" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA Fino" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Brillo+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Brillo-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Contraste+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Contraste-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Velocidad de la luz" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Etiqueta Nikon2MakerNote desconocida" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Dispositivo de flash" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Dispositivo de flash" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Ajuste de balance de blancos" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Ajuste de balance de blancos" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "Niveles BN RB" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "Niveles BN RB" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "Cambio de programa" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "Cambio de programa" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Diferencia de exposición" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Diferencia de exposición" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Puntero a imagen de vista previa" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "Desplazamiento a un IFD conteniendo una vista previa" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Compensación de flash" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Ajuste de compensación de flash" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Límites de la imagen" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Límites de la imagen" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "Compensación de flash de la ráfaga" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Compensación de flash de la ráfaga" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Aplicada compensación de flash a la ráfaga" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Compensación de exposición de ráfaga" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "Aplicada compensación de auto exposición de ráfaga" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Procesamiento de imagen" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Procesamiento de imagen" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "Recorte a alta velocidad" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "Recorte de alta velocidad" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "Información VR" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "Información VR" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "Autenticación de imagen" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "Autenticación de imagen" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "Iluminación ActiveD" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "Iluminación ActiveD" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "Control de imagen" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " Control de imagen" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "Tiempo mundial" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "Tiempo mundial" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "Información ISO" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "Información ISO" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "Control de viñetas" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "Control de viñetas" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Compensación de tono" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Compensación de tono" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Modo de flash usado" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Modo de disparo" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Modo de disparo" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "Liberación automática de ráfaga" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "Liberación automática de bracket ráfaga" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "Lentes FStops" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "Curva de contraste" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Curva de contraste" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "Matíz de color" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "Matíz de color" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Modo de escena" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Fuente de luz" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Fuente de luz" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "Información de disparo" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Ajuste de tonalidad" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Ajuste de tonalidad" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "Compresión NEF" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "Compresión NEF" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Tabla de linealización" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Tabla de linealización" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Balance de color" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Balance de color" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Datos de lentes" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Configuración de datos de lentes" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "Centro de imagen en crudo" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "Centro de imagen en crudo" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Tamaño de pixel del sensor" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Tamaño de píxel del sensor" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "Asistencia de escena" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "Asistente de escena" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "Historial de retoques" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "Historial de retoques" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Número de serie" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Número de serie de la cámara, normalmente empieza con «NO= »" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Tamaño de datos de imagen" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Tamaño de datos de imagen" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Recuento de imágenes" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Recuento de imágenes" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "Contador de imágenes eliminadas" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Contador de imágenes eliminadas" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Contador de disparos" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Número de disparos realizados por la cámara" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Información de flash" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Optimización de imagen" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Optimización de imagen" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "Variación de programa" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Variación de programa" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "Respuesta AF" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "Respuesta AF" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "Multiexposición" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Reducción de ruido para ISO altos" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "Efecto de matiz" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "Información de AF 2" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "Información de archivo" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "Ajuste AF" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Datos de captura" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Datos de captura" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "Versión de captura" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "Versión de captura" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "Compensaciones de captura" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "Desplazamientos de captura" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "Explorar IFD" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "Perfil de ICC" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "Capturar salida" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Etiqueta Nikon3MakerNote desconocida" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "No" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Si" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "Y/M/D" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "M/D/A" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "D/M/A" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "Reducción de vibración" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Reducción de vibraciones" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Etiqueta de reducción de vibración Nikon desconocida" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Configuración predeterminada" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Ajuste rápido" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Control total" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "Azul-verde" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "Morado-azul" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "Rojo púrpura" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Nombre" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "Base" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Ajustar" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Ajuste rápido" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Efecto de filtro" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "Saturación de tonificación" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "Saturación de tonificación" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "Etiqueta de control de imagen Nikon desconocida" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "Ajuste fino AF" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "Ajuste fino AF" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "Ãndice de ajuste fino AF" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "Ãndice de ajuste fino AF" + +#: src/nikonmn.cpp:732 +msgid "AF Fine Tune Adjustment" +msgstr "Puesta a punto del ajuste fino AF" + +#: src/nikonmn.cpp:732 +msgid "AF fine tune adjustment" +msgstr "Puesta a punto del ajuste fino AF" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Etiquetado de ajuste fino de NIkon AF erróneo" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "Zona horaria" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "Ahorro de energía en horarios diurnos" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "Ahorros de energía en horarios diurnos" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Formato de fecha" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Formato de fecha" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "Etiqueta de tiempo mundial Nikon desconocida" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Al 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Al 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Al 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Al 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Al 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Al 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Al 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Al 2.0" + +#: src/nikonmn.cpp:767 +msgid "Hi 2.3" +msgstr "" + +#: src/nikonmn.cpp:768 +msgid "Hi 2.5" +msgstr "" + +#: src/nikonmn.cpp:769 +msgid "Hi 2.7" +msgstr "" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Ba 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Ba 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Ba 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Ba 1.0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "Expansión ISO" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "Expansión ISO" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "Expansión ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "Expansión ISO 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "Etiqueta de información ISO de Nikon desconocida" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "Ãrea única" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "Ãrea dinámica" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "Ãrea dinámica, objeto cercano" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "Grupo dinámico" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "Superficie simple (ancho)" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "Ãrea dinámica (ancho)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Medio-izquierda" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Centro-derecha" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "Lejos a la izquierda" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "Lejos a la derecha" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "Modo de área AF" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "Punto AF" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "Puntos de AF en foco" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "Puntos de AF en foco" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Etiqueta de auto foco Nikon desonocida" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +msgid "On (39-point)" +msgstr "" + +#: src/nikonmn.cpp:856 +msgid "On (73-point)" +msgstr "" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +msgid "On (105-point)" +msgstr "" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "Punto de AF primario" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "Punto de AF primario" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "Anchura de imagen AF" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "Anchura de imagen AF" + +#: src/nikonmn.cpp:870 +msgid "AF Image Height" +msgstr "Altura de imagen AF" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "Altura de imagen AF" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "Posición X del área AF" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "Posición x del área AF" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "Posición Y del área AF" + +#: src/nikonmn.cpp:872 +msgid "AF area y position" +msgstr "Posición y del área AF" + +#: src/nikonmn.cpp:873 +msgid "AF Area Width" +msgstr "Anchura del área AF" + +#: src/nikonmn.cpp:873 +msgid "AF area width" +msgstr "Anchura del área AF" + +#: src/nikonmn.cpp:874 +msgid "AF Area Height" +msgstr "Altura del área AF" + +#: src/nikonmn.cpp:874 +msgid "AF area height" +msgstr "Altura del aÅ•ea AF" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "" + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Etiqueta Nikon desconocido" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "Número de directorio" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "Número de directorio" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "Etiqueta Nikon desconocido" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Exposición múltiple" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Modo de multi-exposición" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Modo de multi-exposición" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "Disparos de multi-exposición" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "Disparos de multi-exposición" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "Ganancia automática de multi-exposición" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "ganancia automática de multi-exposición" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Etiqueta Nikon desconocido" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Interno" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "1.01 (SB-800 o Metz 58 AF-1)" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Apertura automática" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "GN (prioridad de distancia)" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "Repetir flash" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "Ãmbar" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "Fuente de flash" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "Fuente de flash" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "Firmware de flash externo" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "Distancia de flash GN" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "Distancia de flash GN" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "Filtro de color de flash" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "Filtro de color de flash" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Contador de disparos" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Etiqueta Nikon Shot Info D80 desconocida" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "Nivel de flash" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "Nivel de flash" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Etiqueta Nikon Shot Info D40 desconocida" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "Ajuste fino de AF" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "Ajuste fino de AF" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Etiqueta Nikon Shot Info D300 (a) desconocida" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Etiqueta Nikon Shot Info D300 (b) desconocida" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "Encendido (3)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "Recuento de disparos 1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "Recuento de disparos 2" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "Reducción de vibración 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "Reducción de vibración 1" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "Recuento de disparos 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "Recuento de disparos 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "Reducción de vibraciones 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "Reducción de vibraciones 2" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "Etiqueta de información de disparo Nikon desconocida" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "Niveles BN RBGG" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "Niveles BN RBGG" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Etiqueta Nikon de balance de color 1 desconocida" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "Niveles BN RGGB" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "Niveles BN RGGB" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Etiqueta Nikon de balance de color 2 desconocida" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Etiqueta Nikon de balance de color 2a desconocida" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Etiqueta Nikon de balance de color 2b desconocida" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "Niveles BN RGBG" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "Niveles BN RGBG" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Etiqueta Nikon de balance de color 3 desconocida" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "Niveles BN GRBG" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "Niveles BN GRBG" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Etiqueta Nikon de balance de color 4 desconocida" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "Número de Id de la lente" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "Número de ID de la lente" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "Lentes F-Stops" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "Lentes F-Stops" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Mín. distancia focal" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Mín. distancia focal" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Máx. distancia focal" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Máx. distancia focal" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Máx. apertura a mín. foco" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Máx. apertura a mín. foco" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Máx. apertura a máx. foco" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Máx. apertura a máx. foco" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "Versión MCU" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "Versión MCU" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Etiqueta Nikon de datos de lente 1 desconocida" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "Posición de la pupila de salida" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "Posición de la pupila de salida" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "Apertura de AF" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "Apertura de AF" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "Apertura máxima efectiva" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "Apertura máxima efectiva" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Etiqueta Nikon de datos de lente 2 desconocida" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "Apertura máxima en mínima distancia focal" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "Apertura máxima en máxima distancia focal" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Etiqueta Nikon de datos de lente 3 desconocida" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Tema más cercano" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "Grupo dinámico-AF" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "ninguno(a)" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "usado" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "Todos los puntos 11" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Fotograma único" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Calidad estándar (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Calidad alta (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Super alta calidad (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "Activado (Preestablecido)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Deporte" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Paisaje+Retrato" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Autoretrato" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 en 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Noche+Retrato" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Alimento" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Documentos" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "Disparar y seleccionar" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Playa y nieve" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "Autoretrato+temporizador" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Vela" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "Luz disponible" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Detrás del cristal" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "Mi modo" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Mascota" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "Submarino ancho1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "Macro submarino" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "Disparar y seleccionar 1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "Disparar y seleccionar 2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Estabilización de imagen digital" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "Subasta" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Submarino ancho 2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Niños" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "Macro natural" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "Instantánea submarina" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "Guía de disparo" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Interno + Externo" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Entrelazado" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progresivo" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Miniatura de imagen" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Miniatura de imagen" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Versión del firmware del cuerpo" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Versión del firmware del cuerpo" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Modo especial" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Modo de toma de imagen" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Modo blanco y negro" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Modo blanco y negro" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Diagonal del plano focal" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Diagonal del plano focal" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Parámetros de distorsión de las lentes" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Parámetros de distorsión de lentes" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Tipo de cámara" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Tipo de cámara" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Formato ASCII de datos como [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID de la Cámara" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Datos de ID de cámara" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Software" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Vista previa de imagen" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Vista previa de imagen" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "Cuadros de captura previa" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "Marcos de precaptura" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "BN un toque" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Balance de blancos automático" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Horquillado de balance de blancos" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Horquillado de balance de blancos" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmware" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Volcado de datos 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Configuración 1 de cámara" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Volcado de datos 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Configuración 2 de cámara" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Velocidad del obturador" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "Valor de velocidad ISO" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Valor de apertura" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Valor de brillo" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Ráfaga de imágenes variando parámetros de exposición" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Valor de compensación de exposición" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Sensor de temperatura" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Sensor de temperatura" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Temperatura de la lente" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Temperatura de la lente" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Zoom" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "Recuento de pasos del zoom" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Macro foco" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "Cuenta de pasos de enfoque macro" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Factor de nitidez" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Factor de nitidez" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Nivel de carga de flash" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Nivel de carga de flash" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matriz de color" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matriz de color" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Nivel de negro" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Nivel de negro" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Modo de balance de blancos" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Balance de rojos" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Balance de rojos" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Balance de azules" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Balance de azules" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Matriz de color 2" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Número de serie 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Número de serie 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Compensación de la exposición al flash" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Límite del flash externo" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Límite del flash externo" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Zoom del flash externo" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Zoom del flash externo" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Modo de flash externo" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Modo de flash externo" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Control de color" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Control de color" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "BitsVálidos" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "CoringFilter" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "Filtro Coring" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Tasa de compresión" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Tasa de compresión" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Vista previa de imagen embebida" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Posición de la imagen previa" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Tamaño de la previsualización de la imagen" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Modo de exploración CCD" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "Modo de exploración CCD" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Paso de lente infinito" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Paso de lente infinito" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Paso de lente cercano" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Paso de lente cercano" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Información de equipamiento" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "Equipo sub-IFD de la cámara" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "Configuración de cámara sub-IFD" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Desarrollo raw" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "Desarrollo Sub-IFD sin crompresión" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "Desarrollo Raw 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "Desarrollo Sub-IFD 2 sin crompresión" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Procesamiento de imágenes sub-IFD" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Información de foco" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "Foco sub-IFD" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Información raw" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "Sub-IFD crudo" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Etiqueta OlympusMakerNote tag desconocida" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Cambio de programa" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Promedio ponderado en el centro" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "Patrón+AF" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "Control de Spot+Énfasis" + +#: src/olympusmn.cpp:496 +msgid "Spot+Shadow control" +msgstr "Control de Spot+Sombra" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "AF sencillo" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "Disparo AF secuencial" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "AF multi" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "AF No usado" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "AF Usado" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "No preparado" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Preparado" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "Rellenar" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "Sincronización lenta" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "Forzado" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "2ª cortina" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500K (Buen tiempo con sombra)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (Nublado)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (Lluvia fina)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (Bombilla incandescente)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (Luz tipo tungsteno light-like)" + +#: src/olympusmn.cpp:572 +msgid "Auto Setup" +msgstr "" + +#: src/olympusmn.cpp:573 +msgid "5500K (Flash)" +msgstr "5500K (Flash)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (Fluorescente día)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (Fluorescente blanco neutro)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (Fluorescente blanco frio)" + +#: src/olympusmn.cpp:577 +msgid "White Fluorescent" +msgstr "Fluorescente blanco" + +#: src/olympusmn.cpp:580 +msgid "One Touch WB 1" +msgstr "" + +#: src/olympusmn.cpp:581 +msgid "One Touch WB 2" +msgstr "" + +#: src/olympusmn.cpp:582 +msgid "One Touch WB 3" +msgstr "" + +#: src/olympusmn.cpp:583 +msgid "One Touch WB 4" +msgstr "" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "Personalizado WB 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "Personalizado WB 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "Personalizado WB 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "Personalizado WB 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (Rojo mejorado)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (Verde mejorado)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (Azul mejorado)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (Tonos de piel)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "Pro Photo RGB" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Filtro de ruido" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "Filtro de ruido (ISO Boost)" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Mudo" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "Monotono" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "Activado, modo 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "Activado, modo 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "Activado, modo 3" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Versión de la configuración de la cámara" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Versión de la configuración de la cámara" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Vista previa válida" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Vista previa válida" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "Inicio de vista previa" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "Inicio de vista previa" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Tamaño de vista previa" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Longitud de la imagen previa" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Bloqueo de exposición automática" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Proceso de foco" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Proceso de foco" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "Búsqueda de AF" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "Búsqueda AF" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Ãreas AF" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Ãreas de AF" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Balance de blancos 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Balance de blancos 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Temperatura de balance de blancos" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Temperatura de balance de blancos" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Saturación personalizada" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Saturación personalizada" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Saturación modificada" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Saturación modificada" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Configuración de Contraste" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Configuración de nitidez" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Corrección de distorsión" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Corrección de distorsión" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Compensación de sombra" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Compensación de sombra" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Factor de compresión" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Factor de compresión" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Graduación" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Modo de imagen" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Modo de saturación de imagen" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Modo de saturación de imagen" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Modo de saturación de tono" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Modo de tono de imagen" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Modo de saturación de contraste" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Modo de contraste de imagen" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Modo de agudeza de imagen" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Modo de agudeza de imagen" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Modo de filtro de blanco y negro de imagen" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Modo de filtro de blanco y negro de imagen" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Modo de tono de imagen" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Modo de tono de imagen" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Filtro de ruido" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Modo panorama" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Modo panorama" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Calidad de imagen 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Calidad de imagen 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "Presión de manómetro" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Presión de manómetro" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Lectura de manómetro" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Lectura de manómetro" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Detección BN extendida" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Detección BN extendida" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "Indicador de nivel de inclinación lateral" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "Indicador de nivel de inclinación lateral" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "Indicador de nivel de inclinación frontal" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "Indicador de nivel de inclinación frontal" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "Etiqueta OlympusCs desconocida" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "E-System simple" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "E-System" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "Versión de equipamiento" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "Versión de equipamiento" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Número de serie" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Número de serie de la lente" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Número de serie de la lente" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Versión del firmware de las lentes" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Versión del firmware de las lentes" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Máx. apertura con el foco actual" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Máx. apertura con el foco actual" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Propiedades de las lentes" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Propiedades de las lentes" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Extensor" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Número de serie extendido" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Número de serie extendido" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Modelo extendido" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Modelo extendido" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Versión de firmware extendida" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Versión de firmware extendida" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Objetivo de conversión" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Objetivo de conversión" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Modelo de flash" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Modelo de flash" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Versión del firmware de flash" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Versión del firmware de flash" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "NúmerodeSeriedeFlash" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Etiqueta OlympusEq desconocida" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Alta velocidad" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "Función superior" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "Alta velocidad avanzada" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "Función superior avanzada" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Original" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Editado (Paisaje)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Editado (Retrato)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "Temperatura de color BN" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "Punto gris BN" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "Versión de desarrollo en bruto" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "Versión de desarrollo en bruto" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Valor de la compensación de exposición" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Valor de la compensación de exposición" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Valor de balance de blancos" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Valor de balance de blancos" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "Ajuste fino BN" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "Ajuste fino BN" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "Punto de gris" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "Punto de gris" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Énfasis de saturación" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Énfasis de saturación" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "Énfasis de color de memoria" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "Énfasis de color de memoria" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Valor de contraste" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Valor de contraste" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "valor de agudeza" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Valor de agudeza" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Motor" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Editar estado" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Configuración" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Etiqueta OlympusRd desconocida" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "Desarrollo raw versión 2" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "Desarrollo raw versión 2" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Ajuste de balance fino de blancos" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "Saturación PM" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "Contraste PM" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "Agudeza PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "Filtro de BN PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "Filtro BN PM" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "Tono de imagen PM" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "Tono de imagen PM" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "Autograduación" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "Graduación automática" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "Filtro de ruido PM" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "Filtro de ruido modo imagen" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Etiqueta OlympusRd2 desconocida" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "Versión de proceso de imagen" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "Versión de proceso de imagen" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "BN RB niveles 3000K" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "BN RB niveles 3000K" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "BN RB niveles 3300K" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "BN RB niveles 3300K" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "BN RB niveles 3600K" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "BN RB niveles 3600K" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "BN RB niveles 3900K" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "BN RB niveles 3900K" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "BN RB niveles 4000K" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "BN RB niveles 4000K" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "BN RB niveles 4300K" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "BN RB niveles 4300K" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "BN RB niveles 4500K" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "BN RB niveles 4500K" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "BN RB niveles 4800K" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "BN RB niveles 4800K" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "BN RB niveles 5300K" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "BN RB niveles 5300K" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "BN RB niveles 6000K" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "BN RB niveles 6000K" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "BN RB niveles 6600K" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "BN RB niveles 6600K" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "BN RB niveles 7500K" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "BN RB niveles 7500K" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "BN RB Niveles CWB1" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "BN RB niveles CWB1" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "BN RB Niveles CWB2" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "BN RB niveles CWB2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "BN RB niveles CWB3" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "BN RB niveles CWB3" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "BN RB niveles CWB4" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "BN RB niveles CWB4" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "Nivel BN G 3000K" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "Nivel BN G 3000K" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "Nivel BN G 3300K" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "Nivel BN G 3300K" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "Nivel BN G 3600K" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "Nivel BN G 3600K" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "Nivel BN G 3900K" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "Nivel BN G 3900K" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "Nivel BN G 4000K" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "Nivel BN G 4000K" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "Nivel BN G 4300K" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "Nivel BN G 4300K" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "Nivel BN G 4500K" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "Nivel BN G 4500K" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "Nivel BN G 4800K" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "Nivel BN G 4800K" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "Nivel BN G 5300K" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "Nivel BN G 5300K" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "Nivel BN G 6000K" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "Nivel BN G 6000K" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "Nivel BN G 6600K" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "Nivel BN G 6600K" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "Nivel BN G 7500K" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "Nivel BN G 7500K" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "Nivel BN G" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "Nivel BN G" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "Mejorador" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Valores del mejorador" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "Valores del mejorador" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "Filtro coring" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring Values" +msgstr "Valores coring" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring values" +msgstr "Valores coring" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Nivel de negro" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Base de ganancia" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Base de ganancia" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Recortar por la izquierda" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Recorte a la izquierda" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Recorte superior" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Recorte superior" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Recorte de anchura" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Recorte de anchura" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Recortar altura" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Recortar altura" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "Ratio de aspecto" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "Ratio de aspecto" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "Marco de aspecto" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "Marco de aspecto" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "Detección de la cara" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "Detección de la cara" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "Ãrea de detección de la cara" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "Ãrea de detección de la cara" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Etiqueta OlympusIp desconocida" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "Rebote o desactivar" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "Directo" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Versión de información de foco" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Versión de información de foco" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Enfoque automático" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "Detección de escena" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "Detección de escena" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Ãrea de escena" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Ãrea de escena" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Datos de detección de escena" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Datos de detección de escena" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Recuento de pasos del zoom" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Recuento de pasos del enfoque" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Recuento de pasos del enfoque" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Paso de foco infinito" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Paso de foco infinito" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Paso de foco cercano" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Paso de foco cercano" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Flash externo" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Número de guía de flash externo" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Número de guía de flash externo" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Flash manual" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Flash manual" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Etiqueta OlympusFi desconocida" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "Etiqueta OlympusFe desconocida" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "Buen tiempo" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "Tungsteno (incandescente)" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "Luz nocturna" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Fluorescente día (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Fluorescente de día blanco (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Fluorescente blanco frio (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Fluorescente blanco (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Balance de blancos automático" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "Personalizado 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "Versión de información en bruto" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "Versión de información en bruto" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "Niveles BN_RB usados" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "Niveles BN_RB usados" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "Niveles BN_RB auto" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "Niveles BN_RB auto" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "Niveles BN_RB sombra" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "Niveles BN_RB sombra" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "Niveles BN_RB nublado" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "Niveles BN_RB nublado" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "Niveles BN_RB buen tiempo" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "Niveles BN_RB buen tiempo" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "Niveles BN_RB tungsteno" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "Niveles BN_RB tungsteno" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "Niveles de luz solar WB_RB" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "Niveles de luz solar WB_RB" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "Niveles BN_RB luz día fluor" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "Niveles BN_RB luz día fluor" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "Niveles BN_RB día fluor blanco" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "Niveles BN_RB día fluor blanco" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "Niveles BN_RB fluorescente blanco frío" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "Niveles BN_RB fluorescente blanco frío" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "Niveles BN_RB fluorescente blanco" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "Niveles BN_RB blanco fluorescente" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Color Matriz2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Matriz de color 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Nivel de negro 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Nivel de negro 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "Coeficientes YCbCr" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "Coeficientes YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "Profundidad de píxel válida" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "Profundidad de píxel válida" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Compensación de balance de blancos" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Compensación de balance de blancos" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "Configuración de saturación" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "Configuración de tono" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "Configuración de tono" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "Compensación de exposición CM" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "Compensación de exposición CM" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "Balance de blancos CM" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "Balance de blancos CM" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "Compensación de balance de blancos CM" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "Compensación de balance de blancos CM" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "Punto gris de balance de blancos CM" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "Punto gris de balance de blancos CM" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "Saturación CM" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "Saturación CM" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "Tono CM" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "Tono CM" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "Contraste CM" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "Contraste CM" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "Agudeza CM" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "Agudeza CM" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "Etiqueta OlympusRi desconocida" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Seleccionado por el usuario" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Auto-Reemplazar" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Rápido" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "Un-toque" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "Enfoque automático Imager" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "Agujero del pasador" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +msgid "Soft Focus 2" +msgstr "" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +msgid "Watercolor" +msgstr "" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +msgid "Miniature" +msgstr "" + +#: src/olympusmn.cpp:1526 +msgid "Reflection" +msgstr "" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +msgid "Cross Process II" +msgstr "" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +msgid "Watercolor I" +msgstr "" + +#: src/olympusmn.cpp:1531 +msgid "Watercolor II" +msgstr "" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +msgid "Partial Color" +msgstr "" + +#: src/olympusmn.cpp:1537 +msgid "Partial Color II" +msgstr "" + +#: src/olympusmn.cpp:1538 +msgid "Partial Color III" +msgstr "" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Muy alta" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Imagen en movimiento" + +#: src/panasonicmn.cpp:61 +msgid "Full HD Movie" +msgstr "" + +#: src/panasonicmn.cpp:62 +msgid "4k Movie" +msgstr "Película 4k" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halógeno" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "Botón de autofoco" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "Auto, continuo" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "Balanceo" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Tele-macro" + +#: src/panasonicmn.cpp:104 +msgid "Macro-zoom" +msgstr "" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Escena" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Prioridad de velocidad de disparo" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "Vista previa de película" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "Simple" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "Efectos de color" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Pasaje nocturna" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "Bebé" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "Piel suave" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Luz de vela" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Noche estrellada" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "Alta sensibilidad" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Asistente de panorama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "Foto aérea" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "ISO inteligente" + +#: src/panasonicmn.cpp:144 +msgid "Clipboard" +msgstr "" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "Disparador continuo de alta velocidad" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "Auto inteligente" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "" + +#: src/panasonicmn.cpp:149 +msgid "Flash Burst" +msgstr "" + +#: src/panasonicmn.cpp:151 +msgid "Film Grain" +msgstr "" + +#: src/panasonicmn.cpp:152 +msgid "My Color" +msgstr "Mi color" + +#: src/panasonicmn.cpp:153 +msgid "Photo Frame" +msgstr "" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +msgid "Handheld Night Shot" +msgstr "" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +msgid "Creative Control" +msgstr "" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Filtro digital" + +#: src/panasonicmn.cpp:162 +msgid "Clear Portrait" +msgstr "" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +msgid "Relaxing Tone" +msgstr "" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +msgid "Distinct Scenery" +msgstr "" + +#: src/panasonicmn.cpp:169 +msgid "Bright Blue Sky" +msgstr "" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +msgid "Glittering Illuminations" +msgstr "" + +#: src/panasonicmn.cpp:178 +msgid "Clear Night Portrait" +msgstr "" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Cálido" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Frío" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Calidad alta/baja" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "Infinito" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "Medio bajo" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "Medio alto" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "Bajo (-1)" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "Alto (+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Menor (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "Mayor (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +msgid "Disabled but Required" +msgstr "" + +#: src/panasonicmn.cpp:255 +msgid "Disabled and Not Required" +msgstr "" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "Óptica EX" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Telefoto" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "Página de inicio" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Estándar (color)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "Dinámico (color)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Natural (color)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "Suave (color)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Estándar (B y N)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "Dinámico (B y N)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "Suave (B y N)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Vibrante" + +#: src/panasonicmn.cpp:307 +msgid "No Bracket" +msgstr "" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +msgid "1st" +msgstr "" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +msgid "Extended" +msgstr "" + +#: src/panasonicmn.cpp:368 +msgid "NoAuto" +msgstr "" + +#: src/panasonicmn.cpp:369 +msgid "Standard or Custom" +msgstr "Estándar o personalizado" + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +# ### ? +#: src/panasonicmn.cpp:396 +msgid "Left to Right" +msgstr "De izquierda a derecha" + +#: src/panasonicmn.cpp:397 +msgid "Right to Left" +msgstr "de derecha a izquiera" + +#: src/panasonicmn.cpp:398 +msgid "Top to Bottom" +msgstr "de arriba a abajo" + +#: src/panasonicmn.cpp:399 +msgid "Bottom to Top" +msgstr "de abajo a arriba" + +#: src/panasonicmn.cpp:405 +msgid "Time Lapse" +msgstr "" + +#: src/panasonicmn.cpp:406 +msgid "Stop-Motion Animation" +msgstr "" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +msgid "Electronic" +msgstr "" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Audio" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Ajuste de balance de blancos" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Ajuste de flash" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Versión Exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Efecto de color" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Efecto de color" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"Tiempo, en 1/100 de segundo, desde que la cámara fue encendida hasta que la " +"imagen es grabada en la tarjeta de memoria" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Modo ráfaga" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Modo ráfaga" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Reducción de ruido" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Disparo automático" + +#: src/panasonicmn.cpp:467 +msgid "AF Assist Lamp" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "Edad 19" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "Modo de zoom óptico" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "Modo de zoom óptico" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "Día de viaje" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "Día de viaje" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Localización de tiempo mundial" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Localización de tiempo mundial" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "Programa ISO" + +#: src/panasonicmn.cpp:477 +msgid "Advanced Scene Type" +msgstr "Tipo de escena avanzado" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "" + +#: src/panasonicmn.cpp:479 +msgid "Faces detected" +msgstr "Caras detectadas" + +#: src/panasonicmn.cpp:483 +msgid "Color Temp Kelvin" +msgstr "" + +#: src/panasonicmn.cpp:483 +msgid "Color Temperatur in Kelvin" +msgstr "" + +#: src/panasonicmn.cpp:484 +msgid "Bracket Settings" +msgstr "" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "Ajuste AB de balance de blancos" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" +"Balance de blancos AB. Un valor positivo representa un desplazamiento hacia " +"el azul" + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "Ajuste GM de balance de blancos" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "WBAdjustGM. Positivo es un cambio hacia verde." + +#: src/panasonicmn.cpp:487 +msgid "Flash Curtain" +msgstr "" + +#: src/panasonicmn.cpp:488 +msgid "Long Shutter Noise Reduction" +msgstr "" + +#: src/panasonicmn.cpp:491 +msgid "AF Point Position" +msgstr "" + +#: src/panasonicmn.cpp:492 +msgid "Face detection info" +msgstr "" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "Tipo de accesorio" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "Tipo de accesorio" + +#: src/panasonicmn.cpp:496 +msgid "Accessory Serial Number" +msgstr "" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +msgid "Intelligent Exposure" +msgstr "" + +#: src/panasonicmn.cpp:499 +msgid "Firmware Version of the Lens" +msgstr "Versión del Firmware del lente" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Información de la reducción de la vibración" + +#: src/panasonicmn.cpp:501 +msgid "Flash Warning" +msgstr "" + +#: src/panasonicmn.cpp:501 +msgid "Flash warning" +msgstr "" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Título" + +#: src/panasonicmn.cpp:503 +msgid "Baby Name" +msgstr "" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Ubicación" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Estado" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed" +msgstr "" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +msgid "Intelligent Dynamic Range" +msgstr "" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "" + +#: src/panasonicmn.cpp:513 +msgid "City2" +msgstr "Ciudad2" + +#: src/panasonicmn.cpp:515 +msgid "Photo style" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +msgid "Camera Orientation" +msgstr "Orientación de la cámara" + +#: src/panasonicmn.cpp:521 +msgid "Roll Angle" +msgstr "" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +msgid "Sweep Panorama Direction" +msgstr "" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +msgid "Timer Recording" +msgstr "" + +#: src/panasonicmn.cpp:526 +msgid "Internal ND Filter" +msgstr "" + +#: src/panasonicmn.cpp:528 +msgid "Shutter Type" +msgstr "" + +#: src/panasonicmn.cpp:529 +msgid "Clear Retouch Value" +msgstr "" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "Versión de la nota del fabricante" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "Versión de la nota del fabricante" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "Nivel de rojo BN" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "Nivel de rojo BN" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "Nivel de verde BN" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "Nivel de verde BN" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "Nivel de azul BN" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "Nivel de azul BN" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Etiqueta PanasonicMakerNote desconocida" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "Modo de punto activado o 3-area (alta velocidad)" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "Enfocado tipo punto" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "área-5" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "área-1" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "1-área (alta velocidad)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "área-3 (auto)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "3-área (izquierda)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "3-área (centro)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "3-área (derecha)" + +#: src/panasonicmn.cpp:574 +msgid "Spot Focusing 2" +msgstr "" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +msgid "not set" +msgstr "no establecido" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "Versión en bruto Panasonic" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Anchura de sensor" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Anchura de sensor" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Altura de sensor" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Altura de sensor" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Borde superior del sensor" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Borde superior del sensor" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Borde izquierdo del sensor" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Borde izquierdo del sensor" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Balance de rojos (encontrado en imágenes Digilux 2 RAW)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Fabricante" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "El fabricante del equipamiento de grabación" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Modelo" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "El nombre o número del modelo del equipamiento" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "Desplazamiento de tira" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "Desplazamiento de tiras" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientación" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "Filas por tira" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "Número de filas por tira" + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "Tira de cuenta de bytes" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "Tira de cuenta de bytes" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "Desplazamiento de datos en bruto" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "Desplazamiento de datos en bruto" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Puntero Exif IFD" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "Un puntero para el IFD de Exif" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "Puntero de información IFD del GPS" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "Un puntero de información IFD del GPS" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Etiqueta PanasonicRaw desconocida" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Escena nocturna" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Buena" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Mejor" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "El mejor" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 o 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 o 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 o 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Automático, no disparó" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +msgid "Off, Did not fire" +msgstr "Apagado, no disparó" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Automático,no disparó, modo de reducción de ojos rojos." + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Automático, disparó" + +#: src/pentaxmn.cpp:253 +msgid "On, Fired" +msgstr "Activado, disparó" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Automático. Disparado. Modo de reducción de ojos rojos." + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Activado, reducción de ojos rojos." + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Activado, suave" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Activada, sincronización lenta" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Activado, sincronización lenta, reducción de ojos rojos." + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "Sincronizacion de paneles traseros, encendidos" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Enfoque panorámico" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "AF-A" + +#: src/pentaxmn.cpp:276 +msgid "Contrast-detect" +msgstr "" + +#: src/pentaxmn.cpp:277 +msgid "Tracking Contrast-detect" +msgstr "" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Fijado al centro" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +msgid "AF Select" +msgstr "" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Arriba centro" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Abajo centro" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Multisegmento" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Centrado en el medio" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "Fluorescente luz de día" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "Fluorescente luz de día" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "FluorescenteBlanco" + +#: src/pentaxmn.cpp:420 +msgid "Color Temperature Enhancement" +msgstr "" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Seleccionado por el usuario" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto (Luzdía)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Auto (Sombra)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (Flash)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (Tungsteno)" + +#: src/pentaxmn.cpp:432 +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (FlourescenteLuzdía)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (FlourescenteblancoDía)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (FlourescenteBlanco)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (Nublado)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Preset (¿Fuegosartificiales?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Medio bajo" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Medio alto" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Medi suave" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "medio duro" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Muy suave" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Muy difícil" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Centro de ciudad" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulú" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Francisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Ãngeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Ciudad de México" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "Nueva York" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracas" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Río de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Londres" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "París" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Milán" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Roma" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlín" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburgo" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Estambúl" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "El Cairo" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jerusalén" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moscú" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Teherán" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubai" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Karachi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Masculino" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Katmandú" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Yangon" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientiane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapur" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Yakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Pekín" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Shanghai" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Taipei" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seúl" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaida" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokyo" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Noumea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Argel" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Atenas" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Estocolmo" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lisboa" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Copenague" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "No procesado" + +#: src/pentaxmn.cpp:570 +msgid "Resized" +msgstr "" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Recortado" + +#: src/pentaxmn.cpp:573 +msgid "Digital Filter 6" +msgstr "" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "¿Síntesis de marco?" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Programa de alta velocidad" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Programa DOF" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "Programa MTF" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Retrato de escena nocturna" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Sin flash" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surf y Nieve" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Niños" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "" + +#: src/pentaxmn.cpp:602 +msgid "Blue Sky" +msgstr "" + +#: src/pentaxmn.cpp:604 +msgid "Night Scene HDR" +msgstr "HDR sscena nocturna" + +#: src/pentaxmn.cpp:606 +msgid "Quick Macro" +msgstr "" + +#: src/pentaxmn.cpp:607 +msgid "Forest" +msgstr "" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (Estándar)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (Retrato)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (Paisaje)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (Macro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (Deporte)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Modo verde" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Prioridad de velocidad de disparo" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Prioridad de apertura" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Bulbo" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Cambio de programa TV" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Cambio de programa AV" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Prioridad de apertura (apertura automática apagada)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manual (Apertura automática apagada)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Bombilla (Apagado automático de apertura)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Prioridad de disparo" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Prioridad y prioridad de apertura AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Prioridad y prioridad de apertura AE (1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "Prioridad de sensibilidad AE" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "Prioridad de sensibilidad AE (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "Velocidad AE Flash X-Sync" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "Velocidad AE Flash X-Sync" + +#: src/pentaxmn.cpp:646 +msgid "Auto Program (Normal)" +msgstr "" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +msgid "Auto Program (DOF)" +msgstr "" + +#: src/pentaxmn.cpp:649 +msgid "Auto Program (MTF)" +msgstr "" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +msgid "Blur control" +msgstr "" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "Vídeo (30 fps)" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "Vídeo (24 fps)" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Continuo (Al)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Ráfaga" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "Vídeo" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Temporizador (12 seg.)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Temporizador (2 seg.)" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Control remoto (3 seg.)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Control remoto" + +#: src/pentaxmn.cpp:672 +msgid "Remote Continuous Shooting" +msgstr "" + +#: src/pentaxmn.cpp:675 +msgid "HDR Strong 1" +msgstr "" + +#: src/pentaxmn.cpp:676 +msgid "HDR Strong 2" +msgstr "" + +#: src/pentaxmn.cpp:677 +msgid "HDR Strong 3" +msgstr "" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "Auto HDR" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 o sin lentes" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Lentes serie A" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Brillante" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "Película invertida" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Más débil" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Débil" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Fuerte" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Sin ráfaga extendida" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "BN-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "BN-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Desconocido " + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Versión de la nota del fabricante Pentax" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Modo de disparo de cámara" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Resolución de vista previa de una foto" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Longitud de vista previa de una foto" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "Tamaño de un IFD que contiene una vista previa de la imagen" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Identificación de modelo" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Identificación de modelo Pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Fecha" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Hora" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Configuración de calidad de imagen" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Configuración de tamaño de imagen" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Configuración de modo de flash" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Configuración de modo de flash" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Punto AF seleccionado" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "Punto AF en foco" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "Número-F" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "Sensibilidad ISO" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Configuración de sensibilidad IOS" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Mododemedición" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Disparo múltiple automático" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "Balance de color azul" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Balance de color rojo" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "LongitudFocal" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Ciudad de nacimiento" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "DST en ciudad de procedencia" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Si el horario de verano está activo en la ciudad de procedencia" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Destino DST" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Si el horario de verano está activo en el destino" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "DSPFirmwareVersion" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "CPUFirmwareVersion" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Valor de luz" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" +"La cámara ha calculado el valor de luz, incluida la compensación por " +"exposición" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Bordes de imagen previa" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Ajuste de sensibilidad" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Filtro digital" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Temperatura de cámara" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Tono de imagen" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Reducción de la vibración" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Información de la reducción de la vibración" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "Expansión de rango dinámico" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Reducción de ruido a ISO alta" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "Ajuste AF" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Punto negro" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Punto blanco" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Información de disparo" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "AEInfo" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Información de lente" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Información de flash" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "Segmentos de medición AE" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "FlashADump" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "FlashBDump" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "BN_RGGBNivelesLuzDía" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "Niveles de sombra WB_RGGB" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "BN_RGGBNivelesNublado" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "BN_RGGBNivelesTungsteno" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "Niveles fluorescentes D WB_RGGB" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "Niveles fluorescentes N WB_RGGB" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "Niveles fluorescentes W WB_RGGB" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "WB_RGGBLevelsFlash" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "InfodeCámara" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "InfodeBatería" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "AFInfo" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "InfodeColor" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Etiqueta PentaxMakerNote desconocida" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Esquema Dublin Core" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "Esquema de gestor de fotos digiKam" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "Esquema de interfaz de programa de imagen KDE" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "Esquema básico XMP" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "Esquema de gestión de derechos XMP" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "Esquema de gestión de medios XMP" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "Esquema de entradas de trabajo básico XMP" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "Esquema XMP Paged-Text" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "Esquema de medios dinámicos XMP" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Esquema de fotos Microsoft" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Esquema Adobe PDF" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Esquema Adobe photoshop" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Esquema Raw de cámara" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Propiedades del esquema Exif para TIFF" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Esquema Exif para las propiedades de Exif-específico" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Esquema Exif para las propiedades adicionales de Exif" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "Esquema IPTC Core" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "Esquema de extensión IPTC" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "Esquema de formato de datos de licencia PLUS" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "Esquema iView Media Pro" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "Esquema Expression Media" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "Esquema de Microsoft Photo 1.2" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "Esquema de Microsoft Photo RegionInfo" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "Esquema de Microsoft Photo Region" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Estructura colorante" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Estructura de dimensiones" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Estructura de tipografía" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Estructura de miniatura" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Estructura de evento de recurso" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "Estructura ResourceRef" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Estructura de versión" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Estructura básica de trabajo/flujo de trabajo" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "Estructura de área" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Cualificador para xmp:Identifier" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Contribuidor" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Contribuyentes al recurso (aparte de los autores)." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Cobertura" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"El tema espacial o temporal del recurso, la aplicabilidad espacial del " +"recurso, o la jurisdicción bajo la cual el recurso es relevante." + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Creador" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" +"Los autores del recurso (enumerados en orden de prioridad, si es " +"significativo)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Fecha(s) en la que algo importante le ocurrió al recurso." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Una descripción textual del contenido del recurso. Puede haber valores para " +"cada idioma." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Formato" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"El formato del archivo cuando se guarda el recurso. Las aplicaciones y " +"herramientas deben establecer esta propiedad de guardado de formato de la " +"información. Puede incluir calificadores apropiados." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identificador" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Identificador único del recurso. Se recomienda identificar el recurso " +"mediante una cadena que se ajuste a un sistema de identificación " +"convencional." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "Una matriz desordenada especificando los idiomas usados en el recurso." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Editor" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Una entidad responsable de hacer que los recursos estén disponibles. " +"Ejemplos de un editor incluyen una persona, una organización o un servicio. " +"Típicamente, el nombre del editor debe ser usado para indicar la entidad." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Relación" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Relaciones con otros documentos. Se recomienda identificar el recurso " +"relacionado mediante una cadena que se ajuste a un sistema de identificación " +"convencional." + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Derechos" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Declaración de derechos informal, seleccionado por idioma. Típicamente, los " +"derechos de información incluyen una declaración sobre varios derechos de " +"propiedad asociados con el recurso, incluyendo los derechos de propiedad " +"intelectual." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Identificador único del trabajo del cual este recurso se derivó." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Una matriz desordenada de frases descriptivas o palabras clave que " +"especifican el tema del contenido del recurso." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"El título del documento o el nombre dado al recurso. Normalmente, será un " +"nombre con el cual el recurso es formalmente conocido." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Tipo" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "Un tipo de documento, por ejemplo novela, poema, manuscrito." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Lista de etiquetas" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"La lista de ruta de etiquetas completa como cadena. La jerarquía de la ruta " +"se separa por el carácter «/» (ej.: «Ciudad/Madrid/Monumento/Museo del Prado" +"\"." + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Nombres de autores y títulos" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" +"Lista de todas las leyendas de nombres de autor para cada juego de leyendas " +"de idiomas alternativos en etiquetas XMP estándar." + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "Leyendas de sellos de fecha y hora." + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" +"Lista de todas las leyendas de sellos de fecha y hora para cada juego de " +"leyendas de idiomas alternativos en etiquetas XMP estándar." + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Historia de la imagen" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Etiqueta de color" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" +"La etiqueta de color asignada a este elemento. Los valores posibles son «0»: " +"sin etiqueta; «1»: Rojo; «2»: Naranja; «3»: Amarillo; «4»: Verde; «5»: Azul; " +"«6»: Magenta; «7»: Gris; «8»: Negro; «9»: Blanco." + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "Etiqueta de estado" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" +"Etiqueta de estado asignada a este artículo. los valores posibles son «0»: " +"sin etiqueta; «1»: articulo rechazado; «2»: artículo pendiente de " +"validación; «3»: artículo aceptado." + +#: src/properties.cpp:206 +msgid "Panorama Input Files" +msgstr "" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "Archivos de entrada Enfuse" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" +"La lista de archivos procesados con Enfuse a través de la herramienta " +"ExpoBlending." + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Configuración de Enfuse" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" +"La lista de configuraciones Enfuse usada para mezclar la pila de imagen con " +"la herramienta ExpoBlending." + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "Identificación de artículo PicasaWeb" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "Identificación de artículo del servicio Web PicasaWeb" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "Identificación de artículo Yandex Fotki" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "Identificación de artículo del servicio Web Yandex Fotki" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Asesor" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"Una matriz desordenada especificando las propiedades que fueron editadas " +"fuera de la aplicación de creación. Cada elemento debe contener un solo " +"nombre y XPath separado por un espacio ASCII (U +0020)." + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "URL nbase" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"El URL base para los URL relativos en el contenido del documento. Si este " +"documento contiene enlaces a Internet, y dichos enlaces son relativos, serán " +"relativos a este URL. Esta propiedad proporciona un modo estándar para que " +"los URL relativos empotrados sean interpretadas por las herramientas. Las " +"herramientas de creación web deberían establecer el valor basándose en su " +"noción/opinión de dónde serán interpretados los URL." + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Fecha de creación" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "El día y la hora en la que se creó originalmente el recurso." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Herramienta de creador" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"El nombre de la primera herramienta conocida para crear el recurso. Si los " +"metadatos incluyen historia, este valor debe ser equivalente a la propiedad " +"«softwareAgent» del «xmpMM:History»." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Una matriz desordenada de cadenas de texto que identifican sin ambigüedad el " +"recurso dentro de un contexto dado. Una matriz de elementos puede ser " +"calificada con xmpidq:Scheme para denotar el sistema de identificación " +"formal al cual se ajusta el identificador. Nota: la propiedad dc:identifier " +"no se usa por carecer de un calificador de esquema definido y ha sido " +"definida en la Especificación XMP como una propiedad simple (de valor único)" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Etiqueta" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"Una palabra o frase breve que identifica un documento como miembro de una " +"colección definida por el usuario. Se utiliza para organizar documentos en " +"un explorador de archivos." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Fecha de metadatos" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"La fecha y hora en la que los metadatos del recurso fueron modificados. Debe " +"ser igual o más reciente que «xmp:ModifyDate»." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Modificar fecha" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"La fecha y hora en las que el recurso se modificó por última vez. Nota: El " +"valor de esta propiedad no es necesariamente el mismo que la fecha de " +"modificación del archivo del sistema, porque se establece antes de que el " +"archivo se guarde." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Apodo" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Un nombre corto, informal para el recurso" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Clasificación" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Número que indica el estado del documento en relación a otros documentos, " +"utilizado para organizar documentos en un explorador de archivos. Los " +"valores son definidos por el usuario dentro de un rango definido por la " +"aplicación." + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Miniaturas" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Una matriz alternativa de imágenes en miniatura de un archivo, que pueden " +"diferir en características tales como el tamaño o la codificación de la " +"imagen." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Certificado" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Certificado de derechos de gestión en línea" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Marcada" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Indica que esto es un recurso con derechos gestionados." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Propietario" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" +"Una matriz no ordenada especificando el propietario legal de un recurso." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Términos de uso" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Instrucciones de texto sobre cómo se puede usar el recurso legalmente." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Declaración Web" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Localización de la web donde se describe el propietario y los derechos sobre " +"este recurso." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Derivado de" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" +"Una referencia al documento original del que éste deriva. Es una referencia " +"mínima; puede asumirse que los componentes que faltan no cambian. Por " +"ejemplo, una nueva versión podría necesitar solo la ID de instancia y el " +"número de versión de la versión previa, o una «presentación» solo " +"necesitaría especificar la ID de instancia y la clase de «presentación» del " +"original." + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "ID del documento" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" +"El identificador común para todas las versiones y «presentaciones» de un " +"documento. Debería estar basado en un UUID; ver ID de instancia y documento " +"más abajo." + +#: src/properties.cpp:268 +msgid "History" +msgstr "Historial" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" +"Una matriz ordenada de acciones de usuario de alto nivel que dieron como " +"resultado este recurso. Su misión es proporcionar a los lectores humanos una " +"indicación general de los pasos tomados para realizar los cambios desde una " +"versión anterior hasta esta. La lista debe ser a nivel abstracto; Su misión " +"no es ser proporcionar una exhaustiva lista de pulsaciones de teclas ni una " +"historia detallada." + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "ID de instancia" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" +"Un identificador para una encarnación específica de un documento, " +"actualizado cada vez que un archivo se guarda. Debe estar basado en un UUID; " +"vea ID de documento e instancia abajo." + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Gestionado desde" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" +"Una referencia al documento como se encontraba antes de ser gestionado. Se " +"establece cuando un documento gestionado se introduce a un sistema de " +"gestión de activos que actualmente no lo posee. Puede o no incluir " +"referencias a diferentes sistemas de gestión." + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Gestor" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" +"El nombre del sistema de gestión de activos que administra este recurso. " +"Junto a xmpMM: ManagerVariant, le dice a las aplicaciones qué sistema de " +"gestión de activos contactar refiriéndose a este documento." + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "Gestión de" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" +"Un URI que identifica el recurso gestionado con el sistema de gestión de " +"activos, la presencia de esta propiedad es la indicación formal de que este " +"recurso es gestionado. La forma y el contenido de este URI es privada al " +"sistema de gestión de activos." + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "Administrar IU" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" +"Un URI que puede ser usada para acceder a la información sobre un recurso " +"gestionado a través de un navegador web. Puede requerir un complemento " +"personalizado." + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "Variante de gestión" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" +"Especifica una variante particular del sistema de administración de activos. " +"El formato de esta propiedad es privado para el sistema de administración de " +"activos específico." + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Clase de rendición" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" +"El nombre de clase de interpretación para este recurso. Esta propiedad " +"debería estar ausente o colocarse de forma predeterminada para una versión " +"de documento que no es una interpretación derivada." + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Parámetros de rendición" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" +"Puede ser utilizado para proporcionar parámetros adicionales de " +"interpretación que son muy complejos o extensos para ser codificados en " +"xmpMM: RenditionClass." + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "ID de versión" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" +"El identificador de versión de documento para este recurso. Cada versión de " +"un documento obtiene un nuevo identificador, normalmente simplemente " +"incrementando enteros 1,2,3... y así sucesivamente. Los sistemas de gestión " +"de medios pueden tener otras convenciones o soportar ramificación, y por " +"tanto requerir un esquema más complejo." + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Versiones" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" +"La historia de versión asociada con este recurso. La entrada [1] es la más " +"versión más antigua conocida para este documento, la entrada [ultima()] es " +"la versión más reciente. Típicamente, un sistema de gestión de medios, " +"rellenará la información de versión en los meta-datos o en el registro de " +"entrada. No se garantiza que esté presente una historia completa de " +"versiones desde la primera hasta ésta en la propiedad xmpMM:Versions. La " +"información de versión interior puede ser comprimida o eliminada y la " +"historia de versiones puede estar truncada en algún punto." + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Última URL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Obsoleto para la protección privada" + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Rendición de" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Obsoleto en favor de xmpMM:DerivedFrom. Una referencia al documento del que " +"éste es una modificación" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "Id de guardado" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" +"Obsoleto. Usado anteriormente solo para soportar la propiedad xmpMM:LastURL" + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Referencia de trabajo" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" +"Hace referencia a un archivo de trabajo de gestión externa de un proceso de " +"trabajo en el que está siendo el documento utilizado. El uso de nombres de " +"los trabajos es controlable por el usuario. El uso típico sería identificar " +"todos los documentos que forman parte de un trabajo en particular o por " +"contrato. Hay varios valores porque no puede haber más de un trabajo con un " +"documento concreto en cualquier momento, y también puede ser útil para " +"mantener la información histórica acerca de qué puestos de trabajo un " +"documento forma parte de antes." + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Tamaño máximo de página" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"Tamaño de la página más grande del documento (incluyendo cualquier documento " +"contenido)" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Número de páginas" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" +"El número de páginas en el documento (incluidos los que contienen los " +"documentos)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Tipografías" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Una matriz desordenada de las tipografías que se usaron en el documento " +"(incluyendo cualquiera en los documentos contenidos)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Colorantes" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Una matriz organizada de colorantes (swatches) que son utilizados en el " +"documento (incluyendo cualquier documento contenido)" + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Nombres del mural" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Una matriz organizada de nombres de paletas que se necesitan para imprimir " +"el documento (incluyendo cualquier documento contenido)" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Referencia de proyecto" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "Referencia al proyecto que creó el archivo." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Tasa de cuadros del vídeo" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Tasa de cuadros del vídeo. Uno de: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Tamaño de cuadro del vídeo" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "Tamaño del cuadro. Por ejemplo: w:720, h: 480, unidad:pixels" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Razón de aspecto del píxel del vídeo" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" +"Relación de aspecto, expresada como al/an. Por ejemplo: «648/720» = 0.9" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Profundidad de píxel de vídeo" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"El tamaño en bits de cada componente de color de un píxel. Los píxeles " +"estándar de Windows 32-bit tienen 8 bits por componente. Uno de: 8Int, " +"16Int, 32Int, 32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Espacio de color de vídeo" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"El espacio de color. Uno de: sRGB (utilizado por Photoshop), CCIR-601 " +"(utilizado por NTSC), CCIR-709 (utilizado por HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Modo alpha de vídeo" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "El modo alfa. Uno de: directo, pre-multiplicado." + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "Color premúltiple para alfa de vídeo" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" +"Un color en CMYK o RGB a usar como el color pre-múltiplo cuando el modo alfa " +"es pre-multiplicado." + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "La unidad alpha de vídeo es transparente" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "Cuando es cierto, la unidad está limpia, cuando falso, está opaca." + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Compresor de vídeo" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Compresión de vídeo usada. Por ejemplo , jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Orden de campo de vídeo" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "El orden de campos para vídeo. Uno de: superior, inferior, progresivo." + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Bajar" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" +"La fase de muestreo de la película que va a ser convertida a vídeo (pull-" +"down). Uno de: WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, " +"SWWWS_24p, WWWSS_24p, WWSSW_24p." + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Ratio de muestreo de audio" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"El ratio de muestreo de audio. Puede ser cualquier valor, pero comúnmente " +"32.000, 41.100 o 48.000" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Tipo de muestreo de audio" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Tipo de muestreo de audio. Uno de: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Tipo de canal de audio" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Tipo de canal de audio. Uno de: Mono, Estéreo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Compresor de audio" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "El compresor de audio usado. Por ejemplo MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Emplazamiento del narrador" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" +"Una descripción de los ángulos en que están los altavoces respecto del " +"frente en grados. Por ejemplo: «Izquierda = -30, Derecha = 30, Centro = 0, " +"LFE = 45, Envolvente izquierdo = -110, Envolvente derecho = 110»" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Tasa de datos de archivo" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" +"La tasa de datos del archivo en megabytes por segundo. Por ejemplo: «36/10» " +"= 3.6 MB/seg." + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Nombre de cinta" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" +"El nombre de la cinta de la que fue capturado el fragmento de película, tal " +"como se estableció durante el proceso de captura." + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Nombre de cinta alternativo" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" +"Un nombre de cinta alternativo, especificado a través de la ventana de " +"proyecto o del diálogo de código de tiempo en Premiere. Si se especifica un " +"nombre alternativo y no ha sido revertido, éste se desplegará." + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Código de inicio de tiempo" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" +"Código de tiempo del primer fotograma del vídeo en el archivo, obtenido del " +"control del dispositivo." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Código de tiempo alternativo" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"Un código de tiempo establecido por el usuario. Cuando se especifica, se usa " +"en lugar del código de tiempo de inicio." + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Duración" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Duración del archivo." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Escena" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "El nombre de la escena" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Nombre de la toma" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "El nombre de la toma" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Fecha de la toma" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Hora y fecha de la toma" + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Ubicación de la toma" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"El nombre de la locación donde el vídeo fue grabado. Por ejemplo: " +"«Oktoberfest, Munich Alemania» Para un posicionamiento más preciso, use los " +"valores GPS de EXIF." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Comentario de registro" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Comentarios del registro del usuario." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Marcadores" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "Una lista ordenada de marcadores" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Medios que han contribuido" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" +"UNa lista desordenada de todos los medios usados para crear este medio." + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "Ruta absoluta del archivo de audio de picos" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"La ruta absoluta a los archivo de audio de pico. Si está vacía, no existen " +"archivos de pico." + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "Ruta relativa del archivo de audio de picos" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"La ruta relativa a los archivo de audio de pico. Si está vacía, no existen " +"archivos de pico." + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Fecha de modificación del vídeo" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Fecha y hora de la última modificación del vídeo." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Fecha de modidicación del audio" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Fecha y hora de la última modificación del audio." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Fecha de modificación de los metadatos" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Fecha y hora de la última modificación de los metadatos." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Artista" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Nombre del artista o artistas." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Ãlbum" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Nombre del álbum." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Número de pista" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" +"Un valor numérico que indica el orden del archivo de audio que es la " +"grabación original" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Género" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Nombre del género." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Información de copyright." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "La fecha en la que el título fue publicado." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Compositor" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Nombre del compositor" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Ingeniero" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Nombre del ingeniero" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Tempo del audio" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Instrumento" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Instrumento musical." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Tiempo de introducción" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "La duración del tiempo de ejecución para poner música en cola." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Referencia externa" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "Tiempo en el que hacer fundido de salida" + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Sello de tiempo relativo" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "La hora de inicio del medio en el proyecto de audio." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Bucle" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Número de golpes" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "El número de golpes" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Tecla" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"La clave musical de audio. Una de: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Modo de estiramiento" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"El modo de estiramiento del audio. Uno de: longitud fija, escala de tiempo, " +"volver a muestrear, empalme de pulsación, híbrido." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Parámetros de escala de tiempo" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" +"Parámetros adicionales para el modo de «estirado» de la escala de tiempos" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Parámetros de remuestreo" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Parametros adicionales para el modo de muestrear." + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Ajustes del empalme de pulsación" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Más ajustes para el empalme de pulsación" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Signatura musical" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"Signatura musical. Una de: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, otra." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" +"Escala musical usada en la música. Una de: Mayor, menor, ambas, ninguna. " +"Ninguna es la más frecuente para instrumentos sin asociación de escala, " +"tales como los tambores." + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Número de serie de la cámara" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Número de serie de la cámara." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Fecha de adquisición" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Fecha de adquisición." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Fabricante del flash" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Fabricante del flash." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Modelo del flash." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Última palabra clave IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Última palabra clave IPTC" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Última palabra clave XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Última palabra clave XMP" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Fabricante de las lentes" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Fabricante de las lentes." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Modelo de lentes." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Porcentaje de tasa" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Porcentaje de tasa." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +msgid "Private RTK Info" +msgstr "" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Claves." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "Versión de PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Versión del archivo PDF (por ejemplo: 1.0, 1.3, y demás)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Productor" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Nombre de la herramienta con la que se creó el documento PDF." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Posición de autores" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "Título por línea" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Escritor del encabezamiento" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Escritor/editor" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Categoría. Limitado a 3 7-bit caracteres ASCII." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Ciudad" + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "País/localización primaria" + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Crédito." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" +"La fecha en que se creó el contenido intelectual del documento (en lugar de " +"la fecha de creación de la representación física), siguiendo las " +"convenciones IIM. Por ejemplo, una foto tomada durante la Guerra Civil " +"Americana tendría una fecha de creación durante esa época (1861-1865) en " +"lugar de la fecha en que la foto fue digitalizada para archivado." + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Cabecera" + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Instrucciones especiales." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Fuente." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Provincia/estado" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Categoría suplementaria" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Referencia de la transmisión original." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Urgencia. Rango válido 1-8" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "pulgadas" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Brillo automático" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Cuando es «true» el brillo se ajusta automáticamente." + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Contraste automático" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Cuando es «true» el contraste se ajusta automáticamente." + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Exposición automática" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Cuando es cierto, la «exposición» se ajusta automáticamente" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Sombras automáticas" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Cuando está activado, «Sombras» se ajusta automáticamente." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Tono azul" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Configuración de «tono azul» Rango -100 a 100" + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Saturación azul" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Configuración de «tono rojo» Rango -100 a +100" + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Configuración de «brillo» Rango 0 a +150" + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Perfil de cámara" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Configuración del «perfil de cámara»" + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Aberración cromática azul" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Configuración de «aberración cromática, corrija la franja azul/amarillo». " +"Rango -100 a +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Aberración cromática rojo" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Configuración de «aberración cromática, corrija la franja roja/cian». Rango " +"-100 a +100.." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Reducción de ruido de color" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Configurar la «Reducción de ruido cromático». Rango de 0 a +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Configuración de «contraste». Rango -50 a +100" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" +"Cuando «Tiene recorte» es verdadero, parte superior del rectángulo de recorte" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" +"Cuando «Tiene recorte» es verdadero, parte izquierda del rectángulo de " +"recorte" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "Cortar abajo" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" +"Cuando «Tiene recorte» es verdadero, parte inferior del rectángulo de recorte" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Cortar derecha" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" +"Cuando «Tiene recorte» es verdadero, parte derecha del rectángulo de recorte" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Ãngulo de corte" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "Cuando «Tiene recorte» es verdadero, ángulo del rectángulo de recorte" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "Anchura de la imagen resultante recortada en unidades de CropUnits." + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "Altura de la imagen resultante recortada en unidades de CropUnits" + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Unidades de recorte" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "Unidades para CropWidth y CropHeight. 0=píxeles, 1=pulgadas, 2=cm" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Configuración de «Exposición». Rango -4.0 a +4.0." + +#: src/properties.cpp:478 +msgid "Green Hue" +msgstr "" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Configuración «Tonalidad de verde». Rango -100 a +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Saturación verde" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Configuración «Saturación de verde». Rango -100 a +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Tiene recorte" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "Cuando es verdadero, la imagen tiene un rectángulo de recorte." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Tiene configuración" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "Cuando es verdadero, configuración cruda de cámara no predeterminada." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "Suavizado de luminancia" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Configuración «Suavizado de luminancia». Rango 0 a +100" + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Nombre de archivo raw" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Nombre del archivo raw (ruta incompleta)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Tono rojo" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Configuración de «tono rojo» Rango -100 a +100" + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Saturación de rojo" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Configuración de «saturación de rojo». Rango -100 a +100" + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Configuración de «saturación». Rango -100 a +100" + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Sombras" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Configuración de «sombra». Rango 0 a +100" + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Matiz de la sombra" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Valor del matiz de la sombra. Rango: -100 a +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Configuración de «nitidez». Rango 0 a +100" + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Configuración de «temperatura». Rango 2.000 a 5.000" + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Matiz" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Ajuste de «Matiz». Rango -150 a +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Curva de tono" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "matriz de puntos (entero, entero) que define una «curva de tono»" + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Nombre de curva de tono" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"El nombre de la curva tonal descrita por ToneCurve. Puede ser: lineal, " +"contraste medio, contraste fuerte, personalizado o un nombre predeterminado " +"definido por el usuario." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Versión del complemento raw de cámara." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Cantidad de viñeta" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Configuración «Cantidad de viñeteado». Rango -100 a +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Punto medio de viñeta" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Configuración «Punto medio de viñeteado». Rango 0 a +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" +"Configuración «Balance de blancos». Uno de los siguientes: Como fue " +"disparada, Automático, Luz de día, Nublado, Sombra, Tungsteno, Fluorescente, " +"Flash, Personalizado" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "Etiqueta TIFF 256, 0x100. Ancho de la imagen en píxels." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Longitud de la imagen" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "Etiqueta TIFF 257, 0x101. Altura de la imagen en píxeles." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bits por muestra" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "Etiqueta TIFF 258, 0x102. Número de bits por componente en cada canal." + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Compresión" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" +"Etiqueta TIFF 259, 0x103. Sistema de compresión: 1 = sin comprimir; 6 = JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Interpretación fotométrica" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "Etiqueta TIFF 262, 0x106. Composición de píxel: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" +"Etiqueta TIFF 274, 0x11. Orientación:1 = fila 0 arriba, columna 0 a la " +"izquierda 2 = fila 0 arriba, columna 0 a la derecha 3 = fila 0 abajo, " +"columna 0 la derecha 4 = fila 0 abajo, columna 0 a la izquierda 5 = fila 0 " +"a la izquierda, columna 0 arriba 6 = fila 0 a la derecha, columna 0 arriba 7 " +"= fila 0 a la derecha, columna 0 abajo 8 = fila 0 a la izquierda, columna 0 " +"abajo" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Muestras por píxel" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "Etiqueta TIFF 277, 0x115. Número de componentes por píxel." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Configuración de planos" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "Etiqueta TIFF 284. Capa de datos: 1 = granular; 2 = planar." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "Sub-muestreo YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" +"Etiqueta TIFF 530, 0x212. Radio de muestreo de los componentes de la " +"crominancia: [2,1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "Posicionamiento YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" +"Etiqueta TIFF 531, 0x213. Posición de los componentes de crominancia vs. " +"luminancia: 1 = centrados; 2 = coemplazados." + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Resolución X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "Etiqueta TIFF 282, 0x11A. Resolución horizontal en píxeles por unidad." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Resolución Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "Etiqueta TIFF 283, 0x11B. Resolución vertical en píxeles por unidad." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Unidad de resolución" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"Etiqueta TIFF 296, 0x128. Unidad utilizada para XResolution e YResolution. " +"Puede tomar los valores: 2 = pulgadas; 3 = centímetros." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Función de transferencia" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" +"Etiqueta TIFF 301, 0x12D. Función de transferencia para imagen descrita en " +"estilo tabular con 3 * 256 entradas." + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Punto blanco" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "Etiqueta TIFF 318, 0x13E. Cromaticidad del punto blanco." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Cromaticidades primarias" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "Etiqueta TIFF 319, 0x13F. Cromaticidad de los tres colores primarios." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" +"Etiqueta TIFF 529, 0x211. Matriz de coeficientes para la transformación de " +"RGB a YCbCr." + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Referencia blanco y negro" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" +"Etiqueta TIFF 532, 0x214. Valores de los puntos negro y blanco de referencia." + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Fecha y hora" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" +"Etiqueta TIFF 306, 0x132 (primario) y etiqueta EXIF 37520, 0x9290 " +"(subsegundos [Submúltiplos del segundo en el Sistema Internacional SI]). " +"Fecha y hora de creación de la imagen (sin zona horaria en EXIF), almacenada " +"en formato ISO 8601, no en el formato EXIF original. Esta propiedad incluye " +"el valor del atributo EXIF «SubSecTime». NOTA: Esta propiedad se almacena en " +"el formato XMP como «xmp:ModifyDate»." + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Descripción de la imagen" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"Etiqueta TIFF 270, 0x10E. Descripción de la imagen. Nota: Esta propiedad se " +"almacena en XMP como dc:description." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Marca" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "Etiqueta TIFF 271, 0x10F. Fabricante del equipo de grabación." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "Etiqueta TIFF 272, 0x110. Nombre de modelo o número de equipo." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"Etiqueta TIFF 305, 0x131. Software o firmware utilizado para generar la " +"imagen. Nota: Esta propiedad se almacena en XMP como xmp:CreatorTool. " + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"Etiqueta TIFF 315, 0x13B. Propietario de la cámara, fotógrafo o creador de " +"la imagen. Nota: Esta propiedad se almacena en XMP como el primer elemento " +"de la matriz dc:creator." + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"Etiqueta TIFF 33432, 0x8298. Información de Copyright. Nota: Esta propiedad " +"se almacena en XMP como dc:rights." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Versión Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "Etiqueta EXIF 36864, 0x9000. Número de versión EXIF." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Versión Flashpix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "Etiqueta EXIF 40960, 0xA000. Versión de FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "Etiqueta EXIF 40961, 0xA001. Información del espacio de color" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Configuración de componentes" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"Etiqueta EXIF 37121, 0x9101. Configuración de los componentes en los datos: " +"4 5 6 0 (si son datos RGB comprimidos), 1 2 3 0 (en otros casos)." + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Bits comprimidos por píxel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Etiqueta EXIF 37122, 0x9102. El modo de compresión que se usa para una " +"imagen comprimida se indica medido en bits por píxel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Dimensión píxel X" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "Etiqueta EXIF 40962, 0xA002. Anchura de imagen válida, en píxeles" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Dimensión píxel Y" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "Etiqueta EXIF 40963, 0xA003. Altura de imagen válida, en pixeles." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Comentario del usuario" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "Etiqueta EXIF 37510, 0x9286. Comentarios del usuario." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Archivo de sonido relacionado" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"Etiqueta EXIF 40964, 0xA004. Nombre de archivo en formato «8.3» para el " +"archivo de sonido asociado" + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Fecha y hora original" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"Etiquetas EXIF 36867, 0x9003 (primarias) y 37521, 0x9291 (fracciones de " +"segundo). Fecha y hora en que se generó la imagen original, en formato ISO " +"8601. Incluyen los datos SubSecTimeOriginal (fracciones de segundo del " +"tiempo del original) de EXIF." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Fecha y hora de la digitalización" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"Etiqueta EXIF 36868, 0x9004 (primarias) y 37522, 0x9292 (fracciones de " +"segundo). Fecha y hora en que la imagen original fue guardada digitalmente; " +"puede ser igual a la fecha de la imagen original si fue guardada " +"digitalmente desde un principio. Guardadas en el formato ISO 8601. Incluyen " +"los datos SubSecTimeOriginal (fracciones de segundo del tiempo del " +"digitalizado) de EXIF." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Etiqueta EXIF 33434, 0x829A. Tiempo de exposición en segundos." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Número F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "Etiqueta EXIF 33437, 0x829D. número F." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" +"Etiqueta EXIF 34850, 0x8822. Clase de programa usado para la exposición." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Sensibilidad espectral" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "Etiqueta EXIF 34852, 0x8824. Sensibilidad espectral para cada canal" + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "ISOSpeedRatings" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"Etiqueta EXIF 34855, 0x8827. Velocidad y latitud ISO del dispositivo de " +"entrada, como especifica el ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"Etiqueta EXIF 34856, 0x8828. Función de Conversión Opto-Electórica, como " +"especifica el ISO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"Etiqueta EXIF 37377, 0x9201. Velocidad de disparador, medida en APEX. Ver " +"Anexo C de especificación EXIF." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "Etiqueta EXIF 37378, 0x9202. Apertura de lente, las unidades son APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Valor de brillo" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "Etiqueta EXIF 37379, 0x9203. Brillo, la unidad es APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" +"Etiqueta EXIF 37380, 0x9204. Compensación de exposición, medida en APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Valor máximo de apertura" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "Etiqueta EXIF 37382, 0x9206. Distancia al tema, en metros." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "Etiqueta EXIF 37383, 0x9207. Modo de medición." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "Etiqueta EXIF 37384, 0x9208. Fuente de luz." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Ãrea del sujeto" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Esta etiqueta indica la ubicación y el área del sujeto principal en la " +"escena general." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Energía del flash" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Respuesta en frecuencia espacial" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"EXIF tag 41484, 0xA20C. Tabla de entrada del dispositivo de frecuencia " +"espacial y los valores de SNR según lo especificado en la norma ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Resolución X plano focal" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"EXIF tag 41486, 0xA20E. Resolución focal horizontal, medida en píxeles por " +"unidad" + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Resolución Y plano focal" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Unidad de resolución del plano focal" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Ubicación del sujeto" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Ãndice de exposición" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Método de sensado" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "Etiqueta EXIF 41728, 0xA300. Indica el origen de la imagen." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Tipo de escena" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "" + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "Patrón CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Render personalizado" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Esta etiqueta indica el modo de balance de blanco ajustado cuando se tomó la " +"imagen." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Relación de zoom digital" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Distancia focal en película de 35mm" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Esta etiqueta indica la distancia focal equivalente asumiendo una cámara de " +"película de 35mm, en mm. Un valor de 0 significa que se desconoce la " +"distancia focal. Note que esta etiqueta difiere de la etiqueta FocalLength." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Tipo de captura de escena" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Control de ganancia" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"Esta etiqueta indica el grado del ajuste de ganancia general de imagen." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de contraste aplicado " +"por la cámara cuando se tomó la imagen." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " +"por la cámara cuando se tomó la imagen." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de nitidez aplicado por " +"la cámara cuando se tomó la imagen." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Descripción de ajuste del dispositivo" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Esta etiqueta indica información sobre las condiciones de toma de la foto de " +"un modelo de cámara en particular. La etiqueta sólo se usa para indicar las " +"condiciones de toma de fotos en el lector." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Rango de distancia al sujeto." + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Esta etiqueta indica la distancia al sujeto." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "ID único de imagen" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Esta etiqueta indica un identificador asignado unívocamente a cada imagen. " +"Se registra como una cadena de caracteres ASCII equivalente a notación " +"hexadecimal y de una longitud fija de 128 bits." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "Identidad de la versión GPS" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Latitud GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Longitud GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "Referencia de altitud GPS" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "Altitud GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "Sello de hora GPS" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Satélites GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Estado GPS" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "Modo de medida GPS" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "" + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "Referencia de velocidad GPS" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "Velocidad GPS" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "" + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "Referencia de pista GPS" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "Rastreo GPS" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "Referencia de dirección de imagen GPS" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "Dirección de imagen GPS" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "Datos de mapa GPS" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "Etiqueta GPS 18, 0x12. Datos de levantamiento geodésico." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "Latitud de destino GPS" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "Longitud de destino GPS" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "Referencia al punto de destino GPS" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "Punto de destino GPS" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "Etiqueta GPS 24, 0x18. Punto de destino, con valores de 0 a 359,99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "Referencia de distancia al destino GPS" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" +"Etiqueta GPS 25, 0x19. Unidades utilizadas para la medición de la velocidad." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "Distancia del destino GPS" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "" + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "Método de proceso GPS" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "Información de área GPS" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "Diferencial GPS" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"Una descripción de la lente empleada para tomar la fotografía. Por ejemplo, " +"«70-200 mm f/2.8-4.0»." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"El número de serie de la cámara o del cuerpo de la cámara empleado para " +"tomar la fotografía." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Información de contacto del creador" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Dirección" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Ciudad" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Provincia/Región" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Código postal" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "País" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Correo(s)electrónico(s)" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Número(s) de tel." + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Sitio(s) Web" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Genero" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "Escena IPTC" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "Código de tema IPTC" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "Información adicional del modelo" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "Código de la organización caracterizada" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "Edad del modelo" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" +"Edad del modelo humano en el momento en que se tomó la imagen publicada." + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "Nombre de la organización caracterizada" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "Nombre de la organización o compañía caracterizada en la imagen." + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "Persona mostrada" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "Nombre de la persona mostrada en la imagen." + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "Identificador de la imagen digital" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" +"Identificador global único de la imagen digital. El creador de la imagen " +"digital establece este valor en el momento de su creación. No se modificará " +"posteriormente." + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "Tipo físico de la foto original" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "El tipo de la fuente del archivo digital" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "Evento" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" +"Nombra o describe el evento específico en el que se tomó la fotografía." + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "Altura máxima disponible" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "Entrada de registro" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" +"Un identificador único creado por un registro y aplicado por el creador de " +"la imagen digital. Este valor no debería cambiarse tras aplicarse. El " +"identificador está vinculado al correspondiente identificador de registro de " +"organización." + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "Último campo IPTC editado" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "Lugar mostrado" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "El lugar mostrado en la imagen." + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "Lugar de creación" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "El lugar donde se tomó la fotografía." + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Ubicación-Ciudad" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Nombre de la ciudad." + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "Ubicación-Código ISO del país" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "El código ISO del país." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Ubicación-Nombre de país" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "El nombre de un país en la ubicación" + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "Ubicación-Provincia/Estado" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "Ubicación-Sububicación" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" +"Nombre de una sububicación. Esta sububicación puede ser tanto el nombre de " +"una sububicación de una ciudad o el nombre de un lugar muy conocido o " +"monumento (natural) fuera de una ciudad." + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "Región de ubicación mundial." + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "" + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "Ilustración u objeto en la imagen" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" +"Un conjunto de metadatos sobre la ilustración o un objeto de la imagen." + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "Ilustración u objeto-aviso de copyright" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" +"Contiene cualquier aviso sobre los derechos de autor necesario para reclamar " +"la propiedad intelectual de la ilustración u objeto de la imagen, y debe " +"identificar el actual propietario de los derechos de autor de la obra junto " +"con los correspondientes derechos de propiedad intelectual." + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "Ilustración u objeto-creador" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" +"Contiene el nombre del artista que creó la ilustración o el objeto de la " +"imagen. En los casos en los que el artista no pueda o no deba ser " +"identificado, puede incluirse el nombre de la compañía u organización." + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "Ilustración u objeto-fecha de creación" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" +"Designa la fecha y opcionalmente la hora en la que fue creada la ilustración " +"o el objeto de la imagen. Se refiere a las ilustraciones u objetos que " +"poseen derechos de propiedad intelectual asociados." + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "Source" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "Número de inventario de trabajo artístico o fuente de objeto." + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" +"El número de inventario emitido por la organización o cuerpo de explotación " +"y registrando el trabajo artístico o el objeto de la imagen." + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "Ilustración u objeto-título" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "Una referencia para la ilustración o el objeto de la imagen." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "Explorar desde pelñicula" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "Cámara en bruto" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "Cámara TIFF" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "Cámara JPEG" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "Versión PLUS" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Licenciado" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" +"Parte partes a quienes se autoriza el acceso a la licencia bajo una " +"transacción con el administrador." + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "ID del licenciado" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "PLUS-ID opcional identificando cada licenciado." + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "Nombre del licenciado" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "Nombre de cada licenciado" + +#: src/properties.cpp:746 +msgid "End User" +msgstr "Usuario final" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "Grupo o grupos que finalmente harán uso de la imagen licenciada." + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "ID del usuario final" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "Número de identificación opcional de cada usuario final." + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "Nombre del usuario final" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "Nombre de cada usuario final." + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "Licenciador" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "ID del licenciado" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "Nombre del licenciador" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "Nombre de cada licenciador" + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "Dirección del licenciador" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "Dirección de calle del licenciador" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "Detalle de la dirección de licenciador" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "Ciudad del licenciador" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "Nombre de la ciudad del licenciador" + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "Estado o provincia del licencidador" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "" + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "País del licenciador" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "Dirección de correo del licenciante." + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "URL del licenciador" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "Notas del licenciador" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" +"Información suplementaria para usar en la identificación y contacto del/los " +"licenciadores." + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" +"Cadena de código alfanumérico siguiendo el estándar PLUS que resume el uso " +"de los medios incluidos en la licencia." + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "Fecha de inicio de la licencia" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "La fecha en la que la licencia entra en vigor." + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "Fecha de término de la licencia" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "La fecha en la que la licencia expira." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" +"Restricciones que limitan el alcance del uso (o usos) del medio PLUS " +"incluido en la licencia para otro medio de nombre especificado o no en la " +"matriz de medios PLUS." + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "Restricciones de región" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" +"Restricciones que limitan el alcance de la distribución geográfica a " +"determinadas ciudades, estados, provincias u otras áreas por incluir o " +"excluidas de las regiones PLUS concretadas en el uso de los medios " +"especificados en la licencia." + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" +"Restringir limitando el uso de la imagen para promover o asociar con un " +"producto o servicio nombrado." + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" +"Restricciones sobre la alteración de la imagen por recorte, giro, retoque, " +"coloreado, decoloreado o mezclado" + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "Estado del modelo de lanzamiento" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" +"Resume la disponibilidad y el alcance de los lanzamientos de modelos " +"autorizando el uso de las semejanzas de personas que aparecen en la " +"fotografía." + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "ID de modelo de lanzamiento" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "Identificador opcional asociado con cada lanzamiento de modelo." + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "Divulgación de la edad de un modelo menor." + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "Estado de lanzamiento de la propiedad." + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" +"Resume la disponibilidad y el alcance de los lanzamientos de propiedad " +"autorizando el uso de las características que aparecen en la fotografía." + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "Id de liberación de la propiedad" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "Identificador opcional asociado con cada liberación de propiedad." + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "Otras restricciones" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "Restricciones adicionales de la licencia." + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "Línea de crédito requerida" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "Requisitos de atribución, en caso de haberlos." + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "Aviso de contenido para adultos" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "Aviso que indica la presencia de contenido no apto para menores." + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "Otros requisitos de la licencia" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "Requisitos adicionales de la licencia." + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Términos y condiciones (texto)" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Términos y condiciones de la licencia." + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "URL de los términos y condiciones" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "URL de los términos y condiciones de la licencia." + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Otras condiciones de la licencia" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "Condiciones adicionales de la licencia." + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "Identifica el tipo de imagen proporcionado." + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "ID de la imagen del licenciador" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "Identificador opcional asignado por el licenciador de la imagen." + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "Nombre de archivo de imagen tal como se entregó" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" +"Nombre del archivo de imagen entregada al licenciado para su uso bajo la " +"licencia." + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" +"Formato del archivo de imagen tal como se entregó al licenciado para usar " +"bajo licencia." + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "Tamaño del archivo de imagen entregado al licenciado." + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "Estado de los derechos de autor" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "Estado de los derechos de autor de la imagen." + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "Número de registro de los derechos de autor" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" +"Número de registro de los derechos de autor, en caso de haberlo, aplicado a " +"la imagen con licencia." + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "Fecha de la primera publicación" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "La fecha en la que la imagen fue publicada por primera vez." + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "Propietario de los derechos de autor" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" +"Propietario o propietarios de los derechos de autor de la imagen con " +"licencia." + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "ID del propietario de los derechos de autor" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" +"Número de identificación opcional de cada propietario de los derechos de " +"autor." + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "Nombre del propietario de los derechos de autor" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "Nombre del propietario de los derechos de autor." + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "ID de imagen del propietario del Copyright" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" +"Identificador opcional asignado al propietario del copyright de la imagen" + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Creador de la imagen" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "Creador o creadores de la imagen." + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "ID del creador de la imagen" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "Número de identificación opcional de cada creador de la imagen." + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "Nombre del creador de la imagen" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "Nombre del creador de la imagen." + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "ID de la imagen del creador de la imagen" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "ID del proveedor de la imagen" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "Número de identificación opcional del proveedor de la imagen." + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "Nombre del proveedor de la imagen" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "Nombre del proveedor de la imagen." + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "ID de la imagen del proveedor de la imagen" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" +"Identificador opcional de la imagen asignado por el proveedor de la imagen." + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "ID de la imagen del licenciado" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "Notas de la imagen del licenciado" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "" + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "Otra información de la imagen" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "Información adicional sobre la imagen." + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "ID de la licencia" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" +"Número de identificación opcional de la licencia asignado por el licenciante." + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "ID de la transacción del licenciador" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" +"Identificador asignado por el licenciador para referencia del licenciador y " +"uso interno." + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "ID de transacción del licenciado" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" +"Nombre del proyecto de referencia o descripción asignada por el licenciado." + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Reutilización" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" +"Indica si una licencia es inicial o una réplica. La reutilización puede " +"requerir que las licencias almacenadas en archivos previamente distribuidos " +"al cliente sean actualizadas." + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "Otros documentos de la licencia" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" +"Información de referencia para documentos adicionales asociados con la " +"licencia." + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "Otra información de la licencia" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "Información adicional de la licencia." + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "Campo opcional para uso discrecional del licenciador." + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "Personalizado 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "Personalizado 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "Personalizado 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "Campo opcional para el uso discrecional del licenciado." + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "Personalizado 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "Personalizado 8" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "Personalizado 9" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "Personalizado 10" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "Aviso obligatorio de contenido para adultos" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "No se requiere" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "Protegido" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "Dominio público" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "Crédito adyacente a la imagen" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "Crédito en el área de créditos" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "Crédito en la imagen" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "No se requiere" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "No recortar" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "No volteo" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "Sin retocado" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "La duplicación solo cuando sea necesario bajo licencia" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "Sin restricciones de duplicación" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "Sin duplicación" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "Mapa de bits de Windows (BMP)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Negativo digital (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "PostScript encapsulado (EPS)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "Formato de intercambio de gráficos (GIF)" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Formato de intercambio JPEG (JPG, JIF, JFIF)" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "Imagen Macintosh (PICT)" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "Gráficos de red portátiles (PNG)" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "Documento Photoshop (PSD)" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "Formato de imagen RAW propietario" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "Formato de archivo de imagen etiquetado (TIFF)" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "Foto de Windows Media (Foto HD)" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "Mayor que 50 MB" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "Hasta 1 MB" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "Hasta 10 MB" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "Hasta 30 MB" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "Hasta 50 MB" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "Imagen ilustrada" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "Imagen compuesta o multimedia" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Imagen fotográfica" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "Celda" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "FAX" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "Buscapersonas" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "Trabajo" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "Edad desconocida" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "Edad 25 años o superior" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "Edad 24" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "Edad 23" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "Edad 22" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "Edad 21" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "Edad 20" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "Edad 19" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "Edad 18" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "Edad 17" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "Edad 16" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "15 años" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "Edad 14 o por debajo" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "No aplicable" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "Lanzamientos de propiedad ilimitada" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "Liberaciones de propiedad limitadas o incompletas" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "Repetir uso" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "Identificación de accesorio" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Estado" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Gente" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "Juegos de catálogo" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "Marcadores descriptivos de elementos de catálogo por contenido" + +#: src/properties.cpp:978 +msgid "RegionInfo" +msgstr "Información de zona" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "Zonas" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "Contiene etiquetas de zonas/personas" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "Fecha en que la última zona fue creada" + +#: src/properties.cpp:991 +msgid "Person Display Name" +msgstr "" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "Nombre de la persona (en el rectángulo)" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "Rectángulo" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "Rectángulo que identifica la persona en la foto" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" +"Hash SHA-1 del mensaje cifrado de la dirección de correo electrónico de " +"Windows Live de la persona" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "Representación decimal con signo del CID de Windows Live de la persona" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "Estructura principal que contiene información basada en la región" + +#: src/properties.cpp:1001 +msgid "Applied To Dimensions" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "Anchura y altura de la imagen al guardar los datos de la región" + +#: src/properties.cpp:1002 +msgid "Region List" +msgstr "" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "Lista de estructuras de regiones" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "Ãrea" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "Tipo de propósito de la región (Cara|Mascota|Foco|Código de barras)" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "Nombre/descripción corta del contenido de la región de la imagen" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +msgid "Focus Usage" +msgstr "" + +#: src/properties.cpp:1008 +msgid "Bar Code Value" +msgstr "" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "Cadena de valor de BarCode decodificada" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "Extensiones" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" +"Cualquier propiedad XMP de nivel superior para describir el contenido de la " +"región" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +msgid "Keyword" +msgstr "Palabra Clave" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +msgid "Use Panorama Viewer" +msgstr "" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +msgid "Capture Software" +msgstr "" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +msgid "Stitching Software" +msgstr "" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +msgid "Projection Type" +msgstr "Tipo de proyección" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +msgid "First Photo Date" +msgstr "" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +msgid "Last Photo Date" +msgstr "" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +msgid "Exposure Lock Used" +msgstr "" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +# ### ? +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +msgid "Archival Location" +msgstr "" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +msgid "Arranger Keywords" +msgstr "" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +msgid "Video Aspect Ratio" +msgstr "" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +msgid "Video Aspect Ratio Type" +msgstr "" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +msgid "Attached File Description" +msgstr "" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +msgid "Attached File Name" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +msgid "Brightness setting." +msgstr "" + +#: src/properties.cpp:1069 +msgid "Camera Byte Order" +msgstr "" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "" + +#: src/properties.cpp:1071 +msgid "Clean Aperture Width" +msgstr "" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1072 +msgid "Clean Aperture Height" +msgstr "" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1073 +msgid "Video Codec" +msgstr "" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +msgid "Video Codec Description" +msgstr "" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +msgid "Video Codec Information" +msgstr "" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +# ### ? +#: src/properties.cpp:1078 +msgid "Video Codec Settings" +msgstr "" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +msgid "Comment" +msgstr "Comentario" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned" +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned." +msgstr "" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +msgid "Composer Keywords" +msgstr "" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +msgid "Compressor" +msgstr "" + +#: src/properties.cpp:1088 +msgid "Video Compression Library Used" +msgstr "" + +#: src/properties.cpp:1089 +msgid "Video Compressor ID" +msgstr "" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +msgid "Compressor Version" +msgstr "" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +msgid "Container Type" +msgstr "" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm" +msgstr "" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de contraste aplicado " +"por la cámara cuando se tomó la imagen." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +msgid "Name of the country where the video was created." +msgstr "" + +#: src/properties.cpp:1101 +msgid "Creation Date" +msgstr "" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +msgid "Pixel Crop Left" +msgstr "" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +msgid "Pixel Crop Right" +msgstr "" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +msgid "Current Time" +msgstr "Hora actual" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" +"La fecha y hora cuando se almacenó la imagen en forma de datos digitales." + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +msgid "Date-Time Original" +msgstr "Fecha y Hora (original)" + +#: src/properties.cpp:1113 +msgid "Contains the production date" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" + +#: src/properties.cpp:1116 +msgid "Dimensions" +msgstr "" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +msgid "Director" +msgstr "" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +msgid "Doc Type" +msgstr "Tipo de documento" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +msgid "Doc Type Read Version" +msgstr "" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +msgid "Doc Type Version" +msgstr "" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "" + +#: src/properties.cpp:1125 +msgid "EBML Read Version" +msgstr "" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +# ## can be improved probably +#: src/properties.cpp:1126 +msgid "EBML Version" +msgstr "" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +msgid "End Timecode" +msgstr "" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +msgid "Equipment" +msgstr "" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +msgid "Exposure Compensation Information." +msgstr "" + +#: src/properties.cpp:1146 +msgid "Exposure Program Information." +msgstr "" + +#: src/properties.cpp:1147 +msgid "Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:1148 +msgid "Extended Content Description" +msgstr "" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID" +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "" + +#: src/properties.cpp:1151 +msgid "File Length" +msgstr "" + +#: src/properties.cpp:1151 +msgid "File length." +msgstr "" + +#: src/properties.cpp:1152 +msgid "File Name" +msgstr "Nombre del archivo" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +msgid "File Size" +msgstr "Tamaño del archivo" + +#: src/properties.cpp:1153 +msgid "File Size, in MB" +msgstr "" + +#: src/properties.cpp:1154 +msgid "File Type" +msgstr "" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +msgid "Frame Count" +msgstr "" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +msgid "Frame Height" +msgstr "" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +msgid "Frame Width" +msgstr "" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" +"Indica la dirección de la imágen cuando fue capturada. El rango de valores " +"va de 0.00 a 359.99." + +#: src/properties.cpp:1172 +msgid "Reference for image direction." +msgstr "" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +msgid "Graphics Mode" +msgstr "" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "Handler Description" +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "Handler Type" +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Component manufacturer." +msgstr "" + +#: src/properties.cpp:1186 +msgid "Video Height" +msgstr "" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +msgid "Information" +msgstr "" + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "" + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "" + +#: src/properties.cpp:1192 +msgid "Information Text." +msgstr "" + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "" + +#: src/properties.cpp:1193 +msgid "Information URL." +msgstr "" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +msgid "Junk Data" +msgstr "" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +msgid "Language." +msgstr "" + +#: src/properties.cpp:1198 +msgid "Length" +msgstr "" + +#: src/properties.cpp:1198 +msgid "The length of the media file." +msgstr "" + +#: src/properties.cpp:1200 +msgid "Lens Type." +msgstr "Tipo de lente" + +#: src/properties.cpp:1201 +msgid "Lightness" +msgstr "Brillo" + +#: src/properties.cpp:1201 +msgid "Lightness." +msgstr "Brillo" + +#: src/properties.cpp:1202 +msgid "Location Information" +msgstr "" + +#: src/properties.cpp:1202 +msgid "Location Information." +msgstr "" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Equipment Make" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +msgid "Camera Maker Note Type" +msgstr "" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +msgid "Camera Maker Note Version" +msgstr "" + +#: src/properties.cpp:1209 +msgid "Maker Note Version of the camera." +msgstr "" + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "Nota del fabricante" + +#: src/properties.cpp:1210 +msgid "Camera Manufacturer's URL." +msgstr "Fabricante" + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:1212 +msgid "Maximum Bit Rate" +msgstr "" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +msgid "Maximum Data Rate" +msgstr "" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "Media Track Duration" +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "Media Header Version" +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "Media Track Modify Date" +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +# ## large = grande. mean = promedio... context? +#: src/properties.cpp:1220 +msgid "Medium." +msgstr "" + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "Metadato" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +msgid "Metering mode." +msgstr "" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +# ### context? Panorama = Apaisado, Panorámica +#: src/properties.cpp:1225 +msgid "Mime Type" +msgstr "" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +msgid "QTime Minor FileType Version" +msgstr "" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +msgid "Equipment Model" +msgstr "" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:1228 +msgid "Modification Date-Time" +msgstr "" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +msgid "Movie Header Version" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +msgid "Number Of Colours" +msgstr "" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +msgid "Number Of Parts" +msgstr "" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +msgid "Organization" +msgstr "" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +msgid "Part" +msgstr "" + +#: src/properties.cpp:1248 +msgid "Part." +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +msgid "Performer Keywords" +msgstr "" + +#: src/properties.cpp:1250 +msgid "Performer Keywords." +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +msgid "Picture Control Data" +msgstr "" + +#: src/properties.cpp:1252 +msgid "Picture Control Data." +msgstr "" + +#: src/properties.cpp:1253 +msgid "Picture Control Version" +msgstr "" + +#: src/properties.cpp:1253 +msgid "Picture Control Data Version." +msgstr "" + +#: src/properties.cpp:1254 +msgid "Picture Control Name" +msgstr "" + +#: src/properties.cpp:1254 +msgid "Picture Control Name." +msgstr "" + +#: src/properties.cpp:1255 +msgid "Picture Control Base" +msgstr "" + +#: src/properties.cpp:1255 +msgid "Picture Control Data Base." +msgstr "" + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust" +msgstr "" + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust Information." +msgstr "" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjust" +msgstr "" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +msgid "Play Selection" +msgstr "" + +#: src/properties.cpp:1258 +msgid "Play Selection." +msgstr "" + +#: src/properties.cpp:1259 +msgid "Play Mode" +msgstr "" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +msgid "Poster Time" +msgstr "" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +msgid "Preview Atom Type" +msgstr "" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "" + +#: src/properties.cpp:1273 +msgid "Preview Date" +msgstr "" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +msgid "Preview Duration" +msgstr "" + +#: src/properties.cpp:1274 +msgid "The duration of the movie preview in movie time scale units" +msgstr "" + +#: src/properties.cpp:1275 +msgid "Preview Time" +msgstr "" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +msgid "The version of the movie preview " +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +msgid "Producer Keywords" +msgstr "" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +msgid "Production Aperture Width" +msgstr "" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +msgid "Production Aperture Height" +msgstr "" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "Producto" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "Producto." + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +msgid "Recording Copyright" +msgstr "" + +#: src/properties.cpp:1291 +msgid "Recording Copyright." +msgstr "" + +#: src/properties.cpp:1292 +msgid "Requirements" +msgstr "" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " +"por la cámara cuando se tomó la imagen." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "" + +#: src/properties.cpp:1297 +msgid "Selection Time" +msgstr "" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +msgid "Selection Duration" +msgstr "" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +msgid "Send Duration" +msgstr "" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +msgid "Software Version" +msgstr "Versión del Software" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "" + +#: src/properties.cpp:1304 +msgid "Song Writer" +msgstr "" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords." +msgstr "" + +#: src/properties.cpp:1307 +msgid "Source Credits" +msgstr "" + +#: src/properties.cpp:1307 +msgid "Source Credits." +msgstr "" + +#: src/properties.cpp:1308 +msgid "Source Form" +msgstr "" + +#: src/properties.cpp:1308 +msgid "Source Form." +msgstr "" + +#: src/properties.cpp:1309 +msgid "Source Image Height" +msgstr "Longitud de la imagen" + +# ### ? +#: src/properties.cpp:1310 +msgid "Source Image Width" +msgstr "Ancho de la imagen" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +msgid "Stream Count" +msgstr "" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "" + +#: src/properties.cpp:1315 +msgid "Stream Name" +msgstr "" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +msgid "Stream Quality" +msgstr "" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +msgid "Stream Sample Rate" +msgstr "" + +#: src/properties.cpp:1318 +msgid "Stream Sample Count" +msgstr "" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +msgid "Stream Type" +msgstr "" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +msgid "Subtitles Codec Information" +msgstr "" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +msgid "Subtitle Codec Settings" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords" +msgstr "Palabras Clave" + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords." +msgstr "Palabras Clave" + +#: src/properties.cpp:1330 +msgid "Subtitles Language" +msgstr "" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +msgid "Subject. " +msgstr "Sujeto" + +#: src/properties.cpp:1334 +msgid "TapeName." +msgstr "" + +#: src/properties.cpp:1335 +msgid "Tag Default Setting" +msgstr "" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +msgid "Tag Language" +msgstr "" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +msgid "Tag Name" +msgstr "" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +# ### context? Panorama = Apaisado, Panorámica +#: src/properties.cpp:1339 +msgid "Target Type" +msgstr "" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +msgid "Thumbnail Height" +msgstr "" + +#: src/properties.cpp:1341 +msgid "Preview Image Thumbnail Height." +msgstr "" + +#: src/properties.cpp:1342 +msgid "Preview Image Thumbnail Length." +msgstr "" + +#: src/properties.cpp:1343 +msgid "Thumbnail Width" +msgstr "" + +#: src/properties.cpp:1343 +msgid "Preview Image Thumbnail Width." +msgstr "" + +#: src/properties.cpp:1344 +msgid "Timecode Scale" +msgstr "" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "Time Offset" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +msgid "Time Scale" +msgstr "" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +msgid "Number Of Streams" +msgstr "" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Track" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "Track ID" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "Track Header Version" +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "Track Language" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +msgid "Video Track Modify Date" +msgstr "" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +msgid "Track Name" +msgstr "" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +msgid "Track Number." +msgstr "" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown Information" +msgstr "Informacíon desconocido" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +msgid "Video URL" +msgstr "" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +msgid "Vari Program" +msgstr "" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "Vendor ID" +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +msgid "Video Quality" +msgstr "" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Sample Size" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1380 +msgid "Video Scan Type" +msgstr "" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +msgid "White Balance Fine Tune." +msgstr "" + +#: src/properties.cpp:1385 +msgid "Video Width" +msgstr "" + +#: src/properties.cpp:1386 +msgid "Window Location" +msgstr "" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By" +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +msgid "Writing App" +msgstr "" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "Año" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "" + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +msgid "Balance" +msgstr "Balance" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "" + +#: src/properties.cpp:1399 +msgid "Bits Per Sample/ Bit Rate" +msgstr "" + +#: src/properties.cpp:1399 +msgid "Bits per test sample" +msgstr "" + +#: src/properties.cpp:1401 +msgid "Audio Codec" +msgstr "" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +msgid "Audio Codec Description" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +msgid "Audio Codec Information" +msgstr "" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +msgid "Audio Codec Settings" +msgstr "" + +#: src/properties.cpp:1408 +msgid "Audio Default Duration" +msgstr "" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Default Stream" +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On" +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +msgid "Audio Format" +msgstr "" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +msgid "Output Audio Sample Rate" +msgstr "" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +msgid "Audio Sample Count" +msgstr "" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title." +msgstr "" + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "" + +#: src/properties.cpp:1430 +msgid "Audio Track Duration" +msgstr "" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced" +msgstr "" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +msgid "Audio Track Layer" +msgstr "" + +#: src/properties.cpp:1439 +msgid "Audio Track Modify Date" +msgstr "" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "" + +#: src/properties.cpp:1449 +msgid "The nature or genre of the resource." +msgstr "" + +#: src/properties.cpp:1450 +msgid "Date Modified" +msgstr "" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "" + +#: src/properties.cpp:1451 +msgid "A language of the resource." +msgstr "" + +#: src/properties.cpp:1452 +msgid "License" +msgstr "" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +msgid "Rights Holder" +msgstr "Titular de los derechos" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" +"Una persona u organización propietaria o administradora de los derechos " +"sobreel recurso." + +#: src/properties.cpp:1454 +msgid "Access Rights" +msgstr "Derechos de acceso" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "Citación bibliográfica" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +msgid "References" +msgstr "Referencias" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" +"Un recurso relacionado que está referenciado, citado, o de alguna otra forma," +"referido por el recurso descrito." + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +msgid "Record" +msgstr "Registro" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +msgid "Institution ID" +msgstr "ID de la institución" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" +"Un identificador de la institución que custodia el espécimen o información " +"mencionada en el registro." + +#: src/properties.cpp:1475 +msgid "Collection ID" +msgstr "ID de la colección" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" +"Un identificador de la colección o conjunto de datos del que procede el " +"registro." + +#: src/properties.cpp:1478 +msgid "Institution Code" +msgstr "Código de la institución" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" +"El nombre (o acrónimo) en uso por la institución que tenga la custodia del " +"espécimen o información mencionada en el registro." + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "ID del conjunto de datos" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "Un identificador para el conjunto de datos." + +#: src/properties.cpp:1484 +msgid "Collection Code" +msgstr "Código de la colección" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" +"El nombre, acrónimo, código alfanumérico, o iniciales que identifican la " +"colección o conjunto de datos del que procede el registro." + +#: src/properties.cpp:1487 +msgid "Dataset Name" +msgstr "Nombre del conjunto de datos" + +#: src/properties.cpp:1488 +msgid "The name identifying the data set from which the record was derived." +msgstr "" +"El nombre que identifica el conjunto de datos del cual se derivó el registro." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "Código de la institución propietaria" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" +"El nombre (o acrónimo) en uso por la institución que tiene la propiedad del " +"objeto(s) o información consignada en el registro." + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "Base del registro" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" +"La naturaleza específica del registro de datos - un subtipo del Tipo. Se " +"recomienda el uso del vocabulario controlado Base del Registro (véase Anexo " +"1. Vocabularios controlados)." + +#: src/properties.cpp:1496 +msgid "Information Withheld" +msgstr "Información retenida" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" +"Información adicional que existe, pero que no ha sido compartida en el " +"registro dado." + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "Generalización de los datos" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" +"Las medidas adoptadas para que los datos compartidos sean menos específicos " +"o completos que en su forma original. Sugiere que datos alternativos de " +"mayor calidad pueden estar disponibles bajo petición." + +#: src/properties.cpp:1502 +msgid "Dynamic Properties" +msgstr "Propiedades dinámicas" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de las medidas, " +"hechos, características, o aseveraciones adicionales sobre el registro. Su " +"intención es proporcionar un mecanismo para contenido estructurado como " +"representación de los datos." + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +msgid "Occurrence ID" +msgstr "ID del Registro biológico" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" +"Un identificador del Registro biológico. En ausencia de un identificador " +"único global persistente, se debe construir uno a partir de una combinación " +"de identificadores en el registro de manera que el ID del Registro biológico " +"se aproxime a un identificador persistente." + +#: src/properties.cpp:1514 +msgid "Catalog Number" +msgstr "Número de catálogo" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" +"Un identificador (preferiblemente único) para el registro dentro del " +"conjunto de datos o colección." + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "Comentarios del registro biológico" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "Comentarios o anotaciones sobre el Registro biológico." + +#: src/properties.cpp:1523 +msgid "Record Number" +msgstr "Número del registro" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" +"Un identificador dado al Registro Biológico en el momento en que fue " +"registrado. A menudo sirve como un vínculo entre las anotaciones de campo y " +"la elaboración de un Registro biológico, como el número de un colector de " +"especímenes." + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "Registrado por" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los nombres de las " +"personas, grupos u organizaciones responsables de realizar el Registro " +"biológico. El colector u observador principal, especialmente uno que aplica " +"un identificador personal (Número del registro), se debe listar en primer " +"lugar." + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "ID del Individuo" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" +"Un identificador para un individuo o grupo de organismos individuales " +"representados en el Registro biológico. Pretende facilitar el remuestreo del " +"mismo individuo o grupo con fines de monitoreo." + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "Número de individuos" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" +"El número de individuos representados presente en el momento del Registro " +"Biológico." + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +msgid "Sex" +msgstr "Sexo" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"El sexo de la(s) entidad(es) biológica(s) representada(s) en el Registro " +"biológico." + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "Etapa de vida" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" +"La edad o etapa de vida de la(s) entidad(es) biológica(s) en el momento del " +"Registro biológico." + +#: src/properties.cpp:1547 +msgid "Reproductive Condition" +msgstr "Condición reproductiva" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" +"La condición reproductiva de la(s) entidad(es) biológica(s) representada(s) " +"en el Registro biológico." + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "Comportamiento" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" +"Una descripción del comportamiento mostrado por el sujeto en el momento del " +"Registro biológico." + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "Medios de establecimiento" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" +"El proceso por el cual la(s) entidad(es) biológica(s) representada(s) en el " +"Registro biológico se estableció en el lugar. Se recomienda el uso de un " +"vocabulario controlado." + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "Estado del registro biológico" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"Un estado sobre la presencia o ausencia de un taxón en una ubicación. Se " +"recomienda el uso del vocabulario controlado" + +#: src/properties.cpp:1559 +msgid "Preparations" +msgstr "Preparaciones" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de las preparaciones y " +"los métodos de conservación de un ejemplar o una muestra del ejemplar." + +#: src/properties.cpp:1562 +msgid "Disposition" +msgstr "Disposición" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" +"El estado actual de un espécimen en relación a la colección identificada en " +"Código de la colección o ID de la Colección. Se recomienda el uso de un " +"vocabulario controlado." + +#: src/properties.cpp:1565 +msgid "Other Catalog Numbers" +msgstr "Otros números de catálogo" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de números de " +"catálogos anteriores o alternos, u otros identificadores usado por personas " +"para el mismo Registro biológico, ya sea en el actual o cualquier otro " +"conjunto de datos o colección." + +#: src/properties.cpp:1568 src/properties.cpp:1607 +msgid "Previous Identifications" +msgstr "Identificaciones previas" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de asignaciones " +"anteriores de nombres al Registro biológico." + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "Medios asociados" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de identificadores " +"(publicación, identificador único global, URI) de los medios asociados con " +"el Registro biológico." + +#: src/properties.cpp:1574 +msgid "Associated References" +msgstr "Referencias asociadas" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los identificadores " +"(publicación, referencia bibliográfica, identificador único global, URI) de " +"la literatura asociada con el Registro biológico." + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "Registros biológicos asociados" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los identificadores " +"de otros registros biológicos y su relación con este Registro Biológico." + +#: src/properties.cpp:1580 +msgid "Associated Sequences" +msgstr "Secuencias asociadas" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los identificadores " +"(publicación, identificador único global, URI) de la información de la " +"secuencia genética asociada con el Registro biológico." + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "Taxones asociados" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los identificadores " +"o nombres de taxones y su asociación con el Registro biológico." + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +msgid "Organism Name" +msgstr "" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +msgid "Material Sample" +msgstr "Muestras materiales" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +msgid "Living Specimen" +msgstr "" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +msgid "Material Sample ID" +msgstr "" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +msgid "Event ID" +msgstr "ID del evento" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" +"Un identificador para el conjunto de información asociado con el Evento " +"(algo que ocurre en un lugar y tiempo)." + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +msgid "Event Date" +msgstr "Fecha del evento" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" +"La fecha o el intervalo durante el cual se produjo el Evento. Para los " +"registros biológicos, esta es la fecha cuando el evento se registró. No es " +"adecuado para una fecha en un contexto geológico." + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +msgid "Event Latest Date" +msgstr "" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +msgid "Event Time" +msgstr "Hora del evento" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "Hora del evento" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "Día inicial del año" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" +"El primer día ordinal del año en que ocurrió el Evento (1 para el 1 de " +"enero, 365 para el 31 de diciembre, excepto en un año bisiesto, en cuyo caso " +"es 366)." + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "Día final del año" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" +"El último día ordinal del año en que ocurrió el Evento (1 para el 1o de " +"enero, 365 para el 31 de diciembre, excepto en un año bisiesto, en cuyo caso " +"es 366)." + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" +"Los cuatro dígitos del año en que el Evento ocurrió, de acuerdo al " +"Calendario de la Era Común." + +#: src/properties.cpp:1670 +msgid "Month" +msgstr "Més" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "El mes ordinal en que ocurrió el evento." + +#: src/properties.cpp:1673 +msgid "Day" +msgstr "Día" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "El día en números enteros, del mes en que ocurrió el evento." + +#: src/properties.cpp:1676 +msgid "Verbatim Event Date" +msgstr "Fecha original del evento" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" +"La representación textual original de la información de fecha para el Evento." + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "Hábitat" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" +"Una categoría o la descripción del hábitat en el que ocurrió el Evento." + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "Protocolo de muestreo" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" +"El nombre de, la referencia a, o la descripción del método o protocolo usado " +"durante el Evento." + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "Esfuerzo de muestreo" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "La cantidad de esfuerzo realizado durante el Evento." + +#: src/properties.cpp:1688 +msgid "Sampling Size Value" +msgstr "" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +msgid "Field Number" +msgstr "Número de campo" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" +"Un identificador dado al Evento en campo. A menudo sirve como un vínculo " +"entre las anotaciones de campo y el Evento." + +#: src/properties.cpp:1697 +msgid "Field Notes" +msgstr "Notas de campo" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" +"Puede corresponder a: a) un indicador de la existencia de, b) una referencia " +"a (publicación, URI), o c) el texto de las notas tomadas en campo sobre el " +"Evento." + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "Comentarios del evento" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "Comentarios o anotaciones sobre el Evento." + +#: src/properties.cpp:1705 +msgid "Location Class" +msgstr "Ubicación" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +msgid "Location ID" +msgstr "ID de la ubicación" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" +"Un identificador para el conjunto de información de la ubicación (los datos " +"asociados a Ubicación). Puede ser un identificador único global o un " +"identificador específico para el conjunto de datos." + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "ID de la geografía superior" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" +"Un identificador de la región geográfica de la ubicación. Se recomienda " +"utilizar un identificador persistente de un vocabulario controlado como el " +"Tesauro Getty de Nombres Geográficos." + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "Geografía superior" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los nombres " +"geográficos menos específicos a la información capturada en el elemento " +"Localidad." + +#: src/properties.cpp:1718 +msgid "Continent" +msgstr "Continente" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "El nombre del continente en el que tiene lugar la Ubicación." + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "Cuerpo de agua" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" +"El nombre del cuerpo de agua en que tiene lugar la Ubicación. Se recomienda " +"el uso de un vocabulario controlado, como el Tesauro Getty de Nombres " +"Geográficos." + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "Grupo de islas" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" +"El nombre del grupo de islas en que tiene lugar la Ubicación. Se recomienda " +"utilizar un identificador persistente de un vocabulario controlado como el " +"Tesauro Getty de Nombres Geográficos." + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "Isla" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" +"El nombre de la isla en, o cerca al lugar de la ubicación. Se recomienda " +"utilizar un identificador persistente de un vocabulario controlado como el " +"Tesauro Getty de Nombres Geográficos." + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" +"El nombre del país o unidad administrativa de mayor jerarquía de la " +"ubicación." + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "El código estándar para el país de la ubicación." + +#: src/properties.cpp:1736 +msgid "State Province" +msgstr "Estado/Provincia" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" +"El nombre de la siguiente región administrativa de menor jerarquía que País " +"(estado, provincia, cantón, departamento, región, etc.) de la ubicación." + +#: src/properties.cpp:1739 +msgid "County" +msgstr "Condado" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" +"El nombre completo, sin abreviar de la siguiente región administrativa de " +"menor jerarquía que Estado/Provincia (condado, municipio, etc.) de la " +"ubicación." + +#: src/properties.cpp:1742 +msgid "Municipality" +msgstr "Municipalidad" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" +"El nombre completo, sin abreviar de la siguiente región administrativa de " +"menor jerarquía que condado (corregimiento, vereda, cabecera municipal, " +"inspección de policía, centro poblado, caserío, etc.) en el que tiene lugar " +"la ubicación." + +#: src/properties.cpp:1745 +msgid "Locality" +msgstr "Localidad" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" +"La descripción específica del lugar. Información geográfica de menor " +"especificidad puede ser provista en otros elementos geográficos (Geografía " +"Superior, Continente, País, Estado/Provincia, Condado, Municipalidad, Cuerpo " +"de Agua, Isla, Grupo Islas)." + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "Localidad original" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "La descripción textual original del lugar." + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "Elevación original" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" +"La descripción textual de la elevación (altitud, por lo general por encima " +"del nivel del mar) de la Ubicación." + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "Elevación mínima en metros" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" +"El límite inferior del rango de elevación (altitud, generalmente por encima " +"del nivel del mar), en metros." + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "Elevación máxima en metros" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" +"El límite superior del rango de elevación (altitud, generalmente por encima " +"del nivel del mar), en metros." + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "Profundidad original" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "La descripción textual de la profundidad bajo la superficie local." + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "Profundidad mínima en metros" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" +"La menor profundidad de un rango de profundidad por debajo de la superficie " +"local, en metros." + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "Profundidad máxima en metros" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" +"La mayor profundidad de un rango de profundidad por debajo de la superficie " +"local, en metros." + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "Distancia mínima de la superficie metros" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" +"La menor distancia en metros, en un rango de distancia desde una superficie " +"de referencia en dirección vertical. Utilice valores positivos para las " +"ubicaciones por encima de la superficie, valores negativos para ubicaciones " +"por debajo. Si las medidas de profundidad son proporcionadas, la superficie " +"de referencia es la ubicación determinada por la profundidad, de lo " +"contrario la superficie de referencia es la ubicación dada por la elevación." + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "Distancia máxima de la superficie metros" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" +"La mayor distancia en metros, en un rango de distancia desde una superficie " +"de referencia en dirección vertical. Utilice valores positivos para las " +"ubicaciones por encima de la superficie, valores negativos para las " +"ubicaciones por debajo. Si las medidas de profundidad son provistas, la " +"superficie de referencia es la ubicación determinada por la profundidad, de " +"lo contrario la superficie de referencia es la ubicación determinada por la " +"elevación." + +#: src/properties.cpp:1775 +msgid "Location According To" +msgstr "Ubicación de acuerdo con" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" +"La información sobre la fuente de la ubicación. Podría ser una publicación " +"(gacetero), institución o grupo de individuos." + +#: src/properties.cpp:1778 +msgid "Location Remarks" +msgstr "Comentarios de la ubicación" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "Comentarios o anotaciones sobre la ubicación." + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "Coordenadas originales" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" +"Las coordenadas espaciales textuales de la ubicación. El elipsoide de las " +"coordenadas, el datum geodésico, o el sistema de referencia espacial " +"completo (SRS) para estas coordenadas, debe ser documentado en SRS original, " +"y el sistema de coordenadas en Sistema original de coordenadas." + +#: src/properties.cpp:1784 +msgid "Verbatim Latitude" +msgstr "Latitud original" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" +"La latitud textual de la ubicación. El elipsoide de coordenadas, el datum " +"geodésico o el sistema de referencia espacial completo (SRS) para estas " +"coordenadas debe ser documentado en SRS original, y el sistema de " +"coordenadas en Sistema original de coordenadas." + +#: src/properties.cpp:1787 +msgid "Verbatim Longitude" +msgstr "Longitud original" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" +"La longitud textual de la ubicación. El elipsoide de coordinadas, datum " +"geodésico o el sistema de referencia espacial completo (SRS) para estas " +"coordenadas, debe ser documentado en SRS Original y el sistema de " +"coordenadas en Sistema original de coordenadas." + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "Sistema original de coordenadas" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" +"El sistema de coordenadas espaciales para Latitud original y Longitud " +"original o Coordenadas originales de la ubicación. Se recomienda el uso del " +"vocabulario controlado Sistema Original de Coordenadas (Véase Anexo 1. " +"Vocabularios Controlados)." + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "SRS original" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" +"El elipsoide, datum geodésico, o sistema de referencia espacial (SRS) en el " +"que se basan las coordenadas provistas en Latitud original y Longitud " +"original o Coordenadas originales. Se recomienda usar el código EPSG como un " +"vocabulario controlado para proporcionar un SRS, si se conoce. Caso " +"contrario, utilice un lenguaje controlado para el nombre o código del datum " +"geodésico, o un vocabulario controlado para el nombre o código del " +"elipsoide, si se conoce. Si ninguno de estos se conoce, utilice el valor " +"\"desconocido\"." + +#: src/properties.cpp:1796 +msgid "Decimal Latitude" +msgstr "Latitud decimal" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" +"La latitud geográfica (en grados decimales, utilizando el sistema de " +"referencia espacial provisto en Datum geodésico) del centro geográfico de " +"una ubicación. Los valores positivos se encuentran al norte del ecuador, los " +"valores negativos están al sur del mismo. Los valores admitidos se " +"encuentran entre -90 y 90, ambos incluidos." + +#: src/properties.cpp:1799 +msgid "Decimal Longitude" +msgstr "Longitud decimal" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" +"La longitud geográfica (en grados decimales, mediante el sistema de " +"referencia espacial provisto en Datum geodésico) del centro geográfico de " +"una ubicación. Los valores positivos se encuentran al este del meridiano de " +"Greenwich, los valores negativos se encuentran al oeste de la misma. Los " +"valores admitidos se encuentran entre -180 y 180, ambos incluidos." + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "Datum geodésico" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" +"El elipsoide, datum geodésico, o sistema de referencia espacial (SRS) en el " +"que se basan las coordenadas geográficas provistas en Latitud decimal y " +"Longitud decimal. Se recomienda usar el código EPSG como un lenguaje " +"controlado para proporcionar un SRS, si se conoce. Caso contrario, utilice " +"un lenguaje controlado para el nombre o código del datum geodésico, o " +"utilice un lenguaje controlado para el nombre o código del elipsoide, si se " +"conoce. Si ninguno de estos se conoce, utilice el valor \"desconocido\"." + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "Incertidumbre de las coordenadas en metros" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" +"La distancia horizontal (en metros) de la Latitud decimal y Longitud decimal " +"provistas describiendo el círculo más pequeño que contiene la totalidad de " +"la ubicación. Deje el valor vacío si la incertidumbre es desconocida, no se " +"puede estimar, o no es aplicable (porque no hay coordenadas). Cero no es un " +"valor válido para este elemento." + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "Precisión de las coordenadas" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" +"Una representación decimal de la precisión de las coordenadas provistas en " +"Latitud decimal y Longitud decimal." + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "Ajuste espacial del radio-punto" + +#: src/properties.cpp:1812 +#, fuzzy, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" +"La relación entre el área del radio-punto (Latitud decimal, Longitud decimal " +"e Incertidumbre de las coordenadas en metros) y el área de la verdadera " +"(original, o más específica) representación espacial de la ubicación. Los " +"valores válidos son 0, mayor que o igual a 1, o indefinido. Un valor de 1 es " +"una coincidencia exacta o superposición de 100%. Un valor de 0 se debe " +"utilizar si el radio-punto dado no contiene por completo la representación " +"original. El Ajuste espacial del radio-punto no está definido (y se debe " +"dejar en blanco) si la representación original es un punto sin incertidumbre " +"y la georreferencia dada no es ese mismo punto (sin incertidumbre). Si tanto " +"el original como la georreferencia dada están en el mismo punto, el Ajuste " +"espacial del radio-punto es 1." + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "WKT footprint" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" +"Una representación Well-Known Text (WKT) de la forma (footprint, geometría) " +"que define la ubicación. Una ubicación puede tener una representación de " +"radio-punto (véase Latitud decimal) y una representación footprint, y pueden " +"diferir entre sí." + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "SRS footprint" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" +"Una representación Well-Known Text (WKT) del sistema de referencia espacial " +"(SRS) para WKT footprint de la ubicación. No utilice este elemento para " +"describir el SRS de Latitud decimal y Longitud decimal, incluso si es la " +"misma que para WKT footprint - utilice el Datum geodésico en su lugar" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "Ajuste espacial de footprint" + +#: src/properties.cpp:1821 +#, fuzzy, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" +"La relación del área de footprint (WKT footprint) y el área de la verdadera " +"(original, o más específica) representación espacial de la ubicación. Los " +"valores válidos son 0, mayor que o igual a 1, o indefinido. Un valor de 1 es " +"una coincidencia exacta o superposición de 100%. Un valor de 0 debe ser " +"utilizado si el footprint dado no contiene la representación original " +"completamente. El Ajuste espacial de footprint es indefinido (y se debe " +"dejar en blanco) si la representación original es un punto y la " +"georreferencia dada no es ese mismo punto. Si el original y la " +"georreferencia dada son el mismo punto, el Ajuste espacial de footprint es 1." + +#: src/properties.cpp:1823 +msgid "Georeferenced By" +msgstr "Georreferenciado por" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" +"Una lista (en una fila continua y separada por “;â€) de los nombres de las " +"personas, grupos u organizaciones que determinaron la georreferencia " +"(representación espacial) para la ubicación." + +#: src/properties.cpp:1826 +msgid "Georeferenced Date" +msgstr "Fecha de georreferenciación" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"La fecha en que fue georreferenciada la ubicación. Se recomienda utilizar un " +"esquema de codificación, tal como la norma ISO 8601:2004 (E)." + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "Protocolo de georreferenciación" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" +"Una descripción o referencia a los métodos utilizados para determinar el " +"footprint espacial, coordenadas, e incertidumbres." + +#: src/properties.cpp:1832 +msgid "Georeference Sources" +msgstr "Fuentes de georreferenciación" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" +"Una lista (en una fila continua y separada por “;â€) de los mapas, gaceteros, " +"u otros recursos utilizados para georreferenciar la ubicación, lo " +"suficientemente específica como para permitir que cualquier persona en el " +"futuro utilice los mismos recursos." + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "Estado de la verificación de la georreferenciación" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" +"Una descripción categórica de la medida en que se ha verificado la " +"georreferencia para representar, de la mejor manera, la descripción " +"espacial. Se recomienda el uso del vocabulario controlado Estado de " +"Verificación de la Georreferenciación (Véase Anexo 1. Vocabularios " +"Controlados)." + +#: src/properties.cpp:1838 +msgid "Georeference Remarks" +msgstr "Comentarios de la georreferenciación" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" +"Anotaciones o comentarios acerca de la determinación de la descripción " +"espacial, los supuestos hechos que explican las adiciones formalizadas en el " +"método referido en Protocolo de georreferenciación." + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "Contexto geológico" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "ID del contexto geológico" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" +"Un identificador para el conjunto de la información asociada con un Contexto " +"geológico (la ubicación dentro de un contexto geológico, tal como " +"estratigrafía). Puede ser un identificador único global o un identificador " +"específico para el conjunto de datos." + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "Eón temprano o eonotema inferior" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"El nombre completo del eón geocronológico más temprano o el eratema " +"cronoestratigráfico más bajo, o el nombre informal (\"Precámbrico\") " +"atribuible al horizonte estratigráfico donde se recolectó el objeto " +"catalogado." + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "Eón tardío o eonotema superior" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"El nombre completo del eón geocronológico más tardío o el eratema " +"cronoestratigráfico más alto posible, o el nombre informal (\"Precámbrico\") " +"atribuible al horizonte estratigráfico donde se recolectó el objeto " +"catalogado." + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "Era temprana o eratema inferior" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo de la era geocronológica más temprana o el eratema " +"cronoestratigráfico más bajo, atribuible al horizonte estratigráfico donde " +"se recolectó el objeto catalogado." + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "Era tardía o eratema superior" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo de la era geocronológica más tardía o el eratema " +"cronoestratigráfico más alto posible, atribuible al horizonte estratigráfico " +"donde se recolectó el objeto catalogado." + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "Periodo temprano o sistema inferior" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo del periodo geocronológico más temprano posible o el " +"sistema cronoestratigráfico más bajo, atribuible al horizonte estratigráfico " +"donde se recolectó el objeto catalogado." + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "Periodo tardío o sistema superior" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo del período geocronológico más tardío posible o del " +"sistema cronoestratigráfico más alto, atribuible al horizonte estratigráfico " +"donde se recolectó el objeto catalogado." + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "Época temprana o serie inferior" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo de la época geocronológica más temprana o la serie " +"cronoestratigráfica más baja posible, atribuible al horizonte estratigráfico " +"donde se recolectó el objeto catalogado." + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "Época tardía o serie superior" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo de la época geocronológica más tardía posible o la serie " +"cronoestratigráfica más alta, atribuible al horizonte estratigráfico donde " +"se recolectó el objeto catalogado." + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "Edad temprana o piso inferior" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo de la edad geocronológica más temprana posible o piso " +"cronoestratigráfico más bajo, atribuible al horizonte estratigráfico donde " +"se recolectó el objeto catalogado." + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "Edad tardía o piso superior" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"El nombre completo de la edad geocronológica más tardía posible o piso " +"cronoestratigráfico más alto, atribuible al horizonte estratigráfico donde " +"se recolectó el objeto catalogado." + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "Zona bioestratigráfica inferior" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"El nombre completo de la zona geológica bioestratigráfica más baja posible " +"del horizonte estratigráfico donde se recolectó el objeto catalogado." + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "Zona bioestratigráfica superior" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"El nombre completo de la zona geológica bioestratigráfica más alta posible " +"del horizonte estratigráfico donde se recolectó el objeto catalogado." + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "Términos litoestratigráficos" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" +"La combinación de todos los nombres litoestratigráficos de la roca de donde " +"se colectó el objeto catalogado." + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "Grupo" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" +"El nombre completo del grupo litoestratigráfico del cual se colectó el " +"objeto catalogado." + +#: src/properties.cpp:1892 +msgid "Formation" +msgstr "Formación" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" +"El nombre completo de la formación litoestratigráfica de la cual se colectó " +"el objeto catalogado." + +#: src/properties.cpp:1895 +msgid "Member" +msgstr "Miembro" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" +"El nombre completo del miembro litoestratigráfico del cual se colectó el " +"elemento catalogado." + +#: src/properties.cpp:1898 +msgid "Bed" +msgstr "Capa" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" +"El nombre completo de la capa litoestratigráfica de la cual se colectó el " +"elemento catalogado." + +#: src/properties.cpp:1903 +msgid "Identification" +msgstr "Identificación" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +msgid "Identification ID" +msgstr "ID de la identificación" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" +"Un identificador para la identificación (el cuerpo de la información " +"asociada con la asignación de un nombre científico). Puede ser un " +"identificador único global o un identificador específico para el conjunto de " +"datos." + +#: src/properties.cpp:1910 +msgid "Identified By" +msgstr "Identificado por" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" +"Una lista (en una fila continua y separada por “;â€) de los nombres de las " +"personas, grupos u organizaciones que identificaron la entidad biológica." + +#: src/properties.cpp:1913 +msgid "Date Identified" +msgstr "Fecha de la identificación" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" +"La fecha en que fue identificada la entidad biológica como representativa " +"del taxón. Se recomienda utilizar un esquema de codificación, como la norma " +"ISO 8601:2004 (E)." + +#: src/properties.cpp:1916 +msgid "Identification References" +msgstr "Referencias de la identificación" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de las referencias " +"(publicación, identificador único global, URI) usadas en la identificación." + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "Estado de la verificación de la identificación" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" +"Un indicador categórico del alcance de la verificación de la identificación " +"taxonómica. Se recomienda el uso de un vocabulario controlado, como los " +"usados en HISPID/ABCD." + +#: src/properties.cpp:1922 +msgid "Identification Remarks" +msgstr "Comentarios de la identificación" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "Comentarios o notas sobre la identificación." + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "Calificador de la identificación" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" +"Una breve frase o término estándar (\"cf.\",\"aff.\") para expresar las " +"dudas del determinador sobre la identificación." + +#: src/properties.cpp:1928 +msgid "Type Status" +msgstr "Estado del tipo" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los tipos de " +"nomenclatura (estado del tipo, nombre científico tipificado, publicación) " +"aplicados a la entidad biológica." + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "Taxón" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "ID del Taxón" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" +"Un identificador para el conjunto de información del taxón (datos asociados " +"a la clase del Taxón)." + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "ID del nombre científico" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" +"Un identificador de los detalles de la nomenclatura (no taxonómica) de un " +"nombre científico." + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "ID del nombre aceptado usado" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" +"Un identificador para el uso del nombre (significado del nombre, documentado " +"de acuerdo con alguna fuente) del taxón actualmente válido (zoológico) o " +"aceptado (botánico)." + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "ID del Nombre Parental usado" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" +"Un identificador para el uso del nombre (significado documentado del nombre " +"de acuerdo con una fuente) del taxón parental directo, más próximo de nivel " +"superior (en una clasificación) del elemento más específico de Nombre " +"científico." + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "ID del Nombre original usado" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" +"Un identificador para el uso del nombre (significado documentado del nombre " +"de acuerdo con una fuente) en el que se estableció originalmente, el " +"elemento terminal de Nombre científico bajo las reglas del Código " +"Nomenclatural asociado." + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "ID del nombre de acuerdo con" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" +"Un identificador de la fuente en la que está definida o implícita la " +"circunscripción conceptual del taxón específico. Véase Nombre de acuerdo con." + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "ID del nombre publicado en" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" +"Un identificador de la publicación en que se estableció originalmente el " +"Nombre científico bajo las reglas del Código Nomenclatural asociado." + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "ID del concepto del taxón" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" +"Un identificador para el concepto taxonómico al que se refiere el registro, " +"no para los detalles de nomenclatura de un taxón." + +#: src/properties.cpp:1961 +msgid "Scientific Name" +msgstr "Nombre científico" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" +"El nombre científico completo, con información de autoría y fecha si se " +"conoce. Al formar parte de una identificación, este debe ser el nombre en la " +"categoría del taxón de menor nivel que pueda ser determinado. Este elemento " +"no debe contener calificadores de identificación, estos deberían ser " +"suministrados en el elemento Calificador de la identificación." + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "Nombre aceptado usado" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" +"El nombre completo, con autoría e información de fecha si se conoce, del " +"taxón actualmente válido (zoológico) o aceptado (botánico)." + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "Nombre parental usado" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" +"El nombre completo, con información de autoría y fecha si se conoce, del " +"taxón parental directo más próximo de nivel superior (en una clasificación) " +"del elemento más específico de Nombre científico." + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "Nombre original usado" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" +"El nombre del taxón, con información de autoría y fecha si se conoce, tal " +"como apareció originalmente cuando se estableció por primera vez bajo las " +"reglas del Código Nomenclatural asociado. El basiónimo (botánica) o basónimo " +"(bacteriología) de Nombre científico o el homónimo anterior de los nombres " +"sustituidos." + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "Nombre de acuerdo con" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" +"La referencia a la fuente en la que está definida o implícita la " +"circunscripción conceptual del taxón - tradicionalmente representado por el " +"Latín \"sensu\" o \"sec.\" (de secundum, que significa \"según\"). Para los " +"taxones que resultan de las identificaciones, una referencia a las claves, " +"monografías, expertos y otras fuentes debe ser provista." + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "Nombre publicado en" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" +"Una referencia para la publicación en que se estableció originalmente el " +"Nombre científico bajo las reglas del Código Nomenclatural asociado." + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "Nombre publicado en el año" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "El año de cuatro dígitos en el que se publicó el Nombre científico." + +#: src/properties.cpp:1982 +msgid "Higher Classification" +msgstr "Clasificación superior" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los nombres de los " +"taxones que terminan en la categoría inmediatamente superior al del taxón de " +"referencia en el registro del taxón. Se recomienda ordenar la lista " +"comenzando con la categoría más alta y separando los nombres de cada " +"categoría, con un punto y coma (\";\")." + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "Reino" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "El nombre científico completo del reino al que pertenece el taxón." + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "Filo" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" +"El nombre científico completo del filo o división al que pertenece el taxón." + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "Clase" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "El nombre científico completo de la clase al que pertenece el taxón." + +#: src/properties.cpp:1994 +msgid "Order" +msgstr "Orden" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "El nombre científico completo del orden al que pertenece el taxón." + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "Familia" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "El nombre científico completo de la familia al que pertenece el taxón." + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "Género" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "El nombre científico completo del género al que pertenece el taxón." + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "Subgénero" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" +"El nombre científico completo del subgénero al que pertenece el taxón. Los " +"valores deben incluir el género para evitar la confusión de homonimia." + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "Epíteto Específico" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "El nombre del epíteto específico de Nombre científico." + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "Epíteto infraespecífico" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" +"El nombre del epíteto infraespecífico más bajo o terminal del Nombre " +"científico, excluyendo cualquier otra denominación de categoría." + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "Categoría del taxón" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"La clasificación taxonómica del nombre más específico en el Nombre " +"científico." + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "Categoría original del taxón" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" +"La categoría del taxón del nombre más específico en un nombre científico tal " +"y como aparece en el registro original." + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "Autoría del nombre científico" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" +"La información de autoría del Nombre científico formateado de acuerdo a las " +"convenciones del Código Nomenclatural aplicable." + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "Nombre común" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "Un nombre común o vernacular." + +#: src/properties.cpp:2024 +msgid "Nomenclatural Code" +msgstr "Código nomenclatural" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" +"El código nomenclatural (o códigos en el caso de un nombre ambireinal) en " +"virtud del cual se construye el Nombre científico." + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "Estado taxonómico" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" +"El estado de la utilización de Nombre científico como una etiqueta para un " +"taxón. Requiere opinión taxonómica para definir el alcance de un taxón. Dado " +"lo anterior, se utilizan reglas de prioridad para definir el estado " +"taxonómico de la nomenclatura contenida en ese enfoque, junto con la opinión " +"de los expertos. Debe estar vinculado a una referencia sobre taxonomía " +"específica que defina el concepto." + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "Estado nomenclatural" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" +"El estado relacionado con la publicación original del nombre y su " +"conformidad con las normas pertinentes de nomenclatura. Se basa " +"esencialmente en un algoritmo de acuerdo con las reglas de negociación del " +"código. No requiere opinión taxonómica." + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "Comentarios del taxón" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "Comentarios o notas sobre el taxón o nombre." + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "Relación del recurso" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "ID de la relación del recurso" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" +"Un identificador para una instancia de relación entre un recurso (el sujeto) " +"y otro (Recurso relacionado, el objeto)." + +#: src/properties.cpp:2045 +msgid "Resource ID" +msgstr "ID del recurso" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "Un identificador para el recurso que es el sujeto de la relación." + +#: src/properties.cpp:2048 +msgid "Related Resource ID" +msgstr "ID del recurso relacionado" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" +"Un identificador para un recurso relacionado (el objeto, en lugar del sujeto " +"de la relación)." + +#: src/properties.cpp:2051 +msgid "Relationship Of Resource" +msgstr "Relación del recurso" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" +"La relación del recurso identificado por el ID del recurso relacionado con " +"el sujeto (opcionalmente identificado por ID del Recurso). Se recomienda el " +"uso de un lenguaje controlado." + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "Relación de acuerdo con" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" +"La fuente (persona, organización, publicación, referencia) que establece la " +"relación entre los dos recursos." + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "Fecha de establecimiento de la relación" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" +"La fecha en que se estableció la relación entre los dos recursos. Se " +"recomienda utilizar un esquema de codificación, tal como la norma ISO " +"8601:2004 (E)." + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "Comentarios de la relación" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "Comentarios o anotaciones sobre la relación entre los dos recursos." + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "Medición o hecho" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +msgid "Measurement ID" +msgstr "ID de la medición" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" +"Un identificador para la Medición o hecho (la información relativa a las " +"mediciones, hechos, características o aseveraciones). Puede ser un " +"identificador único global o un identificador específico para el conjunto de " +"datos." + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "Tipo de medición" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"La naturaleza de la medición, hecho, característica o aseveración. Se " +"recomienda el uso de un vocabulario controlado." + +#: src/properties.cpp:2075 +msgid "Measurement Value" +msgstr "Valor de la medición" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "El valor de la medición, hecho, característica o aseveración." + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "Precisión de la medición" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" +"La descripción de los errores potenciales asociados con Valor de la medición." + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "Unidad de medición" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" +"Las unidades asociadas con Valor de la medición. La práctica recomendada es " +"utilizar el Sistema Internacional de Unidades (SI)." + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "Fecha de la determinación de la medición" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"La fecha en que se realizó la medición o hecho. La práctica recomendada es " +"utilizar un esquema de codificación, como la norma ISO 8601:2004 (E)." + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "Medición determinada por" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" +"Una lista (en una fila continua y separada por \";\") de los nombres de las " +"personas, grupos u organizaciones que determinan el valor de Medición o " +"hecho." + +#: src/properties.cpp:2090 +msgid "Measurement Method" +msgstr "Método de medición" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" +"Una descripción o referencia (publicación, URI) del método o protocolo " +"utilizado para determinar la medición, hecho, característica o aseveración." + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "Comentarios de la medición" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "Comentarios o notas que acompañan a la medición o hecho." + +#: src/properties.cpp:2101 +msgid "A brief description of the file" +msgstr "La descripción corto del archivo" + +#: src/properties.cpp:2102 +msgid "Date Time" +msgstr "Fecha y hora" + +#: src/properties.cpp:2103 +msgid "The name of the author or photographer" +msgstr "" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "Notas" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Categories" +msgstr "Categorías" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Modo de resolución" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Modo de resolución" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Modo autoenfoque" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Modo autoenfoque" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Configuración de foco" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Configuración de foco" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "rango de lente" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Rango de distancia focal de lente" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Sombra" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Realce" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Luz de relleno" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "Luz de relleno X3" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Ajuste de color" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Ajuste de color" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Modo de ajuste" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Modo de ajuste" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Disparo múltiple" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Auto horquillado (Auto bracket)" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Etiqueta SigmaMakerNote desconocida" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-Segmento" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "Lv1 avanzado" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "Lv2 avanzado" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "Lv3 avanzado" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "Lv4 avanzado" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "Lv5 avanzado" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "Escena nocturna / crepúsculo" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "Obturador alta velocidad" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Retrato crepuscular" + +#: src/sonymn.cpp:157 +msgid "Soft Snap / Portrait" +msgstr "" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "Disparador de sonrisas" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "Alta Sensibilidad" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "Deportes" + +#: src/sonymn.cpp:166 +msgid "Sweep Panorama" +msgstr "" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "Anti distorsion de movimiento" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "Correccion HDR Backlight" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +msgid "Background Defocus" +msgstr "" + +#: src/sonymn.cpp:173 +msgid "Soft Skin" +msgstr "" + +#: src/sonymn.cpp:174 +msgid "3D Image" +msgstr "ID 3D" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "Plus" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Fluorescente blanco" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "" + +#: src/sonymn.cpp:217 +msgid "Incandescent2" +msgstr "" + +#: src/sonymn.cpp:218 +msgid "Warm White Fluorescent" +msgstr "" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Bajo el agua 1 (agua azul)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Bajo el agua 2 (agua verde)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "Auto enfoque permanente" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "Centrar AF" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "Enfoque automático Spot" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "Autoenfoque de punto flexible" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "Autofocus Touch" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "Enfoque manual" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "Cara detectada" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "Modo de ráfaga múltiple" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "Anchura de imagen de ráfaga múltiple" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "Altura de imagen de ráfaga múltiple" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Información de disparo" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "ID modelo Sony" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "Reproducción de color" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Tamaño de la imagen" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Tamaño de vista previa" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Tamaño de imagen previa" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "Autoenfoque Iluminador" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Modo de liberación" + +#: src/sonymn.cpp:464 +msgid "Shot number in continuous burst mode" +msgstr "Número de dispáros en modo ráfaga contínua" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "anti-borroso" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "Modo auto inteligente" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "Etiqueta Sony 1 MakerNote desconocida" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Alta continuidad" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Baja continuidad" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "Ráfaga con optimizador D-Range bajo" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "Otoño" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "Imagen Digital Avanzada" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "Caja de estilos 1" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "Automático sin flash" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "Estilo creativo" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "Valor de zona coincidente" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "Disparador con AF" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "Reducción de ruido ISO alto" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Estilo de imagen" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Etiqueta de configuraciones de cámara Sony1 desconocida" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Etiqueta de configuraciones 2 de cámara Sony1 desconocido" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Sección desconocida" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Estructura de datos de la imagen" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Desplazamiento de grabación" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Caracteristicas de datos de la imagen" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Otros datos" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Estructura de datos Exif" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Configuración de la imagen" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Información de usuario" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Archivo relacionado" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Fecha y hora" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Condiciones de toma de la fotografía" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Información GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Información de interoperatibidad" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Información específica del vendedor" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Etiquetas Adobe DNG" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Etiquetas Panasonic Raw" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "Etiquetas TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "Etiquetas TIFF PageMaker 6.0" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Etiquetas Adobe OPI" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Última sección" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Imagen primaria" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Miniatura/Vista previa" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Imagen principal, archivo multi páginas" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Miniatura / Vista previa, archivo multipagina" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Máscara de transparencia, imagen principal" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Miniatura / Vista previa, máscara de transparencia" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Imagen principal, Archivo multi-página, Máscara de transparencia" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" +"Imagen miniatura/ Vista previa, Archivo multi-página, Máscara de " +"transparencia" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "datos de imagen de alta resolución" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "datos de imagen de baja resolución" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "Una única página de una imagen multipágina" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "pulgada" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Grupo 3 Fax" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Grupo 4 Fax" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW (compresión sin pérdidas para tiff)" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (estilo antiguo)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG B/N" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "Color JBIG" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "Próximos 2-bits RLE" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF comprimido" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "Epson ERF Comprimido" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Padding" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "Imagen Monocromática IT8" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "Línea de arte binaria IT8" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (10-bits LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-bits ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar descomprimido" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Codificación Kodak DCS" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "Registro SCI de luminancia RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "Registro SGI de 24 bits empaquetados" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF comprimido" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR comprimido" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF comprimido" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "el blanco es el cero" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "el negro es el cero" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RVA" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Paleta RVA (RGB)" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Máscara de transparencia" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "TCvCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Matriz de filtro de color" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Raw lineal" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "Sin tramado o semitonos" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "Ordenado dither o técnica de semitono" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Proceso aleatorio" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "arriba - izquierda" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "arriba - derecha" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "abajo - derecha" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "abajo - izquierda" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "izquierda - arriba" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "derecha - arriba" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "derecha - abajo" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "izquierda, abajo" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "No se ha usado esquema de predicción" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Diferenciación horizontal" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "sin CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "datos enteros no firmados" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "Datos enteros de complemento a dos firmados" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "Datos de coma flotante IEEE" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "Formato de datos indefinido" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "No indexado" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "Indexado" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Centrado" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Co-situado" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Sin flash" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "Disparado, luz de retorno no detectada" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "Disparado, luz de retorno detectada" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Si, no se disparó" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Si, obligatorio" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Si, modo obligatorio del flash, luz de retorno no detectada." + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Si, modo obligatorio del flash, luz de retorno detectada." + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "No, modo compulsivo" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "No se disparó, luz de retorno no detectada" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "No, automático" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Si, automático" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Si, automático, luz de retorno no detectada" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Si, automático, luz de retorno detectada." + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Sin función de flash." + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "No, sin función de flash" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Si, reducción de ojos rojos" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Si, modo de reducción de ojos rojos, luz de retorno no detectada." + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Si, modo de reducción de ojos rojos, luz de retorno detectada." + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Si, modo obligatorio del flash, modo de reducción de ojos rojos." + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Si, modo obligatorio del flash, modo de reducción de ojos rojos, luz de " +"retorno no detectada." + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" +"Si, modo obligatorio del flash, modo de reducción de ojos rojos, luz de " +"retorno detectada." + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "No, reducción de ojos rojos" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "No, automático, reducción de ojos rojos" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Si, automático, modo de reducción de ojos rojos." + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Sí, automático, reducción de ojos rojos, luz de retorno no detectada" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Sí, automático, reducción de ojos rojos, luz de retorno detectada" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Escena rectangular (o cuadrada)" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" +"Disposición intercalada A: aplica un desplazamiento de media fila abajo a " +"las columnas pares" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" +"Disposición intercalada B: aplica un desplazamiento de media fila arriba a " +"las columnas pares" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" +"Disposición intercalada C: aplica un desplazamiento de media columna a la " +"derecha a las filas pares" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" +"Disposición escalonada B: incluso las filas se compensan a la izquierda por " +"1/2 columna" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Procesando software" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "Nombre y versión del software usado para post-procesar la imágen" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Nuevo tipo de subarchivo" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Indicación general del tipo de datos contenido" + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"Una indicación general del tipo de datos contenidos en éste subdocumento. En " +"desusousar el campo NewSubfileType en su lugar." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"La cantidad de columnas de los datos de la imagen, igual al número de " +"píxeles por fila. En datos comprimidos JPEG se usa un marcador JPEG en vez " +"de esta etiqueta." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"La cantidad de filas de datos de la imagen. En datos comprimidos JPEG se " +"utiliza un marcador JPEG en vez de esta etiqueta." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bits por muestra" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"La cantidad de bits por componente de imagen. En este estándar cada " +"componente de imagen es 8 bits, por lo que el valor de esta etiqueta es 9. " +"Vea también . En datos comprimidos JPEG se utiliza un " +"marcador JPEG en vez de esta etiqueta." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"El esquema de compresión usado para los datos de la imagen. Cuando una " +"imagen primaria está comprimida con JPEG, esto no es necesario y se omite. " +"Cuando las miniaturas utilizan compresión JPEG, el valor de esta etiqueta es " +"6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"La composición del pixel. En datos comprimidos JPEG se utiliza un marcador " +"JPEG en vez de esta etiqueta." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" +"Para TIFFs en blanco y negro, la técnica usada para convertirlos tonos de " +"grís en pixeles blancos o negros (puros)." + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "Anchura de celda" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" +"Ancho de la matriz de dithering o semitonos usada para crear archivo al que " +"se le aplica dithering o semitonos de dos niveles" + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "Tamaño de celda" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" +"Longitud de la matriz de dithering o semitonos usada para crear archivo al " +"que se le aplica dithering o semitonos de dos niveles" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Orden de llenado" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Órden lógico de bits dentro de un byte" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Nombre del documento" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Nombre del documento con el que esta imagen fue explorada" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Una cadena de caracteres que da título a la imagen. Puede ser un comentario " +"como \"picnic de 1988\" o algo por el estilo. No se permiten caracteres " +"codificados con 2 bytes, si se necesita un código de 2 bytes debe usarsela " +"etiqueta privada Exif ." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"El fabricante del equipo. Este es el fabricante del DSC, escáner, " +"digitalizador de vídeo u otro equipo que generó la imagen. Cuando el campo " +"se deja en blanco, se trata como desconocido." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"El nombre o número de modelo del equipo. Este es el nombre del modelo o " +"número del DSC, escáner, digitalizador de vídeo u otro equipo que generó la " +"imagen. Cuando el campo se deja en blanco, se trata como desconocido." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"El desplazamiento en bytes de cada tira. Se recomienda que se seleccione de " +"manera tal que la cantidad de bytes de la tira no exceda 64 Kbytes. Con " +"datos comprimidos JPEG esto no es necesario y se omite. Vea también " +" y ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "La orientación de la imagen vista en términos de filas y columnas." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Muestras por pixel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"El número de componentes por pixel. Desde que este estándar se aplica a " +"imágenes RGB e YCbCr, el valor de esta etiqueta es 3. En JPEG comprimidos se " +"utiliza un marcador JPEG en vez de esta etiqueta." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Filas por tira" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"La cantidad de filas por tira. Esta es la cantidad de filas en la imagen de " +"una tira cuando se divide a la imagen en tiras. En JPEG comprimidos esto no " +"es necesario y se omite. Vea también y ." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Cantidad de bytes por tira" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"La cantidad total de bytes en cada tira. Innecesaria y se omite en datos " +"comprimidos JPEG." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Resolución X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"La cantidad de píxeles por en la dirección . " +"Cuando se desconoce la resolución de una imagen, se utilizan 72 [dpi]." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Resolución Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"La cantidad de pixels por en la dirección . Se " +"utiliza el mismo valor que ." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Indica si los componentes de pixel se graban en formato planar o por trozos. " +"En datos comprimidos JPEG se utiliza un marcador JPEG en vez de esta " +"etiqueta. Si este campo no existe, se asume el predeterminado de TIFF, 1 " +"(por trozos)." + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "Unidad de respuesta de grises" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "Precisión de la información contenida en GrayResponseCurve. " + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "Curva de respuesta de grises" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" +"Densidad óptica de cada posible valor del pixel con datos en escala de grís." + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "Opciones T4" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "T.4-Opciones de codificación." + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "Opciones T6" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "T.6-Opciones de codificación." + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"La unidad para medir tanto como (Es la misma " +"para ambas). Si la resolución de la imagen se desconoce, se designa 2 " +"(pulgadas)." + +#: src/tags.cpp:537 +msgid "Page Number" +msgstr "" + +#: src/tags.cpp:538 +msgid "The page number of the page from which this image was scanned." +msgstr "Numero de pagina desde el que se ha escaneado ésta imágen" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Una función de transferencia para la imagen, descripta en forma tabular. " +"Normalmente esta etiqueta no es necesaria, ya que el espacio de color se " +"especifica en la etiqueta de información de espacio de color ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Esta etiqueta registra el nombre y la versión del software o firmware de la " +"cámara o dispositivo de entrada de imagen usado para generar la imágen. No " +"se especifica el formato detallado, pero se recomienda que se siga el " +"ejemplo mostrado debajo. Tratado como desconocido si el campo se deja en " +"blanco." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"La fecha y hora de la creación de la imagen. En el estándar Exif es la fecha " +"y hora en la que cambió el archivo." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Esta etiqueta registra el nombre del dueño de la cámara, fotógrafo o creador " +"de la imagen. No se especifica el formato detallado, pero se recomienda que " +"se escriba la información en como en el ejemplo de abajo para facilitar la " +"inter-operabilidad. Cuando el campo se deja en blanco, se trata como " +"desconocido. P.e. \"Propietario de la cámara, Pedro López, Juan Amor; " +"fotógrafo, Miguel Moreno; creador de la imagen, Luis Téllez\"" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "Equipo anfirtrión" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Esta etiqueta guarda información sobre la computadora huesped usada para " +"generar la imágen." + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Predictor" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" +"Operador matemático aplicado a la imagen antes de que se aplique un sistema " +"de codificación." + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"La cromaticidad del punto blanco de la imagen. Normalmente esta etiqueta no " +"es necesaria ya que el espacio de color se especifica en la etiqueta de " +"información del espacio de color ()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"La cromaticidad de los tres colores primarios de la imagen. Innecesaria " +"normalmente, ya que el espacio de color se especifica en la etiqueta de " +"información del espacio de color ()." + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Mapa de color" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" +"Mapa de colores para las imágenes con paleta de color. Este campo define un " +"mapa de colores RGB (normalmente llamada tabla de búsqueda) para este tipo " +"de imágenes. En una imagen con paleta de color, se usa el valor de un píxel " +"para indexar el mapa de colores." + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "Consejos de semitono" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" +"El propósito del campo HalftoneHints es transmitir a la función de medios " +"tonos la gama de niveles de gris en una imagen colorimétricamente " +"especificada que debe conservar los detalles tonales." + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Ancho de celda" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" +"El ancho del mosaico en píxeles, es el número de columnas en cada mosaico" + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Longitud de celda" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" +"La altura del mosaico en píxeles, es el número de filas en cada mosaico" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Desplazamientos de celda" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"Byte de desplazamiento para cada celda comprimido y guardado en disco. El " +"desplazamiento se especifica con respecto al inicio del archivo TIFF. Cabe " +"tener en cuenta que cada celda está localizada independientemente del resto." + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Cuenta de bytes de celda" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"Número de bytes (comprimidos) en cada celda. Ver TileOffsets " +"(desplazamientos de celda) para obtener una descripción de cómo se ordenan " +"las cuentas de byte." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "Compensaciones subIFD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"Definido por Adobe Corporation para activar árboles TIFF dentro de archivos " +"TIFF." + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Conjunto de tintas" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"The set de tintas usadas en una imagen (PhotometricInterpretation=5) " +"separada." + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "Nombres de tinta" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"El nombre de cada tinta usada en una imagen (interpretación fotométrica=5) " +"separada." + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "Número de tintas" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" +"El número de tintas. Habitualmente igual a muestras por píxel, salvo que son " +"muestras extra." + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "Rango de puntos" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "Los valores de los componentes que corresponden al 0% dot y 100% dot." + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "Impresora objetivo" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" +"Una descripción del entorno de impresión para la que esta separación " +"pretende." + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "Más ejemplos" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" +"Especifica que cada píxel tiene m componentes extra cuya interpretación está " +"definida por uno de los valores listados más abajo." + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "Formato de ejemplo" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "Especifica como interpretar cada dato de muestra en un pixel" + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "Valor de muestra SMin" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "Especifica el valor mínimo de muestra" + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "Valor de muestra SMax" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "Especifica el valor máximo de muestra" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Rango de transferencia" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "Expande el rango de la función TransferFunction" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "Ruta de recorte" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" +"Una ruta ClipPath TIFF sirve para reflejar las funcionalidades esenciales de " +"la creación de rutas PostScript." + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "Unidades para el eje x Clip Path" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"El número de unidades que abarca la anchura de la imagen, en términos de " +"coordenadas enteras de ClipPath." + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "Unidades para el eje y Clip Path" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"Número de unidades que abarcan la altura de la imagen, en términos de " +"coordenadas enteras de ClipPath." + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" +"Imágenes indexadas son imágenes donde los «píxeles» no representan valores " +"de color, sino más bien el índice (habitualmente 8-bit) en una tabla de " +"colores separada, el mapa de colores." + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "Tablas JPEG" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "Proxy OPI" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" +"OPIProxy proporciona información referente a si la imagen es un proxy de " +"baja resolución de una imagen de alta resolución (Adobe OPI)." + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "Proceso JPEG" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "Este campo indica el proceso usado para producir los datos comprimidos" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "Formato de intercambio de JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"El desplazamiento del byte de comienzo (SOI) de los datos comprimidos de la " +"diapositiva JPEG. Esto no se utiliza para los datos primarios de imagen JPEG." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "Longitud del formato de intercambio de JPEG" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"La cantidad de bytes de datos comprimidos de diapositiva JPEG. Esto no se " +"utiliza para los datos primarios JPEG. Las diapositivas JPEG no se dividen " +"sino que se graban como un flujo de bits contínuo desde SOI hasta EOI. No se " +"deberían registrar marcadores Appn y COM. Las diapositivas comprimidas " +"deberían grabarse en no más de 64 Kbytes, incluyendo todos los otros datos a " +"grabar en APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "Intervalo de reinicio JPEG" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Este campo indica la longitud del intervalo de reinicio utilizado en los " +"datos de imagen comprimida." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "Predictores JPEG sin pérdida" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" +"Este campo apunta a una lista de selección de valores para el predictor sin " +"pérdida, uno por componente." + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "Transformaciones de punto JPEG" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" +"Este campo apunta a una lista de valores de transformación de punto, uno por " +"componente." + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" +"Este campo apunta a una lista de desplazamientos para las tablas de " +"cuantificación, uno por componente." + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" +"Este campo apunta a una lista de compensaciones a las tablas Huffman AC o a " +"las tablas Huffman sin pérdidas, una por componente." + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" +"Este campo apunta a una lista de posiciones en las tablas Huffman AC, una " +"por componente." + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Los coeficientes de la matriz para transformar los datos de RGB a YCbCr. En " +"TIF no se proporcionan valores por defecto pero aquí se toma el valor dado " +"en el Apéndice E, \"Color Space Guidelines\" como predeterminado. El espacio " +"de color se declara en una etiqueta de información del espacio de color, " +"tomando como predeterminado el que dé las características óptimas de inter-" +"operabilidad para la imagen." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "Sub-muestreo YCbCr" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"La relación de muestreo de los componentes de crominancia en relación con el " +"componente de luminancia. En datos comprimidos JPEG se utiliza un marcador " +"JPEG en vez de esta etiqueta." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"La posición de los componentes de crominancia en relación con el de " +"luminancia. Este campo se designa solo para JPG comprimidos o datos no " +"comprimidos YCbCr. El valor predeterminado TIFF es 1 (centrado); pero cuando " +"Y:Cb:Cr = 4:2:2 se recomienda en este estándar que se utilice 2 (co-sitiado) " +"para registrar los datos, para mejorar la calidad de la imagen cuando se ve " +"en sistemas de TV. Cuando este campo no existe, el lector deberá asumir el " +"predeterminado TIFF. En caso que Y:Cb:Cr = 4:2:0, se recomienda el " +"predeterminado TIFF (centrado). Si el lector no tiene la capacidad de " +"soportar ambos tipos de , debería seguir el predeterminado " +"TIFF sin importar el valor de este campo. Es preferible que los lectores " +"puedan soportar el posicionamiento centrado y co-sitiado." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Referencia Blanco/Negro" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"El valor de referencia de los puntos blanco y negro. En TIFF no se dan " +"predeterminados, pero los valores de abajo se dan como predeterminados aquí. " +"El espacio de color se declara en una etiqueta de información de espacio de " +"color, siendo el valor predeterminado aquel que da las características de " +"inter-operabilidad óptimas para la imagen." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "Paquete XML" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Metadatos XMP (Adobe nota técnica 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Calificación de Ventanas" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Etiqueta de popularidad usada por Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Porcentaje de popularidad de Windows" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Etiqueta de popularidad usada por Windows, valor en porcentaje" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "ID de imagen" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" +"ImageID es la ruta completa de la imagen original en alta resolución o " +"cualquier otra cadena de identificación que identifique la imagen original " +"unívocamente (Adobe OPI)." + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "Dimensión de patrón de repetición CFA" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" +"Contiene dos valores representando las filas y columnas mínimas para definir " +"los patrones repitientes de la matriz de filtro de color" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Indica el patrón geométrico del CFA (vector de filtros de color) del sensor " +"de imagen cuando se utiliza un sensor monochip de área de color. No implica " +"a todos los métodos de detección." + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Información del Copyright. En este estándar la etiqueta se utiliza para " +"indicar tanto el copyright del fotógrafo como el del editor. Es la nota de " +"copyright de la persona u Organización que reclama derechos sobre la imagen. " +"En este campo debería escribirse la declaración de copyrtight de inter-" +"operabilidad, incluyendo la fecha y los derechos; ej: \"Copyright, Juan " +"Perez, 20xx. Todos los derechos reservados.\" En este estándar el campo " +"registra tanto al copyright del fotógrafo como el del editor, con cada uno " +"registrado en una parte separada de la declaración. Cuando hay una " +"distinción clara entre ambos copyrights, primero debería escribirse el del " +"fotógrafo seguido por el del editor, separados por NULL (en este caso, " +"debido a que la declaración también termina con un NULL, hay dos códigos " +"NULL) (vea el ejemplo 1). Cuando se da sólo el del fotógrafo, está terminado " +"por un código NULL (vea el ejemplo 2). Cuando se da sólo el del editor, la " +"parte del copyright del fotógrafo consiste de un espacio seguido de un " +"código de terminación NULL, luego se da el copyright del editor (vea el " +"ejemplo 3). Cuando el campo se deja en blanco, se trata como desconocido." + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "Tiempo de exposición, en segundos." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "El número F." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Contiene un registro IPTC/NAA" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Bloque de recursos de imagen" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "Contiene información embebida por la aplicación Adobe Photoshop" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Un puntero al IFD Exif. Inter-operabilidad, el IFD Exif tiene la misma " +"estructura que la del IFD especificado en TIFF. Sin embargo, por lo común, " +"no contiene datos de imagen como en el caso de TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Perfil Inter color" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Contiene una caracterización o perfil de un formato de espacio de color del " +"Consorcio InterColor (ICC)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"La clase de programa utilizado por la cámara para ajustar la exposición " +"cuando se toma la foto." + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "Indica la sensibilidad espectral de cada canal de la cámara utilizado." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Un puntero al GPS Info IFD. La estructura de inter-operabilidad del GPS Info " +"IFD, como la del IFD Exif, no tiene datos de imagen." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "Velocidad ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"Indica la velocidad ISO y la latitud ISO de la cámara o dispositivo de " +"entrada como se especifica en ISO 12232." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Indica la función de conversión optoelectrónica (OECF) especificada en ISO " +"14524." + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "Entrelazar" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "Indica el número de campo de imágenes multicampo." + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "Diferencia de la franja horaria" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" +"Esta etiqueta opcional codifica la zona horaria del reloj de la cámara " +"(relativo al tiempo medio de Greenwich) utilizado para crear el valor de la " +"etiqueta DataTimeOriginal cuando se tomó la imagen. Puede contener también " +"el desplazamiento de la zona horaria del reloj usado para crear el valor de " +"etiqueta DataTime cuando la imagen se modificó." + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "Modo de disparo automático" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" +"Número de segundos que la captura de imagen fue retrasada desde la presión " +"del botón." + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "Hora y fecha originales" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "Fecha y hora en la que se generaron los datos de la imagen original" + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"Específico para datos comprimidos; declara los bits comprimidos por píxel." + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Velocidad de obturación." + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "La apertura de la lente." + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "Valor del brillo." + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "El sesgo de exposición." + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Valor máximo de apertura" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "El menor número F de la lente." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "La distancia al sujeto, dada en metros." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "El modo de la métrica." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "El tipo de fuente de luz." + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "Indica el estado del flash cuando se tomó la imagen." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "La distancia focal real de la lente, en mm." + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "Cantidad de energía del flash (BCPS)." + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "SFR de la cámara" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Ruido" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "Valores de medida del ruido." + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Número de píxeles por FocalPlaneResolutionUnit (37392) en la dirección " +"ImageWidth para la imagen principal." + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Número de píxeles por FocalPlaneResolutionUnit (37392) en la dirección " +"ImageLength para la imagen principal." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"Unidad de medida para resolución de plano focal X (37390) y resolución de " +"plano focal Y (37391)." + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" +"Número asignado a una imagen, por ejemplo, en una sucesión de imágenes " +"encadenadas." + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "Clasificación de seguridad" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "Clasificación de seguridad asignada a la imagen." + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "Registro de todos los cambios que se han realizado en la imagen." + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "Indica la ubicación y área del tema principal en la escena general." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"Codifica el valor del índice de exposición de la cámara en el momento de " +"toma de la imagen." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "ID estándar de TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Contiene cuatro caracteres ASCII representando el estándar TIFF/EP del " +"archivo TIFF/EP , p.e '1', '0', '0', '0'" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "Tipo de sensor de imagen." + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Título Windows" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de título usada por Windows, codificada en UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Comentario windows" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de comentario usada por Windows, codificada en UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Autor Windows" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de autor usada por Windows, codificada en UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Palabras clave de Windows" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Palabras clave usadas por Windows, codificadas en UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Tema Windows" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de sujeto usada por Windows, codificada en UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "Imprimir imagen coincidente" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "Imprimir imagen coincidente, descripción necesaria." + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "Versión DNG" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"Esta etiqueta codifica el número de versión four-tier de DNG. Para archivos " +"compatibles con la versión 1.1.0.0 de la especificación DNG, esta etiqueta " +"debe contener los bytes: 1, 1, 0, 0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "Versión anterior DNG" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Esta etiqueta muestra la versión más antigua de la especificación Digital " +"Negative para la que el archivo es compatible. Los lectores no deben " +"intentar leer un archivo si esta etiqueta especifica un número de versión " +"superior al suyo. Además de comprobar las etiquetas de versión, los lectores " +"deben comprobar los tipos, cuentas y valores de cada etiqueta para verificar " +"que son capaces de leer correctamente el archivo." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Modelo de cámara único" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"Define un nombre único y sin localización para el modelo de cámara que creó " +"la imagen en formato raw. Este nombre debe incluir el nombre del fabricante " +"para evitar conflictos y debe no ser local, aunque el propio nombre de la " +"cámara se haya cambiado para los diferentes mercados (ver " +"LocalizedCameraModel). Esta cadena puede ser usada por el software de " +"lectura para indexar por preferencias de modelo y perfiles de reemplazo." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Modelo de cámara localizado" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"Similar al campo modelo único de cámara, salvo que el nombre se puede " +"localizar para diferentes mercados para hacer coincidir la localización del " +"nombre de la cámara." + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "Color plano CFA" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" +"Proporciona una asignación entre los valores en la etiqueta CFAPattern y los " +"números de plano en el espacio LinearRaw. Es una etiqueta obligatoria para " +"las imágenes CFA que no estén en formato RGB." + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "Disposición CFA" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "Describe la disposición espacial del CFA." + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" +"Describe una paleta de colores que asigna los valores guardados a valores " +"lineales. Se utiliza para incrementar la compresión mediante el " +"almacenamiento de los datos en crudo en un espacio no lineal y más uniforme " +"de manera visual, pero con menos niveles de cuantificación en total. Si " +"SamplesPerPixel no equivale a uno, esta tabla se aplica a todas las muestras " +"de cada píxel." + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "Nivel oscuro de repeticion DIM" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" +"Especifica el patrón de tamaño de repetición para la etiqueta de niveles de " +"negro." + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" +"Especifica el nivel de codificación de luz cero (o negro térmico o negro " +"actual) como un patrón que se repite. Su origen está en la esquina superior " +"izquierda del rectángulo del ActiveArea. Los valores se guardan en orden de " +"escaneo fila-columna-muestra." + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Nivel negro delta H" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" +"Si el nivel de codificación de luz cero es función de la columna de la " +"imagen, BlackLevelDeltaH especifica la diferencia entre el nivel de " +"codificación de luz cero para cada columna y el nivel de codificación de luz " +"cero base. Si SamplesPerPixel no equivale a uno, esta tabla se aplica a " +"todas las muestras de cada píxel." + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Nivel negro delta V" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" +"Si el nivel de codificación de luz cero es función de la fila de la imagen, " +"BlackLevelDeltaH especifica la diferencia entre el nivel de codificación de " +"luz cero para cada fila y el nivel de codificación de luz cero base. Si " +"SamplesPerPixel no equivale a uno, esta tabla se aplica a todas las muestras " +"de cada píxel." + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Nivel blanco" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" +"Esta etiqueta especifica el nivel de codificación de saturación total para " +"los valores de muestra en crudo. La saturación es causa de que el sensor " +"está en una zona de respuesta no lineal, o por el recorte del conversor " +"analógico-digital de la cámara." + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "Escala predeterminada" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" +"DefaultScale es necesaria para cámaras con píxeles no cuadrados. Especifica " +"los factores de escala predeterminados para cada dirección necesarios para " +"obtener una imagen con cuadrados. Típicamente se seleccionan para preservar " +"el número total de píxeles (aproximadamente). Para imágenes CFA que usan la " +"CFALayout de a 2, 3, 4, o 5, tales como el SuperCCD Fujifilm, estos dos " +"valores deben diferir habitualmente por un factor de 2,0." + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "Origen predeterminado de recorte" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" +"Las imágenes en crudo a veces almacenan píxeles extra alrededor de los " +"bordes de la imagen final. Estos píxeles extra ayudan a prevenir artificios " +"de interpolación cerca de los bordes. DefaultCropOrigin especifica el origen " +"del área de la imagen final, en coordenadas de imagen en crudo (por ejemplo, " +"antes de aplicar DefaultScale), relativas a la esquina superior izquierda " +"del rectángulo de ActiveArea." + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "Tamaño de recorte predeterminado" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" +"Las imágenes raw a veces almacenan píxeles extra alrededor de los bordes de " +"la imagen final. Estos píxeles extra ayudan a prevenir artefactos de " +"interpolación cerca de los bordes de la imagen final. El origen del tamaño " +"predeterminado especifica el tamaño de final del área de imagen, en " +"coordenadas de imagen raw (es decir, antes de que se aplique la escala " +"predeterminada)." + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matriz de color 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" +"ColorMatrix1 define una matriz de transformación que convierte valores XYZ " +"para referenciar valores del espacio de color nativo de la cámara, bajo el " +"iluminante de primera calibración. Los valores de la matriz son almacenados " +"en orden de escaneado por filas. La etiqueta ColorMatrix1 es necesaria para " +"todos los archivos DNG no monocromos." + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matriz de color 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" +"La matriz de colores 2 define una matriz de transformación que convierte " +"valores XYZ para referenciar valores del espacio de colores nativos de la " +"cámara, bajo el iluminante de primera calibración. Los valores de la matriz " +"son almacenados en fila en orden de escaneado." + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Calibración de la cámara 1" + +#: src/tags.cpp:978 +#, fuzzy +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"CameraCalibration1 define una matriz de calibración que transforma los " +"valores del espacio nativos de la cámara de referencia a valores del " +"espacio nativos de la cámara individuales bajo el iluminante de primera " +"calibración. La matriz se almacena en orden de escaneo por fila. Se almacena " +"separadamente de la matriz especificada por la etiqueta ColorMatrix1 para " +"permitir a los conversores en crudo intercambiar en matrices de reemplazo de " +"color basadas en la etiqueta UniqueCameraModel, mientras se aprovecha de " +"cualquier calibración individual de cámara realizada por el fabricante." + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "Calibración de la cámara 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"CameraCalibration2 define una matriz de calibración que transforma los " +"valores del espacio nativos de la cámara de referencia a valores del " +"espacio nativos de la cámara individuales bajo el iluminante de segunda " +"calibración. La matriz se almacena en orden de escaneo por fila. Se almacena " +"separadamente de la matriz especificada por la etiqueta ColorMatrix2 para " +"permitir a los conversores en crudo intercambiar en matrices de reemplazo de " +"color basadas en la etiqueta UniqueCameraModel, mientras se aprovecha de " +"cualquier calibración individual de cámara realizada por el fabricante." + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "Matriz de reducción 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"ReductionMatrix1 define una matriz de reducción de dimensión para usarla " +"como primer paso en la conversión de valores del espacio nativos de la " +"cámara de color a valores XYZ, bajo el iluminante de primera calibración. " +"Esta etiqueta se puede usar solamente si ColorPlanes es mayor a tres. La " +"matriz se almacena en orden de escaneo por filas." + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "Matriz de reducción 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"ReductionMatrix2 define una matriz de reducción de dimensión para usarla " +"como primer paso en la conversión de valores del espacio nativos de la " +"cámara de color a valores XYZ, bajo el iluminante de segunda calibración. " +"Esta etiqueta se puede usar solamente si ColorPlanes es mayor a tres. La " +"matriz se almacena en orden de escaneo por filas." + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Balance analógico" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" +"Los valores en crudo almacenados no suelen tener balance de blancos, dado " +"que cualquier balance de blancos digital reduce el rango dinámico de la " +"imagen final si el usuario decide ajustar posteriormente el balance de " +"blancos; sin embargo, si el hardware de la cámara es capaz de realizar el " +"balance de blancos a los canales de colores antes de que la señal sea " +"digitalizada, puede mejorar el rango dinámico de la imagen final. " +"AnalogBalance define la ganancia, tanto analógica (recomendada) como digital " +"(no recomendada) que han sido aplicadas a los valores en crudo almacenados." + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Como disparo neutral" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" +"Especifica el balance de blancos seleccionado en el momento de la captura, " +"codificado como las coordenadas de un color perfectamente neutral en valores " +"del espacio de referencia lineal. La inclusión de esta etiqueta excluye la " +"etiqueta AsShotWhiteXY." + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" +"Especifica el balance de blancos en el momento de la captura, codificado " +"como coordenadas cromáticas x-y. La inclusión de esta etiqueta se opone a la " +"inclusión de la etiqueta AsShotNeutral." + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "Linea base de Exposicion" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" +"Los modelos de cámara varían en el intercambio que hacen entre resaltar " +"entre la iluminación de cabecera y ruido en la sombra. Algunas dejan una " +"cantidad significante de luz de cabecera durante una exposición normal. Esto " +"permite que se apliquen compensaciones de exposición negativa durante la " +"conversión raw, pero además significa que las exposiciones normales " +"contendrán más ruido de sombra. Otros modelos dejan menos cabecera durante " +"exposiciones normales. Esto permite menor compensación de exposición " +"negativa, pero resulta en menor ruido de sombra para exposiciones normales. " +"Debido a estas diferencias, un conversor raw necesita variar el punto de " +"origen de su control de compensación de exposición de modelo en modelo. La " +"exposición de línea de base especifica cuánto (en unidades EV) mover el " +"origen. Los valores positivos derivan en resultados por defecto más " +"brillantes, mientras que los valores negativos derivan en resultados más " +"oscuros por defecto." + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "Linea base de ruido" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" +"Especifica el nivel de ruido relativo del modelo de cámara en la línea de " +"base de ISO de valor 100, comparado con un modelo de cámara de referencia. " +"Dado que los niveles de ruido tienden a variar aproximadamente con la raíz " +"del valor ISO, un conversor en crudo puede usar esta variable, combinada con " +"la ISO actual, para estimar el nivel relativo de ruido de la imagen actual." + +#: src/tags.cpp:1054 +msgid "Baseline Sharpness" +msgstr "" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" +"Especifica la cantidad relativa de enfoque necesario para el modelo de " +"cámara, comparado con un modelo de referencia. Las intensidades de los " +"filtros anti-aliasing varían de unos modelos de cámara a otros. Las cámaras " +"sin filtro o con filtro débil necesitan menos enfoque que las cámaras con " +"filtros anti-aliasing fuertes." + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" +"Solo aplica a imágenes CFA usando una matriz de filtros de patrón Bayer. " +"Esta etiqueta especifica, en unidades arbitrarias, cómo de cercanos los " +"valores de los píxeles verdes en las filas azul/verde siguen los valores de " +"los píxeles verdes en las filas rojas/verdes. Un valor de cero significa que " +"los dos tipos de píxeles verdes siguen cercanos, mientras que un valor " +"distinto de cero significa que a veces divergen. El rango útil de esta " +"etiqueta va de 0 (no hay divergencia) a unos 5000 (gran divergencia)." + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "Límite de respuesta lineal" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" +"Algunos sensores tienen una respuesta no lineal impredecible a medida que se " +"aproximan al límite superior de su rango de codificación. Como consecuencia " +"suceden cambios de color en las áreas destacadas de la imagen resultante, a " +"no ser que el conversor raw compense este efecto. LinearResponseLimit " +"especifica la fracción del rango de codificación sobre la cual la respuesta " +"puede ser no lineal." + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"CameraSerialNumber contiene el número de serie de la cámara o cuerpo de " +"cámara empleado para tomar la imagen." + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Información de la lente" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" +"Contiene información sobre la lente empleada para tomar la imagen. Si se " +"desconoce el valor mínimo de pasos F, debería ser codificado como 0/0." + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "Radio del desenfoque de croma" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" +"ChromaBlurRadius proporciona una idea al lector DNG sobre cuanta " +"difuminación de croma debe aplicarse a la imagen. Si la etiqueta se omite, " +"el lector usará la cantidad predeterminada de difuminación de croma. " +"Normalmente esta etiqueta esta solo incluida para imágenes no CFA, desde que " +"la cantidad de difuminación de croma requerida para imágenes mosaicas es " +"altamente dependiente de algoritmos de mosaico, en cuyo caso el valor " +"predeterminado del lector de DNG está como optimizado para ese algoritmo de " +"mosaico." + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "Intensidad de anti alias" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" +"Proporciona una idea al lector DNG sobre qué tan fuerte es el filtro " +"antialias de su cámara. Un valor de 0,0 significa sin filtro anti-aliasing " +"(por ejemplo, la cámara es propensa a defectos de aliasing con algunos " +"sujetos), mientras que un valor de 1,0 significa un fuerte filtro anti-" +"aliasing (por ejemplo, la cámara casi nunca tiene defectos de aliasing)." + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "Escala de sombras" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" +"Esta etiqueta la emplea Adobe Camera Raw para controlar la sensibilidad de " +"la barra deslizante de «Sombras»." + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "Datos privados DNG" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" +"Proporciona a los fabricantes de cámaras una manera de guardar datos " +"privados en el archivo DNG para ser usado en sus propios convertidores de " +"imágenes en bruto, y que los programas que editan archivos DNG preserven " +"dichos datos." + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" +"MakerNoteSafety permite al lector DNG saber si la etiqueta EXIF MakerNote es " +"segura como para guardar junto al resto de datos EXIF. Navegadores de " +"archivos y otro software de administración de imágenes procesando una imagen " +"con un MakerNote guardado, deben estar prevenidos de que cualquier imagen en " +"miniatura empotrada en el MarkerNote puede estar desfasada, y no reflejar el " +"estado actual de la imagen a tamaño completo." + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "Calibración de fuente luminosa 1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" +"La fuente luminosa empleada por el primer conjunto de etiquetas de " +"calibración de color (ColorMatrix1, CameraCalibration1, ReductionMatrix1). " +"Los valores válidos para esta etiqueta son los mismos que los valores " +"válidos para la etiqueta EXIF LightSource." + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "Calibración de fuente luminosa 2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" +"La fuente luminosa empleada para un segundo conjunto (opcional) de etiquetas " +"de calibración de color (ColorMatrix2, CameraCalibration2, " +"ReductionMatrix2). Los valores válidos para esta etiqueta son los mismos que " +"los valores válidos para la etiqueta CalibrationIlluminant1; sin embargo, si " +"ambas etiquetas son empleadas, ninguna puede tener un valor de cero " +"(desconocido)." + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "Escala de mejor calidad" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" +"En algunas cámaras, la mejor calidad de imagen posible no se obtiene " +"preservando la cuenta total de píxeles durante la conversión. Por ejemplo, " +"las imágenes SuperCCD de Fujifilm tienen un detalle máximo cuando se duplica " +"su cuenta total de píxeles. Esta etiqueta especifica la cantidad por la que " +"se necesita multiplicar los valores de la etiqueta DefaultScale para obtener " +"el tamaño de imagen de mejor calidad." + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "ID único de datos en bruto" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" +"Esta etiqueta contiene un identificador único de 16 octetos para la imagen " +"en bruto del archivo DNG. Los lectores DNG pueden utilizar esta etiqueta " +"para reconocer una imagen en crudo en particular, aún si el nombre del " +"archivo o los metadatos contenidos en el mismo han sido modificados. Si un " +"grabador DNG crea tal identificador, debería hacerlo usando un algoritmo que " +"se asegure de que es muy improbable que dos imágenes diferentes terminen " +"teniendo el mismo identificador." + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Nombre de archivo de la imagen en bruto original" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" +"Si el archivo DNG fue convertido a partir de una imagen en bruto no DNG, " +"esta etiqueta contiene el nombre de dicho archivo de imagen en bruto " +"original." + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "Datos del archivo en bruto original" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" +"Si el archivo DNG se creó desde un archivo en crudo no-DNG, entonces esta " +"etiqueta contiene la información comprimida de ese archivo en crudo " +"original. Los contenidos de esta etiqueta utilizan siempre el orden de byte " +"big-endian. La etiqueta incluye una secuencia de bloques de datos. Próximas " +"versiones de la especificación DNG pueden definir bloques de datos " +"adicionales, así que los lectores de DNG deben ignorar los bytes extra al " +"analizar esta etiqueta, además de detectar el lugar donde faltan bloques de " +"datos al final de la secuencia y asumir un valor predeterminado para todos " +"ellos. No hay bytes de relleno o alineamiento entre bloques de datos." + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Ãrea activa" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" +"Este rectángulo define los píxeles activos (no enmascarados) del sensor. El " +"orden de las coordenadas del rectángulo es: arriba, izquierda, abajo, " +"derecha." + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Ãreas enmascaradas" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" +"Esta etiqueta contiene una lista de coordenadas rectangulares sin solapar de " +"los píxeles completamente enmascarados, que pueden ser usados opcionalmente " +"por lectores DNG para medir el nivel de codificación de negro. El orden de " +"coordenadas de cada rectángulo es: arriba, izquierda, abajo, derecha. Si los " +"datos de la imagen en crudo ya tienen su nivel de codificación de negro " +"restada, entonces esta etiqueta no debe usarse, dado que los píxeles " +"enmascarados dejan de ser útiles." + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "Perfil de color (ICC) tal cual se tomó" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" +"Esta etiqueta contiene un perfil ICC que, en conjunto con la etiqueta " +"AsShotPreProfileMatrix, proporciona al fabricante de la cámara una forma de " +"especificar la generación del color de las coordenata del espacio de color " +"de la cámara (valor de referencia lineal) al espacio de conexión al perfil " +"ICC. El espacio de conexión del perfil ICC es una espacio colorimétrico " +"referido a la producción, mientras las otras etiquetas de calibración en DNG " +"especifican una conversión a espacio colorimétrico referido a una escena. " +"Esto significa que el procesamiento en este perfil debe de incluir " +"cualesquier tono y planeamiento de la gama necesaria para convertir valores " +"escénicamente referidos a valores referidos al procesamiento." + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "Matriz pre-perfil como en foto" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" +"Esta etiqueta se usa en conjunción con la etiqueta AsShotICCProfile. Esta " +"especifica una matriz que debe aplicarse para las coordenadas del espacio de " +"colores antes del procesado de valores a través del perfil ICC especificado " +"en la etiqueta AsShotICCProfile. La matriz se almacena en la cola de orden " +"de escaneo. Si el plano de colores es mayor de tres, entonces la matriz " +"puede (pero no es obligatorio) reducir la dimensionalidad de los datos de " +"colores a tres componentes, en cuyo caso AsShotICCProfile debe tener tres en " +"lugar de componentes de entrada de planos de colores." + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Perfil de color (ICC) actual" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Esta etiqueta se emplea en conjunto con la etiqueta CurrentPreProfileMatrix. " +"Las etiquetas CurrentICCProfile y CurrentPreProfileMatrix tienen el mismo " +"propósito y modo de empleo que el par de etiquetas AsShotICCProfile y " +"AsShotPreProfileMatrix, con la diferencia de que están destinadas a ser " +"usadas por editores de archivos en bruto en vez de los fabricantes de " +"cámaras." + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "Matriz de pre-perfilado actual" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Esta etiqueta se emplea en conjunto con la etiqueta CurrentICCProfile. Las " +"etiquetas CurrentICCProfile y CurrentPreProfileMatrix tienen el mismo " +"propósito y modo de empleo que el par de etiquetas AsShotICCProfile y " +"AsShotPreProfileMatrix, con la diferencia de que están destinadas a ser " +"usadas por los fabricantes de cámaras en vez de editores de archivos en " +"bruto." + +#: src/tags.cpp:1212 +msgid "Colorimetric Reference" +msgstr "Referencia colorimétrica" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" +"El modelo de color DNG documenta una transformación entre los colores de la " +"cámara y los valores XYZ de CIE. Esta etiqueta describe la referencia " +"colorimétrica para los valores XYZ de CIE. 0 = Los valores XYZ están " +"referidos a la escena. 1 = Los valores XYZ están referidos a la salida, " +"usando el rango dinámico del perfil ICC perceptual. Esta etiqueta permite " +"que los datos referidos a la salida se almacenen en archivos DNG y aún así " +"se procesen correctamente por los lectores DNG." + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "Firma de calibración de la cámara" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "Firma de calibración del perfil" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +msgid "As Shot Profile Name" +msgstr "Nombre del perfil «en la toma»" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" +"Cadena codificada en UTF-8 que contiene el nombre del perfil de la cámara " +"«en la toma», si existe." + +#: src/tags.cpp:1238 +msgid "Noise Reduction Applied" +msgstr "Reducción de ruido aplicada" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "Nombre del perfil" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "Perfil Hue Sat Map Data 1" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "Perfil Hue Sat Map Data 2" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +msgid "Profile Tone Curve" +msgstr "Curva de tono del perfil" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Esta etiqueta contiene información sobre las reglas de uso para el perfil de " +"cámara asociado." + +#: src/tags.cpp:1292 +msgid "Profile Copyright" +msgstr "Derechos de autor del perfil" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" +"Cadena codificada en UTF-8 que contiene la información de los derechos de " +"autor del perfil de la cámara. Esta cadena siempre se debería mantener junto " +"con otras etiquetas del perfil de la cámara." + +#: src/tags.cpp:1297 +msgid "Forward Matrix 1" +msgstr "" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" +"Esta etiqueta define una matriz que relaciona los colores de la cámara con " +"balance de blancos a colores XYZ D50." + +#: src/tags.cpp:1301 +msgid "Forward Matrix 2" +msgstr "" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "Nombre de la aplicación de la vista previa" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" +"Una cadena codificada en UTF-8 que contiene el nombre de la aplicación que " +"creó la vista previa almacenada en el IFD." + +#: src/tags.cpp:1309 +msgid "Preview Application Version" +msgstr "Versión de la aplicación de la vista previa" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" +"Una cadena codificada en UTF-8 que contiene el número de versión de la " +"aplicación que creó la vista previa almacenada en el IFD." + +#: src/tags.cpp:1313 +msgid "Preview Settings Name" +msgstr "Nombre de parámetros de vista previa" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" +"Cadena codificada en UTF-8 que contiene el nombre de los parámetros de " +"conversión (por ejemplo, nombre de la captura) usados para la vista previa " +"almacenada en el IFD." + +#: src/tags.cpp:1317 +msgid "Preview Settings Digest" +msgstr "Resumen de los parámetros de la vista previa" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" +"Identificador único de los parámetros de conversión (por ejemplo, «MD5 " +"digest») usado para generar la vista previa almacenada en el IFD." + +#: src/tags.cpp:1321 +msgid "Preview Color Space" +msgstr "Espacio de color de la vista previa" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" +"Esta etiqueta especifica el espacio de color en el que se ha almacenado la " +"vista previa generada en este IFD. El valor predeterminado para esta " +"etiqueta es sRGB para vistas previas en color y Gray Gamma 2.2 para vistas " +"previas monocromas." + +#: src/tags.cpp:1326 +msgid "Preview Date Time" +msgstr "Fecha y hora de la vista previa" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" +"Esta etiqueta es una cadena ASCII que contiene el nombre de la fecha/hora a " +"la que se generó la vista previa almacenada en el IFD. La fecha/hora se " +"codifica usando el formato ISO 8601." + +#: src/tags.cpp:1331 +msgid "Raw Image Digest" +msgstr "Resumen de la imagen raw" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" +"Esta etiqueta es un «MD5 digest» de los datos de la imagen raw. Todos los " +"píxeles de la imagen se procesan en orden de fila de escaneo. Cada píxel se " +"completa con ceros a una profundidad de 16 o 32 bits (16 bits para datos de " +"igual o menos 16 bits de profundidad, 32 bits en otro caso). Los datos para " +"cada píxel se procesan en orden de byte «little-endian»." + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "Factor de entrelazado de filas" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "Lista 1 de opcodes" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" +"Especifica la lista de opcodes que deberían aplicarse a la imagen raw, " +"cuando se lee directamente del archivo.raw" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "Lista 2 de opcodes" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "Lista 3 de opcodes" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +msgid "Noise Profile" +msgstr "" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Etiqueta IFD desconocida" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "No definido" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Programa creativo" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Programa de acción" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Modo retrato" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Modo paisaje" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Multipunto" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Tungsteno (luz incandescente)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Buen Tiempo" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Tiempo nublado" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Fluorescente luz-día (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Fluorescente blanco día (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Fluorescente blanco frio (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Fluorescente blanco (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Luz estándar A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Luz estándar B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Luz estándar C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "tungsteno de estudio ISO" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Otra fuente de luz" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Descalibrado" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "Ãrea de color de un chip" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "Ãrea de color de dos chips" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "Ãrea de color de tres chips" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "Ãrea de color secuencial" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Sensor tri-lineal" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Lineal secuencial de colores" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Explorador de película" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Cámara digital inmóvil" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Directamente fotografiado" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Proceso normal" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Proceso personalizado" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Ganancia baja alta" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Ganancia alta alta" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Ganancia baja baja" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Ganancia alta baja" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Vista cercana" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Vista distante" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Tiempo de exposición, dado en segundos (seg)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"Indica la sensibilidad espectral de cada canal de la cámara utilizada. El " +"valor de la etiqueta es una cadena de caracteres ASCII compatible con el " +"estándar desarrollado por el ASTM Tecnical committee." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "Función de conversión optoelectrónica" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"Indica la Función de Conversión Opto-Electrónica (OECF) especificada en ISO " +"14524. es la relación entre la entrada óptica de la cámara y los " +"valores de la imagen." + +#: src/tags.cpp:1573 +msgid "Sensitivity Type" +msgstr "Tipo de sensibilidad" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "Sensibilidad de salida estándar" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "Ãndice de exposición recomendada" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +msgid "ISO Speed Latitude yyy" +msgstr "Velocidad ISO yyy" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +msgid "ISO Speed Latitude zzz" +msgstr "Velocidad ISO zzz" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"La versión soportada de este estándar. Si este campo no existe se interpreta " +"que no se cumple con el estándar." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Fecha y Hora (original)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"La fecha y hora cuando se generaron los datos originales de la imagen. Para " +"una cámara digital se registra la fecha y la hora en la que se tomó la foto." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Fecha y Hora (digitalizado)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "" +"La fecha y hora cuando se almacenó la imagen en forma de datos digitales." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Información específica de los datos comprimidos. Los canales de cada " +"componente se arreglan en orden desde el 1er componente al 4to. Para datos " +"no comprimidos el arreglo de los datos se da en la etiqueta " +". Sin embargo, debido a que dicha etiqueta solo " +"puede expresar el orden de Y, Cb y Cr, se proporciona para los casos en los " +"que los datos comprimidos usan componentes que no son Y, Cb y Cr y para " +"permitir el soporte de otras secuencias." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Bits comprimidos por pixel" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Información específica sobre los datos comprimidos. El modo de compresión " +"utilizado para una imagen comprimida está indicado en unidades de bits por " +"pixel." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"Velocidad del obturador. La unidad es el ajuste APEX (Sistema aditivo de " +"exposición fotográfica)." + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "La apertura de la lente. La unidad es el valor APEX." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"El valor del brillo. La unidad es el valor APEX. Por lo general, se da en el " +"rango de -99,99 a 99,99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Ajuste de exposición" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"El ajuste de exposición. La unidad es el valor APEX. Por lo general, se da " +"en el rango -99,99 a 99,99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"El valor F más pequeño de la lente. La unidad es el valor APEX. Por lo " +"general, se da en el rango de 00,00 a 99,99 pero no está limitado a dicho " +"rango." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" +"Esta etiqueta se registra cuando se toma una imagen usando una luz " +"estrosboscópica (flash)." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"La distancia focal real de la lente, en mm. No se realiza la conversión a la " +"distancia focal de una máquina de película de 35 mm." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Esta etiqueta indica la ubicación y área del sujeto principal en la escena " +"general." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Nota del fabricante" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Una etiqueta para que los fabricantes o escritores Exif registren cualquier " +"información deseada. El contenido queda a cargo del fabricante." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" +"Una etiqueta para que los usuarios Exif escriban en la imagen palabras clave " +"o comentarios, adicionales a los de la etiqueta , y sin " +"las limitaciones del código de caracteres de dicha etiqueta." + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Tiempo en subsegundos" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" +"Una etiqueta utilizada para registrar fracciones de segundo para la etiqueta " +"." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Tiempo en sub-segundos original" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Una etiqueta utilizada para registrar fracciones de segundo para la etiqueta " +"." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Tiempo en sub-segundos digitalizado" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Una etiqueta utilizada para registrar fracciones de segundo para la etiqueta " +"." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "Versión de FalshPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "La versión del formato FlashPix soportada por un archivo FPXR." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"La etiqueta de información de espacio de color siempre se registra como el " +"especificador de espacio de color. Normalmente se utiliza sRGB para definir " +"el espacio de color basado en las condiciones ambientales y del monitor del " +"PC. Si se utiliza un espacio de color distinto a sRGB, se ajusta a no " +"calibrado. Los datos de imagen registrados como no calibrados pueden " +"tratarse como sRGB cuando se convierte a FlashPix." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Información específica a los datos comprimidos. Cuando se registra un " +"archivo comprimido, el ancho válido de la imagen significativa se debe " +"registrar en esta etiqueta, haya o no datos de colchón o una marca de " +"reinicio. Esta etiqueta no debería existir en un archivo no comprimido." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Información específica a los datos comprimidos. Cuando se registra un " +"archivo comprimido, la altura válida de la imagen significativa debería " +"registrarse en esta etiqueta, haya o no datos de colchón o una marca de " +"reinicio. Esta etiqueta no debería existir en un archivo no comprimido. Dado " +"que no es necesario el colchón de datos en la dirección vertical, la " +"cantidad de líneas registradas en esta etiqueta válida de altura de la " +"imagen será, de hecho, la misma que la registrada en el SOF." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" +"Se usa para guardar el nombre del archivo de audio relativo a la imágen " + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "Puntero IFD de interoperabilidad" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"El IFD de interoperabilidad está compuesto de etiquetas que almacenan la " +"información para asegurar la interoperabilidad y apuntado por la etiqueta " +"siguiente ubicada en el IFD Exif. La estructura de interoperabilidad de el " +"IFD de interoperabilidad es la misma que la estructura IFD definida por " +"TIFF, pero no contiene los datos de imagen característicos del IFD normal de " +"TIFF." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"Indica la energía del flash en el momento que se captura la imagen, medida " +"en Beam Candle Power Seconds (BCPS)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" +"Este etiqueta registra la tabla de frecuencia espacial de la cámara o " +"dispositivo de entrada y los valores SFR en las direcciones de ancho, alto y " +"diagonal de la imagen, como se especifica en ISO 12233." + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "Resolución X del plano focal" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"Indica la cantidad de pixels en la dirección del ancho (X) de la imagen por " +" del plano focal de la cámara." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Resolución Y del plano focal" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Indica la cantidad de pixels en la dirección del alto (Y) de la imagen por " +" del plano focal de la cámara." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"Indica la unidad para medir e " +". Este valor es el mismo que ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Indica la ubicación del sujeto principal de la escena. El valor de esta " +"etiqueta representa el pixel en el centro del sujeto principal relativo al " +"borde izquierdo, antes del proceso de rotación como lo indica la etiqueta " +". El primer valor indica el número de columna X y el segundo el " +"número de fila Y." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Ãndice de exposición" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Indica el índice de exposición seleccionado en la cámara o dispositivo de " +"entrada en el momento que se captura la imagen." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" +"Indica el tipo de sensor de imagen en la cámara o dispositivo de entrada." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Indica la fuente de la imagen. Si la imagen se registró en un DSC, el valor " +"de esta etiqueta siempre debe ser 3, indicando que la imagen se registró en " +"un DSC." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Indica el tipo de la escena. Si la imagen se registró en un DSC, el valor de " +"esta etiqueta siempre debe ser 1, indicando que la imagen se registró en un " +"DSC." + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "Patrón de la matriz de filtro de color" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Indica el patrón geométrico de la matriz de filtro de color (CFA) del sensor " +"de imagen cuando se utiliza un sensor de área color de un chip. No se aplica " +"a todos los métodos de sensado." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Esta etiqueta indica el uso de procesamiento especial en los datos de " +"imagen, tal como el rendering de la salida. Cuando se realiza un " +"procesamiento especial, se espera que el lector deshabilite o minimice el " +"procesado siguiente." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Esta etiqueta indica el modo de exposición ajustado cuando se tomó la " +"imagen. En el modo auto-bracketing, la cámara toma una serie de cuadros de " +"la misma escena con ajustes de exposición diferentes." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Esta etiqueta indica el modo de balance de blanco establecido cuando se tomó " +"la imagen." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Esta etiqueta indica la relación del zoom digital cuando se tomó la imagen. " +"Si el numerador del valor registrado es 0, esto indica que no se utilizó el " +"zoom digital." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Esta etiqueta indica la distancia focal equivalente asumiendo una cámara de " +"película de 35mm, en mm. Un valor de 0 significa que se desconoce la " +"distancia focal. Note que esta etiqueta difiere de la etiqueta FocalLength." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Esta etiqueta indica el tipo de escena que se tomó. También se puede " +"utilizar para registrar el modo en el cual se tomó la imagen. Note que esto " +"difiere de la etiqueta ." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" +"Esta etiqueta indica el grado del ajuste de ganancia general de imagen." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de contraste aplicado " +"por la cámara cuando se tomó la imagen." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de stauración aplicado " +"por la cámara cuando se tomó la imagen." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Esta etiqueta indica la dirección del procesamiento de nitidez aplicado por " +"la cámara cuando se tomó la imagen." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Esta etiqueta indica información sobre las condiciones de toma de la foto de " +"un modelo de cámara en particular. La etiqueta solo se usa para indicar las " +"condiciones de toma de fotos en el lector." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Esta etiqueta indica la distancia al sujeto." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Esta etiqueta indica un identificador asignado unívocamente a cada imagen. " +"Se registra como una cadena de caracteres ASCII equivalente a notación " +"hexadecimal y de una longitud fija de 128 bits." + +#: src/tags.cpp:1839 +msgid "Camera Owner Name" +msgstr "Nombre del dueño de la cámara" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" +"Esta etiqueta registra el dueño de la cámara en la fotografía como una " +"cadena ASCII." + +#: src/tags.cpp:1843 +msgid "Body Serial Number" +msgstr "Número de serie del cuerpo" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" +"Esta etiqueta registra el número de serie del cuerpo de la cámara que se usó " +"en la fotografía como una cadena ASCII." + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "Especificación de las lentes" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +msgid "Lens Make" +msgstr "Fabricante del objetivo" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" +"Esta etiqueta registra el fabricante del objetivo como una cadena ASCII." + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" +"Esta etiqueta registra el modelo del objetivo y el número del modelo como " +"una cadena ASCII." + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" +"Esta etiqueta registra el número de serie del objetivo intercambiable que se " +"usó en la fotografía como una cadena ASCII." + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Etiqueta Exif desconocida" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Norte" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Sur" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Este" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Oeste" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Sobre el mar" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Bajo el mar" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Medición en progreso" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Interoperabilidad de la medición" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Medida bidimensional" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Medida tridimensional" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "nudos" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Dirección real" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Dirección magnética" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilómetros" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Millas" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "Nudos" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Sin corrección" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Corrección aplicada" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"Indica la versión de . La versión está dada como 2.0.0.0. Esta " +"etiqueta es obligatoria cuando está presente la etiqueta . (Nota: " +"La etiqueta está dada en bytes, a diferencia de la etiqueta " +". Cuando la versión es 2.0.0.0, el valor de la etiqueta es " +"02000000.H)." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "Referencia de latitud GPS" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"Indica si la latitud es Norte o Sur. El valor ASCII 'N' indica latitud " +"Norte, y 'S' indica latitud Sur." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"Indica la latitud, expresada como tres valores RACIONALES dando los grados, " +"minutos y segundos, respectivamente. Cuando se expresan grados, minutos y " +"segundos, el formato es gg/1,mm/1,ss/1. Cuando se utilizan grados y minutos " +"y, por ejemplo, se dan fracciones de minutos hasta con dos posiciones " +"decimales, el formato es gg/1,mmmm/100,0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "Referencia de longitud GPS" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"Indica si la longitud es Este u Oeste. El valor ASCII 'E' indica longitud " +"Este, y 'W' indica longitud Oeste." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"Indica la longitud. La longitud se expresa como tres valores RACIONALES " +"dando los grados, minutos y segundos, respectivamente. Cuando se expresan " +"grados, minutos y segundos, el formato es gg/1,mm/1,ss/1. Cuando se utilizan " +"grados y minutos y, por ejemplo, se dan fracciones de minutos hasta con dos " +"posiciones decimales, el formato es gg/1,mmmm/100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"Indica la altitud utilizada como referencia. Si la referencia es el nivel " +"del mar, y la altitud está por encima, se indica 0. Si la altitud está por " +"debajo del nivel del mar, se indica con 1. La altitud se indica como valor " +"absoluto en la etiqueta GSPAltitude. La unidad de referencia son metros. " +"Tenga en cuenta que esta etiqueta es de tipo BYTE, no como otras etiquetas " +"de referencia." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"Indica la altitud basándose en la referencia GPSAltitudeRef. La altitud se " +"indica como un valor RACIONAL. La unidad de referencia son metros." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" +"Indica la hora como UTC (Tiempo Universal Coordinado). se " +"expresa como tres valores RACIONALES que contienen la hora, minuto y segundo " +"(reloj atómico)." + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" +"Indica los satélites GPS utilizados para realizar las mediciones. Esta " +"etiqueta puede usarse para describir el número de satélites, sus números de " +"identificación, ángulo de elevación, azimut, relación señal-ruido (SNR) y " +"cualquier otra información en notación ASCII. El formato no está " +"especificado. Si el receptor GPS no puede realizar mediciones, el valor de " +"la etiqueta se establece como NULO." + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" +"Indica el estado del receptor de GPS durante la grabación de la imagen. «a» " +"significa que la medición está en progreso y «V» significa que la medición " +"es interoperable." + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" +"Indica el modo de medición GPS que se está realizando. «2» indica una " +"medición en dos dimensiones y «3» indica una medición en 3 dimensiones." + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "Grados de precisión de los datos GPS" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" +"Indica la DOP (precisión del dato por sus siglas en inglés) del GPS. Un " +"valor HDOP es escrito durante la medición bidimensional, el PDOP durante una " +"medición tridimensional." + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" +"Indica la unidad de medida utilizada para expresar la velocidad a la que se " +"mueve el recepto GPS. «K», «M» y «N» representan kilómetros por hora, millas " +"por hora y nudos, respectivamente." + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "Indica la velocidad de movimiento del receptor GPS" + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "Referencia de rastreo GPS" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Indica la referencia para dar la dirección del receptor GPS en movimiento. " +"«T» denota dirección real y «M» denota una dirección magnética." + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"Indica la dirección del movimiento del receptor GPS. El rango de valores va " +"desde 0,00 hasta 359,99" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Indica la referencia para proporcionar la dirección de la imagen cuando es " +"capturada. «T» indica la dirección real y «M» la dirección magnética." + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"Indica la dirección de la imagen cuando fue capturada. El rango de valores " +"va de 0.00 a 359.99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" +"Indica los datos de reconocimiento geodésico empleados por el receptor GPS. " +"Si los datos están restringidos a Japón, el valor de esta etiqueta es " +"«TOKYO» o «WGS-84»." + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Referencia de latitud de destino GPS" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Indica si la latitud del punto de destino es Norte o Sur. El valor ASCII 'N' " +"indica latitud Norte, y 'S' indica latitud Sur." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"Indica la latitud del punto de destino. La latitud se expresa como tres " +"valores RACIONALES dando los grados, minutos y segundos, respectivamente. " +"Cuando se expresan grados, minutos y segundos, el formato es gg/1,mm/1,ss/1. " +"Cuando se utilizan grados y minutos y, por ejemplo, se dan fracciones de " +"minutos hasta con dos posiciones decimales, el formato es gg/1,mmmm/100,0/1." + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "Referencia de longitud de destino GPS" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"Indica si la longitud del destino es este u oeste. El valor ASCII 'E' indica " +"longitud Este, y 'W' indica longitud Oeste." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"Indica la longitud del punto de destino. La longitud está expresada como " +"tres valores RACIONALES que conforman los grados, minutos y segundos, " +"respectivamente. Si la longitud está expresada como grados, minutos y " +"segundos, un formato común sería «ddd/1,mm/1,ss/1». Cuando se emplean grados " +"y minutos y, por ejemplo, las fracciones de minuto se expresan con hasta dos " +"decimales, el formato sería «ddd/1,mmmm/100,0/1»." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Indica la referencia empleada para obtener la dirección angular al punto de " +"destino. «T» denota dirección real, «M» indica dirección magnética." + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" +"Indica la dirección angular al punto de destino. El rango de valores va " +"desde 0,00 hasta 359,99" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" +"Indica la unidad de medida empleada para expresar la distancia al punto de " +"destino. «K», «M» y «N» representan kilómetros, millas y nudos, " +"respectivamente." + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Indica la distancia al punto de destino" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" +"Una cadena de caracteres que almacena el nombre del método utilizado para " +"encontrar la locación. El primer octeto indica el código de caracteres " +"empleado, seguido por el nombre del método." + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" +"Una cadena de caracteres con el nombre del área GPS. El primer byte indica " +"el código de caracteres empleado, y le sigue el nombre del área GPS." + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "Sello de fecha GPS" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" +"Una cadena de caracteres que almacena la información de la fecha y hora " +"relativa al UTC (Tiempo Universal Coordinado). El formato es «YYYY:MM:DD.»." + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "Indica si se aplica la corrección diferencial al receptor GPS" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Etiqueta de información GPS desconocida" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Ãndice de interoperatibidad" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Indica la identificación de la regla de inter-operatibilidad. Utilice " +"\"R98\" para indicar reglas ExifR98. Se utilizan cuatro bytes incluyendo el " +"código de terminación (NULL). Vea el volumen separado de Recommended Exif " +"Interoperatibility Rules (ExifR98) para otras etiquetas usadas en ExifR98." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Versión de interoperatividad" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Versión de interoperatividad" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Formato de archivo de imagen relacionado" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Formato de archivo de archivo de imagen" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Anchura relativa de imagen" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Etiqueta de interoperabilidad Exif desconocida" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" +"Posición de la nota del fabricante desde el inicio de la cabecera TIFF." + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Orden de byte" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" +"Orden de byte utilizada para codificar la nota del fabricante, «MM» (big-" +"endian) o «II» (little-endian)." + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Etiqueta de la nota del fabricate Exiv2 desconocida" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Etiqueta desconocida" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Zoom digital no usado" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "Cabecera TIFF, posición" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "codificado little endian" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "codificado big endian" + +#~ msgid "ascii bytes" +#~ msgstr "bytes ascii" diff --git a/vendor/exiv2-0.25/po/exiv2.pot b/vendor/exiv2-0.25/po/exiv2.pot new file mode 100644 index 0000000..ed31f13 --- /dev/null +++ b/vendor/exiv2-0.25/po/exiv2.pot @@ -0,0 +1,25135 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Andreas Huggel +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "" + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "" + +#: src/canonmn.cpp:439 +msgid "Movie (2)" +msgstr "" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "" + +#: src/canonmn.cpp:1117 +msgid "Auto (ambience priority)" +msgstr "" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "" + +#: src/canonmn.cpp:1347 +msgid "Focus Distance Upper" +msgstr "" + +#: src/canonmn.cpp:1348 +msgid "Focus Distance Lower" +msgstr "" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "" + +#: src/canonmn.cpp:1399 +msgid "Fine Detail" +msgstr "" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "" + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "" + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "" + +#: src/error.cpp:56 +msgid "Success" +msgstr "" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr "" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr "" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr "" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr "" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr "" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr "" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr "" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr "" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr "" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr "" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr "" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr "" + +#: src/exiv2.cpp:294 +msgid " S : print structure of image\n" +msgstr "" + +#: src/exiv2.cpp:295 +msgid " X : extract XMP from image\n" +msgstr "" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr "" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr "" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr "" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr "" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr "" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr "" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr "" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr "" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr "" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr "" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr "" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr "" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr "" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr "" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr "" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr "" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr "" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr "" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr "" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr "" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr "" + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr "" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "" + +#: src/exiv2.cpp:434 +msgid "Invalid regexp" +msgstr "" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "" + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "" + +#: src/exiv2.cpp:1180 +msgid "Invalid command line:" +msgstr "" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "" + +#: src/fujimn.cpp:264 +msgid "Maximum Aperture at Minimum Focal" +msgstr "" + +#: src/fujimn.cpp:265 +msgid "Maximum aperture at minimum focal" +msgstr "" + +#: src/fujimn.cpp:267 +msgid "Maximum Aperture at Maximum Focal" +msgstr "" + +#: src/fujimn.cpp:268 +msgid "Maximum aperture at maximum focal" +msgstr "" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "" + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "" + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "" + +#: src/nikonmn.cpp:153 +msgid "PC Control" +msgstr "" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "" + +#: src/nikonmn.cpp:157 +msgid "White-Balance Bracketing" +msgstr "" + +#: src/nikonmn.cpp:158 +msgid "IR Control" +msgstr "" + +#: src/nikonmn.cpp:159 +msgid "D-Lighting Bracketing" +msgstr "" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr "" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "" + +#: src/nikonmn.cpp:732 +msgid "AF Fine Tune Adjustment" +msgstr "" + +#: src/nikonmn.cpp:732 +msgid "AF fine tune adjustment" +msgstr "" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "" + +#: src/nikonmn.cpp:767 +msgid "Hi 2.3" +msgstr "" + +#: src/nikonmn.cpp:768 +msgid "Hi 2.5" +msgstr "" + +#: src/nikonmn.cpp:769 +msgid "Hi 2.7" +msgstr "" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +msgid "On (39-point)" +msgstr "" + +#: src/nikonmn.cpp:856 +msgid "On (73-point)" +msgstr "" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +msgid "On (105-point)" +msgstr "" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "" + +#: src/nikonmn.cpp:870 +msgid "AF Image Height" +msgstr "" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "" + +#: src/nikonmn.cpp:872 +msgid "AF area y position" +msgstr "" + +#: src/nikonmn.cpp:873 +msgid "AF Area Width" +msgstr "" + +#: src/nikonmn.cpp:873 +msgid "AF area width" +msgstr "" + +#: src/nikonmn.cpp:874 +msgid "AF Area Height" +msgstr "" + +#: src/nikonmn.cpp:874 +msgid "AF area height" +msgstr "" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "" + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "" + +#: src/olympusmn.cpp:343 +msgid "Color matrix number" +msgstr "" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +msgid "Spot+Shadow control" +msgstr "" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +msgid "Auto Setup" +msgstr "" + +#: src/olympusmn.cpp:573 +msgid "5500K (Flash)" +msgstr "" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:577 +msgid "White Fluorescent" +msgstr "" + +#: src/olympusmn.cpp:580 +msgid "One Touch WB 1" +msgstr "" + +#: src/olympusmn.cpp:581 +msgid "One Touch WB 2" +msgstr "" + +#: src/olympusmn.cpp:582 +msgid "One Touch WB 3" +msgstr "" + +#: src/olympusmn.cpp:583 +msgid "One Touch WB 4" +msgstr "" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring Values" +msgstr "" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring values" +msgstr "" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +msgid "Soft Focus 2" +msgstr "" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +msgid "Watercolor" +msgstr "" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +msgid "Miniature" +msgstr "" + +#: src/olympusmn.cpp:1526 +msgid "Reflection" +msgstr "" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +msgid "Cross Process II" +msgstr "" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +msgid "Watercolor I" +msgstr "" + +#: src/olympusmn.cpp:1531 +msgid "Watercolor II" +msgstr "" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +msgid "Partial Color" +msgstr "" + +#: src/olympusmn.cpp:1537 +msgid "Partial Color II" +msgstr "" + +#: src/olympusmn.cpp:1538 +msgid "Partial Color III" +msgstr "" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "" + +#: src/panasonicmn.cpp:61 +msgid "Full HD Movie" +msgstr "" + +#: src/panasonicmn.cpp:62 +msgid "4k Movie" +msgstr "" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "" + +#: src/panasonicmn.cpp:104 +msgid "Macro-zoom" +msgstr "" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "" + +#: src/panasonicmn.cpp:144 +msgid "Clipboard" +msgstr "" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "" + +#: src/panasonicmn.cpp:149 +msgid "Flash Burst" +msgstr "" + +#: src/panasonicmn.cpp:151 +msgid "Film Grain" +msgstr "" + +#: src/panasonicmn.cpp:152 +msgid "My Color" +msgstr "" + +#: src/panasonicmn.cpp:153 +msgid "Photo Frame" +msgstr "" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +msgid "Handheld Night Shot" +msgstr "" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +msgid "Creative Control" +msgstr "" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "" + +#: src/panasonicmn.cpp:162 +msgid "Clear Portrait" +msgstr "" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +msgid "Relaxing Tone" +msgstr "" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +msgid "Distinct Scenery" +msgstr "" + +#: src/panasonicmn.cpp:169 +msgid "Bright Blue Sky" +msgstr "" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +msgid "Glittering Illuminations" +msgstr "" + +#: src/panasonicmn.cpp:178 +msgid "Clear Night Portrait" +msgstr "" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +msgid "Disabled but Required" +msgstr "" + +#: src/panasonicmn.cpp:255 +msgid "Disabled and Not Required" +msgstr "" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +msgid "No Bracket" +msgstr "" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +msgid "1st" +msgstr "" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +msgid "Extended" +msgstr "" + +#: src/panasonicmn.cpp:368 +msgid "NoAuto" +msgstr "" + +#: src/panasonicmn.cpp:369 +msgid "Standard or Custom" +msgstr "" + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +msgid "Left to Right" +msgstr "" + +#: src/panasonicmn.cpp:397 +msgid "Right to Left" +msgstr "" + +#: src/panasonicmn.cpp:398 +msgid "Top to Bottom" +msgstr "" + +#: src/panasonicmn.cpp:399 +msgid "Bottom to Top" +msgstr "" + +#: src/panasonicmn.cpp:405 +msgid "Time Lapse" +msgstr "" + +#: src/panasonicmn.cpp:406 +msgid "Stop-Motion Animation" +msgstr "" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +msgid "Electronic" +msgstr "" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "" + +#: src/panasonicmn.cpp:467 +msgid "AF Assist Lamp" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "" + +#: src/panasonicmn.cpp:477 +msgid "Advanced Scene Type" +msgstr "" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "" + +#: src/panasonicmn.cpp:479 +msgid "Faces detected" +msgstr "" + +#: src/panasonicmn.cpp:483 +msgid "Color Temp Kelvin" +msgstr "" + +#: src/panasonicmn.cpp:483 +msgid "Color Temperatur in Kelvin" +msgstr "" + +#: src/panasonicmn.cpp:484 +msgid "Bracket Settings" +msgstr "" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +msgid "Flash Curtain" +msgstr "" + +#: src/panasonicmn.cpp:488 +msgid "Long Shutter Noise Reduction" +msgstr "" + +#: src/panasonicmn.cpp:491 +msgid "AF Point Position" +msgstr "" + +#: src/panasonicmn.cpp:492 +msgid "Face detection info" +msgstr "" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "" + +#: src/panasonicmn.cpp:496 +msgid "Accessory Serial Number" +msgstr "" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +msgid "Intelligent Exposure" +msgstr "" + +#: src/panasonicmn.cpp:499 +msgid "Firmware Version of the Lens" +msgstr "" + +#: src/panasonicmn.cpp:500 +msgid "Face recognition info" +msgstr "" + +#: src/panasonicmn.cpp:501 +msgid "Flash Warning" +msgstr "" + +#: src/panasonicmn.cpp:501 +msgid "Flash warning" +msgstr "" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "" + +#: src/panasonicmn.cpp:503 +msgid "Baby Name" +msgstr "" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed" +msgstr "" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +msgid "Intelligent Dynamic Range" +msgstr "" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "" + +#: src/panasonicmn.cpp:513 +msgid "City2" +msgstr "" + +#: src/panasonicmn.cpp:515 +msgid "Photo style" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +msgid "Camera Orientation" +msgstr "" + +#: src/panasonicmn.cpp:521 +msgid "Roll Angle" +msgstr "" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +msgid "Sweep Panorama Direction" +msgstr "" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +msgid "Timer Recording" +msgstr "" + +#: src/panasonicmn.cpp:526 +msgid "Internal ND Filter" +msgstr "" + +#: src/panasonicmn.cpp:528 +msgid "Shutter Type" +msgstr "" + +#: src/panasonicmn.cpp:529 +msgid "Clear Retouch Value" +msgstr "" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +msgid "Spot Focusing 2" +msgstr "" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr "" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +msgid "not set" +msgstr "" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "" + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +msgid "Off, Did not fire" +msgstr "" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "" + +#: src/pentaxmn.cpp:253 +msgid "On, Fired" +msgstr "" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +msgid "Contrast-detect" +msgstr "" + +#: src/pentaxmn.cpp:277 +msgid "Tracking Contrast-detect" +msgstr "" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +msgid "AF Select" +msgstr "" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "" + +#: src/pentaxmn.cpp:420 +msgid "Color Temperature Enhancement" +msgstr "" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "" + +#: src/pentaxmn.cpp:432 +msgid "Auto (DaylightFluorescent)" +msgstr "" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "" + +#: src/pentaxmn.cpp:570 +msgid "Resized" +msgstr "" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "" + +#: src/pentaxmn.cpp:573 +msgid "Digital Filter 6" +msgstr "" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "" + +#: src/pentaxmn.cpp:602 +msgid "Blue Sky" +msgstr "" + +#: src/pentaxmn.cpp:604 +msgid "Night Scene HDR" +msgstr "" + +#: src/pentaxmn.cpp:606 +msgid "Quick Macro" +msgstr "" + +#: src/pentaxmn.cpp:607 +msgid "Forest" +msgstr "" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:646 +msgid "Auto Program (Normal)" +msgstr "" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +msgid "Auto Program (DOF)" +msgstr "" + +#: src/pentaxmn.cpp:649 +msgid "Auto Program (MTF)" +msgstr "" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +msgid "Blur control" +msgstr "" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "" + +#: src/pentaxmn.cpp:672 +msgid "Remote Continuous Shooting" +msgstr "" + +#: src/pentaxmn.cpp:675 +msgid "HDR Strong 1" +msgstr "" + +#: src/pentaxmn.cpp:676 +msgid "HDR Strong 2" +msgstr "" + +#: src/pentaxmn.cpp:677 +msgid "HDR Strong 3" +msgstr "" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "" + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "" + +#: src/pentaxmn.cpp:1161 +msgid "Pentax model identification" +msgstr "" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +msgid "Panorama Input Files" +msgstr "" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "" + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "" + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "" + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "" + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "" + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "" + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "" + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "" + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "" + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "" + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "" + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "" + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "" + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "" + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "" + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "" + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "" + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "" + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "" + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +msgid "Private RTK Info" +msgstr "" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "" + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "" + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "" + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "" + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "" + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "" + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "" + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "" + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "" + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "" + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "" + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "" + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "" + +#: src/properties.cpp:478 +msgid "Green Hue" +msgstr "" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "" + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "" + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "" + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +msgid "Make" +msgstr "" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "" + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "" + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "" + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "" + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "" + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "" + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "" + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "" + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "" + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "" + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "" + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "" + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "" + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "" + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "" + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "" + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "" + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "" + +#: src/properties.cpp:746 +msgid "End User" +msgstr "" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "" + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "" + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "" + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "" + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "" + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "" + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "" + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "" + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "" + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "" + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "" + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "" + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "" + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "" + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "" + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "" + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +msgid "RegionInfo" +msgstr "" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "" + +#: src/properties.cpp:991 +msgid "Person Display Name" +msgstr "" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Applied To Dimensions" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +msgid "Region List" +msgstr "" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +msgid "Focus Usage" +msgstr "" + +#: src/properties.cpp:1008 +msgid "Bar Code Value" +msgstr "" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +msgid "Keyword" +msgstr "" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +msgid "Use Panorama Viewer" +msgstr "" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +msgid "Capture Software" +msgstr "" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +msgid "Stitching Software" +msgstr "" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +msgid "Projection Type" +msgstr "" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +msgid "First Photo Date" +msgstr "" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +msgid "Last Photo Date" +msgstr "" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +msgid "Exposure Lock Used" +msgstr "" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +msgid "Archival Location" +msgstr "" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +msgid "Arranger Keywords" +msgstr "" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +msgid "Video Aspect Ratio" +msgstr "" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +msgid "Video Aspect Ratio Type" +msgstr "" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +msgid "Attached File Description" +msgstr "" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +msgid "Attached File Name" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +msgid "Brightness setting." +msgstr "" + +#: src/properties.cpp:1069 +msgid "Camera Byte Order" +msgstr "" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "" + +#: src/properties.cpp:1071 +msgid "Clean Aperture Width" +msgstr "" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1072 +msgid "Clean Aperture Height" +msgstr "" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1073 +msgid "Video Codec" +msgstr "" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +msgid "Video Codec Description" +msgstr "" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +msgid "Video Codec Information" +msgstr "" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +msgid "Video Codec Settings" +msgstr "" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +msgid "Comment" +msgstr "" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned" +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned." +msgstr "" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +msgid "Composer Keywords" +msgstr "" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +msgid "Compressor" +msgstr "" + +#: src/properties.cpp:1088 +msgid "Video Compression Library Used" +msgstr "" + +#: src/properties.cpp:1089 +msgid "Video Compressor ID" +msgstr "" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +msgid "Compressor Version" +msgstr "" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +msgid "Container Type" +msgstr "" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm" +msgstr "" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +msgid "Name of the country where the video was created." +msgstr "" + +#: src/properties.cpp:1101 +msgid "Creation Date" +msgstr "" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +msgid "Pixel Crop Left" +msgstr "" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +msgid "Pixel Crop Right" +msgstr "" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +msgid "Current Time" +msgstr "" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +msgid "Date-Time Original" +msgstr "" + +#: src/properties.cpp:1113 +msgid "Contains the production date" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" + +#: src/properties.cpp:1116 +msgid "Dimensions" +msgstr "" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +msgid "Director" +msgstr "" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +msgid "Doc Type" +msgstr "" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +msgid "Doc Type Read Version" +msgstr "" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +msgid "Doc Type Version" +msgstr "" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "" + +#: src/properties.cpp:1125 +msgid "EBML Read Version" +msgstr "" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +msgid "EBML Version" +msgstr "" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +msgid "End Timecode" +msgstr "" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +msgid "Equipment" +msgstr "" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +msgid "Exposure Compensation Information." +msgstr "" + +#: src/properties.cpp:1146 +msgid "Exposure Program Information." +msgstr "" + +#: src/properties.cpp:1147 +msgid "Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:1148 +msgid "Extended Content Description" +msgstr "" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID" +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "" + +#: src/properties.cpp:1151 +msgid "File Length" +msgstr "" + +#: src/properties.cpp:1151 +msgid "File length." +msgstr "" + +#: src/properties.cpp:1152 +msgid "File Name" +msgstr "" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +msgid "File Size" +msgstr "" + +#: src/properties.cpp:1153 +msgid "File Size, in MB" +msgstr "" + +#: src/properties.cpp:1154 +msgid "File Type" +msgstr "" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +msgid "Frame Count" +msgstr "" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +msgid "Frame Height" +msgstr "" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +msgid "Frame Width" +msgstr "" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +msgid "Reference for image direction." +msgstr "" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +msgid "Graphics Mode" +msgstr "" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "Handler Description" +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "Handler Type" +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Component manufacturer." +msgstr "" + +#: src/properties.cpp:1186 +msgid "Video Height" +msgstr "" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +msgid "Information" +msgstr "" + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "" + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "" + +#: src/properties.cpp:1192 +msgid "Information Text." +msgstr "" + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "" + +#: src/properties.cpp:1193 +msgid "Information URL." +msgstr "" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +msgid "Junk Data" +msgstr "" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +msgid "Language." +msgstr "" + +#: src/properties.cpp:1198 +msgid "Length" +msgstr "" + +#: src/properties.cpp:1198 +msgid "The length of the media file." +msgstr "" + +#: src/properties.cpp:1200 +msgid "Lens Type." +msgstr "" + +#: src/properties.cpp:1201 +msgid "Lightness" +msgstr "" + +#: src/properties.cpp:1201 +msgid "Lightness." +msgstr "" + +#: src/properties.cpp:1202 +msgid "Location Information" +msgstr "" + +#: src/properties.cpp:1202 +msgid "Location Information." +msgstr "" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Equipment Make" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +msgid "Camera Maker Note Type" +msgstr "" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +msgid "Camera Maker Note Version" +msgstr "" + +#: src/properties.cpp:1209 +msgid "Maker Note Version of the camera." +msgstr "" + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "" + +#: src/properties.cpp:1210 +msgid "Camera Manufacturer's URL." +msgstr "" + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:1212 +msgid "Maximum Bit Rate" +msgstr "" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +msgid "Maximum Data Rate" +msgstr "" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "Media Track Duration" +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "Media Header Version" +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "Media Track Modify Date" +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +msgid "Medium." +msgstr "" + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +msgid "Metering mode." +msgstr "" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +msgid "Mime Type" +msgstr "" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +msgid "QTime Minor FileType Version" +msgstr "" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +msgid "Equipment Model" +msgstr "" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:1228 +msgid "Modification Date-Time" +msgstr "" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +msgid "Movie Header Version" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +msgid "Number Of Colours" +msgstr "" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +msgid "Number Of Parts" +msgstr "" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +msgid "Organization" +msgstr "" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +msgid "Part" +msgstr "" + +#: src/properties.cpp:1248 +msgid "Part." +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +msgid "Performer Keywords" +msgstr "" + +#: src/properties.cpp:1250 +msgid "Performer Keywords." +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +msgid "Picture Control Data" +msgstr "" + +#: src/properties.cpp:1252 +msgid "Picture Control Data." +msgstr "" + +#: src/properties.cpp:1253 +msgid "Picture Control Version" +msgstr "" + +#: src/properties.cpp:1253 +msgid "Picture Control Data Version." +msgstr "" + +#: src/properties.cpp:1254 +msgid "Picture Control Name" +msgstr "" + +#: src/properties.cpp:1254 +msgid "Picture Control Name." +msgstr "" + +#: src/properties.cpp:1255 +msgid "Picture Control Base" +msgstr "" + +#: src/properties.cpp:1255 +msgid "Picture Control Data Base." +msgstr "" + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust" +msgstr "" + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust Information." +msgstr "" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjust" +msgstr "" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +msgid "Play Selection" +msgstr "" + +#: src/properties.cpp:1258 +msgid "Play Selection." +msgstr "" + +#: src/properties.cpp:1259 +msgid "Play Mode" +msgstr "" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +msgid "Poster Time" +msgstr "" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +msgid "Preview Atom Type" +msgstr "" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "" + +#: src/properties.cpp:1273 +msgid "Preview Date" +msgstr "" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +msgid "Preview Duration" +msgstr "" + +#: src/properties.cpp:1274 +msgid "The duration of the movie preview in movie time scale units" +msgstr "" + +#: src/properties.cpp:1275 +msgid "Preview Time" +msgstr "" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +msgid "The version of the movie preview " +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +msgid "Producer Keywords" +msgstr "" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +msgid "Production Aperture Width" +msgstr "" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +msgid "Production Aperture Height" +msgstr "" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +msgid "Recording Copyright" +msgstr "" + +#: src/properties.cpp:1291 +msgid "Recording Copyright." +msgstr "" + +#: src/properties.cpp:1292 +msgid "Requirements" +msgstr "" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "" + +#: src/properties.cpp:1297 +msgid "Selection Time" +msgstr "" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +msgid "Selection Duration" +msgstr "" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +msgid "Send Duration" +msgstr "" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +msgid "Software Version" +msgstr "" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "" + +#: src/properties.cpp:1304 +msgid "Song Writer" +msgstr "" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords." +msgstr "" + +#: src/properties.cpp:1307 +msgid "Source Credits" +msgstr "" + +#: src/properties.cpp:1307 +msgid "Source Credits." +msgstr "" + +#: src/properties.cpp:1308 +msgid "Source Form" +msgstr "" + +#: src/properties.cpp:1308 +msgid "Source Form." +msgstr "" + +#: src/properties.cpp:1309 +msgid "Source Image Height" +msgstr "" + +#: src/properties.cpp:1310 +msgid "Source Image Width" +msgstr "" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +msgid "Stream Count" +msgstr "" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "" + +#: src/properties.cpp:1315 +msgid "Stream Name" +msgstr "" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +msgid "Stream Quality" +msgstr "" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +msgid "Stream Sample Rate" +msgstr "" + +#: src/properties.cpp:1318 +msgid "Stream Sample Count" +msgstr "" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +msgid "Stream Type" +msgstr "" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +msgid "Subtitles Codec Information" +msgstr "" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +msgid "Subtitle Codec Settings" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords" +msgstr "" + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords." +msgstr "" + +#: src/properties.cpp:1330 +msgid "Subtitles Language" +msgstr "" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +msgid "Subject. " +msgstr "" + +#: src/properties.cpp:1334 +msgid "TapeName." +msgstr "" + +#: src/properties.cpp:1335 +msgid "Tag Default Setting" +msgstr "" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +msgid "Tag Language" +msgstr "" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +msgid "Tag Name" +msgstr "" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +msgid "Target Type" +msgstr "" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +msgid "Thumbnail Height" +msgstr "" + +#: src/properties.cpp:1341 +msgid "Preview Image Thumbnail Height." +msgstr "" + +#: src/properties.cpp:1342 +msgid "Preview Image Thumbnail Length." +msgstr "" + +#: src/properties.cpp:1343 +msgid "Thumbnail Width" +msgstr "" + +#: src/properties.cpp:1343 +msgid "Preview Image Thumbnail Width." +msgstr "" + +#: src/properties.cpp:1344 +msgid "Timecode Scale" +msgstr "" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "Time Offset" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +msgid "Time Scale" +msgstr "" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +msgid "Number Of Streams" +msgstr "" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Track" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "Track ID" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "Track Header Version" +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "Track Language" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +msgid "Video Track Modify Date" +msgstr "" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +msgid "Track Name" +msgstr "" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +msgid "Track Number." +msgstr "" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown Information" +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +msgid "Video URL" +msgstr "" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +msgid "Vari Program" +msgstr "" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "Vendor ID" +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +msgid "Video Quality" +msgstr "" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Sample Size" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1380 +msgid "Video Scan Type" +msgstr "" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +msgid "White Balance Fine Tune." +msgstr "" + +#: src/properties.cpp:1385 +msgid "Video Width" +msgstr "" + +#: src/properties.cpp:1386 +msgid "Window Location" +msgstr "" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By" +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +msgid "Writing App" +msgstr "" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "" + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +msgid "Balance" +msgstr "" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "" + +#: src/properties.cpp:1399 +msgid "Bits Per Sample/ Bit Rate" +msgstr "" + +#: src/properties.cpp:1399 +msgid "Bits per test sample" +msgstr "" + +#: src/properties.cpp:1401 +msgid "Audio Codec" +msgstr "" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +msgid "Audio Codec Description" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +msgid "Audio Codec Information" +msgstr "" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +msgid "Audio Codec Settings" +msgstr "" + +#: src/properties.cpp:1408 +msgid "Audio Default Duration" +msgstr "" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Default Stream" +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On" +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +msgid "Audio Format" +msgstr "" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +msgid "Output Audio Sample Rate" +msgstr "" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +msgid "Audio Sample Count" +msgstr "" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title." +msgstr "" + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "" + +#: src/properties.cpp:1430 +msgid "Audio Track Duration" +msgstr "" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced" +msgstr "" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +msgid "Audio Track Layer" +msgstr "" + +#: src/properties.cpp:1439 +msgid "Audio Track Modify Date" +msgstr "" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "" + +#: src/properties.cpp:1449 +msgid "The nature or genre of the resource." +msgstr "" + +#: src/properties.cpp:1450 +msgid "Date Modified" +msgstr "" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "" + +#: src/properties.cpp:1451 +msgid "A language of the resource." +msgstr "" + +#: src/properties.cpp:1452 +msgid "License" +msgstr "" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +msgid "Rights Holder" +msgstr "" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +msgid "Access Rights" +msgstr "" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +msgid "References" +msgstr "" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +msgid "Record" +msgstr "" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +msgid "Institution ID" +msgstr "" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +msgid "Collection ID" +msgstr "" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +msgid "Institution Code" +msgstr "" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +msgid "Collection Code" +msgstr "" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +msgid "Dataset Name" +msgstr "" + +#: src/properties.cpp:1488 +msgid "The name identifying the data set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +msgid "Information Withheld" +msgstr "" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +msgid "Dynamic Properties" +msgstr "" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +msgid "Occurrence ID" +msgstr "" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +msgid "Catalog Number" +msgstr "" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +msgid "Record Number" +msgstr "" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +msgid "Sex" +msgstr "" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +msgid "Reproductive Condition" +msgstr "" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +msgid "Preparations" +msgstr "" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +msgid "Disposition" +msgstr "" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +msgid "Other Catalog Numbers" +msgstr "" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +msgid "Previous Identifications" +msgstr "" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +msgid "Associated References" +msgstr "" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +msgid "Associated Sequences" +msgstr "" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +msgid "Organism Name" +msgstr "" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +msgid "Material Sample" +msgstr "" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +msgid "Living Specimen" +msgstr "" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +msgid "Material Sample ID" +msgstr "" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +msgid "Event ID" +msgstr "" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +msgid "Event Date" +msgstr "" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +msgid "Event Latest Date" +msgstr "" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +msgid "Event Time" +msgstr "" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +msgid "Month" +msgstr "" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1673 +msgid "Day" +msgstr "" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +msgid "Verbatim Event Date" +msgstr "" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +msgid "Sampling Size Value" +msgstr "" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +msgid "Field Number" +msgstr "" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +msgid "Field Notes" +msgstr "" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +msgid "Location Class" +msgstr "" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +msgid "Location ID" +msgstr "" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +msgid "Continent" +msgstr "" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +msgid "State Province" +msgstr "" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +msgid "County" +msgstr "" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +msgid "Municipality" +msgstr "" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +msgid "Locality" +msgstr "" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +msgid "Location According To" +msgstr "" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +msgid "Location Remarks" +msgstr "" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +msgid "Verbatim Latitude" +msgstr "" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +msgid "Verbatim Longitude" +msgstr "" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +msgid "Decimal Latitude" +msgstr "" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +msgid "Decimal Longitude" +msgstr "" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +msgid "Georeferenced By" +msgstr "" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +msgid "Georeferenced Date" +msgstr "" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +msgid "Georeference Sources" +msgstr "" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +msgid "Georeference Remarks" +msgstr "" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1892 +msgid "Formation" +msgstr "" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" + +#: src/properties.cpp:1895 +msgid "Member" +msgstr "" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1898 +msgid "Bed" +msgstr "" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1903 +msgid "Identification" +msgstr "" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +msgid "Identification ID" +msgstr "" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +msgid "Identified By" +msgstr "" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +msgid "Date Identified" +msgstr "" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +msgid "Identification References" +msgstr "" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +msgid "Identification Remarks" +msgstr "" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +msgid "Type Status" +msgstr "" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +msgid "Scientific Name" +msgstr "" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "" + +#: src/properties.cpp:1982 +msgid "Higher Classification" +msgstr "" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +msgid "Order" +msgstr "" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +msgid "Nomenclatural Code" +msgstr "" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +msgid "Resource ID" +msgstr "" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +msgid "Related Resource ID" +msgstr "" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +msgid "Relationship Of Resource" +msgstr "" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +msgid "Measurement ID" +msgstr "" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +msgid "Measurement Value" +msgstr "" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +msgid "Measurement Method" +msgstr "" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +msgid "A brief description of the file" +msgstr "" + +#: src/properties.cpp:2102 +msgid "Date Time" +msgstr "" + +#: src/properties.cpp:2103 +msgid "The name of the author or photographer" +msgstr "" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Categories" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "" + +#: src/sonymn.cpp:157 +msgid "Soft Snap / Portrait" +msgstr "" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +msgid "Sweep Panorama" +msgstr "" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +msgid "Background Defocus" +msgstr "" + +#: src/sonymn.cpp:173 +msgid "Soft Skin" +msgstr "" + +#: src/sonymn.cpp:174 +msgid "3D Image" +msgstr "" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "" + +#: src/sonymn.cpp:217 +msgid "Incandescent2" +msgstr "" + +#: src/sonymn.cpp:218 +msgid "Warm White Fluorescent" +msgstr "" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "" + +#: src/sonymn.cpp:464 +msgid "Shot number in continuous burst mode" +msgstr "" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +msgid "B" +msgstr "" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "" + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "" + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" + +#: src/tags.cpp:537 +msgid "Page Number" +msgstr "" + +#: src/tags.cpp:538 +msgid "The page number of the page from which this image was scanned." +msgstr "" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "" + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "" + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "" + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "" + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "" + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "" + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "" + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "" + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "" + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "" + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "" + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "" + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "" + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +msgid "Baseline Sharpness" +msgstr "" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +msgid "Colorimetric Reference" +msgstr "" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +msgid "As Shot Profile Name" +msgstr "" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +msgid "Noise Reduction Applied" +msgstr "" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +msgid "Profile Tone Curve" +msgstr "" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +msgid "Profile Copyright" +msgstr "" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +msgid "Forward Matrix 1" +msgstr "" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +msgid "Forward Matrix 2" +msgstr "" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +msgid "Preview Application Version" +msgstr "" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +msgid "Preview Settings Name" +msgstr "" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +msgid "Preview Settings Digest" +msgstr "" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +msgid "Preview Color Space" +msgstr "" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +msgid "Preview Date Time" +msgstr "" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +msgid "Raw Image Digest" +msgstr "" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +msgid "Noise Profile" +msgstr "" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "" + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +msgid "Sensitivity Type" +msgstr "" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +msgid "ISO Speed Latitude yyy" +msgstr "" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +msgid "ISO Speed Latitude zzz" +msgstr "" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "" + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "" + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" + +#: src/tags.cpp:1839 +msgid "Camera Owner Name" +msgstr "" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +msgid "Body Serial Number" +msgstr "" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +msgid "Lens Make" +msgstr "" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "" + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +msgid "GPS Destination Latitude Reference" +msgstr "" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" diff --git a/vendor/exiv2-0.25/po/fi.po b/vendor/exiv2-0.25/po/fi.po new file mode 100644 index 0000000..c83b124 --- /dev/null +++ b/vendor/exiv2-0.25/po/fi.po @@ -0,0 +1,26720 @@ +# translation of Exiv2.po to Finnish +# +# Copyright (C) 2006-2015 Andreas Huggel +# This file is distributed under the same license as the Exiv2 package. +# +# , 2009. +msgid "" +msgstr "" +"Project-Id-Version: Exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2009-04-12 16:06+0000\n" +"Last-Translator: Mikael Lammentausta\n" +"Language-Team: \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Tiedoston avaus epäonnistui\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Tiedostonimi" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Tiedoston koko" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "tavua" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Mime-tyyppi" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Kuvan koko" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Kuvasta ei löytynyt exif-tietoja\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Kameran merkki" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Kameran malli" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Kuvan aikaleima" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Kuvan numero" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Valotusaika" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Aukko" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Valotuksen korjaus" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Salama" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Salamavalotuksen korjaus" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Polttoväli" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Kohteen etäisyys" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "ISO-herkkyys" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Valotustila" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Mittaustapa" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Makrotila" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Kuvan laatu" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Valkotasapaino" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Näytekuva" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Ei käytössä" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Omistusoikeus" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Exif-kommentti" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Jpeg-kommentti" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Esikatselu" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "pikseliä" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "tavua" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Kuvan luontipäiväystä ei ole asetettu" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Aikaleiman lukeminen epäonnistui" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "tiedostossa" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Päivitetään aikaleima:" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Poistetaan näytekuva" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Poistetaan exif-tiedot" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Poistetaan iptc-tiedot" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Poistetaan jpef-kommentti" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Poistetaan xmp-tiedot" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Tallennetaan näytekuvaa" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "tiedostoon" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Talletetaan jpeg-kommenttia" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Lisää" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Varoitus" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Lukuvirhe" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "arvo" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Aseta" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Poista" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "" + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "vuotta" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "vuosi" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "kuukautta" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "kuukausi" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "päivää" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "päivä" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "" + +#: src/actions.cpp:1708 +#, fuzzy +msgid "No Exif user comment found" +msgstr "Exif-kommentti" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +#, fuzzy +msgid "Setting Exif UNICODE user comment to" +msgstr "Talletetaan jpeg-kommenttia" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Pois" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Päällä" + +#: src/canonmn.cpp:363 +#, fuzzy +msgid "Format 1" +msgstr "Normaali" + +#: src/canonmn.cpp:364 +#, fuzzy +msgid "Format 2" +msgstr "Normaali" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +#, fuzzy +msgid "On (1)" +msgstr "Päällä" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +#, fuzzy +msgid "On (2)" +msgstr "Päällä" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Tuntematon" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Kameran asetukset" + +#: src/canonmn.cpp:383 +#, fuzzy +msgid "Various camera settings" +msgstr "Kameran asetukset" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Polttoväli" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "" + +#: src/canonmn.cpp:386 +#, fuzzy +msgid "Shot information" +msgstr "Värikylläisyys" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panoraama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Kuvan tyyppi" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Kuvan tyyppi" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Firmwaren versio" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Firmwaren versio" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +#, fuzzy +msgid "File Number" +msgstr "F-luku" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +#, fuzzy +msgid "File number" +msgstr "Tiedostonimi" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Omistajan nimi" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Sarjanumero" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Kameran sarjanumero" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "Kameran tyyppi" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "Kameran tyyppi" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "" + +#: src/canonmn.cpp:395 +#, fuzzy +msgid "ModelID" +msgstr "Mallin ID" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Mallin ID" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Kuvan tiedot" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Kuvan tiedot" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "Näytekuva" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Näytekuva" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Sarjanumero" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Sarjanumero" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +#, fuzzy +msgid "Super Macro" +msgstr "Makro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF info" +msgstr "AF-piste" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +#, fuzzy +msgid "White Balance Table" +msgstr " " + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr " " + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Linssin malli" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Linssin malli" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +#, fuzzy +msgid "Internal Serial Number" +msgstr "Linssin sarjanumero" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +#, fuzzy +msgid "Internal serial number" +msgstr "Kameran sarjanumero" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "Värikylläisyys" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "Kuvan koko" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "Ohjelman versio" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "Valotustila" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD Offset" +msgstr "Pois" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD offset" +msgstr "Pois" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "Linssin malli" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "Linssin tyyppi" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normaali" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +#, fuzzy +msgid "Fine" +msgstr "Välähti" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "" + +#: src/canonmn.cpp:438 +#, fuzzy +msgid "Normal Movie" +msgstr "Normaali" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Pieni" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "" + +#: src/canonmn.cpp:449 +#, fuzzy +msgid "Auto + red-eye" +msgstr "Auto, välähti" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Ulkoinen" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +#, fuzzy +msgid "Movie" +msgstr "Pieni" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Kertatarkennus, AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "Jatkuva tarkennus, AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "Vaihtuva tarkennus, AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Käsintarkennus, MF" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +#, fuzzy +msgid "Pan focus" +msgstr "Käsintarkennus, MF" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Suuri" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Keskikokoinen" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Pieni" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +#, fuzzy +msgid "Medium 1" +msgstr "Keskikokoinen" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +#, fuzzy +msgid "Medium 2" +msgstr "Keskikokoinen" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +#, fuzzy +msgid "Medium 3" +msgstr "Keskikokoinen" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Täysautomatiikka" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manuaalinen" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Maisemakuva" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Seepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Muotokuva" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Urheilukuva" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Lähikuva" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Mustavalko" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutraali" + +#: src/canonmn.cpp:505 +#, fuzzy +msgid "Flash off" +msgstr "Salaman tila" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "" + +#: src/canonmn.cpp:508 +#, fuzzy +msgid "Foliage" +msgstr "Malli" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Digitaalinen makro" + +#: src/canonmn.cpp:517 +#, fuzzy +msgid "My Colors" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +#, fuzzy +msgid "Still image" +msgstr "Näytekuva" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "–" + +#: src/canonmn.cpp:540 +#, fuzzy +msgid "Auto High" +msgstr "Auto, välähti" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Oletus" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Piste" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Arvioiva" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Osa-alue" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Keskustaa painottava" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Ei tiedossa" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Makro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "" + +#: src/canonmn.cpp:573 +#, fuzzy +msgid "Close" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:574 +#, fuzzy +msgid "Middle range" +msgstr "Malli" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "" + +#: src/canonmn.cpp:583 +#, fuzzy +msgid "Manual AF point selection" +msgstr "Automaattinen AF-pisteen valinta" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Ei mitään (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Automaattinen" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +#, fuzzy +msgid "Left" +msgstr "Polttoväli" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Automaattinen AF-pisteen valinta" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Täysautomaatti" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Ohjelmoitu AE (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Aukon esivalinta (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Käsisäätöinen valotus (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "Syväterävyysohjelma AE" + +#: src/canonmn.cpp:600 +#, fuzzy +msgid "M-DEP" +msgstr "Syväterävyysohjelma AE" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Ei välähtänyt" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Välähti" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Ulkoinen salama" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Sisäinen salama" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "" + +#: src/canonmn.cpp:980 +#, fuzzy +msgid "FP sync used" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:991 +#, fuzzy +msgid "Normal AE" +msgstr "Normaali" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +#, fuzzy +msgid "Exposure compensation" +msgstr "Valotustila" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "Valotuksen lukitus" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "" + +#: src/canonmn.cpp:1002 +#, fuzzy +msgid "On, shot only" +msgstr "Kertatarkennus, AF" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "AF-piste" + +#: src/canonmn.cpp:1016 +#, fuzzy +msgid "Smooth" +msgstr "kuukausi" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +#, fuzzy +msgid "Full" +msgstr "Täysautomatiikka" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self timer" +msgstr "Sarjanumero" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Kuvanlaatu" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Salaman tila" + +#: src/canonmn.cpp:1045 +#, fuzzy +msgid "Flash mode setting" +msgstr "Salaman malli" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +#, fuzzy +msgid "Drive Mode" +msgstr "Makrotila" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Tarkennustapa" + +#: src/canonmn.cpp:1048 +#, fuzzy +msgid "Focus mode setting" +msgstr "Tarkennustapa" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Kuvan koko" + +#: src/canonmn.cpp:1052 +#, fuzzy +msgid "Easy Mode" +msgstr "Salaman tila" + +#: src/canonmn.cpp:1052 +#, fuzzy +msgid "Easy shooting mode" +msgstr "Täysautomaatti" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Digitaalinen zoom" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Digitaalinen zoom" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Kontrasti" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +#, fuzzy +msgid "Contrast setting" +msgstr "Kontrasti" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Värikylläisyys" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation setting" +msgstr "Värikylläisyys" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Terävyys" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness setting" +msgstr "Terävyys" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "ISO-herkkyys" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +#, fuzzy +msgid "ISO speed setting" +msgstr "ISO-herkkyys" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Mittaustapa" + +#: src/canonmn.cpp:1058 +#, fuzzy +msgid "Metering mode setting" +msgstr "Mittaustapa" + +#: src/canonmn.cpp:1059 +#, fuzzy +msgid "Focus Type" +msgstr "Tarkennustapa" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Valittu AF-piste" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Kuvaustapa" + +#: src/canonmn.cpp:1061 +#, fuzzy +msgid "Exposure mode setting" +msgstr "Valotustila" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Linssin tyyppi" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Linssin tyyppi" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Linssi" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +#, fuzzy +msgid "Short focal" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "Polttoväli" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "Polttoväli" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +#, fuzzy +msgid "Max Aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +#, fuzzy +msgid "Max aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min Aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash Activity" +msgstr "Salaman tyyppi" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash activity" +msgstr "Salaman tyyppi" + +#: src/canonmn.cpp:1070 +#, fuzzy +msgid "Flash Details" +msgstr "Salamavalotuksen korjaus" + +#: src/canonmn.cpp:1070 +#, fuzzy +msgid "Flash details" +msgstr "Salaman malli" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AESetting" +msgstr "Asetukset" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AE setting" +msgstr "Asetukset" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Kuvan vakautus" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Kuvan vakautus" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display Aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "Mittaustapa" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Mittaustapa" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Manuaalinen" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "Käsintarkennus, MF" + +#: src/canonmn.cpp:1083 +#, fuzzy +msgid "Color Tone" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:1083 +#, fuzzy +msgid "Color tone" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "Kuvan laatu" + +#: src/canonmn.cpp:1086 +#, fuzzy +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Kameran asetukset" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Pilvinen" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Keinovalo" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Valkoinen loisteputki" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Mustavalkoinen" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Varjo" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Oma asetus (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "" + +#: src/canonmn.cpp:1109 +#, fuzzy +msgid "Daylight Fluorescent" +msgstr "Valkoinen loisteputki" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "" + +#: src/canonmn.cpp:1117 +msgid "Auto (ambience priority)" +msgstr "" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +#, fuzzy +msgid "right" +msgstr "Omistusoikeus" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "ISO-herkkyys" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "ISO-herkkyys" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +#, fuzzy +msgid "Target Aperture" +msgstr "Aukko" + +#: src/canonmn.cpp:1154 +#, fuzzy +msgid "Target Shutter Speed" +msgstr "Valotusaika" + +#: src/canonmn.cpp:1154 +#, fuzzy +msgid "Target shutter speed" +msgstr "Valotusaika" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Valkotasapaino" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +#, fuzzy +msgid "White balance setting" +msgstr "Valkotasapaino" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Salamavalotuksen korjaus" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Kohteen etäisyys" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Aukko" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Valotusaika" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Valotusaika" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +#, fuzzy +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Kameran asetukset" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "" + +#: src/canonmn.cpp:1196 +#, fuzzy +msgid "Panorama Frame" +msgstr "Panoraama" + +#: src/canonmn.cpp:1196 +#, fuzzy +msgid "Panorama frame number" +msgstr "Kameran sarjanumero" + +#: src/canonmn.cpp:1197 +#, fuzzy +msgid "Panorama Direction" +msgstr "Panoraama" + +#: src/canonmn.cpp:1197 +#, fuzzy +msgid "Panorama direction" +msgstr "Panoraama" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "" + +#: src/canonmn.cpp:1209 +#, fuzzy +msgid "Long exposure noise reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter Ae Lock" +msgstr "Valotusaika" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Flash Sync Speed Av" +msgstr "Salaman tyyppi" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Shutter speed in Av mode" +msgstr "Valotusaika" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/canonmn.cpp:1217 +#, fuzzy +msgid "Lens AF Stop Button" +msgstr "Linssin tyyppi" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "" + +#: src/canonmn.cpp:1248 +#, fuzzy +msgid "upper-right" +msgstr "Omistusoikeus" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "" + +#: src/canonmn.cpp:1253 +#, fuzzy +msgid "lower-right" +msgstr "Omistusoikeus" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +#, fuzzy +msgid "Image Width" +msgstr "Kuvan laatu" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +#, fuzzy +msgid "Image width" +msgstr "Kuvan laatu" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +#, fuzzy +msgid "Image Height" +msgstr "Kuvan tyyppi" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +#, fuzzy +msgid "Image height" +msgstr "Kuvan laatu" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image Height As Shot" +msgstr "Kuvan tyyppi" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +#, fuzzy +msgid "AF Points Used" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +#, fuzzy +msgid "AF points used" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1264 +#, fuzzy +msgid "AF Points Used 20D" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1264 +#, fuzzy +msgid "AF points used (20D)" +msgstr "Käytetty AF-piste" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +#, fuzzy +msgid "Medium Movie" +msgstr "Keskikokoinen" + +#: src/canonmn.cpp:1294 +#, fuzzy +msgid "Small Movie" +msgstr "Pieni" + +#: src/canonmn.cpp:1300 +#, fuzzy +msgid "On 1" +msgstr "Päällä" + +#: src/canonmn.cpp:1301 +#, fuzzy +msgid "On 2" +msgstr "Päällä" + +#: src/canonmn.cpp:1309 +#, fuzzy +msgid "On (shift AB)" +msgstr "Kertatarkennus, AF" + +#: src/canonmn.cpp:1310 +#, fuzzy +msgid "On (shift GM)" +msgstr "Kertatarkennus, AF" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +#, fuzzy +msgid "Blue" +msgstr "arvo" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Makrotila" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Makrotila" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "Makrotila" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "Kuvan laatu" + +#: src/canonmn.cpp:1338 +#, fuzzy +msgid "Raw Jpg Size" +msgstr "Kuvan koko" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Makrotila" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Kohteen etäisyys" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Kohteen etäisyys" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "Valotuksen korjaus" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "Automaattivalotus" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "Värikylläisyys" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "Värikylläisyys" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +#, fuzzy +msgid "Monochrome" +msgstr "Makrotila" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Salamavalotuksen korjaus" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "Kontrasti" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "Tone curve" +msgstr "Kontrasti" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "SharpnessFrequency" +msgstr "Terävyys" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "Sharpness frequency" +msgstr "Terävyys" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "Salaman malli" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "Salaman malli" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Valkotasapaino" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Valkotasapaino" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr " " + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr " " + +#: src/canonmn.cpp:1411 +#, fuzzy +msgid "WhiteBalance" +msgstr "Valkotasapaino" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +#, fuzzy +msgid "Color Temperature" +msgstr "Väriavaruus" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "PictureStyle" +msgstr "Kuvan tiedot" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "Picture style" +msgstr "Kuvan tiedot" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "Digitaalinen makro" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "Digitaalinen makro" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "Kertatarkennus, AF" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "Kertatarkennus, AF" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Kameran asetukset" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "" + +#: src/datasets.cpp:85 +#, fuzzy +msgid "Model Version" +msgstr "Ohjelman versio" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +#, fuzzy +msgid "Destination" +msgstr "Kuvan vakautus" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +#, fuzzy +msgid "File Format" +msgstr "Lukuvirhe" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" + +#: src/datasets.cpp:101 +#, fuzzy +msgid "File Version" +msgstr "Firmwaren versio" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "" + +#: src/datasets.cpp:108 +#, fuzzy +msgid "Envelope Number" +msgstr "F-luku" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +#, fuzzy +msgid "Date Sent" +msgstr "Päiväys ja aika" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +#, fuzzy +msgid "ARM Version" +msgstr "Ohjelman versio" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" + +#: src/datasets.cpp:170 +#, fuzzy +msgid "Record Version" +msgstr "Ohjelman versio" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +#, fuzzy +msgid "Object Type" +msgstr "Linssin tyyppi" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +#, fuzzy +msgid "Object Name" +msgstr "Omistajan nimi" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +#, fuzzy +msgid "Edit Status" +msgstr "Omistusoikeus" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +#, fuzzy +msgid "Subject" +msgstr "Kohteen etäisyys" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "" + +#: src/datasets.cpp:229 +#, fuzzy +msgid "Fixture Id" +msgstr "Välähti" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Avainsanat" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +#, fuzzy +msgid "Location Name" +msgstr "Omistajan nimi" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +#, fuzzy +msgid "Release Date" +msgstr "Mallin ID" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +#, fuzzy +msgid "Reference Number" +msgstr "Sarjanumero" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +#, fuzzy +msgid "Date Created" +msgstr "Kuvan numero" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +#, fuzzy +msgid "Time Created" +msgstr "Kuvan numero" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +#, fuzzy +msgid "Digitization Time" +msgstr "Päiväys ja aika" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Ohjelma" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Ohjelman versio" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +#, fuzzy +msgid "Sub Location" +msgstr "Värikylläisyys" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +#, fuzzy +msgid "Country Code" +msgstr "Kontrasti" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +#, fuzzy +msgid "Country Name" +msgstr "Omistajan nimi" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +#, fuzzy +msgid "Country" +msgstr "Kontrasti" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +#, fuzzy +msgid "Source" +msgstr "Kuvalähde" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +#, fuzzy +msgid "Copyright Notice" +msgstr "Omistusoikeus" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +#, fuzzy +msgid "Contact" +msgstr "Kontrasti" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "" + +#: src/datasets.cpp:399 +#, fuzzy +msgid "Image Orientation" +msgstr "Kuvan numero" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +#, fuzzy +msgid "Language" +msgstr "Suuri" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "" + +#: src/datasets.cpp:414 +#, fuzzy +msgid "Audio Resolution" +msgstr "Resoluutioyksikkö" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "" + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "" + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +#, fuzzy +msgid "Preview Format" +msgstr "Esikatselu" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +#, fuzzy +msgid "Preview Version" +msgstr "Ohjelman versio" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" + +#: src/datasets.cpp:433 +#, fuzzy +msgid "Preview Data" +msgstr "Esikatselu" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +#, fuzzy +msgid "Unknown dataset" +msgstr "Tuntematon" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "" + +#: src/error.cpp:56 +msgid "Success" +msgstr "" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "" + +#: src/error.cpp:65 +#, fuzzy +msgid "%1: Failed to open the data source: %2" +msgstr "Tiedoston avaus epäonnistui\n" + +#: src/error.cpp:66 +#, fuzzy +msgid "%1: Failed to open file (%2): %3" +msgstr "Tiedoston avaus epäonnistui\n" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "" + +#: src/error.cpp:70 +#, fuzzy +msgid "Failed to read image data" +msgstr "Aikaleiman lukeminen epäonnistui" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" + +#: src/error.cpp:73 +#, fuzzy +msgid "%1: Failed to rename file to %2: %3" +msgstr "Tiedoston avaus epäonnistui\n" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "" + +#: src/error.cpp:76 +#, fuzzy +msgid "Failed to read input data" +msgstr "Lukuvirhe" + +#: src/error.cpp:77 +#, fuzzy +msgid "Failed to write image" +msgstr "Lukuvirhe" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr "" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr "" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr "" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr "" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr "" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr "" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr "" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr "" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr "" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr "" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr "" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr "" + +#: src/exiv2.cpp:294 +msgid " S : print structure of image\n" +msgstr "" + +#: src/exiv2.cpp:295 +msgid " X : extract XMP from image\n" +msgstr "" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr "" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr "" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr "" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr "" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr "" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr "" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr "" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr "" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr "" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr "" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr "" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr "" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr "" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr "" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr "" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr "" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr "" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr "" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr "" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr "" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr "" + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr "" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "" + +#: src/exiv2.cpp:434 +msgid "Invalid regexp" +msgstr "" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "" + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "" + +#: src/exiv2.cpp:1180 +msgid "Invalid command line:" +msgstr "" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "" + +#: src/fujimn.cpp:65 +#, fuzzy +msgid "Hard mode 1" +msgstr "Makrotila" + +#: src/fujimn.cpp:66 +#, fuzzy +msgid "Hard mode 2" +msgstr "Makrotila" + +#: src/fujimn.cpp:74 +#, fuzzy +msgid "Fluorescent (daylight)" +msgstr "Valkoinen loisteputki" + +#: src/fujimn.cpp:75 +#, fuzzy +msgid "Fluorescent (warm white)" +msgstr "Valkoinen loisteputki" + +#: src/fujimn.cpp:76 +#, fuzzy +msgid "Fluorescent (cool white)" +msgstr "Valkoinen loisteputki" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +#, fuzzy +msgid "None (black & white)" +msgstr "Mustavalko" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +#, fuzzy +msgid "Red-eye reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +#, fuzzy +msgid "Program AE" +msgstr "Ohjelma" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +#, fuzzy +msgid "Sunset" +msgstr "Aseta" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +#, fuzzy +msgid "Museum" +msgstr "Keskikokoinen" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +#, fuzzy +msgid "Party" +msgstr "Osa-alue" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +#, fuzzy +msgid "Aperture-priority AE" +msgstr "Aukon esivalinta (Av)" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +#, fuzzy +msgid "Shutter speed priority AE" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +#, fuzzy +msgid "Version" +msgstr "Ohjelman versio" + +#: src/fujimn.cpp:180 +#, fuzzy +msgid "Fujifilm Makernote version" +msgstr "Firmwaren versio" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +#, fuzzy +msgid "Image quality setting" +msgstr "Kuvan laatu" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +#, fuzzy +msgid "Color" +msgstr "Väriavaruus" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "" + +#: src/fujimn.cpp:198 +#, fuzzy +msgid "Tone" +msgstr "Ei käytössä" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "" + +#: src/fujimn.cpp:204 +#, fuzzy +msgid "Flash Strength" +msgstr "Salaman tyyppi" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "" + +#: src/fujimn.cpp:208 +#, fuzzy +msgid "Macro mode setting" +msgstr "Makrotila" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +#, fuzzy +msgid "Picture Mode" +msgstr "Kuvan tiedot" + +#: src/fujimn.cpp:220 +#, fuzzy +msgid "Picture mode setting" +msgstr "Kuvan tiedot" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +#, fuzzy +msgid "Sequence Number" +msgstr "Sarjanumero" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "" + +#: src/fujimn.cpp:237 +#, fuzzy +msgid "Blur Warning" +msgstr "Varoitus" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "" + +#: src/fujimn.cpp:240 +#, fuzzy +msgid "Focus Warning" +msgstr "Varoitus" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "" + +#: src/fujimn.cpp:243 +#, fuzzy +msgid "Exposure Warning" +msgstr "Valotuksen korjaus" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +#, fuzzy +msgid "Film Mode" +msgstr "Salaman tila" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +#, fuzzy +msgid "Film mode" +msgstr "Salaman malli" + +#: src/fujimn.cpp:252 +#, fuzzy +msgid "Dynamic Range Setting" +msgstr "Kameran asetukset" + +#: src/fujimn.cpp:253 +#, fuzzy +msgid "Dynamic range settings" +msgstr "Kameran asetukset" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "" + +#: src/fujimn.cpp:258 +#, fuzzy +msgid "Minimum Focal Length" +msgstr "Polttoväli" + +#: src/fujimn.cpp:259 +#, fuzzy +msgid "Minimum focal length" +msgstr "Polttoväli" + +#: src/fujimn.cpp:261 +#, fuzzy +msgid "Maximum Focal Length" +msgstr "Polttoväli" + +#: src/fujimn.cpp:262 +#, fuzzy +msgid "Maximum focal length" +msgstr "Polttoväli" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Aukko" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Aukko" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Aukko" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Aukko" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Kuvalähde" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Kuvalähde" + +#: src/fujimn.cpp:273 +#, fuzzy +msgid "Order Number" +msgstr "Sarjanumero" + +#: src/fujimn.cpp:274 +#, fuzzy +msgid "Order number" +msgstr "Tiedostonimi" + +#: src/fujimn.cpp:276 +#, fuzzy +msgid "Frame Number" +msgstr "F-luku" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +#, fuzzy +msgid "Frame number" +msgstr "Tiedostonimi" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +#, fuzzy +msgid "Solarization" +msgstr "Värikylläisyys" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +#, fuzzy +msgid "Natural" +msgstr "Neutraali" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +#, fuzzy +msgid "Night Portrait" +msgstr "Muotokuva" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "" + +#: src/minoltamn.cpp:90 +#, fuzzy +msgid "Makernote Version" +msgstr "Firmwaren versio" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "" + +#: src/minoltamn.cpp:93 +#, fuzzy +msgid "Camera Settings (Std Old)" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" + +#: src/minoltamn.cpp:96 +#, fuzzy +msgid "Camera Settings (Std New)" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" + +#: src/minoltamn.cpp:99 +#, fuzzy +msgid "Camera Settings (7D)" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "" + +#: src/minoltamn.cpp:102 +#, fuzzy +msgid "Image Stabilization Data" +msgstr "Kuvan vakautus" + +#: src/minoltamn.cpp:103 +#, fuzzy +msgid "Image stabilization data" +msgstr "Kuvan vakautus" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +#, fuzzy +msgid "Compressed Image Size" +msgstr "Kuvan koko" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +#, fuzzy +msgid "Thumbnail Offset" +msgstr "Näytekuvat" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +#, fuzzy +msgid "Thumbnail Length" +msgstr "Näytekuva" + +#: src/minoltamn.cpp:121 +#, fuzzy +msgid "Size of the thumbnail" +msgstr "Tallennetaan näytekuvaa" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +#, fuzzy +msgid "Scene Mode" +msgstr "Linssin malli" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +#, fuzzy +msgid "Color Mode" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#, fuzzy +msgid "Color mode" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +#, fuzzy +msgid "Image Quality" +msgstr "Kuvan laatu" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +#, fuzzy +msgid "Color temperature" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +#, fuzzy +msgid "Lens ID" +msgstr "Linssi" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +#, fuzzy +msgid "Lens identifier" +msgstr "Linssin ominaisuudet" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Valkotasapaino" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr " " + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "Kuvan vakautus" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Kuvan vakautus" + +#: src/minoltamn.cpp:173 +#, fuzzy +msgid "Camera Settings (5D)" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "" + +#: src/minoltamn.cpp:183 +#, fuzzy +msgid "Camera Settings (Z1)" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +#, fuzzy +msgid "Fill flash" +msgstr "Salama" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +#, fuzzy +msgid "Wireless" +msgstr "Päällä, langaton" + +#: src/minoltamn.cpp:224 +#, fuzzy +msgid "Fluorescent 2" +msgstr "Valkoinen loisteputki" + +#: src/minoltamn.cpp:231 +#, fuzzy +msgid "Full size" +msgstr "Tiedoston koko" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "Tiedostonimi" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "" + +#: src/minoltamn.cpp:255 +#, fuzzy +msgid "Bracketing" +msgstr "Makrotila" + +#: src/minoltamn.cpp:256 +#, fuzzy +msgid "Interval" +msgstr "Sisäinen salama" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +#, fuzzy +msgid "Center weighted average" +msgstr "Keskustaa painottava" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +#, fuzzy +msgid "Top-right" +msgstr "Omistusoikeus" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +#, fuzzy +msgid "Soft" +msgstr "Piste" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +#, fuzzy +msgid "Night portrait" +msgstr "Muotokuva" + +#: src/minoltamn.cpp:315 +#, fuzzy +msgid "Sports action" +msgstr "Urheilukuva" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +#, fuzzy +msgid "Black and white" +msgstr "Mustavalko" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "" + +#: src/minoltamn.cpp:364 +#, fuzzy +msgid "No zone" +msgstr "Ei käytössä" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto focus" +msgstr "Vaihtuva tarkennus, AF" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "" + +#: src/minoltamn.cpp:380 +#, fuzzy +msgid "Spot focus" +msgstr "Käytetty AF-piste" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +#, fuzzy +msgid "Exposure" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +#, fuzzy +msgid "Manual flash control" +msgstr "Täysautomatiikka" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Valotustila" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +#, fuzzy +msgid "Flash mode" +msgstr "Salaman malli" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +#, fuzzy +msgid "Drive mode" +msgstr "Kameran malli" + +#: src/minoltamn.cpp:512 +#, fuzzy +msgid "ISO Value" +msgstr "ISO-herkkyys" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Valotusaika" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "F-luku" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "F-luku" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Makrotila" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation" +msgstr "Valotustila" + +#: src/minoltamn.cpp:529 +#, fuzzy +msgid "Bracket Step" +msgstr "Makrotila" + +#: src/minoltamn.cpp:530 +#, fuzzy +msgid "Bracket step" +msgstr "Makrotila" + +#: src/minoltamn.cpp:532 +#, fuzzy +msgid "Interval Length" +msgstr "Polttoväli" + +#: src/minoltamn.cpp:533 +#, fuzzy +msgid "Interval length" +msgstr "Sisäinen salama" + +#: src/minoltamn.cpp:535 +#, fuzzy +msgid "Interval Number" +msgstr "Sarjanumero" + +#: src/minoltamn.cpp:536 +#, fuzzy +msgid "Interval number" +msgstr "Linssin sarjanumero" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +#, fuzzy +msgid "Focus Distance" +msgstr "Kohteen etäisyys" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +#, fuzzy +msgid "Focus distance" +msgstr "Kohteen etäisyys" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Salamavalotuksen korjaus" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Salamavalotuksen korjaus" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "" + +#: src/minoltamn.cpp:556 +#, fuzzy +msgid "File Number Memory" +msgstr "F-luku" + +#: src/minoltamn.cpp:557 +#, fuzzy +msgid "File number memory" +msgstr "Tiedostonimi" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Kuvan numero" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Kuvan numero" + +#: src/minoltamn.cpp:562 +#, fuzzy +msgid "Color Balance Red" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:563 +#, fuzzy +msgid "Color balance red" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:565 +#, fuzzy +msgid "Color Balance Green" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:566 +#, fuzzy +msgid "Color balance green" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:568 +#, fuzzy +msgid "Color Balance Blue" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:569 +#, fuzzy +msgid "Color balance blue" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:580 +#, fuzzy +msgid "Subject Program" +msgstr "Kuvaustapa" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +#, fuzzy +msgid "ISO Settings" +msgstr "Asetukset" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +#, fuzzy +msgid "ISO setting" +msgstr "Asetukset" + +#: src/minoltamn.cpp:589 +#, fuzzy +msgid "Minolta Model" +msgstr "Salaman malli" + +#: src/minoltamn.cpp:590 +#, fuzzy +msgid "Minolta model" +msgstr "Salaman malli" + +#: src/minoltamn.cpp:592 +#, fuzzy +msgid "Interval Mode" +msgstr "Sisäinen salama" + +#: src/minoltamn.cpp:593 +#, fuzzy +msgid "Interval mode" +msgstr "Kameran malli" + +#: src/minoltamn.cpp:595 +#, fuzzy +msgid "Folder Name" +msgstr "Tiedostonimi" + +#: src/minoltamn.cpp:596 +#, fuzzy +msgid "Folder name" +msgstr "Tiedostonimi" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +#, fuzzy +msgid "ColorMode" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +#, fuzzy +msgid "Color Filter" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:602 +#, fuzzy +msgid "Color filter" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:604 +#, fuzzy +msgid "Black and White Filter" +msgstr "Mustavalkoinen" + +#: src/minoltamn.cpp:605 +#, fuzzy +msgid "Black and white filter" +msgstr "Mustavalko" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +#, fuzzy +msgid "Internal Flash" +msgstr "Sisäinen salama" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "" + +#: src/minoltamn.cpp:619 +#, fuzzy +msgid "Wide Focus Zone" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +#, fuzzy +msgid "Focus mode" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +#, fuzzy +msgid "Focus area" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "" + +#: src/minoltamn.cpp:631 +#, fuzzy +msgid "Color Profile" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:632 +#, fuzzy +msgid "Color profile" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +#, fuzzy +msgid "Flash Metering" +msgstr "Salaman tila" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +#, fuzzy +msgid "Flash metering" +msgstr "Salaman tyyppi" + +#: src/minoltamn.cpp:642 +#, fuzzy +msgid "Unknown Minolta Camera Settings tag" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Ohjelma" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Ohjelma" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +#, fuzzy +msgid "Raw+Jpeg" +msgstr "Kuvan koko" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "" + +#: src/minoltamn.cpp:695 +#, fuzzy +msgid "Single-shot AF" +msgstr "Kertatarkennus, AF" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "" + +#: src/minoltamn.cpp:756 +#, fuzzy +msgid "AF Points" +msgstr "AF-piste" + +#: src/minoltamn.cpp:757 +#, fuzzy +msgid "AF points" +msgstr "AF-piste" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Väriavaruus" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +#, fuzzy +msgid "Rotation" +msgstr "Värikylläisyys" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Kuvan numero" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +#, fuzzy +msgid "Noise reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Ohjelma" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Ohjelma" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "" + +#: src/minoltamn.cpp:918 +#, fuzzy +msgid "Central" +msgstr "Neutraali" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "" + +#: src/minoltamn.cpp:920 +#, fuzzy +msgid "Up right" +msgstr "Omistusoikeus" + +#: src/minoltamn.cpp:922 +#, fuzzy +msgid "Down right" +msgstr "Omistusoikeus" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "" + +#: src/minoltamn.cpp:947 +#, fuzzy +msgid "Natural+" +msgstr "Neutraali" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "Linssi" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "" + +#: src/minoltamn.cpp:1003 +#, fuzzy +msgid "Focus Area" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:1036 +#, fuzzy +msgid "Exposure Revision" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "Värikylläisyys" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +#, fuzzy +msgid "Picture Finish" +msgstr "Kuvan tiedot" + +#: src/minoltamn.cpp:1063 +#, fuzzy +msgid "Exposure Manual Bias" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1064 +#, fuzzy +msgid "Exposure manual bias" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +#, fuzzy +msgid "AF Mode" +msgstr "Salaman tila" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +#, fuzzy +msgid "AF mode" +msgstr "Kameran malli" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr " " + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr " " + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "Valkotasapaino" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +#, fuzzy +msgid "Preset" +msgstr "Esikatselu" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +#, fuzzy +msgid "Temperature" +msgstr "Aukko" + +#: src/minoltamn.cpp:1213 +#, fuzzy +msgid "Setup" +msgstr "Aseta" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "Kuvan vakautus" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Kuvan tyyppi" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Kuvan tyyppi" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "Salama" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Esikatselu" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Piste" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Valotusaika" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "Käsintarkennus, MF" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +#, fuzzy +msgid "Over Scale" +msgstr "Omistajan nimi" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "Valotusaika" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "Valotusaika" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Sarjanumero" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Salaman tila" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Salaman tila" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +#, fuzzy +msgid "ISO Setting" +msgstr "Asetukset" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Mittaustapa" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +#, fuzzy +msgid "White balance bracketing" +msgstr " " + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "Valkotasapaino" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Valkotasapaino" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "Valkotasapaino" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Oma asetus (Kelvin)" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Oma asetus (Kelvin)" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Kameran asetukset" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr " " + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "Kuvan koko" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "Kertatarkennus, AF" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Oletus" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "Salaman malli" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "Makrotila" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "Makrotila" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "Kontrasti" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Valotustila" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Valotustila" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Kameran malli" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Valotuksen korjaus" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Tarkennustapa" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Salaman tyyppi" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Salaman tyyppi" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +#, fuzzy +msgid "AE Lock" +msgstr "Valotuksen lukitus" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +#, fuzzy +msgid "Clear" +msgstr "vuosi" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "Omistusoikeus" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "Polttoväli" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Mallin ID" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "" + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "" + +#: src/minoltamn.cpp:2058 +#, fuzzy +msgid "RAW+JPEG" +msgstr "Jpeg" + +#: src/minoltamn.cpp:2059 +#, fuzzy +msgid "CRAW+JPEG" +msgstr "Jpeg" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Pakkaus" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +#, fuzzy +msgid "ISO Setting Used" +msgstr "ISO-herkkyys" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +#, fuzzy +msgid "Upper-right" +msgstr "Omistusoikeus" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +#, fuzzy +msgid "Lower-right" +msgstr "Omistusoikeus" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "" + +#: src/nikonmn.cpp:144 +#, fuzzy +msgid "Fire, external" +msgstr "Ulkoinen" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +#, fuzzy +msgid "Fire, TTL mode" +msgstr "Kameran malli" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +#, fuzzy +msgid "Delay" +msgstr "Poista" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Täysautomatiikka" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Valotusaika" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Valkotasapaino" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Täysautomatiikka" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Makrotila" + +#: src/nikonmn.cpp:166 +#, fuzzy +msgid "PC control" +msgstr "Täysautomatiikka" + +#: src/nikonmn.cpp:167 +#, fuzzy +msgid "Exposure bracketing" +msgstr "Valotuksen korjaus" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +#, fuzzy +msgid "IR control" +msgstr "Täysautomatiikka" + +#: src/nikonmn.cpp:176 +#, fuzzy +msgid "Auto release" +msgstr "Automaattinen" + +#: src/nikonmn.cpp:177 +#, fuzzy +msgid "Manual release" +msgstr "Käsintarkennus, MF" + +#: src/nikonmn.cpp:182 +#, fuzzy +msgid "Lossy (type 1)" +msgstr "Linssin tyyppi" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +#, fuzzy +msgid "Uncompressed" +msgstr "Pakkaus" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "" + +#: src/nikonmn.cpp:185 +#, fuzzy +msgid "Lossy (type 2)" +msgstr "Linssin tyyppi" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "" + +#: src/nikonmn.cpp:194 +#, fuzzy +msgid "Small picture" +msgstr "Pieni" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "Kameran tyyppi" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Väriavaruus" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Kuvan tyyppi" + +#: src/nikonmn.cpp:207 +#, fuzzy +msgid "Minimal" +msgstr "Manuaalinen" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +#, fuzzy +msgid "Nikon Makernote version" +msgstr "Firmwaren versio" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "ISO-herkkyys" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +#, fuzzy +msgid "Sharpening" +msgstr "Varoitus" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +#, fuzzy +msgid "Focus" +msgstr "Tarkennustapa" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +#, fuzzy +msgid "Flash Setting" +msgstr "Asetukset" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +#, fuzzy +msgid "Flash setting" +msgstr "Salamavalotuksen korjaus" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +#, fuzzy +msgid "ISO Selection" +msgstr "ISO-herkkyys" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +#, fuzzy +msgid "ISO selection" +msgstr "ISO-herkkyys" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +#, fuzzy +msgid "Image Adjustment" +msgstr "Kuvan aikaleima" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +#, fuzzy +msgid "Manual focus distance" +msgstr "Käsintarkennus, MF" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +#, fuzzy +msgid "Digital zoom setting" +msgstr "Digitaalinen zoom" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "" + +#: src/nikonmn.cpp:419 +#, fuzzy +msgid "VGA Normal" +msgstr "Normaali" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "" + +#: src/nikonmn.cpp:422 +#, fuzzy +msgid "SXGA Normal" +msgstr "Normaali" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "" + +#: src/nikonmn.cpp:435 +#, fuzzy +msgid "Bright+" +msgstr "Omistusoikeus" + +#: src/nikonmn.cpp:436 +#, fuzzy +msgid "Bright-" +msgstr "Omistusoikeus" + +#: src/nikonmn.cpp:437 +#, fuzzy +msgid "Contrast+" +msgstr "Kontrasti" + +#: src/nikonmn.cpp:438 +#, fuzzy +msgid "Contrast-" +msgstr "Kontrasti" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +#, fuzzy +msgid "Flash Device" +msgstr "Salaman malli" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +#, fuzzy +msgid "Flash device" +msgstr "Salaman malli" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +#, fuzzy +msgid "White Balance Bias" +msgstr "Valkotasapaino" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +#, fuzzy +msgid "White balance bias" +msgstr "Valkotasapaino" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Ohjelma" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "Ohjelman versio" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure Difference" +msgstr "Valotusaika" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure difference" +msgstr "Valotustila" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash Comp" +msgstr "Salaman tila" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image Boundary" +msgstr "Kuvan laatu" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image boundary" +msgstr "Kuvan laatu" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "Makrotila" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "Kuvaustapa" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +#, fuzzy +msgid "Image Processing" +msgstr "Kuvan koko" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +#, fuzzy +msgid "Image processing" +msgstr "Kuvan koko" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Valotusaika" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Valotusaika" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "Kuvan vakautus" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "Kuvan vakautus" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Kuvan tiedot" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Kuvan tiedot" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "Valotusaika" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "Valotusaika" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "" + +#: src/nikonmn.cpp:568 +#, fuzzy +msgid "Tone Compensation" +msgstr "Pakkaus" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +#, fuzzy +msgid "Shooting Mode" +msgstr "Mittaustapa" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +#, fuzzy +msgid "Shooting mode" +msgstr "Mittaustapa" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "Linssin tyyppi" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "Kontrasti" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "Kontrasti" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Väriavaruus" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Väriavaruus" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +#, fuzzy +msgid "Scene mode" +msgstr "Mittaustapa" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +#, fuzzy +msgid "Light Source" +msgstr "Kuvalähde" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +#, fuzzy +msgid "Light source" +msgstr "Kuvalähde" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Pakkaus" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Pakkaus" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color Balance" +msgstr "Väriavaruus" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color balance" +msgstr "Väriavaruus" + +#: src/nikonmn.cpp:590 +#, fuzzy +msgid "Lens Data" +msgstr "Linssin tyyppi" + +#: src/nikonmn.cpp:590 +#, fuzzy +msgid "Lens data settings" +msgstr "Kameran asetukset" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "Kuvan numero" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch History" +msgstr "Kuvan tyyppi" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "" + +#: src/nikonmn.cpp:597 +#, fuzzy +msgid "Serial NO" +msgstr "Sarjanumero" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +#, fuzzy +msgid "Image Data Size" +msgstr "Kuvan koko" + +#: src/nikonmn.cpp:598 +#, fuzzy +msgid "Image data size" +msgstr "Kuvan koko" + +#: src/nikonmn.cpp:600 +#, fuzzy +msgid "Image Count" +msgstr "Kuvan laatu" + +#: src/nikonmn.cpp:600 +#, fuzzy +msgid "Image count" +msgstr "Kuvan laatu" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +#, fuzzy +msgid "Shutter Count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "" + +#: src/nikonmn.cpp:603 +#, fuzzy +msgid "Flash info" +msgstr "Salamavalotuksen korjaus" + +#: src/nikonmn.cpp:604 +#, fuzzy +msgid "Image Optimization" +msgstr "Kuvan vakautus" + +#: src/nikonmn.cpp:604 +#, fuzzy +msgid "Image optimization" +msgstr "Kuvan vakautus" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "Ohjelman versio" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "Ohjelman versio" + +#: src/nikonmn.cpp:608 +#, fuzzy +msgid "AF Response" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:608 +#, fuzzy +msgid "AF response" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Automaattivalotus" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "" + +#: src/nikonmn.cpp:613 +#, fuzzy +msgid "File info" +msgstr "Tiedostonimi" + +#: src/nikonmn.cpp:614 +#, fuzzy +msgid "AF tune" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "Firmwaren versio" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "Firmwaren versio" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +#, fuzzy +msgid "No" +msgstr "Ei käytössä" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "" + +#: src/nikonmn.cpp:667 +#, fuzzy +msgid "Default Settings" +msgstr "Kameran asetukset" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "" + +#: src/nikonmn.cpp:669 +#, fuzzy +msgid "Full Control" +msgstr "Täysautomatiikka" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "Värikylläisyys" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "Värikylläisyys" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "Kameran asetukset" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "" + +#: src/nikonmn.cpp:759 +#, fuzzy +msgid "Hi 0.3" +msgstr "HV10" + +#: src/nikonmn.cpp:760 +#, fuzzy +msgid "Hi 0.5" +msgstr "HV10" + +#: src/nikonmn.cpp:761 +#, fuzzy +msgid "Hi 0.7" +msgstr "HV10" + +#: src/nikonmn.cpp:762 +#, fuzzy +msgid "Hi 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:763 +#, fuzzy +msgid "Hi 1.3" +msgstr "HV10" + +#: src/nikonmn.cpp:764 +#, fuzzy +msgid "Hi 1.5" +msgstr "HV10" + +#: src/nikonmn.cpp:765 +#, fuzzy +msgid "Hi 1.7" +msgstr "HV10" + +#: src/nikonmn.cpp:766 +#, fuzzy +msgid "Hi 2.0" +msgstr "HV10" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "HV10" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "HV10" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "HV10" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +#, fuzzy +msgid "Lo 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "" + +#: src/nikonmn.cpp:785 +#, fuzzy +msgid "ISO 2" +msgstr "Päällä" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Kameran malli" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +#, fuzzy +msgid "AF point" +msgstr "AF-piste" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Päällä" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Päällä" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Päällä" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "Kontrasti" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "Kontrasti" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "AF-piste" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Kuvan tyyppi" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "Salaman tila" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "Kameran malli" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "Salaman tila" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "Kameran malli" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Salaman tila" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Kameran malli" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Salaman tila" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "Kameran malli" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "" + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "F-luku" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Tiedostonimi" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +#, fuzzy +msgid "Multiple Exposure" +msgstr "Automaattivalotus" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Kuvan numero" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Valotustila" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "Valotustila" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Automaattivalotus" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Automaattivalotus" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +#, fuzzy +msgid "Internal" +msgstr "Ulkoinen" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "" + +#: src/nikonmn.cpp:993 +#, fuzzy +msgid "Auto Aperture" +msgstr "Aukko" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Ei salamaa" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "F-luku" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "Kuvalähde" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "Kuvalähde" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Ulkoinen salama" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Ulkoinen salama" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "Ulkoinen salama" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "Ulkoinen salama" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +#, fuzzy +msgid "Shutter count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "Salaman malli" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "Salaman malli" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Käytetty AF-piste" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "Päällä" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Linssin sarjanumero" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Linssin sarjanumero" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "Linssin tyyppi" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "Linssin tyyppi" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min Focal Length" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min focal length" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max Focal Length" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max focal length" +msgstr "Polttoväli" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "Ohjelman versio" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "Ohjelman versio" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Aukko" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Aukko" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "AF-piste" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +#, fuzzy +msgid "Sport" +msgstr "Urheilukuva" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +#, fuzzy +msgid "Landscape+Portrait" +msgstr "Maisemakuva" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +#, fuzzy +msgid "Self Portrait" +msgstr "Muotokuva" + +#: src/olympusmn.cpp:102 +#, fuzzy +msgid "2 in 1" +msgstr "Päällä" + +#: src/olympusmn.cpp:105 +#, fuzzy +msgid "Night+Portrait" +msgstr "Muotokuva" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +#, fuzzy +msgid "My Mode" +msgstr "Makrotila" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +#, fuzzy +msgid "Pet" +msgstr "Aseta" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "Kuvan vakautus" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "" + +#: src/olympusmn.cpp:145 +#, fuzzy +msgid "Internal + External" +msgstr "Sisäinen salama" + +#: src/olympusmn.cpp:176 +#, fuzzy +msgid "Interlaced" +msgstr "Sisäinen salama" + +#: src/olympusmn.cpp:177 +#, fuzzy +msgid "Progressive" +msgstr "Ohjelman versio" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Näytekuva" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Näytekuva" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:195 +#, fuzzy +msgid "Special Mode" +msgstr "ISO-herkkyys" + +#: src/olympusmn.cpp:196 +#, fuzzy +msgid "Picture taking mode" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:204 +#, fuzzy +msgid "Black & White Mode" +msgstr "Mustavalkoinen" + +#: src/olympusmn.cpp:205 +#, fuzzy +msgid "Black and white mode" +msgstr "Mustavalko" + +#: src/olympusmn.cpp:208 +#, fuzzy +msgid "Digital zoom ratio" +msgstr "Digitaalinen zoom" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Kameran tyyppi" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Kameran tyyppi" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +#, fuzzy +msgid "Camera ID" +msgstr "Kameran tyyppi" + +#: src/olympusmn.cpp:223 +#, fuzzy +msgid "Camera ID data" +msgstr "Kameran merkki" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Ohjelmisto" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +#, fuzzy +msgid "Preview Image" +msgstr "Esikatselu" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +#, fuzzy +msgid "Preview image" +msgstr "Esikatselu" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "" + +#: src/olympusmn.cpp:244 +#, fuzzy +msgid "One touch white balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +#, fuzzy +msgid "White Balance Bracket" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +#, fuzzy +msgid "White balance bracket" +msgstr " " + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +#, fuzzy +msgid "Firmware" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "" + +#: src/olympusmn.cpp:262 +#, fuzzy +msgid "Various camera settings 1" +msgstr "Kameran asetukset" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "" + +#: src/olympusmn.cpp:265 +#, fuzzy +msgid "Various camera settings 2" +msgstr "Kameran asetukset" + +#: src/olympusmn.cpp:268 +#, fuzzy +msgid "Shutter speed value" +msgstr "Valotusaika" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "ISO-herkkyys" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Aukko" + +#: src/olympusmn.cpp:277 +#, fuzzy +msgid "Brightness value" +msgstr "Aukko" + +#: src/olympusmn.cpp:285 +#, fuzzy +msgid "Bracket" +msgstr "Makrotila" + +#: src/olympusmn.cpp:286 +#, fuzzy +msgid "Exposure compensation value" +msgstr "Valotustila" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "" + +#: src/olympusmn.cpp:291 +#, fuzzy +msgid "Lens Temperature" +msgstr "Linssin ominaisuudet" + +#: src/olympusmn.cpp:292 +#, fuzzy +msgid "Lens temperature" +msgstr "Linssin ominaisuudet" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "" + +#: src/olympusmn.cpp:309 +#, fuzzy +msgid "Macro Focus" +msgstr "Makrotila" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +#, fuzzy +msgid "Sharpness Factor" +msgstr "Terävyys" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +#, fuzzy +msgid "Sharpness factor" +msgstr "Terävyys" + +#: src/olympusmn.cpp:315 +#, fuzzy +msgid "Flash Charge Level" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:316 +#, fuzzy +msgid "Flash charge level" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +#, fuzzy +msgid "Color Matrix" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +#, fuzzy +msgid "Color matrix" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:321 +#, fuzzy +msgid "BlackLevel" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +#, fuzzy +msgid "Black level" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +#, fuzzy +msgid "White balance mode" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +#, fuzzy +msgid "Red Balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +#, fuzzy +msgid "Red balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +#, fuzzy +msgid "Blue Balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +#, fuzzy +msgid "Blue balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:342 +#, fuzzy +msgid "Color Matrix Number" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:345 +#, fuzzy +msgid "Serial Number 2" +msgstr "Sarjanumero" + +#: src/olympusmn.cpp:346 +#, fuzzy +msgid "Serial number 2" +msgstr "Sarjanumero" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External Flash Zoom" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External flash zoom" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:387 +#, fuzzy +msgid "External Flash Mode" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:388 +#, fuzzy +msgid "External flash mode" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:396 +#, fuzzy +msgid "Color Control" +msgstr "Täysautomatiikka" + +#: src/olympusmn.cpp:397 +#, fuzzy +msgid "Color control" +msgstr "Täysautomatiikka" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "tiedostoon" + +#: src/olympusmn.cpp:423 +#, fuzzy +msgid "Compression Ratio" +msgstr "Pakkaus" + +#: src/olympusmn.cpp:424 +#, fuzzy +msgid "Compression ratio" +msgstr "Pakkaus" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "Linssin tyyppi" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "Kameran asetukset" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:462 +#, fuzzy +msgid "Focus Info" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Ohjelma" + +#: src/olympusmn.cpp:491 +#, fuzzy +msgid "Center-weighted average" +msgstr "Keskustaa painottava" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +msgid "Spot+Shadow control" +msgstr "" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "" + +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "Käytetty AF-piste" + +#: src/olympusmn.cpp:518 +#, fuzzy +msgid "AF Used" +msgstr "Käytetty AF-piste" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "" + +#: src/olympusmn.cpp:534 +#, fuzzy +msgid "Forced On" +msgstr "Valkoinen loisteputki" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "" + +#: src/olympusmn.cpp:568 +#, fuzzy +msgid "6000K (Cloudy)" +msgstr "Pilvinen" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Aukko" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Ei salamaa" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Valkoinen loisteputki" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +#, fuzzy +msgid "On, Mode 1" +msgstr "Linssin malli" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +#, fuzzy +msgid "On, Mode 2" +msgstr "Linssin malli" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "Linssin malli" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera Settings Version" +msgstr "Kameran asetukset" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera settings version" +msgstr "Kameran asetukset" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "" + +#: src/olympusmn.cpp:666 +#, fuzzy +msgid "Auto exposure lock" +msgstr "Automaattivalotus" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "Valotusaika" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "Valotusaika" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF Areas" +msgstr "Salaman tila" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF areas" +msgstr "Kameran malli" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Valittu AF-piste" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF Fine Tune Adjust" +msgstr "Käytetty AF-piste" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF fine tune adjust" +msgstr "Käytetty AF-piste" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "Täysautomatiikka" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "Täysautomatiikka" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Salaman tila" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "Salaman tyyppi" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "Salaman tyyppi" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "Salaman tyyppi" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "Täysautomatiikka" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +#, fuzzy +msgid "White Balance 2" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +#, fuzzy +msgid "White balance 2" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White Balance Temperature" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White balance temperature" +msgstr " " + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom Saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified Saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +#, fuzzy +msgid "Contrast Setting" +msgstr "Kameran asetukset" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness Setting" +msgstr "Terävyys" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression Factor" +msgstr "Pakkaus" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression factor" +msgstr "Pakkaus" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +#, fuzzy +msgid "Gradation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +#, fuzzy +msgid "Picture mode" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:697 +#, fuzzy +msgid "Picture Mode Saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +#, fuzzy +msgid "Picture mode saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture Mode Hue" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture mode hue" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture Mode Tone" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture mode tone" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise filter" +msgstr "tiedostoon" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Digitaalinen makro" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Digitaalinen makro" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama Mode" +msgstr "Panoraama" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama mode" +msgstr "Panoraama" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image Quality 2" +msgstr "Kuvan laatu" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image quality 2" +msgstr "Kuvan laatu" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:747 +#, fuzzy +msgid "Serial number" +msgstr "Sarjanumero" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Linssin sarjanumero" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Linssin sarjanumero" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens Firmware Version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens firmware version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Linssin ominaisuudet" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Linssin ominaisuudet" + +#: src/olympusmn.cpp:761 +#, fuzzy +msgid "Extender" +msgstr "Ulkoinen" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender Serial Number" +msgstr "Linssin sarjanumero" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender serial number" +msgstr "Linssin sarjanumero" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender Model" +msgstr "Linssin malli" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender model" +msgstr "Kameran malli" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender Firmware Version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender firmwareversion" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Salaman sarjanumero" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +#, fuzzy +msgid "High Speed" +msgstr "ISO-herkkyys" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "" + +#: src/olympusmn.cpp:797 +#, fuzzy +msgid "Edited (Landscape)" +msgstr "Maisemakuva" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +#, fuzzy +msgid "Edited (Portrait)" +msgstr "Muotokuva" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +#, fuzzy +msgid "Exposure Bias Value" +msgstr "Valotuksen korjaus" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +#, fuzzy +msgid "Exposure bias value" +msgstr "Valotuksen korjaus" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White Balance Value" +msgstr " " + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White balance value" +msgstr " " + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "AF-piste" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation Emphasis" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation emphasis" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast Value" +msgstr "Kontrasti" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast value" +msgstr "Kontrasti" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness Value" +msgstr "Terävyys" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness value" +msgstr "Terävyys" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Asetukset" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "" + +#: src/olympusmn.cpp:889 +#, fuzzy +msgid "White balance fine adjustment" +msgstr " " + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "Kontrasti" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "Terävyys" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Kuvan tiedot" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Päällä" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Päällä" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Ohjelman versio" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Firmwaren versio" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Omistusoikeus" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Omistusoikeus" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +#, fuzzy +msgid "Black Level" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +#, fuzzy +msgid "Crop Left" +msgstr "Polttoväli" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +#, fuzzy +msgid "Crop Height" +msgstr "Omistusoikeus" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +#, fuzzy +msgid "Crop height" +msgstr "Omistusoikeus" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Valotustila" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Valotustila" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Omistajan nimi" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Omistajan nimi" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "Lukuvirhe" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "Lukuvirhe" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "" + +#: src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto Focus" +msgstr "Automaattivalotus" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene area" +msgstr "Omistajan nimi" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "" + +#: src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom Step Count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "" + +#: src/olympusmn.cpp:1016 +#, fuzzy +msgid "External Flash" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Ulkoinen salama" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "Manuaalinen" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "Käsintarkennus, MF" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black Level 2" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black level 2" +msgstr "Salaman malli" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "Asetukset" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "Asetukset" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "Valkotasapaino" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM Hue" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM hue" +msgstr "Väriavaruus" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "Kontrasti" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "Kontrasti" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "Terävyys" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "Terävyys" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "Kuvan koko" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Käytetty AF-piste" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Kuvalähde" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Panoraama" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:1510 +#, fuzzy +msgid "Fish Eye" +msgstr "Salaman tila" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +#, fuzzy +msgid "Dramatic Tone" +msgstr "Värikylläisyys" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Käytetty AF-piste" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +msgid "Watercolor" +msgstr "" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Aukko" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Resoluutioyksikkö" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Tarkennustapa" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +msgid "Watercolor I" +msgstr "" + +#: src/olympusmn.cpp:1531 +msgid "Watercolor II" +msgstr "" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Panoraama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Osa-alue" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Osa-alue" + +#: src/olympusmn.cpp:1538 +msgid "Partial Color III" +msgstr "" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "Omistusoikeus" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Tiedostonimi" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Kameran asetukset" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Pieni" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Pieni" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +#, fuzzy +msgid "Panning" +msgstr "Varoitus" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Makro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "" + +#: src/panasonicmn.cpp:117 +#, fuzzy +msgid "Shutter-speed priority" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Esikatselu" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Väriavaruus" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Panoraama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Valkotasapaino" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Salamavalotuksen korjaus" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Tiedostonimi" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Väriavaruus" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Panoraama" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Kuvan tyyppi" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Täysautomatiikka" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +#, fuzzy +msgid "Digital Filter" +msgstr "Digitaalinen makro" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Muotokuva" + +#: src/panasonicmn.cpp:163 +#, fuzzy +msgid "Silky Skin" +msgstr "Piste" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Resoluutioyksikkö" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Linssi" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "arvo" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +msgid "Glittering Illuminations" +msgstr "" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Muotokuva" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +#, fuzzy +msgid "Low/High quality" +msgstr "Kuvan laatu" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "Keskikokoinen" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "Keskikokoinen" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +msgid "Disabled but Required" +msgstr "" + +#: src/panasonicmn.cpp:255 +msgid "Disabled and Not Required" +msgstr "" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Makrotila" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +msgid "1st" +msgstr "" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Ulkoinen" + +#: src/panasonicmn.cpp:368 +msgid "NoAuto" +msgstr "" + +#: src/panasonicmn.cpp:369 +msgid "Standard or Custom" +msgstr "" + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Omistusoikeus" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Kuvalähde" + +#: src/panasonicmn.cpp:398 +msgid "Top to Bottom" +msgstr "" + +#: src/panasonicmn.cpp:399 +msgid "Bottom to Top" +msgstr "" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Omistajan nimi" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Värikylläisyys" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +msgid "Electronic" +msgstr "" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "" + +#: src/panasonicmn.cpp:453 +#, fuzzy +msgid "White balance adjustment" +msgstr " " + +#: src/panasonicmn.cpp:454 +#, fuzzy +msgid "FlashBias" +msgstr "Salamavalotuksen korjaus" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +#, fuzzy +msgid "Exif version" +msgstr "Firmwaren versio" + +#: src/panasonicmn.cpp:458 +#, fuzzy +msgid "Color Effect" +msgstr "Väriavaruus" + +#: src/panasonicmn.cpp:458 +#, fuzzy +msgid "Color effect" +msgstr "Väriavaruus" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst Mode" +msgstr "Makrotila" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst mode" +msgstr "Makrotila" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "" + +#: src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self Timer" +msgstr "Sarjanumero" + +#: src/panasonicmn.cpp:467 +msgid "AF Assist Lamp" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Ohjelma" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Linssin tyyppi" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Lukuvirhe" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Oma asetus (Kelvin)" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Väriavaruus" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Makrotila" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Salamavalotuksen korjaus" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "AF-piste" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Lukuvirhe" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Linssin tyyppi" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "Linssin tyyppi" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Sarjanumero" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Automaattivalotus" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Firmwaren versio" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Lukuvirhe" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Varoitus" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Salaman tila" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Omistajan nimi" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +#, fuzzy +msgid "State" +msgstr "Ohjelmisto" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Valotusaika" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +msgid "Intelligent Dynamic Range" +msgstr "" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "" + +#: src/panasonicmn.cpp:513 +msgid "City2" +msgstr "" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Kuvan tiedot" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Kuvan numero" + +#: src/panasonicmn.cpp:521 +msgid "Roll Angle" +msgstr "" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Panoraama" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +msgid "Timer Recording" +msgstr "" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Sisäinen salama" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Valotusaika" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Aukko" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "Firmwaren versio" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "Firmwaren versio" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Käytetty AF-piste" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr "" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +msgid "not set" +msgstr "" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "Ohjelman versio" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "Linssin tyyppi" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "Linssin tyyppi" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "Keskustaa painottava" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "Keskustaa painottava" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Valmistaja" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Malli" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "" + +#: src/pentaxmn.cpp:201 +#, fuzzy +msgid "Best" +msgstr "tavua" + +#: src/pentaxmn.cpp:204 +#, fuzzy +msgid "Premium" +msgstr "Keskikokoinen" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Auto, ei välähtänyt" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Ei välähtänyt" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Auto, ei välähtänyt, punasilmäisyyden esto" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Auto, välähti" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Välähti" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Auto, välähti, punasilmäisyyden esto" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/pentaxmn.cpp:256 +#, fuzzy +msgid "On, Wireless (Master)" +msgstr "Päällä, langaton" + +#: src/pentaxmn.cpp:257 +#, fuzzy +msgid "On, Wireless (Control)" +msgstr "Päällä, langaton" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "" + +#: src/pentaxmn.cpp:260 +#, fuzzy +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +#, fuzzy +msgid "Pan Focus" +msgstr "Käsintarkennus, MF" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Kontrasti" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Kontrasti" + +#: src/pentaxmn.cpp:284 +#, fuzzy +msgid "Fixed Center" +msgstr "Tiedostonimi" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Valittu AF-piste" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "" + +#: src/pentaxmn.cpp:403 +#, fuzzy +msgid "Center Weighted" +msgstr "Keskustaa painottava" + +#: src/pentaxmn.cpp:415 +#, fuzzy +msgid "DaylightFluorescent" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:416 +#, fuzzy +msgid "DaywhiteFluorescent" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Oma asetus (Kelvin)" + +#: src/pentaxmn.cpp:423 +#, fuzzy +msgid "User Selected" +msgstr "Automaattinen" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "" + +#: src/pentaxmn.cpp:430 +#, fuzzy +msgid "Auto (Flash)" +msgstr "Ei salamaa" + +#: src/pentaxmn.cpp:431 +#, fuzzy +msgid "Auto (Tungsten)" +msgstr "Keinovalo" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "" + +#: src/pentaxmn.cpp:434 +#, fuzzy +msgid "Auto (WhiteFluorescent)" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:435 +#, fuzzy +msgid "Auto (Cloudy)" +msgstr "Pilvinen" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "" + +#: src/pentaxmn.cpp:497 +#, fuzzy +msgid "Mexico City" +msgstr "Linssin tyyppi" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "" + +#: src/pentaxmn.cpp:510 +#, fuzzy +msgid "Paris" +msgstr "Osa-alue" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "" + +#: src/pentaxmn.cpp:516 +#, fuzzy +msgid "Cairo" +msgstr "Makro" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "" + +#: src/pentaxmn.cpp:524 +#, fuzzy +msgid "Male" +msgstr "arvo" + +#: src/pentaxmn.cpp:525 +#, fuzzy +msgid "Delhi" +msgstr "Poista" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "" + +#: src/pentaxmn.cpp:538 +#, fuzzy +msgid "Perth" +msgstr "Suuri" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "" + +#: src/pentaxmn.cpp:541 +#, fuzzy +msgid "Manila" +msgstr "Manuaalinen" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "" + +#: src/pentaxmn.cpp:548 +#, fuzzy +msgid "Noumea" +msgstr "Normaali" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "" + +#: src/pentaxmn.cpp:555 +#, fuzzy +msgid "Athens" +msgstr "Linssi" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "Tiedoston koko" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Digitaalinen makro" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +#, fuzzy +msgid "Hi-speed Program" +msgstr "Kuvaustapa" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +#, fuzzy +msgid "DOF Program" +msgstr "Ohjelma" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +#, fuzzy +msgid "MTF Program" +msgstr "Ohjelma" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Ei salamaa" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "arvo" + +#: src/pentaxmn.cpp:604 +msgid "Night Scene HDR" +msgstr "" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Makro" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "" + +#: src/pentaxmn.cpp:612 +#, fuzzy +msgid "Auto PICT (Landscape)" +msgstr "Maisemakuva" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "Linssin malli" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +#, fuzzy +msgid "Shutter Speed Priority" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +#, fuzzy +msgid "Aperture Priority" +msgstr "Aukon esivalinta (Av)" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Ohjelma" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Ohjelma" + +#: src/pentaxmn.cpp:635 +#, fuzzy +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Aukon esivalinta (Av)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "" + +#: src/pentaxmn.cpp:639 +#, fuzzy +msgid "Shutter Priority" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/pentaxmn.cpp:640 +#, fuzzy +msgid "Shutter & Aperture Priority AE" +msgstr "Aukon esivalinta (Av)" + +#: src/pentaxmn.cpp:641 +#, fuzzy +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Ohjelmoitu AE (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Ohjelmoitu AE (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Ohjelmoitu AE (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Täysautomatiikka" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "" + +#: src/pentaxmn.cpp:671 +#, fuzzy +msgid "Remote Control" +msgstr "Täysautomatiikka" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Täysautomatiikka" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Värikylläisyys" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Värikylläisyys" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Värikylläisyys" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "Linssi" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +#, fuzzy +msgid "Bright" +msgstr "Omistusoikeus" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "" + +#: src/pentaxmn.cpp:992 +#, fuzzy +msgid "Strong" +msgstr "Värikylläisyys" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "" + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "" + +#: src/pentaxmn.cpp:1149 +#, fuzzy +msgid "Camera shooting mode" +msgstr "Kameran malli" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Omistajan nimi" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "" + +#: src/pentaxmn.cpp:1170 +#, fuzzy +msgid "Image quality settings" +msgstr "Kuvan laatu" + +#: src/pentaxmn.cpp:1173 +#, fuzzy +msgid "Image size settings" +msgstr "Kuvan koko" + +#: src/pentaxmn.cpp:1177 +#, fuzzy +msgid "Flash mode settings" +msgstr "Salaman malli" + +#: src/pentaxmn.cpp:1180 +#, fuzzy +msgid "Focus mode settings" +msgstr "Tarkennustapa" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "Käytetty AF-piste" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +#, fuzzy +msgid "F-Number" +msgstr "F-luku" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +#, fuzzy +msgid "MeteringMode" +msgstr "Mittaustapa" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Väriavaruus" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Väriavaruus" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Polttoväli" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "Firmwaren versio" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "Firmwaren versio" + +#: src/pentaxmn.cpp:1261 +#, fuzzy +msgid "Light value" +msgstr "arvo" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "Kuvan numero" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "Kuvan koko" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +#, fuzzy +msgid "Digital filter" +msgstr "Digitaalinen makro" + +#: src/pentaxmn.cpp:1299 +#, fuzzy +msgid "Camera temperature" +msgstr "Kameran merkki" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +#, fuzzy +msgid "Image tone" +msgstr "Kuvan tyyppi" + +#: src/pentaxmn.cpp:1319 +#, fuzzy +msgid "Shake reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +#, fuzzy +msgid "Black point" +msgstr "Mustavalko" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +#, fuzzy +msgid "LensInfo" +msgstr "Linssi" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +#, fuzzy +msgid "FlashInfo" +msgstr "Salama" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +#, fuzzy +msgid "AEMeteringSegments" +msgstr "Mittaustapa" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "Salama" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "Salama" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentD" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentN" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentW" +msgstr "Valkoinen loisteputki" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +#, fuzzy +msgid "CameraInfo" +msgstr "Kameran tyyppi" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "" + +#: src/properties.cpp:123 +#, fuzzy +msgid "Camera Raw schema" +msgstr "Kameran merkki" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +#, fuzzy +msgid "Colorant structure" +msgstr "Kontrasti" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "" + +#: src/properties.cpp:150 +#, fuzzy +msgid "Font structure" +msgstr "Kontrasti" + +#: src/properties.cpp:151 +#, fuzzy +msgid "Thumbnail structure" +msgstr "Näytekuvat" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Kontrasti" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +#, fuzzy +msgid "Contributor" +msgstr "Kontrasti" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +#, fuzzy +msgid "Creator" +msgstr "Kuvan numero" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +#, fuzzy +msgid "Format" +msgstr "Normaali" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +#, fuzzy +msgid "Relation" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +#, fuzzy +msgid "Type" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Kameran asetukset" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "Väriavaruus" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Suuri" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Panoraama" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "Kameran asetukset" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "" + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +#, fuzzy +msgid "Label" +msgstr "Suuri" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +#, fuzzy +msgid "Modify Date" +msgstr "Malli" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +#, fuzzy +msgid "Rating" +msgstr "Varoitus" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Näytekuvat" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +#, fuzzy +msgid "Owner" +msgstr "Omistajan nimi" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +#, fuzzy +msgid "History" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +#, fuzzy +msgid "Instance ID" +msgstr "Sisäinen salama" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +#, fuzzy +msgid "Manager" +msgstr "Suuri" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +#, fuzzy +msgid "Version ID" +msgstr "Ohjelman versio" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +#, fuzzy +msgid "Versions" +msgstr "Ohjelman versio" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +#, fuzzy +msgid "Maximum Page Size" +msgstr "Kuvan koko" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +#, fuzzy +msgid "Fonts" +msgstr "kuukautta" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +#, fuzzy +msgid "Colorants" +msgstr "Väriavaruus" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "Tiedostonimi" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +#, fuzzy +msgid "Video Color Space" +msgstr "Väriavaruus" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +#, fuzzy +msgid "Video Compressor" +msgstr "Pakkaus" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "" + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +#, fuzzy +msgid "Audio Compressor" +msgstr "Pakkaus" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "" + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Tiedostonimi" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +#, fuzzy +msgid "Tape Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +#, fuzzy +msgid "Duration" +msgstr "Värikylläisyys" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "" + +#: src/properties.cpp:358 +#, fuzzy +msgid "Scene" +msgstr "Linssi" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "" + +#: src/properties.cpp:361 +#, fuzzy +msgid "Shot Location" +msgstr "Värikylläisyys" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +#, fuzzy +msgid "Log Comment" +msgstr "Oma kommentti" + +#: src/properties.cpp:363 +#, fuzzy +msgid "User's log comments." +msgstr "Oma kommentti" + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "" + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "" + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "" + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "" + +#: src/properties.cpp:373 src/properties.cpp:1366 +#, fuzzy +msgid "Track Number" +msgstr "Sarjanumero" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "" + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "" + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "" + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "" + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "" + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +#, fuzzy +msgid "Relative Timestamp" +msgstr "Kuvan aikaleima" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +#, fuzzy +msgid "Stretch Mode" +msgstr "Makrotila" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +#, fuzzy +msgid "Scale Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +#, fuzzy +msgid "Camera Serial Number" +msgstr "Kameran sarjanumero" + +#: src/properties.cpp:399 +#, fuzzy +msgid "Camera Serial Number." +msgstr "Kameran sarjanumero" + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer" +msgstr "Valmistaja" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer." +msgstr "Linssin valmistaja" + +#: src/properties.cpp:402 +#, fuzzy +msgid "Flash Model." +msgstr "Salaman malli" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP." +msgstr "Asiasanat" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Linssin valmistaja" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Linssin valmistaja" + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Linssin malli" + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Asiasanat" + +#: src/properties.cpp:421 +#, fuzzy +msgid "PDF Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "" + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "" + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "" + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "" + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "" + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "" + +#: src/properties.cpp:440 src/properties.cpp:1306 +#, fuzzy +msgid "Source." +msgstr "Kuvalähde" + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "tuumaa" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +#, fuzzy +msgid "Auto Contrast" +msgstr "Kontrasti" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Automaattivalotus" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "" + +#: src/properties.cpp:462 +#, fuzzy +msgid "Blue Saturation" +msgstr "Värikylläisyys" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "" + +#: src/properties.cpp:464 +#, fuzzy +msgid "Camera Profile" +msgstr "Kameran malli" + +#: src/properties.cpp:464 +#, fuzzy +msgid "\"Camera Profile\" setting." +msgstr "Kameran asetukset" + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "" + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +#, fuzzy +msgid "Crop Right" +msgstr "Omistusoikeus" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "" + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Linssin malli" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:479 +#, fuzzy +msgid "Green Saturation" +msgstr "Värikylläisyys" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +#, fuzzy +msgid "Has Settings" +msgstr "Asetukset" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:483 +#, fuzzy +msgid "Raw File Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "" + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:485 +#, fuzzy +msgid "Red Saturation" +msgstr "Värikylläisyys" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:487 +#, fuzzy +msgid "Shadows" +msgstr "Varjo" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "" + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "" + +#: src/properties.cpp:492 +#, fuzzy +msgid "Tone Curve" +msgstr "Kontrasti" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +#, fuzzy +msgid "Tone Curve Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +#, fuzzy +msgid "Image Length" +msgstr "Polttoväli" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Pakkaus" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +#, fuzzy +msgid "X Resolution" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +#, fuzzy +msgid "Y Resolution" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +#, fuzzy +msgid "White Point" +msgstr "AF-piste" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +#, fuzzy +msgid "Reference Black White" +msgstr "Mustavalkoinen" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Päiväys ja aika" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +#, fuzzy +msgid "Image Description" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +msgid "Make" +msgstr "" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +#, fuzzy +msgid "Exif Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +#, fuzzy +msgid "Flashpix Version" +msgstr "Firmwaren versio" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Oma kommentti" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +#, fuzzy +msgid "Date and Time Original" +msgstr "Päiväys ja aika" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +#, fuzzy +msgid "Date and Time Digitized" +msgstr "Päiväys ja aika" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:574 src/properties.cpp:1157 +#, fuzzy +msgid "F Number" +msgstr "F-luku" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "ISO-herkkyys" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "" + +#: src/properties.cpp:582 src/tags.cpp:828 +#, fuzzy +msgid "Brightness Value" +msgstr "Aukko" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "" + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +#, fuzzy +msgid "Maximum Aperture Value" +msgstr "Aukko" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "" + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "" + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:590 src/tags.cpp:1666 +#, fuzzy +msgid "Subject Area" +msgstr "Kohteen etäisyys" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +#, fuzzy +msgid "Flash Energy" +msgstr "Salaman tila" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +#, fuzzy +msgid "Focal Plane Resolution Unit" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +#, fuzzy +msgid "Subject Location" +msgstr "Kohteen etäisyys" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +#, fuzzy +msgid "Exposure Index" +msgstr "Valotustila" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "" + +#: src/properties.cpp:603 src/tags.cpp:1771 +#, fuzzy +msgid "Scene Type" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "" + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +#, fuzzy +msgid "Digital Zoom Ratio" +msgstr "Digitaalinen zoom" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:609 src/tags.cpp:1800 +#, fuzzy +msgid "Focal Length In 35mm Film" +msgstr "Polttoväli" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" + +#: src/properties.cpp:613 src/tags.cpp:1811 +#, fuzzy +msgid "Gain Control" +msgstr "Täysautomatiikka" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" + +#: src/properties.cpp:618 src/tags.cpp:1831 +#, fuzzy +msgid "Subject Distance Range" +msgstr "Kohteen etäisyys" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "" + +#: src/properties.cpp:619 src/tags.cpp:1834 +#, fuzzy +msgid "Image Unique ID" +msgstr "Kuvan koko" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +#, fuzzy +msgid "GPS Version ID" +msgstr "Ohjelman versio" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +#, fuzzy +msgid "GPS Measure Mode" +msgstr "Valotustila" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "" + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +#, fuzzy +msgid "GPS Speed" +msgstr "ISO-herkkyys" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "" + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +#, fuzzy +msgid "GPS Image Direction" +msgstr "Kuvan numero" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" + +#: src/properties.cpp:649 src/tags.cpp:2064 +#, fuzzy +msgid "GPS Destination Distance" +msgstr "Kohteen etäisyys" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "" + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "" + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +#, fuzzy +msgid "IPTC Subject Code" +msgstr "Kohteen etäisyys" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Malli" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "" + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "" + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "" + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "" + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "" + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "" + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "Kameran merkki" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "Kameran tyyppi" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "Kameran merkki" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +#, fuzzy +msgid "Licensee" +msgstr "Linssi" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "Linssi" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "" + +#: src/properties.cpp:746 +#, fuzzy +msgid "End User" +msgstr "Omistajan nimi" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +#, fuzzy +msgid "End User ID" +msgstr "Omistajan nimi" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "" + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Linssi" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "Linssi" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor Address" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor street address." +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City name." +msgstr "Linssin tyyppi" + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Omistajan nimi" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1" +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1." +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone 1" +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone number 1." +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "Omistajan nimi" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "Omistajan nimi" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Linssi" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Omistajan nimi" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "" + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Omistajan nimi" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "" + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Mallin ID" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "Mallin ID" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +#, fuzzy +msgid "Property Release ID" +msgstr "Mallin ID" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "" + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "" + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "Omistajan nimi" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "Omistusoikeus" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Omistusoikeus" + +#: src/properties.cpp:792 +#, fuzzy +msgid "Copyright Registration Number" +msgstr "Omistajan nimi" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "" + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "Omistusoikeus" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "Omistusoikeus" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Name of Copyright Owner." +msgstr "Omistusoikeus" + +#: src/properties.cpp:797 +#, fuzzy +msgid "Copyright Owner Image ID" +msgstr "Omistusoikeus" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "Kuvan numero" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Kuvan numero" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Kuvan aikaleima" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "Kuvan numero" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "Kuvan aikaleima" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "Kuvan koko" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Kuvan koko" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Name of Image Supplier." +msgstr "Kuvan koko" + +#: src/properties.cpp:804 +#, fuzzy +msgid "Image Supplier Image ID" +msgstr "Kuvan koko" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "Omistajan nimi" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "" + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "Linssi" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Suuri" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "Tuntematon" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +#, fuzzy +msgid "Unlimited Model Releases" +msgstr "Mallin ID" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Sarjanumero" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Linssi" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "Ohjelman versio" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Kontrasti" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "Salaman tila" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Tarkennustapa" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Makrotila" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Kontrasti" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Avainsanat" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Kontrasti" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Panoraama" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Ohjelmisto" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Ohjelmisto" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +msgid "First Photo Date" +msgstr "" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +msgid "Last Photo Date" +msgstr "" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Valotustila" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Kuvan laatu" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Kameran malli" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Avainsanat" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +msgid "Video Aspect Ratio" +msgstr "" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +msgid "Video Aspect Ratio Type" +msgstr "" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Terävyys" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Kameran tyyppi" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Aukko" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Salaman tila" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Pakkaus" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Kameran asetukset" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Oma kommentti" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Pakkaus" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Pakkaus" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Avainsanat" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Pakkaus" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Pakkaus" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Pakkaus" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Pakkaus" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Kameran tyyppi" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Pakkaus" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +msgid "Name of the country where the video was created." +msgstr "" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "Polttoväli" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "Omistusoikeus" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Valotusaika" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Päiväys ja aika" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "F-luku" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Tarkennustapa" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "" + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +msgid "End Timecode" +msgstr "" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Valotustila" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Kuvaustapa" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Valotusaika" + +#: src/properties.cpp:1148 +msgid "Extended Content Description" +msgstr "" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Polttoväli" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Polttoväli" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Tiedoston koko" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Tiedoston koko" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Kuvan laatu" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Salaman tila" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Salaman tila" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "Panoraama" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Salaman tila" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Linssin valmistaja" + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Keskustaa painottava" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "" + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Värikylläisyys" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "Linssi" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Värikylläisyys" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Suuri" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Polttoväli" + +#: src/properties.cpp:1198 +msgid "The length of the media file." +msgstr "" + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Linssin tyyppi" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Kuvalähde" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Kuvalähde" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Värikylläisyys" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Linssi" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Kameran tyyppi" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Firmwaren versio" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "Makrotila" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Linssin valmistaja" + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Aukko" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Malli" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Keskikokoinen" + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Mittaustapa" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Ohjelman versio" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +msgid "Number Of Colours" +msgstr "" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +msgid "Number Of Parts" +msgstr "" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Osa-alue" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Osa-alue" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Avainsanat" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Asiasanat" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Värikylläisyys" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "ISO-herkkyys" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "ISO-herkkyys" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Salaman tila" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Valotusaika" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Esikatselu" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Esikatselu" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Esikatselu" + +#: src/properties.cpp:1274 +msgid "The duration of the movie preview in movie time scale units" +msgstr "" + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Esikatselu" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +msgid "The version of the movie preview " +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Avainsanat" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Aukko" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Aukko" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Omistusoikeus" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Omistusoikeus" + +#: src/properties.cpp:1292 +msgid "Requirements" +msgstr "" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "ISO-herkkyys" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "" + +#: src/properties.cpp:1304 +msgid "Song Writer" +msgstr "" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Avainsanat" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Asiasanat" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Kuvalähde" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Kuvalähde" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Kuvalähde" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Kuvalähde" + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Kuvan laatu" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Kuvan laatu" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "Kuvan laatu" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Valotusaika" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Valotusaika" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Kuvan tiedot" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Avainsanat" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Asiasanat" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Suuri" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Kohteen etäisyys" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Omistajan nimi" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Kameran asetukset" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Suuri" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Näytekuva" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Kuvan koko" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Näytekuva" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Näytekuva" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Kuvan koko" + +#: src/properties.cpp:1344 +msgid "Timecode Scale" +msgstr "" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Pois" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +msgid "Number Of Streams" +msgstr "" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "Makrotila" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Sarjanumero" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Firmwaren versio" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Suuri" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Malli" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Sarjanumero" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Sarjanumero" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Sarjanumero" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Linssi" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Ohjelma" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "Linssi" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Kuvanlaatu" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Sample Size" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Valkotasapaino" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Linssin tyyppi" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By" +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +msgid "Writing App" +msgstr "" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "" + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Valkotasapaino" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "" + +#: src/properties.cpp:1399 +msgid "Bits Per Sample/ Bit Rate" +msgstr "" + +#: src/properties.cpp:1399 +msgid "Bits per test sample" +msgstr "" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Pakkaus" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Tarkennustapa" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Oletus" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Makrotila" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Lukuvirhe" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +msgid "Output Audio Sample Rate" +msgstr "" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title." +msgstr "" + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Makrotila" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Makrotila" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Malli" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "" + +#: src/properties.cpp:1449 +msgid "The nature or genre of the resource." +msgstr "" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "" + +#: src/properties.cpp:1451 +msgid "A language of the resource." +msgstr "" + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Linssi" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Kuvalähde" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +msgid "Access Rights" +msgstr "" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Sarjanumero" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "F-luku" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Sisäinen salama" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Resoluutioyksikkö" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1488 +msgid "The name identifying the data set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +#, fuzzy +msgid "Occurrence" +msgstr "Linssi" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "Linssi" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Sarjanumero" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +#, fuzzy +msgid "Occurrence Details" +msgstr "Linssi" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "F-luku" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "Kuvan laatu" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Aseta" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Täysautomatiikka" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Kuvan vakautus" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Sarjanumero" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +msgid "Previous Identifications" +msgstr "" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +msgid "Associated References" +msgstr "" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +msgid "Associated Sequences" +msgstr "" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +#, fuzzy +msgid "Organism Remarks" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Valotusaika" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +msgid "Living Specimen" +msgstr "" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Valotusaika" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +msgid "Event ID" +msgstr "" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Esikatselu" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +#, fuzzy +msgid "Event Earliest Date" +msgstr "Esikatselu" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Esikatselu" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Valotusaika" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "kuukausi" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Poista" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "Valotusaika" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "F-luku" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Kontrasti" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Linssin sarjanumero" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Kontrasti" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Kuvanlaatu" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Kuvanlaatu" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +msgid "Verbatim Latitude" +msgstr "" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +msgid "Verbatim Longitude" +msgstr "" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +msgid "Decimal Latitude" +msgstr "" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +msgid "Decimal Longitude" +msgstr "" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +msgid "Georeferenced By" +msgstr "" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Mustavalkoinen" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Sarjanumero" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Sarjanumero" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "F-luku" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1898 +msgid "Bed" +msgstr "" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +msgid "Identified By" +msgstr "" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +msgid "Identification References" +msgstr "" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +msgid "Identification Remarks" +msgstr "" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Omistusoikeus" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Omistajan nimi" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Tiedostonimi" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "" + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Värikylläisyys" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +msgid "Order" +msgstr "" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Sarjanumero" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Kontrasti" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Kuvalähde" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Kuvalähde" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Kuvalähde" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Aukko" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +msgid "Measurement ID" +msgstr "" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Kuvan tyyppi" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Aukko" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "Valotustila" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +msgid "A brief description of the file" +msgstr "" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Päiväys ja aika" + +#: src/properties.cpp:2103 +msgid "The name of the author or photographer" +msgstr "" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +#, fuzzy +msgid "Notes" +msgstr "Linssin ominaisuudet" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Categories" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +#, fuzzy +msgid "Resolution Mode" +msgstr "Resoluutioyksikkö" + +#: src/sigmamn.cpp:63 +#, fuzzy +msgid "Resolution mode" +msgstr "Resoluutioyksikkö" + +#: src/sigmamn.cpp:65 +#, fuzzy +msgid "Autofocus Mode" +msgstr "Tarkennustapa" + +#: src/sigmamn.cpp:66 +#, fuzzy +msgid "Autofocus mode" +msgstr "Tarkennustapa" + +#: src/sigmamn.cpp:68 +#, fuzzy +msgid "Focus Setting" +msgstr "Asetukset" + +#: src/sigmamn.cpp:69 +#, fuzzy +msgid "Focus setting" +msgstr "Tarkennustapa" + +#: src/sigmamn.cpp:80 +#, fuzzy +msgid "Lens Range" +msgstr "Linssin tyyppi" + +#: src/sigmamn.cpp:81 +#, fuzzy +msgid "Lens focal length range" +msgstr "Polttoväli" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +#, fuzzy +msgid "Shadow" +msgstr "Varjo" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "" + +#: src/sigmamn.cpp:107 +#, fuzzy +msgid "Color Adjustment" +msgstr "Väriavaruus" + +#: src/sigmamn.cpp:108 +#, fuzzy +msgid "Color adjustment" +msgstr "Väriavaruus" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "" + +#: src/sigmamn.cpp:122 +#, fuzzy +msgid "Auto Bracket" +msgstr "Auto, välähti" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +#, fuzzy +msgid "Auto bracket" +msgstr "Auto, välähti" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "Muotokuva" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Muotokuva" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panoraama" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Makrotila" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "Piste" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "Kuvan koko" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "Valkoinen loisteputki" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "Valkoinen loisteputki" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "Valkoinen loisteputki" + +#: src/sonymn.cpp:217 +msgid "Incandescent2" +msgstr "" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Valkoinen loisteputki" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Piste" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "Käsintarkennus, MF" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "Automaattivalotus" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "Esikatselu" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "Värikylläisyys" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "Mallin ID" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "Kuvan koko" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "Kuvan koko" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "Kuvan koko" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "Kuvanlaatu" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Salaman tila" + +#: src/sonymn.cpp:464 +msgid "Shot number in continuous burst mode" +msgstr "" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Ei salamaa" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Kuvan tyyppi" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Kameran asetukset" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Kameran asetukset" + +#: src/tags.cpp:188 +#, fuzzy +msgid "Unknown section" +msgstr "Tuntematon" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "" + +#: src/tags.cpp:195 +#, fuzzy +msgid "Image configuration" +msgstr "Kuvan vakautus" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "" + +#: src/tags.cpp:197 +#, fuzzy +msgid "Related file" +msgstr "tiedostoon" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Päiväys ja aika" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "" + +#: src/tags.cpp:225 +#, fuzzy +msgid "Thumbnail/Preview image" +msgstr "Näytekuva" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "tuuma" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "Jpeg (vanhahtava)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "Jpeg" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "" + +#: src/tags.cpp:287 +#, fuzzy +msgid "Black Is Zero" +msgstr "Mustavalko" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "" + +#: src/tags.cpp:311 +#, fuzzy +msgid "top, left" +msgstr "tiedostoon" + +#: src/tags.cpp:312 +#, fuzzy +msgid "top, right" +msgstr "Omistusoikeus" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +msgid "B" +msgstr "" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +#, fuzzy +msgid "Centered" +msgstr "Keskustaa painottava" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "" + +#: src/tags.cpp:368 +#, fuzzy +msgid "No flash" +msgstr "Ei salamaa" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "" + +#: src/tags.cpp:372 +#, fuzzy +msgid "Yes, did not fire" +msgstr "Ei välähtänyt" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "" + +#: src/tags.cpp:384 +#, fuzzy +msgid "Yes, red-eye reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:387 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction" +msgstr "Auto, välähti, punasilmäisyyden esto" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:390 +#, fuzzy +msgid "No, red-eye reduction" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/tags.cpp:391 +#, fuzzy +msgid "No, auto, red-eye reduction" +msgstr "Auto, välähti, punasilmäisyyden esto" + +#: src/tags.cpp:392 +#, fuzzy +msgid "Yes, auto, red-eye reduction" +msgstr "Auto, välähti, punasilmäisyyden esto" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "" + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Polttoväli" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +#, fuzzy +msgid "Document Name" +msgstr "Omistajan nimi" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "" + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" + +#: src/tags.cpp:502 +#, fuzzy +msgid "Strip Byte Count" +msgstr "Valotusajan esivalinta (Tv)" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" + +#: src/tags.cpp:506 +#, fuzzy +msgid "X-Resolution" +msgstr "Resoluutioyksikkö" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" + +#: src/tags.cpp:510 +#, fuzzy +msgid "Y-Resolution" +msgstr "Resoluutioyksikkö" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "Resoluutioyksikkö" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Kuvan numero" + +#: src/tags.cpp:538 +msgid "The page number of the page from which this image was scanned." +msgstr "" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Väriavaruus" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "Polttoväli" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +#, fuzzy +msgid "Ink Set" +msgstr "Aseta" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Omistajan nimi" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "Valotusaika" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "Valotusaika" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "Kuvan koko" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "" + +#: src/tags.cpp:790 src/tags.cpp:1553 +#, fuzzy +msgid "The F number." +msgstr "F-luku" + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "ISO-herkkyys" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Sisäinen salama" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "" + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "" + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "Valotusaika" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Aukko" + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "" + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Valotuksen korjaus" + +#: src/tags.cpp:830 src/tags.cpp:1645 +#, fuzzy +msgid "Max Aperture Value" +msgstr "Aukko" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "" + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "" + +#: src/tags.cpp:832 src/tags.cpp:1654 +#, fuzzy +msgid "The metering mode." +msgstr "Mittaustapa" + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "" + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "" + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +#, fuzzy +msgid "Noise" +msgstr "Ei käytössä" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +#, fuzzy +msgid "Windows Comment" +msgstr "Oma kommentti" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +#, fuzzy +msgid "Windows Keywords" +msgstr "Avainsanat" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "Ohjelman versio" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +#, fuzzy +msgid "DNG backward version" +msgstr "Firmwaren versio" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +#, fuzzy +msgid "Unique Camera Model" +msgstr "Kameran malli" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +#, fuzzy +msgid "Localized Camera Model" +msgstr "Kameran malli" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +#, fuzzy +msgid "White Level" +msgstr "Salaman malli" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "Oletus" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Kameran asetukset" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +#, fuzzy +msgid "Analog Balance" +msgstr "Väriavaruus" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "Neutraali" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "Automaattivalotus" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Terävyys" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +#, fuzzy +msgid "Lens Info" +msgstr "Linssin malli" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +msgid "Colorimetric Reference" +msgstr "" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +msgid "As Shot Profile Name" +msgstr "" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Päällä, punasilmäisyyden esto" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Tiedostonimi" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Kontrasti" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Omistusoikeus" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Väriavaruus" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Väriavaruus" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Esikatselu" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Ohjelman versio" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Esikatselu" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Kuvan koko" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Väriavaruus" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Esikatselu" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Kuvan numero" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "tiedostoon" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +#, fuzzy +msgid "Unknown IFD tag" +msgstr "Tuntematon" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "" + +#: src/tags.cpp:1415 +#, fuzzy +msgid "Portrait mode" +msgstr "Muotokuva" + +#: src/tags.cpp:1416 +#, fuzzy +msgid "Landscape mode" +msgstr "Maisemakuva" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "" + +#: src/tags.cpp:1440 +#, fuzzy +msgid "Cloudy weather" +msgstr "Pilvinen" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "" + +#: src/tags.cpp:1453 +#, fuzzy +msgid "ISO studio tungsten" +msgstr "ISO-herkkyys" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "" + +#: src/tags.cpp:1477 +#, fuzzy +msgid "Film scanner" +msgstr "Tiedostonimi" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +#, fuzzy +msgid "Digital still camera" +msgstr "Digitaalinen makro" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +#, fuzzy +msgid "Normal process" +msgstr "Normaali" + +#: src/tags.cpp:1490 +#, fuzzy +msgid "Custom process" +msgstr "Pakkaus" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "" + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "Linssin tyyppi" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Valotustila" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "ISO-herkkyys" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "ISO-herkkyys" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +#, fuzzy +msgid "Date and Time (original)" +msgstr "Päiväys ja aika" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" + +#: src/tags.cpp:1613 +#, fuzzy +msgid "Date and Time (digitized)" +msgstr "Päiväys ja aika" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "" + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Valotuksen korjaus" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" + +#: src/tags.cpp:1670 +#, fuzzy +msgid "Maker Note" +msgstr "Makrotila" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +#, fuzzy +msgid "FlashPix Version" +msgstr "Ohjelman versio" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +#, fuzzy +msgid "Exposure index" +msgstr "Valotustila" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "" + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Omistajan nimi" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Sarjanumero" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Linssin malli" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +#, fuzzy +msgid "Unknown Exif tag" +msgstr "Tuntematon" + +#: src/tags.cpp:1878 +#, fuzzy +msgid "North" +msgstr "kuukausi" + +#: src/tags.cpp:1879 +#, fuzzy +msgid "South" +msgstr "Piste" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "" + +#: src/tags.cpp:1891 +#, fuzzy +msgid "Below sea level" +msgstr "Salaman malli" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "" + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Kohteen etäisyys" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +#, fuzzy +msgid "Interoperability Version" +msgstr "Ohjelman versio" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "" + +#: src/tags.cpp:2107 +#, fuzzy +msgid "File format of image file" +msgstr "Tiedoston avaus epäonnistui\n" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "" + +#: src/tags.cpp:2128 +#, fuzzy +msgid "Offset" +msgstr "Pois" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +#, fuzzy +msgid "Unknown tag" +msgstr "Tuntematon" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "tavua" diff --git a/vendor/exiv2-0.25/po/fr.po b/vendor/exiv2-0.25/po/fr.po new file mode 100644 index 0000000..f0f9d89 --- /dev/null +++ b/vendor/exiv2-0.25/po/fr.po @@ -0,0 +1,27890 @@ +# translation of fr.po to français +# translation of fr.po to +# French translations of Exiv2. +# Copyright: +# This file is distributed under the same license as the Exiv2 package. +# +# Free Software Foundation, Inc., 2002. +# Caulier Gilles , 2006. +# Arnaud Launay , 2002. +# Olivier Tilloy , 2007. +# Stéphane Pontier , 2007. +# Fabien , 2008. +msgid "" +msgstr "" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2008-05-28 15:49+0200\n" +"Last-Translator: Fabien \n" +"Language-Team: français \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Échec de l'ouverture du fichier\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Nom du fichier" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Taille du fichier" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Octets" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Type MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Taille de l'image" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Pas de données Exif trouvées dans le fichier\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Marque de l'appareil" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Modèle de l'appareil" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Horodatage de l'image" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Numéro de l'image" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Temps d'exposition" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Ouverture" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Correction d'exposition" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Flash" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Biais flash" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Distance focale" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "Équivalent à 35 mm" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Distance du sujet" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Sensibilité ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Mode d'exposition" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Mode de mesure" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Mode macro" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Qualité de l'image" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Résolution Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Balance des blancs" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Miniature" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Aucun" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Droit d'auteur" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Commentaire Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(Valeur binaire supprimée)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Commentaire JPEG" + +#: src/actions.cpp:767 +#, fuzzy +msgid "Preview" +msgstr "Données de prévisualisation" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "octets" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Aucun des marqueurs" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "ou" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "n'a été trouvé dans le fichier" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Horodatage de création du fichier image non défini dans le fichier" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Échec de l'analyse de l'horodatage" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "dans le fichier" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Mise à jour de l'horodatage à" + +#: src/actions.cpp:939 +#, fuzzy +msgid "Erasing thumbnail data" +msgstr "octets de données de la miniature" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Effacement des données Exif du fichier" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Effacement des données IPTC du fichier" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Effacement du commentaire JPEG du fichier" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Effacement des données XMP du fichier" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "L'image ne contient pas de miniature Exif\n" + +#: src/actions.cpp:1055 +#, fuzzy +msgid "Writing thumbnail" +msgstr "de la miniature" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "dans le fichier" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Les données Exif ne contiennent pas de miniature\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +#, fuzzy +msgid "Writing preview" +msgstr "Écriture au format" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Définition du commentaire JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Ajout de" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Avertissement" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Échec lors de la lecture" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "valeur" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Définition de" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Effacement de" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Horodatage de la donnée de clé" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "non défini\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Ajustement de" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "de" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "années" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "année" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "mois" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "mois" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "jours" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "jour" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Échec de l'ajustement de l'horodatage" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "vers" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "Tag EXIF standard (ISO), non modifié\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Définition de la valeur Exif de l'ISO à" + +#: src/actions.cpp:1708 +#, fuzzy +msgid "No Exif user comment found" +msgstr "Commentaire Exif" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +#, fuzzy +msgid "Setting Exif UNICODE user comment to" +msgstr "Définition de la valeur Exif de l'ISO à" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Écriture des données Exif de" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Écriture des données IPTC de" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Écriture des données Exif de" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Écriture du commentaire JPEG de" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Impossible d'écrire les métadonnées dans le fichier" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "" +"Le format spécifié pour le nom du fichier produit un nom de fichier vide" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Le nom de ce fichier est déjà correct" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Le fichier" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr " existe. Écraser [O], [r]enommer ou passer au [s]uivant?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Renommage du fichier en" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "mise à jour de l'horodatage" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Échec du renommage de" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Écraser" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Désactivé" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Activé" + +#: src/canonmn.cpp:363 +#, fuzzy +msgid "Format 1" +msgstr "Format du fichier" + +#: src/canonmn.cpp:364 +#, fuzzy +msgid "Format 2" +msgstr "Format du fichier" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +#, fuzzy +msgid "On (1)" +msgstr "Activé" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +#, fuzzy +msgid "On (2)" +msgstr "Activé" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Inconnu" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Réglage appareil photo" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Divers réglages de l'appareil photo" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Longueur focale" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Infos prise de vue" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Informations prise de vue" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Type d'image" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Type d'image" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Version du microcode" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Version de microcode" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +#, fuzzy +msgid "File Number" +msgstr "Nombre F" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +#, fuzzy +msgid "File number" +msgstr "Nom du fichier" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Nom du propriétaire" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Numéro de série" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Numéro de série de l'appareil photo" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "Identifiant appareil photo" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "Identifiant appareil photo" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Fonctions personnalisées" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "Modèle" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Numéro modèle" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Infos image" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Infos image" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "Miniature" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Miniature" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Numéro de série 2" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Numéro de série 2" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +#, fuzzy +msgid "Super Macro" +msgstr "Super macro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Super macro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF Info" +msgstr "Informations mise au point" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF info" +msgstr "Informations mise au point" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Table de balance des blancs" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Table de balance des blancs" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +#, fuzzy +msgid "Lens Model" +msgstr "Mode scène" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Mode scène" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +#, fuzzy +msgid "Internal Serial Number" +msgstr "Numéro de série de l'appareil photo" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +#, fuzzy +msgid "Internal serial number" +msgstr "Numéro de série de l'appareil photo" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "Fonctions personnalisées" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "Logiciel de traitement" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "Logiciel de traitement" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "Couleur naturelle" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "Couleur naturelle" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "Espace des couleurs" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD Offset" +msgstr "décalage" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD offset" +msgstr "décalage" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "Objectif" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "Infos prise de vue" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Matrice des couleurs" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "Données de mes couleurs" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Marqueur de note du fabriquant Canon inconnu" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Économie" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normal" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Fin" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "BRUT" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Super fin" + +#: src/canonmn.cpp:438 +#, fuzzy +msgid "Normal Movie" +msgstr "Processus normal" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Film" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Automatique" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Réduction yeux rouges" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Synchro lente" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Flash automatique + réduction yeux rouges" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "Flash + réduction yeux rouges" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Externe" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Temporisateur" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Continue" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Film" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Continue, Priorité vitesse obturation" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Continue, basse" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Continue, Haute" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "AF One Shot" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "AF AI Servo" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AF AI Focus" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Mise au point manuel" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Simple" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Continue" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Grande" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Moyenne" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Petite" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Moyenne 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Moyenne 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Moyenne 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Complètement automatique" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manuel" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Paysage" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Obturation rapide" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Obturation lente" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Scène de nuit" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Niveaux de gris" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sépia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Portrait" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Sports" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Macro / gros plan" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Noir & Blanc" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Vif" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutre" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Flash désactivé" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Temps de pose lent" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Feuillage" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Intérieur" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Feux d'artifices" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Plage" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Sous marin" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Neige" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Enfants & animaux" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Instantané de nuit" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Zoom numérique" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Mes couleurs" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Image fixe" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Autre" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Faible" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Élevée" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/a" + +#: src/canonmn.cpp:540 +#, fuzzy +msgid "Auto High" +msgstr "Auto (lumière du jour)" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Défaut" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Spot" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Moyenne" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Évaluatif" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Partielle" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Centre pondéré" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Non connu" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Macro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Très près" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Près" + +#: src/canonmn.cpp:574 +#, fuzzy +msgid "Middle range" +msgstr "Modèle" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Loin" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Infinie" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Sélection point AF manuelle" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Aucun (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Sélection automatique" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Droit" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Centre" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Gauche" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Sélection point AF automatique" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Prise de vue facile (Auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Programme (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Priorité obturation (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Priorité ouverture (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manuel (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Le flash ne s'est pas déclenché." + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Déclenché" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Flash externe" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Flash interne" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "Synchronisation grande vitesse activée" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Synchronisation 2ème rideau activé" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "Synchronisation grande vitesse utilisé" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "AE Normal" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Compensation d'exposition" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "AE verrouillé" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "AE verrouillé + compensation d'exposition" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Pas d'AE" + +#: src/canonmn.cpp:1002 +#, fuzzy +msgid "On, shot only" +msgstr "AF One Shot" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Point AF" + +#: src/canonmn.cpp:1016 +#, fuzzy +msgid "Smooth" +msgstr "mois" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "N&B" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Personnel" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Données de mes couleurs" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Plein" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Retardateur" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Retardateur" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Qualité" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Mode flash" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Réglage mode flash" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Mode contrôle" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Réglage mode contrôle" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Mode mise au point" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Réglage mode de mise au point" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Taille de l'image" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Mode prise de vue" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Mode de prise de vue" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Zoom numérique" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Zoom numérique" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Contraste" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Réglage de contraste" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Saturation" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Réglage de saturation" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Netteté" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Réglage de Netteté" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Mode vitesse ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Réglage vitesse ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Mode de mesure" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Réglages mode mesure" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Type de mise au point" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Réglage mise au point" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Point AF sélectionné" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Programme d'exposition" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Réglage mode exposition" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Type d'objectif" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Type d'objectif" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Objectif" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"longueur de focale 'courte' ou 'longue' de l'objectif (en 'unité de focale') " +"et 'unité de focale' par mm" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +#, fuzzy +msgid "Short focal" +msgstr "Mise au point Spot" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "Distance focale" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "Distance focale" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Ouverture maximale" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Ouverture maximale" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min Aperture" +msgstr "Ouverture maximale" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min aperture" +msgstr "Ouverture maximale" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Activité flash" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Activité flash" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Détails flash" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Détails flash" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Mise au point continue" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Paramètre de la mise au point continue" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Réglage AE" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Réglage AE" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Stabilisation de l'image" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Stabilisation de l'image" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Affichage de l'ouverture" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Affichage de l'ouverture" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom Source Width" +msgstr "Droit d'auteur" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom source width" +msgstr "Droit d'auteur" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom Target Width" +msgstr "Largeur de l'image" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom target width" +msgstr "Largeur de l'image" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "Mode de mesure" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Le mode de mesure." + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Effet photo" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Effet photo" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Déclenchement manuel" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "Déclenchement manuel" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Tonalité couleur" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Tonalité couleur" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "Qualité de l'image" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Marqueur 1 réglage appareil photo Canon inconnu" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Lumière du jour" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Nuageux" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Tungstène" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Fluorescent" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Noir & Blanc" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Ombragé" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Température manuelle (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "Réglage PC 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "Réglage PC 3" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "Réglage PC 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Lumière du jour fluorescent" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Personnel 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Personnel 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Processus personnel 2" + +#: src/canonmn.cpp:1115 +#, fuzzy +msgid "PC Set 4" +msgstr "Réglage PC 1" + +#: src/canonmn.cpp:1116 +#, fuzzy +msgid "PC Set 5" +msgstr "Réglage PC 1" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Priorité obturation" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "gauche" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "centre" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "droite" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Vitesse ISO utilisée" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Vitesse ISO utilisée" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Ouverture cible" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Vitesse d'obturation cible" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Vitesse d'obturation cible" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Balance des blancs" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Réglage balance des blancs" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Séquence" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Numéro séquence (si en mode rafale)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Point AF utilisé" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Point AF utilisé" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Biais du flash" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Distance au sujet" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Distance au sujet (les unités ne sont pas clair)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Valeur d'ouverture" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Valeur de vitesse d'obturation" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Vitesse d'obturation" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Marqueur 2 réglage appareil photo Canon inconnu" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "De gauche à droite" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "De droite à gauche" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Du bas vers le haut" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Du haut vers le bas" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "Matrice 2x2 (Sens horaire)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Frame panorama" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Numéro frame panorama" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Direction panorama" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Direction panorama" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Marqueur panorama Canon inconnu" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Réduction du bruit" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Réduction du bruit lors d'expositions longues" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter Ae Lock" +msgstr "Vitesse d'obturation" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter/AE lock buttons" +msgstr "Priorité obturation" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Verrouillage du miroir" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Verrouillage du miroir" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Incrément de niveau d'exposition" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "Niveaux d'exposition et Tv/Av" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Faisceau AF" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Faisceau AF" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Vitesse de synchro flash en mode Av" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Vitesse d'obturation en mode Av" + +#: src/canonmn.cpp:1215 +#, fuzzy +msgid "AEB Sequence" +msgstr "Séquence" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "Priorité obturation" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "Priorité obturation" + +#: src/canonmn.cpp:1217 +#, fuzzy +msgid "Lens AF Stop Button" +msgstr "Type d'objectif" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "" + +#: src/canonmn.cpp:1218 +#, fuzzy +msgid "Fill Flash Auto Reduction" +msgstr "Réduction du bruit" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "" + +#: src/canonmn.cpp:1220 +#, fuzzy +msgid "Set Button Function" +msgstr "Fonctions personnalisées" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Nettoyage capteur" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Nettoyage capteur" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +#, fuzzy +msgid "Unknown Canon Custom Function tag" +msgstr "Marqueur réglage appareil photo Canon inconnu" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "milieu-droit" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "bas" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "haut" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "milieu-gauche" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "haut-gauche" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "haut-droit" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "bas-gauche" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "bas-droit" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Largeur de l'image" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Largeur de l'image" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Hauteur de l'image" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Hauteur de l'image" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Largeur de l'image" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Largeur de l'image" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Hauteur de l'image" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Hauteur de l'image" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Points AF utilisés" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Points AF utilisés" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Points AF utilisés 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Points AF utilisés (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +#, fuzzy +msgid "ISO" +msgstr "Infos prise de vue" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +#, fuzzy +msgid "Medium Movie" +msgstr "Moyenne 1" + +#: src/canonmn.cpp:1294 +#, fuzzy +msgid "Small Movie" +msgstr "Film" + +#: src/canonmn.cpp:1300 +#, fuzzy +msgid "On 1" +msgstr "Activé" + +#: src/canonmn.cpp:1301 +#, fuzzy +msgid "On 2" +msgstr "Activé" + +#: src/canonmn.cpp:1309 +#, fuzzy +msgid "On (shift AB)" +msgstr "AF One Shot" + +#: src/canonmn.cpp:1310 +#, fuzzy +msgid "On (shift GM)" +msgstr "AF One Shot" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +#, fuzzy +msgid "Orange" +msgstr "Loin" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +#, fuzzy +msgid "Red" +msgstr "Réduction yeux rouges" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +#, fuzzy +msgid "Green" +msgstr "Mode contrôle" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +#, fuzzy +msgid "Blue" +msgstr "valeur" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Pas du bracket" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Pas du bracket" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "Pas du bracket" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "Qualité de l'image" + +#: src/canonmn.cpp:1338 +#, fuzzy +msgid "Raw Jpg Size" +msgstr "Taille de l'image" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Pas du bracket" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "Table de balance des blancs" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "Table de balance des blancs" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +#, fuzzy +msgid "Filter Effect" +msgstr "Effet de couleurs" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect" +msgstr "Effet photo" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro Magnification" +msgstr "Augmentation électronique" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro magnification" +msgstr "Augmentation électronique" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +#, fuzzy +msgid "Live view shooting" +msgstr "Réglage mode contrôle" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Distance de mise au point" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Distance de mise au point" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "Compensation d'exposition du flash" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "Compensation d'exposition du flash" + +#: src/canonmn.cpp:1351 +#, fuzzy +msgid "Unknown Canon File Info tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Standard" + +#: src/canonmn.cpp:1369 +#, fuzzy +msgid "Lowest" +msgstr "Bas-gauche" + +#: src/canonmn.cpp:1373 +#, fuzzy +msgid "Highest" +msgstr "Élevée" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "Saturation" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "Saturation" + +#: src/canonmn.cpp:1384 +#, fuzzy +msgid "CM Set 1" +msgstr "Réglage PC 1" + +#: src/canonmn.cpp:1385 +#, fuzzy +msgid "CM Set 2" +msgstr "Réglage PC 3" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monochrome" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Détails flash" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "Courbe de tonalité" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Courbe de tonalité" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "SharpnessFrequency" +msgstr "Netteté" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "Sharpness frequency" +msgstr "Netteté" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "SensorRedLevel" +msgstr "Niveau de noir" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "Niveau de noir" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "SensorBlueLevel" +msgstr "Niveau de noir" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "Niveau de noir" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Balance des blancs" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Balance des blancs" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr "Table de balance des blancs" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr "Table de balance des blancs" + +#: src/canonmn.cpp:1411 +#, fuzzy +msgid "WhiteBalance" +msgstr "Balance des blancs" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Température des couleurs" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Température des couleurs" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "PictureStyle" +msgstr "Mode d'image" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "Picture style" +msgstr "Mode d'image" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "Zoom numérique" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "Zoom numérique" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "AF One Shot" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "AF One Shot" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "En-tête, décalage" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "marqueur" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "section" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "type" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "taille" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "décalage" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(invalide)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "Enregistrement IIM enveloppe" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "Enregistrement IIM application 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Version du Modèle" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Un champ binaire identifiant la version de l'Information Interchange Model, " +"Part I, utilisé par le fournisseur. Les numéros de version sont assignés par " +"l'IPTC et la NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Destination" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Ce jeu de données est présent pour satisfaire certains fournisseurs qui " +"attendent des informations de routage en sus des couches OSI appropriées." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Format du fichier" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Un champ binaire représentant le format du fichier. Le format du fichier " +"doit être enregistré auprès de l'IPTC ou de la NAA au moyen d'un identifiant " +"unique. L'information est utilisée pour router les données vers le système " +"approprié et permettre au système cible de leur appliquer les actions " +"appropriées." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Version du fichier" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Un champ binaire représentant la version courante du format du fichier " +"spécifié par le marqueur ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Identifiant de service" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Identifie le fournisseur et le produit" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Numéro d'enveloppe" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Les caractères forment un numéro qui est unique pour la date spécifiée dans " +"le marqueur et pour l'identifiant de service spécifié dans le " +"marqueur . Si des numéros d'enveloppe identiques " +"apparaissent avec les mêmes dates et identifiants de service, les " +"enregistrements 2 à 9 doivent rester identiques à l'original. Ce numéro ne " +"permet pas de tester l'ordre de réception en séquence." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Identifiant du produit" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Permet à un fournisseur d'identifier des sous-sections de son service " +"global. Utilisé pour fournir à l'organisation cible des informations sur la " +"manière dont les données doivent être sélectionnées, routées et manipulées." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Priorité de l'enveloppe" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"Spécifie la priorité de traitement de l'enveloppe et non pas la priorité " +"d'édition (voir le marqueur ). \"1\" désigne la plus grande " +"priorité, \"5\" une priorité normale, et \"8\" la copie la moins " +"prioritaire. Le chiffre \"9\" indique une priorité définie par " +"l'utilisateur. Le chiffre \"0\" est réservé pour un usage ultérieur." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Date d'envoi" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Utilise le format CCYYMMDD (siècle, année, mois, jour) tel que défini par la " +"norme ISO 8601 pour indiquer l'année, le mois et le jour où le service a " +"envoyé les données." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Heure d'envoi" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Utilise le format HHMMSS:HHMM où HHMMSS désigne dans le référentiel local " +"les heures, les minutes et les secondes, et où HHMM indique les heures et " +"les minutes à soustraire (+) ou à ajouter (-) pour obtenir l'heure UTC comme " +"décrit dans la norme ISO 8601. Ceci est l'heure à laquelle le service a " +"envoyé les données." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Jeu de caractères" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Nom d'objet unique" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Identifiant ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "Version d'ARM" + +#: src/datasets.cpp:157 +#, fuzzy +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Un champ binaire représentant la version courante du format du fichier " +"spécifié par le marqueur ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Version d'enregistrement" + +#: src/datasets.cpp:171 +#, fuzzy +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Un champ binaire identifiant la version de l'Information Interchange Model, " +"Part I, utilisé par le fournisseur. Les numéros de version sont assignés par " +"l'IPTC et la NAA." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "type d'objet" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Attributs de l'objet" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Nom de l'objet" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Nom du document" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Statut des modifications" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Mise à jour éditorial" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Priorité" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Sujet" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Catégorie" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Catégorie Supplémentaire" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Catégories Supplémentaires" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "Identificateur" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Mots-clés" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Code du pays" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Nom du pays" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Date de publication" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Heure de publication" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Date d'expiration" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Heure d'expiration" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Instructions particulières" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Instructions" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Action conseillée" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr " Service de référence" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Date de référence" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Numéro de référence" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Date de création" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Heure de création" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Date de numérisation" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Heure de numérisation" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Logiciel" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Version du logiciel" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Cycle de l'objet" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Créateur" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Auteur" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Titre du créateur" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Ville" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Lieu précis" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "État Région" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "État/Région" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Code du pays" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Libellé du pays" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Pays" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Référence de la transmission" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Chapô" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Crédit" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Source" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Notice Droit d'auteur" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Contact" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Légende" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Description" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Auteur de la Description" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +#, fuzzy +msgid "Rasterized Caption" +msgstr "Solarisation" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orientation" + +#: src/datasets.cpp:400 +#, fuzzy +msgid "Indicates the layout of an image." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Langue" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Type audio" + +#: src/datasets.cpp:409 +#, fuzzy +msgid "Indicates the type of an audio content." +msgstr "Identifie le fournisseur et le produit" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Débit audio" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Résolution audio" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "" + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Durée audio" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "" + +#: src/datasets.cpp:420 +#, fuzzy +msgid "Audio Outcue" +msgstr "Débit audio" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Format de prévisualisation" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Version de prévisualisation" + +#: src/datasets.cpp:430 +#, fuzzy +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Un champ binaire représentant la version courante du format du fichier " +"spécifié par le marqueur ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Données de prévisualisation" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Invalide)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Données inconnues" + +#: src/error.cpp:55 +#, fuzzy +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Erreur %0 : arg1=%1, arg2=%2, arg3=%3." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Réussite" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Cela ne ressemble pas a une image %1" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Nom de donnés `%1' invalide" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Nom d'enregistrement `%1' invalide" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Clef `%1' invalide" + +#: src/error.cpp:63 +#, fuzzy +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Nom de donnés `%1' invalide" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Valeur non réglée" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1 : Impossible d'ouvrir la source de données : %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1 : Impossible d'ouvrir le fichier (%2) : %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1 : Le fichier contient des données de type inconnu" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "La mémoire contient des données de type inconnu" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Le type d'image %1 n'est pas supporté" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Impossible de lire les données de l'image" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Cela ne semble pas être une image JPEG" + +#: src/error.cpp:72 +#, fuzzy +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "Impossible d'ouvrir le fichier à lire\n" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1 : Impossible de renommer le fichier en %2 : %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1 : Transfert échoué : %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Transfert de mémoire échoué : %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Impossible de lire les données d'entrée" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Impossible d'écrire l'image" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Les données d'entrée ne contiennent pas d'image valide" + +#: src/error.cpp:79 +#, fuzzy +msgid "Invalid ifdId %1" +msgstr "Clef `%1' invalide" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setValue : valeur trop grande (marqueur=%1, taille=%2, demandé=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea : valeur trop grande (marqueur=%1, taille=%2, demandé=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Décalage hors de porté" + +#: src/error.cpp:83 +#, fuzzy +msgid "Unsupported data area offset type" +msgstr "Format de date non supporté" + +#: src/error.cpp:84 +#, fuzzy +msgid "Invalid charset: `%1'" +msgstr "Clef `%1' invalide" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Format de date non supporté" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Format d'heure non supporté" + +#: src/error.cpp:87 +#, fuzzy +msgid "Writing to %1 images is not supported" +msgstr "Écrire dans des images %2 n'est pas supporté" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Régler %1 dans des image %2 n'est pas supporté" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Cela ne semble pas être une image CRW" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1 : non supporté" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "Taille du segment JPEG %1 est plus grand que 65535 octets" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +#, fuzzy +msgid "Invalid XmpText type `%1'" +msgstr "Clef `%1' invalide" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +#, fuzzy +msgid "%1 has invalid XMP value type `%2'" +msgstr "Clef `%1' invalide" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Copyright (C) 2004-2015 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Utilisation :" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +" [ options ] [ action ] fichier ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Manipulation des métadonnées EXIF issues des images.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Actions :\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Ajuste l'horodatage Exif par la date donnée. Cette\n" +" action nécessite l'option -a date.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Affiche les métadonnées de l'image.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Supprime les métadonnées de l'image.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Insert les métadonnées des fichiers *.exv correspondants.\n" +" Utilisez l'option -S pour changer le suffixe des fichiers " +"d'entrées.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Extrait les métadonnées dans un ficher *.exv et l'aperçu de " +"l'image.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Renomme les fichier et/ou change l'horodatage en " +"concordance\n" +" avec l'horodatage Exif. Le format de nom du fichier peut " +"être définit avec\n" +" -r format, les options d'horodatage sont contrôlées par -t " +"et -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Commande pour modifier (add, set, delete) les métadonnées\n" +" Exif et Iptc ou le commentaire JPEG de l'image.\n" +" Nécessite l'option -c, -m ou -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Copie le paramètre ISO du marqueur Nikon dans le marqueur\n" +" Exif standard.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Options :\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Affiche cette aide et sort.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Affiche la version du logiciel et sort.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Bavard lors de l'exécution du programme.\n" + +#: src/exiv2.cpp:266 +#, fuzzy +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr " -v Bavard lors de l'exécution du programme.\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Affiche les grandes données binaires.\n" + +#: src/exiv2.cpp:269 +#, fuzzy +msgid " -u Show unknown tags.\n" +msgstr " -u N'affiche pas les marqueurs inconnus.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Préserve l'horodatage des fichiers.\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Change aussi l'horodatage du fichier lors de l'action " +"'rename' (redéfini -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Change seulement l'horodatage du fichier lors de l'action " +"'rename'\n" +" ne ne renomme pas le fichier (redéfini -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -f Ne demande pas avant de réécrire un fichier existant (force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F Ne demande pas avant de renommer un fichier (Force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a time Ajustement temporel au format [-]HH[:MM[:SS]]. Cette option\n" +" est seulement utilisée avec l'action 'adjust'.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" +" -p mode Mode d'affichage pour l'action 'print'. Les modes possible " +"sont :\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s : Affiche un résumé des métadonnées Exif (par défaut)\n" + +#: src/exiv2.cpp:286 +#, fuzzy +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" v : Valeurs brutes des métadonnées Exif (raccourci -Pxgnycv)\n" + +#: src/exiv2.cpp:287 +#, fuzzy +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" +" t : Interprète les métadonnées Exif data (raccourci pour -" +"Pkyct)\n" + +#: src/exiv2.cpp:288 +#, fuzzy +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" +" v : Valeurs brutes des métadonnées Exif (raccourci -Pxgnycv)\n" + +#: src/exiv2.cpp:289 +#, fuzzy +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" +" h : hexdump des métadonnées Exif data (raccourci pour -" +"Pxgnycsh)\n" + +#: src/exiv2.cpp:290 +#, fuzzy +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : Données Iptc\n" + +#: src/exiv2.cpp:291 +#, fuzzy +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : propriétés XMP \n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : Commentaire JPEG\n" + +#: src/exiv2.cpp:293 +#, fuzzy +msgid " p : list available previews\n" +msgstr " l : intitulé du marqueur\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : valeur brute\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " x : propriétés XMP \n" + +#: src/exiv2.cpp:296 +#, fuzzy +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P cols Affiche les colonnes pour la liste de marqueurs Exif (action " +"'print'). Colonnes Valides :\n" + +#: src/exiv2.cpp:297 +#, fuzzy +msgid " E : include Exif tags in the list\n" +msgstr " s : taille en octets\n" + +#: src/exiv2.cpp:298 +#, fuzzy +msgid " I : IPTC datasets\n" +msgstr " i : données IPTC\n" + +#: src/exiv2.cpp:299 +#, fuzzy +msgid " X : XMP properties\n" +msgstr " x : propriétés XMP \n" + +#: src/exiv2.cpp:300 +#, fuzzy +msgid " x : print a column with the tag number\n" +msgstr " x : affiche une colonne avec la valeur du marqueur\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : nom du group\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : clef\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : intitulé du marqueur\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : nom du marqueur\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : type\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : nombre de composant\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : taille en octets\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : valeur brute\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : valeur interprété\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : hexdump de la donnée\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" +" -d tgt Efface la(les) cible(s) de l'action 'delete'. Les cibles " +"possibles sont :\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : toutes les métadonnées (par défaut)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : section Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : aperçu Exif seulement\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : données IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : paquet XMP\n" + +#: src/exiv2.cpp:318 +#, fuzzy +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Insert la(les) cible(s) pour l'action 'insert'. Les cibles " +"possible sont\n" +" les même que pour l'option -d. Seul les aperçus JPEG peuvent\n" +" inséré, ils doivent être nommés -thumb.jpg\n" + +#: src/exiv2.cpp:323 +#, fuzzy +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt Extrait la(les) cible(s) pour l'action 'extract'. Les cibles " +"possible sont\n" +" les même que pour l'option -d.\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Format de nom de fichier pour l'action 'rename'. la chaîne de " +"format\n" +" suit strftime(3). Les mots-clés suivant sont supportés :\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - nom de fichier original sans extensions\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - nom du répertoire contenant le fichier original\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - nom du répertoire parent\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Le format du nom par défaut est " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt Commentaire JPEG a appliquer à l'image.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m file Fichier de commandes pour l'action modifier . Le format des " +"commande est\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M file Ligne de commandes pour l'action modifier . Le format des " +"commande est\n" +" le meme que celui utilisé dans le fichier de commande.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l dir Emplacement (répertoire) pour les fichiers qui seront insérés de " +"ou extraits dans.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf Utilise le suffixe suf comme source du ficher pour la commande " +"insertion.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Оption" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "nécessite un argument\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Option non reconnue" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt a retourné un caractère non attendu" + +#: src/exiv2.cpp:410 +#, fuzzy +msgid "Invalid argument" +msgstr "clef invalide" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "clef invalide" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ignore l'option supplémentaire" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Ignore l'option supplémentaire -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Erreur en traitant l'argument de l'option -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "L'option -a n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Erreur lors de l'analyse" + +#: src/exiv2.cpp:535 +#, fuzzy +msgid "option argument" +msgstr "Nom du pays" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Mode d'affichage non reconnu" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Ignore l'option supplémentaire -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "L'option -p n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Élément d'affichage non reconnu" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Ignore l'option supplémentaire -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "L'option -P n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "L'option -d n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "L'option -e n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "L'option -i n'est pas compatible avec une option précédente\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "L'action ajuster n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "L'action afficher n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "L'action effacer n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "L'action extraire n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "L'action insérer n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "L'action renommer n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "L'action modifier n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "L'action fixiso n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:824 +#, fuzzy +msgid "Action fixcom is not compatible with the given options\n" +msgstr "L'action fixiso n'est pas compatible avec les options données\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Une action doit être spécifié\n" + +#: src/exiv2.cpp:904 +#, fuzzy +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "L'action modifier nécessite au moins une option -c, -m ou -M\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "L'action modifier nécessite au moins une option -c, -m ou -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Au moins un fichier est nécessaire\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Erreur en traitant les arguments de l'option -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Erreur en traitant les arguments de l'option -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" +"L'option -I ne peut être utilisé qu'avec des actions d'insertion ou " +"d'extraction\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "L'option -S ne peut être utilisé qu'avec l'action d'insertion\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "L'option -t ne peut être utilisé qu'avec l'actions de renommage\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "L'option -T ne peut être utilisé qu'avec l'actions de renommage\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Non reconnu" + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "cible" + +#: src/exiv2.cpp:1065 +#, fuzzy +msgid "Invalid preview number" +msgstr "Nombre d'intervalle" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Impossible d'ouvrir le fichier à lire\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "ligne" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "option -M" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "ligne de commande invalide" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "commande invalide" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "clef invalide" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "ligne de commande invalide" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Mode doux 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Mode doux 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "Mode dur 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "Mode dur 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Fluorescent (lumière du jour)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Fluorescent (blanc chaud)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Fluorescent (blanc froid)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Incandescent" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Aucun (Noir & Blanc)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Mode anti-yeux rouges." + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Scène de nuit" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Programme exposition automatique" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Lumière naturelle" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti flou" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Ensoleillé" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Musée" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Fête" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Fleur" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Texte" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Lumière naturelle et flash" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Priorité ouverture AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Priorité vitesse obturation AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Pas de flash & flash" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Chrome" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Large" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Standard" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Portrait studio" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Portrait Studio Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Brut" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Standard (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Mode large 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Mode large 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Mode simulation de film" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Version" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Version des notes de fabriquant Fujifilm" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Réglage de qualité de l'image" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Couleur" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Réglage de saturation chromatique" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Mode de déclenchement du flash" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Puissance Flash" + +#: src/fujimn.cpp:205 +#, fuzzy +msgid "Flash firing strength compensation setting" +msgstr "Réglage compensation Flash" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Réglages du mode macro" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Réglage de mode de mise au point" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Synchro lente" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Réglage de mode de synchro lente" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Mode d'image" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Réglage de mode d'image" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Réglage prise de vue continue ou auto-bracketing" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Numéro Séquence" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Numéro Séquence" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "Couleur FinePix" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Réglage couleur FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Avertissement Flou" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Statut avertissement Flou" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Avertissement mise au point" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Statut avertissement mise au point auto" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Avertissement exposition" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Statut avertissement auto exposition" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Gamme dynamique" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Gamme dynamique" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Mode Pellicule" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Mode Pellicule" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Réglage gamme dynamique" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Réglage gamme dynamique" + +#: src/fujimn.cpp:255 +#, fuzzy +msgid "Development Dynamic Range" +msgstr "Gamme dynamique" + +#: src/fujimn.cpp:256 +#, fuzzy +msgid "Development dynamic range" +msgstr "Gamme dynamique" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Longueur focale minimale" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Longueur focale minimale" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Longueur focale maximum" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Longueur focale maximum" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Ouverture maximum à focal minimum" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Ouverture maximum à focal minimum" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Ouverture maximum à focal maximum" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Ouverture maximum à focal maximum" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Source du fichier" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Source du fichier" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Numéro ordre" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Numéro ordre" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Numéro frame" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Numéro frame" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Marqueur FujiMakerNote inconnu" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Couleur naturelle" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Couleurs vives" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarisation" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Naturel" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "sRGB naturel" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "sRGB naturel+" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Soirée" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Portrait de nuit" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Super fin" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Extra fin" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Version des Notes du fabriquant" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "Chaîne 'MLT0' (non terminée par null)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Réglage appareil photo (ancien standard)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Réglage appareil photo standard (Anciens modèles comme les D5, D7, S304, et " +"S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Réglage appareil photo (Nouveau standard)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" +"Réglage appareil photo standard (Nouveaux modèles comme les D7u, D7i, et " +"D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Réglage appareil photo (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Réglage appareil photo (pour modèle Dymax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Données stabilisation image" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Données stabilisation image" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Taille image compressée" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Taille image compressée" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Aperçu Jpeg 640x480 pixels" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Décalage aperçu" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Décalage de l'aperçu" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Longueur de l'aperçu" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Taille de l'aperçu" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Mode scène" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Mode couleur" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Mode couleur" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Qualité de l'image" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Compensation exposition flash" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Compensation exposition flash en EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +#, fuzzy +msgid "Teleconverter Model" +msgstr "Mode scène" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +#, fuzzy +msgid "Zone Matching" +msgstr "Réduction du bruit" + +#: src/minoltamn.cpp:154 +#, fuzzy +msgid "Zone matching" +msgstr "Réduction du bruit" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Température des couleurs" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID Objectif" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Identifiant objectif" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "Compensation de tonalité" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Table de balance des blancs" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Table de balance des blancs" + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "Stabilisation de l'image" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Données stabilisation image" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Réglage appareil photo (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Réglage appareil photo (pour modèles Dymax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Print IM" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "Information PrintIM" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Réglage appareil photo (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Réglage appareil photo (pour modèles Z1, DImage X, et F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Marqueur de note du fabriquant Minolta inconnu" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Priorité ouverture" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Priorité obturation" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +#, fuzzy +msgid "Fill flash" +msgstr "Flash" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Synchro flash arrière" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Sans fil" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Fluorescent 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Pleine taille" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Super fin" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Extra fin" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "Zone unique" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "retardateur" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "bracketing" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Interval" + +#: src/minoltamn.cpp:257 +#, fuzzy +msgid "UHS continuous" +msgstr "Continue" + +#: src/minoltamn.cpp:258 +#, fuzzy +msgid "HS continuous" +msgstr "Continue" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Multi-segments" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Moyenne pondérée au centre" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Augmentation électronique" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Haut" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Haut-droit" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Bas-droit" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Bas" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Bas-gauche" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Haut-gauche" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Dur" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "Doux" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Portrait de nuit" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Action sports" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Formulaire standard" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Formulaire de donné" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Couleur naturelle" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Noir et Blanc" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Couleur vive" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Pas de zone" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Zone centrale (orientation horizontale)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Zone centrale (orientation verticale)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Zone gauche" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Zone droite" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Mise au point auto" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Mise au point large (normale)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Mise au point Spot" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Exposition" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filtre" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Non embarqué" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Embarqué" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Texte + N° ID" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Pré-flash TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Contrôle de flash manuel" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Mode d'exposition" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Mode flash" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Mode contrôle" + +#: src/minoltamn.cpp:512 +#, fuzzy +msgid "ISO Value" +msgstr "Valeur de vitesse ISO" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Temps d'exposition" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "Nombre F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "Le F-nombre" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Mode macro" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Pas du bracket" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Pas du bracket" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Longueur intervalle" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Longueur intervalle" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Nombre d'intervalle" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Nombre d'intervalle" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Distance de mise au point" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Distance de mise au point" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Matériel du flash" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Flash désactivé" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Date Minolta" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Date Minolta" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Heure Minolta" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Heure Minolta" + +#: src/minoltamn.cpp:556 +#, fuzzy +msgid "File Number Memory" +msgstr "Nombre F" + +#: src/minoltamn.cpp:557 +#, fuzzy +msgid "File number memory" +msgstr "Nom du fichier" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Numéro d'image" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Numéro de l'image" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Balance des rouges" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Balance des rouges" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Balance des verts" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Balance des verts" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Balance des bleus" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Balance des bleus" + +#: src/minoltamn.cpp:580 +#, fuzzy +msgid "Subject Program" +msgstr "Aire du sujet" + +#: src/minoltamn.cpp:581 +#, fuzzy +msgid "Subject program" +msgstr "Aire du sujet" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Réglage ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Réglage ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Modèle Minolta" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Modèle Minolta" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Mode interval" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Mode interval" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Nom répertoire" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Nom répertoire" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Mode couleur" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Filtre couleur" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Filtre couleur" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Filtre Noir et Blanc" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Filtre Noir et Blanc" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Flash interne" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Luminosité" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "Mise au point Spot" + +#: src/minoltamn.cpp:614 +#, fuzzy +msgid "Spot focus point X" +msgstr "Mise au point Spot" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "Mise au point Spot" + +#: src/minoltamn.cpp:617 +#, fuzzy +msgid "Spot focus point Y" +msgstr "Mise au point Spot" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Zone mise au point large" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Zone mise au point large" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Mode mise au point" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Zone mise au point" + +#: src/minoltamn.cpp:628 +#, fuzzy +msgid "DEC Switch Position" +msgstr "Position mise au point" + +#: src/minoltamn.cpp:629 +#, fuzzy +msgid "DEC switch position" +msgstr "Position mise au point" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Profil couleur" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Profil couleur" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +#, fuzzy +msgid "Flash Metering" +msgstr "Réglage flash" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +#, fuzzy +msgid "Flash metering" +msgstr "Réglage flash" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Marqueur réglage appareil photo Minolta inconnu" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Logiciel" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Logiciel" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Brut+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +#, fuzzy +msgid "Single-shot AF" +msgstr "Simple" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +#, fuzzy +msgid "Continuous AF" +msgstr "Continue" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "AF automatique" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (naturel)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (naturel+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horizontale (normale)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Rotation 90° Horaire" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Rotation 270° Horaire" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Points AF" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "AF Points" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Espace des couleurs" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Espace des couleurs" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "tonalité" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Rotation" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Numéro d'image" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Réduction du bruit" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "" + +#: src/minoltamn.cpp:818 +#, fuzzy +msgid "Zone matching on" +msgstr "Compensation de tonalité" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Marqueur 7D réglage appareil photo Minolta inconnu" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Logiciel" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Logiciel" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "Portrait de nuit" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +#, fuzzy +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Central" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Haut" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Haut droit" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Bas droit" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Bas" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Bas gauche" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Haut gauche" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Sélection" + +#: src/minoltamn.cpp:947 +#, fuzzy +msgid "Natural+" +msgstr "Naturel" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "Scène de nuit" + +#: src/minoltamn.cpp:950 +#, fuzzy +msgid "Evening Scene" +msgstr "Soirée" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Position mise au point" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Position mise au point" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Zone mise au point" + +#: src/minoltamn.cpp:1036 +#, fuzzy +msgid "Exposure Revision" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "Rotation" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +#, fuzzy +msgid "Picture Finish" +msgstr "Infos image" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Biais manuel d'exposition" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Biais manuel d'exposition" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Mode mise au point automatique" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Mode mise au point automatique" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Marqueur 5D réglage appareil photo Minolta inconnu" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "retardateur" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "retardateur" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr "Biais de balance des blancs" + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr "Biais de balance des blancs" + +#: src/minoltamn.cpp:1106 +#, fuzzy +msgid "Single-frame Bracketing Low" +msgstr "Zone unique" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Bracketing automatique" + +#: src/minoltamn.cpp:1108 +#, fuzzy +msgid "Single-frame Bracketing High" +msgstr "Zone unique" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Continue, Haute" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +#, fuzzy +msgid "Continuous Bracketing" +msgstr "Continue, Haute" + +#: src/minoltamn.cpp:1156 +#, fuzzy +msgid "Single-Frame Bracketing" +msgstr "Zone unique" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "Biais de balance des blancs" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Présélection" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +#, fuzzy +msgid "Color Temperature/Color Filter" +msgstr "Température des couleurs" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +#, fuzzy +msgid "Temperature" +msgstr "Température de l'objectif" + +#: src/minoltamn.cpp:1213 +#, fuzzy +msgid "Setup" +msgstr "Définition de" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "Configuration image" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Type d'image" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Hauteur de l'image" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "Flash" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "Mode mise au point" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Données de prévisualisation" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +#, fuzzy +msgid "Toggle" +msgstr "Ton" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Mode doux 1" + +#: src/minoltamn.cpp:1260 +#, fuzzy +msgid "Spot Toggle" +msgstr "Mode doux 1" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Vitesse d'obturation" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +#, fuzzy +msgid "Automatic" +msgstr "AF automatique" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "Contraste" + +#: src/minoltamn.cpp:1291 +#, fuzzy +msgid "Horizontal" +msgstr "Horizontale (normale)" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "Déclenchement manuel" + +#: src/minoltamn.cpp:1302 +#, fuzzy +msgid "Within Range" +msgstr "Classement Windows" + +#: src/minoltamn.cpp:1303 +#, fuzzy +msgid "Under/Over Range" +msgstr "Échelle de transfert" + +#: src/minoltamn.cpp:1304 +#, fuzzy +msgid "Out of Range" +msgstr "Décalage hors de porté" + +#: src/minoltamn.cpp:1309 +#, fuzzy +msgid "Not Indicated" +msgstr "Non défini" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "Sous marin" + +#: src/minoltamn.cpp:1311 +#, fuzzy +msgid "Bottom of Scale" +msgstr "Du bas vers le haut" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +#, fuzzy +msgid "Over Scale" +msgstr "Défaut" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Très faible" + +#: src/minoltamn.cpp:1350 +#, fuzzy +msgid "Half Full" +msgstr "Plein" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:1362 +#, fuzzy +msgid "High Speed Sync" +msgstr "Scène de nuit" + +#: src/minoltamn.cpp:1363 +#, fuzzy +msgid "High speed sync" +msgstr "Scène de nuit" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "Temps d'exposition" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "Temps d'exposition" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Nombre d'intervalle" + +#: src/minoltamn.cpp:1377 +#, fuzzy +msgid "Drive Mode 2" +msgstr "Mode contrôle" + +#: src/minoltamn.cpp:1378 +#, fuzzy +msgid "Drive mode 2" +msgstr "Mode contrôle" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Mode mise au point automatique" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Mode flash" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "Compensation exposition flash" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "Compensation exposition flash en EV" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +#, fuzzy +msgid "ISO Setting" +msgstr "Réglage ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Réduction du bruit" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +#, fuzzy +msgid "Dynamic Range Optimizer Mode" +msgstr "Réglage gamme dynamique" + +#: src/minoltamn.cpp:1408 +#, fuzzy +msgid "Dynamic range optimizer mode" +msgstr "Réglage gamme dynamique" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +#, fuzzy +msgid "Self Timer Time" +msgstr "Retardateur" + +#: src/minoltamn.cpp:1435 +#, fuzzy +msgid "Self timer time" +msgstr "Retardateur" + +#: src/minoltamn.cpp:1438 +#, fuzzy +msgid "Continuous bracketing" +msgstr "Continue, Haute" + +#: src/minoltamn.cpp:1440 +#, fuzzy +msgid "Single Frame Bracketing" +msgstr "bracketing" + +#: src/minoltamn.cpp:1441 +#, fuzzy +msgid "Single frame bracketing" +msgstr "Zone unique" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +#, fuzzy +msgid "White balance bracketing" +msgstr "Biais de balance des blancs" + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "Réglage balance des blancs" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Balance des blancs" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "Balance des blancs" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Température des couleurs" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Température des couleurs" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Personnel 1" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "Personnel 1" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Réglage gamme dynamique" + +#: src/minoltamn.cpp:1464 +#, fuzzy +msgid "Custom WB Red Level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:1465 +#, fuzzy +msgid "Custom WB red level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:1467 +#, fuzzy +msgid "Custom WB Green Level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:1468 +#, fuzzy +msgid "Custom WB green level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:1470 +#, fuzzy +msgid "Custom WB Blue Level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:1471 +#, fuzzy +msgid "CustomWB blue level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Personnel 1" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Ajustement de la balance des blancs" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "Valeur de compensation d'exposition" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "Taille de l'image" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "AF One Shot" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Mode anti-yeux rouges." + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Mode anti-yeux rouges." + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Détails flash" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "Détails flash" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "Bracketing automatique" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "Bracketing automatique" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "Réglage mode de mise au point" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "Réglage mode de mise au point" + +#: src/minoltamn.cpp:1515 +#, fuzzy +msgid "AEL Button" +msgstr "Réglage AE" + +#: src/minoltamn.cpp:1516 +#, fuzzy +msgid "AEL button" +msgstr "Réglage AE" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "Réglage de contraste" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "Contraste" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Compensation d'exposition" + +#: src/minoltamn.cpp:1525 +#, fuzzy +msgid "AF assist" +msgstr "Faisceau AF" + +#: src/minoltamn.cpp:1527 +#, fuzzy +msgid "Card Shutter Lock" +msgstr "Priorité obturation" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "Obturation rapide" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "Temps de pose lent" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "Temps de pose lent" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Mode mise au point automatique" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Index d'exposition" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Index d'exposition" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Index d'exposition" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "Compensation exposition flash" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Compensation d'exposition du flash" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "Compensation exposition flash" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "Compensation exposition flash" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "Mode mise au point" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Réglage mode de mise au point" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash Type" +msgstr "Mode flash" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash type" +msgstr "Mode flash" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +#, fuzzy +msgid "AE Lock" +msgstr "AE verrouillé" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Niveau de charge" + +#: src/minoltamn.cpp:1588 +#, fuzzy +msgid "Battery level" +msgstr "Niveau de charge" + +#: src/minoltamn.cpp:1592 +#, fuzzy +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Marqueur 1 réglage appareil photo Canon inconnu" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +#, fuzzy +msgid "Clear" +msgstr "année" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +#, fuzzy +msgid "Deep" +msgstr "Denver" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +#, fuzzy +msgid "Light" +msgstr "Droit" + +#: src/minoltamn.cpp:1950 +#, fuzzy +msgid "Night View" +msgstr "Scène de nuit" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +#, fuzzy +msgid "Local" +msgstr "Lieu précis" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "Haut-droit" + +#: src/minoltamn.cpp:2007 +#, fuzzy +msgid "Bottom-Right" +msgstr "Bas-droit" + +#: src/minoltamn.cpp:2009 +#, fuzzy +msgid "Bottom-Left" +msgstr "Bas-gauche" + +#: src/minoltamn.cpp:2011 +#, fuzzy +msgid "Top-Left" +msgstr "Haut-gauche" + +#: src/minoltamn.cpp:2012 +#, fuzzy +msgid "Far-Right" +msgstr "Droit d'auteur" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "haut, gauche" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +#, fuzzy +msgid "Advanced Auto" +msgstr "Fonction de transfert" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "Niveau de noir" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Date de publication" + +#: src/minoltamn.cpp:2054 +#, fuzzy +msgid "RAW " +msgstr "BRUT" + +#: src/minoltamn.cpp:2055 +#, fuzzy +msgid "CRAW " +msgstr "BRUT" + +#: src/minoltamn.cpp:2058 +#, fuzzy +msgid "RAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2059 +#, fuzzy +msgid "CRAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Rapport de compression" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "Taille image compressée" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Réglage ISO utilisé" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Clef haute" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Clef basse" + +#: src/nikonmn.cpp:80 +#, fuzzy +msgid "Extra High" +msgstr "Extra fin" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Zone unique" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Zone dynamique" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Zone dynamique, sujet proche" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Zone unique (large)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Zone dynamique (large)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Haut-gauche" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Haut-droit" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Bas-gauche" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Bas-droit" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "Plus à gauche" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "Plus à droite" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Flash déclenché, manuel" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Flash déclenché, externe" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "Flash déclenché, mode maître" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Flash déclenché, mode TTL" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Délai" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Contrôle PC" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Avertissement exposition" + +#: src/nikonmn.cpp:156 +#, fuzzy +msgid "Auto ISO" +msgstr "Automatique" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Biais de balance des blancs" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Contrôle infrarouge" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Continue, Haute" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "Contrôle PC" + +#: src/nikonmn.cpp:167 +#, fuzzy +msgid "Exposure bracketing" +msgstr "Avertissement exposition" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "Contrôle infrarouge" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Déclenchement automatique" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "Déclenchement manuel" + +#: src/nikonmn.cpp:182 +#, fuzzy +msgid "Lossy (type 1)" +msgstr "Type d'objectif" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Non compressé" + +#: src/nikonmn.cpp:184 +#, fuzzy +msgid "Lossless" +msgstr "Los Angeles" + +#: src/nikonmn.cpp:185 +#, fuzzy +msgid "Lossy (type 2)" +msgstr "Type d'objectif" + +#: src/nikonmn.cpp:191 +#, fuzzy +msgid "B & W" +msgstr "N&B" + +#: src/nikonmn.cpp:193 +#, fuzzy +msgid "Trim" +msgstr "Heure d'envoi" + +#: src/nikonmn.cpp:194 +#, fuzzy +msgid "Small picture" +msgstr "Film" + +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "Lumière du jour" + +#: src/nikonmn.cpp:196 +#, fuzzy +msgid "Red eye" +msgstr "Réduction yeux rouges" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "type" + +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "Lumière du jour" + +#: src/nikonmn.cpp:199 +#, fuzzy +msgid "Warm tone" +msgstr "Tonalité couleur" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Tonalité couleur" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Type d'image" + +#: src/nikonmn.cpp:207 +#, fuzzy +msgid "Minimal" +msgstr "Manuel" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Version des note du fabriquant Nikon" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "Vitesse ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Netteté" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Réglage netteté image" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Mise au point" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Réglage flash" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Réglage flash" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Sélection ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Sélection ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +#, fuzzy +msgid "Data Dump" +msgstr "Formulaire de donné" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +#, fuzzy +msgid "Data dump" +msgstr "Formulaire de donné" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Ajustement image" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Réglage ajustement image" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Objectif auxiliaire" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Objectif auxiliaire (adaptateur)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Distance mise au point manuelle" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Réglage du zoom numérique" + +#: src/nikonmn.cpp:260 +#, fuzzy +msgid "AF Focus Position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:261 +#, fuzzy +msgid "AF focus position information" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Non utilisé" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "deviné" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA grossier" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA normal" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA fin" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA grossier" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA normal" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA fin" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Luminosité+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Luminosité-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Contraste+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Contraste-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Vitesse lumière" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Marqueur 2 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Matériel du flash" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Matériel du flash" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Biais de balance des blancs" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Biais de balance des blancs" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB Levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Logiciel" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "Logiciel" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Différence d'exposition" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Différence d'exposition" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Pointeur vers l'image d'aperçu" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "Décalage vers l'IFD contenant l'aperçu" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Compensation Flash" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Réglage compensation Flash" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Limite de l'image" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Limite de l'image" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Compensation d'exposition du flash" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "Compensation Flash" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "Compensation d'exposition du flash" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "Programme d'exposition" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "AE bracket compensation applied" +msgstr "Valeur de compensation d'exposition" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr " Traitement d'image" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr " Traitement d'image" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "Scène de nuit" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "Droit d'auteur" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Avertissement exposition" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Avertissement exposition" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "Informations brutes" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR info" +msgstr "Informations brutes" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "Orientation" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "Orientation" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Infos image" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Infos image" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "Heure Minolta" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "Heure Minolta" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO Info" +msgstr "Infos prise de vue" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO info" +msgstr "Réglage ISO" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette Control" +msgstr "Point blanc" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette control" +msgstr "Point blanc" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Compensation de tonalité" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Compensation de tonalité" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Mode de flash utilisé" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Mode de prise de vue" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Mode de prise de vue" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto Bracket Release" +msgstr "Bracketing automatique" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto bracket release" +msgstr "Bracketing automatique" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "Type d'objectif" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "Contraste" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "Contraste" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Tonalité couleur" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Tonalité couleur" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Mode scène" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Source lumineuse" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Source lumineuse" + +#: src/nikonmn.cpp:583 +#, fuzzy +msgid "Shot info" +msgstr "Infos prise de vue" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Ajustement de teinte" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Ajustement de teinte" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Compression" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Compression" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +#, fuzzy +msgid "Linearization Table" +msgstr "Date de numérisation" + +#: src/nikonmn.cpp:588 +#, fuzzy +msgid "Linearization table" +msgstr "Date de numérisation" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color Balance" +msgstr "Balance des couleurs 1" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color balance" +msgstr "Balance des rouges" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Données de l'objectif" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Réglage des données de l'objectif" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "Comptage d'image" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw image center" +msgstr "Aperçu embarqué" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Taille pixel du capteur" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Taille pixel du capteur" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "Faisceau AF" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene assist" +msgstr "Mode scène" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch History" +msgstr "Hauteur de l'image" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "" + +#: src/nikonmn.cpp:597 +#, fuzzy +msgid "Serial NO" +msgstr "Numéro de série" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Taille des données de l'image" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Taille des données de l'image" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Comptage d'image" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Comptage d'image" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted Image Count" +msgstr "Effacer le comptage d'image" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted image count" +msgstr "Effacer le comptage d'image" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +#, fuzzy +msgid "Shutter Count" +msgstr "Priorité obturation" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Nombre de photo pris par l'appareil" + +#: src/nikonmn.cpp:603 +#, fuzzy +msgid "Flash info" +msgstr "Flash" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Optimisation d'image" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Optimisation d'image" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "Version du logiciel" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "Version du logiciel" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "Réponse mise au point automatique" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "Réponse mise au point automatique" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Exposition" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Réduction de bruit Iso élevé" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "Effet photo" + +#: src/nikonmn.cpp:612 +#, fuzzy +msgid "AF info 2" +msgstr "Informations mise au point" + +#: src/nikonmn.cpp:613 +#, fuzzy +msgid "File info" +msgstr "Nom du fichier" + +#: src/nikonmn.cpp:614 +#, fuzzy +msgid "AF tune" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture Data" +msgstr "Date de publication" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture data" +msgstr "Autre données" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "Version du microcode" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "Version de microcode" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture Offsets" +msgstr "Décalage aperçu" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "Décalage aperçu" + +#: src/nikonmn.cpp:621 +#, fuzzy +msgid "Scan IFD" +msgstr "Identifiant appareil photo" + +#: src/nikonmn.cpp:622 +#, fuzzy +msgid "ICC profile" +msgstr "Profil couleur" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Marqueur 3 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Non" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Oui" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration Reduction" +msgstr "Réduction du bruit" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration reduction" +msgstr "Réduction du bruit" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Marqueur réglage appareil photo Canon inconnu" + +#: src/nikonmn.cpp:667 +#, fuzzy +msgid "Default Settings" +msgstr "Réglage flash" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick Adjust" +msgstr "Ajustement de teinte" + +#: src/nikonmn.cpp:669 +#, fuzzy +msgid "Full Control" +msgstr "Contrôle des couleurs" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +#, fuzzy +msgid "Name" +msgstr "Nom du propriétaire" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "" + +#: src/nikonmn.cpp:702 +#, fuzzy +msgid "Adjust" +msgstr "Ajustement de" + +#: src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick adjust" +msgstr "Ajustement de teinte" + +#: src/nikonmn.cpp:709 +#, fuzzy +msgid "Filter effect" +msgstr "Effet de couleurs" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "Saturation" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "Saturation" + +#: src/nikonmn.cpp:713 +#, fuzzy +msgid "Unknown Nikon Picture Control Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:744 +#, fuzzy +msgid "Timezone" +msgstr "Ton" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "Lumière du jour" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "Lumière du jour" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date Display Format" +msgstr "Format du fichier" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date display format" +msgstr "Formulaire de donné" + +#: src/nikonmn.cpp:748 +#, fuzzy +msgid "Unknown Nikon World Time Tag" +msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "" + +#: src/nikonmn.cpp:767 +msgid "Hi 2.3" +msgstr "" + +#: src/nikonmn.cpp:768 +msgid "Hi 2.5" +msgstr "" + +#: src/nikonmn.cpp:769 +msgid "Hi 2.7" +msgstr "" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO Expansion" +msgstr "Sélection ISO" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO expansion" +msgstr "Sélection ISO" + +#: src/nikonmn.cpp:785 +#, fuzzy +msgid "ISO 2" +msgstr "Infos prise de vue" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO Expansion 2" +msgstr "Sélection ISO" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO expansion 2" +msgstr "Sélection ISO" + +#: src/nikonmn.cpp:788 +#, fuzzy +msgid "Unknown Nikon Iso Info Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "Zone unique" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "Zone dynamique" + +#: src/nikonmn.cpp:800 +#, fuzzy +msgid "Dynamic Area, Closest Subject" +msgstr "Zone dynamique, sujet proche" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Zone unique (large)" + +#: src/nikonmn.cpp:803 +#, fuzzy +msgid "Dynamic Area (wide)" +msgstr "Zone dynamique (large)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "milieu-gauche" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "milieu-droit" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "haut, gauche" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "Droit d'auteur" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Mode mise au point automatique" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +#, fuzzy +msgid "AF point" +msgstr "AF Points" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Points AF utilisés" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Points AF utilisés" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Marqueur réglage appareil photo Canon inconnu" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Activé" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Activé" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Activé" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "Réglage de contraste" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "Réglage de contraste" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase Detect AF" +msgstr "Échec lors de la lecture" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase detect AF" +msgstr "Échec lors de la lecture" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "Point AF" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "AF Points" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Largeur de l'image" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Largeur de l'image" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Hauteur de l'image" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "Hauteur de l'image" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Mode mise au point automatique" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Mode mise au point automatique" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Mode mise au point automatique" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "Droit d'auteur" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "Réglage de contraste" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "Réglage de contraste" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Marqueur réglage appareil photo Canon inconnu" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Numéro ordre" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Numéro ordre" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +#, fuzzy +msgid "Multiple Exposure" +msgstr "Exposition" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Type d'image" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Mode d'exposition" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "Exposition" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Exposition" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Exposition" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "Exposition" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "Exposition" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Marqueur réglage appareil photo Canon inconnu" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Interne" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +#, fuzzy +msgid "iTTL-BL" +msgstr "TTL" + +#: src/nikonmn.cpp:992 +#, fuzzy +msgid "iTTL" +msgstr "TTL" + +#: src/nikonmn.cpp:993 +#, fuzzy +msgid "Auto Aperture" +msgstr "Ouverture" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Pas de flash" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "Nombre F" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "Source du fichier" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "Source du fichier" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Zoom flash externe" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Mode flash externe" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "Flash externe" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "Flash externe" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "Longueur focale maximum" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "Longueur focale maximum" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Renommage du fichier en" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "Contrôle de flash manuel" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "Distance de mise au point" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "Distance de mise au point" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Filtre couleur" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Filtre couleur" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +#, fuzzy +msgid "Shutter count" +msgstr "Priorité obturation" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "Matériel du flash" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "Matériel du flash" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Point AF utilisé" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "Activé" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "Priorité obturation" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Priorité obturation" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Réduction du bruit" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Réduction du bruit" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "Priorité obturation" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Priorité obturation" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration Reduction 2" +msgstr "Réduction du bruit" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration reduction 2" +msgstr "Réduction du bruit" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "Marqueur info image Canon inconnu" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG Levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Balance des couleurs 1" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB Levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Balance des couleurs 1" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Balance des couleurs 1" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Balance des couleurs 1" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG Levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Marqueur panorama Canon inconnu" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG Levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG levels" +msgstr "Niveau de noir" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Marqueur panorama Canon inconnu" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Numéro de série" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Numéro de série de l'appareil photo" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "Type d'objectif" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "Type d'objectif" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min Focal Length" +msgstr "Longueur focale minimale" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min focal length" +msgstr "Longueur focale minimale" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max Focal Length" +msgstr "Longueur focale maximum" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max focal length" +msgstr "Longueur focale maximum" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +#, fuzzy +msgid "Max Aperture At Min Focal" +msgstr "Ouverture maximum à focal minimum" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +#, fuzzy +msgid "Max aperture at min focal" +msgstr "Ouverture maximum à focal minimum" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +#, fuzzy +msgid "Max Aperture At Max Focal" +msgstr "Ouverture maximum à focal maximum" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +#, fuzzy +msgid "Max aperture at max focal" +msgstr "Ouverture maximum à focal maximum" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "Version d'ARM" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "Version d'ARM" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "Position mise au point" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Ouverture" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Ouverture" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective Max Aperture" +msgstr "Ouverture maximale" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective max aperture" +msgstr "Ouverture maximale" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:1399 +#, fuzzy +msgid "Max aperture at min focal length" +msgstr "Ouverture maximum à focal minimum" + +#: src/nikonmn.cpp:1400 +#, fuzzy +msgid "Max aperture at max focal length" +msgstr "Ouverture maximum à focal maximum" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Marqueur 1 de note du fabriquant Nikon inconnu" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Sujet proche" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "Aucun" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "utilisé" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "Points AF" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +#, fuzzy +msgid "Single-frame" +msgstr "Zone unique" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Qualité standard (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Qualité haute (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Qualité très haute (HQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Sport" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +#, fuzzy +msgid "Landscape+Portrait" +msgstr "Paysage" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +#, fuzzy +msgid "Self Portrait" +msgstr "Portrait" + +#: src/olympusmn.cpp:102 +#, fuzzy +msgid "2 in 1" +msgstr "Activé" + +#: src/olympusmn.cpp:105 +#, fuzzy +msgid "Night+Portrait" +msgstr "Portrait de nuit" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Nourriture" + +#: src/olympusmn.cpp:112 +#, fuzzy +msgid "Documents" +msgstr "Nom du document" + +#: src/olympusmn.cpp:114 +#, fuzzy +msgid "Shoot & Select" +msgstr "Effet photo" + +#: src/olympusmn.cpp:115 +#, fuzzy +msgid "Beach & Snow" +msgstr "Surf et Neige" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "Retardateur" + +#: src/olympusmn.cpp:117 +#, fuzzy +msgid "Candle" +msgstr "Lumière de bougie" + +#: src/olympusmn.cpp:118 +#, fuzzy +msgid "Available Light" +msgstr "Longueur focale maximum" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +#, fuzzy +msgid "My Mode" +msgstr "Mode prise de vue" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Animaux" + +#: src/olympusmn.cpp:122 +#, fuzzy +msgid "Underwater Wide1" +msgstr "Sous marin" + +#: src/olympusmn.cpp:123 +#, fuzzy +msgid "Underwater Macro" +msgstr "Sous marin" + +#: src/olympusmn.cpp:124 +#, fuzzy +msgid "Shoot & Select1" +msgstr "Effet photo" + +#: src/olympusmn.cpp:125 +#, fuzzy +msgid "Shoot & Select2" +msgstr "Effet photo" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "Stabilisation de l'image" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "Automatique" + +#: src/olympusmn.cpp:131 +#, fuzzy +msgid "Underwater Wide2" +msgstr "Sous marin" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:136 +#, fuzzy +msgid "Underwater Snapshot" +msgstr "Sous marin" + +#: src/olympusmn.cpp:137 +#, fuzzy +msgid "Shooting Guide" +msgstr "Mode de prise de vue" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Interne + Externe" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Entrelacé" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progressif" + +#: src/olympusmn.cpp:188 +#, fuzzy +msgid "Thumbnail Image" +msgstr "Miniature" + +#: src/olympusmn.cpp:189 +#, fuzzy +msgid "Thumbnail image" +msgstr "Miniature" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "Version du microcode" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "Version de microcode" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Mode spécial" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Mode de prise de vue" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Mode noir & blanc" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Mode noir et blanc" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Rapport de zoom numérique" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Diagonal du plan focal" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Diagonal du plan focal" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Paramètre de distorsion de l'objectif" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Paramètre de distorsion de l'objectif" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera Type" +msgstr "Marque de l'appareil" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera type" +msgstr "Marque de l'appareil" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Format de données ASCII comme [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "Identifiant appareil photo" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Données de l'identifiant appareil photo" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Logiciel" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +#, fuzzy +msgid "Preview Image" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +#, fuzzy +msgid "Preview image" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Nom du propriétaire" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Nom du propriétaire" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +#, fuzzy +msgid "White Balance Bracket" +msgstr "Biais de balance des blancs" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +#, fuzzy +msgid "White balance bracket" +msgstr "Biais de balance des blancs" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Microcode" + +#: src/olympusmn.cpp:261 +#, fuzzy +msgid "Data Dump 1" +msgstr "Formulaire de donné" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Divers réglages de l'appareil photo 1" + +#: src/olympusmn.cpp:264 +#, fuzzy +msgid "Data Dump 2" +msgstr "Formulaire de donné" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Divers réglages de l'appareil photo 1" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Valeur de vitesse d'obturation" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "Valeur de vitesse ISO" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Valeur d'ouverture" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Valeur de luminosité" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Bracket" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Valeur de compensation d'exposition" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Température de la sonde" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Température de la sonde" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Température de l'objectif" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Température de l'objectif" + +#: src/olympusmn.cpp:294 +#, fuzzy +msgid "Light Condition" +msgstr "Fonctions personnalisées" + +#: src/olympusmn.cpp:295 +#, fuzzy +msgid "Light condition" +msgstr "Fonctions personnalisées" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "Zone mise au point" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "Zone mise au point" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Zoom" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom step count" +msgstr "Comptage d'image" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Mise au point macro" + +#: src/olympusmn.cpp:310 +#, fuzzy +msgid "Macro focus step count" +msgstr "Position mise au point" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Facteur de netteté" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Facteur de netteté" + +#: src/olympusmn.cpp:315 +#, fuzzy +msgid "Flash Charge Level" +msgstr "Matériel du flash" + +#: src/olympusmn.cpp:316 +#, fuzzy +msgid "Flash charge level" +msgstr "Matériel du flash" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matrice des couleurs" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matrice des couleurs" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Mode balance des blancs" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Balance des rouges" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Balance des rouges" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Balance des bleus" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Balance des bleus" + +#: src/olympusmn.cpp:342 +#, fuzzy +msgid "Color Matrix Number" +msgstr "Matrice des couleurs" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Matrice des couleurs" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Numéro de série 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Numéro de série 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Compensation d'exposition du flash" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "Mode flash externe" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "Mode flash externe" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Zoom flash externe" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Zoom flash externe" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Mode flash externe" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Mode flash externe" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Contrôle des couleurs" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Contrôle des couleurs" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Filtre couleur" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Filtre couleur" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Rapport de compression" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Rapport de compression" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Décalage de l'aperçu" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Taille de l'aperçu" + +#: src/olympusmn.cpp:435 +#, fuzzy +msgid "CCD Scan Mode" +msgstr "Mode scène" + +#: src/olympusmn.cpp:436 +#, fuzzy +msgid "CCD scan mode" +msgstr "Mode scène" + +#: src/olympusmn.cpp:441 +#, fuzzy +msgid "Infinity Lens Step" +msgstr "Infinie" + +#: src/olympusmn.cpp:442 +#, fuzzy +msgid "Infinity lens step" +msgstr "Infinie" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "Type d'objectif" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Informations équipement" + +#: src/olympusmn.cpp:448 +#, fuzzy +msgid "Camera equipment sub-IFD" +msgstr "Informations équipement de l'appareil" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "Réglage appareil photo (7D)" + +#: src/olympusmn.cpp:453 +#, fuzzy +msgid "Raw Development" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:454 +#, fuzzy +msgid "Raw development sub-IFD" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:456 +#, fuzzy +msgid "Raw Development 2" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:457 +#, fuzzy +msgid "Raw development 2 sub-IFD" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr " Traitement d'image" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Informations mise au point" + +#: src/olympusmn.cpp:463 +#, fuzzy +msgid "Focus sub-IFD" +msgstr "Informations mise au point" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Informations brutes" + +#: src/olympusmn.cpp:466 +#, fuzzy +msgid "Raw sub-IFD" +msgstr "Sous-IFD" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Logiciel" + +#: src/olympusmn.cpp:491 +#, fuzzy +msgid "Center-weighted average" +msgstr "Moyenne pondérée au centre" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +#: src/olympusmn.cpp:494 +#, fuzzy +msgid "Pattern+AF" +msgstr "Motif CFA" + +#: src/olympusmn.cpp:495 +#, fuzzy +msgid "Spot+Highlight control" +msgstr "Contrôle des couleurs" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Contrôle des couleurs" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "Simple" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +#, fuzzy +msgid "Multi AF" +msgstr "AF automatique" + +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "Point AF utilisé" + +#: src/olympusmn.cpp:518 +#, fuzzy +msgid "AF Used" +msgstr "Point AF utilisé" + +#: src/olympusmn.cpp:523 +#, fuzzy +msgid "Not Ready" +msgstr "Non utilisé" + +#: src/olympusmn.cpp:524 +#, fuzzy +msgid "Ready" +msgstr "Réduction yeux rouges" + +#: src/olympusmn.cpp:531 +#, fuzzy +msgid "Fill-in" +msgstr "Nom du fichier" + +#: src/olympusmn.cpp:533 +#, fuzzy +msgid "Slow-sync" +msgstr "Synchro lente" + +#: src/olympusmn.cpp:534 +#, fuzzy +msgid "Forced On" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +#, fuzzy +msgid "7500K (Fine Weather with Shade)" +msgstr "Ensoleillé" + +#: src/olympusmn.cpp:568 +#, fuzzy +msgid "6000K (Cloudy)" +msgstr "Auto (Nuageux)" + +#: src/olympusmn.cpp:569 +#, fuzzy +msgid "5300K (Fine Weather)" +msgstr "Ensoleillé" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Ouverture" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Auto (Flash)" + +#: src/olympusmn.cpp:574 +#, fuzzy +msgid "6600K (Daylight fluorescent)" +msgstr "Lumière du jour fluorescent" + +#: src/olympusmn.cpp:575 +#, fuzzy +msgid "4500K (Neutral white fluorescent)" +msgstr "Auto (lumière du jour fluorescent)" + +#: src/olympusmn.cpp:576 +#, fuzzy +msgid "4000K (Cool white fluorescent)" +msgstr "Blanc froid fluorescent (W 3900 - 4500K)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:584 +#, fuzzy +msgid "Custom WB 1" +msgstr "Personnel 1" + +#: src/olympusmn.cpp:585 +#, fuzzy +msgid "Custom WB 2" +msgstr "Personnel 2" + +#: src/olympusmn.cpp:586 +#, fuzzy +msgid "Custom WB 3" +msgstr "Processus personnel 2" + +#: src/olympusmn.cpp:587 +#, fuzzy +msgid "Custom WB 4" +msgstr "Personnel 1" + +#: src/olympusmn.cpp:593 +#, fuzzy +msgid "CM1 (Red Enhance)" +msgstr "Balance des bleus" + +#: src/olympusmn.cpp:594 +#, fuzzy +msgid "CM2 (Green Enhance)" +msgstr "Balance des bleus" + +#: src/olympusmn.cpp:595 +#, fuzzy +msgid "CM3 (Blue Enhance)" +msgstr "Balance des bleus" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise Filter" +msgstr "Filtre" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Filtre" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +#, fuzzy +msgid "Muted" +msgstr "utilisé" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +#, fuzzy +msgid "Monotone" +msgstr "Tonalité couleur" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +#, fuzzy +msgid "On, Mode 1" +msgstr "Mode scène" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +#, fuzzy +msgid "On, Mode 2" +msgstr "Mode scène" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "Mode scène" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera Settings Version" +msgstr "informations de réglage appareil photo" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera settings version" +msgstr "informations de réglage appareil photo" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "PreviewImage Valid" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "Preview image valid" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "PreviewImage Start" +msgstr "Données de prévisualisation" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "Preview image start" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "PreviewImage Length" +msgstr "Hauteur de l'image" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "Preview image length" +msgstr "Aperçu embarqué" + +#: src/olympusmn.cpp:666 +#, fuzzy +msgid "Auto exposure lock" +msgstr "Exposition" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "Temps d'exposition" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "Temps d'exposition" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "Mode mise au point" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Processus personnel" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +#, fuzzy +msgid "AF search" +msgstr "Point AF utilisé" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF Areas" +msgstr "Zone mise au point" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF areas" +msgstr "Zone mise au point" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Point AF sélectionné" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF Fine Tune Adjust" +msgstr "Point AF utilisé" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF fine tune adjust" +msgstr "Point AF utilisé" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "Contrôle des couleurs" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "Contrôle des couleurs" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Mode flash" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Mode flash" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "Activité flash" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "Activité flash" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "Puissance Flash" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "Contrôle de flash manuel" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +#, fuzzy +msgid "White Balance 2" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +#, fuzzy +msgid "White balance 2" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White Balance Temperature" +msgstr "Table de balance des blancs" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White balance temperature" +msgstr "Table de balance des blancs" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom Saturation" +msgstr "Saturation" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom saturation" +msgstr "Fonctions personnalisées" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified Saturation" +msgstr "Saturation" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified saturation" +msgstr "Saturation" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +#, fuzzy +msgid "Contrast Setting" +msgstr "Réglage de contraste" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness Setting" +msgstr "Réglage de Netteté" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion Correction" +msgstr "Réduction du bruit" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion correction" +msgstr "Réduction du bruit" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +#, fuzzy +msgid "Shading Compensation" +msgstr "Compensation de tonalité" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +#, fuzzy +msgid "Shading compensation" +msgstr "Compensation de tonalité" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression Factor" +msgstr "Rapport de compression" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression factor" +msgstr "Rapport de compression" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +#, fuzzy +msgid "Gradation" +msgstr "Saturation" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +#, fuzzy +msgid "Picture mode" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:697 +#, fuzzy +msgid "Picture Mode Saturation" +msgstr "Réglage de mode d'image" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +#, fuzzy +msgid "Picture mode saturation" +msgstr "Réglage de mode d'image" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture Mode Hue" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture mode hue" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:699 +#, fuzzy +msgid "Picture Mode Contrast" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +#, fuzzy +msgid "Picture mode contrast" +msgstr "Réglage de mode d'image" + +#: src/olympusmn.cpp:700 +#, fuzzy +msgid "Picture Mode Sharpness" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +#, fuzzy +msgid "Picture mode sharpness" +msgstr "Réglage de mode d'image" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture Mode BW Filter" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture mode BW filter" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture Mode Tone" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture mode tone" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise filter" +msgstr "Filtre couleur" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Filtre" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Filtre couleur" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Filtre digital" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Appareil photo numérique" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama Mode" +msgstr "Panorama" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama mode" +msgstr "Frame panorama" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image Quality 2" +msgstr "Qualité de l'image" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image quality 2" +msgstr "Qualité de l'image" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer Pressure" +msgstr "Non compressé" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer pressure" +msgstr "Non compressé" + +#: src/olympusmn.cpp:711 +#, fuzzy +msgid "Manometer Reading" +msgstr "Non compressé" + +#: src/olympusmn.cpp:711 +#, fuzzy +msgid "Manometer reading" +msgstr "Non compressé" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB Detect" +msgstr "Mode scène" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB detect" +msgstr "Mode scène" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "Informations équipement" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "Informations équipement" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Numéro de série" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +#, fuzzy +msgid "Lens Serial Number" +msgstr "Numéro de série" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +#, fuzzy +msgid "Lens serial number" +msgstr "Numéro de série de l'appareil photo" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens Firmware Version" +msgstr "Version du microcode" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens firmware version" +msgstr "Version de microcode" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max Aperture At Current Focal" +msgstr "Ouverture maximum à focal minimum" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max aperture at current focal" +msgstr "Ouverture maximum à focal minimum" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens Properties" +msgstr "Température de l'objectif" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens properties" +msgstr "Température de l'objectif" + +#: src/olympusmn.cpp:761 +#, fuzzy +msgid "Extender" +msgstr "Externe" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender Serial Number" +msgstr "Numéro de série de l'appareil photo" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender serial number" +msgstr "Numéro de série de l'appareil photo" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender Model" +msgstr "Mode scène" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender model" +msgstr "Mode scène" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender Firmware Version" +msgstr "Version du microcode" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender firmwareversion" +msgstr "Version du microcode" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion Lens" +msgstr "Version" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion lens" +msgstr "Valeur de luminosité" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +#, fuzzy +msgid "Flash Model" +msgstr "Mode flash" + +#: src/olympusmn.cpp:767 +#, fuzzy +msgid "Flash model" +msgstr "Mode flash" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "Version du microcode" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "Version de microcode" + +#: src/olympusmn.cpp:769 +#, fuzzy +msgid "FlashSerialNumber" +msgstr "Numéro de série" + +#: src/olympusmn.cpp:771 +#, fuzzy +msgid "Unknown OlympusEq tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +#, fuzzy +msgid "High Speed" +msgstr "Scène de nuit" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +#, fuzzy +msgid "High Function" +msgstr "Fonctions personnalisées" + +#: src/olympusmn.cpp:790 +#, fuzzy +msgid "Advanced High Speed" +msgstr "Scène de nuit" + +#: src/olympusmn.cpp:791 +#, fuzzy +msgid "Advanced High Function" +msgstr "Fonction de transfert" + +#: src/olympusmn.cpp:796 +#, fuzzy +msgid "Original" +msgstr "Date et heure (originel)" + +#: src/olympusmn.cpp:797 +#, fuzzy +msgid "Edited (Landscape)" +msgstr "Paysage" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +#, fuzzy +msgid "Edited (Portrait)" +msgstr "Portrait de nuit" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "Tonalité couleur" + +#: src/olympusmn.cpp:805 +#, fuzzy +msgid "WB Gray Point" +msgstr "Point AF" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +#, fuzzy +msgid "Exposure Bias Value" +msgstr "Correction d'exposition" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +#, fuzzy +msgid "Exposure bias value" +msgstr "Correction d'exposition" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White Balance Value" +msgstr "Table de balance des blancs" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White balance value" +msgstr "Table de balance des blancs" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "Ajustement de teinte" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "Ajustement de teinte" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "Point AF" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray point" +msgstr "AF Points" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation Emphasis" +msgstr "Réglage de saturation" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation emphasis" +msgstr "Réglage de saturation" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Mes couleurs" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory color emphasis" +msgstr "Mes couleurs" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast Value" +msgstr "Contraste" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast value" +msgstr "Contraste" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness Value" +msgstr "Netteté" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness value" +msgstr "Netteté" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +#, fuzzy +msgid "Engine" +msgstr "centre" + +#: src/olympusmn.cpp:827 +#, fuzzy +msgid "Edit status" +msgstr "Statut des modifications" + +#: src/olympusmn.cpp:828 +#, fuzzy +msgid "Settings" +msgstr "Réglage AE" + +#: src/olympusmn.cpp:830 +#, fuzzy +msgid "Unknown OlympusRd tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "Version des Notes du fabriquant" + +#: src/olympusmn.cpp:889 +#, fuzzy +msgid "White balance fine adjustment" +msgstr "Ajustement de la balance des blancs" + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "Saturation" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "Contraste" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "Netteté" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW Filter" +msgstr "Filtre" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW filter" +msgstr "Filtre" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Mode d'image" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto Gradation" +msgstr "Durée audio" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto gradation" +msgstr "Durée audio" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "PM Noise Filter" +msgstr "Filtre" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "Réglage de mode d'image" + +#: src/olympusmn.cpp:909 +#, fuzzy +msgid "Unknown OlympusRd2 tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Activé" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Activé" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr " Traitement d'image" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Informations du traitement d'image" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB Levels 3000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB levels 3000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB Levels 3300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB levels 3300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB Levels 3600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB levels 3600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB Levels 3900K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB levels 3900K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB Levels 4000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB levels 4000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB Levels 4300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB levels 4300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB Levels 4500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB levels 4500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB Levels 4800K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB levels 4800K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB Levels 5300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB levels 5300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB Levels 6000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB levels 6000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB Levels 6600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB levels 6600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB Levels 7500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB levels 7500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB Levels CWB1" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB levels CWB1" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB Levels CWB3" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB levels CWB3" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB Levels CWB4" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB levels CWB4" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G Level 3000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G level 3000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G Level 3300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G level 3300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G Level 3600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G level 3600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G Level 3900K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G level 3900K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G Level 4000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G level 4000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G Level 4300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G level 4300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G Level 4500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G level 4500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G Level 4800K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G level 4800K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G Level 5300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G level 5300K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G Level 6000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G level 6000K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G Level 6600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G level 6600K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G Level 7500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G level 7500K" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:970 +#, fuzzy +msgid "Enhancer" +msgstr "centre" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer Values" +msgstr "centre" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer values" +msgstr "centre" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Filtre couleur" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Valeur de luminosité" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Valeur de luminosité" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +#, fuzzy +msgid "Black Level" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +#, fuzzy +msgid "Crop Left" +msgstr "haut, gauche" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +#, fuzzy +msgid "Crop left" +msgstr "haut, gauche" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +#, fuzzy +msgid "Crop Top" +msgstr "Crédit" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +#, fuzzy +msgid "Crop top" +msgstr "Crédit" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +#, fuzzy +msgid "Crop Width" +msgstr "Droit d'auteur" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +#, fuzzy +msgid "Crop width" +msgstr "Droit d'auteur" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +#, fuzzy +msgid "Crop Height" +msgstr "Droit d'auteur" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +#, fuzzy +msgid "Crop height" +msgstr "Droit d'auteur" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Mode d'exposition" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Exposition" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "" + +#: src/olympusmn.cpp:985 +#, fuzzy +msgid "Aspect ratio" +msgstr "Durée audio" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Nom de l'objet" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Nom de l'objet" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +#, fuzzy +msgid "Face Detect" +msgstr "Échec lors de la lecture" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +#, fuzzy +msgid "Face detect" +msgstr "Échec lors de la lecture" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "Échec lors de la lecture" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "Échec lors de la lecture" + +#: src/olympusmn.cpp:990 +#, fuzzy +msgid "Unknown OlympusIp tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus Info Version" +msgstr "Informations mise au point" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus info version" +msgstr "Informations mise au point" + +#: src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto Focus" +msgstr "Mise au point auto" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene Detect" +msgstr "Mode scène" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene detect" +msgstr "Mode scène" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene Area" +msgstr "Mode scène" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene area" +msgstr "Zone unique" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene Detect Data" +msgstr "Mode scène" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene detect data" +msgstr "Mode scène" + +#: src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom Step Count" +msgstr "Comptage d'image" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus Step Count" +msgstr "Mise au point continue" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus step count" +msgstr "Position mise au point" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "Réglage mise au point" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "Réglage mise au point" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "Type de mise au point" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "Distance de mise au point" + +#: src/olympusmn.cpp:1016 +#, fuzzy +msgid "External Flash" +msgstr "Flash externe" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Mode flash externe" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Mode flash externe" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "Déclenchement manuel" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "Déclenchement manuel" + +#: src/olympusmn.cpp:1025 +#, fuzzy +msgid "Unknown OlympusFi tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:1049 +#, fuzzy +msgid "Fine Weather" +msgstr "Ensoleillé" + +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "Tungstène (lampe à incandescence)" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "Soirée" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Lumière du jour fluorescent (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +#, fuzzy +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Blanc chaud fluorescent (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +#, fuzzy +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Blanc froid fluorescent (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +#, fuzzy +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Blanc fluorescent (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Balance des blancs en une touche" + +#: src/olympusmn.cpp:1057 +#, fuzzy +msgid "Custom 1-4" +msgstr "Personnel 1" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "Informations mise au point" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "Informations brutes" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB Levels Used" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB levels used" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB Levels Auto" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB levels auto" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB Levels Shade" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB levels shade" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB Levels Cloudy" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB levels cloudy" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB Levels Fine Weather" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB levels fine weather" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB Levels Tungsten" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB levels tungsten" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB Levels Evening Sunlight" +msgstr "Soirée" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB levels evening sunlight" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB Levels Daylight Fluor" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB levels daylight fluor" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB Levels Day White Fluor" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB levels day white fluor" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB Levels Cool White Fluor" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB levels cool white fluor" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "Fluorescent" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color Matrix2" +msgstr "Matrice des couleurs" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color matrix 2" +msgstr "Matrice des couleurs" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black Level 2" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black level 2" +msgstr "Niveau de noir" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "Coefficients YCbCr" + +#: src/olympusmn.cpp:1077 +#, fuzzy +msgid "YCbCr coefficients" +msgstr "Coefficients YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "Réglage de saturation" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "Réglage flash" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "Réglage AE" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM Exposure Compensation" +msgstr "Compensation d'exposition" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM exposure compensation" +msgstr "Compensation d'exposition" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Balance des blancs" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "Biais de balance des blancs" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "Biais de balance des blancs" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "Saturation" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "Saturation" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM Hue" +msgstr "tonalité" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM hue" +msgstr "tonalité" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "Contraste" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "Contraste" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "Netteté" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "Netteté" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "Marqueur de note du fabriquant Olympus inconnu" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Sélection utilisateur" + +#: src/olympusmn.cpp:1122 +#, fuzzy +msgid "Auto-Override" +msgstr "Écraser" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Rapide" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "ID unique de l'image" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "Point AF utilisé" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Mise au point Spot" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Zone droite" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Panorama" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Mode mise au point" + +#: src/olympusmn.cpp:1510 +#, fuzzy +msgid "Fish Eye" +msgstr "Puissance flash" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +#, fuzzy +msgid "Dramatic Tone" +msgstr "Informations prise de vue" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Mise au point Spot" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Ouverture maximale" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Sélection" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Mode mise au point" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Panorama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Langue" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Langue" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Couleur naturelle" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "Zone gauche" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +#, fuzzy +msgid "Center (horizontal)" +msgstr "Zone centrale (orientation horizontale)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +#, fuzzy +msgid "Center (vertical)" +msgstr "Zone centrale (orientation verticale)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Zone centrale (orientation horizontale)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "Horizontale (normale)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Horizontale (normale)" + +#: src/olympusmn.cpp:1630 +#, fuzzy +msgid "Bottom-left (horizontal)" +msgstr "Bas-gauche" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "Bas-gauche" + +#: src/olympusmn.cpp:1632 +#, fuzzy +msgid "Bottom-right (horizontal)" +msgstr "Bas-droit" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "centre" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "Haut-droit" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +#, fuzzy +msgid "Mid-right (vertical)" +msgstr "milieu-droit" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +#, fuzzy +msgid "Bottom-left (vertical)" +msgstr "Bas-gauche" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "Bas-gauche" + +#: src/olympusmn.cpp:1643 +#, fuzzy +msgid "Bottom-right (vertical)" +msgstr "Bas-droit" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Zone unique" + +#: src/olympusmn.cpp:1681 +#, fuzzy +msgid "All Target" +msgstr "cible" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Réglage gamme dynamique" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Très haute" + +#: src/panasonicmn.cpp:60 +#, fuzzy +msgid "Motion Picture" +msgstr "Mode d'image" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogène" + +#: src/panasonicmn.cpp:83 +#, fuzzy +msgid "Auto, focus button" +msgstr "Mise au point auto" + +#: src/panasonicmn.cpp:84 +#, fuzzy +msgid "Auto, continuous" +msgstr "Continue" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +#, fuzzy +msgid "Panning" +msgstr "Avertissement" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Macro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +#, fuzzy +msgid "Scenery" +msgstr "centre" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Priorité vitesse obturation" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Écriture au format" + +#: src/panasonicmn.cpp:123 +#, fuzzy +msgid "Simple" +msgstr "Simple" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Effet de couleurs" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Scène de nuit" + +#: src/panasonicmn.cpp:132 +#, fuzzy +msgid "Baby" +msgstr "de" + +#: src/panasonicmn.cpp:133 +#, fuzzy +msgid "Soft skin" +msgstr "Doux" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Lumière de bougie" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "Lumière standard A" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "Sensibilité spectrale" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Panorama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +#, fuzzy +msgid "Intelligent ISO" +msgstr "Longueur intervalle" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Balance des blancs" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "Paramètre de la mise au point continue" + +#: src/panasonicmn.cpp:146 +#, fuzzy +msgid "Intelligent auto" +msgstr "Longueur intervalle" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Multi-spots" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Échelle de transfert" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Biais du flash" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Numériseur de film" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Mes couleurs" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Frame panorama" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Lumière de bougie" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Contrôle des couleurs" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Filtre digital" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Portrait" + +#: src/panasonicmn.cpp:163 +#, fuzzy +msgid "Silky Skin" +msgstr "Doux" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Rotation" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Scène de nuit" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "valeur" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "Réduction du bruit" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Portrait de nuit" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Chaud" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Froid" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Qualité basse/haute" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "Infini" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "Moyenne 1" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "Moyenne 1" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "Élevée" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +#, fuzzy +msgid "Highest (+2)" +msgstr "Élevée" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "Rotation 90° Horaire" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Non utilisé" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Non utilisé" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +#, fuzzy +msgid "Home" +msgstr "Rome" + +#: src/panasonicmn.cpp:294 +#, fuzzy +msgid "Standard (color)" +msgstr "Formulaire standard" + +#: src/panasonicmn.cpp:295 +#, fuzzy +msgid "Dynamic (color)" +msgstr "Zone dynamique" + +#: src/panasonicmn.cpp:296 +#, fuzzy +msgid "Nature (color)" +msgstr "Couleur naturelle" + +#: src/panasonicmn.cpp:297 +#, fuzzy +msgid "Smooth (color)" +msgstr "Formulaire standard" + +#: src/panasonicmn.cpp:298 +#, fuzzy +msgid "Standard (B&W)" +msgstr "Standard (100%)" + +#: src/panasonicmn.cpp:299 +#, fuzzy +msgid "Dynamic (B&W)" +msgstr "Zone dynamique" + +#: src/panasonicmn.cpp:300 +#, fuzzy +msgid "Smooth (B&W)" +msgstr "Standard (100%)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Bracket" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Externe" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Automatique" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Formulaire standard" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "Rotation 90° Horaire" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "Rotation 90° Horaire" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "De gauche à droite" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "De droite à gauche" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Du haut vers le bas" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Du bas vers le haut" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Heure d'envoi" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Informations prise de vue" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Sélection" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Audio" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Ajustement de la balance des blancs" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Biais du flash" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Version d'exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Effet de couleurs" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Effet de couleurs" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Mode rafale" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Mode rafale" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Réduction de bruit" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Retardateur" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Faisceau AF" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "de" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical Zoom Mode" +msgstr "Mode spécial" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical zoom mode" +msgstr "Mode Pellicule" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World Time Location" +msgstr "Lieu précis" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World time location" +msgstr "Lieu précis" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "Horodateur GPS" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Logiciel" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Type de scène" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "Horodateur GPS" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Échec lors de la lecture" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Température des couleurs" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Température des couleurs" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "bracketing" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "Ajustement de teinte" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "Ajustement de teinte" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Flash" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Réduction du bruit lors d'expositions longues" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Position mise au point" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Échec lors de la lecture" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Type d'objectif" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "Type d'objectif" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Numéro de série" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "Échelle de transfert" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Longueur intervalle" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Version du microcode" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "informations de réglage appareil photo" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Avertissement mise au point" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Réglage flash" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +#, fuzzy +msgid "Title" +msgstr "Le fichier" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "de" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +#, fuzzy +msgid "Location" +msgstr "Lieu précis" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +#, fuzzy +msgid "State" +msgstr "Date d'envoi" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Longueur intervalle" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Vitesse d'obturation" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Gamme dynamique" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Réduction du bruit" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Ville" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Mode d'image" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Orientation" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "haut, gauche" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Direction panorama" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Décalage d'enregistrement" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Interne + Externe" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Vitesse d'obturation" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Index interopérabilité" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "Balance des blancs en une touche" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "Version des Notes du fabriquant" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "Version des Notes du fabriquant" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB Red Level" +msgstr "Niveau de noir" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB red level" +msgstr "Niveau de noir" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB Green Level" +msgstr "Niveau de noir" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB green level" +msgstr "Niveau de noir" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB Blue Level" +msgstr "Niveau de noir" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB blue level" +msgstr "Niveau de noir" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "Horodateur GPS" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "Horodateur GPS" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "de" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "Échelle de transfert" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Marqueur de note du fabriquant Panasonic inconnu" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Mode doux 1" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "Mise au point Spot" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Mise au point Spot" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "non défini\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "Version de microcode" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "Droit d'auteur" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "Droit d'auteur" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "Nettoyage capteur" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "Nettoyage capteur" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor Top Border" +msgstr "Température de la sonde" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor top border" +msgstr "Température de la sonde" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor Left Border" +msgstr "Température de la sonde" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor left border" +msgstr "Température de la sonde" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Constructeur" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Modèle" + +#: src/panasonicmn.cpp:740 +#, fuzzy +msgid "The model name or model number of the equipment" +msgstr "Le type de source lumineuse." + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +#, fuzzy +msgid "Strip Offsets" +msgstr "Décalage aperçu" + +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "Décalage aperçu" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientation" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "The number of rows per strip" +msgstr "Le nombre F." + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Priorité obturation" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Priorité obturation" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "Décalage IFD" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "En-tête, décalage" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Pointeur IFD Exif" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "Pointeur IFD information GPS" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "Marqueur de note du fabriquant Panasonic inconnu" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Scène de nuit" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Bien" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Mieux" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Meilleur" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 ou 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 ou 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 ou 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Flash auto, non déclenché" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Le flash ne s'est pas déclenché." + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Flash auto non déclenché, mode anti-yeux rouges" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Flash automatique, déclenché" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Déclenché" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Flash auto déclenché, mode anti-yeux rouges" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Activé, Mode anti-yeux rouges" + +#: src/pentaxmn.cpp:256 +#, fuzzy +msgid "On, Wireless (Master)" +msgstr "Activé, Sans fil" + +#: src/pentaxmn.cpp:257 +#, fuzzy +msgid "On, Wireless (Control)" +msgstr "Activé, Sans fil" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Activé, Doux" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Activé, Synchro lente" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Flash déclenché, synchro lente, mode anti-yeux rouges" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +#, fuzzy +msgid "Pan Focus" +msgstr "Continue" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Réglage de contraste" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Réglage de contraste" + +#: src/pentaxmn.cpp:284 +#, fuzzy +msgid "Fixed Center" +msgstr "Centre" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "AF automatique" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Sélection" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "" + +#: src/pentaxmn.cpp:307 +#, fuzzy +msgid "Top-center" +msgstr "centre" + +#: src/pentaxmn.cpp:313 +#, fuzzy +msgid "Bottom-center" +msgstr "Bas-gauche" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Multi-segments" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Centre pondéré" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "Lumière du jour fluorescent" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "Lumière du jour fluorescent" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "Fluorescent" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Température des couleurs" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Sélection utilisateur" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto (lumière du jour)" + +#: src/pentaxmn.cpp:429 +#, fuzzy +msgid "Auto (Shade)" +msgstr "Ombragé" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (Flash)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (Tungstène)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (lumière du jour fluorescent)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (lumière du jour fluorescent)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (lumière fluorescente)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (Nuageux)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Programme (Feux d'artifices)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Plutôt faible" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Plutôt élevé" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Plutôt doux" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "Plutôt dur" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Très doux" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Très dur" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Maison" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Mexico Ville" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "New York" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracas" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Londres" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paris" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Milan" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rome" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlin" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istanbul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Le Caire" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jérusalem" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moscou" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Téhéran" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubaï" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Karachi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kaboul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Kathmandu" + +#: src/pentaxmn.cpp:528 +#, fuzzy +msgid "Dacca" +msgstr "Dackar" + +#: src/pentaxmn.cpp:529 +#, fuzzy +msgid "Yangon" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +#, fuzzy +msgid "Vientiane" +msgstr "Orientation" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapour" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Jakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +#, fuzzy +msgid "Perth" +msgstr "Animaux" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Pékin" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Shanghai" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manille" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Taipei" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Séoul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adélaïde" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokyo" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Nouméa" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dackar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Alger" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Athène" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Stockholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lisbonne" + +#: src/pentaxmn.cpp:560 +#, fuzzy +msgid "Copenhagen" +msgstr "Moyenne" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Non traité" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "taille" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Rogné" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Filtre digital" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +#, fuzzy +msgid "Hi-speed Program" +msgstr "Programme d'exposition" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +#, fuzzy +msgid "DOF Program" +msgstr "Logiciel" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +#, fuzzy +msgid "MTF Program" +msgstr "Logiciel" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Portrait de nuit" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Pas de flash" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surf et Neige" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Enfants" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "Hauteur de l'image" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "Instantané de nuit" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "valeur" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Scène de nuit" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Super macro" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "Fluorescent" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +#, fuzzy +msgid "Auto PICT (Standard)" +msgstr "Auto (Paysage)" + +#: src/pentaxmn.cpp:611 +#, fuzzy +msgid "Auto PICT (Portrait)" +msgstr "Contraste" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto (Paysage)" + +#: src/pentaxmn.cpp:613 +#, fuzzy +msgid "Auto PICT (Macro)" +msgstr "Auto (Paysage)" + +#: src/pentaxmn.cpp:614 +#, fuzzy +msgid "Auto PICT (Sport)" +msgstr "Auto (Paysage)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "Mode contrôle" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Priorité vitesse obturation" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Priorité ouverture" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Bulb" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Logiciel" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Logiciel" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Priorité ouverture (Av)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manuel" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Bulb" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Priorité obturation" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Priorité vitesse obturation et ouverture AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Priorité vitesse obturation et ouverture AE (1)" + +#: src/pentaxmn.cpp:642 +#, fuzzy +msgid "Sensitivity Priority AE" +msgstr "Sensibilité spectrale" + +#: src/pentaxmn.cpp:643 +#, fuzzy +msgid "Sensitivity Priority AE (1)" +msgstr "Priorité vitesse obturation et ouverture AE (1)" + +#: src/pentaxmn.cpp:644 +#, fuzzy +msgid "Flash X-Sync Speed AE" +msgstr "Vitesse de synchro flash en mode Av" + +#: src/pentaxmn.cpp:645 +#, fuzzy +msgid "Flash X-Sync Speed AE (1)" +msgstr "Vitesse de synchro flash en mode Av" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Programme (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Programme (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Programme (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Contrôle des couleurs" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +#, fuzzy +msgid "Continuous (Hi)" +msgstr "Continue" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +#, fuzzy +msgid "Burst" +msgstr "Mode rafale" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +#, fuzzy +msgid "Video" +msgstr "Large" + +#: src/pentaxmn.cpp:666 +#, fuzzy +msgid "Self-timer (12 sec)" +msgstr "retardateur" + +#: src/pentaxmn.cpp:667 +#, fuzzy +msgid "Self-timer (2 sec)" +msgstr "retardateur" + +#: src/pentaxmn.cpp:669 +#, fuzzy +msgid "Mirror Lock-up" +msgstr "Verrouillage du miroir" + +#: src/pentaxmn.cpp:670 +#, fuzzy +msgid "Remote Control (3 sec)" +msgstr "Contrôle des couleurs" + +#: src/pentaxmn.cpp:671 +#, fuzzy +msgid "Remote Control" +msgstr "Contrôle des couleurs" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Paramètre de la mise au point continue" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Fort" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Fort" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Fort" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Automatique" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "Objectif" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +#, fuzzy +msgid "Bright" +msgstr "Luminosité+" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +#, fuzzy +msgid "Weakest" +msgstr "Ouest" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Faible" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Fort" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "" + +#: src/pentaxmn.cpp:1133 +#, fuzzy +msgid "Unknown " +msgstr "Inconnu" + +#: src/pentaxmn.cpp:1146 +#, fuzzy +msgid "Pentax Makernote version" +msgstr "Version des note du fabriquant Nikon" + +#: src/pentaxmn.cpp:1149 +#, fuzzy +msgid "Camera shooting mode" +msgstr "Mode de prise de vue" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +#, fuzzy +msgid "Resolution of a preview image" +msgstr "Pointeur vers l'image d'aperçu" + +#: src/pentaxmn.cpp:1154 +#, fuzzy +msgid "Length of a preview image" +msgstr "Pointeur vers l'image d'aperçu" + +#: src/pentaxmn.cpp:1155 +#, fuzzy +msgid "Size of an IFD containing a preview image" +msgstr "Décalage vers l'IFD contenant l'aperçu" + +#: src/pentaxmn.cpp:1160 +#, fuzzy +msgid "Model identification" +msgstr "Version du Modèle" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Version du Modèle" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +#, fuzzy +msgid "Date" +msgstr "Date d'envoi" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +#, fuzzy +msgid "Time" +msgstr "Heure d'envoi" + +#: src/pentaxmn.cpp:1170 +#, fuzzy +msgid "Image quality settings" +msgstr "Réglage de qualité de l'image" + +#: src/pentaxmn.cpp:1173 +#, fuzzy +msgid "Image size settings" +msgstr "Réglage de qualité de l'image" + +#: src/pentaxmn.cpp:1177 +#, fuzzy +msgid "Flash mode settings" +msgstr "Réglage mode flash" + +#: src/pentaxmn.cpp:1180 +#, fuzzy +msgid "Focus mode settings" +msgstr "Réglage mode de mise au point" + +#: src/pentaxmn.cpp:1183 +#, fuzzy +msgid "Selected AF point" +msgstr "AF Points" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "Points AF utilisés" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +#, fuzzy +msgid "F-Number" +msgstr "Nombre F" + +#: src/pentaxmn.cpp:1195 +#, fuzzy +msgid "ISO sensitivity" +msgstr "Sensibilité spectrale" + +#: src/pentaxmn.cpp:1196 +#, fuzzy +msgid "ISO sensitivity settings" +msgstr "Réglage vitesse ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +#, fuzzy +msgid "MeteringMode" +msgstr "Mode de mesure" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +#, fuzzy +msgid "AutoBracketing" +msgstr "Bracketing automatique" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Balance des bleus" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Balance des rouges" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +#, fuzzy +msgid "FocalLength" +msgstr "Longueur focale" + +#: src/pentaxmn.cpp:1239 +#, fuzzy +msgid "Hometown" +msgstr "Maison" + +#: src/pentaxmn.cpp:1245 +#, fuzzy +msgid "Hometown DST" +msgstr "Maison" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +#, fuzzy +msgid "Destination DST" +msgstr "Destination" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "Version du microcode" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "Version du microcode" + +#: src/pentaxmn.cpp:1261 +#, fuzzy +msgid "Light value" +msgstr "Valeur de luminosité" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "Taille des données de l'image" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "Taille de l'image" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +#, fuzzy +msgid "Preview image borders" +msgstr "Aperçu embarqué" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +#, fuzzy +msgid "Sensitivity adjust" +msgstr "Sensibilité spectrale" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +#, fuzzy +msgid "Digital filter" +msgstr "Appareil photo numérique" + +#: src/pentaxmn.cpp:1299 +#, fuzzy +msgid "Camera temperature" +msgstr "Température des couleurs" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +#, fuzzy +msgid "Image tone" +msgstr "Type d'image" + +#: src/pentaxmn.cpp:1319 +#, fuzzy +msgid "Shake reduction" +msgstr "Réduction du bruit" + +#: src/pentaxmn.cpp:1320 +#, fuzzy +msgid "Shake reduction information" +msgstr "informations de réglage appareil photo" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +#, fuzzy +msgid "Dynamic range expansion" +msgstr "Réglage gamme dynamique" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +#, fuzzy +msgid "High ISO noise reduction" +msgstr "Réduction de bruit Iso élevé" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "Ajustement de teinte" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +#, fuzzy +msgid "Black point" +msgstr "Noir & Blanc" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +#, fuzzy +msgid "White point" +msgstr "Point blanc" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +#, fuzzy +msgid "ShotInfo" +msgstr "Infos prise de vue" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +#, fuzzy +msgid "AEInfo" +msgstr "Informations mise au point" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +#, fuzzy +msgid "LensInfo" +msgstr "Objectif" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +#, fuzzy +msgid "FlashInfo" +msgstr "Flash" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +#, fuzzy +msgid "AEMeteringSegments" +msgstr "Mode de mesure" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "Compensation Flash" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "Compensation Flash" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +#, fuzzy +msgid "WB_RGGBLevelsDaylight" +msgstr "Fluorescent" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +#, fuzzy +msgid "WB_RGGBLevelsShade" +msgstr "Niveau de noir" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +#, fuzzy +msgid "WB_RGGBLevelsCloudy" +msgstr "Niveau de noir" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +#, fuzzy +msgid "WB_RGGBLevelsTungsten" +msgstr "Niveau de noir" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentD" +msgstr "Fluorescent" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentN" +msgstr "Fluorescent" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentW" +msgstr "Fluorescent" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +#, fuzzy +msgid "WB_RGGBLevelsFlash" +msgstr "Niveau de noir" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +#, fuzzy +msgid "CameraInfo" +msgstr "Identifiant appareil photo" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +#, fuzzy +msgid "BatteryInfo" +msgstr "Identifiant appareil photo" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +#, fuzzy +msgid "AFInfo" +msgstr "Informations mise au point" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +#, fuzzy +msgid "ColorInfo" +msgstr "Couleur" + +#: src/pentaxmn.cpp:1405 +#, fuzzy +msgid "Unknown PentaxMakerNote tag" +msgstr "Marqueur de note du fabriquant Minolta inconnu" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +#, fuzzy +msgid "XMP Basic schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +#, fuzzy +msgid "XMP Media Management schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:116 +#, fuzzy +msgid "XMP Basic Job Ticket schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:117 +#, fuzzy +msgid "XMP Paged-Text schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:118 +#, fuzzy +msgid "XMP Dynamic Media schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Décompression Adobe" + +#: src/properties.cpp:121 +#, fuzzy +msgid "Adobe PDF schema" +msgstr "Décompression Adobe" + +#: src/properties.cpp:122 +#, fuzzy +msgid "Adobe photoshop schema" +msgstr "Décompression Adobe" + +#: src/properties.cpp:123 +#, fuzzy +msgid "Camera Raw schema" +msgstr "Marque de l'appareil" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +#, fuzzy +msgid "iView Media Pro schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Zone dynamique" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Décompression Adobe" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +#, fuzzy +msgid "Colorant structure" +msgstr "Température des couleurs" + +#: src/properties.cpp:149 +#, fuzzy +msgid "Dimensions structure" +msgstr "Structure des données de l'image" + +#: src/properties.cpp:150 +#, fuzzy +msgid "Font structure" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:151 +#, fuzzy +msgid "Thumbnail structure" +msgstr "Décalage aperçu" + +#: src/properties.cpp:152 +#, fuzzy +msgid "Resource Event structure" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:153 +#, fuzzy +msgid "ResourceRef structure" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:154 +#, fuzzy +msgid "Version structure" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Température des couleurs" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +#, fuzzy +msgid "Contributor" +msgstr "Continue" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +#, fuzzy +msgid "Coverage" +msgstr "Moyenne" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +#, fuzzy +msgid "Creator" +msgstr "Catégorie" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +#, fuzzy +msgid "Format" +msgstr "Format du fichier" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +#, fuzzy +msgid "Identifier" +msgstr "Identifiant ARM" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +#, fuzzy +msgid "Relation" +msgstr "Rotation" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +#, fuzzy +msgid "Rights" +msgstr "Droit" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +#, fuzzy +msgid "Type" +msgstr "type" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +#, fuzzy +msgid "Captions Author Names" +msgstr "Libellé du pays" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "mise à jour de l'horodatage" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Hauteur de l'image" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Réglage des données de l'objectif" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "Espace des couleurs" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Grande" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Frame panorama" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "Réglage flash" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +#, fuzzy +msgid "Advisory" +msgstr "Audio" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +#, fuzzy +msgid "Create Date" +msgstr "Date de publication" + +#: src/properties.cpp:224 +#, fuzzy +msgid "The date and time the resource was originally created." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:225 +#, fuzzy +msgid "Creator Tool" +msgstr "Catégorie" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +#, fuzzy +msgid "Label" +msgstr "Grande" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +#, fuzzy +msgid "Metadata Date" +msgstr "Date Minolta" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +#, fuzzy +msgid "Modify Date" +msgstr "Date Minolta" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +#, fuzzy +msgid "Nickname" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +#, fuzzy +msgid "Rating" +msgstr "Rotation" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +#, fuzzy +msgid "Thumbnails" +msgstr "Miniature" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +#, fuzzy +msgid "Marked" +msgstr "Dur" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +#, fuzzy +msgid "Owner" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +#, fuzzy +msgid "Web Statement" +msgstr "8-segments" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Mode contrôle" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +#, fuzzy +msgid "Document ID" +msgstr "Nom du document" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +#, fuzzy +msgid "History" +msgstr "Hauteur de l'image" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +#, fuzzy +msgid "Instance ID" +msgstr "Entrelacé" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +#, fuzzy +msgid "Managed From" +msgstr "Langue" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +#, fuzzy +msgid "Manager" +msgstr "Langue" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "Langue" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "Langue" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "Langue" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +#, fuzzy +msgid "Rendition Class" +msgstr "Paramètre de distorsion de l'objectif" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +#, fuzzy +msgid "Rendition Params" +msgstr "Paramètre de distorsion de l'objectif" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +#, fuzzy +msgid "Version ID" +msgstr "ID version GPS" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +#, fuzzy +msgid "Versions" +msgstr "Version" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +#, fuzzy +msgid "Rendition Of" +msgstr "Paramètre de distorsion de l'objectif" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +#, fuzzy +msgid "Save ID" +msgstr "Identifiant appareil photo" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +#, fuzzy +msgid "Job Reference" +msgstr "Date de référence" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +#, fuzzy +msgid "Maximum Page Size" +msgstr "Taille de l'image" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +#, fuzzy +msgid "Number of Pages" +msgstr "Le nombre F." + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +#, fuzzy +msgid "Fonts" +msgstr "Points AF" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +#, fuzzy +msgid "Colorants" +msgstr "Couleur" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +#, fuzzy +msgid "Project Reference" +msgstr "Date de référence" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +#, fuzzy +msgid "Video Frame Rate" +msgstr "Débit audio" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +#, fuzzy +msgid "Video Frame Size" +msgstr "Espace des couleurs" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +#, fuzzy +msgid "Video Pixel Depth" +msgstr "Ordre de remplissage" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +#, fuzzy +msgid "Video Color Space" +msgstr "Espace des couleurs" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +#, fuzzy +msgid "Video Alpha Mode" +msgstr "Modèle Minolta" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +#, fuzzy +msgid "Video Compressor" +msgstr "Compression" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "" + +#: src/properties.cpp:342 +#, fuzzy +msgid "Video Field Order" +msgstr "Ordre de remplissage" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +#, fuzzy +msgid "Pull Down" +msgstr "Bas" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +#, fuzzy +msgid "Audio Sample Rate" +msgstr "Débit audio" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +#, fuzzy +msgid "Audio Sample Type" +msgstr "Type audio" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +#, fuzzy +msgid "Audio Channel Type" +msgstr "Type audio" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +#, fuzzy +msgid "Audio Compressor" +msgstr "Compression" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "" + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Date Minolta" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +#, fuzzy +msgid "Tape Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +#, fuzzy +msgid "Alternative Tape Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +#, fuzzy +msgid "Start Time Code" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +#, fuzzy +msgid "Alternative Time code" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +#, fuzzy +msgid "Duration" +msgstr "Saturation" + +#: src/properties.cpp:357 +#, fuzzy +msgid "The duration of the media file." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:358 +#, fuzzy +msgid "Scene" +msgstr "centre" + +#: src/properties.cpp:358 +#, fuzzy +msgid "The name of the scene." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:359 +#, fuzzy +msgid "Shot Name" +msgstr "Libellé du pays" + +#: src/properties.cpp:359 +#, fuzzy +msgid "The name of the shot or take." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:360 +#, fuzzy +msgid "Shot Date" +msgstr "Date d'envoi" + +#: src/properties.cpp:360 +#, fuzzy +msgid "The date and time when the video was shot." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:361 +#, fuzzy +msgid "Shot Location" +msgstr "Lieu précis" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +#, fuzzy +msgid "Log Comment" +msgstr "Commentaire Windows" + +#: src/properties.cpp:363 +#, fuzzy +msgid "User's log comments." +msgstr "Commentaire de l'utilisateur" + +#: src/properties.cpp:364 +#, fuzzy +msgid "Markers" +msgstr "Dur" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +#, fuzzy +msgid "Contributed Media" +msgstr "Continue" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +#, fuzzy +msgid "Video Modified Date" +msgstr "Date Minolta" + +#: src/properties.cpp:368 +#, fuzzy +msgid "The date and time when the video was last modified." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:369 +#, fuzzy +msgid "Audio Modified Date" +msgstr "Débit audio" + +#: src/properties.cpp:369 +#, fuzzy +msgid "The date and time when the audio was last modified." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:370 +#, fuzzy +msgid "Metadata Modified Date" +msgstr "Date Minolta" + +#: src/properties.cpp:370 +#, fuzzy +msgid "The date and time when the metadata was last modified." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Artiste" + +#: src/properties.cpp:371 src/properties.cpp:1058 +#, fuzzy +msgid "The name of the artist or artists." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:372 src/properties.cpp:1054 +#, fuzzy +msgid "Album" +msgstr "Évaluatif" + +#: src/properties.cpp:372 src/properties.cpp:1054 +#, fuzzy +msgid "The name of the album." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:373 src/properties.cpp:1366 +#, fuzzy +msgid "Track Number" +msgstr "Numéro frame" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +#, fuzzy +msgid "Genre" +msgstr "Centré" + +#: src/properties.cpp:374 src/properties.cpp:1166 +#, fuzzy +msgid "The name of the genre." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:375 +#, fuzzy +msgid "The copyright information." +msgstr "Informations prise de vue" + +#: src/properties.cpp:376 +#, fuzzy +msgid "The date the title was released." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:377 src/properties.cpp:1086 +#, fuzzy +msgid "Composer" +msgstr "composant" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "" + +#: src/properties.cpp:378 src/properties.cpp:1143 +#, fuzzy +msgid "Engineer" +msgstr "centre" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "" + +#: src/properties.cpp:380 +#, fuzzy +msgid "Instrument" +msgstr "Heure Minolta" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "" + +#: src/properties.cpp:381 +#, fuzzy +msgid "Intro Time" +msgstr "Heure Minolta" + +#: src/properties.cpp:381 +#, fuzzy +msgid "The duration of lead time for queuing music." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +#, fuzzy +msgid "Relative Timestamp" +msgstr "mise à jour de l'horodatage" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +#, fuzzy +msgid "Loop" +msgstr "Faible réduction du gain" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +#, fuzzy +msgid "Number Of Beats" +msgstr "Le nombre F." + +#: src/properties.cpp:385 +#, fuzzy +msgid "The number of beats." +msgstr "Le nombre F." + +#: src/properties.cpp:386 +#, fuzzy +msgid "Key" +msgstr "Clef basse" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +#, fuzzy +msgid "Stretch Mode" +msgstr "Mode ajustement" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +#, fuzzy +msgid "Time Signature" +msgstr "Heure d'envoi" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +#, fuzzy +msgid "Scale Type" +msgstr "Type d'image" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +#, fuzzy +msgid "Camera Serial Number" +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:399 +#, fuzzy +msgid "Camera Serial Number." +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired" +msgstr "Date de création" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired." +msgstr "Date de création" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer" +msgstr "Constructeur" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer." +msgstr "Constructeur" + +#: src/properties.cpp:402 +#, fuzzy +msgid "Flash Model." +msgstr "Mode flash" + +#: src/properties.cpp:403 +#, fuzzy +msgid "Last Keyword IPTC" +msgstr "Mots-clés" + +#: src/properties.cpp:403 +#, fuzzy +msgid "Last Keyword IPTC." +msgstr "Mots-clés" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP" +msgstr "Mots-clés" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP." +msgstr "Mots-clés" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer" +msgstr "Constructeur" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer." +msgstr "Constructeur" + +#: src/properties.cpp:406 src/properties.cpp:1199 +#, fuzzy +msgid "Lens Model." +msgstr "Mode scène" + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent" +msgstr "Classement Windows (pourcentage)" + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent." +msgstr "Classement Windows (pourcentage)" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Infos image" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Mots-clés" + +#: src/properties.cpp:421 +#, fuzzy +msgid "PDF Version" +msgstr "Version du fichier" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "" + +#: src/properties.cpp:422 src/properties.cpp:1278 +#, fuzzy +msgid "Producer" +msgstr "Identifiant du produit" + +#: src/properties.cpp:422 +#, fuzzy +msgid "The name of the tool that created the PDF document." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:428 +#, fuzzy +msgid "Authors Position" +msgstr "Position mise au point" + +#: src/properties.cpp:428 +#, fuzzy +msgid "By-line title." +msgstr "Titre du créateur" + +#: src/properties.cpp:429 +#, fuzzy +msgid "Caption Writer" +msgstr "Légende" + +#: src/properties.cpp:429 +#, fuzzy +msgid "Writer/editor." +msgstr "Auteur de la Description" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +#, fuzzy +msgid "City." +msgstr "Ville" + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +#, fuzzy +msgid "Credit." +msgstr "Crédit" + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +#, fuzzy +msgid "Headline." +msgstr "Chapô" + +#: src/properties.cpp:439 +#, fuzzy +msgid "Special instructions." +msgstr "Instructions particulières" + +#: src/properties.cpp:440 src/properties.cpp:1306 +#, fuzzy +msgid "Source." +msgstr "Source" + +#: src/properties.cpp:441 +#, fuzzy +msgid "Province/state." +msgstr "État Région" + +#: src/properties.cpp:442 +#, fuzzy +msgid "Supplemental category." +msgstr "Catégorie Supplémentaire" + +#: src/properties.cpp:443 +#, fuzzy +msgid "Original transmission reference." +msgstr "Référence de la transmission" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +#, fuzzy +msgid "inches" +msgstr "Pouce" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +#, fuzzy +msgid "Auto Brightness" +msgstr "Luminosité" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +#, fuzzy +msgid "Auto Contrast" +msgstr "Contraste" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +#, fuzzy +msgid "Auto Exposure" +msgstr "Exposition" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +#, fuzzy +msgid "Auto Shadows" +msgstr "Ombragé" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +#, fuzzy +msgid "Blue Hue" +msgstr "Balance des bleus" + +#: src/properties.cpp:461 +#, fuzzy +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:462 +#, fuzzy +msgid "Blue Saturation" +msgstr "Saturation" + +#: src/properties.cpp:462 +#, fuzzy +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:463 +#, fuzzy +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Réglage de Netteté" + +#: src/properties.cpp:464 +#, fuzzy +msgid "Camera Profile" +msgstr "Profil couleur" + +#: src/properties.cpp:464 +#, fuzzy +msgid "\"Camera Profile\" setting." +msgstr "Réglage appareil photo" + +#: src/properties.cpp:465 +#, fuzzy +msgid "Chromatic Aberration Blue" +msgstr "Réglage de saturation chromatique" + +#: src/properties.cpp:465 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:466 +#, fuzzy +msgid "Chromatic Aberration Red" +msgstr "Réglage de saturation chromatique" + +#: src/properties.cpp:466 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "Color Noise Reduction" +msgstr "Réduction du bruit" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:468 +#, fuzzy +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +#, fuzzy +msgid "Crop Bottom" +msgstr "Bas" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +#, fuzzy +msgid "Crop Right" +msgstr "Droit d'auteur" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +#, fuzzy +msgid "Crop Angle" +msgstr "haut, gauche" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +#, fuzzy +msgid "Crop Units" +msgstr "Droit d'auteur" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +#, fuzzy +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Réglage de Netteté" + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Mode contrôle" + +#: src/properties.cpp:478 +#, fuzzy +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:479 +#, fuzzy +msgid "Green Saturation" +msgstr "Saturation" + +#: src/properties.cpp:479 +#, fuzzy +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:480 +#, fuzzy +msgid "Has Crop" +msgstr "Compensation Flash" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +#, fuzzy +msgid "Has Settings" +msgstr "Réglage flash" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +#, fuzzy +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:483 +#, fuzzy +msgid "Raw File Name" +msgstr "Nom du fichier" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "" + +#: src/properties.cpp:484 +#, fuzzy +msgid "Red Hue" +msgstr "tonalité" + +#: src/properties.cpp:484 +#, fuzzy +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:485 +#, fuzzy +msgid "Red Saturation" +msgstr "Saturation" + +#: src/properties.cpp:485 +#, fuzzy +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:486 +#, fuzzy +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:487 +#, fuzzy +msgid "Shadows" +msgstr "Ombragé" + +#: src/properties.cpp:487 +#, fuzzy +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Réglage de Netteté" + +#: src/properties.cpp:488 +#, fuzzy +msgid "Shadow Tint" +msgstr "Ombragé" + +#: src/properties.cpp:488 +#, fuzzy +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:489 src/properties.cpp:1301 +#, fuzzy +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Réglage de Netteté" + +#: src/properties.cpp:490 +#, fuzzy +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Réglage de saturation" + +#: src/properties.cpp:491 +#, fuzzy +msgid "Tint" +msgstr "Le fichier" + +#: src/properties.cpp:491 +#, fuzzy +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Réglage de saturation" + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Courbe de tonalité" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +#, fuzzy +msgid "Tone Curve Name" +msgstr "Courbe de tonalité" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +#, fuzzy +msgid "Vignette Amount" +msgstr "Point blanc" + +#: src/properties.cpp:496 +#, fuzzy +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:497 +#, fuzzy +msgid "Vignette Midpoint" +msgstr "Point blanc" + +#: src/properties.cpp:497 +#, fuzzy +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Réglage de saturation" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Hauteur de l'image" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +#, fuzzy +msgid "Bits Per Sample" +msgstr "Bits des échantillons" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Compression" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Interprétation photométrique" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +#, fuzzy +msgid "Samples Per Pixel" +msgstr "Échantillons par pixel" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Configuration planaire" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +#, fuzzy +msgid "YCbCr Sub Sampling" +msgstr "Sous échantillonage YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "Positionnement YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +#, fuzzy +msgid "X Resolution" +msgstr "Résolution X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +#, fuzzy +msgid "Y Resolution" +msgstr "Résolution Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Unité de résolution" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Fonction de transfert" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Point blanc" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Chromaticitées Primaire" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +#, fuzzy +msgid "Reference Black White" +msgstr "Noir/Blanc de Référence" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Date et heure" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Description de l'image" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +#, fuzzy +msgid "Make" +msgstr "Dur" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Version d'exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +#, fuzzy +msgid "Flashpix Version" +msgstr "Version FlashPix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +#, fuzzy +msgid "Components Configuration" +msgstr "Configuration image" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +#, fuzzy +msgid "Compressed Bits Per Pixel" +msgstr "Bits compressés par pixel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Commentaire de l'utilisateur" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +#, fuzzy +msgid "Date and Time Original" +msgstr "Date et heure (originel)" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +#, fuzzy +msgid "Date and Time Digitized" +msgstr "Date et heure (numérisé)" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +#, fuzzy +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Temps d'exposition, en secondes (sec)." + +#: src/properties.cpp:574 src/properties.cpp:1157 +#, fuzzy +msgid "F Number" +msgstr "Nombre F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Sensibilité spectrale" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "Vitesse en ISO" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +#, fuzzy +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:582 src/tags.cpp:828 +#, fuzzy +msgid "Brightness Value" +msgstr "Valeur de luminosité" + +#: src/properties.cpp:582 +#, fuzzy +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +#, fuzzy +msgid "Maximum Aperture Value" +msgstr "Valeur maximal d'ouverture" + +#: src/properties.cpp:584 +#, fuzzy +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:585 +#, fuzzy +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:586 +#, fuzzy +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:587 +#, fuzzy +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +#, fuzzy +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Aire du sujet" + +#: src/properties.cpp:590 +#, fuzzy +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Ce marqueur indique l'emplacement et l'aire du sujet principal dans la scène " +"générale." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Puissance flash" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +#, fuzzy +msgid "Focal Plane X Resolution" +msgstr "x-Résolution du plan focal" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +#, fuzzy +msgid "Focal Plane Y Resolution" +msgstr "x-Résolution du plan focal" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Unité de résolution du plan focal" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Emplacement du sujet" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +#, fuzzy +msgid "Exposure Index" +msgstr "Index d'exposition" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Méthode de capture numérique" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" + +#: src/properties.cpp:602 +#, fuzzy +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "Ce marqueur indique la distance au sujet." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Type de scène" + +#: src/properties.cpp:603 +#, fuzzy +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "Ce marqueur indique la distance au sujet." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "Motif CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Rendu personnalisé" + +#: src/properties.cpp:605 +#, fuzzy +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:606 +#, fuzzy +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:607 +#, fuzzy +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Rapport de zoom numérique" + +#: src/properties.cpp:608 +#, fuzzy +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Longueur focale dans un film de 35mm" + +#: src/properties.cpp:609 +#, fuzzy +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Ce marqueur indique la longueur focale équivalente en assumant un appareil " +"avec un film de 35mm, en mm. Une valeur de 0 indique que la longueur focale " +"est inconnue. Notez que ce marqueur est différent du marqueur ." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Type de scène photographiée" + +#: src/properties.cpp:612 +#, fuzzy +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Contrôle du gain" + +#: src/properties.cpp:613 +#, fuzzy +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "Ce marqueur indique le degré général d'ajustement du gain de l'image." + +#: src/properties.cpp:614 +#, fuzzy +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:615 +#, fuzzy +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:616 +#, fuzzy +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Description des paramètres du matériel" + +#: src/properties.cpp:617 +#, fuzzy +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Ce marqueur indique les informations sur les conditions lors de la prise de " +"vue pour un modèle particulier d'appareil. Ce marqueur n'est utilisé que " +"pour indiquer les paramètres de prise de vue au lecteur." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Échelle de distance au sujet" + +#: src/properties.cpp:618 +#, fuzzy +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Ce marqueur indique la distance au sujet." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "ID unique de l'image" + +#: src/properties.cpp:619 +#, fuzzy +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Ce marqueur indique un identificateur unique assigné à chaque image. Il est " +"enregistré sous la forme d'une chaîne ASCII équivalente à la notation " +"hexadécimale et d'une longueur fixe de 128 bits." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "ID version GPS" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Latitude GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Longitude GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "Référence d'altitude GPS" + +#: src/properties.cpp:625 src/properties.cpp:1168 +#, fuzzy +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "Altitude GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +#, fuzzy +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "Horodateur GPS" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Satellites GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Statut GPS" + +#: src/properties.cpp:634 +#, fuzzy +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "Mode de mesure GPS" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +#, fuzzy +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "Degrés de précision des données GPS" + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "Référence de vitesse de GPS" + +#: src/properties.cpp:637 +#, fuzzy +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "Vitesse GPS" + +#: src/properties.cpp:638 +#, fuzzy +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "Degrés de précision des données GPS" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS Track Reference" +msgstr "Référence de vitesse de GPS" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:640 src/tags.cpp:2013 +#, fuzzy +msgid "GPS Track" +msgstr "Référence de vitesse de GPS" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "Référence de direction de l'image GPS" + +#: src/properties.cpp:641 +#, fuzzy +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "Direction de l'image GPS" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "Statut GPS" + +#: src/properties.cpp:643 +#, fuzzy +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "Degrés de précision des données GPS" + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "Latitude de destination GPS" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "Longitude de destination GPS" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +#, fuzzy +msgid "GPS Destination Bearing Reference" +msgstr "Référence de latitude de destination GPS" + +#: src/properties.cpp:646 +#, fuzzy +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:647 src/tags.cpp:2056 +#, fuzzy +msgid "GPS Destination Bearing" +msgstr "Latitude de destination GPS" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "Référence de latitude de destination GPS" + +#: src/properties.cpp:648 +#, fuzzy +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "Distance à la destination GPS" + +#: src/properties.cpp:649 +#, fuzzy +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:650 src/tags.cpp:2067 +#, fuzzy +msgid "GPS Processing Method" +msgstr "Méthode de capture numérique" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +#, fuzzy +msgid "GPS Area Information" +msgstr "Information GPS" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +#, fuzzy +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +#, fuzzy +msgid "Contact Info-Address" +msgstr "État/Région" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +#, fuzzy +msgid "Contact Info-City" +msgstr "État/Région" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +#, fuzzy +msgid "Contact Info-State/Province" +msgstr "État/Région" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "État/Région" + +#: src/properties.cpp:671 +#, fuzzy +msgid "Contact Info-Postal Code" +msgstr "État/Région" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +#, fuzzy +msgid "Contact Info-Country" +msgstr "État/Région" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "État/Région" + +#: src/properties.cpp:673 +#, fuzzy +msgid "Contact Info-Email" +msgstr "État/Région" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "Informations prise de vue" + +#: src/properties.cpp:674 +#, fuzzy +msgid "Contact Info-Phone" +msgstr "État/Région" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Informations prise de vue" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Informations prise de vue" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +#, fuzzy +msgid "IPTC Scene" +msgstr "centre" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +#, fuzzy +msgid "IPTC Subject Code" +msgstr "Aire du sujet" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +#, fuzzy +msgid "Additional model info" +msgstr "informations de réglage appareil photo" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Modèle" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +#, fuzzy +msgid "Person shown" +msgstr "Version" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Stabilisation de l'image" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +#, fuzzy +msgid "Event" +msgstr "Soirée" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "Longueur focale maximum" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "Longueur focale maximum" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +#, fuzzy +msgid "Registry Entry-Item Identifier" +msgstr "Stabilisation de l'image" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +#, fuzzy +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "Code du pays" + +#: src/properties.cpp:711 +#, fuzzy +msgid "A location shown in the image." +msgstr "Décalage de l'aperçu" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Code du pays" + +#: src/properties.cpp:712 +#, fuzzy +msgid "The location the photo was taken." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:713 +#, fuzzy +msgid "Location-City" +msgstr "Lieu précis" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Name of the city of a location." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Code du pays" + +#: src/properties.cpp:714 +#, fuzzy +msgid "The ISO code of a country of a location." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "Nom du pays" + +#: src/properties.cpp:715 +#, fuzzy +msgid "The name of a country of a location." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "État Région" + +#: src/properties.cpp:716 +#, fuzzy +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "Lieu précis" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "Code du pays" + +#: src/properties.cpp:718 +#, fuzzy +msgid "The name of a world region of a location." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:719 +#, fuzzy +msgid "Artwork or object in the image" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +#, fuzzy +msgid "Artwork or object-Creator" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +#, fuzzy +msgid "Artwork or object-Date Created" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +#, fuzzy +msgid "Artwork or object-Source" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +#, fuzzy +msgid "Artwork or object-Source inventory number" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +#, fuzzy +msgid "Artwork or object-Title" +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "Identifiant appareil photo" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "Identifiant appareil photo" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "Identifiant appareil photo" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "Version du fichier" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +#, fuzzy +msgid "Licensee" +msgstr "Objectif" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "ID Objectif" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Nom du pays" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Name of each Licensee." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:746 +#, fuzzy +msgid "End User" +msgstr "Externe" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +#, fuzzy +msgid "End User ID" +msgstr "Externe" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:748 +#, fuzzy +msgid "Name of each End User." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Objectif" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "ID Objectif" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Nom du pays" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Name of each Licensor." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor Address" +msgstr "Température de l'objectif" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor street address." +msgstr "Libellé du pays" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Mexico Ville" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City name." +msgstr "Libellé du pays" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "État/Région" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "État/Région" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "Température de l'objectif" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code or Zip Code." +msgstr "État/Région" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Pays" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Libellé du pays" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1" +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1." +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone 1" +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone number 1." +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "Numéro de série de l'appareil photo" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "Nom du pays" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "Nom du pays" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Objectif" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "Température de l'objectif" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "Mode de mesure GPS" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Date Minolta" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Données de l'objectif" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:768 +#, fuzzy +msgid "Media Constraints" +msgstr "Contraste" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +#, fuzzy +msgid "Region Constraints" +msgstr "Contraste" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +#, fuzzy +msgid "Product or Service Constraints" +msgstr "Contraste" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "Réglage de qualité de l'image" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +#, fuzzy +msgid "Image Alteration Constraints" +msgstr "Réglage de qualité de l'image" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "Réglage de qualité de l'image" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Date de publication" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "Numéro modèle" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +#, fuzzy +msgid "Property Release Status" +msgstr "Date de publication" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +#, fuzzy +msgid "Property Release ID" +msgstr "Numéro modèle" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "Contraste" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "" + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "Non utilisé" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Other License Requirements" +msgstr "Objectif" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Additional license requirements." +msgstr "informations de réglage appareil photo" + +#: src/properties.cpp:783 +#, fuzzy +msgid "Terms and Conditions Text" +msgstr "Condition de prise de vue" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +#, fuzzy +msgid "Terms and Conditions URL" +msgstr "Condition de prise de vue" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "Condition de prise de vue" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Additional license conditions." +msgstr "informations de réglage appareil photo" + +#: src/properties.cpp:786 +#, fuzzy +msgid "Identifies the type of image delivered." +msgstr "Identifie le fournisseur et le produit" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "ID Objectif" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +#, fuzzy +msgid "Image File Format As Delivered" +msgstr "Réglage de qualité de l'image" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "Droit d'auteur" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Notice Droit d'auteur" + +#: src/properties.cpp:792 +#, fuzzy +msgid "Copyright Registration Number" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Date de numérisation" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "Droit d'auteur" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "Droit d'auteur" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Name of Copyright Owner." +msgstr "Droit d'auteur" + +#: src/properties.cpp:797 +#, fuzzy +msgid "Copyright Owner Image ID" +msgstr "Droit d'auteur" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "Orientation" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Creator/s of the image." +msgstr "Décalage de l'aperçu" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Orientation" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Type d'image" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "Comptage d'image" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "Orientation" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "ID unique de l'image" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Taille de l'image" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Name of Image Supplier." +msgstr "Comptage d'image" + +#: src/properties.cpp:804 +#, fuzzy +msgid "Image Supplier Image ID" +msgstr "ID unique de l'image" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "Effacer le comptage d'image" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "Effacer le comptage d'image" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Notes added by Licensee." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:807 +#, fuzzy +msgid "Other Image Info" +msgstr "Objectif" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "informations de réglage appareil photo" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "ID Objectif" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +#, fuzzy +msgid "Licensor Transaction ID" +msgstr "Date d'expiration" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +#, fuzzy +msgid "Licensee Transaction ID" +msgstr "Date d'expiration" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +#, fuzzy +msgid "Licensee Project Reference" +msgstr "Date de référence" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "Date d'expiration" + +#: src/properties.cpp:812 +#, fuzzy +msgid "The date of the License Transaction." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:813 +#, fuzzy +msgid "Reuse" +msgstr "utilisé" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +#, fuzzy +msgid "Other License Documents" +msgstr "Condition de prise de vue" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Objectif" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "informations de réglage appareil photo" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Personnel 1" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Personnel 1" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Personnel 1" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Personnel 1" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Personnel 1" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Personnel 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Personnel 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "Non utilisé" + +#: src/properties.cpp:839 +#, fuzzy +msgid "Protected" +msgstr "Identifiant du produit" + +#: src/properties.cpp:840 +#, fuzzy +msgid "Public Domain" +msgstr "Bas" + +#: src/properties.cpp:846 +#, fuzzy +msgid "Credit Adjacent To Image" +msgstr "Aperçu embarqué" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "Aperçu embarqué" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "Non défini" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "Solarisation" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "Solarisation" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +#, fuzzy +msgid "No Merging" +msgstr "Réduction du bruit" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "Réduction du bruit" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +#, fuzzy +msgid "No Duplication Constraints" +msgstr "Réglage de qualité de l'image" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "Durée audio" + +#: src/properties.cpp:871 +#, fuzzy +msgid "Maintain File Name" +msgstr "Nom du fichier" + +#: src/properties.cpp:872 +#, fuzzy +msgid "Maintain File Type" +msgstr "Nom du fichier" + +#: src/properties.cpp:873 +#, fuzzy +msgid "Maintain ID in File Name" +msgstr "Nom du fichier" + +#: src/properties.cpp:874 +#, fuzzy +msgid "Maintain Metadata" +msgstr "Date Minolta" + +#: src/properties.cpp:879 +#, fuzzy +msgid "Windows Bitmap (BMP)" +msgstr "Titre Windows" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +#, fuzzy +msgid "Graphics Interchange Format (GIF)" +msgstr "Format d'échange JPEG" + +#: src/properties.cpp:883 +#, fuzzy +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Format d'échange JPEG" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "" + +#: src/properties.cpp:904 +#, fuzzy +msgid "Illustrated Image" +msgstr "Hauteur de l'image" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Langue" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "Inconnu" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +#, fuzzy +msgid "Unlimited Model Releases" +msgstr "Numéro modèle" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Version du Modèle" + +#: src/properties.cpp:961 src/properties.cpp:970 +#, fuzzy +msgid "Status" +msgstr "Statut GPS" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Nombre d'intervalle" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Objectif" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "Version" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "Date et heure (originel)" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date the last region was created" +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "Nom du fichier" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Version" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Version" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "Zone mise au point" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Zone mise au point" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Pas du bracket" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "Version" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Mots-clés" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Structure des donnée Exif" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Panorama" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Date de publication" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Logiciel de traitement" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "type d'objet" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Date de numérisation" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Date d'envoi" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Mode d'exposition" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Largeur de l'image" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Hauteur de l'image" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Modèle de l'appareil" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Lieu précis" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "Loin" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Mots-clés" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Durée audio" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Durée audio" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Description de l'image" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Nom du fichier" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Réglage de Netteté" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Ordre de remplissage" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Informations prise de vue" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Ouverture maximale" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "Ouverture maximum à focal minimum" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "Ouverture maximum à focal minimum" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Compression" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Description des paramètres du matériel" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Configuration image" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Réglage mode contrôle" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Commentaire Windows" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Compression" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Compression" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "mots-clés Windows" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Compression" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Compression" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Compression" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Compression" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Marque de l'appareil" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Rapport de compression" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Date de publication" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "Bas" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "haut, gauche" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "Droit d'auteur" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "Crédit" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Profil couleur" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "Zone de données" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +#, fuzzy +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Date et heure (originel)" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Réduction du bruit" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Version" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Crédit" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Type de mise au point" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "Version d'enregistrement" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Version du Modèle" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Version d'enregistrement" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Version d'ARM" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "Débit audio" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Informations équipement" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Compensation d'exposition" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Programme d'exposition" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Temps d'exposition, en secondes (sec)." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "Description des paramètres du matériel" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description, usually found in ASF type files." +msgstr "Description des paramètres du matériel" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Le fichier" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Le fichier" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Longueur de l'aperçu" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Longueur de l'aperçu" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Nom du fichier" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Taille du fichier" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Taille du fichier" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Nouveau type de sous fichier" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Comptage d'image" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "Degrés de précision des données GPS" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "Horodatage de la donnée de clé" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Mode prise de vue" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Description de l'image" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Type d'image" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Constructeur" + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Nettoyage capteur" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "Réglage ajustement image" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "informations de réglage appareil photo" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "Texte" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Informations prise de vue" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "Objectif" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Informations prise de vue" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Données de l'objectif" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Langue" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Longueur focale" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Type d'objectif" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Luminosité" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Luminosité" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Informations prise de vue" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Objectif" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Informations équipement" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Marque de l'appareil" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Version des Notes du fabriquant" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Version des Notes du fabriquant" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "Note du fabriquant" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Constructeur" + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "La distance au sujet, donnée en mètres." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Valeur maximal d'ouverture" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Date Minolta" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Date de publication" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Durée audio" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Version du Modèle" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "Mode de mesure GPS" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Date Minolta" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Moyenne" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Date Minolta" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Date Minolta" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Mode de mesure" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Type d'image" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Version du fichier" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Informations équipement" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Nom du pays" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Version du Modèle" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "IFD suivant" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "Le nombre F." + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Total number of colours used" +msgstr "Numéro séquence (si en mode rafale)" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "Le nombre F." + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Le nombre F." + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Orientation" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Fête" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Fête" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Mots-clés" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Mots-clés" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Infos image" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Infos image" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Infos image" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Infos image" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Infos image" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Infos image" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Infos image" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Infos image" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Infos image" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Réglage de mode d'image" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Infos image" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Sélection" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Sélection" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Mode prise de vue" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "Informations prise de vue" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Temps d'exposition" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Date de référence" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Données de prévisualisation" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "Identifie le fournisseur et le produit" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Données de prévisualisation" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Données de prévisualisation" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Aperçu embarqué" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Identifiant du produit" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Mots-clés" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Ouverture" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Ouverture" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "Identifiant du produit" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "Identifiant du produit" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "Identifiant du produit" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Décalage d'enregistrement" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Décalage d'enregistrement" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Objectif" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Sélection" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Durée audio" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Saturation" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Version du microcode" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Légende" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "mots-clés Windows" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Mots-clés" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Crédit" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Crédit" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Source" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Source" + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Hauteur de l'image" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Largeur de l'image" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Lumière standard A" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Statut GPS" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Priorité obturation" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "Le nombre F." + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Libellé du pays" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Qualité de l'image" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "Qualité de l'image" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Débit audio" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Priorité obturation" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Bits des échantillons" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Type d'image" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Mode mise au point automatique" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Réglage de mode d'image" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Le fichier" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Mots-clés" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Mots-clés" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Langue" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Sujet" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Nom du propriétaire" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Réglage flash" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Langue" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Type d'image" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Longueur de l'aperçu" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Aperçu embarqué" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Hauteur de l'image" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Longueur de l'aperçu" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Aperçu embarqué" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Sous marin" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Décalage aperçu" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Heure d'envoi" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +#, fuzzy +msgid "Total Frame Count" +msgstr "Priorité obturation" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Le nombre F." + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "Référence de vitesse de GPS" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "Débit audio" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "Durée audio" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Numéro frame" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Version des Notes du fabriquant" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Langue" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "Débit audio" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Date Minolta" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Numéro frame" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Numéro frame" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Numéro frame" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Large" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Large" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Logiciel" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "ID Objectif" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Qualité" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "Débit audio" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Espace des couleurs" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Espace des couleurs" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Type d'image" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Table de balance des blancs" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Largeur de l'image" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Classement Windows" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Auteur de la Description" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Écriture au format" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Balance des rouges" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "Ce marqueur indique la distance au sujet." + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bits des échantillons" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bits des échantillons" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Compression" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Description de l'image" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Réglage mode de mise au point" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Durée audio" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Défaut" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Bracketing automatique" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Débit audio" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "Débit audio" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Débit audio" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "n'a été trouvé dans le fichier" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "n'a été trouvé dans le fichier" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Bracketing automatique" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Durée audio" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Bracketing automatique" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "Durée audio" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Type audio" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Débit audio" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "Débit audio" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "Débit audio" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Identifiant ARM" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Objectif" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Zone droite" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Droit" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Date de référence" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Identifiant du produit" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Instructions" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Sélection" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Mode résolution" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Formulaire de donné" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Code du pays" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Température de l'objectif" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +#, fuzzy +msgid "Occurrence" +msgstr "ID Objectif" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID Objectif" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Nombre d'intervalle" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +#, fuzzy +msgid "Occurrence Details" +msgstr "ID Objectif" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Numéro ordre" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Identifiant du produit" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "Qualité de l'image" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Définition de" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Identifiant du produit" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Saturation" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Position mise au point" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Nombre d'intervalle" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Version du Modèle" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Continue" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Date de référence" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "Séquence" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "Orientation" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Libellé du pays" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +#, fuzzy +msgid "Organism Associated Occurrences" +msgstr "Séquence" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +#, fuzzy +msgid "Associated Organisms" +msgstr "Date de référence" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +#, fuzzy +msgid "Organism Remarks" +msgstr "Index interopérabilité" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Bits des échantillons" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Soirée" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Bits des échantillons" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Soirée" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +#, fuzzy +msgid "Parent Event ID" +msgstr "Soirée" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Date de publication" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +#, fuzzy +msgid "Event Earliest Date" +msgstr "Date de publication" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Date de publication" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Profil couleur" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "mois" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Délai" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Date de publication" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Format du fichier" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "Débit audio" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +#, fuzzy +msgid "Sampling Size Unit" +msgstr "Format du fichier" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Nombre F" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Température de l'objectif" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Code du pays" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Lieu précis" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Continue" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "État/Région" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Pays" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Qualité" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Lieu précis" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Date Minolta" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Code du pays" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Code du pays" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "Latitude de destination GPS" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "Longitude de destination GPS" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "Latitude de destination GPS" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "Longitude GPS" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +#, fuzzy +msgid "Geodetic Datum" +msgstr "Degrés de précision des données GPS" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Date de référence" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Date de référence" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr " Service de référence" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Numéro de référence" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Informations prise de vue" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Nombre F" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Réduction yeux rouges" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Version du Modèle" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Version du Modèle" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Identifiant ARM" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identifiant ARM" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Référence de direction de l'image GPS" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Version du Modèle" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Version du Modèle" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Statut GPS" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Nom du fichier" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Nom du document" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Nom du propriétaire" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Nom du fichier" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Décalage d'enregistrement" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Augmentation électronique" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Ordre de remplissage" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Numéro frame" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Couleur naturelle" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Source du fichier" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Source du fichier" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Source du fichier" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "Mode de mesure GPS" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Index interopérabilité" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Date et heure" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Le type de source lumineuse." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +#, fuzzy +msgid "Notes" +msgstr "Température de l'objectif" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Catégorie" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Mode résolution" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Mode résolution" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Mode autofocus" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Mode autofocus" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Réglage mise au point" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Réglage mise au point" + +#: src/sigmamn.cpp:80 +#, fuzzy +msgid "Lens Range" +msgstr "Échelle de transfert" + +#: src/sigmamn.cpp:81 +#, fuzzy +msgid "Lens focal length range" +msgstr "Longueur focale minimale" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Ombragé" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Ensoleillé" + +#: src/sigmamn.cpp:104 +#, fuzzy +msgid "Fill Light" +msgstr "Droit d'auteur" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "justement couleurs" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Ajustement couleurs" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Mode ajustement" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Mode ajustement" + +#: src/sigmamn.cpp:122 +#, fuzzy +msgid "Auto Bracket" +msgstr "Bracketing automatique" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Bracketing automatique" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Marqueur de note du fabriquant Sigma inconnu" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-segments" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "Scène de nuit" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "Portrait de nuit" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Portrait" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "Obturation lente" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "Sensibilité spectrale" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panorama" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "Mode d'image" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Mise au point macro" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "Doux" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "ID unique de l'image" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "Continue" + +#: src/sonymn.cpp:190 +#, fuzzy +msgid "On (Shooting)" +msgstr "Mode de prise de vue" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "Fluorescent" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "Fluorescent" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "Lumière du jour fluorescent" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Incandescent" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Fluorescent" + +#: src/sonymn.cpp:221 +#, fuzzy +msgid "Underwater 1 (Blue Water)" +msgstr "Sous marin" + +#: src/sonymn.cpp:222 +#, fuzzy +msgid "Underwater 2 (Green Water)" +msgstr "Sous marin" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "Centre" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Spot" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +#, fuzzy +msgid "Touch AF" +msgstr "Balance des blancs en une touche" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "Mise au point manuel" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "Échec lors de la lecture" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "Mise au point auto" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "Mode rafale" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "Hauteur de l'image" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "Hauteur de l'image" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "Aperçu embarqué" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "Automatique" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "Informations prise de vue" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "Numéro modèle" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "Réduction du bruit" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +#, fuzzy +msgid "Dynamic Range Optimizer" +msgstr "Réglage gamme dynamique" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Date Minolta" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "Taille de l'image" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "Aperçu embarqué" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "Aperçu embarqué" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "Qualité" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Date de publication" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Numéro séquence (si en mode rafale)" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Anti flou" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "Réduction du bruit lors d'expositions longues" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +#, fuzzy +msgid "Intelligent Auto" +msgstr "Longueur intervalle" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "Marqueur de note du fabriquant Sony inconnu" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "Continue, Haute" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "Continue, basse" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "Optimisation d'image" + +#: src/sonymn.cpp:536 +#, fuzzy +msgid "Autumn" +msgstr "Automatique" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Auto (Flash)" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +#, fuzzy +msgid "Dynamic Range Optimizer Level" +msgstr "Réglage gamme dynamique" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Date de publication" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "Valeur de luminosité" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "Obturation rapide" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Réduction de bruit Iso élevé" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Type d'image" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Marqueur 1 réglage appareil photo Canon inconnu" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Marqueur 2 réglage appareil photo Canon inconnu" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Section inconnue" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Structure des données de l'image" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Décalage d'enregistrement" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Caractéristique des données de l'image" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Autre données" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Structure des donnée Exif" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Configuration image" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Information utilisateur" + +#: src/tags.cpp:197 +#, fuzzy +msgid "Related file" +msgstr "Heure de publication" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Date et heure" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Condition de prise de vue" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Information GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Information d'interopérabilité" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Information Spécifique au vendeur" + +#: src/tags.cpp:203 +#, fuzzy +msgid "Adobe DNG tags" +msgstr "Adobe RGB" + +#: src/tags.cpp:204 +#, fuzzy +msgid "Panasonic RAW tags" +msgstr "Marqueur de note du fabriquant Panasonic inconnu" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +#, fuzzy +msgid "Adobe OPI tags" +msgstr "Adobe RGB" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Dernière section" + +#: src/tags.cpp:224 +#, fuzzy +msgid "Primary image" +msgstr "Aperçu embarqué" + +#: src/tags.cpp:225 +#, fuzzy +msgid "Thumbnail/Preview image" +msgstr "Miniature" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "" + +#: src/tags.cpp:228 +#, fuzzy +msgid "Primary image, Transparency mask" +msgstr "Masque de transparence" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +#, fuzzy +msgid "Full-resolution image data" +msgstr "Impossible de lire les données de l'image" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "Pouce" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (ancienne version)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Décompression Adobe" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG Noir & Blanc" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Couleur" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +#, fuzzy +msgid "Epson ERF Compressed" +msgstr "compression NEF Nikon" + +#: src/tags.cpp:263 +#, fuzzy +msgid "Samsung SRW Compressed" +msgstr "compression NEF Nikon" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "" + +#: src/tags.cpp:269 +#, fuzzy +msgid "IT8 Monochrome Picture" +msgstr "Monochrome" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +#, fuzzy +msgid "Pixar Deflate" +msgstr "Décompression Adobe" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "compression NEF Nikon" + +#: src/tags.cpp:280 +#, fuzzy +msgid "Kodak DCR Compressed" +msgstr "compression NEF Nikon" + +#: src/tags.cpp:281 +#, fuzzy +msgid "Pentax PEF Compressed" +msgstr "compression NEF Nikon" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "Blanc est zéro" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "Noir est zéro" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Palette RGB" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Masque de transparence" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMJN" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Matrice de filtre de couleur" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "Processus normal" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "haut, gauche" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "haut, droit" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "bas, droit" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "bas, gauche" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "gauche, haut" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "droit, haut" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "droit, bas" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "gauche, bas" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +#, fuzzy +msgid "not CMYK" +msgstr "CMJN" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "Format de date non supporté" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "Non défini" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +msgid "B" +msgstr "" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Centré" + +#: src/tags.cpp:363 +#, fuzzy +msgid "Co-sited" +msgstr "Près" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Pas de flash" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Flash déclenché, mode auto, lumière de retour non détectée" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Flash déclenché, mode auto, lumière de retour détectée" + +#: src/tags.cpp:372 +#, fuzzy +msgid "Yes, did not fire" +msgstr "Le flash ne s'est pas déclenché." + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Flash déclenché, mode de flash obligatoire" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "" +"Flash déclenché, mode de flash obligatoire, lumière de retour non détectée" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Flash déclenché, mode de flash obligatoire, lumière de retour détectée" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Non, inhibé" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Flash déclenché, mode auto, lumière de retour non détectée" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Non, mode auto" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Flash déclenché, mode auto" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Flash déclenché, mode auto, lumière de retour non détectée" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Flash déclenché, mode auto, lumière de retour détectée" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Pas de fonction flash" + +#: src/tags.cpp:383 +#, fuzzy +msgid "No, no flash function" +msgstr "Pas de fonction flash" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Flash déclenché, mode anti-yeux rouges" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour non détectée" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour détectée" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Flash déclenché, mode de flash obligatoire, mode anti-yeux rouges" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Flash déclenché, mode de flash obligatoire, mode anti-yeux rouges, lumière " +"de retour non détectée" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" +"Flash déclenché, mode de flash obligatoire, mode anti-yeux rouges, lumière " +"de retour détectée" + +#: src/tags.cpp:390 +#, fuzzy +msgid "No, red-eye reduction" +msgstr "Flash déclenché, mode anti-yeux rouges" + +#: src/tags.cpp:391 +#, fuzzy +msgid "No, auto, red-eye reduction" +msgstr "Flash déclenché, mode anti-yeux rouges" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Flash déclenché, mode anti-yeux rouges" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour non détectée" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Flash déclenché, mode anti-yeux rouges, lumière de retour détectée" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Logiciel de traitement" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Nouveau type de sous fichier" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "" + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "Nouveau type de sous fichier" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Le nombre de colonnes des données de l'image, égal au nombre de pixels par " +"ligne. Dans des données compressées en JPEG un marqueur JPEG est utilisé à " +"la place de ce marqueur." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Le nombre de lignes des données de l'image. Dans des données compressées en " +"JPEG un marqueur JPEG est utilisé à la place de ce marqueur." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bits des échantillons" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Le nombre de bits par composant d'image. Dans ce standard chaque composant " +"de l'image fait 8 bits, donc la valeur de ce tag est 9. Voyez aussi " +". Dans des données compressées en JPEG un marqueur JPEG est " +"utilisé à la place de ce marqueur." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Le schéma de compression utilisé par les données de l'image. Quand une image " +"primaire est compressée en JPEG, cette désignation n'est pas nécessaire et " +"est omise. Lorsque les vignettes utilisent la compression JPEG, la valeur de " +"ce marqueur est de 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"La composition des pixels. Dans des données compressées en JPEG un marqueur " +"JPEG est utilisé à la place de ce marqueur." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "Droit d'auteur" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Longueur de l'aperçu" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Ordre de remplissage" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Nom du document" + +#: src/tags.cpp:460 +#, fuzzy +msgid "The name of the document from which this image was scanned" +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Une chaîne de caractères donnant le titre de l'image. Ce peut être un " +"commentaire comme \"pique-nique société 1988\" ou approchant. Les codes de " +"caractères sur deux octets ne peuvent être utilisés. Lorsqu'un code deux " +"octets est nécessaire, le marqueur privé exif doit être " +"utilisé." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Le constructeur de l'équipement d'enregistrement. C'est le constructeur du " +"DSC, scanner, enregistreur vidéo ou tout autre équipement ayant généré " +"l'image. Quand ce champ est vide, il est traité en tant qu'inconnu." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Le nom du modèle ou le numéro du modèle de l'équipement. C'est le nom du " +"modèle ou le numéro du DSC, scanner, enregistreur vidéo ou tout autre " +"équipement ayant généré l'image. Quand ce champ est vide, il est traité en " +"tant qu'inconnu." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "L'orientation de l'image vue en terme de lignes et colonnes." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Échantillons par pixel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Le nombre de composants par pixel. Puisque le standard s'applique aux images " +"RGB et YCbCr, la valeur de ce marqueur est 3. Dans des données compressées " +"en JPEG un marqueur JPEG est utilisé à la place de ce marqueur." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" + +#: src/tags.cpp:502 +#, fuzzy +msgid "Strip Byte Count" +msgstr "Priorité obturation" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Résolution X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Le nombre de pixels par dans la direction ." +"Lorsque la résolution de l'image est inconnu, 72 [dpi] sont utilisés." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Résolution Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Le nombre de pixels par dans la direction .La " +"même valeur que pour est utilisée." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "AF Points" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +#, fuzzy +msgid "Gray Response Curve" +msgstr "Courbe de tonalité" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "Оption" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "Оption" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"L'unité de mesure pour et . La même unité est " +"utilisée pour et . Si la résolution de l'image " +"est inconnue, 2 (pouces) sont utilisées." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Numéro d'image" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Une fonction de transfert pour l'image, décrite en style tableau. " +"Normalement, ce marqueur n'est pas nécessaire, puisque l'espace des couleurs " +"est spécifié dans le marqueur d'information sur l'espace des couleurs " +"()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Ce marqueur enregistre le nom et la version du logiciel ou du matériel de " +"l'appareil ou du périphérique d'entrée utilisé pour générer l'image. Le " +"format détaillé n'est pas spécifié, mais il est recommandé que l'exemple ci-" +"dessous soit suivi. Lorsque le champ est vide, il est traité comme inconnu." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"La date et l'heure de création de l'image. Dans ce standard, il s'agit de la " +"date et de l'heure de modification du fichier." + +#: src/tags.cpp:557 +#, fuzzy +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Ce marqueur enregistre le nom du propriétaire de l'appareil, du photographe " +"ou du créateur de l'image. Le format détaillé n'est pas spécifié, mais il " +"est recommandé que cette information soit écrite comme dans l'exemple ci-" +"dessous pour faciliter l'interopérabilité. Lorsque le champ est laissé " +"blanc, il est considéré comme inconnu." + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +#, fuzzy +msgid "Predictor" +msgstr "Crédit" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"La chromaticité du point blanc de l'image. Normalement, ce marqueur n'est " +"pas nécessaire, puisque l'espace des couleurs est spécifié dans le marqueur " +"d'information sur l'espace des couleurs ()." + +#: src/tags.cpp:578 +#, fuzzy +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"La chromaticité du point blanc de l'image. Normalement, ce marqueur n'est " +"pas nécessaire, puisque l'espace des couleurs est spécifié dans le marqueur " +"d'information sur l'espace des couleurs ()." + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +#, fuzzy +msgid "Tile Width" +msgstr "Largeur de l'image" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "Longueur de l'aperçu" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +#, fuzzy +msgid "Tile Offsets" +msgstr "Décalage aperçu" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +#, fuzzy +msgid "Tile Byte Counts" +msgstr "Priorité obturation" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +#, fuzzy +msgid "SubIFD Offsets" +msgstr "Décalage aperçu" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +#, fuzzy +msgid "Ink Set" +msgstr "Définition de" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Nom du propriétaire" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "Le nombre F." + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Gamme dynamique" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "Ouverture cible" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "Bits des échantillons" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Format du fichier" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "Débit audio" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "Valeur maximal d'ouverture" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Échelle de transfert" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "Processus JPEG" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "Processus JPEG" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "Format d'échange JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "Longueur du format d'échange JPEG" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"Le nombre d'octets de données des vignettes compressées JPEG. Ce n'est pas " +"utilisé pour les données des images JPEG primaires. Les vignettes JPEG ne " +"sont pas divisées mais sont enregistrées sous la forme d'un flux continu " +"JPEG de SOI à EOI. Les marqueurs Appn et COM ne doivent pas être " +"enregistrés. Les vignettes compressées doivent être enregistrées dans moins " +"de 64 kilo-octets, incluant toutes les autres données devant être " +"enregistrées dans APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +#, fuzzy +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "Processus JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +#, fuzzy +msgid "JPEG DC-Tables" +msgstr "Processus JPEG" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +#, fuzzy +msgid "JPEG AC-Tables" +msgstr "Processus JPEG" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +#, fuzzy +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"La valeur de référence des points noir et blanc. Nul défaut n'est donné en " +"TIFF, mais les valeurs ci-dessous sont données comme défauts ici. L'espace " +"des couleurs est déclaré dans le marqueur d'informations de l'espace des " +"couleurs, avec la valeur par défaut étant celle donnant les caractéristiques " +"optimales de l'image dans ces conditions." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "Sous échantillonage YCbCr" + +#: src/tags.cpp:716 +#, fuzzy +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"La composition des pixels. Dans des données compressées en JPEG un marqueur " +"JPEG est utilisé à la place de ce marqueur." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Noir/Blanc de Référence" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"La valeur de référence des points noir et blanc. Nul défaut n'est donné en " +"TIFF, mais les valeurs ci-dessous sont données comme défauts ici. L'espace " +"des couleurs est déclaré dans le marqueur d'informations de l'espace des " +"couleurs, avec la valeur par défaut étant celle donnant les caractéristiques " +"optimales de l'image dans ces conditions." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "Paquets XML" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Métadonnées XMP (Adobe technote 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Classement Windows" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Classement Windows (pourcentage)" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "ID unique de l'image" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "Dimension motif CFA" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "Temps d'exposition, en secondes (sec)." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "Le nombre F." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +#, fuzzy +msgid "Inter Color Profile" +msgstr "Profil couleur" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"La classe du programme utilisé par l'appareil pour configurer l'exposition " +"lorsque la photo a été prise." + +#: src/tags.cpp:807 +#, fuzzy +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "Vitesse en ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Entrelacé" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "" + +#: src/tags.cpp:816 +#, fuzzy +msgid "Time Zone Offset" +msgstr "Décalage aperçu" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "Retardateur" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Date et heure (originel)" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "Vitesse d'obturation" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Ouverture maximale" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "Le nombre F." + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Correction d'exposition" + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Valeur maximal d'ouverture" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "Le type de source lumineuse." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "La distance au sujet, donnée en mètres." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Le mode de mesure." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Le type de source lumineuse." + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +#, fuzzy +msgid "Noise" +msgstr "Aucun" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Le nombre de pixels par dans la direction .La " +"même valeur que pour est utilisée." + +#: src/tags.cpp:840 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Le nombre de pixels par dans la direction .La " +"même valeur que pour est utilisée." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "Augmentation électronique" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security classification assigned to the image." +msgstr "Augmentation électronique" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +#, fuzzy +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" +"Ce marqueur indique l'emplacement et l'aire du sujet principal dans la scène " +"générale." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +#, fuzzy +msgid "TIFF/EP Standard ID" +msgstr "F0/Standard" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +#, fuzzy +msgid "Type of image sensor." +msgstr "Comptage d'image" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Titre Windows" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Commentaire Windows" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Auteur Windows" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "mots-clés Windows" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Sujet Windows" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "Version du fichier" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +#, fuzzy +msgid "DNG backward version" +msgstr "Version de microcode" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +#, fuzzy +msgid "Unique Camera Model" +msgstr "Modèle de l'appareil" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +#, fuzzy +msgid "Localized Camera Model" +msgstr "Modèle de l'appareil" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +#, fuzzy +msgid "CFA Plane Color" +msgstr "Couleur FinePix" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "Niveau de noir" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +#, fuzzy +msgid "Black Level Delta H" +msgstr "Niveau de noir" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +#, fuzzy +msgid "Black Level Delta V" +msgstr "Niveau de noir" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +#, fuzzy +msgid "White Level" +msgstr "Niveau de charge" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "Défaut" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Défaut" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +#, fuzzy +msgid "Color Matrix 1" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +#, fuzzy +msgid "Color Matrix 2" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +#, fuzzy +msgid "Camera Calibration 1" +msgstr "Réglage appareil photo (Z1)" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +#, fuzzy +msgid "Camera Calibration 2" +msgstr "Réglage appareil photo (Z1)" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +#, fuzzy +msgid "Reduction Matrix 1" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +#, fuzzy +msgid "Reduction Matrix 2" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +#, fuzzy +msgid "Analog Balance" +msgstr "Balance des bleus" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "Neutre" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "Exposition" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +#, fuzzy +msgid "Baseline Noise" +msgstr "Exposition" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Netteté" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +#, fuzzy +msgid "Lens Info" +msgstr "Objectif" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "Puissance Flash" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "Ombragé" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +#, fuzzy +msgid "DNG Private Data" +msgstr "Données de prévisualisation" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "Note du fabriquant" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "Réduction du bruit" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "Défaut" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +#, fuzzy +msgid "Raw Data Unique ID" +msgstr "ID unique de l'image" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +#, fuzzy +msgid "Original Raw File Name" +msgstr "Nom du fichier" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +#, fuzzy +msgid "Original Raw File Data" +msgstr "Nom du fichier" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +#, fuzzy +msgid "Active Area" +msgstr "Aire du sujet" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +#, fuzzy +msgid "Masked Areas" +msgstr "Dur" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "Profil couleur" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +#, fuzzy +msgid "Current ICC Profile" +msgstr "Profil couleur" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +#, fuzzy +msgid "Current Pre-Profile Matrix" +msgstr "Profil couleur" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Date de référence" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "Réglage appareil photo (Z1)" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +#, fuzzy +msgid "Profile Calibration Signature" +msgstr "Réduction du bruit" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Profil couleur" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Réduction du bruit" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Nom du propriétaire" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Courbe de tonalité" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Droit d'auteur" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Matrice des couleurs" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Données de prévisualisation" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Version de prévisualisation" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Aperçu embarqué" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Description des paramètres du matériel" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Espace des couleurs" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Données de prévisualisation" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Comptage d'image" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +#, fuzzy +msgid "Original Raw File Digest" +msgstr "Nom du fichier" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Filtre couleur" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Marqueur IFD inconnu" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Non défini" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Programme Créatif" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Programme Action" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Mode portrait" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Mode paysage" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Multi-spots" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Tungstène (lampe à incandescence)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Ensoleillé" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Nuageux" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Lumière du jour fluorescent (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Blanc chaud fluorescent (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Blanc froid fluorescent (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Blanc fluorescent (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Lumière standard A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Lumière standard B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Lumière standard C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D55" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "Lampe de studio tungstène ISO" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Autre source lumineuse" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Non calibré" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "Mono-CCD" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "Bi-CCD" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "Tri-CCD" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "CCD séquentiel" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Capteur trilinéaire" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Capteur séquentiel linéaire" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Numériseur de film" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "Numériseur de documents imprimés" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Appareil photo numérique" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Photographié directement" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Processus normal" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Processus personnel" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Faible augmentation du gain" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Forte augmentation du gain" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Faible réduction du gain" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Forte réduction du gain" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Gros plan" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Plan large" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Temps d'exposition, en secondes (sec)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "Fonction de conversion opto-electrique" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "Sensibilité spectrale" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Sensibilité spectrale" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Index d'exposition" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "Mode vitesse ISO" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "Mode vitesse ISO" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Date et heure (originel)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"La date et l'heure de création de l'image originale. Pour un appareil photo " +"numérique il s'agit de la date et heure à laquelle la photo a été prise." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Date et heure (numérisé)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "La date et l'heure où l'image a été sauvée sous forme digitale." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Bits compressés par pixel" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Ouverture de l'objectif. L'unité est la valeur APEX." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Correction d'exposition" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Ce marqueur indique l'emplacement et l'aire du sujet principal dans la scène " +"générale." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Note du fabriquant" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Un marqueur pour les constructeurs des logiciels d'écriture Exif pour noter " +"une information désirée. Le contenu dépend du constructeur." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +#, fuzzy +msgid "Sub-seconds Time" +msgstr "Date et heure (originel)" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" +"Marqueur utilisé pour enregistrer des fractions de secondes pour le marqueur " +"." + +#: src/tags.cpp:1682 +#, fuzzy +msgid "Sub-seconds Time Original" +msgstr "Date et heure (originel)" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Marqueur utilisé pour enregistrer des fractions de secondes pour le marqueur " +"." + +#: src/tags.cpp:1685 +#, fuzzy +msgid "Sub-seconds Time Digitized" +msgstr "Date et heure (numérique)" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Marqueur utilisé pour enregistrer des fractions de secondes pour le marqueur " +"." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "Version FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "Pointeur IDF interopérabilité" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "x-Résolution du plan focal" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"Indique le nombre de pixels de largeur (X) de l'image par " +" sur le plan focal de l'appareil." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "x-Résolution du plan focal" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Indique le nombre de pixels de hauteur (Y) de l'image par " +" sur le plan focal de l'appareil." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"Indique l'unité de mesure de et de " +". Cette valeur est la même que ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Index d'exposition" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Indique la source de l'image. Si un DSC a enregistré l'image, la valeur de " +"ce marqueur doit toujours être de 3, indiquant que l'image a été directement " +"photographiée." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Indique le type de scène. Si un DSC a enregistré l'image, la valeur de ce " +"marqueur doit toujours être de 1, indiquant que l'image a été directement " +"photographiée." + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Matrice de filtre de couleur" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Ce marqueur indique la valeur du zoom numérique lorsque l'image a été prise." +"Si le numérateur de la valeur enregistrée est 0, cela signifie que le zoom " +"numérique n'a pas été utilisé." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Ce marqueur indique la longueur focale équivalente en assumant un appareil " +"avec un film de 35mm, en mm. Une valeur de 0 indique que la longueur focale " +"est inconnue. Notez que ce marqueur est différent du marqueur ." + +#: src/tags.cpp:1807 +#, fuzzy +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Ce marqueur indique la longueur focale équivalente en assumant un appareil " +"avec un film de 35mm, en mm. Une valeur de 0 indique que la longueur focale " +"est inconnue. Notez que ce marqueur est différent du marqueur ." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Ce marqueur indique le degré général d'ajustement du gain de l'image." + +#: src/tags.cpp:1815 +#, fuzzy +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:1819 +#, fuzzy +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:1823 +#, fuzzy +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Ce marqueur indique les informations sur les conditions lors de la prise de " +"vue pour un modèle particulier d'appareil. Ce marqueur n'est utilisé que " +"pour indiquer les paramètres de prise de vue au lecteur." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Ce marqueur indique la distance au sujet." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Ce marqueur indique un identificateur unique assigné à chaque image. Il est " +"enregistré sous la forme d'une chaîne ASCII équivalente à la notation " +"hexadécimale et d'une longueur fixe de 128 bits." + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Nom du propriétaire" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Numéro de série" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Information Spécifique au vendeur" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Mode scène" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Marqueur Exif inconnue" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Nord" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Sud" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Est" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Ouest" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Au dessus du niveau de la mer" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "En dessous du niveau de la mer" + +#: src/tags.cpp:1896 +#, fuzzy +msgid "Measurement in progress" +msgstr "Index interopérabilité" + +#: src/tags.cpp:1897 +#, fuzzy +msgid "Measurement Interoperability" +msgstr "Index interopérabilité" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "Km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "Noeuds" + +#: src/tags.cpp:1915 +#, fuzzy +msgid "True direction" +msgstr "Direction panorama" + +#: src/tags.cpp:1916 +#, fuzzy +msgid "Magnetic direction" +msgstr "Direction de l'image GPS" + +#: src/tags.cpp:1921 +#, fuzzy +msgid "Kilometers" +msgstr "Filtre" + +#: src/tags.cpp:1922 +#, fuzzy +msgid "Miles" +msgstr "Le fichier" + +#: src/tags.cpp:1923 +#, fuzzy +msgid "Knots" +msgstr "Noeuds" + +#: src/tags.cpp:1928 +#, fuzzy +msgid "Without correction" +msgstr "Lieu précis" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "Référence de latitude GPS" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "Référence de longitude GPS" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "Degrés de précision des données GPS" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "" + +#: src/tags.cpp:2009 +#, fuzzy +msgid "GPS Track Ref" +msgstr "Référence de vitesse de GPS" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Référence de latitude de destination GPS" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "Référence de longitude de destination GPS" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +#, fuzzy +msgid "Indicates the distance to the destination point." +msgstr "Ce marqueur indique la distance au sujet." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "Horodatage GPS" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +#, fuzzy +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" +"Ce marqueur indique le mode de balance des blancs positionné lorsque l'image " +"a été enregistrée." + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Marqueur GPSInfo inconnu" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Index interopérabilité" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Indique l'identification de la règle d'interopérabilité. Utilisez \"R98\" " +"pour préciser des règles ExifR98. Quatre octets sont utilisés, incluant le " +"code de terminaison (NULL). Voyez le volume séparé des règles " +"d'interopérabilité recommandées pour exif (ExifR98) pour les autres " +"marqueurs utilisés pour ExifR98." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Version interopérabilité" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Version interopérabilité" + +#: src/tags.cpp:2106 +#, fuzzy +msgid "Related Image File Format" +msgstr "Hauteur de l'image" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Format du fichier image" + +#: src/tags.cpp:2109 +#, fuzzy +msgid "Related Image Width" +msgstr "Hauteur de l'image" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Longueur de l'image" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Marqueur Interopérabilité Exif inconnu" + +#: src/tags.cpp:2128 +#, fuzzy +msgid "Offset" +msgstr "décalage" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +#, fuzzy +msgid "Byte Order" +msgstr "Ordre de remplissage" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Marqueur 2 de note du fabriquant Nikon inconnu" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Marqueur inconnu" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Zoom numérique non utilisé" + +#: src/tiffimage.cpp:2308 +#, fuzzy +msgid "TIFF header, offset" +msgstr "En-tête, décalage" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "encodage petit-boutiste" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "encodage gros-boutiste" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "octets" diff --git a/vendor/exiv2-0.25/po/gl.po b/vendor/exiv2-0.25/po/gl.po new file mode 100644 index 0000000..4ac8877 --- /dev/null +++ b/vendor/exiv2-0.25/po/gl.po @@ -0,0 +1,26992 @@ +# Galician translation for exiv2 +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the exiv2 package. +# +# Xosé , 2014. +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2014-12-19 21:59+0000\n" +"Last-Translator: Fran Fondo \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 22:57+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Produciuse un fallo ao abrir o ficheiro\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Nome do ficheiro" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Tamaño do ficheiro" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Bytes" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Tipo MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Tamaño da imaxe" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Non se atoparon datos EXIF no ficheiro\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Marca da cámara" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Modelo de cámara" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Data da imaxe" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Número da imaxe" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Tempo de exposición" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Abertura" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Compensación da exposición" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Flash" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Compensación do flash" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Distancia focal" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "equivalente a 35mm" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Distancia ao suxeito" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Velocidade ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Modo de exposición" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Modo de medida" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Modo de macro" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Calidade da imaxe" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Resolución Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Balance de brancos" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Miniatura" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Nada" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Copyright" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Comentario Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(Valor binario suprimido)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Comentario JPEG" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Vista previa" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "píxeles" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "bytes" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Ningunha das etiquetas" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "normal" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "atopado no ficheiro" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Non se registrou o momento de creación da imaxe" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Produciuse un fallo ao analizar a data e a hora" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "no ficheiro" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Actualizando data e hora a" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Borrando datos de vista en miniatura" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Borrando os datos Exif do ficheiro" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Borrando os metadatos IPTC do ficheiro" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Borrando os comentarios JPEG do ficheiro" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Borrando os metadatos XMP do ficheiro" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "A imaxe non conten unha miniatura Exif\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Escribindo a vista en miniatura" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "no ficheiro" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Os datos Exif non conteñen unha miniatura\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "A imaxe non ten vista previa" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Escribiendo a vista previa" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Configurar comentario JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Engadir" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Aviso" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Produciuse un fallo de lectura" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "valor" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Estabelecer" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Eliminar" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Metadatos de data e hora con chave" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "non estabelecido\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Axustando" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "por" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "anos" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "ano" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "meses" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "mes" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "días" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "día" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "seg." + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Non é posíbel axustar a data e a hora" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "a" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "A etiqueta ISO Exif estándar xa existe; non se modifica\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Estabelecendo o valor Exif ISO a" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Non se atoparon comentarios Exif do usuario" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Comentario Exif do usuario cun tipo de valor inesperado" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Non se atopa o comentario Exif UNICODE do usuario" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "Configurar o comentario Exif UNICODE do usuario a" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Escribindo datos Exif desde" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Escribindo datos IPTC desde" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Escribindo datos XMP desde" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Escribindo comentario JPEG desde" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Non foi posíbel escribir os metadatos no ficheiro" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Nome de ficheiro perdido por un problema de formato." + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "O nome do ficheiro xa é o correcto" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Ficheiro" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "xa existe. S[o]brescribir, [r]enomear ou [s]omitir?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Renome o ficheiro a" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "actualizando a data e a hora" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Produciuse un fallo ao renomear" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Sobrescrebir" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Apagado" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Acendido" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Formato 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Formato 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "Acendido (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "Acendido (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "RGB de Adobe" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Descoñecido" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Opcións da cámara" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Axustes varias da cámara" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Distancia focal" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Información de disparo" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Información de disparo" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Tipo de imaxe" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Tipo de imaxe" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Versión do firmware" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Versión do firmware" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Número de ficheiro" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Número de ficheiro" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Nome do propietario" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Número de serie" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Número de serie da cámara" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "Información da cámara" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "Información da cámara" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Funcións personalizadas" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "ID do modelo" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "ID do modelo" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Información da imaxe" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Información da imaxe" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "Ãrea válida da imaxe na miniatura" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "Ãrea válida da imaxe na miniatura" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "Formato do número de serie" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "Formato do número de serie" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Super macro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Super macro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "Información do AF" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "Información do AF" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "Desprazamento dos datos orixinais de decisión" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "Desprazamento dos datos orixinais de decisión" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Táboa de balance de brancos" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Táboa de balance de brancos" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Modelo das lentes" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "Modelo das lentes" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Número de serie interno" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Número de serie interno" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Datos de retirada de pó" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "Datos de retirada de pó" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "Funcións personalizadas" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "Información do procesado" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "Información do procesado" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "Cor medido" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "Cor medido" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "Espazo de cor" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "Desprazamento VRD" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "Desprazamento VRD" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "Información do sensor" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "Información do sensor" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "Datos de cor" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "Datos de cor" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Etiqueta CanonMakerNote descoñecida" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Económico" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normal" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Fino" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "En bruto (RAW)" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Superfino" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Filme normal" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Filme" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Automático" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Ollos vermellos" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Sincronización lenta" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Auto + ollos vermellos" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "Acendido + ollos vermellos" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Externa" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Único / temporizador" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Continuo" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Filme" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Continuo, prioridade da velocidade" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Continuo, baixo" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Continuo, alto" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Un disparo AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "Servo do AF de IA" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "Exposición automática" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Enfoque manual" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Sinxelo" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Enfoque panorámico" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Grande" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Medio" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Pequeno" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Medio 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Medio 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Medio 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Totalmente automático" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manual" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Paisaxe" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Obturador rápido" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Obturador lento" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Escena nocturna" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Escala de grises" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Retrato" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Deportes" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Macro / acercamento" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Branco e negro" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Vívido" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutro" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Flash inactivo" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Obturador longo" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Follaxe" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Interior" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Fogos de artificio" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Praia" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Submarina" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Neve" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Nenos e mascotas" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Instantánea nocturna" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Macro dixital" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "As miñas cores" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Imaxe estática" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Outros" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Baixa" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Alta" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/d" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Altura automática" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Predeterminado" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Punto" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Promedio" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Avaliativo" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Parcial" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Peso centrado" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Descoñecido" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Macro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Moi perto" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Pechar" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Rango medio" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Rango lonxano" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Infinita" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Punto de selección manual do AF" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Ningún (Enfoque manual)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Autoseleccionado" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Dereita" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Centro" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Esquerda" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Seleción automática do punto de AF" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Disparo sinxelo (Auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Programa (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Prioridade do obturador (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Prioridade da abertura (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manual (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-PROF" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-PROF" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Non disparou." + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Disparado" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Flash externo" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Flash interno" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "Medición a través de la Lente (TTL)" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "Sincronización FP activada" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Usada a sincronía de segunda-cortina" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "Usado o modo de sincronización FP" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "EA Normal" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Compensación da exposición" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "Bloqueo da Exposición Automática" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "EA bloqueada + compensación da exposición" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Sen EA" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "Acendido, só disparo" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Punto de AF" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Suavizado" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "B/N" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Personalizada" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Os meus datos de cor" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Completa" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "sRAW1 (mRAW)" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "sRAW2 (sRAW)" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Temporizador" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Temporizador" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Calidade" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Modo do flash" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Ajuste do modo de flash" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Modo do controlador" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Configuración do modo de axuste" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Modo de enfoque" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Ajuste do modo de enfoque" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Tamaño da imaxe" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Modo sinxelo" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Modo de disparo sinxelo" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Zoom dixital" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Zoom dixital" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Contraste" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Axuste do contraste" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Saturación" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Axuste de saturación" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Nitidez" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Axuste de nitidez" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Modo de velocidade ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Axuste de velocidade ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Modo de medición" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Axuste do modo de medición" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Tipo de foco" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Axuste do tipo de foco" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Punto de AF seleccionado" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Programa de exposición" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Axuste do modo de exposición" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Tipo de lentes" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Tipo de lentes" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Lentes" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"Lonxitude focal «longa» e «curta» (en «unidades focais») e «unidades focais " +"por mm»" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Enfoque curto" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Enfoque curto" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "Unidades de foco" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "Unidades de foco" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Abertura máxima" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Abertura máxima" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Abertura mínima" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Abertura mínima" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Actividade do flash" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Actividade do flash" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Detalles do flash" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Detalles do flash" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Foco contínuo" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Axuste de foco contínuo" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Configuración EA" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Configuración EA" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Estabilización da imaxe" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Estabilización da imaxe" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Abertura do visor" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Abertura do visor" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Amplitude da orixe do zomm" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "Amplitude da orixe do zoom" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "Amplitude do zoom do obxectivo" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "Amplitude do zoom do obxectivo" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "Modo de medición de punto" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "Modo de medición de punto" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Efecto foto" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Efecto foto" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "Saída de flash manual" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "Saída de flash manual" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Ton da cor" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Ton da cor" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "Calidade do ton SRAW" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "calidade SRAW" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Configuración descoñecida da cámara Canon etiqueta 1" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Luz diúrna" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Anubrado" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Tungsteno" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Fluorescente" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Branco e negro" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Sombra" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Temperatura manual (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "Axuste PC 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "Axuste PC 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "Axuste PC 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Fluorescente de luz de día" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Personalizada 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Personalizada 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Personalizada 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "Axuste PC 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "Axuste PC 5" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "GN (prioridade da distancia)" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "esquerda" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "centro" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "dereita" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Velocidade ISO usada" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Velocidade ISO usada" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "Medida EV" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Abertura do obxectivo" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Velocidade de obturación do obxectivo" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Velocidade de obturación do obxectivo" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Balance de brancos" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Axuste doe balance de brancos" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Secuencia" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Número de secuencia (se estamos en modo raxada)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Punto de AF utilizado" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Punto de AF utilizado" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Compensación do flash" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Distancia do suxeito" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Distancia do suxeito (as unidades non están determinadas)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Valor da abertura" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Valor da abertura do obturador" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Velocidade do obturador" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "Medida EV 2" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Configuración descoñecida da cámara Canon etiqueta 2" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "De esquerda a dereita" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "De dereita a esquerda" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "De abaixo a arriba" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "De arriba a abaixo" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "matriz 2x2 (no sentido das agullas do reloxo)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Fotograma panorámico" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Número de fotograma panorámico" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Dirección do panorama" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Dirección do panorama" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Etiqueta de panorama Canon descoñecida" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Redución de ruído" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Redución do ruído de longa exposición" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Bloqueo de EA do obturador" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "Disparador/botóns de bloqueo EA" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Bloqueo do espello" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Bloqueo do espello" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Incremento do nivel de exposición" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "Tv/Av e nivel de exposición" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Asistente do AF" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Apoio luminoso ao AF" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Promedio de velocidade de sincronización do flash" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Velocidade do obturador en modo Av" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "Secuencia AEB" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "Secuencia AEB / cancelación automática" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Sincronización da cortina do obturador" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Sincronización da cortina do obturador" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Botón de parada do AF da lente" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Interruptor Fn. deter o AF das lentes" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Auto redución de flash de recheo" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Auto redución de flash de recheo" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Botón de retorno ao menú" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Botón do menú volver á posición" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Estabelecer a función do botón" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "ESTABELECER a función do botón ao disparar" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Limpeza do sensor" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Limpeza do sensor" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "Enfoque en imaxes superpostas" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "Enfoque en imaxes sobrepostas" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "Liberación do obturador sen tarjeta CF" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "Liberación do obturador con ou sen tarxeta CF" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Etiqueta de función personalizada de Canon descoñecida" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "medio-dereita" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "abaixo" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "enriba" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "medio-esquerda" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "superior-esquerda" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "superior-dereita" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "abaixo-esquerda" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "abaixo-dereita" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Largura da imaxe" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Largura da imaxe" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Altura da imaxe" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Altura da imaxe" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Largura da imaxe no disparo" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Largura da imaxe (no disparo)" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Altura da imaxe no disparo" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Altura da imaxe (no disparo)" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Punto de AF usado" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Punto de AF usado" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Punto de AF usado 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Puntos de AF usados (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Etiqueta de información da imaxe Cannon descoñecida" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "BN" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Tarxeta postal" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Pantalla panorámica" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Filme mediano" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "Filme pequeno" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "Acendido 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "Acendido 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "Acendido (cambiar AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "Acendido (cambiar GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Marelo" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Laranxa" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Vermello" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Verde" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Azul" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Púrpura" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Modo forcada" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Valor da forcada" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "Número de disparos en forcada" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "Calidade Raw Jpg" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Tamaño Raw Jpg" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "BB en modo forcada" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "BB en forcada valor AB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "BB en forcada valor GM" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Efecto de filtro" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Efecto de matiz" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "Magnificación de macro" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "Magnificación de macro" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "Visor de disparo en vivo" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "Visor de disparo en vivo" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Distancia do foco" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Distancia do foco" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "Bloqueo de exposición de flash" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "Bloqueo de exposición de flash" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Etiqueta de información de ficheiro Canon descoñecida" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Estándar" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "A máis baixa" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "A máis alta" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "Saturación alta" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "Saturación baixa" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "CM axuste 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "CM axuste 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "Def. usuario 1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "Def. usuario 2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "Def. usuario 3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "PC 1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "PC 2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "PC 3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "Fidel" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monocromo" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Detalles do flash" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "Curvas de ton" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Curva de ton" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "Frecuencia de nitidez" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "Frecuencia de nitidez" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "Nivel do sensor de vermello" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "Nivel do sensor de vermello" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "Nivel do sensor de azul" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "Nivel do sensor de azul" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "Balance de brancos de vermello" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "Balance de brancos de vermello" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "Balance de brancos de azul" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "Balance de brancos de azul" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "Balance de brancos" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "Temperatura da cor" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Temperatura da cor" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "Estilo da imaxe" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Estilo da imaxe" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "Ganancia dixital" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "Ganancia dixital" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "Balance de brancos cambia AB" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "Balance de brancos cambia AB" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "Balance de brancos cambia GM" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "Balance de brancos cambia GM" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "Etiqueta de información de procesado Canon descoñecida" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "Cabeceira, desprazamento" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "etiqueta" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "directorio" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "tipo" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "tamaño" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "desprazamento" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(non válido)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "Rexistro de sobre IIM" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "Rexistro de aplicativo IIM 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Versión do modelo" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Un número binario identificando a versión do Modelo de Intercambio de " +"Información (IIM), Parte I, usado polo fornecedor. Os números de versión son " +"asignados polas organizacións IPTC e NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Destino" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Este «conxunto de datos» usase para acomodar algúns fornecedores que " +"requiren información de enrutamento sobre as capas OSI apropiadas" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Formato do ficheiro" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Un número binario representando o formato do ficheiro. Dito formato debe " +"estar rexistrado por medio dun número único asignado pola IPTC ou a NAA. A " +"información usase para dirixir os datos ao sistema apropiado e permitirlle " +"ao sistema receptor executar as accións que sexan apropiadas." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Versión do ficheiro" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Un número binario representando a versión particular do formato de ficheiro " +"especificado ploa etiqueta ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "ID do servizo" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Identifica ao fornecedor e ao produto" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Número de sobre" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Os caracteres dun número que será único para a data especificada na etiqueta " +" e para o Identificador do servizo na etiqueta " +". Se aparecen números de sobre iguais coa mesma data e o " +"mesmo identificador de servizo, os rexistros 2-9 non deben cambiar con " +"respecto ao orixinal. Isto non pretende ser un número de serie secuencial de " +"verificación de recepción." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "ID do produto" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Permítelle a un fornecedor identificar subconxuntos do seu servizo global. " +"Utilizado para recibir os datos organizativos dun modo que permita " +"seleccionar, dirixir ou manipular os datos de varios modos." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Prioridade do sobre" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"Non especifica a urxencia editorial (para iso véxase a etiqueta ) " +"senón a prioridade de manipulación dos sobres. «1» indica o máis urxente, " +"«5» urxencia normal e «8» as copias menos urxentes. O «9» permítelle ao " +"usuario definir unha prioridade personalizada. O «0» está reservado para " +"usos futuros." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Data do envío" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Usa o formato SSAAMMDD (século, ano, mes, día) definido en ISO 8601 para " +"indicar ano, mes e día en que o servizo enviou o material." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Hora de envío" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Usa o formato HHMMSS:HHMM onde HHMMSS refírese á hora local, minuto e " +"segundos e HHMM refírese as horas e minutos posteriores (+) o anteriores (-) " +"do horario coordinado universal (UTC) tal e como está descrito na ISO 8601. " +"Este é o momento no que o servizo enviou o material." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Conxunto de caracteres" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Esta etiqueta consiste nunha ou máis funcións de control utilizadas para o " +"anuncio, invocación ou designación de conxuntos de caracteres codificados. " +"As funcións de control seguen o estándar ISO 2022 e poden consistir no " +"carácter de control de escape e un ou máis caracteres gráficos." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Único nome de obxecto (UNO)" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Esta etiqueta fornece un identificador único global para obxectos, " +"independente do fornecedor e para calquera tipo de medio, tal e como está " +"especificado no IIM. O fornecedor debe garantir que o UNO é único. Os " +"obxectos co mesmo UNO son idénticos." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Identificador ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"O «conxunto de datos» identifica ao Abstract Relationship Method identifier " +"(ARM) que é descrito nun documento rexistrado polo creador do ARM coas " +"organizacións IPTC e NAA." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "Versión ARM" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Consiste nun número binario representando a versión particular do ARM " +"especificado pola etiqueta ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Versión de rexistro" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Un número binario, asignado polas organizacións IPTC e NAA, que identifica a " +"versión do Modelo de Intercambio de Información (IIM), Parte II, utilizado " +"polo fornecedor." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Tipo de obxecto" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"o «tipo de obxecto», utilizase para distinguir entre diferentes tipos de " +"obxectos dentro do IIM. Consta de dúas partes separadas por un signo de dous " +"puntos, sendo a segunda parte opcional. A primeira é un número de referencia " +"internacional e independente do idioma para un tipo de obxecto; A segunda é " +"unha representación textual do número de tipo do obxecto (Object Type " +"Number) mediante caracteres gráficos e espazos, ben en inglés ou no idioma " +"do servizo indicado na etiqueta ." + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Atributo de obxecto" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"O «atributo de obxecto» define a natureza do obxecto independentemente do " +"«asunto» que trate. Consta de dúas partes separadas por un signo de dous " +"puntos, sendo a segunda parte opcional. A primeira é un número de referencia " +"internacional e independente do idioma para un atributo do obxecto; A " +"segunda é unha representación textual do número de atributo do obxecto " +"(Object Attribute Number) mediante caracteres gráficos e espazos, ben en " +"inglés ou no idioma do servizo indicado na etiqueta ." + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Nome do obxecto" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"Utilizado como referencia rápida (taquigráfica) para o obxecto. Os cambios a " +"datos existentes, como historias actualizadas ou novos recortes en fotos, " +"deben estar identificados na etiqueta ." + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Título do documento" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Editar o estado" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "Estado dos datos do obxecto, de acordo co costume do fornecedor" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Actualización editorial" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"Indica o tipo de actualización que este obxecto fornece a un obxecto previo. " +"A ligazón ao obxecto previo faise usando as etiquetas e " +", de acordo cos costumes do fornecedor." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Urxencia (de edición)" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Especifica a urxencia editorial do contido e non equivale necesariamente á " +"prioridade de manipulación do sobre (véxase ). O «1» é o " +"máis urxente, «5» é normal e «8» indica a copia menos prioritaria." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Asunto" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "A referencia «asunto» é unha definición estruturada do contido" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Categoría" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"Identifica o asunto dos datos do obxecto en opinión do fornecedor. Onde sexa " +"posíbel unha lista de categorías será mantida por un rexistro rexional, " +"noutro caso vai ser fornecida polo fornecedor." + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Categoría suplementaria" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"As «categorías suplementarias» permiten refinar un dato do obxecto. Unha " +"categoría suplementaria pode incluír calquera das categorías xa recoñecidas " +"na etiqueta . Polo demais, a selección de categorías " +"suplementarias deixase ao fornecedor." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Categorías suplementarias" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "ID de arranxo" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Identifica os datos do obxecto que se repiten decote e de xeito predicíbel, " +"permitíndolle aos usuarios atopalos inmediatamente ou reclamalos cando se " +"precise." + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Palabras clave" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"Utilizase para indicar palabras clave específicas. Agardase que un " +"fornecedor de varios tipos de datos ligados a un mesmo asunto utilice a " +"mesma palabra clave, permitíndolle ao sistema receptor ou aos distintos " +"subsistemas atopar rapidamente todo o material relacionado entre todos os " +"tipos de datos." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Código de localización" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"Indica o código de País/localización xeográfica referenciado polo contido " +"dun obxecto. Alí onde a ISO 3166 teña estabelecido un código apropiado de " +"país utilizarase ese código. Pola contra (ex. o espazo ou barcos en alta " +"mar, IPTC asignará un código de tres caracteres apropiado baixo as " +"previsións da ISO 3166 para evitar conflitos." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Nome da localización" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Fornece un nome, publicábel e completo, do país ou localización xeográfica " +"referenciado polo contido dun obxecto, de acordo coas directrices do " +"fornecedor." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Data de publicación" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"Designa a data inicial (expresada en forma CCYYMMDD) a partir da que o " +"fornecedor ten intención de que un obxecto concreto poida ser usado. Segue o " +"estándar ISO 8601." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Hora de publicación" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"Designa a hora inicial (expresada en forma HHMMSS:HHMM) a partir da que o " +"fornecedor ten intención de que un obxecto concreto poida ser usado. Segue o " +"estándar ISO 8601." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Data de caducidade" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Designa a data de caducidade da validez dun obxecto para o seu uso " +"(expresada en forma CCYYMMDD) a partir da que o fornecedor ou o usuario " +"consideran que xa non debe utilizarse mais ditos datos do obxecto. Segue o " +"estándar ISO 8601." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Hora de caducidade" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Designa a hora de caducidade da validez dun obxecto para o seu uso " +"(expresada en forma HHMMSS:HHMM) a partir da que o fornecedor ou o usuario " +"consideran que xa non debe utilizarse mais ditos datos do obxecto. Segue o " +"estándar ISO 8601." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Instrucións especiais" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Instrucións editoriais adicionais sobre o uso dos datos do obxecto, como " +"embargos e avisos." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Instrucións" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Acción suxerida" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"Indica o tipo de acción que este obxecto fornece a un obxecto anterior. Para " +"ligala ao obxecto anterior úsanse as etiquetas e " +", de acordo aos costumes do fornecedor." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Servizo de referencia" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Identifica ao identificador de servizo dun sobre anterior no que o obxecto " +"actual se referencia." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Data de referencia" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" +"Identifica a data dun sobre anterior no que o obxecto actual se referencia." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Número de referencia" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" +"Identifica o número de sobre dun sobre anterior no que o obxecto actual se " +"referencia." + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Data de creación" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Representada no CCYYMMDD designa a data da creación do contido intelectual " +"dos datos do obxecto no canto da creación física da representación física. " +"Segue o estándar ISO 8601." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Hora de creación" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Representada no formato HHMMSS:HHMM designa a hora da creación do contido " +"intelectual dos datos do obxecto no canto da creación física da " +"representación física. Segue o estándar ISO 8601." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Data de dixitalización" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Representada no formato CCYYMMDD designa a data na que foi creada a " +"representación dixital dos datos do obxecto. Segue o estándar ISO 8601." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Hora de dixitalización" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Representada no formato HHMMSS:HHMM designa a data na que foi creada a " +"representación dixital dos datos do obxecto. Segue o estándar ISO 8601." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Programa" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "Identifica o tipo de programa usado para orixinar os datos do obxecto." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Versión do programa" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" +"Usado para identificar a versión do programa mencionado na etiqueta " + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Ciclo do obxecto" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "Utilizado para identificar o ciclo editorial dos datos do obxecto." + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Por liña" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"Conten o nome do creador dos datos do obxecto, p.e. escritor, fotógrafo ou " +"artista gráfico." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Autoría" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Título por liña" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" +"Un «título por liña» é o título do creador ou creadores dos datos dun " +"obxecto. Cando se usa, un título por liña debería seguir os «po liña» que " +"modifica." + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Cidade" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"Identifica a cidade dos datos do obxecto orixinal de acordo coas indicacións " +"estabelecidas polo fornecedor." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Sublocalización" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"Identifica o lugar dentro dunha cidade desde o que se orixinan os datos do " +"obxecto, de acordo coas indicacións estabelecidas polo fornecedor." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Estado ou Provincia" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" +"Identifica a Provincia/Estado de orixe de acordo coas indicacións " +"estabelecidas polo fornecedor." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Estado/Provincia" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Código do país" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Indica o código do país ou localización primaria onde foi creada a " +"propiedade intelectual dos datos do obxecto, por exemplo, onde foi tomada " +"unha foto, ocorreu un acontecemento. Se ISO ten estabelecido un código de " +"país apropiado baixo a ISO 3166, usarase ese código. Cando ISO 3166 non " +"forneza unha identificación adecuada para a localización ou no caso dun país " +"novo, ou cando sexan barcos en alta mar, ou o espazo exterior, IPCT asignará " +"un código apropiado de tres caracteres, segundo as condiciones de ISO 3166 " +"para evitar conflitos." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Nome do país" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Fornece o nome do país, completo e publicábel, ou a localización primaria " +"onde e creou a propiedade intelectual dos datos do obxecto, de acordo coas " +"indicacións do fornecedor." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "País" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Referencia de transmisión" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"Un código que representa a localización da transmisión orixinal de acordo " +"coas costumes do fornecedor." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Encabezamento" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" +"Unha entrada publicábel que fornece a sinopse dos contidos dos datos do " +"obxecto." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Crédito" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" +"Identifica ao fornecedor dos datos do obxecto, non necesariamente o " +"propietario/creador" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Orixe" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Identifica o propietario intelectual orixinal dos contidos dos datos do " +"obxecto. Pode ser unha axencia, un membro dunha axencia ou un individuo." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "Conten calquer aviso necesario de Dereitos de autoría." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Aviso de Dereitos de autoría" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Contacto" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Identifica á persoa ou organización que pode fornecer mais información de " +"axuda dos datos do obxecto." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Lenda" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "Descrición textual dos datos do obxecto." + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Descrición" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Escritor" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Identificación do nome da persoa autora do escrito, edición ou corrección " +"dos datos do obxecto ou do seu resumo." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Lenda rasterizada" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"Conten a descrición de datos do obxecto rasterizado e é usado onde se " +"requiran os caracteres que non foron codificados para o titulo" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Indica os compoñentes de cor dunha imaxe" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orientación da imaxe" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Indica a disposición dunha imaxe." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Idioma" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"Describe o principal idioma nacional dos datos do obxecto, segundo os " +"códigos de dúas letras de ISO 639:1988. Non define nin implica algún " +"conxunto de caracteres codificado, mais usase para o enrutado interno, por " +"exemplo os varios escritorios editoriais." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Tipo de son" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Indica o tipo de contido de son" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Taxa de son" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Indica a frecuencia en Hertzios dun contido de son" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Resolución de son" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "Indica a resolución da mostraxe dun contido de son." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Duración do son" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Indica a duración dun contido de son." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Cola de saída do son" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Identifica o contido do final dos datos dun obxecto de son, de acordo coas " +"indicacións estabelecidas polo fornecedor." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Formato de vista previa" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Un número binario que representa o formato de ficheiro da vista previa dos " +"datos do obxecto. O formato de ficheiro debe estar rexistrado nas " +"organizacións IPTC ou NAA cun número único asignado." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Versión de vista previa" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Un número binario representando a versión particular do formato de ficheiro " +"da vista previa dos datos do obxecto especificado na etiqueta " + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Vista previa dos datos" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Facer unha v¡sta previa dos datos da imaxe binaria." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(non válido)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Conxunto de datos descoñedido" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Erro %0: arg2=%2, arg3=%3, arg1=%1." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Correcto" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Isto non se parace a unha imaxe como %1" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Nome non válido do conxunto de datos «%1»" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Nome non válido do rexistro inválido «%1»" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Chave non válida «%1»" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Nome non válido da etiqueta ou ifdld «%1», ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Valor non estabelecido" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: produciuse un fallo ao abrir a orixe dos datos: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: produciuse un fallo ao abrir o ficheiro (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: o ficheiro conten datos dun tipo de imaxe descoñecido" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "A memoria conten datos dunha imaxe de tipo descoñecido" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Non está admitido o tipo de imaxe %1" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Produciuse un fallo ao ler os datos da imaxe" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Non parece ser unha imaxe JPEG" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" +"%1: produciuse un fallo ao asignar o ficheiro para lectura e escritura: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "produciuse un fallo ao renomear o ficheiro a %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: non foi posíbel facer a transferencia: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Produciuse un fallo na transferencia de memoria: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Produciuse un fallo ao ler os datos de entrada" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Produciuse un fallo ao escribir a imaxe" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Os datos de entrada non conteñen unha imaxe válida" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "ifdId %1 non válido" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setValue: Valor grande de máis (etiqueta=%1, tamaño=%2, solicitado=" +"%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea: Valor grande de máis (etiqueta=%1, tamaño=%2, solicitado=" +"%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Desprazamento fora do rango" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Tipo de datos de desprazamento de área non admitidos" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "Conxunto de caracteres non válido «%1»" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Formato de data non admitido" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Formato horario non admitido" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Non está admitido a escritura a %1 imaxes" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Configurar %1 en imaxes %2 non está admitido" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Non parece ser unha imaxe CRW" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: Non admitido" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" +"Non hai información do espazo de nomes dispoñíbel para o prefixo XMP «%1»" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"Non hai un prefixo rexistrado para o espazo de nome «%2», necesario para a " +"propiedade ruta «%1»" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "O tamaño do segmento JPEG %1 é maior que 65535 bytes" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Xmpdatum %1 non manipulábel, do tipo %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "nodo XMP %1 non manipulábel con opc=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Produciuse o erro %1 das ferramentas XMP: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" +"Produciuse un fallo ao descodificar a propiedade Lang Alt %1 con opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" +"Produciuse un fallo ao descodificar o cualificador Lang Alt %1 con opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Produciuse un fallo ao codificar a propiedade Lang Alt %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" +"Produciuse un fallo ao determinar a propiedade nome desde a ruta %1, espazo " +"de nome %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" +"O esquema de espazo de nome %1 non está rexistrado co conxunto de " +"ferramentas XMP" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Non ha espazo de nome registrado para o prefixo «%1»" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Non se admiten os alias. E envíe este paquete XMP a ahuggel@gmx.net «%1», " +"«%2», «%3»" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Tipo XmpText «%1» non válido" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "O directorio TIFF %1 tene demasiadas entradas" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Múltiples etiquetas de elementos de orde TIFF %1 nun directorio" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "Tipo equivocado para etiqueta de elemento de orde TIFF %1" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 ten un tipo de valor XMP «%2» incorrecto" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Copyright (C) 2004-2015 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Este programa é software libre; pode redistribuílo e/ou\n" +"modificalo baixo os termos da Licenza Pública Xeral de GNU\n" +"publicada pola Free Software Foundation; na versión 2\n" +"da licenza, ou (a súa elección) en calquera versión posterior.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Este programa distribúese coa intención de que sexa útil, pero SEN\n" +"NINGUNHA GARANTIA; nin sequera a garantía implícita de COMERCIALIZACIÓN\n" +"ou ADECUACIÓN A UN FIN PARTICULAR. Vexa a Licenza Pública Xeral de\n" +"GNU para obter máis detalles.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Debe ter recibido unha copia da Licenza Pública Xeral\n" +"de GNU con este programa; en caso contrario, escriba á\n" +"Free Software Foundation, Inc Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Modo de uso:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ opción ] [ acción ] ficheiro ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Manipular os metadatos Exif das imaxes.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Accións:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Axusta as marcas de tempo Exif polo nome dado. Esta acción\n" +" require polo menos unha das opcións -a, -Y, -O ou -D\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Imprime os metadatos da imaxe.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Elimina os metadatos da imaxe dos ficheiros.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Insire metadatos desde os correspondentes ficheiros *.exv.\n" +" Use a opción -S para cambiar o sufixo dos ficheiros de " +"entrada.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Extrae os metadatos a *.exv, *xmp e ficheiros de imaxes en " +"miniatura\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Renomea os ficheiros ou axusta as datas segundo a\n" +" data de creación do Exif. O formato do nome do ficheiro pode " +"axustarse con\n" +" -r formato, as opcións da data son controladas con -t e -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Aplica ordes para modificar (engadir, estabelecer, eliminar) " +"o Exif e os\n" +" metadatos IPTC de ficheiros de imaxe ou estabelecer o " +"comentario JPEG.\n" +" Require a opción -c, -m ou -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" +" fc | fixcom Convirte o comentario de usuario EXIF UNICODE a UCS-2. A súa " +"codificación\n" +" de caracteres actual pódese especificar coa opción -n.\n" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opcións:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Mostra esta axuda e sae.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Mostra a versión do programa e sae.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" +" -v Fornece unha saída detallada mentres se executa o programa.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" +" -q Silencia as mensaxes de aviso durante a execución do programa " +"(quiet).\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Mostra os valores binarios grandes.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Mostra etiquetas descoñecidas.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g clave Fornece información de saída só para esta clave (grep).\n" + +#: src/exiv2.cpp:271 +#, fuzzy +msgid " -K key Only output info for this key (exact match).\n" +msgstr " -g clave Fornece información de saída só para esta clave (grep).\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n enc Conxunto de caracteres que usar para descodificar os comentarios " +"de usuarios EXIF UNICODE.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Conserva o selo de tempo do ficheiro (keep).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Axusta tamén a data do ficheiro na acción «renomear» (substitúe a -k)\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Axusta só a data do ficheiro na acción «renomear», non o renomea\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -f Non pregunta antes de sobrescribir ficheiros existentes (force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F Non pregunta antes de renomear ficheiros (Force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a hora Axusta a hora ao formato [-]HH[:MM[:SS]]. Esta opción\n" +" só se emprega coa acción «axustar»'.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y ano Axusta o ano coa acción «axustar»\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mes Axusta o mes coa acción «axustar»\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D día Axusta o día coa acción «axustar»\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" +" -p modo Modo de impresión para a acción «imprimir». Os modos posíbeis " +"son:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" +" s : imprime un resumo dos metadatos Exif (predeterminado)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : imprime os metadatos Exif, IPTC e XMP (atallo para -Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t : datos Exif interpretados (traducidos) (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : valores de datos Exif sen formato (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : envorcado hexadecimal dos datos Exif (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : valores de datos IPTC (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : propiedades XMP (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c: Comentario JPEG\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : lista as vistas previas dispoñíbeis\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v: datos de valor simple\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " X : propiedades XMP\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs Imprime as marcas para un control preciso das listas de etiquetas " +"(acción «imprimir»):\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : inclúe etiquetas Exif na lista\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : conxuntos de datos IPTC\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : propiedades XMP\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : imprime unha columna co número de etiqueta\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : nome do grupo\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : clave\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : tag etiqueta\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : nome de etiqueta\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : tipo\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : número de compoñentes (count)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : tamaño en bytes\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v: datos de valor simple\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : datos interpretados (traducidos)\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : envorcado hexadecimal dos datos\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" +" -d tgt Elimina deestino(s) para a acción «eliminar». Destinos posíbeis:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : todos os metadatos admitidos (predeterminado)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : sección Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : Só miniatura Exif\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i: Datos IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : Paquete XMP\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - nome do ficheiro orixinal sen extensión\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - nome do directorio que aloxa o ficheiro " +"orixinal\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - nome do directorio pai\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " O formato predeterminado do nome de ficheiro é " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c text Comentario que poñer na imaxe JPEG\n" + +#: src/exiv2.cpp:336 +#, fuzzy +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -M cmd Liña de ordes para a acción de modificar. O formato das\n" +" ordes é o mesmo que o das liñas do ficheiro de ordes.\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M cmd Liña de ordes para a acción de modificar. O formato das\n" +" ordes é o mesmo que o das liñas do ficheiro de ordes.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l dir Localización do directorio que conten os ficheiros que inserir ou " +"extraer.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf Usa o sufixo .suf para ficheiros orixe na orde inserir.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Opción" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "require un argumento\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Opción non recoñecida" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "«getopt» devolveu un código de caracter inesperado" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "O argumento non é válido" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "O argumento non é válido" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ignorando a opción sobrante" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Ignorando a opción sobrante -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Produciuse un erro ao analizar o argumento da opción -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "A opción -a non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Produciuse un erro na análise" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "argumento de opción" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Modo de impresión descoñecido" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Ignorando a opción sobrante -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "A opción -p non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Elemento de impresión decoñecido" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Ignorando a opción sobrante -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "A opción -P non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "A opción -d non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "A opción -e non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "A opción -i non é compatíbel coa opción anterior\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "A acción de axuste non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "A acción de impresión non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "A acción de eliminado non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "A acción de extracción non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "A acción de inserción non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "A acción de renomeado non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "A acción de modificación non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "A acción «fixiso» non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "A acción «fixcom» non é compatíbel coas opcións dadas\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Debese especificar unha acción\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "A acción de axuste require polo menos unha opción -a, -Y, -O ou -D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "A acción de modificación require polo menos unha opción -c, -m ou -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Requirese, polo menos, un ficheiro\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Produciuse un erro ao analizar os argumentos da opción -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Produciuse un erro ao analizar os argumentos da opción -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "A opción -l só pode usarse con accións de extracción o inserción\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "A opción -S só pode usarse coa acción de inserción\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "A opción -t só pode usarse coa acción de renomeado\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "A opción -T só pode usarse coa acción de renomeado\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Descoñecido " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "destino" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Número non válido de vista previa" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Produciuse un fallo ao abrir para lectura o ficheiro de ordes\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "liña" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "Opción -M" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Liña de ordes incorrecta" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Orde incorrecta" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Clave non válida" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Liña de ordes incorrecta" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Modo suave 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Modo suave 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "Modo duro 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "Modo duro 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Fluorescente (luz de día)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Fluorescente (blanco cálido)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Fluorescente (blanco frio)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Incandescente" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Ningún (B/N)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Redución de ollos vermellos." + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Escena nocturna" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Programa AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Luz natural" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti esborranchado" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Solpor" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Museo" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Festa" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Flor" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Texto" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Luz natural e flash" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Prioridade de abertura AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Prioridade de velocidade do obturador AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Sen flash e flash" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Cromo" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Amplo" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Estándar" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Retrato de estudio" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Studio portrait Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "En bruto" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Estándar (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Panorámico 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Panorámico 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Modo de simulación de película" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Versión" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Versión da nota do fabricante Fujifilm" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Este número é único, e conten a data de manufactura, mais non é o mesmo " +"número que o impreso no corpo da cámara" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Axuste da calidade da imaxe" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Cor" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Axuste da saturación de croma" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Axuste do modo de disparo do flash" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Forza do flash" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "Axuste da compensación de forza de disparo do flash" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Axuste do modo de macro" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Axuste do modo de enfoque" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Sincronización lenta" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Axuste do modo de sincronización lento" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Modo de imaxe" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Axuste do modo de imaxe" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Disparo continuo ou axuste en forcada" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Número de secuencia" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Número de secuencia" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "Color FinePix" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Axuste de color Fuji FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Aviso do esborranchado" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Estado do aviso do esborranchado" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Aviso de foco" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Estados do aviso de enfoque automático" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Aviso de exposición" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Estado do aviso de exposición automática" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Rango dinámico" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Rango dinámico" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Modo do filme" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Modo do filme" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Axuste do rango dinámico" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Axustes do rango dinámico" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Rango dinámico de desenvolvemento" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Rango dinámico de desenvolvemento" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Distancia focal mínima" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Distancia focal mínima" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Distancia focal máxima" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Distancia focal máxima" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Abertura máxima co foco mínimo" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Abertura máxima co foco mínimo" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Abertura máxima co foco máximo" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Abertura máxima co foco máximo" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Orixe do ficheiro" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Orixe do ficheiro" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Número de pedido" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Número de pedido" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Número de fotograma" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Número de fotograma" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Etiqueta FujiMakerNote descoñecida" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Cor natural" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Color vívido" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarización" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "RGB de Adobe" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Natural" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "sRGB natural" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Natural + sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Serán" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Retrato nocturno" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Superfino" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Extrafino" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Versión da nota do fabricante" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "Secuencia «MLT0» (sen terminacion nula)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Axustes da cámara (antigo estándar)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Axustes estándar da cámara (modelos de cámara antigos como D5, D7, S304 e " +"S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Axustes da cámara (novo estándar)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" +"Axustes estándar da cámara (modelos de cámara novos como D7u, D7i e D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Axustes da cámara (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Axustes da cámara (para modelo Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Datos de estabilización da imaxe" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Datos de estabilización da imaxe" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "Información do BB A100" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "Información do balance de brancos para Sony DSLR-A100" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Tamaño da imaxe comprimida" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Tamaño da imaxe comprimida" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Miniatura Jpeg 640x480 píxeles" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Desprazamento da miniatura" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Desprazamento da miniatura" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Lonxitude da miniatura" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Tamaño da miniatura" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Modo de escena" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Modo de cor" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Modo de cor" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Calidade da imaxe" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Compensación da exposición co flash" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Compensación da exposición co flash en EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Modelo de teleconvertedor" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "Gravación RAW+JPG" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "Gravación de ficheiros RAW e JPG" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Zona coincidente" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Zona coincidente" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Temperatura de cor" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID da lente" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Identificador de lentes" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "Filtro de compensación de cor" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" +"Filtro de compensación da cor: o verde é negativo, o maxenta é positivo" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "Axuste fino do balance de brancos" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "Valor do axuste fino do balance de brancos" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "Estabilización de imaxe A100" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Estabilización de imaxe para Sony DSLR-A100" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Axustes da cámara (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Axustes da cámara (para o modelo Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Impresión de mensaxería instantánea" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "Información de PrintIM" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Axustes da cámara (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Axustes da cámara (para modelos Z1, DImage X e F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Etiqueta Minolta MakerNote descoñecida" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Prioridade da abertura" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Prioridade do obturador" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Flash de recheo" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Sincronización de flash traseiro" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Sen fíos" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Fluorescente 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Tamaño completo" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Super fino" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Extra fino" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Cadro único" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "Temporizador" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "En forcada" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Intervalo" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS continuo" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS continuo" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Multisegmento" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Media ponderada no centro" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Ampliación electrónico" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Arriba" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Arriba - dereita" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Abaixo - dereita" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Abaixo" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Abaixo - esquerda" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Arriba - esquerda" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Duro" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "Brando" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Retrato nocturno" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Acción deportiva" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Tempo transcorrido do filme" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Formulario estándar" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Formulario de datos" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Cor natural" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Branco e negro" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Cor vívido" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Sen zona" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Zona central (orientación horizontal)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Zona central (orientación vertical)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Zona esquerda" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Zona dereita" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Enfoque automático" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Enfoque amplo (normal)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Enfoque puntual" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Exposición" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filtro" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Non incrustado" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Incrustado" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Texto + num. ID" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Integración Avanzada da Distancia)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Pre-flash TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Control de flash manual" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Modo de exposición" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Modo do flash" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Modo do controlador" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "Valor ISO" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Tempo de exposición" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "Número F/abertura" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "O número F." + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Modo de macro" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Compensación da exposición" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Paso de forcada" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Paso de forcada" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Lonxitude do intervalo" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Lonxitude do intervalo" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Número do intervalo" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Número do inetervalo" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Distancia do foco" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Distancia do foco" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "Flash disparado" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "Flash disparado" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Data Minolta" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Data Minolta" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Hora Minolta" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Hora Minolta" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Número de ficheiro de memoria" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Número de ficheiro de memoria" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Número da última imaxe" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Número da última imaxe" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Balance de cor vermello" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Balance de cor vermello" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Balance de cor verde" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Balance de cor verde" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Balance de cor azul" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Balance de cor azul" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Suxeito do programa" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Suxeito do programa" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Axustes ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Axustes ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Modelo Minolta" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Modelo Minolta" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Modo de intervalo" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Modo de intervalo" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Nome do cartafol" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Nome do cartafol" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Modo de cor" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Filtro de cor" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Filtro de cor" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Filtro de branco e negro" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Filtro de branco e negro" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Flash interno" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Brillo" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "Punto de enfoque X" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "Punto de enfoque X" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "Punto de enfoque Y" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "Punto de enfoque Y" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Zona de foco amplo" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Zona de foco amplo" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Modo de enfoque" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Ãrea de enfoque" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "Cambio de posición DEC" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "Cambio de posición DEC" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Perfil de cor" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Perfil de cor" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "Impresión de datos" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Medición do flash" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Medición do flash" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Etiqueta de axustes de cámara Minolta descoñecida" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "Cambio a programa A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "Cambio a programa S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "AF a un disparo" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "AF continuo" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "AF automático" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (natural)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (natural+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horizontal (normal)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Rotar 90 SH" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Rotar 270 SH" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Puntos AF" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Puntos AF" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Espazo de cores" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Espazo de cores" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "Eliminar as imaxes da tarxeta de memoria" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "Eliminar as imaxes da tarxeta de memoria" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Matiz" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Rotación" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Número de imaxe" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Redución de ruído" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "Coincidencia de zonas activada" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "Coincidencia de zonas activada" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Etiqueta de axustes de camara Minolta descoñecida 7D" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "Cambio de programa A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "Cambio de programa S" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "Visión nocturna/retrato" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (alta coincidencia de zonas)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80 (baja coincidencia de zonas)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB (ICC)" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Central" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Arriba" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Arriba - dereita" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Abaixo- dereita" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Abaixo" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Abaixo esquerdaizquierda" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Arriba esquerda" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Selección" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "Natural+" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "Escena con vento" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "Escena nocturna" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Posición do foco" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Posición do foco" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Ãrea de enfoque" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Revisión da exposición" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "Revisión da exposición" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "Rotación2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "Acabado da imaxe" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Compensación manual da exposición" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Compensación manual da exposición" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Modo AF" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Modo AF" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Etiqueta de axustes de camara Minolta descoñecida 5D" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "Temporizador (10 seg.)" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "Temporizador (2 seg.)" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Balance de brancos en forcada baixa" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "Balance de brancos en forcada alta" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "Fotograma único en forcada baixa" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "Agrupamento continuo baixo" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "Fotograma único en forcada alta" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "Agrupamento continuo alto" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Avanzado" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "En forcada contínua" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "Fotograma único en forcada" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "Balance de brancos en forcada" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Predefinición" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Temperatura de cor/filtro de cor" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Temperatura" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "Axustes" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "Reclamar" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "Aceptar" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "Erro" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Imaxe e información" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Só imaxe" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "Imaxe e histograma" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "Flash de recheo" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "Manter o foco" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "Vista previa DOF" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Reter" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Alternar" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "Manter o punto" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "Alternar o punto" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Velocidade do obturador" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "Ambiente e flash" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "Só ambiente" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0,3 segundos" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0,6 segundos" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Automático" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "Rotar automaticamente" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Horizontal" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "Rotar manualmente" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "Dentro do rango" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "Sobre/baixo o rango" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Fóra de Rango" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "Non indicado" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "Baixo a escala" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "Na fin da escala" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "na cima da escala" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "Sobre a escala" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "AM" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "Enfoque manual" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Integrado" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Moi baixa" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "Medio chea" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "Resta enerxia abondo" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "Axuste da compensación da exposición" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "Axuste da compensación da exposición" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "Sincronización a alta velocidade" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "Sincronización a alta velocidade" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "Tempo de exposición manual" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "Tempo de exposición manual" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "Número F manual" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "Modo de control 2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "Modo de control 2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "Punto de área de AF local" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "Modo de área de AF" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "ModoFlash" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "Axuste da compensación da exposición do flash" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "Axuste da compensación da exposición do flash" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "Asuste ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "Modo de zona coincidente" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "Modo de optimizador de rango dinámico" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "Modo de optimización de rango dinámico" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "Axuste de prioridade do disparador" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Tempo do temporizador" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Tempo do temporizador" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "En forcada contínua" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "Fotograma único en forcada" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "Fotograma único en forcada" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Balance de brancos en forcada" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "Axuste do balance de brancos" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Predefinir o balance de brancos" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Predefinir o balance de brancos" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "Axuste da temperatura da cor" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "Axuste da temperatura da cor" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "Axuste personalizado do BB" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "Axuste personalizado do BB" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "Configuración do optimizador do rango dinámico" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "Nivel personalizado do BB do vermello" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "Nivel personalizado do BB do vermello" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "Nivel personalizado do BB do verde" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "Nivel personalizado do BB do verde" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "Nivel personalizado do BB do azul" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "Nivel personalizado do BB do azul" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "hai un erro no BB personalizado" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "Axuste fino do balance de brancos" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "Filtro de compensación de cor" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Tamaño de imaxe Sony" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "Tempo de reprodución instantáneo" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "Tempo de reprodución instantáneo" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "Axuste da reprodución instantánea" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "Axuste da reprodución instantánea" + +#: src/minoltamn.cpp:1500 +#, fuzzy +msgid "Eye Start AF" +msgstr "Eye start AF" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "Eye start AF" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "Redución de ollos vermellos" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "Redución de ollos vermellos" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "Flash predeterminado" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "Flash predeterminado" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "Orde en forcada automática" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "Orde en forcada automática" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "Botón de retención de enfoque" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "Botón de retención de enfoque" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "Botón AEL" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "Botón AEL" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "Estabelecer o dial de control" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "Estabelecer o dial de control" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "Modo de compensación da exposición" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "Modo de compensación da exposición" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "Asistente AF" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "Bloqueo do obturador da tarxeta" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "Bloqueo do obturador da tarxeta" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "Bloqueo do obturador do lente" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "Bloqueo do obturador do lente" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "Iluminación da área AF" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "Iluminación da área AF" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "Monitor apagado" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "Monitor apagado" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "Gravar pantalla" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "Gravar pantalla" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "Reproducir pantalla" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "Acender a pantalla" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "Indicador de exposición" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "Indicador da exposición" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "Indicador da exposición AEL" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" +"Indicador da exposición AEL (indica tamén a exposición para o seguinte " +"disparo durante unha forcada)" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "Indicador da última exposición da forcada" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" +"Último indicador de exposición da forcada (indicador para o último disparo " +"durante a forcada)" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "Indicador da escala de medición apagado" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" +"Indicador de medida fóra de escala (dous triángulos intermitentes cando se " +"atope por debaixo ou por riba da escala de medida)" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "Indicador da exposición do flash" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "Indicador da exposición do flash" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "Seguiente indicador da exposición do flash" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" +"Seguinte indicador da exposición do flash (indicador para o seguinte disparo " +"en forcada)" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "Último indicador da exposición do flash" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" +"Último indicador da exposición do flash (indicador para o último disparo en " +"forcada)" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "Conmutador de modo de flash" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "Conmutador de modo de flash" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Tipo de flash" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Tipo de flash" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "Bloqueo de EA" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "Filtro de compensación de cor: negativo é verde, positivo é maxenta" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Nivel da batería" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "Nivel da batería" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Etiqueta de axustes de cámara Sony A100 descoñecida" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Limpar" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Profundo" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Claro" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Vista nocturna" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "Follas de outono" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Local" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Arriba-dereita" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Abaixo-dereita" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Abaixo-esquerda" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Arriba-esquerda" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Lonxe-dereita" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Lonxe-esquerda" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "Automático avanzado" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "Nivel avanzado" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "Publicación" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "Raw + JPEG" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "RAW comprimido" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "RAW comprimido + JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "Minolta AF 2x APO (D)" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO II" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Axuste ISO usado" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Clave alta" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Clave baixa" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "Extra alta" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Ãrea única" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Ãrea dinámica" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Ãrea dinámica, suxeito moi preto" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Grupo dinámico" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Ãrea única (larga)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Ãrea única (larga)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Arriba-esquerda" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Arriba-dereita" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Abaixo-esquerda" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Abaixo-dereita" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "máis á esquerda" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "máis á dereita" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Disparo, manual" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Disparo, externo" + +#: src/nikonmn.cpp:145 +#, fuzzy +msgid "Fire, commander mode" +msgstr "Disparo, modo TTL" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Disparo, modo TTL" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Atraso" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Control do PC" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "Exposición da forcada" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "ISO automática" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Balance de brancos en forcada" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Control IV" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "En forcada contínua" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "Control do PC" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Exposición da forcada" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "Atraso LE-NR sen usar" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "Control IV" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Liberación automática" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "Liberación manual" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "Con perdas (tipo 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Descomprimido" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Sen perdas" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "Con perdas (tipo 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "B e N" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "Recortar" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Imaxe pequena" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "Oluminación diúrna" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Ollo vermello" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "Cianotipo" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "Luz natural" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "Ton quente" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "Cor personalizada" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "Solapamento de imaxe" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Mínimo" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Versión da nota do fabricante Nikon" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "Velocidade ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Nitidez" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Axuste da nitidez da imaxe" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Foco" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Axustes do flash" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Axustes do flash" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Selección ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Selección ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Envorcado de datos" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Envorcado de datos" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Axuste da imaxe" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Configuración do axuste da imaxe" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Lentes auxiliares" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Lentes auxiliares (adaptador)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Distancia manual do foco" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Axuste de zoom dixital" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "Posición de foco AF" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Información de posición de foco AF" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Etiqueta Nikon1MakerNote descoñecida" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Autofoco continuo" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Autofoco único" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Non usado" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "estimación" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA Básico" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA Normal" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA Fino" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA Básico" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA Normal" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA Fino" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Brillo+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Brillo-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Contraste+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Contraste-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Velocidade da luz" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Etiqueta Nikon2MakerNote descoñecida" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Dispositivo de flash" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Dispositivo de flash" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Compensación do balance de brancos" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Compensación do balance de brancos" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "Niveis BN RB" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "Niveis BN RB" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "Cambio de programa" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "Cambio de programa" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Diferencia de exposición" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Diferencia de exposición" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Punteiro a unha imaxe de previsualización" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "Desprazamento a un IFD contendo unha previsualización da imaxe" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Compensación de flash" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Axuste da compensación de flash" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Límites da imaxe" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Límites da imaxe" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Bloqueo de exposición de flash" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Compensación do flash na forcada" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Aplicouse a compensación do flash na forcada" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Compensacion da exposición na forcada" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "Aplicouse a compensación AE na forcada" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Procesamento de imaxes" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Procesamento de imaxes" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "Recorte a alta velocidade" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "Recorte de alta velocidade" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "Axuste da exposición" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "Axuste da exposición" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "Información VR" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "Información VR" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "Autentificación da imaxe" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "Autentificación da imaxe" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "Iluminación ActiveD" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "Iluminación ActiveD" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "Control da imaxe" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " Control da imaxe" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "Hora universal" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "Hora universal" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "Información ISO" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "Información ISO" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "Control de viñetas" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "Control de viñetas" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Compensación de ton" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Compensación de ton" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Modo de flash usado" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Modo de disparo" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Modo de disparo" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "Inicio automático da forcada" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "Inicio automático da forcada" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "vr" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "Curva de contraste" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Curva de contraste" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "Matíz da cor" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "Matíz da cor" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Modo de escena" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Fonte de luz" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Fuente de luz" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "Información de disparo" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Axute do matiz" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Axute do matiz" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "Compresión NEF" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "Compresión NEF" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Táboa de liñalización" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Táboa de liñalización" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Balance da cor" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Balance da cor" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Datos de lentes" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Axustes de datos de lentes" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "Centro da imaxe en bruto" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "Centro da imaxe en bruto" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Tamaño de pixel do sensor" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Tamaño de pixel do sensor" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "Asistente de escena" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "Asistente de escena" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "Historial de retoques" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "Historial de retoques" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Número de serie" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Número de serie da cámara, normalmente comeza con «NO= »" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Tamaño de datos de imaxe" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Tamaño de datos de imaxe" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Reconto de imaxes" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Reconto de imaxes" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "Contador de imaxes eliminadas" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Contador de imaxes eliminadas" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Contador de disparos" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Número de disparos realizados pola cámara" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Información do flash" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Optimización da imaxe" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Optimización da imaxe" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "Variación de programa" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Variación de programa" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "Resposta AF" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "Resposta AF" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "Exposición múltiple" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Reducción alta de ruídos para ISO" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "Efecto de matiz" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "Información AF 2" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "Información do ficheiro" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "Axuste AF" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Datos da captura" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Datos da captura" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "Versión da captura" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "Versión da captura" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "Desprazamentos da captura" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "Desprazamentos da captura" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "Analizar IFD" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "Perfil ICC" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "Capturar a saída" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Etiqueta Nikon3MakerNote descoñecida" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Non" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Si" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "A/M/D" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "D/M/A" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "D/M/A" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "Redución das vibracións" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Redución das vibracións" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Etiqueta de redución das vibracións Nikon descoñecida" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Axustes predeterminados" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Axuste rápido" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Control total" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "Azul-verde" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "Púrpura-azul" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "Vermello-púrpura" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Nome" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "Base" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Axustar" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Axuste rápido" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Efecto de filtro" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "Saturación alta" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "Saturación alta" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "Etiqueta de control de imaxe Nikon desconocida" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "Axuste fino do enfoque automático" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "Axuste fino AF" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "Ãndice do axuste fino AF" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "Ãndice de axuste fino AF" + +#: src/nikonmn.cpp:732 +msgid "AF Fine Tune Adjustment" +msgstr "Axuste do axuste fino do enfoque automático" + +#: src/nikonmn.cpp:732 +msgid "AF fine tune adjustment" +msgstr "Posta a punto do axuste fino AF" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Etiqueta de información do ficheiro Nikon descoñecida" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "Fuso horario" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "Luz diúrna" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "Luz diúrna" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Formato de data" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Formato de data" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "Etiqueta de tempo universal Nikon descoñecida" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Al 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Al 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Al 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Al 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Al 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Al 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Al 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Al 2.0" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "Al 2.0" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "Al 2.0" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "Al 2.0" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Ba 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Ba 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Ba 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Ba 1.0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "Expansión ISO" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "Expansión ISO" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "Expansión ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "Expansión ISO 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "Etiqueta de información ISO de Nikon descoñecida" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "Ãrea única" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "Ãrea dinámica" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "Ãrea dinámica, suxeito moi preto" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "Grupo dinámico" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "Superficie simple (largo)" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "Ãrea dinámica (largo)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Centro-esquerda" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Centro-dereita" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "Lonxe á esquerda" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "Lonxe á dereita" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "Modo de área AF" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "Punto AF" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "Puntos de AF en foco" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "Puntos de AF en foco" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Etiqueta de enfoque automático Nikon desoñecida" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "Acender (51-puntos)" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "Acender (11-puntos)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Acender (51-puntos)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Acender (51-puntos)" + +#: src/nikonmn.cpp:857 +#, fuzzy +msgid "On (73-point, new)" +msgstr "Acender (51-puntos)" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Acender (11-puntos)" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "Detección de contraste AF" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "Detección de contraste AF" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "Detección de fase AF" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "Detección de fase AF" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "Punto de AF primario" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "Punto de AF primario" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "Largura da imaxe AF" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "Largura da imaxe AF" + +#: src/nikonmn.cpp:870 +msgid "AF Image Height" +msgstr "Altura da imaxe AF" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "Altura da imaxe AF" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "Posición X da área AF" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "Posición X da área AF" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "Posición Y da área AF" + +#: src/nikonmn.cpp:872 +msgid "AF area y position" +msgstr "Posición Y da área AF" + +#: src/nikonmn.cpp:873 +msgid "AF Area Width" +msgstr "Largura da área AF" + +#: src/nikonmn.cpp:873 +msgid "AF area width" +msgstr "Largura da área AF" + +#: src/nikonmn.cpp:874 +msgid "AF Area Height" +msgstr "Altura da área AF" + +#: src/nikonmn.cpp:874 +msgid "AF area height" +msgstr "Altura da aÅ•ea AF" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "Detección de contraste AF en enfoque" + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "Detección de contraste AF en enfoque" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Etiqueta de enfoque automático Nikon 2 descoñecida" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "Número de directorio" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "Número de directorio" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "Etiqueta de información do ficheiro Nikon descoñecida" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Exposición múltiple" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "Superposición de Imaxe" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Modo de exposición múltiple" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Modo de exposición múltiple" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "Disparos de exposición múltiple" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "Disparos de exposición múltiple" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "Ganancia automática de exposición múltiple" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "Ganancia automática de exposición múltiple" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Etiqueta de enfoque automático Nikon desoñecida" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Interno" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "1.01 (SB-800 ou Metz 58 AF-1)" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Abertura automática" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "GN (prioridade da distancia)" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "Repetición defFlash" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "Flash rebotado" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "Adaptador de flash largo" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "Ãmbar" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "Fonte de flash" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "Fonte de flash" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "Firmware do flash externo" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "Firmware do flash externo" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "Marcas do flash externo" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "Marcas do flash externo" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "Lonxitud focal do flash" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "Lonxitud focal do flash" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "Taxa de repetición do flash" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "Taxa de repetición do flash" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "Reconto de repetición do flash" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "Reconto de repetición do flash" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "Distancia do flash NG" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "Distancia do flash NG" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "Modo de control do grupo A de flash" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "Modo de control do grupo A de flash" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "Modo de control do grupo B de flash" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "Modo de control do grupo B de flash" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "Filtro de cor do flash" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "Filtro de cor do flash" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Contador de disparos" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Etiqueta de información de disparo Nikon descoñecida" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "Nivel do flash" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "Nivel do flash" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Etiqueta de información de disparo Nikon descoñecida" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "Axuste fino do AF" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "Axuste fino do AF" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Etiqueta de información de disparo Nikon descoñecida" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Etiqueta de información de disparo Nikon descoñecida" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "Acendido (3)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "Contador de disparos 1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "Contador de disparos 2" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "Redución da vibración 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "Redución da vibración 1" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "Contador de disparos 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "Contador de disparos 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "Redución das vibracións 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "Redución das vibracións 2" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "Etiqueta de información de disparo Nikon descoñecida" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "Niveis BB RBGG" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "Niveis BB RBGG" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Etiqueta Nikon de balance de cor 1 descoñecida" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "Niveis BB RGGB" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "Niveis BB RGGB" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Etiqueta Nikon de balance de cor 2 descoñecida" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Etiqueta Nikon de balance de cor 2a descoñecida" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Etiqueta Nikon de balance de cor 2b descoñecida" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "Niveis BB RGBG" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "Niveis BB RGBG" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Etiqueta Nikon de balance de cor 3 descoñecida" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "Niveis BB GRBG" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "Niveis BB GRBG" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Etiqueta Nikon de balance de cor 4 descoñecida" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "Número de ID da lente" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "Número de ID da lente" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "vr" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "Números F da lente" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Distancia focal mínima" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Distancia focal mínima" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Distancia focal máxima" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Distancia focal máxima" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Máxima abertura a mínimo foco" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Máxima abertura a mínimo foco" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Máxima abertura a máximo foco" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Máxima abertura a máximo foco" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "Versión MCU" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "Versión MCU" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Etiqueta Nikon de datos de lente 1 descoñecida" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "Cambio de posición DEC" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "Cambio de posición DEC" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "Abertura do AF" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "Abertura do AF" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "Abertura máxima efectiva" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "Abertura máxima efectiva" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Etiqueta Nikon de datos de lente 2 descoñecida" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "Abertura máxima en mínima distancia focal" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "Abertura máxima en máxima distancia focal" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Etiqueta Nikon de datos de lente 3 descoñecida" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Suxeito máis perto" + +#: src/nikonmn.cpp:1591 +#, fuzzy +msgid "Group dynamic-AF" +msgstr "Grupo dinámico" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "ningún" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "usado" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "Todos os 11 puntos" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Fotograma único" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Calidade estándar (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Calidade alta (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Super alta calidade (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "Activado (Predefinido)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Deportes" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Paisaxe+Retrato" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Autoretrato" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 en 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Noite+Retrato" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Comida" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Documentos" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "Disparar e seleccionar" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Praia e neve" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "Autoretrato+temporizador" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Candea" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "Luz dispoñíbel" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Detrás dun cristal" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "O meu modo" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Mascota" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "Submarino largo 1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "Macro submarino" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "Disparar e seleccionar 1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "Disparar e seleccionar 2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Estabilización dixital da imaxe" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "" +"\n" +"Accións:\n" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Submarino largo 2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Nenos" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "Macro natural" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "Instantánea submarina" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "Guía de disparo" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Interno + Externo" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Entrelazado" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progresivo" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Miniatura da imaxe" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Miniatura da imaxe" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Versión do firmware do corpo" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Versión do firmware do corpo" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Modo especial" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Modo de toma de imaxe" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Modo branco e negro" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Modo branco e negro" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Proporción de zoom dixital" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Diagonal do plano focal" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Diagonal do plano focal" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Parámetros de distorsión das lentes" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Parámetros de distorsión das lentes" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Tipo de cámara" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Tipo de cámara" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Formato ASCII de datos como [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID da Cámara" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Datos de ID da cámara" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Software" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Vista previa da imaxe" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Vista previa da imaxe" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Tipo de captura da escena" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Desprazamentos da captura" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Balance de brancos" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Balance de brancos de vermello" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "BB a un toque" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Balance de brancos automático" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Balance de brancos da forcada" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Balance de brancos da forcada" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmware" + +#: src/olympusmn.cpp:261 +#, fuzzy +msgid "Data Dump 1" +msgstr "Envorcado de datos 2" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Axustes varios da cámara 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Envorcado de datos 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Axustes varias da cámara 2" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Valor da velocidade do obturador" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "Valor da velocidade ISO" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Valor de abertura" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Valor do brillo" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Forcada" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Valor de compensación da exposición" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Sensor de temperatura" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Sensor de temperatura" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Temperatura da lente" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Temperatura da lente" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "Condicións de iluminación" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Condicións de iluminación" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Rango do enfoque" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "Rango do enfoque" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Zoom" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "Contador de pasos do zoom" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Macro foco" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "Contador de pasos de enfoque macro" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Factor de nitidez" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Factor de nitidez" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Nivel de carga do flash" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Nivel de carga do flash" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matriz de cor" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matriz de cor" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Nivel do negro" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Nivel do negro" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Modo de balance de brancos" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Balance de vermellos" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Balance de vermellos" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Balance de azuis" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Balance de azuis" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Número da matriz de cor" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Número da matriz de cor" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Número de serie 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Número de serie 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Compensación da exposición do flash" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Límite do flash externo" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Límite do flash externo" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Zoom do flash externo" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Zoom do flash externo" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Modo do flash externo" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Modo do flash externo" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Controlo de cor" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Control de cor" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Filtro de cor" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Filtro de cor" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Taxa de compresión" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Taxa de compresión" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Vista previa da imaxe incrustada" + +#: src/olympusmn.cpp:430 +#, fuzzy +msgid "Offset of the preview image" +msgstr "Tamaño da imaxe de visualización" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Tamaño da imaxe de visualización" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Modo de exploración CCD" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "Modo de exploración CCD" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Paso de lente infinito" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Paso de lente infinito" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "vr" + +#: src/olympusmn.cpp:445 +#, fuzzy +msgid "Near lens step" +msgstr "Paso de lente infinito" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Información do equipamento" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "Axustes da cámara (7D)" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr "Procesamento de imaxes" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Información de foco" + +#: src/olympusmn.cpp:463 +#, fuzzy +msgid "Focus sub-IFD" +msgstr "Información de foco" + +#: src/olympusmn.cpp:465 +#, fuzzy +msgid "Raw Info" +msgstr "Información VR" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Etiqueta OlympusMakerNote descoñecida" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Cambio de programa" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Promedio ponderado no centro" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "Patrón+AF" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Control de cor" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "EA sinxelo" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "EA multi" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "AF non usado" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "AF usado" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Non está preparado" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Preparado" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "Encher" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "Sincronización lenta" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "Forzado" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "2ª cortina" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "Canle 1, baixo" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "Canle 2, baixo" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "Canle 3, baixo" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "Canle 4, baixo" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "Canle 1, medio" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "Canle 2, medio" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "Canle 3, medio" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "Canle 4, medio" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "Canle 1, alto" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "Canle 2, alto" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "Canle 3, alto" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "Canle 4, alto" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500K (bo tempo con sombra)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (anubrado)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (choiva fina)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (lámpada incandescente)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (luz tipo tungsteno)" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Abertura automática" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Auto (flash)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (fluorescente luz de día)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (fluorescente branco neutro)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (fluorescente branco frio)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Fluorescente branco" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "BB a un toque" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "BB a un toque" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "BB a un toque" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "BB a un toque" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "BB personalizado 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "BB personalizado 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "BB personalizado 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "BB personalizado 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (vermello mellorado)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (verde mellorado)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (azul mellorado)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (ton de pel)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Filtro de ruído" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "Filtro de ruído (ISO Boost)" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Mudo" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "Monotono" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "Acendido, modo 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "Acendido, modo 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "Acendido, modo 3" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Versión dos axustes da cámara" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Versión dos axustes da cámara" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Vista previa válida" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Vista previa válida" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "Inicio de vista previa" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "Inicio de vista previa" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Tamaño da vista previa" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Lonxitude da imaxe previa" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Bloqueo de exposición automática" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "Cambio de exposición" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "Cambio de exposición" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Proceso de enfoque" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Proceso de enfoque" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "Busca do AF" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "Busca do AF" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Ãreas de AF" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Ãreas de AF" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "Punto de EA seleccionado" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "Axuste fino do AF" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "Axuste fino do AF" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "Control remoto do flash" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "Control remoto do flash" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "Modo de control do flash" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "Modo de control do flash" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "Intensidade do flash" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "Intensidade do flash" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "Fuerza do flash manual" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "Fuerza do flash manual" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Balance de brancos 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Balance de brancos 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Temperatura do balance de brancos" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Temperatura do balance de brancos" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Saturación personalizada" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Saturación personalizada" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Saturación modificada" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Saturación modificada" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Axuste do contraste" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Axuste da nitidez" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Corrección da distorsión" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Corrección da distorsión" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Compensación da sombra" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Compensación da sombra" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Factor de compresión" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Factor de compresión" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Graduación" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Modo de imaxe" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Modo de saturación da imaxe" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Modo de saturación da imaxe" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Modo de matíz da imaxe" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Modo de matíz da imaxe" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Modo de contraste da imaxe" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Modo de contraste da imaxe" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Modo de nitidez da imaxe" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Modo de nitidez da imaxe" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Modo de filtro de branco e negro da imaxe" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Modo de filtro de branco e negro da imaxe" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Modo de ton da imaxe" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Modo de ton da imaxe" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Filtro de ruído" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "Filtro artístico" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "Filtro artístico" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "Filtro máxico" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "Filtro artístico" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Modo panorama" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Modo panorama" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Calidada da imaxe 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Calidada da imaxe 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "Manómetro de presión" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Manómetro de presión" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Lectura do manómetro" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Lectura do manómetro" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Detección estendida do BB" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Detección estendida do BB" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "Etiqueta OlympusEq descoñecida" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "Versión do equipamento" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "Versión do equipamento" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Número de serie" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Número de serie da lente" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Número de serie da lente" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Versión do firmware das lentes" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Versión do firmware das lentes" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Máxima abertura co foco actual" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Máxima abertura co foco actual" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Propiedades das lentes" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Máxima abertura co foco actual" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Extensor" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Número de serie estendido" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Número de serie estendido" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Modelo estendido" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Modelo estendido" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Versión do firmware estendida" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Versión do firmware estendida" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Lentes de conversión" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Lentes de conversión" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Modelo do flash" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Modelo do flash" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Versión do firmware do flash" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Versión do firmware do flash" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Número de serie do flash" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Etiqueta OlympusEq descoñecida" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Alta Velocidade" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "Función superior" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "Alta velocidade avanzada" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "Función superior avanzada" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Orixinal" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Editado pPaisaxe)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Editado (retrato)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "Temperatura de color do BB" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "Punto gris do BB" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "Versión da información en bruto" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "Versión da información en bruto" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Valor de compensación da exposición" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Valor de compensación da exposición" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Valor do balance de brancos" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Valor do balance de brancos" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "Axuste fino do BB" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "Axuste fino do BB" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "Punto gris" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "Punto gris" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Énfase da saturación" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Énfase da saturación" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "Énfase da memoria de cor" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "Énfase da memoria de cor" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Valor do contraste" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Valor do contraste" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "Valor da nitidez" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Valor da nitidez" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Motor" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Editar o estado" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Axustes" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Etiqueta OlympusRd descoñecida" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Versión da información en bruto" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "Versión da información en bruto" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Axuste fino do balance de brancos" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "Saturación PM" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "Contraste PM" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "Nitidez PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "Filtro de B e N PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "Filtro de B e N PM" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "Ton da imaxe PM" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "Ton da imaxe PM" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "Graduación automática" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "Graduación automática" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "Filtro de ruído PM" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "Modo de filtro de branco e negro da imaxe" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Etiqueta OlympusRd2 descoñecida" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "Acendido (2 fotogramas)" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "Acendido (3 fotogramas)" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "Versión do procesado da imaxe" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "Versión do procesado da imaxe" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "Niveis BB RB 3000K" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "Niveis BB RB 3000K" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "Niveis BB RB 3300K" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "Niveis BB RB 3300K" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "Niveis BB RB 3600K" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "Niveis BB RB 3600K" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "Niveis BB RB 3900K" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "Niveis BB RB 3900K" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "Niveis BB RB 4000K" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "Niveis BB RB 4000K" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "Niveis BB RB 4300K" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "Niveis BB RB 4300K" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "Niveis BB RB 4500K" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "Niveis BB RB 4500K" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "Niveis BB RB 4800K" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "Niveis BB RB 4800K" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "Niveis BB RB 5300K" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "Niveis BB RB 5300K" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "Niveis BB RB 6000K" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "Niveis BB RB 6000K" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "Niveis BB RB 6600K" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "Niveis BB RB 6600K" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "Niveis BB RB 7500K" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "Niveis BB RB 7500K" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "Niveis BB RB CWB1" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "Niveis BB RB CWB1" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "Niveis BB RB CWB2" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "Niveis BB RB CWB2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "Niveis BB RB CWB3" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "Niveis BB RB CWB3" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "Niveis BB RB CWB4" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "Niveis BB RB CWB4" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "Nivel BB G 3000K" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "Nivel BB G 3000K" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "Nivel BB G 3300K" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "Nivel BB G 3300K" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "Nivel BB G 3600K" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "Nivel BB G 3600K" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "Nivel BB G 3900K" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "Nivel BB G 3900K" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "Nivel BB G 4000K" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "Nivel BB G 4000K" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "Nivel BB G 4300K" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "Nivel BB G 4300K" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "Nivel BB G 4500K" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "Nivel BB G 4500K" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "Nivel BB G 4800K" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "Nivel BB G 4800K" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "Nivel BB G 5300K" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "Nivel BB G 5300K" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "Nivel BB G 6000K" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "Nivel BB G 6000K" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "Nivel BB G 6600K" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "Nivel BB G 6600K" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "Nivel BB G 7500K" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "Nivel BB G 7500K" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "Nivel BB G" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "Nivel BB G" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "Mellorador" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Valores do mellorador" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "Valores do mellorador" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Filtro de cor" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Valor do contraste" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Valor do contraste" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Nivel de negro" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Ganancia base" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Ganancia base" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Recorte pola esquerda" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Recorte pola esquerda" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Recotre por enriba" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Recorte por enriba" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Recorte na largura" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Recorte na largura" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Recorte na altura" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Recorte na altura" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "Modo de exposición múltiple" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "Modo de exposición múltiple" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "Relación de aspecto" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "Relación de aspecto" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Relación de aspecto" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Relación de aspecto" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "Detección da faciana" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "Detección da faciana" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "Ãrea de detección da faciana" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "Ãrea de detección da faciana" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Etiqueta OlympusIp descoñecida" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "Rebotar ou apagar" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "Directo" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus Info Version" +msgstr "Versión da información do foco" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Versión da información do foco" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Enfoque automático" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "Detección de escena" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "Detección de escena" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Ãrea de escena" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Ãrea de escena" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Datos de detección de escena" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Datos de detección de escena" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Contador de pasos do zoom" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Contador de pasos do enfoque" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Contador de pasos do enfoque" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Paso de foco infinito" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Paso de foco infinito" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Paso de foco próximo" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Paso de foco próximo" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Flash externo" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Número de guía do flash externo" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Número de guía do flash externo" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Flash manual" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Flash manual" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Etiqueta OlympusFi descoñecida" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "Etiqueta OlympusFe descoñecida" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "Bo tempo" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "Tungsteno (incandescente)" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "Luz nocturna" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Fluorescente luz de día (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Fluorescente branco diúrno (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Fluorescente branco frío (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Fluorescente branco (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Balance de brancos a un toque" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "Personalizado 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "Versión da información en bruto" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "Versión da información en bruto" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "Niveis BB_RB usados" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "Niveis BB_RB usados" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "Niveis BB_RB automaticos" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "Niveis BB_RB automaticos" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "Niveis BB_RB sombra" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "Niveis BB_RB sombra" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "Niveis BB_RB anubrado" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "Niveis BB_RB anubrado" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "Niveis BB_RB bo tempo" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "Niveis BB_RB bo tempo" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "Niveis WB_RB tungsteno" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "Niveis WB_RB tungsteno" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "Niveis BN_RB luz solar" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "Niveis BN_RB luz solar" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "Niveis BN_RB fluorescente luz de día" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "Niveis BN_RB fluorescente luz de día" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "Niveis BN_RB fluorescente branco diúrno" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "Niveis BN_RB fluorescente branco diúrno" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "Niveis BN_RB fluorescente branco frío" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "Niveis BN_RB fluorescente branco frío" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "Niveis BN_RB fluorescente branco" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "Niveis BN_RB fluorescente branco" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Matriz de cor 2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Matriz de cor 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Nivel de negro 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Nivel de negro 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "Coeficientes YCbCr" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "Coeficientes YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "Profundidade de píxel válida" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "Profundidade de píxel válida" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Compensación do balance de brancos" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Compensación do balance de brancos" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "Axuste da saturación" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "Axuste do matiz" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "Axuste do matiz" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "Compensación da exposición CM" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "Compensación da exposición CM" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "Balance de brancos CM" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "Balance de brancos CM" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "Compensación do balance de brancos CM" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "Compensación do balance de brancos CM" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "Punto gris do balance de brancos CM" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "Punto gris do balance de brancos CM" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "Saturación CM" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "Saturación CM" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "Matiz CM" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "Matiz CM" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "Contraste CM" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "Contraste CM" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "Nitidez CM" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "Nitidez CM" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "Etiqueta OlympusRi descoñecida" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Seleccionado polo usuario" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Substituir automaticamente" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Rápido" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "Un toque" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-EA" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-EA" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "Enfoque automático Imager" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "Sensor AF" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "Foco suave" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "Arte Pop" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "Cor pálida e luminosa" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "Ton suave" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "Cámara estenopeica" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "Película granulada" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Panorama" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "Proceso cruzado" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Ollo de peixe" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "Debuxo" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +#, fuzzy +msgid "Pale & Light Color II" +msgstr "Cor pálida e luminosa" + +#: src/olympusmn.cpp:1514 +#, fuzzy +msgid "Pop Art II" +msgstr "Arte Pop" + +#: src/olympusmn.cpp:1515 +#, fuzzy +msgid "Pin Hole II" +msgstr "Cámara estenopeica" + +#: src/olympusmn.cpp:1516 +#, fuzzy +msgid "Pin Hole III" +msgstr "Cámara estenopeica" + +#: src/olympusmn.cpp:1517 +#, fuzzy +msgid "Grainy Film II" +msgstr "Película granulada" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Foco suave" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Cor natural" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Abertura mínima" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Selección" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Proceso cruzado" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Cor natural" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Cor natural" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Cor natural" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Cor natural" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Cor natural" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "Esquerda (ou n/d)" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "Centro (horizontal)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "Centro (vertical)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "Superior esquerda (horizontal)" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "Superior centro (horizontal)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "Superior dereita (horizontal)" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "Esquerda (horizontal)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "Centro-esquerda (horizontal)" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "Centro-dereita (horizontal)" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "Dereita (horizontal)" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "Abaixo-esquerda (horizontal)" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "Abaixo-centro (horizontal)" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "Abaixo-dereita (horizontal)" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "Arriba-esquerda (vertical)" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "Arriba-centro (vertical)" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "Arriba-dereita (vertical)" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "Eesquerda (vertical)" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "Centro-esquerda (vertical)" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "Certro-dereita (vertical)" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "Dereita (vertical)" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "Abaixo-esquerda (vertical)" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "Abaix-centro (vertical)" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "Abaixo-dereita (vertical)" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Ãrea única" + +#: src/olympusmn.cpp:1681 +#, fuzzy +msgid "All Target" +msgstr "destino" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Axuste do rango dinámico" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Moi alta" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Imaxe en movemento" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Filme pequeno" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Filme" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halóxeno" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "Auto, botón de enfoque" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "Auto, continuo" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "Panorámica" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Tele-macro" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Macro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Escena" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Prioridade da velocidade de disparo" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "Vista previa do filme" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "Simple" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "Efectos de cor" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Escena nocturna" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "Bebé" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "Pel suave" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Luz de vela" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Noite estrelada" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "Alta sensibilidade" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Asistente de panorama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "Foto aérea" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "ISO intelixente" + +#: src/panasonicmn.cpp:144 +msgid "Clipboard" +msgstr "" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "Disparador continuo de alta velocidade" + +#: src/panasonicmn.cpp:146 +#, fuzzy +msgid "Intelligent auto" +msgstr "Modo intelixente automático" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Puntos múltiples" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Rango de transferencia" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Compensación do flash" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Escáner de filmes" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "As miñas cores" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Fotograma panorámico" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Solpor manual" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Control remoto" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Filtro dixital" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Autoretrato" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Relación" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Escena nocturna" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Valor do brillo" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "Iluminación da área AF" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Retrato nocturno" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Cálido" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Frío" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Calidade alta/baixa" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "Infinito" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "Medio baixo" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "Medio alto" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "Baixo (-1)" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "Alto (+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Menor (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "Maior (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "Rotar 90 SH" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Non requirido" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Non requirido" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "Óptica EX" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Telefoto" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "Fogar" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Estándar (cor)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "Dinámico (cor)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Natural (cor)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "Suave (cor)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Estándar (B e N)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "Dinámico (B e N)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "Suave (B e N)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Vibrante" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Forcada" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Extensor" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Automático" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Formulario estándar" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "Rotar 90 SH" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "Rotar 90 SH" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "De esquerda a dereita" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "De dereita a esquerda" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "De arriba a abaixo" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "De abaixo a arriba" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Hora de creación" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Información de posición de foco AF" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Selección" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Son" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Axuste de balance de brancos" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Compensación do flash" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Versión Exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Efecto de cor" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Efecto de cor" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"Tempo, en 1/100 de segundo, desde que a cámara foi acendida ata que a imaxe " +"é gravada na tarxeta de memoria" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Modo raxada" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Modo raxada" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Redución de ruído" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Temporizador" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Asistente do AF" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "Idade do bebé" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby (or pet) age 1" +msgstr "Idade do bebé (ou mascota)" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "Modo de zoom óptico" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "Modo de zoom óptico" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "Día de viaxe" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "Día de viaxe" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Localización de tempo universal" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Localización de tempo universal" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "Marca GPS de tempo" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "Programa ISO" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Tipo de escena" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "Marca GPS de tempo" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Faciana detectada" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Axuste da temperatura da cor" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Temperatura da cor" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "En forcada" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "Ajuste AB de balance de brancos" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" +"Balance de brancos AB. Un valor positivo representa un desprazamento cara ao " +"azul" + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "Axuste GM do balance de brancos" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" +"Axuste GM do BB. Un valor positivo representa un desprazamento cara ao verde" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Información do flash" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Redución do ruído de alta exposición" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Posición de foco AF" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Detección da faciana" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "Tipo de accesorio" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "Tipo de accesorio" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Número de serie da lente" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "Rango de transferencia" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Modo intelixente automático" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Versión do firmware" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Recoñecemento de faciana do AF" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Aviso de foco" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Medición do flash" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Título" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Idade do bebé" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby name (or pet name)" +msgstr "Idade do bebé (ou mascota)" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Lugar" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Estado" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Modo intelixente automático" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Velocidade do obturador" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Rango dinámico de desenvolvemento" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Sen retoque" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Cidade" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Estilo da imaxe" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Orientación da imaxe" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "Ãngulo de recorte" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Dirección do panorama" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Gravación RAW+JPG" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Interno + Externo" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Velocidade do obturador" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Valor da abertura" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "AF a un toque" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "Versión da nota do fabricante" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "Versión da nota do fabricante" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "Nivel de vermello do BB" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "Nivel de vermello do BB" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "Nivel de verde do BB" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "Nivel de verde do BB" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "Nivel de azul do BB" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "Nivel de azul do BB" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "Marca GPS de tempo" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "Marca GPS de tempo" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "Idade do bebé" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby (or pet) age 2" +msgstr "Idade do bebé (ou mascota)" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "Rango de transferencia" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Etiqueta PanasonicMakerNote descoñecida" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "Enfoque puntual" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +#, fuzzy +msgid "1-area (high speed)" +msgstr "Recorte de alta velocidade" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +#, fuzzy +msgid "3-area (right)" +msgstr "Altura da aÅ•ea AF" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Punto de enfoque X" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "non estabelecido\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "Versión do firmware das lentes" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Largura do sensor" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Largura do sensor" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Altura do sensor" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Altura do sensor" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Bordo superior do sensor" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Bordo superior do sensor" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Bordo esquerdo do sensor" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Bordo esquerdo do sensor" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Balance de vermellos (atopado en imaxes Digilux 2 RAW)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Fabricante" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "O fabricante do equipamento de gravación" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Modelo" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "O nome ou número do modelo do equipamento" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +#, fuzzy +msgid "Strip Offsets" +msgstr "Desprazamentos do mosaico" + +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "Desprazamentos da captura" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientación" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "Rows Per Strip" +msgstr "Filas por tira" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "The number of rows per strip" +msgstr "O número de golpes" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Cantidade de bytes por tira" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Cantidade de bytes por tira" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "Desprazamento VRD" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "Desprazamento da área da imaxe" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Punteiro Exif IFD" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "Un punteiro para o IFD de Exif" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "Punteiro de información IFD do GPS" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "Un punteiro de información IFD do GPS" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Etiqueta PanasonicRaw descoñecida" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Escena nocturna" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Bo" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Mellor" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "O mellor" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 ou 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 ou 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 ou 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Automático. Non se disparou o flash." + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Non disparou." + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Automático. Non se disparou o flash, redución de ollos vermellos." + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Automático. Disparado" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Disparado" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Automático, disparado, redución de ollos vermellos." + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Acendido, redución de ollos vermellos." + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Ancendido, suave" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Ancendido, sincronización lenta" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Ancendido, sincronización lenta, redución de ollos vermellos." + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "Acendido, sincronizacion da cortinilla traseira" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Enfoque panorámico" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "AF-A" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Detección de contraste AF" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Detección de contraste AF" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Fixado no centro" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "Seguimento automático do AF" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "Recoñecemento de faciana do AF" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Selección" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "Fixado no centro ou múltiple" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Arriba-centro" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Abaixo-centro" + +#: src/pentaxmn.cpp:402 +#, fuzzy +msgid "Multi Segment" +msgstr "Multisegmento" + +#: src/pentaxmn.cpp:403 +#, fuzzy +msgid "Center Weighted" +msgstr "Peso centrado" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "Fluorescente luz de día" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "Fluorescente branco diúrno" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "Fluorescente branco" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Axuste da temperatura da cor" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Seleccionado polo usuario" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto (luz diúrna)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Auto (sombra)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (flash)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (tungsteno)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (flourescente branco diúrno)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (flourescente branco diúrno)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (fluourescente branco)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (anubrado)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Predef. (fogos de artificio?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Medio baixa" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Medio alta" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Medio suave" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "Medio dura" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Moi suave" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Moi dura" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +#, fuzzy +msgid "Home town" +msgstr "Cidade de procedencia" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulú" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Francisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Os Ãnxeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgari" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Cidade de México" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "Nova Iorque" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracas" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Bos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "São Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Londres" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paris" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Milan" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rome" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlín" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Iohanesburgo" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istambul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "O Cairo" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Xerusalem" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moscova" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Therán" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubai" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Carachi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Cabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Deli" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Catmandú" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Iangon" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Quala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientiane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapura" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Xakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Beixín" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Shanghai" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Taipei" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaida" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Toquio" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sidney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Noumea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dacar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Alxeria" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinqui" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Atenas" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Estocolmo" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lisboa" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Copenhagen" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Non procesado" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "tamaño" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Recortado" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Filtro dixital" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "¿Síntesis de marco?" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Programa de alta velocidade" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Programa DOF" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "Programa MTF" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Retrato de escena nocturna" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Sen flash" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surf e neve" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Pícaros" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "Iluminación de escenario" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "Instantánea nocturna" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "Azul" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Escena nocturna" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Super macro" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "Fluorescente" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (estándar)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (retrato)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (paisaxe)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (macro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (deporte)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Modo verde" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Prioridade da velocidade de disparo" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Prioridad da abertura" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Lámpada" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Cambio de programa Tv" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Cambio de programa Av" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Prioridade da abertura (abertura automática apagada)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manual (abertura automática apagada)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Lámpada (abertura automática apagada)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Prioridade do disparo" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Disparo e prioridade de abertura AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Disparo e prioridade de abertura AE (1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "Prioridade da sensibilidade AE" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "Prioridade da sensibilidade AE (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "Velocidade AE Flash X-Sync" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "Velocidade AE Flash X-Sync" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Programa (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Programa (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Programa (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Control de cor" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "Vídeo (30 fps)" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "Vídeo (24 fps)" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Continuo (Alto)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Raxada" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "Vídeo" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Temporizador (12 sec)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Temporizador (2 sec)" + +#: src/pentaxmn.cpp:669 +#, fuzzy +msgid "Mirror Lock-up" +msgstr "Bloqueo do espello" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Control remoto (3 seg.)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Control remoto" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Disparador continuo de alta velocidade" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Forte" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Forte" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Forte" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Automático" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 ou sen lentes" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "M-42 ou sen lentes" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Lentes serie A" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Brillante" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "Filme reversíbel" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Máis feble" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Feble" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Forte" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Sen forcada estendida" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "BB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "BB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Descoñecido " + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Versión da nota do fabricante Pentax" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Modo de disparo da cámara" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Resolución da vista previa dunha imaxe" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Lonxitude da vista previa dunha imaxe" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "Tamaño dun IFD que conten unha vista previa da imaxe" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Identificación do modelo" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Identificación de modelo Pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Data" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Hora" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Axustes da calidade da imaxe" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Axustes do tamaño da imaxe" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Axustes do modo do flash" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Axustes do modo do enfoque" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Punto AF seleccionado" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "Punto AF en foco" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "Número F" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "Sensibilidade ISO" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Axustes da sensibilidade ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Modo de medición" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Forcada automática" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "Balance de cor azul" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Balance de cor vermello" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Lonxitude focal" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Cidade de procedencia" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "DST (horario de verán) na cidade de procedencia" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Se o horario de verán (DST) está activo na cidade de procedencia" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "DST (horario de verán) no destino" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Se o horario de verán (DST) está activo no destino" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "VertsiónFirmwareDSP" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "VertsiónFirmwareCPU" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Valor da luz" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" +"A cámara calculou o valor da luz, incluída a compensación por exposición" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "Desprazamento da área da imaxe" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "Tamaño da imaxe RAW" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Bordos da imaxe previa" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Axuste de sensibilidade" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Filtro dixital" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Temperatura da cámara" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Ton da imaxe" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Redución da vibración" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Información da redución da vibración" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "Rango dinámico de expansión" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Redución de ruído ISO alta" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "Axuste do AF" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Punto negro" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Punto branco" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Información do disparo" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "Información do AE" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Información da lente" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Información do flash" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "Segmentos de medición AE" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "Envorcado flash A" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "Envorcado flash B" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "Niveis da luz de día BB_RGGB" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "Niveis de sombra BB_RGGB" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "Niveis de anubrado BB_RGGB" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "Niveis de tungsteno WB_RGGB" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "Niveis de fluorescentes D BB_RGGB" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "Niveis de fluorescentes N BB_RGGB" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "Niveis de fluorescentes W BB_RGGB" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "Niveis de flash BB_RGGB" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Info da cámara" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Info da batería" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "Info do AF" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "Info da cor" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Etiqueta PentaxMakerNote descoñecida" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Esquena Dublin Core" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "Esquema do xestor de fotos digiKam" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "Esquema da interface do programa de imaxe de KDE" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "Esquema básico XMP" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "Esquema de xestión de dereitos XMP" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "Esquema de xestión de medios XMP" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "Esquema básico de fichas de traballo XMP" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "Esquema XMP de páxinado de texto" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "Esquema de medios dinámicos XMP" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Esquema de fotos Microsoft" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Esquema Adobe photoshop" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Esquema Adobe PDF" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Esquema Adobe photoshop" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Esquema RAW de cámara" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Propiedades do esquema Exif para TIFF" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Esquema Exif para as propiedades específicas de Exif" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Esquema Exif para as propiedades adicionais de Exif" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "Esquema IPTC Core" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "Esquema da Extensión IPTC" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "Esquema do formato de datos de licenza PLUS" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "Esquema iView Media Pro" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "Esquema Expression Media" + +#: src/properties.cpp:134 +#, fuzzy +msgid "Microsoft Photo 1.2 schema" +msgstr "Esquema de fotos Microsoft" + +#: src/properties.cpp:135 +#, fuzzy +msgid "Microsoft Photo RegionInfo schema" +msgstr "Esquema de fotos Microsoft" + +#: src/properties.cpp:136 +#, fuzzy +msgid "Microsoft Photo Region schema" +msgstr "Esquema de fotos Microsoft" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "Esquema da Extensión IPTC" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "Esquema da Extensión IPTC" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Esquena Dublin Core" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Esquena Dublin Core" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Esquema Adobe PDF" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Estrutura do colorante" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Estrutura das dimensións" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Estrutura do tipo de letra" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Estructura da miniatura" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Estructura da acción do recurso" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "Estrutura ResourceRef" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Estrutura da versión" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Estructura básica de traballo/fluxo de traballo" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Estrutura do colorante" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Cualificador para xmp:Identifier" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Colaborador" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Colaboradores do recurso (ademais dos autores)." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Cobertura" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"O asunto espacial ou temporal do recurso, a aplicabilidade espacial do " +"recurso, ou a xurisdición baixo a que o recurso é relevante." + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Creador" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" +"Os autores do recurso (enumerados en orde de prioridade, de seren " +"significativo)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Data(s) na(s) que aconteceu algo importante no recurso." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Unha descrición textual do contido do recurso. Pode haber valores para cada " +"idioma." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Formato" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"O formato do ficheiro cando se garda o recurso. Os aplicativos e ferramentas " +"deben estabelecer esta propiedade de gardado de formato da información. Pode " +"incluír cualificadores axeitados." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identificador" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Identificador único do recurso. Recomendase identificar o recurso mediante " +"unha cadea que se axuste a un sistema de identificación convencional." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "Unha matriz desordenada especificando os idiomas usados no recurso." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Editor" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Unha entidade responsábel de facer que os recursos estean dispoñíbeis. Como " +"exemplo dun editor inclúese a unha persoa, unha organización ou un servizo. " +"Normalmente o nome do editor debe empregarse para indicar á entidade." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Relación" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Relacións con outros documentos. Recomendase, como boa práctica, identificar " +"o recurso mediante unha cadea que se axuste a un sistema de identificación " +"convencional" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Dereitos" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Declaración informal de dereitos, seleccionado por idioma. Normalmente os " +"dereitos de información inclúen unha declaración sobre varios dereitos de " +"propiedade asociados co recurso, incluíndo os dereitos de propiedade " +"intelectual." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Identificador único do traballo do que deriva este recurso." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Unha matriz desordenada de frases descritivas ou palabras clave que " +"especifican o asunto do contido do recurso." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"O título do documento ou o nome dado ao recurso. Normalmente, será un nome " +"co que é formalmente coñecido o recurso." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Tipo" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "Un tipo de documento, por exemplo novela, poema, manuscrito." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Lista de etiquetas" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"A lista da ruta completa das etiquetas como cadea. A xerarquía da ruta " +"separase co carácter «/» (ex.: «Cidade/Vigo/Museo/Quiñones de León»." + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Lendas de nomes de autor" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" +"Lista de todas as lendas de nomes de autor para cada xogo de lendas de " +"idiomas alternativos en etiquetas XMP estándar." + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "Lendas nas marcas de data e hora" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" +"Lista de todas as lendas de marcas de data e hora para cada xogo de lendas " +"de idiomas alternativos en etiquetas XMP estándar." + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Historial da imaxe" + +#: src/properties.cpp:197 +#, fuzzy +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" +"Contido baseado en XML para listar todas as accións procesadas nesta imaxe " +"co editor de imaxes (como recortes, rotacións, correccións de cores, " +"axustes, etc)" + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "Axustes de corrección de lente" + +#: src/properties.cpp:198 +#, fuzzy +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" +"A lista de ferramentas de axustes de corrección de lente para reparar a " +"distorsión de lente. Isto inclúe o xestor de colas de lotes e ferramentas do " +"editor de imaxes baseado na biblioteca LensFun" + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Etiqueta de cor" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" +"A etiqueta de cor asignada a este elemento. Os valores posíbeis son «0»: sen " +"etiqueta; «1»: vermello; «2»: laranxa; «3»: marelo; «4»: verde; «5»: azul; " +"«6»: maxenta; «7»: gris; «8»: negro; «9»: branco." + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Etiqueta" + +#: src/properties.cpp:200 +#, fuzzy +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" +"A etiqueta de cor asignada a este elemento. Os valores posíbeis son «0»: sen " +"etiqueta; «1»: vermello; «2»: laranxa; «3»: marelo; «4»: verde; «5»: azul; " +"«6»: maxenta; «7»: gris; «8»: negro; «9»: branco." + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Ficheiros entrada Enfuse" + +#: src/properties.cpp:206 +#, fuzzy +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" +"A lista de ficheiros procesados con Enfuse a través da ferramenta " +"ExpoBlending." + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "Ficheiros entrada Enfuse" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" +"A lista de ficheiros procesados con Enfuse a través da ferramenta " +"ExpoBlending." + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Axustes de Enfuse" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" +"A lista de axustes Enfuse usada para mesturar a rima da imaxe coa ferramenta " +"ExpoBlending" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Consultivo" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"Unha matriz desordenada especificando as propiedades que foron editadas fora " +"do aplicativo de creación. Cada elemento debe conter un só nome e XPath " +"separado por un espazo ASCII (U +0020)." + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "URL base" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"O URL base para os URL relativos no contido do documento. Se este documento " +"conten ligazóns a Internet, e estas ligazóns son relativas, serán relativas " +"a este URL. Esta propiedade fornece un modo estándar para que os URL " +"relativos incrustados sexan interpretados polas ferramentas. As ferramentas " +"de creación web deberían estabelecer o valor baseándose na súa noción/" +"opinión de onde serán interpretados os URL." + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Data de creación" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "O día e a hora na que se creou orixinalmente o recurso." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Ferramenta do creador" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"O nome da primeira ferramenta coñecida para crear o recurso. Se os metadatos " +"inclúen o historial, este valor debe ser equivalente á propiedade " +"«softwareAgent» de «xmpMM:History»." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Unha matriz desordenada de cadeas de texto que identifican sen ambigüidade o " +"recurso dentro dun contexto dado. Unha matriz de elementos pode ser " +"cualificada con xmpidq:Scheme para denotar o sistema de identificación " +"formal ao cal se axusta o identificador. Nota: a propiedade dc:identifier " +"non se usa por carecer de un cualificador de esquema definido e foi definida " +"na Especificación XMP como unha propiedade simple (de valor único)" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Etiqueta" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"Unha palabra ou frase breve que identifica un documento como membro duna " +"colección definida polo usuario. Utilizase para organizar documentos nun " +"explorador de ficheiros." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Data dos metadatos" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"A data e a hora na que foron modificados os metadatos do recurso. Debe ser " +"igual ou máis recente que «xmp:ModifyDate»." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Data modificada" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"A data e a hora nas que se modificou por última vez o recurso. Nota: o valor " +"desta propiedade non é necesariamente o mesmo que a data de modificación do " +"ficheiro do sistema, xa que se estabelece antes de sexa gardado o ficheiro." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Alcume" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Un nome informal curto para o recurso." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Clasificación" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Número que indica o estado do documento en relación a outros documentos, " +"utilizase para organizar os documentos nun explorador de ficheiros. Os " +"valores son definidos polo usuario dentro dun rango definido polo aplicativo." + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Miniaturas" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Unha matriz alternativa de imaxes en miniatura dun ficheiro, que poden " +"diferir en características tales como o tamaño ou a codificación da imaxe." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Certificado" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Certificado de xestión en liña de dereitos" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Marcado" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Indica que isto é un recurso con dereitos xestionados." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Propietario" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" +"Unha matriz non ordenada especificando o(s) propietario(s) legal(is) dun " +"recurso." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Termos de uso" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Texto con instrucións sobre como se pode usar legalmente o recurso." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Declaración Web" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Localización do web onde se describe o propietario e/ou a declaración de " +"dereitos sobre este recurso." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Derivado de" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "ID do documento" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "Historial" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "ID da instancia" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Xestionado desde" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Xefe/a" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "Xestionado desde" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "Xefe/a" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "Xefe/a" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +#, fuzzy +msgid "Rendition Class" +msgstr "A partires de" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +#, fuzzy +msgid "Rendition Params" +msgstr "A partires de" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +#, fuzzy +msgid "Version ID" +msgstr "ID da versión GPS" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Versións" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Último URL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Obsoleto para a protección da intimidade" + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "A partires de" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Obsoleto en favor de xmpMM:DerivedFrom. Unha referencia ao documento do que " +"este é unha modificación" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "ID de gardado" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" +"Obsoleto. Usado anteriormente só para compatibilidade coa propiedade xmpMM:" +"LastURL" + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Referencia da tarefa" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Tamaño máximo de páxina" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"Tamaño da páxina máis grande do documento (incluíndo calquera dos documentos " +"contidos)." + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Número de páxinas" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" +"O número de páxinas no documento (incluíndo calquera dos documentos " +"contidos)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Tipos de letra" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Unha matriz desordenada dos tipos de letra que se usaron no documento " +"(incluíndo calquera dos documentos contidos)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Colorantes" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Unha matriz ordenada de colorantes (mostras) que son utilizados no documento " +"(incluíndo calquera dos documentos contidos)" + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "Nome da cinta" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Una matriz organizada de nomes de paletas que se necesitan para imprimir o " +"documento (incluíndo calquera documento contido)" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Referencia de proxecto" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "Referencia ao proxecto que creou o ficheiro." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Taxa de fotogramas do vídeo" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Taxa de fotogramas do vídeo. Un de: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Tamaño do fotograma do vídeo" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "O tamaño do fotograma. Por exemplo: w:720, h: 480, unidade:píxeles" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Relación de aspecto do píxel de vídeo" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" +"Relación de aspecto, expresada como alto/largo. Por exemplo: «648/720» = 0.9" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Profundidade do píxel de vídeo" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"O tamaño en bits de cada compoñente da cor dun píxel. Os píxeles estándar de " +"Windows 32-bit teñen 8 bits por compoñente. Un de: 8Int, 16Int, 32Int, " +"32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Espazo da color de vídeo" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"O espazo da color. Un de: sRGB (utilizado por Photoshop), CCIR-601 " +"(utilizado por NTSC), CCIR-709 (utilizado por HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Modo alpha de vídeo" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "O modo alfa. Un de: directo, pre-multiplicado." + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "Cor pre-múltipla para alfa de vídeo" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" +"Unha cor en CMYK ou RGB a usar como a color pre-múltipla cando o modo alfa é " +"pre-multiplicado." + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "A unidade alpha de vídeo é transparente" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "Cuando é certo, a unidade está limpa, cando é falso, está opaca." + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Compresor de vídeo" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Compresión de vídeo usada. Por exemplo, jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Orde do campo de vídeo" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "A orde dos campos para vídeo. Un de: superior, inferior, progresivo." + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Baixar" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" +"A fase de mostraxe do filme que vai seren convertido a vídeo (baixar ou pull-" +"down). Un de: WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, " +"SWWWS_24p, WWWSS_24p, WWSSW_24p." + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Taxa de mostraxe de son" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"A taxa de mostraxe de son. Pode ser calquera valor, mais comunmente 32.000, " +"41.100 ou 48.000" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Tipo de mostraxe de son" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Tipo de mostraxe de son. Un de: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Tipo de cale de son" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Tipo de cale de son. Un de: Mono, Estéreo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Compresor de son" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "O compresor de son usado. Por exemplo MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Emprazamento do narrador" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" +"Unha descrición dos ángulos en que están os altofalantes respecto da fronte " +"en graos. Por exemplo: «Esquerda = -30, Dereita = 30, Centro = 0, LFE = 45, " +"Envolvente esquerdo = -110, Envolvente dereito = 110»" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Taxa de datos de ficheiro" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" +"A taxa de datos do ficheiro en megabytes por segundo. Por exemplo: «36/10» = " +"3.6 MB/seg." + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Nome da cinta" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" +"O nome da cinta da que foi capturado o fragmento de filme, tal como se " +"estabeleceu durante o proceso de captura." + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Nome alternativo da cinta" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" +"Un nome de cinta alternativo, especificado a través da xanela do proxecto ou " +"do diálogo do código de tempo en Premiere. Se se especifica un nome " +"alternativo e non foi revertido, mostrarase este nome." + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Código de inicio de tempo" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" +"Código de tempo do primeiro fotograma do vídeo no ficheiro, obtido do " +"control do dispositivo." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Código de tempo alternativo" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"Un código de tempo estabelecido polo usuario. Cando se especifica, usase " +"este no canto do código de tempo de inicio." + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "DuracioÌn" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Duración do ficheiro multimedia." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Escena" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "O nome da escena" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Nome da toma" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "O nome da toma" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Data da toma" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Data e hora da toma" + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Localización da toma" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"O nome da locación onde foi gravado o vídeo. Por exemplo: «Oktoberfest, " +"Munich Alemaña» Para un posicionamento máis preciso, use os valores GPS de " +"EXIF." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Comentario do rexistro" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Comentarios do rexistro do usuario." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Marcadores" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "Unha lista ordenada de marcadores" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Medios que colaboraron" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" +"Unha lista desordenada de todos os medios usados para crear este recurso." + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "Ruta absoluta do ficheiro de picos de son" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"A ruta absoluta ao ficheiro de picos de son. Se está baleira, non existen " +"ficheiros de picos." + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "Ruta relativa do ficheiro de picos de son" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"A ruta relativa ao ficheiro de picos de son. Se está baleira, non existen " +"ficheiros de picos." + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Data de modificación do vídeo" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Data e hora da última modificación do vídeo." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Data de modidicación do son" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Data e hora da última modificación do son." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Data de modificación dos metadatos" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Data e hora da última modificación dos metadatos." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Artista" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Nome do artista ou artistas." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Ãlbum" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Nome do álbum." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Número de pista" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" +"Un valor numérico que indica a orde do ficheiro de son que é a gravación " +"orixinal." + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Xénero" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Nome do xénero." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Información dos dereitos de autoría." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "A data na que se publicou o título." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Compositor" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Nome do compositor" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Enxeñeiro" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Nome do enxeñeiro" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Tempo do son" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Instrumento" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Instrumento musical." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Tempo de introdución" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "A duración ou tempo de execución para poñer música na cola." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Referencia externa" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "Tempo no que facer o fundido de saída" + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Marca de tempo relativo" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "A hora de inicio do medio no proxecto de son." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Bucle" + +#: src/properties.cpp:384 +#, fuzzy +msgid "When true, the clip can be looped seamlessly." +msgstr "" +"Cando é verdadeiro, o fragmento do filme pódese repetir indefinidamente" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Número de golpes" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "O número de golpes" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Clave" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"A clave musical do son. Unha de: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Modo de estiramento" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"O modo de estiramento do sono. Un de: lonxitude fixa, escala de tempo, nova " +"mostraxe, empalme de golpe, híbrido." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Parámetros da escala de tempo" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "Parámetros adicionais para o modo de «estirado» da escala de tempos" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Parámetros de nova mostraxe" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Parametros adicionais para o modo de mostraxe." + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Parámetros de empalme de golpe" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Parámetros adicionais para o modo de empalme de golpe" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Signatura musical" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"Signatura musical. Unha de: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, outra." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" +"Escala musical usada na música. Unha de: Maior, menor, ambas, ningunha. " +"Ningunha é a máis frecuente para instrumentos sen asociación de escala, " +"tales como a percusión." + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Número de serie da cámara" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Número de serie da cámara." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Data de compra" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Data de compra." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Fabricante do flash" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Fabricante do flash." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Modelo do flash." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Última palabra clave IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Última palabra clave IPTC" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Última palabra clave XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Última palabra clave XMP" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Fabricante das lentes" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Fabricante das lentes." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Modelo das lentes." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Porcentaxe de taxa" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Porcentaxe de taxa." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Información da imaxe" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Palabras chave." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "Versión de PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Versión do ficheiro PDF (por exemplo: 1.0, 1.3, e demais)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Creado con" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Nome da ferramenta coa que se creou o documento PDF." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Posición de autores" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "Título por liña" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Escritor del encabezamiento" + +#: src/properties.cpp:429 +#, fuzzy +msgid "Writer/editor." +msgstr "Escritor" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Categoría. Limitado a 3 caracteres ASCII de 7-bit." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Cidade" + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "País/localización primaria" + +#: src/properties.cpp:433 +#, fuzzy +msgid "Credit." +msgstr "Crédito" + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" +"A data na que se creou o contido intelectual do documento (no canto da data " +"de creación da representación física), seguindo as convencións IIM. Por " +"exemplo, unha foto tomada durante a «Guerra civil americana» tería unha data " +"de creación durante esa época (1861-1865) no canto da data na que foi " +"dixitalizada a foto para o seu arquivado." + +#: src/properties.cpp:438 +#, fuzzy +msgid "Headline." +msgstr "Encabezamento" + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Instrucións especiais." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Orixe" + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Provincia/estado" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Categoría suplementaria" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Referencia da transmisión orixinal." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Urxencia. Rango válido 1-8" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "polgadas" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm." + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Brillo automático" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Cando é verdadeiro o «brillo» axustase automaticamente." + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Contraste automático" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Cando é verdadeiro o «contraste» axustase automaticamente." + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Exposición automática" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Cando é verdadeiro a «exposición» axustase automaticamente." + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Sombras automáticas" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Cando é verdadeiro as «sombras» axustanse automaticamente." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Matiz azul" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Configuración de «matiz azul» Rango -100 a 100" + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Saturación azul" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Configuración de «saturación azul» Rango -100 a +100" + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Configuración de «brillo» Rango 0 a +150" + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Perfil da cámara" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Configuración do «perfil da cámara»" + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Aberración cromática azul" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Configuración da «aberración cromática, corrixa a franxa azul/marelo». Rango " +"-100 a +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Aberración cromática vermello" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Configuración da «aberración cromática, corrixa a franxa vermello/cian». " +"Rango -100 a +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Redución do ruído da cor" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Configurar a «redución do ruído da cor». Rango de 0 a +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Configuración de «contraste». Rango -50 a +100" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "Cando «Ten recorte» é verdadeiro, enriba no rectángulo de recorte" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "Cando «Ten recorte» é verdadeiro, esquerda no rectángulo de recorte" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "Recorte por embaixo" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "Cando «Ten recorte» é verdadeiro, embaixo no rectángulo de recorte" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Recorte pola dereita" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "Cando «Ten recorte» é verdadeiro, dereita no rectángulo de recorte" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Ãngulo de recorte" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "Cando «Ten recorte» é verdadeiro, ángulo de recorte do rectángulo" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" +"Largura da imaxe resultante recortada en unidades de «Unidades de recorte»" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" +"Altura da imaxe resultante recortada en unidades de «Unidades de recorte»" + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Unidades de recorte" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" +"Unidades para «Recorte na largura» e «Recorte na altura». 0=píxeles, " +"1=polgadas, 2=cm" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Configuración de «Exposición». Rango -4.0 a +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Matiz do verde" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Configuración de «Matiz do verde». Rango -100 a +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Saturación do verde" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Configuración de «Saturación do verde». Rango -100 a +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Ten recorte" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "Cando é verdadeiro, a imaxe ten un rectángulo de recorte." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Ten configuración" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" +"Cando é verdadeiro, a configuración bruta da cámara non é a predeterminada." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "Suavizado da luminancia" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Configuración do «Suavizado da luminancia». Rango 0 a +100" + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Nome do ficheiro «raw» (bruto)" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Nome do ficheiro «raw» (non é unha ruta completa)" + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Matiz do vermello" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Configuración do «Matiz do vermello» Rango -100 a +100" + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Saturación de vermello" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Configuración da «Saturación de vermello». Rango -100 a +100" + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Configuración da «Saturación». Rango -100 a +100" + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Sombras" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Configuración de «Sombras». Rango 0 a +100" + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Tinxido da sombra" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Configuración do «Tinxido da sombra». Rango: -100 a +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Configuración da «Nitidez». Rango 0 a +100" + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Configuración da «Temperatura». Rango 2.000 a 5.000" + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Tinxido" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Configuración de «Tinxido». Rango -150 a +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Curva de ton" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "Matriz de puntos (enteiro, enteiro) que define unha «Curva de ton»" + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Nome da curva de ton" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"O nome da curva tonal descrita por «Curva de ton». Pode ser: lineal, " +"contraste medio, contraste forte, personalizado ou un nome predeterminado " +"definido polo usuario." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Versión do complemento RAw de cámara." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Cantidade de viñeteado" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Configuración da «Cantidade de viñeteado». Rango -100 a +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Punto medio de viñeteado" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Configuración do «Punto medio de viñeteado». Rango 0 a +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" +"Configuración do «Balance de branco». Un dos seguintes: Como foi disparada, " +"Automático, Luz de día, Anubrado, Sombra, Tungsteno, Fluorescente, Flash, " +"Personalizado" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "Etiqueta TIFF 256, 0x100. Largo da imaxe en píxeles." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Lonxitude da imaxe" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "Etiqueta TIFF 257, 0x101. Altura da imaxe en píxeles." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bits por mostra" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "Etiqueta TIFF 258, 0x102. Número de bits por compoñente en cada canle." + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Compresión" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" +"Etiqueta TIFF 259, 0x103. Sistema de compresión: 1 = sen comprimir; 6 = JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Interpretación fotométrica" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "Etiqueta TIFF 262, 0x106. Composición do píxel: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" +"Etiqueta TIFF 274, 0x11. Orientación:1 = fila 0 arriba, columna 0 á esquerda " +"2 = fila 0 arriba, columna 0 á dereita 3 = fila 0 abaixo, columna 0 á " +"dereita 4 = fila 0 abaixo, columna 0 á esquerda 5 = fila 0 á esquerda, " +"columna 0 arriba 6 = fila 0 á dereita, columna 0 arriba 7 = fila 0 á " +"dereita, columna 0 abaixo 8 = fila 0 á esquerda, columna 0 abaixo" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Mostras por píxel" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "Etiqueta TIFF 277, 0x115. Número de compoñentes por píxel." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Configuración plana (de bits)" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "Etiqueta TIFF 284. Capa de datos: 1 = segmentada; 2 = plana." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "Mostraxe secundaria YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" +"Etiqueta TIFF 530, 0x212. Radio de mostraxe dos compoñentes de crominancia: " +"[2,1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "Posicionamento YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" +"Etiqueta TIFF 531, 0x213. Posición dos compoñentes de crominancia vs. " +"luminancia: 1 = centrados; 2 = emprazamento compartido." + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Resolución X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" +"Etiqueta TIFF 282, 0x11A. Resolución horizontal en píxeles por unidade." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Resolución Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "Etiqueta TIFF 283, 0x11B. Resolución vertical en píxeles por unidade." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Unidade de resolución" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"Etiqueta TIFF 296, 0x128. Unidade utilizada para «Resolución X» e " +"«Resolución Y». Pode tomar os valores: 2 = polgadas; 3 = centímetros." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Función de transferencia" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" +"Etiqueta TIFF 301, 0x12D. Función de transferencia para a imaxe descrita en " +"estilo tabular con 3 * 256 entradas." + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Punto branco" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "Etiqueta TIFF 318, 0x13E. Cromacidade do punto branco." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Cromacidades primarias" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "Etiqueta TIFF 319, 0x13F. Cromacidade dos tres colores primarios." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" +"Etiqueta TIFF 529, 0x211. Matriz de coeficientes para a transformación de " +"RGB a YCbCr." + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Referencia branco e negro" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" +"Etiqueta TIFF 532, 0x214. Valores dos puntos negro e branco de referencia." + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Data e hora" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" +"Etiqueta TIFF 306, 0x132 (primaria) e etiqueta EXIF 37520, 0x9290 (fraccións " +"de segundo). Data e hora de creación da imaxe (sen zona horaria en EXIF), " +"almacenada en formato ISO 8601, non no formato EXIF orixinal. Esta " +"propiedade inclúe o valor do atributo EXIF «SubSecTime». NOTA: Esta " +"propiedade almacenase no formato XMP como «xmp:ModifyDate»." + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Descrpción da imaxe" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"Etiqueta TIFF 270, 0x10E. Descrición da imaxe. Nota: Esta propiedade " +"almacenase en XMP como «dc:description»." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Marca" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "Etiqueta TIFF 271, 0x10F. Fabricante do equipo de gravación." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "Etiqueta TIFF 272, 0x110. Nome do modelo ou número do equipo." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"Etiqueta TIFF 305, 0x131. Software ou firmware utilizado para xerar a imaxe. " +"Nota: Esta propiedade almacenase en XMP como «xmp:CreatorTool». " + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"Etiqueta TIFF 315, 0x13B. Propietario da cámara, fotógrafo ou creador da " +"imaxe. Nota: Esta propiedade almacenase en XMP como o primeiro elemento da " +"matriz «dc:creator»." + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"Etiqueta TIFF 33432, 0x8298. Información de Dereitos de autoría. Nota: Esta " +"propiedade almacenase en XMP como «dc:rights»." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Versión Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "Etiqueta EXIF 36864, 0x9000. Número de versión EXIF." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Versión Flashpix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "Etiqueta EXIF 40960, 0xA000. Versión de FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "Etiqueta EXIF 40961, 0xA001. Información do espazo de cor" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Configuración de compoñentes" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"Etiqueta EXIF 37121, 0x9101. Configuración dos compoñentes nos datos: 4 5 6 " +"0 (se son datos RGB comprimidos), 1 2 3 0 (noutros casos)." + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Bits comprimidos por píxel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Etiqueta EXIF 37122, 0x9102. O modo de compresión que se usa para unha imaxe " +"comprimida, indicase medido en bits por píxel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Dimensión píxel X" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "Etiqueta EXIF 40962, 0xA002. Largura válida de imaxe, en píxeles" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Dimensión píxel Y" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "Etiqueta EXIF 40963, 0xA003. Altura válida de imaxe, en píxeles." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Comentario do usuario" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "Etiqueta EXIF 37510, 0x9286. Comentarios do usuario." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Ficheiro de son asociado" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"Etiqueta EXIF 40964, 0xA004. Nombre do ficheiro en formato «8.3» para o " +"ficheiro de son asociado" + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Data e hora orixinal" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"Etiquetas EXIF 36867, 0x9003 (primarias) e 37521, 0x9291 (fraccións de " +"segundo). Data e hora na que se xerou a imaxe orixinal, en formato ISO 8601. " +"Inclúen os datos «SubSecTimeOriginal» (fraccións de segundo do tempo do " +"orixinal) de EXIF." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Data e hora da dixitalización" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"Etiqueta EXIF 36868, 0x9004 (primarias) e 37522, 0x9292 (fraccións de " +"segundo). Data e hora na que foi gardada dixitalmente a imaxe; pode ser " +"igual á data da imaxe orixinal se foi gardada dixitalmente desde un " +"principio. Gardadas no formato ISO 8601. Inclúen os datos " +"«SubSecTimeOriginal» (fraccións de segundo do tempo do dixitalizado) de EXIF." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Etiqueta EXIF 33434, 0x829A. Tempo de exposición en segundos." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Número F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "Etiqueta EXIF 33437, 0x829D. Número F." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" +"Etiqueta EXIF 34850, 0x8822. Clase de programa usado para a exposición." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Sensibilidade espectral" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "Etiqueta EXIF 34852, 0x8824. Sensibilidade espectral para cada canle" + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "Sensibilidad ISO de velocidade" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"Etiqueta EXIF 34855, 0x8827. Velocidade e latitude ISO do dispositivo de " +"entrada, como especifica a ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"Etiqueta EXIF 34856, 0x8828. Función de Conversión Opto-Electrónica, como " +"especifica a ISO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"Etiqueta EXIF 37377, 0x9201. Velocidade do disparador, medida en APEX. Ver " +"Anexo C da especificación de EXIF." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "Etiqueta EXIF 37378, 0x9202. Abertura da lente, medida en APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Valor do brillo" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "Etiqueta EXIF 37379, 0x9203. Brillo, medida en APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" +"Etiqueta EXIF 37380, 0x9204. Compensación da exposición, medida en APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Valor máximo de abertura" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "Etiqueta EXIF 37381, 0x9205. Número F de lente mais pequeno, en APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "Etiqueta EXIF 37382, 0x9206. Distancia ao suxeito, en metros." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "Etiqueta EXIF 37383, 0x9207. Modo de medición." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "Etiqueta EXIF 37384, 0x9208. Fonte de luz." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" +"Etiqueta EXIF 37385, 0x9209. Datos da Fonte de luz estroboscópica (flash)." + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" +"Etiqueta EXIF 37386, 0x920A. Lonxitude de enfoque da lente, en milímetros." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Ãrea do suxeito" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Etiqueta EXIF 37396, 0x9214. A localización e a área do suxeito principal en " +"toda a escena" + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Potencia do flash" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" +"Etiqueta EXIF 41483, 0xA20B. Potencia estroboscópica durante a captura da " +"imaxe." + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Resposta en frecuencia espacial" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"Etiqueta EXIF 41484, 0xA20C. Táboa de entrada do dispositivo de frecuencia " +"espacial e os valores de SFR (SpatialFrequencyResponse - Resposta en " +"frecuencia espacial) segundo o especificado na ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Resolución no plano focal X" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"Etiqueta EXIF 41486, 0xA20E. Resolución focal horizontal, medida en píxeles " +"por unidade." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Resolución no plano focal Y" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"Etiqueta EXIF 41487, 0xA20F. Resolución focal vertical, expresada en píxeles " +"por unidade." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Unidade de resolución do plano focal" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" +"Etiqueta EXIF 41488, 0xA210. Unidade usada para a resolución no plano focal " +"X e a resolución no plano foca Y." + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Localización do suxeito" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" +"Etiqueta EXIF 41492, 0xA214. Localización do suxeito principal da escena. O " +"primeiro valor é o píxel horizontal e o segundo valor é o píxel vertical " +"onde aparece o suxeito." + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Ãndice de exposición" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" +"Etiqueta EXIF 41493, 0xA215. Ãndice de exposición do dispositivo de entrada." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Método de detección" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"Etiqueta EXIF 41495, 0xA217. Tipo de sensor de imaxe no dispositivo de " +"entrada." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "Etiqueta EXIF 41728, 0xA300. Indica a orixe da imaxe." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Tipo de escena" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "Etiqueta EXIF 41729, 0xA301. Indica o tipo de escena." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "Patrón CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" +"Etiqueta EXIF 41730, 0xA302. Patrón de matriz de filtro de cores no sensor " +"de imaxe." + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Renderización personalizada" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"Etiqueta EXIF 41985, 0xA401. Indica o uso dun procesamento especial en datos " +"de imaxes." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"Etiqueta EXIF 41986, 0xA402. Indica o modo de exposición estabelecido cando " +"se tomou a imaxe." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Etiqueta EXIF 41987, 0xA403. Indica o modo estabelecido do balance de " +"brancos cando se tomou a imaxe." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Relación de zoom dixital" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"Etiqueta EXIF 41988, 0xA404. Indica o nivel do zoom dixital cando se tomou a " +"imaxe." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Distancia focal en filme de 35mm" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Etiqueta EXIF 41989, 0xA405. Indica a distancia focal equivalente supoñendo " +"unha cámara con filme de 35mm. O valor 0 significa que a distancia focal é " +"descoñecida. Teña en conta que esta etiqueta difire da etiqueta «Distancia " +"focal»." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Tipo de captura da escena" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "Etiqueta EXIF 41990, 0xA406. Indica o tipo de escena que foi tomada." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Control de ganancia" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"Etiqueta EXIF 41991, 0xA407. Indica o grao do axuste global da ganancia da " +"imaxe." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Etiqueta EXIF 41992, 0xA408. Indica a dirección do procesamento de contraste " +"usado pola cámara." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Etiqueta EXIF 41993, 0xA409. Indica a dirección do procesamento de " +"saturación usado pola cámara." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Etiqueta EXIF 41994, 0xA40A. Indica a dirección do procesamento da nitidez " +"usado pola cámara." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Descrición do axuste do dispositivo" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Etiqueta EXIF 41995, 0xA40B. Indica a información das condicións da captura " +"de imaxes nun modelo particular de cámara." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Rango de distancia ao suxeito." + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Etiqueta EXIF41996, 0xA40C. Indica a distancia ao suxeito." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "ID único de imaxe" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Etiqueta EXIF 42016, 0xA420. Un identificador asignado a cada imaxe de forma " +"única. Gravase como unha cadea ASCII de 32 caracteres, equivalente á " +"notación hexadecimal e unha cadea fixa de 128 bits." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "ID da versión GPS" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" +"Etiqueta GPS 0, 0x00. Unha codificación decimal de cada un dos catro bytes " +"EXIF separados por puntos. O valor actual é «2.0.0.0»." + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Latitude GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" +"Etiqueta GPS 2, 0x02 (posición) e 1, 0x01 (norte/sur). Indica latitude." + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Lonxitude GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" +"Etiqueta GPS 4, 0x04 (posición) e 3, 0x03 (leste/oeste). Indica lonxitude." + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "Referencia GPS de altitude" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" +"Etiqueta GPS 5, 0x05. Indica se a latitude es sobre ou baixo o nivel do mar." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "Altitude GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "Etiqueta GPS 6, 0x06. Indica a altitude en metros." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "Marca GPS de tempo" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" +"Etiqueta GPS 29 (data), 0x1D, e etiqueta GPS 7 (hora), 0x07. Marca de tempo " +"dos datos GPS, en Hora Universal Coordinada. Nota: a etiqueta GPSDateStamp é " +"nova en EXIF 2.2. A marca de tempo GPS en EXIF 2.1 non inclúe unha data. De " +"nos estar presente, o compoñente de data para o XMP debe tomarse de exif:" +"DateTimeOriginal, ou, se iso támen está ausente de exif:DateTimeDigitalized. " +"De non haber datas dispoñíbeis, non escribe exif:GPSTimeStamp a XMP." + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Satélites GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" +"Etiqueta GPS 8, 0x08. Información de satélite, o formato non está " +"especificado." + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Estado GPS" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" +"Etiqueta GPS 9, 0x09. Estado do receptor GPS no momento da creación da imaxe." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "Modo GPS de medida" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "Etiqueta GPS 10, 0x0A. Modo de medida GPS, tpo de texto." + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "Etiqueta GPS 11, 0x0B. Graos de precisión para os datos GPS." + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "Referencia GPS de velocidade" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "Etiqueta GPS 12, 0x0C. Unidades usadas para a medida da velocidade." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "Velocidade GPS" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "Etiqueta GPS 13, 0x0D. Velocidade de movemento do receptor GPS." + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "Referencia GPS de rastrexo" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "Etiqueta GPS 14, 0x0E. Referencia para a dirección do movemento." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "Rastrexo GPS" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"Etiqueta GPS 15, 0x0F. Dirección do movemento GPS, rango de valores de 0 a " +"359,99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "Referencia GPS de dirección da imaxe" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "Etiqueta GPS 16, 0x10. Referencia para a dirección da imaxe." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "Dirección GPS da imaxe" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"Etiqueta GPS 17, 0x11. Dirección da imaxe cando se captura, rango de valores " +"de 0 a 359,99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "Datos GPS de mapa" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "Etiqueta GPS 18, 0x12. Datos de levantamento geodésico." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "Latitude GPS do destino" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" +"Etiqueta GPS 20, 0x14 (posición) e 19, 0x13 (norte/sur). Indica a latitude " +"do destino." + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "Lonxitude GPS do destino" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" +"Etiqueta GPS 22, 0x16 (posición) e 21, 0x15 (leste/oeste). Indica a " +"lonxitude do destino." + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "Referencia GPS ao punto de destino" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "Etiqueta GPS 23, 0x17. Referencia para a dirección do movemento." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "Punto GPS de destino" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "Etiqueta GPS 24, 0x18. Punto de destino, valores de 0 a 359,99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "Referencia GPS de distancia ao destino" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" +"Etiqueta GPS 25, 0x19. Unidades utilizadas para a medición da velocidade." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "Distancia GPS do destino" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "Etiqueta GPS 26, 0x1A. Distancia ao destino." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "Método GPS de proceso" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" +"Etiqueta GPS 27, 0x1B. Unha cadea de caracteres gravando no nome do método " +"usado para atopar a localización." + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "Información GPS da área" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" +"Etiqueta GPS 28, 0x1C. Unha cadea de caracteres gravando o nome da área GPS." + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "Diferencial GPS" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"Etiqueta GPS 30, 0x1E. Indica se se aplica a corrección diferencial ao " +"receptor GPS." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"Unha descrición da lente empregada para tomar a fotografía. Por exemplo, " +"«70-200 mm f/2.8-4.0»." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"O número de serie da cámara ou do corpo da cámara empregado para tomar a " +"fotografía." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Información de contacto do creador" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" +"A información de contacto co creador fornece toda a información necesaria " +"para poñerse en contacto co creador deste obxecto de noticias e comprenden " +"un conxunto de propiedades secundarias para o correcto encamiñamento." + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Información de contacto do enderezo" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"A parte da información de contacto dun enderezo. Consta dun nome opcional de " +"compañía e toda a información requirida para localizar o edificio ou " +"distrito postal ao que debe enviarse o correo." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Información de contacto da ciudade." + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Información de contacto do creador" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Información de contacto do estado/provincia." + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Información de contacto do estado/provincia." + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Información de contacto do código postal." + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Información de contacto do país" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Información de contacto do creador" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Información de contacto do correo-e" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "A parte da información do correo-e" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Información de contacto do teléfono" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Información de contacto do creador" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Información de contacto Web URL" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Información de contacto do creador" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Xénero intelectual" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" +"Describe a natureza, intelectual ou características periodísticas dun " +"obxecto de noticias, non especificamente o seu contido." + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "Escena IPTC" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" +"Describe a escena do contido dunha foto. Especifica un ou máis términos do " +"IPTC «Escena-Códigos de noticias». Cada escenario está representado como " +"unha cadea de 6 díxitos nunha lista non ordenada." + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "Código IPTC do suxeito" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" +"Especifica un ou máis Suxeito da taxonomía ITPC «Suxeito-Códigos de " +"noticias» para clasificar o contido. Cada suxeito está representado como " +"unha cadea de 8 díxitos nunha lista non ordenada." + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +#, fuzzy +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" +"Código do país no que está enfocado o contido -- ou o país que se mostra nos " +"medios visuai ou referenciado no texto ou medio de son. Este elemento é o " +"primeiro/superior nivel dunha xerarquía descendente. O código debe tomarse " +"do código de dúas ou tres letras ISO 3166. O nome completo dun país debería " +"ir no elemento «País»." + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "Información adicional do modelo" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" +"Información sobre a orixe étnica e outros factores do(s) modelo(s) nunha " +"imaxe de modelo publicada." + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "Código da organización caracterizada" + +#: src/properties.cpp:697 +#, fuzzy +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "Nome da organización ou compañía destacada na imaxe." + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "Idade do modelo" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "Idade do modelo humano no momento no que se tomou a imaxe publicada" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "Nome da organización destacada" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "Nome da organización ou compañía destacada na imaxe." + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "Persoa mostrada" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "Nome da persoa mostrada na imaxe." + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "Identificador da imaxe dixital" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" +"Identificador global único da imaxe dixital. O creador da imaxe dixital " +"estabelece este valor no momento da súa creación. Non será modificada " +"posteriormente." + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "Tipo físico da foto orixinal" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "O tipo da orixe do ficheiro dixital." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "Suceso" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "Nomea ou describe o suceso específico no que foi tomada a fotografía." + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "Altura máxima dispoñíbel" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"A altura máxima en píxeles da foto orixinal desde a que se derivou a " +"mediante redución de tamaño." + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "Largura máxima dispoñíbel" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"A largura máxima en píxeles da foto orixinal desde a que se derivou a " +"mediante redución de tamaño." + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "Rexistro de entrada" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" +"Tanto un ID de rexistro de elemento como un ID de rexistro de organización " +"para almacenar calquera rexistro desta imaxe dixital cun rexistro." + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "Rexistro Entrada/Identificador de elemento" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" +"Un identificador único creado por un rexistro e aplicado polo creador da " +"imaxe dixital. Este valor non debería cambiarse tras seren aplicado. O " +"identificador está asociado ao correspondente identificador de rexistro de " +"organización." + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "Rexistro Entrada/Identificador de organización" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" +"Un identificador para o rexistro emitido polo correspondente ID de rexistro " +"de imaxe." + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "Último campo IPTC editado" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" +"A data e, opcionalmente, a hora na que calquera dos campos IPTC da foto " +"foron editados últimamente." + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "Lugar mostrado" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "O lugar mostrado na imaxe." + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "Lugar de creación" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "O lugar onde se tomou a fotografía." + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Lugar - Cidade" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Nome da cidade de localización." + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "Lugar - Código ISO do país" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "O código ISO do país." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Lugar - Nome do país" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "O nome do país de localización." + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "Lugar - Provincia/Estado" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" +"O nome dunha subrexión dun país - unha provincia ou estado - de unha " +"localización." + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "Lugar - Sublocalización" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" +"Nome de unha sublocalización. Esta sublocalización pode ser tanto o nome de " +"unha sublocalización de unha cidade ou o nome dun lugar moi coñecido ou " +"monumento (natural) fora duna cidade." + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "Lugar - Rexión mundial" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "O nome da rexión mundial dunha localización" + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "Ilustración ou obxecto na imaxe" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "Un conxunto de metadatos sobre a ilustración ou un obxecto da imaxe." + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "Ilustración ou obxecto - Aviso de Dereitos de autoría" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" +"Contén calquera aviso sobre os dereitos de autoría necesario para reclamar a " +"propiedade intelectual da ilustración ou obxecto da imaxe, e debe " +"identificar ao actual propietario dos dereitos de autoría da obra xunto cos " +"correspondentes dereitos de propiedade intelectual." + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "Ilustración ou obxecto - Creador" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" +"Contén o nome do artista que creou a ilustración ou o obxecto da imaxe. Nos " +"casos nos que o artista non poida ou non deba ser identificado, pode " +"incluírse o nome da compañía ou organización." + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "Ilustración ou obxecto - Data de creación" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" +"Designa a data e opcionalmente a hora na que foi creada a ilustración ou o " +"obxecto da imaxe. Refírese ás ilustracións ou obxectos que posúan dereitos " +"de propiedade intelectual asociados." + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "Ilustración ou obxecto - Orixe" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" +"A organización ou organismo de explotación e rexistro da ilustración ou " +"obxecto da imaxe con fins de inventariado." + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "Ilustración ou obxecto - Número de inventario orixinal" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" +"O número de inventario emitido pola organización ou organismo de explotación " +"que rexistrou a ilustración ou obxecto da imaxe." + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "Ilustración ou obxecto - Título" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "Unha referencia para a ilustración ou o obxecto da imaxe." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "Escanear desde filme" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "Escanear desde unha transparencia (incluíndo diapositivas)" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "Escanear desde impresión." + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "Cámara en bruto" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "Cámara TIFF" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "Cámara JPEG" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "Versión PLUS" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" +"O número de versión dos estándares PLUS no lugar no momento da transacción." + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Licenciatario" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" +"Parte ou partes ás que se lle concede a licenza polo(s) licenciador(es) en " +"virtude da transacción de licenza." + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "ID do licenciatario" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "ID PLUS opcional identificando cada licenciatario." + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "Nome do licenciatario" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "Nome de cada licenciatario" + +#: src/properties.cpp:746 +msgid "End User" +msgstr "Usuario final" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "Grupo ou grupos que, finalmente, farán uso da imaxe licenciada." + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "ID do usuario final" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "ID PLUS opcional de cada usuario final." + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "Nome do usuario final" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "Nome de cada usuario final." + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "Licenciador" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "Parte ou partes que garantizan a licenza do licenciatario." + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "ID do licenciador" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "ID PLUS opcional identificando cada licenciador." + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "Nome do licenciador" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "Nome de cada licenciador" + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "Enderezo do licenciador" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "Rúa do enderezo do licenciador." + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "Detalle do enderezo do licenciador." + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "Detalles adicionais do enderezo postal do licenciador." + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "Cidade do licenciador" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "Nome da cidade do licenciador." + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "Estado ou provincia do licenciador" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "Nome do estado ou provincia do licenciador." + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "Código postal do licenciador" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "Código postal do licenciador ou código Zip." + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "País do licenciador" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "Nome do país do licenciador." + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "Teléfono do licenciador tipo 1" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "Teléfono do licenciador tipo 1." + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "Teléfono do licenciador 1" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "Teléfono do licenciador número 1." + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "Teléfono do licenciador tipo 2" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "Teléfono do licenciador tipo 2." + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "Teléfono do licenciador 2" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "Teléfono do licenciador número 2." + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "Correo-e do licenciador" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "Enderezo de correo-e do licenciador." + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "URL do licenciador" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "Enderezo web do licenciador." + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "Notas do licenciador" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" +"Información suplementaria para usar na identificación e contacto do(s) " +"licenciador(es)." + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "Código de resumo de medios PLUS" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" +"Cadea de código alfanumérico seguindo o estándar PLUS que resume o uso dos " +"medios incluídos na licenza." + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "Data de inicio da licenza" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "A data na que a licenza entra en vigor." + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "Data de remate da licenza" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "A data na que caduca a licenza." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "Restricións do medio" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" +"Restricións que limitan o alcance de uso (ou usos) do medio PLUS incluído na " +"licenza para outro medio de nome especificado ou non na matriz de medios " +"PLUS." + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "Restricións de rexión" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" +"Restricións que limitan o alcance da distribución xeográfica a determinadas " +"cidades, estados, provincias ou outras áreas por incluír ou excluídas das " +"rexións PLUS concretadas no uso dos medios especificados na licenza." + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "Restricións do produto ou servizo" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" +"Restricións limitando o uso da imaxe para promover ou asociar cun produto ou " +"servizo nomeado." + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "Restricións do ficheiro de imaxe" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" +"Restricións no cambio de nome do ficheiro de imaxe, metadatos ou tipo de " +"ficheiro." + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "Restricións de modificación da imaxe" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" +"Restricións sobre a modificación da imaxe por recorte, volteo, retoque, " +"coloreado, descolorado ou mesturado" + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "Restricións de duplicado da imaxe" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "Restricións na creación de duplicados da imaxe." + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "Estado do modelo publicado" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" +"Resume a dispoñibilidade e o alcance dos modelos publicados, autorizando o " +"uso das semellanzas de persoas que aparecen na fotografía." + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "ID do modelo publicado" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "Identificador opcional asociado con cada publicación do modelo." + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "Divulgación da idade dun modelo menor." + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" +"Idade do modelo máis novo que aparece na imaxe, no momento no que a imaxe " +"foi tomada." + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "Estado da propiedade da publicación." + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" +"Resume a dispoñibilidade e o alcance da propiedade da publicación, " +"autorizando o uso das propiedades que aparecen na fotografía." + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "ID da propiedade da publicación" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "Identificador opcional asociado con cada propiedade da publicación." + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "Outras restricións" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "Restricións adicionais da licenza." + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "Liña de crédito requirida" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "Requisitos de atribución, no caso de habelos." + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "Aviso de contido para adultos" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "Aviso que indica a presencia de contido non apto para menores." + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "Outros requisitos da licenza" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "Requisitos adicionais da licenza." + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Termos e condicións (texto)" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Termos e condicións da licenza." + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "URL dos termos e condicións" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "URL dos termos e condicións da licenza" + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Outras condicións da licenza" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "Condicións adicionais da licenza." + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "Identifica o tipo de imaxe fornecido." + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "ID da imaxe, do licenciador" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "Identificador opcional asignado polo licenciador da imaxe." + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "Nome do ficheiro de imaxe tal e como se forneceu" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" +"Nome do ficheiro de imaxe fornecido ao licenciatario para o seu uso baixo " +"licenza." + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "Formato do ficheiro de imaxe tal e como se forneceu" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" +"Formato do ficheiro de imaxe fornecido ao licenciatario para o seu uso baixo " +"licenza." + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "Tamaño do ficheiro de imaxe tal e como se forneceu" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "Tamaño do ficheiro de imaxe fornecido ao licenciatario." + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "Estado dos dereitos de autoría" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "Estado dos dereitos de autoría da imaxe" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "Número de rexistro dos dereitos de autoría" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" +"Número de rexistro dos dereitos de autoría, no caso de habelo, aplicado á " +"imaxe licenciada." + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "Data da primeira publicación" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "A data na que a imaxe foi publicada por primeira vez." + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "Propietario dos dereitos de autoría" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" +"Propietario ou propietarios dos dereitos de autoría da imaxe licenciada." + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "ID do propietario dos dereitos de autoría" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" +"Número de identificación opcional de cada propietario dos dereitos de " +"autoría." + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "Nome do propietario dos dereitos de autoría" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "Nome do propietario dos dereitos de autoría." + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "ID da imaxe, do propietario dos dereitos de autoría" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" +"Identificador opcional asignado ao propietario dos dereitos de autoría da " +"imaxe." + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Creador da imaxe" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "Creador(es) da imaxe." + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "Imaxe ID do creador." + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "ID PLUS opcional de identificación de cada creador da imaxe." + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "Nome do creador da imaxe" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "Nome do creador da imaxe." + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "ID da imaxe, do creador da imaxe" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "Identificador opcional asignado á imaxe polo creador da imaxe." + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "ID do fornecedor da imaxe" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "ID PLUS opcional de identificación do fornecedor da imaxe." + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "Nome do fornecedor da imaxe" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "Nome do fornecedor da imaxe" + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "ID da imaxe, do fornecedor da imaxe" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "Identificador opcional da imaxe asignado polo fornecedor da imaxe." + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "ID da imaxe, do licenciatario" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "Identificador opcional asignado polo licenciatario á imaxe." + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "Notas da imaxe, do licenciatario" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "Notas engadidas polo licenciatario." + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "Outra información da imaxe" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "Información adicional sobre a imaxe." + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "ID da licenza" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" +"Número de identificación opcional da licenza asignado polo licenciador." + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "ID da transacción do licenciador" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" +"Identificador asignado polo licenciador para referencia e uso interno do " +"licenciador." + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "ID da transacción do licenciatario" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" +"Identificador asignado polo licenciatario para referencia e uso interno do " +"licenciatario." + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "Referencia do proyecto do licenciatario" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" +"Nome do proyecto de referencia ou descripción asignada polo licenciatario." + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "Data de transacción da licenza" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "A data da transacción da licenza." + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Reutilización" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" +"Indica se unha licenza é a inicial ou unha réplica. A reutilización pode " +"requirir que as licenzas almacenadas en ficheiros distribuídos previamente " +"ao cliente sexan actualizadas." + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "Outros documentos da licenza" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" +"Información de referencia para documentos adicionais asociados coa licenza." + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "Outra información da licenza" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "Información adicional da licenza." + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "Campo opcional para uso discrecional do licenciador." + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "Personalizado 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "Personalizado 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "Personalizado 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "Campo opcional para uso discrecional do licenciatario." + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "Personalizado 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "Personalizado 8" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "Personalizado 9" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "Personalizado 10" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "Aviso obrigatorio de contido para adultos" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "Non requirido" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "Protexido" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "Dominio público" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "" + +#: src/properties.cpp:847 +#, fuzzy +msgid "Credit in Credits Area" +msgstr "Liña de crédito requirida" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "Vista previa da imaxe" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "Non requirido" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "Sen colorear" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "Sen recorte" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "Sen descolorar" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "Sen voltear" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "Sen mesturar" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "Sen retoque" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "Duplicación só cando sexa necesario pola licenza" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "Sen restricións de duplicación" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "Sen duplicación" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "Manter o nome do ficheiro" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "Manter o tipo de ficheiro" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "Manter o ID no nome do ficheiro" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "Manter os metadatos" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "Mapa de bits de Windows (BMP)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Negativo dixital (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "PostScript encapsulado (EPS)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "Formato de intercambio de gráficos (GIF)" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Formato de intercambio JPEG (JPG, JIF, JFIF)" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "Imaxe Macintosh (PICT)" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "Gráficos de rede portábeis (PNG)" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "Documento Photoshop (PSD)" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "Formato de imaxe RAW propietario" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "Formato de ficheiro de imaxe etiquetado (TIFF)" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "Foto de Windows Media (Foto HD)" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "Maior que 50 MB" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "Ata 1 MB" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "Ata 10 MB" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "Ata 30 MB" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "Ata 50 MB" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "Imaxe ilustrada" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "Imaxe composta ou multimedia" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Imaxe fotográfica" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "Cela" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "FAX" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "Buscapersoas" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "Traballo" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "Idade descoñecida" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "25 anos ou máis" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "24 anos" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "23 anos" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "22 anos" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "21 anos" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "20 anos" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "19 anos" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "10 anos" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "17 anos" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "16 anos" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "15 anos" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "14 anos ou menos" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "Non aplicábel" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "Publicacións ilimitadas do modelo" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "Publicacións limitadas ou incompletas do modelo" + +#: src/properties.cpp:949 +#, fuzzy +msgid "Unlimited Property Releases" +msgstr "Publicacións ilimitadas do modelo" + +#: src/properties.cpp:950 +#, fuzzy +msgid "Limited or Incomplete Property Releases" +msgstr "Publicacións limitadas ou incompletas do modelo" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "Repetir uso" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Identificación do modelo" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Estado" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "Unha notación facendo única a imaxe" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Xente" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Rexións" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "Rexións" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "Data e hora orixinal" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date the last region was created" +msgstr "A data na que se publicou o título." + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Nome do perfil" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Name of the person (in the given rectangle)" +msgstr "Nome da persoa mostrada na imaxe." + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "Rectángulo" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Dimensión píxel X" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Rexións" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Estrutura da versión" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "Ãrea" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Rango do enfoque" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Valor da forcada" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "Extensións" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Palabras clave" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Modo panorama" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Datos da captura" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Procesando software" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Tipo de obxecto" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "A distancia ao suxeito, dada en metros." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Data da primeira publicación" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Data da toma" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Modo de exposición" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Modelo único da cámara" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Localización da toma" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "Laranxa" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Palabras clave" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Relación de aspecto do píxel de vídeo" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Relación de aspecto do píxel de vídeo" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Descrpción da imaxe" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Nome do ficheiro «raw» (bruto)" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Axuste de nitidez" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Orden dos bytes" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Información dos dereitos de autoría." + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Abertura mínima" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "Máxima abertura a mínimo foco" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Altura da área AF" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "Máxima abertura a mínimo foco" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Compresor de vídeo" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Descrición do axuste do dispositivo" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "Descrición textual dos datos do obxecto." + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Imaxe e información" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Configuración do modo de axuste" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Comentario do rexistro" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Compresión" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Compresión" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Palabras clave de Windows" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Compresión" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Compresor de vídeo" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Compresor de vídeo" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Compresión" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Tipo de cámara" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Taxa de compresión" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"Etiqueta EXIF 41992, 0xA408. Indica a dirección do procesamento de contraste " +"usado pola cámara." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Data de creación" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "Recorte por embaixo" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "Recorte pola esquerda" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "Recorte pola dereita" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "Recotre por enriba" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Actual perfil ICC" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "Paquete XML" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +#, fuzzy +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Data e hora na que se xeraron os datos da imaxe orixinal" + +#: src/properties.cpp:1111 +#, fuzzy +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"Etiqueta EXIF 36868, 0x9004 (primarias) e 37522, 0x9292 (fraccións de " +"segundo). Data e hora na que foi gardada dixitalmente a imaxe; pode ser " +"igual á data da imaxe orixinal se foi gardada dixitalmente desde un " +"principio. Gardadas no formato ISO 8601. Inclúen os datos " +"«SubSecTimeOriginal» (fraccións de segundo do tempo do dixitalizado) de EXIF." + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Data e hora orixinal" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Reprodución de cor" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"Etiqueta EXIF 41988, 0xA404. Indica o nivel do zoom dixital cando se tomou a " +"imaxe." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Extensións" + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Information about the Dimensions of the video frame." +msgstr "" +"Información sobre a orixe étnica e outros factores do(s) modelo(s) nunha " +"imaxe de modelo publicada." + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Directo" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +#, fuzzy +msgid "Video Display Unit" +msgstr "Gravar pantalla" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Tipo de foco" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "Versión de rexistro" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Versión do modelo" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Duración do ficheiro multimedia." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Versión de rexistro" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Versión ARM" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "Taxa de fotogramas do vídeo" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Código de tempo alternativo" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Información do equipamento" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Axuste da compensación da exposición" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Programa de exposición" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Tempo de exposición, en segundos." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "Descrición do axuste do dispositivo" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Ficheiro" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Ficheiro" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Lonxitude do mosaico" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Lonxitude do mosaico" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Nome do ficheiro" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name or Absolute File Path" +msgstr "Ruta absoluta do ficheiro de picos de son" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Tamaño do ficheiro" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Tamaño do ficheiro" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Tipo de ficheiro secundario" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "" +"Etiqueta EXIF 37386, 0x920A. Lonxitude de enfoque da lente, en milímetros." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Reconto de imaxes" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Altura da área AF" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Largura da área AF" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +#, fuzzy +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" +"Etiqueta GPS 17, 0x11. Dirección da imaxe cando se captura, rango de valores " +"de 0 a 359,99." + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "Etiqueta GPS 16, 0x10. Referencia para a dirección da imaxe." + +#: src/properties.cpp:1173 +#, fuzzy +msgid "(North/South). Indicates latitude." +msgstr "" +"Etiqueta GPS 2, 0x02 (posición) e 1, 0x01 (norte/sur). Indica latitude." + +#: src/properties.cpp:1174 +#, fuzzy +msgid "(East/West). Indicates longitude." +msgstr "" +"Etiqueta GPS 4, 0x04 (posición) e 3, 0x03 (leste/oeste). Indica lonxitude." + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "Etiqueta GPS 18, 0x12. Datos de levantamento geodésico." + +#: src/properties.cpp:1176 +#, fuzzy +msgid "Satellite information, format is unspecified." +msgstr "" +"Etiqueta GPS 8, 0x08. Información de satélite, o formato non está " +"especificado." + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "Metadatos de data e hora con chave" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Modo forcada" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +#, fuzzy +msgid "Grouping" +msgstr "Sen recorte" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Descrpción da imaxe" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Fabricante das lentes." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Altura do sensor" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "Configuración do axuste da imaxe" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "URL base" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Información do disparo" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "Información adicional sobre a imaxe." + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "Texto" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Información do disparo" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "URL do licenciador" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Información do disparo" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Datos de lentes" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Idioma" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Lonxitude focal" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Duración do ficheiro multimedia." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Tipo de lentes" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Brillo" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Brillo" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Información do disparo" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Información do disparo" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Último URL" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Información do equipamento" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Manufacturer of recording equipment" +msgstr "O fabricante do equipamento de gravación" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Tipo de cámara" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Maker Note Type of the camera." +msgstr "SFR da cámara" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Versión da nota do fabricante" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Versión da nota do fabricante" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "URL base" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Fabricante das lentes." + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "Etiqueta EXIF 37381, 0x9205. Número F de lente mais pequeno, en APEX." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Valor máximo de abertura" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Taxa de datos de ficheiro" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Data de creación" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Duración do son" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Versión do modelo" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "Código de resumo de medios PLUS" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Data de modificación dos metadatos" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Medio" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Data dos metadatos" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Data dos metadatos" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Modo de medida" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Tipo de imaxe" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Versión do ficheiro" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Información do equipamento" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "O nome ou número do modelo do equipamento" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Nome da localización" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Contains the modification date of the video" +msgstr "Restricións na creación de duplicados da imaxe." + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Versión do modelo" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +#, fuzzy +msgid "Name of song or the event." +msgstr "Nome da persoa mostrada na imaxe." + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "Texto + num. ID" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "Número de tintas" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Total number of colours used" +msgstr "Número de dispáros en modo raxada contínua" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "Número de tintas" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Número de golpes" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Orientación" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Name of organization associated with the video." +msgstr "Nome da organización ou compañía destacada na imaxe." + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Festa" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Festa" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Palabras clave" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Palabras chave." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Control da imaxe" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Control da imaxe" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Control da imaxe" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Control da imaxe" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Control da imaxe" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Control da imaxe" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Control da imaxe" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Control da imaxe" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Control da imaxe" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Modo de saturación da imaxe" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Control da imaxe" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Selección" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Selección" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Modo sinxelo" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "Restricións na creación de duplicados da imaxe." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Tempo de exposición" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "The time value of the time of the movie poster." +msgstr "A hora de inicio do medio no proxecto de son." + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Data de referencia" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Vista previa da imaxe" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "Indica o tipo de contido de son" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Vista previa dos datos" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Vista previa dos datos" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Duración do ficheiro multimedia." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Vista previa da imaxe" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Duración do ficheiro multimedia." + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Creado con" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Palabras clave" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Abertura automática" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Abertura automática" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "ID do produto" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "ID do produto" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "ID do produto" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Desprazamento da gravación" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Desprazamento da gravación" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Outros requisitos da licenza" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +#, fuzzy +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"Etiqueta TIFF 296, 0x128. Unidade utilizada para «Resolución X» e " +"«Resolución Y». Pode tomar os valores: 2 = polgadas; 3 = centímetros." + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"Etiqueta EXIF 41993, 0xA409. Indica a dirección do procesamento de " +"saturación usado pola cámara." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Nome do xénero." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Selección" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "The time value for the start time of the current selection." +msgstr "" +"O número de versión dos estándares PLUS no lugar no momento da transacción." + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Duración do son" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "DuracioÌn" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Versión do firmware" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "O nome da toma" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Escritor del encabezamiento" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "O nome da toma" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Palabras clave de Windows" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Palabras chave." + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Crédito" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Orixe" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Orixe" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Orixe" + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Altura da imaxe" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Largura da imaxe" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Noite estrelada" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Código de inicio de tempo" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Estado" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Contador de disparos" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "Número de golpes" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Nome da toma" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Calidade da imaxe" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Taxa de mostraxe de son" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Cantidade de bytes por tira" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Mostras extra" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Código de inicio de tempo" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Información do disparo" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Axuste do modo de imaxe" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Título" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Palabras clave" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Palabras chave." + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Idioma" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "A data na que caduca a licenza." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Asunto" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Nome da cinta" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Axustes predeterminados" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Idioma" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Nome da cinta" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Tipo de imaxe" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Lonxitude da miniatura" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Lonxitude da imaxe previa" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Tamaño da vista previa" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Lonxitude da miniatura" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Vista previa válida" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Baixo a escala" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Desprazamentos do mosaico" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Hora de envío" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +#, fuzzy +msgid "Total Frame Count" +msgstr "Conta de bytes do mosaico" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Número de golpes" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "Rastrexo GPS" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "Taxa de fotogramas do vídeo" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "Duración do son" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Número de pista" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Versión da nota do fabricante" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Idioma" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "Taxa de fotogramas do vídeo" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Data de modificación do vídeo" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Número de pista" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Número de pista" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Número de pista" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Información do disparo" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Vídeo" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Vídeo" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Programa" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "" +"Este campo indica a lonxitude do intervalo de reinicio utilizado nos datos " +"da imaxe comprimida." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "ID do licenciador" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Calidade" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "Taxa de fotogramas do vídeo" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Tamaño do fotograma do vídeo" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Tamaño do fotograma do vídeo" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Axuste fino do balance de brancos" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Largo do mosaico" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Cualificación de Windows" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Escritor" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Escribiendo a vista previa" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +#, fuzzy +msgid "Horizontal resolution in pixels per unit." +msgstr "" +"Etiqueta TIFF 282, 0x11A. Resolución horizontal en píxeles por unidade." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Data e hora da última modificación do vídeo." + +#: src/properties.cpp:1392 +#, fuzzy +msgid "Vertical resolution in pixels per unit." +msgstr "Etiqueta TIFF 283, 0x11B. Resolución vertical en píxeles por unidade." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Balance de vermellos" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "Indica o tipo de contido de son" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bits por mostra" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bits por mostra" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Compresor de son" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Descrpción da imaxe" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Información do disparo" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Axustes do modo do enfoque" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Duración do son" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Adobe descomprimido" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Orde en forcada automática" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Taxa de son" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "Taxa de mostraxe de son" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"A taxa de mostraxe de son. Pode ser calquera valor, mais comunmente 32.000, " +"41.100 ou 48.000" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Taxa de mostraxe de son" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "atopado no ficheiro" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "atopado no ficheiro" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Inicio automático da forcada" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Duración do son" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Orde en forcada automática" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "Duración do son" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Tipo de son" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Data de modidicación do son" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "Taxa de son" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "Taxa de son" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Nome do xénero." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Data de modificación dos metadatos" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "O día e a hora na que se creou orixinalmente o recurso." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Un nome informal curto para o recurso." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Licenciatario" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Zona dereita" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Dereitos" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +#, fuzzy +msgid "A bibliographic reference for the resource." +msgstr "Un nome informal curto para o recurso." + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Referencia da tarefa" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Versión de rexistro" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Instrucións" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Selección" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Modo de resolución" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Envorcado de datos" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Código de localización" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Nome da cinta" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Identificador único do traballo do que deriva este recurso." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Información do disparo" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Propiedades das lentes" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID da licenza" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Número F manual" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Número de directorio" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Gravar pantalla" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Estabelecer" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Control remoto" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Graduación" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Posición do foco" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Número do intervalo" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Identificación do modelo" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Medios que colaboraron" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Referencia de proxecto" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "Secuencia AEB" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Nome do propietario" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Mostras extra" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Escena nocturna" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Mostras extra" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Suceso" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Data de creación" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Data de creación" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Tempo de introdución" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "mes" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "A data na que caduca a licenza." + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Atraso" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Data de creación" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Mostra do formato" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "Valor SMin da mostra" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Número de ficheiro" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Notas do licenciador" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Código de localización" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Lugar" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Continuo" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Estado/Provincia" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "País" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Calidade" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Local" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "Descrición textual dos datos do obxecto." + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Código de localización" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Código de localización" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "Latitude GPS do destino" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "Lonxitude GPS do destino" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "Latitude GPS do destino" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "Lonxitude GPS" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Referencia da tarefa" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Data de referencia" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Servizo de referencia" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Número de referencia" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Formato" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Ãmbar" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Vermello" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Identificación do modelo" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Identificación do modelo" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Identificador" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identificador" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Referencia GPS de dirección da imaxe" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Identificador" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Estado" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Nome do documento" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Desprazamento da gravación" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Editor" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "A data na que a imaxe foi publicada por primeira vez." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Clasificación de seguranza" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Orden de recheo" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Cor natural" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Orixe do ficheiro" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Bloque de recursos de imaxe" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Fonte de flash" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Medición de interoperabilidade" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Medición en proceso" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Medición en proceso" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Valores de medida do ruído." + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Medición de interoperabilidade" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Medición de interoperabilidade" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Medición de interoperabilidade" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Medición de interoperabilidade" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "Modo GPS de medida" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Medición en proceso" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Descrición textual dos datos do obxecto." + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Data e hora" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "O nome da toma" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Categoría" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Modo de resolución" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Modo de resolución" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Modo do enfoque automático" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Modo do enfoque automático" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Configuración do enfoque" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Configuración do enfoque" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Rango da lente" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Rango de distancia focal da lente" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Sombra" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Resaltar" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Luz de recheo" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "Luz de recheo X3" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Axuste da cor" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Axuste da cor" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Modo de axuste" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Modo de axuste" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Forcada automática" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Forcada automática" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Etiqueta SigmaMakerNote descoñecida" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "Segmento 8" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "Lv1 avanzado" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "Lv2 avanzado" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "Lv3 avanzado" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "Lv4 avanzado" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "Lv5 avanzado" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "Escena nocturna / solpor" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "Obturador alta velocidade" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Retrato no solpor" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Autoretrato" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "Disparador de sonrisas" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "Alta sensibilidade" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panorama" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "Anti esborranchado do movemento" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "Correccion HDR de luz de fondo" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Macro foco" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "Pel suave" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "ID da imaxe" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "Acender (Continuo)" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "Acender (Disparo)" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "Máis" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Fluorescente branco" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "Fluorescente branco frío" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "Fluorescente branco diúrno" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Incandescente" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Fluorescente branco" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Baixo a auga 1 (auga azul)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Baixo a auga 2 (auga verde)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "AF permanente" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "AF centrado" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "AF puntual" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "AF punto flexíbel" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "AF a un toque" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "Enfoque manual" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "Faciana detectada" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "Pechar foco" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "Modo de raxada múltiple" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "Largura da imaxe en raxada múltiple" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "Altura da imaxe en raxada múltiple" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "Imaxe de vista previa JPEG" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "HDR automático" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "Modo de rango de alta definición" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Información do disparo" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "ID do modelo Sony" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "Reprodución de cor" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "Optimizador de rango dinámico" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "Versión da nota do fabricante Minolta" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Tamaño da imaxe total" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Tamaño da imaxe de vista previa" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Tamaño da imaxe de vista previa" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "Iluminador de AF" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "Calidade JPEG" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Modo de publicación" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Número de dispáros en modo raxada contínua" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "Anti esborranchado" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "Redución do ruído de alta exposición" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "Modo intelixente automático" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "Etiqueta Sony1MakerNote descoñecida" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Alta continuidade" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Baixa continuidade" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "Forcada con optimizador D-Range baixo" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "Outono" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "Imaxe Dixital Avanzada ADI" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "Caixa de estilos 1" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "Automático sen flash" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "Nivel do optimizador de rango dinámico" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "Estilo creativo" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "Valor de zona coincidente" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "Disparador con AF" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "Alta redución de ruído ISO" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Estilo da imaxe" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Etiqueta de configuracións de cámara Sony1 descoñecida" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Etiqueta de configuracións 2 de cámara Sony1 descoñecida" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Sección descoñecida" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Estrutura de datos da imaxe" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Desprazamento da gravación" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Caracteristicas dos datos da imaxe" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Outros datos" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Estrutura de datos Exif" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Configuración da imaxe" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Información do usuario" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Ficheiro relacionado" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Data e hora" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Condicións de toma da fotografía" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Información GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Información de interoperatibidade" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Información específica do vendedor" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Etiquetas Adobe DNG" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Etiquetas Panasonic RAW" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "Etiquetas TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "Etiquetas TIFF PageMaker 6.0" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Etiquetas Adobe OPI" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Última sección" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Imaxe primaria" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Miniatura/Vista previa" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Imaxe principal, ficheiro de páxinas múltiples" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Miniatura / Vista previa, ficheiro de páxinas múltiples" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Imaxe principal, máscara de transparencia" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Miniatura / Vista previa, máscara de transparencia" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" +"Imaxe principal, ficheiro de páxinas múltiples, máscara de transparencia" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" +"Miniatura / Imaxe de vista previa, ficheiro de páxinas múltiples, máscara de " +"transparencia" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Datos da imaxe, resolución completa" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Datos da imaxe, resolución reducida" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "Uhna única página dunha imaxe de páxinas múltiples" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "polgada" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "Fax T4/Grupo 3" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "Fax T6/Grupo 4" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW (compresión sin pérdidas para tiff)" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (estilo antiguo)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe descomprimido" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG BeN" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "Color JBIG" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "Próximos 2-bits RLE" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF comprimido" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "Samsung SRW comprimido" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Padding" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "Imaxe monocromática IT8" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "Arte lineal binaria IT8" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (10-bits LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-bits ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar descomprimido" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Codificación Kodak DCS" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "Rexistro SCI de luminancia RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "Rexistro SGI de 24 bits empaquetados" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF comprimido" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR comprimido" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF comprimido" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "o branco é cero" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "o negro é cero" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Paleta RGB" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Máscara de transparencia" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Matriz de filtro de cor" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Raw lineal" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "Sen tramado ou semitóns" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "Trama ordenada ou técnica de semitono" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Proceso ao chou" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "arriba, esquerda" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "arriba, dereita" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "abaixo, dereita" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "abaixo, esquerda" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "esquerda, arriba" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "dereita, arriba" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "dereita, abaixo" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "esquerda, abaixo" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "Non se empregou o esquema de predición" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Diferenciación horizontal" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "sen CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "Datos enteiros sen asinar" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "Datos enteiros de complemento a dous asinados" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "Datos de coma flotante IEEE" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "Formato de datos sen definir" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "Sen indexar" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "Indexado" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Centrado" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Emprazamento compartido" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Sen flash" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Si, automático, non se detectou a luz de retorno" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Si, automático, detectouse a luz de retorno" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Si, non se disparou" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Si, obrigatorio" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Si, modo obrigatorio do flash, non se detectou a luz de retorno." + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Si, modo obrigatorio do flash, detectouse a luz de retorno." + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Non, obrigatorio" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Si, automático, non se detectou a luz de retorno" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Non, automático" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Si, automático" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Si, automático, non se detectou a luz de retorno" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Si, automático, detectouse a luz de retorno" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Sen función de flash" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Non, sen función de flash" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Si, redución de ollos vermellos" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Si, redución de ollos vermellos, non se detectou a luz de retorno" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Si, redución de ollos vermellos, detectouse a luz de retorno" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Si, obrigatorio, redución de ollos vermellos." + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Si, obrigatorio, redución de ollos vermellos, non se detectou a luz de " +"retorno" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" +"Si, obrigatorio, redución de ollos vermellos, detectouse a luz de retorno" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Non, redución de ollos vermellos" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Non,automático, redución de ollos vermellos" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Si,automático, redución de ollos vermellos" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" +"Si,automático, redución de ollos vermellos, non se detectou a luz de retorno" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" +"Si,automático, redución de ollos vermellos, detectouse a luz de retorno" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Escena rectangular (ou cadrada)" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" +"Disposición intercalada A: aplica un desprazamento de 1/2 fila abaixo ás " +"columnas pares" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" +"Disposición intercalada B: aplica un desprazamento de 1/2 fila arriba ás " +"columnas pares" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" +"Disposición intercalada C: aplica un desprazamento de 1/2 columna á dereita " +"ás filas pares" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" +"Disposición escalonada B: aplica un desprazamento de 1/2 columna á esquerda " +"ás filas pares" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Procesando software" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "Nome e versión do software usado para post-procesar a imaxe" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Novo tipo de ficheiro secundario" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Indicación xeral do tipo de datos contido neste ficheiro secundario" + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "Tipo de ficheiro secundario" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"Unha indicación xeral do tipo de datos contidos neste ficheiro secundario. " +"Este campo é obsoleto, debe empregarse NewSubfileType no seu canto" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"A cantidade de columnas dos datos de la imaxe, igual á cantidade de píxeles " +"por fila. En datos comprimidos JPEG utilizase un marcador JPEG no canto " +"desta etiqueta." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"A cantidade de filas de datos da imaxe. En datos comprimidos JPEG utilizase " +"un marcador JPEG no canto desta etiqueta." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bits por mostra" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"A cantidade de bits por compoñente da imaxe. Neste estándar cada compoñente " +"de imaxe é de 8 bits, polo que o valor desta etiqueta é 9. Vexa tamén " +". En datos comprimidos JPEG utilizase un marcador JPEG no " +"canto desta etiqueta." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"O esquema de compresión usado para os datos da imaxe. Cando unha imaxe " +"primaria está comprimida con JPEG, isto non é necesario e omítese. Cando as " +"miniaturas utilizan compresión JPEG, o valor desta etiqueta é 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"A composición do píxel. En datos comprimidos JPEG utilizase un marcador JPEG " +"no canto desta etiqueta." + +#: src/tags.cpp:444 +#, fuzzy +msgid "Thresholding" +msgstr "Limiares" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" +"Para TIFF en branco e negro, a técnica usada para converter os tons de gris " +"en píxeles brancos ou negros (puros)." + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "Largura da cela" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" +"Largo da matriz de tramado ou semitóns usada para crear o ficheiro ao que se " +"lle aplica o tramado ou semitóns de dous niveis." + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "Tamaño da cela" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" +"Lonxitude da matriz de tramado ou semitóns usada para crear o ficheiro ao " +"que se lle aplica o tramado ou semitóns de dous niveis." + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Orden de recheo" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Orden lóxico de bits dentro dun byte" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Nome do documento" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Unha cadea de caracteres que da título á imaxe. Pode ser un comentario como " +"«merenda de empresa de 1988» ou algo polo estilo. Non se permiten caracteres " +"codificados con 2 bytes, de necesitarse un código de 2 bytes debe usarse a " +"etiqueta privada Exif ." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"O fabricante do equipo. Este é o fabricante do DSC, escáner, dixitalizador " +"de vídeo ou outro equipo que xerou a imaxe. Cando se deixa baleiro o campo, " +"tratase como descoñecido." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"O nome ou número de modelo do equipo. Este é o nome do modelo ou número do " +"DSC, escáner, dixitalizador de vídeo ou outro equipo que xerou a imaxe. " +"Cando se deixa baleiro o campo, tratase como descoñecido." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"O desprazamento en bytes de cada tira. Recomendase que se seleccione de " +"xeito tal que a cantidade de bytes da tira non exceda de 64 Kbytes. Con " +"datos comprimidos JPEG isto non é necesario e omítese. Vexa tamén " +" e ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "A orientación da imaxe vista en términos de filas e columnas." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Mostras por pixel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"O número de compoñentes por píxel. Desde que se aplica este estándar a " +"imaxes RGB e YCbCr, o valor desta etiqueta é 3. En JPEG comprimidos " +"utilizase un marcador JPEG no canto desta etiqueta." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Filas por tira" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"A cantidade de filas por tira. Esta é a cantidade de filas na imaxe dunha " +"tira cando se divide á imaxe en tiras. En datos comprimidos JPEG isto non é " +"necesario e omítese. Vexa tamién e ." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Cantidade de bytes por tira" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"A cantidade total de bytes en cada tira. En datos comprimidos JPEG isto non " +"é necesario e omítese" + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Resolución X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"A cantidade de píxeles por na dirección . Cando " +"se descoñece a resolución dunha imaxe, utilizase 72 [dpi]." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Resolución Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"A cantidade de píxeles por na dirección . " +"Utilizase o mesmo valor que ." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Indica se os compoñentes de píxel se gravan en formato plano ou segmentado. " +"Nos datos comprimidos JPEG utilizase un marcador JPEG no canto desta " +"etiqueta. Se este campo non existe, asúmese o predeterminado de TIFF, 1 " +"(segmentado)." + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "Unidade de resposta de grises" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "Precisión da información contida en «Curva de resposta de grises»." + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "Curva de resposta de grises" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" +"Densidade óptica de cada posíbel valor do píxel con datos na escala de " +"grises." + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "Opcións T4" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "Opcións de codificación T4" + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "Opcións T6" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "Opcións de codificación T6" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"A unidade para medir tanto como (é a mesma para " +"ambas). De descoñecerse a resolución da imaxe, utilizase 2 (polgadas)." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Número de imaxe" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Nome do documento do que foi escaneada esta imaxe" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Unha función de transferencia para a imaxe, descrita en forma tabular. " +"Normalmente esta etiqueta non é necesaria, xa que o espazo de cor " +"especificase na etiqueta de información de espazo de cor ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Esta etiqueta registra el nombre y la versión del software o firmware de la " +"cámara o dispositivo de entrada de imagen utilizado para generar la imágen. " +"No se especifica el formato detallado, pero se recomienda que se siga el " +"ejemplo mostrado debajo. Cuando el campo se deja en blanco, se trata como " +"desconocido." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"A data e a hora da creación da imaxe. No estándar Exif é a data e a hora na " +"que cambiou o ficheiro." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Esta etiqueta rexistra o nome do propietario da cámara, fotógrafo ou creador " +"da imaxe. Non se especifica o formato detallado, mais recomendase que se " +"escriba a información como no exemplo de embaixo para facilitar a " +"interoperabilidade. Cando se deixa baleiro o campo, tratase como " +"descoñecido. P.ex. «Propietario da cámara, Xoan Trelles; fotógrafo, Lois " +"Castro; creadora da imaxe, Xiana Sotelo»" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "Equipo anfitrión" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Esta etiqueta garda información sobre o computador (anfitrión) usado para " +"xerar a imaxe." + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Predictor" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" +"Un «predictor» é un operador matemático aplicado á imaxe antes de que se " +"aplique un sistema de codificación." + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"A cromacidade do punto branco da imaxe. Normalmente esta etiqueta non é " +"necesaria xa que o espazo de cor especificase na etiqueta de información do " +"espazo de cor ()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"A cromacidade das tres cores primarias da imaxe. Normalmente esta etiqueta " +"non é necesaria xa que o espazo de cor especificase na etiqueta de " +"información do espazo de cor ()." + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Mapa de cores" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" +"Mapa de cores para as imaxes con paleta de cor. Este campo define un mapa de " +"cores RGB (normalmente chamada táboa de busca) para este tipo de imaxes. " +"Nunha imaxe con paleta de cor, usase o valor dun píxel para indexar o mapa " +"de cores." + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "Consellos sobre semitóns" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" +"O propósito do campo «Consellos sobre semitóns» é transmitir á función de " +"medios tons a gama de niveis de grises nunha imaxe colorimetricamente " +"especificada que debe conservar os detalles tonais." + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Largo do mosaico" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "O largo do mosaico en píxeles, é o número de columnas en cada mosaico" + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Lonxitude do mosaico" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "A altura do mosaico en píxeles, é o número de filas en cada mosaico" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Desprazamentos do mosaico" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"Byte de desprazamento para cada mosaico comprimido e gardado no disco. O " +"desprazamento especificase con respecto ao inicio do ficheiro TIFF. Debe " +"trese en conta que cada mosaico está localizado independentemente do resto." + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Conta de bytes do mosaico" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"U número de bytes (comprimidos) en cada mosaico. Ver «Desprazamentos do " +"mosaico» para obter unha descrición de como se ordenan as contas de byte." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "Compensacións subIFD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"Definido por Adobe Corporation para activar árbores TIFF dentro de ficheiros " +"TIFF." + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Xogo de tintas" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"O xogo set de tintas usadas nunha imaxe (interpretación fotométrica=5) " +"separada." + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "Nomes de tintas" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"O nome de cada tinta usada nunha imaxe (interpretación fotométrica=5) " +"separada." + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "Número de tintas" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" +"O número de tintas. Habitualmente igual a mostras por píxel, agás que sexan " +"mostras extra." + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "Rango de puntos" + +#: src/tags.cpp:622 +#, fuzzy, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "Os valores dos compoñentes que corresponden ao 0% dot e 100% dot." + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "Impresora de destino" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" +"Unha descrición do entorno de impresión para o que se pretende esta " +"separación." + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "Mostras extra" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" +"Especifica que cada píxel ten «m» compoñentes extra cuxa interpretación está " +"definida por un dos valores listados embaixo." + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "Mostra do formato" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "Especifica como interpretar cada dato de mostra nun píxel" + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "Valor SMin da mostra" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "Especifica o valor mínimo da mostra" + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "Valor SMax da mostra" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "Especifica o valor máximo da mostra" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Rango de transferencia" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "Expande o rango da «Función de transferencia»" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "Ruta do fragmento" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" +"Unha «Ruta do fragmento» TIFF serve para reflectir as fincionalidades " +"senciais da creación de rutas PostScript." + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "Unidades para o eixo X da ruta ao fragmento" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"O número de unidades que comprende a largura da imaxe, en termos de " +"coordenadas enteiras de «Ruta ao fragmento»." + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "Unidades para o eixo Y da ruta ao fragmento" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"O número de unidades que comprende a altura da imaxe, en termos de " +"coordenadas enteiras de «Ruta ao fragmento»." + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" +"Imaxes indexadas son imaxes onde os «píxeles» non representan valores de " +"cor, senón o índice (habitualmente 8-bit) nunha táboa de cores separada,o " +"mapa de cores." + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "Táboas JPEG" + +#: src/tags.cpp:661 +#, fuzzy +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" +"Pode empregarse esta etiqueta opcional para codificar la cuantización do " +"JPEG e as táboas Huffman para a súa utilización posterior no proceso de " +"descompresión de JPEG." + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "Proxy OPI" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" +"OPIProxy fornece información referente a se a imaxe é un proxy de baixa " +"resolución dunha imaxe de alta resolución (Adobe OPI)." + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "Proceso JPEG" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "Este campo indica o proceso usado para producir os datos comprimidos" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "Formato de intercambio de JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"O desprazamento do byte de inicio (SOI) dos datos comprimidos da miniatura " +"JPEG. Isto non se utiliza para os datos primarios de imaxe JPEG." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "Lonxitude do formato de intercambio de JPEG" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"A cantidade de bytes de datos dunha miniatura comprimida JPEG. Isto non se " +"utiliza para os datos primarios JPEG. As miniaturas JPEG non se dividen " +"senón que se gravan como un fluxo contínuo de bits desde SOI ata EOI. Non se " +"deberían rexistrar marcadores Appn e COM. As miniaturas comprimidas deberían " +"gravarse en non máis de 64 Kbytes, incluíndo todos os uotros datos a gravar " +"en APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "Intervalo de reinicio JPEG" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Este campo indica a lonxitude do intervalo de reinicio utilizado nos datos " +"da imaxe comprimida." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "Predictores JPEG sen perdas" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" +"Este campo apunta a unha lista de selección de valores para o predictor sen " +"perdas, un por compoñente." + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "Transformacións de punto JPEG" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" +"Este campo apunta a unha lista de valores de transformación de punto, un por " +"compoñente." + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "Táboas Q JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" +"Este campo apunta a unha lista de desprazamentos para as táboas de " +"cuantificación, un por compoñente." + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "Táboas DC JPEG" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" +"Este campo apunta a unha lista de desprazamentos nas táboas Huffman DC ou " +"nas táboas Huffman sen perdas, unha por compoñente." + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "Tábpas AC JPEG" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" +"Este campo apunta a unha lista de desprazamentos nas táboas Huffman AC, unha " +"por compoñente." + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Os coeficientes da matriz para transformar os datos de RGB a YCbCr. En TIF " +"non se fornecen valores predeterminados mais aquí tomase o valor dado no " +"Apéndice E, «Directrices dos espazos de cor», como predeterminado. O espazo " +"de cor declarase nunha etiqueta de información do espazo de cor, tomando " +"como predeterminado o que dea as características óptimas de " +"interoperabilidade para a imaxe." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "Mostraxe secundario YCbCr" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"A relación de mostraxe dos compoñentes de crominancia en relación co " +"compoñente de luminancia. En datos comprimidos JPEG utilizase un marcador " +"JPEG no canto de esta etiqueta." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"A posición dos compoñentes de crominancia en relación co de luminancia. Este " +"campo designase só para JPEG comprimidos ou datos non comprimidos YCbCr. O " +"valor predeterminado TIFF é 1 (centrado); mais cando Y:Cb:Cr = 4:2:2 " +"recomendase neste estándar que se utilice 2 (emprazamento compartido) para " +"rexistrar os datos, para mellorar a calidade da imaxe cando se ve en " +"sistemas de TV. Cando este campo non existe, o lector deberá asumir o " +"predeterminado TIFF. En caso de que Y:Cb:Cr = 4:2:0, recomendase o " +"predeterminado TIFF (centrado). Se o lector non ten a capacidade de admitir " +"ambos tipos de , debería seguir o predeterminado TIFF sen " +"importar o valor deste campo. É preferíbel que os lectores poidan admitir o " +"posicionamento centrado e o emprazamento compartido." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Referencia branco/negro" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"O valor de referencia dos puntos branco e negro. En TIFF non se dan " +"predeterminados, mais os valores de embaixo dánse como predeterminados aquí. " +"O espazo de cor declarase nunha etiqueta de información do espazo de cor, " +"sendo o valor predeterminado aquel que dea as características de " +"interoperabilidade óptimas para a imaxe." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "Paquete XML" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Metadatos XMP (Adobe nota técnica 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Cualificación de Windows" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Etiqueta de cualificación usada por Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Porcentaxe de cualificación de Windows" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Etiqueta de cualificación usada por Windows, valor en porcentaxe" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "ID da imaxe" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" +"«ID de imaxe» é a ruta completa da imaxe orixinal en alta resolución ou " +"calquera outra cadea de identificación que identifique univocamente á imaxe " +"orixinal (Adobe OPI)." + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "Dimensión de patrón de repetición CFA" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" +"Conten dous valores representando as filas e columnas mínimas para definir " +"os patróns repetitivos da matriz do filtro de cor" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Indica o patrón xeométrico da matriz de filtros de cor (CFA) do sensor de " +"imaxe cando se utiliza un sensor «monochip» de área de cor. Non se aplica a " +"todos os métodos de detección." + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Información do Dereito de autoría. Neste estándar a etiqueta utilizase para " +"indicar tanto o Dereito de autoría do fotografo como o Dereito do editor. É " +"a nota de Dereito de autoría da persoa ou Organización que reclama dereitos " +"sobre a imaxe. Neste campo debería escribirse a declaración de " +"interoperatibilidade do Dereito de autoría, incluíndo a data e os dereitos; " +"p.ex.: «Dereito de autoría, Lois Castro, 20xx. Todos os dereitos " +"reservados.» Neste estándar o campo rexistra tanto o Dereito de autoría do " +"fotógrafo como o Dereito do editor, con cada un rexistrado nunha parte " +"separada da declaración. Cando hai unha distinción clara entre ambos " +"Dereitos, primeiro debería escribirse o do fotógrafo seguido polo do editor, " +"separados por NULL (neste caso, debido a que la declaración tamén termina " +"con un NULL, hai dous códigos NULL) (vexa o exemplo 1). Cando se da só o do " +"fotógrafo, está terminado por un código NULL (vexa o exemplo 2). Cando se da " +"só o do editor, a parte do Dereito de autoría do fotógrafo consta dun espazo " +"seguido dun código de terminación NULL, a seguir indicase o Dereito do " +"editor (vexa o exemplo 3). Cando o campo se deixa baleiro, tratase como " +"descoñecido." + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "Tempo de exposición, en segundos." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "O número F." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Conten un rexistro IPTC/NAA" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Bloque de recursos de imaxe" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "Conten información incrustada polo aplicativo Adobe Photoshop" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Un punteiro ao IFD Exif. Interoperabilidade, o IFD Exif ten a mesma " +"estrutura que a do IFD especificado en TIFF. Porén, polo común, non conten " +"datos de imaxe como no caso de TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Perfil «Inter Color»" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Conten unha caracterización ou perfil dun formato de espazo de cor do " +"Consorcio InterColor (ICC)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"A clase de programa utilizado pola cámara para axustar a exposición cando se " +"toma a foto." + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "Indica a sensibilidade espectral de cada canle utilizado da cámara." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Un punteiro ao GPS Info IFD. A estrutura de interoperabilidade do GPS Info " +"IFD, como a do IFD Exif, non ten datos de imaxe." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "Cualificación das velocidades ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"Indica a velocidade ISO e a latitude ISO da cámara ou dispositivo de entrada " +"tal e como se especifica na ISO 12232." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Indica a función de conversión opto-electrónica (OECF) especificada en ISO " +"14524." + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "Entrelazado" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "Indica o número de campo de imaxes de campo múltiple." + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "Desprazamento do fuso horario" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" +"Esta etiqueta opcional codifica o fuso horario do reloxo da cámara (relativo " +"ao tempo medio de Greenwich) utilizado para crear o valor da etiqueta «Data " +"e hora orixinal» cando se tomou a imaxe. Pode conter tamén o desprazamento " +"do fuso horario do reloxo usado para crear o valor da etiqueta «Data e " +"hora» cando se modifica a imaxe." + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "Modo temporizador" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" +"Número de segundos que foi atrasada a captura da imaxe, desde que se preme " +"no botón." + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "Data e hora orixinal" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "Data e hora na que se xeraron os datos da imaxe orixinal" + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"Específico para datos comprimidos; declara os bits comprimidos por píxel." + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Velocidade de obturación." + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "A abertura da lente." + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "O valor do brillo." + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "Compensación da exposición." + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Valor máximo de abertura" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "O menor número F da lente." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "A distancia ao suxeito, dada en metros." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "O método de medición." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "O tipo de fonte da luz." + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "Indica el estado do flash cuando se tomou a imaxe." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "A distancia focal real da lente, en mm." + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "Cantidade de enerxía do flash (BCPS)." + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "SFR da cámara" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Ruído" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "Valores de medida do ruído." + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Número de píxeles por «Unidade de resolución do plano focal» (37392) na " +"dirección«Largura da imaxe» para a imaxe principal." + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Número de píxeles por «Unidade de resolución do plano focal» (37392) na " +"dirección«Lonxitude da imaxe» para a imaxe principal." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"Unidade de medida para «Resolución no plano focal X» (37390) e «Resolución " +"no plano focal Y» (37391)." + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" +"Número asignado a unha imaxe, p.ex., nunha explosión de imágenes en raxada." + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "Clasificación de seguranza" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "Clasificación de seguranza asignada á imaxe." + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "Rexistro de todos os cambios que se fixeron na imaxe." + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "Indica a localización e a área do tema principal na escena xeral." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"Codifica o valor do índice de exposición da cámara no momento da toma da " +"imaxe." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "ID estándar de TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Conten catro caracteres ASCII representando o estándar TIFF/EP do ficheiro " +"TIFF/EP , p.e '1', '0', '0', '0'" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "Tipo de sensor de imaxe." + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Título Windows" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de título usada por Windows, codificada en UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Comentario Windows" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de comentario usada por Windows, codificada en UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Autor Windows" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de autor usada por Windows, codificada en UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Palabras clave de Windows" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Palabras clave usadas por Windows, codificadas en UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Tema Windows" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de suxeito usada por Windows, codificada en UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "Imprimir a imaxe coincidente" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "Imprimir a imaxe coincidente, é necesaria a descrición." + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "Versión DNG" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"Esta etiqueta codifica o número de versión de catro niveis de DNG. Para " +"ficheiros compatíbeis coa versión 1.1.0.0 da especificación DNG, esta " +"etiqueta debe conter os bytes: 1, 1, 0, 0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "Versión anterior DNG" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Esta etiqueta mostra a versión máis antiga da especificación «Digital " +"Negative» coa que o ficheiro é compatíbel. Os lectores non deben tentar ler " +"un ficheiro se esta etiqueta especifica un número de versión superior ao " +"seu. Ademais de comprobar as etiquetas de versión, os lectores deben " +"comprobar os tipos, contas e valores de cada etiqueta para verificar que son " +"quen de ler correctamente o ficheiro." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Modelo único da cámara" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"Define un nome único e non localizado para o modelo de cámara que creou a " +"imaxe en ficheiro RAW. Este nome debe incluír o nome do fabricante para " +"evitar conflitos e non debe ser local, aínda que o propio nome da cámara se " +"teña cambiado para os diferentes mercados (ver «Modelo de cámara " +"localizado»). Esta cadea pode ser usada polo software de lectura para " +"indexar por preferencias de modelo e perfís de substitución." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Modelo localizado da cámara" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"Semellante ao campo «Modelo único de cámara», agás que o nome pode " +"localizarse para diferentes mercados para facer coincidir a localización do " +"nome da cámara." + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "Cor plana CFA" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "Nivel de negro 2" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +#, fuzzy +msgid "Black Level Delta H" +msgstr "Nivel de negro 2" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +#, fuzzy +msgid "Black Level Delta V" +msgstr "Nivel de negro 2" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +#, fuzzy +msgid "White Level" +msgstr "Nivel de vermello do BB" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "Predeterminado" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Axustes predeterminados" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matriz de cor 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" +"«Matriz de cor 1» define unha matriz de transformación que convirte valores " +"XYZ a valores de referencia do espazo de color nativo da cámara, segundo a " +"primeira calibración da fonte de iluminación. Os valores da matriz son " +"almacenados en orde de exploración por filas. A etiqueta «Matriz de cor 1» é " +"necesaria para todos os ficheiros DNG non monocromos." + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matriz de cor 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" +"«Matriz de cor 2» define unha matriz de transformación que convirte valores " +"XYZ a valores de referencia do espazo de cor nativo da cámara, segundo a " +"segunda calibración da fonte de iluminación. Os valores da matriz son " +"almacenados en orde de exploración por filas." + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Calibración da cámara 1" + +#: src/tags.cpp:978 +#, fuzzy +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"«Calibración da cámara 1» define unha matriz de transformación que convirte " +"os valores de referencia do espazo nativo da cámara a valores individuais do " +"espazo de cor nativo da cámara, segundo a primeira calibración da fonte de " +"iluminación. Os valores da matriz son almacenados en orde de exploración por " +"filas. Esta matriz almacenase separadamente da matriz especificada pola " +"etiqueta «Matriz de cor 1» para permitir que os convertedores en bruto (RAW) " +"intercambien as matrices de substitución de cor baseadas na etiqueta «Modelo " +"único de cámara», sen deixar de aproveitar calquera calibración individual " +"da cámara feita polo fabricante da cámara." + +#: src/tags.cpp:987 +#, fuzzy +msgid "Camera Calibration 2" +msgstr "Calibración da cámara 1" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"«Calibración da cámara 2» define unha matriz de transformación que convirte " +"os valores de referencia do espazo nativo da cámara a valores individuais do " +"espazo de cor nativo da cámara, segundo a segunda calibración da fonte de " +"iluminación. Os valores da matriz son almacenados en orde de exploración por " +"filas. Esta matriz almacenase separadamente da matriz especificada pola " +"etiqueta «Matriz de cor 1» para permitir que os convertedores en bruto (RAW) " +"intercambien as matrices de substitución de cor baseadas na etiqueta «Modelo " +"único de cámara», sen deixar de aproveitar calquera calibración individual " +"da cámara feita polo fabricante da cámara." + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "Matriz de redución 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"«Matriz de redución 1» define unha matriz de redución de dimensións para " +"usala como primeiro paso na conversión de valores de espazo de cor nativos " +"da cámara a valores XYZ, segundo a primeira calibración da fonte de luz. " +"Esta etiqueta só pode ser usada se «ColorPlanes» é maior que 3. Os valores " +"da matriz son almacenados en orde de exploración por filas." + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "Matriz de redución 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"«Matriz de redución 2» define unha matriz de redución de dimensións para " +"usala como primeiro paso na conversión de valores de espazo de cor nativos " +"da cámara a valores XYZ, segundo a segunda calibración da fonte de luz. Esta " +"etiqueta só pode ser usada se «ColorPlanes» é maior que 3. Os valores da " +"matriz son almacenados en orde de exploración por filas." + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Balance analóxico" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Como toma neutra" + +#: src/tags.cpp:1022 +#, fuzzy +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" +"Especifica o balance de brancos no momento da captura, codificado como " +"coordenadas cromáticas X-Y. A inclusión desta etiqueta oponse á inclusión da " +"etiqueta «Como toma neutra»." + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "Blanco XY como se tomou" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" +"Especifica o balance de brancos no momento da captura, codificado como " +"coordenadas cromáticas X-Y. A inclusión desta etiqueta oponse á inclusión da " +"etiqueta «Como toma neutra»." + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "Liña base da exposicion" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +#, fuzzy +msgid "Baseline Noise" +msgstr "Liña base da exposicion" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Nitidez PM" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +#, fuzzy +msgid "Linear Response Limit" +msgstr "Unidade de resposta de grises" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +#, fuzzy +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"O número de serie da cámara ou do corpo da cámara empregado para tomar a " +"fotografía." + +#: src/tags.cpp:1082 +#, fuzzy +msgid "Lens Info" +msgstr "Información da lente" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "Radio de esborranchado do chroma" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" +"«Radio de esborranchado do chroma» fornece unha idea ao lector DNG sobre " +"canto esborranchado de croma debe aplicarse á imaxe. De omitirse a etiqueta, " +"o lector usará a cantidade predeterminada de esborranchado de croma. " +"Normalmente esta etiqueta só esta incluída para imaxes non CFA, desde que a " +"cantidade de esborranchado de croma requirida para imaxes en mosaico é " +"altamente dependente de algoritmos de mosaico, en cuxo caso o valor " +"predeterminado do lector de DNG está optimizado para ese algoritmo de " +"mosaico." + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "Forza do flash" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "Sombra" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +#, fuzzy +msgid "DNG Private Data" +msgstr "Vista previa dos datos" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "Versión da nota do fabricante" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +#, fuzzy +msgid "Calibration Illuminant 1" +msgstr "Redución da vibración 1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "Redución das vibracións 2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "Escala de mellor calidade" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +#, fuzzy +msgid "Raw Data Unique ID" +msgstr "ID único de imaxe" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +#, fuzzy +msgid "Original Raw File Name" +msgstr "Nome do ficheiro «raw» (bruto)" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Ãrea activa" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +#, fuzzy +msgid "Masked Areas" +msgstr "Ãreas de AF" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "Actual perfil ICC" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Actual perfil ICC" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +#, fuzzy +msgid "Current Pre-Profile Matrix" +msgstr "Actual perfil ICC" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Referencia de proxecto" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "Calibración da cámara 1" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Nome do perfil" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Redución de ruído" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "Nome do perfil" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Curva de ton" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +#, fuzzy +msgid "Profile Embed Policy" +msgstr "Nome do perfil" + +#: src/tags.cpp:1289 +#, fuzzy +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Esta etiqueta garda información sobre o computador (anfitrión) usado para " +"xerar a imaxe." + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Copyright" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Matriz de cor 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Matriz de cor 2" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Vista previa dos datos" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Versión de vista previa" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Vista previa da imaxe" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Descrición do axuste do dispositivo" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Espazo da color de vídeo" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Vista previa dos datos" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Centro da imaxe en bruto" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Filtro de ruído" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Etiqueta IFD descoñecida" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Non definido" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Programa creativo" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Programa de acción" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Modo retrato" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Modo de paisaxe" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Puntos múltiples" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Tungsteno (luz incandescente)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Bo tempo" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Anubrado" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Fluorescente de luz de día (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Fluorescente branco diúrno (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Fluorescente branco frío (W 3900 -4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Fluorescente branco (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Luz estándar A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Luz estándar B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Luz estándar C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "Tungsteno de estudio ISO" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Outra fonte de luz" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Sen calibrar" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "Ãrea de cor secuencial" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Sensor trilineal" + +#: src/tags.cpp:1472 +#, fuzzy +msgid "Color sequential linear" +msgstr "Ãrea de cor secuencial" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Escáner de filmes" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Cámara dixital" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Proceso normal" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Proceso personalizado" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Pequeno aumento de ganancia" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Gran aumento de ganancia" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Pequena diminución de ganancia" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Gran diminución de ganancia" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Próximo" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Distante" + +#: src/tags.cpp:1550 +#, fuzzy +msgid "Exposure time, given in seconds (sec)." +msgstr "Tempo de exposición, en segundos." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"Indica a función de conversión opto-electrónica (OECF) especificada en ISO " +"14524. é a relación entre a entrada óptica da cámara e os valores da " +"imaxe." + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "Sensibilidade ISO" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Sensibilidade espectral" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Ãndice de exposición" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "Modo de velocidade ISO" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "Modo de velocidade ISO" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +#, fuzzy +msgid "Date and Time (original)" +msgstr "Data e hora orixinal" + +#: src/tags.cpp:1610 +#, fuzzy +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"A data e a hora da creación da imaxe. No estándar Exif é a data e a hora na " +"que cambiou o ficheiro." + +#: src/tags.cpp:1613 +#, fuzzy +msgid "Date and Time (digitized)" +msgstr "Data e hora da dixitalización" + +#: src/tags.cpp:1614 +#, fuzzy +msgid "The date and time when the image was stored as digital data." +msgstr "Data e hora da última modificación do vídeo." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +#, fuzzy +msgid "Compressed Bits per Pixel" +msgstr "Bits comprimidos por píxel" + +#: src/tags.cpp:1627 +#, fuzzy +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Etiqueta EXIF 37122, 0x9102. O modo de compresión que se usa para unha imaxe " +"comprimida, indicase medido en bits por píxel." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Compensación da exposición" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +#, fuzzy +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "Indica a localización e a área do tema principal na escena xeral." + +#: src/tags.cpp:1670 +#, fuzzy +msgid "Maker Note" +msgstr "Versión da nota do fabricante" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +#, fuzzy +msgid "Sub-seconds Time Original" +msgstr "Data e hora orixinal" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +#, fuzzy +msgid "Sub-seconds Time Digitized" +msgstr "Data e hora da dixitalización" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +#, fuzzy +msgid "FlashPix Version" +msgstr "Versión Flashpix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +#, fuzzy +msgid "Interoperability IFD Pointer" +msgstr "Ãndice de interoperabilidade" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +#, fuzzy +msgid "Focal Plane X-Resolution" +msgstr "Resolución no plano focal X" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +#, fuzzy +msgid "Focal Plane Y-Resolution" +msgstr "Resolución no plano focal Y" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Ãndice de exposición" + +#: src/tags.cpp:1760 +#, fuzzy +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Indica a velocidade ISO e a latitude ISO da cámara ou dispositivo de entrada " +"tal e como se especifica na ISO 12232." + +#: src/tags.cpp:1764 +#, fuzzy +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" +"Indica a velocidade ISO e a latitude ISO da cámara ou dispositivo de entrada " +"tal e como se especifica na ISO 12232." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Matriz de filtro de cor" + +#: src/tags.cpp:1777 +#, fuzzy +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Indica o patrón xeométrico da matriz de filtros de cor (CFA) do sensor de " +"imaxe cando se utiliza un sensor «monochip» de área de cor. Non se aplica a " +"todos os métodos de detección." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +#, fuzzy +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Etiqueta EXIF 41987, 0xA403. Indica o modo estabelecido do balance de " +"brancos cando se tomou a imaxe." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +#, fuzzy +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Etiqueta EXIF 41989, 0xA405. Indica a distancia focal equivalente supoñendo " +"unha cámara con filme de 35mm. O valor 0 significa que a distancia focal é " +"descoñecida. Teña en conta que esta etiqueta difire da etiqueta «Distancia " +"focal»." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +#, fuzzy +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" +"Etiqueta EXIF 41991, 0xA407. Indica o grao do axuste global da ganancia da " +"imaxe." + +#: src/tags.cpp:1815 +#, fuzzy +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Etiqueta EXIF 41992, 0xA408. Indica a dirección do procesamento de contraste " +"usado pola cámara." + +#: src/tags.cpp:1819 +#, fuzzy +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Etiqueta EXIF 41993, 0xA409. Indica a dirección do procesamento de " +"saturación usado pola cámara." + +#: src/tags.cpp:1823 +#, fuzzy +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Etiqueta EXIF 41994, 0xA40A. Indica a dirección do procesamento da nitidez " +"usado pola cámara." + +#: src/tags.cpp:1827 +#, fuzzy +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Etiqueta EXIF 41995, 0xA40B. Indica a información das condicións da captura " +"de imaxes nun modelo particular de cámara." + +#: src/tags.cpp:1832 +#, fuzzy +msgid "This tag indicates the distance to the subject." +msgstr "Etiqueta EXIF41996, 0xA40C. Indica a distancia ao suxeito." + +#: src/tags.cpp:1835 +#, fuzzy +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Etiqueta EXIF 42016, 0xA420. Un identificador asignado a cada imaxe de forma " +"única. Gravase como unha cadea ASCII de 32 caracteres, equivalente á " +"notación hexadecimal e unha cadea fixa de 128 bits." + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Nome do propietario" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Número de serie" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Información específica do vendedor" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Modelo das lentes" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +#, fuzzy +msgid "Unknown Exif tag" +msgstr "Etiqueta descoñecida" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Norte" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Sur" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Leste" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Oeste" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Sobre o nivel do mar" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Baixo o nivel do mar" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Medición en proceso" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Medición de interoperabilidade" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Medición bi dimensional" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Medición tri dimensional" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "nós" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Dirección real" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Dirección magnética" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Quilómetros" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Millas" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "Nós" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Sen corrección" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Aplicada a corrección" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "Referencia de latitude GPS" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "Referencia de lonxitude GPS" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +#, fuzzy +msgid "GPS Data Degree of Precision" +msgstr "Etiqueta GPS 11, 0x0B. Graos de precisión para os datos GPS." + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +#, fuzzy +msgid "Indicates the speed of GPS receiver movement." +msgstr "Etiqueta GPS 13, 0x0D. Velocidade de movemento do receptor GPS." + +#: src/tags.cpp:2009 +#, fuzzy +msgid "GPS Track Ref" +msgstr "Rastrexo GPS" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +#, fuzzy +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"Etiqueta GPS 15, 0x0F. Dirección do movemento GPS, rango de valores de 0 a " +"359,99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +#, fuzzy +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"Etiqueta GPS 17, 0x11. Dirección da imaxe cando se captura, rango de valores " +"de 0 a 359,99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Referencia GPS de distancia ao destino" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +#, fuzzy +msgid "GPS Destination Longitude Reference" +msgstr "Lonxitude GPS do destino" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +#, fuzzy +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "Etiqueta GPS 24, 0x18. Punto de destino, valores de 0 a 359,99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +#, fuzzy +msgid "Indicates the distance to the destination point." +msgstr "Indica o tipo de contido de son" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "Marca de data GPS" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" +"Unha cadea de caracteres que almacena a información da data e a hora " +"relativa a UTC (Tempo Universal Coordinado). O formato é «AAAA:MM:DD.»." + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "Indica se se aplica a corrección diferencial ao receptor GPS" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Etiqueta de información GPS descoñecida" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Ãndice de interoperabilidade" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Indica a identificación da regra de interoperatibilidade. Utilice «R98» para " +"indicar regras ExifR98. Utilízanse catro bytes incluíndo o código de " +"terminación (NULL). Vexa o volume separado de «Regras recomendadas de " +"interoperabilidade Exif (ExifR98)» para outras etiquetas usadas en ExifR98." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Versión de interoperabilidade" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Versión de interoperabilidade" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Formato de archivo de imagen relacionado" + +#: src/tags.cpp:2107 +#, fuzzy +msgid "File format of image file" +msgstr "Produciuse un fallo ao abrir o ficheiro\n" + +#: src/tags.cpp:2109 +#, fuzzy +msgid "Related Image Width" +msgstr "Largura da imaxe" + +#: src/tags.cpp:2112 +#, fuzzy +msgid "Related Image Length" +msgstr "Lonxitude da imaxe" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Etiqueta de interoperabilidade Exif descoñecida" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "Desprazamento" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Orden dos bytes" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Etiqueta Nikon2MakerNote descoñecida" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Etiqueta descoñecida" + +#: src/tags.cpp:2688 +#, fuzzy +msgid "Digital zoom not used" +msgstr "Axuste de zoom dixital" + +#: src/tiffimage.cpp:2308 +#, fuzzy +msgid "TIFF header, offset" +msgstr "Cabeceira, desprazamento" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "bytes" diff --git a/vendor/exiv2-0.25/po/insert-header.sin b/vendor/exiv2-0.25/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/vendor/exiv2-0.25/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/vendor/exiv2-0.25/po/ms.po b/vendor/exiv2-0.25/po/ms.po new file mode 100644 index 0000000..b13805f --- /dev/null +++ b/vendor/exiv2-0.25/po/ms.po @@ -0,0 +1,27009 @@ +# Malay translation for exiv2 +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the exiv2 package. +# Abuyop , 2012. +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2014-07-30 18:51+0000\n" +"Last-Translator: abuyop \n" +"Language-Team: malay loco team\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 22:58+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Gagal untuk membuka fail\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Nama fail" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Saiz fail" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Bytes" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Jenis MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Saiz imej" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Tiada data Exif ditemui dalam fail\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Pengeluar Kamera" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Model Kamera" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Setem masa imej" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Bilangan imej" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Masa dedahan" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Bukaan" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Bias dedahan" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Denyar" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Bias denyar" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Jarak fokus" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "Kesetaraan 35 mm" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Jarak subjek" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Kelajuan ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Mod dedahan" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Mod pemeteran" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Mod makro" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Kualiti imej" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Resolusi Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Imbangan putih" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Thumbnail" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Tiada" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Hakcipta" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Ulasan Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "Nilai dedua tertindas" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Ulasan JPEG" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Pratonton" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "piksel" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "bait" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Tiada tag" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "bukan" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "ditemui dalam fail" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Setem masa penciptaan fail imej tidak ditetapkan dalam fail" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Gagal menghurai setem masa" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "di dalam fail ini" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Mengemaskini setem masa ke" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Memadam data thumbnail" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Memadam data Exif dari fail" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Memadam data IPTC dari fail" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Memadam ulasan JPEG dari fail" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Memadam data XMP dari fail" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Imej tidak mengandungi thumbnail Exif\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Menulis thumbnail" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "ke fail" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Data Exif tidak mengandungi thumbnail\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "Imej tidak mempunyai pratonton" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Menulis pratonton" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Menetap ulasan JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Tambah" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Amaran" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Gagal dibaca" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "nilai" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Tetap" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Del" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Setem masa bagi metadatum dengan kunci" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "tidak ditetapkan\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Pelarasan" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "oleh" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "tahun" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "tahun" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "bulan" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "bulan" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "hari" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "hari" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Tidak dapat laras setem masa mengikut" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "ke" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "Tag ISO Exif piawai wujud; tidak diubahsuai\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Menetapkan nilai ISO Exif ke" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Tiada ulasan pengguna Exif ditemui" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Temui ulasan pengguna Exif dengan jenis nilai tidak dijangka" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Tiada ulasan pengguna UNICODE Exif ditemui" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "Menetapkan ulasan pengguna UNICODE Exif ke" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Menulis data Exif dari" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Menulis data IPTC dari" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Menulis data XMP dari" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Menulis ulasan JPEG dari" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Tidak dapat tulis data meta ke fail" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Format nama fail menghasilkan nama fail kosong bagi fail" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Fail ini sudah mempunyai nama yang betul" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Fail" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "wujud. [T]ulis-ganti, [n]ama semula atau [l]angkau?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Menamakan semula fail ke" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "mengemaskini setem masa" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Gagal dinamakan semula" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Tulis-ganti" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Hidup" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Mati" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Format 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Format 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "On (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "On (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Tidak diketahui" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Tetapan Kamera" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Pelbagai tetapan kamera" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Jarak Fokus" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Maklumat Syot" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Maklumat syot" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Jenis Imej" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Jenis imej" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Veris Perisian Tegar" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Veris perisian tegar" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Bilangan Fail" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Bilangan fail" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Nama Pemilik" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Nombor Siri" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Nombor siri kamera" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "Maklumat Kamera" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "Maklumat kamera" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Fungsi Suai" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "ID Model" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "ID Model" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Maklumat Gambar" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Maklumat gambar" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "Kawasan Sah Imej Thumbnail" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "Kawasan sah imej thumbnail" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "Format Nombor Siri" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "Format nombor siri" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Makro Super" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Makro super" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "Maklumat AF" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "Maklumat AF" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "Ofset Data Keputusan Asal" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "Ofset data keputusan asal" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Jadual Imbangan Putih" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Jadual imbangan putih" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Model Kanta" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "Model kanta" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Nombor Siri Dalaman" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Nombor siri dalaman" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Data Pembuangan Debu" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "Data pembuangan debu" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "Fungsi suai" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "Maklumat Pemprosesan" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "Maklumat pemprosesan" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "Warna Terukur" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "Warna terukur" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "Ruang Warna" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "Ofset VRD" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "Ofset VRD" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "Maklumat Penderia" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "Maklumat penderia" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "Data Warna" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "Data warna" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Tag CanonMakerNote tidak diketahui" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Ekonomi" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Biasa" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Halus" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Super-halus" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Cereka Biasa" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Cereka" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Auto" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Mata-merah" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Segerak perlahan" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Auto + mata-merah" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "On + mata-merah" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Luaran" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Pemasa / tunggal" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Berterusan" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Cereka" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Berterusan, keutamaan kelajuan" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Berterusan, rendah" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Berterusan, tinggi" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Satu syot AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "AI servo AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AI fokus AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Fokus manual" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Tunggal" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Fokus pan" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Besar" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Sederhana" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Kecil" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Medium 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Medium 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Medium 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Auto penuh" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manual" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Lanskap" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Pengatup pantas" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Pengatup perlahan" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Adegan Malam" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Skala kelabu" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Potret" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Sukan" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Makro / syot dekat" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Hitam & Putih" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Terang" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutral" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Denyar dimatikan" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Pengatup panjang" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Dedaun" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Dalam bangunan" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Bunga api" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Pantai" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Dalam air" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Salji" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Kanak-kanak & haiwan peliharaan" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Tangkapan Malam" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Makro digital" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Warna Saya" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Imej Kaku" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Lain-lain" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Rendah" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Tinggi" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "t/s" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Tinggi Auto" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Lalai" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Titik" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Purata" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Penilaian" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Separa" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Pemberatan tengah" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Tidak diketahui" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Makro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Sangat dekat" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Dekat" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Julat sederhana" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Julat jauh" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Tanpa had" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Pemilihan titik AF manual" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Tiada (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Dipilih-sendiri" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Kanan" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Tengah" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Kiri" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Pemilihan titik AF sendiri" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Tangkapan mudah (Auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Program (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Keutamaan pengatup (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Keutamaan bukaan (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manual (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Tidak dinyala" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Dinyala" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "denyar luaran" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Denyar dalaman" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "Segerak FP dibenarkan" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Segerak langsir-kedua digunakan" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "Segerak FP digunakan" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "AE Biasa" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Imbangan dedahan" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "Kunci AE" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "Kunci AE + imbangan dedahan" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Tiada AE" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "On, syot sahaja" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Titik AF" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Lancar" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "H&P" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Suai" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Data warna saya" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Penuh" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "sRAW1 (mRAW)" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "sRAW2 (sRAW)" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Pemasa kendiri" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Pemasa kendiri" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Kualiti" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Mod Denyar" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Tetapan mod denyar" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Mod Pacu" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Tetapan mod pacu" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Mod Fokus" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Tetapan mod fokus" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Saiz Imej" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Mod Mudah" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Mod penggambaran mudah" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Zum Digital" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Zum digital" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Beza jelas" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Tetapan beza jelas" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Ketepuan" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Tetapan ketepuan" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Kejelasan" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Tetapan kejelasan" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Mod Kelajuan ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Tetapan kelajuan ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Mod Pemeteran" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Tetapan mod pemeteran" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Jenis Fokus" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Tetapan jenis fokus" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Titik AF dipilih" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Program Dedahan" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Tetapan mod dedahan" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Jenis Kanta" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Jenis kanta" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Kanta" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"Jarak fokus kanta 'panjang' dan 'pendek' (dalam unit fokus) dan 'unit fokus' " +"per mm" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Fokus Pendek" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Fokus pendek" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "Unit Fokus" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "Unit fokus" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Bukaan Maksimum" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Bukaan maksimum" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Bukaan Minimum" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Bukaan minimum" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Aktiviti Denyar" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Aktiviti denyar" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Perincian Denyar" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Perincian denyar" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Fokus Berterusan" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Tetapan fokus berterusan" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Tetapan AE" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Tetapan AE" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Penstabilan Imej" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Penstabilan imej" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Bukaan Paparan" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Bukaan paparan" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Lebar Sumber Zum" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "Lebar sumber zum" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "Lebar Sasaran Zum" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "Lebar sasaran zum" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "Mod Pemeteran Bintik" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "Mod pemeteran bintik" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Kesan Foto" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Kesan foto" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "Output Denyar Manual" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "Output denyar manual" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Ton Warna" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Ton warna" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "Ton Kualiti SRAW" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "Kualiti SRAW" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Tetapan Kamera Canon tag 1 tidak diketahui" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Hari siang" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Mendung" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Tungsten" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Pendarflour" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Hitam & Putih" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Bayang" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Suhu Manual (Kelvin)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "Set PC 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "Set PC 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "Set PC 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Pendarflour Hari Siang" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Suai 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Suai 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Suai 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "Set PC 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "Set PC 5" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "GN ( Jarak Keutamaan )" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "kiri" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "tengah" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "kanan" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Kelajuan ISO Digunakan" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Kelajuan ISO digunakan" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "EV Terukur" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Bukaan Sasaran" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Kelajuan Bukaan Sasaran" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Kelajuan bukaan sasaran" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Imbangan Putih" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Tetapan imbangan putih" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Jujukan" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Bilangan jujukan (jika dalam ledakan berterusan)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Titik AF Digunakan" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Titik AF digunakan" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Bias Denyar" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Jarak Subjek" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Jarak subjek (unit tidak jelas)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Nilai Bukaan" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Nilai Kelajuan Bukaan" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Kelajuan bukaan" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "EV 2 Terukur" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Tetapan Kamera Canon tag 2 tidak diketahui" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "Kiri ke kanan" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "Kanan ke kiri" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Bawah ke atas" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Atas ke bawah" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "Maktrik 2x2 (Ikut Jam)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Bingkai Panorama" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Bilangan bingkai panorama" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Arah Panorama" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Arah panorama" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Tag Panorama Canon tidak diketahui" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Pengurangan Hingar" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Pengurangan hingar dedahan lama" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Kunci Ae Bukaan" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "Butang kunci AE/Bukaan" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Kuncian Cermin" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Kuncian cermin" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Tokokan Aras Dedahan" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "Aras dedahan dan Tv/Av" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Bantuan AF" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Cahaya bantuan AF" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Av Berkelajuan Segerak Denyar" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Kelajuan pengatup dalam mod Av" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "Jujukan AEB" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "Pembatalan jujukan/auto AEB" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Segerak Langsir Pengatup" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Segerak langsir pengatup" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Butang Henti AF Kanta" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Suis Fn. butang henti Kanta AF" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Pengurangan Auto Denyar Isi" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Pengurangan auto bagi denyar isi" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Pengembalian Butang Menu" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Kedudukan pengembalian butang menu" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Tetapkan Fungsi Butang" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "Tetapkan fungsi butang bilang menangkap" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Pembersihan Penderia" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Pembersihan penderia" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "Lengahan Superimposed" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "Lengahan superimposed" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "Pelepasan Pengatup Tiada Kad CF" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "Pelepasan Pengatup Tanpa Kad CF" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Tag Fungsi Suai Canon tidak diketahui" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "kanan-tengah" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "bawah" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "atas" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "kiri-tengah" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "kiri-atas" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "kanan-atas" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "kiri-bawah" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "kanan-bawah" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Lebar Imej" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Lebar imej" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Tinggi Imej" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Tinggi imej" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Lebar Imej Bila Menangkap" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Lebar imej (bila menangkap)" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Tinggi Imej Bila Menangkap" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Tinggi imej (bila menangkap)" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Titik AF Digunakan" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Titik AF digunakan" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Titik AF Digunakan 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Titik AF digunakan (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Tag Maklumat Gambar Canon Tidak Diketahui" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "WB" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Poskad" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Skrin Lebar" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Cereka Saiz Sederhana" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "Cereka Saiz Kecil" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "On 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "On 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "On (shift AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "On (shift GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Kuning" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Jingga" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Merah" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Hijau" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Biru" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Ungu" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Mod Kurungan" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Nilai Kurungan" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "Bilangan Syot Braket" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "Kualiti Jpg Mentah" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Saiz Jpg mentah" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "Mod Braket WB" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "AB Nilai Braket WB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "GM Nilai Braket WB" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Kesan Penapis" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Kesan Pengetonan" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "Pembesaran Makro" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "Pembesaran makro" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "Penggambaran Paparan Langsung" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "Penggambaran paparan langsung" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Jarak Fokus" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Jarak Fokus" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "Kunci Dedahan Denyar" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "Kunci dedahan denyar" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Tag Maklumat Fail Canon Tidak Diketahui" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Piawai" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "Terendah" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "Tertinggi" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "Ketepuan Tinggi" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "Ketepuan Rendah" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "Set CM 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "Set CM 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "Takrifan Pengguna 1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "Takrifan Pengguna 2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "Takrifan Pengguna 3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "PC 1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "PC 2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "PC 3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "Kepercayaan" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monokrom" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Perincian Denyar" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "Lekuk Ton" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Lekuk ton" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "Frekuensi Kejelasan" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "Frekuensi kejelasan" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "Aras Merah Penderia" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "Aras merah penderia" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "Aras Biru Merah penderia" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "Aras biru penderia" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "Merah imbangan putih" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "Merah imbangan putih" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "Biru imbangan putih" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "Biru imbangan putih" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "Imbangan Putih" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "Suhu Warna" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Suhu Warna" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "Gaya Gambar" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Gaya gambar" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "Gandaan Digital" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "Gandaan digital" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "WBShiftAB" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "WBShift AB" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "WBShiftGM" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "WB Shift GM" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "Tag Maklumat Pemprosesan Canon Tidak Diketahui" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "Pengepala, ofset" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "tag" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "dir" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "jenis" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "saiz" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "ofset" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(tidak sah)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "Rekod sampul IIM" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "Rekod aplikasi IIM 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Versi Model" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Nombor deduan mengenalpasti versi bagi Model Pertukaran Maklumat, Bahagian " +"1, disediakan oleh penyedia. Nombor versi diumpuk oleh organisasi IPTC dan " +"NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Destinasi" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Set Data adalah untuk memudahkan beberapa penyedia yang memerlukan maklumat " +"penghalaan diatas lapisa OSI yang berkenaan." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Format Fail" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Nombor deduaan mewakili format fail. Format fail mesti didaftarkan melalui " +"IPTC atau NAA dengan nombor unik yang diumpuk kepadanya. Maklumat digunakan " +"untuk halakan data ke sistem yang berkenaan dan untuk benarkan penerimaan " +"sistem bagi lakukan tindakan berkenaan disana." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Versi Fail" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Nombor deduaan mewakili versi berkenaan bagi Format Fail yang dinyatakan " +"oleh tag ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Id Perkhidmatan" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Kenalpasti penyedia dan produk" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Nombor Sampul" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Bentuk aksara dari nombor yang akan jadi unik bagi data dinyatakan dalam tag " +" dan untuk Pengenalpasti Perkhidmatan yang dinyatakan oleh tag " +". Jika nombor sambul serupa muncul dengan tarikh yang " +"sama dengan Pengenalpasti Perkhidmatan yang sama, rekod 2-9 mesti tidak " +"berubah dari yang asal. Ini tidak diniatkan menjadi semakan penerima nombor " +"siri berjujuk." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Id Produk" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Benarkan penyedia mengenalpasti subset bagi keseluruhan perkhidmatannya. " +"Digunakan untuk menyediakan data organisasi yang diterima untuk dipilih, " +"dihalam atau jika tidak kendalikan data." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Keutamaan Sampul" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"Nyatakan keutamaan pengendalian sampul dan bukannya keterdesakan editorial " +"(rujuk tag . \"1\" adalah salinan paling terdesak, \"5\" " +"keterdesakan biasa, dan \"8\" paling rendah terdesak. Angka \"9\" " +"menunjukkan Keutamaan Ditakrif Pengguna. Angka \"0\" disimpan untuk kegunaan " +"akan datang." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Tarikh dihantar" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Gunakan format AATTBBHH (abad, tahun, bulan, hari) sebagai takrifan dalam " +"ISO 8601 untuk nyatakan tahun, bulan dan hari bagi perkhidmatan menghantar " +"bahan." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Masa Dihantar" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Gunakan format JJMMSS:JJMM yang mana JJMSS merujuk pada jam, minit dn saat " +"setempat dan JJMM merujuk pada jam dan minit dihadapan (+) atau dibelakang " +"(-) Masa Terkoordinat Universal yang dinyatakan dalam ISO 8601. Ia merupakan " +"masa bagi perkhidmatan menghantar bahan." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Set Aksara" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Tag ini mengandungi satu atau lebih kawalan fungsi yang digunakan untuk " +"pengumuman, invokasi atau rekaan bagi set aksara terkod. Fungsi kawalan " +"menurut piawaian ISO 2022 dan mungkin mengandungi aksara kawalan escape dan " +"satu atau lebih aksara grafik." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Objek Nama Unik" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Tag ini menyediakan pengenalpastian unik secara sejagat bagi objek yang " +"dinyatakan dalam II<, penyedia bebas dab untuk sebarang bentuk media. " +"Penyedia mesti memastikan UNO adalah unik. Objek dengan UNO yang sama adalah " +"serupa." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Pengecam ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"Set Data yang mengenalpasti Pengecam Kaedah Hubungan Abstrak (ARM) ang " +"diterangkan dalam dokumen berdaftar dengan pemilik asal ARM dengan " +"organisasi IPTC dan NAA." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "Versi ARM" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Tag ini mengandungi nombor binari yang mewakili versi tertentu bagi ARM yang " +"dinyatakan oleh tag ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Versi Rekod" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Nombor deduan mengenalpasti versi bagi Model Pertukaran Maklumat, Bahagian " +"II, disediakan oleh penyedia. Nombor versi diumpuk oleh organisasi IPTC dan " +"NAA." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Jenis Objek" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"Jenis Objek digunakan untuk mengecam diantara perbezaan jenis objek didalam " +"IIM. Bahagian pertama adalah bilangan yang mewakili rujukan antarabangsa " +"bebsa bahasa kepada Jenis Objek yang dituruti dengan pemisah bertanda kolon. " +"Bahagian kedua, jika digunakan, adalah perwakilan teks bagi Bilangan Jenis " +"Objek yang mengandungi aksara grafik bersama ruang dalam Bahasa Inggeris " +"atau dalam bahasa perkhidmatan yang dinyatakan dalam tag " + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Atribut Objek" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"Jenis Objek digunakan untuk mengecam diantara perbezaan jenis objek didalam " +"IIM. Bahagian pertama adalah bilangan yang mewakili rujukan antarabangsa " +"bebas bahasa kepada Jenis Objek yang dituruti dengan pemisah bertanda kolon. " +"Bahagian kedua, jika digunakan, adalah perwakilan teks bagi Bilangan Jenis " +"Objek yang mengandungi aksara grafik bersama ruang dalam Bahasa Inggeris " +"atau dalam bahasa perkhidmatan yang dinyatakan dalam tag " + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Nama Objek" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"Digunakan sebagai rujukan singkatan untuk objek. Perubahan pada data sedia-" +"ada, seperti cerita terkemaskini atau keratan baru pada foto, yang patut " +"dikenalpasti dalam tag" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Tajuk Dokumen" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Sunting status" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "Status bagi data objek, berdasarkan pada amalan penyedia." + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Kemaskini Editorial" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"Menunjukkan jenis kemaskini yang mana objek ini sediakan ke objek terdahulu. " +"Pautan ke objek terdahulu dibuat menggunakan tag dan " +", mengikut pada amalan penyedia." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Kesegeraan" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Menyatakan keutamaan editorial kandungan dan bukan keutamaan pengendalian " +"sampul (lihat tag ). Nilai \"1\" adalah paling mustahak, " +"nilai \"5\" biasa dan nilai \"8\" merupakan salinan paling-kurang mustahak." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Subjek" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "Rujukan Subjek merupakan takrifan berstruktur bagi subjek." + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Kategori" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"Kenalpasti subjek bagi data objek dalam pandangan penyedia. Senarai kategori " +"akan diselenggara oleh registry wilayah, bila tersedia, jika tidak oleh " +"penyedia." + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Kategori Tambahan" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"Kategori tambahan lanjut menghalusi subjek data objel. Kategori tambahan " +"sertakan sebarang kategori yang dikenali sebagai digunakan dalam tag " +". Jika tidak, pemilihan kategori tambahan akan diberi pada " +"penyedia." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Kategori Tambahan" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "Id Baiki" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Kenalpasti data oebjek yang selalu berulang dan boleh dijangka. Benarkan " +"pengguna mencari atau memanggil serta-merta objek tersebut." + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Kata Kunci" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"Digunakan untuk perkataan pemerolehan maklumat khusus. Ia dijangkakan " +"penyedia bagi pelbagai jenis data yang berkaitan dalam perkara subjek yang " +"menggunakan kata kunci yang sama, membenarkan penerimaan sistem atau sub-" +"sistem untuk menggelintar semua jenis data bagi bahan yang berkaitan." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Kod Lokasi" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"Menunjukkan kod bagi negara/lokasi bergeografi yang dirujuk dengan kandungan " +"objek. Yang mana ISO telah tubuhkan kod negara yang berkenaan dibawah ISO " +"3166, kod yang akan digunakan. Bila ISO 3166 disediakan dengan mencukupi " +"untuk pengenalpastian lokasi atau negara, cth. kapal dilautan, angkasa, IPTC " +"akan umpukkan kod tiga-aksara dibawah pembekalan ISO 3166 untuk menghindari " +"konflik." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Nama Lokasi" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Menyediakan nama penuh boleh disiarkan bagi lokasi negara/bergeografik yang " +"dirujuk melalui kandungan objek, berdasarkan garis panduan penyedia." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Tarkih Pelepasan" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"Direka dalam bentuk AATTBBHH bagi tarikh terawal penyedia mahu objek " +"tersebut digunakan. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Masa Pelepasan" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"Direka dalam bentuk AATTBBHH:JJMM bagi tarikh terawal penyedia mahu objek " +"tersebut digunakan. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Tarikh Luput" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Direka dalam bentuk AATTBBHH bagi tarikh terkini penyedia atau pemilik mahu " +"objek tersebut digunakan. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Masa Luput" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Direka dalam bentuk AATTBBHH:JJMM bagi tarikh terkini penyedia atau pemilik " +"mahu objek tersebut digunakan. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Arahan Khas" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Arahan editorial lain yang merujuk pada penggunaan data objek, seperti " +"embargo dan amaran." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Arahan" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Saranan Tindakan" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"Menunjukkan jenis kemaskini yang mana objek ini sediakan ke objek terdahulu. " +"Pautan ke objek terdahulu dibuat menggunakan tag dan " +", mengikut pada amalan penyedia." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Perkhidmatan Rujukan" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Mengenalpasti Pengenalpasti perkhidmatan bagi sampul yang mana objek semasa " +"rujuk." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Tarikh Rujukan" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "Mengenalpasti tarikh bagi sampul yang mana objek semasa rujuk." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Bilangan Rujukan" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "Mengenalpasti Bilangan Sampul yang mana objek semasa rujuk." + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Tarikh Dicipta" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Diwakili dalam bentuk AATTBBHH untuk mereka tarikh bagi kandungan " +"intelektual bagi objek data yang dicipta berbanding tarikh penciptaan " +"perwakilan fizikal. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Masa Dicipta" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Diwakili dalam bentuk AATTBBHH:JJMM untuk mereka tarikh bagi kandungan " +"intelektual bagi objek data yang dicipta berbanding tarikh penciptaan " +"perwakilan fizikal. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Tarikh Didigitkan" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Diwakili dalam bentuk AATTBBHH untuk mereka tarikh digital perwakilan bagi " +"obejk yang dicipta. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Masa Didigitkan" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Diwakili dalam bentuk AATTBBHH:JJMM untuk mereka tarikh digital perwakilan " +"bagi obejk yang dicipta. Mengikuti piawaian ISO 8601." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Program" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "Kenalpasti jenis program yang digunakan untuk asalkan data objek." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Versi Program" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" +"Digunakan untuk kenalpasti versi program yang dinyatakan dalam tag ." + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Kitar Objek" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "Digunakan untuk kenalpasti kitar editorial bagi data objek." + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Mengikut-talian" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"Mengandungi nama bagi pencipta bagi data objek, cth. penulis, juru gambar " +"atau artis grafik." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Pengarang" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Tajuk Mengikut-talian" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "Tajuk dalam-garisan ialah tajuk pencipta bagi data objek." + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Bandar" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"Mengenalpasti bandar asalnya data objek berdasarkan garis panduan yang " +"dibuat oleh penyedia." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Sub Lokasi" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"Mengenalpasti lokasi didalam bandar yang mana data objek berasal, " +"berdasarkan garis panduan yang dibuat oleh penyedia." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Wilayah Negeri" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" +"Mengenalpasti Wilayah/Negeri asalnya data objek berdasarkan garis panduan " +"yang dibuat oleh penyedia." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Negeri/Daerah" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Kod Negara" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Menunjukkan kod bagi negara/lokasi bergeografi yang mana sifat objek data " +"dicipta, cth. foto yang diambil, peristiwa yang berlaku. Yang mana ISO telah " +"tubuhkan kod negara yang berkenaan dibawah ISO 3166, kod yang akan " +"digunakan. Bila ISO 3166 disediakan dengan mencukupi untuk pengenalpastian " +"lokasi atau negara, cth. kapal dilautan, angkasa, IPTC akan umpukkan kod " +"tiga-aksara dibawah pembekalan ISO 3166 untuk menghindari konflik." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Nama Negara" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Menyediakan nama bagi negara/lokasi utama yang boleh disiar dan sepenuhnya " +"yang mana sifat data objek dicipta, berdasarkan garis panduan penyedia." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Negara" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Rujukan Transmisi" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"Merupakan kod yang mewakili lokasi penghantaran asal berdasarkan amalan " +"penyedia." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Tajuk Utama" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "Masukan boleh disiar yang menyediakan sinopsis kandungan data objek." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Penghargaan" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" +"Kenalpasti penyedia bagi data objek, bukan semestinya pemilik/pencipta." + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Sumber" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Kenalpasti pemilik asal bagi kandungan intelektual bagi objek data. Ia " +"mungkin agensi, ahli bagi agensi atau individual." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "Mengandungi sebarang notis hakcipta." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Notis Hakcipta" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Hubungan" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Kenalpasti individu atau organisasi yang boleh menyediakan maklumat latar " +"belakang lanjut bagi objek data." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Kapsyen" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "Keterangan berteks bagi data objek." + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Keterangan" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Penulis" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Pengenalpastian nama bagi individu yang terlibat dalam penulisan, " +"penyuntingan atau pembetulan data objek atau kapsyen/abstrak." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Kapsyen Teraster" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"Mengandungi keterangan data objekl teraster dan digunakan yang mana aksara " +"tidak dikodkan diperlukan untuk kapsyen." + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Menentukan warna komponen bagi imej." + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orientasi Imej" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Menentukan bentangan bagi imej." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Bahasa" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"Menerangkan bahasa kebangsaan utama objek, berdasarkan kod 2-huruf ISO " +"639;1988. Tidak takrif atau laksanakan sebarang set aksara terkod, tetapi " +"menggunakan penghalaan dalaman, iaitu ke pelbagai meja editorial." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Jenis Audio" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Menentukan jenis kandungan audio." + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Kadat Audio" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Menentukan kadar persampelan dalam Hertz bagi sesuatu kandungan audio." + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Resolusi Audio" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "Menentukan resolusi persampelan bagi sesuatu kandungan audio." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Tempoh Audio" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Menentukan tempoh bagi kandungan audio." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Outcue Audio" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Mengenalpasti kandungan penghujung data objek audio, berdasarkan pada garis " +"panduan yang dibina oleh penyedia." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Format Pratonton" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Nombor deduan yang mewakili format fail bagi pratonton data objek. Format " +"fail mestilah didaftar dengan organisasi IPTC atau NAA berserta nombor unik " +"kepadanya." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Versi Pratonton" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Nombor deduaan yang mewakili versi tertentu format fail pratonton data objek " +"yang dinyatakan dalam tag ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Data Pratonton" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Data pratonton imej binari." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Tidak Sah)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Set data tidak diketahui" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Ralat %0: arg2=%2, arg3=%3, arg1=%1." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Berjaya" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Ia nampaknya bukan seperti imej %1" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Nama set data '%1' tidak sah" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Nama rekod '%1' tidak sah" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Kunci '%1' tidak sah" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Nama tag tidak sah atau ifdId `%1', ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Nilai tidak ditetapkan" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Gagal membuka sumber data: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Gagal membuka fail (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: Fail mengandungi data bagi jenis imej yang tidak diketahui" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Ingatan mengandungi data bagi jenis imej yang tidak diketahui" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Jenis imej %1 tidak disokong" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Gagal membaca data imej" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Ia nampaknya bukan seperti imej JPEG" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "%1: Gagal memetakan fail bagi membaca dan menulis: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Gagal menamakan semula fail ke %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Pemindahan gagal: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Pemindahan ingatan gagal: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Gagal membaca data input" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Gagal menulis imej" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Data input tidak mengandungi imej yang sah" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "ifdId %1 tidak sah" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Masukan::setValue: Nilai terlalu besar (tag=%1, saiz=%2, dipinta=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Masukan::setDataArea: Nilai terlalu besar (tag=%1, saiz=%2, dipinta=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Ofset diluar julat" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Jenis ofset kawasan data tidak disokong" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "Set aksara tidak sah: '%1'" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Format tarikh tidak disokong" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Format masa tidak disokong" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Menulis ke imej %1 tidak disokong" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Penetapan %1 dalam %2 imej tidak disokong" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Ia nampaknya bukan seperti imej CRW" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: Tidak disokong" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "Tiada maklumat ruang nama tersedia untuk awalan XMP '%1'" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"Tiada awalan didaftar untuk ruang nama '%2', diperlukan untuk laluan sifat " +"'%1'" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "Saiz bagi segmen JPEG %1 lebih besar dari 65535 bait" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "Nod XMP %1 tidak dikendali dengan opt=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Ralat Kit Alat XMP %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Gagal nyahkodkan sifat Alt Lang %1 dengan opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Gagal nyahkodkan penilai Alt Lang %1 dengan opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Gagal enkodkan sifat Alt Lang %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "Gagal tentukan nama sifat bagi laluan %1, nama jarak %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "Nama jarak skema %1 tidak berdaftar dengan Kit Alat XMP" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Tida nama jarak berdaftar untuk awalan '%1'" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Alias tidak disokong. Sila hantar paket XMP ini ke ahuggel@gmx.net `%1', `" +"%2', `%3'" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Jenis XmpText '%1' tidak sah" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "Direktori TIFF %1 mempunyai terlalu banyak masukan" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Tag unsur jujukan TIFF berbilang %1 dalam saty direktori" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "Tag unsur jujukan TIFF %1 mempunyai jenis salah" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 mempunyai jenis nilai XMP '%2' yang tidak sah" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Hakcipta (C) 2004-2013 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Program ini merupakan perisian percuma; and boleh mengedarkannya dan/atau " +"mengubahnya dibawah terma GNU Genaral Public License sebagimana yang telah " +"dikeluarkan oleh Free Software Foundation; samada versi ke-2 lesen, atau " +"(mengikut pilihan anda) sebarang versi terkemudian.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Program ini diedarkan dengan harapan ianya berguna tetapi TANPA SEBARANG " +"JAMINAN; tanpa sebarang implakasi jaminan KEBOLEHDAGANGAN atau KESESUAIAN " +"UNTUK SESUATU TUJUAN. Sila rujuk GNU General Public LIcense untuk keterangan " +"lanjut.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Anda seharusnya menerima salinan Lesen Awam Am GNU bersama-sama perisian " +"ini; jika tiada, laporkan ke Free Software Foundation, Inc., 51 Franklin " +"Street, Fifth Floor, Boston, MA 02110-1301, USA\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Penggunaan:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ options ] [ action ] file ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Manipulasikan data meta Exif imej.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Tindakan:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Laras Exif setem masa mengikut masa diberi. Tindakan ini\n" +" memerlukan sekurang-kurangnya\tsalah satu pilihan -a, -Y, -O " +"atau -D.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Cetak data meta imej.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Padam data meta dari fail.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Sisip data meta dari fail *.exv berkenaan.\n" +" Guna pilihan -S untuk menukar awalan fail input.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Ekstrak data meta ke fail *.exv, *.xmp dan imej thumbnail.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Nama semua fail dan/atau tetap setem masa fail berdasarkan\n" +" setem masa ciptaan Exif. Format nama fail boleh ditetapkan\n" +" dengan format -r, pilihan setem masa dikawal dengan -t dan -" +"T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Laksana perintah untuk ubahsuai (tamba, tetap, padam) Exif " +"dan\n" +" data meta IPTC bagai fail imej atau tetapkan ulasan JPEG.\n" +" Pilihan diperlukan ialah -c, -m atau -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Salin tetapan ISO dari Nikon Makernote ke tag Exif\n" +" biasa.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" +" fc | fixcom Tukar ulasan pengguna Exif UNICODE kepada UCS-2. pengekodan\n" +" aksara semasanya boleh dinyatakan dengan pilihan -n.\n" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Pilihan:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Papar bantuan ini dan keluar.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Papar versi program dan keluar.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Jadi berjela semasa program berjalan.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr " -q Amaran dan mesej senyap semasa program berjalan (quiet).\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" +" -Q lvl Tetapkan log-level ke d(ebug), i(nfo), w(arning), e(rror) atau m" +"(ute).\n" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Papar nilai binari besar.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Papar tag tidak diketahui.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g key Hanya maklumat output untuk kunci ini (grep).\n" + +#: src/exiv2.cpp:271 +#, fuzzy +msgid " -K key Only output info for this key (exact match).\n" +msgstr " -g key Hanya maklumat output untuk kunci ini (grep).\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n enc Set aksara digunakan untuk menyahkod ulasan pengguna Exif " +"UNICODE.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Kekalkan setem masa fail (keep).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Juga tetapkan setem masa dalam tindakan 'rename' (overrides -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Hanya tetapkan setem masa fail dalam tindakan 'rename', jangan\n" +" namakan semula fail (overrides -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -f Jangan maklum sebelum menulis-ganti fail sedia ada (force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -f Jangan maklum sebelum menamakan semula fail (force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a time Pelarasan masa dalam format [-]HH[:MM[:SS]]. Pilihan ini\n" +" hanya digunakan dengan tindakan 'adjust'.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y yrs Pelarasan tahun dengan tindakan 'adjust'.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mon Pelarasan bulan dengan tindakan 'adjust'.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D day Pelarasan hari dengan tindakan 'adjust'.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" +" -p mode Mod cetak untuk tindakan 'print'. Mod yang mungkin adalah:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s : cetak ringkasan data meta Exif (lalai)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : cetak data meta Exif, IPTC dan XMP (pintasan untuk -Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t : data Exif tertafsir (diterjemah) (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : nilai data Exif data biasa (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : hexdump bagi data Exif (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : nilai data IPTC (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : sifat XMP (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : ulasan JPEG\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : senarai pratonton tersedia\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : nilai data biasa\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " X : sifat XMP (-PXkyct)\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs Cetak bendera untuk kawalan halus bagi senarai tag ('print' " +"action):\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : sertakan tag Exif dalam senarai\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : set data IPTC\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : sifat XMP (-PXkyct)\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : cetak lajur dengan nombor tag\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : nama kumpulan\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : kunci\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : label tag\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : nama tag\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : jenis\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : bilangan komponen (count)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : saiz dalam bait\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : nilai data biasa\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : data tertafsir (translated)\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : hexdump bagi data\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" +" -d tgt Padam sasaran untuk tindakan 'delete'. Sasaran yang mungkin " +"adalah:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : semu data meta tersokong (the default)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : bahagian Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : thumbnail Exif sahaja\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : data IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : paket XMP\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Sisip sasaran untuk tindakan 'sisip'. Sasaran yang mungkin adalah\n" +" sama seperti pilihan -d, bersama dengan pengubahsuai:\n" +" X : Sisi data meta dari fail sisi XMP .xmp\n" +" Hanya thumbnails JPEG boleh disisipkan, ia perlu dinamakan " +"kepada\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt Esktrak sasaran untuk tindakan 'ekstrak'. Sasaran yang mungkin\n" +" adalah sama seperti pilihan -d, bersama sasaran ekstrak\n" +" imej pratonton dan pengubahsuai untuk jana fail sisi XMP:\n" +" p[[, ...]] : Ekstrak imej pratonton.\n" +" X : Ekstrak data meta pada fail sisi XMP .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Format nama fail untuk tindakan 'rename'. Rentetan format\n" +" ikuti strftime(3). Kata kunci berikut disokong:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - nama fail asal tanpa sambungan\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr " :dirname: - nama direktori yang mempunyai fail asal\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - nama direktori induk\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Format nama fail lalai ialah " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt rentetan ulasan JPEG untuk ditetapkan dalam imej.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m file Fail perintah untuk tindakan ubahsuai. Format untuk perintah " +"ialah\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M cmd Baris perintah untuk tindakan ubahsuai. Format untuk\n" +" perintah adalah sama dengan baris fail perintah.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l dir Lokasi (direktori) bagi fail yang disisip dari atau " +"diekstrakkan.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf Guna akhiran .suf untuk fail sumber bagi perintah sisip.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "pilihan" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "memerlukan argumen\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Pilihan tidak dikenali" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt mengembalikan kod aksara tidak dijangka" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "Argumen tidak sah" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Argumen tidak sah" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Mengabaikan pilihan lebihan" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Mengabaikan pilihan lebihan -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Ralat menghurai argumen pilihan -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "Option -a tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Ralat menghurai" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "argumen pilihan" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Mod cetak tidak dikenali" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Mengabaikan pilihan lebihan -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "Option -p tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Item cetak dikenali" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Mengabaikan pilihan lebihan -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "Option -P tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "Option -d tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "Option -e tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "Option -i tidak serasi dengan pilihan terdahulu\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "Tindakan adjust tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "Tindakan print tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "Tindakan delete tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "Tindakan extract tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "Tindakan insert tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "Tindakan rename tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "Tindakan modify tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "Tindakan fixiso tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "Tindakan fixcom tidak serasi dengan pilihan diberi\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Tindakan mesti dinyatakan\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" +"Laras tindakan memerlukan sekurang-kurangnya satu pilihan -a, -Y, -O atau -" +"D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" +"Ubahsuai tindakan memerlukan sekurang-kurangnya satu pilihan -c, -m, atau -" +"M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Sekurang-kurangnya satu fail diperlukan\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Ralat menghurai argumen pilihan -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Ralat menghurai argumen pilihan -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "pilihan -l hanya boleh digunakan dengan tindakan ekstrak atau sisip\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "pilihan -S hanya boleh digunakan dengan tindakan sisip\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "pilihan -t hanya boleh digunakan dengan tindakan nama semula\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "pilihan -T hanya boleh digunakan dengan tindakan nama semula\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Tidak dikenali " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "sasaran" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Bilanga pratonton tidak sah" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Gagal membuka fail perintah untuk pembacaan\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "baris" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "Pilihan -M" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Baris perintah tidak sah" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Perintah tidak sah" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Kekunci tidak sah" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Baris perintah tidak sah" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Mod lembut 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Mod lembut 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "Mod keras 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "Mod keras 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Pendarflour (cahaya siang)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Pendarflour (putih panas)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Pendarflour (putih sejuk)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Pijar" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Tiada (hitam & putih)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Pengurangan mata-merah" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Adegan malam" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "AE program" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Cahaya tabii" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti-kabur" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Matahari Terbenam" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Muzium" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Pesta" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Bunga" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Teks" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Cahaya tabii & denyar" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Keutamaan-bukaan AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "AE keutamaan kelajuan pengatup" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Tanpa denyar & denyar" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Krom" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Lebar" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Piawai" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Potret studio" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Studio portrait Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Raw" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Piawai (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Mod lebar 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Mod lebar 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Mod simulasi filem" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Versi" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Veris Makernote Fujifilm" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Nombor ini adalah unik, dan mengandungi tarikh pengilangan, tetapi tidak " +"sama dengan nombor dicetak pada badan kamera." + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Tetapan kualiti imej" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Warna" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Tetapan ketepuan kroma" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Tetapan mod penembakan denyar" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Kekuatan Denyar" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "Tetapan pemampasan kekuatan penyalaan denyar" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Tetapan mod makro" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Tetapan mod memfokus" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Segerak Perlahan" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Tetapan mod segerak perlahan" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Mod Gambar" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Tetapan mod gambar" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Penangkapan berterusan atau tetapan pengurungan automatik" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Bilangan Jujukan" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Bilangan jujukan" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "Warna FinePix" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Tetapan warna FinePix Fuji" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Amaran Kabur" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Status amaran kabur" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Amaran Fokus" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Status amaran Fokus Automatik" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Amaran Dedahan" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Status amaran dedahan automatik" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Julat Dinamik" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Julat dinamik" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Mod Filem" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Mod filem" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Tetapan Julat Dinamik" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Tetapan julat dinamik" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Julat Dinamik Pembangunan" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Julat dinamik pembangunan" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Jarak Fokus Minimum" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Jarak fokus minimum" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Jarak Fokus Maksimum" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Jarak fokus maksimum" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Bukaan Maksimum pada Fokus Minimum" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Bukaan maksimum pada fokus minimum" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Bukaan Maksimum pada Fokus Maksimum" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Bukaan maksimum pada fokus maksimum" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Sumber Fail" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Sumber fail" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Bilangan Tertib" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Bilangan tertib" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Bilangan Bingkai" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Bilangan bingkai" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Tag FujiMakerNote tidak diketahui" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Warna Alamiah" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Warna Terang" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Penyuriaan" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Alamiah" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "sRBG Alamiah" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Alamiah+ sRBG" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Petang" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Potret Malam" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Super Halus" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Tambahan Halus" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Versi Makernote" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "Rentetan 'MLT0' (tidak dihentikan secara nol)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Tetapan Kamera (Std Lama)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Tetapan Kamera Piawai (Model Kamera Lama seperti D5, D7, S304, dan S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Tetapan Kamera (Std Baru)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "Tetapan Kamera Piawai (Model Kamera Baru seperti D7u, D7i, dan D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Tetapan Kamera (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Tetapan Kamera (untuk model Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Data Penstabilan Imej" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Data penstabilan imej" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "Maklumat WB A100" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "Maklumat imbangan putih untuk Sony DSLR-A100" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Saiz Imej Termampat" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Saiz imej termampat" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Thumbnail Jpeg 640x480 piksel" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Ofset Thumbnail" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Ofset bagi thumbnail" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Panjang Thumbnail" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Saiz bagi thumbnail" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Mode Adegan" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Mod Warna" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Mod warna" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Kualiti Imej" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Pemampasan Dedahan Denyar" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Pemampasan Dedahan Denyar dalam EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Model Teleconverter" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "Rakaman RAW+JPG" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "Perakaman fail RAW dan JPG" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Pemadanan Zon" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Pemadanan zon" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Suhu warna" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID Kanta" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Pengenalpasti kanta" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "Penapis Pemampasan Warna" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "Penapis Pemampasan Warna: negatif adalah hijau, positif adalah magenta" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "Nilai Talaan Imbangan Putih" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "Nilai Talaan Halus Imbangan Putih" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "Penstabilan Imej A100" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Penstabilan Imej untuk Sony DSLR-A100" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Tetapan Kamera (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Tetapan Kamera (untuk model Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Print IM" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "Maklumat PrintIM" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Tetapan Kamera (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Tetapan Kamera (untuk model Z1, SImage X, dan F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Tag MakerNote Minolta tidak diketahui" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Keutamaan bukaan" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Keutamaan pengatup" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Denyar tokok" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Segerak denyar belakang" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Tanpa wayar" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Pendarflour 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Saiz penuh" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Super halus" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Tambahan halus" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Bingkai Tunggal" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "Pemasa-kendiri" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Pengurungan" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Sela" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS berterusan" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS berterusan" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Segmen-berbilang" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Purata berpemberat pusat" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Pembesaran elektronik" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Atas" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Kanan-atas" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Kanan-bawah" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Bawah" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Kiri-bawah" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Kiri-atas" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Keras" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "Lembut" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Potret malam" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Aksi sukan" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Cereka selang-masa" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Bentuk piawai" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Bentuk data" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Warna alamiah" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Hitam dan Putih" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Warna terang" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Tiada zon" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Zon tengah (orientasi melintang)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Zon tengah (orientasi menegak)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Zon kiri" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Zon kanan" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Fokus sendiri" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Fokus lebar (biasa)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Fokus bintik" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Dedahan" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Penapis" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Tidak Terbenam" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Terbenam" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Teks + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Advanced Distance Integration)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Pra-denyar TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Kawalan denyar manual" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Mod Dedahan" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Mod Denyar" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Mod pacu" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "Nilai ISO" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Masa Dedahan" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "Nombor F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "Nombor-F" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Mod Makro" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Pemampasan Dedahan" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Langkah Pendakap" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Langkah pendakap" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Panjang Sela" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Panjang sela" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Bilangan Sela" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Bilangan sela" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Jarak Fokus" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Jarak fokus" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "Denyar Dipancarkan" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "Denyar dipancarkan" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Tarikh Minolta" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Tarikh Minolta" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Masa Minolt" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Tarikh Minolta" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Ingatan Nombor Fail" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Ingatan nombor fail" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Nombor Imej Terakhir" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Nombor imej terakhir" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Imbangan Warna Merah" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Imbangan warna merah" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Imbangan Warna Hijau" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Imbangan warna hijau" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Imbangan Warna Biru" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Imbangan warna biru" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Program Subjek" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Program subjek" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Tetapan ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Tetapan ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Model Minolta" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Model Minolta" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Mod Sela" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Mod sela" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Nama Folder" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Nama folder" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Mod Warna" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Penapis Warna" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Penapis warna" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Penapis Hitam dan Putih" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Penapis hitam dan putih" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Denyar Dalaman" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Kecerahan" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "Titik Fokus Bintik X" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "Titik fokus bintik X" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "Titik Fokus Bintik Y" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "Titik fokus bintik Y" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Zon Fokus Lebar" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Zon fokus lebar" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Mod fokus" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Kawasan fokus" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "Kedudukan Suis DEC" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "Kedudukan suis DEC" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Profil Warna" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Profil warna" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "Data Imprint" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Pemeteran Denyar" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Pemeteran denyar" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Tag Tetapan Kamera Minolta tidak diketahui" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "Program-shift A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "Program-shift S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "AF Syot-tunggal" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "AF Berterusan" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "AF Automatik" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Alamiah)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Alamiah+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Melintang (biasa)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Putar 90 IJ" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Putar 270 IJ" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Titik AF" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Titik AF" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Ruang Warna" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Ruang warna" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "Imej Kad Memori Bebas" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "Imej kad memori bebas" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Rona" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Putaran" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Bilangan Imej" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Pengurangan hingar" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "Pemadanan Zon Dihidupkan" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "Pemadanan zon dihidupkan" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Tetapan Kamera Minolta tag 7D tidak diketahui" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "Program Shift A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "Program Shift S" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "Potret/Paparan Malam" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (Pemadanan Zon Tinggi)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80 (Pemadanan Zon Rendah)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB (ICC)" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Tengah" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Atas" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Kanan atas" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Kanan bawah" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Bawah" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Kiri bawah" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Kiri atas" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Pemilihan" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "Alamiah+" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "Adegan Berangin" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "Adegan Petang" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Kedudukan Fokus" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Kedudukan fokus" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Kawasan Fokus" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Revisi Dedahan" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "Revisi dedahan" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "Putaran2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "Kemasan Gambar" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Bias Manual Dedahan" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Bias manual dedahan" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Mod AF" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Mod AF" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Tetapan Kamera Minolta tag 5D tidak diketahui" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "Pemasa-kendiri 10 saat" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "Pemasa-kendiri 2 saat" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Pengurungan Imbangan Putih Rendah" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "Pengurungan Imbangan Putih Tinggi" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "Pengurungan Bingkai-tunggal Rendah" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "Pengurungan Berterusan Rendah" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "Pengurungan Bingkai-tunggal Tinggi" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "Pengurungan Berterusan Tinggi" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Lanjutan" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "Bertahap Berterusan" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "Bertahap Bingkai-Tunggal" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "Bertahap Imbangan Putih" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Praset" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Suhu Warna/Penapis Warna" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Suhu" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "Persediaan" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "Panggil Semula" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "Ok" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "Ralat" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Imej dan Maklumat" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Imej Sahaja" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "Imej dan Histogram" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "Masukkan Cahaya" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "Fokus Tertahan" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "Pratonton DOF" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Pegang" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Togol" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "Titik Tertahan" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "Togol Bintik" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Kelajuan Bukaan" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "Keadaan Sekitaran dan Denyar" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "Keadaan Sekitaran Sahaja" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0.3 saat" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0.6 saat" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Automatik" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "Putar-sendiri" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Melintang" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "Putar Manual" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "Dalam Julat" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "Dibawah/Melebihi Julat" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Diluar Julat" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "Tidak Dinyatakan" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "Dibawah Skala" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "Bahagian Bawah Skala" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "Bahagian Teratas Skala" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "Melebihi Skala" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "AM" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "MF" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Terbina-dalam" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Sangat Rendah" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "Separa Penuh" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "Kuasa Mencukupi Berbaki" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "Tetapan Pemampasan Dedahan" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "Tetapan pemampasan dedahan" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "Segerak Kelajuan Tinggi" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "Segerak kelajuan tinggi" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "Masa Dedahan Manual" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "Masa dedahan manual" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "FNumber Manual" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "Mod Pacu 2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "Mod pacu 2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "Titik Kawasan AF Setempat" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "Mod Kawasan AF" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "Mod Denyar" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "Tetapan Pemampasan Dedahan Denyar" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "Tetapan pemampasan dedahan denyar" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "Tetapan ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "Mod Pemadanan Zon" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "Mod Pengoptimum Julat Dinamik" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "Mod pengoptimum julat dinamik" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "Pelepasan Bukaan Persediaan Keutamaan" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Masa Pemasa Kendiri" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Masa pemasa kendiri" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "Pendakapan berterusan" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "Pendakapan Bingkai Tunggal" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "Pendakapan bingkai tunggal" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Pendakapan imbangan putih" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "Tetapan Imbangan Putih" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Praset Imbangan Putih" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Praset imbangan putih" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "Tetapan Suhu Warna" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "Tetapan suhu warna" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "Tetapan WB Suai" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "Tetapan WB suai" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "Tetapan Pengoptimum Julat Dinamik" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "Aras Merah WB Suai" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "Aras merah WB suai" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "Aras Hijau WB Suai" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "Aras hijau WB suai" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "Aras Biru WB Suai" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "Aras biru WB suai" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "Ralat WB Suai" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "Talaan halus imbangan putih" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "Penapis pemampasan warna" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Saiz Imej Sony" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "Masa Main Balik Segera" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "Masa main balik segera" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "Persediaan Main Balik Segera" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "Persediaan main balik segera" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "AF Mata Mula" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "AF mata mula" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "Pengurangan Mata Merah" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "Pengurangan mata merah" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "Lalai Denyar" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "Lalai denyar" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "Tertib Dakap Sendiri" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "Tertib dakap sendiri" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "Butang Tahan Fokus" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "Butang tahan fokus" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "Butang AEL" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "Butang AEL" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "Set Dail Kawalan" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "Set dail kawalan" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "Mod Pemampasan Dedahan" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "Mod pemampasan dedahan" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "Bantuan AF" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "Kuncian Pengatup Kad" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "Kuncian pengatup kad" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "Kuncian Pengatup Kanta" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "Kuncian pengatup kanta" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "Pencahayaan Kawasan AF" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "Pencahayaan kawasan AF" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "Paparan Monitor Dimatikan" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "Paparan monitor dimatikan" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "Paparan Rakam" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "Paparan rakam" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "Paparan Main" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "Paparan main" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "Penunjuk Dedahan" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "Penunjuk dedahan" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "Penunjuk Dedahan AEL" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" +"Penunjuk dedahan AEL (juga tunjukkan dedahan untuk syot berikutnya bila " +"bertahap)" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "Braket Dedahan Petunjuk Akhir" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" +"Braket Dedahan Petunjuk Akhir(Braket apabila tembakan terakhir petunjuk)" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "Petunjuk Lebihan Skala Meter" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "Petunjuk Lebihan Skala Meter (" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "Penunjuk Dedahan Denyar" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "Penunjuk dedahan denyar" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "Penunjuk Dedahan Denyar Berikutnya" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" +"Penunjuk dedahan denyar berikutnya (penunjuk untuk syot berikutnya bila " +"ditahapkan)" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "Penunjuk Dedahan Denyar Terakhir" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" +"Penunjuk dedahan denyar terakhir (penunjuk untuk syot terakhir bila " +"ditahapkan)" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "Suis Mod Fokus" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "Suis mod fokus" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Jenis Denyar" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Jenis denyar" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "Kunci AE" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "Penapis pemampasan warna: negatif adalah hijau positif adalah magenta" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Aras Bateri" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "Aras bateri" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Tag A100 bagi Tetapan Kamera Sony tidak diketahui" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Kosongkan" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Kedalaman" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Cahaya" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Paparan Malam" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "Dedaun Musim Luruh" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Setempat" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Atas-Kanan" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Kanan-Bawah" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Kiri-Bawah" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Kiri-Atas" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Kanan-Jauh" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Kiri-Jauh" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "Automatik Lanjutan" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "Aras Lanjutan" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "Keluaran" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "Raw + JPEG" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "Raw Termampat" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "Raw Termampat + JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "Minolta AF 2x APO (D)" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO II" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Tetapan ISO Digunakan" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Kunci Tinggi" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Kunci Rendah" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "Tinggi Tambahan" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Kawasan tunggal" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Kawasan dinamik" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Kawasan dinamik, subjek terhampir" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Dinamik kumpulan" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Kawasan tunggal (lebar)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Kawasan dinamik (lebar)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "kiri-atas" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "kanan-atas" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "kiri-bawah" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "kanan-bawah" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "Hampir-kiri" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "Hampir-kanan" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Pancaran, Sendiri" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Pancaran, Luaran" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "Pancaran, Mod Komander" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Pancaran, Mod TTL" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Lengah" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Kawalan PC" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "Pendakapan dedahan" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "ISO Automatik" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Bertahap Imbangan Putih" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Kawalan IR" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Bertahap Berterusan" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "Kawalan PC" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Pendakapan dedahan" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "Perlahan LE-NR tidak digunakan" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "Kawalan IR" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Pelepasan automatik" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "Pelepasan manual" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "Hilang (jenis 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Tidak dimampat" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Tidak Hilang" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "Hilang (jenis 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "H & P" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "Kerat" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Gambar kecil" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "Pencahayaan-D" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Mata merah" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "Jenis cyano" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "Cahaya langit" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "Ton panas" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "Suai warna" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "Tindihan imej" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Minimum" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Veris Makernote Nikon" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "Kelajuan ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Penjelasan" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Tetapan penjelasan imej" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Fokus" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Tetapan Denyar" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Tetapan denyar" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Pemilihan ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Pemilihan ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Longgokan Data" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Longgokan data" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Pelarasan Imej" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Tetapan pelarasan imej" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Kanta Auksiliari" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Kanta auksiliari (penyesuai)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Jarak fokus manual" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Tetapan zum digital" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "Kedudukan Fokus AF" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Maklumat kedudukan fokus AF" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Tag Nikon1MakerNote tidak diketahui" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Fokus sendiri berterusan" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Fokus sendiri tunggal" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Tidak digunakan" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "tekaan" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA Asas" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA Biasa" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA Halus" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA Biasa" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA Biasa" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA Halus" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Cerah+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Cerah-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Beza jelas+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Beza jelas-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Kelajuan cahaya" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Tag Nikon2MakerNote tidak diketahui" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Peranti Denyar" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Peranti denyar" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Bias Imbangan Putih" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Bias imbangan putih" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "Aras RB WB" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "Aras RB WB" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "Anjak Program" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "Anjak program" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Perbezaan Dedahan" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Perbezaan dedahan" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Penuding ke imej pratonton" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "Ofset ke IFD yang mengandungi imej pratonton" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Pemampasan Denyar" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Tetapan pemampasan denyar" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Sempadan Imej" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Sempadan imej" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "Pemampasan dedahan denyar" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Pemampasan Pendakap Denyar" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Pemampasan pendakap denyar dipasang" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Pemampasan Pendakap Dedahan" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "Pemampasan pendakap AE dipasang" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Pemprosesan Imej" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Pemprosesan imej" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "Pemotongan Kelajuan Tinggi" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "Pemotongan Kelajuan TInggi" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "Penalaan Dedahan" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "Penalaan dedahan" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "Maklumat VR" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "Maklumat VR" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "Pengesahihan Imej" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "Pengesahihan imej" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "Pencahayaan-ActiveD" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "Pencahayaan-ActiveD" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "Kawalan Gambar" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " Kawalan gambar" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "Waktu Dunia" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "Waktu dunia" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "Maklumat ISO" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "Maklumat ISO" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "Kawalan Samar" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "Kawalan samar" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Pemampasan Ton" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Pemampasan ton" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Mod denyar yang digunakan" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Mod Menangkap" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Mod menangkap" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "Pelepasan Pendakap Automatik" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "Pelepasan pendakap automatik" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "FStops Kanta" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "Lengkung Beza Jelas" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Lengkung beza jelas" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "Rona Warna" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "Rona warna" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Mode Adegan" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Sumber Cahaya" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Sumber cahaya" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "Maklumat syot" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Pelarasan Rona" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Pelarasan rona" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "Pemampatan NEF" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "Pemampatan NEF" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Jadual Pelelurusan" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Jadual pelelurusan" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Imbangan Warna" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Imbangan warna" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Data Kanta" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Tetapan data kanta" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "Pusat Imej Raw" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "Pusat imej Raw" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Saiz Piksel Penderia" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Saiz piksel penderia" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "Bantuan Adegan" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "Bantuan adegan" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "Sejarah Pengemasan" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "Sejarah pengemasan" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "NO Siri" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Nombor siri kamera, biasanya bermula dengan \"NO= \"" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Saiz Data Imej" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Saiz data imej" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Kiraan Imej" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Kiraan imej" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "Kiraan Imej Dipadam" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Kiraan imej dipadam" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Kiraan Pengatup" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Bilangan syot diambil oleh kamera" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Maklumat denyar" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Pengoptimuman Imej" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Pengoptimuman imej" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "Variasi Program" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Variasi program" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "Balasan AF" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "Balasan AF" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "Dedahan berbilang" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Pengurangan Hingar ISO Tinggi" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "Kesan pengetonan" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "Maklumat 2 AF" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "Maklumat fail" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "Tala AF" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Data Tangkapan" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Data tangkapan" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "Versi Tangkapan" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "Versi tangkapan" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "Ofset Tangkapan" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "Ofset tangkapan" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "IFD Imbasan" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "Profil ICC" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "Output tangkapan" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Tag Nikon3MakerNote tidak diketahui" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Tidak" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Ya" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "T/B/H" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "B/H/T" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "H/B/T" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "Pengurangan Gegaran" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Pengurangan gegaran" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Tag Pengurangan Gegaran Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Tetapan Lalai" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Laras Pantas" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Kawalan Penuh" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "Biru-hijau" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "Ungu-biru" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "Merah-ungu" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Nama" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "Tapak" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Laras" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Laras pantas" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Kesan penapis" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "Ketepuan Ton" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "Ketepuan ton" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "Tag Kawalan Gambar Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "Tala Halus AF" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "Tala halus AF" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "Indeks Tala Halus AF" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "Indeks tala halus AF" + +#: src/nikonmn.cpp:732 +msgid "AF Fine Tune Adjustment" +msgstr "Pelarasan Tala Halus AF" + +#: src/nikonmn.cpp:732 +msgid "AF fine tune adjustment" +msgstr "Pelarasan tala halus AF" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Tag Tala Halus AF Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "Zon Waktu" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "Jimat-Siang" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "Jimat-siang" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Format Paparan Tarikh" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Format paparan tarikh" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "Tag Masa Dunia Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Hi 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Hi 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Hi 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Hi 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Hi 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Hi 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Hi 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Lo 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Lo 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Lo 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Lo 1.0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "Pengembangan ISO" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "Pengembangan ISO" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "Pengembangan ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "Pengembangan ISO 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "Tag Maklumat Iso Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "Kawasan Tunggal" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "Kawasan Dinamik" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "Kawasan Dinamik, Subjek Terdekat" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "Dinamik Kumpulan" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "Kawasan Tunggal (lebar)" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "Kawasan Dinamik (lebar)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Kiri-tengah" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Kanan-tengah" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "Kiri Jauh" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "Kanan Jauh" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "Mod kawasan AF" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "Titik AF" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "Titik AF Dalam Fokus" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "Titik AF dalam fokus" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Tag Fokus Auto Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "Pada (Titik-51)" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "Pada (Titik-11)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Pada (Titik-51)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Pada (Titik-51)" + +#: src/nikonmn.cpp:857 +#, fuzzy +msgid "On (73-point, new)" +msgstr "Pada (Titik-51)" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Pada (Titik-11)" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "Mengesan Kontra AF" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "Mengesan Kontra AF" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "Mengesan Fasa AF" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "Mengesan Fasa AF" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "Titik AF Utama" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "Titik AF utama" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "Lebar Imej AF" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "Lebar imej AF" + +#: src/nikonmn.cpp:870 +msgid "AF Image Height" +msgstr "Tinggi Imej AF" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "Ketinggian Imej AF" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "Kedudukan X Kawasan AF" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "Kedudukan X Kawasan AF" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "Kedudukan Y Kawasan AF" + +#: src/nikonmn.cpp:872 +msgid "AF area y position" +msgstr "Kedudukan Y Kawasan AF" + +#: src/nikonmn.cpp:873 +msgid "AF Area Width" +msgstr "Kelebaran Kawasan AF" + +#: src/nikonmn.cpp:873 +msgid "AF area width" +msgstr "Kelebaran Kawasan AF" + +#: src/nikonmn.cpp:874 +msgid "AF Area Height" +msgstr "Ketinggian Kawasan AF" + +#: src/nikonmn.cpp:874 +msgid "AF area height" +msgstr "Ketinggian Kawasan AF" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "Fokus Mengesan Kontra AF" + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "Fokus Mengesan Kontra AF" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Nikon Fokus Automatik 2 Tanda Tidak Diketahui" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "Bilangan direktori" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "Bilangan direktori" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "Maklumat Tanda fail Nikon tidak diketahui" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Berbilang Dedahan" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "Imej Berlapis" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Mod Dedahan Perlbagai" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Mod Dedahan Perlbagai" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "Syot Dedahan Pelbagai" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "Tembakan Dedahan Pelbagai" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "Gandaan Automatik Dedahan Pelbagai" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "Gandaan Automatik Dedahan Pelbagai" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Tanda Dedahan Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Dalaman" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "1.01 (SB-800 or Metz 58 AF-1)" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Bukaan Automatik" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "GN ( Jarak Keutamaan )" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "Cahaya Berulang" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "Cahaya Lantunan" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "Kesesuaian Luas Cahaya" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "Amber" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "Sumber Cahaya" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "Sumber Cahaya" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "Perisian Tegar Denyar Luaran" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "Perisian tegar denyar luaran" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "Bendera Denyar Luaran" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "Bendera denyar luaran" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "Panjang Fokus Denyar" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "Panjang fokus denyar" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "Kadar Denyar Berulang" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "Kadar denyar berulang" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "Kiraan Denyar Berulang" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "Kiraan denyar berulang" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "Jarak GN Denyar" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "Jarak GN denyar" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "Mod Kawalan Kumpulan Denyar A" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "Mod kawalan kumpulan denyar A" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "Mod Kawalan Kumpulan Denyar B" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "Mod kawalan kumpulan denyar B" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "Penapis Warna Denyar" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "Penapis warna denyar" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Kiraan pengatup" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Tag Maklumat Syot Nikon D80 Tidak Diketahui" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "Aras Denyar" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "Aras denyar" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Tag Maklumat Syot Nikon D40 Tidak Diketahui" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "Laras Tala Halus AF" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "Laras tala halus AF" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Tag Maklumat Syot Nikon D300 (a) Tidak Diketahui" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Tag Maklumat Syot Nikon D300 (b) Tidak Diketahui" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "On (3)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "Kiraan Pengatup 1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "Kiraan pengatup 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "Pengurangan Getaran 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "Pengurangan getaran 1" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "Kiraan Pengatup 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "Kiraan pengatup 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "Pengurangan Gegaran 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "Pengurangan gegaran 2" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "Tag Maklumat Syit Nikon Tidak Diketahui" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "Aras RBGG WB" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "Aras RBGG WB" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Tag Imbangan Warna Nikon 1 Tidak Diketahui" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "Aras RGGB WB" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "Aras RGGB WB" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Tag Imbangan Warna Nikon 2 Tidak Diketahui" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Tag Imbangan Warna Nikon 2a Tidak Diketahui" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Tag Imbangan Warna Nikon 2b Tidak Diketahui" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "Aras RGBG WB" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "Aras RGBG WB" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Tag Imbangan Warna Nikon 3 Tidak Diketahui" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "Aras GRBG WB" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "Aras GRBG WB" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Tag Imbangan Warna Nikon 4 Tidak Diketahui" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "Nombor ID Kanta" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "Nombor ID kanta" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "F-Stop Kanta" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "F-stop kanta" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Jarak Fokus Min" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Jarak fokus min" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Jarak Fokus Maks" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Jarak fokus maks" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Bukaan Maks Pada Fokus Min" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Bukaan maks pada fokus min" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Bukaan Maks Pada Fokus Maks" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Bukaan maks pada fokus maks" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "Versi MCU" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "Versi MCU" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Tag Data Kanta Nikon 1" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "Kedudukan Pupil Keluar" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "Kedudukan pupil keluar" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "Bukaan AF" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "Bukaan AF" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "Bukaan Maks Efektif" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "Bukaan maks efektif" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Tag Data Kanta Nikon 2 Tidak Diketahui" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "Bukaan maks pada jarak fokus min" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "Bukaan maks pada jarak fokus maks" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Tag Data Kanta Nikon 3 Tidak Diketahui" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Subjek Terdekat" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "Kumpulan AF-dinamik" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "tiada" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "digunakan" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "Semua 11 Titik" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Bingkai-tunggal" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Kualiti Piawai (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Kualiti Tinggi (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Kualit Super Tinggi (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "On (praset)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Sukan" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Lanskap+Potret" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Potret Kendiri" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 dalam 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Malam+Potret" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Makanan" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Dokumen" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "Tangkap & Pilih" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Pantai & Salji" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "Potret Kendiri+Pemasa" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Lilin" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "Cahaya Yang Ada" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Disebalik Kaca" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "Mod Saya" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Peliharaan" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "Dalam Air Lebar1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "Dalam Air Makro" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "Tangkap & Pilih1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "Tangkap & Pilih2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Penstabilan Imej Digital" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "Lelong" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Dalam air Lebar2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Kanak-Kanak" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "Makro Alam" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "Tangkapan Dalam Air" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "Panduan Menangkap" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Dalaman + Luaran" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Berselang seli" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progresif" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Imej Thumbnail" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Imej thumbnail" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Versi Perisian Tegar Badan" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Versi perisian tegar badan" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Mod Khas" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Mof mengambil gambar" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Mod Hitam & Putih" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Mod hitam & putih" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Nisbah zum digital" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Pepenjuru Satah Fokus" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Pepenjuru satah fokus" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Parameter Herotan Kanta" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Parameter herotan kanta" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Jenis Kamera" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Jenis kamera" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Data format ASCII seperti [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID Kamera" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Data ID kamera" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Perisian" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Imej Pratonton" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Imej pratonton" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "Bingkai Pra Tangkap" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "Bingkai pra-tangkap" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "Papan Putih" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "Papan putih" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "One Touch WB" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Imbangan putih One touch" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Pendakap Imbangan Putih" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Pendakap imbangan putih" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Perisian Tegar" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Longgok Data 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Pelbagai tetapan kamera 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Longgok Data 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Pelbagai tetapan kamera 2" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Nilai Kelajuan Bukaan" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "Nilai kelajuan ISO" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Nilai bukaan" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Nilai kecerahan" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Braket" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Nilai pemampasan dedahan" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Suhu Penderia" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Suhu penderia" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Suhu Kanta" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Suhu kanta" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "Keadaan Cahaya" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Keadaan cahaya" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Julat Fokus" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "Julat fokus" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Zum" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "Kiraan langkah zum" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Fokus Makro" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "Kiraan langkah fokus makro" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Faktor Kejelasan" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Faktor kejelasan" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Aras Cas Denyar" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Aras cas denyar" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matrik Warna" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matrik warna" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "ArasHitam" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Aras hitam" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Mod imbangan putih" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Imbangan Merah" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Imbangan merah" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Imbangan Biru" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Imbangan biru" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Nombor Matrik Warna" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Nombor matrik warna" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Nombor Siri 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Nombor siri 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Pemampasan dedahan denyar" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Lantunan Denyar Luaran" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Lantunan denyar luaran" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Zum Denyar Luaran" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Zum denyar luaran" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Mod Denyar Luaran" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Mod denyar luaran" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Kawalan Warna" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Kawalan warna" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "BitSah" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Bit sah" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "PenapisPenerasan" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "Penapis penerasan" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Nisbah Pemampatan" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Nisbah pemampatan" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Pratonton imej terbenam" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Ofset bagi imej pratonton" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Saiz bagi imej pratonton" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Mod Imbas CCD" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "Mod imbas CCD" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Langkah Kanta Ketakterhinggaan" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Langkah kanta ketakterhinggaan" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Langkah Kanta Dekat" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Langkah kanta dekat" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Maklumat Peralatan" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "Sub-IFD peralatan kamera" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "Sub-IFD Tetapan Kamera" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Pembangunan Raw" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "Sub-IFD pembangunan Raw" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "Pembangunan Raw 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "Sub-IFD pembangunan raw 2" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Sub-IFD pemprosesan imej" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Maklumat Fokus" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "Sub-IFD Fokus" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "info Raw" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "Sub-IFD Raw" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Tag OlympusMakerNote tidak diketahui" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Program-shift" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Purata terberat-pusat" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "Corak+AF" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "Kawalan Bintik+Sorot" + +#: src/olympusmn.cpp:496 +msgid "Spot+Shadow control" +msgstr "Kawalan Bintik+Bayang" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "AF Tunggal" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "AF penggambaran berjujukan" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "Berbilang AF" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "Tidak menggunakan AF" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "Menggunakan AF" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Tidak Sedia" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Sedia" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "Tokok" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "sync-perlahan" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "Paksa Dihidupkan" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "layar ke dua" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "Saluran 1, Perlahan" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "Saluran 2, Perlahan" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "Saluran 3, Perlahan" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "Saluran 4, Perlahan" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "Saluran 1, tengah" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "Saluran 2, tengah" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "Saluran 3, tengah" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "Channel 4, Tengah" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "Saluran 1,Tinggi" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "Saluran 2,Tinggi" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "Saluran 3,Tinggi" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "Saluran 4,Tinggi" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500K (Cuaca Baik dengan Bayang)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (Mendung)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (Cuaca Baik)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (lampu tungsten)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (Cahaya-seakan Tungsten)" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Bukaan Automatik" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Auto (Denyar)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (Fluorescent cahaya siang)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (Fluorescent putih neutral)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (Fluorescent putih sejuk)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "PendaflourPutih" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "One Touch WB" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "One Touch WB" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "One Touch WB" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "One Touch WB" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "WB suai 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "WB suai 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "WB suai 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "WB suai 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (Merah Dipertingkat)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (Hijau Dipertingkat)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (Biru Dipertingkat)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (Tona Kulit)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "Pro Photo RGB" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Penapis Hingar" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "Penapis Hingar (Galak ISO)" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Dibisukan" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "Monotone" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "On, Mod 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "On, Mod 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "On, Mod 3" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Versi Tetapan Kamera" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Versi tetapan kamera" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Imej Pratonton Sah" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Imej pratonton sah" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "Imej Pratonton Mula" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "Imej pratonton mula" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Panjang Imej Pratonton" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Panjang imej pratonton" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Kunci dedahan auto" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "Anjak Dedahan" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "Anjak dedahan" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Proses Fokus" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Proses fokus" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "Pencarian AF" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "Pencarian AF" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Kawasan AF" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Kawasan AF" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "TitikAF Terpilih" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "Laras Tala Hala AF" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "Laras tala halus AF" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "Kawalan Jauh Denyar" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "Kawalan jauh denyar" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "Mod Kawalan Denyar" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "Mod kawalan denyar" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "Keamatan Denyar" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "Keamatan dengar" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "Kekuatan Denyar Manual" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "Kekuatan denyar manual" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Imbangan Putih 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Imbangan putih 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Suhu Imbangan Putih" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Suhu imbangan putih" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Ketepuan Suai" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Ketepuan suai" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Ketepuan Ubahsuai" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Ketepuan diubahsuai" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Tetapan Beza Jelas" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Tetapan Kejelasan" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Pembetulan Herotan" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Pembetulan herotan" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Pemampasan Bayang" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Pemampasan bayang" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Faktor Pemampatan" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Faktor pemampatan" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Pemeringkatan" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Mod gambar" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Ketepuan Mod Gambar" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Ketepuan mod gambar" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Rona Mod Gambar" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Rona mod gambar" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Beza Jelas Mod Gambar" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Beza jelas mod gambar" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Kejelasan Mod Gambar" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Kejelasan mod gambar" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Penapis BW Mod Gambar" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Penapis BW mod gambar" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Tona Mod Gambar" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Tona mod gambar" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Penapis hingar" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "Penapis Seni" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "Penapis seni" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "Penapis Magik" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "Penapis magik" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Mod Panorama" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Mod panorama" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Kualiti Imej 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Kualiti imej 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "Tekanan Manometer" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Tekanan manometer" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Bacaan Manometer" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Bacaan manometer" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Kesan WB Lanjutan" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Kesan WB lanjutan" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "Gulung Tolok Aras" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "Gulung tolok aras" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "Pic Tolok Aras" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "Pic aras aras" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "Tag OlympusCs tidak diketahui" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "E-System Ringkas" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "E-System" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "Versi Peralatan" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "Versi peralatan" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Nombor siri" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Nombor Siri Kanta" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Nombor siri kanta" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Versi Perisian Tegar Kanta" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Versi perisian tegar kanta" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Bukaan Maks Pada Fokus Semasa" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Bukaan maks pada fokus semasa" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Sifat Kanta" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Sifat kanta" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Penyambung" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Nombor Siri Penjangkau" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Nombor siri penjangkau" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Model" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Model penjangkau" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Versi Perisian Tegar Penjangkau" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Versi perisian tegar penjangkau" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Kanta Penukaran" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Kanta penukaran" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Model Denyar" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Model denyar" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Versi Perisian Tegar Denyar" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Versi perisian tegar denyar" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Nombor Siri Denyar" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Tag OlympusEq tidak diketahui" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Kelajuan Tinggi" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "Fungsi Tinggi" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "Kelajuan Tinggi Lanjutan" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "Fungsi Tinggi Lanjutan" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Asal" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Disunting (Lanskap)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Disunting (Potret)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "Suhu Warna WB" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "Takat Kelabu WB" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "Versi Pembangunan Raw" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "Versi pembangunan Raw" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Nilai Bias Dedahan" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Nilai bias dedahan" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Nilai Imbangan Putih" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Nilai imbangan putih" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "Pelarasan Halus WB" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "Pelarasan halus WB" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "Takat Kelabu" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "Takat kelabu" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Paksaan Ketepuan" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Paksaan ketepuan" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "Paksaan Warna Ingatan" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "Paksaan warna ingatan" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Nilai Beza Jelas" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Nilai beza jelas" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "Nilai Kejelasan" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Nilai kejelasan" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Enjin" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Status sunting" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Tetapan" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Tag OlympusRd tidak diketahui" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "Versi Pembangunan 2 Raw" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "Versi pembangunan 2 Raw" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Pelarasan halus imbangan putih" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "Ketepuan PM" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "Beza jelas PM" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "Kejelasan PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "Penapis BW PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "Penapis BW PM" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "Ton Gambar PM" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "Ton gambar PM" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "Pemeringkatan Sendiri" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "Pemeringkatan sendiri" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "Penapis Hingar PM" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "Penapis hingar mod gambar" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Tag OlympusRd2 tidak diketahui" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "Hidup (2 bingkai)" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "Hidup (3 bingkai)" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "Versi Pemprosesan Imej" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "Versi pemprosesan imej" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "Aras RB WB 3000K" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "Aras RB WB 3000K" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "Aras RB WB 3300K" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "Aras RB WB 3300K" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "Aras RB WB 3600K" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "Aras RB WB 3600K" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "Aras RB WB 3900K" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "Aras RB WB 3900K" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "Aras RB WB 4000K" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "Aras RB WB 4000K" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "Aras RB WB 4300K" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "Aras RB WB 4300K" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "Aras RB WB 4500K" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "Aras RB WB 4500K" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "Aras RB WB 4800K" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "Aras RB WB 4800K" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "Aras RB WB 5300K" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "Aras RB WB 5300K" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "Aras RB WB 6000K" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "Aras RB WB 6000K" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "Aras RB WB 6600K" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "Aras RB WB 6600K" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "Aras RB WB 7500K" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "Aras RB WB 7500K" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "Aras WB RB CWB1" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "Aras WB RB CWB1" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "Aras WB RB CWB2" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "Aras WB RB CWB2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "Aras WB RB CWB3" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "Aras WB RB CWB3" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "Aras WB RB CWB4" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "Aras WB RB CWB4" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "Aras G WB 3000K" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "Aras G WB 3000K" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "Aras G WB 3300K" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "Aras G WB 3300K" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "Aras G WB 3600K" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "Aras G WB 3600K" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "Aras G WB 3900K" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "Aras G WB 3900K" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "Aras G WB 4000K" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "Aras G WB 4000K" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "Aras G WB 4300K" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "Aras G WB 4300K" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "Aras G WB 4500K" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "Aras G WB 4500K" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "Aras G WB 4800K" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "Aras G WB 4800K" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "Aras G WB 5300K" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "Aras G WB 5300K" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "Aras G WB 6000K" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "Aras G WB 6000K" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "Aras G WB 6600K" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "Aras G WB 6600K" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "Aras G WB 7500K" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "Aras G WB 7500K" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "Aras G WB" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "Aras G WB" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "Penggalak" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Nilai Penggalak" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "Enhancer values" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "Penapis Penerasan" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring Values" +msgstr "Nilai Penerasan" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring values" +msgstr "Nilai penerasan" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Aras Hitam" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Dasar Gandaan" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Dasar gandaan" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Bit Sah" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Kerat Kiri" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Kerat kiri" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Kerat Atas" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Kerat atas" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Kerat Lebar" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Kerat lebar" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Kerat Tinggi" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Kerat tinggi" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "Mod Dedahan Berbilang" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "Mod dedahan berbilang" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "Nisbah Bidang" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "Nisbah bidang" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "Bingkai Nisbah" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "Bingkai nisbah" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "Kesan Wajah" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "Kesan wajah" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "Kawasan Kesan Wajah" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "Kawasan kesan wajah" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Tag OlympusIp tidak diketahui" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "Lantun atau Dimatikan" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "Langsung" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Varsi Maklumat Fokus" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Varsi maklumat fokus" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Fokus Sendiri" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "Kesan Adegan" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "Kesan adegan" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Kawasan Adegan" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Kawasan adegan" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Data Kesan Adegan" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Data kesan adegan" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Kiraan Langkah Zum" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Kiraan Langkah Fokus" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Kiraan langkah fokus" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Ketakhinggaan Langkah Fokus" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Ketakhinggaan langkah fokus" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Hampor Langkah Fokus" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Hampor langkah fokus" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Denyar Luaran" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Nombor Panduan Denyar Luaran" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Nombor panduan denyar luaran" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Denyar Manual" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Denyar manual" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Tag OlympusFi Tidak Diketahui" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "Tag OlympusFi tidak diketahui" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "Cuaca Baik" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "Tungsten (pijar)" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "Cahaya Matahari Petang" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Fluoresent" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Pendarfluor Putih Siang (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Pendarfluor Putih Sejuk (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Pendarfluor Putih (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Imbangan Putih One Touch" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "Suai 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "Versi Maklumat Raw" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "Versi maklumat Raw" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "Aras WB_RB yang Digunakan" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "Aras WB_RB yang digunakan" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "Aras Automatik WB_RB" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "Aras automatik WB_RB" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "Bayang Aras WB_RB" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "Bayang aras WB_RB" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "Mendung Aras WB_RB" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "Mendung aras WB_RB" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "Cuaca Baik Aras WB_RB" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "Cuaca baik aras WB_RB" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "Tungsten Aras WB_RB" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "Tungsten aras WB_RB" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "Cahaya Matahari Petang Aras WB_RB" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "Cahaya matahari petang aras WB_RB" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "Pendafluor Cahaya Siang Aras WB_RB" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "Pendafluor cahaya siang aras WB_RB" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "Pendafluor Putih Siang Aras WB_RB" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "Pendafluor putih siang aras WB_RB" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "Pendafluor Putih Sejuk Aras WB_RB" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "Pendafluor putih sejuk aras WB_RB" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "Pendafluor Putih Aras WB_RB" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "Pendafluor putih aras WB_RB" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Warna Matrix2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Warna matrix 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Aras Hitam 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Aras hitam 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "Pekali YCbCr" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "Pekali YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "Kedalam Piksel Sah" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "Kedalaman piksel sah" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Komp Imbangan Putih" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Komp imbangan putih" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "Tetapan Ketepuan" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "Tetapan Rona" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "Tetapan rona" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "Pemampasan Dedahan CM" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "Pemampasan dedahan CM" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "Imbangan Putih CM" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "Imbangan putih CM" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "Komp Imbangan Putih CM" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "Komp imbangan putih CM" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "Takat Kelabu Imbangan Putih CM" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "takat kelabu imbangan putih CM" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "Ketepuan CM" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "Ketepuan CM" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "Rona CM" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "Rona CM" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "Beza Jelas CM" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "Beza jelas CM" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "Kejelasan CM" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "Kejelasan CM" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "Tag OlympusRi Tidak Diketahui" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Dipilih-Pengguna" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Batal-Sendiri" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Pantas" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "One-touch" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-AF" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-AF" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "AF Pengimej" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "Penderia AF" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "Fokus Lembut" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "Seni Pop" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "Warna Pudar & Cerah" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "Ton Cerah" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "Lubang Pin" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "Filem Berbintik" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "Diorama" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "Proses Silang" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Mata Ikan" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "Pelukisan" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +#, fuzzy +msgid "Pale & Light Color II" +msgstr "Warna Pudar & Cerah" + +#: src/olympusmn.cpp:1514 +#, fuzzy +msgid "Pop Art II" +msgstr "Seni Pop" + +#: src/olympusmn.cpp:1515 +#, fuzzy +msgid "Pin Hole II" +msgstr "Lubang Pin" + +#: src/olympusmn.cpp:1516 +#, fuzzy +msgid "Pin Hole III" +msgstr "Lubang Pin" + +#: src/olympusmn.cpp:1517 +#, fuzzy +msgid "Grainy Film II" +msgstr "Filem Berbintik" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Fokus Lembut" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Warna alamiah" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Bukaan minimum" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Pemilihan" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Proses Silang" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Warna alamiah" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Warna alamiah" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Diorama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Urus UI" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Urus UI" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Warna Alamiah" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Warna Alamiah" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Warna Alamiah" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "Kiri (atau t/b)" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "Tengah (mengufuk)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "Pusat(menegak)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "Kiri-atas (mengufuk)" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "Pusat-atas (mengufuk)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "Kanan-atas (mengufuk)" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "Kiri (mengufuk)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "Kiri-tengah (mengufuk)" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "Kanan-tengah (mengufuk)" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "Kanan (mengufuk)" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "Kiri-bawah (mengufuk)" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "Pusat-bawah (mengufuk)" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "Kanan-bawah (mengufuk)" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "Kiri-atas (menegak)" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "Pusat-atas (menegak)" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "Kanan-atas (menegak)" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "Kiri (menegak)" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "Kiri-tengah (menegak)" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "Kanan-tengah (menegak)" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "Kanan (menegak)" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "Kiri-bawah (menegak)" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "Pusat-bawah (menegak)" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "Kanan-bawah (menegak)" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "Sasaran Tunggal" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "Semua Sasaran" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "Sasaran Tunggal Dinamik" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Sangat Tinggi" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Gambar Bergerak" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Cereka Saiz Kecil" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Cereka" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogen" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "Auto, butang fokus" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "Auto, berterusan" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "Pengerakan" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Tele-makro" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Makro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Permandangan" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Keutamaan kelajuan-pengatup" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "Pratonton cereka" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "Ringkas" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "Kesan warna" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Permandangan malam" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "Bayi" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "Kulit lembut" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Cahaya lilin" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Malam berbintang" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "Kepekaan tinggi" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Bantuan panorama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "Foto udara" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "ISO pintar" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Papan putih" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "Penggambaran berterusan kelajuan tinggi" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "Auto pintar" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Bintik-berbilang" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Julat Pemindahan" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Bias Denyar" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Pengimbas filem" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Warna Saya" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Bingkai Panorama" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "HDR" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Senja Pegang Tangan" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Kawalan Jauh" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Penapis Digital" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Potret Kendiri" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +#, fuzzy +msgid "Backlit Softness" +msgstr "Bebayang Cahaya Belakang" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Hubungan" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Permandangan malam" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Langit Biru" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "Pencahayaan Kawasan AF" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Potret Malam" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +#, fuzzy +msgid "Cute Desert" +msgstr "Pereka Kostum" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +#, fuzzy +msgid "Clear Sports Shot" +msgstr "Penggambaran Sukan Lanjutan" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Panas" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Sejuk" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Kualiti Tinggi/Rendah" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "Tidak terhingga" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "Sederhana rendah" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "Sederhana tinggi" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "Rendah (-1)" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "Tinggi (+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Paling Rendah (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "Paling Tinggi (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "Putar 90 IJ" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Tidak Diperlukan" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Tidak Diperlukan" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "Optik EX" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Telefoto" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "Rumah" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Piawai (warna)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "Dinamik (warna)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Tabii (warna)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "Lancar (warna)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Piawai (H&P)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "Dinamik (H&P)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "Lancar (H&P)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Getar" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Braket" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Penyambung" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Auto" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Bentuk piawai" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "Putar 90 IJ" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "Putar 90 IJ" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Kiri ke kanan" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Kanan ke kiri" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Atas ke bawah" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Bawah ke atas" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Skala Masa" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Maklumat Lokasi" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Pemilihan" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Audio" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Pelarasan imbangan putih" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Bias Denyar" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Versi Exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Kesan Warna" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Kesan warna" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"Masa dalam 1/100 s bila kamera dihidupkan ketika imej ditulis ke kad ingatan" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Mod Ledakan" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Mod ledakan" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Pengurangan Hingar" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Pemasa Kendiri" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Bantuan AF" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "Usia Bayi" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby (or pet) age 1" +msgstr "Usia bayi (atau haiwan peliharaan)" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "Mod Zum Optik" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "Mod zum optik" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "Percutian" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "Percutian" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Lokasi Waktu Dunia" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Lokasi waktu dunia" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "Setem Masa GPS" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "ISO Program" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Jenis Adegan" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "Setem Masa GPS" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Kesan Wajah" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Tetapan Suhu Warna" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Suhu Warna" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Pengurungan" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "AB Laras WB" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "AB Laras WB. Positif adalah kearah biru." + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "GM Laras WB" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "GM Laras WB. Positif adalah kearah hijau." + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Maklumat denyar" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Pengurangan Hingar Dedahan Panjang" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Kedudukan Fokus AF" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Kesan wajah" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "Jenis Aksesori" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "Jenis aksesori" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Nombor Siri Badan" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "Julat Pemindahan" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Auto pintar" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Veris Perisian Tegar" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "AF Pengenalpastian Wajah" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Amaran Fokus" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Pemeteran Denyar" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Tajuk" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Usia Bayi" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby name (or pet name)" +msgstr "Usia bayi (atau haiwan peliharaan)" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Lokasi" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Negeri" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Auto pintar" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Kelajuan Bukaan" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Julat Dinamik Pembangunan" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Tiada Perapian" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Bandar" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Gaya gambar" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +#, fuzzy +msgid "Accelerometer X" +msgstr "Piksel Per Meter X" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +#, fuzzy +msgid "Accelerometer Y" +msgstr "Piksel Per Meter Y" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Orientasi Imej" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "Kerat Sudut" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Arah Panorama" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Rakaman RAW+JPG" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Dalaman + Luaran" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Kelajuan bukaan" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Nilai Bukaan" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "AF Sentuh" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "Versi MakerNote" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "Versi MakerNote" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "Aras Merah WB" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "Aras merah WB" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "Aras Hijau WB" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "Aras hiiaju WB" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "Aras Biru WB" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "Aras biru WB" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "Setem Masa GPS" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "Setem Masa GPS" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "Usia Bayi" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby (or pet) age 2" +msgstr "Usia bayi (atau haiwan peliharaan)" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "Julat Pemindahan" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Tag PanasonicMakerNote tidak diketahui" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Mod setempat hidup" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "Mod setempat mati atau 3-kawasan (kelajuan tinggi)" + +#: src/panasonicmn.cpp:564 +#, fuzzy +msgid "23-area" +msgstr "5-kawasan" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "Pemfokusan setempat" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "5-kawasan" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "1-kawasan" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "1-kawasan (kelajuan tinggi)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "3-kawasan (auto)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "3-kawasan (kiri)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "3-kawasan (pusat)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "3-kawasan (kanan)" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Pemfokusan setempat" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "tidak ditetapkan\n" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "Versi raw Panasonic" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Lebar Penderia" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Lebar penderia" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Tinggi Penderia" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Tinggi penderia" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Sempadan Atas Penderia" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Sempadan atas penderia" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Sempadan Kiri Penderia" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Sempadan kiri penderia" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Imbangan merah (ditemui dalam imej RAW Digilux 2)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Pengilang" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "Pengilang peralatan rakaman" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Model" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "Nama model atau nombor model peralatan" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "Ofset Jalur" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "Ofset jalur" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientasi" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "Baris Per Jalur" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "Bilangan baris per jalur" + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "Kiraan Bait Jalur" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "Kiraan bait jalur" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "Ofset Data Raw" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "Ofset data raw" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Penuding IFD Exif" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "Merupakan penuding kepada IFD Exif" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "Penuding IFD Maklumat GPS" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "Merupakan penuding kepada IFD Maklumat GPS" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Tag PanasonicRaw tidak diketahui" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Adegan-Malam" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Baik" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Lebih Baik" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Terbaik" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 atau 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 or 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 or 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Auto, Jangan tembak" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +msgid "Off, Did not fire" +msgstr "Mati, Tidak didenyar" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Auto, Jangan tembak, pengurangan mata-merah" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "Hidup. Tidak didenyar. Tanpa Wayar (Master)" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Auto, Ditembak" + +#: src/pentaxmn.cpp:253 +msgid "On, Fired" +msgstr "Hidup, Didenyar" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Auto, Ditembak, pengurangan mata-merah" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Hidup, pengurangan mata-merah" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "Hidup, Tanpa Wayar (Master)" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "Hidup, Tanpa wayar (Kawalan)" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Hidup, Lembut" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Hidup, Segerak-perlahan" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Hidup, Segerak-perlahan, pengurangan mata-merah" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "Hidup, Segerak menuruti-tirai" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Fokus Lata" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "AF-A" + +#: src/pentaxmn.cpp:276 +msgid "Contrast-detect" +msgstr "Kesan-Beza-Jelas" + +#: src/pentaxmn.cpp:277 +msgid "Tracking Contrast-detect" +msgstr "Menjejak kesan-beza-jelas" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Pusat Tetap" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "AF Penjejakan Automatik" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "AF Pengenalpastian Wajah" + +#: src/pentaxmn.cpp:287 +msgid "AF Select" +msgstr "AF Select" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "Pusat Tetap atau berbilang" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Pusat-atas" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Pusat-bawah" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Segmen Berbilang" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Pemberatan Pusat" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "PendaflourCahayaSiang" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "PendaflourPutihSiang" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "PendaflourPutih" + +#: src/pentaxmn.cpp:420 +msgid "Color Temperature Enhancement" +msgstr "Penambahbaikan Suhu Warna" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Dipilih Pengguna" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto (Cahaya Siang)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Auto (Bayang)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (Denyar)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (Tungsten)" + +#: src/pentaxmn.cpp:432 +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (DaylightFluorescent)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (Pendaflour Putih Siang)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (Pendaflour Putih)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (Mendung)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Praset (Bunga Api?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Sed Rendah" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Sed Tinggi" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Sed Lembut" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "Sed Keras" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Sangat Lembut" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Sangat Keras" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Kampung Halaman" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Mexico City" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "New York" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracus" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "London" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paris" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Milan" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rom" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlin" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istanbul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Kaherah" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jerusalem" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moscow" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Tehran" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubai" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Karachi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Kathmandu" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Yangon" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientiane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapore" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Jakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Beijing" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Shanghai" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Taipei" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seoul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaide" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokyo" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Noumea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Algiers" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Athens" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Stockholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lisbon" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Copenhagen" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "Warsaw" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "Prague" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "Budapest" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Tidak diproses" + +#: src/pentaxmn.cpp:570 +msgid "Resized" +msgstr "Disaiz Semula" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Dikerat" + +#: src/pentaxmn.cpp:573 +msgid "Digital Filter 6" +msgstr "Digital Filter 6" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "Sintesis Bingkai?" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Program Kelajuan-tinggi" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Program DOF" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "Program MTF" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Potret Adegan Malam" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Tanpa Denyar" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Luncur & Salji" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Kanak-Kanak" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "Pencahayaan Pentas" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "Tangkapan Malam" + +#: src/pentaxmn.cpp:602 +msgid "Blue Sky" +msgstr "Langit Biru" + +#: src/pentaxmn.cpp:604 +msgid "Night Scene HDR" +msgstr "Adegan Malam HDR" + +#: src/pentaxmn.cpp:606 +msgid "Quick Macro" +msgstr "Makro Pantas" + +#: src/pentaxmn.cpp:607 +msgid "Forest" +msgstr "Hutan" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "Bebayang Cahaya Belakang" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "PICT Auto (Piawai)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "PICT Auto (Potret)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "PICT Auto (Lanskap)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "PICT Auto (Makro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "PICT Auto (Sukan)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Mod Hijau" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Keutamaan Kelajuan Pengatup" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Keutamaan Bukaan" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Mentol" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "DOF Cetek" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Program Tv Shift" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Program Av Shift" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Keutamaan Bukaan (Bukaan-Auto-Mati)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manual (Bukaan-Auto-Mati)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Mentol (Bukaan-Auto-Mati)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Keutamaan Pengatup" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "AE Keutamaan Pengatup & Bukaan" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "AE Keutamaan Pengatup & Bukaan (1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "AE Keutamaan Kepekaan" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "AE Keutamaan Kepekaan (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "AE Kelajuan Segerak-X Denyar" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "AE Kelajuan Segerak-X Denyar (1)" + +#: src/pentaxmn.cpp:646 +msgid "Auto Program (Normal)" +msgstr "Program Auto (Biasa)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "Program Auto (Hi-Speed)" + +#: src/pentaxmn.cpp:648 +msgid "Auto Program (DOF)" +msgstr "Program Auto (DOF)" + +#: src/pentaxmn.cpp:649 +msgid "Auto Program (MTF)" +msgstr "Program Auto (MTF)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "Program Auto (DOF Cetek)" + +#: src/pentaxmn.cpp:651 +msgid "Blur control" +msgstr "Kawalan kabur" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "Video (30 fps)" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "Video (24 fps)" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Berterusan (Hi)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Ledak" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "Video" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Pemasa-kendiri (12 saat)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Pemasa-kendiri (2 saat)" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "Kuncian cermin" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Kawalan Jauh (3 saat)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Kawalan Jauh" + +#: src/pentaxmn.cpp:672 +msgid "Remote Continuous Shooting" +msgstr "Penangkapan Berterusan Jauh" + +#: src/pentaxmn.cpp:675 +msgid "HDR Strong 1" +msgstr "HDR Kuat 1" + +#: src/pentaxmn.cpp:676 +msgid "HDR Strong 2" +msgstr "HDR Kuat 2" + +#: src/pentaxmn.cpp:677 +msgid "HDR Strong 3" +msgstr "HDR Kuat 3" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "HDR Auto" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 atau Tanpa Kanta" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "Kanta K atau M" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Kanta Siri A" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Terang" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "FIlem berbalik" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "Pintas luntur" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "Sinaran" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Paling Lemah" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Lemah" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Kuat" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Tiada dedahan lanjutan" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Tidak diketahui " + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Versi Makernote Pentax" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Mod penggambaran kamera" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Resolusi imej pratonton" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Panjang imej pratonton" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "Saiz IFD yang mengandungi imej pratonton" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Pengenalpastian Model" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Pengenalpastian model Pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Tarikh" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Masa" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Tetapan kualiti imej" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Tetapan saiz imej" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Tetapan mod denyar" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Tetapan mod fokus" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Titik AF terpilih" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "Titik AF dalam fokus" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "Nombor-F" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "Kepekaan ISO" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Tetapan kepekaan ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Mod Pemeteran" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Pengurungan-sendiri" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "Imbangan warna biru" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Imbangan warna merah" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Panjang Fokus" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Kampung Halaman" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "DST Kampung Halaman" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Sama ada masa penjimatan siang adalah aktif di kampung halaman" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "DST Destinasi" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Sama ada waktu penjimatan siang adalah aktfi di destinasi" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "Versi Perisian Tegar DSP" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "Versi Perisian Tegar CPU" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Nilai cahaya" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "Nilai cahaya terkira kamera, termasuklah pemampasan dedahan" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "Ofset kawasan imej" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "Saiz imej Mentah" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "sempadan imej pratonton" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Laras kepekaan" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Penapis digital" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Suhu kamera" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Ton imej" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Pengurangan gegar" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Maklumat pengurangan goncang" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "pengembangan julat dinamik" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Pengurangan hingar ISO tinggi" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "Pelarasan AF" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Titik hitam" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Titik putih" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Maklumat Syot" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "Maklumat AE" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Maklumat Kanta" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Maklumat Denyar" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "Segmen Pemeteran AE" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "Longgok Denyar A" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "Longgok Denyar B" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "CahayaSiangArasWB_RGGB" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "BayangArasWB_RGGB" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "MendungArasWB_RGGB" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "TungstenArasWB_RGGB" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "PendaflourDArasWB_RGGB" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "PendaflourNArasWB_RGGB" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "PendaflourWArasWB_RGGB" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "DenyarArasWB_RGGB" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Maklumat Kamera" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Maklumat Bateri" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "Maklumat AF" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "Maklumat Warna" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Tag PentaxMakerNote tidak diketahui" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Skema Teras Dublin" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "Skema Pengurusan Foto digiKam" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "Skema Antaramuka Program Imej KDE" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "Skema Asas XMP" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "Pengurusan Hak XMP" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "Skema Pengurusan Media XMP" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "Skema Tiket Kerja Asas XMP" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "Skema Teks-Berhalaman XMP" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "Skema Media Dinamik XMP" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Skema Foto Microsoft" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Skema photoshop Adobe" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Skema PDF Adobe" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Skema photoshop Adobe" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Skema Mentah Kamera" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Sifat TIFF untuk Skema Exif" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Sifat khusus-Exif untuk skema Exif" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Sifat Exif Tambahan untuk skema Exif" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "Skema Teras IPTC" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "Skema Sambungan IPTC" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "Skema Format Data Lesen PLUS" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "Skema Pro Media iView" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "Skema Media Expression" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "Skema Microsoft Photo 1.2" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "Skema RegionInfo Microsoft Photo" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "Skema Kawasan Microsoft Photo" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "Skema Wilayah Kumpulan Kerja Data Meta" + +#: src/properties.cpp:138 +#, fuzzy +msgid "Metadata Working Group Keywords schema" +msgstr "Skema Wilayah Kumpulan Kerja Data Meta" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "Skema Video Lanjutan XMP" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "Skema Audio Lanjutan XMP" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Skema Teras Dublin" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Skema Teras Dublin" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Skema PDF Adobe" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Struktur Pewarna" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Struktur dimensi" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Struktur fon" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Struktur thumbnail" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Struktur Peristiwa Sumber" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "Struktur ResourceRef" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Struktur versi" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Struktur Kerja/Aliran Kerja Asas" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "Struktur kawasan" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Penerang untuk xmp:Identifier" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Penyumbang" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Penyumbang ke sumber (lain dari pengarang)." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Liputan" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"Topik spatial atau sementara sumber, Kebolehgunaan spatial sumber, atau " +"bidang kuasa yang mana sumber tersebut berkaitan." + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Pencipta" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "Pengarang sumber (disenarai mengikut tertib duluan, jika penting)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Tarikh yang mana perkara menarik berlaku pada sumber." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Keterangan tekstual bagi kandungan sumber. Nilai berbilang mungkin hadir " +"untuk bahasa yang berlainan." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Format" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"Format fail yang digunakan bila menyimpan sumber. Alatan dan aplikasi patut " +"tetapkan sifat ini untuk simpan format data. Ia sertakan penerang yang " +"bersesuaian." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Pengenalpasti:" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Pengenalpasti unik sumber. Amalan terbaik disarankan untuk mengenalpasti " +"sumber berdasarkan rentetan pada sistem pengenalpastian formal." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "Tatasusunan tidak tertib menyatakan bahasa yang diguna dalam sumber." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Penerbit" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Entiti bertanggungjawab menyebabkan sumber tersedia. Contoh Penerbit " +"termasuklah individu, organisasi, atau perkhidmatan. Biasanya, nama Penerbit " +"patut digunakan untuk nyatakan entiti." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Hubungan" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Hubungan dengan dokumen lain. Amalan terbaik disarankan adalah kenalpasti " +"sumber berkaitan beerdasarkan rentetan pada sistem pengenalpastian formal." + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Hak" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Penyataan hak informal, dipilih mengikut bahasa. Biasanya maklumat hak " +"termasuklah penyataan mengenai pelbagai hak harta berkaitan dengan sumber, " +"termasuklah hak harta intelektual." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Pengenalpasti unik bagi kerja yang mana sumber ini diperoleh." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Tatasusunan tidak tertib bagi frasa deskriptif atau kata kunci yang " +"menyatakan topik kandungan sumber." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"Tajuk dokumen, atau nama yang diberi kepada sumber. Biasanya, ia boleh jadi " +"nama yang mana sumber tersebut dikenali." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Jenis" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "Jenis dokumen; contohnya, novel, sajak, atau kertas kerja." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Senarai Tag" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"Senarai laluan tag lengkap sebagai rentetan, Hieraki laluan dipisah dengan " +"aksara '/' (cth: \"City/Paris/Monument/Eiffel Tower\"." + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Kapsyen Nama Pengarang" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" +"Senarai semua kapsyen nama pengarang untuk setiap set kapsyen gantian bahasa " +"dalam tag XMP piawai." + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "Kapsyen Setem Masa Tarikh" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" +"Senarai semua kapsyen setem masa tarikh untuk setiap set kapsyen gantian " +"bahasa dalam tag XMP piawai." + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Sejarah Imej" + +#: src/properties.cpp:197 +#, fuzzy +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" +"Kandungan berasaskan XML pada senarai semua tindakan yang diproses pada imej " +"ini dengan penyunting imej (seperti kerat, putar, pembetulan warna, " +"pelarasan, dll)." + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "Tetapan Pembetulan Kanta" + +#: src/properties.cpp:198 +#, fuzzy +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" +"Senarai tetapan alatan Pembetulan Kanta yang diguna untuk baiki herotan " +"kanta. Ia termasuklah Pengurus Baris Gilir Kelompok dan alatan penyunting " +"Imej berasaskan pustaka LensFun." + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Label Warna" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" +"Label warna yang diumpuk pada item ini. Nilai yang mungkin adalah \"0\": " +"tiada label; \"1\": Merah; \"2\": Jingga; \"3\": Kuning; \"4\": Hijau; " +"\"5\": Biru; \"6\": Magenta; \"7\": Kelabu; \"8\": Hitam; \"9\": Putih." + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "Label Ambil" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" +"Label ambil diumpuk ke item ini. Nilai yang mungkin adalah \"0\": tiada " +"label; \"1\": item ditolak; \"2\": item dalam pengesahan tertangguh; \"3\": " +"item diterima." + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Fail Input Enfuse" + +#: src/properties.cpp:206 +#, fuzzy +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" +"Senarai fail yang diproses dengan program Enfuse melalui alat ExpoBlending." + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "Fail Input Enfuse" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" +"Senarai fail yang diproses dengan program Enfuse melalui alat ExpoBlending." + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Tetapan Enfuse" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" +"Senarai tetapan Enfuse digunakan untuk adun tindanan imej dengan alat " +"ExpoBlending." + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "ID Item PicasaWeb" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "ID item dari perkhidmatan Sesawang PicasaWeb." + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "ID Item Yandex Fotki" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "ID item dari perkhidmatan sesawang Yandex Fotki." + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Nasihat" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"Tatasusunan tidak tertib menyatakan sifat yang disunting luar dari aplikasi " +"pengarangan. Setiap item patut mengandungi ruang nama tunggal dan XPath yang " +"dipisah dengan satu ruang ASCII (U+0020)." + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "URL Asas" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"URL asas untuk URL relatif dalam kandungan dokumen. Jika dokumen ini " +"mengandungi pautan Internet, dan pautan tersebut adalah relatif, ia adalah " +"relatif pada URL asas ini. Sifat ini menyediakan cara piawai untuk URL " +"relatif terbenam yang akan ditakrif oleh alatan. Alatan pengarangan sesawang " +"patut tetapkan nilai berasaskan pada tanggapan yang mana URL akan " +"ditafsirkan." + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Tarikh Dicipta" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "Tarikh dan masa sumber asalnya dicipta." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Alat Pencipta" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"Nama bagi alat yang pertama digunakan untuk cipta sumber. Jika sejarah hadir " +"dalam data meta, nilai ini patut menyamai dengan xmpMM:Sejarah difat Ejen " +"perisian." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Merupakan tatasusunan tidak tertib bagi rentetan teks yang mana kenalpasti " +"sumber secara tidak samar dengan konteks yang diberi. Item tatasusunan " +"mungkin sesuai dengan xmpidq:Scheme untuk tandakan sistem pengenalpastian " +"formal yang mana pengenalpasti turuti. Perhatian: sifat dc:identifier tidak " +"digunakan kerana ia kurang penerang skema tertakrif dan telah ditakrif dalam " +"Spesifikasai XMP sebagai sifat ringkas (nilai-tunggal)." + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Label" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"Merupakan perkataan atau frasa pendek yang mengenalpasti dokumen sebagai " +"ahli bagi koleksi ditakrif-pengguna. Digunakan untuk mengurus dokumen dalam " +"pelayar fail." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Tarkih Data Meta" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"Tarikh dan masa yang mana sebarang data meta untuk sumber ini terakhir " +"berubah. Ia sepatutnya sama seperti yang terkini berbanding xmp:ModifyDate." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Tarikh Ubahsuai" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"Tarikh dan masa sumber yang kali terakhir diubahsuai. Nilai bagi sifat ini " +"tidak perlu sama dengan tarikh pengubahsuaian sistem fail kerana ia " +"ditetapkan sebelum fail disimpankan." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Gelaran" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Nama tidak formal pendek untuk sumber." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Penarafan" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Bilangan yang menunjukkan status dokumen berkaitan dengan dokumen lain, " +"digunakan untuk mengurus dokumen dalam pelayar fail. Nilai adalah ditakrif-" +"pengguna dalam julat takrifan-aplikasi." + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Thumbnail" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Tatasusunan alternatif imej thumbnail bagi fail, yang mana boleh berbeza " +"dalam karakter seperti saiz atau pengekodan imej." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Sijil" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Sijil pengurusan hak diatas talian." + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Ditanda" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Menunjukkan ini merupakan sumber yang diurus-haknya." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Pemilik" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "Tatasusunan tidak tertin menyatakan pemilik sah sesebuah sumber." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Terma penggunaan" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Arahan teks bagaimana sumber boleh digunakan secara sah." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Penyataan Sesawang" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Lokasi bagi halaman sesawang yang menerangkan pemilik dan/atau penyataan " +"haknya untuk sumber ini." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Dirujuk Dari" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" +"Rujukan ke dokumen asal yang mana salah satu diperolehi. Ini adalah rujukan " +"minimum; komponen hilang boleh dianggap tidak berubah. Contohnya, versi baru " +"perlu nyatakan ID kejadian dan nombor versi bagi versi terdahulu, atau " +"tafsiran perlu nyatakan ID kejadian dan kelas tafsiran yang asal." + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "ID Dokumen" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" +"Pengenalpasti umum bagi semua versi dan tafsiran dokumen. Ia patut " +"berasaskan pada UUID; rujuk Dokumen dan ID kejadian dibawah." + +#: src/properties.cpp:268 +msgid "History" +msgstr "Sejarah" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" +"Tatasusunan bertertib bagi tindakan pengguna mahir yang dihasilkan dalam " +"sumber ini. Ia bertujuan untuk memberitahu pembaca manusia satu tanda am " +"bagi langkah yang diambil untuk membuat perubahan dari versi terdahulu " +"kepada yang sedia ada. Senarai patutnya pada aras abstrak; ia tidak " +"bertujuan menjadi ketukan kekunci yang memenatkan atau sejarah terperinci " +"yang lain." + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "ID Tika" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" +"Pengenalpasti bagi inkarnasi spesifik dokumen, dikemaskini setiap kali fail " +"disimpan. Ia patut melepasi UUID; rujuk Dokumen dan ID kejadian dibawah." + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Diurus Dari" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" +"Merupakan rujukan kepada dokumen kerana ia telah terdahulu diurus. Ia " +"ditetapkan bila dokumen terurus diperkenalkan pada sistem pengurusan aset " +"yang mana kini tidak memilikinya. Ia mungkin atau tidak sertakan rujukan " +"kepada sistem pengurusan yang berlainan." + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Pengurus" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" +"Nama bagi sistem pengurusan aset yang mengurus sumber ini. Bersama-sama " +"dengan with xmpMM: ManagerVariant, ia memberitahu aplikasi sistem pengurusan " +"aset yang manakah hendak dihubungi berkenaan dokumen ini." + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "Urus kepada" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" +"Merupakan URi yang mengenalpasti sumber terurus kepada sistem pengurusan " +"aset; kehadiran sifat ini adalah tanda formal yang mana sumber ini diurus. " +"Bentuk dan kandungan URI ini adalah sulit pada sistem pengurusan aset." + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "Urus UI" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" +"URI yang digunakan untuk mencapai maklumat mengenai sumber terurus melalui " +"pelayar sesawang. Ia mungkin memerlukan pemalam pelayar suai." + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "Variasi Pengurus" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" +"Nyatakan variasi tertentu sistem pengurusan aset. Format bagi sifat ini " +"adalah sulit pada sistem pengurusan aset yang khusus." + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Kelas Tafsiran" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" +"Nama kelas tafsiaran bagi sumber ini. Sifat patut tidak hadir atua " +"ditetapkan kepasa lalai untuk versi dokumen yang mana buka tafsiran yang " +"diterbitkan." + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Param Tafsiran" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" +"Boleh diguna untuk sediakan parameter tafsiran tambahan yang mana terlalu " +"kompleks atau berjela untuk dikodkan dalam xmpMM: RenditionClass." + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "ID Versi" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" +"Pengenalpasti versi dokumen untuk sumber ini. Setiap versi dokumen akan " +"dapat pengenalpasti baru, biasanya dengan menokok integer 1, 2, 3 ... dan " +"seterusnya. Sistem pengurusan media boleh mempunyai resam lain atau cabang " +"sokongan yang memerlukan skema lebih kompleks." + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Versi" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" +"Sejarah versi berkaitan dengan sumber ini. Masukan [1] adalah versi " +"diketahui paling lama untuk dokumen ini, masukan [last()] adalah versi " +"terkini. Biasanya, sistem pengurusan media akan diisi dalam maklumat versi " +"dalam data meta semasa semak-masuk. Tiada jaminan versi sejarah lengkap " +"daripada pertama berbanding akan hadir dalam sifat xmpMM:Versions. Maklumat " +"versi dalaman boleh dimampatkan atau dimusnahkan dan sejarah versi boleh " +"dipangkas." + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "URL Terakhir" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Lapuk untuk perlindungan kerahsiaan." + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Tafsiran Bagi" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Lapuk bagi pihak xmpMM:DerivedFrom. Merupakan rujukan ke dokummen yang mana " +"adalah tafsiran." + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "ID Simpan" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" +"Lapuk. Sebelum ini hanya digunakan untuk menyokong sifat xmpMM:LastURL." + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Rujukan Kerja" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" +"Rujukan pada fail pengurusan kerja luaran untuk proses kerja yang mana " +"dokumen telah digunakan. Penggunaan nama kerja adalah dibawah kawalan " +"pengguna. Biasanya digunakan untuk kenalpasti semua dokumen yang merupakan " +"bahagian daripada kerja atau kontrak tertentu. Terdapat nilai berbilang " +"kerana lebih dari satu kerja menggunakan dokumen tertentu pada sebarang " +"masa, dan ia juga berguna untuk kekalkan maklumat bersejarah mengenai apakah " +"kerja dokumen merupakan sebahagian dari dokumen terdahulu." + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Saiz Halaman Maksimum" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"Saiz bagi halaman terbesar dalam dokumen (termasuklah apa-apa yang ada dalam " +"dokumen terkandung)." + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Bilangan Halaman" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" +"Bilangan halaman dalam dokumen (termasuklah apa-apa yang ada dalam dokumen " +"terkandung)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Fon" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Merupakan fon tatasusunan tidak tertib yang digunakan dalam dokumen " +"(termasuklah apa-apa yang ada dalam dokumen terkandung)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Pewarna" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Merupakan tatasusunan tidak tertib pewarna yang digunakan dalam dokumen " +"(termasuklah apa-apa yang ada dalam dokumen terkandung)." + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Nama Plat" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Merupakan tatasusunan tidak tertib nama plat yang digunakan dalam dokumen " +"(termasuklah apa-apa yang ada dalam dokumen terkandung)." + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Rujukan Projek" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "Rujukan pada projek yang cipta fail ini." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Kadar Bingkai Video" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Kadar bingkai video. Salah satu dari: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Kadar Bingkai Video" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "Saiz bingkai. Contohnya: w:720, h: 480, unit:piksel" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Nisbah Bidang Piksel Video" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "Nisbah bidang, diungkap sebagai ht/wd. Contohnya: \"648/720\" = 0.9" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Kedalaman Piksel Video" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"Saiz dalam bit bagi setiap komponen warna piksel. Tetingkap Piawai 32-bit " +"piksel mempunyai 8 bit per komponen. Salah satu dari: 8Int, 16Int, 32Int, " +"32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Ruang Warna Video" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"Ruang warna. Salah satu dari sRGB (diguna oleh Photoshop), CCIR-601 (diguna " +"untuk NTSC), CCIR-709 (diguna untuk HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Mod Alfa Video" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "Mod alfa. Salah satu dari: menegak, pra-berbilang." + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "Warna Pra-berbilang Alfa Video" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" +"Warna dalam CMYK atau RGB yang diguna sebagai warna pra-berbilang bila mod " +"alfa adalah pra-berganda." + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "Unity Alfa Video Adalah Lutsinar" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "Bila benar, unity jelas, bila palsu, ia menjadi legap." + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Pemampat Video" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Pemampat video yang digunakan. Contoh, jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Tertib Medan Video" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "Tertib medan untuk video. Salah satu dari: Atas, Bawah, Progresif." + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Tarik Bawah" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" +"Fasa persampelan bagi filem yang ditukar ke video (tarik-bawah). Salah satu " +"daru: WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Kadar Persampelan Audio:" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"Kadar persampelan audio. Bolah jadi sebarang nilai, tetapi umumnya 32000, " +"41100, atau 48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Jenis Persampelan Audio" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Jenis persampelan audio. Salah satu dari: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Jenis Saluran Audio" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Jenis saluran audio. Salah satu dari: Mono, Stereo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Pemampat Audio" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Pemampat audio yang digunakan. Contoh, MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Penggantian Pembesar Suara" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" +"Keterangan bagi sudut pembesar suara dari hadapan dalam darjah. Contoh: " +"\"Kiri = -30, Kanan = 30, Temgah = 0, LFE = 45, Keliling Kiri = -110, " +"Keliling Kanan = 110\"" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Kadar Data Fail" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "Kadar data fail dalam megabait sesaat. Contoh: \"36/10\" = 3.6 MB/saat" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Nama Pita" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "Nama pita yang mana klip ditangkap, semasa proses penangkapan." + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Nama Pita Alternatif" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" +"Nama pita alternatif, ditetapkan melalui tetingkap projek atau dialog kod " +"masa dalam Premiere. Jika nama ganti telah ditetapkan dan tidak " +"dikembalikan, nama tersebut akan dipaparkan." + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Kod Masa Mula" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" +"Kod masa bagi bingkai pertama video dalam fail, sebagaimana yang diperoleh " +"dari kawalan peranti." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Kod Masa Alternatif" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"Kod masa yang ditetapkan oleh pengguna. Bila dinyatakan, ia diguna selain " +"dari startTimecode." + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Tempoh" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Jangkamasa fail media." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Adegan" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Nama adegan." + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Nama Syot" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "Nama bagi syot atau tangkapan." + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Tarikh Syot" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Tarikh dan masa bila video ditangkap." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Lokasi Syot" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"Nama lokasi yang mana video telah ditangkap. Contoh: \"Oktoberfest, Munich " +"Germany\" Untuk kedudukan yang lebih tepat, guna nilai GPS EXIF." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Ulasan Log" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Ulasan log pengguna." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Penanda" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "Senarai tertib penanda" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Media Disumbang" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" +"Merupakan senarai tidak tertib semua media yang digunakan untuk cipta media" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "Laluan Fail Audio Puncak Mutlak" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"Laluan mutlak ke fail audio puncak. Jika kosong, tiada fail puncak wujud." + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "Laluan Fail Audio Puncak Relatif" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"Laluan relatif ke fail audio puncak. Jika kosong, tiada fail puncak wujud." + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Tarikh Ubahsuai Video" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Tarikh dan masa bila video kali terakhir diubahsuai." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Tarikh Ubahsuai Audio" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Tarikh dan masa bila audio terakhir diubahsuai." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Tarikh Ubahsuai Data Meta" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Tarikh dan masa bila data meta terakhir diubahsuai." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Artis" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Nama artis." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Album" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Nama album." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Nombor Trek" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "Nilai berangka menunjukkan tertib fail audio didalam rakaman asalnya." + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Genre" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Nama genre." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Maklumat hakcipta." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Tarikh tajuk dikeluarkan." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Penggubah" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Nama penggubah." + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Jurutera" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Nama jurutera." + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Tempo audio." + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Peralatan" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Peralatan muzik." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Masa Pengenalan" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "Tempoh bagi masa awal untuk muzik dibaris gilir." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Isyarat Keluar" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "Masa yang mana resap keluar." + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Setem Masa Relatif" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "Masa mula bagi media didalam projek audio." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Gelung" + +#: src/properties.cpp:384 +#, fuzzy +msgid "When true, the clip can be looped seamlessly." +msgstr "Bila benar, klip boleh digelung tanpa berkelim." + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Bilangan Bit" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "Bilangan bit" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Kunci" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"Kunci audio muzik. Salah satu dari: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Mod Regang" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"Mod regang audio. Salah satu: Panjang tetap, Skala-Masa, Sampel Semula, " +"Sambat Beat, Hibrid." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Parameter Skala Masa" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "Parameter tambahan untuk mod regang Skala-Masa." + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Parameter Sampel Semula" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Parameter tambahan untuk mod regang Sampel Semula." + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Parameter Sambat Beat" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Parameter tambahan untuk mod regang Sambat Beat." + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Tandatangan Masa" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"Tandatangan masa muzik. Salah satu: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, " +"lain-lain." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Jenis Skala" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" +"Skala muzik yang digunakan dalam muzik. Salah satu: Major, Minor, Kedua-" +"duanya, Tiada. Tiada paling kerap digunakan untuk peralatan yang tiada " +"berkatian dengan skala, seperti dram." + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Nombor Siri Kamera" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Nombor Siri Kamera." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Tarikh DIperoleh." + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Tarikh Diperoleh." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Pengilang Denyar" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Pengilang Denyar." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Model Denyar." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Kata Kunci Terakhir IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Kata Kunci IPTC." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Kata Kunci XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Kata Kunci XMP." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Pengilang Kanta" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Pengilang Kanta." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Model Kanta." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Peratus Penarafan" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Peratus Penarafan." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Maklumat Gambar" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Kata Kunci." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "Versi PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Veris fail PDF (contoh: 1.0, 1.3, dan seterusnya)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Pengeluar" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Nama alat yang cipta dokumen PDF." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Kedudukan Pengarang" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "Tajuk mengikut-baris." + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Kapsyen Penulis" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Penulis/penyunting." + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Kategori. Terhad pada 3-7-bit aksara ASCII." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Bandar." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "Negara/lokasi utama." + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Penghargaan." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" +"Tarikh kandungan intelek dokumen yang dicipta (berbanding tarikh penciptaan " +"persembahan fizikal), diikuti terbitan IIM. Contohnya foto yang diambil " +"semasa Perang Saudara Amerika yang mempunyai tarikh ciptaan semasa epok " +"(1861-1865) berbanding foto yang telah didigitalkan untuk pengarkiban." + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Tajuk Utama." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Arahan Khas." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Sumber." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Negeri/wilayah." + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Kategori tambahan." + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Rujukan transmisi asal." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Tindakan Segera. Julat sah ialah 1-8." + +#: src/properties.cpp:452 +msgid "inches" +msgstr "inci" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "sm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Kecerahan Sendiri" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Bila benar. \"Kecerahan\" dilaras secara automatik." + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Bezza Jelas Sendiri" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Bila benar, \"Beza Jelas\" dilaras secara automatik." + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Dedahan Sendiri" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Bila benar, \"Dedahan\" dilaras secara automatik." + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Bayang Sendiri" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Bila benar, \"Bayang\" dilaras secara automatik." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Rona Biru" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Tetapan \"Rona Biru\". Julat -100 hingga 100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Ketepuan Biru" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Tetapan \"Ketepuan Biru\". Julat -100 hingga +100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Tetapan \"Kecerahan\". Julat 0 hingga +150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Profil Kamera" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Tetapan \"Profil Kamera\"." + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Biru Aberasi Kromatik" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Tetapan \"Aberasi Kromatik, Baiki Pinggir Biru/Kuning\". Julat -100 hingga " +"+100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Merah Aberasi Kromatik" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Tetapan \"Aberasi Kromatik, Baiki Pinggir Merah/Sian\". Julat -100 hingga " +"+100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Pengurangan Hingar Warna" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Tetapan \"Pengurangan Hingar Warna\". Julat -100 hingga +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Tetapan \"Beza Jelas\". Julat -50 hingga +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "Bila \"Telah Dikerat\" adalah benar, bahagian atas segiempat keratan" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "Bila \"Telah Dikerat\" adalah benar, bahagian kiri segiempat keratan" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "Kerat Bawah" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "Bila \"Telah Dikerat\" adalah benar, bahagian bawah segiempat keratan" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Kerat Kanan" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "Bila \"Telah Dikerat\" adalah benar, bahagian kanan segiempat keratan" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Kerat Sudut" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "Bila \"Telah Dikerat\" adalah benar, sudut segiempat keratan" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "Lebar imej terkerat yang dihasilkan dalam unit CropUnit." + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "Tinggi imej terkerat yang dihasilkan dalam unit CropUnit." + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Unit Kerat" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "Unit untuk CropWidth dan CropHeight. 0=piksel, 1=inci, 2=sm" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Tetapan \"Dedahan\". Julat -4.0 hingga +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "RonaHijau" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Tetapan \"Rona Hijau\". Julat -100 hingga +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Ketepuan Hijau" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Tetapan \"Ketepuan Hijau\". Julat -100 hingga +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Telah Dikerat" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "Bila benar, imej telah dikerat berbentuk segiempat." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Mempunyai Tetapan" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "Bila benar, tetapan raw kamera bukan-lalai." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "Pelicinan Luminans" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Tetapan \"Pelicinan Luminans\". Julat 0 hingga +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Nama Fail Raw" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Nama fail bagi fail raw (bukan laluan lengkap)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Rona Merah" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Tetapan \"Rona Merah\". Julat -100 hingga +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Ketepuan Merah" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Tetapan \"Ketepuan Merah\". Julat -100 hingga +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Tetapan \"Ketepuan\". Julat -100 hingga +100." + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Bayang" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Tetapan \"Bayang\". Julat 0 hingga +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Seri Warna Bayang" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Tetapan \"Seri Warna Bayang\". Julat -100 hingga +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Tetapan \"Kejelasan\". Julat 0 hingga +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Tetapan \"Suhu\". Julat 2000 hingga 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Seri Warna" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Tetapan \"Seri Warna\". Julat -150 hingga +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Lengkuk Tona" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "Tatasusunan titik (Integer, Integer) mentakrifkan \"Lengkuk Tona\"." + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Nama Lengkuk Tona" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"Nama Lengkuk Tona yang diterangkan oleh LengkukTona. Salah satu: Linear, " +"Beza Jelas Sederhana, Beza Jelas Kuat, Suai atau nama praset ditakrif-" +"pengguna." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Versi bagi pemalam Raw Kamera." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Jumlah Vignette" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Tetapan \"Jumlah Vignet\". Julat -100 hingga +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Titik Tengah Vignette" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Tetapan \"Takat Tengah Vignet\". Julat 0 hingga +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" +"Tetapan \"Imbangan Putih\". Salah satu: Mengikut Syot, Auto, Cahaya Siang, " +"Mendung, Bayang, Tungsten, Pendaflour, Denyar, Suai" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "TIFF tag 256, 0x100. Lebar imej dalam piksel." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Panjang Imej" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "TIFF tag 257, 0x101. Tinggi imej dalam piksel." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bita Per Sampel" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "TIFF tag 258, 0x102. Bilangan bit per komponen dalam setiap saluran." + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Pemampatan" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "TIFF tag 259, 0x103. Skema pemampatan: 1 = tidak dimampat; 6 = JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Interpretasi Fotometrik" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "TIFF tag 262, 0x106. Komposisi Piksel: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" +"Tag TIFF 274, 0x112. Orientasi:1 = 0 baris pada atas, 0 lajur pada kiri 2 = " +"0 baris pada atas, 0 baris pada kiri 3 = 0 baris pada bawah, 0 lajur pada " +"kanan 4 = 0 baris pada bawah, 0 lajur pada kiri 5 = 0 baris pada kiri, 0 " +"lajur pada atas 6 = 0 baris pada kanan, 0 lajur pada atas 7 = 0 baris pada " +"kanan, 0 lajur pada bawah 8 = 0 baris pada kiri, 0 lajur pada bawah" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Sampel Per Piksel" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "TIFF tag 277, 0x115. Bilangan komponen per piksel." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Konfigurasi Satah" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "TIFF tag 284, 0x11C. Bentangan data:1 = berketul; 2 = bersatah." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "Sub Persampelan YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" +"TIFF tag 530, 0x212. Nisbah persampelan bagi kompinen krominans: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "Kedudukan YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" +"TIFF tag 531, 0x213. Kedudukan krominans lwn. komponen luminans: 1 = " +"ditengahkan; 2 = co-sited." + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Resolusi X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "TIFF tag 282, 0x11A. Resolusi melintang dalam piksel per unit." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Resolusi Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "TIFF tag 283, 0x11B. Resolusi menegak dalam piksel per unit." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Unit Resolusi" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"TIFF tag 296, 0x128. Unit digunakan untuk XResolution dan YResolution. Nilai " +"ialah salah satu dari: 2 = inci; 3 = sentimeter." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Fungsi Pemindahan" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" +"TIFF tag 301, 0x12D. Fungsi pemindahan bagi imej diterangkan dalam gaya " +"tabular style dengan masukan 3 * 256." + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Titik Putih" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "Tag TIFF 318, 0x13E. Kekromatan takat putih." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Kekromatan Utama" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "Tag TIFF 319, 0x13F. Kekromatan tiga warna utama." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "Tag TIFF 529, Pekali Matriks 0x211. untuk penjelmaan RGB ke YCbCr." + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Rujukan Hitam Putih" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "TIFF tag 532, 0x214. Rujukan nilai titik hitam dan putih." + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Tarikh dan Masa" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" +"Tag TIFF 306, 0x132 (utama) dan Tag EXIF 37520, 0x9290 (subsaat). Tarikh dan " +"masa penciptaan imej (tiada waktu zon dalam EXIF), disimpan dalam format ISO " +"8601, bukan format EXIF yang asal. Sifat ini termasuklah nilai untuk atribut " +"SubSecTime EXIF. PERHATIAN: Sifat ini disimpan dalam XMP sebagai xmp:" +"ModifyDate." + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Keterangan Imej" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"Tag TIFF 270, 0x10E. Keterangan imej. Perhatian: Sifat ini disimpan dalam " +"XMP sebagai dc:description." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Buatan" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "Tag TIFF 271, 0x10F. Pengilang peralatan rakaman." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "Tag TIFF 272, 0x110. Nama model atau nombor peralatan." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"Tag TIFF 305, 0x131. Perisian atau perisian tegar yang diguna untuk jana " +"imej. Perhatian: Sifat ini disimpan dalam XMP sebagai xmp:CreatorTool. " + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"Tag TIFF 315, 0x13B. Pemilik kamera, jurufoto atau pencipta imej. Perhatian: " +"Sifat ini disimpan dalam XMP sebagai item pertama dalam tatasusunan dc:" +"creator." + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"Tag TIFF 33432, 0x8298. Maklumat Hakcipta. Perhatian: Sifat ini disimpan " +"dalam XMP sebagai dc:rights." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Versi Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "EXIF tag 36864, 0x9000. Nombor versi EXIF." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Versi Flashpix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "EXIF tag 40960, 0xA000. Versi bagi FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "EXIF tag 40961, 0xA001. Maklumat ruang warna" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Konfigurasi Komponen" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"Tag EXIF 37121, 0x9101. Konfigurasi bagi komponen dalam data: 4 5 6 0 (jika " +"data termampat RGB), 1 2 3 0 (kes lain)." + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Bit Termampat Per Piksel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Tag EXIF 37122, 0x9102. Mod pemampatan yang diguna untuk imej termampat yang " +"dinyatakan dalam unit bit per piksel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Dimensi Piksel X" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "EXIF tag 40962, 0xA002. Lebar imej sah, dalam piksel." + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "DImensi Piksel Y" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "EXIF tag 40963, 0xA003. Tinggi imej sah, dalam piksel." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Ulasan Pengguna" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "EXIF tag 37510, 0x9286. Ulasan dari pengguna." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Fail Bunyi Berkaitan" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"EXIF tag 40964, 0xA004. An \"8.3\" nama fail bagi fail bunyi berkaitan." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Tarikh dan Masa Asal" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"Tag EXIF 36867, 0x9003 (utama) dan 37521, 0x9291 (subsaat). Tarikh dan masa " +"bila imej asal dijana, dalam format ISO 8601. Termasuklah data " +"SubSecTimeOriginal EXIF." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Tarikh dan Masa Terdigit" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"Tag EXIF 36868, 0x9004 (utama) dan 37522, 0x9292 (subsaat). Tarikh dan masa " +"bila imej disimpan sebagai data digital, boleh jadi sama seperti " +"DateTimeOriginal jika yang asal disimpan dalam bentuk digital. Disimpan " +"dalam format ISO 8601. Termasuklah data SubSecTimeDigitized EXIF." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "EXIF tag 33434, 0x829A. Masa dedahan dalam saat." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Nombor F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "EXIF tag 33437, 0x829D. Nombor F." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "Tag EXIF 34850, 0x8822. Kelas program yang diguna untuk dedahan." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Kepekaan Spektral" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "Tag EXIF 34852, 0x8824. Kepekaan spektral bagi setiap saluran." + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "PenarafanKelajuanISO" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"Tag EXIF 34855, 0x8827. Kelajuan ISO dan Latitud ISO bagi peranti input " +"sepertimana yang dinyatakan dalam ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"Tag EXIF 34856, 0x8828. Fungsi Penukaran Opto-Elektorik sepertimana yang " +"dinyatakan dalam ISO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"Tag EXIF 37377, 0x9201. Kelajuan pengatup, unit alah APEX. Rujuk Aneks C " +"bagi spesifikasi EXIF." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "EXIF tag 37378, 0x9202. Bukaan kanta, unit ialah APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Nilai Kecerahan" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "EXIF tag 37379, 0x9203. Kecerahan, unit ialah APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "EXIF tag 37380, 0x9204. Bias dedahan, unit ialah APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Nilai Bukaan Maksimum" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "Tag EXIF 37381, 0x9205. Nombor F terkecil kanta, dalam APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "EXIF tag 37382, 0x9206. Jarak dari subjek, dalam meter." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "EXIF tag 37383, 0x9207. Mod Pemeteran." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "EXIF tag 37384, 0x9208. SUmber cahaya." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "EXIF tag 37385, 0x9209. Data sumber (denyar) cahaya Strobe." + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "EXIF tag 37386, 0x920A. Jarak fokus kanta, dalam millimeter." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Kawasan Subjek" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Tag EXIF 37396, 0x9214. Lokasi dan kawasan subjek utama dalam keseluruhan " +"adegan." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Tenaga Denyar" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "EXIF tag 41483, 0xA20B. Tenaga Strobe semasa menangkap imej." + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Sambutan Frekuensi Spatial" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"Tag EXIF 41484, 0xA20C. Jadual frekuensi spatial peranti dan nilai SFR " +"sebagaimana yang dinyatakan dalam ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Resolusi Satah Fokus X" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"Tag EXIF 41486, 0xA20E. Resolusi fokus mengufuk, diukur dalam piksel per " +"unit." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Resolusi Satah Fokus Y" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"Tag EXIF 41487, 0xA20F. Resolusi fokus menegak, diukur dalam piksel per unit." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Unit Resolusi Satah Fokus" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" +"Tag EXIF 41488, 0xA210. Unit digunakan untukr FocalPlaneXResolution dan " +"FocalPlaneYResolution." + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Lokasi Subjek" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" +"Tag EXIF 41492, 0xA214. Lokasi subjek utama adegan. Nilai pertama ialah " +"piksel mengufuk dan nilai kedua adalah piksel menegak yang mana subjek utama " +"muncul." + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Indeks Dedahan" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "Tag EXIF 41493, 0xA215. Indeks dedahan peranti input." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Kaedah Penderiaan" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "Tag EXIF 41495, 0xA217. Jenis penderia imej pada peranti input." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "EXIF tag 41728, 0xA300.Menyatakan sumber imej." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Jenis Adegan" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "EXIF tag 41729, 0xA301. Menyatakan jenis adegan." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "Corak CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" +"Tag EXIF 41730, 0xA302. Corak geometrik tatasusunan penapis bagi deria imej." + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Terterap Suai" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"Tag EXIF 41985, 0xA401. Menunjukkan kegunaan pemprosesan khas pada data imej." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"Tag EXIF 41986, 0xA402. Menunjukkan set mod dedahan bila imej ditangkap." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Tag EXIF 41987, 0xA403. Menunjukkan set mod imbangan putih bila imej " +"ditangkap." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Nisbah Zum Digital" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"Tag EXIF 41988, 0xA404. Menunjukkan nisbah zum digital bila imej ditangkap." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Jarak Fokus Dalam Filem 35mm" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Tag EXIF 41989, 0xA405. Menunjukkan panjang fokus yang menyamai kamera filem " +"35mm, dalam mm. Nilai 0 bermaksud panjang fokus tidak diketahui. Perhatian " +"tag ini berbeza dengan tag FocalLength." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Jenis Tangkapan Adegan" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "EXIF tag 41990, 0xA406. Menyatakan jenis adegan yang ditangkap." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Kawalan Gandaan" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"Tag EXIF 41991, 0xA407. Menunjukkan keseluruhan darjah pelarasan gandaan " +"imej." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Tag EXIF 41992, 0xA408. Menunjukkan arah pemprosesan beza jelas yang " +"dilaksana oleh kamera." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Tag EXIF 41993, 0xA409. Menunjukkan aras pemprosesan ketepuan yang dilaksana " +"oleh kamera." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Tag EXIF 41994, 0xA40A. Menunjukkan aras pemprosesan kejelasan yang " +"dilaksana oleh kamera." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Keterangan Tetapan Peranti" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Tag EXIF 41995, 0xA40B. Menunjukkan maklumat pada keadaan pengambilan-gambar " +"bagi model kamera tertentu." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Julat Jarak Subjek" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "EXIF tag 41996, 0xA40C. Menyatakan jarak subjek." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "ID Unik Imej" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Tag EXIF 42016, 0xA420. Merupakan pengenalpasti yang diumpuk secara unik " +"pada setiap imej. Ia dirakam sebagai rentetan ASCII aksara 32, menyamai " +"dengan catatan heksadesimal dan panjang tetap 128-bit fixed." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "ID Versi GPS" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" +"Tag GPS 0, 0x00. Merupakan pengekodan desimal bagi setiap empat bait EXIF " +"dengan pemisah tanda titik bertindih. Nilai semasa ialah \"2.0.0.0\"." + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Latitud GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" +"Tag GPS 2, 0x02 (kedudukan) dan 1, 0x01 (Utara/Selatan). Menunjukkan latitud." + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Longitud GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" +"Tag GPS 4, 0x04 (kedudukan) dan 3, 0x03 (Timur/Barat). Menunjukkan longitud." + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "Rujukan Altitud GPS" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" +"Tag GPS 5, 0x05. Menunjukkan sama ada altitud berada diatas atau dibawah " +"aras laut." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "Altitud GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "Tag GPS 6, 0x06. Menunjukkan altitud dalam meter." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "Setem Masa GPS" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" +"Tag GPS 29 (tarikh), 0x1D, dan, dan tag GPS 7 (masa), 0x07. Setem masa data " +"GPS, dalam Masa Universal Selaras. Perhatian: Tag GPSDateStamp adalah baru " +"didalam EXIF 2.2. Setem masa GPS dalam EXIF 2.1 tidak sertakan tarikh. Jika " +"tidak hadir, komponen tarikh untuk XMP boleh diambil dari exif:" +"DateTimeOriginal, atau jika ia ketiadaan dari exif:DateTimeDigitized. Jika " +"tiada tarikh tersedia, jangan tulis exif:GPSTimeStamp ke XMP." + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Satelit GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "GPS tag 8, 0x08. Maklumat satelit, format tidak dinyatakan." + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Status GPS" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "GPS tag 9, 0x09. Status bagi penerima GPS pada masa penciptaan imej." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "Mod Ukuran GPS" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "GPS tag 10, 0x0A. mod pengukuran GPS, Jenis teks." + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "DOP GPS" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "GPS tag 11, 0x0B. Darjah ketepatan bagi data GPS." + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "Rujukan Kelajuan GPS" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "GPS tag 12, 0x0C. Unit digunakan untuk pengukuran kelajuan." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "Kelajuan GPS" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "GPS tag 13, 0x0D. Kelajuan bagi pergerakan penerima GPS." + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "Rujukan Trek GPS" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "GPS tag 14, 0x0E. Rujukan bagi arah pergerakan." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "Trek GPS" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"GPS tag 15, 0x0F. Arah pergerakan GPS, julat nilai dari 0 hingga 359.99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "Rujukan Arah Imej GPS" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "GPS tag 16, 0x10. Rujukan bagi arah imej." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "Arah Imej GPS" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"GPS tag 17, 0x11. Arah bagi imej bila ditangkap, julat nilai dari 0 hingga " +"359.99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "Datum Peta GPS" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "GPS tag 18, 0x12. Data tinjauan geodetik." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "Latitud Destinasi GPS" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" +"Tag GPS 20, 0x14 (kedudukan) dan 19, 0x13 (Utara/Selatan). Menunjukkan " +"latitud destinasi." + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "Longitud Destinasi GPS" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" +"Tag GPS 22, 0x16 (kedudukan) dan 21, 0x15 (Timur/Barat). Menunjukkan " +"longitud destinasi." + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "Rujukan Bering Destinasi GPS" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "Tag GPS 23, 0x17. Rujukan untuk arah pergerakan." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "Bering Destinasi GPS" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "Tag GPS 24, 0x18. Bering destinasi, nilai dari 0 hingga 359.99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "Rujukan Jarak Destinasi GPS" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "Tag GPS 25, 0x19. Unit yang digunakan untuk pengukuran kelajuan." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "Jarak Destinaso GPS" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "Tag GPS 26, 0x1A. Jarak ke destinasi." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "Kaedah Pemprosesan GPS" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" +"Tag GPS 27, 0x1B. Rentetan aksara merakam nama kaedah yang digunakan untuk " +"mencari lokasi." + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "Maklumat Kawasan GPS" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "Tag GPS 28, 0x1C. Rentetan aksara merakam nama kawasan GPS." + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "Perbezaan GPS" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"Tag GPS 30, 0x1E. Menunjukkan sama ada pembetulan perbezaan dilaksana pada " +"penerima GPS." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"Keterangan kanta yang digunakan untuk mengambil foto. Contohnya, \"70-200 mm " +"f/2.8-4.0\"." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"Nombor siri kamera atau badan kamera yang digunakan untuk mengambil foto." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Maklumat Hubungan Pencipta" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" +"Maklumat hubungan pencipta sediakan semua maklumat yang diperlukan untuk " +"berhubung dengan pencipta objek berita ini dan sediakan satu set sub-sifat " +"bagi pengalamatan yang betul." + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Maklumat Hubungan-Alamat" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"Maklumat hubungan bahagian alamat. Melibatkan nama syarikat dan semua " +"maklumat pilihan yang diperlukan untuk mencari bangunan atau poskod yang " +"mana mel akan dihantar." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Maklumat Hubungan-Bandar" + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Maklumat Hubungan Pencipta" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Maklumat Hubungan-Negeri/Daerah" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Maklumat Hubungan-Negeri/Daerah" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Maklumat Hubungan-Poskod" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Maklumat Hubungan-Negara" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Maklumat Hubungan Pencipta" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Maklumat hHubungan-Emel" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "Maklumat hubungan bahagian alamat e-mel." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Maklumat Hubungan-Telefon" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Maklumat Hubungan Pencipta" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Maklumat Hubungan-URL Sesawang" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Maklumat Hubungan Pencipta" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Genre Intelek" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" +"Terangkan karakter tabii, intelek atau jurnalistik bagi sesebuah objek " +"berita, bukan khusus pada kandungannya." + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "Adegan IPTC" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" +"Terangkan adegan kandungan foto. Nyatakan satu atau lebih terma dari PTC " +"\"Scene-NewsCodes\". Setiap adegan diwakilo sebagai rentetan 6 digit dalam " +"senarai tidak bertertib." + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "Kod Subjek IPTC" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" +"Nyatakan satu atau lebih Subjek dari taksonomi IPTC \"Subject-NewsCodes\" " +"untuk ketegorikan kandungan. Setiap subjek diwakili sebagai rentetan 8 digit " +"dalam senarai tidak bertertib." + +#: src/properties.cpp:682 +#, fuzzy +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" +"Nama loksi kandungan yang difokuskan -- sama ada lokasi dipaparkan dalam " +"media visual atau rujukan oleh media teks atau audio. Nama lokasi ini patut " +"nama sublokasi bandar atau nama lokasi terkenal atau monumen diluar bandar. " +"Mengikut hieraki, sublokasi bandar pada unsur ini adalah berada diaras " +"keempat hieraki bergeografi." + +#: src/properties.cpp:687 +#, fuzzy +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" +"Kod kandungan negara memfokuskan pada -- sama ada negara dipaparkan dalam " +"media visual atau rujukan dalam media teks atau audio. Unsur ini adalah aras " +"tertinggi/pertama dalam hieraki bergeografi. Kod patut diambil dari dua atau " +"tiga kod huruf ISO 3166. Nama penuh negara patut pergi ke unsur \"Negara\"." + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "Maklumat model tambahan" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" +"Maklumat mengenai keetnikan dan lain-lain fakta model dan imej keluaran-" +"model." + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "Kod bagi Organisasi terfitur" + +#: src/properties.cpp:697 +#, fuzzy +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" +"Kod dari tatabahasa terkawal untuk mengenalpasti organisasi atua syarikat " +"yang difitur dalam imej." + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "Terma Tatabahasa Terkawal" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" +"Terma untuk terangkan kandungan imej oleh nilai dari Tatabahasa Terkawal." + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "Usia Model" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "Usia model manusia bila imej ini ditangkap dalam imej keluaran model." + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "Nama bagi Organisas terfitur" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "Nama organisasi atau syarikat yang difitur dalam imej." + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "Individu yang dipaparkan" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "Nama individu yang dipaparkan dalam imej" + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "Pengenalpasti Imej Digital" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" +"Pengenalpasti unik secara sejagat untuk imej digital ini. Ia dicipta dan " +"dilaksana oleh pencipta imej digital pada masa penciptaannya. Nilai ini " +"tidak akan berubah selepas itu." + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "Jenis fizikal bagi foto asal" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "Jenis bagi fail digital sumber." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "Peristiwa" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "Nama atau keterangan bagi peristiwa tertentu bila foto diambil." + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "Tinggi maksimum yang tersedia" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"Tinggi maksimum yang tersedia dalam piksel untuk foto asal yang mana foto " +"ini telah diterbitkan secara pengurangan saiz." + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "Lebar maksimum yang tersedia" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"Lebar maksimum yang tersedia dalam piksel untuk foto asal yang mana foto ini " +"telah diterbitkan secara pengurangan saiz." + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "Masukan Registry" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" +"Kedua-dua Id Item Registry dan Id Organisasi Registry untuk rekodkan mana-" +"mana pendaftara imej digital dengan registry." + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "Pengenalpasti Item-Masukan Registry" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" +"Pengenalpasti unik yang dicipta oleh registry dan dilaksana oleh pencipta " +"imej digital. Nilai tidak akan berubah selepas ini. Pengenalpasti ini " +"dipautkan pada Pengenalpasti Organisasi Registry." + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "Pengenalpasti OOrganisasi-Masukan Registry" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" +"Merupakan pengenalpasti untuk registry yang keluarkan Id Imej Registry " +"berkaitan." + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "Medan IPTC Terakhir Disunting" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" +"Tarikh dan masa secara pilihan bila mana-mana medan data meta foto IPTC " +"disunting kali terakhir." + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "Lokasi dipaparkan" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "Lokasi yang dipaparkan dalam imej." + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "Lokasi Dicipta" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "Lokasi foto ditangkap." + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Lokasi-Bandar" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Nama bandar lokasi tersebut." + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "Lokasi-Kod-ISO Negara" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "Kod ISO bagi negara lokasi tersebut." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Lokasi-Nama Negara" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "Nama negara bagi lokasi tersebut." + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "Lokasi-Daerah/Negeri" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" +"Nama bagi subwilayah negara - daerah atau negeri - bagi lokasi tersebut." + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "Lokasi-Sublokasi" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" +"Nama sublokasi. Nama sublokas ini sama ada nama sublokasi bandar atau nama " +"lokasi terkenal atau monumen diluar bandar." + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "Lokasi-Rantau Dunia" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "Nama rantau dunia lokasi tersebut." + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "Kerja seni atau objek dalam imej" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "Merupakan set data meta mengenai kerja seni atau objek dalam imej." + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "Kerja seni atau objek-Makluman hakcipta" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" +"Mengandungi makluman hakcipta berkenaan untuk menuntut hak intelek untuk " +"kerja seni atau objek dalam imej dan patut kenalpasti pemilik hakcipta kerja " +"ini yang berkenaan dengan hak harta intelek." + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "Kerja seni atau objek-Pencipta" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" +"Mengandungi nama artis yang mencipta kerja seni atau objek dalam imej. Jika " +"artis tidak dikenali, nama syarikat atau organisasi juga memadai." + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "Kerja seni atau objek-Tarikh Dicipta" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" +"Reka tarikh dan masa secara pilihan pada kerja seni atau objek dalam imej " +"yang dicipta. Ia berkaitan dengan kerja seni atau objek dengan hak harta " +"intelek yang berkaitan." + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "Kerja seni atau objek-Sumber" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" +"Organisasi atau badan yang memegang dan mendaftar kerja seni atau objek " +"dalam imej untuk tujuan inventori." + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "Kerja seni atau objek-Nombor inventori sumber" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" +"Nombor inventori yang diisu oleh organisasi atau badan yang memegang dan " +"mendaftar kerja seni atau objek dalam imej." + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "Kerja seni atau objek-Tajuk" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "Rujukan untuk kerja seni atau objek dalam imej." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "Imbas dari filem" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "Imbas dari transparensi (termasuk slaid)" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "Imbas dari cetakan" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "RAW Kamera" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "TIFF Kamera" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "JPEG Kamera" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "Versi PLUS" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "Nombor versi piawaian PLUS pada masa transaksi." + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Lesen" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "Kumpulan yang mana lesen diberi oleh Pelesen dibawah transaksi lesen." + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "ID Lesen" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "ID-PLUS tambahan mengenalpasti setiap Lesen." + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "Nama Lesen" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "Nama bagi setiap Lesen." + +#: src/properties.cpp:746 +msgid "End User" +msgstr "Pengguna Akhir" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "Kumpulan yang menggunakan imej dibawah terma lesen." + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "ID Pengguna Akhir" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "ID-PLUS pilihan yang mengenalpsti setiap Pengguna Akhir." + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "Nama Pengguna Akhir" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "Nama bagi setiap Pengguna Akhir." + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "Pemberi Lesen" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "Kumpulan memberi lesen kepada Pemegang Lesen." + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "ID Pemberi Lesen" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "ID-PLUS pilihan mengenalpasti setiap Pemberi Lesen." + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "Nama Pemberi Lesen" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "Nama bagi setiap Pemberi Lesen." + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "Alamat Pemberi Lesen" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "Alamat jalan Pemberi Lesen." + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "Perincian Alamat Pemberi Lesen" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "Perincian tambahan alamat mel Pemberi Lesen." + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "Bandar Pemberi Lesen" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "Nama Bandar Pemberi Lesen." + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "Negeri atau Wilayah Pemberi Lesen." + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "Nama Negeri atau Wilayah Pemberi Lesen." + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "Poskod Pemberi Lesen" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "Poskod atau Kod Zip Pemberi Lesen." + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "Negara Pemberi Lesen" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "Nama Negara Pemberi Lesen." + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "Telefon Pemberi Lesen Jenis 1" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "Telefon Pemberi Lesen Jenis 1." + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "Telefon Pemberi Lesen 1" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "Nombor Telefon Pemberi Lesen 1." + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "Telefon Pemberi Lesen Jenis 2" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "Telefon Pemberi Lesen Jenis 2." + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "Telefon Pemberi Lesen 2" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "Nombor Telefon Pemberi Lesen 2." + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "E-mel Pemberi Lesen" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "Alamat E-mel Pemberi Lesen." + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "URL Pemberi Lesen" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "Alamat sesawang Pemberi Lesen." + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "Nota Pemberi Lesen" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" +"Maklumat tambahan yang digunakan untuk kenalpasti dan menghubungi Pemberi " +"Lesen." + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "Kod Ringkasan Media PLUS" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" +"Rentetan kod alfanumerik PLUS-terpiawai yang meringkaskan penggunaan media " +"yang disertakan dalam lesen." + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "Tarikh Mula Lesen" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "Tarikh yang mana lesen digunapakai." + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "Tarikh Akhir Lesen" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "Tarikh yang mana lesen luput." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "Kekangan Media" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" +"Kekangan menghadkan skop Penggunaan Media PLUS termasuklah dalam lesen yang " +"mana media bernama atau media yang belum dinyatakan ditakrif dalam Matriks " +"Media PLUS." + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "Kekangan Kawasan" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" +"Kekangan menghadkan skop distribusi ke bandar, negeri, daerah atau kawasan " +"lain yang dinyatakan untuk disertakan atau diasingkan dari Wilayah PLUS yang " +"dinyatakan dalam Penggunaan Media sepertimana ditakrif dalam lesen." + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "Kekangan Produk atau Perkhidmatan" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" +"Kekangan menghadkan penggunaan imej untuk promosi yang berkaitan dengan " +"produk atau perkhidmatan yang dinamakan." + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "Kekangan Fail Imej" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "Kekangan bila menukar nama fail, data meta atau jenis fail imej." + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "Kekangan Pengubahan Imej" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" +"Kekangan pada pengubahan imej dengan cara mengerat, mengalih, merapi, " +"mewarna, menyahwarna atau menggabung." + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "Kekangan Duplikasikan Imej" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "Kekangan pada penciptaan pendua imej." + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "Status Keluaran Model" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" +"Ringkaskan ketersediaan dan skop penggunaan keizinan keluaran model bagi " +"persamaan individu yang kelihatan dalam foto." + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "ID Keluaran Model" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "Pengenalpasti pilihan yang berkaitan dengan setiap Keluaran Model." + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "Pendedahan Usia Model Cilik" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "Usia moodel termuda yang kelihatan dalam imej, pada masa imej diambil." + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "Status Keluaran Harta" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" +"Ringkaskan ketersediaan dan skop penggunaan keizinan keluaran harta bagi " +"harta yang kelihatan dalam foto." + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "ID Keluaran Harta" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "Pengenalpasti pilihan yang berkaitan dengan setiap Keluaran Harta." + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "Kekangan Lain" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "Kekangan tambahan lesen." + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "Barisan Penghargaan Diperlukan." + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "Keperluan atribusi, jika ada." + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "Amaran Kandungan Dewasa" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" +"Amaran yang menunjukkan kehadiran kandungan yang tidak sesuai untuk kanak-" +"kanak." + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "Keperluan Lain Lesen" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "Keperluan tambahan lesen." + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Teks Terma dan Syarat" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Terma dan Syarat yang dilaksana terhadap lesen." + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "URL Terma dan Syarat" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "URL untuk Terma dan Syarat yang dilaksana kepada lesen." + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Syarat Lain Lesen" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "Syarat tambahan lesen." + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "Kenalpasti jenis imej yang diserah." + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "ID Imej Pemberi Lesen" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "Pengenalpasti pilihan yang diumpuk oleh Pemberi Lesen ke imej." + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "Nama Fail Imej Sebagaimana Diserah" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" +"Nama bagi fail imej yang diserah kepada pemegang lesen untuk diguna mengikut " +"lesen." + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "Format Fail Imej Sebagaimana Diserah" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" +"Format fail bagi fail imej yang diserah kepada Pemegang lesen untuk diguna " +"mengikut lesen." + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "Saiz Fail Imej Sepertimana Yang Diserah" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "Saiz fail imej yang diserah ke Pemegang Lesen." + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "Status Hakcipta" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "Status hakcipta imej." + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "Nombor Pendaftaran Hakcipta" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" +"Nombot Pendaftaran Hakcipta, jika ada, dilaksana kepada imej yang dilesenkan." + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "Tarkih Penerbitan Pertama" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "Tarikh yang mana imej kali pertama diterbitkan." + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "Pemilik Hakcipta" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "Pemilik hakcipta dalam imej yang dilesenkan." + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "ID Pemilik Hakcipta" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "ID-PLUS pilihan yang mengenalpasti setiap Pemilik Hakcipta." + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "Nama Pemilik Hakcipta" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "Nama bagi Pemilik Hakcipta." + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "ID Imej Pemilik Hakcipta" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "Pengenalpasti pilihan yang diumpuk oleh Pemilik Hakcipta kepada imej." + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Pencipta Imej" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "Pencipta imej." + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "ID Pencipta Imej" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "ID-PLUS pilihan yang mengenalpasti setiap Pencipta Imej." + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "Nama Pencipta Imej" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "Nama bagi Pencipta Imej." + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "ID Imej Pencipta Imej" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "Pengenalpasti pilihan yang diumpuk oleh Pencipta Imej terhadap imej." + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "ID Pembekal Imej" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "ID-PLUS pilihan yang mengenalpasti Pembekal Imej." + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "Nama Pembekal Imej" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "Nama bagi Pembekal Imej." + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "ID Imej Pembekal Imej" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "Pengenalpasti pilihan yang diumpuk oleh Pembekal Imej terhadap imej." + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "ID Imej Pemegang Lesen" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "Pengenalpasti pilihan yang diumpuk oleh Pemegang Lesen terhadap imej." + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "Nota Imej Pemegang Lesen" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "Nota ditambah oleh Pemegang Lesen." + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "Maklumat Imej Lain" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "Maklumat tambahan imej." + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "ID Lesen" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "ID-PLUS pilihan yang diumpuk oleh Pemberi Lesen terhadap Lesen." + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "ID Transaksi Pemberi Lesen" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" +"Pengenalpasti yang diumpuk oleh Pemberi Lesen untuk rujukan dan kegunaan " +"dalaman Pemberi Lesen." + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "ID Transaksi Pemegang Lesen" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" +"Pengenalpasti yang diumpuk oleh Pemegang Lesen untuk rujukan dan kegunaan " +"dalaman Pemegang Lesen." + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "Rujukan Projek Pemegang Lesen" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "Nama rujukan atau keterangan projek yang diumpuk oleh Pemegang Lesen." + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "Tarikh Transaksi Lesen" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "Tarikh Transaksi Lesen" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Guna Semula" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" +"Menunjukkan sama ada lesen adalah lesen ulangan atau lesen awalan. Guna " +"semula perlukan lesen yang disimpan dakam fail yang diserah sebelum ini " +"kepada pengguna yang mana akan dikemaskinikan." + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "Dokumen Lesen Lain" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "Maklumat rujukan untuk dokumen tambahan yang berkaitan dengan lesen." + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "Maklumat Lesen Lain" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "Maklumat lesen tambahan." + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "Medan pilihan untuk diguna mengikut budi bicara Pemberi Lesen." + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "Suai 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "Suai 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "Suai 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "Medan pilihan yang diguna mengikut budi bicara Pemegang Lesen." + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "Suai 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "Suai 8" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "Suai 9" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "Suai 10" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "Amaran Kandungan Dewasa Diperlukan" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "Tidak Diperlukan" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "Dilindungi" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "Domain Awam" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "Penghargaan Bersebelahan Imej" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "Penghargaan dalam Kawasan Penghargaan" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "Penghargaan dalam Imej" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "Tidak Diperlukan" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "Tiada Pewarnaan" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "Tiada Pengeratan" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "Tiada Nyah-Pewarnaan" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "Tiada Pengalihan" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "Tiada Penggabungan" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "Tiada Perapian" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "Penduaan Sahaja sebagaimana Perlu Dibawah Lesen" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "Tiada Kekangan Duplikasi" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "Tiada Duplikasi" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "Kekal Nama Fail" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "Kekal Jenis Fail" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "Kekal ID dalam Nama Fail" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "Kekal Data Meta" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "Peta Bit Windows (BMP)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Negatif Digital (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "PostSkrip Terkurung (EPS)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "Format Pertukaran Grafik (GIF)" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Format Pertukaran JPEG (JPG, JIF, JFIF)" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "Macintosh Picture (PICT)" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "Grafik Rangkaian Mudah Alih (PNG)" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "Dokumen Photoshop (PSD)" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "Format Imej RAW Proprietari" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "Format Fail Imej Bertag (TIFF)" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "Foto Media Windows (HD Photo)" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "Lebih besar dari 50 MB" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "Sehingga 1 MB" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "Sehingga 10 MB" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "Sehingga 30 MB" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "Sehingga 50 MB" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "Imej Berilustrasi" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "Imej Berkomposit atau Multimedia" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Imej Fotografik" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "Telefon Bimbit" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "FAKS" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "Alat Kelui" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "Tempat Kerja" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "Usia Tidak Diketahui" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "Usia 25 dan Keatas" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "Usia 24" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "Usia 23" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "Usia 22" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "Usia 21" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "Usia 20" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "Usia 19" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "Usia 18" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "Usia 17" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "Usia 16" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "Usia 15" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "Usia 14 dan Kebawah" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "Tidak Dilaksana" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "Keluaran Model Tidak Terhad" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "Keluaran Model Tidak Lengkap atau Terhad" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "Keluaran Harta Tidak Terhad" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "Keluaran Harta Tidak Lengkap atau Terhad" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "Guna Berulang" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "Pengenalpastian Lengkapan" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Status" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "Notasi yang menjadikan imej unik" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Orang" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Set Katalog" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "Penanda perihalan bagi item katalog mengikut kandungan" + +#: src/properties.cpp:978 +msgid "RegionInfo" +msgstr "RegionInfo" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "Root data meta pengetagan-individu Microsoft Photo" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "Kawasan" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "Tag Kawasan/individu terkandungi" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "DateRegionsValid" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "Tarikh kawasan terakhir telah dicipta" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "PersonDisplayName" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "Nama individu (dalam segiempat yang diberi)" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "Segiempat" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "Segiempat yang mengenalpasti individu di dalam foto" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "PersonEmailDigest" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "SHA-1 cincangan mesej tersulit bagi alamat e-mel Windows Live individu" + +#: src/properties.cpp:994 +#, fuzzy +msgid "Person LiveId CID" +msgstr "PersonLiveCID" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "Perwakilang desimal bertandatangan bagi CID Windows Live individu" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "AppliedToDimensions" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "Lebar dan tinggi imej bila menyimpan data kawasan" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "RegionList" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "Senarai struktur Kawasan" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "Kawasan" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "Tujuan jenis kawasan (Face|Pet|Focus|BarCode)" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "Nama/ keterangan pendek kandungan dalam kawasan imej" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" +"Senario penggunaan bagi kawasan fokus yang diberi (EvaluatedUsed|" +"EvaluatedNotUsed|NotEvaluatedNotUsed)" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "FocusUsage" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "BarCodeValue" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "Rentetan nilai Barkod Ternyahkod" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "Sambungan" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "Sebarang sifat XMP aras tertinggi untuk terangkan kandungan kawasan" + +#: src/properties.cpp:1015 +#, fuzzy +msgid "Main structure containing keyword based information" +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Senarai struktur Kawasan" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Kata Kunci" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Senarai struktur Kawasan" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Mod Panorama" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Data Tangkapan" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Perisian Pemprosesan" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Jenis Objek" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "Jarak subjek, diberikan dalam meter." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Tarkih Penerbitan Pertama" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Tarikh Syot" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "Tarikh dan masa bila video asal dijana, dalam format ISO 8601. " + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Mod dedahan" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Lebar Imej Sumber" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Tinggi Imej Sumber" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Model Kamera Unik" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +msgid "Archival Location" +msgstr "Lokasi Arkib" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "Maklumat mengenai Lokasi Arkib" + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "Arranger" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "Maklumat mengenai Arranger." + +#: src/properties.cpp:1057 +msgid "Arranger Keywords" +msgstr "Kata Kunci Arranger" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "Maklumat mengenai Kata Kunci Arranger." + +#: src/properties.cpp:1059 +msgid "Video Aspect Ratio" +msgstr "Nisbah Bidang Video" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "Nisbah Lebar:Tinggi, bantu tentukan bagaimana video dipapar pada skrin" + +#: src/properties.cpp:1060 +msgid "Video Aspect Ratio Type" +msgstr "Jenis Nisbah Bidang Video" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "Jenis Nisbah Bidang, Cth - Saiz Semula Bebas atau Tetap" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "Data Fail Dilampir" + +#: src/properties.cpp:1062 +msgid "Attached File Description" +msgstr "Keterangan Fail Dilampir" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "Jenis MIME Fail Dilampir" + +#: src/properties.cpp:1064 +msgid "Attached File Name" +msgstr "Nama Fail Dilampir" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "UID Fail Dilampir" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "ID Universal Fail Dilampir" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "Rentetan C yang tentukan URL Dasar." + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "Kedalaman Bit" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" +"Integer 16-bit yang menyatakan kedalaman piksel imej termampat. Nilai 1, 2, " +"4, 8, 16, 24, dan 32 menentukan kedalaman imej warna" + +#: src/properties.cpp:1068 +msgid "Brightness setting." +msgstr "Tetapan kecerahan." + +#: src/properties.cpp:1069 +msgid "Camera Byte Order" +msgstr "Tertib Bait Kamera" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "Tertib Bait yang diguna oleh peranti Penangkapan Video." + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "Cinematographer Video" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "Maklumat Cinematographer video" + +#: src/properties.cpp:1071 +msgid "Clean Aperture Width" +msgstr "Kedalaman Bukaan Bersih" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "Lebar bukaan bersih dalam piksel" + +#: src/properties.cpp:1072 +msgid "Clean Aperture Height" +msgstr "Tinggi Bukaan Bersih" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "Tinggi bukaan bersih dalam piksel" + +#: src/properties.cpp:1073 +msgid "Video Codec" +msgstr "Kodeks Video" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" +"Maklumat kodeks video. Maklumat mengenai algoritma pengekodan video. " +"Maklumat Kodeks diperlukan untuk main balik video." + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "Maklumat Nyahkod Kodeks Video" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" +"Mengandungi maklumat Nyahkod Kodeks video, iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1075 +msgid "Video Codec Description" +msgstr "Keterangan Kodeks Video" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "Mengandungi keterangan kodeks." + +#: src/properties.cpp:1076 +msgid "Video Codec Information" +msgstr "Maklumat Kodeks Video" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" +"Mengandungi maklumat kodeks yang diperlukan sebelum menyahkod boleh bermula." + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "URL Muat Turun Kodeks Video" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "URL Muat Turun Kodeks Video." + +#: src/properties.cpp:1078 +msgid "Video Codec Settings" +msgstr "Tetapan Kodeks Video" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "Mengandungi kodeks yang diperlukan sebelum menyahkod boleh bermula." + +#: src/properties.cpp:1083 +msgid "Comment" +msgstr "Ulasan" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "Maklumat mengenai Ulasan." + +#: src/properties.cpp:1084 +msgid "Commissioned" +msgstr "Ditauliah" + +#: src/properties.cpp:1084 +msgid "Commissioned." +msgstr "Ditauliah." + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "Jenama Jenis Fail Serasi QTime" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "Jenama Jenis Fail Serasi QuickTime Lain" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "Maklumat mengenai Penggubah." + +#: src/properties.cpp:1087 +msgid "Composer Keywords" +msgstr "Kata Kunci Penggubah" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "Maklumat mengenai Kata Kunci Penggubah." + +#: src/properties.cpp:1088 +msgid "Compressor" +msgstr "Pemampat" + +#: src/properties.cpp:1088 +msgid "Video Compression Library Used" +msgstr "Pustaka Pemampatan Video yang Digunakan" + +#: src/properties.cpp:1089 +msgid "Video Compressor ID" +msgstr "ID Pemampat Video" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "ID Pemampatan Video bagi Teknologi/Kodeks yang Digunakan" + +#: src/properties.cpp:1090 +msgid "Compressor Version" +msgstr "Versi Pemampat" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "Maklumat mengenai Versi Pemampat." + +#: src/properties.cpp:1091 +msgid "Container Type" +msgstr "Jenis Bekas" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "Bekas Data Meta Utama" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm" +msgstr "Algoritma Pemampatan Kandungan" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "Algoritma Pemampatan Kandungan. Cth: zlib" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "Jenis Pengekodan Kandungan" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "Jenis Pengekodan Kandungan. Cth: Penyulitan atau Pemampatan" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "Algoritma Penyulitan Kandungan" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "Algoritma Penyulitan Kandungan. Cth: Blowfish" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "Algoritma Tandatangan Kandungan" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "Algoritma Tandatangan Kandungan. Cth: RSA" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "Algoritma Cincangan Tanda Kandungan" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "Algoritma Cincangan Tanda Kandungan. Cth. SHA1-160 atau MD5" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "Menunjukkan arah pemprosesan beza jelas yang dilaksana oleh kamera." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "Hakcipta, boleh jadi nama organisasi atau individu." + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "Pereka Kostum" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "Pereka Kostum yang berkaitan dengan video." + +#: src/properties.cpp:1100 +msgid "Name of the country where the video was created." +msgstr "Nama negara dimana video dihasilkan." + +#: src/properties.cpp:1101 +msgid "Creation Date" +msgstr "Tarikh Ciptaan" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" +"Nyatakan tarikh dan waktu bagi penciptaan awal fail. Nilai diberi sebagai " +"nombor sela 100-nanosaat semenjak 1 Januarim 1601, berdasarkan pada Waktu " +"Universal Terkoordinat (Waktu Min Greenwich)." + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "Kerat Piksel Bawah" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "Bilangan Piksel yang dikerat dari bawah." + +#: src/properties.cpp:1104 +msgid "Pixel Crop Left" +msgstr "Kerat Piksel Kiri" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "Bilangan Piksel yang dikerat dari kiri." + +#: src/properties.cpp:1105 +msgid "Pixel Crop Right" +msgstr "Kerat Piksel Kanan" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "Bilangan Piksel yang dikerat dari kanan." + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "Medan yang menunjukkan jika video telah dikerat." + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "Kerat Piksel Atas" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "Bilangan Piksel yang dikerat dari atas." + +#: src/properties.cpp:1108 +msgid "Current Time" +msgstr "Masa Semasa" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "Nilai masa bagi kedudukan masa semasa di dalam cereka." + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "Paket Data" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "Nyatakan bilangan masukan Paket Data yang wujud di dalam Objek Data." + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Tarikh dan masa bila video asal dijana, dalam format ISO 8601. " + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"Tarikh dan masa bila video disimpan sebagai data digital, boleh sama dengan " +"Tarikh Masa Asal jika asalnya disimpan dalam bentuk digital. Disimpan dalam " +"format ISO 8601." + +#: src/properties.cpp:1113 +msgid "Date-Time Original" +msgstr "Tarikh-Masa Asal" + +#: src/properties.cpp:1113 +msgid "Contains the production date" +msgstr "Mengandungi tarikh penghasilan" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "Lalai Trek Video Hidup" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "Lalai Trek Video Hidup, iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1115 +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "Menunjukkan nisbah zum digital bila video ditangkap." + +#: src/properties.cpp:1116 +msgid "Dimensions" +msgstr "Dimensi" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "Maklumat mengenai Dimensi bingkai video." + +#: src/properties.cpp:1117 +msgid "Director" +msgstr "Pengarah" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "Maklumat mengenai Pengarah." + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "Unit Paparan Video" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "Unit paparan video. Cth - cm, piksel, inci" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "Diedar Oleh" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "Diedar Oleh, iaitu nama individu atau organisasi." + +#: src/properties.cpp:1120 +msgid "Doc Type" +msgstr "Jensi Doc" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" +"Jelaskan kandungan fail. Jika fail adalah MATROSKA, nilainya ialah 'matroska'" + +#: src/properties.cpp:1121 +msgid "Doc Type Read Version" +msgstr "Versi Baca Jenis Doc" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" +"Sifat khusus video Matroska, membantu tentukan keserasian fail dengan versi " +"tertentu pemain video" + +#: src/properties.cpp:1122 +msgid "Doc Type Version" +msgstr "Veris Jenis Doc" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" +"Sifat khusus video Matroska, menentukan versi jenis fail, membantu tentukan " +"keserasian" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "Titik Per Inci" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Jangkama fail media. Diukur dalam tempoh milisaat." + +#: src/properties.cpp:1125 +msgid "EBML Read Version" +msgstr "Versi Baca EBML" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "Versi Baca Bahasa Meta Binari Lanjutan" + +#: src/properties.cpp:1126 +msgid "EBML Version" +msgstr "Versi EBML" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "Veris Bahasa Meta Binari Boleh Lanjut" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "Sunting Blok 1 / Bahasa" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "Maklumat mengenai Sunting / Bahasa." + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "Sunting Blok 2 / Bahasa" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "Sunting Blok 3 / Bahasa" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "Sunting Blok 4 / Bahasa" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "Sunting Blok 5 / Bahasa" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "Sunting Blok 6 / Bahasa" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "Sunting Blok 7 / Bahasa" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "Sunting Blok 8 / Bahasa" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "Sunting Blok 9 / Bahasa" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "Disunting Oleh" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "Disunting Oleh, iaitu nama individu atau organisasi." + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "Trek Video Dibenarkan" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "Status Trek Video Track, iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "Dienkod Oleh" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "Dienkod Oleh, iaitu nama individu atau organisasi" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "Lebar Piksel Dienkod" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "Lebar Piksel Dienkod dalam piksel" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "Tinggi Piksel Dienkod" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "Tinggi Piksel Dienkod dalam piksel" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "Pengekod" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "Maklumat mengenai Pengekod." + +#: src/properties.cpp:1142 +msgid "End Timecode" +msgstr "Kod Masa Tamat" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "Jurutera, dalam kebanyakan kes adalah nama individu." + +#: src/properties.cpp:1144 +msgid "Equipment" +msgstr "Peralatan" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "Maklumat mengenai Peralatan yang digunakan untuk merakam Video." + +#: src/properties.cpp:1145 +msgid "Exposure Compensation Information." +msgstr "Maklumat Pemampasan Dedahan." + +#: src/properties.cpp:1146 +msgid "Exposure Program Information." +msgstr "Maklumat Program Dedahan." + +#: src/properties.cpp:1147 +msgid "Exposure time in seconds." +msgstr "Masa dedahan dalam saat." + +#: src/properties.cpp:1148 +msgid "Extended Content Description" +msgstr "Keterangan Kandungan Lanjutan" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description, usually found in ASF type files." +msgstr "Keterangan Kandungan Lanjutan, biasanya di temui dalam fail jenis ASF." + +#: src/properties.cpp:1150 +msgid "File ID" +msgstr "ID Fail" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "ID Fail." + +#: src/properties.cpp:1151 +msgid "File Length" +msgstr "Panjang Fail" + +#: src/properties.cpp:1151 +msgid "File length." +msgstr "Panjang fail." + +#: src/properties.cpp:1152 +msgid "File Name" +msgstr "Nama Fail" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "Nama Fail atau Laluan Fail Mutlak" + +#: src/properties.cpp:1153 +msgid "File Size" +msgstr "Saiz Fail" + +#: src/properties.cpp:1153 +msgid "File Size, in MB" +msgstr "Saiz Fail, dalam MB" + +#: src/properties.cpp:1154 +msgid "File Type" +msgstr "Jenis Fail" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "Sambungan Fail atau Jenis Fail" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "Tetapan Kesan Penapis Dilaksana." + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "Versi Perisian Tegar peranti Kamera/Video." + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "Nombor F, data khusus Kanta Kamera." + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "Panjang fokus kanta, dalam milimeter." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "Mod Fokus Kanta. Contoh - AF untuk Auto Fokus" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "Penunjuk format cereka (dijana-komputer, digital, dan selanjutnya)." + +#: src/properties.cpp:1161 +msgid "Frame Count" +msgstr "Kiraan Bingkai" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "Jumlah bilangan bingkai dalam video" + +#: src/properties.cpp:1162 +msgid "Frame Height" +msgstr "Tinggi Bingkai" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "Tinggi bingkai dalam video" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" +"Kadar yang mana bingkai dipersembah dalam video (Diungkap dalam fps (Bingkai " +"se Saat)" + +#: src/properties.cpp:1165 +msgid "Frame Width" +msgstr "Lebar Bingkai" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "Lebar bingkai dalam video" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "Koordinat GPS" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "Maklumat mengenai Koordinat GPS." + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "Setem tarikh data GPS, " + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "Arah imej bila ditangkap, julat nilai dari 0 hingga 359.99." + +#: src/properties.cpp:1172 +msgid "Reference for image direction." +msgstr "Rujukan arah imej." + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "(Utara/Selatan). Menunjukkan latitud." + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "(Timur/Barat). Menunjukkan longitud." + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "Data tinjauan geodetik." + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "Maklumat satelit, format tidak dinyatakan." + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "Setem masa data GPS, " + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "Pengekodan desimal dengan pemisah titik. " + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Mod Grafik" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" +"Integer 26-bit yang menentukan mod pemindahan. Mod pemindahan menentukan " +"operasi Boolean QuickDraw yang manakah patut dilakukan bila melukis atau " +"memindahkan imej dari satu lokasi ke lokasi yang lain." + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "Pengelumpulan" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "Maklumat mengenai Pengelumpulan." + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "Kelas Pengendali" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" +"Kod empat-aksara yang mengenalpasti jenis pengendali. Hanya dua nilai adalah " +"sah untuk medan ini: 'mhlr' untuk pengendali media dan 'dhlr' untuk " +"pengendali data." + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "Handler Description" +msgstr "Keterangan Pengendali" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" +"Rentetan (dikira_ yang menentukan nama komponen, pengendali media digunakan " +"bila media ini dicipta.." + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "Handler Type" +msgstr "Jenis Pengendali" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" +"Kod empat-aksara yang mengenalpasti jensi pengendali media atau pengendali " +"data." + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "ID Vendor Pengendali" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Component manufacturer." +msgstr "Pengilang komponen." + +#: src/properties.cpp:1186 +msgid "Video Height" +msgstr "Tinggi Video" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "Tinggi video dalam piksel" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "Maklumat Tetapan Pelarasan Rona." + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "Panjang Imej, sifat diwarisi dari format PetaBit" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "Imej Sepanduk Maklumat" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "Imej Sepanduk Maklumat." + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "URL Sepanduk Maklumat" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "URL Sepanduk Maklumat." + +#: src/properties.cpp:1191 +msgid "Information" +msgstr "Maklumat" + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "Maklumat Cereka Tambahan." + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "Teks Maklumat" + +#: src/properties.cpp:1192 +msgid "Information Text." +msgstr "Teks Maklumat." + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "URL Maklumat" + +#: src/properties.cpp:1193 +msgid "Information URL." +msgstr "URL Maklumat." + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "Maklumat mengenai Tetapan ISO." + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "Kod ISRC" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "Maklumat mengenai Kod ISRC." + +#: src/properties.cpp:1196 +msgid "Junk Data" +msgstr "Data Sarap" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "Data Sarap Video" + +#: src/properties.cpp:1197 +msgid "Language." +msgstr "Bahasa." + +#: src/properties.cpp:1198 +msgid "Length" +msgstr "Jangka masa" + +#: src/properties.cpp:1198 +msgid "The length of the media file." +msgstr "Jangka masa fail media." + +#: src/properties.cpp:1200 +msgid "Lens Type." +msgstr "Jenis Kanta." + +#: src/properties.cpp:1201 +msgid "Lightness" +msgstr "Kecerahan" + +#: src/properties.cpp:1201 +msgid "Lightness." +msgstr "Kecerahan." + +#: src/properties.cpp:1202 +msgid "Location Information" +msgstr "Maklumat Lokasi" + +#: src/properties.cpp:1202 +msgid "Location Information." +msgstr "Maklumat Lokasi." + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "URL Ikon Logo." + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "Rentetan C yang menyatakan URL Ikon Logo." + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "URL Logo" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "Rentetan C yang menyatakan URL Logo." + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "Lirik" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "Lirik Lagu/Video." + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "Jenama Jenis Fail QTime Major" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "Jenama Jenis Fail QuickTime Major" + +#: src/properties.cpp:1207 +msgid "Equipment Make" +msgstr "Buat Peralatan" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "Pengilang peralatan rakaman" + +#: src/properties.cpp:1208 +msgid "Camera Maker Note Type" +msgstr "Jenis Nota Pembuat Kamera" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "Jenis Nota Pembuat kamera." + +#: src/properties.cpp:1209 +msgid "Camera Maker Note Version" +msgstr "Versi Nota Pembuat Kamera" + +#: src/properties.cpp:1209 +msgid "Maker Note Version of the camera." +msgstr "Versi Nota Pembuat kamera." + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "URL Pembuat" + +#: src/properties.cpp:1210 +msgid "Camera Manufacturer's URL." +msgstr "URL Pengilang Kamera." + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "Nombor F terkecil kanta, dalam APEX." + +#: src/properties.cpp:1212 +msgid "Maximum Bit Rate" +msgstr "Kadar Bit Maksimum" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" +"Tentukan kadar bit segera maksimum dalam bit sesaat untuk keseluruhan fail. " +"Ia menyamai hasil tambah kadar bit bagi strim media digital individu." + +#: src/properties.cpp:1213 +msgid "Maximum Data Rate" +msgstr "Kadar Data Maksimum" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" +"Kadar puncak yang mana data dipersembah dalam video (Diungkap dalam kB/s" +"(Kilobait se Saat))" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "Tarikh Cipta Trek Media" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" +"Integer 32-bit yang ditentukan (dalam saat semenjak tengah malam, 1 Januari, " +"1904) bila pengepala media dicipta." + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "Media Track Duration" +msgstr "Jangkamasa Trek Media" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" +"Nilai masa yang menunjukkan jangkamasa bagi media ini (dalam sistem " +"koordinasi masa cereka)." + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "Media Header Version" +msgstr "Versi Pengepala Media" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "Spesifikasi 1-bait bagi versi pengepala media ini" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "Kod Bahasa Media" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "Integer 16-bit yang menentukan kod bahasa untuk media ini." + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "Media Track Modify Date" +msgstr "Tarikh Ubahsuai Trek Media" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" +"Integer 32-bit yang ditentukan (dalam saat semenjak tengah malam, 1 Januari, " +"1904) bila pengepala media telah diubahsuai." + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "Skala Masa Media" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" +"Nilai masa yang menentukan skala masa untuk media ini, bilangan unit masa " +"yang dilepasi per saat dalam sistem koordinat masanya." + +#: src/properties.cpp:1220 +msgid "Medium." +msgstr "Medium." + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "Data Meta" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" +"Satu jujukan Tag Data Meta Tidak Diketahui // Tidak Berdaftar dan nilainya." + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "Pustaka Data Meta" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "Satu jujukan Tag Pustaka Data Meta Tidak Berdaftar dan nilainya." + +#: src/properties.cpp:1223 +msgid "Metering mode." +msgstr "Mod pemeteran." + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "Mikro Saat Per Bingkai" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "Bilangan mikro saat per bingkai, atau kadar bingkai" + +#: src/properties.cpp:1225 +msgid "Mime Type" +msgstr "Jenis Mime" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "Beritahu mengenai format video" + +#: src/properties.cpp:1226 +msgid "QTime Minor FileType Version" +msgstr "Versi Jenis Fail QTime Minor" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "Versi Jenis Fail QuickTime Minor" + +#: src/properties.cpp:1227 +msgid "Equipment Model" +msgstr "Model Peralatan" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "Nama atau nombor model peralatan." + +#: src/properties.cpp:1228 +msgid "Modification Date-Time" +msgstr "Tarikh-Masa Pengubahsuaian" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "Mengandungi tarikh pengubahsuaian video" + +#: src/properties.cpp:1229 +msgid "Movie Header Version" +msgstr "Versi Pengepala Cereka" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "Muzik Oleh" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "Muzik Oleh, iaitu nama individu atau organisasi." + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "Apl Muxing" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" +"Mengandungi nama pustaka yang telah diguna untuk cipta fail (seperti " +"\"libmatroska 0.7.0\")" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "Nama lagu persitiwa." + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "ID Trek Berikutnya" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" +"Integer 32-bit yang menunjukkan nilai yang digunakan untuk jejak nombor ID " +"bagi trek berikutnya yang ditambah pada cereka ini. Perhatian nilai 0 " +"bukanlah nilai ID trek yang sah." + +#: src/properties.cpp:1234 +msgid "Number Of Colours" +msgstr "Bilangan Warna" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "Jumlah warna yang digunakan" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "Bilangan Warna Penting" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "Bilangan Warna Penting, sifat yang diwarisi dari format PetaBit" + +#: src/properties.cpp:1236 +msgid "Number Of Parts" +msgstr "Bilangan Bahagian" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "Jumlah bahagian dalam video." + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "Warna Operasi" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" +"Tiga nilai 16-bit yang menyatakan warna merah, hijau, dan biru untuk operasi " +"mod pemindahan yang ditunjukkan dalam medan mod bergrafik." + +#: src/properties.cpp:1238 +msgid "Organization" +msgstr "Organisasi" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "Nama organisasi berkaitan dengan video." + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" +"Orientasi Video:1 = Mengufuk (biasa) 2 = Mengufuk Lawan 3 = Putar 180 4 = " +"Menegak Lawan 5 = Mengufuk lawan dan putar 270 arah jam 6 = Putar 90 arah " +"jam 7 = Mengufuk lawan dan putar 90 ikut jam 8 = Putar 270 CW" + +#: src/properties.cpp:1248 +msgid "Part" +msgstr "Bahagian" + +#: src/properties.cpp:1248 +msgid "Part." +msgstr "Bahagian." + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "Pelaku" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "Pelaku yang terlibat dalam pembikinan video." + +#: src/properties.cpp:1250 +msgid "Performer Keywords" +msgstr "Kata Kunci Pelaku" + +#: src/properties.cpp:1250 +msgid "Performer Keywords." +msgstr "Kata Kunci Pelaku." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "URL Pelaku" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "URL khas Pelaku." + +#: src/properties.cpp:1252 +msgid "Picture Control Data" +msgstr "Data Kawalan Gambar" + +#: src/properties.cpp:1252 +msgid "Picture Control Data." +msgstr "Data Kawalan Gambar." + +#: src/properties.cpp:1253 +msgid "Picture Control Version" +msgstr "Versi Kawalan Gambar" + +#: src/properties.cpp:1253 +msgid "Picture Control Data Version." +msgstr "Versi Data Kawalan Gambar." + +#: src/properties.cpp:1254 +msgid "Picture Control Name" +msgstr "Nama Kawalan Gambar" + +#: src/properties.cpp:1254 +msgid "Picture Control Name." +msgstr "Nama Kawalan Gambar." + +#: src/properties.cpp:1255 +msgid "Picture Control Base" +msgstr "Pangkalan Kawalan Gambar" + +#: src/properties.cpp:1255 +msgid "Picture Control Data Base." +msgstr "Pangkalan Data Kawalan Gambar." + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust" +msgstr "Pelarasan Kawalan Gambar" + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust Information." +msgstr "Maklumat Pelarasan Kawalan Gambar." + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjust" +msgstr "Pelarasan Pantas Kawalan Gambar" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "Tetapan Pelarasan Pantas Kawalan Gambar." + +#: src/properties.cpp:1258 +msgid "Play Selection" +msgstr "Pemilihan Main" + +#: src/properties.cpp:1258 +msgid "Play Selection." +msgstr "Pemilihan Main." + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "ModMain" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "Maklumat mengenai Mod Main." + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "Kesetaraan Fizikal Bab" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "Mengandungi maklumat media Luaran." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "Piksel Per Meter X" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "Piksel Per Meter X, sifat yang diwarisi dari format PetaBit" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "Piksel Per Meter Y" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "Piksel Per Meter Y, sifat yang diwarisi dari format PetaBit" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "Satah" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "Bilangan Satah Imej dalam video" + +#: src/properties.cpp:1266 +msgid "Poster Time" +msgstr "Masa Poster" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "Nilai masa bagi masa poster cereka." + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "Kadar Dikehendaki" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" +"Bilangan takat-tetap 32-bit yang menunjukkan kadar yang memainkan cereka " +"ini. Nilai 1.0 menunjukkan kadar biasa." + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "Volum Dikehendaki" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" +"Bilangan takat-tetap 16-bit yang menunjukkan berapa lantangkah bunyi cereka " +"dimainkan. Nilai 1.0 menunjukkan volum penuh." + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "Pragulung" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" +"Nyatakan amaun masa untuk menimbal data sebelum mula memainkan fail, dalam " +"unit milisaat. Jika nilai ini bukan sifat, medan Jangkamasa Main dan semua " +"medan Masa Persembahan muatan telah diofset berdasarkan amaun ini. Maka, " +"perisian pemain mesti menolak nilai dalam medan pra-gulung dari jangkamasa " +"main dan masa persembahan untuk mengira nilai sebenarnya." + +#: src/properties.cpp:1272 +msgid "Preview Atom Type" +msgstr "Jenis Atom Pratonton" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "Menunjukkan jenis atom yang mengandungi data pratonton" + +#: src/properties.cpp:1273 +msgid "Preview Date" +msgstr "Tarikh Pratonton" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "Tarikh pratonton cereka dalam masa setempat yang ditukar dari UTC" + +#: src/properties.cpp:1274 +msgid "Preview Duration" +msgstr "Jangkamasa Pratonton" + +#: src/properties.cpp:1274 +msgid "The duration of the movie preview in movie time scale units" +msgstr "Jangkamasa pratonton cereka dalam unit skala masa cereka" + +#: src/properties.cpp:1275 +msgid "Preview Time" +msgstr "Masa Pratonton" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "Nilai masa dalam cereka yang mana pratonton bermula." + +#: src/properties.cpp:1276 +msgid "The version of the movie preview " +msgstr "Versi pratonton cereka " + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "Dihasilkan Oleh" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "Dihasilkan Oleh, iaitu nama individu atau organisasi." + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "Penerbit yang terlibat dengan pembikinan video." + +#: src/properties.cpp:1279 +msgid "Producer Keywords" +msgstr "Kata Kunci Penerbit" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "Maklumat mengenai Kata Kunci Penerbit." + +#: src/properties.cpp:1280 +msgid "Production Aperture Width" +msgstr "Lebar Bukaan Penerbitan" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "Lebar bukaan penerbitan dalam piksel" + +#: src/properties.cpp:1281 +msgid "Production Aperture Height" +msgstr "Tinggi Bukaan Penerbitan" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "Tinggi bukaan penerbitan dalam piksel" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "Pereka Penerbitan" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "Maklumat mengenai Pereka Penerbitan" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "Studio Penerbitan" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "Maklumat mengenai Studio Penerbitan." + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "Produk" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "Produk." + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "Kadar" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "Kadar." + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "Ditaraf" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "Gelang usia yang diperlukan untuk menonton video." + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "Penarafan, iaitu. 7 atau 8 (umumnya per 10)." + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "Nama Label Rakaman" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "Nama Label Rakaman, atau nama organisasi yang merakaman video." + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "URL Label Rakaman" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "URL Label Rakaman." + +#: src/properties.cpp:1291 +msgid "Recording Copyright" +msgstr "Hakcipta Rakaman" + +#: src/properties.cpp:1291 +msgid "Recording Copyright." +msgstr "Hakcipta Rakaman." + +#: src/properties.cpp:1292 +msgid "Requirements" +msgstr "Keperluan" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "Maklumat mengenai Keperluan." + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"Unit digunakan untuk XResolution atau YResolution. Nilainya adalah salah " +"satu dari: 2 = inci; 3 = sentimeter." + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "Diretas Oleh" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "Diretas Oleh, iaitu nama individu atau organisasi." + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "Menunjukkan arah proses penepuan yang dilaksana oleh kamera." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "Genre Kedua" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "Nama bagi genre kedua.." + +#: src/properties.cpp:1297 +msgid "Selection Time" +msgstr "Masa Pemilihan" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "Nilai masa untuk masa mula bagi pemilihan semasa." + +#: src/properties.cpp:1298 +msgid "Selection Duration" +msgstr "Jangkamasa Pemilihan" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "Jangkamasa pemilihan semasa dalam unit skala masa cereka." + +#: src/properties.cpp:1299 +msgid "Send Duration" +msgstr "Jangkamasa Hantar" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" +"Nyatakan masa yang diperlukan untuk hantar fail dalam unit 100--nanosaat. " +"Nilai ini seharusnya disertakan jangkamasa paket terakhir di dalam kandungan." + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "Perisian yang digunakan untuk jana / cipta data Video." + +#: src/properties.cpp:1303 +msgid "Software Version" +msgstr "Veris Perisian" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "Versi perisian yang digunakan." + +#: src/properties.cpp:1304 +msgid "Song Writer" +msgstr "Penulis Lagu" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "Nama penulis lagu." + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "Kata Kunci Penulis Lagu" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords." +msgstr "Kata Kunci Penulis Lagu." + +#: src/properties.cpp:1307 +msgid "Source Credits" +msgstr "Penghargaan Sumber" + +#: src/properties.cpp:1307 +msgid "Source Credits." +msgstr "Penghargaan Sumber." + +#: src/properties.cpp:1308 +msgid "Source Form" +msgstr "Bentuk Sumber" + +#: src/properties.cpp:1308 +msgid "Source Form." +msgstr "Bentuk Sumber." + +#: src/properties.cpp:1309 +msgid "Source Image Height" +msgstr "Tinggi Imej Sumber" + +#: src/properties.cpp:1310 +msgid "Source Image Width" +msgstr "Lebar Imej Sumber" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "Lebar video dalam piksel" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "Dibintangi" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "Dibintangi, nama individu terkenal yang muncul di dalam video." + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "Kod Masa Mula" + +#: src/properties.cpp:1313 +msgid "Statistics" +msgstr "Statistik" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "Statistik." + +#: src/properties.cpp:1314 +msgid "Stream Count" +msgstr "Kiraan Strim" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "Jumlah Strim" + +#: src/properties.cpp:1315 +msgid "Stream Name" +msgstr "Nama Strim" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "Jelaskan Nama Strim. Contohnya - FUJIFILM AVI STREAM 0100" + +#: src/properties.cpp:1316 +msgid "Stream Quality" +msgstr "Kualiti Strim" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "Kualiti Strim Am" + +#: src/properties.cpp:1317 +msgid "Stream Sample Rate" +msgstr "Kadar Sampel Strim" + +#: src/properties.cpp:1318 +msgid "Stream Sample Count" +msgstr "Kiraan Sampel Strim" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "Saiz Sampel Strim" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "Saiz Sampel Strim Am" + +#: src/properties.cpp:1320 +msgid "Stream Type" +msgstr "Jenis Strim" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "Jelaskan Jenis Strim. Contohnya Video, Audio atau Sarikata" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "Kodeks Sarikata" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "Kodeks strim sarikata, untuk kegunaan umum" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "Maklumat Nyahkod Kodeks Sarikata" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" +"Mengandungi maklumat semua nyahkod kodeks sarikata, iaitu Dibenarkan/" +"Dilumpuhkan" + +#: src/properties.cpp:1323 +msgid "Subtitles Codec Information" +msgstr "Maklumat Kodeks Sarikata" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "Mengandungi maklumat tambahan mengenai sarikata." + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "URL Muat Turun Kodeks Sarikata" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "URL Muat Turun Kodeks Sarikata Video." + +#: src/properties.cpp:1325 +msgid "Subtitle Codec Settings" +msgstr "Tetapan Kodeks Sarikata" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "Lalai Trek Sarikata Hidup" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "Lalai Trek Sarikata Hidup , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "Trek Sarikata Dibenarkan" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "Status Trek Sarikata, iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1328 +msgid "Subtitle" +msgstr "Sarikata" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "Sarikata video." + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords" +msgstr "Kata Kunci Sarikata" + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords." +msgstr "Kata Kunci Sarikata." + +#: src/properties.cpp:1330 +msgid "Subtitles Language" +msgstr "Bahasa Sarikata" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "Bahasa yang mana sarikata direkodkan." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "Trek Sarikata Dipaksa" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "Trek Sarikata Dipaksa , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "Penyusunikatan Trek Sarikata" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "Penyusunikatan Trek Sarikata , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1333 +msgid "Subject. " +msgstr "Subjek. " + +#: src/properties.cpp:1334 +msgid "TapeName." +msgstr "NamaPita." + +#: src/properties.cpp:1335 +msgid "Tag Default Setting" +msgstr "Tetapan Lalai Tag" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" +"Jika Tag adalah Lalai dibenarkan, nilai ini adalah Ya, sebaliknya Tidak " + +#: src/properties.cpp:1336 +msgid "Tag Language" +msgstr "Bahasa Tag" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "Bahasa yang digunakan untuk takrifkan tag" + +#: src/properties.cpp:1337 +msgid "Tag Name" +msgstr "Nama Tag" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "Tag seharusnya digunakan untuk takrif beberapa tajuk untuk segmen." + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "Rentetan Tag" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "Maklumat terkandung dalam Tag" + +#: src/properties.cpp:1339 +msgid "Target Type" +msgstr "Jenis Tag" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "Rentetan yang menjelaskan aras logikal objek yang mana Tag dirujuk." + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "Juruteknik" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "Juruteknik, biasanya nama individu." + +#: src/properties.cpp:1341 +msgid "Thumbnail Height" +msgstr "Tinggi Lakaran Kenit" + +#: src/properties.cpp:1341 +msgid "Preview Image Thumbnail Height." +msgstr "Tinggi Lakar Kenit Imej Pratonton." + +#: src/properties.cpp:1342 +msgid "Preview Image Thumbnail Length." +msgstr "Panjang Lakaran Kenit Imej Pratonton." + +#: src/properties.cpp:1343 +msgid "Thumbnail Width" +msgstr "Lebar Lakaran Kenit" + +#: src/properties.cpp:1343 +msgid "Preview Image Thumbnail Width." +msgstr "Lebar Lakaran Kenit Imej Pratonton." + +#: src/properties.cpp:1344 +msgid "Timecode Scale" +msgstr "Skala Kod Masa" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "Faktor gandaan yang berguna dalam pengiraan kod masa tertentu" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "Time Offset" +msgstr "Ofset Masa" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" +"Nyatakan ofset masa persembahan strim dalam unit 100-nanosaat. Nilai ini " +"akan sama untuk menghantar masa paket terjalin pertama dalam seksyen data." + +#: src/properties.cpp:1346 +msgid "Time Scale" +msgstr "Skala Masa" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" +"Nilai masa yang menunjukkan skala masa untuk cereka ini, bilangan unit masa " +"yang dilalui per saat di dalam sistem koordinat masanya. Sistem koordinat " +"masa yang mengukur masa dalam tempoh perenambelas sesaat, contohnya skala " +"masa 60." + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" +"Mengandungi nama umum SEGMENT, seperti 'Lord of the Rings = The Two Towers', " +"walaubagaimanapun, Tag perlu diguna untuk takrifkan beberapa tajuk untuk " +"segmen." + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "Tetapan Kesan Pengetonan Dilaksana." + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "Jumlah Kiraan Bingkai" + +#: src/properties.cpp:1352 +msgid "Number Of Streams" +msgstr "Bilangan Strim" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" +"Jumlah bilangan strim yang hadir dalam video. Cth - Video, Audio atau " +"Sarikata" + +#: src/properties.cpp:1353 +msgid "Track" +msgstr "Trek" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "Maklumat mengenai Trek." + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "Tarikh Cipta Trek Video" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" +"Integer 32-bit yang menunjukan (dalam saat semenjak tengah malam, 1 Januari, " +"1904) bila pengepala trek dicipta." + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "Jangkamasa Trek Video" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" +"Nilai masa yang menunjukkan jangkamasa trek ini (dalam sistem koordinat masa " +"cereka)." + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "Trek Video Dipaksa" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "Trek Video Dipaksa , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "Track ID" +msgstr "ID Trek" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" +"Integer 32-bit yang mengenalpasti trek secara unik. Nilai 0 tidak boleh " +"digunakan." + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "Track Header Version" +msgstr "Versi Pengepala Trek" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "Spesifikasi 1-bait bagi versi pengepala trek ini" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "Penyusunikatan Trek Video" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "Penyusunikatan Trek Video , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "Track Language" +msgstr "Bahasa Trek" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "Bahasa yang mana strim tersebut dirakam." + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "Lapisan Trek Video" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" +"Integer 16-bit yang menunjukkan keutamaan spatial trek ini di dalam " +"cerekanya. Kotak Alat Cereka QuickTime gunakan nilai ini untuk tentukan " +"bagaimana trek bertindihan diantara satu sama yang lain. Trek dengan nilai " +"lapisan lebih rendah dipapar di hadapan trek dengan nilai lapisan lebih " +"tinggi." + +#: src/properties.cpp:1364 +msgid "Video Track Modify Date" +msgstr "Tarikh Ubahsuai Trek Video" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" +"Integer 32-bit yang menunjukkan (dalam saat semenjak tengah malam, 1 Januari " +"1904) bila pengepala trek terakhir diubahsuai." + +#: src/properties.cpp:1365 +msgid "Track Name" +msgstr "Nama Trek" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "Nama Trek yang digunakan untuk takrif tajuk segmen." + +#: src/properties.cpp:1366 +msgid "Track Number." +msgstr "Nombor Trek." + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "Volum Trek" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" +"Nombor takat-tetap 16-bit yang menentukan berapa lantangkah untuk memainkan " +"bunyi trek ini. Nilai 1.0 menunjukkan volum penuh." + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "Kodeks Terjemah Bab" + +#: src/properties.cpp:1368 +#, fuzzy +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" +"Maklumat Kodeks Terjemah Bab. Biasanya digunakan dalam jenis penapis " +"Matroska." + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown Information" +msgstr "Maklumat Tidak Diketahui" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "Tag Data Meta Tidak Diketahui / Tidak Berdaftar dan nilainya." + +#: src/properties.cpp:1371 +msgid "Video URL" +msgstr "URL Video" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" +"Rentetan C yang menyatakan URL. Terdapat data tambahan selepas rentetan C." + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "URN Video" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" +"Rentetan C yang menyatakan URN. Terdapat data tambahan selepas rentetan C." + +#: src/properties.cpp:1373 +msgid "Vari Program" +msgstr "Program Vari" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "Tetapan perisian yang digunakan untuk jana / cipta data Video." + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "Vegas Versi Major" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "Vegas Versi Major." + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "Vegas Versi Minor" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "Vegas Versi Minor." + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "Pembekal" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "Pembangun pemampat yang menjana data termampat." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "Vendor ID" +msgstr "ID Pembekal" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" +"Integer-32 bit yang menyatakan pembangun pemampat yang menjana data " +"termampat. Biasanya medan ini mengandungi 'appl' yang menunjukkan Apple " +"Computer, Inc." + +#: src/properties.cpp:1378 +msgid "Video Quality" +msgstr "Kualiti Video" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "Kualiti Strim Video" + +#: src/properties.cpp:1379 +msgid "Video Sample Size" +msgstr "Saiz Sampel Video" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "Saiz Sampel Strim Video" + +#: src/properties.cpp:1380 +msgid "Video Scan Type" +msgstr "Jenis Imbasan Video" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "Jenis Imbasan Video, ia boleh jadi Progresif atau Berselang-seli" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "URL Tera Air" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "Rentetan C yang menyatakan URL Tera Air." + +#: src/properties.cpp:1384 +msgid "White Balance Fine Tune." +msgstr "Talaan Halus Imbangan Putih." + +#: src/properties.cpp:1385 +msgid "Video Width" +msgstr "Lebar Video" + +#: src/properties.cpp:1386 +msgid "Window Location" +msgstr "Lokasi Tetingkap" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "Maklumat mengenai Lokasi Tetingkap." + +#: src/properties.cpp:1388 +msgid "Written By" +msgstr "Ditulis Oleh" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "Ditulis Oleh, iaitu nama individu atau organisasi." + +#: src/properties.cpp:1389 +msgid "Writing App" +msgstr "Apl Menulis" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" +"Mengandungi nama aplikasi yang diguna untuk cipta fail (seperti \"mkvmerge " +"0.8.1\")" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "Resolusi mengufuk dalam piksel per unit." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "Tahun" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "Tahun yang mana video dihasilkan." + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "Resolusi menegak dalam piksel per unit." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "Bait Purata Per Saat" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "Bait Purata Per Saat yang ditemui dalam strim audio" + +#: src/properties.cpp:1398 +msgid "Balance" +msgstr "Imbangan" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "Menunjukkan imbangan kiri-kanan audio" + +#: src/properties.cpp:1399 +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bit Per Sampel/ Kadar Bit" + +#: src/properties.cpp:1399 +msgid "Bits per test sample" +msgstr "Sampel bit per uji" + +#: src/properties.cpp:1401 +msgid "Audio Codec" +msgstr "Kodeks Audio" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "Kodeks yang digunakan untuk Pengekodan/Penyahkodan Audio" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "Maklumat Nyahkod Kodeks Audio" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" +"Mengandungi semua maklumat nyahkod kodeks audio, iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1403 +msgid "Audio Codec Description" +msgstr "Keterangan Kodeks AUdio" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "URL Muat Turun Kodeks Audio" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "URL Muat Turun Kodeks Audio." + +#: src/properties.cpp:1405 +msgid "Audio Codec Information" +msgstr "Maklumat Kodeks Audio" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" +"Mengandungi maklumat kodeks yang diperlukan sebelum penyahkodan bermula. " +"Contohnya paket pengawalan Vorbis untuk audio Vorbis." + +#: src/properties.cpp:1406 +msgid "Audio Codec Settings" +msgstr "Tetapan Kodeks Audio" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Tempoh Audio" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "Bilangan mikrosaat cebisan audio dimainkan." + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Strim Lalai" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "Strim Audio yang dimain secara lalai." + +#: src/properties.cpp:1410 +msgid "Audio Track Default On" +msgstr "Trek Audio Lalai Hidup" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "Trek Audio Lalai Hidup , Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "Trek Audio Dibenarkan" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "Status Trek Audio, iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1412 +msgid "Audio Format" +msgstr "Format Audio" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "Kod empat-aksara yang mengenalpasti format audio." + +#: src/properties.cpp:1423 +msgid "Output Audio Sample Rate" +msgstr "Kadar Sampel Audio Output" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"Kadar sampel audio output. Boleh jadi sebarang nilai, tetapi umumnya 32000, " +"41100, atau 48000." + +#: src/properties.cpp:1424 +msgid "Audio Sample Count" +msgstr "Kiraan Sampel Audio" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "Sampel diambil untuk Menganalisis Strim Audio" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title" +msgstr "Tajuk Skema Bunyi" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title." +msgstr "Tajuk Skema Bunyi." + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "Tarikh Cipta Trek Audio" + +#: src/properties.cpp:1430 +msgid "Audio Track Duration" +msgstr "Tempoh Trek Audio" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced" +msgstr "Trek Audio Dipaksa" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "Trek Audio Dipaksa , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing" +msgstr "Penyusunikatan Trek Audio" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "Penyusunikatan Trek Audio , iaitu Dibenarkan/Dilumpuhkan" + +#: src/properties.cpp:1436 +msgid "Audio Track Layer" +msgstr "Lapisan Trek Audio" + +#: src/properties.cpp:1439 +msgid "Audio Track Modify Date" +msgstr "Tarikh Ubahsuai Trek Audio" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "URL Audio" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "URN Audio" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Nama genre." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Tarikh Ubahsuai Data Meta" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "Tahun yang mana video dihasilkan." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Nama tidak formal pendek untuk sumber." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Lesen" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Zon kanan" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Hak" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +#, fuzzy +msgid "A bibliographic reference for the resource." +msgstr "Nama tidak formal pendek untuk sumber." + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Rujukan Kerja" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +#, fuzzy +msgid "*Main structure* containing Darwin Core location based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Versi Rekod" + +#: src/properties.cpp:1469 +#, fuzzy +msgid "*Main structure* containing record based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Arahan" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Pemilihan" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Mod Resolusi" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Longgokan Data" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Kod Lokasi" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Nama Plat" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Pengenalpasti unik bagi kerja yang mana sumber ini diperoleh." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Maklumat" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Sifat Kanta" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +#, fuzzy +msgid "*Main structure* containing occurrence based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID Lesen" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "FNumber Manual" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +#, fuzzy +msgid "Comments or notes about the Occurrence." +msgstr "Maklumat mengenai Arranger." + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Bilangan direktori" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Dienkod Oleh" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "Kualiti Strim" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Tetap" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Studio Penerbitan" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Pemeringkatan" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Kedudukan fokus" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Bilangan Sela" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Pengenalpastian Lengkapan" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Media Disumbang" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Rujukan Projek" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "Jujukan AEB" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "Organisasi" + +#: src/properties.cpp:1589 +#, fuzzy +msgid "*Main structure* containing organism based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Nama Strim" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Sampel Tambahan" + +#: src/properties.cpp:1616 +#, fuzzy +msgid "*Main structure* containing material sample based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Adegan Petang" + +#: src/properties.cpp:1619 +#, fuzzy +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +#, fuzzy +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +#, fuzzy +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Sampel Tambahan" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +#, fuzzy +msgid "*Main structure* containing event based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +#, fuzzy +msgid "*Main structure* containing human observation based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +#, fuzzy +msgid "*Main structure* containing machine observation based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Peristiwa" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Tarikh Dicipta" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Tarikh Dicipta" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Masa Semasa" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "bulan" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Tarikh yang mana lesen luput." + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Lengah" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Tarikh Ciptaan" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Format Sampel" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "Nilai Sampel SMin" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Bilangan Fail" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Nota Pemberi Lesen" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +#, fuzzy +msgid "Comments or notes about the Event." +msgstr "Maklumat mengenai Ulasan." + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Kod Lokasi" + +#: src/properties.cpp:1706 +#, fuzzy +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Lokasi" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Berterusan" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Negeri/Daerah" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Negara" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Kualiti" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Setempat" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "Keterangan berteks bagi data objek." + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +#, fuzzy +msgid "Verbatim Depth" +msgstr "Kedalaman Bit" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Kadar Data Maksimum" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Kod Lokasi" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Kod Lokasi" + +#: src/properties.cpp:1779 +#, fuzzy +msgid "Comments or notes about the Location." +msgstr "Maklumat mengenai Lokasi Tetingkap." + +#: src/properties.cpp:1781 +#, fuzzy +msgid "Verbatim Coordinates" +msgstr "Koordinat GPS" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "Latitud Destinasi GPS" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "Longitud Destinasi GPS" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "Latitud Destinasi GPS" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "Longitud GPS" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +#, fuzzy +msgid "Geodetic Datum" +msgstr "Data tinjauan geodetik." + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +#, fuzzy +msgid "Coordinate Precision" +msgstr "Koordinat GPS" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Rujukan Kerja" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Tarikh Rujukan" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Perkhidmatan Rujukan" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Bilangan Rujukan" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +#, fuzzy +msgid "*Main structure* containing geological context based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +#, fuzzy +msgid "Group" +msgstr "Pengelumpulan" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Nama dokumen yang mana imej diimbas" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Maklumat" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Nama dokumen yang mana imej diimbas" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Amber" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Nama dokumen yang mana imej diimbas" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Merah" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Nama dokumen yang mana imej diimbas" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Pengenalpastian Lengkapan" + +#: src/properties.cpp:1904 +#, fuzzy +msgid "*Main structure* containing identification based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Pengenalpastian Lengkapan" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Pengenalpasti:" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Pengenalpasti:" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Rujukan Arah Imej GPS" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Pengenalpastian Lengkapan" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Pengenalpastian Lengkapan" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Status" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +#, fuzzy +msgid "*Main structure* containing taxonomic based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Nama Fail Raw Asal" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Nama Dokumen" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Nama Plat" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Nama Fail Raw Asal" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Ofset rakaman" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Penerbit" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "Tarikh yang mana imej kali pertama diterbitkan." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Pengelasan Keselamatan" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Tertib Fail" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Nama Trek" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Warna Alamiah" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +#, fuzzy +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Sumber fail" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Blok Sumber Imej" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Sumber Cahaya" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Pengukuran Saling Kendali" + +#: src/properties.cpp:2066 +#, fuzzy +msgid "*Main structure* containing measurement based information." +msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Pengukuran dalam proses" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Pengukuran dalam proses" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Nilai pengukuran hingar." + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Pengukuran Saling Kendali" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Pengukuran Saling Kendali" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Pengukuran Saling Kendali" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Pengukuran Saling Kendali" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "Mod Ukuran GPS" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Pengukuran dalam proses" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Keterangan berteks bagi data objek." + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Tarikh dan Masa" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Nama bagi syot atau tangkapan." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Kategori" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Mod Resolusi" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Mod resolusi" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Mod Fokus-sendiri" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Mod fokus-sendiri" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Tetapan FOkus" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Tetapan fokus" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Julat Kanta" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Julat panjang fokus kanta" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Bayang" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Sorot" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Cahaya Isian" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "Cahaya Isian X3" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Pelarasan Warna" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Pelarasan warna" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Mod Pelarasan" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Mod pelarasan" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Pendakap Automatik" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Pendakap automatik" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Tag SigmaMakerNote tidak diketahui" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-Segmen" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "Lv1 Lanjutan" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "Lv2 Lanjutan" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "Lv3 Lanjutan" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "Lv4 Lanjutan" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "Lv5 Lanjutan" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "Penggambaran Malam / Senja" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "Pengatup Kelajuan-Tinggi" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Potret Senja" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Potret Kendiri" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "Pengatup Senyum" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "Kepekaan Tinggi" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "Penggambaran Sukan Lanjutan" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panorama" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "Anti Kabur Gerakan" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "Pembetulan Cahaya Belakang HDR" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Fokus Makro" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "Kulit lembut" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "ID Imej" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "Hidup (Berterusan)" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "Hidup (Pensyutan)" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "Tambah" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Pendaflour Putih" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "Pendaflour Putih sejuk" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "Pendaflour Putih Siang" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Pijar" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "PendaflourPutih" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Bawah Air 1 (Air Biru)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Bawah Air 2 (Air Hijau)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "AF-Kekal" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "AF Pusat" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "AF Bintik" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "AF Bintik Lentur" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "AF Sentuh" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "Fokus Manual" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "Kesan Wajah" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "Fokus Dekat" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "Mod Ledakan Berbilang" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "Lebar Imej Ledakan Berbilang" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "Tinggi Imej Ledakan Berbilang" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "Imej pratonton JPEG" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "HDR Auto" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "Mod Julat Definasi Tinggi" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Maklumat Syot" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "ID Model Sony" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "Pengeluaran Semula Warna" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "Pengoptimum Julat Dinamik" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "MakerNote Minolta" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Saiz Imej Penuh" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Saiz Imej Pratonton" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Saiz imej pratonton" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "Pengiluminasi AF" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "Kualiti JPEG" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Mod Keluaran" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Bilangan syot dalam mod ledakan berterusan" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "Anti-Kabur" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "Pengurangan Hingar Dedahan Panjang" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "Automatik Pintar" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "Tag Sony1MakerNote tidak diketahui" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Berterusan Tinggi" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Berterusan REndah" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "Pendakapan Rendah bagi Pengoptimum Julat-D" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "Musin luruh" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "ADI" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "KotakGaya 1" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "Tanpa Denyar Automatik" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "Aras Pengoptimum Julat Dinamik" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "Gaya Kreatif" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "Nilai Pemadanan Zon" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "AF Dengan Pengatup" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "Pengurangan Hingar ISO Tinggi" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Gaya Imej" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Tag Tetapan Kamera Sony1 tidak diketahui" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Tag Tetapan 2 Kamera Sony1 tidak diketahui" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Bahagian tidak diketahui" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Struktur data imej" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Ofset rakaman" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Karaktersitik data imej" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Data lain" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Struktur data Exif" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Konfigurasi imej" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Maklumat pengguna" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Fail berkaitan" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Tarikh dan masa" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Syarat pengambilan gambar" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Maklumat GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Maklumat saliing kendalian" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Maklumat khusus pembekal" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Tag DNG Adobe" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Tag RAW Panasonic" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "Tag TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "Tag TIFF PageMaker 6.0" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Tag OPI Adobe" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Bahagian terakhir" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Imej utama" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Imej Thumbnail/Pratonton" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Imej utama, Fail halaman berbilang" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Imej Thumbnail/Pratonton, Fail halaman berbilang" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Imej utama, topeng lutsinar" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Imej Thumbnail/Pratonton, Topeng lutsinar" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Imej utama, Fail halaman berbilang, topeng lutsinar" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "Imej Thumbnail/Pratonton, Fail halaman berbilang, Topeng lutsinar" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Data imej resolusi-penuh" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Data imej resolusi-terkurang" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "Merupakan halaman tunggal bagi imej halaman-berbilang" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "inci" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "Faks T4/Group 3" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "Faks T6/Group 4" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (gaya-lama)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG H&P" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Warna" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "RLE Next 2-bit" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "ERF Epson Termampat" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "SRW Samsung Termampat" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "Pemadatan CT IT8" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "RLE Linework IT8" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "Gambar Monokrom IT8" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "Seni Garis Binari IT8" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Filem Pixar (LZW 10-bit)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Log Pixar (ZIP 11-bit)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Pengekodan DCS Kodak" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "RLE Luminans Log SGI" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "Log SGI 24-bit berpek" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "NEF Nikon Termampat" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "DCR Kodak Termampat" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "PEF Pentax Termampat" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "Putih Adalah Sifar" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "Hitam Adalah Sifar" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Palet RGB" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Topen Lutsinar" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Tatasusunan Penapis Warna" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "LogL Pixar" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "LogLuv Pixar" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Raw Linear" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "Tanpa penditeran dan separa ton" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "Teknik diter bertertib atau separa ton" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Proses rawak" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "atas, kiri" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "atas, kanan" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "bawah, kanan" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "bawah, kiri" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "kiri, atas" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "kanan, atas" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "kanan, bawah" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "kiri, bawah" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "Tiada skema ramalan digunakan" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Pembezaan mengufuk" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "bukan CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "Data integer tanpa ditandatangan" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "Dua integer ditandatangan secara lengkapan" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "Data titik apung IEEE" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "Format data tidak ditakrif" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "Tidak berindeks" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "Berindeks" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Tengah" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Laman-bersama" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Tanpa denyar" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "Ditembak, cahaya kembali tidak dikesan" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "Ditembak, cahaya kembali dikesan" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Ya, tidak ditembak" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "compulsory" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Ya, wajib, cahaya kembali tidak dikesan" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Ya, wajib, cahaya kembali dikesan" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Tidak, wajib" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "Tidak, tidak ditembak, cahaya kembali tidak dikesan" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Tidak, automatik" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Ya, automatik" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Ya, automatik, cahaya kembali tidak dikesan" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Ya, automatik, cahaya kembali dikesan" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Tiada fingsi denyar" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Tidak, tiada fungsi denyar" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Ya, pengurangan mata-merah" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Ya, pengurangan mata-merah, cahaya kembali tidak dikesan" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Ya, pengurangan mata-merah, cahaya kembali dikesan" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Ya, wajib, pengurangan mata merah" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "Ya, wajib, pengurangan mata merah, cahaya kembali tidak dikesan" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "Ya, wajib, pengurangan mata merah, cahaya kembali dikesan" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Tidak, pengurangan mata-merah" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Tidak, automatik, pengurangan mata-merah" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Ya, automatik, pengurangan mata-merah" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Ya, automatik, pengurangan mata merah, cahaya kembali tidak dikesan" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Ya, automatik, pengurangan mata merah, cahaya kembali dikesan" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Bentangan segiempat tepat (atau segiempat sama)" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "Bentangan berperingkat A: lajur genap diofset kebawah dengan 1/2 baris" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "Bentangan berperingkat B: lajur genap diofset keatas dengan 1/2 baris" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "Bentangan berperingkat C: lajur genap diofset kekanan dengan 1/2 lajur" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "Bentangan berperingkat D: lajur genap diofset kekiri dengan 1/2 lajur." + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Perisian Pemprosesan" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "Nama dan versi perisian yang digunakan untuk pra-proses gambar ini." + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Jenis Subfail Baru" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Petunjuk am bagi jenis data terkandung dalam subfail ini." + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "Jenis Subfail" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"Petunjuk am bagi jenis data terkandung dalam subfail ini. Medan ini sudah " +"lapok. Medan Jenis Subfail Baru sepatutnya digunakan." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Bilangan lajur data imej, menyamai bilangan piksel per baris. Dalam data " +"termampat JPEG satu penanda JPEG digunakan selain dari tag ini." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Bilangan baris data imej. Dalam data termampat JPEG satu penanda JPEG " +"digunakan selain dari tag ini." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bit per Sampel" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Bilangan bit per komponen imej. dalam piawaian ini setiap komponen imej " +"adalah 8 bit, jadi nilai untuk tag ini ialah 8. Lihat juga " +". Dalam data termampat JPEG penanda JPEG digunakan selain " +"dari tag ini." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Skema pemampatan digunakan untuk data imej. Bila imej utama adalah JPEG " +"termampat, penentuan ini tidak perlu dan disingkir. Bila thumbnail guna " +"pemampatan JPEG, nilai tag ini ditetapkan kepada 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Komposisi piksel. Dalam data termampat JPEG penanda JPEG digunakan selain " +"dari tag ini." + +#: src/tags.cpp:444 +#, fuzzy +msgid "Thresholding" +msgstr "Pengambangan" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" +"Untuk fail TIFF hitam dan putih yang mewakili lorekan kelabu, teknik " +"digunakan untuk menukar dari kelabu kepada piksel hitam dan putih." + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "Lebar Sel" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" +"Lebar matriks penditeran atau separa ton yang digunakan untuk cipta fail dwi-" +"aras berditer atau bersepara ton." + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "Panjang Sel" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" +"Panjang matriks penditeran atau separa ton yang digunakan untuk cipta fail " +"dwi-aras berditer atau bersepara ton." + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Tertib Fail" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Tertib logik bagi bit didalam bait" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Nama Dokumen" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Nama dokumen yang mana imej diimbas" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Rentetan aksara yang memberikan tajuk imej. Ia mungkin ulasan seperti " +"\"perkelahan syarikat 1988\" atau yang seangkatan dengannya. Kod aksara dua-" +"bait tidak dapat digunakan. Bila kod 2-bait diperlukan maka " +"tag Persendirian Exif akan digunakan." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Pengilang bagi peralatan rakaman. Ia merupakan pengilang DSC, pengimbas, " +"pendigit video atau lain-lain peralatan yang menjana imej. Bila medan ini " +"dibiarkan kosong. ia dianggap sebagai tidak diketahui." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Nama model atau nombor model peralatan. Ia merupakan nama atau nombor model " +"bagi, pengimbas, pendigit video atau lain-lain peralatan yang menjana imej. " +"Bila medan ini dibiarkan kosong. ia dianggap sebagai tidak diketahui." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Bagi setiap jalur, ofset bait bagi jalur tersebut. Ia disarakan memilih ini " +"supaya bilangan bait jalur tidak melebihi 64 Kbait. Dengan data termampat " +"JPEG penentuan ini tidak diperlukan dan disingkirkan. Lihat juga " +" dan ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Orientasi imej yang dilihat dalam baris dan lajur." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Sampel per Piksel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Bilangan komponen per piksel. Oleh kerana piawaian ini dilaksana kepada imej " +"RGB dan YCbCr, nilai ditetapkan untuk tag ini adalah 3. Dalam data termampat " +"JPEG penanda JPEG digunakan selain dari tag ini." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Baris per Jalur" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"Bilangan bari per jalur. Ini merupakan bilangan baris dalam imej bagi satu " +"jalur bila imej dibahagi kepada jalur. Dengan data termampat JPEG penentuan " +"ini tidak diperlukan dan disingkirkan. Lihat juga dan " +"." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Kiraan Bait Jalur" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"Sejumlah bait dalam setiap jalur. Dengan data termampat penentuan ini tidak " +"diperlukan dan disingkirkan." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Resolusi-X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Bilangan piksel per dalam arah . Bila resolusi " +"imej tidak diketahui, 72 [dpi] ditentukan." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Resolusi-Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Bilangan piksel per dalam arah . Nilai sama " +"seperti yang ditentukan." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Menunjukkan sama ada komponen piksel dirakam dalam ketulan atau format " +"satah. Dalam fail termampat JPEG penanda JPEG digunakan selain dari tag ini. " +"Jika medan ini tidak wujud, lalai TIFF bagi 1 (ketulan) dianggapkan." + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "Unit Sambutan Kelabu" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "Ketepatan maklumat yang dikandungi dalam GrayResponseCurve." + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "Lengkung Sambutang Kelabu" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" +"Bagi data skala kelabu, ketumpatan optik bagi setiap nilai piksel yang " +"mungkin." + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "Pilihan T4" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "Pilihan pengekodan-T.4" + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "Piliha T6" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "Pilihan pengekodan-T.6" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Unit untuk mengukur dan . Unit yang sama " +"digunakan untuk kedua-dua dan . Jika resolusi " +"imej tidak diketahui, 2 (inchi) ditentukan." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Bilangan Imej" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Nama dokumen yang mana imej diimbas" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Fungsi pemindahan untuk imej, diterangkan dalam gaya berjadual. Umumnya tag " +"ini tidak diperlukan, kerana ruang warna dinyatakan dalam tag maklumat ruang " +"warna ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Tag ini merakam nama dan versi perisian atau perisian tegar kamera atau " +"peranti input imej yang digunakan untuk menjana imej. Format terperinci " +"tidak dinyatakan, tetapi ia disarankan mengikut contoh dibawah. Bila medan " +"dibiarkan kosong, ia dianggap tidak diketahui" + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Tarikh dan masa penciptaan imej. Dalam piawaian Exif, masa dan tarikh fail " +"yang berubah." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Tag ini merakam nama pemilik kamera, jurufoto atau pencipta imej. Format " +"terperinci tidak dinyatakan, tetapi adalah disarankan maklumat ditulis " +"sebagaimana contoh dibawah untuk saling kendalian yang mudah. Bila medan ini " +"dibiarkan kosong, ia dianggap sebagai tidak diketahui. \"Pemilik kamera, " +"John Smith; Jurufoto, Michael Brown; Pencipta imej, Ken James\"" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "Komputer Hos" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Tag ini merekod maklumat mengenai komputer hos yang digunakan untuk menjana " +"imej." + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Peramal" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" +"Peramal adalah operator bermatematik yang dilaksana kepada data imej sebelum " +"skema pengekodan dilaksana." + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Kekromatan bagi titik putih imej. Umumnya, tag ini tidak diperlukan, kerana " +"ruang warna dinyatakan dalam tag maklumat ruang warna ()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Kekromatan bagi tiga warna utama imej. Umumnya, tag ini tidak diperlukan, " +"kerana ruang warna dinyatakan dalam tag maklumat ruang warna ()." + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Peta Waran" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" +"Merupakan peta warna bagi imej warna palet. Medan ini mentakrifkan peta " +"warna Merah-Hijau-Biru (biasanya dikenali sebagai jadual carian) untuk imej " +"warna-palet. Dalam imej warna palet, nilai piksel digunakan untuk " +"diindekskan kedalam jadual carian RGB." + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "Pembayang Separa Ton" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" +"Tujuan medan Pembayang Separa Ton adalah untuk menyampaikan fungsi separa " +"ton bagi julat aras kelabu didalam imej dinyatakan-secara-kolorimeteer yang " +"mana patut kekalkan perincian tonnya." + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Lebar Jubin" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" +"Lebar jubin dalam piksel. Ini merupakan bianga lajur dalam setiap jubin." + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Panjang Jubin" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" +"Panjang jubin (tinggi) dalam piksel. Ini merupakan bilangan baris bagi " +"setiap jubin." + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Ofset Jubin" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"Untuk setiap jubin, ofset bait bagi jubin tersebut, dimampatkan dan disimpan " +"dalam cakera. Ofset dinyatakan pada permulaan fail TIFF. Perhatian, ini " +"laksanakan pada setiap jubin yang mempunyai lokasi yang bebas daripada " +"lokasi fail lain." + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Kiraan Bait Jubin" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"Untuk setiap jubin, bilangan (termampat) bait didalam jubin tersebut. Rujuk " +"TOfset Jubin untuk keterangan bagaimana kiraan bait ditertibkan." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "Ofset SubIFD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"Ditakrif oleh Adobe Corporation untuk membenarkan Pepohon TIFF didalam fail " +"TIFF." + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Set Dakwat" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "Set dakwat yang digunakan dalam imej yang berasingan." + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "Nama Dakwat" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "Nama setiap dakwat yang digunakan dalam imj yang berasingan." + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "Bilangan Dakwat" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" +"Bilangan dakwat. Biasanya menyamai SamplesPerPixel, jika tiada sampel " +"tambahan." + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "Julat Bintik" + +#: src/tags.cpp:622 +#, fuzzy, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "Nilai komponen yang berkaitan dengan 0% dot dan 100% dot." + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "Pencetak Sasaran" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "Keterangan persekitaran cetakan yang mana pemisahan dicadangkan." + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "Sampel Tambahan" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" +"Nyatakan setiap piksel mempunyai komponen tambahan m yang mana interpretasi " +"ditakrif oleh salah satu nilai yang tersenarai dibawah." + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "Format Sampel" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" +"Medan ini menyatakan bagaimana hendak tafsir setiap sampel data didalam " +"piksel." + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "Nilai Sampel SMin" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "Medan ini nyatakan nilai sampel minimum." + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "Nilai Sampel SMax" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "Medan ini nyatakan nilai sampel maksimum." + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Julat Pemindahan" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "Kembangkan julat bagi TransferFunction" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "Laluan Klip" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" +"ClipPath TIFF yang dituju untuk cerminkan keseteraan kefungsian penciptaan " +"laluan PostScript." + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "Unit Laluan Klip X" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"Bilangan unit yang regangkan lebar imej, dalam bentuk koordinata integer " +"ClipPath." + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "Unit Laluan Klip Y" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "yang regangkan tinggi imej, dalam bentuk koordinata integer ClipPath." + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" +"Imej terindeks adalah imej yang mana 'piksel' tidak mewakili nilai warna, " +"tetapi mempunyai indeks (biasanya 8-bit) dalam jadual warna yang berasingan, " +"PetaWarna." + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "Jadual JPEG" + +#: src/tags.cpp:661 +#, fuzzy +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" +"Tag pilihan ini mungkin digunakan untuk mengekod jadual Huffman dan " +"pengkuantitian JPEG untuk kegunaan kemudian prosese menyahmampat JPEG." + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "Proksi OPI" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" +"OPIProxy memberikan maklumat sama ada imej ini adalah proksi resolusi-rendah " +"bagi imej beresolusi-tinggi (Adobe OPI)." + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "Proses JPEG" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" +"Medan ini menyatakan proses yang digunakan untuk menghasilkan data termampat" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "Format Pertukaran JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"Ofset pada bait mula (SOI) bagi data thumbnail termampat JPEG. Ia tidak " +"digunakan untuk data JPEG imej utama." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "Panjang Format Pertukaran JPEG" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"Bilangan bait bagi data thumbnail termampat JPEG. Ia tidak digunakan untuk " +"data JPEG imej utama. Thumbnail JPEG tidak dibahagi tetapi dirakam sebagai " +"strim bit JPEG berterusan dari SOI ke EOI. Penanda Appn dan COM tidak " +"direkodkan. Thumbnail termampat mesti direkod tidak lebih dari 64 Kbait, " +"termasuklah semua data lain yang direkod dalam APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "Sela Mula Semula JPEG" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Medan ini menunjukkan panjang sela mula semula yang digunakan dalam data " +"imej termampat." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "Peramal Tak Hilang JPEG" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" +"Medan ini menuju ke senarai nilai pemilihan-peramal tak hilang, satu per " +"komponen." + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "Jelma Titik JPEG" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "Medan ini menuju ke senarai nilai jelma titik, satu per komponen." + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "Jadual-Q JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" +"Medan ini menuju ke senarai ofset kepada jadual pengkuantitian, satu per " +"komponen." + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "Jadual-DC JPEG" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" +"Medan ini menuju ke senarai ofset ke jadual Huffman DC atau jadual Huffman " +"tak hilang, satu per komponen." + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "Jadual-AC JPEG" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" +"Medan ini menuju ke senarai ofset ke jadual Huffman AC, satu per komponen." + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Pekali matriks untuk penjelmaan dari data imej RGB kepada YCbCr. Tiada lalai " +"diberikan dalam TIFF; tetapi disini nilai diberikan dalam Apendiks E, " +"\"Garis Panduan Ruang Warna\", digunakan sebagai lalai. Ruang warna " +"diisytihar dalam tag maklumat ruang warna, dengan lalai memberikan " +"karakteristik imej optimum saling kendalikan syarat ini." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "Sub-Persampelan YCbCr" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Nisbah persampelan bagi komponen kekrominaan yang berkaitan dengan komponen " +"luminans. Dalam data termampat JPEG penanda JPEG digunakan selain dari tag " +"ini." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"Kedudukan komponen kekrominaan yang berkaitan dengan komponen luminans. " +"Medan ini direka hanya untuk data termampat JPEG atau data YCbCr tidak " +"termampat. Lalai TIFF adalah 1 (ditengahkan); tetapi bila Y:Cb:Cr = 4:2:2 ia " +"disarankan dalam piawaian ini supaya 2 digunakan untuk merekod data, untuk " +"pertingkatkan kualiti imej bila dilihat dalam sistem TV. Bila medan ini " +"tidak wujud, pembaca akan anggap lalai TIFF. Dalam kes Y:Cb:Cr = 4:2:0, " +"lalai TIFF (ditengahkan) adalah disarankan. Jika pembaca tidak mempunyai " +"keupayaan untuk menyokong kedua-dua jenis , ia akan " +"menuruti lalai TIFF tanpa melihat nilai dalam medan ini. Adalah baik pembaca " +"boleh menyokong kedua-dua kedudukan tersebut." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Hitam/Putih Rujukan" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"Nilai titik hitam rujukan dan nilai titik putih rujukan. Tiada lalai " +"diberikan dalam TIFF, tetapi nilai dibawah diberikan sebagai lalai disini. " +"Ruang warna diisytiharkan dalam tag maklumat ruang warna, dengan lalai " +"menjadi nilai yang memberikan karakteristik imej optimum saling kendalikan " +"syarat ini." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "Paket XML" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Data Meta XMP (Adobe technote 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Penarafan Windows" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Tag penarafan yang digunakan oleh Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Peratus Penarafan Windows" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Tag penarafan yang digunakan oleh Windows, nilai dalam peratus" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "ID Imej" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" +"ImageID adalah nama laluan penuh bagi imej asal yang beresolusi-tinggi, atau " +"lain-lain rentetan dikenalpasti yang mana kenalpasti secara unik imej " +"asalnya (Adobe OPI)." + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "Dimensi Corak Ulang CFA" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" +"Mengandungi dua nilai yang mewakili baris dan lajur minimum untuk takrifkan " +"corak berulang bagi tatasusunan penapis warna" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Menunjukkan corak geometrik tatasusunan penapis warna (CFA) bagi penderia " +"imej bila penderia kawasan warna satu-cip digunkan. Ia tidak laksanakan pada " +"semua kaedah penderiaan." + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Maklumat hakcipta. Dalam piawaian ini, tag digunakan untuk menunjukkan kedua-" +"dua hakcipta jurufoto dan penyunting. Adalah makluman hakcipta individu atau " +"organisasi yang menuntut hak sesebuah imej. Saling kendalian pernyataan " +"hakcipta termasuklah tarikh dan hak yang patut ditulis dalam medan ini; " +"iaitu, \"Hakcipta, John Smith, 19xx. Hak cipta terpelihara.\". Dalam piawain " +"ini, medan merekod kedua-dua hakcipta jurufoto dan penyunting, dengan " +"setiapnya direkod dalam bahagian penyataan yang berasingan. Bila terdapat " +"perbezaan yang jelas diantara hakcipta jurufoto dengan penyunting, ia akan " +"ditulis dalam tertib hakcipta jurufoto dan diikut penyunting, yang dipisah " +"dengan tanda NOL (dalam kes ini oleh kerana penyataan juga berakhir dengan " +"tanda NOL, jadi akan ada dua kod NOL). Hanya bila hakcipta jurufoto diberi, " +"ia ditamatkan oleh satu kod NOL. Hanya bila hakcipta penyunting diberi, " +"bahagian hakcipta jurufoto mengandungi satu ruang yang diikuti dengan kod " +"NOL yang ditamatkan, maka hakcipta penyunting diberikan. Bila medan " +"dibiarkan kosong, ia dianggap tidak diketahui." + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "Masa dedahan, diberi dalam saat." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "Nombor F." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Mengandungi rekod IPTC/NAA" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Blok Sumber Imej" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "Mengandungi maklumat terbenam oleh aplikasi Adobe Photoshop" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Merupakan penuding pada IFD Exif, IFD Exif mempunyai struktur yang sama " +"sepertimana IFD yang dinyatakan dalam TIFF. Namun, ia tidak mengandungi data " +"imej sebagaimana dalam kes TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Profil InterColor" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Mengandungi profil/pencirian ruang warna format InterColor Consortium (ICC)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"Kelas program yang digunakan oleh kamera untuk tetapkan dedahan bila gambar " +"diambil." + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" +"Menunjukkan kepekaan spektral bagi setiap saluran kamera yang digunakan." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Menunjukkan IFD Maklumat GPS. Struktur Saling Kendali bagi IFD Maklumat GPS, " +"seperti IFD Exif, tidak mempunyai data imej." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "Kadaran Kelajuan ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"Menunjukkan Kelajuan ISO dan Latitud ISO kamera atau peranti input " +"sepertimana yang dinyatakan dalam ISO 12232." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Menunjukkan Fungsi Penukara Opto-Elektrik yang dinyatakan dalam ISO 14524." + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "Berselang seli" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "Menunjukkan bilangan medan bagi imej medan-berbilang." + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "Ofset Zon Waktu" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" +"Tag pilihan ini mengekod zon waktu untuk jam kamera (relatif dengan Waktu " +"Min Greenwich) digunakan untuk mencipta nilai-tag DataTimeOriginal bilamana " +"gambar diambil. Ia juga mengandungi ofset zon waktu bagi jam yang digunakan " +"untuk mencipta nilai-tag DateTime bila imej diubahsuai." + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "Mod Pemasa Kendiri" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "Bilangan saat tangkapan imej dilengahkan dari penekanan butang." + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "Waktu Tarikh Asal" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "Tarikh dan waktu bila data imej asal dijana." + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "Khusus pada data termampat; nyatakan bit termampat per piksel." + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Kelajuan pengatup." + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "Bukaan kanta" + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "Nilai kecerahan." + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "Bias dedahan." + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Nilai Bukaan Maksimum" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "Nombor F terkecil kanta." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "Jarak subjek, diberikan dalam meter." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Merupakan mod pemeteran." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Sejenis sumber cahaya." + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "Menunjukkan status denyar bila imej ditangkap." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "Panjang fokus sebenar kanta, dalam mm." + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "Jumlah tenaga percikan (BCPS)" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "SFR bagi kamera." + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Hingar" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "Nilai pengukuran hingar." + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Bilangan piksel per FocalPlaneResolutionUnit (37392) dalam arah ImageWidth " +"untuk imej utama." + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Bilangan piksel per FocalPlaneResolutionUnit (37392) dalam arah ImageLength " +"untuk imej utama." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"Unit pengukuran untuk FocalPlaneXResolution(37390) dan FocalPlaneYResolution" +"(37391)." + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "Bilangan yang diumpuk ke imej, iaitu, dalam ledakan imej berantai." + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "Pengelasan Keselamatan" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "Pengelasan keselamatan yang diumpuk ke imej." + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "Rekod yang telah dibuat kepada imej." + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" +"Menunjukkan lokasi dan kawasan subjek utama dalam keseluruhan penggambaran." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "Kodkan tetapan indeks dedahan kamera bila imej ditangkap." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "ID Piawai TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Mengandungi empat aksara ASCII yang mewakili versi piawai TIFF/EP bagi fail " +"TIFF/EP, iaitu '1', '0', '0', '0'" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "Jenis penderia imej." + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Tajuk Windows" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Tag tajuk yang digunakan oleh Windows, dikodkan dalam UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Ulasan Windows" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Tag ulasan yang digunakan oleh Windows, dikodkan dalam UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Pengarang Windows" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Tag pengarang yang digunakan oleh Windows, dikodkan dalam UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Kata Kunci Windows" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Tag kata kunci yang digunakan oleh Windows, dikodkan dalam UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Subjek Windows" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Tag subjek yang digunakan oleh Windows, dikodkan dalam UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "Pemadanan Imej Cetak" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "Pemadanan Imej Cetak, keterangan diperlukan." + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "Versi DNG" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"Tag ini kodkan nombor versi empat-peringkat DNG. Untuk fail yang menuruti " +"versi 1.1.0.0 bagi spesifikasi DNG, tag ini patut mengandungi bait: 1, 1, 0, " +"0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "Versi terbelakang DNG" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Tag ini menyatakan versi terlama spesifikasi Negatif Digital yang mana fail " +"tidak serasi. Pembaca tidak akan cuba membaca fail jika tag ini nyatakan " +"nombor versi yang lebih tinggi dari nombor versi spesifikasi pembaca " +"gunakan. Selain dari memeriksa tag versi, pembaca patut lakukan, untuk semua " +"tag, semak jenisnya, kiraannya, dan nilainya, dan juga mengesahkannya supaya " +"dapat membaca fail dengan betul." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Model Kamera Unik" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"Takrifkan nama bukan-setempat yang unik untuk model kamera yang cipta imej " +"dalam fail raw. Nama ini patut sertakan nama pengilang untuk menghindari " +"konflik, dan tidak perlu disetempatkan, walaupun nama kamera tersebut telah " +"disetempatkan untuk pasaran yang berlainan (rujuk LocalizedCameraModel). " +"Rentetan ini mungkin digunakan oleh perisian pembaca untuk indekskan " +"keutamaan per-model dan profil penggantian." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Model Kamera Setempat" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"Serupa dengan medan Model Kamera Unik, kecuali nama boleh disetempatkan " +"untuk pasaran yang berlainan untuk memadani penyetempatan nama kamera." + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "warna Satah CFA" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" +"Menyediakan pemetaan diantara nilai dalam tag CFAPattern dan bilangan satah " +"dalam ruang LinearRaw. Ia merupakan tag yang diperlukan untuk imej CFA bukan-" +"RGB." + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "Bentangan CFA" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "Terangkan bentangan spatial CFA." + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" +"Terangkan jadual carian yang petakan nilai tersimpan kepada nilai linear. " +"Tag ini digunakan untuk meningkatkan nisbah pemampatan dengan menyimpan data " +"raw dalam bukan-linear, lebih ruang seragam yang lebih visual dengan " +"sejumlah aras pengekodan yang lebih sedikit. Jika SamplesPerPixel tidak " +"menyamai kepada satu, jadual tunggal ini dilaksana kepada semua sampel untuk " +"setiap piksel." + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "Malap Ulangan Aras Hitam" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "Nyatakan saiz corak ulangan untuk tag Aras Hitam." + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" +"Nyatakan aras pengekodan cahaya sifar (iaitu hitam termal), sebagai corak " +"pengulangan. Asal corak ini adalah bucu kiri-atas bagi segiempat tepat " +"Kawasan Aktif. Nilai disimpan dalam tertib imbasan sampel-lajur-baris." + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Delta H Aras Hitam" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" +"Jika aras pengekodan cahaya sifar adalah fungsi bagi lajur imej, " +"BlackLevelDeltaH nyatakan perbezaan diantara aras pengekodan cahaya sifar " +"untuk setiap lajur dan aras pengekodan cahaya sifar dasar. Jika " +"SamplesPerPixel tidak menyamai satu, jadual tunggal ini dilaksana pada semua " +"sampel untuk setiap piksel." + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Delta V Aras Hitam" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" +"Jika aras pengekodan cahaya sifar adalah fungsi bagi baris imej, " +"BlackLevelDeltaH nyatakan perbezaan diantara aras pengekodan cahaya sifar " +"untuk setiap baris dan aras pengekodan cahaya sifar dasar. Jika " +"SamplesPerPixel tidak menyamai satu, jadual tunggal ini dilaksana pada semua " +"sampel untuk setiap piksel." + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Aras Putih" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" +"Tag ini menyatakan aras pengekodan sepenuhnya tepu untuk nilai sampel raw. " +"Ketepuan disebabkan sama ada oleh penderia itu sendiri yang menjadi bukan-" +"linear yang sangat tinggi bila membalas, atau oleh analog kamera terhadap " +"pengetipan penukaran digital." + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "Skala Lalai" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" +"Skala Lalai diperlukan untuk kamera dengan piksel tanpa-petak. Ia nyatakan " +"faktor skala lalai untuk setiap arah untuk menukar imej kepada piksel petak. " +"Umumnya faktor ini adalah dipilih untuk kekalkan kiraan jumlah piksel. Bagi " +"imej CFA yang menggunakan Bentangan CFA menyamai dengan 2, 3, 4, atau 5 " +"seperti SuperCCD Fujifilm, kedua-dua nilai ini sepatutnya berbeza dengan " +"faktor sebanyak 2.0." + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "Asalan Keratan Lalai" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" +"Imej raw biasanya menyimpan piksel tambahan disekitar pinggir imej akhir. " +"Piksel tambahan ini bantu menghindari interpolasi artifaks yang berhampiran " +"pinggir imej akhir. DefaultCropOrigin nyatakan asal kawasan imej akhir, " +"dalam koordinat imej raw (iaitu sebelum Skala Lalai dilaksanakan), ia " +"relatif pada bucu kiri-atas bagi segiempat tepat Kawasan Aktif." + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "Saiz Kerat Lalai" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" +"Imej raw biasanya menyimpan piksel tambahan disekitar pinggir imej akhir. " +"Piksel tambahan ini bantu menghindari interpolasi artifaks yang berhampiran " +"pinggir imej akhir. DefaultCropSize nyatakan saiz kawasanawasan imej akhir, " +"dalam koordinat imej raw (iaitu sebelum Skala Lalai dilaksanakan)." + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matriks Warna 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" +"ColorMatrix1takrifkan penjelmaan matriks yang menukar nilai XYZ kepada nilai " +"ruang warna tabii kamera rujukan, dibawah iluminasi penentukuran pertama. " +"Nilai matriks disimpan dalam tertib imbas baris. Tag ColorMatrix1 diperlukan " +"untuk semua fail DNG bukan-monokrom." + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matrik Warna 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" +"ColorMatrix2takrifkan penjelmaan matriks yang menukar nilai XYZ kepada nilai " +"ruang warna tabii kamera rujukan, dibawah iluminasi penentukuran kedua. " +"Nilai matriks disimpan dalam tertib imbas baris." + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Penentukuran Kamera 1" + +#: src/tags.cpp:978 +#, fuzzy +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"Penentukuran Kamera 1 takrifkan matriks penentukuran yang jelmakan nilai " +"ruang tabii kamera rujukan kepada nilai ruang tabii kamera individu dibawah " +"iluminasi penentukuran pertama. Matriks disimpan dalam tertib imbas baris. " +"Matriks ini disimpan secara berasingan dari matriks yang dinyatakan oleh tag " +"Matriks Warna 1 untuk membenarkan penukar raw menyilih pengganti matriks " +"warna yang berasaskan tag UniqueCameraModel, dan masih mengambil kelebihan " +"penentukuran kamera per-individu yang dibuat oleh pengilang kamera." + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "Penentukuran Kamera 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"Penentukuran Kamera 2 takrifkan matriks penentukuran yang jelmakan nilai " +"ruang tabii kamera rujukan kepada nilai ruang tabii kamera individu dibawah " +"iluminasi penentukuran kedua. Matriks disimpan dalam tertib imbas baris. " +"Matriks ini disimpan secara berasingan dari matriks yang dinyatakan oleh tag " +"Matriks Warna 2 untuk membenarkan penukar raw menyilih pengganti matriks " +"warna yang berasaskan tag UniqueCameraModel, dan masih mengambil kelebihan " +"penentukuran kamera per-individu yang dibuat oleh pengilang kamera." + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "Matriks Pengurangan 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"Matriks Pengurangan 1 takrifkan matriks pengurangan secara dimensi untuk " +"digunakan sebagai tahap pertama semasa menukar nilai ruang tabii kamera " +"warna kepada nilai XYZ, dibawah iluminasi penentukuran pertama. Tag ini " +"hanya boleh digunakan jika Satah Warna lebih besar daripada 3. Matriks " +"disimpan dalam tertib imbas baris." + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "Matriks Pengurangan 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"Matriks Pengurangan 2 takrifkan matriks pengurangan secara dimensi untuk " +"digunakan sebagai tahap pertama semasa menukar nilai ruang tabii kamera " +"warna kepada nilai XYZ, dibawah iluminasi penentukuran kedua. Tag ini hanya " +"boleh digunakan jika Satah Warna lebih besar daripada 3. Matriks disimpan " +"dalam tertib imbas baris." + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Imbangan Analog" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" +"Biasanya, niali raw tersimpan bukanlah terimbang putih, kerana sebarang " +"pengimbangan putih digital akan kurangkan julat dinamik bagi imej akhir jika " +"pengguna bercadang untuk melaras imbangan putih kemudian; namun, jika " +"perkakasan kamera berupaya mengimbangkan putih saluran warna sebelum isyarat " +"didigitkan, ia boleh pertingkatkan julat dinamik bagi imej akhir. Imbangan " +"Analog takrifkan gandaan, sama ada analog (disarankan) atau digital (tidak " +"disarankan) yang telah dilaksana pada nilai raw tersimpan." + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Sebagai Neutral Syot" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" +"Nyatakan imbangan putih terpilih pada masa tangkapan, dikodkan sebagai " +"koordinat bag warna neutral yang sempurna dalam nilai ruang rujukan linear. " +"Pemasukan tag ini menghalang pemasukan tag AsShotWhiteXY." + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "Sebagai Syot Putih XY" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" +"Nyatakan imbangan putih terpilih pada masa tangkapan, dikodkan sebagai " +"koordinat kekromatan x-y. Pemasukan tag ini menghalang pemasukan tag " +"AsShotNeutral." + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "Dedahan Garis Dasar" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" +"Model kamera berbeza keseimbangan yang dihasilkan diantara ruang atas " +"sorotan dan hingar bayang. Sesetengahnya meninggalkan sejumlah ruang atas " +"sorotan yang jelas semasa dedahan biasa. Ia membenarkan pemampasan dedahan " +"negatif yang jelas dilaksanakan semasa penukaran raw, tetapi dedahan biasa " +"akan mengandungi lebih hingar bayang. Model lain meninggalkan ruang atas " +"lebih sedikit semasa dedahan biasa. Ia membenarkan pemampasan dedahan " +"negatif yang lebih sedikit, tetapi hasilnya hingar bayang lebih rendah pada " +"dedahan biasa. Oleh kerana terdapat perbezaan ini, penukar raw perlu berbeza " +"takat sifarnya untuk kawalan pemampasan dedahan mengikut model. " +"BaselineExposure juga menyatakan berapa banyak ( dalam unit EV) untuk gerak " +"takat sifar. Nilai positif menghasilkan hasil lalai yang lebih cerah, " +"manakala nilai negatif menghasilkan hasil lalai yang lebih gelap." + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "Hingar Garis Dasar" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" +"Nyatakan aras hingar relatif bagi model kamera pada nilai ISO asas 100, " +"dibandingkan pada model kamera rujukan. Oleh kerana aras hingar berbeza kira-" +"kira punca kuasa dua dari nilai ISO, penukar raw boleh gunakan nilai ini, " +"digabungkan dengan ISO semasa, untuk mengganggarkan aras hingar relatif bagi " +"imej semasa." + +#: src/tags.cpp:1054 +msgid "Baseline Sharpness" +msgstr "Kejelasan Garis Dasar" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" +"Nyatakan aras sejumlah relatif penjelasan yang diperlukan untuk model kamera " +"ini, dibandingkan pada model kamera rujukan. Model kamera berbeza kekuatan " +"penapis anti-alias mereka. Kamera dengan penapis lemah atau tanpa penapis " +"kurang perlukan penjelasan berbanding kamera yang mempunyai penapis anti-" +"alias yang kuat." + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "Pisah Hijau Bayer" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" +"Hanya dilaksana pada imej CFA menggunakan tatasusunan penapis corak Bayer. " +"Tag ini dinyatakan, dalam unit arbitari, berapa hampir nilai piksel hijau " +"dalam trek baris biru/hijau bagi piksel hijau dalam baris merah/hijau. Nilai " +"sifar bermaksud terdapat dua jenis trek piksel hijau yang berhampiran, " +"manakala nilai bukan-sifar bermaksud ia kadangkala mencapah. Julat berguna " +"untuk tag ini adalah bermula dari 0 (tanpa capah) sehinggalah 5000 (capahan " +"yang agak besar)." + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "Had Balas Linear" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" +"Sesetengah penderia mempunyai tidak-linear dalam balasan mereka bilamana ia " +"menghampiri had atas julat pengekodan mereka. Keputusan tidak-linear ini " +"menghasilkan anjakan-warna dalam kawasan sorotan imej yang terhasil " +"melainkan penukar raw mengimbangi kesan ini. LinearResponseLimit nyatakan " +"pecahan julat pengekodan diatas yang mana balasan mungkin menjadi tidak-" +"linear yang jelas." + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"Nombor Siri Kamera mengandungi nombor siri kamera atua badan kamera yang " +"menangkap imej." + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Maklumat Kanta" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" +"Mengandungi maklumat mengenai kanta yang menangkap imej. Jika hentian-f " +"minimum tidak diketahui, ia sepatutnya dikodkan sebagai 0/0." + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "Jejari Kabur Kroma" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" +"ChromaBlurRadius menyediakan pembayang kepada pembaca DNG mengenai berapa " +"banyak kabur kroma patut dilaksana kepada imej. Jika tag ini disingkirkan, " +"pembaca akan guna jumlah lalai pengaburan kroma. Umumnya tag ini hanya " +"disertakan pada imej bukan-CFA, kerana jumlah kabur kroma diperlukan untuk " +"imej mozek yang sangat bergantung dalam algoritma nyah-mozek, yang mana " +"nilai lalai pembaca DNG akan dioptimumkan bagi algortima nyah-mozek " +"tertentunya." + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "kekuatan Anti Alias" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" +"Sediakan pembayan kepada pembaca DNG mengenai berapakah kekuatan penapis " +"anti-alias kamera. Nilai 0.0 bermaksud tiada penapis anti-alias (iaitu " +"kamera akan anti-aliaskan artifaks dengan sesetengah subjek), manakala nilai " +"1.0 bermaksud penapis anti-alias yang kuat (iaitu kamera hampir tidak " +"mengaliaskan artifak)." + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "Skala Bayang" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" +"Tag ini digunakan oleh Raw Kamera Adobe untuk mengawal kepekaan pelungsur " +"'Bayang'." + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "Data Peribadi DNG" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" +"Sediakan cara untuk pengilang kamera menyimpan data peribadi dalam fail DNG " +"untuk diguna oleh penukar raw mereka sendiri, dan mempunyai data yang " +"disimpan oleh program yang menyunting fail DNG." + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "Keselamatan MakerNote" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" +"MakerNoteSafety membolehkan pembaca DNG tahu sama ada tag MakerNote EXIF " +"adalah selamt disimpan bersama-sama data EXIF yang lain. Pelayar fail dan " +"lain-lain perisian pengurusan imej memproses imej yang ada MakerNote " +"tersimpan mengetahui bahawa sebarang imej thumbnail yang terbenam dalam " +"MakerNote mungkin sudah lapok, dan tidak merujuk pada keadaan semasa imej " +"bersaiz penuh tersebut." + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "Iluminan Penentukuran 1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" +"Iluminan digunakan untuk tetap kali pertama tag penentukuran warna " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). Nilai sah bagi tag ini " +"adalah sama dengan nilai sah bagi tag EXIF LightSource." + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "Iluminan Penentukuran 2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" +"Iluminan yang digunakan untuk set kedua pilihan bagi tag penentukuran warna " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). Nilai sah bagi tag ini " +"adalah sama dengan nilai sah bagi tag CalibrationIlluminant1; namun, jika " +"kedua-duanya disertakan, ia tidak boleh mempunyai nilai 0 (tidak diketahui)." + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "Skala Kualiti Terbaik" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" +"Bagi sesetengah kamera, kualiti imej yang terbaik tidak dicapai dengan " +"mengekalkan kiraan jumlah piksel semasa penukaran. Contohnya, imej SuperCCD " +"Fujifilm mempunyai perincian maksimum bila kiraan jumlah pikselnya " +"digandakan. Tag ini menyatakan jumlah nilai tag DefaultScale perlu untuk " +"digandakan untuk mencapai saiz imej berkualiti terbaik." + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "ID Unik Data Raw" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" +"Tag ini mengandungi pengenalpasti unik 16-bait untuk data imej raw dalam " +"fail DNG. Pembaca DNG boleh gunakan tag ini untuk mengenalpasti imej raw " +"tertentu, walaupun jika nama fail atau data meta terkandung dalam fail telah " +"berubah. Jika penulis DNG mencipta pengenalpasti sebegitu, ia patut dibuat " +"menggunakan algortima yang akan pastikan ia dua imej yang berbeza tidak " +"mempunyai pengenalpasti yang sama." + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Nama Fail Raw Asal" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" +"Jika fail DNG telah ditukar dari fail raw bukan-DNG, maka tag ini " +"mengandungi nama fail bagi fail raw asal tersebut." + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "Data Fail Raw Asal" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" +"Jika fail DNG telah ditukar dari fail raw bukan-DNG, maka tag ini " +"mengandungi nama fail bagi fail raw asal tersebut. Kandungan tag ini " +"sentiasa menggunakan tertib bait endian-besar. Tag mengandungi satu jujukan " +"blok data. Versi akan datang bagi spesifikasi DNG akan takrifkan blok data " +"tambahan, jadi pembaca DNG patut abaikan bait tambahan bila menghurai tag " +"ini. Pembaca DNG juga dapat mengesan blok data yang hilang dari penghujung " +"jujukan, dan boleh anggap nilai lalai untuk semua blok yang hilang. Tiada " +"bait pemadatan atau jajaran diantara blok data." + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Kawasan Aktif" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" +"Segiempat tepat ini takrifkan piksel aktif (tanpa-topeng) penderia. Tertib " +"bagi koordinat segiempat tepat ialah: atas, kiri, bawah, kanan." + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Kawasan Bertopeng." + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" +"Tag ini mengandungi senarai koordinat segiempat tepat tidak-bertindih bagi " +"piksel bertopeng penuh, yang mana secara pilihan diguna oleh pembaca DNG " +"untuk mengukur aras pengekodan hitam. Tertib bagi setiap koordinat segiempat " +"tepat ialah: atas, kiri, bawah, kanan. Jika data imej raw sudah membuang " +"aras pengekodan hitamnya, maka tag ini tidak perlu digunakan, kerana piksel " +"bertopeng tidak lagi diperlukan." + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "Profil ICC As-Shot" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" +"Tag ini mengandungi profil ICC yang mana berhubung dengan tag " +"AsShotPreProfileMatrix, disediakan oleh pengilang kamera sebagai cara " +"nyatakan penerapan warna dari koordinat ruang warna kamera (nilai rujukan " +"linear) kedalam ruang sambungan profil ICC. Ruang sambungan profil ICC " +"adalah ruang kolorimetrik rujukan output, yang mana tag penentukuran warna " +"lain dalam DNG nyatakan penukaran kepada ruang kolorimetrik rujukan adegan. " +"Ia bermakna penerapan profil ini patut sertakan sebarang pemetaan ton dan " +"gamut yang dikehendaki untuk tukar diantara nilai rujukan adegan denga nilai " +"rujukan output." + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "Martrik Pra-Profil As-Shot" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" +"Tag ini digunakan untuk hubung dengan tag AsShotICCProfile. ia nyatakan " +"matrik yang patut dilaksana kepada koordinat ruang warna kamera sebelum " +"memproses nilai menerusi profil ICC yang dinyatakan dalam tag " +"AsShotICCProfile. Matrik disimpan dalam tertib imbas baris. Jika satah Warna " +"lebih besar dari tiga, maka matrik ini boleh (tetapi tidak diperlukan) " +"mengurangkan kedimensian data warna sehingga kepada tiga komponen, yang mana " +"AsShotICCProfile patut mempunyai tiga sahaja berbanding komponen input Satah " +"Warna." + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Profil ICC Semasa" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Tag ini digunakan untuk berhubung dengan tag CurrentPreProfileMatrix. Tag " +"CurrentICCProfile dan CurrentPreProfileMatrix mempunyai tujuan dan kegunaan " +"yang sama seperti pasangan tag AsShotICCProfile dan AsShotPreProfileMatrix, " +"kecuali ia digunakan untuk penyunting fail raw berbanding pengilang kamera." + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "Matrik Pra-Profil Semasa" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Tag ini digunakan untuk berhubung dengan tag CurrentICCProfile. Tag " +"CurrentICCProfile dan CurrentPreProfileMatrix mempunyai tujuan dan kegunaan " +"yang sama seperti pasangan tag AsShotICCProfile dan AsShotPreProfileMatrix, " +"kecuali ia digunakan oleh penyunting fail raw berbanding pengilang kamera." + +#: src/tags.cpp:1212 +msgid "Colorimetric Reference" +msgstr "Rujukan Kolorimetrik" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" +"Dokumen model warna DNG adalah penjelmaan diantara warna kamera denga nilai " +"CIE XYZ. Tag ini menerangkan rujukan kolorimetrik untuk nilai CIE XYZ. 0 = " +"Nilai XYZ dirujuk-adegan. 1 = NIlai XYZ dirujuk-output, menggunakan julat " +"dinamik perseptual profil ICC. Tag ini membolehkan data dirujuk-output " +"disimpan dalam fail DNG dan masih diproses dengan baik oleh pembaca DNG." + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "Tandatangan Tentukur Kamera" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" +"Rentetan terenkod UTF-8 berkaitan dengan tag CameraCalibration1 dan " +"CameraCalibration2. Tag CameraCalibration1 dan CameraCalibration2 seharusnya " +"digunakan dalam penjelmaan warna DNG jika rentetan disimpan dalam tag " +"CameraCalibrationSignature adalah sepadan dengan rentetan yang disimpan " +"dalam tag ProfileCalibrationSignature untuk profil kamera terpilih." + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "Tandatangan Tentukur Profil" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" +"Rentetan terenkod UTF-8 berkaitan dengan tag profil kamera. Tag " +"CameraCalibration1 dan CameraCalibration2 seharusnya digunakan dalam " +"penjelmaan warna DNG jika rentetan disimpan dalam tag " +"CameraCalibrationSignature adalah sepadan dengan rentetan yang disimpan " +"dalam tag ProfileCalibrationSignature untuk profil kamera terpilih." + +#: src/tags.cpp:1234 +msgid "As Shot Profile Name" +msgstr "Sebagai Nama Profil Syot" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" +"Rentetan terenkod UTF-8 yang mengandngi nama profil kamera \"bila syot\", " +"jika ada." + +#: src/tags.cpp:1238 +msgid "Noise Reduction Applied" +msgstr "Pengurangan Hingar Dilaksana" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" +"Tag ini menunjukkan berapa banyakkah pengurangan hingar telah dilaksana ke " +"data raw pada skala 0.0 hingga 1.0. Nilai 0.0 menunjukkan tiada pengurangan " +"hingar dilaksanakan. Nilai 1.0 menunjukkan sejumlah \"ideal\" pengurangan " +"hingar telah dilaksanakan, iaitu pembaca DNG seharusnya tidak laksanakan " +"lagi pengurangan hingar secara lalai. Satu nilai 0/0 menunjukkan parameter " +"ini tidak diketahui." + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "Nama Profil" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" +"Rentetan terenkod UTF-8 yang mengandungi nama profil kamera. Tag ini adalah " +"pilihan jika hanya terdapat satu profil kamera tersimpan di dalam fail " +"tetapi diperlukan untuk semua profil kamera jika tidak ada lebih dari satu " +"profil kamera tersimpan di dalam fail." + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "Dim Peta Rona Ketep Profil" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" +"Tag ini menyatakan bilangan sampel input bagi setiap dimensi jadual pemetaan " +"rona/ketepuan/nilai. Data bagi jadual ini disimpan di dalam tag " +"ProfileHueSatMapData1 dan ProfileHueSatMapData2. Dalam kebanyakan kes " +"ValueDivisions menyamai 1, jadi hanya rona dan ketepuan digunakan sebagai " +"input ke dalam jadual pemetaan." + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "Data Rona Ketep Peta Data Profil 1" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" +"Tag ini mengandungi data untuk jadual pemetaan rona/ketepuan/nilai pertama. " +"Setiap masukan jadual mengandungi tiga nilai titik-apung IEEE 32-bit. " +"Masukan pertama adalah anjak rona dalam darjah; masukan kedua ialah faktor " +"skala ketepuan; dan ketiga adalah faktor skala nilai. Masukan jadual " +"disimpan dalam tag di dalam tertib gelung tersarang, dengan pembahagian " +"nilai di dalam gelung luaran, pembahagian rona di dalam gelung pertengahan, " +"dan pembahagian ketepuan di dalam gelung dalaman. Semua masukan ketepuan " +"input sifar diperlukan untuk mempunyai faktor skala nilai 1.0." + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "Profil Rona Ketep Peta Data 2" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" +"Tag ini mengandungi data untuk jadual pemetaan rona/ketepuan/nilai kedua. " +"Setiap masukan jadual mengandungi tiga nilai titik-apung IEEE 32-bit. " +"Masukan pertama adalah anjak rona dalam darjah; masukan kedua ialah faktor " +"skala ketepuan; dan ketiga adalah faktor skala nilai. Masukan jadual " +"disimpan dalam tag di dalam tertib gelung tersarang, dengan pembahagian " +"nilai di dalam gelung luaran, pembahagian rona di dalam gelung pertengahan, " +"dan pembahagian ketepuan di dalam gelung dalaman. Semua masukan ketepuan " +"input sifar diperlukan untuk mempunyai faktor skala nilai 1.0." + +#: src/tags.cpp:1279 +msgid "Profile Tone Curve" +msgstr "Lengkung Tona Profil" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" +"Tag ini mengandungi lekung tona lalai yang boleh dilaksana semasa memproses " +"imej sebagai titik permulaan untuk pelarasan pengguna. Lekung dinyatakan " +"sebagai senarai pasangan nilai titik-apung IEEE 32-bit dalam gamma linear. " +"Setiap sampel mempunyai nilai input dalam julat 0.0 hingga 1.0, dan nilai " +"output dari 0.0 hingga 1.0. Sampel pertama diperlukan menjadi (0.0, 0.0), " +"dan sampel terakhir yang diperlukan menjadi (1.0, 1.0). Interpolasikan " +"lekung menggunakan spline lekung." + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "Polisi Terbenam Profil" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Tag ini mengandungi maklumat mengenai peraturan penggunaan untuk profil " +"kamera berkaitan." + +#: src/tags.cpp:1292 +msgid "Profile Copyright" +msgstr "Hakcipta Profil" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" +"Rentetan terenkod UTF-8 mengandungi maklumat hakcipta bagi profil kamera. " +"Rentetan ini sentiasa dikekalkan bersama-sama tag profil kamera yang lain." + +#: src/tags.cpp:1297 +msgid "Forward Matrix 1" +msgstr "Matriks Maju 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" +"Tag ini mentakrifkan matriks yang petakan warna kamera terimbang ke warna " +"XYZ D50." + +#: src/tags.cpp:1301 +msgid "Forward Matrix 2" +msgstr "Matriks Maju 2" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "Nama Aplikasi Pratonton" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" +"Rentetan terenkod UTF-8 mengandungi nama aplikasi yang mencipta pratonton " +"tersimpan dalam IFD." + +#: src/tags.cpp:1309 +msgid "Preview Application Version" +msgstr "Versi Aplikasi Pratonton" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" +"Rentetan terenkod UTF-8 mengandungi nombor versi aplikasi yang mencipta " +"pratonton tersimpan dalam IFD." + +#: src/tags.cpp:1313 +msgid "Preview Settings Name" +msgstr "Nama Tetapan Pratonton" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" +"Rentetan terenkod UTF-8 yang mengandungi tetapan penukaran (contohnya, nama " +"tangkapan) digunakan untuk pratonton tersimpan dalam IFD." + +#: src/tags.cpp:1317 +msgid "Preview Settings Digest" +msgstr "Cernaan Tetapan Pratonton" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" +"Satu ID unik tetapan penukaran (contohnya, cernaan MD5) digunakan untuk " +"terapkan pratonton tersimpan dalam IFD." + +#: src/tags.cpp:1321 +msgid "Preview Color Space" +msgstr "Ruang Warna Pratonton" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" +"Tag ini menyatakan ruang warna yang mana pratonton terterap dalam IFD ini " +"disimpan. Nilai lalai bagi tag ini adalah sRGB untuk pratonton warna dan " +"Gray Gamma 2.2 untuk pratonton monokrom." + +#: src/tags.cpp:1326 +msgid "Preview Date Time" +msgstr "Tarikh Masa Pratonton" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" +"Tag ini merupakan rentetan ASCII yang mengandungi nama tarikh/masa yang mana " +"pratonton disimpan dalam IFD diterap. Masa/tarikh dienkod menggunakan format " +"ISO 8601." + +#: src/tags.cpp:1331 +msgid "Raw Image Digest" +msgstr "Cernaan Imej Raw" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" +"Tag ini merupakan cernaan MD5 bagi data imej raw. Semua piksel dalam imej " +"diproses dalam tertib imbas-baris. Setiap piksel dipadat sifar ke kedalaman " +"16 atau 32 bit (16-bit untuk data kurang atau menyamai kedalaman 16-bit), 32-" +"bit sebaliknya). Data bagi setiap piksel diproses dalam tertib bait endian-" +"kecil." + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "Cernaan Fail Raw Asal" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" +"Tag ini adalah cernaan MD5 bagi data tersimpan dalam tag OriginalRawFileData." + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "Saiz Blok Sub Jubin" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" +"Biasanya piksel di dalam jubin disimpan dalam tertib imbas-baris mudah. Tag " +"ini menyatakan piksel di dalam jubin seharusnya dikumpulkan dahulu ke dalam " +"bentuk blok segiempat bagi saiz tertentu. Blok ini disimpan dalam tertib " +"imbas-baris. Di dalam setiap blok, piksel disimpam dalam tertib imbas-baris. " +"Penggunaan nilai bukan-lalai bagi tag ini memerlukan penetapan tag " +"DNGBackwardVersion sekurang-kurangnya 1.2.0.0." + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "Faktor Antara Lembar Baris" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" +"Tag ini menyatakan baris imej yang disimpan dalam tertib antara lembar. " +"Nilai tag menyatakan bilangan medan diantara lembar. Penggunaan nilai bukan-" +"lalai bagi tag ini memerlukan penetapan tag DNGBackwardVersion sekurang-" +"kurangnya 1.2.0.0." + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "Dim Jadual Lihat Profil" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" +"Tag ini menyatakan bilangan sampel input dalam setiap dimensi jadual \"lihat" +"\" lalai. Data bagi jadual ini disimpan dalam tag ProfileLookTableData." + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "Data Jadual Lihat Profil" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" +"Tag ini mengandungi jadual \"lihat\" lalai yang boleh dilaksana bila " +"memproses imej sebagai titik permulaan bagi pelarasan pengguna. Jadual ini " +"menggunakan format yang sama sebagai jadual yang disimpan di dalam tag " +"ProfileHueSatMapData1 dan ProfileHueSatMapData2, dan laksanakan ruang warna " +"yang serupa. Namun, ia seharusnya dilaksana kemudian di dalam talian " +"pemprosesan, selepas mana-mana pemampasan dedahan dan/atau isian tahap " +"cahaya, tetapi sebelum mana-mana tahap lekung ton. Setiap masukan jadual " +"mengandungi tiga nilai titik-apung IEEE 32-bit. Masukan pertama adalah " +"anjakan rona dalam darjah. masukan kedua adalah faktor skala ketepuan, dan " +"masukan ketiga adalah faktor skala nilai. Masukan jadual disimpan dalam tag " +"di dalam tertib gelung tersarang, dengan nilai pembahagian dalam gelung " +"luaran, pembahagian rona dalam gelung pertengahan, dan pembahagian ketepuan " +"dalam gelung dalam. Semua masukan input sifar diperlukan mempunyai faktor " +"nilai skala 1.0." + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "Senarai Opcode 1" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" +"Nyatakan senarai opcode yang seharusnya dilaksana ke imej raw, bila dibaca " +"secara terus dari fail." + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "Senarai Opcode 2" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" +"Nyatakan senarai opcode yang seharusnya dilaksana ke imej raw, selepas ia " +"dipetakan ke nilai rujukan linear." + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "Senarai Opcode 3" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" +"Nyatakan senarai opcode yang seharusnya dilaksana ke imej raw, selepas ia " +"dinyahmozek." + +#: src/tags.cpp:1387 +msgid "Noise Profile" +msgstr "Profil Hingar" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" +"NoiseProfile menerangkan sejumlah hingar dalam imej raw. Secara spesifik, " +"tag ini modelkan sejumlah hingar foton bebas-isyarat (tangkapan) dan hingar " +"bacaan penderia bebas-isyarat, dua sumber umum bagi hingar di dalam imej " +"raw. Model menganggap hingar adalah putih dan bebas secara spatial, " +"mengabaikan kesan corak tetap dan lan-lain sumber hingar (cth. piksel yang " +"bertindakbalas terhadap ketidak-seragaman, kesan haba bebas-spatial, dan " +"lain-lain)." + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Tag IFD tidak diketahui" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Tidak ditakrif" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Program kreatif" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Program tindakan" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Mod potret" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Mod lanskap" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Bintik-berbilang" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Tungsten (cahaya berpijar)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Cuaca baik" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Cuaca mendung" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Pendaflour cahaya siang (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Pendaflour putih siang (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Pendaflour putih sejuk (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Pendaflour putih (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Cahaya piawai A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Cahaya piawai B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Cahaya piawai C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "ISO studio tungsten" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Sumber cahaya lain" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Tidak ditentukur" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "Kawasan warna satu-cip" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "Kawasan warna dua-cip" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "Kawasan warna tiga-cip" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "Kawasan berjujukan warna" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Penderia trilinear" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Linear berjujukan warna" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Pengimbas filem" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "Pengimbas cetak pantulan" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Kamera kaku digital" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Difoto secara langsung" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Proses biasa" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Proses suai" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Gandaan rendah naik" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Gandaan tinggi naik" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Gandaan rendah turun" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Gandaan tinggi turun" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Paparan dekat" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Paparan jauh" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Masa dedahan, diberikan dalam saat (s)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"Menunjukkan kepekaan spektral bagi setiap saluran kamera gunakan. Nilai tag " +"adalah rentetan ASCII yang serasi dengan piawaian yang dibangunkan oleh " +"Jawatankuasa Teknikal ASTM." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "Fungsi Penukaran Opto-Elektorik" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"Menunjukkan Fungsi Penukaran Opto-Elektorik (OECF) yang dinyatakan dalam ISO " +"14524. adalah hubungan diantara input optik kamera dengan nilai imej." + +#: src/tags.cpp:1573 +msgid "Sensitivity Type" +msgstr "Jenis Kepekaan" + +#: src/tags.cpp:1574 +#, fuzzy +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" +"Tag SensitivityType menunjukkan tag PhotographicSensitivity, yang mana salah " +"satu parameter bagi ISO12232 walaupun ia adalah tag pilihan, ia seharusnya " +"dirakam bila tag PhotographicSensitivity dirakam. Nilai = 4, 5, 6, atau 7 " +"boleh digunakan jika nilai parameter jamak adalah sama." + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "Kepekaan Output Piawai" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" +"Tag ini menunjukkan tag kepekaan output piawai bagi kamera atau peranti " +"input yang ditakrif dalam ISO12232. Bila merakam tag ini, tag " +"PhotographicSensitivity dan SensitivityType juga dirakam." + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "Indeks Dedahan Disaran" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" +"Tag ini menunjukkan nilai indeks dedahan yang disaran bagi kamera atau " +"peranti input yang ditakrif dalam ISO12232. Bila merakam tag ini, tag " +"PhotographicSensitivity dan SensitivityType juga dirakam." + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" +"Tag ini menunjukkan nilai kelajuan ISO bagi kamera atau peranti input yang " +"ditakrif dalam ISO12232. Bila merakam tag ini, tag PhotographicSensitivity " +"dan SensitivityType juga dirakam." + +#: src/tags.cpp:1595 +msgid "ISO Speed Latitude yyy" +msgstr "Latitud Kelajuan ISO yyy" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" +"Tag ini menunjukkan nilai latitud kelajuan ISO yyy bagi kamera atau peranti " +"input yang ditakrif dalam ISO 12232. Walaubagaimanapun, tag ini tidak " +"dirakam tanpa ISOSpeed atau ISOSpeedLatitudezzz." + +#: src/tags.cpp:1600 +msgid "ISO Speed Latitude zzz" +msgstr "Latitud Kelajuan ISO zzz" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" +"Tag ini menunjukkan nilai latitud kelajuan ISO zzz bagi kamera atau peranti " +"input yang ditakrif dalam ISO 12232. Walaubagaimanapun, tag ini tidak " +"dirakam tanpa ISOSpeed atau ISOSpeedLatitudeyyy." + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"Versi bagi piawaian ini disokong. Ketidakwujudan medan ini dianggap sebagai " +"tidak menuruti piawaian." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Tarikh dan Masa (asal)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Tarikh dan masa bila data imej asal dijana. bagi kamera digital, tarikh dan " +"masa gambar yang diambil telah direkodkan" + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Tarikh dan Masa (berdigit)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Tarikh dan masa bila imej disimpan sebagai data digital." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Maklumat khusus pada data termampat. Saluran bagi setiap komponen disusun " +"dalam tertib dari komponen pertama sehingga ke-4. Untuk data tak mampat, " +"susunan data diberikan dalam tag . Akan tetapi, " +"semenjak hanya booeh mengungkap tertib Y, Cb dan " +"Cr, tag ini disediakan untuk kes bila data termampat menggunakan komponen " +"selain dari Y, Cb, dan Cr dan untuk membenarkan sokongan bagi jujukan yang " +"lain." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Bit Termampat per Piksel" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Maklumat khusus pada data termampat. Mod pemampatan digunakan untuk imej " +"termampat dinyatakan dalam unit bit per piksel." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"Kelajuan pengatup. Unit adalah tetapan APEX (Additive System of Photographic " +"Exposure)" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Pengatup kanta. Unitnya adalah nilai APEX." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Nilai kecerahan. Unitnya adalah nilai APEX. Umumnya ia diberikan dalam julat " +"-99.99 hingga 99.99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Bias Dedahan" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"Bias dedahan. Unitnya adalah nilai APEX. Umumnya ia diberikan dalam julat " +"-99.99 hingga 99.99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"Nombor F terkecil kanta. Unitnya adalah nilai APEX. Umumnya ia diberikan " +"dalam julat 00.00 hingga 99.99. tetapi ia tidak terhad pada julat ini." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "Tag ini direkod bila imej diambil menggunakan cahaya strob (denyar)." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"Panjang fokus sebenar kanta, dalam mm. Penukaran tidak dibuat terhadap " +"panjang fokus bagi kamera filem 35 mm." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Tag ini menunjukkan lokasi dan kawasan subjek utama dalam keseluruhan adegan." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Maker Note" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Tag untuk pengilang penulis Exif bagi merekod sebarang maklumat yang " +"dikehendaki. Kandungannya mengikut kehendak pengilang." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" +"Tag untuk pengguna Exif untuk menulis kata kunci atau ulasan pada imej " +"disamping yang ada didalam , dan tanpa sekatan kod aksara " +"bagi tag ." + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Masa Sub-saat" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "Tag yang digunakan untuk merekod pecahan saat bagi tag ." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Masa Asal Sub-saat" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Tag yang digunakan untuk merekod pecahan saat untuk tag ." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Masa Terdigit Sub-saat" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Tag yang digunakan untuk merekod pecahan saat untuk tag ." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "Versi FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "Versi format FlashPix yang disokong oleh fail FPXR." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"Tag maklumat ruang warna sentiasa direkod sebagai specifier ruang warna. " +"Biasanya sRGB digunakan untuk takrif ruang warna berasaskan syarat dan " +"persekitaran monitor PC. Jika ruang warna lain dari sRGB digunakan, Tak " +"Tentukur ditetapkan. Data imej direkod sebagai Tak Tentukur boleh dianggap " +"sebagai sRGB bila ia ditukarkan kepada FlashPix." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Maklumat khusus pada data termampat. Bila fail termampat direkodkan, lebar " +"sah bagi imej yang bermakna mesti direkod dalam tag ini, sama ada ia atau " +"tiada data pemadatan atau penanda mula semula. Tag ini tidak patut wujud " +"dalam fail tak mampat." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Maklumat khusus pada data termampat. Bila fail termampat direkodkan, tinggi " +"sah bagi imej yang bermakna mesti direkod dalam tag ini, sama ada ia atau " +"tiada data pemadatan atau penanda mula semula. Tag ini tidak patut wujud " +"dalam fail tak mampat. Semenjak pemadatan data tidak diperlukan dalam arah " +"menegak, bilangan baris yang direkod dalam tag tinggi imej sah ini akan sama " +"seperti yang direkodkan dalam SOF." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" +"Tag ini digunakan untuk merakam nama fail audio yang berkaitan dengan data " +"imej. Hanya maklumat berkaitan direkod disini adalah nama fail audio dan " +"sambungan Exif (rentetan ASCII bagi 8 aksara + '.' + 3 aksara). Laluan " +"tidak direkodkan." + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "Saling Kendalian Penuding IFD" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"Saling Kendalian IFD adalah gubahan tag yang menyimpan maklumat untuk " +"memastikan saling kendalian dan dituju oleh tag berikut yang berada dalam " +"IFD Exif. Struktur saling kendali adalah sama seperti struktur IFD tertakrif " +"TIFF tetapi tidak mengandungi karakter data imej yang dibandingkan dengan " +"IFD TIFF biasa." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"Menunjukkan tenaga strobe pada masa imej ditangkap, yang diukur dalam Saat " +"Kuasa Sinaran Lilin (BCPS)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" +"Tag ini merekod jadual frekuensi dan nilai SFR kamera atau peranti input " +"dalam arah lebar imej, tinggi imej, dan pepenjuru, sepertimana yang " +"dinyatakan dalam ISO 12233." + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "Resolusi-X Satah Fokus" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"Menunjukkan bilangan piksel dalam arah lebar imej (X) per " +" dalam satah fokus kamera." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Resolusi-Y Satah Fokus" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Menunjukkan bilangan piksel dalam arah tinggi imej (V) per " +" dalam satah fokus kamera." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"Menunjukkan unit untuk mengukur dan " +". Nilai ini adalah sama dengan ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Menunjukkan lokasi subjek utama dalam adegan. Nilai tag ini mewakili piksel " +"pada pusat subjek utama yang relatif pada pinggir kiri, mendahulu " +"pemprosesan putaran sepertimana tag . Nilai pertama menunjukkan " +"bilangan lajur X dan kedua menunjukkan bilangan baris Y." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Indeks dedahan" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Menunjukkan indeks dedahan terpilih pada kamera atau peranti input pada masa " +"imej ditangkap." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "Menunjukkan jenis penderia imej pada kamera atau peranti input." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Menunjukkan sumber imej. Jika DSC rakamkan imen, nilai tag ini bag tag ini " +"sentiasa ditetapkan kepada 3, menunjukkan imej telah direkod pada DSC." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Menunjukkan jenis adegan. Jika DSC rakamkan imej, nilai tag ini mesti " +"ditetapkan kepada 1, menunjukkan imej telah difotograf secara langsung." + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "Corak Jujukan Penapis Warna" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Menunjukkan corak geometri (CFA) tatasusunan penapis warna bag penderia imej " +"bila penderia kawasan warna satu-cip digunakan. Ia tidak dilaksana pada " +"semua kaedah penderiaan." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Tag ini menunjukkan kegunaan pemprosesan khas pada data imej, seperti " +"penerapan yang bergear pada output. Bila pemprosesan khas dibuat, pembaca " +"menjangka untuk lumpuh atau minimumkan sebarang pemprosesan lanjutan." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Tag ini menunjukkan set mod dedahan bila imej diambil. Dalam mod pendakapan-" +"sendiri, kamera mengambil beberapa siri bingkai bagi adegan yang sama pada " +"tetapan dedahan yang berbeza." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Tag ini menunjukkan mod imbangan putih ditetapkan bila imej telah diambil." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Tag ini menunjukkan nisbah zum digital bila imej telah diambil. Jika " +"pengangka bagi nilai direkod adalah 0, ini menunjukkan zum digital tidak " +"digunakan." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Tag ini menunjukkan panjang fokus yang sama menganggap kamera filem 35mm, " +"dalam mm. Nilai 0 bermaksud jarak fokus tidak diketahui. Perhatian tag ini " +"berbeza dengan tag ." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Tag ini menunjukkan jenis adegan yang diambil. Ia juga digunakan untuk " +"merakam mod yang mana imej telah diambil. Perhatian ia berbeza dari tag " +"." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Tag ini menunjukkan darjah pelarasan gandaan imej secara keseluruhan." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Tag ini menunjukkan arah pemporsesan beza jelas yang dilaksana oleh kamera " +"bila imej diambil." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Tag ini menunjukkan arah pemprosesan ketepuan yang dilaksana oleh kamera " +"bila imej telah diambil." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Tag ini menunjukkan arah pemprosesan kejelasan yang dilaksana oleh kamera " +"bila imej telah diambil." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Tag ini menunjukkan maklumat pada syarat pengambilan-gambar bagi model " +"kamera tertentu. Tag yang diguna hanya untuk menunjukkan syarat pengambilan-" +"gambar dalam pembaca." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Tag ini menunjukkan jarah subjek." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Tag ini menunjukkan pengenalpasti yang diumpuk secara unik kepada setiap " +"imej. Ia dirakam sebagai rentetan ASCII yang menyamai notasi heksadesimal " +"dan panjang tetap 128-bit." + +#: src/tags.cpp:1839 +msgid "Camera Owner Name" +msgstr "Nama Pemilik Kamera" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" +"Tag ini merakam pemilik kamera yang digunakan dalam fotografi sebagai " +"rentetan ASCII." + +#: src/tags.cpp:1843 +msgid "Body Serial Number" +msgstr "Nombor Siri Badan" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" +"Tag ini merakam nombor siri badan kamera yang digunakan dalam fotografi " +"sebagai rentetan ASCII." + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "Spesifikasi Kanta" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" +"Tag ini menyatakan panjang fokus minimum, panjang fokus maksimum, nombor F " +"minimum dalam panjang fokus minimum, dan nombor F minimum dalam panjang " +"fokus maksimum, yang mana maklumat spesifikasi bagi kanta yang digunakan " +"dalam fotografi. Bila nombor F minimum tidak diketahui, catatan adalah 0/0" + +#: src/tags.cpp:1854 +msgid "Lens Make" +msgstr "Buatan Kanta" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "Tag ini merakam pembuat kanta sebagai rentetan ASCII." + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" +"Tag ini merakam nama model dan nombor model kanta sebagai rentetan ACII." + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" +"Tag ini merakam nombor siri bagi kenata boleh ubah yang digunakan dalam " +"fotografi sebagai rentetan ASCII." + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Tag Exif tidak diketahui" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Utara" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Selatan" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Timur" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Barat" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Atas aras laut" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Bawah aras laut" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Pengukuran dalam proses" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Pengukuran Saling Kendali" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Pengukuran dua-dimensi" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Pengukuran tiga-dimensi" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "bsj" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "knot" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Arah sebenar" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Arah magnetik" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilometer" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Batu" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "Knot" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Tanpa pembetulan" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Pembetulan dilaksanakan" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"Menunjukkan versi . Versi diberi sebagai 2.0.0.0. Tag adalah " +"mandatori bila tag adalah hadir. (Perhatian: Tag " +"diberi dalam bait, tidak seperti tag . Bia versi adalah " +"2.0.0.0, nilai tag ialah 02000000.H)." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "Rujukan Latitud GPS" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"Menunjukkan sama ada latitud adalah utara atau latitud selatan. Nilai ASCII " +"'N' menunjukkan latitud utara, dan 'S' adalah latitud selatan." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"Menunjukkan latitud. Latitud diungkap sebagai tiga nilai RATIONAL yang " +"memberikan darjah, minit, dan saat. Bila darjah, minit dan saat diungkap, " +"formatnya ialah dd/1.mm/1,ss/1. Bila darjah dan minit digunakan, sebagai " +"contoh, pecahan minit diberikan sehingga dua tempat perpuluhan, formatnya " +"ialah dd/1,mmmm,100,0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "Rujukan Longitud GPS" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"Menunjukkan sama ada latitud adalah timur atau latitud barat. Nilai ASCII " +"'E' menunjukkan latitud timur, dan 'W' adalah latitud barat." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"Menunjukkan longitud. Longitud diungkap sebagai tiga nilai RATIONAL yang " +"memberikan darjah, minit, dan saat. Bila darjah, minit dan saat diungkap, " +"formatnya ialah dd/1.mm/1,ss/1. Bila darjah dan minit digunakan, sebagai " +"contoh, pecahan minit diberikan sehingga dua tempat perpuluhan, formatnya " +"ialah dd/1,mmmm,100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"Menunjukkan altitud digunakan sebagai altitud rujukan. Jika rujukan adalah " +"aras laut dan altitud berada diatas aras laut, 0 diberikan. Jika altitud " +"berada dibawah aras laut, nilai 1 diberikan dan altitud menunjukkan sebagai " +"nilai mutlak dalam tag GSPAltitude. Unit rujukan adalah meter. Perhatian, " +"tag ini adalah jenis BYTE, tidak seperti tag rujukan yang lain." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"Menunjukkan altitud berasaskan pada rujukan dalam GPSAltitudeRef. Altitud " +"diungkap sebagai satu nilai RATIONAL. Unit rujukan adalah meter." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" +"Menunjukkan masa sebagai UTC (Masa Universal Terselaras). " +"diungkap sebagai tiga nilai RATIONAL yang memberikan jam, minit, dan saat " +"(jam atom)." + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" +"Menunjukkan satelit GPS digunakan untuk pengukuran. Tag ini boleh digunakan " +"untk menerangkan bilangan satelit, nombor ID merreka, sudut penaikan, " +"azimut, SNR dan lain-lain maklumat dalam notasi ASCII. Format tidak " +"dinyatakan.. Jika penerima GPS tidak berupaya mengambil pengukuran. nilai " +"tag ditetapkan kepada NOL." + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" +"Menunjukkan status penerima GPS bila imej direkod. \"A\" bermaksud " +"pengukuran masih didalam proses, dan \"V\" bermaksud pengukuran adalah " +"saling kendali." + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" +"Menunjukkan mod pengukuran GPS. \"2\" bermaksud pengukuran dua-dimensi dan " +"\"3\" bermaksud pengukuran tiga-dimensi didalam proses." + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "Darjah Ketepatan Data GPS" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" +"Menunjukkan DOP GPS (darjah ketepatan data). Nilai HDOP ditulis semasa " +"pengukuran dua-dimensi, dan PDOP semasa pengukuran tiga-dimensi." + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" +"Menunjukkan unit yang digunakan untuk mengungkap kelajuan pergerakan " +"penerima GPS. \"K\" \"M\" dan \"N\" mewakili kilometer per jam, batu per " +"jam, dan knot." + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "Menunjukkan kelajuan pergerakan penerima GPS." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "Rujukan Jejak GPS" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Menunjukkan rujukan untuk memberikan arah pergerakan penerima GPS. \"T\" " +"menunjukkan arah benar dan \"M\" adalah arah magnetik." + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"Menunjukkan arah pergerakan penerima GPS. Julat nilai adalah dari 0.00 " +"hingga 359.99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Menunjukkan rujukan untuk memberi arahan imej bila ia ditangkap. \"T\" " +"menunjukkan arah benar dan \"M\" adalah arah magnetik." + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"Menunjukkan rujukan untuk memberi arahan imej bila ia ditangkap. Julat nilai " +"adalah dari 0.00 hingga 359.99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" +"Menunjukkan data tinjauan geodetik yang digunakan oleh penerima GPS. Jika " +"data tinjauan disekat bagi Jepun, nilai bagi tag ini ialah \"TOKYO\" atau " +"\"WGS-84\"." + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Rujukan Latitud Destinasi GPS" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Menunjukkan sama ada latitud titik destinasi adalah latitud utara atau " +"selatan. Nilai ASCII \"N\" menunjukkan latitud utara, dan \"S\" adalah " +"latitud selatan." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"Menunjukkan latitud bagi titik destinasi. Latitud diungkap sebagi tiga nilai " +"RATIONAL yang memberikan darjah, minit dan saat. Jika latitud diungkap " +"sebagai darjah, minit dan saat, satu format tipikal adalah dd/1,mm/1.ss/1. " +"Bila darjah dan minit digunakan, sebagai contoh, pecahan minit juga diberi " +"sehingga dua tempat perpulihan, format adalah dd/1,mmmm/100,0/1." + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "Rujukan Longitud Destinasi GPS" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"Menunjukkan sama ada longitud titik destinasi adalah longitud timur atau " +"barat. ASCII \"E\" menunjukkan longitud timur, dan \"W\" adalah longitud " +"barat." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"Menunjukkan longitud bagi titik destinasi. Longitud diungkap sebagi tiga " +"nilai RATIONAL yang memberikan darjah, minit dan saat. Jika longitud " +"diungkap sebagai darjah, minit dan saat, satu format tipikal adalah dd/1," +"mm/1.ss/1. Bila darjah dan minit digunakan, sebagai contoh, pecahan minit " +"juga diberi sehingga dua tempat perpulihan, format adalah dd/1,mmmm/100,0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Menunjukkan rujukan yang digunakan untuk memberi bering pada titik " +"destinasi. \"T\" menunjukkan arah benar dan \"M\" adalah arah magnetik." + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" +"Menunjukkan rujukan yang digunakan untuk memberi bering pada titik " +"destinasi. Julat nilai adalah dari 0.00 hingga 359.99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" +"Menunjukkan unit yang digunakan untuk mengungkap jarak titik destinasi. \"K" +"\", \"M\" dan \"N\" mewakili kilometer, batu dan knot." + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Menunjukkan jarak pada titik destinasi." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" +"Rentetan aksara merekod nama kaedah yang digunakan untuk mencari lokasi. " +"Bait pertama menunjukkan kod aksara yang digunakan, dan diikuti oleh nama " +"kaedah." + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" +"Rentetan aksara merakam nama kawasan GPS. Bait pertama menunjukkan kod " +"aksara yang digunakan, dan ini diikuti dengan nama kawasan GPS." + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "Setem Tarikh GPS" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" +"Rentetan aksara merakam maklumat tarikh dan masa relatif kepada UTC (Masa " +"Universal Terkoordinat). Formatnya adalah \"TTTT:BB:HH.\"." + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" +"Menunjukkan sama ada perbezaan pembetulan dilaksanakan pada penerima GPS." + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Tag GPSInfo tidak diketahui" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Indeks Saling Kendali" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Menunjukkan pengenalpastian bagi peraturan saling kendali. Guna \"R98\" " +"untuk menyatakan Peraturan ExifR98. Empat bait digunakan termasuklah kod " +"penamatan (NOL). rujuk volum berasingan bagi Peraturan Saling Kendali " +"(ExifR98) untuk tag lain digunakan untuk ExifR98." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Versi Saling Kendali" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Versi saling kendali" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Formati Fail Imej Berkaitan" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Format fail bagi fail imej" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Lebar Imej Berkaitan" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Panjang Imej Berkaitan" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Tag saling kendali Exif tidak diketahui" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "Ofset" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "Ofset bagi makernote dari permulaan pengepala TIFF." + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Tertib Bait" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" +"Tertib bait yang digunakan untuk mengekod tag MakerNote, 'MM' (big-endian) " +"atau 'II' (little-endian)." + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Tag maklumat Makernote Exiv2 tidak diketahui" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Tag tidak diketahui" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Zum digital tidak digunakan" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "Pengepala TIFF, ofset" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "little endian terenkod" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "big endian terenkod" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "bait" diff --git a/vendor/exiv2-0.25/po/pl.po b/vendor/exiv2-0.25/po/pl.po new file mode 100644 index 0000000..50277c9 --- /dev/null +++ b/vendor/exiv2-0.25/po/pl.po @@ -0,0 +1,27574 @@ +# translation of pl.po to Polish +# Polish translations of Exiv2. +# Copyright: +# This file is distributed under the same license as the Exiv2 package. +# +# Free Software Foundation, Inc., 2002. +# Jakub Bogusz , 2005. +# Piotr Eljasiak , 2007-2008. +# MichaÅ‚ Smoczyk , 2009. +msgid "" +msgstr "" +"Project-Id-Version: pl\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2009-12-30 14:02+0100\n" +"Last-Translator: MichaÅ‚ Smoczyk \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-Bookmarks: 991,1974,-1,-1,-1,-1,-1,-1,-1,-1\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Nie można otworzyć pliku\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Nazwa pliku" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Rozmiar pliku" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Bajtów" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Typ MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Rozmiar obrazu" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Nie znaleziono żadnych danych Exif w pliku\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Producent aparatu" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Model aparatu" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Znacznik czasu zdjÄ™cia" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Numer zdjÄ™cia" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Czas ekspozycji" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "PrzysÅ‚ona" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Odchylenie ekspozycji" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Lampa bÅ‚yskowa" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Odchylenie ekspozycji bÅ‚ysku" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "DÅ‚ugość ogniskowej " + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "odpowiednik 35mm" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "OdlegÅ‚ość obiektu" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "CzuÅ‚ość ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Tryb naÅ›wietlania" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Tryb pomiaru" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Tryb makro" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Jakość obrazu" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Rozdzielczość Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Balans bieli" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Miniatura" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Brak" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Prawa autorskie" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Komentarz Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(PominiÄ™to dane binarne)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Komentarz JPEG" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "PodglÄ…d" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "piksele" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "bajtów" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Å»aden znacznik" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "ani" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "znalezione w pliku" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Znacznik czasu tworzenia obrazu nie jest ustawiony w pliku" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Błąd podczas analizowania znacznika czasu" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "w pliku" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Uaktualnianie znacznika czasu do" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Usuwanie danych miniatury" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Usuwanie danych Exif z pliku" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Usuwanie danych IPTC z pliku" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Usuwanie komentarza JPEG z pliku" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Usuwanie danych XMP z pliku" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Obrazek nie zawiera miniatury Exif\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Zapisywanie miniatury" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "do pliku" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Dane EXIF nie zawierajÄ… miniatury\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "Obraz nie posiada podglÄ…du" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Zapisywanie podglÄ…du" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Ustawianie komentarza JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Dodaj" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Nie można odczytać" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "wartość" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Ustaw" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "UsuÅ„" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "" + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Znacznik czasu metadaty z kluczem" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "nie ustawiono\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Dostosowywanie" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "przez" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "lat" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "rok" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "miesiÄ™cy" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "miesiÄ…c" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "dni" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "dzieÅ„" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +#, fuzzy +msgid "Can't adjust timestamp by" +msgstr "Nie można dopasować znacznika czasu do" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "do" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "Standardowy znacznik Exif ISO istnieje, wiÄ™c nie zmieniono go\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Ustawianie wartoÅ›ci Exif ISO na" + +#: src/actions.cpp:1708 +#, fuzzy +msgid "No Exif user comment found" +msgstr "Komentarz Exif" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +#, fuzzy +msgid "Setting Exif UNICODE user comment to" +msgstr "Ustawianie wartoÅ›ci Exif ISO na" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Zapisywanie danych Exif z" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Zapisywanie danych IPTC z" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Zapisywanie danych XMP z" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Zapisywanie komentarza JPEG z" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Nie można zapisać metadanych do pliku" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Format pliku zwróciÅ‚ pustÄ… nazwÄ™ dla pliku" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Ten plik posiada już poprawnÄ… nazwÄ™" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Plik" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "istnieje: (O) Nadpisać, (R) Zmienić nazwÄ™ czy (S) Anulować?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Zmianie nazwy pliku na" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "aktualizacja znacznika czasu" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Nie można zmienić nazwy" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Nadpisz" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Wyłączony" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Włączony" + +#: src/canonmn.cpp:363 +#, fuzzy +msgid "Format 1" +msgstr "Format" + +#: src/canonmn.cpp:364 +#, fuzzy +msgid "Format 2" +msgstr "Format" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "Włączone (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "Włączone (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Brak informacji" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Ustawienia aparatu" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Różne ustawienia aparatu" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Ogniskowa" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Informacje o zdjÄ™ciu" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Rodzaj obrazu" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Rodzaj obrazu" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Wersja firmware" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Wersja firmware" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Numer pliku" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Numer pliku" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Nazwa wÅ‚aÅ›ciciela" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Numer seryjny" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Numer seryjny aparatu" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "Informacja o aparacie" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "Informacja o aparacie" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Funkcje użytkownika" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "ID modelu" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Identyfikator modelu" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Informacje o zdjÄ™ciu" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Informacje o zdjÄ™ciu" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "Obraz miniatury" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Obraz miniatury" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Numer seryjny 2" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Numer seryjny 2" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Super Makro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Super makro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF Info" +msgstr "Informacja AF" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "Informacja AF" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Tablica balansu bieli" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Tablica balansu bieli" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Model obiektywu" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Model obiektywu" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "WewnÄ™trzny numer seryjny" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "WewnÄ™trzny numer seryjny" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "Funkcje użytkownika" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "Program" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "Program" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "Barwa naturalna" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "Naturalny (kolorowy)" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "PrzestrzeÅ„ kolorów" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD Offset" +msgstr "PrzesuniÄ™cie" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD offset" +msgstr "przesuniÄ™cie" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "Obiektyw" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "Informacje o zdjÄ™ciu" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Matryca kolorów" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "Moje dane kolorów" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Nieznany znacznik CanonMakerNote" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Ekonomiczny" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normalna" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Dobra" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Bardzo dobra" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Normalny film" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Film" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Auto" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Redukcja czerwonych oczu" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Synchronizacja z dÅ‚ugimi czasami" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Automatycznie + redukcja czerwonych oczu" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "Tak, redukcja czerwonych oczu" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "ZewnÄ™trzny" + +#: src/canonmn.cpp:457 +#, fuzzy +msgid "Single / timer" +msgstr "Pojedynczy / czasowo" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "CiÄ…gÅ‚y" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Film" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "CiÄ…gÅ‚y, priorytet szybkoÅ›ci" + +#: src/canonmn.cpp:461 +#, fuzzy +msgid "Continuous, low" +msgstr "CiÄ…gÅ‚y, niski" + +#: src/canonmn.cpp:462 +#, fuzzy +msgid "Continuous, high" +msgstr "CiÄ…gÅ‚y, wysoki" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "One shot AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "AI servo AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AI focus AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "RÄ™czne ostrzenie" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Pojedynczy" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +#, fuzzy +msgid "Pan focus" +msgstr "ÅšledzÄ…ce ostrzenie" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Duży" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Åšredni" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "MaÅ‚y" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Åšredni 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Åšredni 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Åšredni 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "PeÅ‚na automatyka" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "RÄ™czny" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Pejzaż" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Szybka migawka" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Wolna migawka" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Scena nocna" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Skala odcieni szaroÅ›ci" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Portret" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Sport" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Makro / zbliżenie" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Czarno-biaÅ‚y" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Jaskrawy" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutralny" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Flesz wyłączony" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "DÅ‚ugo otwarta migawka" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Listowie" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "W pomieszczeniu" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Fajerwerki" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Plaża" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Podwodny" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Åšnieg" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Dzieci i zwierzÄ™ta domowe" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Nocne zdjÄ™cie" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Cyfrowe makro" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Moje kolory" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Nieruchomy obraz" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Inny" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "MaÅ‚o" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Dużo" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "nd" + +#: src/canonmn.cpp:540 +#, fuzzy +msgid "Auto High" +msgstr "Wysoki zakres" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "DomyÅ›lnie" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Punktowy" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "UÅ›redniony" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Matrycowy" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Częściowy" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Centralnie ważony" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Nieznany" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Makro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Bardzo blisko" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Blisko" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Åšrednia odlegÅ‚ość" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Daleko" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "NieskoÅ„czoność" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "RÄ™czny wybór punktu AF" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Å»aden (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Automatycznie" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Prawy" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Åšrodkowy" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Lewy" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Automatyczny wybór punktu AF" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Åatwe fotografowanie (Automatyczne)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Program (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Priorytet migawki (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Priorytet przysÅ‚ony (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "RÄ™czny (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Flesz siÄ™ nie uruchomiÅ‚" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Flesz uruchomiÅ‚ siÄ™" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "ZewnÄ™trzny flesz" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "WewnÄ™trzny flesz" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "Włączono FP sync" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Synchronizacja na drugÄ… kurtynÄ™" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "Użyto FP sync" + +#: src/canonmn.cpp:991 +#, fuzzy +msgid "Normal AE" +msgstr "Normal AE" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Kompensacja ekspozycji" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "Blokada ekspozycji" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "Blokada ekspozycji + kompensacja ekspozycji" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Brak AE" + +#: src/canonmn.cpp:1002 +#, fuzzy +msgid "On, shot only" +msgstr "One shot AF" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Punkt AF" + +#: src/canonmn.cpp:1016 +#, fuzzy +msgid "Smooth" +msgstr "GÅ‚adki" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "Czarno-biaÅ‚y" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "WÅ‚asny" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Moje dane kolorów" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "PeÅ‚ny" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Samowyzwalacz" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Samowyzwalacz" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Jakość" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Tryb flesza" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Ustawienie trybu flesza" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Tryb dziaÅ‚ania" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Ustawienie trybu dziaÅ‚ania" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Tryb ogniskowania" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Ustawienie trybu ogniskowania" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Rozmiar obrazu" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Tryb Easy" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Åatwy tryb fotografowania" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "PowiÄ™kszenie cyfrowe" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "PowiÄ™kszenie cyfrowe" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Kontrastowość" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Ustawienie kontrastu" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Nasycenie" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Ustawienie nasycenia" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Wyostrzenie" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Ustawienie wyostrzenia" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Tryb ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Ustawienie trybu ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Tryb pomiaru" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Ustawienie trybu pomiaru" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Typ ogniskowania" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Ustawienie typu ogniskowania" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Wybrany punkt AF" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Tryb ekspozycji" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Ustawienie trybu ekspozycji" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Rodzaj obiektywu" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Rodzaj obiektywu" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Obiektyw" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"\"DÅ‚uga\" i \"krótka\" dÅ‚ugość ogniskowej obiektywu (w \"jednostkach " +"ogniskowej\") i liczba \"jednostek ogniskowej\" na milimetr" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +#, fuzzy +msgid "Short focal" +msgstr "Ostrzenie punktowe" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "DÅ‚ugość ogniskowej " + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "DÅ‚ugość ogniskowej " + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "NajwiÄ™ksza wartość przysÅ‚ony" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "NajwiÄ™ksza wartość przysÅ‚ony" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Najmniejsza wartość przysÅ‚ony" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Najmniejsza wartość przysÅ‚ony" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Aktywność flesza" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Aktywność flesza" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Szczegóły flesza" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Szczegóły flesza" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "CiÄ…gÅ‚y focus" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Ustawienie ciÄ…gÅ‚ego focusu" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Ustawienie AE" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Ustawienie automatycznej ekspozycji" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Stabilizacja obrazu" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Stabilizacja obrazu" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display Aperture" +msgstr "PrzesÅ‚ona" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display aperture" +msgstr "PrzesÅ‚ona" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom Source Width" +msgstr "Szerokość sensora" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom source width" +msgstr "Szerokość sensora" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom Target Width" +msgstr "Szerokość obrazu" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom target width" +msgstr "Szerokość obrazu" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "Tryb pomiaru" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Tryb pomiaru." + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Efekt fotograficzny" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Efekt fotograficzny" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Flesz rÄ™czny" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "Flesz rÄ™czny" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "OdcieÅ„ koloru" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "OdcieÅ„ koloru" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "Jakość obrazu" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Nieznany znacznik Canon Camera Settings 1" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "ÅšwiatÅ‚o dzienne" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Pochmurno" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "ÅšwiatÅ‚o wolframowe" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Fluorescencja" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Czarno-biaÅ‚y" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "CieÅ„" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "RÄ™czna temperatura (K)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "PC Set 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Lampa fluorescencyjna (Å›wiatÅ‚o dzienne)" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Użytkownika 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Użytkownika 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Użytkownika 3" + +#: src/canonmn.cpp:1115 +#, fuzzy +msgid "PC Set 4" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1116 +#, fuzzy +msgid "PC Set 5" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Priorytet migawki" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "lewy" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "Åšrodek" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "prawy" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Użyta czuÅ‚ość ISO" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Użyta czuÅ‚ość ISO" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Docelowa przysÅ‚ona" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Docelowa szybkość migawki" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Docelowy czas otwarcia migawki" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Balans bieli" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Ustawienie balansu bieli" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Sekwencja" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Numer sekwencji (jeÅ›li w serii)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Użyty punkt AF" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Użyty punkt AF" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Odchylenie ekspozycji flesza" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "OdlegÅ‚ość obiektu" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "OdlegÅ‚ość do obiektu (jednostki nie sÄ… jednoznaczne)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Wartość przysÅ‚ony" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Szybkość migawki" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Szybkość migawki" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Nieznany znacznik Canon Camera Settings 2" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "Od lewej do prawej" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "Od prawej do lewej" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Od doÅ‚u do góry" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Od góry do doÅ‚u" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "Matryca 2x2 (przeciwnie do wskazówek zegara)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Klatka panoramy" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Numer klatki panoramy" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Kierunek panoramy" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Kierunek panoramy" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Nieznany znacznik Canon Panorama" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Redukcja szumów" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Blokada ekspozycji" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "Przyciski blokady ekspozycji" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Blokada lustra" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "WstÄ™pne podnoszenie lustra" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Krok poziomu ekspozycji" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Wspomaganie AF" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "ÅšwiatÅ‚o pomocnicze automatycznego ostrzenia" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Synchronizacja flesza Av" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "PrÄ™dkość migawki w trybie Av (priorytetu przysÅ‚ony)" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "Sekwencja AEB" + +#: src/canonmn.cpp:1215 +#, fuzzy +msgid "AEB sequence/auto cancellation" +msgstr "Sekwencja automatycznego bracketingu" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Synchronizacja migawki" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Kurtyna synchronizacji migawki" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Przycisk obiektywu AF stop" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Przycisk funkcji wyłączenia automatycznego ostrzenia w obiektywie" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Auto redukcja bÅ‚ysku wypeÅ‚niajÄ…cego" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Automatyczna redukcja siÅ‚y bÅ‚ysku wypeÅ‚niajÄ…cego" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Pozycja przycisku Menu" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Pozycja przycisku Menu" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Funkcja przycisku Set" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "Funkcja przycisku SET podczas wykonywania zdjÄ™cia" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Czyszczenie matrycy" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Czyszczenie matrycy" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "Migawka wyzwolona bez karty CF" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "Migawka wyzwolona bez karty CF" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Nieznany znacznik Canon Custom Function" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "Å›rodek-prawo" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "dół" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "góra" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "Å›rodek-lewo" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "góra-lewo" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "góra-prawo" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "dół-lewo" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "dół-prawo" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Szerokość obrazu" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Szerokość obrazu" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Wysokość obrazu" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Wysokość obrazu" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image Width As Shot" +msgstr "Szerokość obrazu podczas fotografowania" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image width (as shot)" +msgstr "Szerokość obrazu podczas fotografowania" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image Height As Shot" +msgstr "Wysokość obrazu podczas fotografowania" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image height (as shot)" +msgstr "Wysokość obrazu podczas fotografowania" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Użyte punkty AF" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Użyte punkty AF" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Użyte punkty AF 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Użyte punkty AF (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Nieznany znacznik Canon Picture Info" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +#, fuzzy +msgid "WB" +msgstr "Balans bieli" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Pocztówka" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Szeroki ekran" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Åšredni film" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "MaÅ‚y film" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "Włączony 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "Włączony 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "Włączony (shitf AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "Włączony (shift GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Żółty" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "PomaraÅ„czowy" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Czerwony" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Zielony" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Niebieski" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Purpurowy" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Tryb bracketingu" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Krok bracketingu" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "Numer zdjÄ™cia bracketingu" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "Jakość RAW JPG" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Rozmiar RAW JPG" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "Tryb bracketingu balansu bieli" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "Krok bracketingu balansu bieli AB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "Krok bracketingu balansu bieli GM" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Efekt filtra" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Efekt tonowania" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro Magnification" +msgstr "PowiÄ™kszenie elektroniczne" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro magnification" +msgstr "PowiÄ™kszenie elektroniczne" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +#, fuzzy +msgid "Live view shooting" +msgstr "Ustawienie trybu dziaÅ‚ania" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "OdlegÅ‚ość ostrzenia" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "OdlegÅ‚ość ostrzenia" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Nieznany znacznik Canon File Info" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Standardowy" + +#: src/canonmn.cpp:1369 +#, fuzzy +msgid "Lowest" +msgstr "Dolny lewy" + +#: src/canonmn.cpp:1373 +#, fuzzy +msgid "Highest" +msgstr "Dużo" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "Nasycenie kolorów" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "Nasycenie" + +#: src/canonmn.cpp:1384 +#, fuzzy +msgid "CM Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1385 +#, fuzzy +msgid "CM Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Monochromatyczny" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Szczegóły flesza" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "Krzywa tonalna" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "Tone curve" +msgstr "Krzywa tonalna" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "SharpnessFrequency" +msgstr "Wyostrzenie" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "Sharpness frequency" +msgstr "Ostrość" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "SensorRedLevel" +msgstr "WB poziom czerwieni" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "WB poziom czerwieni" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "SensorBlueLevel" +msgstr "WB poziom błękitu" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "WB poziom błękitu" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Balans bieli" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Balans bieli 2" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr "Wartość balansu bieli" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr "Tablica balansu bieli" + +#: src/canonmn.cpp:1411 +#, fuzzy +msgid "WhiteBalance" +msgstr "Balans bieli" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Temperatura koloru" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Temperatura koloru" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "PictureStyle" +msgstr "Tryb zdjÄ™cia" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "Picture style" +msgstr "Tryb zdjÄ™cia" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "Cyfrowe makro" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "Cyfrowe makro" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "Włączony (shitf AB)" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "Włączony (shift GM)" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Nieznany znacznik Canon Picture Info" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "PrzesuniÄ™cie nagłówka" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "znacznik" + +#: src/crwimage.cpp:676 +#, fuzzy +msgid "dir" +msgstr "katalog" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "typ" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "rozmiar" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "przesuniÄ™cie" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(niepoprawny)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "Rekord koperty IIM" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "Rekord aplikacji IIM 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Wersja modelu" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Cel" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Format pliku" + +#: src/datasets.cpp:95 +#, fuzzy +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Liczba dwójkowa okreÅ›lajÄ…ca format pliku. Format pliku musi być " +"zarejestrowany w IPTC lub NAA przypisanym do niego unikatowym numerem." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Wersja pliku" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Liczba dwójkowa okreÅ›lajÄ…ca wersjÄ™ formatu pliku podanÄ… w znaczniku " +"." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Identyfikator usÅ‚ugi" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "OkreÅ›la dostawcÄ™ i produkt" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Numer koperty" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "ID produktu" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Priorytet koperty" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Data wysÅ‚ania" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Używa formatu WWRRMMDD (wiek, rok, miesiÄ…c, dzieÅ„) zdefiniowanego w ISO " +"8601, aby okreÅ›li rok, miesiÄ…c i dzieÅ„ kiedy usÅ‚uga wysÅ‚aÅ‚a materiaÅ‚." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Czas wysÅ‚ania" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Zestaw znaków" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Unikalna nazwa obiektu" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Identyfikator ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "Wersja ARM" + +#: src/datasets.cpp:157 +#, fuzzy +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Liczba dwójkowa okreÅ›lajÄ…ca wersjÄ™ formatu pliku podanÄ… w znaczniku " +"." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Wersja rekordu" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Typ obiektu" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Atrybut obiektu" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Nazwa obiektu" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "TytuÅ‚ dokumentu" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Stan edycji" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Aktualizacja edytorska" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "Ważność" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Temat" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Kategoria" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Kategoria dodatkowa" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Kategorie dodatkowe" + +#: src/datasets.cpp:229 +#, fuzzy +msgid "Fixture Id" +msgstr "Flesz uruchomiÅ‚ siÄ™" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "SÅ‚owa kluczowe" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Kod lokalizacji" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Nazwa lokalizacji" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Data udostÄ™pnienia" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Czas udostÄ™pnienia" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Data ważnoÅ›ci" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Czas ważnoÅ›ci" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Specjalne instrukcje" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Inne instrukcje edytorskie dotyczÄ…ce użycia danych obiektu, takie jak " +"ostrzeżenia i ograniczenia." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Instrukcje" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Zalecana akcja" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "OdwoÅ‚anie do usÅ‚ugi" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Data odniesienia" + +#: src/datasets.cpp:284 +#, fuzzy +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "OkreÅ›la rodzaj programu użyty do uzyskania danych obiektu." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Numer odniesienia" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Data utworzenia" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Czas utworzenia" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Data utworzenia postaci cyfrowej" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Czas utworzenia postaci cyfrowej" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Program" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "OkreÅ›la rodzaj programu użyty do uzyskania danych obiektu." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Wersja programu" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "Używane do okreÅ›lenia wersji programu użytego w znaczniku ." + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Cykl obiektu" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Twórca" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"Zawiera nazwÄ™ twórcy danych obiektu, np. fotografa, pisarza lub artysty " +"grafika." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Autor" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "TytuÅ‚ twórcy" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Miasto" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Szczegółowa lokalizacja" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Prowincja/stan" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Stan/Prowincja" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Kod paÅ„stwa" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Nazwa paÅ„stwa" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "PaÅ„stwo" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +#, fuzzy +msgid "Transmission Reference" +msgstr "Oryginalne miejsce transmisji" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Nagłówek" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +#, fuzzy +msgid "Credit" +msgstr "Wyrazy uznania" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "ŹródÅ‚o" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "Zawiera wszelkie niezbÄ™dne uwagi o prawach autorskich." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Uwaga o prawach autorskich" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Kontakt" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"OkreÅ›la osobÄ™ lub organizacjÄ™ która może dostarczyć dalszych informacji o " +"danych obiektu." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Opis" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "Tekstowy opis obiektu." + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Opis" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Autor opisu" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Opis rastrowy" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "OkreÅ›la skÅ‚adowe koloru na obrazie." + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orientacja obrazu" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "OkreÅ›la ukÅ‚ad obrazu." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "JÄ™zyk" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Typ dźwiÄ™ku" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "OkreÅ›la typ zawartoÅ›ci dzwiÄ™kowej." + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Próbkowanie dźwiÄ™ku" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Oznacza czÄ™stotliwość próbkowania zawartoÅ›ci dźwiÄ™kowej (w hercach)." + +#: src/datasets.cpp:414 +#, fuzzy +msgid "Audio Resolution" +msgstr "Rozdzielczość próbkowania dźwiÄ™ku" + +#: src/datasets.cpp:415 +#, fuzzy +msgid "Indicates the sampling resolution of an audio content." +msgstr "Oznacza czÄ™stotliwość próbkowania zawartoÅ›ci dźwiÄ™kowej (w hercach)." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Czas trwania" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "OkreÅ›la dÅ‚ugość trwania zawartoÅ›ci dźwiÄ™kowej." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Komunikat sÅ‚owny" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Format podglÄ…du" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Liczba dwójkowa okreÅ›lajÄ…ca format pliku podglÄ…du danych. Format pliku musi " +"być zarejestrowany w organizacjach IPTC lub NAA z przypisanym do niego " +"unikalnym numerem." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Wersja podglÄ…du" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Liczba dwójkowa okreÅ›lajÄ…ca wersjÄ™ formatu pliku podglÄ…du danych " +"wyszczególnionego w znaczniku ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Dane podglÄ…du" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Dane binarne podglÄ…du obrazu." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(NieprawidÅ‚owy)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Nieznany zestaw danych" + +#: src/error.cpp:55 +#, fuzzy +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Błąd %0: arg1=%1, arg2=%2, arg3=%3." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Powodzenie" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "To nie wyglÄ…da na obrazek %1" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "NieprawidÅ‚owa nazwa zestawu danych \"%1\"" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "NieprawidÅ‚owa nazwa rekordu \"%1\"" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "NieprawidÅ‚owy klucz \"%1\"" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "NieprawidÅ‚owa nazwa znacznika lub ifdId \"%1\", ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Wartość nie ustawiona" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Nie można byÅ‚o otworzyć źródÅ‚a danych: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Nie można byÅ‚o otworzyć pliku (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: Plik zawiera dane nieznanego typu obrazu" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Pamięć zawiera dane nieznanego typu obrazu" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Obrazy typu \"%1\" nie sÄ… obsÅ‚ugiwane" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Nie można byÅ‚o odczytać danych obrazu" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "To nie wyglÄ…da jak obrazek JPEG" + +#: src/error.cpp:72 +#, fuzzy +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "Nie można otworzyć pliku poleceÅ„ do odczytu\n" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Nie można byÅ‚o zmienić nazwy pliku na %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Transfer nie powiódÅ‚ siÄ™: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Transfer pamiÄ™ci nie powiódÅ‚ siÄ™: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Nie można byÅ‚o odczytać danych wejÅ›ciowych" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Nie można byÅ‚o zapisać obrazka" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Dane wejÅ›ciowe nie zawierajÄ… prawidÅ‚owego obrazu" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "NieprawidÅ‚owy ifdld %1" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setValue: Zbyt duża wartość (znacznik=%1, rozmiar=%2, wymagane=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea: Zbyt duża wartość (znacznik=%1, rozmiar=%2, wymagane=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Pozycja poza zakresem" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "NieobsÅ‚ugiwany typ przesuniÄ™cia obszaru danych" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "NieprawidÅ‚owy zestaw znaków: \"%1\"" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "NieobsÅ‚ugiwany format daty" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "NieobsÅ‚ugiwany format czasu" + +#: src/error.cpp:87 +#, fuzzy +msgid "Writing to %1 images is not supported" +msgstr "Zapis do formatu %2 nie jest obsÅ‚ugiwany" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Ustawienie %1 w obrazach %2 nie jest obsÅ‚ugiwane" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "To nie wyglÄ…da jak obrazek CRW" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: NieobsÅ‚ugiwany" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" +"Brak dostÄ™pnej informacji o przestrzeni nazw dla przedrostka \"%1\" XMP" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"Brak zarejestrowanego przedrostka dla przestrzeni nazw \"%2\", potrzebnego " +"dla wÅ‚aÅ›ciwego umieszczenia \"%1\"" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "Rozmiar %1 segmentu JPEG jest wiÄ™kszy niż 65535 bajtów" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "NieobsÅ‚ugiwany Xmpdatum %1 typu %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "NieobsÅ‚ugiwany wÄ™zeÅ‚ XMP %1 z opt=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Błąd pakietu narzÄ™dziowego XMP %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Nie można byÅ‚o zdekodować wÅ‚aÅ›ciwoÅ›ci Lang Alt %1 z opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Nie można byÅ‚o zdekodować kwalifikatora Lang Alt %1 z opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Nie można byÅ‚o zdekodować wÅ‚aÅ›ciwoÅ›ci Lang Alt %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" +"Nie można byÅ‚o okreÅ›lić nazwy wÅ‚aÅ›ciwoÅ›ci w Å›cieżce %1, przestrzeÅ„ nazw %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" +"Schemat przestrzeni nazw %1 nie jest zarejestrowany w pakiecie narzÄ™dzionym " +"XMP" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Brak zarejestrowanej przestrzeni nazw dla przedrostka \"%1\"" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Aliasy nie sÄ… obsÅ‚ugiwane. PrzeÅ›lij proszÄ™ ten pakiet XMP do ahuggel@gmx.net " +"\"%1\", \"%2\", \"%3\"" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "NieprawidÅ‚owy typ XmpText \"%1\"" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "Katalog TIFF %1 posiada zbyt wiele elementów" + +#: src/error.cpp:106 +#, fuzzy +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Znacznik elementu tablicy TIFF %1 posiada zÅ‚y typ" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "Znacznik elementu tablicy TIFF %1 posiada zÅ‚y typ" + +#: src/error.cpp:108 +#, fuzzy +msgid "%1 has invalid XMP value type `%2'" +msgstr "NieprawidÅ‚owy typ XmpText \"%1\"" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Copyright (C) 2004-2015 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Ten program jest wolnym oprogramowaniem, możesz go rozpowszechniać\n" +"i/lub zmieniać na warunkach Publicznej Licencji GNU opublikowanej\n" +"przez Free Software Foundation, zarówno w wersji 2 tej Licencji, jak\n" +"też jakiejkolwiek późniejszej wersji.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Ten program rozpowszechniany jest z nadziejÄ…, iż bÄ™dzie on\n" +"użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyÅ›lnej\n" +"gwarancji PRZYDATNOÅšCI HANDLOWEJ albo PRZYDATNOÅšCI DO OKREÅšLONYCH\n" +"ZASTOSOWAŃ. W celu uzyskania bliższych informacji przeczytaj\n" +"PowszechnÄ… LicencjÄ™ PublicznÄ… GNU.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"PowinienieÅ› otrzymać kopiÄ™ Publicznej Licencji GNU z tym\n" +"programem, jeÅ›li nie napisz do Free Software Foundation, Inc.\n" +"51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Użycie:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ opcje ] [ akcja ] plik ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Manipulowanie metadanymi Exif obrazów.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Akcje:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Poprawia znaczniki czasu Exif do podanego czasu. Ta akcja\n" +" wymaga użycia co najmniej jednej z opcji -a, -Y, -O lub -" +"D.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print WyÅ›wietla metadane obrazu.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Usuwa metadane obrazu z plików.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Wstawia metadane z odpowiadajÄ…cych plików *.exv.\n" +" Użyj opcji -S aby zmienić rozszerzenie plików wejÅ›ciowych.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Eksportuje metadane do plików *.exv, *.xmp oraz plików " +"miniaturek.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Zmienia nazwy plików i/lub ustawia znaczniki czasu " +"odpowiadajÄ…ce\n" +" znacznikowi utworzenia Exif. Format nazwy pliku może być " +"ustawiony za\n" +" pomocÄ… -r format, opcje znacznika czasu sÄ… kontrolowane za " +"pomocÄ… -t i -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Modyfikacja (dodanie, ustawienie, usuniÄ™cie) metadanych " +"Exif\n" +" i IPTC w plikach lub ustawienie komentarza JPEG.\n" +" Wymaga podania opcji -c, -m lub -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Kopiuje ustawienie ISO z Nikon Makernote do normalnego\n" +" znacznika Exif.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opcje:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h WyÅ›wietla tÄ™ pomoc i koÅ„czy pracÄ™.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V WyÅ›wietla wersjÄ™ programu i koÅ„czy pracÄ™.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" +" -v Tryb \"gadatliwy\", wyÅ›wietla wiele komunikatów podczas pracy " +"programu.\n" + +#: src/exiv2.cpp:266 +#, fuzzy +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" +" -v Tryb \"gadatliwy\", wyÅ›wietla wiele komunikatów podczas pracy " +"programu.\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Pokaż duże wartoÅ›ci binarne.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Pokaż nieznane znaczniki.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Zachowuje znaczniki czasowe.\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Ustawia także znacznik czasowy pliku podczas akcji \"rename" +"\" (nadpisuje opcjÄ™ -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Ustawia tylko znacznik czasowy podczas akcji \"rename\", nie " +"zmienia nazwy pliku\n" +" (nadpisuje opcjÄ™ -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr " -f Nie pyta przed nadpisaniem istniejÄ…cych plików.\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F Nie pyta przed zmianÄ… nazwy plików.\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a czas Poprawka czasu w formacie [-]GG[:MM[:SS]]. Ta opcja\n" +" jest używana tylko z akcjÄ… \"adjust\".\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y rok Poprawka roku dla akcji \"adjust\".\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mie Poprawka miesiÄ…ca dla akcji \"adjust\".\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D dzi Poprawka dnia dla akcji \"adjust\".\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr " -p tryb Tryb wyÅ›wietlania dla akcji \"print\". Możliwe tryby to:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s : wyÅ›wietla podsumowanie metadanych Exif (domyÅ›lnie)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : wyÅ›wietla metadane Exif, IPTC i XMP (skrót dla -Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" +" t : zinterpretowane (przetÅ‚umaczone) dane Exif (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : proste wartoÅ›ci danych Exif (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" +" h : zrzut danych Exif w postaci szesnastkowej (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : wartoÅ›ci danych IPTC (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : wÅ‚aÅ›ciwoÅ›ci XMP (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : komentarz JPEG\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : wyÅ›wietla dostÄ™pne podglÄ…dy\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : proste wartoÅ›ci danych\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " X : wÅ‚aÅ›ciwoÅ›ci XMP\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P przl Przełączniki wyÅ›wietlania kontrolujÄ…ce sposób wyÅ›wietlania " +"znaczników (akcja \"print\"):\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : dołącz znaczniki Exif do listy\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : dane IPTC\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : wÅ‚aÅ›ciwoÅ›ci XMP\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : wyÅ›wietla kolumnÄ™ z numerem znacznika\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : nazwa grupy\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : klucz\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : etykieta znacznika\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : nazwa znacznika\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : typ\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : liczba elementów\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : wielkość w bajtach\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : proste wartoÅ›ci danych\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : zinterpretowane (przetÅ‚umaczone) dane\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : zrzut danych w postaci szesnastkowej\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr " -d cel Cel(e) usuniÄ™cia dla akcji \"delete\". Możliwe cele to:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : wszystkie obsÅ‚ugiwane metadane (domyÅ›lne)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : sekcja Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : tylko miniatury Exif\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : dane IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : pakiet XMP\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Cel(e) wstawiania dla akcji \"insert\". Możliwe cele sÄ… takie\n" +" same jak te dla opcji -d, plus modyfikator:\n" +" X : Wstawia metadane z pliku XMP .xmp\n" +" Tylko miniatury JPEG mogÄ… być wstawione i muszÄ… mieć nazwÄ™\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Format nazwy pliku dla akcji \"rename\". ÅaÅ„cuch formatowania\n" +" jest zgodny z strftime(3). ObsÅ‚ugiwane sÄ… nastÄ™pujÄ…ce sÅ‚owa " +"kluczowe:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - oryginalna nazwa pliku bez rozszerzenia\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - nazwa katalogu zawierajÄ…cego oryginalny plik\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - nazwa katalogu macierzystego\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " DomyÅ›lny format nazwy pliku to " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt komentarz JPEG do wstawienia do obrazu.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m plik Plik poleceÅ„ dla akcji \"modify\". Format poleceÅ„ to\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M kmd Linia poleceÅ„ dla akcji \"modify\". Format poleceÅ„ jest\n" +" taki sam jak format linii w pliku komend.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l kat Lokalizacja (katalog) dla plików ze wstawianymi lub " +"eksportowanymi metadanymi.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .roz Użyj rozszerzenia .roz dla plików źródÅ‚owych w akcji \"insert\".\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Opcja" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "wymaga argumentu\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Nierozpoznana opcja" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt zwróciÅ‚ nieoczekiwany kod znaku" + +#: src/exiv2.cpp:410 +#, fuzzy +msgid "Invalid argument" +msgstr "Niepoprawny klucz" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Niepoprawny klucz" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Zignorowano nadmiarowÄ… opcjÄ™" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "nie jest zgodny z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Zignorowano nadmiarowÄ… opcjÄ™ -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Błąd podczas przetwarzania argumentu opcji -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "Opcja -a jest niezgodna z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Błąd przetwarzania" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "argument opcji" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Nierozpoznany tryb wyÅ›wietlania" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Zignorowano nadmiarowÄ… opcjÄ™ -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "Opcja -p jest niezgodna z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Nierozpoznany element wydruku" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Zignorowano nadmiarowÄ… opcjÄ™ -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "Opcja -P jest niezgodna z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "Opcja -d jest niezgodna z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "Opcja -e jest niezgodna z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "Opcja -i jest niezgodna z poprzedniÄ… opcjÄ…\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "Akcja adjust jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "Akcja print jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "Akcja delete jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "Akcja extract jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "Akcja insert jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "Akcja rename jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "Akcja modify jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "Akcja fixiso jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:824 +#, fuzzy +msgid "Action fixcom is not compatible with the given options\n" +msgstr "Akcja fixiso jest niezgodna z podanymi opcjami\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Należy podać akcjÄ™\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" +"Akcja adjust wymaga podania przynajmniej jednej z opcji -a, -Y, -O lub -D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" +"Akcja modify wymaga podania przynajmniej jednej z opcji -c, -m lub -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Wymagany jest co najmniej jeden plik\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Błąd podczas przetwarzania argumentów opcji -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Błąd podczas przetwarzania argumentów opcji -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "Opcja -I może być użyta jedynie z akcjami extract lub insert\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "Opcja -S może być użyta jedynie z akcjÄ… insert\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "Opcja -t może być użyta jedynie z akcjÄ… rename\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "Opcja -T może być użyta jedynie z akcjÄ… rename\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Nierozpoznany" + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "cel" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Niepoprawna liczba podglÄ…dów" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Nie można otworzyć pliku poleceÅ„ do odczytu\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "wiersz" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "Opcja -M" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Niepoprawny wiersz poleceÅ„" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Niepoprawne polecenie" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Niepoprawny klucz" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Niepoprawny wiersz poleceÅ„" + +#: src/fujimn.cpp:62 +#, fuzzy +msgid "Soft mode 1" +msgstr "Tryb punktowy włączony" + +#: src/fujimn.cpp:63 +#, fuzzy +msgid "Soft mode 2" +msgstr "Tryb punktowy włączony" + +#: src/fujimn.cpp:65 +#, fuzzy +msgid "Hard mode 1" +msgstr "Tryb makro" + +#: src/fujimn.cpp:66 +#, fuzzy +msgid "Hard mode 2" +msgstr "Tryb makro" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Lampa fluorescencyjna (Å›wiatÅ‚o dzienne)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Lampa fluorescencyjna (ciepÅ‚o-biaÅ‚a)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Lampa fluorescencyjna (zimno-biaÅ‚a)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +#, fuzzy +msgid "Incandescent" +msgstr "Rozpalony" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Brak (czarno-biaÅ‚y)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Redukcja czerwonych oczu" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Scena nocna" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Program AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "ÅšwiatÅ‚o naturalne" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti-blur" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Zachód sÅ‚oÅ„ca" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Muzeum" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "PrzyjÄ™cie" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Kwiat" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Tekst" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "ÅšwiatÅ‚o naturalny i bÅ‚ysk" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Priorytet przysÅ‚ony" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Priorytet migawki" + +#: src/fujimn.cpp:142 +#, fuzzy +msgid "No flash & flash" +msgstr "Bez flesza i flesz" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Chrom" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +#, fuzzy +msgid "Wide" +msgstr "Szeroki" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Standard" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Studio portrait" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Studio portrait Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Binarny" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Standard (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Tryb symulacji filmu" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Wersja" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Wersja Fujifilm Makernote" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Ten numer jest unikalny i zawiera datÄ™ produkcji, ale nie jest tożsamy z " +"numerem umieszczonym na korpusie aparatu." + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Ustawienie jakoÅ›ci obrazu" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Kolor" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Ustawienie nasycenia barw" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Ustawienie trybu bÅ‚ysku" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "SiÅ‚a bÅ‚ysku" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "Ustawienie siÅ‚y kompensacji bÅ‚ysku" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Ustawienie trybu makro" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Ustawienie trybu ostrzenia" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Synchronizacja z dÅ‚ugimi czasami" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "" +"Ustawienie trybu synchronizacji bÅ‚ysku z dÅ‚ugimi czasami otwarcia migawki" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Tryb zdjÄ™cia" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Ustawienie trybu zdjÄ™cia" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Numer sekwencyjny" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Numer sekwencyjny" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "Kolor FinePix" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Ustawienie koloru Fuji FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Ostrzeżenie o rozmyciu" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Stan ostrzeżenia o rozmyciu" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Ostrzeżenie o ostrzeniu" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Stan ostrzeżenia o automatycznym ostrzeniu" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Ostrzeżenie ekspozycji" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Stan ostrzeżenia o automatycznej ekspozycji" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Dynamiczny zakres" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Dynamiczny zakres" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Tryb filmu" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Tryb filmu" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Ustawienia trybu dynamicznego" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Ustawienia trybu dynamicznego" + +#: src/fujimn.cpp:255 +#, fuzzy +msgid "Development Dynamic Range" +msgstr "Dynamiczny zakres" + +#: src/fujimn.cpp:256 +#, fuzzy +msgid "Development dynamic range" +msgstr "Dynamiczny zakres" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Minimalna dÅ‚ugość ogniskowej" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Minimalna dÅ‚ugość ogniskowej" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Maksymalna dÅ‚ugość ogniskowej" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Maksymalna dÅ‚ugość ogniskowej" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Maksymalna jasność przy minimalnej ogniskowej" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Maksymalna jasność przy minimalnej ogniskowej" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Maksymalna jasność przy maksymalnej ogniskowej" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Maksymalna jasność przy maksymalnej ogniskowej" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "ŹródÅ‚o pliku" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "ŹródÅ‚o pliku" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Liczba porzÄ…dkowa" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Liczba porzÄ…dkowa" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Numer klatki" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Numer klatki" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Nieznany znacznik FujiMakerNote" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Barwa naturalna" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Barwa jaskrawa" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solaryzacja" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Naturalny" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "Natural sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Natural+ sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Wieczór" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Portret nocny" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Bardzo dobra" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Ekstra dobra" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Wersja Makernote" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "ÅaÅ„cuch \"MTL0\" (nie jest zakoÅ„czony przez NULL)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Ustawienia aparatu (Std stary)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Standardowe ustawienia aparatu (starsze modele aparatów jak D5, D7, S304 i " +"S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Ustawienia aparatu (Std nowy)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" +"Standardowe ustawienia aparatu (nowsze modele aparatów jak D7u, D7i i D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Ustawienia aparatu (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Ustawienia aparatu (dla modelu Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Dane stabilizacji obrazu" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Dane stabilizacji obrazu" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Rozmiar skompresowanego obrazka" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Rozmiar skompresowanego obrazka" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Miniatura JPEG 640x480 pikseli" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "PrzesuniÄ™cie miniatury" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "PrzesuniÄ™cie miniatury" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "DÅ‚ugość miniatury" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Rozmiar miniatury" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Rodzaj sceny" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Tryb koloru" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Tryb koloru" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Jakość obrazu" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Kompensacja ekspozycji bÅ‚ysku w jednostkach EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +#, fuzzy +msgid "Teleconverter Model" +msgstr "Model ekstendera" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Temperatura koloru" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID obiektywu" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Identyfikator obiektywu" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "Kompensacja tonów" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Tablica balansu bieli" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Wartość balansu bieli" + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "Stabilizacja obrazu" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Dane stabilizacji obrazu" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Ustawienia aparatu (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Ustawienia aparatu (dla modelu Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Print IM" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "Informacja PrintIM" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Ustawienia aparatu (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Ustawienia aparatu (dla modeli Z1, DImage X i F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Nieznany znacznik Minolta MakerNote" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Priorytet przysÅ‚ony" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Priorytet migawki" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Synchronizacja na zamkniÄ™cie migawki" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Bezprzewodowy" + +#: src/minoltamn.cpp:224 +#, fuzzy +msgid "Fluorescent 2" +msgstr "Fluorescencja 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "PeÅ‚ny rozmiar" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Bardzo dobra" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Ekstra dobra" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "Pojedynczy obszar" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "Samowyzwalacz" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Bracketing" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "OdstÄ™p" + +#: src/minoltamn.cpp:257 +#, fuzzy +msgid "UHS continuous" +msgstr "Gradient ciÄ…gÅ‚y" + +#: src/minoltamn.cpp:258 +#, fuzzy +msgid "HS continuous" +msgstr "Gradient ciÄ…gÅ‚y" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Wielopolowy" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Centralnie ważony uÅ›redniony" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "PowiÄ™kszenie elektroniczne" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Góra" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Górny prawy" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Dolny prawy" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Dół" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Dolny lewy" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Górny lewy" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "Duża" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "MaÅ‚a" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Nocny portret" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Sport" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +#, fuzzy +msgid "Standard form" +msgstr "Forma standardowa" + +#: src/minoltamn.cpp:350 +#, fuzzy +msgid "Data form" +msgstr "Formularz danych" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Naturalny kolor" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Czarno-biaÅ‚y" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Barwa jaskrawa" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Brak strefy" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Strefa Å›rodkowa (ukÅ‚ad poziomy)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Strefa Å›rodkowa (ukÅ‚ad pionowa)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Strefa lewa" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Strefa prawa" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Ostrzenie automatyczne" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Ostrzenie punktowe" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Ekspozycja" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filtr" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Niedołączona" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Osadzone" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Tekst + ID" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Advanced Distance Integration)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "PrzedbÅ‚ysk TTL" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "RÄ™czne sterowanie lampÄ…" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Tryb ekspozycji" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Tryb flesza" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +#, fuzzy +msgid "Drive mode" +msgstr "Tryb dziaÅ‚ania" + +#: src/minoltamn.cpp:512 +#, fuzzy +msgid "ISO Value" +msgstr "CzuÅ‚ość ISO" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Czas ekspozycji" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "Liczba F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "Liczba F" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Tryb makro" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Krok bracketingu" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Krok bracketingu" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Rozmiar odstÄ™pu" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Rozmiar odstÄ™pu" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Numer odstÄ™pu" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Numer odstÄ™pu" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "OdlegÅ‚ość ostrzenia" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "OdlegÅ‚ość ostrzenia" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "UrzÄ…dzenie flesza" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Flesz wyłączony" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Minolta data" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Minolta data" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Minolta czas" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Minolta czas" + +#: src/minoltamn.cpp:556 +#, fuzzy +msgid "File Number Memory" +msgstr "Pamięć numeracji plików" + +#: src/minoltamn.cpp:557 +#, fuzzy +msgid "File number memory" +msgstr "Pamięć numeracji plików" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Numer obrazu" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Numer zdjÄ™cia" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Balans kolorów czerwieni" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Balans kolorów czerwieni" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Balans kolorów zieleni" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Balans kolorów zieleni" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Balans kolorów błękitu" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Balans kolorów błękitu" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Program tematyczny" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Program tematyczny" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Ustawienia ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Ustawienie ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Minolta model" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Minolta model" + +#: src/minoltamn.cpp:592 +#, fuzzy +msgid "Interval Mode" +msgstr "Tryb odstÄ™pu" + +#: src/minoltamn.cpp:593 +#, fuzzy +msgid "Interval mode" +msgstr "Tryb odstÄ™pu" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Nazwa katalogu" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Nazwa katalogu" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Tryb koloru" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Filtr kolorów" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Filtr kolorów" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Filtr czarno-biaÅ‚y" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Filtr czarno-biaÅ‚y" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "WewnÄ™trzny flesz" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Jasność" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "Ostrzenie punktowe" + +#: src/minoltamn.cpp:614 +#, fuzzy +msgid "Spot focus point X" +msgstr "Ostrzenie punktowe" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "Ostrzenie punktowe" + +#: src/minoltamn.cpp:617 +#, fuzzy +msgid "Spot focus point Y" +msgstr "Ostrzenie punktowe" + +#: src/minoltamn.cpp:619 +#, fuzzy +msgid "Wide Focus Zone" +msgstr "Tryb ogniskowania" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Tryb ogniskowania" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Obszar ogniskowania" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "Pozycja przełącznika DEC" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "Pozycja przełącznika DEC" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Profil koloru" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Profil koloru" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +#, fuzzy +msgid "Data Imprint" +msgstr "Kompresja danych" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Tryb pomiaru bÅ‚ysku" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Tryb pomiaru Å›wiatÅ‚a bÅ‚yskowego" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Nieznany znacznik Minolta Camera Settings" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "Program-shift A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "Program-shift S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "Pojedyncze zdjÄ™cie" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "CiÄ…gÅ‚y" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "Automatycznie" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Natural)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Natural+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Poziome (normalne)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Obrót o 90 w prawo" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Obrót o 270 w prawo" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Punkty AF" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Punkty AF" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "PrzestrzeÅ„ kolorów" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "PrzestrzeÅ„ kolorów" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +#, fuzzy +msgid "Free Memory Card Images" +msgstr "Liczba wolnych zdjęć na karcie pamiÄ™ci" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +#, fuzzy +msgid "Free memory card images" +msgstr "Liczba wolnych zdjęć na karcie pamiÄ™ci" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "OdcieÅ„" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Obrót" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Numer obrazu" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Redukcja szumów" + +#: src/minoltamn.cpp:817 +#, fuzzy +msgid "Zone Matching On" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:818 +#, fuzzy +msgid "Zone matching on" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Nieznany znacznik Minolta Camera Settings 7D" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Program-shift A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Program-shift S" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "Portret nocny" + +#: src/minoltamn.cpp:895 +#, fuzzy +msgid "200 (Zone Matching High)" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:896 +#, fuzzy +msgid "80 (Zone Matching Low)" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +#, fuzzy +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:918 +#, fuzzy +msgid "Central" +msgstr "Åšrodek" + +#: src/minoltamn.cpp:919 +#, fuzzy +msgid "Up" +msgstr "W górÄ™" + +#: src/minoltamn.cpp:920 +#, fuzzy +msgid "Up right" +msgstr "W prawo do góry" + +#: src/minoltamn.cpp:922 +#, fuzzy +msgid "Down right" +msgstr "W prawo do doÅ‚u" + +#: src/minoltamn.cpp:923 +#, fuzzy +msgid "Down" +msgstr "W dół" + +#: src/minoltamn.cpp:924 +#, fuzzy +msgid "Down left" +msgstr "W lewo do doÅ‚u" + +#: src/minoltamn.cpp:926 +#, fuzzy +msgid "Up left" +msgstr "W lewo do góry" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Zaznaczenie" + +#: src/minoltamn.cpp:947 +#, fuzzy +msgid "Natural+" +msgstr "Naturalny" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "Scena nocna" + +#: src/minoltamn.cpp:950 +#, fuzzy +msgid "Evening Scene" +msgstr "Wieczór" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Pozycja ostrzenia" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Pozycja ostrzenia" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Obszar ostrzenia" + +#: src/minoltamn.cpp:1036 +#, fuzzy +msgid "Exposure Revision" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "Obrót" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +#, fuzzy +msgid "Picture Finish" +msgstr "Informacje o zdjÄ™ciu" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "RÄ™czna korekta ekspozycji" + +#: src/minoltamn.cpp:1064 +#, fuzzy +msgid "Exposure manual bias" +msgstr "RÄ™czna korekta ekspozycji (APEX)" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Tryb AF" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Tryb dziaÅ‚ania AF" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Nieznany znacznik Minolta Camera settings 5D" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "Samowyzwalacz (12 s)" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "Samowyzwalacz (2 s)" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr "Bracketing balansu bieli" + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr "Bracketing balansu bieli" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Auto bracketing" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "CiÄ…gÅ‚y, wysoki" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +#, fuzzy +msgid "Continuous Bracketing" +msgstr "CiÄ…gÅ‚y, wysoki" + +#: src/minoltamn.cpp:1156 +#, fuzzy +msgid "Single-Frame Bracketing" +msgstr "Bracketing" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "Bracketing balansu bieli" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Predefiniowany" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +#, fuzzy +msgid "Color Temperature/Color Filter" +msgstr "Temperatura koloru" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Temperatura" + +#: src/minoltamn.cpp:1213 +#, fuzzy +msgid "Setup" +msgstr "Ustaw" + +#: src/minoltamn.cpp:1214 +#, fuzzy +msgid "Recall" +msgstr "Żółty" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "Konfiguracja obrazu" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Rodzaj obrazu" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Wysokość obrazu" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "Tryb ogniskowania" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "PodglÄ…d" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +#, fuzzy +msgid "Toggle" +msgstr "Ton" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Tryb punktowy włączony" + +#: src/minoltamn.cpp:1260 +#, fuzzy +msgid "Spot Toggle" +msgstr "Tryb punktowy włączony" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Czas otwarcia migawki" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +#, fuzzy +msgid "Automatic" +msgstr "Automatycznie" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "Automatyczna regulacja kontrastu" + +#: src/minoltamn.cpp:1291 +#, fuzzy +msgid "Horizontal" +msgstr "Poziome (normalne)" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "RÄ™czne wyzwolenie" + +#: src/minoltamn.cpp:1302 +#, fuzzy +msgid "Within Range" +msgstr "Zakres obiektywu" + +#: src/minoltamn.cpp:1303 +#, fuzzy +msgid "Under/Over Range" +msgstr "Zakres przejÅ›cia" + +#: src/minoltamn.cpp:1304 +#, fuzzy +msgid "Out of Range" +msgstr "Pozycja poza zakresem" + +#: src/minoltamn.cpp:1309 +#, fuzzy +msgid "Not Indicated" +msgstr "NieokreÅ›lony" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "Podwodny" + +#: src/minoltamn.cpp:1311 +#, fuzzy +msgid "Bottom of Scale" +msgstr "Od doÅ‚u do góry" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +#, fuzzy +msgid "Over Scale" +msgstr "DomyÅ›lna skala" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "RÄ™czne ostrzenie" + +#: src/minoltamn.cpp:1342 +#, fuzzy +msgid "Built-in" +msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +#, fuzzy +msgid "Very Low" +msgstr "Bardzo niski" + +#: src/minoltamn.cpp:1350 +#, fuzzy +msgid "Half Full" +msgstr "PeÅ‚ny" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:1362 +#, fuzzy +msgid "High Speed Sync" +msgstr "Duża szybkość" + +#: src/minoltamn.cpp:1363 +#, fuzzy +msgid "High speed sync" +msgstr "Duża szybkość" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "Czas ekspozycji" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "Czas ekspozycji" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Numer odstÄ™pu" + +#: src/minoltamn.cpp:1377 +#, fuzzy +msgid "Drive Mode 2" +msgstr "Tryb dziaÅ‚ania" + +#: src/minoltamn.cpp:1378 +#, fuzzy +msgid "Drive mode 2" +msgstr "Tryb dziaÅ‚ania" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "Tryb strefy AF" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Tryb flesza" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "Kompensacja ekspozycji bÅ‚ysku w jednostkach EV" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +#, fuzzy +msgid "ISO Setting" +msgstr "Ustawienia ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "PasujÄ…ca strefa" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +#, fuzzy +msgid "Dynamic Range Optimizer Mode" +msgstr "Ustawienia trybu dynamicznego" + +#: src/minoltamn.cpp:1408 +#, fuzzy +msgid "Dynamic range optimizer mode" +msgstr "Rozszerzenie dynamiczny zakresu" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +#, fuzzy +msgid "Self Timer Time" +msgstr "Samowyzwalacz" + +#: src/minoltamn.cpp:1435 +#, fuzzy +msgid "Self timer time" +msgstr "Samowyzwalacz" + +#: src/minoltamn.cpp:1438 +#, fuzzy +msgid "Continuous bracketing" +msgstr "CiÄ…gÅ‚y, wysoki" + +#: src/minoltamn.cpp:1440 +#, fuzzy +msgid "Single Frame Bracketing" +msgstr "Bracketing balansu bieli" + +#: src/minoltamn.cpp:1441 +#, fuzzy +msgid "Single frame bracketing" +msgstr "Bracketing balansu bieli" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Bracketing balansu bieli" + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "Ustawienie balansu bieli" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Balans bieli" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "CM Balans bieli" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Temperatura koloru" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Temperatura koloru" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "WÅ‚asny balans bieli 1" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "WÅ‚asny balans bieli 1" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Ustawienia trybu dynamicznego" + +#: src/minoltamn.cpp:1464 +#, fuzzy +msgid "Custom WB Red Level" +msgstr "WB poziom czerwieni" + +#: src/minoltamn.cpp:1465 +#, fuzzy +msgid "Custom WB red level" +msgstr "WB poziom czerwieni" + +#: src/minoltamn.cpp:1467 +#, fuzzy +msgid "Custom WB Green Level" +msgstr "WB poziom zieleni" + +#: src/minoltamn.cpp:1468 +#, fuzzy +msgid "Custom WB green level" +msgstr "WB poziom zieleni" + +#: src/minoltamn.cpp:1470 +#, fuzzy +msgid "Custom WB Blue Level" +msgstr "WB poziom błękitu" + +#: src/minoltamn.cpp:1471 +#, fuzzy +msgid "CustomWB blue level" +msgstr "WB poziom błękitu" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "WÅ‚asny balans bieli 1" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Poprawka balansu bieli" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "Wartość kompensacji ekspozycji" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "Rozmiar obrazu" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "One shot AF" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Redukcja czerwonych oczu" + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Redukcja czerwonych oczu" + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Szczegóły flesza" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "Szczegóły flesza" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "Auto bracketing" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "Auto bracketing" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "Ustawienie trybu ogniskowania" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "Ustawienie trybu ogniskowania" + +#: src/minoltamn.cpp:1515 +#, fuzzy +msgid "AEL Button" +msgstr "Ustawienie automatycznej ekspozycji" + +#: src/minoltamn.cpp:1516 +#, fuzzy +msgid "AEL button" +msgstr "Ustawienie automatycznej ekspozycji" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "Ustawienie kontrastu" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "Kontrastowość" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Kompensacja ekspozycji" + +#: src/minoltamn.cpp:1525 +#, fuzzy +msgid "AF assist" +msgstr "Wspomaganie AF" + +#: src/minoltamn.cpp:1527 +#, fuzzy +msgid "Card Shutter Lock" +msgstr "Blokada ekspozycji" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "Blokada ekspozycji" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "Blokada ekspozycji" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "DÅ‚ugo otwarta migawka" + +#: src/minoltamn.cpp:1533 +#, fuzzy +msgid "AF Area Illumination" +msgstr "GPS Informacja o obszarze" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Tryb strefy AF" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +#, fuzzy +msgid "Record Display" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/minoltamn.cpp:1540 +#, fuzzy +msgid "Record display" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Indeks ekspozycji" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Indeks ekspozycji" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Indeks ekspozycji" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +#, fuzzy +msgid "Exposure Bracketing Indicator Last" +msgstr "Bracketing ekspozycji" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "Tryb ogniskowania" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Ustawienie trybu ogniskowania" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Rodzaj flesza" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Rodzaj flesza" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "Blokada ekspozycji" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Poziom baterii" + +#: src/minoltamn.cpp:1588 +#, fuzzy +msgid "Battery level" +msgstr "Poziom baterii" + +#: src/minoltamn.cpp:1592 +#, fuzzy +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Nieznany znacznik Canon Camera Settings 1" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +#, fuzzy +msgid "Clear" +msgstr "rok" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +#, fuzzy +msgid "Deep" +msgstr "Denver" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +#, fuzzy +msgid "Light" +msgstr "Prawy" + +#: src/minoltamn.cpp:1950 +#, fuzzy +msgid "Night View" +msgstr "Scena nocna" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +#, fuzzy +msgid "Local" +msgstr "PoÅ‚ożenie" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "Górny prawy" + +#: src/minoltamn.cpp:2007 +#, fuzzy +msgid "Bottom-Right" +msgstr "Dolny prawy" + +#: src/minoltamn.cpp:2009 +#, fuzzy +msgid "Bottom-Left" +msgstr "Dolny lewy" + +#: src/minoltamn.cpp:2011 +#, fuzzy +msgid "Top-Left" +msgstr "Górny lewy" + +#: src/minoltamn.cpp:2012 +#, fuzzy +msgid "Far-Right" +msgstr "PrzyciÄ™cie prawo" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "PrzyciÄ™cie lewo" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "Poziom czerni" + +#: src/minoltamn.cpp:2041 +#, fuzzy +msgid "AF" +msgstr "AF-S" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Data udostÄ™pnienia" + +#: src/minoltamn.cpp:2054 +#, fuzzy +msgid "RAW " +msgstr "RAW" + +#: src/minoltamn.cpp:2055 +#, fuzzy +msgid "CRAW " +msgstr "RAW" + +#: src/minoltamn.cpp:2058 +#, fuzzy +msgid "RAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2059 +#, fuzzy +msgid "CRAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Współczynnik kompresji" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "Rozmiar skompresowanego obrazka" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Użyte ustawienie ISO" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "High Key" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Low Key" + +#: src/nikonmn.cpp:80 +#, fuzzy +msgid "Extra High" +msgstr "Ekstra dobra" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Pojedynczy obszar" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Dynamiczny obszar" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Dynamiczny obszar, najbliższy obiekt" + +#: src/nikonmn.cpp:89 +#, fuzzy +msgid "Group dynamic" +msgstr "Dynamiczna siatka" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Pojedynczy obszar (szeroki)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Dynamiczny obszar (szeroki)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Górny lewy" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Górny prawy" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Dolny lewy" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Dolny prawy" + +#: src/nikonmn.cpp:108 +#, fuzzy +msgid "Left-most" +msgstr "Lewy najwiÄ™kszy" + +#: src/nikonmn.cpp:109 +#, fuzzy +msgid "Right-most" +msgstr "Prawy najwiÄ™kszy" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Tak, rÄ™czna" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Tak, zewnÄ™trzna" + +#: src/nikonmn.cpp:145 +#, fuzzy +msgid "Fire, commander mode" +msgstr "Tak, tryb zarzÄ…dcy" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Tak, tryb TTL" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Opóźnienie" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Bracketing ekspozycji" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "Automatyczne ISO" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Bracketing balansu bieli" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "CiÄ…gÅ‚y, wysoki" + +#: src/nikonmn.cpp:166 +#, fuzzy +msgid "PC control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Bracketing ekspozycji" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Automatyczne wyzwolenie" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "RÄ™czne wyzwolenie" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "Stratna (typ 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Bez kompresji" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Bezstratna" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "Stratna (typ 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "Czarno-biaÅ‚y" + +#: src/nikonmn.cpp:193 +#, fuzzy +msgid "Trim" +msgstr "PrzyciÄ™cie" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "MaÅ‚y obrazek" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "D-Lighting" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Efekt czerwonych oczu" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "Cyjanotypia" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "ÅšwiatÅ‚o dzienne" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "CiepÅ‚y odcieÅ„" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "WÅ‚asny kolor" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Tonacja obrazu" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Minimalny" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Wersja Nikon Makernote" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "CzuÅ‚ość ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Wyostrzenie" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Ustawienie wyostrzenia obrazu" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Ogniskowanie" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Ustawienie flesza" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Ustawienie flesza" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Wybór ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Wybór ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +#, fuzzy +msgid "Data Dump" +msgstr "Zrzut danych 1" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +#, fuzzy +msgid "Data dump" +msgstr "Zrzut danych 1" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Dopasowanie obrazu" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Ustawienie dopasowania obrazu" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Obiektyw zewnÄ™trzny" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Obiektyw zewnÄ™trzny (adapter)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "RÄ™czna odlegÅ‚ość ostrzenia" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Ustawienie powiÄ™kszenia cyfrowego" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "Pozycja AF" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Informacja o pozycji AF" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Nieznany znacznik Nikon1MakerNote" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "CiÄ…gÅ‚y AF" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Pojedynczy AF" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Nie używany" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "wartość szacowana" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "Podstawowa VGA" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "Normalna VGA" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "Dobra VGA" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "Podstawowa SXGA" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "Normalna SXGA" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "Dobra SXGA" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Jasność+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Jasność-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Kontrast+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Kontrast-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "SpeedLight" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Nieznany znacznik Nikon2MakerNote" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "UrzÄ…dzenie flesza" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "UrzÄ…dzenie flesza" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Odchylenie balansu bieli" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Odchylenie balansu bieli" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "Poziomy balansu bieli RB" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "Poziomy balansu bieli RB" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Program Tv Shift" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "Program-shift" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Różnica ekspozycji" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Różnica ekspozycji" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Wskaźnik podglÄ…du obrazka" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "PrzesuniÄ™cie do IFD zawierajÄ…cego obrazek podglÄ…du" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Kompensacja bÅ‚ysku" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Ustawienie kompensacji bÅ‚ysku" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Granice obrazu" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Granice obrazu" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Kompensacja bracketingu bÅ‚ysku" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Zastosowana kompensacja bracketingu bÅ‚ysku" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Kompensacja bracketingu ekspozycji" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "Zastosowana kompensacja bracketingu automatycznej ekspozycji" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Przetwarzanie obrazu" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Przetwarzanie obrazu" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "Duża szybkość" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "1-strefowy (wysoka czuÅ‚ość)" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Ostrzeżenie ekspozycji" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Ostrzeżenie ekspozycji" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "Informacja o redukcji wstrzÄ…sów" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "Informacja o redukcji wstrzÄ…sów" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "Autoryzacja obrazu" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "Autoryzacja obrazu" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-Lighting" +msgstr "D-Lighting" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-lighting" +msgstr "D-Lighting" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Informacje o zdjÄ™ciu" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Informacje o zdjÄ™ciu" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "Czas Å›wiatowy" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "Czas Å›wiatowy" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "Informacja ISO" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "Informacja ISO" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "Kontrola winietowania" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "Kontrola winietowania" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Kompensacja tonów" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Kompensacja tonów" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Użyty tryb flesza" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Tryb robienia zdjÄ™cia" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Tryb robienia zdjÄ™cia" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto Bracket Release" +msgstr "Automatyczne wyzwolenie" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto bracket release" +msgstr "Automatyczne wyzwolenie" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "Apertura obiektywu" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "Krzywa kontrastu" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Krzywa kontrastu" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "OdcieÅ„ koloru" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "OdcieÅ„ koloru" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Rodzaj sceny" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "ŹródÅ‚o Å›wiatÅ‚a" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "ŹródÅ‚o Å›wiatÅ‚a" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "Informacje o zdjÄ™ciu" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Dopasowanie odcieni" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Dopasowanie odcieni" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "Kompresja NEF" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "Kompresja NEF" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Tabela linearyzacji" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Tabela linearyzacji" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Balans kolorów" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Balans kolorów" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Dane obiektywu" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Ustawienia danych obiektywu" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "Åšrodek obrazu Raw" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "Åšrodek obrazu Raw" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Rozmiar sensora" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Rozmiar sensora" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "Wspomaganie AF" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "Pomoc automatycznego ostrzenia" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "Historia retuszu" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "Historia retuszu" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Numer seryjny" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Numer seryjny aparatu, zwykle zaczyna siÄ™ od \"NO= \"" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Rozmiar danych obrazu" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Rozmiar danych obrazu" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Licznik zdjęć" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Licznik zdjęć" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "Licznik usuniÄ™tych zdjęć" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Licznik usuniÄ™tych zdjęć" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Licznik migawki" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Liczba zdjęć wykonanych aparatem" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Informacja o fleszu" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Optymalizacja obrazu" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Optymalizacja obrazu" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "Wariacje programu" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "Wariacje programu" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "Odpowiedź AF" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "Odpowiedź AF" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Redukcja szumów przy wysokim ISO" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "Efekt tonowania" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "Informacja AF 2" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "Informacja o pliku" + +#: src/nikonmn.cpp:614 +#, fuzzy +msgid "AF tune" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture Data" +msgstr "Przechwycone dane" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture data" +msgstr "Przechwycone dane" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "Wersja programu" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "Wersja programu" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture Offsets" +msgstr "PrzesuniÄ™cia (piksele * 2)" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "PrzesuniÄ™cia (piksele * 2)" + +#: src/nikonmn.cpp:621 +#, fuzzy +msgid "Scan IFD" +msgstr "Identyfikator zapisu" + +#: src/nikonmn.cpp:622 +#, fuzzy +msgid "ICC profile" +msgstr "Profil CC" + +#: src/nikonmn.cpp:623 +#, fuzzy +msgid "Capture output" +msgstr "Przechwycone dane" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Nieznany znacznik Nikon3MakerNote" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Nie" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Tak" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "R/M/D" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "M/D/R" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "D/M/R" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "Redukcja wstrzÄ…sów" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Redukcja wstrzÄ…sów" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Nieznany znacznik Nikon Vibration Reduction" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Ustawienia standardowe" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Szybkie dopasowanie" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "PeÅ‚na kontrola" + +#: src/nikonmn.cpp:690 +#, fuzzy +msgid "Blue-green" +msgstr "Niebieski-zielony" + +#: src/nikonmn.cpp:692 +#, fuzzy +msgid "Purple-blue" +msgstr "Purpurowy-niebieski" + +#: src/nikonmn.cpp:693 +#, fuzzy +msgid "Red-purple" +msgstr "Czerwony-purpurowy" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Nazwa" + +#: src/nikonmn.cpp:701 +#, fuzzy +msgid "Base" +msgstr "Podstawa" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Dopasowanie" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Szybkie dopasowanie" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Efekt filtra" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "Nasycenie kolorów" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "Nasycenie kolorów" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "Nieznany znacznik Nikon Picture Control" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Nieznany znacznik Nikon ISO Info" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "Strefa czasowa" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "ÅšwiatÅ‚o dzienne" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "ÅšwiatÅ‚o dzienne" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Format wyÅ›wietlania daty" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Formularz wyÅ›wietlania daty" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "Nieznany znacznik Nikon World Time" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "" + +#: src/nikonmn.cpp:762 +#, fuzzy +msgid "Hi 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "" + +#: src/nikonmn.cpp:767 +msgid "Hi 2.3" +msgstr "" + +#: src/nikonmn.cpp:768 +msgid "Hi 2.5" +msgstr "" + +#: src/nikonmn.cpp:769 +msgid "Hi 2.7" +msgstr "" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "Rozszerzenie ISO" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "Rozszerzenie ISO" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "Rozszerzenie ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "Rozszerzenie ISO 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "Nieznany znacznik Nikon ISO Info" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "Pojedynczy obszar" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "Dynamiczny obszar" + +#: src/nikonmn.cpp:800 +#, fuzzy +msgid "Dynamic Area, Closest Subject" +msgstr "Dynamiczny obszar, najbliższy obiekt" + +#: src/nikonmn.cpp:801 +#, fuzzy +msgid "Group Dynamic" +msgstr "Dynamiczna siatka" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Pojedynczy obszar (szeroki)" + +#: src/nikonmn.cpp:803 +#, fuzzy +msgid "Dynamic Area (wide)" +msgstr "Dynamiczny obszar (szeroki)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Åšrodek-lewo" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Åšrodek-prawo" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "PrzyciÄ™cie lewo" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "PrzyciÄ™cie prawo" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "Tryb strefy AF" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "Punkt AF" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Użyte punkty AF" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Użyte punkty AF" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Nieznany znacznik Nikon Auto Focus" + +#: src/nikonmn.cpp:853 +#, fuzzy +msgid "On (51-point)" +msgstr "Włączone (1)" + +#: src/nikonmn.cpp:854 +#, fuzzy +msgid "On (11-point)" +msgstr "Włączone (1)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Włączone (1)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Włączone (1)" + +#: src/nikonmn.cpp:857 +#, fuzzy +msgid "On (73-point, new)" +msgstr "Włączone (1)" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Włączone (1)" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "Ustawienie kontrastu" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "Ustawienie kontrastu" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase Detect AF" +msgstr "Obszar wykrywania twarzy" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase detect AF" +msgstr "Wykrywanie twarzy" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "Punkt szaroÅ›ci" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "Punkt szaroÅ›ci" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Szerokość obrazu" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Szerokość obrazu" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Wysokość obrazu" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "Wysokość obrazu" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "Pozycja AF" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "Pozycja AF" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "Pozycja AF" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "Pozycja AF" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Tryb strefy AF" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Tryb strefy AF" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Tryb strefy AF" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "PrzyciÄ™cie prawo" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "Ustawienie kontrastu" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "Ustawienie kontrastu" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Nieznany znacznik Nikon Auto Focus" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Liczba porzÄ…dkowa" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Liczba porzÄ…dkowa" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "Nieznany znacznik Nikon ISO Info" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Numer zdjÄ™cia" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Tryb ekspozycji" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "Wielokrotna ekspozycja" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Nieznany znacznik Nikon Auto Focus" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "WewnÄ™trzny" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +#, fuzzy +msgid "iTTL-BL" +msgstr "TTL" + +#: src/nikonmn.cpp:992 +#, fuzzy +msgid "iTTL" +msgstr "TTL" + +#: src/nikonmn.cpp:993 +#, fuzzy +msgid "Auto Aperture" +msgstr "PrzysÅ‚ona" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +#, fuzzy +msgid "Repeating Flash" +msgstr "Klasa wykonania" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Bez bÅ‚ysku" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "Liczba F" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "ŹródÅ‚o pliku" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "ŹródÅ‚o pliku" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +#, fuzzy +msgid "0x0005" +msgstr "1000" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Pokrycie zewnÄ™trznego flesza" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Tryb zewnÄ™trznego flesza" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "ZewnÄ™trzny flesz" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "ZewnÄ™trzny flesz" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "Maksymalna ogniskowa" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "Maksymalna ogniskowa" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Zmianie nazwy pliku na" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "RÄ™czne sterowanie lampÄ…" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "OdlegÅ‚ość ostrzenia" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "OdlegÅ‚ość ostrzenia" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Filtr kolorów" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Filtr kolorów" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Licznik migawki" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Nieznany znacznik Nikon Shot Info D80" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "Poziom flesza" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "Poziom flesza" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Nieznany znacznik Nikon Shot Info D40" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Dostrojenie AF" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Nieznany znacznik Nikon Shot Info D300 (a)" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Nieznany znacznik Nikon Shot Info D300 (b)" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "Włączone (3)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "Licznik migawki 1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "Licznik migawki 1" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Redukcja wstrzÄ…sów 2" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Redukcja wstrzÄ…sów 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "Licznik migawki 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "Licznik migawki 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "Redukcja wstrzÄ…sów 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "Redukcja wstrzÄ…sów 2" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "Nieznany znacznik Nikon Shot Info" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "Poziomy balansu bieli RBGG" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "Poziomy balansu bieli RBGG" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Nieznany znacznik Nikon Color Balance 1" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "Poziomy balansu bieli RGGB" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "Poziomy balansu bieli RGGB" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Nieznany znacznik Nikon Color Balance 2" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Nieznany znacznik Nikon Color Balance 2a" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Nieznany znacznik Nikon Color Balance 2b" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "Poziomy balansu bieli RGBG" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "Poziomy balansu bieli RGBG" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Nieznany znacznik Nikon Color Balance 3" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "Poziomy balansu bieli GRBG" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "Poziomy balansu bieli GRBG" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Nieznany znacznik Nikon Color Balance 4" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "Numer identyfikacyjny obiektywu" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "Numer identyfikacyjny obiektywu" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "Apertura obiektywu" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "Apertura obiektywu" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Minimalna ogniskowa" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Minimalna ogniskowa" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Maksymalna ogniskowa" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Maksymalna ogniskowa" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Maksymalna apertura przy minimalnej ogniskowej" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Maksymalna apertura przy minimalnej ogniskowej" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Maksymalna apertura przy maksymalnej ogniskowej" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Maksymalna apertura przy maksymalnej ogniskowej" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "Wersja MCU" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "Wersja MCU" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Nieznany znacznik Nikon Lens Data 1" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "Pozycja przełącznika DEC" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "Pozycja przełącznika DEC" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "PrzysÅ‚ona" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "PrzysÅ‚ona" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "NajwiÄ™ksza efektywna apertura" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "NajwiÄ™ksza efektywna apertura" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Nieznany znacznik Nikon Lens Data 2" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "Maksymalna apertura przy minimalnej ogniskowej" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "Maksymalna apertura przy maksymalnej ogniskowej" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Nieznany znacznik Nikon Lens Data 3" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Najbliższy obiekt" + +#: src/nikonmn.cpp:1591 +#, fuzzy +msgid "Group dynamic-AF" +msgstr "Dynamiczna zmiana rozmiaru siatki" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "brak" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "użyto" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "Wszystkie 11 punktów" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Standardowa jakość (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Wysoka jakość (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Bardzo wysoka jakość (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "Włączony (predefiniowany)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Sport" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Portret na tle krajobrazu" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Autoportret" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2-w-1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Portret nocny" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Å»ywność" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Dokumenty" + +#: src/olympusmn.cpp:114 +#, fuzzy +msgid "Shoot & Select" +msgstr "Strzelanie 1" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Plaża i Å›nieg" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "Autoportret z samowyzwalaczem" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Åšwieca" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "ÅšwiatÅ‚o zastane" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Za szybÄ…" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "Mój tryb" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "ZwierzÄ™ domowe" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "Podwodny szeroki 1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "Podwodne makro" + +#: src/olympusmn.cpp:124 +#, fuzzy +msgid "Shoot & Select1" +msgstr "Strzelanie 1" + +#: src/olympusmn.cpp:125 +#, fuzzy +msgid "Shoot & Select2" +msgstr "Strzelanie 2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Cyfrowa stabilizacja obrazu" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "Aukcja" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Podwodny szeroki 2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Dzieci" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "Przyrodnicze makro" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "ZdjÄ™cie podwodne" + +#: src/olympusmn.cpp:137 +#, fuzzy +msgid "Shooting Guide" +msgstr "Tryb robienia zdjÄ™cia" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "WewnÄ™trzny + ZewnÄ™trzny" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Z przeplotem" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Przyrostowy" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Obraz miniatury" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Obraz miniatury" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Wersja firmware korpusu" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Wersja firmware korpusu" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Tryb specjalny" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Tryb robienia zdjÄ™cia" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Tryb czarno-biaÅ‚y" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Tryb czarno-biaÅ‚y" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Współczynnik powiÄ™kszenia cyfrowego" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +#, fuzzy +msgid "Focal Plane Diagonal" +msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +#, fuzzy +msgid "Focal plane diagonal" +msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Parametry dystorsji soczewki" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Parametry dystorsji soczewki obiektywu" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Rodzaj aparatu" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Rodzaj aparatu" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Dane w formacie ASCII jak w [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID aparatu" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Dane identyfikacyjne aparatu" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Oprogramowanie" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Obraz podglÄ…du" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Obraz podglÄ…du" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Nazwy pÅ‚yt" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Nazwy pÅ‚yt" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Balans bieli" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Balans bieli" + +#: src/olympusmn.cpp:243 +#, fuzzy +msgid "One Touch WB" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:244 +#, fuzzy +msgid "One touch white balance" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Bracketing balansu bieli" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Bracketing balansu bieli" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmware" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Zrzut danych 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Różne ustawienia aparatu 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Zrzut danych 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Różne ustawienia aparatu 2" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Czas otwarcia migawki" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "CzuÅ‚ość ISO" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "PrzysÅ‚ona" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Jasność" + +#: src/olympusmn.cpp:285 +#, fuzzy +msgid "Bracket" +msgstr "Bracketing" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Wartość kompensacji ekspozycji" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Temperatura czujnika" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Temperatura czujnika" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Temperatura obiektywu" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Temperatura obiektywu" + +#: src/olympusmn.cpp:294 +#, fuzzy +msgid "Light Condition" +msgstr "Funkcja koloru" + +#: src/olympusmn.cpp:295 +#, fuzzy +msgid "Light condition" +msgstr "Funkcja koloru" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "Obszar ogniskowania" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "Obszar ogniskowania" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "PowiÄ™kszenie" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "Liczba kroków powiÄ™kszania" + +#: src/olympusmn.cpp:309 +#, fuzzy +msgid "Macro Focus" +msgstr "ÅšledzÄ…ce ostrzenie" + +#: src/olympusmn.cpp:310 +#, fuzzy +msgid "Macro focus step count" +msgstr "Liczba kroków ostrzenia" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Współczynnik wyostrzenia" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Współczynnik wyostrzenia" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Poziom naÅ‚adowania flesza" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Poziom naÅ‚adowania flesza" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matryca kolorów" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matryca kolorów" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Poziom czerni" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Poziom czerni" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Tryb balansu bieli" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Balans czerwieni" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Balans czerwieni" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Balans niebieskiego" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Balans niebieskiego" + +#: src/olympusmn.cpp:342 +#, fuzzy +msgid "Color Matrix Number" +msgstr "Matryca kolorów 1" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Matryca kolorów 2" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Numer seryjny 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Numer seryjny 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Kompensacja ekspozycji bÅ‚ysku" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Odbicie zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Odbicie zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Pokrycie zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Pokrycie zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Tryb zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Tryb zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Regulacja barwy" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Regulacja barwy" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Filtr kolorów" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Filtr kolorów" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Współczynnik kompresji" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Współczynnik kompresji" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Osadzony obrazek podglÄ…du" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "PrzesuniÄ™cie obrazu podglÄ…du" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Rozmiar obrazu podglÄ…du" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Tryb skanowania CCD" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "Tryb skanowania CCD" + +#: src/olympusmn.cpp:441 +#, fuzzy +msgid "Infinity Lens Step" +msgstr "NieskoÅ„czoność" + +#: src/olympusmn.cpp:442 +#, fuzzy +msgid "Infinity lens step" +msgstr "NieskoÅ„czoność" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "Apertura obiektywu" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Wyposażenie" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "sub-IFD wyposażenia aparatu" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "sub-IFD ustawieÅ„ aparatu" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "" + +#: src/olympusmn.cpp:454 +#, fuzzy +msgid "Raw development sub-IFD" +msgstr "sub-IFD wyposażenia aparatu" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "" + +#: src/olympusmn.cpp:457 +#, fuzzy +msgid "Raw development 2 sub-IFD" +msgstr "sub-IFD wyposażenia aparatu" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr "Przetwarzanie obrazu" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Ostrzenie" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "sub-IFD ostrzenia" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Raw" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "Raw sub-IFD" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Nieznany znacznik OlympusMakerNote" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Program-shift" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Centralnie ważony uÅ›redniony" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +#, fuzzy +msgid "Pattern+AF" +msgstr "Wzór CFA" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Regulacja barwy" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "Pojedyncze zdjÄ™cie" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "ZdjÄ™cia seryjne" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "Multi AF" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "Nie użyto AF" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "Użyto AF" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Nie gotowy" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Gotowy" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "BÅ‚ysk wypeÅ‚niajÄ…cy" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "Synchronizacja z dÅ‚ugimi czasami" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "Wymuszony" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "Druga kurtyna" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500K (dobra pogoda w cieniu)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (pochmurno)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (dobra pogoda)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (żarówka wolframowa)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (żarowka wolframopodobna)" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "PrzysÅ‚ona" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Auto (BÅ‚ysk)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (Å›wiatÅ‚o dzienne lampy fluorescencyjnej)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (neutralnie biaÅ‚a lampa fluorescencyjna)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (chÅ‚odnobiaÅ‚a lampa fluorescencyjna)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Fluorescencja biaÅ‚a" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "WÅ‚asny balans bieli 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "WÅ‚asny balans bieli 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "WÅ‚asny balans bieli 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "WÅ‚asny balans bieli 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (rozszerzenie czerwieni)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (rozszerzenie zieleni)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (rozszerzenie błękitu)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (kolory skóry)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "Pro Photo RGB" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Filtr szumu" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Filtr szumów przy dÅ‚ugiej ekspozycji" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Wyciszony" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "Jednotonowy" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "Włączony, tryb 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "Włączony, tryb 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "Włączony, tryb 1" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Wersja ustawieÅ„ aparatu" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Wersja ustawieÅ„ aparatu" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Obrazek podglÄ…du prawidÅ‚owy" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Obrazek podglÄ…du prawidÅ‚owy" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "PoczÄ…tek obrazu podglÄ…du" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "PoczÄ…tek obrazu podglÄ…du" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "DÅ‚ugość obrazu podglÄ…du" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "DÅ‚ugość obrazu podglÄ…du" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Blokada automatycznej ekspozycji" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "Czas ekspozycji" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "Czas ekspozycji" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "Tryb ogniskowania" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Proces wÅ‚asny" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +#, fuzzy +msgid "AF search" +msgstr "Użyto AF" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Strefy AF" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Strefy autofokusa" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Wybrany punkt AF" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF Fine Tune Adjust" +msgstr "Dostrojenie AF" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF fine tune adjust" +msgstr "Dostrojenie AF" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Tryb flesza" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Tryb flesza" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "Aktywność flesza" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "Aktywność flesza" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "SiÅ‚a bÅ‚ysku" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "RÄ™czne sterowanie lampÄ…" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Balans bieli 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Balans bieli 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Temperatura balansu bieli" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Temperatura balansu bieli" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Nasycenie wÅ‚asne" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Nasycenie wÅ‚asne" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Nasycenie zmodyfikowane" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Nasycenie zmodyfikowane" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Ustawienie kontrastu" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Ustawienie wyostrzenia" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Korekcja dystorsji" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Korekcja dystorsji" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Kompensacja cieni" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Kompensacja cieni" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Współczynnik kompresji" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Współczynnik kompresji" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Gradacja" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Styl obrazu" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Nasycenie stylu zdjÄ™cia" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Nasycenie stylu zdjÄ™cia" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "OdcieÅ„ stylu zdjÄ™cia" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "OdcieÅ„ stylu zdjÄ™cia" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Kontrast stylu zdjÄ™cia" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Kontrast stylu zdjÄ™cia" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Ostrość stylu zdjÄ™cia" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Ostrość stylu zdjÄ™cia" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Filtr cz-b stylu zdjÄ™cia" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Filtr cz-b stylu zdjÄ™cia" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Tonowanie stylu zdjÄ™cia" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Tonowanie stylu zdjÄ™cia" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Filtr szumu" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Filtr" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Filtr kolorów" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Filtr cyfrowy" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Filtr cyfrowy" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Tryb panoramy" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Tryb panoramy" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Jakość obrazu 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Jakość obrazu 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "CiÅ›nienie manometru" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "CiÅ›nienie manometru" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Odczyt manometru" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Odczyt manometru" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Rozszerzona detekcja balansu bieli" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Rozszerzona detekcja balansu bieli" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "Nieznany znacznik OlympusCs" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "Prosty system E" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "System E" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "Wersja wyposażenia" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "Wersja wyposażenia" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Numer seryjny" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Numer seryjny obiektywu" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Numer seryjny obiektywu" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Wersja firmware obiektywu" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Wersja firmware obiektywu" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Maksymalna apertura przy bieżącej ogniskowej" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Maksymalna apertura przy bieżącej ogniskowej" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Ekstender" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Numer seryjny ekstendera" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Numer seryjny ekstendera" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Model ekstendera" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Model ekstendera" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Wersja firmware ekstendera" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Wersja firmware ekstendera" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Konwerter" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Konwerter" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Model flesza" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Model flesza" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Wersja firmware flesza" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Wersja firmware flesza" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Numer seryjny flesza" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Nieznany znacznik OlympusEq" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +#, fuzzy +msgid "High Speed" +msgstr "Duża szybkość" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +#, fuzzy +msgid "High Function" +msgstr "Funkcja koloru" + +#: src/olympusmn.cpp:790 +#, fuzzy +msgid "Advanced High Speed" +msgstr "Duża szybkość" + +#: src/olympusmn.cpp:791 +#, fuzzy +msgid "Advanced High Function" +msgstr "Funkcja koloru" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "OryginaÅ‚" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Edytowany (krajobraz)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Edytowany (portret)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "Temperatura koloru balansu bieli" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "Szary punktu balansu bieli" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "Wersja informacji Raw" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "Wersja informacji Raw" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Korekta ekspozycji" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +#, fuzzy +msgid "Exposure bias value" +msgstr "Korekta ekspozycji (APEX)" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Wartość balansu bieli" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Wartość balansu bieli" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "Poprawka balansu bieli" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "Poprawka balansu bieli" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "Punkt szaroÅ›ci" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "Punkt szaroÅ›ci" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Wzmocnienie nasycenia" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Wzmocnienie nasycenia" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Moje kolory" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Kontrast" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Kontrast" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "Ostrość" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Kontrast" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Silnik" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Stan edycji" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Ustawienia" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Nieznany znacznik OlympusRd" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Wersja informacji Raw" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "Wersja informacji Raw" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Poprawka balansu bieli" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "PM Nasycenie" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "PM Kontrast" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "PM Ostrość" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "PM Filtr czarno-biaÅ‚y" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "PM Filtr czarno-biaÅ‚y" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "PM Tonowanie" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "PM Tonowanie" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "Automatyczna gradacja" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "Automatyczna gradacja" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "PM Filtr szumu" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "Filtr szumów stylu zdjÄ™cia" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Nieznany znacznik Olympus Rd2" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Włączony (predefiniowany)" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Włączony (predefiniowany)" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Przetwarzanie obrazu" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Przetwarzanie obrazu" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB Levels 3000K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB levels 3000K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB Levels 3300K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB levels 3300K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB Levels 3600K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB levels 3600K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB Levels 3900K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB levels 3900K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB Levels 4000K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB levels 4000K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB Levels 4300K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB levels 4300K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB Levels 4500K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB levels 4500K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB Levels 4800K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB levels 4800K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB Levels 5300K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB levels 5300K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB Levels 6000K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB levels 6000K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB Levels 6600K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB levels 6600K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB Levels 7500K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB levels 7500K" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB Levels CWB1" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB levels CWB1" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB Levels CWB3" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB levels CWB3" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB Levels CWB4" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB levels CWB4" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G Level 3000K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G level 3000K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G Level 3300K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G level 3300K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G Level 3600K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G level 3600K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G Level 3900K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G level 3900K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G Level 4000K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G level 4000K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G Level 4300K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G level 4300K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G Level 4500K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G level 4500K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G Level 4800K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G level 4800K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G Level 5300K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G level 5300K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G Level 6000K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G level 6000K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G Level 6600K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G level 6600K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G Level 7500K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G level 7500K" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Poziomy balansu bieli RBGG" + +#: src/olympusmn.cpp:970 +#, fuzzy +msgid "Enhancer" +msgstr "Programista" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer Values" +msgstr "Ostrość" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer values" +msgstr "Kontrast" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Filtr kolorów" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Kontrast" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Kontrast" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Poziom czerni" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Podstawa wzmocnienia" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Automatyczna gradacja" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "PrzyciÄ™cie lewo" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "PrzyciÄ™cie lewo" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "PrzyciÄ™cie góra" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "PrzyciÄ™cie góra" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "PrzyciÄ™cie szerokość" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "PrzyciÄ™cie szerokość" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "PrzyciÄ™cie wysokość" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "PrzyciÄ™cie wysokość" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Tryb ekspozycji" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Wielokrotna ekspozycja" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +#, fuzzy +msgid "Aspect Ratio" +msgstr "Proporcje pikseli wideo" + +#: src/olympusmn.cpp:985 +#, fuzzy +msgid "Aspect ratio" +msgstr "Proporcje pikseli wideo" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Proporcje pikseli wideo" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Proporcje pikseli wideo" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "Wykrywanie twarzy" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "Wykrywanie twarzy" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "Obszar wykrywania twarzy" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "Obszar wykrywania twarzy" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Nieznany znacznik OlympusIp" + +#: src/olympusmn.cpp:1000 +#, fuzzy +msgid "Bounce or Off" +msgstr "Odbicie lub nie" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "BezpoÅ›redni" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Wersja informacji focusa" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Wersja informacji o ostrzeniu (fokusie)" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Automatyczne ostrzenie" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "Wykrywanie sceny" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "Wykrywanie sceny" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Obszar sceny" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Obszar sceny" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Dane wykrywania sceny" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Dane wykrywania sceny" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Liczba kroków powiÄ™kszania" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Liczba kroków ostrzenia" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Liczba kroków ostrzenia" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "Krok ostrzenia - nieskoÅ„czoność" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "Krok ostrzenia - nieskoÅ„czoność" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "Krok ostrzenia - blisko" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "Krok ostrzenia - blisko" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "ZewnÄ™trzny flesz" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Liczba przewodnia zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Liczba przewodnia zewnÄ™trznego flesza" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Flesz rÄ™czny" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Flesz rÄ™czny" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Nieznany znacznik OlympusFi" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "Nieznany znacznik OlympusFe" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "Dobra pogoda" + +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "Å»arówka wolframowa" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "Wieczorne Å›wiatÅ‚o sÅ‚oÅ„ca" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Lampy fluorescencyjna, Å›wiatÅ‚o dzienne (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +#, fuzzy +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Lampa fluorescencyjna, biel dnia (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +#, fuzzy +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Lampa fluorescencyjna chÅ‚odnobiaÅ‚a (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +#, fuzzy +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Lampa fluorescencyjna biaÅ‚a (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "Użytkownika 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "Wersja informacji Raw" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "Wersja informacji Raw" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB Levels Used" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB levels used" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB Levels Auto" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB levels auto" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB Levels Shade" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB levels shade" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB Levels Cloudy" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB levels cloudy" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB Levels Fine Weather" +msgstr "Dobra pogoda" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB Levels Tungsten" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB levels tungsten" +msgstr "Poziomy balansu bieli RB" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB Levels Evening Sunlight" +msgstr "Wieczorne Å›wiatÅ‚o sÅ‚oÅ„ca" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB levels evening sunlight" +msgstr "Wieczorne Å›wiatÅ‚o sÅ‚oÅ„ca" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "Fluorescencja biaÅ‚a" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "4500K (neutralnie biaÅ‚a lampa fluorescencyjna)" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Matryca kolorów 2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Matryca kolorów 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Poziom czerni 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Poziom czerni 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "Współczynniki YCbCr" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "Współczynniki YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "PrawidÅ‚owa głębia pikseli" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "PrawidÅ‚owa głębia pikseli" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Kompensacja balansu bieli" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Kompensacja balansu bieli" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "Ustawienie nasycenia" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "Ustawienie odcieni" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "Ustawienie odcieni" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "CM Kompensacja ekspozycji" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "CM Kompensacja ekspozycji" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "CM Balans bieli" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "CM Balans bieli" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "CM Kompensacja balansu bieli" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "CM Kompensacja balansu bieli" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "CM Punkt szaroÅ›ci balansu bieli" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "CM Punkt szaroÅ›ci balansu bieli" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "CM Nasycenie" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "CM Nasycenie" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "CM OdcieÅ„" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "CM OdcieÅ„" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "CM Kontrast" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "CM Kontrastowość" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "CM Ostrość" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "CM Ostrość" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "Nieznany znacznik OlympusRi" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Wybrane przez użytkownika" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Automatyczne wymuszenie" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Szybki" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 K" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 K" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 K" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 K" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 K" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 K" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 K" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "One-touch" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "Unikalny identyfikator obrazu" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "Użyto AF" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Ostrzenie punktowe" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Strefa prawa" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "panorama" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Tryb ogniskowania" + +#: src/olympusmn.cpp:1510 +#, fuzzy +msgid "Fish Eye" +msgstr "Energia bÅ‚ysku" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +#, fuzzy +msgid "Dramatic Tone" +msgstr "Informacje o zdjÄ™ciu" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Ostrzenie punktowe" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Naturalny kolor" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Najmniejsza wartość przysÅ‚ony" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Zaznaczenie" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Tryb ogniskowania" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Naturalny kolor" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Naturalny kolor" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "panorama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Obiekt kontrolujÄ…cy" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Obiekt kontrolujÄ…cy" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Barwa naturalna" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Barwa naturalna" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Barwa naturalna" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "Strefa lewa" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +#, fuzzy +msgid "Center (horizontal)" +msgstr "Strefa Å›rodkowa (ukÅ‚ad poziomy)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +#, fuzzy +msgid "Center (vertical)" +msgstr "Strefa Å›rodkowa (ukÅ‚ad pionowa)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Strefa Å›rodkowa (ukÅ‚ad poziomy)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "Poziome (normalne)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Poziome (normalne)" + +#: src/olympusmn.cpp:1630 +#, fuzzy +msgid "Bottom-left (horizontal)" +msgstr "Dolny lewy" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "Dolny lewy" + +#: src/olympusmn.cpp:1632 +#, fuzzy +msgid "Bottom-right (horizontal)" +msgstr "Dolny prawy" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "Åšrodek" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "Górny prawy" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +#, fuzzy +msgid "Mid-right (vertical)" +msgstr "Åšrodek-prawo" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +#, fuzzy +msgid "Bottom-left (vertical)" +msgstr "Dolny lewy" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "Dolny lewy" + +#: src/olympusmn.cpp:1643 +#, fuzzy +msgid "Bottom-right (vertical)" +msgstr "Dolny prawy" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Pojedynczy obszar" + +#: src/olympusmn.cpp:1681 +#, fuzzy +msgid "All Target" +msgstr "cel" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Ustawienia trybu dynamicznego" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Bardzo wysoki" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Ruchomy obraz" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "MaÅ‚y film" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogen" + +#: src/panasonicmn.cpp:83 +#, fuzzy +msgid "Auto, focus button" +msgstr "Ostrzenie automatyczne" + +#: src/panasonicmn.cpp:84 +#, fuzzy +msgid "Auto, continuous" +msgstr "Gradient ciÄ…gÅ‚y" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +#, fuzzy +msgid "Panning" +msgstr "Åšledzenie" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Tele-makro" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Makro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Sceneria" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Priorytet szybkoÅ›ci migawki" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "PodglÄ…d filmu" + +#: src/panasonicmn.cpp:123 +#, fuzzy +msgid "Simple" +msgstr "Pojedynczy" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "Efekty kolorystyczne" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Scena nocna" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "Dziecko" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "GÅ‚adka skóra" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "ÅšwiatÅ‚o Å›wiecy" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Gwiaździste niebo" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "Wysoka czuÅ‚ość" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Asystent panoramy" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "Fotografia powietrzna" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "Inteligentne ISO" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Balans bieli" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "CiÄ…gÅ‚e zdjÄ™cia w wysokiej czuÅ‚oÅ›ci" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "Inteligentna automatyka" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Wielopunktowy" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Zakres przejÅ›cia" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Odchylenie ekspozycji flesza" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Skaner negatywów" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Moje kolory" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Klatka panoramy" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "ÅšwiatÅ‚o Å›wiecy" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Filtr cyfrowy" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Autoportret" + +#: src/panasonicmn.cpp:163 +#, fuzzy +msgid "Silky Skin" +msgstr "GÅ‚adka skóra" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "PowiÄ…zanie" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Scena nocna" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Niebieski" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "GPS Informacja o obszarze" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Portret nocny" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "CiepÅ‚y" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Zimny" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Niska/Wysoka jakość" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "NieskoÅ„czony" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "Åšrednie niskie" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "Åšrednie wysokie" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "Dużo" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "Obrót o 90 w prawo" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Nie używany" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Nie używany" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "Optyka EX" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Teleobiektyw" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +#, fuzzy +msgid "Home" +msgstr "Rzym" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Standardowy (kolorowy)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "Dynamiczny (kolorowy)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Naturalny (kolorowy)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "GÅ‚adki (kolorowy)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Standardowy (czarno-biaÅ‚y)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "Dynamiczny (czarno-biaÅ‚y)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "GÅ‚adki (czarno-biaÅ‚y)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Jaskrawy" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Bracketing" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Ekstender" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Auto" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Forma standardowa" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "Obrót o 90 w prawo" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "Obrót o 90 w prawo" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Od lewej do prawej" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Od prawej do lewej" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Od góry do doÅ‚u" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Od doÅ‚u do góry" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Czas wysÅ‚ania" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Informacje o zdjÄ™ciu" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Zaznaczenie" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Audio" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Poprawka balansu bieli" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Odchylenie bÅ‚ysku" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Wersja Exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Efekt kolorystyczny" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Efekt kolorystyczny" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"Czas w setnych sekundy od momentu włączenia aparatu do momentu zapisania " +"zdjÄ™cia na karcie pamiÄ™ci" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Tryb zdjęć seryjnych" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Tryb zdjęć seryjnych" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Redukcja szumów" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Samowyzwalacz" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Wspomaganie AF" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "Dziecko" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "Tryb powiÄ™kszenia optycznego" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "Tryb powiÄ™kszenia optycznego" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "DzieÅ„ podróży" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "DzieÅ„ podróży" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World Time Location" +msgstr "Lokalizacja zdjÄ™cia" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World time location" +msgstr "Lokalizacja zdjÄ™cia" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "GPS Znacznik czasu" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "Program ISO" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Rodzaj sceny" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "GPS Znacznik czasu" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Wykrywanie twarzy" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Temperatura koloru" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Temperatura koloru" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Bracketing" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "Dopasowanie" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "Dopasowanie" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Informacja o fleszu" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Pozycja AF" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Wykrywanie twarzy" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "Rodzaj akcesorium" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "Rodzaj akcesorium" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Numer seryjny" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "Zakres przejÅ›cia" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Inteligentna automatyka" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Wersja firmware" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Informacja o redukcji wstrzÄ…sów" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Ostrzeżenie o ostrzeniu" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Tryb pomiaru bÅ‚ysku" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "TytuÅ‚" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Dziecko" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "PoÅ‚ożenie" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Stan" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Inteligentna automatyka" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Czas otwarcia migawki" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Dynamiczny zakres" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Redukcja szumów" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Miasto" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Tryb zdjÄ™cia" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Orientacja obrazu" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "KÄ…t przyciÄ™cia" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Kierunek panoramy" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "PrzesuniÄ™cie zapisu" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "WewnÄ™trzny + ZewnÄ™trzny" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Szybkość migawki" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "WartoÅ›ci pomiaru szumu." + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "Wersja MakerNote" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "Wersja MakerNote" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "WB poziom czerwieni" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "WB poziom czerwieni" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "WB poziom zieleni" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "WB poziom zieleni" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "WB poziom błękitu" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "WB poziom błękitu" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "GPS Znacznik czasu" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "GPS Znacznik czasu" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "Dziecko" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "Zakres przejÅ›cia" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Nieznany znacznik PanasonicMakerNote" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Tryb punktowy włączony" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "Tryb punktowy wyłączony lub 3-strefowy (wysoka czuÅ‚ość)" + +#: src/panasonicmn.cpp:564 +#, fuzzy +msgid "23-area" +msgstr "5-strefowy" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "Ostrzenie punktowe" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "5-strefowy" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "1-strefowy" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "1-strefowy (wysoka czuÅ‚ość)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "3-strefowy (auto)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "3-strefowy (lewa)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "3-strefowy (Å›rodek)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "3-strefowy (prawa)" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Ostrzenie punktowe" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "nie ustawiono\n" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "Wersja Panasonic raw" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Szerokość sensora" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Szerokość sensora" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Wysokość sensora" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Wysokość sensora" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Górna granica sensora" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Górna granica sensora" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Lewa granica sensora" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Lewa granica sensora" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Balans czerwieni (w obrazach RAW Digilux 2)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Producent" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "Producent wyposażenia nagrywajÄ…cego" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Model" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "Nazwa lub numer modelu wyposażenia" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "PrzesuniÄ™cia pasów" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "PrzesuniÄ™cia pasów" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientacja" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "Wierszy na pas" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "Liczba wierszy na pas" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Liczba bajtów na pas" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Liczba bajtów na pas" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "PrzesuniÄ™cie danych Raw" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "PrzesuniÄ™cie danych Raw" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Wskaźnik Exif IFD" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "Wskaźnik do EXIF IFD" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "Wskaźnik GPS Info IFD" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "Wskaźnik do GPS Info IFD" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Nieznany znacznik PanasonicRaw" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Scena nocna" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Dobra" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Lepsza" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Najlepsza" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 lub 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 lub 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 lub 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Nie, automatycznie" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Flesz siÄ™ nie uruchomiÅ‚" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Nie, automatycznie, redukcja czerwonych oczu" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Tak, automatycznie" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Flesz uruchomiÅ‚ siÄ™" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Tak, automatycznie, redukcja czerwonych oczu" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Tak, automatycznie, redukcja czerwonych oczu" + +#: src/pentaxmn.cpp:256 +#, fuzzy +msgid "On, Wireless (Master)" +msgstr "Tak, bezprzewodowo" + +#: src/pentaxmn.cpp:257 +#, fuzzy +msgid "On, Wireless (Control)" +msgstr "Tak, bezprzewodowo" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Tak, miÄ™kkie Å›wiatÅ‚o" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Tak, synchronizacja z dÅ‚ugimi czasami" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Tak, synchronizacja dÅ‚ugimi czasami, redukcja czerwonych oczu" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "Tak, synchronizacja na otwarcie migawki" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "ÅšledzÄ…ce ostrzenie" + +#: src/pentaxmn.cpp:275 +#, fuzzy +msgid "AF-A" +msgstr "AF-S" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Ustawienie kontrastu" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Ustawienie kontrastu" + +#: src/pentaxmn.cpp:284 +#, fuzzy +msgid "Fixed Center" +msgstr "Przytwierdzony poÅ›rodku" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "Automatycznie" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Zaznaczenie" + +#: src/pentaxmn.cpp:305 +#, fuzzy +msgid "Fixed Center or multiple" +msgstr "Przytwierdzony poÅ›rodku" + +#: src/pentaxmn.cpp:307 +#, fuzzy +msgid "Top-center" +msgstr "Åšrodek" + +#: src/pentaxmn.cpp:313 +#, fuzzy +msgid "Bottom-center" +msgstr "Dolny lewy" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Wielopolowy" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Centralnie ważony" + +#: src/pentaxmn.cpp:415 +#, fuzzy +msgid "DaylightFluorescent" +msgstr "Fluorescencja Å›wiatÅ‚o dzienne" + +#: src/pentaxmn.cpp:416 +#, fuzzy +msgid "DaywhiteFluorescent" +msgstr "Fluorescencja biaÅ‚a dzienna" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "Fluorescencja biaÅ‚a" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Temperatura koloru" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Wybrany przez użytkownika" + +#: src/pentaxmn.cpp:428 +#, fuzzy +msgid "Auto (Daylight)" +msgstr "Auto (ÅšwiatÅ‚o dzienne)" + +#: src/pentaxmn.cpp:429 +#, fuzzy +msgid "Auto (Shade)" +msgstr "Auto (CieÅ„)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (BÅ‚ysk)" + +#: src/pentaxmn.cpp:431 +#, fuzzy +msgid "Auto (Tungsten)" +msgstr "Auto (Lampa tungstenowa)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (Fluorescencja biaÅ‚a dzienna)" + +#: src/pentaxmn.cpp:433 +#, fuzzy +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (Fluorescencja biaÅ‚a dzienna)" + +#: src/pentaxmn.cpp:434 +#, fuzzy +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (Fluorescencja biaÅ‚a)" + +#: src/pentaxmn.cpp:435 +#, fuzzy +msgid "Auto (Cloudy)" +msgstr "Auto (Pochmurno)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Ustawienie (Fajerwerki?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +#, fuzzy +msgid "Med Low" +msgstr "Niski zakres" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +#, fuzzy +msgid "Med High" +msgstr "Wysoki zakres" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +#, fuzzy +msgid "Med Soft" +msgstr "MiÄ™kkie Å›wiatÅ‚o" + +#: src/pentaxmn.cpp:474 +#, fuzzy +msgid "Med Hard" +msgstr "Twarda krawÄ™dź" + +#: src/pentaxmn.cpp:475 +#, fuzzy +msgid "Very Soft" +msgstr "MiÄ™kkie Å›wiatÅ‚o" + +#: src/pentaxmn.cpp:476 +#, fuzzy +msgid "Very Hard" +msgstr "Bardzo trudne" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Miasto zamieszkania" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Meksyk" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "Nowy Jork" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracas" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madryt" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Londyn" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paryż" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Mediolan" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rzym" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlin" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "StambuÅ‚" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Kair" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jerozolima" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moskwa" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Dżudda" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Teheran" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubaj" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Karaczi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Kolombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Katmandu" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Rangun" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Wientian" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapur" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Jakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Pekin" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Szanghaj" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Tajpej" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelajda" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokio" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Numea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Algier" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Ateny" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Sztokholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lizbona" + +#: src/pentaxmn.cpp:560 +#, fuzzy +msgid "Copenhagen" +msgstr "Tematyka" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Nieprzetworzony" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "rozmiar" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Wykadrowany" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Filtr cyfrowy" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Program Hi-speed" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Program DOF" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "Program MTF" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Portret nocny" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Bez bÅ‚ysku" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surfing i Å›nieg" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Dzieci" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "D-Lighting" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "Nocne zdjÄ™cie" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "Niebieski" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Scena nocna" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Super Makro" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "Fluorescencja" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +#, fuzzy +msgid "Auto PICT (Standard)" +msgstr "Auto (CieÅ„)" + +#: src/pentaxmn.cpp:611 +#, fuzzy +msgid "Auto PICT (Portrait)" +msgstr "Automatyczna regulacja kontrastu" + +#: src/pentaxmn.cpp:612 +#, fuzzy +msgid "Auto PICT (Landscape)" +msgstr "Edytowany (krajobraz)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "" + +#: src/pentaxmn.cpp:614 +#, fuzzy +msgid "Auto PICT (Sport)" +msgstr "Automatyczna regulacja kontrastu" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "Tryb zieleni" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Priorytet migawki" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Priorytet przysÅ‚ony" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Bulb" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Program Tv Shift" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Program Av Shift" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Priorytet przysÅ‚ony (wyłączona automatyczna przysÅ‚ona)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manualny (wyłączona automatyczna przysÅ‚ona)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Bulb (wyłączona automatyczna przysÅ‚ona)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Priorytet migawki" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Priorytet migawki i przysÅ‚ony AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Priorytet migawki i przysÅ‚ony AE (1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "Priorytet czuÅ‚oÅ›ci AE" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "Priorytet czuÅ‚oÅ›ci AE (1)" + +#: src/pentaxmn.cpp:644 +#, fuzzy +msgid "Flash X-Sync Speed AE" +msgstr "Synchronizacja flesza Av" + +#: src/pentaxmn.cpp:645 +#, fuzzy +msgid "Flash X-Sync Speed AE (1)" +msgstr "Synchronizacja flesza Av" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Program (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Program (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Program (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Regulacja barwy" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +#, fuzzy +msgid "Continuous (Hi)" +msgstr "CiÄ…gÅ‚y (Hi)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Seria" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +#, fuzzy +msgid "Video" +msgstr "Szeroki" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Samowyzwalacz (12 s)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Samowyzwalacz (2 s)" + +#: src/pentaxmn.cpp:669 +#, fuzzy +msgid "Mirror Lock-up" +msgstr "Blokada lustra" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Sterowanie podczerwieniÄ… (3 s)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Sterowanie podczerwieniÄ…" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "CiÄ…gÅ‚e zdjÄ™cia w wysokiej czuÅ‚oÅ›ci" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Silne" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Silne" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Silne" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Auto" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 lub brak obiektywu" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "Obiektyw K,M" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Obiektyw serii A" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Jasny" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +#, fuzzy +msgid "Weakest" +msgstr "NajsÅ‚absze" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "SÅ‚abe" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Silne" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Nieznane" + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Wersja Pentax Makernote" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Tryb pracy aparatu" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Rozdzielczość obrazu podglÄ…du" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "DÅ‚ugość obrazu podglÄ…du" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "Rozmiar IFD zawierajÄ…cego obrazu podglÄ…du" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Identyfikacja modelu" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Identyfikacja modelu Pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Data" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Czas" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Ustawienia jakoÅ›ci obrazu" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Ustawienia rozmiaru obrazu" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Ustawienia trybu flesza" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Ustawienia trybu ostrzenia" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Wybrany punkt AF" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "Użyte punkty AF" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "Liczba F" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "CzuÅ‚ość ISO" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Ustawienia czuÅ‚oÅ›ci ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Tryb pomiaru" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Auto bracketing" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Balans niebieskiego" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Balans kolorów" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "DÅ‚ugość ogniskowej" + +#: src/pentaxmn.cpp:1239 +#, fuzzy +msgid "Hometown" +msgstr "Miasto" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "Miasto - czas letni" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "OkreÅ›la czy czas letni jest aktywny w mieÅ›cie" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Cel - czas letni" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "OkreÅ›la czy czas letni jest aktywny w celu" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "Wersja firmware DSP" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "Wersja firmware CPU" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Wartość Å›wiatÅ‚a" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" +"Wartość Å›wiatÅ‚a obliczona przez aparat, uwzglÄ™dnia kompensacjÄ™ ekspozycji" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "Rozmiar danych obrazu" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "Rozmiar obrazu" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Granice obrazu podglÄ…du" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Poprawka czuÅ‚oÅ›ci" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Filtr cyfrowy" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Temperatura aparatu" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Tonacja obrazu" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Redukcja wstrzÄ…sów" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Informacja o redukcji wstrzÄ…sów" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "Rozszerzenie dynamiczny zakresu" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "Dopasowanie odcieni" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Punkt czerni" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Punkt bieli" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +#, fuzzy +msgid "ShotInfo" +msgstr "Informacje o zdjÄ™ciu" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "Informacja o automatycznej ekspozycji" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Informacja o obiektywie" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Informacja o fleszu" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "Pola Pomiaru AE" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "Kompensacja bÅ‚ysku" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "Kompensacja bÅ‚ysku" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +#, fuzzy +msgid "WB_RGGBLevelsDaylight" +msgstr "Poziomy balansu bieli RGGB" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +#, fuzzy +msgid "WB_RGGBLevelsShade" +msgstr "Poziomy balansu bieli RGGB" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +#, fuzzy +msgid "WB_RGGBLevelsCloudy" +msgstr "Poziomy balansu bieli RGGB" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +#, fuzzy +msgid "WB_RGGBLevelsTungsten" +msgstr "Poziomy balansu bieli RGGB" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentD" +msgstr "Fluorescencja biaÅ‚a" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentN" +msgstr "Fluorescencja biaÅ‚a" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentW" +msgstr "Fluorescencja biaÅ‚a" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +#, fuzzy +msgid "WB_RGGBLevelsFlash" +msgstr "Poziomy balansu bieli RGGB" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Informacja o aparacie" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Informacja o baterii" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "Tryb ogniskowania" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "Informacja o kolorze" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Nieznany znacznik PentaxMakerNote" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Schemat Dublin Core" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "Schemat digiKam Photo Management" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "Schemat Basic XMP" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "Schemat XMP Rights Management" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "Schemat XMP Media Management" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "Schemat XMP Basic Job Ticket" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "Schemat XMP Paged-Text" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "Schemat XMP Dynamic Media" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Schemat Microsoft Photo" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Schemat Adobe Photoshop" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Schemat Adobe PDF" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Schemat Adobe Photoshop" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Schemat Camera RAW" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Schemat Exif dla wÅ‚aÅ›ciwoÅ›ci TIFF" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Schemat Exif dla wÅ‚aÅ›ciwoÅ›ci specyficznych dla Exif" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Schemat Exif dla dodatkowych wÅ‚aÅ›ciwoÅ›ci TIFF" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "Schemat IPTC Core" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "Schemat IPTC Extension" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "Schemat PLUS License Data Format" + +#: src/properties.cpp:132 +#, fuzzy +msgid "iView Media Pro schema" +msgstr "Schemat XMP Dynamic Media" + +#: src/properties.cpp:133 +#, fuzzy +msgid "Expression Media schema" +msgstr "Schemat IPTC Extension" + +#: src/properties.cpp:134 +#, fuzzy +msgid "Microsoft Photo 1.2 schema" +msgstr "Schemat Microsoft Photo" + +#: src/properties.cpp:135 +#, fuzzy +msgid "Microsoft Photo RegionInfo schema" +msgstr "Schemat Microsoft Photo" + +#: src/properties.cpp:136 +#, fuzzy +msgid "Microsoft Photo Region schema" +msgstr "Schemat Microsoft Photo" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "Schemat IPTC Extension" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "Schemat IPTC Extension" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Schemat Dublin Core" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Schemat Dublin Core" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Schemat Adobe PDF" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Struktura barwnika" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Struktura wymiarów" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Struktura czcionki" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Struktura miniatury" + +#: src/properties.cpp:152 +#, fuzzy +msgid "Resource Event structure" +msgstr "Struktura kolekcji" + +#: src/properties.cpp:153 +#, fuzzy +msgid "ResourceRef structure" +msgstr "Struktura kolekcji" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Struktura wersji" + +#: src/properties.cpp:155 +#, fuzzy +msgid "Basic Job/Workflow structure" +msgstr "Struktura sposobu pracy" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Struktura barwnika" + +#: src/properties.cpp:159 +#, fuzzy +msgid "Qualifier for xmp:Identifier" +msgstr "Kwalifikator dla xmp:Identifier" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Współpraca" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" +"Współpracownicy i inne osoby które przyczyniÅ‚y siÄ™ do powstania zasobu (inne " +"niż autorzy)." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Tematyka" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Autor" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" +"Autor(zy) zasobu (wymienieni w kolejnoÅ›ci ich ważnoÅ›ci, jeÅ›li to ma " +"znaczenie)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Data (daty) kiedy zdarzyÅ‚o siÄ™ coÅ› interesujÄ…cego w zwiÄ…zku z zasobem." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Tekstowy opis zawartoÅ›ci zasobu. Może zawierać wiele wartoÅ›ci dla różnych " +"jÄ™zyków." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Format" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"Format pliku użyty do zapisu zasobu. NarzÄ™dzia i aplikacje powinny ustawiać " +"tÄ… wÅ‚aÅ›ciwość na format zapisu danych. Może zawierać odpowiednie " +"kwalifikatory." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identyfikator" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Unikalny identyfikator zasobu. Zalecane jest identyfikowanie zasobu za " +"pomocÄ… wyrażeÅ„ zgodnych z konwencjonalnym systemem identyfikacji." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "NieuporzÄ…dkowana tablica okreÅ›lajÄ…ca jÄ™zyki użyte w zasobie." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Wydawca" + +#: src/properties.cpp:175 +#, fuzzy +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Organ odpowiedzialny za udostÄ™pnienie zasobu. PrzykÅ‚adowo może zawierać " +"osobÄ™, organizacjÄ™ lub usÅ‚ugÄ™. Zazwyczaj podaje siÄ™ nazwÄ™ wydawcy." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "PowiÄ…zanie" + +#: src/properties.cpp:178 +#, fuzzy +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Unikalny identyfikator zasobu. Zalecane jest identyfikowanie zasobu za " +"pomocÄ… wyrażeÅ„ zgodnych z konwencjonalnym systemem identyfikacji." + +#: src/properties.cpp:180 +#, fuzzy +msgid "Rights" +msgstr "WÅ‚asność" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Unikalny identyfikator pracy, z której pochodzi ten zasób." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"TytuÅ‚ dokumentu lub nazwa nadana zasobowi. Zazwyczaj bÄ™dzie to nazwa pod " +"którÄ… zasób jest oficjalnie znany." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Typ" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "Typ dokumentu, na przykÅ‚ad: powieść, wiersz, dokument techniczny." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Lista znaczników" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +#, fuzzy +msgid "Captions Author Names" +msgstr "Nazwa paÅ„stwa" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "Aktualizacja znacznika czasu" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Wysokość obrazu" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Ustawienia danych obiektywu" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "PrzestrzeÅ„ kolorów" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Etykieta" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Klatka panoramy" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "Ustawienie odcieni" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +#, fuzzy +msgid "Advisory" +msgstr "Pomocniczy" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:224 +#, fuzzy +msgid "The date and time the resource was originally created." +msgstr "Data i czas zapisania obrazu jako danych cyfrowych." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "NarzÄ™dzie tworzÄ…ce" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"Nazwa pierwszego znanego narzÄ™dzia użytego do utworzenia zasobu. JeÅ›li w " +"metadanych jest zawarta historia, wartość ta powinna być równa wÅ‚aÅ›ciwoÅ›ci " +"xmpMM:History's softwareAgent." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Etykieta" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"SÅ‚owo lub krótkie wyrażenie, które okreÅ›la dokument jako skÅ‚adnik kolekcji " +"(grupy) zdefiniowanej przez użytkownika. Jest to pomocne do porzÄ…dkowania " +"dokumentów w przeglÄ…darce plików." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Data metadanych" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"Data i czas kiedy metadane tego zasobu zostaÅ‚y ostatnio zmienione. Powinny " +"być takie same lub mÅ‚odsze niż te w xmp:ModifyDate." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Data modyfikacji" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"Data i czas kiedy zasób byÅ‚ ostatnio zmodyfikowany. Uwaga: wartość ta nie " +"musi być taka sama jak systemowa data modyfikacji pliku, ponieważ jest ona " +"ustawiana przed zapisem pliku." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Pseudonim" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Krótka nazwa zasobu." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Ocena" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Miniatury" + +#: src/properties.cpp:244 +#, fuzzy +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Alternatywna tablica obrazów miniatur dla pliku, które mogÄ… różnić siÄ™ " +"swoimi charakterystykami, np. rozmiarem lub kodowaniem obrazu." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Certyfikat" + +#: src/properties.cpp:251 +#, fuzzy +msgid "Online rights management certificate." +msgstr "Certyfikat praw zarzÄ…dzania online." + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Zaznaczone" + +#: src/properties.cpp:252 +#, fuzzy +msgid "Indicates that this is a rights-managed resource." +msgstr "Data (daty) kiedy zdarzyÅ‚o siÄ™ coÅ› interesujÄ…cego w zwiÄ…zku z zasobem." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "WÅ‚aÅ›ciciel" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" +"NieuporzÄ…dkowana tablica okreÅ›lajÄ…ca prawnego wÅ‚aÅ›ciciela (wÅ‚aÅ›cicieli) " +"zasobu." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Warunki użytkowania" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Instrukcje tekstowe o sposobie legalnego użycia zasobu." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Strona oÅ›wiadczenia" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Lokalizacja strony internetowej okreÅ›lajÄ…cej prawa użytkowania i wÅ‚aÅ›ciciela " +"tego zasobu." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Pochodzenie" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "Identyfikator dokumentu" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "Historia" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +#, fuzzy +msgid "Instance ID" +msgstr "Identyfikator ikony" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +#, fuzzy +msgid "Managed From" +msgstr "Odczytywanie z" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +#, fuzzy +msgid "Manager" +msgstr "Menedżer" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "ZarzÄ…dzanie" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "Obiekt kontrolujÄ…cy" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "Wariant zarzÄ…dzania" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Klasa wykonania" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Parametry wykonania" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "Identyfikator wersji" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Wersje" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:301 +#, fuzzy +msgid "Deprecated for privacy protection." +msgstr "Zdeprecjonowane dla ochrony prywatnoÅ›ci." + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Wykonanie" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "Identyfikator zapisu" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +#, fuzzy +msgid "Job Reference" +msgstr "OdnoÅ›nik pracy" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Maksymalny rozmiar strony" + +#: src/properties.cpp:319 +#, fuzzy +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "Liczba stron w dokumencie (uwzglÄ™dniajÄ…ca również dokumenty zawarte)." + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Liczba stron" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "Liczba stron w dokumencie (uwzglÄ™dniajÄ…ca również dokumenty zawarte)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Czcionki" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"NieuporzÄ…dkowana tablica czcionek użytych w dokumencie (zawierajÄ…ca również " +"czcionki z dokumentów zawartych)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Barwniki" + +#: src/properties.cpp:322 +#, fuzzy +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"NieuporzÄ…dkowana tablica czcionek użytych w dokumencie (zawierajÄ…ca również " +"czcionki z dokumentów zawartych)." + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Nazwy pÅ‚yt" + +#: src/properties.cpp:323 +#, fuzzy +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"NieuporzÄ…dkowana tablica czcionek użytych w dokumencie (zawierajÄ…ca również " +"czcionki z dokumentów zawartych)." + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Odniesienie do projektu" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Klatek na sekundÄ™" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Liczba klatek na sekundÄ™. Jedno z: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Rozmiar ramki wideo" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "Rozmiar ramki, na przykÅ‚ad: w:720, h:480, units:pixels" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Proporcje pikseli wideo" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Głębia pikseli wideo" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "PrzestrzeÅ„ kolorów wideo" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"PrzestrzeÅ„ kolorów. Jedna z: sRGB (używana przez Photoshop), CCIR-601 " +"(używana dla NTSC), CCIR-709 (używana dla HD)." + +#: src/properties.cpp:337 +#, fuzzy +msgid "Video Alpha Mode" +msgstr "Minolta model" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Kompresja wideo" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Użyta kompresja wideo, na przykÅ‚ad JPEG." + +#: src/properties.cpp:342 +#, fuzzy +msgid "Video Field Order" +msgstr "Kolejność warstw wideo" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +#, fuzzy +msgid "Pull Down" +msgstr "Poklatkowość" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"CzÄ™stotliwość próbkowania dźwiÄ™ku. Może być dowolnÄ… wartoÅ›ciÄ…, ale zwykle " +"wynosi 32000, 41100 lub 48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Typ próbkowania dźwiÄ™ku" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Typ próbkowania dźwiÄ™ku. Jeden z: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Rodzaj kanaÅ‚u dźwiÄ™ku" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Typ kanaÅ‚u dźwiÄ™ku, jeden z: mono, stereo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Kompresja dźwiÄ™ku" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Użyta kompresja dźwiÄ™ku, na przykÅ‚ad MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "PoÅ‚ożenie gÅ‚oÅ›ników" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Szybkość transmisji" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Nazwa taÅ›my" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Inna nazwa taÅ›my" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "PoczÄ…tkowy kod czasu" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Dodatkowy kod czasu" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Scena" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Nazwa sceny." + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Nazwa ujÄ™cia" + +#: src/properties.cpp:359 +#, fuzzy +msgid "The name of the shot or take." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Data zrobienia" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Data i czas zrobienia wideo." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Lokalizacja" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +#, fuzzy +msgid "Log Comment" +msgstr "Dziennik komentarzy" + +#: src/properties.cpp:363 +#, fuzzy +msgid "User's log comments." +msgstr "Komentarze użytkownika." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Znaczniki" + +#: src/properties.cpp:364 +#, fuzzy +msgid "An ordered list of markers" +msgstr "UporzÄ…dkowana lista znaczników" + +#: src/properties.cpp:365 +#, fuzzy +msgid "Contributed Media" +msgstr "Media skÅ‚adowe" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Data modyfikacji wideo" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Data i czas ostatniej modyfikacji wideo." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Data modyfikacji dźwiÄ™ku" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Data i czas ostatniej modyfikacji dźwiÄ™ku." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Data modyfikacji metadanych" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Data i czas ostatniej modyfikacji metadanych." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Artysta" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Nazwa artysty lub artystów." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Album" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Nazwa albumu." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Numer Å›cieżki" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Gatunek" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Nazwa gatunku." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Informacja o prawach wÅ‚asnoÅ›ci." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Data wydania utworu." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Kompozytor" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Nazwa (imiÄ™ i nazwisko) kompozytora." + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Programista" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Nazwa (imiÄ™ i nazwisko) programisty." + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Tempo dźwiÄ™ku." + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Instrument" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Instrument muzyczny." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Czas wstÄ™pu" + +#: src/properties.cpp:381 +#, fuzzy +msgid "The duration of lead time for queuing music." +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Wyciszenie" + +#: src/properties.cpp:382 +#, fuzzy +msgid "The time at which to fade out." +msgstr "Czas w którym nastÄ™puje wyciszenie." + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "WzglÄ™dny znacznik czasowy" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Powtarzanie" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Liczba uderzeÅ„" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "Liczba uderzeÅ„." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Tonacja" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"Tonacja muzyczna dźwiÄ™ku. Jeden z: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +#, fuzzy +msgid "Stretch Mode" +msgstr "Tryb rozciÄ…gniÄ™cia" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +#, fuzzy +msgid "Time Scale Parameters" +msgstr "Parametry skali czasowej" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +#, fuzzy +msgid "Resample Parameters" +msgstr "Parametry resamplingu" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +#, fuzzy +msgid "Beat Splice Parameters" +msgstr "Parametry Beat Splice" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Tempo muzyczne" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Skala muzyczna" + +#: src/properties.cpp:392 +#, fuzzy +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "Skala muzyczna użyta w utworze." + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Numer seryjny aparatu" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Numer seryjny aparatu." + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired" +msgstr "Data zgrania" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired." +msgstr "Data zgrania." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Producent flesza" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Producent lampy bÅ‚yskowej." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Model flesza." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Ostatnie sÅ‚owo kluczowe IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Ostatnie sÅ‚owo kluczowe IPTC." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Ostatnie sÅ‚owo kluczowe XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Ostatnie sÅ‚owo kluczowe XMP." + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer" +msgstr "Producent obiektywu" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Producent obiektywu." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Model obiektywu." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Ocena procentowa" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Ocena procentowa." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "SÅ‚owa kluczowe." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "Wersja PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Wersja pliku PDF (np. 1.0, 1.3, itd.)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Producent" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Nazwa narzÄ™dzia, które utworzyÅ‚o dokument PDF." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Pozycja autora" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "TytuÅ‚." + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Autor tytuÅ‚u" + +#: src/properties.cpp:429 +#, fuzzy +msgid "Writer/editor." +msgstr "Twórca/edytor." + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Kategoria. Ograniczone do 3 siedmiobitowych znaków ASCII." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Miasto." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "PaÅ„stwo/lokalizacja." + +#: src/properties.cpp:433 +#, fuzzy +msgid "Credit." +msgstr "Wyrazy uznania." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Nagłówek." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Specjalne instrukcje." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "ŹródÅ‚o." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Prowincja/stan." + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Kategoria dodatkowa." + +#: src/properties.cpp:443 +#, fuzzy +msgid "Original transmission reference." +msgstr "Oryginalne miejsce transmisji." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Pilność, zakres wartoÅ›ci od 1 do 8." + +#: src/properties.cpp:452 +msgid "inches" +msgstr "cale" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Automatyczna regulacja jasnoÅ›ci" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Automatyczna regulacja kontrastu" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Automatyczna ekspozycja" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Automatyczne regulacja cieni" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "OdcieÅ„ błękitu" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "OdcieÅ„ błękitu, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Nasycenie błękitu" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Nasycenie błękitu, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Jasność, zakres wartość od 0 do +150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Profil aparatu" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Ustawienie \"Profil aparatu\"." + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Aberracja chromatyczna błękitu" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Aberracja chromatyczna, korekcja niebieskiej/żółtej obwódki, zakres wartoÅ›ci " +"od -100 do +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Aberracja chromatyczna czerwieni" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Aberracja chromatyczna, korekcja czerwonej/niebieskozielonej obwódki, zakres " +"wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Redukcja szumów kolorów" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Redukcja szumów kolorów, zakres wartoÅ›ci od 0 do +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Kontrast, zakres wartoÅ›ci od -50 do +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "PrzyciÄ™cie dół" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "PrzyciÄ™cie prawo" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "KÄ…t przyciÄ™cia" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Jednostki przyciÄ™cia" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Ekspozycja, zakres wartoÅ›ci od -4.0 do +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "OdcieÅ„ zieleni" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "OdcieÅ„ zieleni, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Nasycenie zieleni" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Nasycenie zieleni, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "PrzyciÄ™ty" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Ustawienia niestandardowe" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +#, fuzzy +msgid "Luminance Smoothing" +msgstr "WygÅ‚adzenie luminancji" + +#: src/properties.cpp:482 +#, fuzzy +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Nasycenie błękitu, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Nazwa pliku Raw" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Nazwa pliku Raw (nie zawiera Å›cieżki dostÄ™pu)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "OdcieÅ„ czerwieni" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "OdcieÅ„ czerwieni, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Nasycenie czerwieni" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Nasycenie czerwieni, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Nasycenie, zakres wartoÅ›ci od -100 do 100." + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Cienie" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Cienie, wartoÅ›ci od 0 do +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Zabarwienie cieni" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Zabarwienie cieni, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Ostrość, zakres wartoÅ›ci od 0 do +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Temperatura, zakres wartoÅ›ci od 2000 do 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Zabarwienie" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Zabarwienie, zakres wartoÅ›ci od -150 do +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Krzywa tonalna" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Nazwa krzywej tonalnej" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Wersja wtyczki RAW aparatu." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Wielkość winietowania" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Wielkość winietowania, zakres wartoÅ›ci od -100 do +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Åšrodek winietowania" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Åšrodek winietowania, zakres wartoÅ›ci od 0 do +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "Znacznik TIFF 256, 0x100. Szerokość obrazu w pikselach." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "DÅ‚ugość obrazu" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "Znacznik TIFF 257, 0x101. Wysokość obrazu w pikselach." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bitów na próbkÄ™" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Kompresja" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" +"Znacznik TIFF 259, 0x103. Schemat kompresji: 1 = nieskompresowany; 6 = JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Interpretacja fotometryczna" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "Znacznik TIFF 262, 0x106. UkÅ‚ad pikseli: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Próbek na piksel" + +#: src/properties.cpp:519 +#, fuzzy +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "Znacznik TIFF 257, 0x101. Wysokość obrazu w pikselach." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Konfiguracja powierzchni" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "Podpróbkowanie YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "Rozmieszczenie YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Rozdzielczość Y" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" +"Znacznik TIFF 282, 0x11A. Rozdzielczość pozioma w pikselach na jednostkÄ™." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Rozdzielczość Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" +"Znacznik TIFF 283, 0x11B. Rozdzielczość pionowa w pikselach na jednostkÄ™." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Jednostka rozdzielczoÅ›ci" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"Znacznik TIFF 296, 0x128. Jednostka użyta w znacznikach Rozdzielczość X " +"(XResolution) oraz Rozdzielczość Y (YResolution). WartoÅ›ci: 2 = cale; 3 = " +"centymetry." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Funkcja przejÅ›cia" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "BiaÅ‚y punkt" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Barwy główne" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "CzerÅ„/biel odniesienia" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Data i czas" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Opis obrazu" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"Znacznik TIFF 270, 0x10E. Opis obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest " +"przechowywana w XMP jako dc:description." + +#: src/properties.cpp:542 +#, fuzzy +msgid "Make" +msgstr "Wytwórca" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "Znacznik TIFF 271, 0x10F. Producent wyposażenia nagrywajÄ…cego." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "Znacznik TIFF 272, 0x110. Nazwa lub numer modelu wyposażenia." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"Znacznik TIFF 305, 0x131. Oprogramowanie lub firmware użyte do utworzenia " +"obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest przechowywana w XMP jako xmp:CreatorTool. " + +#: src/properties.cpp:546 +#, fuzzy +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"Znacznik TIFF 305, 0x131. Oprogramowanie lub firmware użyte do utworzenia " +"obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest przechowywana w XMP jako xmp:CreatorTool. " + +#: src/properties.cpp:548 +#, fuzzy +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"Znacznik TIFF 270, 0x10E. Opis obrazu. Uwaga: ta wÅ‚aÅ›ciwość jest " +"przechowywana w XMP jako dc:description." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Wersja Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "Znacznik EXIF 36864, 0x9000. Numer wersji EXIF." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Wersja FlashPix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "Znacznik EXIF 40960, 0xA000. Wersja FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "Znacznik EXIF 40961, 0xA001. Informacja o przestrzeni kolorów" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Konfiguracja komponentów" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Skompresowane bity na piksel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Informacja specyficzna dla skompresowanych danych. Rodzaj kompresji użyty " +"dla skompresowanego obrazu jest okreÅ›lony w jednostkach bitów na piksel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Rozmiar X " + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "Znacznik EXIF 40962, 0xA002. PrawidÅ‚owa szerokość obrazu w pikselach." + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Rozmiar Y" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "Znacznik EXIF 40963, 0xA003. PrawidÅ‚owa wysokość obrazu w pikselach." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Komentarz użytkownika" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "Znacznik EXIF 37510, 0x9286. Komentarze użytkownika." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "PowiÄ…zany plik dźwiÄ™kowy" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"Znacznik EXIF 40964, 0xA004. Nazwa powiÄ…zanego pliku dźwiÄ™kowego w formacie " +"\"8.3\"." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Data i czas (oryginaÅ‚u)" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Data i czas (obrazu cyfrowego)" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Znacznik EXIF 33434, 0x829A. Czas ekspozycji w sekundach." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Liczba F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "Znacznik EXIF 33437, 0x829D. Liczba F." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" +"Znacznik EXIF 34850, 0x8822. Rodzaj programu użyty do okreÅ›lenia ekspozycji." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "CzuÅ‚ość widmowa" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "Znacznik EXIF 34852, 0x8824. CzuÅ‚ość widmowa każdego kanaÅ‚u." + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "Oszacowania szybkoÅ›ci ISO" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"Znacznik EXIF 34855, 0x8827. CzuÅ‚ość ISO i zakres ISO aparatu lub urzÄ…dzenia " +"wejÅ›ciowego zgodne ze specyfikacjÄ… ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"Znacznik EXIF 34856, 0x8828. Funkcja konwersji optoelektrycznej, " +"zdefiniowana w dokumencie SO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"Znacznik EXIF 37377, 0x9201. Czas otwarcia migawki, w jednostkach APEX. " +"Zobacz Dodatek C w specyfikacji EXIF." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "Znacznik EXIF 37378, 0x9202. PrzysÅ‚ona obiektywu, w jednostkach APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Jasność" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "Znacznik EXIF 37379, 0x9203. Jasność w jednostkach APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "Znacznik EXIF 37380, 0x9204. Odchylenie ekspozycji w jednostkach APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "NajwiÄ™ksza wartość przysÅ‚ony" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" +"Znacznik EXIF 37381, 0x9205. Najmniejsza liczba F obiektywu, w jednostkach " +"APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "Znacznik EXIF 37382, 0x9206. OdlegÅ‚ość do obiektu podana w metrach." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "Znacznik EXIF 37383, 0x9207. Tryb pomiaru." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "Znacznik EXIF 37384, 0x9208. ŹródÅ‚o Å›wiatÅ‚a." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "Znacznik EXIF 37385, 0x9209. Dane źródÅ‚a Å›wiatÅ‚a bÅ‚yskowego (flesza)." + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" +"Znacznik EXIF 37386, 0x920A. DÅ‚ugość ogniskowej obiektywu, w milimetrach." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Obszar obiektu" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Znacznik EXIF 37396, 0x9214. PoÅ‚ożenie i obszar głównego obiektu na caÅ‚ej " +"scenie." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Energia bÅ‚ysku" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" +"Znacznik EXIF 41483, 0xA20B. OkreÅ›la energiÄ™ Å›wiatÅ‚a bÅ‚yskowego podczas " +"wykonywania zdjÄ™cia." + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Odpowiedź czÄ™stotliwoÅ›ci przestrzennej" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"Znacznik EXIF 41484, 0xA20C. OkreÅ›la tablicÄ™ czÄ™stotliwoÅ›ci przestrzennej i " +"wartoÅ›ci SFR w sposób okreÅ›lony w dokumencie ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" + +#: src/properties.cpp:594 +#, fuzzy +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"Znacznik TIFF 282, 0x11A. Rozdzielczość pozioma w pikselach na jednostkÄ™." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie Y" + +#: src/properties.cpp:595 +#, fuzzy +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"Znacznik TIFF 283, 0x11B. Rozdzielczość pionowa w pikselach na jednostkÄ™." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Jednostka rozdzielczoÅ›ci pÅ‚aszczyzny ogniskowej" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "PoÅ‚ożenie obiektu" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Indeks ekspozycji" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" +"Znacznik EXIF 41493, 0xA215. Indeks ekspozycji w aparacie lub urzÄ…dzeniu " +"wejÅ›ciowym." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Rodzaj czujnika" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"Znacznik EXIF 41495, 0xA217. Rodzaj czujnika obrazu w aparacie lub " +"urzÄ…dzeniu wejÅ›ciowym." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "Znacznik EXIF 41728, 0xA300. OkreÅ›la źródÅ‚o obrazu." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Rodzaj sceny" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "Znacznik EXIF 41729, 0xA301. OkreÅ›lenie rodzaju sceny." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "Wzór CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "WÅ‚asny rendering" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"Znacznik EXIF 41985, 0xA401. Ten znacznik okreÅ›la użycie specjalnego " +"przetwarzania danych obrazu." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"Znacznik EXIF 41986, 0xA402. Ten znacznik okreÅ›la tryb ekspozycji ustawiony " +"przy robieniu zdjÄ™cia." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Znacznik EXIF 41987, 0xA403. OkreÅ›la tryb balansu bieli ustawiony przy " +"robieniu zdjÄ™cia." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Współczynnik powiÄ™kszenia cyfrowego" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"Znacznik EXIF 41988, 0xA404. OkreÅ›la współczynnik cyfrowego powiÄ™kszenia " +"ustawiony przy robieniu zdjÄ™cia." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Ogniskowa dla filmu 35mm" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Znacznik EXIF 41989, 0xA405. OkreÅ›la odpowiednik ogniskowej w milimetrach " +"przy zaÅ‚ożeniu aparatu na film 35 mm. Wartość 0 oznacza, że ogniskowa jest " +"nieznana. Należy zauważyć, że ten znacznik różni siÄ™ od znacznika " +"FocalLength." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Rodzaj uchwycenia sceny" + +#: src/properties.cpp:612 +#, fuzzy +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "Znacznik EXIF 41729, 0xA301. OkreÅ›lenie rodzaju sceny." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Regulacja wzmocnienia" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"Znacznik EXIF 41991, 0xA407. OkreÅ›la stopieÅ„ wzmocnienia caÅ‚ego obrazu." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Znacznik EXIF 41992, 0xA408. OkreÅ›la kierunek przetwarzania kontrastu " +"wykonanego przez aparat przy robieniu zdjÄ™cia." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Znacznik EXIF 41993, 0xA409. OkreÅ›la kierunek przetwarzania nasycenia " +"wykonanego przez aparat przy robieniu zdjÄ™cia." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Znacznik EXIF 41994, 0xA40A. OkreÅ›la kierunek przetwarzania ostroÅ›ci " +"wykonanego przez aparat przy robieniu zdjÄ™cia." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Opis ustawieÅ„ urzÄ…dzenia" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Znacznik EXIF 41995, 0xA40B. OkreÅ›la informacje o warunkach robienia zdjÄ™cia " +"dla konkretnego modelu aparatu." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Zakres odlegÅ‚oÅ›ci obiektu" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Znacznik EXIF 41996, 0xA40C. OkreÅ›la odlegÅ‚ość od obiektu." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "Unikalny identyfikator obrazu" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Znaczni EXIF 42016, 0xA420.Ten znacznik okreÅ›la unikalny identyfikator " +"przypisany każdemu zdjÄ™ciu. Jest on zapisany jako 32 znakowy Å‚aÅ„cuch ASCII " +"odpowiadajÄ…cy notacji szesnastkowej o staÅ‚ej dÅ‚ugoÅ›ci 128 bitów." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "GPS Wersja znacznika" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" +"Znacznik GPS 0, 0x00. Zakodowany dziesiÄ™tnie każdy z czterech bajtów EXIF. " +"Bieżąca wartość to \"2.0.0.0\"." + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS Szerokość" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" +"Znacznik GPS 2, 0x02 (pozycja) i 1, 0x01 (oznaczenie). OkreÅ›la szerokość " +"geograficznÄ… i jej oznaczenie (północna/poÅ‚udniowa)." + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS DÅ‚ugość" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" +"Znacznik GPS 4, 0x04 (pozycja) i 3, 0x03 (oznaczenie). OkreÅ›la dÅ‚ugość " +"geograficznÄ… i jej oznaczenie (wschodnia/zachodnia)." + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "GPS Oznaczenie wysokoÅ›ci" + +#: src/properties.cpp:625 src/properties.cpp:1168 +#, fuzzy +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" +"Znacznik GPS 5, 0x05. OkreÅ›la czy wyniesienie jest powyżej czy poniżej " +"poziomu morza (n.p.m. czy p.p.m.)." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPS Wysokość" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "Znacznik GPS 6, 0x06. Wysokość (wyniesienie) w metrach." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "GPS Znacznik czasu" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" +"Znacznik GPS 29 (data), 0x1D oraz znacznik GPS 7 (czas), 0x07. Znacznik " +"czasowy danych GPS w postaci czasu uniwersalnego koordynowanego (UTC - " +"Coordinated Universal Time). Uwaga: Znacznik GPSDateStamp jest nowy w " +"specyfikacji EXIF 2.2. Znacznik czasowy GPS w specyfikacji EXIF 2.1 nie " +"zawiera daty. JeÅ›li nie jest on obecny, data dla XMP powinna być pobrana z " +"Exif: DateTimeOriginal lub, jeÅ›li tej również jest brak z exif:" +"DateTimeDigitized. JeÅ›li data jest niedostÄ™pna, exif:GPSTimeStamp nie jest " +"zapisywany do XMP." + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "GPS Satelity" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" +"Znacznik GPS 8, 0x08. Informacja o satelitach użytych do pomiaru, format " +"jest nieokreÅ›lony." + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "GPS Stan" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" +"Znacznik GPS 9, 0x09. Stan odbiornika GPS w momencie utworzenia obrazu." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS Tryb pomiaru" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" +"Znacznik GPS 10, 0x0A. Tryb pomiaru GPS. WartoÅ›ci tekstowe: \"2\" oznacza " +"pomiar dwuwymiarowy, a \"3\" pomiar trójwymiarowy." + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "Znacznik GPS 11, 0x0B. StopieÅ„ precyzji danych GPS." + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "GPS Oznaczenie prÄ™dkoÅ›ci" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" +"Znacznik GPS 12, 0x0C. Jednostki użyte do pomiaru prÄ™dkoÅ›ci ruchu odbiornika " +"GPS. \"K\", \"M\" i \"N\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPS PrÄ™dkość" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "Znacznik GPS 13, 0x0D. PrÄ™dkość ruchu odbiornika GPS." + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "GPS Oznaczenie kierunku" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" +"Znacznik GPS 14, 0x0E. Oznaczenie kierunku ruchu odbiornika GPS. \"T\" " +"oznacza kierunek rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "GPS Kierunek" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"Znacznik GPS 15, 0x0F. Kierunek ruchu odbiornika GPS, przyjmuje wartoÅ›ci z " +"zakresu od 0 do 359.99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "GPS Oznaczenie kierunku obrazu" + +#: src/properties.cpp:641 +#, fuzzy +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" +"Znacznik GPS 16, 0x10. Oznaczenie rodzaju kierunku obrazu. \"T\" oznacza " +"kierunek rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "GPS Kierunek obrazu" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"Znacznik GPS 17, 0x11. OkreÅ›la kierunek obrazu podczas wykonywania zdjÄ™cia, " +"przyjmuje wartoÅ›ci z zakresu od 0 do 359.99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "GPS UkÅ‚ad odniesienia" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" +"Znacznik GPS 18, 0x12. OkreÅ›la ukÅ‚ad odniesienia współrzÄ™dnych użyty przez " +"odbiornik GPS." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "GPS Docelowa szerokość" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" +"Znacznik GPS 20, 0x14 (pozycja) i 19, 0x13 (oznaczenie). OkreÅ›lajÄ… szerokość " +"geograficznÄ… i oznaczenie szerokoÅ›ci punktu docelowego (\"N\" oznacza " +"szerokość geograficznÄ… północnÄ…, a \"S\" poÅ‚udniowÄ…)." + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "GPS Docelowa dÅ‚ugość" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" +"Znacznik GPS 22, 0x16 (pozycja) i 21, 0x15 (oznaczenie). OkreÅ›lajÄ… dÅ‚ugość " +"geograficznÄ… i oznaczenie dÅ‚ugoÅ›ci punktu docelowego (\"E\" oznacza dÅ‚ugość " +"geograficznÄ… wschodniÄ…, a \"W\" zachodniÄ…)." + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "GPS Oznaczenie kierunku docelowego" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" +"Znacznik GPS 23, 0x17. Oznaczenie kierunku ruchu do punktu docelowego. \"T\" " +"oznacza kierunek rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "GPS Kierunek docelowy" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" +"Znacznik GPS 24, 0x18. OkreÅ›la kierunek (namiar) do celu, wartoÅ›ci od 0 do " +"359.99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "GPS Jednostki odlegÅ‚oÅ›ci do celu" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" +"Znacznik GPS 25, 0x19. Jednostki użyte do pomiaru prÄ™dkoÅ›ci. \"K\", \"M\" i " +"\"N\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "GPS OdlegÅ‚ość obiektu" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "Znacznik GPS 26, 0x1A. OdlegÅ‚ość do obiektu podana w metrach." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "GPS Metoda lokalizacji" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" +"Znacznik GPS 27, 0x1B. ÅaÅ„cuch tekstowy okreÅ›lajÄ…cy metodÄ™ użytÄ… do " +"znalezienia lokalizacji." + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "GPS Informacja o obszarze" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "Znacznik GPS 28, 0x1C. OkreÅ›la nazwÄ™ obszaru GPS." + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "GPS Korekcja" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"Znacznik GPS 30, 0x1E. OkreÅ›la czy dla odbiornika GPS zastosowana zostaÅ‚a " +"korekcja różnicowa." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"Opis obiektywu użytego do zrobienia zdjÄ™cia. Na przykÅ‚ad \"70-200 mm " +"f/2.8-4.0\"." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "Numer seryjny aparatu lub korpusu aparatu użyty do zrobienia zdjÄ™cia." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Informacje kontaktowe twórcy" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" +"Informacje kontaktowe twórcy zawierajÄ…ce wszystkie niezbÄ™dne dane " +"umożliwiajÄ…ce skontaktowanie siÄ™ z twórcÄ… tego obiektu wiadomoÅ›ci. " +"Informacje te skÅ‚adajÄ… siÄ™ z zestawu wÅ‚aÅ›ciwoÅ›ci umożliwiajÄ…cych prawidÅ‚owe " +"zaadresowanie." + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Kontakt-Adres" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"Część informacji kontaktowej okreÅ›lajÄ…ca adres. Zawiera opcjonalnie nazwÄ™ " +"firmy i wszelkie wymagane informacje umożliwiajÄ…ce lokalizacjÄ™ budynku lub " +"skrzynki pocztowej na którÄ… ma być wysyÅ‚ana korespondencja." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Kontakt-Miasto" + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Informacje kontaktowe twórcy" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Kontakt-Stan/prowincja" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Kontakt-Stan/prowincja" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Kontakt-Kod pocztowy" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Kontakt-PaÅ„stwo" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Informacje kontaktowe twórcy" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Kontakt-Email" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca adres e-mail." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Kontakt-Telefon" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Informacje kontaktowe twórcy" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Kontakt-URL" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Informacje kontaktowe twórcy" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Intelektualny rodzaj obiektu" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "Scena IPTC" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" +"OkreÅ›la rodzaj sceny zawartoÅ›ci fotografii. Jest to jedno lub wiÄ™cej wyrażeÅ„ " +"z \"Scene-NewsCodes\" IPTC. Każda scena jest reprezentowana przez Å‚aÅ„cuch 6 " +"cyfr w nieuporzÄ…dkowanej liÅ›cie." + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "Kod tematu IPTC" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" +"OkreÅ›la jeden lub wiÄ™cej tematów okreÅ›lajÄ…cych zawartość ze strukturalnej " +"hierarchii \"Subject-News Codes\" IPTC. Każdy temat jest reprezentowany " +"przez Å‚aÅ„cuch 8 cyfr w nieuporzÄ…dkowanej liÅ›cie." + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +#, fuzzy +msgid "Additional model info" +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Model" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +#, fuzzy +msgid "Person shown" +msgstr "Wersje" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Cyfrowa stabilizacja obrazu" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +#, fuzzy +msgid "Event" +msgstr "Wieczór" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "ÅšwiatÅ‚o zastane" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "Maksymalna dÅ‚ugość ogniskowej" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +#, fuzzy +msgid "Registry Entry-Item Identifier" +msgstr "Cyfrowa stabilizacja obrazu" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +#, fuzzy +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "Data i czas ostatniej modyfikacji metadanych." + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:711 +#, fuzzy +msgid "A location shown in the image." +msgstr "PrzesuniÄ™cie obrazu podglÄ…du" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:712 +#, fuzzy +msgid "The location the photo was taken." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:713 +#, fuzzy +msgid "Location-City" +msgstr "PoÅ‚ożenie" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Name of the city of a location." +msgstr "Nazwa artysty lub artystów." + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:714 +#, fuzzy +msgid "The ISO code of a country of a location." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "Nazwa lokalizacji" + +#: src/properties.cpp:715 +#, fuzzy +msgid "The name of a country of a location." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "Prowincja/stan" + +#: src/properties.cpp:716 +#, fuzzy +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "Szczegółowa lokalizacja" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:718 +#, fuzzy +msgid "The name of a world region of a location." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:719 +#, fuzzy +msgid "Artwork or object in the image" +msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." + +#: src/properties.cpp:719 +#, fuzzy +msgid "A set of metadata about artwork or an object in the image." +msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +#, fuzzy +msgid "Artwork or object-Creator" +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +#, fuzzy +msgid "Artwork or object-Date Created" +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +#, fuzzy +msgid "Artwork or object-Source" +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +#, fuzzy +msgid "Artwork or object-Source inventory number" +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +#, fuzzy +msgid "Artwork or object-Title" +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:725 +#, fuzzy +msgid "A reference for the artwork or object in the image." +msgstr "OdnoÅ›nik do projektu w ramach którego utworzono ten plik." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "ID aparatu" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "ID aparatu" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "ID aparatu" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "Wersja PDF" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +#, fuzzy +msgid "Licensee" +msgstr "Obiektyw" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "ID obiektywu" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Nazwa lokalizacji" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Name of each Licensee." +msgstr "Nazwa sceny." + +#: src/properties.cpp:746 +#, fuzzy +msgid "End User" +msgstr "Ekstender" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +#, fuzzy +msgid "End User ID" +msgstr "Ekstender" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Nazwa wÅ‚aÅ›ciciela" + +#: src/properties.cpp:748 +#, fuzzy +msgid "Name of each End User." +msgstr "Nazwa sceny." + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Obiektyw" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "ID obiektywu" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Nazwa lokalizacji" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Name of each Licensor." +msgstr "Nazwa sceny." + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor Address" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor street address." +msgstr "Nazwa paÅ„stwa" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Licensor Address Detail" +msgstr "Kontakt-Kod pocztowy" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Additional Licensor mailing address details." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Meksyk" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City name." +msgstr "Nazwa paÅ„stwa" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "Stan/Prowincja" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "Stan/Prowincja" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "Kontakt-Kod pocztowy" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code or Zip Code." +msgstr "Kontakt-Kod pocztowy" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "PaÅ„stwo" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Nazwa paÅ„stwa" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1" +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1." +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone 1" +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone number 1." +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "Numer seryjny obiektywu" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "Nazwa lokalizacji" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "Kontakt-Kod pocztowy" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "GPS Tryb pomiaru" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Dane wykrywania sceny" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "Data i czas zrobienia wideo." + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Dane obiektywu" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Nazwa sceny." + +#: src/properties.cpp:768 +#, fuzzy +msgid "Media Constraints" +msgstr "PM Kontrast" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +#, fuzzy +msgid "Region Constraints" +msgstr "PM Kontrast" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +#, fuzzy +msgid "Product or Service Constraints" +msgstr "Automatyczna regulacja kontrastu" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "Ustawienia rozmiaru obrazu" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +#, fuzzy +msgid "Image Alteration Constraints" +msgstr "Ustawienia jakoÅ›ci obrazu" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "Ustawienia jakoÅ›ci obrazu" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Data udostÄ™pnienia" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "Identyfikator modelu" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +#, fuzzy +msgid "Property Release Status" +msgstr "Data udostÄ™pnienia" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +#, fuzzy +msgid "Property Release ID" +msgstr "Identyfikator modelu" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "Automatyczna regulacja kontrastu" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Additional constraints on the license." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "Nie używany" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Other License Requirements" +msgstr "Obiektyw" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Additional license requirements." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:783 +#, fuzzy +msgid "Terms and Conditions Text" +msgstr "Warunki robienia zdjÄ™cia" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +#, fuzzy +msgid "Terms and Conditions URL" +msgstr "Warunki robienia zdjÄ™cia" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "Warunki robienia zdjÄ™cia" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Additional license conditions." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:786 +#, fuzzy +msgid "Identifies the type of image delivered." +msgstr "OkreÅ›la dostawcÄ™ i produkt" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "ID obiektywu" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +#, fuzzy +msgid "Image File Name As Delivered" +msgstr "PowiÄ…zany format pliku obrazu" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +#, fuzzy +msgid "Image File Format As Delivered" +msgstr "PowiÄ…zany format pliku obrazu" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +#, fuzzy +msgid "Image File Size As Delivered" +msgstr "PowiÄ…zany format pliku obrazu" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "Prawa autorskie" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Uwaga o prawach autorskich" + +#: src/properties.cpp:792 +#, fuzzy +msgid "Copyright Registration Number" +msgstr "Nazwa wÅ‚aÅ›ciciela" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Data utworzenia postaci cyfrowej" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "Data wydania utworu." + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "Prawa autorskie" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "Prawa autorskie" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Nazwa wÅ‚aÅ›ciciela" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Name of Copyright Owner." +msgstr "Prawa autorskie" + +#: src/properties.cpp:797 +#, fuzzy +msgid "Copyright Owner Image ID" +msgstr "Prawa autorskie" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "Orientacja obrazu" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Creator/s of the image." +msgstr "PrzesuniÄ™cie obrazu podglÄ…du" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Orientacja obrazu" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Tonacja obrazu" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "Åšrodek obrazu Raw" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "Orientacja obrazu" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "Unikalny identyfikator obrazu" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Rozmiar obrazu" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Name of Image Supplier." +msgstr "Åšrodek obrazu Raw" + +#: src/properties.cpp:804 +#, fuzzy +msgid "Image Supplier Image ID" +msgstr "Unikalny identyfikator obrazu" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "Licznik usuniÄ™tych zdjęć" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "Licznik usuniÄ™tych zdjęć" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Notes added by Licensee." +msgstr "Nazwa sceny." + +#: src/properties.cpp:807 +#, fuzzy +msgid "Other Image Info" +msgstr "Obiektyw" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "ID obiektywu" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +#, fuzzy +msgid "Licensor Transaction ID" +msgstr "Data ważnoÅ›ci" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +#, fuzzy +msgid "Licensee Transaction ID" +msgstr "Data ważnoÅ›ci" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +#, fuzzy +msgid "Licensee Project Reference" +msgstr "Odniesienie do projektu" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "Data ważnoÅ›ci" + +#: src/properties.cpp:812 +#, fuzzy +msgid "The date of the License Transaction." +msgstr "Nazwa sceny." + +#: src/properties.cpp:813 +#, fuzzy +msgid "Reuse" +msgstr "użyto" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +#, fuzzy +msgid "Other License Documents" +msgstr "Warunki robienia zdjÄ™cia" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Obiektyw" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Użytkownika 1-4" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Użytkownika 1" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Użytkownika 1" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Użytkownika 1" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Użytkownika 1" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Użytkownika 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Użytkownika 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "Nie używany" + +#: src/properties.cpp:839 +#, fuzzy +msgid "Protected" +msgstr "ID produktu" + +#: src/properties.cpp:840 +#, fuzzy +msgid "Public Domain" +msgstr "Poklatkowość" + +#: src/properties.cpp:846 +#, fuzzy +msgid "Credit Adjacent To Image" +msgstr "Obraz podglÄ…du" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "Obraz podglÄ…du" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "NieokreÅ›lony" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "Solaryzacja" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "Solaryzacja" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +#, fuzzy +msgid "No Merging" +msgstr "Redukcja szumów" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "Redukcja szumów" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +#, fuzzy +msgid "No Duplication Constraints" +msgstr "Ustawienia jakoÅ›ci obrazu" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "Czas trwania" + +#: src/properties.cpp:871 +#, fuzzy +msgid "Maintain File Name" +msgstr "Nazwa pliku Raw" + +#: src/properties.cpp:872 +#, fuzzy +msgid "Maintain File Type" +msgstr "Nazwa pliku Raw" + +#: src/properties.cpp:873 +#, fuzzy +msgid "Maintain ID in File Name" +msgstr "Oryginalna nazwa pliku Raw" + +#: src/properties.cpp:874 +#, fuzzy +msgid "Maintain Metadata" +msgstr "Minolta data" + +#: src/properties.cpp:879 +#, fuzzy +msgid "Windows Bitmap (BMP)" +msgstr "Windows TytuÅ‚" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +#, fuzzy +msgid "Graphics Interchange Format (GIF)" +msgstr "Format JPEG" + +#: src/properties.cpp:883 +#, fuzzy +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Format JPEG" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +#, fuzzy +msgid "Tagged Image File Format (TIFF)" +msgstr "PowiÄ…zany format pliku obrazu" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +#, fuzzy +msgid "Up to 1 MB" +msgstr "Optio A10" + +#: src/properties.cpp:897 +#, fuzzy +msgid "Up to 10 MB" +msgstr "Optio A10" + +#: src/properties.cpp:898 +#, fuzzy +msgid "Up to 30 MB" +msgstr "Optio 30" + +#: src/properties.cpp:899 +#, fuzzy +msgid "Up to 50 MB" +msgstr "Optio S50" + +#: src/properties.cpp:904 +#, fuzzy +msgid "Illustrated Image" +msgstr "PowiÄ…zana szerokość obrazu" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +#, fuzzy +msgid "Cell" +msgstr "Żółty" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Menedżer" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "Brak informacji" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +#, fuzzy +msgid "Unlimited Model Releases" +msgstr "Identyfikator modelu" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Identyfikacja modelu" + +#: src/properties.cpp:961 src/properties.cpp:970 +#, fuzzy +msgid "Status" +msgstr "GPS Stan" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +#, fuzzy +msgid "People" +msgstr "Purpurowy" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Numer odstÄ™pu" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Informacja o obiektywie" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "Wersje" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "Data i czas (oryginaÅ‚u)" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date the last region was created" +msgstr "Data wydania utworu." + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Nazwy pÅ‚yt" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "Oryginalne dane pliku Raw" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Rozmiar X " + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Wersje" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Struktura wersji" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "Strefy AF" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Obszar ogniskowania" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Krok bracketingu" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "Wersje" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Struktura wersji" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "SÅ‚owa kluczowe" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Struktura wersji" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Tryb panoramy" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Przechwycone dane" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Program" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Typ obiektu" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "OdlegÅ‚ość obiektu podana w metrach." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Data utworzenia postaci cyfrowej" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Data zrobienia" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "Data i czas ostatniej modyfikacji metadanych." + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Tryb naÅ›wietlania" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Szerokość obrazu" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Wysokość obrazu" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Unikalny model aparatu" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Lokalizacja" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "PomaraÅ„czowy" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "SÅ‚owa kluczowe" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Proporcje pikseli wideo" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Proporcje pikseli wideo" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Opis obrazu" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Nazwa pliku Raw" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Ustawienie wyostrzenia" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Kolejność bajtów" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Informacja o prawach wÅ‚asnoÅ›ci." + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Najmniejsza wartość przysÅ‚ony" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "Maksymalna apertura przy minimalnej ogniskowej" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Tryb strefy AF" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "Maksymalna apertura przy minimalnej ogniskowej" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Kompresja wideo" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Opis ustawieÅ„ urzÄ…dzenia" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "Tekstowy opis obiektu." + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Konfiguracja obrazu" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Ustawienie trybu dziaÅ‚ania" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Dziennik komentarzy" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Kompresja" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Kompresja" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Windows SÅ‚owa kluczowe" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Kompresja" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Kompresja wideo" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Kompresja wideo" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Kompresja" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Rodzaj aparatu" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Współczynnik kompresji" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"Znacznik EXIF 41992, 0xA408. OkreÅ›la kierunek przetwarzania kontrastu " +"wykonanego przez aparat przy robieniu zdjÄ™cia." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "PrzyciÄ™cie dół" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "PrzyciÄ™cie lewo" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "PrzyciÄ™cie prawo" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "PrzyciÄ™cie góra" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Bieżący profil ICC" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "Pakiet XML" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +#, fuzzy +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Data i czas ostatniej modyfikacji metadanych." + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Data i czas (oryginaÅ‚u)" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Redukcja szumów kolorów" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"Znacznik EXIF 41988, 0xA404. OkreÅ›la współczynnik cyfrowego powiÄ™kszenia " +"ustawiony przy robieniu zdjÄ™cia." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Wersje" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "BezpoÅ›redni" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +#, fuzzy +msgid "Video Display Unit" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Typ ogniskowania" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "Wersja rekordu" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Wersja modelu" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Wersja rekordu" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Wersja ARM" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "Klatek na sekundÄ™" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Dodatkowy kod czasu" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Wyposażenie" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Kompensacja ekspozycji" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Tryb ekspozycji" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Czas ekspozycji podany w sekundach (s)." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "Opis ustawieÅ„ urzÄ…dzenia" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description, usually found in ASF type files." +msgstr "Opis ustawieÅ„ urzÄ…dzenia" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Plik" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Plik" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "DÅ‚ugość kafelka" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "DÅ‚ugość kafelka" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Nazwa pliku" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Rozmiar pliku" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Rozmiar pliku" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Nowy typ podpliku" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "" +"Znacznik EXIF 37386, 0x920A. DÅ‚ugość ogniskowej obiektywu, w milimetrach." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Licznik zdjęć" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Tryb strefy AF" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Tryb strefy AF" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +#, fuzzy +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" +"Znacznik GPS 17, 0x11. OkreÅ›la kierunek obrazu podczas wykonywania zdjÄ™cia, " +"przyjmuje wartoÅ›ci z zakresu od 0 do 359.99." + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "" +"Znacznik GPS 16, 0x10. Oznaczenie rodzaju kierunku obrazu. \"T\" oznacza " +"kierunek rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/properties.cpp:1173 +#, fuzzy +msgid "(North/South). Indicates latitude." +msgstr "" +"Znacznik GPS 2, 0x02 (pozycja) i 1, 0x01 (oznaczenie). OkreÅ›la szerokość " +"geograficznÄ… i jej oznaczenie (północna/poÅ‚udniowa)." + +#: src/properties.cpp:1174 +#, fuzzy +msgid "(East/West). Indicates longitude." +msgstr "" +"Znacznik GPS 4, 0x04 (pozycja) i 3, 0x03 (oznaczenie). OkreÅ›la dÅ‚ugość " +"geograficznÄ… i jej oznaczenie (wschodnia/zachodnia)." + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "" +"Znacznik GPS 18, 0x12. OkreÅ›la ukÅ‚ad odniesienia współrzÄ™dnych użyty przez " +"odbiornik GPS." + +#: src/properties.cpp:1176 +#, fuzzy +msgid "Satellite information, format is unspecified." +msgstr "" +"Znacznik GPS 8, 0x08. Informacja o satelitach użytych do pomiaru, format " +"jest nieokreÅ›lony." + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "Znacznik czasu metadaty z kluczem" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Tryb Easy" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Opis obrazu" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Skala muzyczna" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Producent obiektywu." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Wysokość sensora" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "Ustawienie dopasowania obrazu" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "Informacja o pozycji AF" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "Tekst" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Dane obiektywu" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "JÄ™zyk" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "DÅ‚ugość ogniskowej" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Rodzaj obiektywu" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Jasność" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Jasność" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Wyposażenie" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Manufacturer of recording equipment" +msgstr "Producent wyposażenia nagrywajÄ…cego" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Rodzaj aparatu" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Wersja MakerNote" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Wersja MakerNote" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "Bazowy URL" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Producent obiektywu." + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "" +"Znacznik EXIF 37381, 0x9205. Najmniejsza liczba F obiektywu, w jednostkach " +"APEX." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "NajwiÄ™ksza wartość przysÅ‚ony" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Szybkość transmisji" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Wersja modelu" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "GPS Tryb pomiaru" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Data modyfikacji metadanych" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Åšredni" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Data metadanych" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Data metadanych" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Tryb pomiaru" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Rodzaj obrazu" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Wersja pliku" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Wyposażenie" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "Nazwa lub numer modelu wyposażenia" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Nazwa lokalizacji" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Wersja modelu" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "Tekst + ID" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "Liczba uderzeÅ„" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Total number of colours used" +msgstr "Numer sekwencji (jeÅ›li w serii)" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "Liczba uderzeÅ„" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Liczba uderzeÅ„" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Orientacja" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "PrzyjÄ™cie" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "PrzyjÄ™cie" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "SÅ‚owa kluczowe" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "SÅ‚owa kluczowe." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Nasycenie stylu zdjÄ™cia" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Zaznaczenie" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Zaznaczenie" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Tryb Easy" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "Część informacji kontaktowej okreÅ›lajÄ…ca paÅ„stwo." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Czas ekspozycji" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Data odniesienia" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Dane podglÄ…du" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "OkreÅ›la typ zawartoÅ›ci dzwiÄ™kowej." + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Dane podglÄ…du" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Dane podglÄ…du" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Obraz podglÄ…du" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Czas trwania pliku mediów." + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Producent" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "SÅ‚owa kluczowe" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "PrzysÅ‚ona" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "PrzysÅ‚ona" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "ID produktu" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "ID produktu" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "ID produktu" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "PrzesuniÄ™cie zapisu" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "PrzesuniÄ™cie zapisu" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Obiektyw" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +#, fuzzy +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"Znacznik TIFF 296, 0x128. Jednostka użyta w znacznikach Rozdzielczość X " +"(XResolution) oraz Rozdzielczość Y (YResolution). WartoÅ›ci: 2 = cale; 3 = " +"centymetry." + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"Znacznik EXIF 41993, 0xA409. OkreÅ›la kierunek przetwarzania nasycenia " +"wykonanego przez aparat przy robieniu zdjÄ™cia." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Nazwa gatunku." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Zaznaczenie" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Wersja firmware" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Autor tytuÅ‚u" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Windows SÅ‚owa kluczowe" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "SÅ‚owa kluczowe." + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Wyrazy uznania" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Wyrazy uznania." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "ŹródÅ‚o" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "ŹródÅ‚o." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Wysokość obrazu" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Szerokość obrazu" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Gwiaździste niebo" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "PoczÄ…tkowy kod czasu" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "GPS Stan" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Licznik migawki" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "Liczba uderzeÅ„" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Nazwa ujÄ™cia" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Jakość obrazu" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "Jakość obrazu" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Liczba bajtów na pas" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Bitów na próbkÄ™" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Skala muzyczna" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "PoczÄ…tkowy kod czasu" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Ustawienie trybu zdjÄ™cia" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "TytuÅ‚" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "SÅ‚owa kluczowe" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "SÅ‚owa kluczowe." + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "JÄ™zyk" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "Nazwa sceny." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Temat" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Nazwa taÅ›my" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Ustawienia standardowe" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "JÄ™zyk" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Nazwa taÅ›my" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Rodzaj obrazu" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "DÅ‚ugość miniatury" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "DÅ‚ugość obrazu podglÄ…du" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "DÅ‚ugość obrazu podglÄ…du" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "DÅ‚ugość miniatury" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Obrazek podglÄ…du prawidÅ‚owy" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Podwodny" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "PrzesuniÄ™cia kafelków" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Czas wysÅ‚ania" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +#, fuzzy +msgid "Total Frame Count" +msgstr "Liczby bajtów kafelków" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Liczba uderzeÅ„" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "GPS Kierunek" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "Klatek na sekundÄ™" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Numer Å›cieżki" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Wersja Makernote" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "JÄ™zyk" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "Klatek na sekundÄ™" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Data modyfikacji wideo" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Numer Å›cieżki" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Numer Å›cieżki" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Numer Å›cieżki" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Szeroki" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Szeroki" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Program" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "Pole to okreÅ›la proces użyty do wyprodukowania skompresowanych danych" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "ID obiektywu" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Jakość" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "Klatek na sekundÄ™" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Rozmiar ramki wideo" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Rozmiar ramki wideo" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Skala muzyczna" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Tablica balansu bieli" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Szerokość kafelka" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Windows Ocena" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Autor opisu" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Zapisywanie podglÄ…du" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +#, fuzzy +msgid "Horizontal resolution in pixels per unit." +msgstr "" +"Znacznik TIFF 282, 0x11A. Rozdzielczość pozioma w pikselach na jednostkÄ™." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Data i czas ostatniej modyfikacji wideo." + +#: src/properties.cpp:1392 +#, fuzzy +msgid "Vertical resolution in pixels per unit." +msgstr "" +"Znacznik TIFF 283, 0x11B. Rozdzielczość pionowa w pikselach na jednostkÄ™." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Balans czerwieni" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "OkreÅ›la odlegÅ‚ość do punktu docelowego." + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bitów na próbkÄ™" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bitów na próbkÄ™" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Kompresja dźwiÄ™ku" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Opis obrazu" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Ustawienia trybu ostrzenia" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "DomyÅ›lna skala" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Auto bracketing" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Próbkowanie dźwiÄ™ku" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"CzÄ™stotliwość próbkowania dźwiÄ™ku. Może być dowolnÄ… wartoÅ›ciÄ…, ale zwykle " +"wynosi 32000, 41100 lub 48000." + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "znalezione w pliku" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "znalezione w pliku" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Automatyczne wyzwolenie" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Czas trwania" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Auto bracketing" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "Czas trwania" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Typ dźwiÄ™ku" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Data modyfikacji dźwiÄ™ku" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "Próbkowanie dźwiÄ™ku" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "Próbkowanie dźwiÄ™ku" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Nazwa gatunku." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Identyfikator" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "Data i czas ostatniej modyfikacji wideo." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Krótka nazwa zasobu." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Obiektyw" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Strefa prawa" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "WÅ‚asność" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +#, fuzzy +msgid "A bibliographic reference for the resource." +msgstr "Krótka nazwa zasobu." + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "OdnoÅ›nik pracy" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Instrukcje" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Zaznaczenie" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Tryb rozdzielczoÅ›ci" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Zrzut danych 1" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Nazwy pÅ‚yt" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Unikalny identyfikator pracy, z której pochodzi ten zasób." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +#, fuzzy +msgid "Occurrence" +msgstr "ID obiektywu" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID obiektywu" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Numer odstÄ™pu" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +#, fuzzy +msgid "Occurrence Details" +msgstr "ID obiektywu" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Liczba porzÄ…dkowa" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "WyÅ›wietlanie naÅ‚ożone" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "Jakość obrazu" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Ustaw" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "ID produktu" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Gradacja" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Pozycja ostrzenia" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Numer odstÄ™pu" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Identyfikacja modelu" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Media skÅ‚adowe" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Odniesienie do projektu" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "Sekwencja AEB" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "Orientacja" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Nazwa ujÄ™cia" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +#, fuzzy +msgid "Organism Associated Occurrences" +msgstr "Sekwencja AEB" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +#, fuzzy +msgid "Associated Organisms" +msgstr "Odniesienie do projektu" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +#, fuzzy +msgid "Organism Remarks" +msgstr "Pomiar w toku" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Bitów na próbkÄ™" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Wieczór" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Bitów na próbkÄ™" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Wieczór" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +#, fuzzy +msgid "Parent Event ID" +msgstr "Wieczór" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +#, fuzzy +msgid "Event Earliest Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Bieżący profil ICC" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "miesiÄ…c" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Nazwa sceny." + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Opóźnienie" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Data utworzenia" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Format pliku" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +#, fuzzy +msgid "Sampling Size Unit" +msgstr "Format pliku" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Numer pliku" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "PoÅ‚ożenie" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "CiÄ…gÅ‚y" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Stan/Prowincja" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "PaÅ„stwo" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Jakość" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "PoÅ‚ożenie" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "Tekstowy opis obiektu." + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Szybkość transmisji" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Kod lokalizacji" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "GPS Docelowa szerokość" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "GPS Docelowa dÅ‚ugość" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "GPS Docelowa szerokość" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "GPS DÅ‚ugość" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +#, fuzzy +msgid "Geodetic Datum" +msgstr "" +"Znacznik GPS 18, 0x12. OkreÅ›la ukÅ‚ad odniesienia współrzÄ™dnych użyty przez " +"odbiornik GPS." + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "OdnoÅ›nik pracy" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Data odniesienia" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "OdwoÅ‚anie do usÅ‚ugi" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Numer odniesienia" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Informacje o zdjÄ™ciu" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Liczba F" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Czerwony" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Identyfikacja modelu" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Identyfikacja modelu" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Identyfikator" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identyfikator" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "GPS Oznaczenie kierunku obrazu" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Identyfikacja modelu" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Identyfikacja modelu" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "GPS Stan" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Oryginalna nazwa pliku Raw" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Nazwa dokumentu" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Nazwy pÅ‚yt" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Oryginalna nazwa pliku Raw" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "PrzesuniÄ™cie zapisu" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Wydawca" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "Data wydania utworu." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "PowiÄ™kszenie elektroniczne" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Kolejność wypeÅ‚niania" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Numer Å›cieżki" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Barwa naturalna" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "ŹródÅ‚o pliku" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Blok zasobów obrazu" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "ŹródÅ‚o pliku" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Pomiar gotowy" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Pomiar w toku" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Pomiar w toku" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "WartoÅ›ci pomiaru szumu." + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Pomiar gotowy" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Pomiar gotowy" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Pomiar gotowy" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Pomiar gotowy" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "GPS Tryb pomiaru" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Pomiar w toku" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Tekstowy opis obiektu." + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Data i czas" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Nazwa ujÄ™cia." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +#, fuzzy +msgid "Notes" +msgstr "WÅ‚aÅ›ciwoÅ›ci obiektywu" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Kategoria" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Tryb rozdzielczoÅ›ci" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Tryb rozdzielczoÅ›ci" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Tryb ogniskowania" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Tryb ogniskowania" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Ustawienie ogniskowania" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Ustawienie ogniskowania" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Zakres obiektywu" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Zakres ogniskowych obiektywu" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "CieÅ„" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +#, fuzzy +msgid "Highlight" +msgstr "ÅšwiatÅ‚o" + +#: src/sigmamn.cpp:104 +#, fuzzy +msgid "Fill Light" +msgstr "ÅšwiatÅ‚o wypeÅ‚niajÄ…ce" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "ÅšwiatÅ‚o wypeÅ‚niajÄ…ce X3" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Regulacja koloru" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Regulacja koloru" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Tryb regulacji" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Tryb regulacji" + +#: src/sigmamn.cpp:122 +#, fuzzy +msgid "Auto Bracket" +msgstr "Auto bracketing" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +#, fuzzy +msgid "Auto bracket" +msgstr "Auto bracketing" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Nieznany znacznik SigmaMakerNote" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-polowy" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "Scena nocna" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "Portret nocny" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Autoportret" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "Wolna migawka" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "Wysoka czuÅ‚ość" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "panorama" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "Ruchomy obraz" + +#: src/sonymn.cpp:170 +#, fuzzy +msgid "Backlight Correction HDR" +msgstr "Bez korekcji" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "ÅšledzÄ…ce ostrzenie" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "GÅ‚adka skóra" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "Unikalny identyfikator obrazu" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "CiÄ…gÅ‚y" + +#: src/sonymn.cpp:190 +#, fuzzy +msgid "On (Shooting)" +msgstr "Tryb robienia zdjÄ™cia" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "Fluorescencja biaÅ‚a" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "Fluorescencja biaÅ‚a" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "Fluorescencja biaÅ‚a dzienna" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Rozpalony" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Fluorescencja biaÅ‚a" + +#: src/sonymn.cpp:221 +#, fuzzy +msgid "Underwater 1 (Blue Water)" +msgstr "Podwodny szeroki 1" + +#: src/sonymn.cpp:222 +#, fuzzy +msgid "Underwater 2 (Green Water)" +msgstr "ZdjÄ™cie podwodne" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "Åšrodkowy" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Punktowy" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +#, fuzzy +msgid "Touch AF" +msgstr "Automatyczna korekcja balansu bieli" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "RÄ™czne ostrzenie" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "Wykrywanie twarzy" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "Automatyczne ostrzenie" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "Tryb zdjęć seryjnych" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "PowiÄ…zana szerokość obrazu" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "Wysokość obrazu" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "Obraz podglÄ…du" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "Wysoki zakres" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "Informacje o zdjÄ™ciu" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "Identyfikator modelu" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "Redukcja szumów kolorów" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +#, fuzzy +msgid "Dynamic Range Optimizer" +msgstr "Ustawienia trybu dynamicznego" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Minolta data" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "Rozmiar obrazu" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "Obraz podglÄ…du" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "Obraz podglÄ…du" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "Jakość" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Data udostÄ™pnienia" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Numer sekwencji (jeÅ›li w serii)" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Anti-blur" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +#, fuzzy +msgid "Intelligent Auto" +msgstr "Inteligentna automatyka" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "Nieznany znacznik SonyMakerNote" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "CiÄ…gÅ‚y, wysoki" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "CiÄ…gÅ‚y, niski" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "Optymalizacja obrazu" + +#: src/sonymn.cpp:536 +#, fuzzy +msgid "Autumn" +msgstr "Aukcja" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Auto (BÅ‚ysk)" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +#, fuzzy +msgid "Dynamic Range Optimizer Level" +msgstr "Ustawienia trybu dynamicznego" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Data utworzenia" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "PasujÄ…ca strefa" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "Szybka migawka" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Redukcja szumów przy wysokim ISO" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Rodzaj obrazu" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Nieznany znacznik Canon Camera Settings 1" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Nieznany znacznik Canon Camera Settings 2" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Nieznana sekcja" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Struktura danych obrazu" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "PrzesuniÄ™cie zapisu" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Charakterystyka danych obrazu" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Inne dane" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Struktura danych Exif" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Konfiguracja obrazu" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Dane użytkownika" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "PowiÄ…zany plik" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Data i czas" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Warunki robienia zdjÄ™cia" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Informacja GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Informacje o wymienialnoÅ›ci" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Informacje zależna od dostawcy" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Znaczniki Adobe DNG" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Znaczniki Panasonic RAW" + +#: src/tags.cpp:205 +#, fuzzy +msgid "TIFF/EP tags" +msgstr "Standardowy ID TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +#, fuzzy +msgid "Adobe OPI tags" +msgstr "Znaczniki Adobe DNG" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Ostatnia sekcja" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Główny obraz" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "PodglÄ…d/miniatura" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Główny obraz, plik wielostronnicowy" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "PodglÄ…d/miniatura, plik wielostronnicowy" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Główny obraz, maska przezroczystoÅ›ci" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "PodglÄ…d/miniatura, maska przezroczystoÅ›ci" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Główny obraz, obraz wielostronnicowy, maska przezroczystoÅ›ci" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "PodglÄ…d/miniatura, obraz wielostronnicowy, maska przezroczystoÅ›ci" + +#: src/tags.cpp:237 +#, fuzzy +msgid "Full-resolution image data" +msgstr "Nie można byÅ‚o odczytać danych obrazu" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "cal" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Group 3 Fax" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Group 4 Fax" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (stary format)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG B&W" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Color" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "2-bitowe RLE NeXT" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF Compressed" + +#: src/tags.cpp:263 +#, fuzzy +msgid "Samsung SRW Compressed" +msgstr "Epson ERF Compressed" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Padding" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "IT8 Monochrome Picture" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 Binary Lineart" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (LZW, 10-bitowe)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (ZIP, 11-bitowe)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Kodak DCS Encoding" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI Log Luminance RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "SGI Log 24-bitowy upakowany" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF Compressed" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR Compressed" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF Compressed" + +#: src/tags.cpp:286 +#, fuzzy +msgid "White Is Zero" +msgstr "Biel wynosi zero" + +#: src/tags.cpp:287 +#, fuzzy +msgid "Black Is Zero" +msgstr "CzerÅ„ wynosi zero" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Paleta RGB" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Maska przezroczystoÅ›ci" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Tablica filtra koloru" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Liniowy Raw" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "Proces zwykÅ‚y" + +#: src/tags.cpp:311 +#, fuzzy +msgid "top, left" +msgstr "Górny, lewy" + +#: src/tags.cpp:312 +#, fuzzy +msgid "top, right" +msgstr "Górny, prawy" + +#: src/tags.cpp:313 +#, fuzzy +msgid "bottom, right" +msgstr "Dolny, prawy" + +#: src/tags.cpp:314 +#, fuzzy +msgid "bottom, left" +msgstr "Dolny, lewy" + +#: src/tags.cpp:315 +#, fuzzy +msgid "left, top" +msgstr "Lewy, górny" + +#: src/tags.cpp:316 +#, fuzzy +msgid "right, top" +msgstr "Prawy, górny" + +#: src/tags.cpp:317 +#, fuzzy +msgid "right, bottom" +msgstr "Prawy, dolny" + +#: src/tags.cpp:318 src/tags.cpp:319 +#, fuzzy +msgid "left, bottom" +msgstr "Lewy, dolny" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +#, fuzzy +msgid "not CMYK" +msgstr "CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "NieobsÅ‚ugiwany format daty" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "NieokreÅ›lony" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +#, fuzzy +msgid "B" +msgstr "Balans bieli" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +#: src/tags.cpp:354 +#, fuzzy +msgid "A+B-C" +msgstr "AF-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "WyÅ›rodkowany" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "PoÅ‚ożone razem" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Brak flesza" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Z lampÄ…, bÅ‚ysk zwrotny nie wykryty" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Z lampÄ…, bÅ‚ysk zwrotny wykryty" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Tak, nie uruchomiÅ‚ siÄ™" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Tak, wymuszony" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Tak, wymuszony, Å›wiatÅ‚o zwrotne nie wykryte" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Tak, wymuszony, Å›wiatÅ‚o zwrotne wykryte" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Nie, wymuszony" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Nie, nie uruchomiÅ‚ siÄ™, Å›wiatÅ‚o zwrotne nie wykryte" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Nie, automatycznie" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Tak, automatycznie" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Tak, automatycznie, Å›wiatÅ‚o zwrotne nie wykryte" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Tak, automatycznie, Å›wiatÅ‚o zwrotne wykryte" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Brak funkcji flesza" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Nie, brak funkcji flesza" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Tak, redukcja czerwonych oczu" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Tak, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne nie wykryte" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Tak, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne wykryte" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Tak, wymuszony, redukcja czerwonych oczu" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "Tak, wymuszony, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne nie wykryte" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "Tak, wymuszony, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne wykryte" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Nie, redukcja czerwonych oczu" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Nie, automatycznie, redukcja czerwonych oczu" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Tak, automatycznie, redukcja czerwonych oczu" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" +"Tak, automatycznie, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne nie wykryte" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Tak, automatycznie, redukcja czerwonych oczu, Å›wiatÅ‚o zwrotne wykryte" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "UkÅ‚ad prostokÄ…tny (lub kwadratowy)" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Program" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "Nazwa i wersja oprogramowania użytego do obróbki obrazu." + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Nowy typ podpliku" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Ogólne oznaczenie rodzaju danych zawartych w tym podpliku." + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "Nowy typ podpliku" + +#: src/tags.cpp:416 +#, fuzzy +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "Ogólne oznaczenie rodzaju danych zawartych w tym podpliku." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Liczba kolumn danych obrazu, różna liczbie pikseli w wierszu. W danych " +"skompresowanych algorytmem JPEG zamiast tego znacznika używany jest znacznik " +"JPEG." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Liczba wierszy danych obrazu. W danych skompresowanych algorytmem JPEG " +"zamiast tego znacznika używany jest znacznik JPEG." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bitów na próbkÄ™" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Liczba bitów na skÅ‚adowÄ… obrazu. W tym standardzie każda skÅ‚adowa obrazu ma " +"8 bitów, wiÄ™c wartość tego znacznika to 8. Patrz także . W " +"danych skompresowanych algorytmem JPEG zamiast tego znacznika używany jest " +"znacznik JPEG." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Algorytm kompresji użyty dla danych obrazu. JeÅ›li główny obraz jest " +"skompresowany algorytmem JPEG, to oznaczenie nie jest potrzebne i jest " +"pomijane. JeÅ›li miniaturki używajÄ… kompresji JPEG, ten znacznik ma wartość 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"SkÅ‚adowe pikseli. W danych skompresowanych algorytmem JPEG zamiast tego " +"znacznika używany jest znacznik JPEG." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "PrzyciÄ™cie szerokość" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "DÅ‚ugość kafelka" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Kolejność wypeÅ‚niania" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Logiczny porzÄ…dek bitów wewnÄ…trz bajta" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Nazwa dokumentu" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"ÅaÅ„cuch znaków nadajÄ…cy obrazowi tytuÅ‚. Może być komentarzem takim jak " +"\"piknik firmowy 1988\" lub podobnym. Nie można używać dwubajtowych kodów " +"znaków. JeÅ›li dwubajtowe kody znaków sÄ… potrzebne, należy użyć znacznika " +"Exif Private ." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Producent urzÄ…dzenia nagrywajÄ…cego. Jest to producent DSC, skanera, " +"digitalizera albo innego urzÄ…dzenia, które wygenerowaÅ‚o obraz. JeÅ›li to pole " +"jest puste, jest traktowane jako nieznane." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Nazwa lub numer modelu urzÄ…dzenia. Jest to nazwa modelu lub numer DSC, " +"skanera, digitalizera albo innego urzÄ…dzenia, które wygenerowaÅ‚o obraz. " +"JeÅ›li to pole jest puste, jest traktowane jako nieznane." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Bajtowe przesuniÄ™cie pasa dla każdego pasa. Zaleca siÄ™ takie dobranie tej " +"wartoÅ›ci, by liczba bajtów pasa nie przekraczaÅ‚a 64kB. W danych " +"skompresowanych algorytmem JPEG to oznaczenie nie jest potrzebne i jest " +"pomijane. Patrz także i ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Orientacja obrazu widziana w kategoriach wierszy i kolumn." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Próbek na piksel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Liczba skÅ‚adowych na piksel. Ponieważ ten standard odnosi siÄ™ do obrazów RGB " +"i YCbCr, wartość tego znacznika wynosi 3. W danych skompresowanych " +"algorytmem JPEG zamiast tego znacznika używany jest znacznik JPEG." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Wierszy na pas" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"Liczba wierszy na pas. Jest to liczba wierszy w obrazie jednego pasa kiedy " +"obraz jest podzielony na pasy. W danych skompresowanych algorytmem JPEG to " +"oznaczenie nie jest potrzebne i jest pomijane. Patrz także i " +"." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Liczba bajtów na pas" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"CaÅ‚kowita liczba bajtów w każdym pasie. W danych skompresowanych algorytmem " +"JPEG to oznaczenie nie jest potrzebne i jest pomijane." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Rozdzielczość Y" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " +"szerokoÅ›ci (). Kiedy rozdzielczość obrazu jest nieznana, " +"przyjmuje siÄ™ 72 [dpi]." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Rozdzielczość Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " +"dÅ‚ugoÅ›ci (). ZakÅ‚adana jest taka sama wartość jak ." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Oznaczenie, czy skÅ‚adowe pikseli sÄ… zapisane w formacie blokowym czy " +"pÅ‚askim. W plikach skompresowanych algorytmem JPEG zamiast tego znacznika " +"używany jest znacznik JPEG. JeÅ›li to pole nie istnieje, domyÅ›lne dla TIFF " +"jest 1 (blokowy)." + +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "Limit odpowiedzi linearnej" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +#, fuzzy +msgid "Gray Response Curve" +msgstr "Krzywa tonalna" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "Opcja" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "Opcja" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Jednostka do wyrażania i . Dla obu wielkoÅ›ci " +"używana jest ta sama jednostka. JeÅ›li rozdzielczość jest nieznana, " +"przyjmowane jest 2 (cale)." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Numer obrazu" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Nazwa dokumentu, z którego obraz zostaÅ‚ zeskanowany" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Funkcja przejÅ›cia dla obrazu, opisana w postaci tabelarycznej. Zwykle ten " +"znacznik nie jest potrzebny, ponieważ przestrzeÅ„ kolorów podana jest w " +"znaczniku informacji o przestrzeni kolorów ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Ten znacznik przechowuje nazwÄ™ i wersjÄ™ oprogramowania lub firmware aparatu " +"albo innego urzÄ…dzenia wejÅ›ciowego obrazu użytego do utworzenia obrazu. " +"Szczegółowy format nie jest okreÅ›lony, ale zaleca siÄ™ naÅ›ladowanie " +"poniższego przykÅ‚adu. JeÅ›li pole jest puste, jest traktowane jako nieznane." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Data i czas utworzenia obrazu. W standardzie Exif jest to data i czas zmiany " +"pliku." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Ten znacznik przechowuje nazwÄ™ wÅ‚aÅ›ciciela aparatu, fotografa lub twórcy " +"obrazu. Szczegółowy format nie jest okreÅ›lony, ale zaleca siÄ™ naÅ›ladowanie " +"poniższego przykÅ‚adu dla uÅ‚atwienia wymienialnoÅ›ci. JeÅ›li pole jest puste, " +"jest traktowane jako nieznane. PrzykÅ‚ad: \"Camera owner, John Smith; " +"Photographer, Michael Brown; Image creator, Ken James\"" + +#: src/tags.cpp:564 +#, fuzzy +msgid "Host Computer" +msgstr "Komputer " + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Ten znacznik zawiera informacjÄ™ o komputerze użytym do utworzenia obrazu." + +#: src/tags.cpp:568 +#, fuzzy +msgid "Predictor" +msgstr "Wyrazy uznania" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Barwa biaÅ‚ego punktu obrazu. Zwykle ten znacznik nie jest potrzebny, " +"ponieważ przestrzeÅ„ kolorów podana jest w znaczniku informacji o przestrzeni " +"kolorów ()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Barwa trzech głównych kolorów obrazu. Zwykle ten znacznik nie jest " +"potrzebny, ponieważ przestrzeÅ„ kolorów podana jest w znaczniku informacji o " +"przestrzeni kolorów ()." + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Matryca kolorów" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Szerokość kafelka" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" +"Szerokość kafelka w pikselach. Jest to liczba kolumna w każdym kafelku." + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "DÅ‚ugość kafelka" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" +"DÅ‚ugość (wysokość) kafelka w pikselach. Jest to liczba wierszy w każdym " +"kafelku." + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "PrzesuniÄ™cia kafelków" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"Dla każdego kafelka, przesuniÄ™cie w bajtach tego kafelka, skompresowanego i " +"zapisanego na dysku. PrzesuniÄ™cie jest podane z uwzglÄ™dnieniem poczÄ…tku " +"pliku TIFF. Uwaga: powoduje to że każdy plik posiada poÅ‚ożenie niezależne od " +"poÅ‚ożeÅ„ innych plików." + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Liczby bajtów kafelków" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"Dla każdego kafelka, liczba (skompresowanych) bajtów w tym kafelku. Zobacz " +"opis, w jaki sposób liczby bajtów sÄ… uporzÄ…dkowane w opisie znacznika " +"\"PrzesuniÄ™cia kafelków\"." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "PrzesuniÄ™cia SubIFD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"Zdefiniowane przez Adobe Corporation, aby pozwolić na drzewa TIFF w pliku " +"TIFF." + +#: src/tags.cpp:612 +#, fuzzy +msgid "Ink Set" +msgstr "Ustaw" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Nazwa wÅ‚aÅ›ciciela" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "Liczba uderzeÅ„" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Dynamiczny zakres" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "Docelowa przysÅ‚ona" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "Bitów na próbkÄ™" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Format pliku" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "CzÄ™stotliwość próbkowania dźwiÄ™ku" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "NajwiÄ™ksza wartość przysÅ‚ony" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Zakres przejÅ›cia" + +#: src/tags.cpp:641 +#, fuzzy +msgid "Expands the range of the TransferFunction" +msgstr "Rozszerza zasiÄ™g funkcji zakresu przejÅ›cia" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "Proces JPEG" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "Proces JPEG" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "Pole to okreÅ›la proces użyty do wyprodukowania skompresowanych danych" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "Format JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"PoÅ‚ożenie poczÄ…tkowego bajta (SOI) danych skompresowanej miniaturki JPEG. " +"Nie jest używane dla danych JPEG głównego obrazu." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "DÅ‚ugość formatu JPEG" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"Liczba bajtów danych skompresowanej miniaturki JPEG. Nie jest używana dla " +"danych JPEG głównego obrazu. Miniaturki JPEG nie sÄ… dzielone, ale zapisywane " +"jako ciÄ…gÅ‚y strumieÅ„ JPEG od SOI do EOI. Znaczniki Appn i COM nie powinny " +"być używane. Skompresowane miniaturki muszÄ… być zapisane w co najwyżej 64 " +"kB, włącznie ze wszystkimi innymi danymi zapisanymi w APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +#, fuzzy +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "Pole to okreÅ›la proces użyty do wyprodukowania skompresowanych danych" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "Proces JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +#, fuzzy +msgid "JPEG DC-Tables" +msgstr "Proces JPEG" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +#, fuzzy +msgid "JPEG AC-Tables" +msgstr "Proces JPEG" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Macierz współczynników przeksztaÅ‚cenia danych obrazu z RGB do YCbCr. Dla " +"TIFF nie ma wartoÅ›ci domyÅ›lnych, ale wartoÅ›ci podane w załączniku E \"Color " +"Space Guidelines\" sÄ… używane jako domyÅ›lne. PrzestrzeÅ„ kolorów jest " +"okreÅ›lona w znaczniku informacji o przestrzeni kolorów z wartoÅ›ciÄ… domyÅ›lnÄ… " +"bÄ™dÄ…cÄ… tÄ…, która daje optymalnÄ… charakterystykÄ™ obrazu w danym przypadku." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "Podpróbkowanie YCbCr" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Współczynnik próbkowania skÅ‚adowych chrominancji w stosunku do skÅ‚adowej " +"luminancji. W danych skompresowanych algorytmem JPEG zamiast tego znacznika " +"używany jest znacznik JPEG." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"Rozmieszczenie skÅ‚adowych chrominancji w stosunku do skÅ‚adowej luminancji. " +"To pole ma znaczenie tylko dla danych skompresowanych algorytmem JPEG lub " +"nieskompresowanych danych YCbCr. DomyÅ›lne dla TIFF jest 1 (wyÅ›rodkowane); " +"ale kiedy Y:Cb:Cr = 4:2:2, zaleca siÄ™ w tym standardzie 2 (poÅ‚ożone razem) w " +"celu poprawienia jakoÅ›ci obrazu w przypadku oglÄ…dania na telewizorze. Kiedy " +"to pole nie istnieje, czytajÄ…cy powinien zaÅ‚ożyć wartość domyÅ›lnÄ… dla TIFF. " +"W przypadku Y:Cb:Cr = 4:2:0, zalecana jest wartość domyÅ›lna dla TIFF " +"(wyÅ›rodkowane). JeÅ›li czytajÄ…cy nie ma możliwoÅ›ci obsÅ‚ugi obu rodzajów " +"rozmieszczenia, powinien używać domyÅ›lnej wartoÅ›ci TIFF niezależnie od " +"wartoÅ›ci tego pola. Zaleca siÄ™, żeby czytajÄ…cy byli w stanie obsÅ‚użyć oba " +"rodzaje rozmieszczenia." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "CzerÅ„/biel odniesienia" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"WartoÅ›ci czarnego i biaÅ‚ego punktu odniesienia. W formacie TIFF nie ma " +"wartoÅ›ci domyÅ›lnych, ale poniższe sÄ… podane tutaj jako domyÅ›lne. PrzestrzeÅ„ " +"kolorów jest okreÅ›lona w znaczniku informacji o przestrzeni kolorów, z " +"wartoÅ›ciÄ… domyÅ›lnÄ… dajÄ…cÄ… optymalnÄ… charakterystykÄ™ obrazu w danych " +"warunkach." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "Pakiet XML" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Metadane XMP (Adobe technote 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Windows Ocena" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Znacznik oceny używany przez Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Windows Ocena procentowa" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Znacznik oceny używany przez Windows, wartość podana w procentach" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "Unikalny identyfikator obrazu" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" +"Rozmiary wzoru geometrycznego CFA (color filter array - tablicy filtrów " +"kolorów)" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Oznaczenie wzoru geometrycznego CFA (color filter array - tablicy filtrów " +"kolorów) czujnika obrazu w przypadku użycia jednoukÅ‚adowego czujnika obszaru " +"koloru. Nie odnosi siÄ™ to do wszystkich metod próbkowania" + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Informacje o prawach autorskich. Jest to standardowy znacznik używany do " +"okreÅ›lenia praw autorskich zarówno fotografa, jak i redaktora. Jest to " +"informacja o osobie lub organizacji majÄ…cej prawa do obrazu. Standardowe " +"oÅ›wiadczenie o prawach autorskich wraz z datÄ… i prawami powinno być zapisane " +"w tym polu, np. \"Copyright, John Smith, 19xx. All rights reserved.\". W tym " +"standardzie pola opisujÄ… prawa zarówno fotografa, jak i redaktora, z których " +"każdy jest opisywany w oddzielnej części oÅ›wiadczenia. JeÅ›li jest jasne " +"rozróżnienie miÄ™dzy prawami fotografa i redaktora, powinny być zapisane w " +"kolejnoÅ›ci najpierw fotograf, a nastÄ™pnie redaktor, oddzielone znakiem NULL " +"(w tym przypadku, jeÅ›li oÅ›wiadczenie także koÅ„czy siÄ™ znakiem NULL, powinny " +"być dwa kody NULL, patrz przykÅ‚ad 1). JeÅ›li podano tylko prawa fotografa, " +"jest on koÅ„czony jednym kodem NULL (patrz przykÅ‚ad 2). JeÅ›li podano tylko " +"prawa redaktora, część przeznaczona dla fotografa skÅ‚ada siÄ™ z jednej spacji " +"i nastÄ™pujÄ…cego po niej kodu koÅ„czÄ…cego NULL, a nastÄ™pnie podane sÄ… prawa " +"redaktora (patrz przykÅ‚ad 3). JeÅ›li pole jest puste, jest traktowane jako " +"nieznane." + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "Czas ekspozycji podany w sekundach (s)." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "Liczba F." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Zawiera rekord IPTC/NAA" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Blok zasobów obrazu" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "Zawiera informacjÄ™ osadzonÄ… przez program Adobe Photoshop" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Wskaźnik do Exif IFD. Exif IFD ma tÄ™ samÄ… strukturÄ™ co IFD okreÅ›lone w TIFF, " +"oczywiÅ›cie nie zawiera jednak danych obrazu jak w przypadku pliku TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Profil kolorów ICC" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Zawiera profil/charakterystykÄ™ przestrzeni kolorów ICC (InterColor " +"Consortium)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"Rodzaj programu użytego przez aparat do ustawienia ekspozycji przy robieniu " +"zdjÄ™cia." + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "OkreÅ›la czuÅ‚ość widmowÄ… każdego kanaÅ‚u." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Wskaźnik do GPS Info IFD. Struktura wymienialnoÅ›ci GPS Info IFD, podobnie " +"jak Exif IFD, nie zawiera danych obrazu." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "Oszacowania szybkoÅ›ci ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"OkreÅ›lenie szybkoÅ›ci ISO i szerokoÅ›ci ISO aparatu lub urzÄ…dzenia wejÅ›ciowego " +"zgodne ze specyfikacjÄ… ISO 12232." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Funkcja konwersji optoelektrycznej, zdefiniowana w dokumencie SO 14524." + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Z przeplotem" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Indicates the field number of multifield images." +msgstr "OkreÅ›la ukÅ‚ad obrazu." + +#: src/tags.cpp:816 +#, fuzzy +msgid "Time Zone Offset" +msgstr "PrzesuniÄ™cia kafelków" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "Samowyzwalacz" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "Liczba sekund od naciÅ›niÄ™cia przycisku migawki do zrobienia zdjÄ™cia." + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Data i czas (oryginaÅ‚u)" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "Data i czas ostatniej modyfikacji metadanych." + +#: src/tags.cpp:825 +#, fuzzy +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"Informacja specyficzna dla skompresowanych danych. Rodzaj kompresji użyty " +"dla skompresowanego obrazu jest okreÅ›lony w jednostkach bitów na piksel." + +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "Szybkość migawki" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Najmniejsza wartość przysÅ‚ony" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "Liczba uderzeÅ„." + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Odchylenie ekspozycji" + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "NajwiÄ™ksza wartość przysÅ‚ony" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "Nazwa sceny." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "OdlegÅ‚ość obiektu podana w metrach." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Tryb pomiaru." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Rodzaj źródÅ‚a Å›wiatÅ‚a." + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "Ten znacznik okreÅ›la stan flesza w trakcie robieniu zdjÄ™cia." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "DÅ‚ugość ogniskowej obiektywu, w milimetrach." + +#: src/tags.cpp:836 +#, fuzzy +msgid "Amount of flash energy (BCPS)." +msgstr "Wielkość energii flesza (BCPS)" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Szum" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "WartoÅ›ci pomiaru szumu." + +#: src/tags.cpp:839 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " +"dÅ‚ugoÅ›ci (). ZakÅ‚adana jest taka sama wartość jak ." + +#: src/tags.cpp:840 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Liczba pikseli na jednostkÄ™ rozdzielczoÅ›ci () w kierunku " +"dÅ‚ugoÅ›ci (). ZakÅ‚adana jest taka sama wartość jak ." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "PowiÄ™kszenie elektroniczne" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security classification assigned to the image." +msgstr "PowiÄ™kszenie elektroniczne" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +#, fuzzy +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" +"Ten znacznik okreÅ›la poÅ‚ożenie i obszar głównego obiektu na caÅ‚ej scenie." + +#: src/tags.cpp:846 +#, fuzzy +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"OkreÅ›lenie indeksu ekspozycji wybranego przez aparat lub urzÄ…dzenie " +"wejÅ›ciowe w czasie robienia zdjÄ™cia." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "Standardowy ID TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Zawiera cztery znaki ASCII okreÅ›lajÄ…ce wersjÄ™ standardu TIFF/EP pliku TIFF/" +"EP, np. 1, 1, 0, 0." + +#: src/tags.cpp:851 +#, fuzzy +msgid "Type of image sensor." +msgstr "Åšrodek obrazu Raw" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Windows TytuÅ‚" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Znacznik tytuÅ‚u, używany przez Windows, zakodowany w UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Windows Komentarz" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Znacznik komentarza, używany przez Windows, zakodowany w UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Windows Autor" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Znacznik autora, używany przez Windows, zakodowany w UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Windows SÅ‚owa kluczowe" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Znacznik słów kluczowych, używany przez Windows, zakodowany w UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Windows Temat" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Znacznik tematu, używany przez Windows, zakodowany w UCS2" + +#: src/tags.cpp:867 +#, fuzzy +msgid "Print Image Matching" +msgstr "PasujÄ…ca strefa" + +#: src/tags.cpp:868 +#, fuzzy +msgid "Print Image Matching, description needed." +msgstr "PasujÄ…ca strefa" + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "Wersja DNG" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"W tym znaczniku zakodowany jest czterostopniowy numer wersji. Dla plików " +"zgodnych z wersjÄ… 1.1.0.0 specyfikacji DNG, znacznik ten powinien zawierać " +"bajty: 1, 1, 0, 0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "Wersja wsteczna DNG" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Znacznik ten okreÅ›la najstarszÄ… wersjÄ™ specyfikacji Digital Negative (DNG) z " +"którÄ… zgodny jest plik. Czytniki nie powinny próbować odczytać pliku jeÅ›li w " +"tym znaczniku podany jest numer wersji wiÄ™kszy niż ten na którym oparty jest " +"czytnik. Dodatkowo oprócz sprawdzania znaczników wersji, czytniki powinny " +"dla wszystkich znaczników sprawdzić typy, liczby i wartoÅ›ci aby sprawdzić, " +"czy sÄ… zdolne do poprawnego odczytania danego pliku." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Unikalny model aparatu" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"OkreÅ›la unikalnÄ…, nie zlokalizowanÄ… nazwÄ™ aparatu, którym utworzono obraz w " +"pliku Raw. Nazwa ta powinna zawierać nazwÄ™ producenta aby zapobiec " +"konfliktom i nie powinna być zlokalizowana, nawet jeÅ›li nazwa aparatu ma " +"różne nazwy dla różnych rynków (zobacz \"Lokalny model aparatu\"). Ten " +"Å‚aÅ„cuch może być użyty przez oprogramowanie czytnika do zindeksowania " +"ustawieÅ„ zależnych od modelu aparatu." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Lokalny model aparatu" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"Zawiera lokalnÄ… nazwÄ™ aparatu. Podobne do \"Unikalny model aparatu\", ale " +"nazwa może być dostosowana do różnych rynków." + +#: src/tags.cpp:897 +#, fuzzy +msgid "CFA Plane Color" +msgstr "Kolor FinePix" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "UkÅ‚ad CFA" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "OkreÅ›la ukÅ‚ad przestrzenny CFA." + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "" +"Rozmiary wzoru geometrycznego CFA (color filter array - tablicy filtrów " +"kolorów)" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Poziom czerni Delta H" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Poziom czerni Delta V" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Poziom bieli" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "DomyÅ›lna skala" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "DomyÅ›lny poczÄ…tek kadru" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "DomyÅ›lny rozmiar kadru" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matryca kolorów 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matryca kolorów 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Kalibracja aparatu 1" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "Kalibracja aparatu 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "Macierz redukcji 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "Macierz redukcji 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Analogowy balans bieli" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "Balans bieli neutralny (as shot)" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +#, fuzzy +msgid "As Shot White XY" +msgstr "Balans bieli XY (as shot)" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "Ekspozycja podstawowa" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "Szum podstawowy" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +msgid "Baseline Sharpness" +msgstr "Ostrość podstawowa" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +#, fuzzy +msgid "Bayer Green Split" +msgstr "PodziaÅ‚ zieleni filtru Bayer" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "Limit odpowiedzi linearnej" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"CameraSerialNumber zawiera numer seryjny aparatu lub korpusu aparatu którym " +"wykonano zdjÄ™cie." + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Obiektyw" + +#: src/tags.cpp:1083 +#, fuzzy +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" +"Zawiera informacjÄ™ o obiektywie którym zrobiono zdjÄ™cie. JeÅ›li minimalna " +"przysÅ‚ona jest nieznana, powinna być zakodowana jako 0/0." + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "PromieÅ„ rozmycia kolorów" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "SiÅ‚a antyaliasingu" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "Skala cieni" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" +"Ten znacznik jest używany przez program Adobe Camera Raw do kontrolowania " +"czuÅ‚oÅ›ci jego suwaka \"Shadows\"." + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "Prywatne dane DNG" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" +"Umożliwia producentom aparatów przechowywanie prywatnych danych w pliku DNG. " +"Dane te mogÄ… być użyte w ich wÅ‚asnych konwerterach RAW oraz do " +"przechowywania danych zapisanych przez programy do edycji plików DNG." + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "BezpieczeÅ„stwo MakerNote" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "OÅ›wietlenie kalibracji 1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "OÅ›wietlenie kalibracji 2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "Mnożnik najwyżej jakoÅ›ci" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" +"Dla niektórych aparatów, najwyższa możliwa jakość obrazu nie jest osiÄ…gana " +"przez zachowanie caÅ‚kowitej liczby pikseli podczas konwersji. Na przykÅ‚ad " +"obrazy Fujifilm SuperCCD posiadajÄ… najwiÄ™cej szczegółów po podwojeniu ich " +"caÅ‚kowitej liczby pikseli. Ten znacznik okreÅ›la liczbÄ™, o którÄ… należy " +"pomnożyć wartoÅ›ci znacznika DefaultScale aby osiÄ…gnąć najwyższÄ… jakość " +"obrazu." + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "Unikalny ID danych Raw" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Oryginalna nazwa pliku Raw" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "Oryginalne dane pliku Raw" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Obszar aktywny" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" +"ProstokÄ…t ten definiuje aktywne (nie zamaskowane) piksele matrycy. Kolejność " +"współrzÄ™dnych wierzchoÅ‚ków prostokÄ…ta to: góra, lewo, dół, prawo." + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Obszary nieaktywne" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" +"Znacznik ten zawiera listÄ™ nienakÅ‚adajÄ…cych siÄ™ współrzÄ™dnych prostokÄ…tów w " +"peÅ‚ni zamaskowanych (nieaktywnych) pikseli matrycy. MogÄ… one być opcjonalnie " +"użyte przez czytniki DNG do pomiaru poziomu odkodowania czerni. Kolejność " +"współrzÄ™dnych wierzchoÅ‚ków każdego prostokÄ…ta to: góra, lewo, dół, prawo. " +"JeÅ›li surowe dane obrazu (raw) zawierajÄ… już swój poziom odkodowania czerni, " +"ten znacznik nie powinien zostać użyty, ponieważ zamaskowane piksele nie sÄ… " +"użyteczne." + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "Profil ICC w trakcie wykonywania zdjÄ™cia" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +#, fuzzy +msgid "As-Shot Pre-Profile Matrix" +msgstr "Macierz pre-profilu w trakcie wykonywania zdjÄ™cia" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Bieżący profil ICC" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "Bieżąca macierz pre-profilu" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Odniesienie do projektu" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "Kalibracja aparatu 1" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +#, fuzzy +msgid "Profile Calibration Signature" +msgstr "OÅ›wietlenie kalibracji 1" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Profil ICC w trakcie wykonywania zdjÄ™cia" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Redukcja szumów" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Nazwy pÅ‚yt" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Krzywa tonalna" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +#, fuzzy +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Ten znacznik zawiera informacjÄ™ o komputerze użytym do utworzenia obrazu." + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Prawa autorskie" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Matryca kolorów 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Matryca kolorów 2" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Dane podglÄ…du" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Wersja podglÄ…du" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Obraz podglÄ…du" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Opis ustawieÅ„ urzÄ…dzenia" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "PrzestrzeÅ„ kolorów wideo" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Dane podglÄ…du" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Åšrodek obrazu Raw" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +#, fuzzy +msgid "Original Raw File Digest" +msgstr "Oryginalne dane pliku Raw" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Filtr szumu" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Nieznany znacznik IFD" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "NieokreÅ›lony" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Program twórczy" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Program akcji" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Portret" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Pejzaż" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Wielopunktowy" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Å»arówka wolframowa" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Dobra pogoda" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Pochmurna pogoda" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "ÅšwiatÅ‚o dzienne lampy fluorescencyjnej (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Biel dnia lampy fluorescencyjnej (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "ChÅ‚odnobiaÅ‚a lampa fluorescencyjna (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "BiaÅ‚a lampa fluorescencyjna (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "ÅšwiatÅ‚o standardowe A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "ÅšwiatÅ‚o standardowe B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "ÅšwiatÅ‚o standardowe C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "Wolframowe oÅ›wietlenie studyjne ISO" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Inne źródÅ‚o Å›wiatÅ‚a" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Nieskalibrowana" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "JednoukÅ‚adowy czujnik obszaru koloru" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "DwuukÅ‚adowy czujnik obszaru koloru" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "TrzyukÅ‚adowy czujnik obszaru koloru" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "Sekwencyjny obszar koloru" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Czujnik trzyliniowy" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Liniowa sekwencja koloru" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Skaner negatywów" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "Skaner druku odblaskowego" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Aparat cyfrowy" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "BezpoÅ›rednio sfotografowane" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Proces zwykÅ‚y" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Proces wÅ‚asny" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Niskie wzmocnienie na górze" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Wysokie wzmocnienie na górze" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Niskie wzmocnienie na dole" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Wysokie wzmocnienie na górze" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Widok bliski" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Widok daleki" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Czas ekspozycji podany w sekundach (s)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"Oznaczenie czuÅ‚oÅ›ci widmowej każdego kanaÅ‚u używanego przez aparat. Wartość " +"znacznika to Å‚aÅ„cuch znaków ASCII kompatybilny ze standardem utworzonym " +"przez ASTM Technical Committee." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "Funkcja konwersji optoelektrycznej" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"OkreÅ›lenie funkcji konwersji optoelektrycznej (OECF - Opto-Electric " +"Conversion Function) opisanej w ISO 14524. okreÅ›la zależność miÄ™dzy " +"wejÅ›ciem optycznym aparatu a wartoÅ›ciami obrazu." + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "CzuÅ‚ość ISO" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "CzuÅ‚ość widmowa" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Indeks ekspozycji" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "Tryb ISO" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "Tryb ISO" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"ObsÅ‚ugiwana wersja tego standardu. Brak tego pola jest uznawany za " +"niezgodność ze standardem." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Data i czas (oryginaÅ‚u)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Data i czas wygenerowania oryginalnych danych obrazu. Dla aparatu cyfrowego " +"zapisywana jest data i czas zrobienia zdjÄ™cia." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Data i czas (obrazu cyfrowego)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Data i czas zapisania obrazu jako danych cyfrowych." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Informacje specyficzne dla skompresowanych danych. KanaÅ‚y każdej skÅ‚adowej " +"sÄ… ukÅ‚adane w kolejnoÅ›ci od 1. do 4. Dla danych nieskompresowanych uÅ‚ożenie " +"danych jest podane w znaczniku . Jednak ponieważ " +" może wyrazić jedynie kolejność Y, Cb i Cr, ten " +"znacznik zostaÅ‚ dodany dla przypadków, kiedy skompresowane dane używajÄ… " +"skÅ‚adowych innych niż Y, Cb i Cr oraz aby umożliwić obsÅ‚ugÄ™ innych sekwencji." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Skompresowane bity na piksel" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Informacja specyficzna dla skompresowanych danych. Rodzaj kompresji użyty " +"dla skompresowanego obrazu jest okreÅ›lony w jednostkach bitów na piksel." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"Czas otwarcia migawki. JednostkÄ… jest ustawienie APEX (Additive System of " +"Photographic EXposure)." + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "PrzysÅ‚ona obiektywu. JednostkÄ… jest wartość APEX." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Wartość jasnoÅ›ci. JednostkÄ… jest wartość APEX. Zwykle jest podana w " +"przedziale od -99.99 do 99.99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Odchylenie ekspozycji" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"Odchylenie ekspozycji. JednostkÄ… jest wartość APEX. Zwykle jest podana w " +"przedziale od -99.99 do 99.99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"Najmniejsza liczba F obiektywu. JednostkÄ… jest wartość APEX. Zwykle jest " +"podana w przedziale od -99.99 do 99.99, ale nie ma ograniczenia do tego " +"zakresu." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" +"Ten znacznik jest zapisywany kiedy zdjÄ™cie byÅ‚o robione z użyciem Å›wiatÅ‚a " +"bÅ‚yskowego (flesza)." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"Rzeczywista ogniskowa obiektywu w milimetrach, bez przeksztaÅ‚cenia do " +"ogniskowej dla aparatu na film 35 mm." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Ten znacznik okreÅ›la poÅ‚ożenie i obszar głównego obiektu na caÅ‚ej scenie." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Uwaga producenta" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Znacznik dla producentów urzÄ…dzeÅ„ zapisujÄ…cych Exif do zapisywania dowolnie " +"wybranych informacji. Zawartość zależy od producenta." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Czas ekspozycji (uÅ‚amki sekund)" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" +"Znacznik używany do zapisywania uÅ‚amków sekund dla znacznika ." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Data i czas oryginaÅ‚u (uÅ‚amki sekund)" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Znacznik używany do zapisywania uÅ‚amków sekund dla znacznika " +"." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Data i czas digitalizacji (uÅ‚amki sekund)" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Znacznik używany do zapisywania uÅ‚amków sekund dla znacznika " +"." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "Wersja FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "Wersja formatu FlashPix obsÅ‚ugiwana przez plik FPXR." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"Znacznik informacji o przestrzeni kolorów jest zawsze zapisywany w celu " +"okreÅ›lenia przestrzeni kolorów. Zwykle używane jest sRGB do okreÅ›lenia " +"przestrzeni kolorów w oparciu o warunki i Å›rodowisko monitora PC. JeÅ›li " +"użyta jest inna przestrzeÅ„ kolorów niż sRGB, ustawiona jest wartość " +"Nieskalibrowana. Dane obrazu zapisane jako nieskalibrowane mogÄ… być " +"traktowane jako sRGB przy konwersji do FlashPix." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Informacje specyficzne dla skompresowanych danych. Kiedy zapisywany jest " +"skompresowany plik, w tym znaczniku musi być zapisana poprawna szerokość " +"znaczÄ…cego obrazu, niezależnie od istnienia danych dopeÅ‚niajÄ…cych czy " +"znacznika restartu. Ten znacznik nie powinien istnieć w pliku " +"nieskompresowanym." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Informacje specyficzne dla skompresowanych danych. Kiedy zapisywany jest " +"skompresowany plik, w tym znaczniku musi być zapisana poprawna wysokość " +"znaczÄ…cego obrazu, niezależnie od istnienia danych dopeÅ‚niajÄ…cych czy " +"znacznika restartu. Ten znacznik nie powinien istnieć w pliku " +"nieskompresowanym. Ponieważ dopeÅ‚nianie danych w kierunku pionowym nie jest " +"potrzebne, liczba linii zapisana w tym polu bÄ™dzie w praktyce równa tej " +"zapisanej w SOF." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" +"Ten znacznik jest używany do zapisania nazwy pliku dźwiÄ™kowego powiÄ…zanego z " +"danymi obrazu. Jedyna zwiÄ…zana informacja zapisywana tutaj do nazwa pliku " +"dźwiÄ™kowego Exif i jego rozszerzenie (Å‚aÅ„cuch ASCII skÅ‚adajÄ…cy siÄ™ z 8 " +"znaków + \".\" + 3 znaków rozszerzenia). Åšcieżka do pliku nie jest " +"zapisywana." + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "Wskaźnik IFD wymienialnoÅ›ci" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"Interoperability IFD jest zÅ‚ożony ze znaczników przechowujÄ…cych informacje " +"zapewniajÄ…ce wymienialność i wskazywane przez ten znacznik umieszczony w " +"Exif IFD. Struktura wymienialnoÅ›ci w Interoperability IFD jest taka sama jak " +"struktura IFD zdefiniowana w TIFF, ale w porównaniu do normalnego TIFF IFD " +"nie zawiera danych obrazu." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"OkreÅ›lenie energii bÅ‚ysku w czasie robienia zdjÄ™cia mierzonej w jednostkach " +"BCPS (Beam Candle Power Seconds)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" +"Ten znacznik zapisuje tabelÄ™ czÄ™stotliwoÅ›ci przestrzennych aparatu lub " +"urzÄ…dzenia wejÅ›ciowego oraz wartoÅ›ci SFR w kierunku szerokoÅ›ci obrazu, " +"wysokoÅ›ci obrazu i przekÄ…tnej zgodnie ze specyfikacjÄ… ISO 12233." + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie X" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"OkreÅ›lenie liczby pikseli w kierunku szerokoÅ›ci obrazu (X) na " +" w pÅ‚aszczyźnie ogniskowej aparatu." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Rozdzielczość ogniskowej w pÅ‚aszczyźnie Y" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"OkreÅ›lenie liczby pikseli w kierunku wysokoÅ›ci obrazu (Y) na " +" w pÅ‚aszczyźnie ogniskowej aparatu." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"OkreÅ›lenie jednostki miary i " +". Ta wartość jest taka sama jak ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"OkreÅ›lenie poÅ‚ożenia głównego obiektu na scenie. Wartość tego znacznika " +"reprezentuje piksel w Å›rodku głównego obiektu wzglÄ™dem lewej krawÄ™dzi, przed " +"wykonaniem obrotu opisanego znacznikiem . Pierwsza wartość okreÅ›la " +"numer kolumny X, a druga numer wiersza Y." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Indeks ekspozycji" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"OkreÅ›lenie indeksu ekspozycji wybranego przez aparat lub urzÄ…dzenie " +"wejÅ›ciowe w czasie robienia zdjÄ™cia." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" +"OkreÅ›lenie rodzaju czujnika obrazu w aparacie lub urzÄ…dzeniu wejÅ›ciowym." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"OkreÅ›lenie źródÅ‚a obrazu. JeÅ›li obraz byÅ‚ zapisany przez DSC, wartość tego " +"znacznika zawsze wynosi 3, oznaczajÄ…c, że obraz byÅ‚ zapisany przez DSC." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"OkreÅ›lenie rodzaju sceny. JeÅ›li obraz byÅ‚ zapisany przez DSC, wartość tego " +"znacznika zawsze musi być ustawiona na 1, oznaczajÄ…c, że obraz byÅ‚ " +"bezpoÅ›rednio sfotografowany." + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "Wzór filtra kolorów" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Oznaczenie wzoru geometrycznego CFA (color filter array - tablicy filtrów " +"kolorów) czujnika obrazu w przypadku użycia jednoukÅ‚adowego czujnika obszaru " +"koloru. Nie odnosi siÄ™ to do wszystkich metod próbkowania." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Ten znacznik okreÅ›la użycie specjalnego przetwarzania danych obrazu, takiego " +"jak rendering zastosowany na wyjÅ›ciu. JeÅ›li jest wykonane specjalne " +"przetwarzanie, czytajÄ…cy powinien wyłączyć albo zminimalizować dalsze " +"przetwarzanie." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Ten znacznik okreÅ›la tryb ekspozycji ustawiony przy robieniu zdjÄ™cia. W " +"trybie automatycznego bracketingu aparat wykonuje seriÄ™ klatek tej samej " +"sceny z różnymi ustawieniami ekspozycji." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Ten znacznik okreÅ›la tryb balansu bieli ustawiony przy robieniu zdjÄ™cia." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Ten znacznik okreÅ›la współczynnik powiÄ™kszenia cyfrowego w czasie robienia " +"zdjÄ™cia. JeÅ›li licznik wartoÅ›ci znacznika jest równy 0, oznacza to, że nie " +"użyto cyfrowego powiÄ™kszenia." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Znacznik okreÅ›la odpowiednik ogniskowej w milimetrach w odniesieniu do " +"aparatu dla filmów 35 mm. Wartość 0 oznacza nieznanÄ… ogniskowÄ…. Uwaga: " +"znacznik ten różni siÄ™ od znacznika ." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Znacznik okreÅ›la rodzaj sceny na zdjÄ™ciu. Może być także wykorzystany do " +"zapisania trybu, w którym byÅ‚o robione zdjÄ™cie. Należy zaznaczyć, że ten " +"znacznik różni siÄ™ od znacznika ." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Ten znacznik okreÅ›la stopieÅ„ wzmocnienia caÅ‚ego obrazu." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Ten znacznik okreÅ›la kierunek przetwarzania kontrastu zastosowanego przez " +"aparat przy robieniu zdjÄ™cia." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Ten znacznik okreÅ›la kierunek przetwarzania nasycenia zastosowanego przez " +"aparat przy robieniu zdjÄ™cia." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Ten znacznik okreÅ›la kierunek przetwarzania ostroÅ›ci zastosowanego przez " +"aparat przy robieniu zdjÄ™cia." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Ten znacznik okreÅ›la informacje o warunkach robienia zdjÄ™cia dla konkretnego " +"modelu aparatu. Jest on używany tylko do okreÅ›lenia warunków robienia " +"zdjÄ™cia przy odczycie." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Ten znacznik okreÅ›la odlegÅ‚ość od obiektu." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Ten znacznik okreÅ›la unikalny identyfikator przypisany każdemu zdjÄ™ciu. Jest " +"on zapisany jako Å‚aÅ„cuch ASCII odpowiadajÄ…cy notacji szesnastkowej o staÅ‚ej " +"dÅ‚ugoÅ›ci 128 bitów." + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Nazwa wÅ‚aÅ›ciciela" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Numer seryjny" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Informacje zależna od dostawcy" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Model obiektywu" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Nieznany znacznik Exif" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Północ" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "PoÅ‚udnie" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Wschód" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Zachód" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Powyżej poziomu morza" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Poniżej poziomu morza" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Pomiar w toku" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Pomiar gotowy" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Pomiar dwuwymiarowy" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Pomiar trójwymiarowy" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "wÄ™zÅ‚y" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Kierunek rzeczywisty" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Kierunek magnetyczny" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilometry" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Mile" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "WÄ™zÅ‚y" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Bez korekcji" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Z korekcjÄ…" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"Oznaczenie wersji . Wersja jest podawana jako 2.0.0.0. Ten " +"znacznik jest obowiÄ…zkowy, jeÅ›li obecny jest znacznik . (Uwaga: " +"znacznik jest podawany w bajtach, w przeciwieÅ„stwie do " +"znacznika . Kiedy wersja to 2.0.0.0, znacznik ma wartość " +"02000000.H)." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "GPS Oznaczenie szerokoÅ›ci" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"Oznaczenie, czy szerokość geograficzna jest północna, czy poÅ‚udniowa. " +"Wartość ASCII \"N\" oznacza szerokość północnÄ…, a \"S\" poÅ‚udniowÄ…." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"OkreÅ›lenie szerokoÅ›ci geograficznej. Szerokość jest wyrażona jako trzy " +"wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio stopnie, minuty i sekundy. " +"Kiedy sÄ… wyrażone stopnie, minuty i sekundy, format to dd/1,mm/1,ss/1. Kiedy " +"sÄ… wyrażone stopnie i minuty oraz np. uÅ‚amki minut sÄ… podane z dokÅ‚adnoÅ›ciÄ… " +"do dwóch miejsc po przecinku, format to dd/1,mmmm/100,0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "GPS Oznaczenie dÅ‚ugoÅ›ci" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"OkreÅ›lenie, czy dÅ‚ugość geograficzna jest wschodnia, czy zachodnia. Wartość " +"ASCII \"E\" oznacza dÅ‚ugość wschodniÄ…, a \"W\" zachodniÄ…." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"OkreÅ›lenie dÅ‚ugoÅ›ci geograficznej. Szerokość jest wyrażona jako trzy " +"wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio stopnie, minuty i sekundy. " +"Kiedy sÄ… wyrażone stopnie, minuty i sekundy, format to dd/1,mm/1,ss/1. Kiedy " +"sÄ… wyrażone stopnie i minuty oraz np. uÅ‚amki minut sÄ… podane z dokÅ‚adnoÅ›ciÄ… " +"do dwóch miejsc po przecinku, format to dd/1,mmmm/100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"OkreÅ›lenie odniesienia wysokoÅ›ci. JeÅ›li odniesienie jest poziomem morza i " +"wysokość jest nad poziomem morza, podaje siÄ™ 0. JeÅ›li wysokość jest poniżej " +"poziomu morza, podaje siÄ™ wartość 1 i wysokość oznacza siÄ™ jako wartość " +"bezwzglÄ™dnÄ… w znaczniku GPSAltitude. JednostkÄ… odniesienia sÄ… metry. Ten " +"znacznik jest typu BYTE w przeciwieÅ„stwie do innych znaczników odniesienia." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"OkreÅ›lenie wysokoÅ›ci (wyniesienia n.p.m.) w oparciu o odniesienie w " +"GPSAltitudeRef. Wysokość jest wyrażona jako jedna wartość RATIONAL " +"(wymierna). JednostkÄ… odniesienia sÄ… metry." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" +"OkreÅ›la czas jako uniwersalny czas koordynowany (UTC). jest " +"wyrażony jako trzy wartoÅ›ci wymierne (RATIONAL) podajÄ…ce godzinÄ™, minutÄ™ i " +"sekundÄ™ (zegar atomowy)." + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" +"OkreÅ›la satelity systemu GPS użyte do pomiaru. Znacznik ten może być użyty " +"do opisania numerów satelitów, ich numerów identyfikacyjnych, kÄ…ta " +"wychylenia, azymutu, SNR i innych informacji w postaci ASCII. Format nie " +"jest okreÅ›lony. JeÅ›li odbiornik GPS nie jest zdolny do wykonania pomiaru, " +"znacznik jest ustawiany na NULL." + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" +"OkreÅ›la stan odbiornika GPS w momencie zapisania obrazu. \"A\" oznacza że " +"pomiar jest w toku, a \"V\" oznacza gotowość pomiaru." + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" +"OkreÅ›la tryb pomiaru w odbiorniku GPS. WartoÅ›ci tekstowe: \"2\" oznacza " +"pomiar dwuwymiarowy, a \"3\" pomiar trójwymiarowy." + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "GPS StopieÅ„ precyzji danych" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" +"OkreÅ›la stopieÅ„ precyzji danych GPS (DOP). Wartość HDOP jest zapisywana " +"podczas pomiaru dwuwymiarowego, natomiast PDOP podczas pomiaru " +"dwuwymiarowego." + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" +"Jednostka użyta do pomiaru prÄ™dkoÅ›ci ruchu odbiornika GPS. \"K\", \"M\" i \"N" +"\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "OkreÅ›la prÄ™dkość ruchu odbiornika GPS." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "GPS Kierunek" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Oznacza rodzaj kierunku ruchu odbiornika GPS. \"T\" oznacza kierunek " +"rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"OkreÅ›la kierunek ruchu odbiornika GPS. Zakres wartoÅ›ci to od 0.00 do 359.99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Oznaczenie rodzaju kierunku (namiaru) do obrazu podczas jego wykonywania. \"T" +"\" oznacza kierunek rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"OkreÅ›la kierunek obrazu podczas wykonywania zdjÄ™cia, zakres wartoÅ›ci to od " +"0.00 do 359.99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" +"OkreÅ›la ukÅ‚ad odniesienia współrzÄ™dnych geograficznych użytych przez " +"odbiornik GPS. JeÅ›li ukÅ‚ad odniesienia jest ograniczony do Japonii, wartość " +"tego znacznika to \"TOKYO\" lub \"WGS-84\"." + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "GPS OkreÅ›lenie szerokoÅ›ci celu" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Oznaczenie, czy szerokość geograficzna punktu docelowego jest północna, czy " +"poÅ‚udniowa. Wartość ASCII \"N\" oznacza szerokość geograficznÄ… północnÄ…, a " +"\"S\" poÅ‚udniowÄ…." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"OkreÅ›lenie szerokoÅ›ci geograficznej punktu docelowego. Szerokość jest " +"wyrażona jako trzy wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio " +"stopnie, minuty i sekundy. Kiedy sÄ… wyrażone stopnie, minuty i sekundy, " +"typowy format to dd/1,mm/1,ss/1. Kiedy sÄ… wyrażone stopnie i minuty oraz np. " +"uÅ‚amki minut sÄ… podane z dokÅ‚adnoÅ›ciÄ… do dwóch miejsc po przecinku, format " +"to dd/1,mmmm/100,0/1." + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "GPS OkreÅ›lenie dÅ‚ugoÅ›ci celu" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"OkreÅ›lenie, czy dÅ‚ugość geograficzna punktu docelowego jest wschodnia, czy " +"zachodnia. Wartość ASCII \"E\" oznacza dÅ‚ugość geograficznÄ… wschodniÄ…, a \"W" +"\" zachodniÄ…." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"OkreÅ›lenie dÅ‚ugoÅ›ci geograficznej punktu docelowego. DÅ‚ugość jest wyrażona " +"jako trzy wartoÅ›ci RATIONAL (wymierne) podajÄ…ce odpowiednio stopnie, minuty " +"i sekundy. Kiedy sÄ… wyrażone stopnie, minuty i sekundy, typowy format to " +"dd/1,mm/1,ss/1. Kiedy sÄ… wyrażone stopnie i minuty oraz np. uÅ‚amki minut sÄ… " +"podane z dokÅ‚adnoÅ›ciÄ… do dwóch miejsc po przecinku, format to dd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Oznaczenie rodzaju kierunku (namiaru) do punktu docelowego. \"T\" oznacza " +"kierunek rzeczywisty, a \"M\" kierunek magnetyczny." + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" +"OkreÅ›la kierunek (namiar) do punktu docelowego. Przyjmuje zakres wartoÅ›ci od " +"0.00 do 359.99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" +"Jednostki użyte do wyrażenia odlegÅ‚oÅ›ci do punktu docelowego. \"K\", \"M\" i " +"\"N\" oznaczajÄ… kilometry, mile i wÄ™zÅ‚y." + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "OkreÅ›la odlegÅ‚ość do punktu docelowego." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" +"ÅaÅ„cuch tekstowy okreÅ›lajÄ…cy metodÄ™ użytÄ… do znalezienia lokalizacji. " +"Pierwszy bajt okreÅ›la użyte kodowanie, po nim nastÄ™puje nazwa metody." + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" +"ÅaÅ„cuch tekstowy, w którym jest zapisana nazwa obszaru GPS. Pierwszy bajt " +"okreÅ›la użyte kodowanie, po nim nastÄ™puje nazwa obszaru GPS." + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "GPS Znacznik czasu" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" +"ÅaÅ„cuch tekstowy, który zawiera informacjÄ™ o dacie i czasie w odniesieniu do " +"UTC (uniwersalnego czasu koordynowanego). Format to \"RRRR:MM:DD.\"." + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "OkreÅ›la czy dla odbiornika GPS zastosowano korekcjÄ™ różnicowÄ…." + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Nieznany znacznik GPSInfo" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Indeks wymienialnoÅ›ci" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Oznaczenie identyfikacji reguÅ‚y wymienialnoÅ›ci. Należy użyć \"R98\" dla " +"oznaczenia reguÅ‚ ExifR98. Używane sÄ… cztery bajty wraz ze znacznikiem koÅ„ca " +"(NULL). Inne znaczniki ExifR98 sÄ… opisane w pozycji Recommended Exif " +"Interoperability Rules (ExifR98)." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Wersja wymienialnoÅ›ci" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Wersja wymienialnoÅ›ci" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "PowiÄ…zany format pliku obrazu" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Format pliku obrazu" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "PowiÄ…zana szerokość obrazu" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "PowiÄ…zana dÅ‚ugość obrazu" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Nieznany znacznik Exif Interoperability" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "PrzesuniÄ™cie" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "PrzesuniÄ™cie Makernote od poczÄ…tku nagłówka TIFF." + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Kolejność bajtów" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" +"Kolejność bajtów użyta do zakodowania znaczników MakerNote, \"MM\" (big-" +"endian) lub \"II\" (little-endian)." + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Nieznany znacznik informacyjny Exiv2 Makernote" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Nieznany znacznik" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Nie użyto cyfrowego zoomu" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "PrzesuniÄ™cie nagłówka TIFF" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "zakodowane jako little endian" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "zakodowane jako big endian" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "bajtów" diff --git a/vendor/exiv2-0.25/po/pt.po b/vendor/exiv2-0.25/po/pt.po new file mode 100644 index 0000000..905dde3 --- /dev/null +++ b/vendor/exiv2-0.25/po/pt.po @@ -0,0 +1,27812 @@ +# Brazilian Portuguese translation for exiv2 +# Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007 +# This file is distributed under the same license as the exiv2 package. +# +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2014-01-27 14:10+0000\n" +"Last-Translator: Fábio Nogueira \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 23:00+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +#, fuzzy +msgid "Failed to open the file\n" +msgstr "Falhou ao analisar a marca temporal" + +#: src/actions.cpp:282 +#, fuzzy +msgid "File name" +msgstr "Nome do arquivo raw." + +#: src/actions.cpp:288 +#, fuzzy +msgid "File size" +msgstr "Tamanho completo" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +#, fuzzy +msgid "Image size" +msgstr "Tamanho de imagem completo" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +#, fuzzy +msgid "No Exif data found in the file\n" +msgstr "Não foram encontrados dados XMP no arquivo\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Fabricante da câmera" + +#: src/actions.cpp:310 +#, fuzzy +msgid "Camera model" +msgstr "Fabricante da câmera" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Data da imagem" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +#, fuzzy +msgid "Image number" +msgstr "Tom da imagem" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +#, fuzzy +msgid "Exposure time" +msgstr "Exibir transformação" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +#, fuzzy +msgid "Aperture" +msgstr "Abertura automática" + +#: src/actions.cpp:345 +#, fuzzy +msgid "Exposure bias" +msgstr "Valor de orientação diagonal" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +#, fuzzy +msgid "Flash" +msgstr "Modo luz" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +#, fuzzy +msgid "Flash bias" +msgstr "FlashBias" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +#, fuzzy +msgid "Focal length" +msgstr "Lente focal" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "" + +#: src/actions.cpp:373 +#, fuzzy +msgid "Subject distance" +msgstr "Faixa de distância do assunto" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Velocidade do ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +#, fuzzy +msgid "Exposure mode" +msgstr "Modo de multi-exposição" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +#, fuzzy +msgid "Metering mode" +msgstr "ModoMedicao" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +#, fuzzy +msgid "Macro mode" +msgstr "Modo de controle do Flash" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +#, fuzzy +msgid "Image quality" +msgstr "Configuração de qualidade de imagem" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Resolução Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Balanço do branco" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +#, fuzzy +msgid "Thumbnail" +msgstr "Estrutura de miniaturas" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Direitos autorais" + +#: src/actions.cpp:458 +#, fuzzy +msgid "Exif comment" +msgstr "Registro de comentário" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "" + +#: src/actions.cpp:742 +#, fuzzy +msgid "JPEG comment" +msgstr "Registro de comentário" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Visualizar" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "pixels" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Nenhuma etiqueta" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "" + +#: src/actions.cpp:822 +#, fuzzy +msgid "found in the file" +msgstr "Não foram encontrados dados XMP no arquivo\n" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Falhou ao analisar a marca temporal" + +#: src/actions.cpp:834 +#, fuzzy +msgid "in the file" +msgstr "Filtro de ruído" + +#: src/actions.cpp:845 +#, fuzzy +msgid "Updating timestamp to" +msgstr "Data da imagem" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Apagando dados de miniatura" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "" + +#: src/actions.cpp:956 +#, fuzzy +msgid "Erasing IPTC data from the file" +msgstr "Não foram encontrados dados IPTC no arquivo\n" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "" + +#: src/actions.cpp:974 +#, fuzzy +msgid "Erasing XMP data from the file" +msgstr "Não foram encontrados dados XMP no arquivo\n" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "" + +#: src/actions.cpp:1055 +#, fuzzy +msgid "Writing thumbnail" +msgstr "Apagando dados de miniatura" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +#, fuzzy +msgid "to file" +msgstr "Filtro de arte" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Escrevendo visualização" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +#, fuzzy +msgid "Failed to read" +msgstr "Falhou ao analisar a marca temporal" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +#, fuzzy +msgid "value" +msgstr "Valor de luz" + +#: src/actions.cpp:1355 +#, fuzzy +msgid "Set" +msgstr "Configurar" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Registrar " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Marca temporal do metadatum com senha" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "" + +#: src/actions.cpp:1549 +#, fuzzy +msgid "Adjusting" +msgstr "Configuração de matiz" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "" + +#: src/actions.cpp:1600 +#, fuzzy +msgid "Can't adjust timestamp by" +msgstr "Falhou ao analisar a marca temporal" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "" + +#: src/actions.cpp:2004 +#, fuzzy +msgid "Renaming file to" +msgstr "Taxa de repetição do Flash" + +#: src/actions.cpp:2006 +#, fuzzy +msgid "updating timestamp" +msgstr "Data da imagem" + +#: src/actions.cpp:2015 +#, fuzzy +msgid "Failed to rename" +msgstr "Falhou ao analisar a marca temporal" + +#: src/actions.cpp:2037 +#, fuzzy +msgid "Overwrite" +msgstr "Auto sobrescrita" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +#, fuzzy +msgid "On (1)" +msgstr "On (11-pontos)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +#, fuzzy +msgid "On (2)" +msgstr "Ligado (2 quadros)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +#, fuzzy +msgid "Adobe RGB" +msgstr "Etiqueta do Adobe DNG" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +#, fuzzy +msgid "Camera Settings" +msgstr "Tem ajuste" + +#: src/canonmn.cpp:383 +#, fuzzy +msgid "Various camera settings" +msgstr "Configuração de modo de foco" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +#, fuzzy +msgid "Focal Length" +msgstr "Lente focal" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +#, fuzzy +msgid "Shot Info" +msgstr "InformacaoDisparo" + +#: src/canonmn.cpp:386 +#, fuzzy +msgid "Shot information" +msgstr "Informação de captura" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +#, fuzzy +msgid "Panorama" +msgstr "Modo panorâmico" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +#, fuzzy +msgid "Image Type" +msgstr "Estilo de imagem" + +#: src/canonmn.cpp:388 +#, fuzzy +msgid "Image type" +msgstr "Estilo de imagem" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +#, fuzzy +msgid "Firmware Version" +msgstr "DSPFirmwareVersion" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +#, fuzzy +msgid "Firmware version" +msgstr "Versão da flash do firmware" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +#, fuzzy +msgid "File Number" +msgstr "Número-F" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +#, fuzzy +msgid "File number" +msgstr "Número-F" + +#: src/canonmn.cpp:391 +#, fuzzy +msgid "Owner Name" +msgstr "Nome do usuário final" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +#, fuzzy +msgid "Serial Number" +msgstr "Número de série" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +#, fuzzy +msgid "Camera serial number" +msgstr "Número de série da câmera." + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "InformacaoCamera" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "InformacaoCamera" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +#, fuzzy +msgid "Custom Functions" +msgstr "Função principal" + +#: src/canonmn.cpp:395 +#, fuzzy +msgid "ModelID" +msgstr "ID do modelo Sony" + +#: src/canonmn.cpp:395 +#, fuzzy +msgid "Model ID" +msgstr "ID do modelo Sony" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +#, fuzzy +msgid "Picture Info" +msgstr "Modo de imagem" + +#: src/canonmn.cpp:396 +#, fuzzy +msgid "Picture info" +msgstr "Imagem finalizada" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Miniatura/Mostrar imagem, Arquivo de multi-paginação" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Número de série" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Número de série" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF Info" +msgstr "InformacaoAF" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "Deslocamento de dado de decisão original" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "Deslocamento de dado de decisão original" + +#: src/canonmn.cpp:402 +#, fuzzy +msgid "White Balance Table" +msgstr "Valor de equilíbrio branco" + +#: src/canonmn.cpp:402 +#, fuzzy +msgid "White balance table" +msgstr "Azul equilíbrio de branco" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Modelo de lentes" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "Modelo de lente" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +#, fuzzy +msgid "Internal Serial Number" +msgstr "Número de série da lente" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +#, fuzzy +msgid "Internal serial number" +msgstr "Número de série da lente" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "Software de processamento" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "Software de processamento" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "EV2 medido" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "Natureza (cor)" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "Espaço de cor em vídeo" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "VRD Offset" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "VRD offset" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "InformacaoLente" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "Sensor de largura" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Cor do mapa" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "Cor do mapa" + +#: src/canonmn.cpp:417 +#, fuzzy +msgid "Unknown CanonMakerNote tag" +msgstr "Etiqueta desconhecida PanasonicMakerNote" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "" + +#: src/canonmn.cpp:439 +msgid "Movie (2)" +msgstr "" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +#, fuzzy +msgid "Auto" +msgstr "Auto HDR" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "" + +#: src/canonmn.cpp:448 +#, fuzzy +msgid "Slow sync" +msgstr "Ligado, baixa sincronização" + +#: src/canonmn.cpp:449 +#, fuzzy +msgid "Auto + red-eye" +msgstr "Auto, disparado" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +#, fuzzy +msgid "External" +msgstr "Flash Externo" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +#, fuzzy +msgid "Continuous" +msgstr "Baixo contínuo" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "" + +#: src/canonmn.cpp:460 +#, fuzzy +msgid "Continuous, speed priority" +msgstr "Prioridade de velocidade obturadora" + +#: src/canonmn.cpp:461 +#, fuzzy +msgid "Continuous, low" +msgstr "Baixo contínuo" + +#: src/canonmn.cpp:462 +#, fuzzy +msgid "Continuous, high" +msgstr "Alto contínuo" + +#: src/canonmn.cpp:467 +#, fuzzy +msgid "One shot AF" +msgstr "Iniciar olho AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +#, fuzzy +msgid "Manual focus" +msgstr "Foco manual" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +#, fuzzy +msgid "Single" +msgstr "Alvo único" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +#, fuzzy +msgid "Pan focus" +msgstr "Foco panorâmico" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +#, fuzzy +msgid "Manual" +msgstr "Flash manual" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +#, fuzzy +msgid "Landscape" +msgstr "Auto PICT (Paisagem)" + +#: src/canonmn.cpp:493 +#, fuzzy +msgid "Fast shutter" +msgstr "Obturador com AF" + +#: src/canonmn.cpp:494 +#, fuzzy +msgid "Slow shutter" +msgstr "Obturador de sorriso" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +#, fuzzy +msgid "Night Scene" +msgstr "Cena noturna" + +#: src/canonmn.cpp:496 +#, fuzzy +msgid "Gray scale" +msgstr "Sobre escala" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +#, fuzzy +msgid "Portrait" +msgstr "Retrato de crepúsculo" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +#, fuzzy +msgid "Neutral" +msgstr "Como um Tiro Neutro" + +#: src/canonmn.cpp:505 +#, fuzzy +msgid "Flash off" +msgstr "Modelo de luz" + +#: src/canonmn.cpp:506 +#, fuzzy +msgid "Long shutter" +msgstr "Trava do obturador de lentes" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +#, fuzzy +msgid "Fireworks" +msgstr "Pré-definir (Fogos de artifício?)" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +#, fuzzy +msgid "Underwater" +msgstr "Subaquática Largura2" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "" + +#: src/canonmn.cpp:515 +#, fuzzy +msgid "Night SnapShot" +msgstr "Ruptura noturna" + +#: src/canonmn.cpp:516 +#, fuzzy +msgid "Digital macro" +msgstr "Ganho digital" + +#: src/canonmn.cpp:517 +#, fuzzy +msgid "My Colors" +msgstr "Corantes" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +#, fuzzy +msgid "Low" +msgstr "Mais baixa" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +#, fuzzy +msgid "High" +msgstr "Mais alta" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "" + +#: src/canonmn.cpp:540 +#, fuzzy +msgid "Auto High" +msgstr "Auto HDR" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +#, fuzzy +msgid "Spot" +msgstr "Ponto AF" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +#, fuzzy +msgid "Center weighted" +msgstr "Centro com aumento de peso" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "" + +#: src/canonmn.cpp:572 +#, fuzzy +msgid "Very close" +msgstr "Muito suave" + +#: src/canonmn.cpp:573 +#, fuzzy +msgid "Close" +msgstr "Foco fechado" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "" + +#: src/canonmn.cpp:575 +#, fuzzy +msgid "Far range" +msgstr "Alcance do foco" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "" + +#: src/canonmn.cpp:585 +#, fuzzy +msgid "Auto-selected" +msgstr "SeleçãoDePontoAF" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +#, fuzzy +msgid "Right" +msgstr "Claro" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +#, fuzzy +msgid "Center" +msgstr "AF Centralizado" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +#, fuzzy +msgid "Left" +msgstr "Acima à esquerda" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "" + +#: src/canonmn.cpp:594 +#, fuzzy +msgid "Easy shooting (Auto)" +msgstr "Câmera no modo de disparo" + +#: src/canonmn.cpp:595 +#, fuzzy +msgid "Program (P)" +msgstr "Programa ISO" + +#: src/canonmn.cpp:596 +#, fuzzy +msgid "Shutter priority (Tv)" +msgstr "Prioridade do obturador" + +#: src/canonmn.cpp:597 +#, fuzzy +msgid "Aperture priority (Av)" +msgstr "Prioridade de abertura" + +#: src/canonmn.cpp:598 +#, fuzzy +msgid "Manual (M)" +msgstr "Flash manual" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +#, fuzzy +msgid "Did not fire" +msgstr "Auto, não disparar" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +#, fuzzy +msgid "Fired" +msgstr "Auto, disparado" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +#, fuzzy +msgid "External flash" +msgstr "Flash Externo" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +#, fuzzy +msgid "Internal flash" +msgstr "Flash Externo" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +#, fuzzy +msgid "Exposure compensation" +msgstr "Compensação de exposição CM" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "" + +#: src/canonmn.cpp:994 +#, fuzzy +msgid "AE lock + exposure compensation" +msgstr "Compensação de exposição CM" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +#, fuzzy +msgid "AF Point" +msgstr "Ponto cinza" + +#: src/canonmn.cpp:1016 +#, fuzzy +msgid "Smooth" +msgstr "Suave (B&W)" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +#, fuzzy +msgid "Custom" +msgstr "Personalizar 1-4" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +#, fuzzy +msgid "My color data" +msgstr "Balanço de cor vermelho" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +#, fuzzy +msgid "Full" +msgstr "Tamanho completo" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +#, fuzzy +msgid "Selftimer" +msgstr "Tempo do temporizador" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self timer" +msgstr "Tempo do temporizador" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +#, fuzzy +msgid "Quality" +msgstr "Qualidade JPEG" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +#, fuzzy +msgid "Flash Mode" +msgstr "Modelo de luz" + +#: src/canonmn.cpp:1045 +#, fuzzy +msgid "Flash mode setting" +msgstr "Configuração de modo flash" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +#, fuzzy +msgid "Drive Mode" +msgstr "Modo de disco 2" + +#: src/canonmn.cpp:1046 +#, fuzzy +msgid "Drive mode setting" +msgstr "Modo de disco 2" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +#, fuzzy +msgid "Focus Mode" +msgstr "Ajustar o modo de foco" + +#: src/canonmn.cpp:1048 +#, fuzzy +msgid "Focus mode setting" +msgstr "Configuração de modo de foco" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +#, fuzzy +msgid "Image Size" +msgstr "Tamanho de imagem completo" + +#: src/canonmn.cpp:1052 +#, fuzzy +msgid "Easy Mode" +msgstr "Modelo de luz" + +#: src/canonmn.cpp:1052 +#, fuzzy +msgid "Easy shooting mode" +msgstr "Câmera no modo de disparo" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +#, fuzzy +msgid "Digital Zoom" +msgstr "Razão de Zoom Digital." + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +#, fuzzy +msgid "Digital zoom" +msgstr "Razão de Zoom Digital." + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +#, fuzzy +msgid "Contrast" +msgstr "Contraste PM" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +#, fuzzy +msgid "Contrast setting" +msgstr "Detecção de contraste AF" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +#, fuzzy +msgid "Saturation" +msgstr "Saturação PM" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation setting" +msgstr "Configuração de saturação" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +#, fuzzy +msgid "Sharpness" +msgstr "Nitidiz PM" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness setting" +msgstr "Valor de nitidez" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +#, fuzzy +msgid "ISO Speed Mode" +msgstr "Velocidade do ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +#, fuzzy +msgid "ISO speed setting" +msgstr "Configuração do ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +#, fuzzy +msgid "Metering Mode" +msgstr "ModoMedicao" + +#: src/canonmn.cpp:1058 +#, fuzzy +msgid "Metering mode setting" +msgstr "ModoMedicao" + +#: src/canonmn.cpp:1059 +#, fuzzy +msgid "Focus Type" +msgstr "Tipo de luz" + +#: src/canonmn.cpp:1059 +#, fuzzy +msgid "Focus type setting" +msgstr "Configuração de modo de foco" + +#: src/canonmn.cpp:1060 +#, fuzzy +msgid "AF point selected" +msgstr "SeleçãoDePontoAF" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +#, fuzzy +msgid "Exposure Program" +msgstr "Exibir transformação" + +#: src/canonmn.cpp:1061 +#, fuzzy +msgid "Exposure mode setting" +msgstr "Configuração de modo de foco" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type" +msgstr "Modelo de lentes" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +#, fuzzy +msgid "Lens type" +msgstr "Modelo de lentes" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +#, fuzzy +msgid "Lens" +msgstr "InformacaoLente" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Focal curto" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Focal curto" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "Unidades de corte" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "Lente focal" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +#, fuzzy +msgid "Max Aperture" +msgstr "Abertura automática" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +#, fuzzy +msgid "Max aperture" +msgstr "Máximo valor da abertura" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min Aperture" +msgstr "Abertura automática" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min aperture" +msgstr "Abertura automática" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash Activity" +msgstr "Intensidade do Flash" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash activity" +msgstr "Intensidade do Flash" + +#: src/canonmn.cpp:1070 +#, fuzzy +msgid "Flash Details" +msgstr "Modelo de luz" + +#: src/canonmn.cpp:1070 +#, fuzzy +msgid "Flash details" +msgstr "Modelo de luz" + +#: src/canonmn.cpp:1073 +#, fuzzy +msgid "Focus Continuous" +msgstr "Ligado (Contínuo)" + +#: src/canonmn.cpp:1073 +#, fuzzy +msgid "Focus continuous setting" +msgstr "Configuração de modo de foco" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AESetting" +msgstr "Configuração do ISO" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AE setting" +msgstr "Configuração de matiz" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +#, fuzzy +msgid "Image Stabilization" +msgstr "Tom da imagem" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +#, fuzzy +msgid "Image stabilization" +msgstr "Configuração de tamanho de imagens" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display Aperture" +msgstr "Abertura automática" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom Source Width" +msgstr "Sensor de largura" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom source width" +msgstr "Sensor de largura" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "Modo de medição de ponto" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "Modo de medição de ponto" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Saída de flash manual" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "Saída de flash manual" + +#: src/canonmn.cpp:1083 +#, fuzzy +msgid "Color Tone" +msgstr "Temporizador de cor PB" + +#: src/canonmn.cpp:1083 +#, fuzzy +msgid "Color tone" +msgstr "Rótulo da cor" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "Tom de qualidade SRAW" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "Qualidade SRAW" + +#: src/canonmn.cpp:1086 +#, fuzzy +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Configuração desconhecida para a câmera Sony A100 tag" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +#, fuzzy +msgid "Daylight" +msgstr "Auto(LuzDiurna)" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +#, fuzzy +msgid "Cloudy" +msgstr "Auto (Nublado)" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +#, fuzzy +msgid "Tungsten" +msgstr "Auto (Tungstênio)" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +#, fuzzy +msgid "Fluorescent" +msgstr "FluorescenciaBranca" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +#, fuzzy +msgid "Black & White" +msgstr "Branco e Preto de Referência" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "" + +#: src/canonmn.cpp:1109 +#, fuzzy +msgid "Daylight Fluorescent" +msgstr "FluorescenciaLuzDiurna" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +#, fuzzy +msgid "Custom 1" +msgstr "Personalizar 1-4" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +#, fuzzy +msgid "Custom 2" +msgstr "Personalizar 1-4" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +#, fuzzy +msgid "Custom 3" +msgstr "Personalizar 1-4" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Prioridade do obturador" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +#, fuzzy +msgid "left" +msgstr "Cortar à direita" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +#, fuzzy +msgid "center" +msgstr "Superior-centralizado" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +#, fuzzy +msgid "right" +msgstr "Claro" + +#: src/canonmn.cpp:1151 +#, fuzzy +msgid "ISO Speed Used" +msgstr "Velocidade do ISO" + +#: src/canonmn.cpp:1151 +#, fuzzy +msgid "ISO speed used" +msgstr "Velocidade do ISO" + +#: src/canonmn.cpp:1152 +#, fuzzy +msgid "Measured EV" +msgstr "EV2 medido" + +#: src/canonmn.cpp:1153 +#, fuzzy +msgid "Target Aperture" +msgstr "Abertura automática" + +#: src/canonmn.cpp:1154 +#, fuzzy +msgid "Target Shutter Speed" +msgstr "Velocidade do Obturador" + +#: src/canonmn.cpp:1154 +#, fuzzy +msgid "Target shutter speed" +msgstr "Velocidade do Obturador" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +#, fuzzy +msgid "White Balance" +msgstr "EquilíbrioDeBranco" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +#, fuzzy +msgid "White balance setting" +msgstr "Configuração do branco" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "" + +#: src/canonmn.cpp:1158 +#, fuzzy +msgid "Sequence number (if in a continuous burst)" +msgstr "Número de capturas no modo de explosão contínua" + +#: src/canonmn.cpp:1163 +#, fuzzy +msgid "AF Point Used" +msgstr "SeleçãoDePontoAF" + +#: src/canonmn.cpp:1163 +#, fuzzy +msgid "AF point used" +msgstr "Ponto em foco AF" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +#, fuzzy +msgid "Flash Bias" +msgstr "FlashBias" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +#, fuzzy +msgid "Subject Distance" +msgstr "Faixa de distância do assunto" + +#: src/canonmn.cpp:1168 +#, fuzzy +msgid "Subject distance (units are not clear)" +msgstr "Faixa de distância do assunto" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +#, fuzzy +msgid "Aperture Value" +msgstr "Máximo valor da abertura" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +#, fuzzy +msgid "Shutter Speed Value" +msgstr "Velocidade do Obturador" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +#, fuzzy +msgid "Shutter speed" +msgstr "Velocidade do Obturador" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "EV2 medido" + +#: src/canonmn.cpp:1177 +#, fuzzy +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Etiqueta de ajuste 2 da câmera Sony1 desconhecida" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +#, fuzzy +msgid "Left to right" +msgstr "Esquerdo (horizontal)" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +#, fuzzy +msgid "Right to left" +msgstr "Tom de luz" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +#, fuzzy +msgid "Top to bottom" +msgstr "A Parte de Baixo do Corte" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "" + +#: src/canonmn.cpp:1196 +#, fuzzy +msgid "Panorama Frame" +msgstr "Modo panorâmico" + +#: src/canonmn.cpp:1196 +#, fuzzy +msgid "Panorama frame number" +msgstr "Modo panorâmico" + +#: src/canonmn.cpp:1197 +#, fuzzy +msgid "Panorama Direction" +msgstr "Direção de imagem do GPS" + +#: src/canonmn.cpp:1197 +#, fuzzy +msgid "Panorama direction" +msgstr "Modo panorâmico" + +#: src/canonmn.cpp:1199 +#, fuzzy +msgid "Unknown Canon Panorama tag" +msgstr "Arquivo de etiqueta de informação desconhecido" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +#, fuzzy +msgid "Noise Reduction" +msgstr "Redução de Ruído de Cor" + +#: src/canonmn.cpp:1209 +#, fuzzy +msgid "Long exposure noise reduction" +msgstr "Redução de ruído de longa exposição" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter Ae Lock" +msgstr "Trava do obturador de cartão" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter/AE lock buttons" +msgstr "Contagem do obturador" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +#, fuzzy +msgid "AF Assist" +msgstr "Assistente AF" + +#: src/canonmn.cpp:1213 +#, fuzzy +msgid "AF assist light" +msgstr "Assistente AF" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Flash Sync Speed Av" +msgstr "Velocidade de Flash X-Sync AE" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Shutter speed in Av mode" +msgstr "Velocidade do Obturador" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "Contagem do obturador 1" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "Contagem do obturador" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +#, fuzzy +msgid "Sensor Cleaning" +msgstr "Sensor de altura" + +#: src/canonmn.cpp:1221 +#, fuzzy +msgid "Sensor cleaning" +msgstr "Sensor de altura" + +#: src/canonmn.cpp:1222 +#, fuzzy +msgid "Superimposed Display" +msgstr "Gravar exibição" + +#: src/canonmn.cpp:1222 +#, fuzzy +msgid "Superimposed display" +msgstr "Gravar exibição" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +#, fuzzy +msgid "Unknown Canon Custom Function tag" +msgstr "Arquivo de etiqueta de informação desconhecido" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "" + +#: src/canonmn.cpp:1248 +#, fuzzy +msgid "upper-right" +msgstr "Direitos autorais" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "" + +#: src/canonmn.cpp:1253 +#, fuzzy +msgid "lower-right" +msgstr "Direitos autorais" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +#, fuzzy +msgid "Image Width" +msgstr "Largura informada da imagem" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +#, fuzzy +msgid "Image width" +msgstr "Largura informada da imagem" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +#, fuzzy +msgid "Image Height" +msgstr "Altura da imagem de multi-explosão" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +#, fuzzy +msgid "Image height" +msgstr "Sensor de altura" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +#, fuzzy +msgid "AF Points Used" +msgstr "SeleçãoDePontoAF" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +#, fuzzy +msgid "AF points used" +msgstr "Ponto em foco AF" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "" + +#: src/canonmn.cpp:1266 +#, fuzzy +msgid "Unknown Canon Picture Info tag" +msgstr "Arquivo de etiqueta de informação desconhecido" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "" + +#: src/canonmn.cpp:1280 +#, fuzzy +msgid "WB" +msgstr "B" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "" + +#: src/canonmn.cpp:1310 +#, fuzzy +msgid "On (shift GM)" +msgstr "WB desloca GM" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +#, fuzzy +msgid "Red" +msgstr "Hue vermelho." + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +#, fuzzy +msgid "Green" +msgstr "Hue Verde" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +#, fuzzy +msgid "Blue" +msgstr "Hue azul." + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Modo explosão" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Ajustar potenciador" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "Qualidade JPEG" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Borda de parênteses automático" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "Valor de equilíbrio branco" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "Valor de equilíbrio branco" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect" +msgstr "Gravando deslocamento" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "Macro ampliação" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "Macro ampliação" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "Captura de visualização ao vivo" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "Captura de visualização ao vivo" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Passo proximo ao foco" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Passo proximo ao foco" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "Bloquear exposição de flash" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "Bloquear exposição de flash" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Arquivo de etiqueta de informação desconhecido" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +#, fuzzy +msgid "Standard" +msgstr "Padrão " + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "Mais baixa" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "Mais alta" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "Saturação PM" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "Saturação PM" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "Def. de usuário 1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "Def. de usuário 2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "Def. de usuário 3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +#, fuzzy +msgid "Monochrome" +msgstr "Imagem monocromárica IT8" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Bom tempo" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "CurvaDeTom" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Curva de tom" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "FrequênciaDeNitidez" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "Frequência de nitidez" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "NívelDeSensorVermelho" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "Nível de sensor vermelho" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "NívelDeSensorAzul" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "Nível de sensor azul" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "VermelhoEquilíbrioDeBranco" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "Vermelho equilíbrio de branco" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "AzulEquilíbrioDeBranco" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "Azul equilíbrio de branco" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "EquilíbrioDeBranco" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Temperatura de cor" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +#, fuzzy +msgid "Color Temperature" +msgstr "Temperatura de cor" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "EstiloDeImagem" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Estilo de imagem" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "GanhoDigital" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "Ganho digital" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShiftAB" +msgstr "WB desloca GM" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "WB desloca GM" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WBShiftGM" +msgstr "WB desloca GM" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "WB desloca GM" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Arquivo de etiqueta de informação desconhecido" + +#: src/crwimage.cpp:656 +#, fuzzy +msgid "Header, offset" +msgstr "Deslocamento de área da imagem" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "" + +#: src/crwimage.cpp:679 +#, fuzzy +msgid "size" +msgstr "Tamanho completo" + +#: src/crwimage.cpp:680 +#, fuzzy +msgid "offset" +msgstr "VRD offset" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "" + +#: src/datasets.cpp:85 +#, fuzzy +msgid "Model Version" +msgstr "Versão do MakerNote" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +#, fuzzy +msgid "Destination" +msgstr "DST de destino" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +#, fuzzy +msgid "File Format" +msgstr "Formato da amostra" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" + +#: src/datasets.cpp:101 +#, fuzzy +msgid "File Version" +msgstr "Visualizar versão" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Um numéro binário representando a versão específica do Formato de Arquivo " +"especificada pela etiqueta ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "" + +#: src/datasets.cpp:106 +#, fuzzy +msgid "Identifies the provider and product" +msgstr "Identifica o tipo de imagem entregue." + +#: src/datasets.cpp:108 +#, fuzzy +msgid "Envelope Number" +msgstr "FNúmero manual" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Os carácteres formam um número que será unico para a data especificada na " +"etiqueta e para o Identificador de Serviços especificado pela " +"etiqueta . Se aparecem número idênticos de envelopes com " +"a mesma data e o mesmo Identificador de Serviços, os registros 2 à 9 deverão " +"continuar sem alguma mudança em comparação ao original. Isso não tem como " +"intenção ser um número de série sequencial." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +#, fuzzy +msgid "Envelope Priority" +msgstr "Prioridade de abertura" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +#, fuzzy +msgid "Time Sent" +msgstr "Assinatura do tempo" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Esta etiqueta fornecer uma identificação exclusiva para os objetos, conforme " +"especificado no IIM, independente do provedor e para qualquer formato de " +"mídia. O provedor deve garantir a peculiaridade do UNO. Objetos com o mesmo " +"UNO são idênticos." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +#, fuzzy +msgid "ARM Version" +msgstr "Versão PLUS" + +#: src/datasets.cpp:157 +#, fuzzy +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Um numéro binário representando a versão específica do Formato de Arquivo " +"especificada pela etiqueta ." + +#: src/datasets.cpp:170 +#, fuzzy +msgid "Record Version" +msgstr "Versão da informação primária" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +#, fuzzy +msgid "Object Type" +msgstr "Ãrea do assunto" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +#, fuzzy +msgid "Object Attribute" +msgstr "Ãrea do assunto" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +#, fuzzy +msgid "Object Name" +msgstr "Ãrea do assunto" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +#, fuzzy +msgid "Edit Status" +msgstr "Status" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Especifica a urgência editorial do conteúdo e não necessariamente o envelope " +"de tratamento prioritário(veja a etiqueta ).O \"1\" é mais " +"urgente, \"5\" normal \"e\" 8 \"representa o exemplar menos urgentes." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +#, fuzzy +msgid "Subject" +msgstr "Ãrea do assunto" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +#, fuzzy +msgid "Supplemental Category" +msgstr "Categoria suplementar." + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +#, fuzzy +msgid "Supplemental Categories" +msgstr "Categoria suplementar." + +#: src/datasets.cpp:229 +#, fuzzy +msgid "Fixture Id" +msgstr "Modo de imagem" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +#, fuzzy +msgid "Keywords" +msgstr "Palavras-chaves." + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +#, fuzzy +msgid "Location Code" +msgstr "Localização criada" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +#, fuzzy +msgid "Location Name" +msgstr "Nome da Localização-país" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +#, fuzzy +msgid "Release Date" +msgstr "Modo de lançamento" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +#, fuzzy +msgid "Release Time" +msgstr "Modo de lançamento" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +#, fuzzy +msgid "Expiration Date" +msgstr "Primeira data de publicação" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +#, fuzzy +msgid "Special Instructions" +msgstr "Instruções especiais." + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +#, fuzzy +msgid "Instructions" +msgstr "Instruções especiais." + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +#, fuzzy +msgid "Reference Service" +msgstr "Branco e Preto de Referência" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +#, fuzzy +msgid "Reference Date" +msgstr "Branco e Preto de Referência" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +#, fuzzy +msgid "Reference Number" +msgstr "Trabalho de referência" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +#, fuzzy +msgid "Date Created" +msgstr "Localização criada" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +#, fuzzy +msgid "Time Created" +msgstr "Localização criada" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +#, fuzzy +msgid "Digitization Date" +msgstr "Primeira data de publicação" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +#, fuzzy +msgid "Digitization Time" +msgstr "DST de destino" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +#, fuzzy +msgid "Program" +msgstr "Programa ISO" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +#, fuzzy +msgid "Program Version" +msgstr "Visualizar versão" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +#, fuzzy +msgid "By-line" +msgstr "Título por linha." + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +#, fuzzy +msgid "Author" +msgstr "Janelas de Autor" + +#: src/datasets.cpp:324 +#, fuzzy +msgid "By-line Title" +msgstr "Título por linha." + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +#, fuzzy +msgid "City" +msgstr "Cidade." + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +#, fuzzy +msgid "Sub Location" +msgstr "Localização do Assunto" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +#, fuzzy +msgid "Province State" +msgstr "Província/Estado" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +#, fuzzy +msgid "State/Province" +msgstr "Contato Info-Estado/Província" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +#, fuzzy +msgid "Country Code" +msgstr "Código-ISO da Localização-país" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +#, fuzzy +msgid "Country Name" +msgstr "Nome da Localização-país" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +#, fuzzy +msgid "Country" +msgstr "País do do licenciante" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +#, fuzzy +msgid "Transmission Reference" +msgstr "Referência original de transmissão." + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +#, fuzzy +msgid "Headline" +msgstr "Manchete." + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +#, fuzzy +msgid "Credit" +msgstr "Crédito." + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +#, fuzzy +msgid "Source" +msgstr "Fonte." + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +#, fuzzy +msgid "Copyright Notice" +msgstr "Direitos autorais" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +#, fuzzy +msgid "Contact" +msgstr "Contraste PM" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +#, fuzzy +msgid "Caption" +msgstr "Redator de legendas." + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +#, fuzzy +msgid "Description" +msgstr "DST de destino" + +#: src/datasets.cpp:388 +#, fuzzy +msgid "Writer" +msgstr "Redator de legendas." + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "" + +#: src/datasets.cpp:399 +#, fuzzy +msgid "Image Orientation" +msgstr "Criador da imagem" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +#, fuzzy +msgid "Audio Type" +msgstr "Tipo de amostra de áudio" + +#: src/datasets.cpp:409 +#, fuzzy +msgid "Indicates the type of an audio content." +msgstr "Identifica o tipo de imagem entregue." + +#: src/datasets.cpp:411 +#, fuzzy +msgid "Audio Rate" +msgstr "Taxa de amostra de áudio" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "" + +#: src/datasets.cpp:414 +#, fuzzy +msgid "Audio Resolution" +msgstr "Resolução em x" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "" + +#: src/datasets.cpp:417 +#, fuzzy +msgid "Audio Duration" +msgstr "Gradação automática" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "" + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +#, fuzzy +msgid "Preview Format" +msgstr "Previsão da imagem" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Visualizar versão" + +#: src/datasets.cpp:430 +#, fuzzy +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Um numéro binário representando a versão específica do Formato de Arquivo " +"especificada pela etiqueta ." + +#: src/datasets.cpp:433 +#, fuzzy +msgid "Preview Data" +msgstr "Visualizar" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +#, fuzzy +msgid "Unknown dataset" +msgstr "Etiqueta PanasonicRaw desconhecido" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "" + +#: src/error.cpp:56 +msgid "Success" +msgstr "" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "" + +#: src/error.cpp:60 +#, fuzzy +msgid "Invalid dataset name `%1'" +msgstr "Nome ou etiqueta inválida ifdId `%1', ifdId %2" + +#: src/error.cpp:61 +#, fuzzy +msgid "Invalid record name `%1'" +msgstr "Número de pré-visualização inválido" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Nome ou etiqueta inválida ifdId `%1', ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "" + +#: src/error.cpp:70 +#, fuzzy +msgid "Failed to read image data" +msgstr "Falhou ao analisar a marca temporal" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "" + +#: src/error.cpp:76 +#, fuzzy +msgid "Failed to read input data" +msgstr "Falhou ao analisar a marca temporal" + +#: src/error.cpp:77 +#, fuzzy +msgid "Failed to write image" +msgstr "Falhou ao analisar a marca temporal" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:82 +#, fuzzy +msgid "Offset out of range" +msgstr "Fora de alcance" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "" + +#: src/error.cpp:84 +#, fuzzy +msgid "Invalid charset: `%1'" +msgstr "Argumento inválido" + +#: src/error.cpp:85 +#, fuzzy +msgid "Unsupported date format" +msgstr "Formato de dados indefinidos" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +#, fuzzy +msgid "Invalid XmpText type `%1'" +msgstr "%1 tem valor XMP inválido tipo `%2'" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Múltiplas matrizes TIFF de elemento: etiqueta %1 em um diretório" + +#: src/error.cpp:107 +#, fuzzy +msgid "TIFF array element tag %1 has wrong type" +msgstr "Múltiplas matrizes TIFF de elemento: etiqueta %1 em um diretório" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 tem valor XMP inválido tipo `%2'" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr "" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr "" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +#, fuzzy +msgid "" +"\n" +"Options:\n" +msgstr "Opções T4" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr "" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr "" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +#, fuzzy +msgid " -b Show large binary values.\n" +msgstr " -u Mostra etiqueta desconhecidos.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Mostra etiqueta desconhecidos.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g key Somente informação de saída para essa chave (grep).\n" + +#: src/exiv2.cpp:271 +#, fuzzy +msgid " -K key Only output info for this key (exact match).\n" +msgstr " -g key Somente informação de saída para essa chave (grep).\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n enc Conjunto de caracteres usado para decodificar comentários do " +"usuário em UNICODE Exif.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr "" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr "" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" + +#: src/exiv2.cpp:285 +#, fuzzy +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " x: imprimir a coluna com etiqueta de número\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" + +#: src/exiv2.cpp:290 +#, fuzzy +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr "" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +#, fuzzy +msgid " c : JPEG comment\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:293 +#, fuzzy +msgid " p : list available previews\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " x: imprimir a coluna com etiqueta de número\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs Imprime as etiqueta para controle fino da lista de etiquetas " +"('print' action):\n" + +#: src/exiv2.cpp:297 +#, fuzzy +msgid " E : include Exif tags in the list\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:298 +#, fuzzy +msgid " I : IPTC datasets\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:299 +#, fuzzy +msgid " X : XMP properties\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x: imprimir a coluna com etiqueta de número\n" + +#: src/exiv2.cpp:301 +#, fuzzy +msgid " g : group name\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:302 +#, fuzzy +msgid " k : key\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:303 +#, fuzzy +msgid " l : tag label\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:305 +#, fuzzy +msgid " y : type\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr "" + +#: src/exiv2.cpp:307 +#, fuzzy +msgid " s : size in bytes\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:308 +#, fuzzy +msgid " v : plain data value\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:309 +#, fuzzy +msgid " t : interpreted (translated) data\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:310 +#, fuzzy +msgid " h : hexdump of the data\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:313 +#, fuzzy +msgid " e : Exif section\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:314 +#, fuzzy +msgid " t : Exif thumbnail only\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:315 +#, fuzzy +msgid " i : IPTC data\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:316 +#, fuzzy +msgid " x : XMP packet\n" +msgstr " n : nome da etiqueta\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr "" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr "" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr "" + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr "" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +#, fuzzy +msgid "Option" +msgstr "Opções T4" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "Argumento inválido" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Argumento inválido" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "" + +#: src/exiv2.cpp:535 +#, fuzzy +msgid "option argument" +msgstr "Argumento inválido" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "" + +#: src/exiv2.cpp:1039 +#, fuzzy +msgid "target" +msgstr "Todos os alvos" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Número de pré-visualização inválido" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "" + +#: src/exiv2.cpp:1110 +#, fuzzy +msgid "line" +msgstr "Manchete." + +#: src/exiv2.cpp:1133 +#, fuzzy +msgid "-M option" +msgstr "Opções T4" + +#: src/exiv2.cpp:1180 +msgid "Invalid command line:" +msgstr "" + +#: src/exiv2.cpp:1187 +#, fuzzy +msgid "Invalid command" +msgstr "Argumento inválido" + +#: src/exiv2.cpp:1219 +#, fuzzy +msgid "Invalid key" +msgstr "Argumento inválido" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "" + +#: src/fujimn.cpp:62 +#, fuzzy +msgid "Soft mode 1" +msgstr "Modo Spot Ativado" + +#: src/fujimn.cpp:63 +#, fuzzy +msgid "Soft mode 2" +msgstr "Modo Spot Ativado" + +#: src/fujimn.cpp:65 +#, fuzzy +msgid "Hard mode 1" +msgstr "Modo de disco 2" + +#: src/fujimn.cpp:66 +#, fuzzy +msgid "Hard mode 2" +msgstr "Modo de disco 2" + +#: src/fujimn.cpp:74 +#, fuzzy +msgid "Fluorescent (daylight)" +msgstr "Auto(LuzDiurna)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +#, fuzzy +msgid "Incandescent" +msgstr "Tungstênio (incandescente)" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +#, fuzzy +msgid "Red-eye reduction" +msgstr "Não, redução de olhos-vermelhos" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +#, fuzzy +msgid "Night scene" +msgstr "Cena noturna" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +#, fuzzy +msgid "Program AE" +msgstr "Programa ISO" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "" + +#: src/fujimn.cpp:122 +#, fuzzy +msgid "Anti-blur" +msgstr "Anti-borrão" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "" + +#: src/fujimn.cpp:128 +#, fuzzy +msgid "Natural light & flash" +msgstr "Flash manual" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +#, fuzzy +msgid "Aperture-priority AE" +msgstr "Prioridade de abertura" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +#, fuzzy +msgid "Shutter speed priority AE" +msgstr "Prioridade de velocidade obturadora" + +#: src/fujimn.cpp:142 +#, fuzzy +msgid "No flash & flash" +msgstr "Sinalizadores de flash externo" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "" + +#: src/fujimn.cpp:160 +#, fuzzy +msgid "F0/Standard" +msgstr "Padrão " + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "" + +#: src/fujimn.cpp:171 +#, fuzzy +msgid "Standard (100%)" +msgstr "Padrão " + +#: src/fujimn.cpp:172 +#, fuzzy +msgid "Wide mode 1 (230%)" +msgstr "Modo de disco 2" + +#: src/fujimn.cpp:173 +#, fuzzy +msgid "Wide mode 2 (400%)" +msgstr "Modo de disco 2" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +#, fuzzy +msgid "Version" +msgstr "ID da versão" + +#: src/fujimn.cpp:180 +#, fuzzy +msgid "Fujifilm Makernote version" +msgstr "Versão do MakerNote" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +#, fuzzy +msgid "Image quality setting" +msgstr "Configuração de qualidade de imagem" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +#, fuzzy +msgid "Color" +msgstr "InformacaoCor" + +#: src/fujimn.cpp:196 +#, fuzzy +msgid "Chroma saturation setting" +msgstr "Configuração de saturação" + +#: src/fujimn.cpp:198 +#, fuzzy +msgid "Tone" +msgstr "CurvaDeTom" + +#: src/fujimn.cpp:202 +#, fuzzy +msgid "Flash firing mode setting" +msgstr "Configuração de modo flash" + +#: src/fujimn.cpp:204 +#, fuzzy +msgid "Flash Strength" +msgstr "Intensidade do Flash manual" + +#: src/fujimn.cpp:205 +#, fuzzy +msgid "Flash firing strength compensation setting" +msgstr "Configurando compensação à exposição de Luz" + +#: src/fujimn.cpp:208 +#, fuzzy +msgid "Macro mode setting" +msgstr "Configuração de modo flash" + +#: src/fujimn.cpp:211 +#, fuzzy +msgid "Focusing mode setting" +msgstr "Configuração de modo de foco" + +#: src/fujimn.cpp:216 +#, fuzzy +msgid "Slow Sync" +msgstr "Ligado, baixa sincronização" + +#: src/fujimn.cpp:217 +#, fuzzy +msgid "Slow synchro mode setting" +msgstr "Configuração de modo flash" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +#, fuzzy +msgid "Picture Mode" +msgstr "Modo de imagem" + +#: src/fujimn.cpp:220 +#, fuzzy +msgid "Picture mode setting" +msgstr "Modo de saturação da imagem" + +#: src/fujimn.cpp:226 +#, fuzzy +msgid "Continuous shooting or auto bracketing setting" +msgstr "Suporte contínuo" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +#, fuzzy +msgid "Sequence Number" +msgstr "Número de série da lente" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +#, fuzzy +msgid "Sequence number" +msgstr "Número de série da lente" + +#: src/fujimn.cpp:234 +#, fuzzy +msgid "FinePix Color" +msgstr "Cor Plana CFA" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "" + +#: src/fujimn.cpp:240 +#, fuzzy +msgid "Focus Warning" +msgstr "Distância do foco" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "" + +#: src/fujimn.cpp:243 +#, fuzzy +msgid "Exposure Warning" +msgstr "Exibir transformação" + +#: src/fujimn.cpp:244 +#, fuzzy +msgid "Auto exposure warning status" +msgstr "Capturas de multi-exposição" + +#: src/fujimn.cpp:246 +#, fuzzy +msgid "Dynamic Range" +msgstr "Otimizar a escala dinâmica" + +#: src/fujimn.cpp:247 +#, fuzzy +msgid "Dynamic range" +msgstr "Expansão de amplitude dinâmica" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +#, fuzzy +msgid "Film Mode" +msgstr "Modelo de luz" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +#, fuzzy +msgid "Film mode" +msgstr "Flash Model" + +#: src/fujimn.cpp:252 +#, fuzzy +msgid "Dynamic Range Setting" +msgstr "Configurações do otimizador de faixa dinâmico" + +#: src/fujimn.cpp:253 +#, fuzzy +msgid "Dynamic range settings" +msgstr "Expansão de amplitude dinâmica" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:256 +#, fuzzy +msgid "Development dynamic range" +msgstr "Segunda Versão de Desenvolvimento Bruta" + +#: src/fujimn.cpp:258 +#, fuzzy +msgid "Minimum Focal Length" +msgstr "Lente focal" + +#: src/fujimn.cpp:259 +#, fuzzy +msgid "Minimum focal length" +msgstr "Comprimento do foco do Flash" + +#: src/fujimn.cpp:261 +#, fuzzy +msgid "Maximum Focal Length" +msgstr "Comprimento do foco do Flash" + +#: src/fujimn.cpp:262 +#, fuzzy +msgid "Maximum focal length" +msgstr "Comprimento do foco do Flash" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Abertura máxima em focal atual" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Abertura máxima em focal atual" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Abertura máxima em focal atual" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Abertura máxima em focal atual" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +#, fuzzy +msgid "File Source" +msgstr "Fonte." + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "" + +#: src/fujimn.cpp:273 +#, fuzzy +msgid "Order Number" +msgstr "Número de série" + +#: src/fujimn.cpp:274 +#, fuzzy +msgid "Order number" +msgstr "Número de série da lente" + +#: src/fujimn.cpp:276 +#, fuzzy +msgid "Frame Number" +msgstr "Número-F" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +#, fuzzy +msgid "Frame number" +msgstr "Número de série da lente" + +#: src/fujimn.cpp:281 +#, fuzzy +msgid "Unknown FujiMakerNote tag" +msgstr "Etiqueta SigmaMakerNote desconhecida" + +#: src/minoltamn.cpp:56 +#, fuzzy +msgid "Natural Color" +msgstr "Natureza (cor)" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +#, fuzzy +msgid "Vivid Color" +msgstr "Espaço de cor em vídeo" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +#, fuzzy +msgid "Solarization" +msgstr "Sem cor" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "" + +#: src/minoltamn.cpp:67 +#, fuzzy +msgid "Evening" +msgstr "Cena à noite" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +#, fuzzy +msgid "Night Portrait" +msgstr "Retrato de crepúsculo" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +#, fuzzy +msgid "Extra Fine" +msgstr "Amostras adicionais" + +#: src/minoltamn.cpp:90 +#, fuzzy +msgid "Makernote Version" +msgstr "Versão do MakerNote" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "String 'MLT0' (não terminada em nulo)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" + +#: src/minoltamn.cpp:96 +#, fuzzy +msgid "Camera Settings (Std New)" +msgstr "Câmera no modo de disparo" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" + +#: src/minoltamn.cpp:99 +#, fuzzy +msgid "Camera Settings (7D)" +msgstr "Tem ajuste" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "" + +#: src/minoltamn.cpp:102 +#, fuzzy +msgid "Image Stabilization Data" +msgstr "Restrições de duplicação de imagem" + +#: src/minoltamn.cpp:103 +#, fuzzy +msgid "Image stabilization data" +msgstr "Restrições de duplicação de imagem" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +#, fuzzy +msgid "Compressed Image Size" +msgstr "Tamanho da imagem visualizada" + +#: src/minoltamn.cpp:112 +#, fuzzy +msgid "Compressed image size" +msgstr "Tamanho da imagem visualizada" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +#, fuzzy +msgid "Thumbnail Offset" +msgstr "Endereço do bloco de imagem" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +#, fuzzy +msgid "Thumbnail Length" +msgstr "Estrutura de miniaturas" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +#, fuzzy +msgid "Scene Mode" +msgstr "Ãrea de cena" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +#, fuzzy +msgid "Color Mode" +msgstr "Cor do mapa" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#, fuzzy +msgid "Color mode" +msgstr "Rótulo da cor" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +#, fuzzy +msgid "Image Quality" +msgstr "Configuração de qualidade de imagem" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +#, fuzzy +msgid "Flash Exposure Compensation" +msgstr "Compensação de exposição CM" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +#, fuzzy +msgid "Flash exposure compensation in EV" +msgstr "Configurando compensação à exposição de Luz" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Modelo Teleconversor" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +#, fuzzy +msgid "Zone Matching" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:154 +#, fuzzy +msgid "Zone matching" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +#, fuzzy +msgid "Color temperature" +msgstr "Temperatura de cor" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +#, fuzzy +msgid "Lens ID" +msgstr "InformacaoLente" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "Temperatura da cor/filtro de cor" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +#, fuzzy +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "Filtro de compensação de cor: negativo é verde, positivo é magenta" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Valor de equilíbrio branco" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Valor de equilíbrio branco" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:173 +#, fuzzy +msgid "Camera Settings (5D)" +msgstr "Tem ajuste" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +#, fuzzy +msgid "PrintIM information" +msgstr "Informações do GPS" + +#: src/minoltamn.cpp:183 +#, fuzzy +msgid "Camera Settings (Z1)" +msgstr "Tem ajuste" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "" + +#: src/minoltamn.cpp:188 +#, fuzzy +msgid "Unknown Minolta MakerNote tag" +msgstr "Etiqueta MarcadorNotasPentax desconhecido" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +#, fuzzy +msgid "Aperture priority" +msgstr "Prioridade de abertura" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Prioridade do obturador" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +#, fuzzy +msgid "Fill flash" +msgstr "Luz de preenchimento" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +#, fuzzy +msgid "Rear flash sync" +msgstr "Contagem de repetição do Flash" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "" + +#: src/minoltamn.cpp:224 +#, fuzzy +msgid "Fluorescent 2" +msgstr "FluorescenciaBranca" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Tamanho completo" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "" + +#: src/minoltamn.cpp:247 +#, fuzzy +msgid "Extra fine" +msgstr "Amostras adicionais" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "Alvo único" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +#, fuzzy +msgid "Self-timer" +msgstr "Tempo do temporizador" + +#: src/minoltamn.cpp:255 +#, fuzzy +msgid "Bracketing" +msgstr "AutoParentizacao" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "" + +#: src/minoltamn.cpp:257 +#, fuzzy +msgid "UHS continuous" +msgstr "Auto, contínuo" + +#: src/minoltamn.cpp:258 +#, fuzzy +msgid "HS continuous" +msgstr "Auto, contínuo" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +#, fuzzy +msgid "Multi-segment" +msgstr "Multi segmento" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +#, fuzzy +msgid "Center weighted average" +msgstr "Centro com aumento de peso" + +#: src/minoltamn.cpp:271 +#, fuzzy +msgid "Electronic magnification" +msgstr "Macro ampliação" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +#, fuzzy +msgid "Top-right" +msgstr "Acima à direita" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +#, fuzzy +msgid "Bottom-right" +msgstr "Abaixo à direita" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +#, fuzzy +msgid "Bottom" +msgstr "Abaixo à esquerda" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +#, fuzzy +msgid "Bottom-left" +msgstr "Abaixo à esquerda" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +#, fuzzy +msgid "Top-left" +msgstr "Acima à esquerda" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +#, fuzzy +msgid "Hard" +msgstr "Grosseiro mediano" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +#, fuzzy +msgid "Soft" +msgstr "Ligado, suave" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +#, fuzzy +msgid "Night portrait" +msgstr "Retrato de crepúsculo" + +#: src/minoltamn.cpp:315 +#, fuzzy +msgid "Sports action" +msgstr "Rotação2" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +#, fuzzy +msgid "Standard form" +msgstr "Padrão " + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "" + +#: src/minoltamn.cpp:355 +#, fuzzy +msgid "Natural color" +msgstr "Natureza (cor)" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "" + +#: src/minoltamn.cpp:365 +#, fuzzy +msgid "Center zone (horizontal orientation)" +msgstr "Centralizado (horizontal)" + +#: src/minoltamn.cpp:366 +#, fuzzy +msgid "Center zone (vertical orientation)" +msgstr "Centralizado (vertical)" + +#: src/minoltamn.cpp:367 +#, fuzzy +msgid "Left zone" +msgstr "Esquerda (ou n/a)" + +#: src/minoltamn.cpp:368 +#, fuzzy +msgid "Right zone" +msgstr "Tom de luz" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto focus" +msgstr "Auto-focar" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "" + +#: src/minoltamn.cpp:380 +#, fuzzy +msgid "Spot focus" +msgstr "Focando o ponto" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +#, fuzzy +msgid "Exposure" +msgstr "Deslocamento da exposição" + +#: src/minoltamn.cpp:388 +#, fuzzy +msgid "Filter" +msgstr "Filtro de arte" + +#: src/minoltamn.cpp:393 +#, fuzzy +msgid "Not embedded" +msgstr "Não possui índice" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +#, fuzzy +msgid "Manual flash control" +msgstr "Saída de flash manual" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +#, fuzzy +msgid "Exposure Mode" +msgstr "Modo de multi-exposição" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +#, fuzzy +msgid "Flash mode" +msgstr "Flash Model" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +#, fuzzy +msgid "Drive mode" +msgstr "Modo de disco 2" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +#, fuzzy +msgid "Exposure Time" +msgstr "Exibir transformação" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +#, fuzzy +msgid "FNumber" +msgstr "Número-F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +#, fuzzy +msgid "The F-Number" +msgstr "Número-F" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +#, fuzzy +msgid "Macro Mode" +msgstr "Modo panorâmico" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation" +msgstr "Compensação de exposição CM" + +#: src/minoltamn.cpp:529 +#, fuzzy +msgid "Bracket Step" +msgstr "Borda de parênteses automático" + +#: src/minoltamn.cpp:530 +#, fuzzy +msgid "Bracket step" +msgstr "Borda de parênteses automático" + +#: src/minoltamn.cpp:532 +#, fuzzy +msgid "Interval Length" +msgstr "Comprimento da célula" + +#: src/minoltamn.cpp:533 +#, fuzzy +msgid "Interval length" +msgstr "Comprimento da célula" + +#: src/minoltamn.cpp:535 +#, fuzzy +msgid "Interval Number" +msgstr "Número de série" + +#: src/minoltamn.cpp:536 +#, fuzzy +msgid "Interval number" +msgstr "Número de série da lente" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +#, fuzzy +msgid "Focus Distance" +msgstr "Distância do foco" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +#, fuzzy +msgid "Focus distance" +msgstr "Distância do foco" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Tipo de luz" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Tipo de luz" + +#: src/minoltamn.cpp:547 +#, fuzzy +msgid "Minolta Date" +msgstr "Nota do autor do Minolta" + +#: src/minoltamn.cpp:548 +#, fuzzy +msgid "Minolta date" +msgstr "Nota do autor do Minolta" + +#: src/minoltamn.cpp:550 +#, fuzzy +msgid "Minolta Time" +msgstr "Tempo de introdução" + +#: src/minoltamn.cpp:551 +#, fuzzy +msgid "Minolta time" +msgstr "Nota do autor do Minolta" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Número de série da lente" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Número de série da lente" + +#: src/minoltamn.cpp:562 +#, fuzzy +msgid "Color Balance Red" +msgstr "Balanço de cor vermelho" + +#: src/minoltamn.cpp:563 +#, fuzzy +msgid "Color balance red" +msgstr "Vermelho equilíbrio de branco" + +#: src/minoltamn.cpp:565 +#, fuzzy +msgid "Color Balance Green" +msgstr "Balanço de cor vermelho" + +#: src/minoltamn.cpp:566 +#, fuzzy +msgid "Color balance green" +msgstr "Balanço de cor vermelho" + +#: src/minoltamn.cpp:568 +#, fuzzy +msgid "Color Balance Blue" +msgstr "Valor de equilíbrio branco" + +#: src/minoltamn.cpp:569 +#, fuzzy +msgid "Color balance blue" +msgstr "Azul equilíbrio de branco" + +#: src/minoltamn.cpp:580 +#, fuzzy +msgid "Subject Program" +msgstr "Ãrea do assunto" + +#: src/minoltamn.cpp:581 +#, fuzzy +msgid "Subject program" +msgstr "Ãrea do assunto" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +#, fuzzy +msgid "ISO Settings" +msgstr "Configuração do ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +#, fuzzy +msgid "ISO setting" +msgstr "Configuração do ISO" + +#: src/minoltamn.cpp:589 +#, fuzzy +msgid "Minolta Model" +msgstr "Nota do autor do Minolta" + +#: src/minoltamn.cpp:590 +#, fuzzy +msgid "Minolta model" +msgstr "Nota do autor do Minolta" + +#: src/minoltamn.cpp:592 +#, fuzzy +msgid "Interval Mode" +msgstr "Modo panorâmico" + +#: src/minoltamn.cpp:593 +#, fuzzy +msgid "Interval mode" +msgstr "Modo panorâmico" + +#: src/minoltamn.cpp:595 +#, fuzzy +msgid "Folder Name" +msgstr "Nome do perfil" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +#, fuzzy +msgid "ColorMode" +msgstr "InformacaoCor" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +#, fuzzy +msgid "Color Filter" +msgstr "Filtro de cor do Flash" + +#: src/minoltamn.cpp:602 +#, fuzzy +msgid "Color filter" +msgstr "Filtro de núcleo" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +#, fuzzy +msgid "Internal Flash" +msgstr "Flash Externo" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +#, fuzzy +msgid "Brightness" +msgstr "Valor do Brilho" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "Focando o ponto" + +#: src/minoltamn.cpp:614 +#, fuzzy +msgid "Spot focus point X" +msgstr "Focando o ponto" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "Focando o ponto" + +#: src/minoltamn.cpp:617 +#, fuzzy +msgid "Spot focus point Y" +msgstr "Focando o ponto" + +#: src/minoltamn.cpp:619 +#, fuzzy +msgid "Wide Focus Zone" +msgstr "Distância do foco" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +#, fuzzy +msgid "Focus mode" +msgstr "Modo ajuste de foco automático" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +#, fuzzy +msgid "Focus area" +msgstr "Distância do foco" + +#: src/minoltamn.cpp:628 +#, fuzzy +msgid "DEC Switch Position" +msgstr "Posição dos autores" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "" + +#: src/minoltamn.cpp:631 +#, fuzzy +msgid "Color Profile" +msgstr "Perfil Inter Cor" + +#: src/minoltamn.cpp:632 +#, fuzzy +msgid "Color profile" +msgstr "Perfil Inter Cor" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +#, fuzzy +msgid "Flash Metering" +msgstr "Tipo de luz" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +#, fuzzy +msgid "Flash metering" +msgstr "Configuração de modo flash" + +#: src/minoltamn.cpp:642 +#, fuzzy +msgid "Unknown Minolta Camera Settings tag" +msgstr "Etiqueta de ajuste da câmera Sony1 desconhecida" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Programar delocamento TV" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Programar delocamento TV" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +#, fuzzy +msgid "Kelvin" +msgstr "3000 Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +#, fuzzy +msgid "Continuous AF" +msgstr "Baixo contínuo" + +#: src/minoltamn.cpp:698 +#, fuzzy +msgid "Automatic AF" +msgstr "Automático" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +#, fuzzy +msgid "Horizontal (normal)" +msgstr "Horizontal" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "" + +#: src/minoltamn.cpp:756 +#, fuzzy +msgid "AF Points" +msgstr "Ponto cinza" + +#: src/minoltamn.cpp:757 +#, fuzzy +msgid "AF points" +msgstr "Ponto em foco AF" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +#, fuzzy +msgid "Color Space" +msgstr "Espaço de cor em vídeo" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +#, fuzzy +msgid "Color space" +msgstr "Rótulo da cor" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +#, fuzzy +msgid "Hue" +msgstr "Tonalidade CM" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +#, fuzzy +msgid "Rotation" +msgstr "Rotação2" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +#, fuzzy +msgid "Image Number" +msgstr "Sobreposição de imagem" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +#, fuzzy +msgid "Noise reduction" +msgstr "Redução de Ruído de Cor" + +#: src/minoltamn.cpp:817 +#, fuzzy +msgid "Zone Matching On" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:818 +#, fuzzy +msgid "Zone matching on" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:822 +#, fuzzy +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Etiqueta de ajuste 2 da câmera Sony1 desconhecida" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Programar delocamento TV" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Programar delocamento TV" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "Retrato de cena noturna" + +#: src/minoltamn.cpp:895 +#, fuzzy +msgid "200 (Zone Matching High)" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:896 +#, fuzzy +msgid "80 (Zone Matching Low)" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "" + +#: src/minoltamn.cpp:918 +#, fuzzy +msgid "Central" +msgstr "AF Centralizado" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "" + +#: src/minoltamn.cpp:920 +#, fuzzy +msgid "Up right" +msgstr "Direitos autorais" + +#: src/minoltamn.cpp:922 +#, fuzzy +msgid "Down right" +msgstr "Direitos autorais" + +#: src/minoltamn.cpp:923 +#, fuzzy +msgid "Down" +msgstr "Pular para baixo" + +#: src/minoltamn.cpp:924 +#, fuzzy +msgid "Down left" +msgstr "Cortar à direita" + +#: src/minoltamn.cpp:926 +#, fuzzy +msgid "Up left" +msgstr "Cortar à direita" + +#: src/minoltamn.cpp:932 +#, fuzzy +msgid "Selection" +msgstr "Redução de trepidação" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "Cena de vento" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "Cena à noite" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +#, fuzzy +msgid "Focus Position" +msgstr "Posição dos autores" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +#, fuzzy +msgid "Focus position" +msgstr "Informação da versão do foco" + +#: src/minoltamn.cpp:1003 +#, fuzzy +msgid "Focus Area" +msgstr "Alcance do foco" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Revisão de exposição" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "Revisão de exposição" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "Rotação2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "Imagem finalizada" + +#: src/minoltamn.cpp:1063 +#, fuzzy +msgid "Exposure Manual Bias" +msgstr "Valor de ajuste da exposição" + +#: src/minoltamn.cpp:1064 +#, fuzzy +msgid "Exposure manual bias" +msgstr "Valor de orientação diagonal" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +#, fuzzy +msgid "AF Mode" +msgstr "Modelo de luz" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +#, fuzzy +msgid "AF mode" +msgstr "Flash Model" + +#: src/minoltamn.cpp:1087 +#, fuzzy +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Etiqueta de ajuste 2 da câmera Sony1 desconhecida" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "Auto-temporizável (12 segundos)" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "Auto-temporizável (2 segundos)" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Baixo suporte de balanço branco" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "Baixo suporte de balanço alto" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "Baixo suporte de quadro único" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Suporte contínuo" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "Alto suporte à quadro único" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Suporte contínuo" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Avançado" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "Suporte contínuo" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "Suporte à quadro único" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "Suporte à balanço branco" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Temperatura da cor/filtro de cor" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +#, fuzzy +msgid "Temperature" +msgstr "Temperatura da câmera" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "Configurar" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "Recarregar" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "OK" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "Erro" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "Informação da área do GPS" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Sobreposição de imagem" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Nome do criador da imagem" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "Luz de preenchimento" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "Lugar seguro" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Visualizar" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Manter" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Alternar" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "Lugar seguro" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "Mudar local" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +#, fuzzy +msgid "Shutter Speed" +msgstr "Velocidade do Obturador" + +#: src/minoltamn.cpp:1271 +#, fuzzy +msgid "Ambient and Flash" +msgstr "Sem flash automático" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Automático" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "Auto parênteses" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Horizontal" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "Flash manual" + +#: src/minoltamn.cpp:1302 +#, fuzzy +msgid "Within Range" +msgstr "Alcance do Ponto" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Fora de alcance" + +#: src/minoltamn.cpp:1309 +#, fuzzy +msgid "Not Indicated" +msgstr "Não possui índice" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "Sobre escala" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "Sobre escala" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "AM" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Integrado" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +#, fuzzy +msgid "Very Low" +msgstr "Muito suave" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "Configurando compensação à exposição de Luz" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "Configurando compensação à exposição de Luz" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "Modo de multi-exposição" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "Modo de multi-exposição" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "FNúmero manual" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "Modo de disco 2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "Modo de disco 2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "Ponto de área no local AF" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Ãreas AF" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "Modo luz" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "Configurando comp à exposição de luz" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "Configurando compensação à exposição de Luz" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "Configuração do ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "Modo zona de correspondẽncia" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "Modo optimizador de faixa dinâmico" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "modo optimizador de faixa dinãmico" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "Prioridade de instalação do obturador" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Tempo do temporizador" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Tempo do temporizador" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "Suporte contínuo" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "Suporte a quadro único" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "suporte a quadro único" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +#, fuzzy +msgid "White balance bracketing" +msgstr "Suporte de equilíbrio branco" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "Configuração do branco" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Equilíbrio do branco" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Equilíbrio do branco" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Temperatura de cor" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Temperatura de cor" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Configuração de matiz" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "Configuração de matiz" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "Configurações do otimizador de faixa dinâmico" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "Nível vermelho WB personalizado" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "Nível vermelho WB personalizado" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "Nível verde WB personalizado" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "Nível verde WB personalizado" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "Nível azul WB personalizado" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "Nível azul WB personalizado" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Nível vermelho WB personalizado" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Ajuste fino de equilíbrio do branco" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "Temperatura da cor/filtro de cor" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "Tamanho de imagem completo" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "Iniciar olho AF" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "Iniciar olho AF" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Não, redução de olhos-vermelhos" + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Não, redução de olhos-vermelhos" + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Modelo de luz" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "Modelo de luz" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "Borda de parênteses automático" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "Borda de parênteses automático" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "Configuração de modo de foco" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "Configuração de modo de foco" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "Diálogo de controle definido" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "Diálogo de controle definido" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Compensação de exposição CM" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Compensação de exposição CM" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "Assistente AF" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "Trava do obturador de cartão" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "Trava do obturador de cartão" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "Trava do obturador de lentes" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "Trava do obturador de lentes" + +#: src/minoltamn.cpp:1533 +#, fuzzy +msgid "AF Area Illumination" +msgstr "Iluminador AF" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Iluminador AF" + +#: src/minoltamn.cpp:1536 +#, fuzzy +msgid "Monitor Display Off" +msgstr "Gravar exibição" + +#: src/minoltamn.cpp:1537 +#, fuzzy +msgid "Monitor display off" +msgstr "Gravar exibição" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "Gravar exibição" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "Gravar exibição" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "Reproduzir exibição" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "Ver monitor" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Indicador de exposição Flash próximo" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Indicador de exposição Flash próximo" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Indicador de exposição Flash próximo" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" +"Indicador de exposição AEL (também indica exposição para próxima captura " +"quando estiver entre parênteses)" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "Indicador de exposição do último parêntese" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" +"Indicador de exposição do último parêntese (indicador para última captura " +"quando estiver entre parênteses)." + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "Indicador de escala fora da medição" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" +"Indicador de escala fora da medição (dois triângulos piscando quando sob ou " +"sobre escala de medição)" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "Indicador de exposição Flash próximo" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Indicador de exposição Flash próximo" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "Indicador de exposição Flash próximo" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" +"Indicador de exposição Flash próximo (indicador para próxima captura quando " +"estiver entre parênteses)" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "Indicador de exposição Flash último" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" +"Indicador de exposição Flash último (indicador para última captura quando " +"entre parênteses)" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "Ajustar o modo de foco" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "Ajustar o modo de foco" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Tipo de luz" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Tipo de luz" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "Filtro de compensação de cor: negativo é verde, positivo é magenta" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +#, fuzzy +msgid "Battery Level" +msgstr "Nível da bateria" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "Nível da bateria" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Configuração desconhecida para a câmera Sony A100 tag" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Limpar" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Profundo" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Claro" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Visão noturna" + +#: src/minoltamn.cpp:1951 +#, fuzzy +msgid "Autumn Leaves" +msgstr "Outono" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Local" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Acima à direita" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Abaixo à direita" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Abaixo à esquerda" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Acima à esquerda" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Extrema-direita" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Extrema-esquerda" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "Avanço automático" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "Avançado" + +#: src/minoltamn.cpp:2041 +#, fuzzy +msgid "AF" +msgstr "A" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "Lançamento" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "" + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "" + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Taxa de compressão" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "Bits Comprimidos por Pixel" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +#, fuzzy +msgid "ISO Setting Used" +msgstr "Configuração do ISO" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +#, fuzzy +msgid "High Key" +msgstr "Mais alta" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +#, fuzzy +msgid "Single area" +msgstr "Alvo único" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +#, fuzzy +msgid "Dynamic area" +msgstr "Alvo dinâmico único" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +#, fuzzy +msgid "Single area (wide)" +msgstr "Alvo único" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +#, fuzzy +msgid "Dynamic area (wide)" +msgstr "Otimizar a escala dinâmica" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +#, fuzzy +msgid "Upper-right" +msgstr "Direitos autorais" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +#, fuzzy +msgid "Lower-left" +msgstr "Mais baixa" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +#, fuzzy +msgid "Lower-right" +msgstr "Claro" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +#, fuzzy +msgid "Fire, TTL mode" +msgstr "Modo de imagem" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Contraste PM" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "Exposição entre parênteses" + +#: src/nikonmn.cpp:156 +#, fuzzy +msgid "Auto ISO" +msgstr "Auto HDR" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Suporte à balanço branco" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Controle remoto do Flash" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Suporte contínuo" + +#: src/nikonmn.cpp:166 +#, fuzzy +msgid "PC control" +msgstr "Contraste CM" + +#: src/nikonmn.cpp:167 +#, fuzzy +msgid "Exposure bracketing" +msgstr "Exposição entre parênteses" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "" + +#: src/nikonmn.cpp:176 +#, fuzzy +msgid "Auto release" +msgstr "Auto parênteses" + +#: src/nikonmn.cpp:177 +#, fuzzy +msgid "Manual release" +msgstr "Flash manual" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +#, fuzzy +msgid "Uncompressed" +msgstr "Epson ERF comprimido" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "" + +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "Iluminação de palco" + +#: src/nikonmn.cpp:196 +#, fuzzy +msgid "Red eye" +msgstr "Hue vermelho." + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "" + +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "Noite estrelada" + +#: src/nikonmn.cpp:199 +#, fuzzy +msgid "Warm tone" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Reprodução de cor" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Sobreposição de imagem" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +#, fuzzy +msgid "Nikon Makernote version" +msgstr "Versão do marcador de notas pentax" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +#, fuzzy +msgid "ISO Speed" +msgstr "Velocidade do ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +#, fuzzy +msgid "Image sharpening setting" +msgstr "Configuração de tamanho de imagens" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +#, fuzzy +msgid "Focus" +msgstr "Foco panorâmico" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +#, fuzzy +msgid "Flash Setting" +msgstr "Tem ajuste" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +#, fuzzy +msgid "Flash setting" +msgstr "Configuração de modo flash" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +#, fuzzy +msgid "ISO Selection" +msgstr "Configuração do ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +#, fuzzy +msgid "ISO selection" +msgstr "Alta ReduçãoDeRuído ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +#, fuzzy +msgid "Image Adjustment" +msgstr "Ajuste de nitidez" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +#, fuzzy +msgid "Image adjustment setting" +msgstr "Configuração de tamanho de imagens" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +#, fuzzy +msgid "Manual focus distance" +msgstr "Foco manual" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +#, fuzzy +msgid "Digital zoom setting" +msgstr "Razão de Zoom Digital." + +#: src/nikonmn.cpp:260 +#, fuzzy +msgid "AF Focus Position" +msgstr "Posição dos autores" + +#: src/nikonmn.cpp:261 +#, fuzzy +msgid "AF focus position information" +msgstr "Informação de redução de informação" + +#: src/nikonmn.cpp:265 +#, fuzzy +msgid "Unknown Nikon1MakerNote tag" +msgstr "Etiqueta Sony1Autor Desconhecida" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +#, fuzzy +msgid "Continuous autofocus" +msgstr "Baixo contínuo" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +#, fuzzy +msgid "Single autofocus" +msgstr "Alvo único" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +#, fuzzy +msgid "Not used" +msgstr "Não possui índice" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "" + +#: src/nikonmn.cpp:435 +#, fuzzy +msgid "Bright+" +msgstr "Claro" + +#: src/nikonmn.cpp:436 +#, fuzzy +msgid "Bright-" +msgstr "Claro" + +#: src/nikonmn.cpp:437 +#, fuzzy +msgid "Contrast+" +msgstr "Contraste PM" + +#: src/nikonmn.cpp:438 +#, fuzzy +msgid "Contrast-" +msgstr "Contraste PM" + +#: src/nikonmn.cpp:457 +#, fuzzy +msgid "Speedlight" +msgstr "Sensor de altura" + +#: src/nikonmn.cpp:497 +#, fuzzy +msgid "Unknown Nikon2MakerNote tag" +msgstr "Etiqueta Sony1Autor Desconhecida" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +#, fuzzy +msgid "Flash Device" +msgstr "Distância GN do Flash" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +#, fuzzy +msgid "Flash device" +msgstr "Modelo de luz" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +#, fuzzy +msgid "White Balance Bias" +msgstr "Balanço de branco 2" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +#, fuzzy +msgid "White balance bias" +msgstr "Balanço de branco 2" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB Levels" +msgstr "Nível do vermelho WB" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB levels" +msgstr "Níveis WB RB CWB1" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Programar delocamento TV" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "Programar delocamento TV" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure Difference" +msgstr "Deslocamento da exposição" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure difference" +msgstr "Deslocamento da exposição" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +#, fuzzy +msgid "Pointer to a preview image" +msgstr "Comprimento de uma imagem prévia" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +#, fuzzy +msgid "Offset to an IFD containing a preview image" +msgstr "Tamanho de um IFD que contém uma imagem prévia" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash Comp" +msgstr "Tipo de luz" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash compensation setting" +msgstr "Configurando compensação à exposição de Luz" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image Boundary" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image boundary" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Bloquear exposição de flash" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "Comp de equilíbrio de branco" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "Configurando compensação à exposição de Luz" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "Exposição entre parênteses" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +#, fuzzy +msgid "Image Processing" +msgstr "Processamento de imagem secundário-IFD" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +#, fuzzy +msgid "Image processing" +msgstr "Processamento de imagem secundário-IFD" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "Cortar altura" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "Ãrea 1 (Alta velocidade)" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "Exibir transformação" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "Exibir transformação" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "Informação cru" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "Configuração de qualidade de imagem" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "Configuração de qualidade de imagem" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-Lighting" +msgstr "Iluminação de palco" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-lighting" +msgstr "Iluminação de palco" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Modo de contraste da imagem" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Tonalidade de imagem PM" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "Localização de hora mundial" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "Localização de hora mundial" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO Info" +msgstr "Informação cru" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO info" +msgstr "Configuração do ISO" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette Control" +msgstr "Quantidade de vinhetas" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette control" +msgstr "Quantidade de vinhetas" + +#: src/nikonmn.cpp:568 +#, fuzzy +msgid "Tone Compensation" +msgstr "Compensação de sombreamento" + +#: src/nikonmn.cpp:568 +#, fuzzy +msgid "Tone compensation" +msgstr "Compensação de sombreamento" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +#, fuzzy +msgid "Shooting Mode" +msgstr "Modo de medição de ponto" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +#, fuzzy +msgid "Shooting mode" +msgstr "Câmera no modo de disparo" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto Bracket Release" +msgstr "Auto parênteses" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto bracket release" +msgstr "Borda de parênteses automático" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "Curva de Tonalidade" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "Curva de tom" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Rótulo da cor" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Rótulo da cor" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +#, fuzzy +msgid "Scene mode" +msgstr "Ãrea de cena" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +#, fuzzy +msgid "Light Source" +msgstr "Tom de luz" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +#, fuzzy +msgid "Light source" +msgstr "Tom de luz" + +#: src/nikonmn.cpp:583 +#, fuzzy +msgid "Shot info" +msgstr "InformacaoDisparo" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment" +msgstr "Ajuste de nitidez" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +#, fuzzy +msgid "Hue adjustment" +msgstr "Ajuste fino do Balanço de Branco" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Taxa de compressão" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Nikon NEF Comprimido" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +#, fuzzy +msgid "Linearization Table" +msgstr "Data de transação da licença" + +#: src/nikonmn.cpp:588 +#, fuzzy +msgid "Linearization table" +msgstr "Data de transação da licença" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color Balance" +msgstr "Balanço de cor vermelho" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color balance" +msgstr "Balanço de cor vermelho" + +#: src/nikonmn.cpp:590 +#, fuzzy +msgid "Lens Data" +msgstr "Data final da licença" + +#: src/nikonmn.cpp:590 +#, fuzzy +msgid "Lens data settings" +msgstr "Configurações de correção de lente" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "Criador da imagem" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw image center" +msgstr "Comprimento informado da imagem" + +#: src/nikonmn.cpp:592 +#, fuzzy +msgid "Sensor Pixel Size" +msgstr "Nível de sensor vermelho" + +#: src/nikonmn.cpp:592 +#, fuzzy +msgid "Sensor pixel size" +msgstr "Nível de sensor vermelho" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "Ãrea de cena" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene assist" +msgstr "Assistente AF" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "" + +#: src/nikonmn.cpp:597 +#, fuzzy +msgid "Serial NO" +msgstr "Número de série" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +#, fuzzy +msgid "Image Data Size" +msgstr "Tamanho de imagem completo" + +#: src/nikonmn.cpp:598 +#, fuzzy +msgid "Image data size" +msgstr "Estrutura de arquivo de imagem" + +#: src/nikonmn.cpp:600 +#, fuzzy +msgid "Image Count" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:600 +#, fuzzy +msgid "Image count" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "Contagem da imagem apagada" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Contagem da imagem apagada" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Contagem do obturador" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "" + +#: src/nikonmn.cpp:603 +#, fuzzy +msgid "Flash info" +msgstr "InformacaoFlash" + +#: src/nikonmn.cpp:604 +#, fuzzy +msgid "Image Optimization" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:604 +#, fuzzy +msgid "Image optimization" +msgstr "Tom da imagem" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "Programar delocamento TV" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "Programar delocamento TV" + +#: src/nikonmn.cpp:608 +#, fuzzy +msgid "AF Response" +msgstr "Unidade de resposta cinza" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Modo de multi-exposição" + +#: src/nikonmn.cpp:610 +#, fuzzy +msgid "High ISO Noise Reduction" +msgstr "Alta ReduçãoDeRuído ISO" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "Gravando deslocamento" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "Versão do MakerNote" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "Versão do MakerNote" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture Offsets" +msgstr "Faixa de compensações" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "Faixa de compensações" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "" + +#: src/nikonmn.cpp:622 +#, fuzzy +msgid "ICC profile" +msgstr "Perfil de câmera" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "" + +#: src/nikonmn.cpp:625 +#, fuzzy +msgid "Unknown Nikon3MakerNote tag" +msgstr "Etiqueta Sony1Autor Desconhecida" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration Reduction" +msgstr "Correção da distorção" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration reduction" +msgstr "Correção da distorção" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Etiqueta Nikon de foco automático 2 desconhecida" + +#: src/nikonmn.cpp:667 +#, fuzzy +msgid "Default Settings" +msgstr "Tem ajuste" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "" + +#: src/nikonmn.cpp:669 +#, fuzzy +msgid "Full Control" +msgstr "Modo de controle do Flash" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +#, fuzzy +msgid "Name" +msgstr "Nome da fita" + +#: src/nikonmn.cpp:701 +#, fuzzy +msgid "Base" +msgstr "Base de ganho" + +#: src/nikonmn.cpp:702 +#, fuzzy +msgid "Adjust" +msgstr "WB ajusta AB" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "Saturação PM" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "Saturação CM" + +#: src/nikonmn.cpp:713 +#, fuzzy +msgid "Unknown Nikon Picture Control Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "Ajuste de afinação AF" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Ajuste de afinação aF" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "Ajuste de afinação AF" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "Ajuste de afinação aF" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Ajuste de afinação AF" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Ajuste de afinação aF" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date Display Format" +msgstr "Formato da amostra" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "" + +#: src/nikonmn.cpp:748 +#, fuzzy +msgid "Unknown Nikon World Time Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "" + +#: src/nikonmn.cpp:767 +msgid "Hi 2.3" +msgstr "" + +#: src/nikonmn.cpp:768 +msgid "Hi 2.5" +msgstr "" + +#: src/nikonmn.cpp:769 +msgid "Hi 2.7" +msgstr "" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO Expansion" +msgstr "Extensões" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "" + +#: src/nikonmn.cpp:788 +#, fuzzy +msgid "Unknown Nikon Iso Info Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "Ãrea de cena" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "Expansão de amplitude dinâmica" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +#, fuzzy +msgid "Mid-right" +msgstr "Meio-direito (vertical)" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "Extrema-esquerda" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "Extrema-direita" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Ãreas AF" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +#, fuzzy +msgid "AF point" +msgstr "Ponto cinza" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Ponto em foco AF" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Ponto em foco AF" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Etiqueta Nikon de foco automático 2 desconhecida" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "On (51-pontos)" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "On (11-pontos)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "On (51-pontos)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "On (51-pontos)" + +#: src/nikonmn.cpp:857 +#, fuzzy +msgid "On (73-point, new)" +msgstr "On (51-pontos)" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "On (11-pontos)" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "Detecção de contraste AF" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "Detecção de contraste AF" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "Detecção de fase AF" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "Detecção de fase AF" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "Ponto cinza" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "Ponto cinza" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Largura informada da imagem" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Largura informada da imagem" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Altura da imagem de multi-explosão" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "AF Ãrea X Posição" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "AF área x posição" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "AF Ãrea Y Posição" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "AF área x posição" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Ãreas AF" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Ãreas AF" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Cortar altura" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "área-3 (direita)" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "Detecção de contraste AF" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "Detecção de contraste AF" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Etiqueta Nikon de foco automático 2 desconhecida" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Múltipla exposição" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "Sobreposição de imagem" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Modo de multi-exposição" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Modo de multi-exposição" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "Capturas de multi-exposição" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "Capturas de multi-exposição" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "Ganho automático de multi-exposição" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "Ganho automático de multi-exposição" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Etiqueta de multi-exposição Nikon desconhecida" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "1.01 (SB-800 ou Metz 58 AF-1)" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Abertura automática" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +#, fuzzy +msgid "Repeating Flash" +msgstr "Taxa de repetição do Flash" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "Âmbar" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "Modelo de luz" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "Modelo de luz" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "Firmware de Flash externo" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "Firmware de Flash externo" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "Sinalizadores de Flash Externo" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "Sinalizadores de flash externo" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "Comprimento do foco do Flash" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "Comprimento do foco do Flash" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "Taxa de repetição do Flash" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "Taxa de repetição do Flash" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "Contagem de repetição do Flash" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "Contagem de repetição do Flash" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "Distância GN do Flash" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "Distância do Flash GN" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "Modo de controle do grupo A do Flash" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "Modo de controle do grupo A do Flash" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "Modo de controle do grupo B do Flash" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "Modo de controle do grupo b do Flash" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "Filtro de cor do Flash" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "Filtro de cor do Flash" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Contagem do obturador" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "Modelo de luz" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "Modelo de luz" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "Ajuste de afinação AF" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Ajuste de afinação aF" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "Ligado (3 quadros)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "Contagem do obturador 1" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Contagem do obturador 1" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Correção da distorção" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Correção da distorção" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "Contagem do obturador 2" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Contagem do obturador 2" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration Reduction 2" +msgstr "Correção da distorção" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration reduction 2" +msgstr "Correção da distorção" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG Levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB Levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Etiqueta Nikon de foco automático 2 desconhecida" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Etiqueta Nikon de foco automático 2 desconhecida" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Etiqueta Nikon de foco automático 2 desconhecida" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG Levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG Levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG levels" +msgstr "Nível WB G" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Número de série da lente" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Número de série da lente" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min Focal Length" +msgstr "Lente focal" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min focal length" +msgstr "Comprimento do foco do Flash" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max Focal Length" +msgstr "Comprimento do foco do Flash" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max focal length" +msgstr "Comprimento do foco do Flash" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +#, fuzzy +msgid "Max Aperture At Min Focal" +msgstr "Abertura máxima em focal atual" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +#, fuzzy +msgid "Max aperture at min focal" +msgstr "Abertura máxima em focal atual" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +#, fuzzy +msgid "Max Aperture At Max Focal" +msgstr "Abertura máxima em focal atual" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +#, fuzzy +msgid "Max aperture at max focal" +msgstr "Abertura máxima em focal atual" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "Versão PLUS" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "Versão PLUS" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Abertura automática" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Abertura automática" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1399 +#, fuzzy +msgid "Max aperture at min focal length" +msgstr "Abertura máxima em focal atual" + +#: src/nikonmn.cpp:1400 +#, fuzzy +msgid "Max aperture at max focal length" +msgstr "Abertura máxima em focal atual" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Etiqueta de informação do arquivo Nikon desconhecida" + +#: src/nikonmn.cpp:1590 +#, fuzzy +msgid "Closest subject" +msgstr "Janelas de assuntos" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +#, fuzzy +msgid "Single-frame" +msgstr "Alvo único" + +#: src/olympusmn.cpp:71 +#, fuzzy +msgid "Standard Quality (SQ)" +msgstr "Padrão " + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "" + +#: src/olympusmn.cpp:88 +#, fuzzy +msgid "On (preset)" +msgstr "Ligado (2 quadros)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +#, fuzzy +msgid "Self Portrait" +msgstr "Retrato de cena noturna" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "" + +#: src/olympusmn.cpp:105 +#, fuzzy +msgid "Night+Portrait" +msgstr "Retrato de crepúsculo" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "" + +#: src/olympusmn.cpp:115 +#, fuzzy +msgid "Beach & Snow" +msgstr "Surfe & neve" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "Tempo do temporizador" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "" + +#: src/olympusmn.cpp:118 +#, fuzzy +msgid "Available Light" +msgstr "Luz de preenchimento" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +#, fuzzy +msgid "My Mode" +msgstr "ID do modelo Sony" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Animal de Estimação" + +#: src/olympusmn.cpp:122 +#, fuzzy +msgid "Underwater Wide1" +msgstr "Subaquática Largura2" + +#: src/olympusmn.cpp:123 +#, fuzzy +msgid "Underwater Macro" +msgstr "Subaquática Largura2" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "Identificador de imagem digital" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "Função principal" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Subaquática Largura2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "Natureza (cor)" + +#: src/olympusmn.cpp:136 +#, fuzzy +msgid "Underwater Snapshot" +msgstr "Subaquática Largura2" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "" + +#: src/olympusmn.cpp:188 +#, fuzzy +msgid "Thumbnail Image" +msgstr "Miniatura/mostrar imagem" + +#: src/olympusmn.cpp:189 +#, fuzzy +msgid "Thumbnail image" +msgstr "Miniatura/mostrar imagem" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Versão dos firmware do corpo" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Versão dos firmware do corpo" + +#: src/olympusmn.cpp:195 +#, fuzzy +msgid "Special Mode" +msgstr "Modo de trecho" + +#: src/olympusmn.cpp:196 +#, fuzzy +msgid "Picture taking mode" +msgstr "Modo de imagem" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "" + +#: src/olympusmn.cpp:208 +#, fuzzy +msgid "Digital zoom ratio" +msgstr "Razão de Zoom Digital." + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +#, fuzzy +msgid "Focal Plane Diagonal" +msgstr "Resolução x do Plano Focal" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +#, fuzzy +msgid "Focal plane diagonal" +msgstr "Resolução x do Plano Focal" + +#: src/olympusmn.cpp:213 +#, fuzzy +msgid "Lens Distortion Parameters" +msgstr "Parâmetros de capitulação" + +#: src/olympusmn.cpp:214 +#, fuzzy +msgid "Lens distortion parameters" +msgstr "Parâmetros de capitulação" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera Type" +msgstr "Câmera TIFF" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera type" +msgstr "Fabricante da câmera" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +#, fuzzy +msgid "Camera ID" +msgstr "Câmera TIFF" + +#: src/olympusmn.cpp:223 +#, fuzzy +msgid "Camera ID data" +msgstr "Fabricante da câmera" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +#, fuzzy +msgid "Preview Image" +msgstr "Previsão da imagem" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Previsão da imagem" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Placa de nomes" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Placa de nomes" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "Quadro branco" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "Quadro branco" + +#: src/olympusmn.cpp:243 +#, fuzzy +msgid "One Touch WB" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:244 +#, fuzzy +msgid "One touch white balance" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Suporte de equilíbrio branco" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Suporte de equilíbrio branco" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +#, fuzzy +msgid "Firmware" +msgstr "Firmwarer" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "" + +#: src/olympusmn.cpp:262 +#, fuzzy +msgid "Various camera settings 1" +msgstr "Configuração de modo de foco" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "" + +#: src/olympusmn.cpp:265 +#, fuzzy +msgid "Various camera settings 2" +msgstr "Configuração de modo de foco" + +#: src/olympusmn.cpp:268 +#, fuzzy +msgid "Shutter speed value" +msgstr "Velocidade do Obturador" + +#: src/olympusmn.cpp:271 +#, fuzzy +msgid "ISO speed value" +msgstr "Velocidade do ISO" + +#: src/olympusmn.cpp:274 +#, fuzzy +msgid "Aperture value" +msgstr "Máximo valor da abertura" + +#: src/olympusmn.cpp:277 +#, fuzzy +msgid "Brightness value" +msgstr "Valor do Brilho" + +#: src/olympusmn.cpp:285 +#, fuzzy +msgid "Bracket" +msgstr "Auto parênteses" + +#: src/olympusmn.cpp:286 +#, fuzzy +msgid "Exposure compensation value" +msgstr "Compensação de exposição CM" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +#, fuzzy +msgid "Sensor Temperature" +msgstr "Temperatura da câmera" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +#, fuzzy +msgid "Sensor temperature" +msgstr "Temperatura da câmera" + +#: src/olympusmn.cpp:291 +#, fuzzy +msgid "Lens Temperature" +msgstr "Temperatura da câmera" + +#: src/olympusmn.cpp:292 +#, fuzzy +msgid "Lens temperature" +msgstr "Temperatura da câmera" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "Condição de luz" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Condição de luz" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Distância do foco" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "Alcance do foco" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom step count" +msgstr "Conta Passo do Zoom" + +#: src/olympusmn.cpp:309 +#, fuzzy +msgid "Macro Focus" +msgstr "Foco panorâmico" + +#: src/olympusmn.cpp:310 +#, fuzzy +msgid "Macro focus step count" +msgstr "Conta passo do foco" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +#, fuzzy +msgid "Sharpness Factor" +msgstr "Valor de nitidez" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +#, fuzzy +msgid "Sharpness factor" +msgstr "Valor de nitidez" + +#: src/olympusmn.cpp:315 +#, fuzzy +msgid "Flash Charge Level" +msgstr "Versão da flash do firmware" + +#: src/olympusmn.cpp:316 +#, fuzzy +msgid "Flash charge level" +msgstr "Filtro de cor do Flash" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +#, fuzzy +msgid "Color Matrix" +msgstr "Cor da matriz 2" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +#, fuzzy +msgid "Color matrix" +msgstr "Cor da matriz 2" + +#: src/olympusmn.cpp:321 +#, fuzzy +msgid "BlackLevel" +msgstr "Nível de preto 2" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +#, fuzzy +msgid "Black level" +msgstr "Nível de preto 2" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +#, fuzzy +msgid "White balance mode" +msgstr "Modo de equilíbrio branco" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +#, fuzzy +msgid "Red Balance" +msgstr "Balanço de cor vermelho" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +#, fuzzy +msgid "Red balance" +msgstr "Balanço de cor vermelho" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +#, fuzzy +msgid "Blue Balance" +msgstr "Balanço de cor azul" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +#, fuzzy +msgid "Blue balance" +msgstr "Balanço de cor azul" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Número de matriz da cor" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Número de matriz da cor" + +#: src/olympusmn.cpp:345 +#, fuzzy +msgid "Serial Number 2" +msgstr "Número de série" + +#: src/olympusmn.cpp:346 +#, fuzzy +msgid "Serial number 2" +msgstr "Número de série" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +#, fuzzy +msgid "Flash exposure compensation" +msgstr "Configurando compensação à exposição de Luz" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "Flash Externo" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "Número do guia de flash externo" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External Flash Zoom" +msgstr "Flash Externo" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External flash zoom" +msgstr "Flash Externo" + +#: src/olympusmn.cpp:387 +#, fuzzy +msgid "External Flash Mode" +msgstr "Flash Externo" + +#: src/olympusmn.cpp:388 +#, fuzzy +msgid "External flash mode" +msgstr "Firmware de Flash externo" + +#: src/olympusmn.cpp:396 +#, fuzzy +msgid "Color Control" +msgstr "InformacaoCor" + +#: src/olympusmn.cpp:397 +#, fuzzy +msgid "Color control" +msgstr "InformacaoCor" + +#: src/olympusmn.cpp:399 +#, fuzzy +msgid "ValidBits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +#, fuzzy +msgid "Valid bits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "Filtro de núcleo" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "Filtro de núcleo" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Taxa de compressão" + +#: src/olympusmn.cpp:424 +#, fuzzy +msgid "Compression ratio" +msgstr "Taxa de compressão" + +#: src/olympusmn.cpp:427 +#, fuzzy +msgid "Preview image embedded" +msgstr "Pré-visualizar bordas da imagem" + +#: src/olympusmn.cpp:430 +#, fuzzy +msgid "Offset of the preview image" +msgstr "Comprimento de uma imagem prévia" + +#: src/olympusmn.cpp:433 +#, fuzzy +msgid "Size of the preview image" +msgstr "Comprimento de uma imagem prévia" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "" + +#: src/olympusmn.cpp:448 +#, fuzzy +msgid "Camera equipment sub-IFD" +msgstr "Desenvolvimento cru secundário-IFD" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "Processamento de imagem secundário-IFD" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Desenvolvimento cru" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "Desenvolvimento cru secundário-IFD" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "Desenvolvimento cru 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "Desenvolvimento Simples sub-IFD" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Processamento de imagem secundário-IFD" + +#: src/olympusmn.cpp:462 +#, fuzzy +msgid "Focus Info" +msgstr "Informação da versão do foco" + +#: src/olympusmn.cpp:463 +#, fuzzy +msgid "Focus sub-IFD" +msgstr "Sub-IFD cru" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Informação cru" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "Sub-IFD cru" + +#: src/olympusmn.cpp:470 +#, fuzzy +msgid "Unknown OlympusMakerNote tag" +msgstr "Etiqueta OlympusFe desconhecida" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Programar delocamento TV" + +#: src/olympusmn.cpp:491 +#, fuzzy +msgid "Center-weighted average" +msgstr "Centro com aumento de peso" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "Padrão+AF" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Coloração da Sombra" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "Alvo único" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "" + +#: src/olympusmn.cpp:523 +#, fuzzy +msgid "Not Ready" +msgstr "Não possui índice" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "" + +#: src/olympusmn.cpp:533 +#, fuzzy +msgid "Slow-sync" +msgstr "Ligado, baixa sincronização" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "Segunda Cortina" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "Canal 1, baixo" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "Canal 2, baixo" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "Canal 3, baixo" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "Canal 4, baixo" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "Canal 1, médio" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "Canal 2, médio" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "Canal 3, médio" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "Canal 4, médio" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "Canal 1, alto" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "Canal 2, alto" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "Canal 3, alto" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "Canal 4, alto" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "" + +#: src/olympusmn.cpp:568 +#, fuzzy +msgid "6000K (Cloudy)" +msgstr "Auto (Nublado)" + +#: src/olympusmn.cpp:569 +#, fuzzy +msgid "5300K (Fine Weather)" +msgstr "Bom tempo" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Abertura automática" + +#: src/olympusmn.cpp:573 +msgid "5500K (Flash)" +msgstr "" + +#: src/olympusmn.cpp:574 +#, fuzzy +msgid "6600K (Daylight fluorescent)" +msgstr "FluorescenciaLuzDiurna" + +#: src/olympusmn.cpp:575 +#, fuzzy +msgid "4500K (Neutral white fluorescent)" +msgstr "Níveis WB_RB com fluorescência branca" + +#: src/olympusmn.cpp:576 +#, fuzzy +msgid "4000K (Cool white fluorescent)" +msgstr "Fluorescente branca fria" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "FluorescenciaBranca" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:584 +#, fuzzy +msgid "Custom WB 1" +msgstr "Personalizar 1-4" + +#: src/olympusmn.cpp:585 +#, fuzzy +msgid "Custom WB 2" +msgstr "Nível vermelho WB personalizado" + +#: src/olympusmn.cpp:586 +#, fuzzy +msgid "Custom WB 3" +msgstr "Nível vermelho WB personalizado" + +#: src/olympusmn.cpp:587 +#, fuzzy +msgid "Custom WB 4" +msgstr "Personalizar 1-4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (Tons de Pele)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "Foto RGB Profissional" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise Filter" +msgstr "Filtro de ruído" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Filtro de ruído PM" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "Ligado, modo 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "Ligado, modo 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "Ligado, modo 3" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera Settings Version" +msgstr "Câmera no modo de disparo" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera settings version" +msgstr "Câmera no modo de disparo" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "PreviewImage Valid" +msgstr "Tamanho da imagem visualizada" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "Preview image valid" +msgstr "Previsão da imagem" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "PreviewImage Start" +msgstr "Tamanho da imagem visualizada" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "Preview image start" +msgstr "Previsão da imagem" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "PreviewImage Length" +msgstr "Tamanho da imagem visualizada" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "Preview image length" +msgstr "Tamanho da imagem visualizada" + +#: src/olympusmn.cpp:666 +#, fuzzy +msgid "Auto exposure lock" +msgstr "Bloquear exposição de flash" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "Deslocamento da exposição" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "Deslocamento da exposição" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "Processo gradual" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Processo gradual" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +#, fuzzy +msgid "AF search" +msgstr "Sensor AF" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Ãreas AF" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Ãreas AF" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "SeleçãoDePontoAF" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "Ajuste de afinação AF" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "Ajuste de afinação aF" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "Controle remoto do Flash" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "Controle remoto do Flash" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "Modo de controle do Flash" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "Modo de controle do Flash" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "Intensidade do Flash" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "Intensidade do Flash" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "Intensidade do Flash manual" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "Intensidade do Flash manual" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Balanço de branco 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Balanço de branco 2" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White Balance Temperature" +msgstr "Temperatura de equilíbrio do branco" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Temperatura de equilíbrio do branco" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom Saturation" +msgstr "Saturação CM" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom saturation" +msgstr "Saturação CM" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified Saturation" +msgstr "Saturação de vermelho" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified saturation" +msgstr "Saturação CM" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +#, fuzzy +msgid "Contrast Setting" +msgstr "Tem ajuste" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness Setting" +msgstr "Tem ajuste" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion Correction" +msgstr "Correção da distorção" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Correção da distorção" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Compensação de sombreamento" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Compensação de sombreamento" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Fator de compressão" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Fator de compressão" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Transição gradual" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Modo de imagem" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Modo de saturação da imagem" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Modo de saturação da imagem" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Modo de matiz da imagem" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Modo de matiz da imagem" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Modo de contraste da imagem" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Modo de contraste da imagem" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Modo de nitidez de imagem" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Modo de nitidez de imagem" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Filtro de imagem modo preto e branco" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Filtro de imagem modo preto e branco" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Modo tom de imagem" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Modo tom de imagem" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Filtro de ruído" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "Filtro de arte" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "Filtro de arte" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "Filtro mágico" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "Filtro mágico" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Modo panorâmico" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Modo panorâmico" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image Quality 2" +msgstr "Configuração de qualidade de imagem" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image quality 2" +msgstr "Configuração de qualidade de imagem" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "Pressão do manômetro" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Pressão do manômetro" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Leitura do manômetro" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Leitura do manômetro" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Detectar extensão de branco e preto" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Detectar extensão de branco e preto" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "Lançador indicador de nível" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "Lançador indicador de nível" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "Tonalidade indicadora de nível" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "Tonalidade indicadora de nível" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "etiqueta OlympusCs desconhecido" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "E-Sistema simples" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "E-Sistema" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "Versão de desenvolvimento bruta" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "Versão de desenvolvimento bruta" + +#: src/olympusmn.cpp:747 +#, fuzzy +msgid "Serial number" +msgstr "Número de série" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Número de série da lente" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Número de série da lente" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Versão dos firmware da lente" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Versão dos firmware da lente" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Abertura máxima em focal atual" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Abertura máxima em focal atual" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "" + +#: src/olympusmn.cpp:761 +#, fuzzy +msgid "Extender" +msgstr "Modelo de extensor" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Estender número de serial" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Estender número de serial" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Modelo de extensor" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Modelo de extensor" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Versão do extensor de firmware" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Versão do extensor de firmware" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Lentes de Conversão" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Lentes de conversão" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Modelo de luz" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Flash Model" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Versão da flash do firmware" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Versão da flash do firmware" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Número serial da flash" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Etiqueta OlympusEq desconhecido" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +#, fuzzy +msgid "High Speed" +msgstr "Velocidade principal avançada" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "Função principal" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "Velocidade principal avançada" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "Função principal avançada" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "" + +#: src/olympusmn.cpp:797 +#, fuzzy +msgid "Edited (Landscape)" +msgstr "Auto PICT (Paisagem)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +#, fuzzy +msgid "Edited (Portrait)" +msgstr "Auto PICT (Retrato)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "Temporizador de cor PB" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "Ajuste de cinza PB" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "Versão de desenvolvimento bruta" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "Versão de desenvolvimento bruta" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Valor de ajuste da exposição" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Valor de orientação diagonal" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Valor de equilíbrio branco" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Valor do Balanço de Branco" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "Ajuste de nitidez" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "Ajuste fino do Balanço de Branco" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "Ponto cinza" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "Ponto cinza" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Ênfase na saturação" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Ênfase na saturação" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "Ênfase na cor da memória" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "Ênfase na cor da memória" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast Value" +msgstr "Valores do núcleo" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast value" +msgstr "Valores do núcleo" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "Valor de nitidez" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Valor de nitidez" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "" + +#: src/olympusmn.cpp:828 +#, fuzzy +msgid "Settings" +msgstr "Tem ajuste" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Etiqueta OlympusRd Desconhecida" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "Segunda Versão de Desenvolvimento Bruta" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "Segunda versão de desenvolvimento bruta" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Ajuste fino de equilíbrio do branco" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "Saturação PM" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "Contraste PM" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "Nitidiz PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "Filtro preto e branco PM" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "Filtro preto e branco PM" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "Tonalidade de imagem PM" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "Tonalidade de imagem PM" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "Gradação automática" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "Gradação automática" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "Filtro de ruído PM" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "Filtro de ruído no modo imagem" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Etiqueta OlympusRd2 Desconhecida" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "Ligado (2 quadros)" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "Ligado (3 quadros)" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Processamento de imagem secundário-IFD" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Processamento de imagem secundário-IFD" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "Níveis WB RB 3000K" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "Níveis WB RB 3000K" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "Níveis WB RB 3300K" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "Níveis WB RB 3300K" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "Níveis WB RB 3600K" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "Níveis WB RB 3600K" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "Níveis WB RB 3900K" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "Níveis WB RB 3900K" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "Níveis WB RB 4000K" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "Níveis WB RB 4000K" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "Níveis WB RB 4300K" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "Níveis WB RB 4300K" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "Níveis WB RB 4500K" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "Níveis WB RB 4500K" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "Níveis WB RB 4800K" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "Níveis WB RB 4800K" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "Níveis WB RB 5300K" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "Níveis WB RB 5300K" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "Níveis WB RB 6000K" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "Níveis WB RB 6000K" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "Níveis WB RB 6600K" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "Níveis WB RB 6600K" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "Níveis WB RB 7500K" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "Níveis WB RB 7500K" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "Níveis WB RB CWB1" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "Níveis WB RB CWB1" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "Níveis WB RB CWB2" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "Níveis WB RB CWB2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "Níveis WB RB CWB3" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "Níveis WB RB CWB3" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "Níveis WB RB CWB4" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "Níveis WB RB CWB4" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "Nível WB G 300K" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "Nível WB G 300K" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "Nível WB G 3300K" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "Nível WB G 3300K" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "Nível WB G 3600K" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "Nível WB G 3600K" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "Nível WB G 3900K" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "Nível WB G 3900K" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "Nível WB G 4000K" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "Nível WB G 4000K" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "Nível WB G 4300K" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "Nível WB G 4300K" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "Nível WB G 4500K" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "Nível WB G 4500K" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "Nível WB G 4800K" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "Nível WB G 4800K" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "Nível WB G 5300K" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "Nível WB G 5300K" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "Nível WB G 6000K" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "Nível WB G 6000K" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "Nível WB G 6600K" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "Nível WB G 6600K" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "Nível WB G 7500K" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "Nível WB G 7500K" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "Nível WB G" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "Nível WB G" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "Potenciador" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Ajustar potenciador" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "Ajustar potenciador" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "Filtrar núcleo" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring Values" +msgstr "Valores do núcleo" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring values" +msgstr "Valores do núcleo" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +#, fuzzy +msgid "Black Level" +msgstr "Nível de preto 2" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Base de ganho" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Base de ganho" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Bits válidos" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Cortar à esquerda" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Cortar à direita" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Cortar ao topo" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Cortar ao topo" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Cortar largura" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Cortar largura" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Cortar altura" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Cortar altura" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "Modo de exposição múltipla" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "Modo de exposição múltipla" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "Taxa de proporção" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "Taxa de proporção" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "Moldura proporcional" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "Quadro proporcional" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +#, fuzzy +msgid "Face Detect" +msgstr "Face detectada" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +#, fuzzy +msgid "Face detect" +msgstr "Face detectada" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "Face detectada" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "Face detectada" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Etiqueta OlimpusIP Desconhecida" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "Quicar ou desligar" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Informação da versão do foco" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Informação da versão do foco" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Auto-focar" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene Detect" +msgstr "Detecta dados da cena" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene detect" +msgstr "Detecta dados da cena" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Ãrea de cena" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Ãrea de cena" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "Detecta dados da cena" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "Detecta dados da cena" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Conta Passo do Zoom" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Conta passo do zoom" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Conta passo do foco" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Passa para Foco infinito" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Passa para Foco infinito" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Passo proximo ao foco" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Passo proximo ao foco" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Flash Externo" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Número do guia de flash externo" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Número do guia de flash externo" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Flash manual" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Flash manual" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Etiqueta OlympusFi desconhecida" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "Etiqueta OlympusFe desconhecida" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "Bom tempo" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "Tungstênio (incandescente)" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "Entardecer ensolarado" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Fluorescente luz-do-dia (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Lâmpada fluorescente (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Fluorescente fresco (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Flourescente branco (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Equalizar níveis de branco" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "Personalizar 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "Versão da informação primária" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "Versão da informação primária" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "Níveis WB_RB usados" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "Níveis WB_RB usados" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "Níveis WB_RB automáticos" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "Níveis WB_RB automáticos" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "Níveis de sombra WB_RB" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "Níveis de sombra WB_RB" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "Níveis WB_RB Nublado" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "níveis WB_RB Nublado" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "Níveis WB_RB de bom tempo" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "níveis WB_RB de bom tempo" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "Níveis WB_RB de tungstênio" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "Níveis WB_RB de tungstênio" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "Níveis WB_RB de luz noturna" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "Níveis WB_RB de luz noturna" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "Níveis WB_RB de luz fluorescente" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "Níveis WB_RB de luz fluorescente" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "Níveis WB_RB de luz branca fluorescente" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "Níveis WB_RB de luz branca fluorescente" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "Níveis WB_RB de luz branca fria fluorescente" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "Níveis WB_RB de luz branca fria fluorescente" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "Níveis WB_RB com fluorescência branca" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "Níveis WB_RB com fluorescência branca" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Cor da matriz 2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Cor da matriz 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Nível de preto 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Nível de preto 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +#, fuzzy +msgid "YCbCr Coefficients" +msgstr "Coeficientes YCbCr" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "Coeficientes YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "Profundidade de pixel válida" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "Profundidade de pixel válida" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Comp de equilíbrio de branco" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Comp de equilíbrio de branco" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "Configuração de saturação" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "Configuração de matiz" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "Configuração de matiz" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "Compensação de exposição CM" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "Compensação de exposição CM" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "Equilíbrio de branco CM" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "Equilíbrio de branco CM" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "Comp de equilíbrio de branco CM" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "Comp de equilíbrio de branco CM" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "Pointo de cinza de equilíbrio de branco CM" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "Pointo de cinza de equilíbrio de branco CM" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "Saturação CM" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "Saturação CM" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "Tonalidade CM" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "Tonalidade CM" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "Contraste CM" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "Contraste CM" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "Nitidez CM" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "Nitidez CM" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "Etiqueta OlympusRI desconhecido" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Selecionado por usuário" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Auto sobrescrita" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvin" + +#: src/olympusmn.cpp:1228 +#, fuzzy +msgid "6500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1229 +#, fuzzy +msgid "7500 Kelvin" +msgstr "4500 Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-AF" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-AF" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "Imager AF" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "Sensor AF" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "Foco suave" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "Pop Art" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "Paleta e cor leve" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "Tom de luz" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "Pin Hole" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "Filme granulado" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "Diorama" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "Processo gradual" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Olho de peixe" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "Desenho" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +#, fuzzy +msgid "Pale & Light Color II" +msgstr "Paleta e cor leve" + +#: src/olympusmn.cpp:1514 +#, fuzzy +msgid "Pop Art II" +msgstr "Pop Art" + +#: src/olympusmn.cpp:1515 +#, fuzzy +msgid "Pin Hole II" +msgstr "Pin Hole" + +#: src/olympusmn.cpp:1516 +#, fuzzy +msgid "Pin Hole III" +msgstr "Pin Hole" + +#: src/olympusmn.cpp:1517 +#, fuzzy +msgid "Grainy Film II" +msgstr "Filme granulado" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Foco suave" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Natureza (cor)" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Assinatura do tempo" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Resolução em x" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Processo gradual" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Natureza (cor)" + +#: src/olympusmn.cpp:1531 +msgid "Watercolor II" +msgstr "" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Diorama" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Gerenciar Interface do Usuário" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Gerenciar Interface do Usuário" + +#: src/olympusmn.cpp:1536 +msgid "Partial Color" +msgstr "" + +#: src/olympusmn.cpp:1537 +msgid "Partial Color II" +msgstr "" + +#: src/olympusmn.cpp:1538 +msgid "Partial Color III" +msgstr "" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "Esquerda (ou n/a)" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "Centralizado (horizontal)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "Centralizado (vertical)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "Superior-esquerdo (horizontal)" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "Superior-centralizado (horizontal)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "Superior-direito (horizontal)" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "Esquerdo (horizontal)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "Meio-esquerdo (horizontal)" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "Meio-direito (horizontal)" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "Direito (horizontal)" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "Inferior-esquerdo (horizontal)" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "Inferior-centralizado (horizontal)" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "Inferior-direito (horizontal)" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "Superior-esquerdo (vertical)" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "Superior-centralizado (vertical)" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "Superior-direito (vertical)" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "Esquerdo (vertical)" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "Meio-esquerdo (vertical)" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "Meio-direito (vertical)" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "Direito (vertical)" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "Inferior-esquerdo (vertical)" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "Inferior-centralizado (vertical)" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "Inferior-direito (vertical)" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "Alvo único" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "Todos os alvos" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "Alvo dinâmico único" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +#, fuzzy +msgid "Very High" +msgstr "Alto mediano" + +#: src/panasonicmn.cpp:60 +#, fuzzy +msgid "Motion Picture" +msgstr "Tonalidade de imagem PM" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Tamanho completo" + +#: src/panasonicmn.cpp:62 +msgid "4k Movie" +msgstr "" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "Auto, botão de foco" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "Auto, contínuo" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Tele-macro" + +#: src/panasonicmn.cpp:104 +msgid "Macro-zoom" +msgstr "" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +#, fuzzy +msgid "Scenery" +msgstr "Ãrea de cena" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Prioridade de velocidade obturadora" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Escrevendo visualização" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Corantes" + +#: src/panasonicmn.cpp:130 +#, fuzzy +msgid "Night scenery" +msgstr "Cena noturna" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "Aparência suave" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +#, fuzzy +msgid "Candlelight" +msgstr "Crepúsculo do computador de mão" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Noite estrelada" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "Alta sensibilidade" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Paisagem auxiliar" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "Foto aerada" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "ISO inteligente" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Quadro branco" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "Alta velocidade de disparo contínuo" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "Inteligência automática" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "Transformação de ponto JPEG" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "FlashBias" + +#: src/panasonicmn.cpp:151 +msgid "Film Grain" +msgstr "" + +#: src/panasonicmn.cpp:152 +msgid "My Color" +msgstr "" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Imagem fotográfica" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Crepúsculo do computador de mão" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Estilo criativo" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +#, fuzzy +msgid "Digital Filter" +msgstr "Filtro digital" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Retrato de crepúsculo" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Tom de luz" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Cena de vento" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Valor do Brilho" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +msgid "Glittering Illuminations" +msgstr "" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Retrato de crepúsculo" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +#, fuzzy +msgid "Clear Sports Shot" +msgstr "Disparo Esportes Avançados" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "Maior (+2)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Menor (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "Maior (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +msgid "Disabled but Required" +msgstr "" + +#: src/panasonicmn.cpp:255 +msgid "Disabled and Not Required" +msgstr "" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "EX ótica" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Telefotográfico" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +#, fuzzy +msgid "Home" +msgstr "Cidade natal" + +#: src/panasonicmn.cpp:294 +#, fuzzy +msgid "Standard (color)" +msgstr "Padrão " + +#: src/panasonicmn.cpp:295 +#, fuzzy +msgid "Dynamic (color)" +msgstr "Natureza (cor)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Natureza (cor)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "Suave (cor)" + +#: src/panasonicmn.cpp:298 +#, fuzzy +msgid "Standard (B&W)" +msgstr "Padrão " + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "Suave (B&W)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Auto parênteses" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +msgid "1st" +msgstr "" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Modelo de extensor" + +#: src/panasonicmn.cpp:368 +msgid "NoAuto" +msgstr "" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Padrão " + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Abaixo à direita" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Tom de luz" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "A Parte de Baixo do Corte" + +#: src/panasonicmn.cpp:399 +msgid "Bottom to Top" +msgstr "" + +#: src/panasonicmn.cpp:405 +msgid "Time Lapse" +msgstr "" + +#: src/panasonicmn.cpp:406 +msgid "Stop-Motion Animation" +msgstr "" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +msgid "Electronic" +msgstr "" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Ajuste do balanço do branco" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "FlashBias" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +#, fuzzy +msgid "Exif version" +msgstr "Resolução Exif" + +#: src/panasonicmn.cpp:458 +#, fuzzy +msgid "Color Effect" +msgstr "Rótulo da cor" + +#: src/panasonicmn.cpp:458 +#, fuzzy +msgid "Color effect" +msgstr "Rótulo da cor" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"Tempo em 1/100 s desde quando a câmera foi ligada até a imagem ser escrita " +"no cartão de memória." + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Modo explosão" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst mode" +msgstr "Modo explosão" + +#: src/panasonicmn.cpp:463 +#, fuzzy +msgid "NoiseReduction" +msgstr "Redução de Ruído de Cor" + +#: src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self Timer" +msgstr "Tempo do temporizador" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Assistente AF" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby (or pet) age 1" +msgstr "Idade de bebê (ou animal de estimação)" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "Modo Zoom Óptico" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "Modo Zoom Óptico" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Localização de hora mundial" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Localização de hora mundial" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "Registro da hora do GPS" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "Programa ISO" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Velocidade principal avançada" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "Registro da hora do GPS" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Face detectada" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Temporizador de cor PB" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Temperatura de cor" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Tem ajuste" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "WB ajusta AB" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "WB ajusta AB. Positivo é uma mudança para deslocar o azul." + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "WB ajusta GM" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "WBAjustaGM. Positivo é uma mudança para deslocar o verde." + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Segunda Cortina" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Redução de ruído de longa exposição" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "AF Ãrea X Posição" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Reconhecimento de face AF" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Número de série da lente" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Inteligência automática" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Versão dos firmware da lente" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Reconhecimento de face AF" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Versão do FlashPix" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Versão da flash do firmware" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Nome da fita" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby name (or pet name)" +msgstr "Idade de bebê (ou animal de estimação)" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +#, fuzzy +msgid "Location" +msgstr "Localização-cidade" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +#, fuzzy +msgid "State" +msgstr "Status" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Inteligência automática" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Modo explosão" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Inteligência automática" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Sem retocar" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Cidade." + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Estilo de imagem" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Ajuste de \"Perfil de Câmera\"." + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "Corte em Ângulo" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Direção de imagem do GPS" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Leitura do manômetro" + +#: src/panasonicmn.cpp:526 +msgid "Internal ND Filter" +msgstr "" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Velocidade do Obturador" + +#: src/panasonicmn.cpp:529 +msgid "Clear Retouch Value" +msgstr "" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "Toque AF" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "Versão do MakerNote" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "Versão do MakerNote" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "Nível do vermelho WB" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "Nível do vermelho WB" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "Nível do verde WB" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "Nível do verde WB" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "Nível do azul WB" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "Nível do azul WB" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "Registro da hora do GPS" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "Registro da hora do GPS" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby (or pet) age 2" +msgstr "Idade de bebê (ou animal de estimação)" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Etiqueta desconhecida PanasonicMakerNote" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Modo Spot Ativado" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "Modo local desligado ou área-3 (alta velocidade)" + +#: src/panasonicmn.cpp:564 +#, fuzzy +msgid "23-area" +msgstr "área-5" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "Focando o ponto" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "área-5" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "Ãrea 1" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "Ãrea 1 (Alta velocidade)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "Ãrea 3 (auto)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "área-3 (esquerda)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "área-3 (centro)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "área-3 (direita)" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Focando o ponto" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +msgid "not set" +msgstr "" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "Versão raw Panacosic" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Sensor de largura" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Sensor de largura" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Sensor de altura" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Sensor de altura" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Sensor de borda superior" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Sensor de borda superior" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Sensor de borda esquerda" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Sensor de borda esquerda" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Equilíbrio de vermelho (encontrado em Digilux 2 RAW imagens)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +#, fuzzy +msgid "Manufacturer" +msgstr "Fabricante de lentes" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "O fabricante do equipamento de gravação" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +#, fuzzy +msgid "Model" +msgstr "Modelo de idade" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "Nome ou número do modelo do equipamento" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "Faixa de compensações" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "Faixa de compensações" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +#, fuzzy +msgid "Orientation" +msgstr "Saturação de verde" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "Linhas por faixa" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "O número de linhas por faixa" + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "Descartar contagem de bytes" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "Descartar contagem de bytes" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "Deslocamento de dados brutos" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "Deslocamento de dados brutos" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +#, fuzzy +msgid "Exif IFD Pointer" +msgstr "GPS em Ponteiro IFD" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "Um ponteiro para o Exif IFD" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "GPS em Ponteiro IFD" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "Um ponteiro para a informação IFD do GPS" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Etiqueta PanasonicRaw desconhecido" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Cena noturna" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Auto, não disparar" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Auto, não disparar" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Auto, não disparar, redução de olhos vermelhos" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Auto, disparado" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Auto, disparado" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Auto, disparado, redução de olhos vermelhos" + +#: src/pentaxmn.cpp:255 +#, fuzzy +msgid "On, Red-eye reduction" +msgstr "Não, redução de olhos-vermelhos" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Ligado, suave" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Ligado, baixa sincronização" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Ligado, baixa sincronização, redução de olhos vermelhos" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "Ligado, sincronização de aparamento de orlas" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Foco panorâmico" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Detecção de contraste AF" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Detecção de contraste AF" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Centro fixo" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "Registrar automaticamente AF" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "Reconhecimento de face AF" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "SeleçãoDePontoAF" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "Centro fixo ou múltiplo" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Superior-centralizado" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Inferior-centralizado" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Multi segmento" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Centro com aumento de peso" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "FluorescenciaLuzDiurna" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "FluorescenciaBrancaDiurna" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "FluorescenciaBranca" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Temperatura de cor" + +#: src/pentaxmn.cpp:423 +#, fuzzy +msgid "User Selected" +msgstr "Selecionado por usuário" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto(LuzDiurna)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Auto (Sombra)" + +#: src/pentaxmn.cpp:430 +#, fuzzy +msgid "Auto (Flash)" +msgstr "Sem flash automático" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (Tungstênio)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (FluorescenciaBrancaDiurna)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (FluorescenciaBrancaDiurna)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (FluorescenciaBranca)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (Nublado)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Pré-definir (Fogos de artifício?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Baixo mediano" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Alto mediano" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Suave mediano" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "Grosseiro mediano" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Muito suave" + +#: src/pentaxmn.cpp:476 +#, fuzzy +msgid "Very Hard" +msgstr "Grosseiro mediano" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Cidade natal" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "" + +#: src/pentaxmn.cpp:494 +#, fuzzy +msgid "Los Angeles" +msgstr "Corte em Ângulo" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "" + +#: src/pentaxmn.cpp:497 +#, fuzzy +msgid "Mexico City" +msgstr "Cidade do licenciante" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "" + +#: src/pentaxmn.cpp:526 +#, fuzzy +msgid "Colombo" +msgstr "InformacaoCor" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "" + +#: src/pentaxmn.cpp:533 +#, fuzzy +msgid "Singapore" +msgstr "Alvo único" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "" + +#: src/pentaxmn.cpp:570 +msgid "Resized" +msgstr "" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Aparado" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Filtro digital" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "Síntese de quadro?" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Programa de alta velocidade" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Programa DOF" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "Programa MTF" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Retrato de cena noturna" + +#: src/pentaxmn.cpp:589 +#, fuzzy +msgid "No Flash" +msgstr "Sem flash automático" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Surfe & neve" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "Iluminação de palco" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "Ruptura noturna" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "Hue azul." + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Cena noturna" + +#: src/pentaxmn.cpp:606 +msgid "Quick Macro" +msgstr "" + +#: src/pentaxmn.cpp:607 +msgid "Forest" +msgstr "" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (Padrão)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (Retrato)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (Paisagem)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (Macro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (Esportivo)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "Modelo de lentes" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Prioridade da velocidade da obturadora" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Prioridade de abertura" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Programar delocamento TV" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Programar deslocamento AV" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Prioridade de abertura (Desligado-Auto-Abertura)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manual (Desligado-Auto-Abertura)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Lâmpada (Desligado-Auto-Abertura)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Prioridade do obturador" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Obturador & Prioridade de abertura AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Obturador & Prioridade de abertura AE(1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "Prioridade de sensitivade AE" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "Prioridade de sensitivade AE (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "Velocidade de Flash X-Sync AE" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "Prioridade de Sensitivade AE (1)" + +#: src/pentaxmn.cpp:646 +msgid "Auto Program (Normal)" +msgstr "" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Programa ISO" + +#: src/pentaxmn.cpp:649 +msgid "Auto Program (MTF)" +msgstr "" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Controle remoto do Flash" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Contínuo (Hi)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +#, fuzzy +msgid "Burst" +msgstr "Modo explosão" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Auto-temporizável (12 segundos)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Auto-temporizável (2 segundos)" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Controle remoto (3 segundos)" + +#: src/pentaxmn.cpp:671 +#, fuzzy +msgid "Remote Control" +msgstr "Controle remoto do Flash" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Alta velocidade de disparo contínuo" + +#: src/pentaxmn.cpp:675 +msgid "HDR Strong 1" +msgstr "" + +#: src/pentaxmn.cpp:676 +msgid "HDR Strong 2" +msgstr "" + +#: src/pentaxmn.cpp:677 +msgid "HDR Strong 3" +msgstr "" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 ou sem lente" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "M-42 ou sem lente" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Lentes de série A" + +#: src/pentaxmn.cpp:970 +#, fuzzy +msgid "Bright" +msgstr "Claro" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "Filme reverso" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Sem parentização extendida" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "" + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Versão do marcador de notas pentax" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Câmera no modo de disparo" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Resolução de uma imagem prévia" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Comprimento de uma imagem prévia" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "Tamanho de um IFD que contém uma imagem prévia" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Identificação de modelo" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Identificação de modelo pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Configuração de qualidade de imagem" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Configuração de tamanho de imagens" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Configuração de modo flash" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Configuração de modo de foco" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Ponto AF selecionado" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "Ponto em foco AF" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "Número-F" + +#: src/pentaxmn.cpp:1195 +#, fuzzy +msgid "ISO sensitivity" +msgstr "Configuração de sensitividade ISO" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Configuração de sensitividade ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "ModoMedicao" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "AutoParentizacao" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "Balanço de cor azul" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Balanço de cor vermelho" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Lente focal" + +#: src/pentaxmn.cpp:1239 +#, fuzzy +msgid "Hometown" +msgstr "Cidade natal" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "DST cidade natal" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Se horário de verão está ativo na cidade natal" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "DST de destino" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Se o horário de verão está ativo no destino" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "DSPFirmwareVersion" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "CPUFirmwareVersion" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Valor de luz" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "O valor calculado de luz da câmera, inclui compensação de exposição" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "Deslocamento de área da imagem" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "Tamanho da imagem visualizada" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Pré-visualizar bordas da imagem" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Ajuste de sensitividade" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Filtro digital" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Temperatura da câmera" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Tom da imagem" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Redução de trepidação" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Informação de redução de informação" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "Expansão de amplitude dinâmica" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Alta redução de barulho ISO" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "Ajuste de nitidez" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +#, fuzzy +msgid "Black point" +msgstr "Ponto cinza" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Ponto branco" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "InformacaoDisparo" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "AEInfo" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "InformacaoLente" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "InformacaoFlash" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "SegmentosMedidaAE" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "DescarteFlashA" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "DescarteFlashB" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "WB_RGGBLevelsShade" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "WB_RGGBLevelsFluorescentD" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "WB_RGGBLevelsFluorescentN" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "WB_RGGBLevelsFluorescentW" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "WB_RGGBLevelsFlash" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "InformacaoCamera" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "InformacaoBateria" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "InformacaoAF" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "InformacaoCor" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Etiqueta MarcadorNotasPentax desconhecido" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Esquema núcleo de Dublin" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "Esquema de gerenciamento de fotografias digiKam" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "Esquema de interface do programa de imagem do KDE" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "Esquema básico XMP" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "Esquema de gerenciamento de direitos XMP" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "Esquema de gerenciamento de mídia XMP" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "Esquema de bilhetes básicos de trabalho XMP" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "Esquema de texto paginado XMP" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "Esquema dinâmico XMP" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Esquema de fotografia Microsoft" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Esquema Adobe photoshop" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Esquema Adobe PDF" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Esquema Adobe photoshop" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Esquema de câmera bruta" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Esquema Exif para propriedades TIFF" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Propriedades Esquemas de exiv específicas para Exif" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Esquema exif para propriedades adicionais Exif" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "Esquema de cores IPTC" + +#: src/properties.cpp:129 src/properties.cpp:130 +#, fuzzy +msgid "IPTC Extension schema" +msgstr "Esquema de cores IPTC" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "Esquema de formato de dados licença PLUS" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "Esquema iView Media Pro" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "Esquema mídia de expressão" + +#: src/properties.cpp:134 +#, fuzzy +msgid "Microsoft Photo 1.2 schema" +msgstr "Esquema de fotografia Microsoft" + +#: src/properties.cpp:135 +#, fuzzy +msgid "Microsoft Photo RegionInfo schema" +msgstr "Esquema de fotografia Microsoft" + +#: src/properties.cpp:136 +#, fuzzy +msgid "Microsoft Photo Region schema" +msgstr "Esquema de fotografia Microsoft" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "Esquema dinâmico XMP" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "Esquema dinâmico XMP" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "Esquema núcleo de Dublin" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "Esquema núcleo de Dublin" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Esquema Adobe PDF" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Estrutura de corante" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Estrutura de dimensões" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Estrutura de fontes" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Estrutura de miniaturas" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Estrutura de recursos de eventos" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "Estrutura ResourceRef" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Estrutura de versão" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Estrutura de Trabalho básico/Fluxo de trabalho" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "Estrutura da área" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Qualificado para xmp:Identificador" + +#: src/properties.cpp:163 +#, fuzzy +msgid "Contributor" +msgstr "Mídia contribuída" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Contribuidores do recurso (outras pessoas que não sejam autoras)" + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"O tópico espacial ou temporal do recurso, a aplicabilidade espacial do " +"recurso ou a jurisdição sob o qual o recurso é relevante." + +#: src/properties.cpp:166 +#, fuzzy +msgid "Creator" +msgstr "Criador de ferramenta" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" +"Os autores do recurso (listados em ordem de precedência, se significante)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Data(s) que alguma interessante coisa aconteceu ao recurso" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Uma descrição textual do conteúdo do recurso. Múltiplos valores pode estar " +"presentes para idiomas diferentes." + +#: src/properties.cpp:170 src/properties.cpp:1160 +#, fuzzy +msgid "Format" +msgstr "Formato da amostra" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"O formato do arquivo usado para salvar o recurso. Ferramentas e aplicações " +"deveriam definir esta propriedade para salvar o formato dos dados. Pode " +"incluir qualificadores apropriados." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Identificador único do recurso. A melhor prática recomendada é identificar o " +"recurso por meio de uma sequência de caracteres em conformidade a um sistema " +"formal de identificação." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "Um arranjo desordenado especificando as linguagens usadas no recurso." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Uma entidade responsável por fazer o recurso disponível. Exemplos de um " +"publicador incluem uma pessoa, uma organização ou um serviço. Tipicamente, o " +"nome de um publicador deveria ser usado para indicar a entidade." + +#: src/properties.cpp:178 +#, fuzzy +msgid "Relation" +msgstr "Rotação2" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Relacionamentos com outros documentos. A melhor prática recomendada é " +"identificar o recurso relativo por meio de uma sequência de caracteres em " +"conformidade com um sistema formal de identificação." + +#: src/properties.cpp:180 +#, fuzzy +msgid "Rights" +msgstr "Claro" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Declaração de direitos informal, selecionado por idioma. Tipicamente, " +"informação de direitos inclui uma declaração sobre vários direitos de " +"propriedade associado com o recurso, incluindo direito de propriedade " +"intelectual." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Identificador único do trabalho da qual o recurso foi derivado." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Um arranjo desordenado de frases descritivas ou palavras chave que " +"especificam o tópico do conteúdo do recurso." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"O título do documento, ou o nome dado ao recurso. Tipicamente, será um nome " +"pela qual o recurso é formalmente conhecido." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" +"Um tipo de documento; por exemplo, novela, poema ou documento de trabalho." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Lista de etiquetas" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"A lista do caminho completo do caminho de etiquetas como uma sequência de " +"caracteres. A hierarquia do caminho é separado pelo caracter '/' (ex.: " +"\"Cidade/Paris/Monumento/Torre Eiffel\")." + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Legendas nomes de autor" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" +"A lista de todas as legendas de nomes de autores para cada legenda de " +"linguagem alternativa definida em etiqueta XMP padronizados." + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "Rótulos Data Hora Estampas" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" +"A lista de todas as legendas estampas de data e hora para cada legenda de " +"linguagem alternativa definida em etiqueta XMP padronizados." + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Tom da imagem" + +#: src/properties.cpp:197 +#, fuzzy +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" +"Um conteúdo baseado em XML para listar todas as ações processadas nesta " +"imagem com o editor de imagem (como cortar, girar, correção de cor, ajustes " +"etc.)." + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "Configurações de correção de lente" + +#: src/properties.cpp:198 +#, fuzzy +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" +"A lista das configurações das ferramentas de correção de lente usadas para " +"consertar distorções de lente. Inclui Gerenciador de Fila em Lotes e " +"ferramentas de edição de imagem baseadas na biblioteca LensFun." + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Rótulo da cor" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" +"O rótulo da cor atribuído a esse item. Valores possíveis são \"0\": sem " +"rótulo; \"1\": Vermelho; \"2\": Laranja; \"3\": Amarelo; \"4\": Verde; " +"\"5\": Azul; \"6\": Magenta; \"7\": Cinza; \"8\": Preto; \"9\": Branco." + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" +"O rótulo da cor atribuído a esse item. Valores possíveis são \"0\": sem " +"rótulo; \"1\": Vermelho; \"2\": Laranja; \"3\": Amarelo; \"4\": Verde; " +"\"5\": Azul; \"6\": Magenta; \"7\": Cinza; \"8\": Preto; \"9\": Branco." + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Arquivos de entrada Enfuse" + +#: src/properties.cpp:206 +#, fuzzy +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" +"A lista de arquivos processados com o programa Enfuse através da ferramenta " +"ExpoBlending" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "Arquivos de entrada Enfuse" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" +"A lista de arquivos processados com o programa Enfuse através da ferramenta " +"ExpoBlending" + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Configuração da fusão" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" +"A lista de configurações Enfuse usadas para misturar a pilha de imagens com " +"a ferramenta ExpoBlending." + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"Uma matriz desordenado especificando propriedades que foram editados fora da " +"aplicação de autoria. Cada item deve conter um único namespace e XPath " +"separados por um espaço ASCII (U+0020)." + +#: src/properties.cpp:219 src/properties.cpp:1066 +#, fuzzy +msgid "Base URL" +msgstr "Última URL" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"A URL base para URLs relativas no conteúdo do documento. Se este documento " +"contém links para a Internet e estes forem relativos, eles são relativos a " +"esta URL. Esta propriedade provê um meio padrão para URLs relativas " +"incorporadas serem interpretadas por ferramentas. Ferramentas web de autoria " +"devem colocar o valor baseado na sua noção de onde as URLs serão " +"interpretadas." + +#: src/properties.cpp:224 +#, fuzzy +msgid "Create Date" +msgstr "Estilo criativo" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "A data e a hora do recurso foi originalmente criada." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Criador de ferramenta" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"O nome da primeira ferramenta conhecida para criar o recurso. Se um " +"histórico estiver presente nos metadados, esse valor deve ser equivalente a " +"propriedade softwareAgent do xmpMM:History." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Uma matriz não-ordenada de strings de texto que identifica inequivocamente o " +"recurso dentro de um determinado contexto. Um item matriz pode ser " +"qualificado com xmpidq:Scheme para designar o sistema de identificação " +"formal para a conformidade deste identificador. Nota: O propriedade do dc:" +"identifier não é usada porque lhe falta um qualificador de esquema definido " +"e tem sido definido na Especificação XMP como uma simples propriedade de " +"(valor único) ." + +#: src/properties.cpp:233 +#, fuzzy +msgid "Label" +msgstr "Rótulo da cor" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"Uma palavra ou frase curta que identifica um documento como um membro de uma " +"coleção definida pelo usuário. Utilizado para organizar documentos em um " +"navegador de arquivos." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Data dos metadados" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"A data e hora que qualquer metadado desse recurso foi modificado pela última " +"vez. Ele deve ser o mesmo ou mais recente que xmp:ModifyData." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Modificar data" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"A data e hora que o recurso foi modificado pela última vez. Nota: o valor " +"dessa propriedade não é necessariamente igual à data de modificação do " +"sistema de arquivos porque ele é gravado depois que o arquivo é salvo." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +#, fuzzy +msgid "Rating" +msgstr "Taxa percentual" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Um número que indica o status do documento em relação a outros documentos, " +"usado para organizar documentos em um navegador de arquivos. Valores são " +"definidos por usuários dentro de um intervalo definido pela aplicação." + +#: src/properties.cpp:244 +#, fuzzy +msgid "Thumbnails" +msgstr "Estrutura de miniaturas" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Uma matriz alternativa de miniaturas para um arquivo, que pode ter " +"características diferentes, como tamanho ou codificação da imagem." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Certificado on-line de gestão de direitos." + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Indica que isso é um recurso com direitos gerenciados." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "Um array desordenado especificando o(s) dono(s) de um recurso." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Termos de uso" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Manual de instruções sobre como um recurso pode ser usado legalmente." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "Declaração web" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"A localização de uma página que descreve o proprietário e/ou declaração de " +"direitos para este recurso." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Derivados de" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" +"A referência ao documento original do qual este deriva. É uma referência " +"mínima; componentes em falta pode ser considerado como inalterado. Por " +"exemplo, uma nova versão só poderá ter necessidade de especificar o número " +"de ID da instância e versão da versão anterior, ou uma versão só poderá ter " +"a necessidade de especificar o ID da instância e classe entrega do original." + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" +"O identificador comum para todas as versões e interpretações de um " +"documento. Deve ser baseado em um UUID; ver Documentação da Instância de " +"identificações abaixo." + +#: src/properties.cpp:268 +msgid "History" +msgstr "" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" +"Um conjunto ordenado do usuário de alto nível que resultou neste recurso. A " +"intenção é dar aos leitores uma indicação geral das medidas tomadas para " +"fazer as mudanças da versão anterior à esta. A lista deve ser em um nível " +"abstrato; não se destina a ser uma digitação exaustiva ou outra história " +"detalhada." + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "ID de instãncia" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" +"Um identificador para um específico incarnation de um documento, atualizado " +"cada vez que um arquivo é salvo. Deve basear-se em um UUID; Ver Documento e " +"Instância IDs abaixo." + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Gerenciado de" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" +"A referência ao documento como era antes de se tornar gerenciado. Ele é " +"definido quando um documento gerenciado é introduzido em um sistema de " +"gerenciamento de ativos que atualmente não tem dono. Pode ou não pode " +"incluir referências a diferentes sistemas de gestão." + +#: src/properties.cpp:277 +#, fuzzy +msgid "Manager" +msgstr "Administrar para" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" +"O nome do sistema de gestão de ativos que administra este recurso. Junto com " +"xmpMM: ManagerVariant, ele diz que as aplicações do sistema de gestão de " +"ativos mantém contato relativo à esse documento." + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "Administrar para" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" +"Um URI que identifica o gerenciador de recursos ao sistema de gestão de " +"ativos; a presença da propriedade é a indicação formal de que esse recurso é " +"gerenciado. A forma e o conteúdo desta URI é particular ao sistema de gestão " +"de ativos." + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "Gerenciar Interface do Usuário" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" +"Um URI que pode ser usada para acessar informações sobre os recursos " +"gerenciados através de um navegador web. Pode exigir um browser plug-in " +"personalizado." + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "Variante do gerenciador" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" +"Especifica uma variante particular do sistema de gestão de ativos. O formato " +"dessa propriedade é particular ao sistema específico de gestão de activos." + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Classe de entrega" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" +"O nome da classe de entregas para este recurso. Esta propriedade deve estar " +"ausente ou definido como padrão para uma versão do documento que não é uma " +"versão derivada." + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Parâmetros de capitulação" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" +"Pode ser usado para prover parâmetros de capitulação adicional que são tão " +"complexos ou detalhados para encodar em xmpMM: RenditionClass." + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "ID da versão" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" +"O identificador da versão do documento para este recurso. Cada versão de um " +"documento obtêm um novo identificador, usualmente simplificado pelo " +"incremento de inteiros 1, 2, 3... e assim por diante. Sistema de gestão de " +"mídia pode ter outras convenções ou suportar a ramificação que requeira um " +"esquema mais complexo." + +#: src/properties.cpp:295 +#, fuzzy +msgid "Versions" +msgstr "ID da versão" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" +"A história da versão associada com este recurso. Entrada [1] é a versão mais " +"velha conhecida para este documento, entrada [última()] é a versão mais " +"recente. Tipicamente, o sistema de gestão da mídia poderá preencher a " +"informação da versão nos metadados ao checar. Não é garantido que um " +"histórico completo das versões desde o primeiro estarão presente no xmpMM:" +"versões proprietárias. Informações internas da versão podem ser comprimidas " +"ou eliminadas e a versão histórica pode ser truncada em algum ponto." + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Última URL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Obsoleto para proteção a privacidade." + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Capitulação de" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Preterido em favor de xmpMM:DerivadoDe. Uma referência para o documento de " +"que está é a capitulação." + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "Salvar ID" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" +"Obsoleto. Anteriormente usado somente para suportar a propriedade xmpMM:" +"LastUrl." + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Trabalho de referência" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" +"Referências a um arquivo de gerenciamento de trabalho externo para um " +"processo de trabalho em que o documento está sendo usado. Uso de nomes de " +"trabalho está sob o controle do usuário. Usado tipicamente para identificar " +"todos os documentos que são parte de um trabalho particular ou contrato. " +"Aqui estão valores múltiplos porque estes podem ser mais do que um trabalho " +"usando um documento particular a qualquer momento, podendo ser usado para " +"manter informação histórica sobre em quais trabalhos um documento fez parte " +"previamente." + +#: src/properties.cpp:319 +#, fuzzy +msgid "Maximum Page Size" +msgstr "Tamanho de imagem completo" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"O tamanho da maior página no documento (inclusive em documentos contidos)." + +#: src/properties.cpp:320 +#, fuzzy +msgid "Number of Pages" +msgstr "Número de batimentos" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" +"A quantidade de páginas do documento (incluindo nos documentos contidos)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Um conjunto não ordenado de fontes que foram usadas no documento (incluindo " +"quaisquer documentos contidos)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Corantes" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Um conjunto ordenado de corantes (amostras) que foram usados no documento " +"(incluindo quaisquer documentos contidos)." + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Placa de nomes" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Uma matriz ordenada de nomes emplacados que são necessários para imprimir o " +"documento (incluindo qualquer inserção nos documentos)." + +#: src/properties.cpp:329 src/properties.cpp:1285 +#, fuzzy +msgid "Project Reference" +msgstr "Referência do projeto do licenciado" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "A referência ao projeto que criou esse arquivo." + +#: src/properties.cpp:330 src/properties.cpp:1163 +#, fuzzy +msgid "Video Frame Rate" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "A taxa de quadros do vídeo. Um dos: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +#, fuzzy +msgid "Video Frame Size" +msgstr "Campo de ordem para vídeo" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "O tamanho do quadro. Por exemplo: w:720, h: 480, unidade:pixels" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Taxa de aspecto do pixel em vídeo" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" +"A taxa de aspecto, expressada como ht/wd. Por exemplo: \"648/720\" = 0.9" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Profundidade do pixel em vídeo" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"O tamanho em bits de cada componente de cor de um pixel. Padrão Windows 32-" +"bit pixels têm 8 bits por componente. Um dos: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Espaço de cor em vídeo" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"O espaço de cor. Um dos: sRGB (usado pelo Photoshop), CCIR-601 (usado para " +"NTSC), CCIR-709 (usado para HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Modo de vídeo alpha" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "O modo alpha. Um de: linha reta, pré-multiplicado" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "Cor pré-multipla em vídeo alpha" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" +"Um cor em CMYK ou RGB é usada como a cor pré-múltipla quando o modo alpha é " +"pré-multiplicado." + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "Unidade de vídeo alpha é transparente" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "Quando verdadeiro, unidade é clara, quando falso, ela é opaqua." + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Compressor de vídeo" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Compressão de video utilizada. Por exempo, jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Campo de ordem para vídeo" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "Campo de ordem para vídeo. Um dos: superior, inferior, progressivo." + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Pular para baixo" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" +"A amostragem de fase do filme é convertida para (pular para abaixo). Um dos: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"A taxa de amostra de áudio. Pode ser qualquer valor, sendo mas comummente em " +"32000, 41100, ou 48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Tipo de amostra de áudio" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "O tipo de amostra de áudio. Um dos: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Tipo de canal de áudio" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "O tipo de canal de áudio. Um dos: Mono, Stereo, 5.1, 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Compressor de áudio" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "A compressão de áudio usado. Por exemplo, MP3" + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Posicionamento do alto-falante" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" +"Uma descrição dos ângulos dos alto-falantes, com referência do centro à " +"frente, em graus. Por exemplo: \"Esquerda = -30, Direita = 30, Centro = 0, " +"LFE = 45, Surround à Esquerda = -110, Surround à direita= 110\"" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Taxa de dados do arquivo" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" +"A taxa de dados do arquivo em megabytes por segundo. Por exemplo:\"36/10\" = " +"3.6 MB/seg" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Nome da fita" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" +"O nome da fita a qual o clipe foi capturado, como a definição durante o " +"processo de captura." + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Nome da fita alternativa" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" +"Um nome alternativo da fita, definida via a janela do projeto ou pelo " +"diálogo do timecode na Premiere. Se um nome alternativo foi definido e não " +"foi revertido, este nome é mostrado." + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Código de tempo inicial" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" +"O código do tempo do primeiro quadro de vídeo no arquivo, como obtido do " +"dispositivo de controle." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Código do tempo alternativo" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"Um código do tempo definido pelo usuário. Quando especificado, ele é usado " +"ao invés do início do código de tempo." + +#: src/properties.cpp:357 src/properties.cpp:1124 +#, fuzzy +msgid "Duration" +msgstr "Transição gradual" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "A duração do arquivo de mídia." + +#: src/properties.cpp:358 +#, fuzzy +msgid "Scene" +msgstr "Cena de vento" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "O nome da cena." + +#: src/properties.cpp:359 +#, fuzzy +msgid "Shot Name" +msgstr "Placa de nomes" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "O nome da gravação ou tomada." + +#: src/properties.cpp:360 +#, fuzzy +msgid "Shot Date" +msgstr "Modificar data" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "A data e hora em que o vídeo foi filmado." + +#: src/properties.cpp:361 +#, fuzzy +msgid "Shot Location" +msgstr "Localização do Assunto" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"O nome da locação onde o vídeo foi gravado. Por exemplo: \"Oktoberfest, " +"Munique, Alemanha\" Para um posicionamento mais preciso, uso os valores EXIF " +"GPS." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Registro de comentário" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Resgistro de comentários do usuário." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "Uma lista ordenada dos marcadores" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Mídia contribuída" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" +"Uma lista não ordenada de todas as mídias usadas para criar esta mídia." + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "Caminho absoluto para o arquivo de áudio de pico" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"O caminho absoluto para o arquivo de áudio de pico. Se vazio, o arquivo de " +"pico não existe." + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "Caminho relativo para o arquivo de áudio de pico" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"O caminho relativo para o arquivo de áudio de pico. Se vazio, o arquivo de " +"pico não existe." + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Data de modificação do vídeo" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "A data e a hora que o vídeo foi modificado pela última vez." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Data de modificação do áudio" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "A data e a hora em que o áudio foi modificado pela última vez." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Data de modificação do metadado" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "A data e vezes quando o metadado foi modificado pela última vez." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "O nome do artista ou artistas." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "" + +#: src/properties.cpp:372 src/properties.cpp:1054 +#, fuzzy +msgid "The name of the album." +msgstr "O nome da cena." + +#: src/properties.cpp:373 src/properties.cpp:1366 +#, fuzzy +msgid "Track Number" +msgstr "Número de série" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" +"Um valor numérico que indica o fim do arquivo de áudio da sua gravação " +"original." + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Nome do gênero." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "As informações de direitos autorais." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Data em que o título foi lançado." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Nome do compositor." + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Nome do engenheiro." + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Tempo de áudio." + +#: src/properties.cpp:380 +#, fuzzy +msgid "Instrument" +msgstr "Argumento inválido" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Instrumento musical." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Tempo de introdução" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "A duração do tempo de espera para a fila de música." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Deixado de fora" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "O momento para o fade out." + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Relativo tempo estampado" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "O momento inicial da mídia inserida do projeto de áudio." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "" + +#: src/properties.cpp:384 +#, fuzzy +msgid "When true, the clip can be looped seamlessly." +msgstr "Quando verdadeiro, o clipe pode ser retornado continuadamante." + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Número de batimentos" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "O número de batidas." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"A tecla musical do áudio. Um dos: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Modo de trecho" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"O modo de trecho de áudio. Um dos: comprimento fixado, escala de tempo, " +"reamostra, batida emendada, híbrido." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Parâmetros de escala de tempo" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "Parâmetros adicionais para a escala de tempo no modo de trecho." + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Parametros de reamostra" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Parâmetros adicionais para a reamostra no modo de trecho." + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Parâmetros de emenda de batida" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Parâmetros adicionais para a emenda de batida no modo de trecho." + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Assinatura do tempo" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"O compasso da música. Um dos: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, outro." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" +"A escala musical usada na música. Um dos: Maior, Menor, Ambos, Nenhuma. A " +"escala Nenhuma é mais usada por instrumentos sem escala associada, com a " +"bateria." + +#: src/properties.cpp:399 src/tags.cpp:1078 +#, fuzzy +msgid "Camera Serial Number" +msgstr "Número de série da câmera." + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Número de série da câmera." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Data adquirida" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Data adquirida." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Fabricante de flash" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Fabricante de flash." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Modelo de flash." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Última palavra-chave IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Última palavra-chave IPTC." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Última palavra-chave XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Última palavra-chave XMP." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Fabricante de lentes" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Fabricante de lentes." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Modelo de lentes." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Taxa percentual" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Taxa percentual." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +msgid "Private RTK Info" +msgstr "" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Palavras-chaves." + +#: src/properties.cpp:421 +#, fuzzy +msgid "PDF Version" +msgstr "Versão PLUS" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "A versão do arquivo PDF (por exemplo:: 1.0, 1.3, e assim por diante)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Nome da ferramenta que criou o documento PDF." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Posição dos autores" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "Título por linha." + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Redator de legendas." + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Escritor/editor" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Categoria. Limitada a caracteres ASCII de 3-7 bits" + +#: src/properties.cpp:431 +msgid "City." +msgstr "Cidade." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "País/localização primária." + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Crédito." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" +"A data na qual o conteúdo intelectual foi criado (ao invés da data de " +"criação da representação física), seguindo-se as convenções IIM. Por " +"exemplo, uma foto tirada durante a Guerra Civil Americana teria a data de " +"criação durante a época (1861-1865) ao invés da data em que a foto foi " +"digitalizada para arquivamento." + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Manchete." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Instruções especiais." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Fonte." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Província/Estado" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Categoria suplementar." + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Referência original de transmissão." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "Urgência. A faixa válida é 1-8." + +#: src/properties.cpp:452 +msgid "inches" +msgstr "" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "" + +#: src/properties.cpp:457 +#, fuzzy +msgid "Auto Brightness" +msgstr "Valor do Brilho" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Quando verdadeiro, \"brilho\" é ajustado automaticamente." + +#: src/properties.cpp:458 +#, fuzzy +msgid "Auto Contrast" +msgstr "Contraste PM" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Quando verdadeiro, \"contraste\" é ajustado automaticamente." + +#: src/properties.cpp:459 +#, fuzzy +msgid "Auto Exposure" +msgstr "Múltipla exposição" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Quando verdadeiro, a \"Exposição\" é automaticamente ajustada." + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Auto-sombreamento." + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Quando verdadeiro, \"Sombreamento\" é automaticamente ajustado." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Hue azul." + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Ajsute de \"Hue Azul\". Faixa -100 a 100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Saturação de azul" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Ajuste de \"Saturação de Azul\". Faixa -100 a 100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Ajuste de \"Brilho\". Faixa de 0 a +150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Perfil de câmera" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Ajuste de \"Perfil de Câmera\"." + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Azul de aberração cromática." + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Ajuste de \"Aberração Cromática, Conserte Limite de Azul/Amarelo\". Faixa " +"-100 a +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Vermelho de Aberração Cromática." + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Ajuste de \"Aberração Cromática, Conserte Limite de Vermelho/Ciano\". Faixa " +"-100 a +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Redução de Ruído de Cor" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Ajsute de \"Redução de Ruído de Cor\". Faixa de 0 a +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Ajsute de \"Contraste\". Faixa de -50 a +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "Quando \"Tem Corte\" é verdadeiro, topo do retângulo de corte." + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "Quando \"Tem Corte\" é verdadeiro, esquerda do retângulo de corte." + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "A Parte de Baixo do Corte" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" +"Quando \"Tem Corte\" é verdadeiro, a parte de baixo do retângulo de corte." + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Corte à direita" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "Quando \"Tem Corte\" é verdadeiro, direita do retângulo de corte." + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Corte em Ângulo" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "Quando \"Tem Corte\" é verdadeiro, ângulo do retângulo de corte." + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "Largura da imagem cortada resultante em unidades de corte." + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "Altura da imagem cortada resultante em unidades de corte." + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Unidades de corte" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" +"Unidades para Largura de Corte e Altura de Corte. 0=pixels, 1=pol, 2=cm" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Ajuste de \"Exposição\". Faixa de -4.0 a +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Hue Verde" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Ajsute de \"Hue Verde\". Faixa -100 a 100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Saturação de verde" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Ajuste de \"Saturação de Verde\". Faixa -100 a +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Tem corte" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "Quando verdadeiro, a imagem tem um retângulo de corte." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Tem ajuste" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "Quando verdadeiro, ajustes raw de câmera não-padrão." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "Suavização da luminância" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Ajuste da \"Suavização da Luminância\". Faixa de 0 a +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Nome do arquivo raw." + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Nome para o arquivo raw (não um caminho completo)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Hue vermelho." + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Ajuste de \"Hue Vermelho\". Faixa de -100 a +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Saturação de vermelho" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Ajuste de \"Saturação de Vermelho\". Faixa de -100 a +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Ajuste de \"Saturação\". Faixa de -100 a +100." + +#: src/properties.cpp:487 +#, fuzzy +msgid "Shadows" +msgstr "Auto-sombreamento." + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Ajuste de \"Sombreamento\". Faixa de 0 a +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Coloração da Sombra" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Ajuste da \"Coloração da Sombra\". Faixa de -100 a +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Ajuste da \"Nitidez\". Faixa de 0 a +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Ajuste da \"Temperatura\". Faixa de 2000 a 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Ajuste da \"Coloração\". Faixa de -150 a +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Curva de Tonalidade" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" +"Matriz de pontos (inteiro,inteiro) que define uma \"Curva de Tonalidade\"." + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Nome da Curva de Tonalidade" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"O nome da curva de tonalidade descrita pela Curvade Tonalidade. Uma opção " +"dentre: Linear, Contraste Médio, Contraste Forte, Personalizado ou um nome " +"pré-definido pelo usuário." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Versão do plug-in para Camera raw." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Quantidade de vinhetas" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Ajuste de \"Qauntidade de Vinhetas\". Faixa de -100 a +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Ponto médio da Vinheta" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Ajuste do \"Ponto médio da Vinheta\". Faixa de 0 a +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" +"Ajuste de \"Balanço de Branco\". Uma opção dentre: Como tirada, Auto, Luz do " +"dia, Nublado, Sombra, Tungstênio, Fluorescente, Flash, Personalizado" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "TIFF etiqueta 256, 0x100. Largura da imagem em pixels." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +#, fuzzy +msgid "Image Length" +msgstr "Comprimento informado da imagem" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "TIFF etiqueta 257, 0x101. Altura da imagem em pixels." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bits por amostra" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "TIFF etiqueta 258, 0x102. Número de bits por componente em cada canal." + +#: src/properties.cpp:508 src/tags.cpp:434 +#, fuzzy +msgid "Compression" +msgstr "Taxa de compressão" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" +"TIFF etiqueta 259, 0x103. Esquema de compressão: 1 = sem compressão; 6 = " +"JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +#, fuzzy +msgid "Photometric Interpretation" +msgstr "Vermelho de Aberração Cromática." + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "TIFF etiqueta 262, 0x106. Composição do pixel: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" +"TIFF etiqueta 274, 0x112. Orientação:1 = 0th linha no topo, 0th coluna na " +"esquerda 2 = 0th linha no topo, 0th coluna na direita 3 = 0th linha embaixo, " +"0th coluna na direita 4 = 0th linha embaixo, 0th coluna na esquerda 5 = 0th " +"linha na esquerda, 0th coluna no topo 6 = 0th linha na direita, 0th coluna " +"no topo 7 = 0th linha na direita, 0th coluna embaixo 8 = 0th linha na " +"esquerda, 0th coluna embaixo" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Amostras por pixel" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "TIFF etiqueta 277, 0x115. Número de componentes por pixel." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "TIFF etiqueta 284, 0x11C. Layout dos dados:1 = agregado; 2 = planar." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "Sub-amostragem YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" +"TIFF etiqueta 530, 0x212. Razão de amostragem de componentes de crominância: " +"[2, 1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0" + +#: src/properties.cpp:523 src/tags.cpp:720 +#, fuzzy +msgid "YCbCr Positioning" +msgstr "Posição dos autores" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" +"TIFF etiqueta 531, 0x213. Posição dos componentes da crominância versus os " +"da luminância: 1 = centrado; 2 = compartilhado." + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Resolução em x" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "TIFF etiqueta 282, 0x11A. Resolução horizontal em pixels por unidade." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Resolução em y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "TIFF etiqueta 283, 0x11B. Resolução vertical em pixels por unidade." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Unidade de resolução" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"TIFF etiqueta 296, 0x128. Unidade utilizada para a XResolução e YResolução. " +"O valor é uma opção dentre: 2 = polegadas; 3 = centímetros." + +#: src/properties.cpp:529 src/tags.cpp:540 +#, fuzzy +msgid "Transfer Function" +msgstr "Função principal avançada" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" +"TIFF etiqueta 301, 0x12D. Função de transferência para a imagem descrita em " +"estilo tabular com 3 * 256 entradas." + +#: src/properties.cpp:531 src/tags.cpp:572 +#, fuzzy +msgid "White Point" +msgstr "Ponto branco" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "TIFF etiqueta 318, 0x13E. Cromaticidade de ponto branco." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Cromaticidades primárias" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "TIFF etiqueta 319, 0x13F. Cromaticidade das três cores primárias." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" +"TIFF etiqueta 529, 0x211. Coeficientes da matriz para a transformação de RGB " +"para YCbCr." + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Branco e Preto de Referência" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" +"TIFF etiqueta 532, 0x214. Valores para os pontos de branco e preto de " +"referência." + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +#, fuzzy +msgid "Date and Time" +msgstr "Data e hora original" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" +"TIFF etiqueta 306, 0x132 (primário) and EXIF etiqueta 37520, 0x9290 (sub-" +"segundos). Data e hora da criação da imagem (sem fuso horário em EXIF), " +"arquivada em formato ISO 8601, não no formato EXIF original. Esta " +"propriedade inclui o valor do atributo para o EXIF SubsecTime. NOTA: Esta " +"propriedade está arquivada em XMP como xmp:ModifyDate." + +#: src/properties.cpp:541 src/tags.cpp:462 +#, fuzzy +msgid "Image Description" +msgstr "Direção de imagem do GPS" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"TIFF etiqueta 270, 0x10E. Descrição da imagem. Nota: Esta propriedade está " +"arquivada em XMP como dc:description." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "TIFF etiqueta 271, 0x10F. Fabricante do equipamento de gravação." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "TIFF etiqueta 272, 0x110. Nome do modelo ou número do equipamento." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"TIFF etiqueta 305, 0x131. Software ou firmware utilizado para a geração da " +"imagem. Esta propriedade está definida em XMP como xmp:CreatorTool. " + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"TIFF etiqueta 315, 0x13B. Proprietário da imagem, fotógrafo ou criador da " +"imagem. Nota: Esta propriedade está definida em XMP como o primeiro item na " +"matriz dc:creator." + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"TIFF etiqueta 33432, 0x8298. Informação de copyright. Nota: Esta propriedade " +"está definida em XMP como dc:rights." + +#: src/properties.cpp:555 src/tags.cpp:1605 +#, fuzzy +msgid "Exif Version" +msgstr "Resolução Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "EXIF etiqueta 36864, 0x9000. Número da versão do EXIF." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Versão do FlashPix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "EXIF etiqueta 40960, 0xA000. Versão do FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "EXIF etiqueta 40961, 0xA001. Informação sobre o espaço de cores." + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"EXIF etiqueta 37121, 0x9101. Configuração dos componentes nos dados: 4 5 6 0 " +"(se dados RGB comprimidos), 1 2 3 0 (outros casos)." + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Bits Comprimidos por Pixel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"EXIF etiqueta 37122, 0x9102. Modo de compressão utilizado para uma imagem " +"comprimida é indicado em unidades por pixel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Dimensão X do Pixel" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "EXIF etiqueta 40962, 0xA002. Largura válida da imagem, em pixels." + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Dimensão Y do Pixel" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "EXIF etiqueta 40963, 0xA003. Altura válida da imagem, em pixels." + +#: src/properties.cpp:564 src/tags.cpp:1674 +#, fuzzy +msgid "User Comment" +msgstr "Registro de comentário" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "EXIF etiqueta 37510, 0x9286. Comentários do usuário." + +#: src/properties.cpp:565 src/tags.cpp:1716 +#, fuzzy +msgid "Related Sound File" +msgstr "Arquivo relacionado" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"EXIF etiqueta 40964, 0xA004. Um nome de arquivo \"8.3\" para o arquivo de " +"som correspondente." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Data e hora original" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"EXIF etiqueta 36867, 0x9003 (primário) e 37521, 0x9291 (sub-segundos). Data " +"e hora em que a imagem original foi gerada, no formato ISO 8601. Inclui os " +"dados SubSecTimeOriginal do EXIF." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Data e hora digitalizados" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"EXIF etiqueta 36868, 0x9004 (primária) e 37522, 0x9292 (sub-segundos). Data " +"e hora em que a imagem foi arquivada como dados digitais, pode ser o mesmo " +"que DateTimeOriginal se originalmente arquivado na forma digital. Arquivado " +"no formato ISO 8601. Inclui os dados SubSecTimeDigitized do EXIF." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "EXIF etiqueta 33434, 0x829A. Tempo de exposição em segundos." + +#: src/properties.cpp:574 src/properties.cpp:1157 +#, fuzzy +msgid "F Number" +msgstr "Número-F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "EXIF etiqueta 33437, 0x829D. Número F." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" +"EXIF etiqueta 34850, 0x8822. Classe do programa usado para a exposição." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +#, fuzzy +msgid "Spectral Sensitivity" +msgstr "Alta sensibilidade" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "EXIF etiqueta 34852, 0x8824. Sensibilidade espectral de cada canal." + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "Relações de ISO Velocidades." + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"EXIF etiqueta 34855, 0x8827. ISO velocidade e ISO latitude do equipamento de " +"entrada como especificado em ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "FCOE" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"EXIF etiqueta 34856, 0x8828. Função de Conversão Ótico-Eletrônica como " +"especificado em ISO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"EXIF etiqueta 37377, 0x9201. Velocidade do obturador, a unidade é APEX. Veja " +"o Anexo C das especificações do EXIF." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "EXIF etiqueta 37378, 0x9202. Abertura das lentes, a unidade é APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Valor do Brilho" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "EXIF etiqueta 37379, 0x9203. Brilho, a unidade é APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "EXIF etiqueta 37380, 0x9204. Desvio de exposição, a unidade é APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Máximo valor da abertura" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "EXIF etiqueta 37381, 0x9205. Menor número F das lentes, em APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "EXIF etiqueta 37382, 0x9206. Distância do assunto, em metros." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "EXIF etiqueta 37383, 0x9207. Modo de medição." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "EXIF etiqueta 37384, 0x9208. Fonte de iluminação." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" +"EXIF etiqueta 37385, 0x9209. Dados da fonte de iluminação estroboscópica " +"(flash)." + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" +"EXIF etiqueta 37386, 0x920A. Distância focal das lentes, em milímetros." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Ãrea do assunto" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"EXIF etiqueta 37396, 0x9214. A localização e área do assunto principal na " +"cena global." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +#, fuzzy +msgid "Flash Energy" +msgstr "Intensidade do Flash" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" +"EXIF etiqueta 41483, 0xA20B. Energia estroboscópica durante a captura da " +"imagem." + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Resposta de frequência espacial" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"EXIF etiqueta 41484, 0xA20C. Tabela de frequência espacial do equipamento de " +"entrada e os valores de RFE como especificado em ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Resolução x do Plano Focal" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"EXIF etiqueta 41486, 0xA20E. Resolução focal horizontal, medida em pixels " +"por unidade." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Resolução y do Plano Focal" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"EXIF etiqueta 41487, 0xA20F. Resolução focal vertical, medida em pixels por " +"unidade." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +#, fuzzy +msgid "Focal Plane Resolution Unit" +msgstr "Resolução x do Plano Focal" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" +"EXIF etiqueta 41488, 0xA210. Unidade usada para FocalPlaneXResolution e " +"FocalPlaneYResolution." + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Localização do Assunto" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" +"EXIF etiqueta 41492, 0xA214. Localização do assunto principal da cena. O " +"primeiro valor é o pixel horizontal e o segundo valor é o pixel vertical no " +"qual o assunto principal aparece." + +#: src/properties.cpp:600 src/tags.cpp:846 +#, fuzzy +msgid "Exposure Index" +msgstr "Exibir transformação" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" +"EXIF etiqueta 41493, 0xA215. Ãndice de exposição do equipamento de entrada." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +#, fuzzy +msgid "Sensing Method" +msgstr "Método de processamento do GPS" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"EXIF etiqueta 41495, 0xA217. Tipo de sensor da imagem do equipamento de " +"entrada." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "EXIF etiqueta 41728, 0xA300. Indica a fonte da imagem." + +#: src/properties.cpp:603 src/tags.cpp:1771 +#, fuzzy +msgid "Scene Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "EXIF etiqueta 41729, 0xA301. Indfica o tipo de cena." + +#: src/properties.cpp:604 src/tags.cpp:761 +#, fuzzy +msgid "CFA Pattern" +msgstr "Padrão+AF" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" +"EXIF etiqueta 41730, 0xA302. Padrão geométrico da matriz do filtro de cores " +"da detecção da imagem." + +#: src/properties.cpp:605 src/tags.cpp:1781 +#, fuzzy +msgid "Custom Rendered" +msgstr "Nível vermelho WB personalizado" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"EXIF etiqueta 41985, 0xA401. Indica o uso de processamento especial nos " +"dados da imagem." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"EXIF etiqueta 41986, 0xA402. Indica o modo de exposição ajustado quando a " +"imagem foi obtida." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"EXIF etiqueta 41987, 0xA403. Indica o modo de balanço de branco ajustado " +"quando a imagem foi obtida." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Razão de Zoom Digital." + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"EXIF etiqueta 41988, 0xA404. Indica a razão de zoom digital de quando a " +"imagem foi obtida." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Distãncia Focal em Filme de 35 mm" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"EXIF etiqueta 41989, 0xA405. Indica a distância focal equivalente assumindo-" +"se uma câmera de flime de 35 mm, em mm. Um valor de 0 significa que a " +"distância focal é desconhecida. Observe que esta etiqueta difere da etiqueta " +"FocalLength." + +#: src/properties.cpp:612 src/tags.cpp:1806 +#, fuzzy +msgid "Scene Capture Type" +msgstr "Ãrea de cena" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "EXIF etiqueta 41990, 0xA406. Indica o tipo de cena que foi usada." + +#: src/properties.cpp:613 src/tags.cpp:1811 +#, fuzzy +msgid "Gain Control" +msgstr "Modo de controle do Flash" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"EXIF etiqueta 41991, 0xA407. Indica o grau de ajuste de ganho da imagem " +"global." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"EXIF etiqueta 41992, 0xA408. Indica a direção do processamento de contraste " +"aplicado pela câmera." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"EXIF etiqueta 41993, 0xA409. Indica a direção do processamento de saturação " +"aplicado pela câmera." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"EXIF etiqueta 41994, 0xA40A. Indica a direção do processamento de nitidez " +"aplicado pela câmera." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"EXIF etiqueta 41995, 0xA40B. Indica a informação sobre as condições de " +"obtenção de fotos para um modelo particular de câmera." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Faixa de distância do assunto" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "EXIF etiqueta 41996, 0xA40C. Indica a distância ao assunto." + +#: src/properties.cpp:619 src/tags.cpp:1834 +#, fuzzy +msgid "Image Unique ID" +msgstr "ID da imagem" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"EXIF etiqueta 42016, 0xA420. Um identificador atribuído de forma única a " +"cada imagem. Ele é gravado como uma string de 32 caracteres ASCII, " +"equivalentes em notação hexadecimal fixado em 128 bits de comprimento." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +#, fuzzy +msgid "GPS Version ID" +msgstr "ID da versão" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" +"GPS etiqueta 0, 0x00. Uma codificação decimal de cada um dos quatro bytes " +"EXIF utilizando pontos como separadores. O valor corrente é \"2.0.0.0\"." + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Latitude GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" +"GPS etiqueta 2, 0x02 (posição) e 1, 0x01 (Norte/Sul). Indica a latitude." + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Longitude GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" +"GPS etiqueta 4, 0x04 (posição) e 3, 0x03 (Leste/Oeste). Indica a longitude." + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "Altitude de referẽncia do GPS." + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" +"GPS etiqueta 5, 0x05. Indica se a altitude está acima ou abaixo do nível do " +"mar." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "Altitude GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "GPS etiqueta 6, 0x06. Indica a altitude em metros." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "Registro da hora do GPS" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" +"GPS etiqueta 29 (data), 0x1D, e, e GPS marca 7 (tempo), 0x07. Tempo " +"estampado dos dados do GPS, em Tempo Coordenado Universal. Nota: A marca " +"GPSDateStamp é nova em EXIF 2.2. A estampa de tempo do GPS em EXIF 2.1 não " +"inclui uma data. Se não apresenta, o componente de data para o XMP posde ser " +"pego do exif:DateTimeOriginal, ou se isto é também falta do exif:" +"DateTimeDigitized. Se a data não está disponível, não escreva o exif:" +"GPSTimeStamp ao XMP." + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Satélites GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" +"GPS etiqueta 8, 0x08. Informação do satélite, o formato não é especificado." + +#: src/properties.cpp:634 src/tags.cpp:1989 +#, fuzzy +msgid "GPS Status" +msgstr "Status" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" +"GPS etiqueta 9, 0x09. Status do receptor do GPS no momento da criação da " +"imagem." + +#: src/properties.cpp:635 src/tags.cpp:1994 +#, fuzzy +msgid "GPS Measure Mode" +msgstr "Modo de lançamento" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "GPS etiqueta 10, 0x0A. modo de mensuração do GPS, tipo Texto." + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "GPS etiqueta 11, 0x0B. Grau de precisão dos dados para GPS" + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "Referência de velocidade GPS" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "GPS etiqueta 12, 0x0C. Unidades usadas para mensuração da velocidade." + +#: src/properties.cpp:638 src/tags.cpp:2006 +#, fuzzy +msgid "GPS Speed" +msgstr "Velocidade do ISO" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "GPS etiqueta 13, 0x0D. Velocidade do recebedor de movimento do GPS." + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "Faixa de referência GPS" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "GPS etiqueta 14, 0x0E. Referência para direção de movimento." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "Faixa do GPS" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"GPS etiqueta 15, 0x0F. Direção do movimento do GPS, intervalo dos valores " +"entre 0 à 359.99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "Imagem de referência da direção do GPS" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "GPS etiqueta 16, 0x10. Referência para direção de imagem." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "Direção de imagem do GPS" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"GPS etiqueta 17, 0x11. Direção de imagem quando capturada, intervalo de " +"valores entre 0 à 359.99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "Dado do mapa do GPS" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "GPS etiqueta 18, 0x12. Dado da pesquisa geodésica." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "Latitude de destino do GPS" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" +"GPS etiqueta 20, 0x14 (posição) e 19, 0x13 (Norte/Sul). Indica latitude do " +"destino." + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "Longitude de destino do GPS" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" +"GPS etiqueta 22, 0x16 (posição) e 21, 0x15 (Leste/Oeste). Indica longitude " +"do destino." + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "Rolamento de referência do destino do GPS" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "GPS etiqueta 23, 0x17. Referência para a direção do movimento." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "Rolamento do destino do GPS" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "GPS etiqueta 24, 0x18. Rolamento do destino, valores de 0 à 359.99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "Referência de distância do destino do GPS" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "GPS etiqueta 25, 0x19. Unidades usadas para mensurar a velocidade." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "Distância do destino do GPS" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "GPS etiqueta 26, 0x1A. Distância para o destino." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "Método de processamento do GPS" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" +"GPS etiqueta 27, 0x1B. Uma linha de caracteres gravaram o nome do método " +"usado para encontrar o local." + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "Informação da área do GPS" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" +"GPS etiqueta 28, 0x1C. Uma linha de caracteres gravaram o nome da área do " +"GPS." + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "Diferencial do GPS" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"GPS etiqueta 30, 0x1E. Indica se a correção diferencial é aplicada ao " +"receptor do GPS." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"Uma descrição da lente utilizada para tirar a fotografia. Por exemplo, " +"\"70-200 mm f/2.8-4.0\"." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"O número de série da câmera ou corpo da câmera usada para capturar a " +"fotografia." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Informação para contato com o criador" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" +"O criador informações de contato fornece todas as informações necessárias " +"para entrar em contato com o criador deste objeto de notícia e compreende um " +"conjunto de sub-propriedades de endereçamento apropriado." + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Contato Info-endereço" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"A parte de informação de contato do país. Compreende um nome de empresa " +"opcional e toda informação requerida para o localizar a construção ou caixa-" +"postal para que o correio seja enviado." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Contato Info-cidade" + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Informação para contato com o criador" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Contato Info-Estado/Província" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Contato Info-Estado/Província" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Contato Info-código postal" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Contato Info-país" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Informação para contato com o criador" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Contato Info-email" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "A parte de informação de contato do endereço de e-mail." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Contato Info-fone" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Informação para contato com o criador" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Contato Info-web URL" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Informação para contato com o criador" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Gênero intelectual" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" +"Descreve a natureza, característica intelectual ou jornalística de um objeto " +"de notícia, não especificamente o seu conteúdo." + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "Cena IPTC" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" +"Descreve a cena de um conteúdo fotográfico. Especifica um ou mais termos do " +"IPTC \"Cenas-NovosCódigos\". Cada Cena é representada como uma linha de 6 " +"dígitos numa lista não-ordenada." + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "Assunto do código IPTC" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" +"Especifica um ou mais Assuntos da taxonomia IPTC \"Assuntos-NovosCódigos\" " +"para categorizar o conteúdo. Cada Assunto é representado como uma linha de 8 " +"dígitos numa lista não-ordenada." + +#: src/properties.cpp:682 +#, fuzzy +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" +"Nome de um local em que o conteúdo é focado -- também o local mostra uma " +"mídia visual ou referenciada em texto ou mídia de áudio. Este nome do local " +"pode ser também o nome de um sublocalização na cidade ou o nome de um local " +"bem conhecido ou monumento (natural) afora da cidade. No caso de um " +"sublocalização na cidade este elemento está no quarto nível de uma " +"hierarquia geográfica de cima para baixo." + +#: src/properties.cpp:687 +#, fuzzy +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" +"Código do país em que o conteúdo é focado -- também o país mostra uma mídia " +"visual ou referenciada em texto ou mídia de áudio. Este elemento está no " +"primeiro nível do topo de uma hierarquia geográfica de cima para baixo. O " +"código pode ser obtido da ISO 3166 com duas ou três letras de código. O nome " +"completo do país pode ir para o elemento \"País\"." + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "Modelo de informações adicionais" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" +"Informação sobre a etnicidade e outros fatos do(s) modelo(s) numa imagem do " +"modelo liberado" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "Código da Organização em destaque" + +#: src/properties.cpp:697 +#, fuzzy +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" +"Código do vocabulário controlado para identificação que a organização ou " +"empresa que é destacada na imagem." + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "Termo de vocabulário controlado" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" +"Um termo para descrever o conteúdo da imagem por um valor de um Vocabulário " +"Controlado." + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "Modelo de idade" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" +"Idade do(s) modelo(s) humano(s) na época em que esta imagem foi obtida na " +"imagem do modelo lançado." + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "Nome da organização em destaque" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "Nome da organização ou empresa que é apresentado na imagem." + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "Mostar a pessoa" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "Nome de uma pessoa que aparece na imagem." + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "Identificador de imagem digital" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" +"Globalmente o identificador único para esta imagem digital. Ele é criado e " +"aplicado pelo criador de imagem digital no momento de sua criação. este " +"valor não deve ser mudado após este momento." + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "Tipo físico da foto original" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "O tipo do arquivo de fonte digital." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "Nome ou descrição do evento específico em que a foto foi tirada." + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "Altura máxima disponível" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"A altura máxima disponível em pixels da foto original a partir da qual esta " +"foto tenha sido derivada por redução." + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "Largura máxima disponível" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"A largura máxima disponível em pixels da foto original a partir da qual esta " +"foto tenha sido derivada por redução." + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "Entrada do registro" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" +"Tanto um Id do Registro de Item quanto um Id de Registro da Organização para " +"gravar qualquer catalogação desta imagem digital com um registro." + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "Identificador do Registro de Entrada do Item" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" +"Um identificador único criado pelo registro e aplicado pelo criador de " +"imagem digital. Este valor não deve ser alterado depois de ser aplicado. " +"Este identificador é ligado ao Identificador de Registro da Organização " +"correspondente." + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "Identificador do Registro de Entrada da Organização" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" +"Um identificador para registro que emitiu o Id de Registro de Imagem " +"correspondente." + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "Últimos campos IPTC editados." + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" +"A data e opcionalmente a hora quando quaisquer campos dos metadados da foto " +"do IPTC tenham sido editados." + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "Localização mostrada" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "Uma localização mostrada na imagem." + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "Localização criada" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "O local que a foto foi tirada." + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Localização-cidade" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Nome da cidade de um local." + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "Código-ISO da Localização-país" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "O código ISO da localização do país." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Nome da Localização-país" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "O nome de um país de um local." + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "Localização-Província/Estado" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" +"O nome de uma sub-região de um país - uma província ou estado - de uma " +"localização." + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "Localização-Sublocalização" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" +"Nome de uma sublocalização. Este nome da sublocalização poderia ser o nome " +"de uma sublocalização de uma cidade ou o nome de um local bem conhecido ou " +"monumento (natural) afora de uma cidade." + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "Região Localização-Mundo" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "O nome de uma região do mundo de um local." + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "Obra de arte ou objeto na imagem" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "Uma definição de metadados sobre uma obra de arte ou objeto na imagem." + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "Aviso de Obra de arte ou objeto sob direitos autorais" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" +"Contêm qualquer aviso necessário de direitos autorias para reivindicar a " +"propriedade intelectual sob obras de arte ou um objeto na imagem e pode " +"identificar o proprietário atual do direito autoral deste trabalho " +"associados com os direitos de propriedade intelectual." + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "Obra de arte ou objeto-Criador" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" +"Contêm o nome do artista que criou a obra de arte ou um objeto na imagem. " +"Nestes casos onde o artista pode ou não ser identificado, pelo nome da " +"empresa ou organização" + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "Obra de arte ou objeto-Data Criada" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" +"Designa a data e opcionalmente o momento que a obra de arte na imagem foi " +"criada. Isto se refere aos direitos de propriedade intelectual associados à " +"obra de arte ou objetos." + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "Obra de arte ou objeto-Fonte" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" +"A organização ou organismo titular e registrar a obra de arte ou objeto na " +"imagem para fins de inventário." + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "Obra de arte ou objeto-Número do inventário fonte" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" +"O número do inventário emitido pela organização ou organismo responsável e " +"registra a obra de arte ou objeto na imagem." + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "Obra de arte ou objeto-Título" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "Uma referência para a obra de arte ou objeto na imagem." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "Busca de filme" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "Busca de transparẽncia (incluindo slide)" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "Busca de impressão" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "Câmera RAW" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "Câmera TIFF" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "Câmera JPEG" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "Versão PLUS" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "O número da versão das normas PLUS em vigor no momento da transação." + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Licenciado" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" +"Parte ou partes a quem a licença é concedida pelo Licenciante sob a licença " +"em operação" + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "ID da Licença" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "Opcional PLUS-ID identificando cada licenciado." + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "Nome licenciado" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "Nome de cada licenciado." + +#: src/properties.cpp:746 +msgid "End User" +msgstr "Usuário final" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "Ultimamente, parte ou partes fazem uso de imagens sob a licença." + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "ID do usuário final" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "Opcional PLUS-ID identificando cada usuário final." + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "Nome do usuário final" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "Nome de cada usuário final." + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "Licenciante" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "Parte ou partes concedem a licença para o licenciado." + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "ID licenciante" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "Opcional PLUS-ID identificando cada licenciante." + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "Nome do licenciante" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "Nome de cada licenciante." + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "Endereço do licenciante" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "Logradouro do licenciante." + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "Detalhe do endereço do licenciante" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "Detalhes adicionais do endereço de e-mail do licenciante." + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "Cidade do licenciante" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "Nome da cidade do licenciante." + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "Estado ou província do licenciante" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "Nome do estado ou província do licenciante" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "CEP do licenciante" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "CEP ou código postal do licenciante" + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "País do do licenciante" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "Nome do país do licenciante" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "Telefone tipo 1 do licenciante" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "Telefone tipo 1 do licenciante." + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "Telefone 1 do licenciante" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "Telefone número 1 do licenciante." + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "Telefone tipo 2 do licenciante" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "Telefone tipo 2 do licenciante." + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "Telefone 2 do licenciante" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "Telefone número 2 do licenciante" + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "E-mail do licenciante" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "Endereço de e-mail do licenciante." + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "URL do licenciante" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "Endereço da página do licenciante" + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "Notas do licenciante" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" +"Informação suplementar para uso na identificação e contatação com o(s) " +"licenciante(s)." + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "Código do resumo da mídia PLUS" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" +"Um PLUS-linha de código alfanumérica normalizada resumindo o uso de mídia " +"incluída na licença." + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "Data de Início da licença" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "A data em que a licença em vigor." + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "Data final da licença" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "A data em que a licença expira." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "Restrições da mídia" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" +"Restrições limitando o escopo do uso(s) da mídia PLUS incluiu na licença " +"particular para mídia nomeada ou para mídia ainda não especificamente " +"definida na Mídia PLUS Matrix" + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "Restrições da região" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" +"Restrições limitando o escopo da distribuição geográfica para cidades, " +"estados, províncias ou outras áreas específicas a serem incluídas ou " +"excluídas das regiões PLUS especificadas nos usos de mídia especificados na " +"licença." + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "Restrições de produto ou serviço" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" +"Restrições limitando uso da imagem para promoção/associação com o produto " +"nomeado ou serviço." + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "Restrições arquivo de imagem" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" +"Restrições nas mudanças do nome do arquivo da imagem, metadados ou tipo do " +"arquivo." + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "Restrições de alteração de imagem" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" +"Restrições na alteração de imagem por aparar, virar, retocar, colorir, " +"descolorir ou fundir." + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "Restrições de duplicação de imagem" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "Restrições na criação de duplicatadas da imagem." + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "Status de lançamento do modelo" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" +"Resume a disponibilidade e escopo dos lançamentos do modelo autorizando uso " +"de aparências de pessoas que estão na fotografia." + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "ID de lançamento do modelo" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "Identificador opcional associado com cada lançamento de modelo." + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "Divulgação da idade do modelo de menor" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" +"Idade do modelo mais novo capturado na imagem, no momento em que a imagem " +"foi feita." + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "Status da liberação de propriedade" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" +"Resume a disponibilidade e escopo da liberação de propriedade autorizando o " +"uso das propriedades mostradas na fotografia." + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "ID da liberação de propriedade" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "Identificação opicional de cada liberação de propriedade." + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "Outras restrições" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "Restrições adicionais da licença." + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "Linha crédito requerida" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "Atribuiçoes requeridas, se alguma." + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "Aviso de conteúdo adulto" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "Aviso indica a presença de conteúdo não apropriado para menores." + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "Outros requisitos da licença" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "Requisitos adicionais de licença." + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Termos e texto de condições" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Termos e condições para a licença." + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "Termos e URL das condições" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "URL dos termos e condições aplicadas a licença." + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Outras condições de licença" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "Condições adicionais de licença." + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "Identifica o tipo de imagem entregue." + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "ID do licenciador de imagem" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "Identificador opcional atribuido pelo licenciador da imagem." + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "Nome do arquivo de imagem como entregue" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" +"Nome do arquivo de imagem entregue ao licenciado para uso sob a licença." + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "Formato da imagem como entregue" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" +"Formato do arquivo da imagem entregue ao licenciado para uso sob a licença." + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "Tamanho do arquivo da imagem como entregue" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "Tamanho do arquivo de imagem entregue ao licenciado." + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "Status de copyright" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "Status de copyright da imagem." + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "Número de registro do copyright" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" +"Número de registro do copyright, se algum, aplicado a imagem licenciada." + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "Primeira data de publicação" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "A data em que a imagem foi publicada pela primeira vez." + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "Proprietário dos direitos autorais" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" +"Proprietário ou proprietários dos direitos autorais na imagem licenciada." + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "ID do proprietário do copyright" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "IDs a mais opicionais identificando cada proprietário do copyright" + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "Nome do proprietário do copyright" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "Nome de proprietário de copyright." + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "ID do proprietário do copyright" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" +"Identificador opcional atribuído ao proprietário do copyright da imagem." + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Criador da imagem" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "Criador da imagem" + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "ID do criador da imagem" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "IDs a mais opicionais identificando cada criador da imagem." + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "Nome do criador da imagem" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "Nome de criador de imagem" + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "ID do nome do criador da imagem" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "Identificador opcional atribuído ao criador da imagem." + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "ID do fornecedor da imagem" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "ID a mais opicional identificando o fornecedor da Imagem." + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "Nome do fornecedor da imagem" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "Nome de fornecedor da imagem." + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "ID da Imagem do fornecedor da Imagem" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "Identificador opcional atribuído a imagem do fornecedor de Imagem." + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "ID da imagem do licenciado" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "Identificador opicional atribuido a imagem do licenciado." + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "Notas da imagem do licenciado" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "Notas adicionadas pelo licenciado." + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "Outras informações da imagem" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "Informações adicionais da imagem." + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "ID da licença" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "ID a mais opicional atribuido pelo licenciador da licença." + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "ID de transação do licenciador" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" +"Identificados atribuido pelo Licenciador para referencia e uso interno do " +"licenciador." + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "ID da transação do licenciado" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" +"Identificados atribuído pelo licenciado para referencia e uso interno do " +"licenciado." + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "Referência do projeto do licenciado" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "Nome da referência do projeto ou descrição atribuida pelo licenciado." + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "Data de transação da licença" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "A data da transação da licença" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Reutilização" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" +"Indica se a licença é uma repetição ou uma licença inicial. A reutilização " +"pode requisitar que as licenças armazenadas em arquivos entregue " +"anteriormente ao cliente sejam atualizadas." + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "Outros documentos da licença" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" +"Informações de referência para documentos adicionais associados com a " +"licença." + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "Outras informações da licença" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "Informações dicionais de licença." + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "Campo opcional para uso a critério do Licenciante." + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "Campo opcional para uso a critério do Licenciado." + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Personalizar 1-4" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "Aviso de conteúdo adulto requerido" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "Data adquirida" + +#: src/properties.cpp:839 +#, fuzzy +msgid "Protected" +msgstr "SeleçãoDePontoAF" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "Crédito adjacente para a imagem" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "Crédito na área de créditos" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "Crédito na imagem" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "Sem cor" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "Sem corte" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "Sem descolorir" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "Sem virar" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "Sem mesclar" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "Sem retocar" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "Duplicação somente quando necessária sob licença" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "Sem restrições de duplicação" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "Sem duplicação" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "Manter nome de arquivo" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "Manter tipo de arquivo" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "Manter a ID no nome do arquivo" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "Manter metadata" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "Windows Bitmap (BMP)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Negativo Digital (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "PostScript Encapsulado (EPS)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "Formato de Intercâmbio de Gráfico (GIF)" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Formatos de Intercãmbio JPEG (JPG,JIF,JFIF)" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "Imagem Macintosh (PICT)" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "Gráficos Portáveis para Rede (PNG)" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "Documento de Photoshop (PSD)" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "Formato Proprietário de Imagem RAW" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "Formato de Arquivo de Imagem Marcada (TIFF)" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "Foto do Windows Media (HD Photo)" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "Maior que 50 MB" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "Mais que 1 MB" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "Mais que 10 MB" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "Mais que 30 MB" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "Mais que 50 MB" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "Imagem ilustrada" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "Imagem multimedia ou composta" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Imagem fotográfica" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "Modelo de liberação Ilimitado" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "Modelo de liberação limitado ou incompleto" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "Liberação de propriedade ilimitada" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "Liberação de propriedade limitada ou incompleta" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "Repetir uso" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "Identificação de fixação" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Status" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "Uma notação fazendo a imagem única" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Pessoas" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "ConjuntosDeCatálogos" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "Marcadores descritivos dos itens de catálogo por conteúdo" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Regiões" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "Regiões" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "Data da última região que foi criada" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Nome do perfil" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Name of the person (in the given rectangle)" +msgstr "Nome de uma pessoa que aparece na imagem." + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "Retângulo" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Dimensão X do Pixel" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Regiões" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Estrutura de versão" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "Ãrea" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Distância do foco" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Valor de nitidez" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "Extensões" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Palavras-chaves." + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Modo panorâmico" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Software de processamento" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Software de processamento" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +msgid "Projection Type" +msgstr "" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Primeira data de publicação" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +msgid "Last Photo Date" +msgstr "" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Bloquear exposição de flash" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Localização de hora mundial" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Palavras-chaves." + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Taxa de aspecto do pixel em vídeo" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Taxa de aspecto do pixel em vídeo" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +msgid "Attached File Description" +msgstr "" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Nome do arquivo raw." + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Valor do Brilho" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Temperatura da câmera" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "As informações de direitos autorais." + +#: src/properties.cpp:1071 +msgid "Clean Aperture Width" +msgstr "" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Centro com aumento de peso" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Compressor de vídeo" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Profundidade do pixel em vídeo" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "Imprimir combinação de imagem, descrição necessária." + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Informações específicas do vendedor" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Configurações de correção de lente" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Registro de comentário" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned" +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned." +msgstr "" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Janelas de Palavras Chaves" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Compressor de vídeo" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Compressor de vídeo" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Compressor de vídeo" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Taxa de compressão" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Manter tipo de arquivo" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm" +msgstr "" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"EXIF etiqueta 41992, 0xA408. Indica a direção do processamento de contraste " +"aplicado pela câmera." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "A data e a hora que o vídeo foi modificado pela última vez." + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Estilo criativo" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "A Parte de Baixo do Corte" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "Cortar à esquerda" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "Corte à direita" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "Cortar ao topo" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Tempo de introdução" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" + +#: src/properties.cpp:1111 +#, fuzzy +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"EXIF etiqueta 36868, 0x9004 (primária) e 37522, 0x9292 (sub-segundos). Data " +"e hora em que a imagem foi arquivada como dados digitais, pode ser o mesmo " +"que DateTimeOriginal se originalmente arquivado na forma digital. Arquivado " +"no formato ISO 8601. Inclui os dados SubSecTimeDigitized do EXIF." + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Data e hora original" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Reprodução de cor" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"EXIF etiqueta 41988, 0xA404. Indica a razão de zoom digital de quando a " +"imagem foi obtida." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Extensões" + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Information about the Dimensions of the video frame." +msgstr "" +"Informação sobre a etnicidade e outros fatos do(s) modelo(s) numa imagem do " +"modelo liberado" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Preditor" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +#, fuzzy +msgid "Video Display Unit" +msgstr "Gravar exibição" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +msgid "Doc Type Read Version" +msgstr "" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Informação da versão do foco" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "A duração do arquivo de mídia." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Versão PLUS" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Versão PLUS" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Código do tempo alternativo" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +msgid "Equipment" +msgstr "" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Compensação de exposição CM" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Compensação de exposição CM" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "EXIF etiqueta 33434, 0x829A. Tempo de exposição em segundos." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "Detectar extensão de branco e preto" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID" +msgstr "" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Comprimento da célula" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Lente focal" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Nome do arquivo raw." + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name or Absolute File Path" +msgstr "Caminho absoluto para o arquivo de áudio de pico" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Tamanho de imagem completo" + +#: src/properties.cpp:1153 +msgid "File Size, in MB" +msgstr "" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Tipo do sub-arquivo" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "" +"EXIF etiqueta 37386, 0x920A. Distância focal das lentes, em milímetros." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Conta Passo do Zoom" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Cortar altura" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Cortar largura" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +#, fuzzy +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" +"GPS etiqueta 17, 0x11. Direção de imagem quando capturada, intervalo de " +"valores entre 0 à 359.99." + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "GPS etiqueta 16, 0x10. Referência para direção de imagem." + +#: src/properties.cpp:1173 +#, fuzzy +msgid "(North/South). Indicates latitude." +msgstr "" +"GPS etiqueta 2, 0x02 (posição) e 1, 0x01 (Norte/Sul). Indica a latitude." + +#: src/properties.cpp:1174 +#, fuzzy +msgid "(East/West). Indicates longitude." +msgstr "" +"GPS etiqueta 4, 0x04 (posição) e 3, 0x03 (Leste/Oeste). Indica a longitude." + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "GPS etiqueta 18, 0x12. Dado da pesquisa geodésica." + +#: src/properties.cpp:1176 +#, fuzzy +msgid "Satellite information, format is unspecified." +msgstr "" +"GPS etiqueta 8, 0x08. Informação do satélite, o formato não é especificado." + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "Marca temporal do metadatum com senha" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Modo explosão" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +#, fuzzy +msgid "Grouping" +msgstr "Sem corte" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "Handler Description" +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Fabricante de lentes." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Sensor de altura" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Informação de captura" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "Informações adicionais da imagem." + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Informação de captura" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "URL do licenciante" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Informação de captura" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +msgid "Junk Data" +msgstr "" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +msgid "Language." +msgstr "" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Lente focal" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "A duração do arquivo de mídia." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Modelo de lentes." + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Tom de luz" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Tom de luz" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Informação de captura" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Informação de captura" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Última URL" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Equipment Make" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Manufacturer of recording equipment" +msgstr "O fabricante do equipamento de gravação" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Fabricante da câmera" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Versão do MakerNote" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Versão do MakerNote" + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Fabricante de lentes." + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "EXIF etiqueta 37381, 0x9205. Menor número F das lentes, em APEX." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Máximo valor da abertura" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Taxa de dados do arquivo" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Saturação de vermelho" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Versão do MakerNote" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "Código do resumo da mídia PLUS" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Data de modificação do metadado" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +msgid "Medium." +msgstr "" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Data dos metadados" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Data dos metadados" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "ModoMedicao" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Tipo do sub-arquivo" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +msgid "QTime Minor FileType Version" +msgstr "" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Modelo de lentes" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "Nome ou número do modelo do equipamento" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Modificar data" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Contains the modification date of the video" +msgstr "Restrições na criação de duplicatadas da imagem." + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Versão do MakerNote" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +#, fuzzy +msgid "Name of song or the event." +msgstr "Nome de uma pessoa que aparece na imagem." + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "Número das cores" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Total number of colours used" +msgstr "Número de capturas no modo de explosão contínua" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "Número das cores" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Número de batimentos" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Transição gradual" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Name of organization associated with the video." +msgstr "Nome da organização ou empresa que é apresentado na imagem." + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +msgid "Part" +msgstr "" + +#: src/properties.cpp:1248 +msgid "Part." +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +msgid "Performer Keywords" +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Palavras-chaves." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Modo de saturação da imagem" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Modo de saturação da imagem" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Modo de contraste da imagem" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +msgid "Play Selection" +msgstr "" + +#: src/properties.cpp:1258 +msgid "Play Selection." +msgstr "" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Modelo de luz" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "Restrições na criação de duplicatadas da imagem." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Tempo de introdução" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "The time value of the time of the movie poster." +msgstr "O momento inicial da mídia inserida do projeto de áudio." + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Previsão da imagem" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Previsão da imagem" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Visualizar versão" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "A duração do arquivo de mídia." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Previsão da imagem" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "A duração do arquivo de mídia." + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Palavras-chaves." + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Abertura automática" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Abertura automática" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Gravando deslocamento" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Gravando deslocamento" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Outros requisitos da licença" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +#, fuzzy +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"TIFF etiqueta 296, 0x128. Unidade utilizada para a XResolução e YResolução. " +"O valor é uma opção dentre: 2 = polegadas; 3 = centímetros." + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"EXIF etiqueta 41993, 0xA409. Indica a direção do processamento de saturação " +"aplicado pela câmera." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Nome do gênero." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Tempo em sub-segundos" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "The time value for the start time of the current selection." +msgstr "O número da versão das normas PLUS em vigor no momento da transação." + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Informação de redução de informação" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Saturação de vermelho" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "DSPFirmwareVersion" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "O nome da gravação ou tomada." + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Redator de legendas." + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "O nome da gravação ou tomada." + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Janelas de Palavras Chaves" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Palavras-chaves." + +#: src/properties.cpp:1307 +msgid "Source Credits" +msgstr "" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Crédito." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Fonte." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Fonte." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Altura da imagem de multi-explosão" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Largura informada da imagem" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Noite estrelada" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Código de tempo inicial" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Status" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Contagem do obturador" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "Número de batimentos" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Placa de nomes" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Qualidade JPEG" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Contagem de Bytes de corte" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Amostras adicionais" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Código de tempo inicial" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Informação de captura" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Configurações de correção de lente" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle" +msgstr "" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Palavras-chaves." + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Palavras-chaves." + +#: src/properties.cpp:1330 +msgid "Subtitles Language" +msgstr "" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "A data em que a licença expira." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Ãrea do assunto" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Nome da fita" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Configuração de qualidade de imagem" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +msgid "Tag Language" +msgstr "" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Nome da fita" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Estrutura de miniaturas" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Tamanho da imagem visualizada" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Tamanho da imagem visualizada" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Estrutura de miniaturas" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Tamanho da imagem visualizada" + +#: src/properties.cpp:1344 +msgid "Timecode Scale" +msgstr "" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Endereço do bloco de imagem" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Sobre escala" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Número de batimentos" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "Faixa do GPS" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "Track ID" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Versão do MakerNote" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "Track Language" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Data de modificação do vídeo" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Nome da fita" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Número de série" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Informação de captura" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "URL do licenciante" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Programa DOF" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "" +"Este campo indica o comprimento do intervalo de reinício usado nos dados da " +"imagem compactada." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "ID licenciante" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Qualidade JPEG" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Tipo de escala" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Valor de equilíbrio branco" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Sensor de largura" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Classificação do Windows" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By" +msgstr "" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Escrevendo visualização" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +#, fuzzy +msgid "Horizontal resolution in pixels per unit." +msgstr "TIFF etiqueta 282, 0x11A. Resolução horizontal em pixels por unidade." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "A data e a hora que o vídeo foi modificado pela última vez." + +#: src/properties.cpp:1392 +#, fuzzy +msgid "Vertical resolution in pixels per unit." +msgstr "TIFF etiqueta 283, 0x11B. Resolução vertical em pixels por unidade." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "EquilíbrioDeBranco" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bits por amostra" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bits por amostra" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Compressor de áudio" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +msgid "Audio Codec Description" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Informação de captura" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Configuração de modo de foco" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Saturação de vermelho" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Default Stream" +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Borda de parênteses automático" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"A taxa de amostra de áudio. Pode ser qualquer valor, sendo mas comummente em " +"32000, 41100, ou 48000." + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title" +msgstr "" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title." +msgstr "" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Taxa de amostra de áudio" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Gradação automática" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Borda de parênteses automático" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "AutoParentizacao" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Borda de parênteses automático" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Data de modificação do áudio" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Nome do gênero." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Data de modificação do metadado" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "A data e a hora do recurso foi originalmente criada." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "O nome da cena." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Licenciado" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Tom de luz" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +msgid "Access Rights" +msgstr "" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Trabalho de referência" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Gravar exibição" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "ID de instãncia" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "ID da versão" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +msgid "Institution Code" +msgstr "" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +msgid "Collection Code" +msgstr "" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Placa de nomes" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Identificador único do trabalho da qual o recurso foi derivado." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Informação de captura" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "modo optimizador de faixa dinãmico" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID da licença" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "FNúmero manual" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Número de série" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Gravar exibição" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +msgid "Sex" +msgstr "" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Outras condições de licença" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Transição gradual" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +msgid "Disposition" +msgstr "" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Número de série" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Identificação de fixação" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Mídia contribuída" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Altitude de referẽncia do GPS." + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +msgid "Associated Sequences" +msgstr "" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +msgid "Organism Name" +msgstr "" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Amostras adicionais" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Cena à noite" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Amostras adicionais" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +msgid "Event ID" +msgstr "" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Data dos metadados" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Data dos metadados" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Tempo de introdução" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +msgid "Month" +msgstr "" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "A data em que a licença expira." + +#: src/properties.cpp:1673 +msgid "Day" +msgstr "" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +msgid "Verbatim Event Date" +msgstr "" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Formato da amostra" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "Valor da amostra SMin" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Número-F" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Notas do licenciante" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Localização criada" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Localização mostrada" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +msgid "Continent" +msgstr "" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Estado ou província do licenciante" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +msgid "County" +msgstr "" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +msgid "Municipality" +msgstr "" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Local" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Localização mostrada" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Localização criada" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "Latitude de destino do GPS" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "Longitude de destino do GPS" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "Latitude de destino do GPS" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "Longitude GPS" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Trabalho de referência" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Branco e Preto de Referência" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +msgid "Georeference Sources" +msgstr "" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +msgid "Georeference Remarks" +msgstr "" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Informações do GPS" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Âmbar" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1898 +msgid "Bed" +msgstr "" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Identificação de fixação" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Identificação de fixação" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +msgid "Identified By" +msgstr "" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identificador de imagem digital" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Imagem de referência da direção do GPS" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Identificação de fixação" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Identificação de fixação" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Status" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Manter nome de arquivo" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Placa de nomes" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Gravando deslocamento" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "A data em que a imagem foi publicada pela primeira vez." + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Macro ampliação" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +msgid "Order" +msgstr "" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +msgid "Nomenclatural Code" +msgstr "" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +msgid "Resource ID" +msgstr "" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Blocos de Recursos de Imagem" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +msgid "Relationship Of Resource" +msgstr "" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +msgid "Measurement ID" +msgstr "" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Máximo valor da abertura" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +msgid "Measurement Method" +msgstr "" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "A duração do arquivo de mídia." + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Data adquirida" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "O nome da gravação ou tomada." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Categories" +msgstr "" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +#, fuzzy +msgid "Resolution Mode" +msgstr "Resolução em x" + +#: src/sigmamn.cpp:63 +#, fuzzy +msgid "Resolution mode" +msgstr "Resolução em x" + +#: src/sigmamn.cpp:65 +#, fuzzy +msgid "Autofocus Mode" +msgstr "Modo ajuste de foco automático" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Modo ajuste de foco automático" + +#: src/sigmamn.cpp:68 +#, fuzzy +msgid "Focus Setting" +msgstr "Configuração de modo de foco" + +#: src/sigmamn.cpp:69 +#, fuzzy +msgid "Focus setting" +msgstr "Configuração de modo de foco" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Lente gama" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Lente de distância focal" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +#, fuzzy +msgid "Shadow" +msgstr "Coloração da Sombra" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +#, fuzzy +msgid "Highlight" +msgstr "Luz de preenchimento" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Luz de preenchimento" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "Luz de preenchimento x3" + +#: src/sigmamn.cpp:107 +#, fuzzy +msgid "Color Adjustment" +msgstr "Ajuste de nitidez" + +#: src/sigmamn.cpp:108 +#, fuzzy +msgid "Color adjustment" +msgstr "Ajuste fino do Balanço de Branco" + +#: src/sigmamn.cpp:110 +#, fuzzy +msgid "Adjustment Mode" +msgstr "Modo explosão" + +#: src/sigmamn.cpp:111 +#, fuzzy +msgid "Adjustment mode" +msgstr "Ajuste de nitidez" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Auto parênteses" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +#, fuzzy +msgid "Auto bracket" +msgstr "Auto parênteses" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Etiqueta SigmaMakerNote desconhecida" + +#: src/sigmamn.cpp:170 +#, fuzzy +msgid "8-Segment" +msgstr "Multi segmento" + +#: src/sonymn.cpp:131 +#, fuzzy +msgid "Advanced Lv1" +msgstr "Avançado" + +#: src/sonymn.cpp:132 +#, fuzzy +msgid "Advanced Lv2" +msgstr "Avançado" + +#: src/sonymn.cpp:133 +#, fuzzy +msgid "Advanced Lv3" +msgstr "Avançado" + +#: src/sonymn.cpp:134 +#, fuzzy +msgid "Advanced Lv4" +msgstr "Avançado" + +#: src/sonymn.cpp:135 +#, fuzzy +msgid "Advanced Lv5" +msgstr "Avançado" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "Retrato de cena noturna" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "Obturador de alta velocidade" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Retrato de crepúsculo" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Retrato de cena noturna" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "Obturador de sorriso" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "Alta sensibilidade" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "Disparo Esportes Avançados" + +#: src/sonymn.cpp:166 +msgid "Sweep Panorama" +msgstr "" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "Borrão anti-movimento" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "Correção HDR para luz de fundo" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +msgid "Background Defocus" +msgstr "" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "Aparência suave" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "ID da imagem" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "Ligado (Contínuo)" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "Ligado (Capturando)" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "Mais" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Fluorescente branco" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "Fluorescente branca fria" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "Luz branca do dia fluorescente" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Tungstênio (incandescente)" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "FluorescenciaBranca" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Subaquático 1 (água azul)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Subaquático 2 (água verde)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "AF Permanente" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "AF Centralizado" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "Ponto AF" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "Ponto flexível AF" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "Toque AF" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "Foco manual" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "Face detectada" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "Foco fechado" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "Modo multi-explosão" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "Largura da imagem de multi-explosão" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "Altura da imagem de multi-explosão" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "Imagem visualizada JPEG" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "Auto HDR" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "Modo escala de alta definição" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Informação de captura" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "ID do modelo Sony" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "Reprodução de cor" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "Otimizar a escala dinâmica" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "Nota do autor do Minolta" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Tamanho de imagem completo" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Tamanho da imagem visualizada" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Tamanho da imagem visualizada" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "Iluminador AF" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "Qualidade JPEG" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Modo de lançamento" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Número de capturas no modo de explosão contínua" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "Anti-borrão" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "Redução de ruído de longa exposição" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "Auto inteligente" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "Etiqueta Sony1Autor Desconhecida" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Alto contínuo" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Baixo contínuo" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "Baixo otimizador entre parênteses D-Alcance" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "Outono" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "ADI" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "CaixaDeEstilo1" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "Sem flash automático" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "Nível de otimização da escala dinâmica" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "Estilo criativo" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "Valor de zona de combinação" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "Obturador com AF" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "Alta ReduçãoDeRuído ISO" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Estilo de imagem" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Etiqueta de ajuste da câmera Sony1 desconhecida" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Etiqueta de ajuste 2 da câmera Sony1 desconhecida" + +#: src/tags.cpp:188 +#, fuzzy +msgid "Unknown section" +msgstr "Etiqueta OlympusFe desconhecida" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Estrutura de arquivo de imagem" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Gravando deslocamento" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Características do arquivo de imagem" + +#: src/tags.cpp:192 +#, fuzzy +msgid "Other data" +msgstr "Nenhuma etiqueta" + +#: src/tags.cpp:193 +#, fuzzy +msgid "Exif data structure" +msgstr "Estrutura de arquivo de imagem" + +#: src/tags.cpp:195 +#, fuzzy +msgid "Image configuration" +msgstr "Direção de imagem do GPS" + +#: src/tags.cpp:196 +#, fuzzy +msgid "User information" +msgstr "Informações do GPS" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Arquivo relacionado" + +#: src/tags.cpp:198 +#, fuzzy +msgid "Date and time" +msgstr "Data e hora original" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Adquirindo condições de imagem" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Informações do GPS" + +#: src/tags.cpp:201 +#, fuzzy +msgid "Interoperability information" +msgstr "As informações de direitos autorais." + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Informações específicas do vendedor" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Etiqueta do Adobe DNG" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Etiqueta Panasonic RAW" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "etiquetas TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "Etiquetas TIFF do PageMaker 6.0" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Etiquetas OPI do Abode" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Imagem primária" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Miniatura/mostrar imagem" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Imagem primária, Arquivo de multi-paginação" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Miniatura/Mostrar imagem, Arquivo de multi-paginação" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Imagem primária, Máscara de transparência" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Miniatura/Mostrar imagem, Máscara de transparência" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Imagem primária. arquivo de multi-paginação, máscara de transparência" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" +"Miniatura/Mostrar imagem, arquivo de multi-paginação, máscara de " +"transparência" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Dados de imagem em resolução completa" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Dados de imagem em resolução reduzida" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "Uma página única de uma imagem de múltiplas páginas" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "" + +#: src/tags.cpp:252 +#, fuzzy +msgid "CCITT RLE" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "" + +#: src/tags.cpp:258 +#, fuzzy +msgid "Adobe Deflate" +msgstr "Esquema Adobe PDF" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "" + +#: src/tags.cpp:260 +#, fuzzy +msgid "JBIG Color" +msgstr "Temporizador de cor PB" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "Próximo 2-bits RLE" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF comprimido" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "Samsung SRW compactado" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "Pacote de Bits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Padding" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "Imagem monocromárica IT8" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "Binário Lineart IT8" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Filme da pixar (10-bits LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-bits ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Codificação Kodak DCS" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI Log Luminance RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "Pacote SGI Log 24-bits" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF Comprimido" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR Comprimido" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF Comprimido" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "" + +#: src/tags.cpp:290 +#, fuzzy +msgid "Transparency Mask" +msgstr "Imagem primária, Máscara de transparência" + +#: src/tags.cpp:291 src/tags.cpp:330 +#, fuzzy +msgid "CMYK" +msgstr "Não CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Padrão de filtro de cor" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Crú linear" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "Não pontilhado ou meio-tonalizado" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "Pontilhamento ordenado ou técnica de meio-tom" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Processo aleatório" + +#: src/tags.cpp:311 +#, fuzzy +msgid "top, left" +msgstr "Cortar à direita" + +#: src/tags.cpp:312 +#, fuzzy +msgid "top, right" +msgstr "Direitos autorais" + +#: src/tags.cpp:313 +#, fuzzy +msgid "bottom, right" +msgstr "Abaixo à direita" + +#: src/tags.cpp:314 +#, fuzzy +msgid "bottom, left" +msgstr "Abaixo à esquerda" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "" + +#: src/tags.cpp:316 +#, fuzzy +msgid "right, top" +msgstr "Tom de luz" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "Nenhum esquema previsto usado" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Diferenciamento horizontal" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "Não CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "Dados em inteiro sem sinal" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "Dados em inteiro com sinal no complemento de dois" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "Dados em ponto flutuante IEEE" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "Formato de dados indefinidos" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "Não possui índice" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "Indexado" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +#, fuzzy +msgid "Centered" +msgstr "AF Centralizado" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Co-sited" + +#: src/tags.cpp:368 +#, fuzzy +msgid "No flash" +msgstr "Sem flash automático" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Sim, compulsório, retorno de luz não detectada" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Sim, compulsório, retorno de luz detectada" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Sim, não disparou" + +#: src/tags.cpp:373 +#, fuzzy +msgid "Yes, compulsory" +msgstr "Sim, compulsório, redução de olhos-vermelhos" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Sim, compulsório, retorno de luz não detectada" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Sim, compulsório, retorno de luz detectada" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Sim, compulsório, retorno de luz não detectada" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "" + +#: src/tags.cpp:380 +#, fuzzy +msgid "Yes, auto, return light not detected" +msgstr "Sim, compulsório, retorno de luz não detectada" + +#: src/tags.cpp:381 +#, fuzzy +msgid "Yes, auto, return light detected" +msgstr "Sim, compulsório, retorno de luz detectada" + +#: src/tags.cpp:382 +#, fuzzy +msgid "No flash function" +msgstr "Não, sem função de flash" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Não, sem função de flash" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Sim, redução de olhos-vermelhos" + +#: src/tags.cpp:385 +#, fuzzy +msgid "Yes, red-eye reduction, return light not detected" +msgstr "" +"Sim, automático, redução de olhos-vermelhos, retorno de luz não detectado" + +#: src/tags.cpp:386 +#, fuzzy +msgid "Yes, red-eye reduction, return light detected" +msgstr "Sim, automático, redução de olhos-vermelhos, retorno de luz detectado" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Sim, compulsório, redução de olhos-vermelhos" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Sim, compulsório, redução de olhos-vermelhos, retorno de luz não detectada" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "Sim, compulsório, redução de olhos-vermelhos, retorno de luz detectada" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Não, redução de olhos-vermelhos" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Não, automático, redução de olhos-vermelhos" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Sim, automático, redução de olhos-vermelhos" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" +"Sim, automático, redução de olhos-vermelhos, retorno de luz não detectado" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Sim, automático, redução de olhos-vermelhos, retorno de luz detectado" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Leiaute retangular (ou quadrado)" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" +"Layout embaralhado A: mesmo as colunas são deslocadas para baixo 1/2 linha" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" +"Layout embaralhado B: mesmo as colunas são deslocadas para cima 1/2 linha" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" +"Layout embaralhado C: mesmo as linhas são deslocadas para direita 1/2 coluna" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" +"Layout embaralhado D: mesmo as linhas são deslocadas para esquerda 1/2 coluna" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Software de processamento" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "O nome e a versão do software usado no pós-processamento da imagem." + +#: src/tags.cpp:412 +#, fuzzy +msgid "New Subfile Type" +msgstr "Tipo do sub-arquivo" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "A indicação geral do tipo de arquivo contido neste subarquivo." + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "Tipo do sub-arquivo" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"Uma indicação geral de um tipo de arquivo contido nesse sub-arquivo. Este " +"campo está obsoleto. O NovoTipoDeSub-arquivo deve ser usado no lugar." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Arredondar cantos inferior (se aplica somente quando o estilo é redondo, e " +"as fronteiras não são pequenas)" + +#: src/tags.cpp:425 +#, fuzzy +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"O compositor de pixel. No arquivo JPEG comprimido uma marca JPEG é usada em " +"vez de uma etiqueta." + +#: src/tags.cpp:428 +#, fuzzy +msgid "Bits per Sample" +msgstr "Bits por amostra" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"O número de bits por componente de imagem. Nisto o padrão para cada " +"componente de uma imagem é 8 bits, então o valor da etiqueta é 8. Veja " +"também . No arquivo JPEG comprimido uma marca JPEG é usada " +"em vez de uma etiqueta" + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"O esquema de compressão usado para o arquivo de imagem. Enquando a imagem " +"primária é JPEG comprimida, esta designição não é necessária e é omitida. " +"Enquanto a miniatura usada no JPEG comprimido, este valor de etiqueta e " +"setado para 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"O compositor de pixel. No arquivo JPEG comprimido uma marca JPEG é usada em " +"vez de uma etiqueta." + +#: src/tags.cpp:444 +#, fuzzy +msgid "Thresholding" +msgstr "Limitando" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" +"Para arquivos TIFF pretos ou brancos que representam sombras de cinza, a " +"técnica usada para converter de cinza para preto e pixels brancos." + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "Largura da célula" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" +"A largura do pontilhamento ou matriz de meio-tom usado para criar um arquivo " +"de degradê ou arquivo de dois níveis meio-tom." + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "Comprimento da célula" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" +"O comprimento do pontilhamento ou matriz de meio-tom usado para criar um " +"arquivo de degradê ou arquivo de dois níveis meio-tom." + +#: src/tags.cpp:456 +#, fuzzy +msgid "Fill Order" +msgstr "Campo de ordem para vídeo" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "A ordem lógica de bits dentro de um byte" + +#: src/tags.cpp:459 +#, fuzzy +msgid "Document Name" +msgstr "Nome licenciado" + +#: src/tags.cpp:460 +#, fuzzy +msgid "The name of the document from which this image was scanned" +msgstr "A data em que a imagem foi publicada pela primeira vez." + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Uma string de caracteres dando título da imagem. Pode ser um comentário como " +"\"1988 picnic da empresa\" ou parecido. Códigos de caracteres de dois bytes " +"não podem ser utilizados. Quando um código de 2-bytes é necessário, uma tag " +"Exif Private tem que ser utilizada." + +#: src/tags.cpp:470 +#, fuzzy +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"O nome do modelo ou número do modelo do equipamento. Esse é o nome do modelo " +"ou número do DSC, digitalizadores, digitalizador de video ou outro " +"equipamento que gera imagem. Quando o campo é deixado em branco, ele é " +"tratado como desconhecido." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"O nome do modelo ou número do modelo do equipamento. Esse é o nome do modelo " +"ou número do DSC, digitalizadores, digitalizador de video ou outro " +"equipamento que gera imagem. Quando o campo é deixado em branco, ele é " +"tratado como desconhecido." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Para cada corte, o byte é deslocado desse corte. É recomendado isso estar " +"selecionado para o número de bytes cortados não exceda 64 Kbytes. Com a " +"compressão de dados do JPEG essa designação não é necessária e é omitida. " +"Veja também e ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "" + +#: src/tags.cpp:491 +#, fuzzy +msgid "Samples per Pixel" +msgstr "Amostras por pixel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"O número de componentes por pixel. Desde que esses padrões se aplicam as " +"imagens RGB e o YCbCr, o valor para essa opção é 3. Na compressão de dados " +"JPEG uma marca JPEG é usada no lugar dessa opção." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Linhas por corte" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"O número de linhas por corte. Esse é o número de linhas em uma imagem de um " +"corte quando a imagem é divida em cortes. Com a compressão de dados essa " +"designação não é necessária e é omitida. Veja também e " +"." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Contagem de Bytes de corte" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"O número total de bytes para cada corte. Com a compressão de dados JPEG essa " +"designação não é necessária e é omitida." + +#: src/tags.cpp:506 +#, fuzzy +msgid "X-Resolution" +msgstr "Resolução em x" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"O número de pixels por na direção da . Quando a " +"resolução da imagem é desconhecida, 72 [dpi] é designado." + +#: src/tags.cpp:510 +#, fuzzy +msgid "Y-Resolution" +msgstr "Resolução em y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"O número de pixels por na direção da . O mesmo " +"valor que é designado." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Indica se os componentes de pixel são gravados em um pedaço ou em um formato " +"plano. Em arquivos compactados com JPEG é usado uma marca JPEG ao invés " +"dessa opção. Se esse campo não existir, o padrão 1 (pedaço) para TIFF é " +"assumido." + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "Unidade de resposta cinza" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "A precisão da informação contida na CurvaDeRespostaCinza." + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "Curva de resposta de cinza" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" +"Para dados em escala de cinza, a densidade ótica de cada valor possível de " +"pixel." + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "Opções T4" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "Opções de codificação T.4." + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "Opções T6" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "Opções de codificação T.6." + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"A unidade de medição e . A mesme unidade é usada " +"para ambos e . Se a resolução da imagem é " +"desconhecida, 2 (polegadas) é designado." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "FNúmero manual" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Identificador único do trabalho da qual o recurso foi derivado." + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Uma função de transferência para a imagem, descrita em estilo tabular. " +"Normalmente esta tag não é necessária, já que o espaço de cor é especificado " +"na tag de informação sobre espaço de cor ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Esta tag grava o nome e a versão do software ou firmware da camera ou " +"dispositivo de entrada usado para gerar a imagem. O formato detalhado não é " +"especificado, mas é recomendado que o exemplo mostrado seja seguido. Quando " +"o campo estiver em branco, é porque a informação é desconhecida." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Esta tag grava o nome do dono da câmera, fotógrafo ou criador da imagem. O " +"formato detalhado não é especificado, mas é recomendado que a informação " +"seja escrita como mostrado no exemplo para facilitar a interoperabilidade. " +"Quando o campo estiver em branco, é porque a informação é desconhecida. Ex.) " +"\"Dono da câmera, John Smith; Fotógrafo, Michael Brown; Criador da imagem, " +"Ken James\"" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "Computador hospedeiro" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Preditor" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" +"Um preditor é uma operação matemática que é aplicada ao dado da imagem antes " +"de um esquema de codificação ser aplicado." + +#: src/tags.cpp:573 +#, fuzzy +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Uma função de transferência para a imagem, descrita em estilo tabular. " +"Normalmente esta tag não é necessária, já que o espaço de cor é especificado " +"na tag de informação sobre espaço de cor ()." + +#: src/tags.cpp:578 +#, fuzzy +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Uma função de transferência para a imagem, descrita em estilo tabular. " +"Normalmente esta tag não é necessária, já que o espaço de cor é especificado " +"na tag de informação sobre espaço de cor ()." + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Cor do mapa" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" +"Um mapa de cores para imagens da paleta de cor. Este campo define um mapa de " +"cor Vermelho-Verde-Azul (frequentemente chamado uma tabela de consulta) para " +"imagens cor-paleta. Em uma imagem cor-paleta, um valor de pixel é usado como " +"índice em uma tabela de consulta RGB." + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "Dicas de meio-tom" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" +"O propósito do campo DicasDeMeio-tom é transmitir para a função de meio-tom " +"o alcance dos níveis de cinza dentro de uma imagem especificada-" +"colorimetricamente que deve reter detalhe tonal." + +#: src/tags.cpp:593 +#, fuzzy +msgid "Tile Width" +msgstr "Largura da célula" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "Comprimento da célula" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Endereço do bloco de imagem" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"Para cada bloco de imagem, o endereço de byte desse bloco de imagem, " +"comprimido e armazenado em disco. O endereçamento é especificado com relação " +"ao início do arquivo TIFF. Note que isto implica que cada bloco de imagem " +"tem uma posição independente da localização de outros blocos." + +#: src/tags.cpp:605 +#, fuzzy +msgid "Tile Byte Counts" +msgstr "Descartar contagem de bytes" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"Para cada bloco de imagem, o número de (comprimido) bytes neste bloco. Veja " +"Endereço de bloco de imagens para uma descrição de como a quantidade de " +"bytes são ordenados." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "Endereço SubIFD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Ajuste de tinta" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"A definição de tintas usadas em uma imagem (InterpretaçãoFotométrica=5) " +"separada." + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "Nome das tintas" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"O nome de cada tinta usada em uma imagem (InterpretaçãoFotométrica=5) " +"separada." + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "Número das cores" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" +"O número de tintas. Usualmente igual às AmostrasPorPixel, a não ser que haja " +"amostras extras." + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "Alcance do Ponto" + +#: src/tags.cpp:622 +#, fuzzy, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "Os valores dos componentes que correspondem a um 0% dot e 100% dot." + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "Impressora alvo" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" +"Uma descrição do ambiente de impressão para o qual esta separação é " +"destinada.." + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "Amostras adicionais" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" +"Especifica que cada pixel tem m componentes adicionais cuja interpretação é " +"definida por um dos valores listados abaixo." + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "Formato da amostra" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" +"Este campo especifica como interpretar cada amostra de dados num pixel." + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "Valor da amostra SMin" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "Este campo especifica o valor da amostra mínima." + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "Valor de amostra SMax" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "Este campo especifica o valor da amostra máximo." + +#: src/tags.cpp:640 +#, fuzzy +msgid "Transfer Range" +msgstr "Lente gama" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "Caminho de corte" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" +"Um CaminhoClip TIFF é destinado a espelhar o necessário da funcionalidade de " +"criação de caminho do PostScript." + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "Unidades de caminho de clipe X" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"O número de unidades que expandem a largura da imagem, em termos de " +"coordenadas CaminhoClip inteiras." + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "Unidades de caminho de clipe Y" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"O número de unidades que expandem a altura da imagem, em termos de " +"coordenadas CaminhoClip inteiras." + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" +"Imagens indexadas são imagens onde os 'pixels' não representam valores de " +"cor e sim um índice (usualmente 8-bit) em uma tabela de cor separada, o " +"MapaDeCor." + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "Tabelas-Q JPEG" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "Proxy OPI" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" +"ProxyOPI dá informação referente se a imagem é um proxy de baixa resolução " +"de uma imagem de alta resolução (Adobe OPI)." + +#: src/tags.cpp:668 +#, fuzzy +msgid "JPEG Process" +msgstr "Processo gradual" + +#: src/tags.cpp:669 +#, fuzzy +msgid "This field indicates the process used to produce the compressed data" +msgstr "" +"Este campo indica o comprimento do intervalo de reinício usado nos dados da " +"imagem compactada." + +#: src/tags.cpp:671 +#, fuzzy +msgid "JPEG Interchange Format" +msgstr "Formatos de Intercãmbio JPEG (JPG,JIF,JFIF)" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"O endereço para o byte de início (SOI) de dados comprimidos em miniatura " +"JPEG. Isso não é usado para dados de imagem primária JPEG." + +#: src/tags.cpp:675 +#, fuzzy +msgid "JPEG Interchange Format Length" +msgstr "Formatos de Intercãmbio JPEG (JPG,JIF,JFIF)" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"O número de bytes dos dados de miniatura comprimidos do JPEG. Isto não é " +"usado pelos dados da imagem JPEG primária. Miniaturas JPEG não são divididas " +"mas são gravadas como um JPEG contínuo do SOI para EOI. marcadores APPn e " +"COM não deveriam ser gravados. Miniaturas comprimidas devem ser gravadas em " +"não mais de 64 KB, incluindo todos os outros dados a serem gravados no APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "Intervalo do reinício JPEG" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Este campo indica o comprimento do intervalo de reinício usado nos dados da " +"imagem compactada." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "Preditores sem perda JPEG" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" +"Este campo aponta para uma lista de seleção-de-preditores sem perda, um por " +"componente." + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "Transformação de ponto JPEG" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" +"Este campo aponta para uma lista de valores de transformação de ponto, um " +"por componente." + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "Tabelas-Q JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" +"Este campo aponta para uma lista de deslocamentos para tabelas de " +"quantização, uma por componente." + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "Tabelas-DC JPEG" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" +"Este campo aponta para uma lista de deslocamentos para as tabelas DC Huffman " +"ou as tabelas Huffman sem perda, uma por componente." + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "Tabelas-AC JPEG" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" +"Este campo aponta para uma lista de deslocamentos para as tabelas Huffman " +"AC, uma por componente." + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Os coeficientes da matriz de transformação dos dados da imagem de RGB para " +"YCbCr. Nenhum padrão é dado em TIFF; mas aqui o valor dado no Apêndice E, " +"\"Diretrizes de Espaço de cor\", é usado como padrão. O espaço de cor é " +"declarada em uma etiqueta de informação de espaço de cor, com o padrão sendo " +"o valor que dá as melhores características de Interoperabilidade da imagem " +"nesta condição." + +#: src/tags.cpp:715 +#, fuzzy +msgid "YCbCr Sub-Sampling" +msgstr "Sub-amostragem YCbCr" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"A taxa de amostragem de componentes de crominância componentes em relação à " +"componente de luminância. Em JPEG comprimido uma marcação JPEG é utilizada " +"no lugar dessa etiqueta." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"A posição dos componentes de crominância em relação ao componente de " +"luminância. Este campo é designado somente para dados JPEG comprimidos ou " +"dados YCbCr descomprimidos. O padrão TIFF é 1 (centralizado); mas quando Y:" +"Cb:Cr = 4:2:2 recomenda-se neste padrão que 2 (co-instalados) seja utilizado " +"para gravar dados, a fim de melhorar a qualidade da imagem quando " +"visualizadas em sistemas de TV. Quando este campo não existe, o leitor deve " +"assumir o padrão TIFF. No caso de Y:Cb:Cr = 4:2:0, o padrão TIFF " +"(centralizado) é recomendado. Se o leitor não tem a capacidade de suportar " +"os dois tipos de , ele deve seguir o padrão TIFF, " +"independentemente do valor neste campo. É preferível que os leitores sejam " +"capazes de suportar os posicionamentos centralizado e co-localizado." + +#: src/tags.cpp:735 +#, fuzzy +msgid "Reference Black/White" +msgstr "Branco e Preto de Referência" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"O valor do ponto preto de referência e o valor do ponto branco de " +"referência. Não há padrão dado no formato TIFF, mas os valores abaixo são " +"dados como padrão aqui. O espaço de cor é declarado em uma etiqueta de " +"informação do espaço de cor, com o padrão sendo o valor que dá as melhores " +"características de Interoperabilidade da imagem nestas condições." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Metadados XMP (Nota Técnica 9-14-02 da Adobe)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Classificação do Windows" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Tag de avaliação usada pelo Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Porcentagem da Classifação do Windows" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Tag de avaliação usada pelo Windows, valor em percentual" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "ID da imagem" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" +"ImageID é o nome de caminho completo do original, imagem em alta resolução, " +"ou qualquer outra string identificadora que identifica unicamente a imagem " +"original (Adobe OPI)." + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Indica o padrão geométrico da matriz de filtro de cor (CFA) do sensor de " +"imagem quando um sensor de área de une-chip de cor é utilizado. Não se " +"aplica a todos os métodos de detecção" + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Informações de direitos autorais. Neste padrão a etiqueta é usada para " +"indicar os direitos tanto do fotógrafo quanto do editor. É o aviso de " +"direitos da pessoa ou da organização que reivindica os direitos da imagem. A " +"declaração de direitos autorais de interoperabilidade, incluindo data e " +"direitos deve ser escrita neste campo; por exemplo, \"Copyright, John Smith, " +"19xx. Todos os direitos reservados.\". Neste padrão o campo registra tanto " +"os direitos autorais do fotógrafo quanto do editor, com cada um gravado em " +"uma parte separada da declaração. Quando há uma distinção clara entre os " +"direitos autorais do fotógrafo e do editor, estes devem ser escritos na " +"ordem dos direitos do fotógrafo seguido pelos direitos do editor, separados " +"por NULL (neste caso, uma vez que a declaração também acaba com um NULL, " +"existem dois códigos NULL) . Quando apenas os direitos autorais do fotógrafo " +"são dados, ele é finalizado por um código NULL. Quando apenas os direitos " +"autorais do editor são dados, a parte de direitos autorais do fotógrafo " +"consiste de um espaço seguido por um código de terminação NULL, então os " +"direitos autorais do editor são dados. Quando o campo for deixado em branco, " +"ele é tratado como desconhecido." + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "EXIF etiqueta 33434, 0x829A. Tempo de exposição em segundos." + +#: src/tags.cpp:790 src/tags.cpp:1553 +#, fuzzy +msgid "The F number." +msgstr "O número de batidas." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Blocos de Recursos de Imagem" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Um ponteiro para o Exif IFD. Interoperabilidade, Exif IFD tem a mesma " +"estrutura do IFD especificado no formato TIFF. ordinariamente, no entanto, " +"não contém dados de imagem como no caso do TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Perfil Inter Cor" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"Contém um(a) caracterização/perfil de formato de cores InterColor Consortium " +"(ICC)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" + +#: src/tags.cpp:807 +#, fuzzy +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "EXIF etiqueta 34852, 0x8824. Sensibilidade espectral de cada canal." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Um ponteiro para a Informação GPS IFD. A estrutura de Interoperabilidade da " +"Informação GPS IFD, como a de Exif IFD, não tem dados de imagem." + +#: src/tags.cpp:813 src/tags.cpp:1564 +#, fuzzy +msgid "ISO Speed Ratings" +msgstr "Relações de ISO Velocidades." + +#: src/tags.cpp:813 src/tags.cpp:1565 +#, fuzzy +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"EXIF etiqueta 34855, 0x8827. ISO velocidade e ISO latitude do equipamento de " +"entrada como especificado em ISO 12232." + +#: src/tags.cpp:814 +#, fuzzy +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"EXIF etiqueta 34856, 0x8828. Função de Conversão Ótico-Eletrônica como " +"especificado em ISO 14524." + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "" + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "Ajustamento de fuso horário" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" +"Este marcador opcional codifica o fuso horário do relógio da câmera " +"(relativo ao Meridiano de Greenwich) usado para criar o valor do marcador " +"DataTimeOriginal quando a fotografia foi tirada. Ele também pode conter o " +"deslocamento de fuso horário do relógio usado para criar o valor do marcador " +"DateTime quando a imagem foi modificada." + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "Tempo do temporizador" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Data e hora original" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "A data e vezes quando o metadado foi modificado pela última vez." + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Velocidade do Obturador" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Temperatura de equilíbrio do branco" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "O número de batidas." + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Valor de orientação diagonal" + +#: src/tags.cpp:830 src/tags.cpp:1645 +#, fuzzy +msgid "Max Aperture Value" +msgstr "Máximo valor da abertura" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "O nome da cena." + +#: src/tags.cpp:831 src/tags.cpp:1651 +#, fuzzy +msgid "The distance to the subject, given in meters." +msgstr "EXIF etiqueta 37382, 0x9206. Distância do assunto, em metros." + +#: src/tags.cpp:832 src/tags.cpp:1654 +#, fuzzy +msgid "The metering mode." +msgstr "Modo de medição de ponto" + +#: src/tags.cpp:833 src/tags.cpp:1657 +#, fuzzy +msgid "The kind of light source." +msgstr "O nome da cena." + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "" +"EXIF etiqueta 41986, 0xA402. Indica o modo de exposição ajustado quando a " +"imagem foi obtida." + +#: src/tags.cpp:835 +#, fuzzy +msgid "The actual focal length of the lens, in mm." +msgstr "" +"EXIF etiqueta 37386, 0x920A. Distância focal das lentes, em milímetros." + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Número de pixels por FocalPlaneResolutionUnit (37392) na direção ImageWidth " +"para a imagem principal." + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Número de pixels por FocalPlaneResolutionUnit (37392) na direção ImageWidth " +"para a imagem principal." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"Unidade de medida para FocalPlaneXResolution(37390) e FocalPlaneYResolution" +"(37391)." + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" +"Número atribuído para uma imagem, e.g., em uma sequência de imagens " +"encadeadas." + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "Macro ampliação" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security classification assigned to the image." +msgstr "Uma localização mostrada na imagem." + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "Registro do que foi feito na imagem." + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "Indica a localização e a área do assunto principal da cena inteira." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"Codifica o índice de exposição da câmera definido quando a imagem foi " +"capturada." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "TIFF/EP ID Padrão" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"Contém quatro caracteres ASCII representando a versão padrão TIFF/EP de um " +"arquivo TIFF/EP, por exemplo '1', '0', '0', '0'" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "Tipo de sensor de imagem." + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Janelas de Título" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Marcação de título usada pelo Windows, codificada em UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Janelas de Comentários" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de comentário usada pelo Windows, codificado em UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Janelas de Autor" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Marcação de autor usada pelo Windows, codificada em UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Janelas de Palavras Chaves" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de palavra-chave usada pelo Windows, codificado em UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Janelas de assuntos" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Etiqueta de assunto pelo Windows, codificado em UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "Imprimi a Imagem Correspondente" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "Imprimir combinação de imagem, descrição necessária." + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "DNG versão retrocompatível backward versio" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"Este marcador codifica o número da versão de quatro níveis DNG. Para " +"arquivos compatíveis com a versão 1.1.0.0 da especificação DNG, esse " +"marcador deve conter os bytes: 1, 1, 0, 0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "DNG versão retrocompatível backward versio" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Este marcador especifica a versão mais antiga da especificação Digital " +"Negative de para qual arquivo é compatível. Leitores não deveriam tentar ler " +"um arquivo se este marcador especifica um número de versão que é maior que o " +"número de versão da especificação em que leitor foi baseado. Além de " +"verificar os marcadores versão, os leitores deveriam, por todos os " +"marcadores, verificar os tipos, contagens e valores, para verificar se ele é " +"capaz de ler corretamente o arquivo." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"Define um nome único e não localizado para o modelo de câmera que criou a " +"imagem no arquivo raw. Esse nome deve incluir o nome do fabricante para " +"evitar conflitos, e não deve ser localizado, mesmo se o nome da câmera em si " +"é localizado por marcadores diferentes (ver LocalizedCameraModel). Essa " +"string pode ser usada pelo software de leitura para indexar dentro das " +"preferências por modelo e os perfis de substituição." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"Similar ao campo UniqueCameraModel, exceto o nome pode ser localizado por " +"diferentes mercados, para verificar a localização do nome da câmara." + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "Cor Plana CFA" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" +"Provê o mapeamento ente os valores na tag CFAPattern e os números do plano " +"no espaço LinearRaw. Essa é uma tag requerida para imagens não RGB CFA" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "Layout CFA" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "Descreve o leiaute espacial do CFA." + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" +"Descreve uma tabela que mapeia valores armazenados como valores lineares. " +"Esta etiqueta é normalmente usada para aumentar as taxas de compressão, " +"armazenando os dados brutos de forma não-linear com espaços visualmente mais " +"uniformes e com menores níveis de codificação total. Se SamplesPerPixel não " +"for igual a um, essa tabela única se aplica a todas as amostras para cada " +"pixel." + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "Repetição do nível preto Dim" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "Especifica o tamanho padrão de repetição para a etiqueta BlackLevel." + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" +"Especifica a luz zero(a.k.a preto térmico ou preto corrente) do nível de " +"codificação, como uma repetição de padrão. A origem deste padrão é o canto " +"acima a esquerda do retângulo na Ãrea-Ativada. Os valores são armazenados na " +"linha-coluna da amostra do exemplo." + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Nível preto Delta H" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" +"Se o nível de codificação da luz zero é uma função da coluna de imagem, O " +"BlackLevelDeltaH especifíca a diferença entre o nível de codificação da luz " +"zero para cada coluna e o nível padrão da luz zero. Se o SamplesPerPixel não " +"é igual a um, esta tabela única se aplica a todos padrá»—es em cada pixel." + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Nível preto Delta V" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" +"Se o nível de codificação luz zero é uma função da linha de imagem, esta " +"marca especifica a diferença entre o nível de codificação luz zero para cada " +"linha e o nível de codificação base de luz zero. Se SamplesPerPixel não é " +"igual a um, essa única tabela se aplica a todas as amostras para cada pixel." + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Nível de Branco" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" +"Esta etiqueta especifica a codificação de nível totalmente saturado para os " +"valores da amostra bruta. Saturação é causada tanto pelo sensor, por tornar-" +"se altamente não-linear em resposta, quanto o conversor de clipping análogo " +"ao digital da câmera." + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "Sobre escala" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" +"DefaultScale é necessário para câmeras com pixels não-quadrados. Ele " +"especifica os fatores de escala padrão em cada direção para converter a " +"imagem em pixels quadrados. Normalmente, esses fatores são selecionados para " +"preservar aproximadamente a contagem total de pixels. Para as imagens CFA " +"que usam CFALayout igual a 2, 3, 4 ou 5, como a Fujifilm SuperCCD, estes " +"dois valores devem normalmente diferir por um fator de 2.0." + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" +"Imagens brutas frequentemente alojam pixels extras em torno das bordas da " +"imagem final. Estes pixels extras ajudam a evitar defeitos de interpolação " +"perto das bordas da imagem final. DefaultCropOrigin especifica a origem da " +"área da imagem final, em coordenadas de imagem bruta (ou seja, antes que a " +"DefaultScale seja aplicada), em relação ao canto superior esquerdo do " +"retângulo ActiveArea." + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" +"Imagens brutas frequentemente alojam pixels extras em torno das bordas da " +"imagem final. Estes pixels extras ajudam a evitar defeitos de interpolação " +"perto das bordas da imagem final. DefaultCropSize especifica o tamanho da " +"área da imagem final em coordenadas de imagem bruta (ou seja, antes que o " +"DefaultScale seja aplicado)." + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matriz de cor 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" +"ColorMatrix1 define uma matriz de transformação que converte os valores XYZ " +"para valores de referência do espaço natural de cor da câmera, sob a " +"primeira calibração do iluminante. A matriz de valores é armazenada em linha " +"ordenada por varredura. A etiqueta ColorMatrix1 é necessária para todos os " +"arquivos DNG non-monocromáticos." + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matriz de cor 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" +"ColorMatrix2 define uma matriz de transformação que converte os valores XYZ " +"para valores de referência do espaço natural de cor da câmera sob a segunda " +"calibração do iluminante. A matriz de valores é armazenada em linha ordenada " +"por varredura" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "" + +#: src/tags.cpp:978 +#, fuzzy +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"Calibração da câmera 1 define uma matriz de calibração que transforma os " +"valores nativos de espaço de referência da câmera em valores individuais " +"nativos de espaço sob a primeira calibração do iluminante. A matriz de " +"valores é armazenada em linha ordenada por varredura. Essa matriz é " +"armazenada separadamente da matriz especificada pela tag ColorMatrix1 para " +"permitir que conversores de imagem bruta troquem a cor em matrizes mudança " +"de cor baseadas em UniqueCameraModel tag, enquanto tiram proveito de " +"qualquer calibração individual realizada pelo fabricante da câmera." + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"Calibração da câmera 2 define uma matriz de calibração que transforma os " +"valores nativos de espaço de referência da câmera em valores individuais " +"nativos de espaço sob a primeira calibração do iluminante. A matriz de " +"valores é armazenada em linha ordenada por varredura. Essa matriz é " +"armazenada separadamente da matriz especificada pela tag ColorMatrix2 para " +"permitir que conversores de imagem bruta troquem a cor em matrizes mudança " +"de cor baseadas em UniqueCameraModel tag, enquanto tiram proveito de " +"qualquer calibração individual realizada pelo fabricante da câmera." + +#: src/tags.cpp:997 +#, fuzzy +msgid "Reduction Matrix 1" +msgstr "Matriz de cor 1" + +#: src/tags.cpp:998 +#, fuzzy +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"ColorMatrix2 define uma matriz de transformação que converte os valores XYZ " +"para valores de referência do espaço natural de cor da câmera sob a segunda " +"calibração do iluminante. A matriz de valores é armazenada em linha ordenada " +"por varredura" + +#: src/tags.cpp:1004 +#, fuzzy +msgid "Reduction Matrix 2" +msgstr "Matriz de cor 2" + +#: src/tags.cpp:1005 +#, fuzzy +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"ColorMatrix2 define uma matriz de transformação que converte os valores XYZ " +"para valores de referência do espaço natural de cor da câmera sob a segunda " +"calibração do iluminante. A matriz de valores é armazenada em linha ordenada " +"por varredura" + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Como um Tiro Neutro" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "Como um Tiro XY Branco" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "Múltipla exposição" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" +"Especifica o nível de ruído relativo do modelo de câmara, com um valor base " +"de ISO 100, comparado com um modelo de câmera de referência. Uma vez que os " +"níveis de ruído tendem a variar aproximadamente com a raiz quadrada do valor " +"ISO, um conversor de imagem bruta pode usar esse valor, combinado com a ISO " +"atual, para estimar o nível de ruído relativo da imagem atual." + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Nitidiz PM" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "Divisão Verde Bayer" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +#, fuzzy +msgid "Linear Response Limit" +msgstr "Unidade de resposta cinza" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +#, fuzzy +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"O número de série da câmera ou corpo da câmera usada para capturar a " +"fotografia." + +#: src/tags.cpp:1082 +#, fuzzy +msgid "Lens Info" +msgstr "InformacaoLente" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "Intensidade do Flash manual" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "Coloração da Sombra" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "Versão do MakerNote" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +#, fuzzy +msgid "Raw Data Unique ID" +msgstr "Deslocamento de dados brutos" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +#, fuzzy +msgid "Original Raw File Name" +msgstr "Nome do arquivo raw." + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +#, fuzzy +msgid "Active Area" +msgstr "Ãrea de cena" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +#, fuzzy +msgid "Masked Areas" +msgstr "Ãreas AF" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +#, fuzzy +msgid "Current ICC Profile" +msgstr "Perfil Inter Cor" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Trabalho de referência" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Nome do perfil" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Redução de Ruído de Cor" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "Nome do perfil" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Curva de Tonalidade" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +#, fuzzy +msgid "Profile Embed Policy" +msgstr "Nome do perfil" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Direitos autorais" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Matriz de cor 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Matriz de cor 2" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Visualizar versão" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Previsão da imagem" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Tamanho da imagem visualizada" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Espaço de cor em vídeo" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Tamanho da imagem visualizada" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Data da imagem" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Filtro de ruído" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +#, fuzzy +msgid "Unknown IFD tag" +msgstr "Etiqueta OlimpusIP Desconhecida" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +#, fuzzy +msgid "Not defined" +msgstr "Não possui índice" + +#: src/tags.cpp:1413 +#, fuzzy +msgid "Creative program" +msgstr "Estilo criativo" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "" + +#: src/tags.cpp:1415 +#, fuzzy +msgid "Portrait mode" +msgstr "Modo panorâmico" + +#: src/tags.cpp:1416 +#, fuzzy +msgid "Landscape mode" +msgstr "Modelo de lente" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "" + +#: src/tags.cpp:1437 +#, fuzzy +msgid "Tungsten (incandescent light)" +msgstr "Tungstênio (incandescente)" + +#: src/tags.cpp:1439 +#, fuzzy +msgid "Fine weather" +msgstr "Bom tempo" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "" + +#: src/tags.cpp:1442 +#, fuzzy +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Fluorescente luz-do-dia (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +#, fuzzy +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Lâmpada fluorescente (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +#, fuzzy +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Fluorescente fresco (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +#, fuzzy +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Flourescente branco (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +#, fuzzy +msgid "Standard light A" +msgstr "Padrão " + +#: src/tags.cpp:1447 +#, fuzzy +msgid "Standard light B" +msgstr "Padrão " + +#: src/tags.cpp:1448 +#, fuzzy +msgid "Standard light C" +msgstr "Padrão " + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "" + +#: src/tags.cpp:1450 +#, fuzzy +msgid "D65" +msgstr "6:5" + +#: src/tags.cpp:1451 +#, fuzzy +msgid "D75" +msgstr "7:5" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "Ãrea de cor de um chip" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "Ãrea de cor de dois chips" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "Ãrea de cor de três chips" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +#, fuzzy +msgid "Digital still camera" +msgstr "Filtro digital" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Fotografado diretamente" + +#: src/tags.cpp:1489 +#, fuzzy +msgid "Normal process" +msgstr "Processo aleatório" + +#: src/tags.cpp:1490 +#, fuzzy +msgid "Custom process" +msgstr "Processo gradual" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Baixo aumento de ganho" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Alto aumento de ganho" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Baixa redução de ganho" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Alta redução de ganho" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "" + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "Ajuste de sensitividade" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +msgid "ISO Speed Latitude yyy" +msgstr "" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +msgid "ISO Speed Latitude zzz" +msgstr "" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +#, fuzzy +msgid "Date and Time (original)" +msgstr "Data e hora original" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" + +#: src/tags.cpp:1613 +#, fuzzy +msgid "Date and Time (digitized)" +msgstr "Data e hora digitalizados" + +#: src/tags.cpp:1614 +#, fuzzy +msgid "The date and time when the image was stored as digital data." +msgstr "A data e a hora que o vídeo foi modificado pela última vez." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +#, fuzzy +msgid "Compressed Bits per Pixel" +msgstr "Bits Comprimidos por Pixel" + +#: src/tags.cpp:1627 +#, fuzzy +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"EXIF etiqueta 37122, 0x9102. Modo de compressão utilizado para uma imagem " +"comprimida é indicado em unidades por pixel." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +#, fuzzy +msgid "Exposure Bias" +msgstr "Valor de ajuste da exposição" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +#, fuzzy +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "Indica a localização e a área do assunto principal da cena inteira." + +#: src/tags.cpp:1670 +#, fuzzy +msgid "Maker Note" +msgstr "Versão do MakerNote" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Tempo em sub-segundos" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +#, fuzzy +msgid "Sub-seconds Time Original" +msgstr "Tempo de digitalização em sub-segundos" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Tempo de digitalização em sub-segundos" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +#, fuzzy +msgid "FlashPix Version" +msgstr "Versão do FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +#, fuzzy +msgid "Interoperability IFD Pointer" +msgstr "GPS em Ponteiro IFD" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +#, fuzzy +msgid "Focal Plane X-Resolution" +msgstr "Resolução x do Plano Focal" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +#, fuzzy +msgid "Focal Plane Y-Resolution" +msgstr "Resolução y do Plano Focal" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +#, fuzzy +msgid "Exposure index" +msgstr "Exibir transformação" + +#: src/tags.cpp:1760 +#, fuzzy +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Codifica o índice de exposição da câmera definido quando a imagem foi " +"capturada." + +#: src/tags.cpp:1764 +#, fuzzy +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" +"EXIF etiqueta 41495, 0xA217. Tipo de sensor da imagem do equipamento de " +"entrada." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Padrão de filtro de cor" + +#: src/tags.cpp:1777 +#, fuzzy +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Indica o padrão geométrico da matriz de filtro de cor (CFA) do sensor de " +"imagem quando um sensor de área de une-chip de cor é utilizado. Não se " +"aplica a todos os métodos de detecção" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +#, fuzzy +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"EXIF etiqueta 41987, 0xA403. Indica o modo de balanço de branco ajustado " +"quando a imagem foi obtida." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +#, fuzzy +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"EXIF etiqueta 41989, 0xA405. Indica a distância focal equivalente assumindo-" +"se uma câmera de flime de 35 mm, em mm. Um valor de 0 significa que a " +"distância focal é desconhecida. Observe que esta etiqueta difere da etiqueta " +"FocalLength." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +#, fuzzy +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" +"EXIF etiqueta 41991, 0xA407. Indica o grau de ajuste de ganho da imagem " +"global." + +#: src/tags.cpp:1815 +#, fuzzy +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"EXIF etiqueta 41992, 0xA408. Indica a direção do processamento de contraste " +"aplicado pela câmera." + +#: src/tags.cpp:1819 +#, fuzzy +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"EXIF etiqueta 41993, 0xA409. Indica a direção do processamento de saturação " +"aplicado pela câmera." + +#: src/tags.cpp:1823 +#, fuzzy +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"EXIF etiqueta 41994, 0xA40A. Indica a direção do processamento de nitidez " +"aplicado pela câmera." + +#: src/tags.cpp:1827 +#, fuzzy +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"EXIF etiqueta 41995, 0xA40B. Indica a informação sobre as condições de " +"obtenção de fotos para um modelo particular de câmera." + +#: src/tags.cpp:1832 +#, fuzzy +msgid "This tag indicates the distance to the subject." +msgstr "EXIF etiqueta 41996, 0xA40C. Indica a distância ao assunto." + +#: src/tags.cpp:1835 +#, fuzzy +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"EXIF etiqueta 42016, 0xA420. Um identificador atribuído de forma única a " +"cada imagem. Ele é gravado como uma string de 32 caracteres ASCII, " +"equivalentes em notação hexadecimal fixado em 128 bits de comprimento." + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Nome do proprietário do copyright" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Número de série" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Informações específicas do vendedor" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Modelo de lentes" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +#, fuzzy +msgid "Unknown Exif tag" +msgstr "Etiqueta OlympusEq desconhecido" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "" + +#: src/tags.cpp:1891 +#, fuzzy +msgid "Below sea level" +msgstr "Nível do vermelho WB" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "" + +#: src/tags.cpp:1915 +#, fuzzy +msgid "True direction" +msgstr "Redução de trepidação" + +#: src/tags.cpp:1916 +#, fuzzy +msgid "Magnetic direction" +msgstr "Direção de imagem do GPS" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Sem correção" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +#, fuzzy +msgid "GPS Latitude Reference" +msgstr "Altitude de referẽncia do GPS." + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +#, fuzzy +msgid "GPS Longitude Reference" +msgstr "Altitude de referẽncia do GPS." + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +#, fuzzy +msgid "GPS Data Degree of Precision" +msgstr "GPS etiqueta 11, 0x0B. Grau de precisão dos dados para GPS" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +#, fuzzy +msgid "Indicates the speed of GPS receiver movement." +msgstr "GPS etiqueta 13, 0x0D. Velocidade do recebedor de movimento do GPS." + +#: src/tags.cpp:2009 +#, fuzzy +msgid "GPS Track Ref" +msgstr "Faixa do GPS" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +#, fuzzy +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"GPS etiqueta 15, 0x0F. Direção do movimento do GPS, intervalo dos valores " +"entre 0 à 359.99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +#, fuzzy +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"GPS etiqueta 17, 0x11. Direção de imagem quando capturada, intervalo de " +"valores entre 0 à 359.99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Referência de distância do destino do GPS" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +#, fuzzy +msgid "GPS Destination Longitude Reference" +msgstr "Longitude de destino do GPS" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +#, fuzzy +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "GPS etiqueta 24, 0x18. Rolamento do destino, valores de 0 à 359.99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +#, fuzzy +msgid "Indicates the distance to the destination point." +msgstr "EXIF etiqueta 41996, 0xA40C. Indica a distância ao assunto." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +#, fuzzy +msgid "GPS Date Stamp" +msgstr "Registro da hora do GPS" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +#, fuzzy +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" +"GPS etiqueta 30, 0x1E. Indica se a correção diferencial é aplicada ao " +"receptor do GPS." + +#: src/tags.cpp:2084 src/tags.cpp:2085 +#, fuzzy +msgid "Unknown GPSInfo tag" +msgstr "Etiqueta PanasonicRaw desconhecido" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "" + +#: src/tags.cpp:2106 +#, fuzzy +msgid "Related Image File Format" +msgstr "Formato de Arquivo de Imagem Marcada (TIFF)" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Largura informada da imagem" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Comprimento informado da imagem" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +#, fuzzy +msgid "Unknown Exif Interoperability tag" +msgstr "Etiqueta MarcadorNotasPentax desconhecido" + +#: src/tags.cpp:2128 +#, fuzzy +msgid "Offset" +msgstr "VRD Offset" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Etiqueta SigmaMakerNote desconhecida" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +#, fuzzy +msgid "Unknown tag" +msgstr "etiqueta OlympusCs desconhecido" + +#: src/tags.cpp:2688 +#, fuzzy +msgid "Digital zoom not used" +msgstr "Razão de Zoom Digital." + +#: src/tiffimage.cpp:2308 +#, fuzzy +msgid "TIFF header, offset" +msgstr "Deslocamento de área da imagem" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" diff --git a/vendor/exiv2-0.25/po/quot.sed b/vendor/exiv2-0.25/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/vendor/exiv2-0.25/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g diff --git a/vendor/exiv2-0.25/po/remove-potcdate.sin b/vendor/exiv2-0.25/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/vendor/exiv2-0.25/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/vendor/exiv2-0.25/po/ru.po b/vendor/exiv2-0.25/po/ru.po new file mode 100644 index 0000000..9a85428 --- /dev/null +++ b/vendor/exiv2-0.25/po/ru.po @@ -0,0 +1,28329 @@ +# translation of Exiv2 to Russian +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) 2007 Lutz Müller and others. +# Alexandre Prokoudine , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: ru\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2008-05-26 04:03+0300\n" +"Last-Translator: Alexandre Prokoudine \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Ðе удалоÑÑŒ открыть файл\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Размер файла" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Байт" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Тип MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Размер изображениÑ" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Ð’ Ñтом файле не найдено данных Exif\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Модель камеры" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Отметка времени Ñнимка" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Ðомер Ñнимка" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Диафрагма" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Смещение ÑкÑпозиции" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Ð’Ñпышка" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +#, fuzzy +msgid "Flash bias" +msgstr "Ð’Ñпышка Ñработала" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr " (35мм Ñквивалент)" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "РаÑÑтоÑние до объекта" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "СветочувÑтвительноÑть" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Режим ÑкÑпозиции" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Режим замера" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Режим макроÑъёмки" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "КачеÑтво изображениÑ" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Разрешение Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "ЭÑкиз" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Ðичего" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "ÐвторÑкие права" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Комментарий Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Комментарий JPEG" + +#: src/actions.cpp:767 +#, fuzzy +msgid "Preview" +msgstr "Данные ÑÑкиза" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "байт" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Ðи поле" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "ни" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "найдены в Ñтом файле" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Отметка времени ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñнимка в файле отÑутÑтвует" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Ðе удалоÑÑŒ произвеÑти ÑинтакÑичеÑкий разбор отметки времени" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "в файле" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Отметка времени обновлÑетÑÑ Ð´Ð¾" + +#: src/actions.cpp:939 +#, fuzzy +msgid "Erasing thumbnail data" +msgstr "Байт данных ÑÑкиза" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Данные Exif удалÑÑŽÑ‚ÑÑ Ð¸Ð· файла" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Данные IPTC удалÑÑŽÑ‚ÑÑ Ð¸Ð· файла" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Комментарий JPEG удалÑетÑÑ Ð¸Ð· файла" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Данные XMP удалÑÑŽÑ‚ÑÑ Ð¸Ð· файла" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Ð’ Ñнимке нет Exif-ÑÑкиза\n" + +#: src/actions.cpp:1055 +#, fuzzy +msgid "Writing thumbnail" +msgstr "ÑÑкиз" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "в файл" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Ð’ данных Exif нет ÑÑкиза\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +#, fuzzy +msgid "Writing preview" +msgstr "ВыполнÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Ð’ÑтавлÑетÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ð¹ JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Добавить" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Предупреждение" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "значение" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "УÑтановить" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Удалить" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "" + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "не уÑтановлено\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "КоррекциÑ" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "лет" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "меÑÑцев" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "меÑÑц" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "Ñ" + +#: src/actions.cpp:1600 +#, fuzzy +msgid "Can't adjust timestamp by" +msgstr "Ðе удалоÑÑŒ произвеÑти ÑинтакÑичеÑкий разбор отметки времени" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "в" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "" + +#: src/actions.cpp:1708 +#, fuzzy +msgid "No Exif user comment found" +msgstr "Комментарий Exif" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +#, fuzzy +msgid "Setting Exif UNICODE user comment to" +msgstr "Ð’ÑтавлÑетÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ð¹ JPEG" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "ЗапиÑÑŒ данных Exif из" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "ЗапиÑÑŒ данных IPTC из" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "ЗапиÑÑŒ данных XMP из" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "ЗапиÑÑŒ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ JPEG из" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Ðе удалоÑÑŒ запиÑать метаданные в файл" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "У Ñтого файла уже правильное имÑ" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Файл" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "ÑущеÑтвует. ПерезапиÑать [O], переименовать [r] или пропуÑтить [s]?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Файл переименовываетÑÑ Ð²" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "обновлÑетÑÑ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° времени" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Ðе удалоÑÑŒ переименовать" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "ПерезапиÑать" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Выкл" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Вкл" + +#: src/canonmn.cpp:363 +#, fuzzy +msgid "Format 1" +msgstr "Формат" + +#: src/canonmn.cpp:364 +#, fuzzy +msgid "Format 2" +msgstr "Формат" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +#, fuzzy +msgid "On (1)" +msgstr "Вкл" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +#, fuzzy +msgid "On (2)" +msgstr "Вкл" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "ÐеизвеÑтно" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "ÐаÑтройки камеры" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Различные наÑтройки камеры" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "О Ñнимке" + +#: src/canonmn.cpp:386 +#, fuzzy +msgid "Shot information" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Панорама" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Тип изображениÑ" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Тип изображениÑ" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +#, fuzzy +msgid "File Number" +msgstr "ЧиÑло F" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +#, fuzzy +msgid "File number" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Серийный номер" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Серийный номер камеры" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "ID камеры" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "ID камеры" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +#, fuzzy +msgid "Custom Functions" +msgstr "ИнÑтрукции" + +#: src/canonmn.cpp:395 +#, fuzzy +msgid "ModelID" +msgstr "Модель" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "ID модели" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +#, fuzzy +msgid "Picture Info" +msgstr "Режим захвата" + +#: src/canonmn.cpp:396 +#, fuzzy +msgid "Picture info" +msgstr "Режим захвата" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "ЭÑкиз" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "ЭÑкиз" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Серийный номер" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Серийный номер" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +#, fuzzy +msgid "Super Macro" +msgstr "Супермакро" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Супермакро" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF Info" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF info" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Таблица баланÑа белого" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Таблица баланÑа белого" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +#, fuzzy +msgid "Lens Model" +msgstr "Тип Ñцены" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Тип Ñцены" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +#, fuzzy +msgid "Internal Serial Number" +msgstr "Серийный номер камеры" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +#, fuzzy +msgid "Internal serial number" +msgstr "Серийный номер камеры" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "ИнÑтрукции" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "По обработки" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "По обработки" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD Offset" +msgstr "быÑтрый" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD offset" +msgstr "быÑтрый" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "Объектив" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "О Ñнимке" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "Цвет" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Экономичный" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +#, fuzzy +msgid "Fine" +msgstr "in" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +#, fuzzy +msgid "Superfine" +msgstr "SXGA Fine" + +#: src/canonmn.cpp:438 +#, fuzzy +msgid "Normal Movie" +msgstr "Обычный процеÑÑ Ð¿Ñ€Ð¾Ñвки" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Кино" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Ðвто" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "" + +#: src/canonmn.cpp:448 +#, fuzzy +msgid "Slow sync" +msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" + +#: src/canonmn.cpp:449 +#, fuzzy +msgid "Auto + red-eye" +msgstr "Ðвтобрекетирование" + +#: src/canonmn.cpp:450 +#, fuzzy +msgid "On + red-eye" +msgstr "Ðвтобрекетирование" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +#, fuzzy +msgid "External" +msgstr "внешнÑÑ" + +#: src/canonmn.cpp:457 +#, fuzzy +msgid "Single / timer" +msgstr "Серийный номер" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +#, fuzzy +msgid "Continuous" +msgstr "Продолжительный ведущий режим" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +#, fuzzy +msgid "Movie" +msgstr "Кино" + +#: src/canonmn.cpp:460 +#, fuzzy +msgid "Continuous, speed priority" +msgstr "Приоритет выдержки" + +#: src/canonmn.cpp:461 +#, fuzzy +msgid "Continuous, low" +msgstr "Продолжительный ведущий режим" + +#: src/canonmn.cpp:462 +#, fuzzy +msgid "Continuous, high" +msgstr "Продолжительный ведущий режим" + +#: src/canonmn.cpp:467 +#, fuzzy +msgid "One shot AF" +msgstr "One-Shot" + +#: src/canonmn.cpp:468 +#, fuzzy +msgid "AI servo AF" +msgstr "AI Focus" + +#: src/canonmn.cpp:469 +#, fuzzy +msgid "AI focus AF" +msgstr "AI Focus" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +#, fuzzy +msgid "Manual focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +#, fuzzy +msgid "Single" +msgstr "One-Shot" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +#, fuzzy +msgid "Pan focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +#, fuzzy +msgid "Large" +msgstr "Язык" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +#, fuzzy +msgid "Medium" +msgstr "Ðизкий" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +#, fuzzy +msgid "Small" +msgstr "Кино" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +#, fuzzy +msgid "Medium 1" +msgstr "Ðизкий" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +#, fuzzy +msgid "Medium 2" +msgstr "Ðизкий" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +#, fuzzy +msgid "Medium 3" +msgstr "Ðизкий" + +#: src/canonmn.cpp:490 +#, fuzzy +msgid "Full auto" +msgstr "Режим захвата" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "РучнаÑ" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Ðльбом" + +#: src/canonmn.cpp:493 +#, fuzzy +msgid "Fast shutter" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +#, fuzzy +msgid "Night Scene" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "СепиÑ" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Портрет" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Спорт" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "МакроÑъёмка" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +#, fuzzy +msgid "Black & white" +msgstr "Чёрно-белый" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +#, fuzzy +msgid "Vivid" +msgstr "Цвет" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +#, fuzzy +msgid "Neutral" +msgstr "внешнÑÑ" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Без вÑпышки" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "" + +#: src/canonmn.cpp:508 +#, fuzzy +msgid "Foliage" +msgstr "Модель" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +#, fuzzy +msgid "Indoor" +msgstr "ни" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Фейерверк" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "ПлÑж" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Снег" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Дети и домашние животные" + +#: src/canonmn.cpp:515 +#, fuzzy +msgid "Night SnapShot" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Цифровой макрорежим" + +#: src/canonmn.cpp:517 +#, fuzzy +msgid "My Colors" +msgstr "Цвет" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +#, fuzzy +msgid "Still image" +msgstr "ЭÑкиз" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +#, fuzzy +msgid "Other" +msgstr "Север" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Ðизкий" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Ð’Ñ‹Ñокий" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "н/д" + +#: src/canonmn.cpp:540 +#, fuzzy +msgid "Auto High" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +#, fuzzy +msgid "Default" +msgstr "По умолчанию" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +#, fuzzy +msgid "Spot" +msgstr "Спорт" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Средний" + +#: src/canonmn.cpp:561 +#, fuzzy +msgid "Evaluative" +msgstr "значение" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +#, fuzzy +msgid "Partial" +msgstr "Вечеринка" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +#, fuzzy +msgid "Center weighted" +msgstr "Центровзвешенный" + +#: src/canonmn.cpp:570 +#, fuzzy +msgid "Not known" +msgstr "ÐеизвеÑтно" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Макро" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "" + +#: src/canonmn.cpp:573 +#, fuzzy +msgid "Close" +msgstr "Крупный план" + +#: src/canonmn.cpp:574 +#, fuzzy +msgid "Middle range" +msgstr "Модель" + +#: src/canonmn.cpp:575 +#, fuzzy +msgid "Far range" +msgstr "ДинамичеÑкий диапазон" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +#, fuzzy +msgid "Infinity" +msgstr "БеÑконечный" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Ручной выбор точки фокуÑировки" + +#: src/canonmn.cpp:584 +#, fuzzy +msgid "None (MF)" +msgstr "Ðичего" + +#: src/canonmn.cpp:585 +#, fuzzy +msgid "Auto-selected" +msgstr "Ðвтобрекетирование" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +#, fuzzy +msgid "Right" +msgstr "Ðочной портрет" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Центральный" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +#, fuzzy +msgid "Left" +msgstr "ЛеваÑ" + +#: src/canonmn.cpp:589 +#, fuzzy +msgid "Auto AF point selection" +msgstr "Ручной выбор точки фокуÑировки" + +#: src/canonmn.cpp:594 +#, fuzzy +msgid "Easy shooting (Auto)" +msgstr "Режим замера" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Программа (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Приоритет выдержки (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Приоритет диафрагмы (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Ручной (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Ð’Ñпышка не Ñработала" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Сработала" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "" + +#: src/canonmn.cpp:980 +#, fuzzy +msgid "FP sync used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:991 +#, fuzzy +msgid "Normal AE" +msgstr "VGA Normal" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "ФикÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/canonmn.cpp:994 +#, fuzzy +msgid "AE lock + exposure compensation" +msgstr "ФикÑÐ°Ñ†Ð¸Ñ + компенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/canonmn.cpp:995 +#, fuzzy +msgid "No AE" +msgstr "VGA Normal" + +#: src/canonmn.cpp:1002 +#, fuzzy +msgid "On, shot only" +msgstr "One-Shot" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +#, fuzzy +msgid "AF Point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1016 +#, fuzzy +msgid "Smooth" +msgstr "меÑÑц" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "Ч/Б" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Свой" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +#, fuzzy +msgid "My color data" +msgstr "Цвет" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +#, fuzzy +msgid "Full" +msgstr "Полный" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +#, fuzzy +msgid "Selftimer" +msgstr "Серийный номер" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self timer" +msgstr "Серийный номер" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "КачеÑтво" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Режим вÑпышки" + +#: src/canonmn.cpp:1045 +#, fuzzy +msgid "Flash mode setting" +msgstr "Ð’Ñпышка Ñработала" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +#, fuzzy +msgid "Drive Mode" +msgstr "Режим замера" + +#: src/canonmn.cpp:1046 +#, fuzzy +msgid "Drive mode setting" +msgstr "Режим макроÑъёмки" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:1048 +#, fuzzy +msgid "Focus mode setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Размер изображениÑ" + +#: src/canonmn.cpp:1052 +#, fuzzy +msgid "Easy Mode" +msgstr "Режим вÑпышки" + +#: src/canonmn.cpp:1052 +#, fuzzy +msgid "Easy shooting mode" +msgstr "Режим замера" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Цифровой транÑфокатор" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Цифровой транÑфокатор" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "КонтраÑÑ‚" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +#, fuzzy +msgid "Contrast setting" +msgstr "ÐаÑтройка контраÑта" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation setting" +msgstr "ÐаÑтройка контраÑта" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "РезкоÑть" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness setting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +#, fuzzy +msgid "ISO Speed Mode" +msgstr "СкороÑть ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +#, fuzzy +msgid "ISO speed setting" +msgstr "СкороÑть ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Режим замера" + +#: src/canonmn.cpp:1058 +#, fuzzy +msgid "Metering mode setting" +msgstr "Режим макроÑъёмки" + +#: src/canonmn.cpp:1059 +#, fuzzy +msgid "Focus Type" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:1059 +#, fuzzy +msgid "Focus type setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:1060 +#, fuzzy +msgid "AF point selected" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Программа ÑкÑпозиции" + +#: src/canonmn.cpp:1061 +#, fuzzy +msgid "Exposure mode setting" +msgstr "Режим ÑкÑпозиции" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Тип объектива" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Тип объектива" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Объектив" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +#, fuzzy +msgid "Short focal" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +#, fuzzy +msgid "Max Aperture" +msgstr "Диафрагма" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +#, fuzzy +msgid "Max aperture" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min Aperture" +msgstr "Диафрагма" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min aperture" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash Activity" +msgstr "Ð’Ñпышка Ñработала" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash activity" +msgstr "Ð’Ñпышка Ñработала" + +#: src/canonmn.cpp:1070 +#, fuzzy +msgid "Flash Details" +msgstr "Ð’Ñпышка Ñработала" + +#: src/canonmn.cpp:1070 +#, fuzzy +msgid "Flash details" +msgstr "Режим вÑпышки" + +#: src/canonmn.cpp:1073 +#, fuzzy +msgid "Focus Continuous" +msgstr "Продолжительный ведущий режим" + +#: src/canonmn.cpp:1073 +#, fuzzy +msgid "Focus continuous setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AESetting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AE setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display Aperture" +msgstr "Диафрагма" + +#: src/canonmn.cpp:1076 +#, fuzzy +msgid "Display aperture" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom Source Width" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1077 +#, fuzzy +msgid "Zoom source width" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom Target Width" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom target width" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "Режим замера" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Режим замера" + +#: src/canonmn.cpp:1081 +#, fuzzy +msgid "Photo Effect" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:1081 +#, fuzzy +msgid "Photo effect" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/canonmn.cpp:1083 +#, fuzzy +msgid "Color Tone" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:1083 +#, fuzzy +msgid "Color tone" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "КачеÑтво изображениÑ" + +#: src/canonmn.cpp:1086 +#, fuzzy +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Дневной Ñвет" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Облачно" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Лампа накаливаниÑ" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Чёрно-белый" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Тень" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "" + +#: src/canonmn.cpp:1109 +#, fuzzy +msgid "Daylight Fluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Свой 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Свой 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +#, fuzzy +msgid "Custom 3" +msgstr "Свой" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Приоритет выдержки" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +#, fuzzy +msgid "left" +msgstr "ЛеваÑ" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +#, fuzzy +msgid "center" +msgstr "Центральный" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +#, fuzzy +msgid "right" +msgstr "ЯркоÑть+" + +#: src/canonmn.cpp:1151 +#, fuzzy +msgid "ISO Speed Used" +msgstr "СкороÑть ISO" + +#: src/canonmn.cpp:1151 +#, fuzzy +msgid "ISO speed used" +msgstr "СкороÑть ISO" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +#, fuzzy +msgid "Target Aperture" +msgstr "Диафрагма" + +#: src/canonmn.cpp:1154 +#, fuzzy +msgid "Target Shutter Speed" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:1154 +#, fuzzy +msgid "Target shutter speed" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +#, fuzzy +msgid "White balance setting" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/canonmn.cpp:1158 +#, fuzzy +msgid "Sequence" +msgstr "Ðомер поÑледовательноÑти" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "" + +#: src/canonmn.cpp:1163 +#, fuzzy +msgid "AF Point Used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1163 +#, fuzzy +msgid "AF point used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +#, fuzzy +msgid "Flash Bias" +msgstr "Ð’Ñпышка Ñработала" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "РаÑÑтоÑние до объекта" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +#, fuzzy +msgid "Aperture Value" +msgstr "Диафрагма" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +#, fuzzy +msgid "Shutter Speed Value" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +#, fuzzy +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +#, fuzzy +msgid "Left to right" +msgstr "Ñлева направо" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +#, fuzzy +msgid "Right to left" +msgstr "Ñправа налево" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +#, fuzzy +msgid "Bottom to top" +msgstr "Ñнизу вверх" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +#, fuzzy +msgid "Top to bottom" +msgstr "Ñверху вниз" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Кадр панорамы" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Ðомер кадра панорамы" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "направление панорамы" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Ðаправление Ñъёмки панорамы" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Подавление шума" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Подавление шума при длительной выдержке" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter Ae Lock" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter/AE lock buttons" +msgstr "Выдержка" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +#, fuzzy +msgid "Exposure Level Increments" +msgstr "Режим ÑкÑпозиции" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +#, fuzzy +msgid "AF Assist" +msgstr "Тип Ñцены" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Flash Sync Speed Av" +msgstr "Режим вÑпышки" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Shutter speed in Av mode" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/canonmn.cpp:1215 +#, fuzzy +msgid "AEB Sequence" +msgstr "Ðомер поÑледовательноÑти" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "Выдержка" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "Приоритет выдержки" + +#: src/canonmn.cpp:1217 +#, fuzzy +msgid "Lens AF Stop Button" +msgstr "Тип объектива" + +#: src/canonmn.cpp:1217 +#, fuzzy +msgid "Lens AF stop button Fn. Switch" +msgstr "Тип объектива" + +#: src/canonmn.cpp:1218 +#, fuzzy +msgid "Fill Flash Auto Reduction" +msgstr "Подавление шума" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "" + +#: src/canonmn.cpp:1220 +#, fuzzy +msgid "Set Button Function" +msgstr "ИнÑтрукции" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "ОчиÑтка ÑенÑора" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "ОчиÑтка ÑенÑора" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +#, fuzzy +msgid "Unknown Canon Custom Function tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/canonmn.cpp:1236 +#, fuzzy +msgid "mid-right" +msgstr "Ñлева направо" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +#, fuzzy +msgid "bottom" +msgstr "Ñнизу вверх" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +#, fuzzy +msgid "top" +msgstr "в" + +#: src/canonmn.cpp:1240 +#, fuzzy +msgid "mid-left" +msgstr "ЛеваÑ" + +#: src/canonmn.cpp:1247 +#, fuzzy +msgid "upper-left" +msgstr "ПраваÑ" + +#: src/canonmn.cpp:1248 +#, fuzzy +msgid "upper-right" +msgstr "ПраваÑ" + +#: src/canonmn.cpp:1252 +#, fuzzy +msgid "lower-left" +msgstr "ПраваÑ" + +#: src/canonmn.cpp:1253 +#, fuzzy +msgid "lower-right" +msgstr "ПраваÑ" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +#, fuzzy +msgid "Image Height" +msgstr "Длина изображениÑ" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Ð’Ñ‹Ñота изображениÑ" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image Width As Shot" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image width (as shot)" +msgstr "Ширина изображениÑ" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image Height As Shot" +msgstr "Длина изображениÑ" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image height (as shot)" +msgstr "Ð’Ñ‹Ñота изображениÑ" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +#, fuzzy +msgid "AF Points Used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +#, fuzzy +msgid "AF points used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1264 +#, fuzzy +msgid "AF Points Used 20D" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1264 +#, fuzzy +msgid "AF points used (20D)" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/canonmn.cpp:1266 +#, fuzzy +msgid "Unknown Canon Picture Info tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +#, fuzzy +msgid "ISO" +msgstr "О Ñнимке" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +#, fuzzy +msgid "Medium Movie" +msgstr "Ðизкий" + +#: src/canonmn.cpp:1294 +#, fuzzy +msgid "Small Movie" +msgstr "Кино" + +#: src/canonmn.cpp:1300 +#, fuzzy +msgid "On 1" +msgstr "Вкл" + +#: src/canonmn.cpp:1301 +#, fuzzy +msgid "On 2" +msgstr "Вкл" + +#: src/canonmn.cpp:1309 +#, fuzzy +msgid "On (shift AB)" +msgstr "One-Shot" + +#: src/canonmn.cpp:1310 +#, fuzzy +msgid "On (shift GM)" +msgstr "One-Shot" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +#, fuzzy +msgid "Orange" +msgstr "ДинамичеÑкий диапазон" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +#, fuzzy +msgid "Green" +msgstr "Режим замера" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +#, fuzzy +msgid "Blue" +msgstr "значение" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Брекетинг" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Брекетинг" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "Брекетинг" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "КачеÑтво" + +#: src/canonmn.cpp:1338 +#, fuzzy +msgid "Raw Jpg Size" +msgstr "Размер изображениÑ" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Брекетинг" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "Таблица баланÑа белого" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "Таблица баланÑа белого" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +#, fuzzy +msgid "Filter Effect" +msgstr "Цветовой Ñффект" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect" +msgstr "Цветовое проÑтранÑтво" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro Magnification" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro magnification" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +#, fuzzy +msgid "Live view shooting" +msgstr "Режим макроÑъёмки" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/canonmn.cpp:1351 +#, fuzzy +msgid "Unknown Canon File Info tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "" + +#: src/canonmn.cpp:1369 +#, fuzzy +msgid "Lowest" +msgstr "ПраваÑ" + +#: src/canonmn.cpp:1373 +#, fuzzy +msgid "Highest" +msgstr "Ð’Ñ‹Ñокий" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Монохромный" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Ð’Ñпышка Ñработала" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Ð¢Ð¾Ð½Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÑ€Ð¸Ð²Ð°Ñ" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "SharpnessFrequency" +msgstr "РезкоÑть" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "Sharpness frequency" +msgstr "РезкоÑть" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "SensorRedLevel" +msgstr "ЗарÑд батареи" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "Под уровнем морÑ" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "SensorBlueLevel" +msgstr "ЗарÑд батареи" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "Под уровнем морÑ" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr "Таблица баланÑа белого" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr "Таблица баланÑа белого" + +#: src/canonmn.cpp:1411 +#, fuzzy +msgid "WhiteBalance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Температура цвета" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Температура цвета" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "PictureStyle" +msgstr "Портретный режим" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "Picture style" +msgstr "Портретный режим" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "Цифровой макрорежим" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "Цифровой макрорежим" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "One-Shot" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "One-Shot" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "поле" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "каталог" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "тип" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "размер" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "быÑтрый" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "" + +#: src/datasets.cpp:80 +#, fuzzy +msgid "IIM envelope record" +msgstr "Приоритет выдержки (Tv)" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +#, fuzzy +msgid "Destination" +msgstr "ОриентациÑ" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Формат файла" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "" + +#: src/datasets.cpp:108 +#, fuzzy +msgid "Envelope Number" +msgstr "ЧиÑло F" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +#, fuzzy +msgid "Envelope Priority" +msgstr "Приоритет выдержки (Tv)" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +#, fuzzy +msgid "Date Sent" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Кодировка" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +#, fuzzy +msgid "Unique Name Object" +msgstr "Модель камеры" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Идентификатор ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "ВерÑÐ¸Ñ ARM" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "ВерÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Тип объекта" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +#, fuzzy +msgid "Object Attribute" +msgstr "ОблаÑть объекта Ñъёмки" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Ðазвание/Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Ð˜Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "СрочноÑть" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Предмет Ñъёмки" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "КатегориÑ" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Дополнительные категории" + +#: src/datasets.cpp:229 +#, fuzzy +msgid "Fixture Id" +msgstr "Сработала" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Ключевые Ñлова" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +#, fuzzy +msgid "Location Code" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Дата пубикации" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "ИÑтечение Ñрока" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +#, fuzzy +msgid "ExpirationTime" +msgstr "ИÑтечение Ñрока" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "ОÑобые инÑтрукции" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "ИнÑтрукции" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Рекомендованное дейÑтвие" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +#, fuzzy +msgid "Reference Service" +msgstr "Эталонный Чёрный/Белый" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +#, fuzzy +msgid "Reference Date" +msgstr "Эталонный Чёрный/Белый" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +#, fuzzy +msgid "Reference Number" +msgstr "Ðомер поÑледовательноÑти" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Дата оцифровки" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Программа" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +#, fuzzy +msgid "Object Cycle" +msgstr "Тип объекта" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +#, fuzzy +msgid "By-line" +msgstr "Ñтрока" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Ðвтор" + +#: src/datasets.cpp:324 +#, fuzzy +msgid "By-line Title" +msgstr "Ðазвание (Windows)" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Город" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +#, fuzzy +msgid "Sub Location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +#, fuzzy +msgid "Province State" +msgstr "Данные ÑÑкиза" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Штат/провинциÑ" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Код Ñтраны" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Ðазвание Ñтраны" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Страна" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +#, fuzzy +msgid "Transmission Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Заголовок" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +#, fuzzy +msgid "Credit" +msgstr "Монохромный" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "ИÑточник" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Уведомление об авторÑких правах" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Контакт" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "ПодпиÑÑŒ" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "ТекÑтовое опиÑание объекта Ñнимка" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "ОпиÑание" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Ðвтор текÑта" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "РаÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Показывает цветовые компоненты изображениÑ" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Показывает макет изображениÑ" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Язык" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Тип звуковых данных" + +#: src/datasets.cpp:409 +#, fuzzy +msgid "Indicates the type of an audio content." +msgstr "Показывает длительноÑть звукозапиÑи" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Показывает чаÑтоту ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи в Герцах" + +#: src/datasets.cpp:414 +#, fuzzy +msgid "Audio Resolution" +msgstr "Разрешение по X" + +#: src/datasets.cpp:415 +#, fuzzy +msgid "Indicates the sampling resolution of an audio content." +msgstr "Показывает чаÑтоту ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи в Герцах" + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Показывает длительноÑть звукозапиÑи" + +#: src/datasets.cpp:420 +#, fuzzy +msgid "Audio Outcue" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Формат ÑÑкиза" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Данные ÑÑкиза" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Двоичные данные ÑÑкиза изображениÑ." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "ÐеизвеÑтный набор данных" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "" + +#: src/error.cpp:56 +#, fuzzy +msgid "Success" +msgstr "ИÑточник" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "" + +#: src/error.cpp:61 +#, fuzzy +msgid "Invalid record name `%1'" +msgstr "Серийный номер" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "" + +#: src/error.cpp:64 +#, fuzzy +msgid "Value not set" +msgstr "не уÑтановлено\n" + +#: src/error.cpp:65 +#, fuzzy +msgid "%1: Failed to open the data source: %2" +msgstr "Ðе удалоÑÑŒ открыть файл\n" + +#: src/error.cpp:66 +#, fuzzy +msgid "%1: Failed to open file (%2): %3" +msgstr "Ðе удалоÑÑŒ открыть файл\n" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "" + +#: src/error.cpp:70 +#, fuzzy +msgid "Failed to read image data" +msgstr "Ðе удалоÑÑŒ переименовать" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" + +#: src/error.cpp:73 +#, fuzzy +msgid "%1: Failed to rename file to %2: %3" +msgstr "Ðе удалоÑÑŒ открыть файл\n" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "" + +#: src/error.cpp:76 +#, fuzzy +msgid "Failed to read input data" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/error.cpp:77 +#, fuzzy +msgid "Failed to write image" +msgstr "Ðе удалоÑÑŒ переименовать" + +#: src/error.cpp:78 +#, fuzzy +msgid "Input data does not contain a valid image" +msgstr "Ð’ Ñнимке нет Exif-ÑÑкиза\n" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "" + +#: src/error.cpp:83 +#, fuzzy +msgid "Unsupported data area offset type" +msgstr "Ðеподдерживаемый формат даты" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Ðеподдерживаемый формат даты" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Ðеподдерживаемый формат времени" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "ÐвторÑкие права (C) 2004-2011 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "ИÑпользование:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ ключи ] [ дейÑтвие ] файл ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Работа Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ изображений.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"ДейÑтвиÑ:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Заменить отметки времени Exif на заданное времÑ.\n" +" Этому дейÑтвию нужен ключ -a time.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print ВывеÑти на Ñкран метаданные изображениÑ.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Удалить метаданные изображений из их файлов.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Ð’Ñтавить метаданные из ÑоответÑтвующих файлов *.exv.\n" +" ИÑпользуйте ключ -S Ð´Ð»Ñ Ñмены ÑуффикÑа входÑщих файлов.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Извлечь метаданные в файлы *.exv, *.xmp и файлы ÑÑкизов.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename переименовать файлы и/или уÑтановить отметки\n" +" времени в ÑоответÑтвии Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¾Ð¹ времени ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð· данных " +"Exif.\n" +" Формат файла можно уÑтановить ключом -r, параметры отметки\n" +" времени контролируютÑÑ ÐºÐ»ÑŽÑ‡Ð°Ð¼Ð¸ -t и -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Применить команды Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (добавить, уÑтановить, удалить)\n" +" метаданных Exif и IPTC изображений или уÑтановить " +"комментарий JPEG.\n" +" Ðеобходимо иÑпользовать в паре Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ -c, -m или -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Скопировать значение ISO из Nikon Makernote \n" +" в обычное поле Exif.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Параметры:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Показать Ñту Ñправку и выйти.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Показать верÑию программы и выйти.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Выводить подробную информацию при выполнении дейÑтвий.\n" + +#: src/exiv2.cpp:266 +#, fuzzy +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr " -v Выводить подробную информацию при выполнении дейÑтвий.\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Показать большие двоичные значениÑ.\n" + +#: src/exiv2.cpp:269 +#, fuzzy +msgid " -u Show unknown tags.\n" +msgstr " -u Ðе показывать неизвеÑтные Ñ‚Ñги.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k СохранÑть временные отметки файлов (keep).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" +" -F Ðе запрашивать подтверждение на перезапиÑÑŒ файлов (force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr "" +" -F Ðе запрашивать подтверждение на переименование файлов (Force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a Ð²Ñ€ÐµÐ¼Ñ Ðовое значение времени в формате [-]ЧЧ[:ММ[:СС]]. Этот ключ\n" +" иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ð´ÐµÐ¹Ñтвием 'adjust'.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y год Ðовое значение года Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'adjust'.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O меÑÑц Ðовое значение меÑÑца Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'adjust'.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D день Ðовое значение Ð´Ð½Ñ Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'adjust'.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" +" -p режим Print -- режим Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'вывод' (print). Возможные режимы:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s : вывеÑти Ñводку метаданных Exif (по умолчанию)\n" + +#: src/exiv2.cpp:286 +#, fuzzy +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" v : обычные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Exif (короткий вариант комбинации -" +"Pxgnycv)\n" + +#: src/exiv2.cpp:287 +#, fuzzy +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" +" t : интерпретированные данные Exif (короткий вариант комбинации " +"-Pkyct)\n" + +#: src/exiv2.cpp:288 +#, fuzzy +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" +" v : обычные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Exif (короткий вариант комбинации -" +"Pxgnycv)\n" + +#: src/exiv2.cpp:289 +#, fuzzy +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" +" h : шеÑтнадцатеричный дамп данных Exif (краткий вариант Ð´Ð»Ñ -" +"Pxgnycsh)\n" + +#: src/exiv2.cpp:290 +#, fuzzy +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… IPTC\n" + +#: src/exiv2.cpp:291 +#, fuzzy +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : ÑвойÑтва XMP\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : комментарий JPEG\n" + +#: src/exiv2.cpp:293 +#, fuzzy +msgid " p : list available previews\n" +msgstr " l : метка Ñ‚Ñга\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : обычное значение данных\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " x : ÑвойÑтва XMP\n" + +#: src/exiv2.cpp:296 +#, fuzzy +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P Ñтолбцы ВывеÑти на Ñкран ÑпиÑок тегов Exif в виде таблицы (дейÑтвие " +"'print'). ДопуÑтимы Ñтолбцы:\n" + +#: src/exiv2.cpp:297 +#, fuzzy +msgid " E : include Exif tags in the list\n" +msgstr " s : размер в байтах\n" + +#: src/exiv2.cpp:298 +#, fuzzy +msgid " I : IPTC datasets\n" +msgstr " i : данные IPTC\n" + +#: src/exiv2.cpp:299 +#, fuzzy +msgid " X : XMP properties\n" +msgstr " x : ÑвойÑтва XMP\n" + +#: src/exiv2.cpp:300 +#, fuzzy +msgid " x : print a column with the tag number\n" +msgstr " x : вывеÑти Ñтолбец Ñо значениÑми Ñ‚Ñгов\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : Ð¸Ð¼Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : ключ\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : метка Ñ‚Ñга\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : Ð¸Ð¼Ñ Ñ‚Ñга\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : тип\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : количеÑтво компонентов (count)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : размер в байтах\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : обычное значение данных\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : интерпретированные (переведенные) данные\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : шеÑтнадцатеричный дамп данных\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr " -d tgt УдалÑемые цели Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'delete'. Возможные цели:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : вÑе поддерживаемые метаданные (по умолчанию)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : раздел Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : только Exif-ÑÑкиз\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : данные IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : пакет XMP\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Ð’ÑтавлÑемые цели Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'insert'. Возможные цели\n" +" те же что и и Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -d Ð¿Ð»ÑŽÑ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€:\n" +" X : Ð’Ñтавить метаданные из ÑопутÑтвующего файла XMP <файл>.xmp\n" +" Можно вÑтавлÑть только ÑÑкизы в формате JPEG, и их Ð¸Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ " +"иметь вид\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +#, fuzzy +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt Извлекаемые цели Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'extract'. Возможные цели\n" +" те же, что и Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -d Ð¿Ð»ÑŽÑ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€:\n" +" X : Извлечь метаданные из ÑопутÑтвующего файла XMP <файл>.xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Формат имени файла Ð´Ð»Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ 'rename'. Строка формата\n" +" Ñледует правилам из strftime(3). ПоддерживаютÑÑ Ñледующие " +"ключевые Ñлова:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - оригинальное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° без раÑширениÑ\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°, Ñодержащего оригинальный файл\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - Ð¸Ð¼Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкого каталога\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Форматом файлов по умолчанию ÑвлÑетÑÑ " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr "" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l каталог РаÑположение (каталог) вÑтавлÑемых или извлекаемых файлов.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf ИÑпользовать ÑÑƒÑ„Ñ„Ð¸ÐºÑ .suf Ð´Ð»Ñ Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»ÑŒÐ½Ñ‹Ñ… файлов Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ " +"insert.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Параметр" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "требует аргумент\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "ÐеизвеÑтный ключ" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "" + +#: src/exiv2.cpp:410 +#, fuzzy +msgid "Invalid argument" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Ошибка при ÑинтакÑичеÑком разборе" + +#: src/exiv2.cpp:535 +#, fuzzy +msgid "option argument" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "должно быть указано дейÑтвие\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "нужно указать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один файл\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "" + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "" + +#: src/exiv2.cpp:1065 +#, fuzzy +msgid "Invalid preview number" +msgstr "Серийный номер" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "Ñтрока" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Серийный номер" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "" + +#: src/fujimn.cpp:62 +#, fuzzy +msgid "Soft mode 1" +msgstr "Режим замера" + +#: src/fujimn.cpp:63 +#, fuzzy +msgid "Soft mode 2" +msgstr "Режим замера" + +#: src/fujimn.cpp:65 +#, fuzzy +msgid "Hard mode 1" +msgstr "Режим макроÑъёмки" + +#: src/fujimn.cpp:66 +#, fuzzy +msgid "Hard mode 2" +msgstr "Режим макроÑъёмки" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° (дневной Ñвет)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° (тёплый белый)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° (прохладный белый)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +#, fuzzy +msgid "Incandescent" +msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +#, fuzzy +msgid "None (black & white)" +msgstr "Чёрно-белый" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Подавление Ñффекта краÑных глаз" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +#, fuzzy +msgid "Program AE" +msgstr "Программа ÑкÑпозиции" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "ЕÑтеÑтвенный Ñвет" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Ðнтиразмывание" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Закат" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Музей" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Вечеринка" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Цветок" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: src/fujimn.cpp:128 +#, fuzzy +msgid "Natural light & flash" +msgstr "ЕÑтеÑтвенный Ñвет" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Замер Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ диафрагмы" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Замер Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ выдержки" + +#: src/fujimn.cpp:142 +#, fuzzy +msgid "No flash & flash" +msgstr "Без вÑпышки" + +#: src/fujimn.cpp:148 +#, fuzzy +msgid "Chrome" +msgstr "Монохромный" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +#, fuzzy +msgid "Wide" +msgstr "Цвет" + +#: src/fujimn.cpp:160 +#, fuzzy +msgid "F0/Standard" +msgstr "Стандартный Ñвет A" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Студийный портрет" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +#, fuzzy +msgid "F3/Studio portrait Ex" +msgstr "F1/Студийный портрет" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Ðвто (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Raw" + +#: src/fujimn.cpp:171 +#, fuzzy +msgid "Standard (100%)" +msgstr "Стандартный Ñвет A" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "" + +#: src/fujimn.cpp:174 +#, fuzzy +msgid "Film simulation mode" +msgstr "Разрешение по X" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "ВерÑиÑ" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "ВерÑÐ¸Ñ Fujifilm Makernote" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +#, fuzzy +msgid "Image quality setting" +msgstr "ОпиÑание Ñнимка" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Цвет" + +#: src/fujimn.cpp:196 +#, fuzzy +msgid "Chroma saturation setting" +msgstr "ÐаÑтройка контраÑта" + +#: src/fujimn.cpp:198 +#, fuzzy +msgid "Tone" +msgstr "Ðичего" + +#: src/fujimn.cpp:202 +#, fuzzy +msgid "Flash firing mode setting" +msgstr "Ð’Ñпышка Ñработала" + +#: src/fujimn.cpp:204 +#, fuzzy +msgid "Flash Strength" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/fujimn.cpp:205 +#, fuzzy +msgid "Flash firing strength compensation setting" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/fujimn.cpp:208 +#, fuzzy +msgid "Macro mode setting" +msgstr "Режим макроÑъёмки" + +#: src/fujimn.cpp:211 +#, fuzzy +msgid "Focusing mode setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "ÐœÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" + +#: src/fujimn.cpp:217 +#, fuzzy +msgid "Slow synchro mode setting" +msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +#, fuzzy +msgid "Picture Mode" +msgstr "Портретный режим" + +#: src/fujimn.cpp:220 +#, fuzzy +msgid "Picture mode setting" +msgstr "Портретный режим" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +#, fuzzy +msgid "Sequence Number" +msgstr "Ðомер поÑледовательноÑти" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Ðомер поÑледовательноÑти" + +#: src/fujimn.cpp:234 +#, fuzzy +msgid "FinePix Color" +msgstr "Цвет" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "" + +#: src/fujimn.cpp:237 +#, fuzzy +msgid "Blur Warning" +msgstr "Предупреждение" + +#: src/fujimn.cpp:238 +#, fuzzy +msgid "Blur warning status" +msgstr "ÐвтоÑкÑпозициÑ" + +#: src/fujimn.cpp:240 +#, fuzzy +msgid "Focus Warning" +msgstr "СпоÑоб фокуÑировки" + +#: src/fujimn.cpp:241 +#, fuzzy +msgid "Auto Focus warning status" +msgstr "ÐвтоÑкÑпозициÑ" + +#: src/fujimn.cpp:243 +#, fuzzy +msgid "Exposure Warning" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/fujimn.cpp:244 +#, fuzzy +msgid "Auto exposure warning status" +msgstr "ÐвтоÑкÑпозициÑ" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "ДинамичеÑкий диапазон" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "ДинамичеÑкий диапазон" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +#, fuzzy +msgid "Film Mode" +msgstr "Режим вÑпышки" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +#, fuzzy +msgid "Film mode" +msgstr "Режим вÑпышки" + +#: src/fujimn.cpp:252 +#, fuzzy +msgid "Dynamic Range Setting" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/fujimn.cpp:253 +#, fuzzy +msgid "Dynamic range settings" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/fujimn.cpp:255 +#, fuzzy +msgid "Development Dynamic Range" +msgstr "ДинамичеÑкий диапазон" + +#: src/fujimn.cpp:256 +#, fuzzy +msgid "Development dynamic range" +msgstr "ДинамичеÑкий диапазон" + +#: src/fujimn.cpp:258 +#, fuzzy +msgid "Minimum Focal Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/fujimn.cpp:259 +#, fuzzy +msgid "Minimum focal length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/fujimn.cpp:261 +#, fuzzy +msgid "Maximum Focal Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "МакÑимальное фокуÑное раÑÑтоÑние" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "ИÑточник файла" + +#: src/fujimn.cpp:271 +#, fuzzy +msgid "File source" +msgstr "ИÑточник файла" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Ðомер заказа" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Ðомер заказа" + +#: src/fujimn.cpp:276 +#, fuzzy +msgid "Frame Number" +msgstr "ЧиÑло F" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +#, fuzzy +msgid "Frame number" +msgstr "Ðомер изображениÑ" + +#: src/fujimn.cpp:281 +#, fuzzy +msgid "Unknown FujiMakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +#, fuzzy +msgid "Vivid Color" +msgstr "Цвет" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +#, fuzzy +msgid "Solarization" +msgstr "ÐаÑыщенноÑть" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +#, fuzzy +msgid "Natural" +msgstr "внешнÑÑ" + +#: src/minoltamn.cpp:64 +#, fuzzy +msgid "Natural sRGB" +msgstr "внешнÑÑ" + +#: src/minoltamn.cpp:65 +#, fuzzy +msgid "Natural+ sRGB" +msgstr "внешнÑÑ" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Вечер" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Ðочной портрет" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +#, fuzzy +msgid "Super Fine" +msgstr "SXGA Fine" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +#, fuzzy +msgid "Extra Fine" +msgstr "SXGA Fine" + +#: src/minoltamn.cpp:90 +#, fuzzy +msgid "Makernote Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "" + +#: src/minoltamn.cpp:93 +#, fuzzy +msgid "Camera Settings (Std Old)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" + +#: src/minoltamn.cpp:96 +#, fuzzy +msgid "Camera Settings (Std New)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" + +#: src/minoltamn.cpp:99 +#, fuzzy +msgid "Camera Settings (7D)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:100 +#, fuzzy +msgid "Camera Settings (for Dynax 7D model)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:102 +#, fuzzy +msgid "Image Stabilization Data" +msgstr "ОпиÑание Ñнимка" + +#: src/minoltamn.cpp:103 +#, fuzzy +msgid "Image stabilization data" +msgstr "ОпиÑание Ñнимка" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +#, fuzzy +msgid "Compressed Image Size" +msgstr "Сжатых битов на пикÑел" + +#: src/minoltamn.cpp:112 +#, fuzzy +msgid "Compressed image size" +msgstr "Сжатых битов на пикÑел" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +#, fuzzy +msgid "Thumbnail Offset" +msgstr "ЭÑкизы" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +#, fuzzy +msgid "Thumbnail Length" +msgstr "Длина изображениÑ" + +#: src/minoltamn.cpp:121 +#, fuzzy +msgid "Size of the thumbnail" +msgstr "ÑÑкиз" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +#, fuzzy +msgid "Scene Mode" +msgstr "Тип Ñцены" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +#, fuzzy +msgid "Color Mode" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#, fuzzy +msgid "Color mode" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +#, fuzzy +msgid "Image Quality" +msgstr "КачеÑтво" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +#, fuzzy +msgid "Flash Exposure Compensation" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +#, fuzzy +msgid "Flash exposure compensation in EV" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +#, fuzzy +msgid "Teleconverter Model" +msgstr "Тип Ñцены" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +#, fuzzy +msgid "Zone Matching" +msgstr "Подавление шума" + +#: src/minoltamn.cpp:154 +#, fuzzy +msgid "Zone matching" +msgstr "Подавление шума" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Температура цвета" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID объектива" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +#, fuzzy +msgid "Lens identifier" +msgstr "Идентификатор ARM" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Таблица баланÑа белого" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Таблица баланÑа белого" + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "ОпиÑание Ñнимка" + +#: src/minoltamn.cpp:173 +#, fuzzy +msgid "Camera Settings (5D)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:174 +#, fuzzy +msgid "Camera Settings (for Dynax 5D model)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +#, fuzzy +msgid "PrintIM information" +msgstr "ОриентациÑ" + +#: src/minoltamn.cpp:183 +#, fuzzy +msgid "Camera Settings (Z1)" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "" + +#: src/minoltamn.cpp:188 +#, fuzzy +msgid "Unknown Minolta MakerNote tag" +msgstr "ÐеизвеÑтный тег PentaxMakerNote" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Приоритет диафрагмы" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Приоритет выдержки" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "ЗаполнÑÑŽÑ‰Ð°Ñ Ð²Ñпышка" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +#, fuzzy +msgid "Rear flash sync" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +#, fuzzy +msgid "Wireless" +msgstr "Файл" + +#: src/minoltamn.cpp:224 +#, fuzzy +msgid "Fluorescent 2" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/minoltamn.cpp:231 +#, fuzzy +msgid "Full size" +msgstr "Полный" + +#: src/minoltamn.cpp:243 +#, fuzzy +msgid "Super fine" +msgstr "SXGA Fine" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +#, fuzzy +msgid "Self-timer" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Брекетинг" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Интервал" + +#: src/minoltamn.cpp:257 +#, fuzzy +msgid "UHS continuous" +msgstr "Продолжительный ведущий режим" + +#: src/minoltamn.cpp:258 +#, fuzzy +msgid "HS continuous" +msgstr "Продолжительный ведущий режим" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +#, fuzzy +msgid "Center weighted average" +msgstr "Центрально-взвешенный Ñредний" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +#, fuzzy +msgid "Top" +msgstr "в" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +#, fuzzy +msgid "Top-right" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +#, fuzzy +msgid "Bottom-right" +msgstr "Ñлева направо" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +#, fuzzy +msgid "Bottom" +msgstr "Ñнизу вверх" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +#, fuzzy +msgid "Bottom-left" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +#, fuzzy +msgid "Top-left" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +#, fuzzy +msgid "Hard" +msgstr "Ð’Ñ‹Ñокий" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +#, fuzzy +msgid "Soft" +msgstr "Спорт" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +#, fuzzy +msgid "Night portrait" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/minoltamn.cpp:315 +#, fuzzy +msgid "Sports action" +msgstr "Спорт" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +#, fuzzy +msgid "Standard form" +msgstr "Стандартный Ñвет A" + +#: src/minoltamn.cpp:350 +#, fuzzy +msgid "Data form" +msgstr "Стандартный Ñвет A" + +#: src/minoltamn.cpp:355 +#, fuzzy +msgid "Natural color" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +#, fuzzy +msgid "Black and white" +msgstr "Чёрно-белый" + +#: src/minoltamn.cpp:357 +#, fuzzy +msgid "Vivid color" +msgstr "Цвет" + +#: src/minoltamn.cpp:364 +#, fuzzy +msgid "No zone" +msgstr "Ðичего" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "" + +#: src/minoltamn.cpp:367 +#, fuzzy +msgid "Left zone" +msgstr "ЛеваÑ" + +#: src/minoltamn.cpp:368 +#, fuzzy +msgid "Right zone" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto focus" +msgstr "AI Focus" + +#: src/minoltamn.cpp:379 +#, fuzzy +msgid "Wide focus (normal)" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:380 +#, fuzzy +msgid "Spot focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +#, fuzzy +msgid "Exposure" +msgstr "Режим ÑкÑпозиции" + +#: src/minoltamn.cpp:388 +#, fuzzy +msgid "Filter" +msgstr "ПорÑдок заполнениÑ" + +#: src/minoltamn.cpp:393 +#, fuzzy +msgid "Not embedded" +msgstr "Ðе определено" + +#: src/minoltamn.cpp:394 +#, fuzzy +msgid "Embedded" +msgstr "Ðе определено" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +#, fuzzy +msgid "Manual flash control" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Режим ÑкÑпозиции" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +#, fuzzy +msgid "Drive mode" +msgstr "Режим замера" + +#: src/minoltamn.cpp:512 +#, fuzzy +msgid "ISO Value" +msgstr "ЧувÑтвительноÑть (ISO)" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "ЧиÑло F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +#, fuzzy +msgid "The F-Number" +msgstr "ЧиÑло F" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +#, fuzzy +msgid "Macro Mode" +msgstr "Режим макроÑъёмки" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:529 +#, fuzzy +msgid "Bracket Step" +msgstr "Брекетинг" + +#: src/minoltamn.cpp:530 +#, fuzzy +msgid "Bracket step" +msgstr "Брекетинг" + +#: src/minoltamn.cpp:532 +#, fuzzy +msgid "Interval Length" +msgstr "Длина изображениÑ" + +#: src/minoltamn.cpp:533 +#, fuzzy +msgid "Interval length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/minoltamn.cpp:535 +#, fuzzy +msgid "Interval Number" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:536 +#, fuzzy +msgid "Interval number" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +#, fuzzy +msgid "Focus Distance" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +#, fuzzy +msgid "Focus distance" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Ð’Ñпышка Ñработала" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Без вÑпышки" + +#: src/minoltamn.cpp:547 +#, fuzzy +msgid "Minolta Date" +msgstr "Режим замера" + +#: src/minoltamn.cpp:548 +#, fuzzy +msgid "Minolta date" +msgstr "Режим замера" + +#: src/minoltamn.cpp:550 +#, fuzzy +msgid "Minolta Time" +msgstr "Режим замера" + +#: src/minoltamn.cpp:551 +#, fuzzy +msgid "Minolta time" +msgstr "Режим замера" + +#: src/minoltamn.cpp:556 +#, fuzzy +msgid "File Number Memory" +msgstr "ЧиÑло F" + +#: src/minoltamn.cpp:557 +#, fuzzy +msgid "File number memory" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Ðомер изображениÑ" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Ðомер Ñнимка" + +#: src/minoltamn.cpp:562 +#, fuzzy +msgid "Color Balance Red" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:563 +#, fuzzy +msgid "Color balance red" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:565 +#, fuzzy +msgid "Color Balance Green" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:566 +#, fuzzy +msgid "Color balance green" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:568 +#, fuzzy +msgid "Color Balance Blue" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:569 +#, fuzzy +msgid "Color balance blue" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:580 +#, fuzzy +msgid "Subject Program" +msgstr "ОблаÑть объекта Ñъёмки" + +#: src/minoltamn.cpp:581 +#, fuzzy +msgid "Subject program" +msgstr "ОблаÑть объекта Ñъёмки" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +#, fuzzy +msgid "ISO Settings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +#, fuzzy +msgid "ISO setting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/minoltamn.cpp:589 +#, fuzzy +msgid "Minolta Model" +msgstr "Режим замера" + +#: src/minoltamn.cpp:590 +#, fuzzy +msgid "Minolta model" +msgstr "Режим замера" + +#: src/minoltamn.cpp:592 +#, fuzzy +msgid "Interval Mode" +msgstr "Intel" + +#: src/minoltamn.cpp:593 +#, fuzzy +msgid "Interval mode" +msgstr "Intel" + +#: src/minoltamn.cpp:595 +#, fuzzy +msgid "Folder Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/minoltamn.cpp:596 +#, fuzzy +msgid "Folder name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +#, fuzzy +msgid "ColorMode" +msgstr "Цвет" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +#, fuzzy +msgid "Color Filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:602 +#, fuzzy +msgid "Color filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:604 +#, fuzzy +msgid "Black and White Filter" +msgstr "Чёрно-белый" + +#: src/minoltamn.cpp:605 +#, fuzzy +msgid "Black and white filter" +msgstr "Чёрно-белый" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +#, fuzzy +msgid "Internal Flash" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "ЯркоÑть" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/minoltamn.cpp:614 +#, fuzzy +msgid "Spot focus point X" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/minoltamn.cpp:617 +#, fuzzy +msgid "Spot focus point Y" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/minoltamn.cpp:619 +#, fuzzy +msgid "Wide Focus Zone" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:620 +#, fuzzy +msgid "Wide focus zone" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +#, fuzzy +msgid "Focus area" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "" + +#: src/minoltamn.cpp:631 +#, fuzzy +msgid "Color Profile" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:632 +#, fuzzy +msgid "Color profile" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +#, fuzzy +msgid "Flash Metering" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +#, fuzzy +msgid "Flash metering" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/minoltamn.cpp:642 +#, fuzzy +msgid "Unknown Minolta Camera Settings tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Программа" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Программа" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +#, fuzzy +msgid "Raw+Jpeg" +msgstr "Размер изображениÑ" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +#, fuzzy +msgid "Kelvin" +msgstr "3000 K" + +#: src/minoltamn.cpp:695 +#, fuzzy +msgid "Single-shot AF" +msgstr "One-Shot" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +#, fuzzy +msgid "Continuous AF" +msgstr "Продолжительный ведущий режим" + +#: src/minoltamn.cpp:698 +#, fuzzy +msgid "Automatic AF" +msgstr "ÐвтоматичеÑкий" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +#, fuzzy +msgid "sRGB (Natural)" +msgstr "внешнÑÑ" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +#, fuzzy +msgid "sRGB (Natural+)" +msgstr "внешнÑÑ" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "" + +#: src/minoltamn.cpp:756 +#, fuzzy +msgid "AF Points" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/minoltamn.cpp:757 +#, fuzzy +msgid "AF points" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +#, fuzzy +msgid "Color space" +msgstr "Цветовое проÑтранÑтво" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +#, fuzzy +msgid "Rotation" +msgstr "ÐаÑыщенноÑть" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Ðомер изображениÑ" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +#, fuzzy +msgid "Noise reduction" +msgstr "Подавление шума" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "" + +#: src/minoltamn.cpp:818 +#, fuzzy +msgid "Zone matching on" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:822 +#, fuzzy +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Программа" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Программа" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "Ðочной портрет" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +#, fuzzy +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:918 +#, fuzzy +msgid "Central" +msgstr "ЦентральнаÑ" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "" + +#: src/minoltamn.cpp:920 +#, fuzzy +msgid "Up right" +msgstr "ПраваÑ" + +#: src/minoltamn.cpp:922 +#, fuzzy +msgid "Down right" +msgstr "ПраваÑ" + +#: src/minoltamn.cpp:923 +#, fuzzy +msgid "Down" +msgstr "вкл" + +#: src/minoltamn.cpp:924 +#, fuzzy +msgid "Down left" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:926 +#, fuzzy +msgid "Up left" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:932 +#, fuzzy +msgid "Selection" +msgstr "Выбор ISO" + +#: src/minoltamn.cpp:947 +#, fuzzy +msgid "Natural+" +msgstr "внешнÑÑ" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/minoltamn.cpp:950 +#, fuzzy +msgid "Evening Scene" +msgstr "Вечер" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +#, fuzzy +msgid "Focus Position" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +#, fuzzy +msgid "Focus position" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1003 +#, fuzzy +msgid "Focus Area" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1036 +#, fuzzy +msgid "Exposure Revision" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "ÐаÑыщенноÑть" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +#, fuzzy +msgid "Picture Finish" +msgstr "Режим захвата" + +#: src/minoltamn.cpp:1063 +#, fuzzy +msgid "Exposure Manual Bias" +msgstr "Смещение ÑкÑпозиции" + +#: src/minoltamn.cpp:1064 +#, fuzzy +msgid "Exposure manual bias" +msgstr "Смещение ÑкÑпозиции" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +#, fuzzy +msgid "AF Mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +#, fuzzy +msgid "AF mode" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:1087 +#, fuzzy +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1106 +#, fuzzy +msgid "Single-frame Bracketing Low" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Ðвтобрекетирование" + +#: src/minoltamn.cpp:1108 +#, fuzzy +msgid "Single-frame Bracketing High" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Продолжительный ведущий режим" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +#, fuzzy +msgid "Continuous Bracketing" +msgstr "Продолжительный ведущий режим" + +#: src/minoltamn.cpp:1156 +#, fuzzy +msgid "Single-Frame Bracketing" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "ПреÑет" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +#, fuzzy +msgid "Color Temperature/Color Filter" +msgstr "Температура цвета" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Температура" + +#: src/minoltamn.cpp:1213 +#, fuzzy +msgid "Setup" +msgstr "УÑтановить" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Тип изображениÑ" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Длина изображениÑ" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "ЗаполнÑÑŽÑ‰Ð°Ñ Ð²Ñпышка" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Данные ÑÑкиза" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +#, fuzzy +msgid "Toggle" +msgstr "Ðичего" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Режим замера" + +#: src/minoltamn.cpp:1260 +#, fuzzy +msgid "Spot Toggle" +msgstr "Режим замера" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +#, fuzzy +msgid "Automatic" +msgstr "ÐвтоматичеÑкий" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "ÐвтоматичеÑкий контраÑÑ‚" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/minoltamn.cpp:1302 +#, fuzzy +msgid "Within Range" +msgstr "ФокуÑный диапазон" + +#: src/minoltamn.cpp:1303 +#, fuzzy +msgid "Under/Over Range" +msgstr "ОблаÑть передачи" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "" + +#: src/minoltamn.cpp:1309 +#, fuzzy +msgid "Not Indicated" +msgstr "Ðе определено" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/minoltamn.cpp:1311 +#, fuzzy +msgid "Bottom of Scale" +msgstr "Ñнизу вверх" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +#, fuzzy +msgid "Over Scale" +msgstr "По умолчанию" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +#, fuzzy +msgid "Very Low" +msgstr "Ðизкий" + +#: src/minoltamn.cpp:1350 +#, fuzzy +msgid "Half Full" +msgstr "Полный" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/minoltamn.cpp:1362 +#, fuzzy +msgid "High Speed Sync" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/minoltamn.cpp:1363 +#, fuzzy +msgid "High speed sync" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1377 +#, fuzzy +msgid "Drive Mode 2" +msgstr "Режим замера" + +#: src/minoltamn.cpp:1378 +#, fuzzy +msgid "Drive mode 2" +msgstr "Режим замера" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +#, fuzzy +msgid "ISO Setting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Подавление шума" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +#, fuzzy +msgid "Dynamic Range Optimizer Mode" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1408 +#, fuzzy +msgid "Dynamic range optimizer mode" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +#, fuzzy +msgid "Self Timer Time" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1435 +#, fuzzy +msgid "Self timer time" +msgstr "Серийный номер" + +#: src/minoltamn.cpp:1438 +#, fuzzy +msgid "Continuous bracketing" +msgstr "Продолжительный ведущий режим" + +#: src/minoltamn.cpp:1440 +#, fuzzy +msgid "Single Frame Bracketing" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1441 +#, fuzzy +msgid "Single frame bracketing" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +#, fuzzy +msgid "White balance bracketing" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Температура цвета" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Температура цвета" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Свой 1" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "Свой 1" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/minoltamn.cpp:1464 +#, fuzzy +msgid "Custom WB Red Level" +msgstr "ЗарÑд батареи" + +#: src/minoltamn.cpp:1465 +#, fuzzy +msgid "Custom WB red level" +msgstr "Под уровнем морÑ" + +#: src/minoltamn.cpp:1467 +#, fuzzy +msgid "Custom WB Green Level" +msgstr "ЗарÑд батареи" + +#: src/minoltamn.cpp:1468 +#, fuzzy +msgid "Custom WB green level" +msgstr "Под уровнем морÑ" + +#: src/minoltamn.cpp:1470 +#, fuzzy +msgid "Custom WB Blue Level" +msgstr "ЗарÑд батареи" + +#: src/minoltamn.cpp:1471 +#, fuzzy +msgid "CustomWB blue level" +msgstr "Под уровнем морÑ" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Свой 1" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтройка баланÑа белого" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "Размер изображениÑ" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "One-Shot" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Подавление Ñффекта краÑных глаз" + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Подавление Ñффекта краÑных глаз" + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Ð’Ñпышка Ñработала" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "Ðвтобрекетирование" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "Ðвтобрекетирование" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1515 +#, fuzzy +msgid "AEL Button" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1516 +#, fuzzy +msgid "AEL button" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "КонтраÑÑ‚" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "ТонкомпенÑациÑ" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/minoltamn.cpp:1525 +#, fuzzy +msgid "AF assist" +msgstr "Тип Ñцены" + +#: src/minoltamn.cpp:1527 +#, fuzzy +msgid "Card Shutter Lock" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Режим ÑкÑпозиции" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Смещение ÑкÑпозиции" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Режим ÑкÑпозиции" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +#, fuzzy +msgid "Exposure Bracketing Indicator Last" +msgstr "Брекетинг" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "СпоÑоб фокуÑировки" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash Type" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash type" +msgstr "Режим вÑпышки" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +#, fuzzy +msgid "AE Lock" +msgstr "ФикÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "ЗарÑд батареи" + +#: src/minoltamn.cpp:1588 +#, fuzzy +msgid "Battery level" +msgstr "ЗарÑд батареи" + +#: src/minoltamn.cpp:1592 +#, fuzzy +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +#, fuzzy +msgid "Clear" +msgstr "КатегориÑ" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +#, fuzzy +msgid "Deep" +msgstr "Центральный" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +#, fuzzy +msgid "Light" +msgstr "Ðочной портрет" + +#: src/minoltamn.cpp:1950 +#, fuzzy +msgid "Night View" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +#, fuzzy +msgid "Local" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/minoltamn.cpp:2007 +#, fuzzy +msgid "Bottom-Right" +msgstr "Ñлева направо" + +#: src/minoltamn.cpp:2009 +#, fuzzy +msgid "Bottom-Left" +msgstr "Ñнизу вверх" + +#: src/minoltamn.cpp:2011 +#, fuzzy +msgid "Top-Left" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:2012 +#, fuzzy +msgid "Far-Right" +msgstr "ÐвторÑкие права" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "Ñправа налево" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +#, fuzzy +msgid "Advanced Auto" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "ЗарÑд батареи" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Дата пубикации" + +#: src/minoltamn.cpp:2054 +#, fuzzy +msgid "RAW " +msgstr "RAW" + +#: src/minoltamn.cpp:2055 +#, fuzzy +msgid "CRAW " +msgstr "RAW" + +#: src/minoltamn.cpp:2058 +#, fuzzy +msgid "RAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2059 +#, fuzzy +msgid "CRAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Уровень ÑжатиÑ" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "Сжатых битов на пикÑел" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +#, fuzzy +msgid "ISO Setting Used" +msgstr "ÐаÑтройка резкоÑти" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Ð’Ñ‹Ñокий ключ" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Ðизкий ключ" + +#: src/nikonmn.cpp:80 +#, fuzzy +msgid "Extra High" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +#, fuzzy +msgid "Upper-left" +msgstr "ПраваÑ" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +#, fuzzy +msgid "Upper-right" +msgstr "ПраваÑ" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +#, fuzzy +msgid "Lower-left" +msgstr "ПраваÑ" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +#, fuzzy +msgid "Lower-right" +msgstr "ПраваÑ" + +#: src/nikonmn.cpp:108 +#, fuzzy +msgid "Left-most" +msgstr "ЛеваÑ" + +#: src/nikonmn.cpp:109 +#, fuzzy +msgid "Right-most" +msgstr "Ðочной портрет" + +#: src/nikonmn.cpp:143 +#, fuzzy +msgid "Fire, manual" +msgstr "РучнаÑ" + +#: src/nikonmn.cpp:144 +#, fuzzy +msgid "Fire, external" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +#, fuzzy +msgid "Fire, TTL mode" +msgstr "Режим вÑпышки" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +#, fuzzy +msgid "Delay" +msgstr "Удалить" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Брекетинг" + +#: src/nikonmn.cpp:156 +#, fuzzy +msgid "Auto ISO" +msgstr "Ðвто" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Пульт Д/У?" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Продолжительный ведущий режим" + +#: src/nikonmn.cpp:166 +#, fuzzy +msgid "PC control" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:167 +#, fuzzy +msgid "Exposure bracketing" +msgstr "Брекетинг" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +#, fuzzy +msgid "IR control" +msgstr "Пульт Д/У?" + +#: src/nikonmn.cpp:176 +#, fuzzy +msgid "Auto release" +msgstr "Ðвтобрекетирование" + +#: src/nikonmn.cpp:177 +#, fuzzy +msgid "Manual release" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/nikonmn.cpp:182 +#, fuzzy +msgid "Lossy (type 1)" +msgstr "Тип объектива" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "ÐеÑжатый" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "" + +#: src/nikonmn.cpp:185 +#, fuzzy +msgid "Lossy (type 2)" +msgstr "Тип объектива" + +#: src/nikonmn.cpp:191 +#, fuzzy +msgid "B & W" +msgstr "Ч/Б" + +#: src/nikonmn.cpp:193 +#, fuzzy +msgid "Trim" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/nikonmn.cpp:194 +#, fuzzy +msgid "Small picture" +msgstr "Кино" + +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "Дневной Ñвет" + +#: src/nikonmn.cpp:196 +#, fuzzy +msgid "Red eye" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "тип" + +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "Дневной Ñвет" + +#: src/nikonmn.cpp:199 +#, fuzzy +msgid "Warm tone" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Тип изображениÑ" + +#: src/nikonmn.cpp:207 +#, fuzzy +msgid "Minimal" +msgstr "РучнаÑ" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +#, fuzzy +msgid "Nikon Makernote version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +#, fuzzy +msgid "ISO Speed" +msgstr "СкороÑть ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +#, fuzzy +msgid "Sharpening" +msgstr "РезкоÑть изображениÑ" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +#, fuzzy +msgid "Image sharpening setting" +msgstr "РезкоÑть изображениÑ" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "ФокуÑ" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +#, fuzzy +msgid "Flash Setting" +msgstr "Ð’Ñпышка Ñработала" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +#, fuzzy +msgid "Flash setting" +msgstr "Ð’Ñпышка Ñработала" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +#, fuzzy +msgid "ISO Selection" +msgstr "Выбор ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +#, fuzzy +msgid "ISO selection" +msgstr "Выбор ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +#, fuzzy +msgid "Image adjustment setting" +msgstr "ПодÑтройка изображениÑ" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +#, fuzzy +msgid "Manual focus distance" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +#, fuzzy +msgid "Digital zoom setting" +msgstr "Цифровой транÑфокатор" + +#: src/nikonmn.cpp:260 +#, fuzzy +msgid "AF Focus Position" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:261 +#, fuzzy +msgid "AF focus position information" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:265 +#, fuzzy +msgid "Unknown Nikon1MakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +#, fuzzy +msgid "Continuous autofocus" +msgstr "Продолжительный ведущий режим" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +#, fuzzy +msgid "Not used" +msgstr "Ðе определено" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA Basic" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA Normal" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA Fine" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA Basic" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA Normal" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA Fine" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "ЯркоÑть+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "ЯркоÑть-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "КонтраÑÑ‚+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "КонтраÑÑ‚-" + +#: src/nikonmn.cpp:457 +#, fuzzy +msgid "Speedlight" +msgstr "Дневной Ñвет" + +#: src/nikonmn.cpp:497 +#, fuzzy +msgid "Unknown Nikon2MakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +#, fuzzy +msgid "Flash Device" +msgstr "Ð’Ñпышка Ñработала" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +#, fuzzy +msgid "Flash device" +msgstr "Режим вÑпышки" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +#, fuzzy +msgid "White Balance Bias" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +#, fuzzy +msgid "White balance bias" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB Levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Программа" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "Программа" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure Difference" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure difference" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +#, fuzzy +msgid "Pointer to a preview image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash Comp" +msgstr "Режим вÑпышки" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash compensation setting" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image Boundary" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image boundary" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "AE bracket compensation applied" +msgstr "ТонкомпенÑациÑ" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +#, fuzzy +msgid "Image Processing" +msgstr "РезкоÑть изображениÑ" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +#, fuzzy +msgid "Image processing" +msgstr "РезкоÑть изображениÑ" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "ÐвторÑкие права" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "Инфо" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR info" +msgstr "Инфо" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO Info" +msgstr "О Ñнимке" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO info" +msgstr "ÐаÑтройка резкоÑти" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette Control" +msgstr "Пульт Д/У?" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette control" +msgstr "Ð‘ÐµÐ»Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "ТонкомпенÑациÑ" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "ТонкомпенÑациÑ" + +#: src/nikonmn.cpp:574 +#, fuzzy +msgid "Mode of flash used" +msgstr "Ð’Ñпышка Ñработала" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Режим Ñъемки" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Режим Ñъемки" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto Bracket Release" +msgstr "Ðвтобрекетирование" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto bracket release" +msgstr "Ðвтобрекетирование" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "Тип объектива" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "КонтраÑÑ‚" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "КонтраÑÑ‚" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +#, fuzzy +msgid "Scene mode" +msgstr "Тип Ñцены" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "ИÑточник Ñвета" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "ИÑточник Ñвета" + +#: src/nikonmn.cpp:583 +#, fuzzy +msgid "Shot info" +msgstr "О Ñнимке" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "ПодÑтройка оттенка" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ñ‚Ð¾Ð½Ð°" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Сжатие" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Сжатие" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +#, fuzzy +msgid "Linearization Table" +msgstr "Дата оцифровки" + +#: src/nikonmn.cpp:588 +#, fuzzy +msgid "Linearization table" +msgstr "Дата оцифровки" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color Balance" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color balance" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Данные объектива" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Параметры объектива" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw image center" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/nikonmn.cpp:592 +#, fuzzy +msgid "Sensor Pixel Size" +msgstr "ОчиÑтка ÑенÑора" + +#: src/nikonmn.cpp:592 +#, fuzzy +msgid "Sensor pixel size" +msgstr "ОчиÑтка ÑенÑора" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "Тип Ñцены" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene assist" +msgstr "Тип Ñцены" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch History" +msgstr "Длина изображениÑ" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "" + +#: src/nikonmn.cpp:597 +#, fuzzy +msgid "Serial NO" +msgstr "Серийный номер" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +#, fuzzy +msgid "Image Data Size" +msgstr "Размер изображениÑ" + +#: src/nikonmn.cpp:598 +#, fuzzy +msgid "Image data size" +msgstr "Размер изображениÑ" + +#: src/nikonmn.cpp:600 +#, fuzzy +msgid "Image Count" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:600 +#, fuzzy +msgid "Image count" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted Image Count" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted image count" +msgstr "Ðомер изображениÑ" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +#, fuzzy +msgid "Shutter Count" +msgstr "Выдержка" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "" + +#: src/nikonmn.cpp:603 +#, fuzzy +msgid "Flash info" +msgstr "Ð’Ñпышка" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" + +#: src/nikonmn.cpp:608 +#, fuzzy +msgid "AF Response" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:608 +#, fuzzy +msgid "AF response" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:610 +#, fuzzy +msgid "High ISO Noise Reduction" +msgstr "Подавление шума" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:612 +#, fuzzy +msgid "AF info 2" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:613 +#, fuzzy +msgid "File info" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/nikonmn.cpp:614 +#, fuzzy +msgid "AF tune" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture Data" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture data" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture Offsets" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:621 +#, fuzzy +msgid "Scan IFD" +msgstr "ID камеры" + +#: src/nikonmn.cpp:622 +#, fuzzy +msgid "ICC profile" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:623 +#, fuzzy +msgid "Capture output" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:625 +#, fuzzy +msgid "Unknown Nikon3MakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Ðет" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Да" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration Reduction" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration reduction" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:667 +#, fuzzy +msgid "Default Settings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick Adjust" +msgstr "ПодÑтройка оттенка" + +#: src/nikonmn.cpp:669 +#, fuzzy +msgid "Full Control" +msgstr "Режим захвата" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +#, fuzzy +msgid "Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "" + +#: src/nikonmn.cpp:702 +#, fuzzy +msgid "Adjust" +msgstr "КоррекциÑ" + +#: src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick adjust" +msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ñ‚Ð¾Ð½Ð°" + +#: src/nikonmn.cpp:709 +#, fuzzy +msgid "Filter effect" +msgstr "Цветовой Ñффект" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/nikonmn.cpp:713 +#, fuzzy +msgid "Unknown Nikon Picture Control Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:744 +#, fuzzy +msgid "Timezone" +msgstr "Ðичего" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "Дневной Ñвет" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "Дневной Ñвет" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date Display Format" +msgstr "Формат файла" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date display format" +msgstr "Формат файла" + +#: src/nikonmn.cpp:748 +#, fuzzy +msgid "Unknown Nikon World Time Tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/nikonmn.cpp:759 +#, fuzzy +msgid "Hi 0.3" +msgstr "HV10" + +#: src/nikonmn.cpp:760 +#, fuzzy +msgid "Hi 0.5" +msgstr "HV10" + +#: src/nikonmn.cpp:761 +#, fuzzy +msgid "Hi 0.7" +msgstr "HV10" + +#: src/nikonmn.cpp:762 +#, fuzzy +msgid "Hi 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:763 +#, fuzzy +msgid "Hi 1.3" +msgstr "HV10" + +#: src/nikonmn.cpp:764 +#, fuzzy +msgid "Hi 1.5" +msgstr "HV10" + +#: src/nikonmn.cpp:765 +#, fuzzy +msgid "Hi 1.7" +msgstr "HV10" + +#: src/nikonmn.cpp:766 +#, fuzzy +msgid "Hi 2.0" +msgstr "HV10" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "HV10" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "HV10" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "HV10" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +#, fuzzy +msgid "Lo 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO Expansion" +msgstr "Выбор ISO" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO expansion" +msgstr "Выбор ISO" + +#: src/nikonmn.cpp:785 +#, fuzzy +msgid "ISO 2" +msgstr "О Ñнимке" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO Expansion 2" +msgstr "Выбор ISO" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO expansion 2" +msgstr "Выбор ISO" + +#: src/nikonmn.cpp:788 +#, fuzzy +msgid "Unknown Nikon Iso Info Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "One-Shot" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "ДинамичеÑкий диапазон" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Серийный номер" + +#: src/nikonmn.cpp:803 +#, fuzzy +msgid "Dynamic Area (wide)" +msgstr "ДинамичеÑкий диапазон" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +#, fuzzy +msgid "Mid-left" +msgstr "ЛеваÑ" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +#, fuzzy +msgid "Mid-right" +msgstr "Ñлева направо" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "Ñправа налево" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "ÐвторÑкие права" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Режим вÑпышки" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +#, fuzzy +msgid "AF point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Вкл" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Вкл" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Вкл" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "ÐаÑтройка контраÑта" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "ÐаÑтройка контраÑта" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase Detect AF" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase detect AF" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Ширина изображениÑ" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Ширина изображениÑ" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Длина изображениÑ" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "Ð’Ñ‹Ñота изображениÑ" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Режим вÑпышки" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "СпоÑоб фокуÑировки" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "ÐвторÑкие права" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "ÐаÑтройка контраÑта" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "ÐаÑтройка контраÑта" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Ðомер заказа" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Ðомер заказа" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +#, fuzzy +msgid "Multiple Exposure" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Тип изображениÑ" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "Режим ÑкÑпозиции" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +#, fuzzy +msgid "Internal" +msgstr "Intel" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +#, fuzzy +msgid "iTTL-BL" +msgstr "TTL" + +#: src/nikonmn.cpp:992 +#, fuzzy +msgid "iTTL" +msgstr "TTL" + +#: src/nikonmn.cpp:993 +#, fuzzy +msgid "Auto Aperture" +msgstr "Диафрагма" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Без вÑпышки" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "ЧиÑло F" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "ИÑточник файла" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "ИÑточник файла" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "МакÑимальное фокуÑное раÑÑтоÑние" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Файл переименовываетÑÑ Ð²" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +#, fuzzy +msgid "Shutter count" +msgstr "Выдержка" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "Ð’Ñпышка Ñработала" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "Ð’Ñпышка Ñработала" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "Вкл" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "Выдержка" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Выдержка" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "Выдержка" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Выдержка" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration Reduction 2" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration reduction 2" +msgstr "Без коррекции" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG Levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB Levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Цветовое проÑтранÑтво" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG Levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG Levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG levels" +msgstr "ЗарÑд батареи" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Серийный номер" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Серийный номер камеры" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "Тип объектива" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "Тип объектива" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min Focal Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min focal length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max Focal Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max focal length" +msgstr "МакÑимальное фокуÑное раÑÑтоÑние" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +#, fuzzy +msgid "Max Aperture At Min Focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +#, fuzzy +msgid "Max aperture at min focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +#, fuzzy +msgid "Max Aperture At Max Focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +#, fuzzy +msgid "Max aperture at max focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "ВерÑÐ¸Ñ ARM" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "ВерÑÐ¸Ñ ARM" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Диафрагма" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Диафрагма" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective Max Aperture" +msgstr "Диафрагма" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective max aperture" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/nikonmn.cpp:1399 +#, fuzzy +msgid "Max aperture at min focal length" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1400 +#, fuzzy +msgid "Max aperture at max focal length" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "ÐеизвеÑтный панорамный Ñ‚Ñг Canon" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "ничего" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +#, fuzzy +msgid "Single-frame" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:71 +#, fuzzy +msgid "Standard Quality (SQ)" +msgstr "Стандартный Ñвет A" + +#: src/olympusmn.cpp:72 +#, fuzzy +msgid "High Quality (HQ)" +msgstr "Стандартный Ñвет A" + +#: src/olympusmn.cpp:73 +#, fuzzy +msgid "Super High Quality (SHQ)" +msgstr "Стандартный Ñвет A" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +#, fuzzy +msgid "Sport" +msgstr "Спорт" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +#, fuzzy +msgid "Landscape+Portrait" +msgstr "Ðльбом" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +#, fuzzy +msgid "Self Portrait" +msgstr "Портрет" + +#: src/olympusmn.cpp:102 +#, fuzzy +msgid "2 in 1" +msgstr "Вкл" + +#: src/olympusmn.cpp:105 +#, fuzzy +msgid "Night+Portrait" +msgstr "Ðочной портрет" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Пища" + +#: src/olympusmn.cpp:112 +#, fuzzy +msgid "Documents" +msgstr "ID документа" + +#: src/olympusmn.cpp:114 +#, fuzzy +msgid "Shoot & Select" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:117 +#, fuzzy +msgid "Candle" +msgstr "Дневной Ñвет" + +#: src/olympusmn.cpp:118 +#, fuzzy +msgid "Available Light" +msgstr "ЗаполнÑющий Ñвет" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +#, fuzzy +msgid "My Mode" +msgstr "Режим вÑпышки" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +#, fuzzy +msgid "Pet" +msgstr "УÑтановить" + +#: src/olympusmn.cpp:122 +#, fuzzy +msgid "Underwater Wide1" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/olympusmn.cpp:123 +#, fuzzy +msgid "Underwater Macro" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/olympusmn.cpp:124 +#, fuzzy +msgid "Shoot & Select1" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:125 +#, fuzzy +msgid "Shoot & Select2" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "Ðвто" + +#: src/olympusmn.cpp:131 +#, fuzzy +msgid "Underwater Wide2" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "внешнÑÑ" + +#: src/olympusmn.cpp:136 +#, fuzzy +msgid "Underwater Snapshot" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/olympusmn.cpp:137 +#, fuzzy +msgid "Shooting Guide" +msgstr "Режим Ñъемки" + +#: src/olympusmn.cpp:145 +#, fuzzy +msgid "Internal + External" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:176 +#, fuzzy +msgid "Interlaced" +msgstr "Intel" + +#: src/olympusmn.cpp:177 +#, fuzzy +msgid "Progressive" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹" + +#: src/olympusmn.cpp:188 +#, fuzzy +msgid "Thumbnail Image" +msgstr "ЭÑкиз" + +#: src/olympusmn.cpp:189 +#, fuzzy +msgid "Thumbnail image" +msgstr "ЭÑкиз" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:195 +#, fuzzy +msgid "Special Mode" +msgstr "Режим вÑпышки" + +#: src/olympusmn.cpp:196 +#, fuzzy +msgid "Picture taking mode" +msgstr "Режим замера" + +#: src/olympusmn.cpp:204 +#, fuzzy +msgid "Black & White Mode" +msgstr "Чёрно-белый" + +#: src/olympusmn.cpp:205 +#, fuzzy +msgid "Black and white mode" +msgstr "Чёрно-белый" + +#: src/olympusmn.cpp:208 +#, fuzzy +msgid "Digital zoom ratio" +msgstr "КоÑффициент цифрового транÑфокатора" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +#, fuzzy +msgid "Focal Plane Diagonal" +msgstr "Разрешение по X" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +#, fuzzy +msgid "Focal plane diagonal" +msgstr "Разрешение по X" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera Type" +msgstr "ID камеры" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera type" +msgstr "ID камеры" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID камеры" + +#: src/olympusmn.cpp:223 +#, fuzzy +msgid "Camera ID data" +msgstr "ID камеры" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Программное обеÑпечение" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +#, fuzzy +msgid "Preview Image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +#, fuzzy +msgid "Preview image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Режим захвата" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Режим захвата" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:243 +#, fuzzy +msgid "One Touch WB" +msgstr "One-touch" + +#: src/olympusmn.cpp:244 +#, fuzzy +msgid "One touch white balance" +msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +#, fuzzy +msgid "White Balance Bracket" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +#, fuzzy +msgid "White balance bracket" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "" + +#: src/olympusmn.cpp:262 +#, fuzzy +msgid "Various camera settings 1" +msgstr "Различные наÑтройки камеры" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "" + +#: src/olympusmn.cpp:265 +#, fuzzy +msgid "Various camera settings 2" +msgstr "Различные наÑтройки камеры" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "ЧувÑтвительноÑть (ISO)" + +#: src/olympusmn.cpp:274 +#, fuzzy +msgid "Aperture value" +msgstr "Диафрагма" + +#: src/olympusmn.cpp:277 +#, fuzzy +msgid "Brightness value" +msgstr "ЯркоÑть" + +#: src/olympusmn.cpp:285 +#, fuzzy +msgid "Bracket" +msgstr "Брекетинг" + +#: src/olympusmn.cpp:286 +#, fuzzy +msgid "Exposure compensation value" +msgstr "ТонкомпенÑациÑ" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +#, fuzzy +msgid "Sensor Temperature" +msgstr "Температура объектива" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +#, fuzzy +msgid "Sensor temperature" +msgstr "Температура объектива" + +#: src/olympusmn.cpp:291 +#, fuzzy +msgid "Lens Temperature" +msgstr "Температура объектива" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Температура объектива" + +#: src/olympusmn.cpp:294 +#, fuzzy +msgid "Light Condition" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:295 +#, fuzzy +msgid "Light condition" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "ТранÑфокатор" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom step count" +msgstr "Выдержка" + +#: src/olympusmn.cpp:309 +#, fuzzy +msgid "Macro Focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/olympusmn.cpp:310 +#, fuzzy +msgid "Macro focus step count" +msgstr "Выдержка" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +#, fuzzy +msgid "Sharpness Factor" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +#, fuzzy +msgid "Sharpness factor" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:315 +#, fuzzy +msgid "Flash Charge Level" +msgstr "Ð’Ñпышка Ñработала" + +#: src/olympusmn.cpp:316 +#, fuzzy +msgid "Flash charge level" +msgstr "Ð’Ñпышка Ñработала" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +#, fuzzy +msgid "Color Matrix" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +#, fuzzy +msgid "Color matrix" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:321 +#, fuzzy +msgid "BlackLevel" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +#, fuzzy +msgid "Black level" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +#, fuzzy +msgid "Red Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +#, fuzzy +msgid "Red balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +#, fuzzy +msgid "Blue Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +#, fuzzy +msgid "Blue balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:342 +#, fuzzy +msgid "Color Matrix Number" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:345 +#, fuzzy +msgid "Serial Number 2" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:346 +#, fuzzy +msgid "Serial number 2" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +#, fuzzy +msgid "Flash exposure compensation" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñпышки ?" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External Flash Zoom" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External flash zoom" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:387 +#, fuzzy +msgid "External Flash Mode" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:388 +#, fuzzy +msgid "External flash mode" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:396 +#, fuzzy +msgid "Color Control" +msgstr "Режим захвата" + +#: src/olympusmn.cpp:397 +#, fuzzy +msgid "Color control" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Уровень ÑжатиÑ" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Уровень ÑжатиÑ" + +#: src/olympusmn.cpp:427 +#, fuzzy +msgid "Preview image embedded" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:430 +#, fuzzy +msgid "Offset of the preview image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:433 +#, fuzzy +msgid "Size of the preview image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:435 +#, fuzzy +msgid "CCD Scan Mode" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:436 +#, fuzzy +msgid "CCD scan mode" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:441 +#, fuzzy +msgid "Infinity Lens Step" +msgstr "БеÑконечный" + +#: src/olympusmn.cpp:442 +#, fuzzy +msgid "Infinity lens step" +msgstr "БеÑконечный" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "Тип объектива" + +#: src/olympusmn.cpp:445 +#, fuzzy +msgid "Near lens step" +msgstr "Тип объектива" + +#: src/olympusmn.cpp:447 +#, fuzzy +msgid "Equipment Info" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/olympusmn.cpp:448 +#, fuzzy +msgid "Camera equipment sub-IFD" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:453 +#, fuzzy +msgid "Raw Development" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:454 +#, fuzzy +msgid "Raw development sub-IFD" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:456 +#, fuzzy +msgid "Raw Development 2" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:457 +#, fuzzy +msgid "Raw development 2 sub-IFD" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr "РезкоÑть изображениÑ" + +#: src/olympusmn.cpp:462 +#, fuzzy +msgid "Focus Info" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:463 +#, fuzzy +msgid "Focus sub-IFD" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:465 +#, fuzzy +msgid "Raw Info" +msgstr "Инфо" + +#: src/olympusmn.cpp:466 +#, fuzzy +msgid "Raw sub-IFD" +msgstr "Sub-IFD" + +#: src/olympusmn.cpp:470 +#, fuzzy +msgid "Unknown OlympusMakerNote tag" +msgstr "ÐеизвеÑтное поле IFD" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Программа" + +#: src/olympusmn.cpp:491 +#, fuzzy +msgid "Center-weighted average" +msgstr "Центрально-взвешенный Ñредний" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +#: src/olympusmn.cpp:494 +#, fuzzy +msgid "Pattern+AF" +msgstr "Паттерн CFA" + +#: src/olympusmn.cpp:495 +#, fuzzy +msgid "Spot+Highlight control" +msgstr "Тень" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Тень" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "One-Shot" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +#, fuzzy +msgid "Multi AF" +msgstr "ÐвтоматичеÑкий" + +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:518 +#, fuzzy +msgid "AF Used" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:523 +#, fuzzy +msgid "Not Ready" +msgstr "Ðе определено" + +#: src/olympusmn.cpp:524 +#, fuzzy +msgid "Ready" +msgstr "Ðе определено" + +#: src/olympusmn.cpp:531 +#, fuzzy +msgid "Fill-in" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/olympusmn.cpp:533 +#, fuzzy +msgid "Slow-sync" +msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" + +#: src/olympusmn.cpp:534 +#, fuzzy +msgid "Forced On" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +#, fuzzy +msgid "7500K (Fine Weather with Shade)" +msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" + +#: src/olympusmn.cpp:568 +#, fuzzy +msgid "6000K (Cloudy)" +msgstr "Облачно" + +#: src/olympusmn.cpp:569 +#, fuzzy +msgid "5300K (Fine Weather)" +msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Диафрагма" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Ðвтобрекетирование" + +#: src/olympusmn.cpp:574 +#, fuzzy +msgid "6600K (Daylight fluorescent)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:575 +#, fuzzy +msgid "4500K (Neutral white fluorescent)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:576 +#, fuzzy +msgid "4000K (Cool white fluorescent)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "One-touch" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "One-touch" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "One-touch" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "One-touch" + +#: src/olympusmn.cpp:584 +#, fuzzy +msgid "Custom WB 1" +msgstr "Свой 1" + +#: src/olympusmn.cpp:585 +#, fuzzy +msgid "Custom WB 2" +msgstr "Свой 2" + +#: src/olympusmn.cpp:586 +#, fuzzy +msgid "Custom WB 3" +msgstr "Свой" + +#: src/olympusmn.cpp:587 +#, fuzzy +msgid "Custom WB 4" +msgstr "Свой 1" + +#: src/olympusmn.cpp:593 +#, fuzzy +msgid "CM1 (Red Enhance)" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:594 +#, fuzzy +msgid "CM2 (Green Enhance)" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:595 +#, fuzzy +msgid "CM3 (Blue Enhance)" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise Filter" +msgstr "ПорÑдок заполнениÑ" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "ПорÑдок заполнениÑ" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +#, fuzzy +msgid "Monotone" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +#, fuzzy +msgid "On, Mode 1" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +#, fuzzy +msgid "On, Mode 2" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera Settings Version" +msgstr "ÐаÑтройки камеры" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera settings version" +msgstr "ÐаÑтройки камеры" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "PreviewImage Valid" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "Preview image valid" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "PreviewImage Start" +msgstr "Данные ÑÑкиза" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "Preview image start" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "PreviewImage Length" +msgstr "Длина изображениÑ" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "Preview image length" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/olympusmn.cpp:666 +#, fuzzy +msgid "Auto exposure lock" +msgstr "Режим ÑкÑпозиции" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Другой процеÑÑ Ð¿Ñ€Ð¾Ñвки" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +#, fuzzy +msgid "AF search" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF Areas" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF areas" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF Fine Tune Adjust" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF fine tune adjust" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "Пульт Д/У?" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "Пульт Д/У?" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Режим вÑпышки" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Режим вÑпышки" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "Ð’Ñпышка Ñработала" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "Ð’Ñпышка Ñработала" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +#, fuzzy +msgid "White Balance 2" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +#, fuzzy +msgid "White balance 2" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White Balance Temperature" +msgstr "Таблица баланÑа белого" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White balance temperature" +msgstr "Таблица баланÑа белого" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +#, fuzzy +msgid "Contrast Setting" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness Setting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion Correction" +msgstr "Без коррекции" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion correction" +msgstr "Без коррекции" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +#, fuzzy +msgid "Shading Compensation" +msgstr "ТонкомпенÑациÑ" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +#, fuzzy +msgid "Shading compensation" +msgstr "ТонкомпенÑациÑ" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression Factor" +msgstr "Уровень ÑжатиÑ" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression factor" +msgstr "Уровень ÑжатиÑ" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +#, fuzzy +msgid "Gradation" +msgstr "ДлительноÑть" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +#, fuzzy +msgid "Picture mode" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:697 +#, fuzzy +msgid "Picture Mode Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +#, fuzzy +msgid "Picture mode saturation" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture Mode Hue" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture mode hue" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:699 +#, fuzzy +msgid "Picture Mode Contrast" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +#, fuzzy +msgid "Picture mode contrast" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:700 +#, fuzzy +msgid "Picture Mode Sharpness" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +#, fuzzy +msgid "Picture mode sharpness" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture Mode BW Filter" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture mode BW filter" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture Mode Tone" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture mode tone" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "ПорÑдок заполнениÑ" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Цифровой фильтр" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Цифровой фильтр" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama Mode" +msgstr "Панорама" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama mode" +msgstr "Кадр панорамы" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image Quality 2" +msgstr "КачеÑтво" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image quality 2" +msgstr "КачеÑтво изображениÑ" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer Pressure" +msgstr "ÐеÑжатый" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer pressure" +msgstr "ÐеÑжатый" + +#: src/olympusmn.cpp:711 +#, fuzzy +msgid "Manometer Reading" +msgstr "ÐеÑжатый" + +#: src/olympusmn.cpp:711 +#, fuzzy +msgid "Manometer reading" +msgstr "ÐеÑжатый" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB Detect" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB detect" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "ÐеизвеÑтное поле" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "ВерÑÐ¸Ñ Exif" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +#, fuzzy +msgid "Lens Serial Number" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +#, fuzzy +msgid "Lens serial number" +msgstr "Серийный номер камеры" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens Firmware Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens firmware version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max Aperture At Current Focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max aperture at current focal" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens Properties" +msgstr "Температура объектива" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens properties" +msgstr "Температура объектива" + +#: src/olympusmn.cpp:761 +#, fuzzy +msgid "Extender" +msgstr "внешнÑÑ" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender Serial Number" +msgstr "Серийный номер камеры" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender serial number" +msgstr "Серийный номер камеры" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender Model" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender model" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender Firmware Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender firmwareversion" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion Lens" +msgstr "ВерÑии" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion lens" +msgstr "ЯркоÑть" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +#, fuzzy +msgid "Flash Model" +msgstr "Режим вÑпышки" + +#: src/olympusmn.cpp:767 +#, fuzzy +msgid "Flash model" +msgstr "Режим вÑпышки" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:769 +#, fuzzy +msgid "FlashSerialNumber" +msgstr "Серийный номер" + +#: src/olympusmn.cpp:771 +#, fuzzy +msgid "Unknown OlympusEq tag" +msgstr "ÐеизвеÑтный тег Exif" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +#, fuzzy +msgid "High Speed" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +#, fuzzy +msgid "High Function" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:790 +#, fuzzy +msgid "Advanced High Speed" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/olympusmn.cpp:791 +#, fuzzy +msgid "Advanced High Function" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" + +#: src/olympusmn.cpp:796 +#, fuzzy +msgid "Original" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/olympusmn.cpp:797 +#, fuzzy +msgid "Edited (Landscape)" +msgstr "Ðльбом" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +#, fuzzy +msgid "Edited (Portrait)" +msgstr "Ðочной портрет" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:805 +#, fuzzy +msgid "WB Gray Point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +#, fuzzy +msgid "Exposure Bias Value" +msgstr "Смещение ÑкÑпозиции" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +#, fuzzy +msgid "Exposure bias value" +msgstr "Смещение ÑкÑпозиции" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White Balance Value" +msgstr "Таблица баланÑа белого" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White balance value" +msgstr "Таблица баланÑа белого" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "ПодÑтройка оттенка" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ñ‚Ð¾Ð½Ð°" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation Emphasis" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation emphasis" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Цвет" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory color emphasis" +msgstr "Цвет" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast Value" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast value" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness Value" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness value" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +#, fuzzy +msgid "Engine" +msgstr "Звукооператор" + +#: src/olympusmn.cpp:827 +#, fuzzy +msgid "Edit status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:828 +#, fuzzy +msgid "Settings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/olympusmn.cpp:830 +#, fuzzy +msgid "Unknown OlympusRd tag" +msgstr "ÐеизвеÑтное поле" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/olympusmn.cpp:889 +#, fuzzy +msgid "White balance fine adjustment" +msgstr "Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтройка баланÑа белого" + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW Filter" +msgstr "ПорÑдок заполнениÑ" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW filter" +msgstr "ПорÑдок заполнениÑ" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto Gradation" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto gradation" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "PM Noise Filter" +msgstr "ПорÑдок заполнениÑ" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "Портретный режим" + +#: src/olympusmn.cpp:909 +#, fuzzy +msgid "Unknown OlympusRd2 tag" +msgstr "ÐеизвеÑтное поле" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Вкл" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Вкл" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "РезкоÑть изображениÑ" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "РезкоÑть изображениÑ" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB Levels 3000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB levels 3000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB Levels 3300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB levels 3300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB Levels 3600K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB levels 3600K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB Levels 3900K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB levels 3900K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB Levels 4000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB levels 4000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB Levels 4300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB levels 4300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB Levels 4500K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB levels 4500K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB Levels 4800K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB levels 4800K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB Levels 5300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB levels 5300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB Levels 6000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB levels 6000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB Levels 6600K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB levels 6600K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB Levels 7500K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB levels 7500K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB Levels CWB1" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB levels CWB1" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB Levels CWB3" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB levels CWB3" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB Levels CWB4" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB levels CWB4" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G Level 3000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G level 3000K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G Level 3300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G level 3300K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G Level 3600K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G level 3600K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G Level 3900K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G level 3900K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G Level 4000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G level 4000K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G Level 4300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G level 4300K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G Level 4500K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G level 4500K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G Level 4800K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G level 4800K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G Level 5300K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G level 5300K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G Level 6000K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G level 6000K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G Level 6600K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G level 6600K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G Level 7500K" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G level 7500K" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Под уровнем морÑ" + +#: src/olympusmn.cpp:970 +#, fuzzy +msgid "Enhancer" +msgstr "Звукооператор" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer Values" +msgstr "Звукооператор" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer values" +msgstr "Звукооператор" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "ЯркоÑть" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "ЯркоÑть" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +#, fuzzy +msgid "Black Level" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +#, fuzzy +msgid "Crop Left" +msgstr "Ñправа налево" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +#, fuzzy +msgid "Crop left" +msgstr "Ñправа налево" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +#, fuzzy +msgid "Crop Top" +msgstr "Монохромный" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +#, fuzzy +msgid "Crop top" +msgstr "Монохромный" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +#, fuzzy +msgid "Crop Width" +msgstr "ÐвторÑкие права" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +#, fuzzy +msgid "Crop width" +msgstr "ÐвторÑкие права" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +#, fuzzy +msgid "Crop Height" +msgstr "ÐвторÑкие права" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +#, fuzzy +msgid "Crop height" +msgstr "ÐвторÑкие права" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Режим ÑкÑпозиции" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Режим ÑкÑпозиции" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "" + +#: src/olympusmn.cpp:985 +#, fuzzy +msgid "Aspect ratio" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Ðазвание/Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Ðазвание/Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +#, fuzzy +msgid "Face Detect" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +#, fuzzy +msgid "Face detect" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/olympusmn.cpp:990 +#, fuzzy +msgid "Unknown OlympusIp tag" +msgstr "ÐеизвеÑтное поле IFD" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus Info Version" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus info version" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto Focus" +msgstr "AI Focus" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene Detect" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene detect" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene Area" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene area" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene Detect Data" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene detect data" +msgstr "Тип Ñцены" + +#: src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom Step Count" +msgstr "Выдержка" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus Step Count" +msgstr "Продолжительный ведущий режим" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus step count" +msgstr "Выдержка" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "РаÑÑтоÑние ручного фокуÑа" + +#: src/olympusmn.cpp:1016 +#, fuzzy +msgid "External Flash" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ ÑкÑпозициÑ" + +#: src/olympusmn.cpp:1025 +#, fuzzy +msgid "Unknown OlympusFi tag" +msgstr "ÐеизвеÑтное поле IFD" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "ÐеизвеÑтное поле IFD" + +#: src/olympusmn.cpp:1049 +#, fuzzy +msgid "Fine Weather" +msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" + +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "Вечер" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +#, fuzzy +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1054 +#, fuzzy +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1055 +#, fuzzy +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1057 +#, fuzzy +msgid "Custom 1-4" +msgstr "Свой 1" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB Levels Used" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB levels used" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB Levels Auto" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB levels auto" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB Levels Shade" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB levels shade" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB Levels Cloudy" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB levels cloudy" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB Levels Fine Weather" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB levels fine weather" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB Levels Tungsten" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB levels tungsten" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB Levels Evening Sunlight" +msgstr "Вечер" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB levels evening sunlight" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB Levels Daylight Fluor" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB levels daylight fluor" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB Levels Day White Fluor" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB levels day white fluor" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB Levels Cool White Fluor" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB levels cool white fluor" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color Matrix2" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color matrix 2" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black Level 2" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black level 2" +msgstr "ЗарÑд батареи" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "КоÑффициенты YCbCr" + +#: src/olympusmn.cpp:1077 +#, fuzzy +msgid "YCbCr coefficients" +msgstr "КоÑффициенты YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "ÐаÑтройка контраÑта" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM Exposure Compensation" +msgstr "ТонкомпенÑациÑ" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM exposure compensation" +msgstr "КомпенÑÐ°Ñ†Ð¸Ñ ÑкÑпозиции" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Ðвтомат. Ð±Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM Hue" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM hue" +msgstr "Цветовое проÑтранÑтво" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "РезкоÑть" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "ÐеизвеÑтное поле" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +#, fuzzy +msgid "User-Selected" +msgstr "Ðвтобрекетирование" + +#: src/olympusmn.cpp:1122 +#, fuzzy +msgid "Auto-Override" +msgstr "ПерезапиÑать" + +#: src/olympusmn.cpp:1158 +#, fuzzy +msgid "Fast" +msgstr "быÑтрый" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 K" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 K" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 K" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 K" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 K" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 K" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 K" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "One-touch" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "Уникальный ID изображениÑ" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Ñправа налево" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Панорама" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1510 +#, fuzzy +msgid "Fish Eye" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +#, fuzzy +msgid "Dramatic Tone" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Выбор ISO" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "СпоÑоб фокуÑировки" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "Панорама" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Язык" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Язык" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "ЛеваÑ" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Центральный" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "ЛеваÑ" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Ñправа налево" + +#: src/olympusmn.cpp:1630 +#, fuzzy +msgid "Bottom-left (horizontal)" +msgstr "Ñправа налево" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "Ñлева направо" + +#: src/olympusmn.cpp:1632 +#, fuzzy +msgid "Bottom-right (horizontal)" +msgstr "Ñлева направо" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "Центральный" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +#, fuzzy +msgid "Mid-right (vertical)" +msgstr "Ñлева направо" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +#, fuzzy +msgid "Bottom-left (vertical)" +msgstr "Ñправа налево" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "Ñлева направо" + +#: src/olympusmn.cpp:1643 +#, fuzzy +msgid "Bottom-right (vertical)" +msgstr "Ñлева направо" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "One-Shot" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +#, fuzzy +msgid "Very High" +msgstr "Ð’Ñ‹Ñокий" + +#: src/panasonicmn.cpp:60 +#, fuzzy +msgid "Motion Picture" +msgstr "Портретный режим" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Кино" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Кино" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "" + +#: src/panasonicmn.cpp:83 +#, fuzzy +msgid "Auto, focus button" +msgstr "AI Focus" + +#: src/panasonicmn.cpp:84 +#, fuzzy +msgid "Auto, continuous" +msgstr "Продолжительный ведущий режим" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +#, fuzzy +msgid "Panning" +msgstr "Предупреждение" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Теле-макро" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Макро" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Тип Ñцены" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Приоритет выдержки" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "ВыполнÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ" + +#: src/panasonicmn.cpp:123 +#, fuzzy +msgid "Simple" +msgstr "Файл" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Цветовой Ñффект" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +#, fuzzy +msgid "Soft skin" +msgstr "О Ñнимке" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +#, fuzzy +msgid "Candlelight" +msgstr "Дневной Ñвет" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "Стандартный Ñвет A" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Панорама" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +#, fuzzy +msgid "Intelligent ISO" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:146 +#, fuzzy +msgid "Intelligent auto" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "ОблаÑть передачи" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Ð’Ñпышка Ñработала" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Сканер фотопленки" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Цвет" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Кадр панорамы" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "Дневной Ñвет" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Пульт Д/У?" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Цифровой фильтр" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Портрет" + +#: src/panasonicmn.cpp:163 +#, fuzzy +msgid "Silky Skin" +msgstr "О Ñнимке" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "ÐаÑыщенноÑть" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "значение" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "Без коррекции" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Ðочной портрет" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Тёплый" + +#: src/panasonicmn.cpp:199 +#, fuzzy +msgid "Cool" +msgstr "Цвет" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +#, fuzzy +msgid "Low/High quality" +msgstr "КачеÑтво изображениÑ" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "БеÑконечный" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "Ðизкий" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "Ð’Ñ‹Ñокий" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "Ð’Ñ‹Ñокий" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +#, fuzzy +msgid "Highest (+2)" +msgstr "Ð’Ñ‹Ñокий" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Ðе определено" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Ðе определено" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +#, fuzzy +msgid "Home" +msgstr "Рим" + +#: src/panasonicmn.cpp:294 +#, fuzzy +msgid "Standard (color)" +msgstr "Стандартный Ñвет A" + +#: src/panasonicmn.cpp:295 +#, fuzzy +msgid "Dynamic (color)" +msgstr "ДинамичеÑкий диапазон" + +#: src/panasonicmn.cpp:296 +#, fuzzy +msgid "Nature (color)" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/panasonicmn.cpp:297 +#, fuzzy +msgid "Smooth (color)" +msgstr "Стандартный Ñвет A" + +#: src/panasonicmn.cpp:298 +#, fuzzy +msgid "Standard (B&W)" +msgstr "Стандартный Ñвет A" + +#: src/panasonicmn.cpp:299 +#, fuzzy +msgid "Dynamic (B&W)" +msgstr "ДинамичеÑкий диапазон" + +#: src/panasonicmn.cpp:300 +#, fuzzy +msgid "Smooth (B&W)" +msgstr "Стандартный Ñвет A" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Брекетинг" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10Ñ" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "внешнÑÑ" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Ðвто" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Стандартный Ñвет A" + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Ñлева направо" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Ñправа налево" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Ñверху вниз" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Ñнизу вверх" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Выбор ISO" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Звук" + +#: src/panasonicmn.cpp:453 +#, fuzzy +msgid "White balance adjustment" +msgstr "Ð¢Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтройка баланÑа белого" + +#: src/panasonicmn.cpp:454 +#, fuzzy +msgid "FlashBias" +msgstr "Ð’Ñпышка" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "ВерÑÐ¸Ñ Exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Цветовой Ñффект" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Цветовой Ñффект" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst Mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Подавление шума" + +#: src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self Timer" +msgstr "Серийный номер" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Тип Ñцены" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical Zoom Mode" +msgstr "Режим вÑпышки" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical zoom mode" +msgstr "Режим вÑпышки" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World Time Location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World time location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "Отметка времени по GPS" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Программа" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Тип Ñцены" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "Отметка времени по GPS" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Температура цвета" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Температура цвета" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Брекетинг" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "ПодÑтройка оттенка" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "ПодÑтройка оттенка" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Ð’Ñпышка" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Подавление шума при длительной выдержке" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Тип объектива" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "Тип объектива" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Серийный номер" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "ОблаÑть передачи" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "СпоÑоб фокуÑировки" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +#, fuzzy +msgid "Title" +msgstr "Файл" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +#, fuzzy +msgid "Location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +#, fuzzy +msgid "State" +msgstr "Программное обеÑпечение" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "ДинамичеÑкий диапазон" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Подавление шума" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Город" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Портретный режим" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "Ñправа налево" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "направление панорамы" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Цветовое проÑтранÑтво" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð²Ñпышка" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "One-touch" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB Red Level" +msgstr "ЗарÑд батареи" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB red level" +msgstr "Под уровнем морÑ" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB Green Level" +msgstr "ЗарÑд батареи" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB green level" +msgstr "Под уровнем морÑ" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB Blue Level" +msgstr "ЗарÑд батареи" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB blue level" +msgstr "Под уровнем морÑ" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "Отметка времени по GPS" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "Отметка времени по GPS" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "ОблаÑть передачи" + +#: src/panasonicmn.cpp:544 +#, fuzzy +msgid "Unknown PanasonicMakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Режим замера" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "не уÑтановлено\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "Ширина изображениÑ" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "ÐвторÑкие права" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "ОчиÑтка ÑенÑора" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "ОчиÑтка ÑенÑора" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Производитель" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Модель" + +#: src/panasonicmn.cpp:740 +#, fuzzy +msgid "The model name or model number of the equipment" +msgstr "Вид иÑточника Ñвета" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +#, fuzzy +msgid "Strip Offsets" +msgstr "Режим захвата" + +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "Режим захвата" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "ОриентациÑ" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "The number of rows per strip" +msgstr "ЧиÑло F" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Выдержка" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Выдержка" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "Уникальный ID изображениÑ" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "ÐеизвеÑтный набор данных" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Указатель Exif IFD" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "Указатель GPS Info IFD" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/pentaxmn.cpp:57 +#, fuzzy +msgid "Night-Scene" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/pentaxmn.cpp:199 +#, fuzzy +msgid "Good" +msgstr "Пища" + +#: src/pentaxmn.cpp:200 +#, fuzzy +msgid "Better" +msgstr "Центральный" + +#: src/pentaxmn.cpp:201 +#, fuzzy +msgid "Best" +msgstr "Запад" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "" + +#: src/pentaxmn.cpp:247 +#, fuzzy +msgid "Auto, Did not fire" +msgstr "Ð’Ñпышка не Ñработала" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Ð’Ñпышка не Ñработала" + +#: src/pentaxmn.cpp:250 +#, fuzzy +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "авто + подавление Ñффекта краÑных глаз" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +#, fuzzy +msgid "Auto, Fired" +msgstr "Ðвтобрекетирование" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Сработала" + +#: src/pentaxmn.cpp:254 +#, fuzzy +msgid "Auto, Fired, Red-eye reduction" +msgstr "авто + подавление Ñффекта краÑных глаз" + +#: src/pentaxmn.cpp:255 +#, fuzzy +msgid "On, Red-eye reduction" +msgstr "Подавление Ñффекта краÑных глаз" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "" + +#: src/pentaxmn.cpp:259 +#, fuzzy +msgid "On, Slow-sync" +msgstr "Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" + +#: src/pentaxmn.cpp:260 +#, fuzzy +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Да, Ñ Ð¿Ð¾Ð´Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñффекта краÑных глаз" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +#, fuzzy +msgid "Pan Focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "ÐаÑтройка контраÑта" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "ÐаÑтройка контраÑта" + +#: src/pentaxmn.cpp:284 +#, fuzzy +msgid "Fixed Center" +msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "ÐвтоматичеÑкий" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Выбор ISO" + +#: src/pentaxmn.cpp:305 +#, fuzzy +msgid "Fixed Center or multiple" +msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" + +#: src/pentaxmn.cpp:307 +#, fuzzy +msgid "Top-center" +msgstr "Центральный" + +#: src/pentaxmn.cpp:313 +#, fuzzy +msgid "Bottom-center" +msgstr "Ñлева направо" + +#: src/pentaxmn.cpp:402 +#, fuzzy +msgid "Multi Segment" +msgstr "Режим замера" + +#: src/pentaxmn.cpp:403 +#, fuzzy +msgid "Center Weighted" +msgstr "Центровзвешенный" + +#: src/pentaxmn.cpp:415 +#, fuzzy +msgid "DaylightFluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:416 +#, fuzzy +msgid "DaywhiteFluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Температура цвета" + +#: src/pentaxmn.cpp:423 +#, fuzzy +msgid "User Selected" +msgstr "Ðвтобрекетирование" + +#: src/pentaxmn.cpp:428 +#, fuzzy +msgid "Auto (Daylight)" +msgstr "Дневной Ñвет" + +#: src/pentaxmn.cpp:429 +#, fuzzy +msgid "Auto (Shade)" +msgstr "Тень" + +#: src/pentaxmn.cpp:430 +#, fuzzy +msgid "Auto (Flash)" +msgstr "Ðвтобрекетирование" + +#: src/pentaxmn.cpp:431 +#, fuzzy +msgid "Auto (Tungsten)" +msgstr "Лампа накаливаниÑ" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:433 +#, fuzzy +msgid "Auto (DaywhiteFluorescent)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:434 +#, fuzzy +msgid "Auto (WhiteFluorescent)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:435 +#, fuzzy +msgid "Auto (Cloudy)" +msgstr "Облачно" + +#: src/pentaxmn.cpp:437 +#, fuzzy +msgid "Preset (Fireworks?)" +msgstr "Фейерверк" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +#, fuzzy +msgid "Med Low" +msgstr "Ðизкий" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +#, fuzzy +msgid "Med High" +msgstr "Ð’Ñ‹Ñокий" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +#, fuzzy +msgid "Med Soft" +msgstr "Ðизкий" + +#: src/pentaxmn.cpp:474 +#, fuzzy +msgid "Med Hard" +msgstr "Ð’Ñ‹Ñокий" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "" + +#: src/pentaxmn.cpp:476 +#, fuzzy +msgid "Very Hard" +msgstr "Ð’Ñ‹Ñокий" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +#, fuzzy +msgid "Home town" +msgstr "Тип изображениÑ" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Гонолулу" + +#: src/pentaxmn.cpp:491 +#, fuzzy +msgid "Anchorage" +msgstr "Средний" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Ванкувер" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "" + +#: src/pentaxmn.cpp:495 +#, fuzzy +msgid "Calgary" +msgstr "КатегориÑ" + +#: src/pentaxmn.cpp:496 +#, fuzzy +msgid "Denver" +msgstr "Центральный" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Мехико" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Чикаго" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Майами" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Торонто" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "Ðью-Йорк" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "СантьÑго" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "ГалифакÑ" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "БуÑноÑ-ÐйрÑÑ" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Мадрид" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Лондон" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Париж" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Милан" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Рим" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Берлин" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "" + +#: src/pentaxmn.cpp:515 +#, fuzzy +msgid "Istanbul" +msgstr "Кабул" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Каир" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "ИеруÑалим" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "МоÑква" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Тегеран" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Дубаи" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Карачи" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Кабул" + +#: src/pentaxmn.cpp:524 +#, fuzzy +msgid "Male" +msgstr "РучнаÑ" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Дели" + +#: src/pentaxmn.cpp:526 +#, fuzzy +msgid "Colombo" +msgstr "Цветовое проÑтранÑтво" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Катманду" + +#: src/pentaxmn.cpp:528 +#, fuzzy +msgid "Dacca" +msgstr "Дакар" + +#: src/pentaxmn.cpp:529 +#, fuzzy +msgid "Yangon" +msgstr "ничего" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Бангкок" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "" + +#: src/pentaxmn.cpp:532 +#, fuzzy +msgid "Vientiane" +msgstr "ОриентациÑ" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Сингапур" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Джакарта" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Гонконг" + +#: src/pentaxmn.cpp:538 +#, fuzzy +msgid "Perth" +msgstr "Север" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Пекин" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Шанхай" + +#: src/pentaxmn.cpp:541 +#, fuzzy +msgid "Manila" +msgstr "РучнаÑ" + +#: src/pentaxmn.cpp:542 +#, fuzzy +msgid "Taipei" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Сеул" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Токио" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Сидней" + +#: src/pentaxmn.cpp:548 +#, fuzzy +msgid "Noumea" +msgstr "ЧиÑло F" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Лима" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Дакар" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "ХельÑинки" + +#: src/pentaxmn.cpp:555 +#, fuzzy +msgid "Athens" +msgstr "Объектив" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Ðайроби" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "ÐмÑтердам" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Стокгольм" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "" + +#: src/pentaxmn.cpp:560 +#, fuzzy +msgid "Copenhagen" +msgstr "Охват" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +#, fuzzy +msgid "Unprocessed" +msgstr "ÐеÑжатый" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "размер" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +#, fuzzy +msgid "Cropped" +msgstr "Монохромный" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Цифровой фильтр" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +#, fuzzy +msgid "Hi-speed Program" +msgstr "Программа ÑкÑпозиции" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +#, fuzzy +msgid "DOF Program" +msgstr "Программа" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +#, fuzzy +msgid "MTF Program" +msgstr "Программа" + +#: src/pentaxmn.cpp:588 +#, fuzzy +msgid "Night Scene Portrait" +msgstr "Ðочной портрет" + +#: src/pentaxmn.cpp:589 +#, fuzzy +msgid "No Flash" +msgstr "Без вÑпышки" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "Длина изображениÑ" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "значение" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Супермакро" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +#, fuzzy +msgid "Auto PICT (Standard)" +msgstr "Ðльбом" + +#: src/pentaxmn.cpp:611 +#, fuzzy +msgid "Auto PICT (Portrait)" +msgstr "ÐвтоматичеÑкий контраÑÑ‚" + +#: src/pentaxmn.cpp:612 +#, fuzzy +msgid "Auto PICT (Landscape)" +msgstr "Ðльбом" + +#: src/pentaxmn.cpp:613 +#, fuzzy +msgid "Auto PICT (Macro)" +msgstr "Ðльбом" + +#: src/pentaxmn.cpp:614 +#, fuzzy +msgid "Auto PICT (Sport)" +msgstr "Ðльбом" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "Режим замера" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +#, fuzzy +msgid "Shutter Speed Priority" +msgstr "Приоритет выдержки" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +#, fuzzy +msgid "Aperture Priority" +msgstr "Приоритет диафрагмы" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Программа" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Программа" + +#: src/pentaxmn.cpp:635 +#, fuzzy +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Приоритет диафрагмы (Av)" + +#: src/pentaxmn.cpp:636 +#, fuzzy +msgid "Manual (Off-Auto-Aperture)" +msgstr "Приоритет диафрагмы (Av)" + +#: src/pentaxmn.cpp:637 +#, fuzzy +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Приоритет диафрагмы (Av)" + +#: src/pentaxmn.cpp:639 +#, fuzzy +msgid "Shutter Priority" +msgstr "Приоритет выдержки" + +#: src/pentaxmn.cpp:640 +#, fuzzy +msgid "Shutter & Aperture Priority AE" +msgstr "Приоритет выдержки" + +#: src/pentaxmn.cpp:641 +#, fuzzy +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Приоритет выдержки" + +#: src/pentaxmn.cpp:642 +#, fuzzy +msgid "Sensitivity Priority AE" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/pentaxmn.cpp:643 +#, fuzzy +msgid "Sensitivity Priority AE (1)" +msgstr "Приоритет выдержки" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Программа (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Программа (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Программа (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Цветовое проÑтранÑтво" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +#, fuzzy +msgid "Continuous (Hi)" +msgstr "Продолжительный ведущий режим" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +#, fuzzy +msgid "Burst" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +#, fuzzy +msgid "Video" +msgstr "Цвет" + +#: src/pentaxmn.cpp:666 +#, fuzzy +msgid "Self-timer (12 sec)" +msgstr "Серийный номер" + +#: src/pentaxmn.cpp:667 +#, fuzzy +msgid "Self-timer (2 sec)" +msgstr "Серийный номер" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +#, fuzzy +msgid "Remote Control (3 sec)" +msgstr "Пульт Д/У?" + +#: src/pentaxmn.cpp:671 +#, fuzzy +msgid "Remote Control" +msgstr "Пульт Д/У?" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "ÐаÑыщенноÑть" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "ÐаÑыщенноÑть" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "ÐаÑыщенноÑть" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Ðвто" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "Объектив" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +#, fuzzy +msgid "Bright" +msgstr "ЯркоÑть+" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +#, fuzzy +msgid "Weakest" +msgstr "Запад" + +#: src/pentaxmn.cpp:991 +#, fuzzy +msgid "Weak" +msgstr "Запад" + +#: src/pentaxmn.cpp:992 +#, fuzzy +msgid "Strong" +msgstr "ÐаÑыщенноÑть" + +#: src/pentaxmn.cpp:1112 +#, fuzzy +msgid "No extended bracketing" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +#, fuzzy +msgid "Unknown " +msgstr "ÐеизвеÑтно" + +#: src/pentaxmn.cpp:1146 +#, fuzzy +msgid "Pentax Makernote version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/pentaxmn.cpp:1149 +#, fuzzy +msgid "Camera shooting mode" +msgstr "Режим замера" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1154 +#, fuzzy +msgid "Length of a preview image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1160 +#, fuzzy +msgid "Model identification" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +#, fuzzy +msgid "Date" +msgstr "Программное обеÑпечение" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +#, fuzzy +msgid "Time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/pentaxmn.cpp:1170 +#, fuzzy +msgid "Image quality settings" +msgstr "ОпиÑание Ñнимка" + +#: src/pentaxmn.cpp:1173 +#, fuzzy +msgid "Image size settings" +msgstr "ОпиÑание Ñнимка" + +#: src/pentaxmn.cpp:1177 +#, fuzzy +msgid "Flash mode settings" +msgstr "Ð’Ñпышка Ñработала" + +#: src/pentaxmn.cpp:1180 +#, fuzzy +msgid "Focus mode settings" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:1183 +#, fuzzy +msgid "Selected AF point" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +#, fuzzy +msgid "F-Number" +msgstr "ЧиÑло F" + +#: src/pentaxmn.cpp:1195 +#, fuzzy +msgid "ISO sensitivity" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/pentaxmn.cpp:1196 +#, fuzzy +msgid "ISO sensitivity settings" +msgstr "Параметры объектива" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +#, fuzzy +msgid "MeteringMode" +msgstr "Режим замера" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +#, fuzzy +msgid "AutoBracketing" +msgstr "Ðвтобрекетирование" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Цветовое проÑтранÑтво" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +#, fuzzy +msgid "FocalLength" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/pentaxmn.cpp:1239 +#, fuzzy +msgid "Hometown" +msgstr "Рим" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +#, fuzzy +msgid "Destination DST" +msgstr "ОриентациÑ" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/pentaxmn.cpp:1261 +#, fuzzy +msgid "Light value" +msgstr "ЯркоÑть" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "Размер изображениÑ" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "Размер изображениÑ" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +#, fuzzy +msgid "Preview image borders" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +#, fuzzy +msgid "Sensitivity adjust" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Цифровой фильтр" + +#: src/pentaxmn.cpp:1299 +#, fuzzy +msgid "Camera temperature" +msgstr "Температура цвета" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +#, fuzzy +msgid "Image tone" +msgstr "Тип изображениÑ" + +#: src/pentaxmn.cpp:1319 +#, fuzzy +msgid "Shake reduction" +msgstr "Подавление шума" + +#: src/pentaxmn.cpp:1320 +#, fuzzy +msgid "Shake reduction information" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +#, fuzzy +msgid "Dynamic range expansion" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Подавление шума на выÑоких ISO" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "ПодÑтройка оттенка" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Точка черного" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Точка белого" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +#, fuzzy +msgid "ShotInfo" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +#, fuzzy +msgid "AEInfo" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +#, fuzzy +msgid "LensInfo" +msgstr "Объектив" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +#, fuzzy +msgid "FlashInfo" +msgstr "Ð’Ñпышка" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +#, fuzzy +msgid "AEMeteringSegments" +msgstr "Режим замера" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "Режим вÑпышки" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "Режим вÑпышки" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +#, fuzzy +msgid "WB_RGGBLevelsDaylight" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +#, fuzzy +msgid "WB_RGGBLevelsShade" +msgstr "ЗарÑд батареи" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +#, fuzzy +msgid "WB_RGGBLevelsCloudy" +msgstr "ЗарÑд батареи" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +#, fuzzy +msgid "WB_RGGBLevelsTungsten" +msgstr "ЗарÑд батареи" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentD" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentN" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentW" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +#, fuzzy +msgid "WB_RGGBLevelsFlash" +msgstr "ЗарÑд батареи" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +#, fuzzy +msgid "CameraInfo" +msgstr "ID камеры" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +#, fuzzy +msgid "BatteryInfo" +msgstr "ID камеры" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +#, fuzzy +msgid "AFInfo" +msgstr "СпоÑоб фокуÑировки" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +#, fuzzy +msgid "ColorInfo" +msgstr "Цвет" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "ÐеизвеÑтный тег PentaxMakerNote" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Adobe RGB" + +#: src/properties.cpp:121 +#, fuzzy +msgid "Adobe PDF schema" +msgstr "Adobe RGB" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "" + +#: src/properties.cpp:123 +#, fuzzy +msgid "Camera Raw schema" +msgstr "ID камеры" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Adobe RGB" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Структура краÑителÑ" + +#: src/properties.cpp:149 +#, fuzzy +msgid "Dimensions structure" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:150 +#, fuzzy +msgid "Font structure" +msgstr "Структура краÑителÑ" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Структура ÑÑкиза" + +#: src/properties.cpp:152 +#, fuzzy +msgid "Resource Event structure" +msgstr "Структура краÑителÑ" + +#: src/properties.cpp:153 +#, fuzzy +msgid "ResourceRef structure" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:154 +#, fuzzy +msgid "Version structure" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Структура краÑителÑ" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "УчаÑтник" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Охват" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Создатель" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Формат" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +#, fuzzy +msgid "Identifier" +msgstr "Идентификатор ARM" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +#, fuzzy +msgid "Relation" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Права" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +#, fuzzy +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +#, fuzzy +msgid "Type" +msgstr "тип" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +#, fuzzy +msgid "Captions Author Names" +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "обновлÑетÑÑ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° времени" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Параметры объектива" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Кабул" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Кадр панорамы" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +#, fuzzy +msgid "Advisory" +msgstr "Звук" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:224 +#, fuzzy +msgid "The date and time the resource was originally created." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:225 +#, fuzzy +msgid "Creator Tool" +msgstr "Создатель" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +#, fuzzy +msgid "Label" +msgstr "Кабул" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +#, fuzzy +msgid "Metadata Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +#, fuzzy +msgid "Modify Date" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +#, fuzzy +msgid "Nickname" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Оценка" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "ЭÑкизы" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +#, fuzzy +msgid "Marked" +msgstr "РучнаÑ" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Владелец" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +#, fuzzy +msgid "Derived From" +msgstr "Режим замера" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "ID документа" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +#, fuzzy +msgid "History" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +#, fuzzy +msgid "Instance ID" +msgstr "Intel" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +#, fuzzy +msgid "Managed From" +msgstr "Язык" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +#, fuzzy +msgid "Manager" +msgstr "Язык" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "Язык" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "Язык" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "Язык" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "ID верÑии" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "ВерÑии" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +#, fuzzy +msgid "Rendition Of" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +#, fuzzy +msgid "Save ID" +msgstr "ID камеры" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +#, fuzzy +msgid "Job Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "МакÑимальный размер Ñтраницы" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "ЧиÑло Ñтраниц" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Шрифты" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +#, fuzzy +msgid "Colorants" +msgstr "Цвет" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +#, fuzzy +msgid "Project Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +#, fuzzy +msgid "Video Frame Rate" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +#, fuzzy +msgid "Video Frame Size" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +#, fuzzy +msgid "Video Pixel Depth" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +#, fuzzy +msgid "Video Color Space" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +#, fuzzy +msgid "Video Alpha Mode" +msgstr "Режим замера" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +#, fuzzy +msgid "Video Compressor" +msgstr "Сжатие" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "" + +#: src/properties.cpp:342 +#, fuzzy +msgid "Video Field Order" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +#, fuzzy +msgid "Pull Down" +msgstr "вкл" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +#, fuzzy +msgid "Audio Sample Rate" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +#, fuzzy +msgid "Audio Sample Type" +msgstr "Тип звуковых данных" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +#, fuzzy +msgid "Audio Channel Type" +msgstr "Тип звуковых данных" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +#, fuzzy +msgid "Audio Compressor" +msgstr "Сжатие" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "" + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +#, fuzzy +msgid "Tape Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +#, fuzzy +msgid "Alternative Tape Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +#, fuzzy +msgid "Start Time Code" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +#, fuzzy +msgid "Alternative Time code" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "ДлительноÑть" + +#: src/properties.cpp:357 +#, fuzzy +msgid "The duration of the media file." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:358 +#, fuzzy +msgid "Scene" +msgstr "Тип Ñцены" + +#: src/properties.cpp:358 +#, fuzzy +msgid "The name of the scene." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:359 +#, fuzzy +msgid "Shot Name" +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:359 +#, fuzzy +msgid "The name of the shot or take." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:360 +#, fuzzy +msgid "Shot Date" +msgstr "Программное обеÑпечение" + +#: src/properties.cpp:360 +#, fuzzy +msgid "The date and time when the video was shot." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:361 +#, fuzzy +msgid "Shot Location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +#, fuzzy +msgid "Log Comment" +msgstr "Комментарий (Windows)" + +#: src/properties.cpp:363 +#, fuzzy +msgid "User's log comments." +msgstr "ПользовательÑкий комментарий" + +#: src/properties.cpp:364 +#, fuzzy +msgid "Markers" +msgstr "РучнаÑ" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +#, fuzzy +msgid "Contributed Media" +msgstr "КонтраÑÑ‚" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +#, fuzzy +msgid "Video Modified Date" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:368 +#, fuzzy +msgid "The date and time when the video was last modified." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:369 +#, fuzzy +msgid "Audio Modified Date" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:369 +#, fuzzy +msgid "The date and time when the audio was last modified." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:370 +#, fuzzy +msgid "Metadata Modified Date" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:370 +#, fuzzy +msgid "The date and time when the metadata was last modified." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "ИÑполнитель" + +#: src/properties.cpp:371 src/properties.cpp:1058 +#, fuzzy +msgid "The name of the artist or artists." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Ðльбом" + +#: src/properties.cpp:372 src/properties.cpp:1054 +#, fuzzy +msgid "The name of the album." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Ðомер дорожки" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Жанр" + +#: src/properties.cpp:374 src/properties.cpp:1166 +#, fuzzy +msgid "The name of the genre." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Данные об авторÑких правах" + +#: src/properties.cpp:376 +#, fuzzy +msgid "The date the title was released." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Композитор" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Звукооператор" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "ИнÑтрумент" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "" + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²ÑтуплениÑ" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "" + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +#, fuzzy +msgid "Relative Timestamp" +msgstr "обновлÑетÑÑ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ° времени" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +#, fuzzy +msgid "Loop" +msgstr "Лондон" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +#, fuzzy +msgid "Number Of Beats" +msgstr "ЧиÑло F" + +#: src/properties.cpp:385 +#, fuzzy +msgid "The number of beats." +msgstr "ЧиÑло F" + +#: src/properties.cpp:386 +#, fuzzy +msgid "Key" +msgstr "Ðизкий ключ" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +#, fuzzy +msgid "Stretch Mode" +msgstr "Режим коррекции" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +#, fuzzy +msgid "Time Signature" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +#, fuzzy +msgid "Scale Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +#, fuzzy +msgid "Camera Serial Number" +msgstr "Серийный номер камеры" + +#: src/properties.cpp:399 +#, fuzzy +msgid "Camera Serial Number." +msgstr "Серийный номер камеры" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired" +msgstr "Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired." +msgstr "Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ñъёмки" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer" +msgstr "Производитель" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer." +msgstr "Производитель" + +#: src/properties.cpp:402 +#, fuzzy +msgid "Flash Model." +msgstr "Режим вÑпышки" + +#: src/properties.cpp:403 +#, fuzzy +msgid "Last Keyword IPTC" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:403 +#, fuzzy +msgid "Last Keyword IPTC." +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP." +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer" +msgstr "Производитель" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer." +msgstr "Производитель" + +#: src/properties.cpp:406 src/properties.cpp:1199 +#, fuzzy +msgid "Lens Model." +msgstr "Тип Ñцены" + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent" +msgstr "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° в Windows" + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent." +msgstr "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° в Windows" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Режим захвата" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "ВерÑÐ¸Ñ PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "" + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "" + +#: src/properties.cpp:428 +#, fuzzy +msgid "Authors Position" +msgstr "Позиционирование YCbCr" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "" + +#: src/properties.cpp:429 +#, fuzzy +msgid "Caption Writer" +msgstr "ПодпиÑÑŒ" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Ðвтор/редактор." + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "Город." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +#, fuzzy +msgid "Credit." +msgstr "Город." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +#, fuzzy +msgid "Headline." +msgstr "Заголовок" + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "ОÑобые инÑтрукции." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "ИÑточник." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "" + +#: src/properties.cpp:442 +#, fuzzy +msgid "Supplemental category." +msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "дюймов" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "ÐвтоматичеÑÐºÐ°Ñ ÑркоÑть" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "ÐвтоматичеÑкий контраÑÑ‚" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "ÐвтоматичеÑÐºÐ°Ñ ÑкÑпозициÑ" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +#, fuzzy +msgid "Auto Shadows" +msgstr "Тень" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +#, fuzzy +msgid "Blue Hue" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/properties.cpp:461 +#, fuzzy +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:462 +#, fuzzy +msgid "Blue Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:462 +#, fuzzy +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:463 +#, fuzzy +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Профиль камеры" + +#: src/properties.cpp:464 +#, fuzzy +msgid "\"Camera Profile\" setting." +msgstr "ÐаÑтройки камеры" + +#: src/properties.cpp:465 +#, fuzzy +msgid "Chromatic Aberration Blue" +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:465 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:466 +#, fuzzy +msgid "Chromatic Aberration Red" +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:466 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Подавление цветного шума" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:468 +#, fuzzy +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +#, fuzzy +msgid "Crop Bottom" +msgstr "Ñнизу вверх" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +#, fuzzy +msgid "Crop Right" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +#, fuzzy +msgid "Crop Angle" +msgstr "Ñправа налево" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +#, fuzzy +msgid "Crop Units" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +#, fuzzy +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Режим замера" + +#: src/properties.cpp:478 +#, fuzzy +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:479 +#, fuzzy +msgid "Green Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:479 +#, fuzzy +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:480 +#, fuzzy +msgid "Has Crop" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +#, fuzzy +msgid "Has Settings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +#, fuzzy +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:483 +#, fuzzy +msgid "Raw File Name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "" + +#: src/properties.cpp:484 +#, fuzzy +msgid "Red Hue" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/properties.cpp:484 +#, fuzzy +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:485 +#, fuzzy +msgid "Red Saturation" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:485 +#, fuzzy +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:486 +#, fuzzy +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:487 +#, fuzzy +msgid "Shadows" +msgstr "Тень" + +#: src/properties.cpp:487 +#, fuzzy +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:488 +#, fuzzy +msgid "Shadow Tint" +msgstr "Тень" + +#: src/properties.cpp:488 +#, fuzzy +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:489 src/properties.cpp:1301 +#, fuzzy +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:490 +#, fuzzy +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:491 +#, fuzzy +msgid "Tint" +msgstr "Файл" + +#: src/properties.cpp:491 +#, fuzzy +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +#, fuzzy +msgid "Tone Curve Name" +msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +#, fuzzy +msgid "Vignette Amount" +msgstr "Пульт Д/У?" + +#: src/properties.cpp:496 +#, fuzzy +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:497 +#, fuzzy +msgid "Vignette Midpoint" +msgstr "Ð‘ÐµÐ»Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°" + +#: src/properties.cpp:497 +#, fuzzy +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "ÐаÑтройка контраÑта" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +#, fuzzy +msgid "Bits Per Sample" +msgstr "Битов на ÑÑмпл" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Сжатие" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "ФотометричеÑÐºÐ°Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ†Ð¸Ñ" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +#, fuzzy +msgid "Samples Per Pixel" +msgstr "СÑмплов на пикÑел" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +#, fuzzy +msgid "YCbCr Sub Sampling" +msgstr "СубÑÑмплинг YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "Позиционирование YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +#, fuzzy +msgid "X Resolution" +msgstr "Разрешение по X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +#, fuzzy +msgid "Y Resolution" +msgstr "Разрешение по Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Единица разрешениÑ" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Ð‘ÐµÐ»Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +#, fuzzy +msgid "Reference Black White" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Дата и времÑ" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +#, fuzzy +msgid "Make" +msgstr "РучнаÑ" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "ВерÑÐ¸Ñ Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +#, fuzzy +msgid "Flashpix Version" +msgstr "ВерÑÐ¸Ñ FlashPix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +#, fuzzy +msgid "Components Configuration" +msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +#, fuzzy +msgid "Compressed Bits Per Pixel" +msgstr "Сжатых битов на пикÑел" + +#: src/properties.cpp:560 +#, fuzzy +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. ИÑпользованный режим ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ " +"Ñжатого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² единице Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ \"битов на пикÑел\"" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "ПользовательÑкий комментарий" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "СвÑзанный звуковой файл" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +#, fuzzy +msgid "Date and Time Original" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +#, fuzzy +msgid "Date and Time Digitized" +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +#, fuzzy +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" + +#: src/properties.cpp:574 src/properties.cpp:1157 +#, fuzzy +msgid "F Number" +msgstr "ЧиÑло F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +#, fuzzy +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:582 src/tags.cpp:828 +#, fuzzy +msgid "Brightness Value" +msgstr "ЯркоÑть" + +#: src/properties.cpp:582 +#, fuzzy +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +#, fuzzy +msgid "Maximum Aperture Value" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/properties.cpp:584 +#, fuzzy +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:585 +#, fuzzy +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:586 +#, fuzzy +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:587 +#, fuzzy +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +#, fuzzy +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "ОблаÑть объекта Ñъёмки" + +#: src/properties.cpp:590 +#, fuzzy +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Это поле хранит информацию о меÑтоположении и облаÑти объекта Ñъёмки во вÑей " +"Ñцене." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +#, fuzzy +msgid "Flash Energy" +msgstr "ВнешнÑÑ Ð²Ñпышка" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +#, fuzzy +msgid "Focal Plane X Resolution" +msgstr "Разрешение по X" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +#, fuzzy +msgid "Focal Plane Y Resolution" +msgstr "Разрешение по X" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +#, fuzzy +msgid "Focal Plane Resolution Unit" +msgstr "Разрешение по X" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +#, fuzzy +msgid "Exposure Index" +msgstr "Режим ÑкÑпозиции" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +#, fuzzy +msgid "Sensing Method" +msgstr "Файл переименовываетÑÑ Ð²" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" + +#: src/properties.cpp:602 +#, fuzzy +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Тип Ñцены" + +#: src/properties.cpp:603 +#, fuzzy +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "Паттерн CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +#, fuzzy +msgid "Custom Rendered" +msgstr "Другой процеÑÑ Ð¿Ñ€Ð¾Ñвки" + +#: src/properties.cpp:605 +#, fuzzy +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:606 +#, fuzzy +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:607 +#, fuzzy +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "КоÑффициент цифрового транÑфокатора" + +#: src/properties.cpp:608 +#, fuzzy +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "ФокуÑное раÑÑтоÑние в 35мм аналоге" + +#: src/properties.cpp:609 +#, fuzzy +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Этот Ñ‚Ñг отображает фокуÑное раÑÑтоÑние в 35мм плёночном Ñквиваленте, " +"измерÑемом миллиметрами. ЕÑли значение равно 0, то фокуÑное раÑÑтоÑние " +"неизвеÑтно. Обратите внимание на то, что Ñтот Ñ‚Ñг отличетÑÑ Ð¾Ñ‚ ." + +#: src/properties.cpp:612 src/tags.cpp:1806 +#, fuzzy +msgid "Scene Capture Type" +msgstr "Тип Ñцены" + +#: src/properties.cpp:612 +#, fuzzy +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:613 src/tags.cpp:1811 +#, fuzzy +msgid "Gain Control" +msgstr "Пульт Д/У?" + +#: src/properties.cpp:613 +#, fuzzy +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:614 +#, fuzzy +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки контраÑта при Ñъёмке изображениÑ" + +#: src/properties.cpp:615 +#, fuzzy +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" + +#: src/properties.cpp:616 +#, fuzzy +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" + +#: src/properties.cpp:617 src/tags.cpp:1826 +#, fuzzy +msgid "Device Setting Description" +msgstr "ÐаÑтройки камеры" + +#: src/properties.cpp:617 +#, fuzzy +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" + +#: src/properties.cpp:618 src/tags.cpp:1831 +#, fuzzy +msgid "Subject Distance Range" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:618 +#, fuzzy +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "Уникальный ID изображениÑ" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "ID верÑии GPS" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Широта по GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Долгота по GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +#, fuzzy +msgid "GPS Altitude Reference" +msgstr "Ð’Ñ‹Ñота по GPS" + +#: src/properties.cpp:625 src/properties.cpp:1168 +#, fuzzy +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "Ð’Ñ‹Ñота по GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +#, fuzzy +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "Отметка времени по GPS" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +#, fuzzy +msgid "GPS Satellites" +msgstr "Широта по GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:634 +#, fuzzy +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "СкороÑть Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "Режим захвата данных GPS" + +#: src/properties.cpp:635 +#, fuzzy +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "СкороÑть Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +#, fuzzy +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" + +#: src/properties.cpp:637 src/tags.cpp:2002 +#, fuzzy +msgid "GPS Speed Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:637 +#, fuzzy +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "СкороÑть Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "СкороÑть по GPS" + +#: src/properties.cpp:638 +#, fuzzy +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "СкороÑть Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS Track Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:640 src/tags.cpp:2013 +#, fuzzy +msgid "GPS Track" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +#, fuzzy +msgid "GPS Image Direction Reference" +msgstr "Ðаправление Ñнимка GPS" + +#: src/properties.cpp:641 +#, fuzzy +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "Ðаправление Ñнимка GPS" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:643 +#, fuzzy +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" + +#: src/properties.cpp:644 src/tags.cpp:2033 +#, fuzzy +msgid "GPS Destination Latitude" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +#, fuzzy +msgid "GPS Destination Longitude" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +#, fuzzy +msgid "GPS Destination Bearing Reference" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:646 +#, fuzzy +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:647 src/tags.cpp:2056 +#, fuzzy +msgid "GPS Destination Bearing" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:648 +#, fuzzy +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:649 src/tags.cpp:2064 +#, fuzzy +msgid "GPS Destination Distance" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:649 +#, fuzzy +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:650 src/tags.cpp:2067 +#, fuzzy +msgid "GPS Processing Method" +msgstr "РезкоÑть изображениÑ" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +#, fuzzy +msgid "GPS Area Information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ GPS" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +#, fuzzy +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"ОпиÑание объектива, применÑвшегоÑÑ Ð´Ð»Ñ Ñъемки. Ðапример, \"70-200 mm " +"f/2.8-4.0\"." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"Серийный номер камеры или задника камеры, иÑпользовавшегоÑÑ Ð´Ð»Ñ Ñъемки." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +#, fuzzy +msgid "Contact Info-Address" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +#, fuzzy +msgid "Contact Info-City" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +#, fuzzy +msgid "Contact Info-State/Province" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:671 +#, fuzzy +msgid "Contact Info-Postal Code" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +#, fuzzy +msgid "Contact Info-Country" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:673 +#, fuzzy +msgid "Contact Info-Email" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:674 +#, fuzzy +msgid "Contact Info-Phone" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +#, fuzzy +msgid "IPTC Scene" +msgstr "Тип Ñцены" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +#, fuzzy +msgid "IPTC Subject Code" +msgstr "ОблаÑть объекта Ñъёмки" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +#, fuzzy +msgid "Additional model info" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Модель" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +#, fuzzy +msgid "Person shown" +msgstr "ВерÑии" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +#, fuzzy +msgid "Event" +msgstr "Вечер" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "ЗаполнÑющий Ñвет" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "МакÑимальное фокуÑное раÑÑтоÑние" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +#, fuzzy +msgid "Registry Entry-Item Identifier" +msgstr "Ð¡Ñ‚Ð°Ð±Ð¸Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñнимка" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +#, fuzzy +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:712 +#, fuzzy +msgid "The location the photo was taken." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Location-City" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "" + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Код Ñтраны" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "" + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "" + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "" + +#: src/properties.cpp:719 +#, fuzzy +msgid "Artwork or object in the image" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +#, fuzzy +msgid "Artwork or object-Creator" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +#, fuzzy +msgid "Artwork or object-Date Created" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +#, fuzzy +msgid "Artwork or object-Source" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +#, fuzzy +msgid "Artwork or object-Source inventory number" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +#, fuzzy +msgid "Artwork or object-Title" +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "ID камеры" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "ID камеры" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "ID камеры" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "ВерÑÐ¸Ñ PDF" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +#, fuzzy +msgid "Licensee" +msgstr "Объектив" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "ID объектива" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Name of each Licensee." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:746 +#, fuzzy +msgid "End User" +msgstr "внешнÑÑ" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +#, fuzzy +msgid "End User ID" +msgstr "внешнÑÑ" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:748 +#, fuzzy +msgid "Name of each End User." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Объектив" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "ID объектива" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Name of each Licensor." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor Address" +msgstr "Температура объектива" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor street address." +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Мехико" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City name." +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "Температура объектива" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code or Zip Code." +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Страна" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1" +msgstr "Серийный номер камеры" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1." +msgstr "Серийный номер камеры" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone 1" +msgstr "Серийный номер камеры" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone number 1." +msgstr "Серийный номер камеры" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "Серийный номер камеры" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "Серийный номер камеры" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "Серийный номер камеры" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "Серийный номер камеры" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Объектив" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "Температура объектива" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "Режим захвата данных GPS" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Данные объектива" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Данные объектива" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:768 +#, fuzzy +msgid "Media Constraints" +msgstr "КонтраÑÑ‚" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +#, fuzzy +msgid "Region Constraints" +msgstr "КонтраÑÑ‚" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +#, fuzzy +msgid "Product or Service Constraints" +msgstr "ÐвтоматичеÑкий контраÑÑ‚" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +#, fuzzy +msgid "Image Alteration Constraints" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Дата пубикации" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "ID модели" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +#, fuzzy +msgid "Property Release Status" +msgstr "Дата пубикации" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +#, fuzzy +msgid "Property Release ID" +msgstr "ID модели" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "ÐвтоматичеÑкий контраÑÑ‚" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "" + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "Ðе определено" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Other License Requirements" +msgstr "Объектив" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Additional license requirements." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:783 +#, fuzzy +msgid "Terms and Conditions Text" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +#, fuzzy +msgid "Terms and Conditions URL" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Additional license conditions." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "ID объектива" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +#, fuzzy +msgid "Image File Format As Delivered" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:792 +#, fuzzy +msgid "Copyright Registration Number" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Дата оцифровки" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Name of Copyright Owner." +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:797 +#, fuzzy +msgid "Copyright Owner Image ID" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Creator/s of the image." +msgstr "Уведомление об авторÑких правах" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "Ðомер изображениÑ" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "Уникальный ID изображениÑ" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Name of Image Supplier." +msgstr "Ðомер изображениÑ" + +#: src/properties.cpp:804 +#, fuzzy +msgid "Image Supplier Image ID" +msgstr "Уникальный ID изображениÑ" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "ID объектива" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "Температура объектива" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Notes added by Licensee." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Other Image Info" +msgstr "Объектив" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "ID объектива" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +#, fuzzy +msgid "Licensor Transaction ID" +msgstr "ИÑтечение Ñрока" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +#, fuzzy +msgid "Licensee Transaction ID" +msgstr "ИÑтечение Ñрока" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +#, fuzzy +msgid "Licensee Project Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "ИÑтечение Ñрока" + +#: src/properties.cpp:812 +#, fuzzy +msgid "The date of the License Transaction." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +#, fuzzy +msgid "Other License Documents" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Объектив" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Свой 1" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Свой 1" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Свой 1" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Свой 1" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Свой 1" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Свой 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Свой 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "Ðе определено" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "" + +#: src/properties.cpp:840 +#, fuzzy +msgid "Public Domain" +msgstr "вкл" + +#: src/properties.cpp:846 +#, fuzzy +msgid "Credit Adjacent To Image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "Ðе определено" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +#, fuzzy +msgid "No Merging" +msgstr "Подавление шума" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "Подавление шума" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +#, fuzzy +msgid "No Duplication Constraints" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:871 +#, fuzzy +msgid "Maintain File Name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:872 +#, fuzzy +msgid "Maintain File Type" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:873 +#, fuzzy +msgid "Maintain ID in File Name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:874 +#, fuzzy +msgid "Maintain Metadata" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:879 +#, fuzzy +msgid "Windows Bitmap (BMP)" +msgstr "Ðазвание (Windows)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +#, fuzzy +msgid "Graphics Interchange Format (GIF)" +msgstr "Формат обмена данными JPEG" + +#: src/properties.cpp:883 +#, fuzzy +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "Формат обмена данными JPEG" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +#, fuzzy +msgid "Up to 1 MB" +msgstr "Optio A10" + +#: src/properties.cpp:897 +#, fuzzy +msgid "Up to 10 MB" +msgstr "Optio A10" + +#: src/properties.cpp:898 +#, fuzzy +msgid "Up to 30 MB" +msgstr "Optio 30" + +#: src/properties.cpp:899 +#, fuzzy +msgid "Up to 50 MB" +msgstr "Optio S50" + +#: src/properties.cpp:904 +#, fuzzy +msgid "Illustrated Image" +msgstr "Ширина изображениÑ" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Язык" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "ÐеизвеÑтно" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +#, fuzzy +msgid "Unlimited Model Releases" +msgstr "ID модели" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:961 src/properties.cpp:970 +#, fuzzy +msgid "Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Серийный номер" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Объектив" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "ВерÑии" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date the last region was created" +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "ВерÑии" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "ВерÑии" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Брекетинг" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "ВерÑии" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Размер изображениÑ" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Панорама" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Режим захвата" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "По обработки" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Тип объекта" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Дата оцифровки" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Программное обеÑпечение" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Режим ÑкÑпозиции" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Ширина изображениÑ" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "Модель камеры" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "ДинамичеÑкий диапазон" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Данные об авторÑких правах" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Диафрагма" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Сжатие" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "ÐаÑтройки камеры" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "ТекÑтовое опиÑание объекта Ñнимка" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Режим макроÑъёмки" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Комментарий (Windows)" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Сжатие" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Сжатие" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Ключевые Ñлова (Windows)" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Сжатие" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Сжатие" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Сжатие" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Сжатие" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "ID камеры" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Уровень ÑжатиÑ" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки контраÑта при Ñъёмке изображениÑ" + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "Ñнизу вверх" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "Ñправа налево" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "ÐвторÑкие права" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "Монохромный" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Профиль камеры" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "XML-пакет" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +#, fuzzy +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Подавление цветного шума" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "ВерÑии" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Создатель" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "ВерÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "ВерÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "ВерÑÐ¸Ñ ARM" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "ТонкомпенÑациÑ" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Программа ÑкÑпозиции" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "ÐаÑтройки камеры" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description, usually found in ASF type files." +msgstr "ÐаÑтройки камеры" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Файл" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Файл" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Размер файла" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Размер файла" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Ðомер изображениÑ" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +#, fuzzy +msgid "Geodetic survey data." +msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Производитель" + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "ОчиÑтка ÑенÑора" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "ПодÑтройка изображениÑ" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "ТекÑÑ‚" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "Объектив" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Данные объектива" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Язык" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Тип объектива" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "ЯркоÑть" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "ЯркоÑть" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Объектив" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "ID камеры" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "Данные производителÑ" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Производитель" + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "Режим захвата данных GPS" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Ðизкий" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Режим замера" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "ВерÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "ОриентациÑ" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Вечеринка" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Вечеринка" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Режим захвата" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Режим захвата" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Режим захвата" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Режим захвата" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Режим захвата" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Режим захвата" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Режим захвата" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Режим захвата" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Режим захвата" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Портретный режим" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Режим захвата" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Выбор ISO" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Выбор ISO" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Дата и времÑ" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Данные ÑÑкиза" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "Показывает длительноÑть звукозапиÑи" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Данные ÑÑкиза" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Данные ÑÑкиза" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Диафрагма" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Диафрагма" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Объектив" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Выбор ISO" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "ДлительноÑть" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "ПодпиÑÑŒ" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Ключевые Ñлова (Windows)" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Монохромный" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Город." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "ИÑточник" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "ИÑточник." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Ширина изображениÑ" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Стандартный Ñвет A" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Выдержка" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "КачеÑтво" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "КачеÑтво" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Выдержка" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "Битов на ÑÑмпл" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Режим вÑпышки" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Портретный режим" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Файл" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Ключевые Ñлова" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Язык" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Предмет Ñъёмки" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "ÐаÑтройка резкоÑти" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Язык" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Длина изображениÑ" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Режим захвата" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +#, fuzzy +msgid "Total Frame Count" +msgstr "Выдержка" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Ðомер дорожки" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Язык" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Ðомер дорожки" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Ðомер дорожки" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Ðомер дорожки" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Цвет" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Цвет" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Программа" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "ID объектива" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "КачеÑтво" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Тип изображениÑ" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Таблица баланÑа белого" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Ширина изображениÑ" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Оценка в Windows" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Ðвтор текÑта" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "ВыполнÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Битов на ÑÑмпл" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Битов на ÑÑмпл" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Сжатие" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "ОпиÑание Ñнимка" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "По умолчанию" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Ðвтобрекетирование" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "найдены в Ñтом файле" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "найдены в Ñтом файле" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Ðвтобрекетирование" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Ðвтобрекетирование" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "ДлительноÑть звукозапиÑи" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Тип звуковых данных" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Идентификатор ARM" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Объектив" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Ñправа налево" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Права" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Ðомер заказа" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "ИнÑтрукции" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Выбор ISO" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Разрешение по X" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Температура объектива" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +#, fuzzy +msgid "Occurrence" +msgstr "ID объектива" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID объектива" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Серийный номер" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +#, fuzzy +msgid "Occurrence Details" +msgstr "ID объектива" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Ðомер заказа" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "КачеÑтво" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "УÑтановить" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Пульт Д/У?" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "ДлительноÑть" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Серийный номер" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "КонтраÑÑ‚" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "Ðомер поÑледовательноÑти" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "ОриентациÑ" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Ðазвание Ñтраны" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +#, fuzzy +msgid "Organism Associated Occurrences" +msgstr "Ðомер поÑледовательноÑти" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +#, fuzzy +msgid "Associated Organisms" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +#, fuzzy +msgid "Organism Remarks" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Битов на ÑÑмпл" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Вечер" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Битов на ÑÑмпл" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Вечер" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +#, fuzzy +msgid "Parent Event ID" +msgstr "Вечер" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +#, fuzzy +msgid "Event Earliest Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Профиль камеры" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "меÑÑц" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Удалить" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Дата ÑозданиÑ" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Формат файла" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +#, fuzzy +msgid "Sampling Size Unit" +msgstr "Формат файла" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Температура объектива" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Продолжительный ведущий режим" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Штат/провинциÑ" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Страна" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "КачеÑтво" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "ТекÑтовое опиÑание объекта Ñнимка" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Ð˜Ð¼Ñ Ð¼ÐµÑтоположениÑ" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "РаÑÑтоÑние до объекта" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "Долгота по GPS" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +#, fuzzy +msgid "Geodetic Datum" +msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Эталонный Чёрный/Белый" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Ðомер поÑледовательноÑти" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "СпоÑоб фокуÑировки" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:1898 +msgid "Bed" +msgstr "" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Ðазвание отÑканированного документа" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Идентификатор ARM" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Идентификатор ARM" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Ðаправление Ñнимка GPS" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Ð˜Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Цветовое проÑтранÑтво" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "ÐаÑыщенноÑть" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "ПорÑдок заполнениÑ" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Ðомер дорожки" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "ЕÑтеÑтвенный цвет" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "ИÑточник файла" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "ИÑточник файла" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "ИÑточник файла" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "Режим захвата данных GPS" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "ТекÑтовое опиÑание объекта Ñнимка" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Дата и времÑ" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Вид иÑточника Ñвета" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +#, fuzzy +msgid "Notes" +msgstr "Температура объектива" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "КатегориÑ" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +#, fuzzy +msgid "Resolution Mode" +msgstr "Разрешение по X" + +#: src/sigmamn.cpp:63 +#, fuzzy +msgid "Resolution mode" +msgstr "Разрешение по X" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Режим автофокуÑировки" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Режим автофокуÑировки" + +#: src/sigmamn.cpp:68 +#, fuzzy +msgid "Focus Setting" +msgstr "ÐаÑтройка контраÑта" + +#: src/sigmamn.cpp:69 +#, fuzzy +msgid "Focus setting" +msgstr "СпоÑоб фокуÑировки" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "ФокуÑный диапазон" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "ФокуÑный диапазон объектива" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Тень" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Светлые облаÑти" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "ЗаполнÑющий Ñвет" + +#: src/sigmamn.cpp:105 +#, fuzzy +msgid "X3 Fill light" +msgstr "ЗаполнÑющий Ñвет" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Режим коррекции" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Режим коррекции" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Режим коррекции" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Режим коррекции" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Ðвтобрекетирование" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Ðвтобрекетирование" + +#: src/sigmamn.cpp:127 +#, fuzzy +msgid "Unknown SigmaMakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "ÐÐ¾Ñ‡Ð½Ð°Ñ Ñъёмка" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "Ðочной портрет" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Портрет" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Панорама" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "Портретный режим" + +#: src/sonymn.cpp:170 +#, fuzzy +msgid "Backlight Correction HDR" +msgstr "Без коррекции" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "О Ñнимке" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "Уникальный ID изображениÑ" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "Продолжительный ведущий режим" + +#: src/sonymn.cpp:190 +#, fuzzy +msgid "On (Shooting)" +msgstr "Режим Ñъемки" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" + +#: src/sonymn.cpp:221 +#, fuzzy +msgid "Underwater 1 (Blue Water)" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/sonymn.cpp:222 +#, fuzzy +msgid "Underwater 2 (Green Water)" +msgstr "ÐŸÐ¾Ð´Ð²Ð¾Ð´Ð½Ð°Ñ Ñъемка" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "Центральный" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Спорт" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +#, fuzzy +msgid "Touch AF" +msgstr "One-touch" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "Ð ÑƒÑ‡Ð½Ð°Ñ Ñ„Ð¾ÐºÑƒÑировка" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "Ðе удалоÑÑŒ прочитать" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "AI Focus" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "СпоÑоб фокуÑировки" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "Ширина изображениÑ" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "Длина изображениÑ" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "СпоÑоб фокуÑировки" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "ID модели" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "Подавление цветного шума" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +#, fuzzy +msgid "Dynamic Range Optimizer" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Режим замера" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "Размер изображениÑ" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "КачеÑтво" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Дата пубикации" + +#: src/sonymn.cpp:464 +msgid "Shot number in continuous burst mode" +msgstr "" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Ðнтиразмывание" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "Подавление шума при длительной выдержке" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +#, fuzzy +msgid "Intelligent Auto" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг CanonMakerNote" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "Продолжительный ведущий режим" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "Продолжительный ведущий режим" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" + +#: src/sonymn.cpp:536 +#, fuzzy +msgid "Autumn" +msgstr "Ðвто" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Ðвтобрекетирование" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +#, fuzzy +msgid "Dynamic Range Optimizer Level" +msgstr "ÐаÑтройка баланÑа белого" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Дата ÑозданиÑ" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "ЯркоÑть" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Подавление шума" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Тип изображениÑ" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "ÐаÑтройка контраÑта" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "ÐеизвеÑтный раздел" + +#: src/tags.cpp:189 +#, fuzzy +msgid "Image data structure" +msgstr "Размер изображениÑ" + +#: src/tags.cpp:190 +#, fuzzy +msgid "Recording offset" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:191 +#, fuzzy +msgid "Image data characteristics" +msgstr "Размер изображениÑ" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Прочие данные" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Структура данных Exif" + +#: src/tags.cpp:195 +#, fuzzy +msgid "Image configuration" +msgstr "ÐŸÐ»Ð°Ð½Ð°Ñ€Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "О пользователе" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "СвÑзанный файл" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Дата и времÑ" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ Ñъёмки кадра" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "О ÑовмеÑтимоÑти" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" + +#: src/tags.cpp:203 +#, fuzzy +msgid "Adobe DNG tags" +msgstr "Adobe RGB" + +#: src/tags.cpp:204 +#, fuzzy +msgid "Panasonic RAW tags" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/tags.cpp:205 +#, fuzzy +msgid "TIFF/EP tags" +msgstr "ID Ñтандарта TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +#, fuzzy +msgid "Adobe OPI tags" +msgstr "Adobe RGB" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "ПоÑледний раздел" + +#: src/tags.cpp:224 +#, fuzzy +msgid "Primary image" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/tags.cpp:225 +#, fuzzy +msgid "Thumbnail/Preview image" +msgstr "ЭÑкиз" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "" + +#: src/tags.cpp:228 +#, fuzzy +msgid "Primary image, Transparency mask" +msgstr "ÐŸÑ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð°Ñ Ð¼Ð°Ñка" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "дюйм" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Group 3 Fax" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Group 4 Fax" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +#, fuzzy +msgid "Adobe Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG Ч/Б" + +#: src/tags.cpp:260 +#, fuzzy +msgid "JBIG Color" +msgstr "Цвет" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +#, fuzzy +msgid "Epson ERF Compressed" +msgstr "Cжатый Nikon NEF" + +#: src/tags.cpp:263 +#, fuzzy +msgid "Samsung SRW Compressed" +msgstr "Cжатый Nikon NEF" + +#: src/tags.cpp:264 +#, fuzzy +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT Padding" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "Монохромное изображение IT8" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 Binary Lineart" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (10-разрÑдный LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-разрÑдный ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Kodak DCS Encoding" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI Log Luminance RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "SGI Log 24-bits packed" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Cжатый Nikon NEF" + +#: src/tags.cpp:280 +#, fuzzy +msgid "Kodak DCR Compressed" +msgstr "Cжатый Nikon NEF" + +#: src/tags.cpp:281 +#, fuzzy +msgid "Pentax PEF Compressed" +msgstr "Cжатый Nikon NEF" + +#: src/tags.cpp:286 +#, fuzzy +msgid "White Is Zero" +msgstr "Чёрно-белый" + +#: src/tags.cpp:287 +#, fuzzy +msgid "Black Is Zero" +msgstr "Чёрно-белый" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Палитра RGB" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "ÐŸÑ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð°Ñ Ð¼Ð°Ñка" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +#, fuzzy +msgid "Color Filter Array" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Линейный Raw" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "Обычный процеÑÑ Ð¿Ñ€Ð¾Ñвки" + +#: src/tags.cpp:311 +#, fuzzy +msgid "top, left" +msgstr "Ñправа налево" + +#: src/tags.cpp:312 +#, fuzzy +msgid "top, right" +msgstr "ÐвторÑкие и Ñмежные права" + +#: src/tags.cpp:313 +#, fuzzy +msgid "bottom, right" +msgstr "Ñлева направо" + +#: src/tags.cpp:314 +#, fuzzy +msgid "bottom, left" +msgstr "Ñправа налево" + +#: src/tags.cpp:315 +#, fuzzy +msgid "left, top" +msgstr "Ñлева направо" + +#: src/tags.cpp:316 +#, fuzzy +msgid "right, top" +msgstr "Ñправа налево" + +#: src/tags.cpp:317 +#, fuzzy +msgid "right, bottom" +msgstr "Ñверху вниз" + +#: src/tags.cpp:318 src/tags.cpp:319 +#, fuzzy +msgid "left, bottom" +msgstr "Ñверху вниз" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +#, fuzzy +msgid "not CMYK" +msgstr "CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "Ðеподдерживаемый формат даты" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "Ðе определено" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +msgid "B" +msgstr "" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +#, fuzzy +msgid "Centered" +msgstr "ЦентральнаÑ" + +#: src/tags.cpp:363 +#, fuzzy +msgid "Co-sited" +msgstr "Крупный план" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Без вÑпышки" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" + +#: src/tags.cpp:372 +#, fuzzy +msgid "Yes, did not fire" +msgstr "Ð’Ñпышка не Ñработала" + +#: src/tags.cpp:373 +#, fuzzy +msgid "Yes, compulsory" +msgstr "авто + подавление Ñффекта краÑных глаз" + +#: src/tags.cpp:374 +#, fuzzy +msgid "Yes, compulsory, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:375 +#, fuzzy +msgid "Yes, compulsory, return light detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Ðет, авто" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Да, авто" + +#: src/tags.cpp:380 +#, fuzzy +msgid "Yes, auto, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:381 +#, fuzzy +msgid "Yes, auto, return light detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Ðет функции вÑпышки" + +#: src/tags.cpp:383 +#, fuzzy +msgid "No, no flash function" +msgstr "Ðет функции вÑпышки" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Да, Ñ Ð¿Ð¾Ð´Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñффекта краÑных глаз" + +#: src/tags.cpp:385 +#, fuzzy +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:386 +#, fuzzy +msgid "Yes, red-eye reduction, return light detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" + +#: src/tags.cpp:387 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction" +msgstr "авто + подавление Ñффекта краÑных глаз" + +#: src/tags.cpp:388 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:389 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" + +#: src/tags.cpp:390 +#, fuzzy +msgid "No, red-eye reduction" +msgstr "Да, Ñ Ð¿Ð¾Ð´Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ñффекта краÑных глаз" + +#: src/tags.cpp:391 +#, fuzzy +msgid "No, auto, red-eye reduction" +msgstr "авто + подавление Ñффекта краÑных глаз" + +#: src/tags.cpp:392 +#, fuzzy +msgid "Yes, auto, red-eye reduction" +msgstr "авто + подавление Ñффекта краÑных глаз" + +#: src/tags.cpp:393 +#, fuzzy +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет не найден" + +#: src/tags.cpp:394 +#, fuzzy +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Ð’Ñпышка Ñработала, автоматичеÑкий режим, возвратный Ñвет найден" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "По обработки" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +#, fuzzy +msgid "New Subfile Type" +msgstr "Тип изображениÑ" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "" + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "Тип изображениÑ" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"КоличеÑтво Ñтолбцов данных изображениÑ, равное количеÑтву пикÑелов на Ñ€Ñд. Ð’ " +"данных, Ñжатых по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга иÑпользуетÑÑ Ð¼Ð°Ñ€ÐºÐµÑ€." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"КоличеÑтво Ñ€Ñдов данных изображениÑ. Ð’ данных, Ñжатых по алгоритму JPEG, " +"вмеÑто Ñтого Ñ‚Ñга иÑпользуетÑÑ Ð¼Ð°Ñ€ÐºÐµÑ€." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Битов на ÑÑмпл" + +#: src/tags.cpp:429 +#, fuzzy +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"КоличеÑтво битов на компонент изображениÑ. Ð’ Ñтом Ñтандарте каждый компонент " +"Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑываетÑÑ 8 битами, так что значение Ñтого Ñ‚Ñга равно 9. См. " +"также . Ð’ данных, Ñжатых по алгоритму JPEG, вмеÑто Ñтого " +"Ñ‚Ñга иÑпользуетÑÑ Ð¼Ð°Ñ€ÐºÐµÑ€." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Схема ÑжатиÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñтого изображениÑ. Когда оÑновное " +"изображение Ñжато по алгоритму JPEG , Ñто обозначение не ÑвлÑетÑÑ " +"обÑзательным и опуÑкаетÑÑ. Когда миниатюры иÑпользуют JPEG-Ñжатие, значение " +"Ñтого Ñ‚Ñга равно 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Компоновка пикÑелов. ЕÑли данные Ñжаты по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга " +"иÑпользуетÑÑ JPEG-маркер." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "Ширина изображениÑ" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Длина изображениÑ" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "ПорÑдок заполнениÑ" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Ð˜Ð¼Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Ðазвание отÑканированного документа" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"ТекÑÑ‚Ð¾Ð²Ð°Ñ Ñтрока, в которой даетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ изображению. Это может быть " +"комментарий вроде Â«ÐšÐ¾Ñ€Ð¿Ð¾Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ñ‚ÑƒÑовка 1988» или что-то наподобие. " +"Ð”Ð²ÑƒÑ…Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° Ñимволов не может быть иÑпользована. ЕÑли она вÑÑ‘ же " +"необходима, должен быть иÑпользован чаÑтный тег Exif ." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Производитель запиÑывающего оборудованиÑ. Это изготовитель цифровой " +"фотокамеры, Ñканера, видеодигитайзера или любого другого оборудованиÑ, " +"которое иÑпользовалоÑÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñтого изображениÑ. ЕÑли поле не " +"заполнено, производитель ÑчитаетÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Ð˜Ð¼Ñ Ð¸Ð»Ð¸ номер модели иÑпользованного оборудованиÑ. Это Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ или номер " +"цифровой камеры (DSC), Ñканера, видеодигитайзера или любого другого " +"оборудованиÑ, которое иÑпользовалоÑÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñтого изображениÑ. ЕÑли " +"поле не заполнено, оборудование ÑчитаетÑÑ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ, раÑÑÐ¼Ð°Ñ‚Ñ€Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð² терминах Ñтрок и Ñтолбцов." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "СÑмплов на пикÑел" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"КоличеÑтво компонентов на один пикÑел. ПоÑкольку Ñтандарт применÑетÑÑ Ðº " +"изображениÑм в цветовых проÑтранÑтвах RGB и YCbCr, значение Ñтого Ñ‚Ñга равно " +"3. ЕÑли данные Ñжаты по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга иÑпользуетÑÑ JPEG-" +"маркер." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" + +#: src/tags.cpp:502 +#, fuzzy +msgid "Strip Byte Count" +msgstr "Выдержка" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Разрешение по X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"КоличеÑтво пикÑелов на в направлении . ЕÑли " +"разрешение не указано, оно принимаетÑÑ Ð·Ð° 72 точки на дюйм." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Разрешение по Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"КоличеÑтво пикÑелов на в направлении . " +"ОÑтальное аналогично ." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "ИÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° AF" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +#, fuzzy +msgid "Gray Response Curve" +msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "Параметр" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "Параметр" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ð¸ . Та же ÑÐ°Ð¼Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° " +"иÑпользуетÑÑ ÐºÐ°Ðº Ð´Ð»Ñ , так и Ð´Ð»Ñ . ЕÑли разрешение " +"Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтно, оно принимаетÑÑ Ð·Ð° 2 (дюйма)." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Ðомер изображениÑ" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Ðазвание отÑканированного документа" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ Ð´Ð»Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ, опиÑÐ°Ð½Ð½Ð°Ñ Ð² виде таблицы. Обычно Ñтот Ñ‚Ñг " +"не ÑвлÑетÑÑ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ð¼, поÑкольку цветовое проÑтранÑтво уже указано в Ñ‚Ñге " +"." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Ð’ Ñтом Ñ‚Ñге запиÑываетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ и верÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ " +"прошивки камеры либо уÑтройÑтва ввода изображениÑ, иÑпользованного Ð´Ð»Ñ " +"ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтого изображениÑ. Подробный Ñтандарт не Ñпецифицирован, однако " +"рекомендуетÑÑ Ñледовать приведённому ниже примеру. Когда поле оÑтавлено " +"пуÑтым, значение принимаетÑÑ Ð·Ð° неизвеÑтное." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ. Ð’ текущей верÑии Ñтандарта Exif Ñто дата " +"и Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Ð’ Ñтом теге запиÑываетÑÑ Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° камеры, фотографа или ÑÐ¾Ð·Ð´Ð°Ñ‚ÐµÐ»Ñ " +"изображениÑ. Подробный Ñтандарт не Ñпецифицирован, однако рекомендуетÑÑ " +"Ñледовать приведённому ниже примеру. Когда поле оÑтавлено пуÑтым, значение " +"принимаетÑÑ Ð·Ð° неизвеÑтное." + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +#, fuzzy +msgid "Predictor" +msgstr "Создатель" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"ХроматичноÑть белой точки изображениÑ. Обычно Ñтот тег не ÑвлÑетÑÑ " +"необходимым, поÑкольку цветовое проÑтранÑтво уже указано в теге ." + +#: src/tags.cpp:578 +#, fuzzy +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"ХроматичноÑть белой точки изображениÑ. Обычно Ñтот тег не ÑвлÑетÑÑ " +"необходимым, поÑкольку цветовое проÑтранÑтво уже указано в теге ." + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +#, fuzzy +msgid "Tile Width" +msgstr "Ширина изображениÑ" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "Длина изображениÑ" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +#, fuzzy +msgid "Tile Offsets" +msgstr "Режим захвата" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +#, fuzzy +msgid "Tile Byte Counts" +msgstr "Выдержка" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +#, fuzzy +msgid "SubIFD Offsets" +msgstr "Режим захвата" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "Определено Adobe Corporation Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ TIFF Trees в файлах TIFF." + +#: src/tags.cpp:612 +#, fuzzy +msgid "Ink Set" +msgstr "УÑтановить" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "ЧиÑло F" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "ДинамичеÑкий диапазон" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "Диафрагма" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "Битов на ÑÑмпл" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Формат файла" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñи" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "ОблаÑть передачи" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "Сжатие JPEG" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +#, fuzzy +msgid "JPEG Process" +msgstr "Сжатие JPEG" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "Формат обмена данными JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +#, fuzzy +msgid "JPEG Interchange Format Length" +msgstr "Формат обмена данными JPEG" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +#, fuzzy +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "Сжатие JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +#, fuzzy +msgid "JPEG DC-Tables" +msgstr "Сжатие JPEG" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +#, fuzzy +msgid "JPEG AC-Tables" +msgstr "Сжатие JPEG" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"КоÑффициенты матрицы Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¸Ñ…Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð· RGB в YCbCr. Ð’ " +"TIFF нет значений по умолчанию, но указанные в Приложении E, \"Color Space " +"Guidelines\" Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ÑпользуютÑÑ ÐºÐ°Ðº таковые. Цветовое проÑтранÑтво " +"объÑвленов Ñ‚Ñге информации о цветовом проÑтранÑтве, причём по умолчанию " +"иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ, которое обеÑпечивает оптимальные характериÑтики " +"ÑовмеÑтимоÑти." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "СубÑÑмплинг YCbCr" + +#: src/tags.cpp:716 +#, fuzzy +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Компоновка пикÑелов. ЕÑли данные Ñжаты по алгоритму JPEG, вмеÑто Ñтого Ñ‚Ñга " +"иÑпользуетÑÑ JPEG-маркер." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¾Ð² цветноÑти по отношению к компоненту ÑркоÑти. Это поле " +"предназначено только Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ñжатых по алгоритму JPEG, а также Ð´Ð»Ñ " +"неÑжатых данных YCbCr data. ИÑходное значение Ð´Ð»Ñ TIFF равно 1 (по центру); " +"но когда Y:Cb:Cr = 4:2:2, Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи данных рекомендуетÑÑ Ð¸Ñпользовать 2 (по " +"бокам), чтобы улучшить качеÑтво Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ проÑмотре через ТВ. ЕÑли Ñто " +"поле отÑутÑтвует, ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° иÑпользует иÑходное значение Ð´Ð»Ñ " +"TIFF. Когда Y:Cb:Cr = 4:2:0, рекомендуетÑÑ Ð¸Ñходное значение Ð´Ð»Ñ TIFF (по " +"центру). ЕÑли ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° не поддерживает оба вида " +", она иÑпользует иÑходное значение Ð´Ð»Ñ TIFF вне " +"завиÑимоÑти от того, какое значение запиÑано в поле на Ñамом деле. " +"Предпочтительнее, когда ÑÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° поддерживает оба типа " +"позиционированиÑ." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Эталонный Чёрный/Белый" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"Эталонное значение чёрной и белой точек. Ð’ TIFF нет значений по умолчанию, " +"но указанные ниже Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ÑпользуютÑÑ ÐºÐ°Ðº таковые. Цветовое проÑтранÑтво " +"объÑвлено в поле информации о цветовом проÑтранÑтве, причём по умолчанию " +"иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ, которое обеÑпечивает оптимальные характериÑтики " +"ÑовмеÑтимоÑти." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "XML-пакет" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "Метаданные XMP (Adobe technote 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Оценка в Windows" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Поле оценки, иÑпользуемое Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "ÐŸÑ€Ð¾Ñ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° в Windows" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Поле оценки, иÑпользуемое Windows, процентное значение" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "Уникальный ID изображениÑ" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "ЧиÑло F" + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Содержит запиÑÑŒ IPTC/NAA" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +#, fuzzy +msgid "Inter Color Profile" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"КлаÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, иÑпользованной камерой Ð´Ð»Ñ ÑƒÑтановки ÑкÑпозиции при Ñъёмке." + +#: src/tags.cpp:807 +#, fuzzy +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +#, fuzzy +msgid "ISO Speed Ratings" +msgstr "ÐаÑтройка резкоÑти" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Intel" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Indicates the field number of multifield images." +msgstr "Показывает макет изображениÑ" + +#: src/tags.cpp:816 +#, fuzzy +msgid "Time Zone Offset" +msgstr "Режим захвата" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "Серийный номер" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/tags.cpp:825 +#, fuzzy +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. ИÑпользованный режим ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ " +"Ñжатого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² единице Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ \"битов на пикÑел\"" + +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "ЧиÑло F" + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Смещение ÑкÑпозиции" + +#: src/tags.cpp:830 src/tags.cpp:1645 +#, fuzzy +msgid "Max Aperture Value" +msgstr "МакÑимально Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "Вид иÑточника Ñвета" + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Режим замера" + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Вид иÑточника Ñвета" + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +#, fuzzy +msgid "Noise" +msgstr "Ðичего" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"КоличеÑтво пикÑелов на в направлении . " +"ОÑтальное аналогично ." + +#: src/tags.cpp:840 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"КоличеÑтво пикÑелов на в направлении . " +"ОÑтальное аналогично ." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +#, fuzzy +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" +"Это поле хранит информацию о меÑтоположении и облаÑти объекта Ñъёмки во вÑей " +"Ñцене." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "ID Ñтандарта TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +#, fuzzy +msgid "Type of image sensor." +msgstr "Ðомер изображениÑ" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Ðазвание (Windows)" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Поле названиÑ, иÑпользуемое в Windows, кодированное в UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Комментарий (Windows)" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Поле комментариÑ, иÑпользуемое в Windows, кодированное в UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Ðвтор (Windows)" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Поле автора, иÑпользуемое в Windows, кодированное в UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Ключевые Ñлова (Windows)" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Поле ключевых Ñлов, иÑпользуемое в Windows, кодированное в UCS2" + +#: src/tags.cpp:864 +#, fuzzy +msgid "Windows Subject" +msgstr "ПользовательÑкий комментарий" + +#: src/tags.cpp:865 +#, fuzzy +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Поле автора, иÑпользуемое в Windows, кодированное в UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "ВерÑÐ¸Ñ PDF" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +#, fuzzy +msgid "DNG backward version" +msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +#, fuzzy +msgid "Unique Camera Model" +msgstr "Модель камеры" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +#, fuzzy +msgid "Localized Camera Model" +msgstr "Модель камеры" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +#, fuzzy +msgid "CFA Plane Color" +msgstr "Паттерн CFA" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "ЗарÑд батареи" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +#, fuzzy +msgid "Black Level Delta H" +msgstr "ЗарÑд батареи" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +#, fuzzy +msgid "Black Level Delta V" +msgstr "ЗарÑд батареи" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +#, fuzzy +msgid "White Level" +msgstr "ЗарÑд батареи" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "По умолчанию" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "По умолчанию" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +#, fuzzy +msgid "Color Matrix 1" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +#, fuzzy +msgid "Color Matrix 2" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +#, fuzzy +msgid "Camera Calibration 1" +msgstr "ÐаÑтройка контраÑта" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +#, fuzzy +msgid "Camera Calibration 2" +msgstr "ÐаÑтройка контраÑта" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +#, fuzzy +msgid "Reduction Matrix 1" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +#, fuzzy +msgid "Reduction Matrix 2" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +#, fuzzy +msgid "Analog Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "внешнÑÑ" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "Режим ÑкÑпозиции" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +#, fuzzy +msgid "Baseline Noise" +msgstr "Режим ÑкÑпозиции" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "РезкоÑть" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +#, fuzzy +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"Серийный номер камеры или задника камеры, иÑпользовавшегоÑÑ Ð´Ð»Ñ Ñъемки." + +#: src/tags.cpp:1082 +#, fuzzy +msgid "Lens Info" +msgstr "Объектив" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "ФокуÑное раÑÑтоÑние" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "Тень" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +#, fuzzy +msgid "DNG Private Data" +msgstr "Данные ÑÑкиза" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "Данные производителÑ" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "Без коррекции" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "По умолчанию" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +#, fuzzy +msgid "Raw Data Unique ID" +msgstr "Уникальный ID изображениÑ" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +#, fuzzy +msgid "Original Raw File Name" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +#, fuzzy +msgid "Original Raw File Data" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +#, fuzzy +msgid "Active Area" +msgstr "ОблаÑть объекта Ñъёмки" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +#, fuzzy +msgid "Masked Areas" +msgstr "РучнаÑ" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "Профиль камеры" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +#, fuzzy +msgid "Current ICC Profile" +msgstr "Профиль камеры" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +#, fuzzy +msgid "Current Pre-Profile Matrix" +msgstr "Профиль камеры" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "ÐаÑтройка контраÑта" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +#, fuzzy +msgid "Profile Calibration Signature" +msgstr "Без коррекции" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Профиль камеры" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Подавление шума" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ Ñ‚Ð¾Ð½ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ð¸" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "ÐвторÑкие права" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Данные ÑÑкиза" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "ВерÑÐ¸Ñ ÑÑкиза" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "ÐаÑтройки камеры" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Данные ÑÑкиза" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Ðомер изображениÑ" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +#, fuzzy +msgid "Original Raw File Digest" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "ÐеизвеÑтное поле IFD" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Ðе определено" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "ТворчеÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°" + +#: src/tags.cpp:1414 +#, fuzzy +msgid "Action program" +msgstr "ÐÐ¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Портретный режим" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Ðльбомный режим" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "" + +#: src/tags.cpp:1437 +#, fuzzy +msgid "Tungsten (incandescent light)" +msgstr "Ð¯Ñ€ÐºÐ°Ñ Ð»Ð°Ð¼Ð¿Ð° накаливаниÑ" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "ЯÑÐ½Ð°Ñ Ð¿Ð¾Ð³Ð¾Ð´Ð°" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "ОблачноÑть" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +#, fuzzy +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/tags.cpp:1444 +#, fuzzy +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/tags.cpp:1445 +#, fuzzy +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° дневного Ñвета (D 5700 - 7100K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Стандартный Ñвет A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Стандартный Ñвет B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Стандартный Ñвет C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +#, fuzzy +msgid "ISO studio tungsten" +msgstr "СкороÑть ISO" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Другой иÑточник Ñвета" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Ðе откалибровано" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Сканер фотопленки" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Ð¦Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ñ Ñ„Ð¾Ñ‚Ð¾ÐºÐ°Ð¼ÐµÑ€Ð°" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Обычный процеÑÑ Ð¿Ñ€Ð¾Ñвки" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Другой процеÑÑ Ð¿Ñ€Ð¾Ñвки" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "" + +#: src/tags.cpp:1520 +#, fuzzy +msgid "Low gain down" +msgstr "МеÑтоположение объекта Ñъёмки" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Крупный план" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑкÑпозиции в Ñекундах" + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Режим ÑкÑпозиции" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "СкороÑть ISO" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "СкороÑть ISO" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"ÐŸÐ¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñтандарта Exif. ОтÑутÑтвие Ñтого Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÑ‚ÑÑ Ð·Ð° " +"ÑвидетельÑтво неÑоответÑÑ‚Ð²Ð¸Ñ Ñтандарту." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ñходного изображениÑ. Ð”Ð»Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð¹ фотокамеры Ñто " +"дата и Ð²Ñ€ÐµÐ¼Ñ Ñъёмки." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² цифровом виде" + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. Каналы каждого компонента " +"раÑÑтавлены в порÑдке от первого до четвёртого. Ð”Ð»Ñ Ð½ÐµÑжатых данных порÑдок " +"раÑÑтановки данных задаётÑÑ Ð² Ñ‚Ñге . Во вÑÑком " +"Ñлучае, поÑкольку может выражать лишь порÑдок Y, " +"Cb и Cr, Ñтот Ñ‚Ñг запиÑываетÑÑ Ð½Ð° тот Ñлучай, когда в Ñжатых данных " +"иÑпользуютÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹, отличные от Y, Cb и Cr, а также Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ " +"поддержки обеих поÑледовательноÑтей." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Сжатых битов на пикÑел" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ñжатых данных информациÑ. ИÑпользованный режим ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð´Ð»Ñ " +"Ñжатого Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð² единице Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ \"битов на пикÑел\"" + +#: src/tags.cpp:1631 +#, fuzzy +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"СкороÑть ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð°. Эта единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ APEX(Additive " +"System of Photographic Exposure)-наÑтройкой (Ñм. Приложение С)" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Диафрагма объектива. Эта единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ APEX-значением" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Значение ÑркоÑти. Эта единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ APEX-значением. Обычно оно " +"находитÑÑ Ð² пределах от -99.99 до 99.99" + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Смещение ÑкÑпозиции" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"Смещение ÑкÑпозиции. ИзмерÑетÑÑ APEX-единицами. Обычно значение лежит в " +"диапазоне между -99.99 и 99.99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"Самое маленькое чиÑло F Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¸Ð²Ð°. ИзмерÑетÑÑ APEX-единицами. Обычно " +"значение лежит в диапазоне между 00.00 и 99.99, но оно не ограничено Ñтим " +"диапазоном." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "Это поле запиÑываетÑÑ Ð¿Ñ€Ð¸ иÑпользовании Ñффекта ÑтробоÑкопа во вÑпышке" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"Реальное фокуÑное раÑÑтоÑние объектива. Преобразование в 35мм плёночный " +"аналог не производитÑÑ." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Это поле хранит информацию о меÑтоположении и облаÑти объекта Ñъёмки во вÑей " +"Ñцене." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Данные производителÑ" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"Поле Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð² ÑредÑтва запиÑи тегов Exif, в который можно " +"запиÑывать вÑÑ‘, что им хочетÑÑ. Содержимое завиÑит от разработчиков." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +#, fuzzy +msgid "Sub-seconds Time" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "Поле, иÑпользуемое Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи долей Ñекунды из тега ." + +#: src/tags.cpp:1682 +#, fuzzy +msgid "Sub-seconds Time Original" +msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð´Ð°Ñ‚Ð° и времÑ" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Поле, иÑпользуемое Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи долей Ñекунды из тега ." + +#: src/tags.cpp:1685 +#, fuzzy +msgid "Sub-seconds Time Digitized" +msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ†Ð¸Ñ„Ñ€Ð¾Ð²ÐºÐ¸" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"Поле, иÑпользуемое Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи долей Ñекунды из тега ." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "ВерÑÐ¸Ñ FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "ВерÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° FlashPix, поддерживаемого в формате файлов FPXR" + +#: src/tags.cpp:1692 +#, fuzzy +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"ОбÑзательный Ñ‚Ñг, в котором определÑетÑÑ Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð¾Ðµ проÑтранÑтво. Как правило, " +"в качеÑтве цветового проÑтранÑтва монитора и Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð¸ÑпользуетÑÑ sRGB " +"(=1). ЕÑли же иÑпользуетÑÑ Ð½Ðµ sRGB, то значение уÑтанавливаетÑÑ ÐºÐ°Ðº " +"Uncalibrated (=FFFF.H). Данные изображениÑ, запиÑанного как Uncalibrated, " +"могут быть воÑпринÑты как sRGB при преобразовании во FlashPix. Подробнее " +"sRGB раÑÑматриваетÑÑ Ð² приложении E." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +#, fuzzy +msgid "Interoperability IFD Pointer" +msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +#, fuzzy +msgid "Focal Plane X-Resolution" +msgstr "Разрешение по X" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +#, fuzzy +msgid "Focal Plane Y-Resolution" +msgstr "Разрешение по X" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +#, fuzzy +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Этот Ñ‚Ñг отображает меÑтоположение главного объекта Ñъёмки в Ñцене. Значение " +"Ñтого Ñ‚Ñга предÑтавлÑет пикÑел в центре главного объекта отноÑительно левого " +"краÑ, до обработки поворота ÑоглаÑно Ñ‚Ñгу . Первое значение " +"отображает номер Ñтолбца по X, а второй - номер Ñтроки по Y." + +#: src/tags.cpp:1759 +#, fuzzy +msgid "Exposure index" +msgstr "Режим ÑкÑпозиции" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" + +#: src/tags.cpp:1764 +#, fuzzy +msgid "Indicates the image sensor type on the camera or input device." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/tags.cpp:1767 +#, fuzzy +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Этот Ñ‚Ñг отображает тип Ñцены. ЕÑли Ñто Ñнимок цифровой фотокамеры, то " +"значение Ñ‚Ñга вÑегда должно быть равно 1, что означает непоÑредÑтвенную " +"Ñъёмку." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Этот Ñ‚Ñг отображает тип Ñцены. ЕÑли Ñто Ñнимок цифровой фотокамеры, то " +"значение Ñ‚Ñга вÑегда должно быть равно 1, что означает непоÑредÑтвенную " +"Ñъёмку." + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Цветовое проÑтранÑтво" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Этот Ñ‚Ñг отображает режим ÑкÑпозиции при Ñъёмке изображениÑ. Ð’ режиме " +"автоматичеÑкого брекетинга камера делает Ñерию кадров одной и той же Ñцены Ñ " +"разными наÑтройками ÑкÑпозиции." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Этот Ñ‚Ñг отображает коÑффициент цифрового транÑфокатора при Ñъёмке " +"изображениÑ. ЕÑли значение равно 0, то цифровой транÑфокатор не был " +"иÑпользован." + +#: src/tags.cpp:1801 +#, fuzzy +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Этот Ñ‚Ñг отображает фокуÑное раÑÑтоÑние в 35мм плёночном Ñквиваленте, " +"измерÑемом миллиметрами. ЕÑли значение равно 0, то фокуÑное раÑÑтоÑние " +"неизвеÑтно. Обратите внимание на то, что Ñтот Ñ‚Ñг отличетÑÑ Ð¾Ñ‚ ." + +#: src/tags.cpp:1807 +#, fuzzy +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Этот Ñ‚Ñг отображает фокуÑное раÑÑтоÑние в 35мм плёночном Ñквиваленте, " +"измерÑемом миллиметрами. ЕÑли значение равно 0, то фокуÑное раÑÑтоÑние " +"неизвеÑтно. Обратите внимание на то, что Ñтот Ñ‚Ñг отличетÑÑ Ð¾Ñ‚ ." + +#: src/tags.cpp:1812 +#, fuzzy +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Этот Ñ‚Ñг отображает режим баланÑа белого при Ñъёмке изображениÑ." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки контраÑта при Ñъёмке изображениÑ" + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки резкоÑти при Ñъёмке изображениÑ" + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" + +#: src/tags.cpp:1832 +#, fuzzy +msgid "This tag indicates the distance to the subject." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Серийный номер" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Тип Ñцены" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "ÐеизвеÑтный тег Exif" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Север" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Юг" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "ВоÑток" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Запад" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Ðад уровнем морÑ" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Под уровнем морÑ" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/tags.cpp:1897 +#, fuzzy +msgid "Measurement Interoperability" +msgstr "ВыполнÑетÑÑ Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ðµ" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "км/ч" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "миль/ч" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "узлов" + +#: src/tags.cpp:1915 +#, fuzzy +msgid "True direction" +msgstr "Ðаправление Ñъёмки панорамы" + +#: src/tags.cpp:1916 +#, fuzzy +msgid "Magnetic direction" +msgstr "Ðаправление Ñнимка GPS" + +#: src/tags.cpp:1921 +#, fuzzy +msgid "Kilometers" +msgstr "ПорÑдок заполнениÑ" + +#: src/tags.cpp:1922 +#, fuzzy +msgid "Miles" +msgstr "Файл" + +#: src/tags.cpp:1923 +#, fuzzy +msgid "Knots" +msgstr "узлов" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Без коррекции" + +#: src/tags.cpp:1929 +#, fuzzy +msgid "Correction applied" +msgstr "ТонкомпенÑациÑ" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"Показывает верÑию . Ð’ качеÑтве верÑии указываетÑÑ 2.0.0.0. При " +"наличии тега Ñтот тег обÑзателен. (Примечание: в отличие от тега " +" тег задаётÑÑ Ð² байтах. Когда верÑÐ¸Ñ Ñ€Ð°Ð²Ð½Ð° " +"2.0.0.0, значение тега равно 02000000.H)." + +#: src/tags.cpp:1941 +#, fuzzy +msgid "GPS Latitude Reference" +msgstr "Эталонный Чёрный/Белый" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"Показывает, ÑÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¾Ñ‚Ð° или же южнаÑ. ASCII-значение 'N' обозначает " +"Ñеверную широту, а 'S' - южную." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"Отображает широту, выражаемую Ñ‚Ñ€ÐµÐ¼Ñ RATIONAL-значениÑми - градуÑами (dd), " +"минутами (mm) и Ñекундами (ss). При Ñто формат таков: dd/1,mm/1,ss/1. Когда " +"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: dd/1,mmmm/100,0/1." + +#: src/tags.cpp:1953 +#, fuzzy +msgid "GPS Longitude Reference" +msgstr "Долгота по GPS" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"Показывает, воÑÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð´Ð¾Ð»Ð³Ð¾Ñ‚Ð° или же западнаÑ. ASCII-значение 'E' обозначает " +"воÑточную долготу, а 'W' - западную." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"Отображает долготу, выражаемую Ñ‚Ñ€Ñ‘Ð¼Ñ RATIONAL-значениÑми - градуÑами (dd), " +"минутами (mm) и Ñекундами (ss). При Ñто формат таков: ddd/1,mm/1,ss/1. Когда " +"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: ddd/1,mmmm/100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"Отображает выÑоту, иÑпользуемую в качеÑтве Ñталона. ЕÑли Ñталоном ÑвлÑетÑÑ " +"уровень морÑ, а выÑота выше его, то указываетÑÑ 0. ЕÑли выÑота ниже ÑƒÑ€Ð¾Ð²Ð½Ñ " +"морÑ, то указываетÑÑ 1, а выÑота отображаетÑÑ ÐºÐ°Ðº абÑолютное значение в Ñ‚Ñге " +". Эталонной единицей Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ Ð¼ÐµÑ‚Ñ€. Помните, что Ñтот " +"Ñ‚Ñг в отличие от других \"Ñталонных\" Ñ‚Ñгов имеет тип BYTE." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"Отображает выÑоту, оÑновываÑÑÑŒ на Ñталоне из Ñ‚Ñга . Ð’Ñ‹Ñота " +"выражаетÑÑ RATIONAL значением. Эталонной единицей Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ Ð¼ÐµÑ‚Ñ€." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +#, fuzzy +msgid "GPS Data Degree of Precision" +msgstr "ВерÑÐ¸Ñ Ñ‚Ñга GPS" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "СкороÑть Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð½Ð¸ÐºÐ° GPS" + +#: src/tags.cpp:2009 +#, fuzzy +msgid "GPS Track Ref" +msgstr "Эталонный Чёрный/Белый" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "РаÑÑтоÑние до объекта" + +#: src/tags.cpp:2030 +#, fuzzy +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Показывает, ÑÐµÐ²ÐµÑ€Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¾Ñ‚Ð° или же южнаÑ. ASCII-значение 'N' обозначает " +"Ñеверную широту, а 'S' - южную." + +#: src/tags.cpp:2034 +#, fuzzy +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"Отображает широту, выражаемую Ñ‚Ñ€Ñ‘Ð¼Ñ RATIONAL-значениÑми - градуÑами (dd), " +"минутами (mm) и Ñекундами (ss). При Ñто формат таков: dd/1,mm/1,ss/1. Когда " +"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: dd/1,mmmm/100,0/1." + +#: src/tags.cpp:2041 +#, fuzzy +msgid "GPS Destination Longitude Reference" +msgstr "РаÑÑтоÑние до объекта" + +#: src/tags.cpp:2042 +#, fuzzy +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"Показывает, воÑÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð´Ð¾Ð»Ð³Ð¾Ñ‚Ð° или же западнаÑ. ASCII-значение 'E' обозначает " +"воÑточную долготу, а 'W' - западную." + +#: src/tags.cpp:2046 +#, fuzzy +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"Отображает долготу, выражаемую Ñ‚Ñ€Ñ‘Ð¼Ñ RATIONAL-значениÑми - градуÑами (dd), " +"минутами (mm) и Ñекундами (ss). При Ñто формат таков: ddd/1,mm/1,ss/1. Когда " +"иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ градуÑÑ‹ и минуты, формат таков: ddd/1,mmmm/100,0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +#, fuzzy +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +#, fuzzy +msgid "Indicates the distance to the destination point." +msgstr "РаÑÑтоÑние до объекта в метрах" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +#, fuzzy +msgid "GPS Date Stamp" +msgstr "Отметка времени по GPS" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +#, fuzzy +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" +"Этот Ñ‚Ñг отображает направление обработки наÑыщенноÑти при Ñъёмке изображениÑ" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +#, fuzzy +msgid "Unknown GPSInfo tag" +msgstr "ÐеизвеÑтный Ñ‚Ñг" + +#: src/tags.cpp:2096 +#, fuzzy +msgid "Interoperability Index" +msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "ВерÑÐ¸Ñ ÑовмеÑтимоÑти" + +#: src/tags.cpp:2106 +#, fuzzy +msgid "Related Image File Format" +msgstr "Ширина изображениÑ" + +#: src/tags.cpp:2107 +#, fuzzy +msgid "File format of image file" +msgstr "Ðе удалоÑÑŒ открыть файл\n" + +#: src/tags.cpp:2109 +#, fuzzy +msgid "Related Image Width" +msgstr "Ширина изображениÑ" + +#: src/tags.cpp:2112 +#, fuzzy +msgid "Related Image Length" +msgstr "Длина изображениÑ" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "ÐеизвеÑтный тег ÑовмеÑтимоÑти Ñ Exif" + +#: src/tags.cpp:2128 +#, fuzzy +msgid "Offset" +msgstr "быÑтрый" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +#, fuzzy +msgid "Byte Order" +msgstr "ПорÑдок заполнениÑ" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "ÐеизвеÑтный тег PentaxMakerNote" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "ÐеизвеÑтное поле" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Цифровой транÑфокатор не иÑпользовалÑÑ" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "байт" diff --git a/vendor/exiv2-0.25/po/sk.po b/vendor/exiv2-0.25/po/sk.po new file mode 100644 index 0000000..f8df7c2 --- /dev/null +++ b/vendor/exiv2-0.25/po/sk.po @@ -0,0 +1,27943 @@ +# translation of exiv2 to Slovak +# Copyright (C) 2008-2015 Andreas Huggel +# This file is distributed under the same license as the exiv2 package. +# Ivan Masár , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2008-11-18 14:54+0100\n" +"Last-Translator: Ivan Masár \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Poedit-Language: Slovak\n" +"X-Poedit-Country: SLOVAKIA\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Nepodarilo sa otvoriÅ¥ súbor\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Názov súboru" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "VeľkosÅ¥ súboru" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "bajtov" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "MIME typ" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "VeľkosÅ¥ obrázka" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "V súbore neboli nájdené žiadne EXIF údaje\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "ZmaÄka fotoaparátu" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Model fotoaparátu" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "ÄŒasová známka obrázka" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Číslo obrázka" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "ÄŒas expozície" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Clona" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Skreslenie expozície" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Blesk" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Skreslenie blesku" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Ohnisková vzdialenosÅ¥" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "ekvivalent 35 mm" + +# exif-subjectdistance +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "vzdialenosÅ¥ subjektu" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "ISO rýchlosÅ¥" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Režim expozície" + +# exif-meteringmode +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "merací režim" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "režim makro" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Kvalita obrázka" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Rozlíšenie exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Vyváženie bielej" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Náhľad" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "NiÄ" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Copyright" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Komentár EXIF" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(binárna hodnota potlaÄená)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Komentár JPEG" + +#: src/actions.cpp:767 +#, fuzzy +msgid "Preview" +msgstr "Dáta náhľadu" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "pixelov" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "bajtov" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Žiadna znaÄka" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "nor" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "nájdený v súbore" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "ÄŒasová známka vytvorenia obrázka nebola v súbore nastavená" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Nepodarilo sa preÄítaÅ¥ Äasovú známku" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "v súbore" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "ÄŒasová známka sa aktualizuje na" + +#: src/actions.cpp:939 +#, fuzzy +msgid "Erasing thumbnail data" +msgstr "bajtov údajov náhľadov" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Vymazávajú sa Exif údaje zo súboru" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Vymazávajú sa IPTC údaje zo súboru" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Vymazáva sa komentár JPEG zo súboru" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Vymazávajú sa XMP dáta zo súboru" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Obrázok neobsahuje EXIF náhľad\n" + +#: src/actions.cpp:1055 +#, fuzzy +msgid "Writing thumbnail" +msgstr "náhľad" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "do súboru" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "EXIF údaje neobsahujú náhľad\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "" + +#: src/actions.cpp:1107 +#, fuzzy +msgid "Writing preview" +msgstr "Zapisuje sa" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Nastavuje sa JPEG komentár" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "PridaÅ¥" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Upozornenie" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "hodnota" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "NastaviÅ¥" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "VymazaÅ¥" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "ÄŒasová známka metadáta s kľúÄom" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "nenastavené\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "DolaÄuje sa" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "Autor" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "rokov" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "rok" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "mesiacov" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "mesiac" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "dní" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "deň" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Nie je možné upraviÅ¥ Äasovú známku o" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "až" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "Å tandardný EXIF ISO znaÄka už existuje; nebude sa meniÅ¥\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Nastavuje sa hodnota EXIF ISO na" + +#: src/actions.cpp:1708 +#, fuzzy +msgid "No Exif user comment found" +msgstr "Komentár EXIF" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "" + +#: src/actions.cpp:1729 +#, fuzzy +msgid "Setting Exif UNICODE user comment to" +msgstr "Nastavuje sa hodnota EXIF ISO na" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Zapisujú sa EXIF údaje z" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Zápis IPTC dát od" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Zápis XMP dát od" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Zápis JPEG komentára od" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Nepodarilo sa zapísaÅ¥ metadáta do súboru" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Formát názvu súboru dáva prázdny názov súboru" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Tento súbor už má správny názov" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Súbor" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "existuje. [P]repísaÅ¥, p[r]emenovaÅ¥ alebo pre[s]koÄiÅ¥?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Súbor sa premenúva na" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "aktualizuje sa Äasová známka" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Nepodarilo sa premenovaÅ¥" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "PrepísaÅ¥" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "vypnutý" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "zapnutý" + +#: src/canonmn.cpp:363 +#, fuzzy +msgid "Format 1" +msgstr "Formát" + +#: src/canonmn.cpp:364 +#, fuzzy +msgid "Format 2" +msgstr "Formát" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +#, fuzzy +msgid "On (1)" +msgstr "zapnutý" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +#, fuzzy +msgid "On (2)" +msgstr "zapnutý" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Neznáme" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Nastavenie fotoaparátu" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Rôzne nastavenia fotoaparátu" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Ohnisková vzdialenosÅ¥" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Info o snímke" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Informácie o snímke" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "panoráma" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Typ obrázka" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Typ obrázka" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Verzia firmvéru" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Verzia firmvéru" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +#, fuzzy +msgid "File Number" +msgstr "Äíslo F" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +#, fuzzy +msgid "File number" +msgstr "Názov súboru" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Meno vlastníka" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Sériové Äíslo" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera Info" +msgstr "Info o fotoaparáte" + +#: src/canonmn.cpp:393 +#, fuzzy +msgid "Camera info" +msgstr "Info o fotoaparáte" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Vlastné funkcie" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "ID modelu" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "ID modelu" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Informácie o obrázku" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Informácie o obrázku" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "Náhľad" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Náhľad" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Sériové Äíslo 1" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Sériové Äíslo 2" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +#, fuzzy +msgid "Super Macro" +msgstr "super makro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "super makro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF Info" +msgstr "Info o AZ" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +#, fuzzy +msgid "AF info" +msgstr "Info o AZ" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Tabuľka vyváženia bielej" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Tabuľka vyváženia bielej" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Model Å¡oÅ¡oviek" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Model Å¡oÅ¡oviek" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +#, fuzzy +msgid "Internal Serial Number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +#, fuzzy +msgid "Internal serial number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "Vlastné funkcie" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing Info" +msgstr "Softvér použitý na spracovanie" + +#: src/canonmn.cpp:407 +#, fuzzy +msgid "Processing info" +msgstr "Softvér použitý na spracovanie" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured Color" +msgstr "Prirodzená farba" + +#: src/canonmn.cpp:408 +#, fuzzy +msgid "Measured color" +msgstr "Prirodzená farba" + +#: src/canonmn.cpp:409 +#, fuzzy +msgid "ColorSpace" +msgstr "Farebný priestor" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD Offset" +msgstr "Ofset" + +#: src/canonmn.cpp:413 +#, fuzzy +msgid "VRD offset" +msgstr "ofset" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor Info" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/canonmn.cpp:414 +#, fuzzy +msgid "Sensor info" +msgstr "Info o snímke" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color Data" +msgstr "Matica farieb" + +#: src/canonmn.cpp:415 +#, fuzzy +msgid "Color data" +msgstr "moje farebné údaje" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Neznáma znaÄka CanonMakerNote" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "ekonomický" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normálny" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "jemný" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "superjemný" + +#: src/canonmn.cpp:438 +#, fuzzy +msgid "Normal Movie" +msgstr "Bežné spracovanie" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Film" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Auto" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "ÄŒervené oÄi" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Pomalá synchronizácia" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "auto + korekcia Äervených oÄí" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "zapnutý + korekcia Äervených oÄí" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "externý" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Jednotlivý záber / ÄasovaÄ" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Spojitý" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Film" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "spojitý, priorita pre rýchlosÅ¥" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Spojitý, nízky" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Spojitý, vysoký" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "automatické zaostrenie pre jeden záber" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "inteligentné servo zaostrenie" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "inteligentné zaostrenie" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "RuÄné zaostrenie" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Jednotlivý" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "posúvaÅ¥ zaostrenie" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Veľký" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Stredný" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "malý" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "stredný 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "stredný 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "stredný 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Plne automatický" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manuál" + +# exif-scenecapturetype-1 +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "krajinka" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "rýchla uzávierka" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "pomalá uzávierka" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "NoÄná scéna" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Odtiene Å¡edej" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sépia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Portrét" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Å porty" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Makro / záber zblízka" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "ÄŒierna a biela" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "živé" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutrálny" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Blesk vypnutý" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "pomalá uzávierka" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "zeleň" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "vnútri" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Ohňostroj" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Pláž" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "pod vodou" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Sneh" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "deti & zvieratá" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "NoÄný záber" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "digitálne makro" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Moje farby" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Fotografia" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Iný" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "nízka" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "vysoká" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "nie je k dispozícii" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "automatický vysoký" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Å¡tandardný" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Bodový" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "priemer" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "vyhodnocujúci" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "ÄŒiastoÄný" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Stredovo vážený" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Neznámy" + +# exif-subjectdistancerange-1 +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "makro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "veľmi zblízka" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Zblízka" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "stredný rozsah" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "V diaľke" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "NekoneÄno" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "RuÄná voľba bodu automatického zaostrenia" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "NiÄ (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Automatický výber" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "vpravo" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "v strede" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "vľavo" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "automatická voľba bodu zaostrenia" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Jednoduché fotenie (auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Program (P)" + +# exif-exposureprogram-4 +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Priorita uzávierky (Tv)" + +# FUZZY exif-exposureprogram-3 +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Priorita clony (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manuál (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Blesk sa nespustil" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Spustil sa" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "externý blesk" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Vnútorný blesk" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "FP synchr. zapnutá" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "synchr. 2. zácl. použitá" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "FP synchr. použitá" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "Normálna AE" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Kompenzácia expozície" + +# AE - automatická expozícia +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "zámok AE" + +# AE - automatická expozícia +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "zámok AE + kompenzácia expozície" + +# AE - automatická expozícia +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "bez AE" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "zapnutý, iba pri fotení" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Bod automatického zaostrenia" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Hladký" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "ÄŒB" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Vlastný" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "moje farebné údaje" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Plný" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Samospúšť" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Samospúšť" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Kvalita" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Režim blesku" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Nastavenie režimu blesku" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Režim jazda autom" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Nastavenie režimu jazda autom" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "režim zaostrenia" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Nastavenie režimu zaostrenia" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "VeľkosÅ¥ obrázka" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Jednoduchý režim" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "režim jednoduchého fotenia" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "digitálne priblíženie" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "digitálne priblíženie" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Kontrast" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Nastavenie kontrastu" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "SýtosÅ¥" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Nastavenie sýtosti" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "OstrosÅ¥" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Nastavenie zaostrenia" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Režim ISO rýchlosÅ¥" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Nastavenie ISO rýchlosti" + +# exif-meteringmode +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "merací režim" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Nastavenie režimu merania" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Typ zaostrenia" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Nastavenie typu zaostrenia" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Nebol vybraný bod automatického zaostrenia" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Režim expozície" + +# exif-exposuremode +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Nastavenie režimu expozície" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Typ Å¡oÅ¡pviek" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "typ Å¡oÅ¡oviek" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Å¡oÅ¡ovky" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "" + +#: src/canonmn.cpp:1065 +#, fuzzy +msgid "Short focal" +msgstr "Bodové zaostrenie" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal Units" +msgstr "Ohnisková vzdialenosÅ¥" + +#: src/canonmn.cpp:1066 +#, fuzzy +msgid "Focal units" +msgstr "Ohnisková vzdialenosÅ¥" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Max. clona" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Max. clona" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min Aperture" +msgstr "Max. clona" + +#: src/canonmn.cpp:1068 +#, fuzzy +msgid "Min aperture" +msgstr "Max. clona" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Aktivita blesku" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "aktivita blesku" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Podrobnosti blesku" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "podrobnosti blesku" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Spojité zaostrenie" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Nastavenie spojité zaostrenie" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "Nastavenie AE" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "Nastavenie AE" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Stabilizácia obrazu" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Stabilizácia obrazu" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Clona displeja" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Clona displeja" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Zdrojová šírka priblíženia" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "zdrojová šírka priblíženia" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "Cieľová šírka priblíženia" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "Cieľová šírka priblíženia" + +# exif-meteringmode +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "merací režim" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Režim merania." + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Fotoefekt" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "fotoefekt" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "RuÄné uvoľnenie" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "RuÄné uvoľnenie" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Farebný tón" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Farebný tón" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "Kvalita obrázka" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 1" + +# exif-lightsource-1 +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "denné svetlo" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "oblaÄno" + +# exif-lightsource-3 +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "volfrám" + +# exif-lightsource-2 +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "fluorescencia" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "ÄŒiernobiela" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Tieň" + +# ?exif-lightsource-255 +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "RuÄné nastavenie teploty (v kelvinoch)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "PC Set 3" + +# exif-lightsource-12 +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "denné svetlo, fluorescenÄné" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Vlastný 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Vlastný 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "vlastné 3" + +#: src/canonmn.cpp:1115 +#, fuzzy +msgid "PC Set 4" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1116 +#, fuzzy +msgid "PC Set 5" +msgstr "PC Set 1" + +# exif-exposureprogram-4 +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "priorita uzávierky" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "vľavo" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "v strede" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "vpravo" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Použitá ISO rýchlosÅ¥" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Použitá ISO rýchlosÅ¥" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Cieľová clona" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Cieľová rýchlosÅ¥ uzávierky" + +# exif-shutterspeedvalue +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "exif-shutterspeedvalue" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Vyváženie bielej" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Nastavenie vyváženia bielej" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Poradové Äíslo" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Poradové Äíslo (ak je zo spojitého záberu)" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Použitý bod automatického zaostrenia" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Skreslenie blesku" + +# exif-subjectdistance +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "vzdialenosÅ¥ subjektu" + +# exif-subjectdistancerange +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "VzdialenosÅ¥ subjektu (jednotky nie sú jasné)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Hodnota clony" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Hodnota rýchlosti uzávierky" + +# exif-shutterspeedvalue +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "rýchlosÅ¥ uzávierky" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 2" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "zľava doprava" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "sprava doľava" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "zdola hore" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "zhora dolu" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "matica 2x2 (v smere hodinových ruÄiÄiek)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Rámec panorámy" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Číslo rámca panorámy" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Smer panorámy" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "smer panorámy" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Neznáma znaÄka Canon Panorama" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Redukcia Å¡umu" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Redukciu Å¡umu dlhej expozície" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Ae zámok uzávierky" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "TlaÄidlá zamknutia uzávierky/AE" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Kroky úrovne expozície" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Asistent AZ" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Svetlo asistenta AZ" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Blesk synch. rýchlosÅ¥ Av" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "RýchlosÅ¥ uzávierky v režime Av" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "Poradové Äíslo AEB" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +# exif-exposureprogram-4 +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "priorita uzávierky" + +# exif-exposureprogram-4 +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "priorita uzávierky" + +# TODO: check +#: src/canonmn.cpp:1217 +#, fuzzy +msgid "Lens AF Stop Button" +msgstr "F stops Å¡oÅ¡oviek" + +# TODO: check +#: src/canonmn.cpp:1217 +#, fuzzy +msgid "Lens AF stop button Fn. Switch" +msgstr "F stops Å¡oÅ¡oviek" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Blesk sa spustí automatická redukcia" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Automatická redukcia alebo blesk sa spustí" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "TlaÄidlo menu Návrat" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Poloha tlaÄidla menu Návrat" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Nastavenie funkcie tlaÄidla" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "ÄŒistenie snímaÄa" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "VyÄistenie snímaÄa" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "Uvoľnenie spúšte Žiadna CF karta" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "Uvoľnenie spúšte bez CF karty" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Neznáma znaÄka Canon Custom Function" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "v strede vpravo" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "dolu" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "hore" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "v strede vľavo" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "vyššie vľavo" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "vyššie vpravo" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "nižšie vľavo" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "nižšie vpravo" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Šírka obrázka" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Šírka obrázka" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Výška obrázka" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Dĺžka obrázka" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "šírka obrázka ako bol odfotený" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "šírka obrázka (ako bol odfotený)" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "výška obrázka (ako bol odfotený)" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image height (as shot)" +msgstr "šírka obrázka (ako bol odfotený)" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Použité body automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Použité body automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Použité body automatického zaostrenia 20D" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1264 +#, fuzzy +msgid "AF points used (20D)" +msgstr "Použité body automatického zaostrenia 20D" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +#, fuzzy +msgid "ISO" +msgstr "Info o snímke" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "" + +#: src/canonmn.cpp:1293 +#, fuzzy +msgid "Medium Movie" +msgstr "stredný 1" + +#: src/canonmn.cpp:1294 +#, fuzzy +msgid "Small Movie" +msgstr "Film" + +#: src/canonmn.cpp:1300 +#, fuzzy +msgid "On 1" +msgstr "zapnutý" + +#: src/canonmn.cpp:1301 +#, fuzzy +msgid "On 2" +msgstr "zapnutý" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1309 +#, fuzzy +msgid "On (shift AB)" +msgstr "automatické zaostrenie pre jeden záber" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1310 +#, fuzzy +msgid "On (shift GM)" +msgstr "automatické zaostrenie pre jeden záber" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +#, fuzzy +msgid "Orange" +msgstr "V diaľke" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +#, fuzzy +msgid "Red" +msgstr "ÄŒervené oÄi" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +#, fuzzy +msgid "Green" +msgstr "Zelený odtieň" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +#, fuzzy +msgid "Blue" +msgstr "hodnota" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Krok viacnásobného záberu" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Krok viacnásobného záberu" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "Krok viacnásobného záberu" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "Kvalita obrázka" + +#: src/canonmn.cpp:1338 +#, fuzzy +msgid "Raw Jpg Size" +msgstr "VeľkosÅ¥ obrázka" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Krok viacnásobného záberu" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "Tabuľka vyváženia bielej" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "Tabuľka vyváženia bielej" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +#, fuzzy +msgid "Filter Effect" +msgstr "Farebný efekt" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect" +msgstr "fotoefekt" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro Magnification" +msgstr "Elektromagnetické zväÄÅ¡enie" + +#: src/canonmn.cpp:1345 +#, fuzzy +msgid "Macro magnification" +msgstr "Elektromagnetické zväÄÅ¡enie" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +#, fuzzy +msgid "Live view shooting" +msgstr "Nastavenie režimu jazda autom" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "Kompenzácia expozície blesku" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "Kompenzácia expozície blesku" + +#: src/canonmn.cpp:1351 +#, fuzzy +msgid "Unknown Canon File Info tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Å tandardný" + +#: src/canonmn.cpp:1369 +#, fuzzy +msgid "Lowest" +msgstr "vľavo dolu" + +#: src/canonmn.cpp:1373 +#, fuzzy +msgid "Highest" +msgstr "vysoká" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "SýtosÅ¥" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "SýtosÅ¥" + +#: src/canonmn.cpp:1384 +#, fuzzy +msgid "CM Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1385 +#, fuzzy +msgid "CM Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "jednofarebné" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Podrobnosti blesku" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "Krivka tónu" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Krivka tónu" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "SharpnessFrequency" +msgstr "OstrosÅ¥" + +#: src/canonmn.cpp:1406 +#, fuzzy +msgid "Sharpness frequency" +msgstr "OstrosÅ¥" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "SensorRedLevel" +msgstr "WB_RGGBLevelsShade" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "Úroveň Äiernej" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "SensorBlueLevel" +msgstr "WB_RGGBLevelsShade" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "Úroveň Äiernej" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Vyváženie bielej" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Vyváženie bielej" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr "Tabuľka vyváženia bielej" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr "Tabuľka vyváženia bielej" + +#: src/canonmn.cpp:1411 +#, fuzzy +msgid "WhiteBalance" +msgstr "Vyváženie bielej" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Farebná teplota" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Farebná teplota" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "PictureStyle" +msgstr "Režim obrázka" + +#: src/canonmn.cpp:1413 +#, fuzzy +msgid "Picture style" +msgstr "Režim obrázka" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "digitálne makro" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "digitálne makro" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "automatické zaostrenie pre jeden záber" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +# AF = automatické zaostrenie +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "automatické zaostrenie pre jeden záber" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "HlaviÄka, ofset" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "znaÄka" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "prieÄinok" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "typ" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "veľkosÅ¥" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "ofset" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(nesprávny)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "záznam IIM obálky" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "záznam IIM aplikácie 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Verzia modelu" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Binárne Äíslo, ktoré identifikuje verziu Modelu na výmenu informácií, ÄasÅ¥ " +"1, ktorú používa poskytovateľ. Čísla verzií priraÄujú organizácie IPTC a NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Cieľ" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Táto množina údajov slúži pre niektorých poskytovateľov, ktorí vyžadujú " +"tieto smerovacie informácie nad prísluÅ¡nými vrstvami modelu OSI." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Formát súboru" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Binárne Äíslo, ktoré predstavuje formát súboru. Formát súboru musí byÅ¥ " +"zaregistrovaný u IPTC alebo NAA, kde má priradené jedineÄné Äíslo. Tieto " +"údaje sa používajú na smerovanie údajov prísluÅ¡nému systému a na umožnenie " +"prijímajúcemu systému na nich vykonávaÅ¥ prísluÅ¡né operácie." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Verzia súboru" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Binárne Äíslo, ktoré predstavuje konkrétnu verziu Formátu súboru, ktorý " +"Å¡pecifikuje znaÄka ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Servisné identifikaÄné Äíslo" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Identifikácia poskytovateľa a produktu" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Číslo obálky" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Dva znaky z Äísla, ktoré bude jedineÄné pre údaje uvedené v znaÄke " +" a Identifikátor služby uvedený v znaÄke . Ak " +"sa vyskytne identické Äíslo obálky, záznamy s rovnakým dátumom a " +"Identifikátorom služby, záznamy 2-9 musia byÅ¥ oproti originálu nezmenené. " +"Nie je vÅ¡ak úÄelom byÅ¥ sekvenÄnou kontrolou prijatia sériového Äísla." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "IdentifikaÄné Äíslo výrobku" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"Umožňuje poskytovateľovi identifikovaÅ¥ podmnožiny svojich služieb. Používa " +"sa na príjem organizaÄných údajov, na základe ktorých sa vyberajú, smerujú " +"alebo inak pracuje s údajmi." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Priorita obálky" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Dátum odoslania" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "ÄŒas odoslania" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Znaková sada" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +#, fuzzy +msgid "Unique Name Object" +msgstr "JedineÄný model fotoaparátu" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Identifikátor ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "Verzia ARM" + +#: src/datasets.cpp:157 +#, fuzzy +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Binárne Äíslo, ktoré predstavuje konkrétnu verziu Formátu súboru, ktorý " +"Å¡pecifikuje znaÄka ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Verzia záznamu" + +#: src/datasets.cpp:171 +#, fuzzy +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Binárne Äíslo, ktoré identifikuje verziu Modelu na výmenu informácií, ÄasÅ¥ " +"1, ktorú používa poskytovateľ. Čísla verzií priraÄujú organizácie IPTC a NAA." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Typ objektu" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Atribút objektu" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Názov objektu" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Názov dokumentu" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "UpraviÅ¥ stav" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "SúrnosÅ¥" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Predmet" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Kategória" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "DodatoÄná kategória" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "DodatoÄné kategórie" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "ID upevnenia" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "KľúÄové slová" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Kód umiestnenia" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Názov umiestnenia" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Dátum vydania" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "ÄŒas vydania" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Dátum expirácie" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "ÄŒas ukonÄenia platnosti" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Speciálne inÅ¡trukcie" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "InÅ¡trukcie" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Mali by ste urobiÅ¥" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "ReferenÄná služba" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "ReferenÄný dátum" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "ReferenÄné Äíslo" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Dátum vytvorenia" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "ÄŒas vytvorenia" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Dátum digitalizácie" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "ÄŒas digitalizácie" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Program" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Verzia programu" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Cyklus objektu" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "Vedľajší" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Autor" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "Vedľajší názov" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Mesto" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Umiestnenie sub." + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Provincia Å¡tátu" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Å tát/provincia" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Kód krajiny" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Krajina" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Krajina" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "OsvedÄenie na prenos" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Nadpis" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Pôvodca" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Zdroj" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Identifikácia pôvodného vlastníka intelektuálneho obsahu obrázka. To môže " +"byÅ¥ agentúra, Älen agentúry alebo meno individuálneho fotografa." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Oznam autorských práv" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Kontakt" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Titulok" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Popis" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Zapísal" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Rasterizovaný titulok" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Farebné zložky obrázka." + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Orientácia obrázka" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Rozloženie obrázka." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Jazyk" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Typ audio" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "OznaÄuje typ zvukového obsahu." + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "RýchlosÅ¥ zvuku" + +#: src/datasets.cpp:412 +#, fuzzy +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Zobrazuje dĺžku trvania zvukového obsahu" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Rozlíšenie zvuku" + +#: src/datasets.cpp:415 +#, fuzzy +msgid "Indicates the sampling resolution of an audio content." +msgstr "Zobrazuje dĺžku trvania zvukového obsahu" + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Trvanie zvuku" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Zobrazuje dĺžku trvania zvukového obsahu" + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Zvuková signalizácia konca" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Formát náhľadu" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Verzia náhľadu" + +#: src/datasets.cpp:430 +#, fuzzy +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Binárne Äíslo, ktoré predstavuje konkrétnu verziu Formátu súboru, ktorý " +"Å¡pecifikuje znaÄka ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Dáta náhľadu" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Údaje náhľadu binárneho obrázka." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Chybný)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Neznáma množina údajov" + +#: src/error.cpp:55 +#, fuzzy +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Chyba %0: arg1=%1, arg2=%2, arg3=%3." + +#: src/error.cpp:56 +msgid "Success" +msgstr "ÚspeÅ¡né" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Toto nevyzerá ako obrázok %1" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Chybný názov množiny údajov „%1“" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Neplatný názov záznamu „%1“" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "neplatný názov znaÄky alebo ifdId „%1“, ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Nenastavená hodnota" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Nepodarilo sa otvoriÅ¥ zdroj dát: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Nepodarilo sa otvoriÅ¥ súbor (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: Súbor obsahuje dáta neznámeho typu obrázka" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Pamäť obsahuje dáta neznámeho typu obrázka" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Typ obrázka %1 nie je podporovaný" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Nepodarilo sa naÄítaÅ¥ obrazové údaje" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Toto nevyzerá na JPEG obrázok" + +#: src/error.cpp:72 +#, fuzzy +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "Nepodarilo sa otvoriÅ¥ súbor s príkazmi na Äítanie\n" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Nepodarilo sa premenovaÅ¥ súbor na %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Prenos zlyhal: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Prenos z pamäte zlyhal: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Nepodarilo sa naÄítaÅ¥ vstupné údaje" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Nepodarilo sa zapísaÅ¥ obrázok" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Vstupné dáta neobsahujú podporovaný obrázok" + +#: src/error.cpp:79 +#, fuzzy +msgid "Invalid ifdId %1" +msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setValue: Hodnota je príliÅ¡ veľká (znaÄka=%1, veľkosÅ¥=%2, požadovaná=" +"%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea: Hodnota je príliÅ¡ veľká (znaÄka=%1, veľkosÅ¥=%2, " +"požadovaná=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Ofset mimo rozsahu" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Nepodporovaný typ ofsetu oblasti údajov" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "Neplatná znaková sada: „%1“" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Nepodporovaný formát dátumu" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Nepodporovaný formát Äasu" + +#: src/error.cpp:87 +#, fuzzy +msgid "Writing to %1 images is not supported" +msgstr "Zapisovanie do obrázkov „%2“ nie je podporované" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Voľba %1 v %2 obrázkoch nie je povolené" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Toto nevyzerá na CRW obrázok" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: Nepodporovaný" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "Nie sú dostupné informácie mennom priestore XMP predpony „%1“" + +#: src/error.cpp:92 +#, fuzzy +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "Pre menný priestor „%1“ nie je zaregistrovaná predpona" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "VeľkosÅ¥ %1 JPEG Äasti je väÄÅ¡ia ako 65535 bajtov" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Xmpdatum %1 typu %2 bez obsluhy" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "XMP uzol %1 s opt=%2 bez obsluhy" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Chyba XMP Toolkit %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Nepodarilo sa dekódovaÅ¥ vlastnosÅ¥ Lang Alt %1 s opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Nepodarilo sa dekódovaÅ¥ kvalifikátor Lang Alt %1 s opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Nepodarilo sa zakódovaÅ¥ vlastnosÅ¥ Lang Alt %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" +"Nepodarilo sa dekódovaÅ¥ názov vlastnosti z cesty %1, menného priestoru %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "Menný priestor schémy %1 nie je registrovaný v XMP Toolkit" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Pre predponu „%1“ nie je zaregistrovaný menný priestor" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +#, fuzzy +msgid "Invalid XmpText type `%1'" +msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +#, fuzzy +msgid "%1 has invalid XMP value type `%2'" +msgstr "Neplatný kÄ¾ÃºÄ â€ž%1“" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Autorské práva (C) 2004-2013 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Tento program je šírený v nádeji, že bude užitoÄný, avÅ¡ak\n" +"BEZ AKEJKOĽVEK ZÃRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI \n" +"alebo VHODNOSTI PRE URÄŒITà ÚČEL. ÄŽalÅ¡ie podrobnosti hľadajte \n" +"v GNU General Public License.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Použitie:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ voľby ] [ ÄinnosÅ¥ ] súbor ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Manipulácia s Exif metadátami obrázkov.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Operácie:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust UpraviÅ¥ Äasové známky EXIF o daný Äas. Táto operácia\n" +" vyžaduje aspoň jednu z volieb -a, -Y, -O or -D.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print VypísaÅ¥ metadáta obrázka.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete ZmazaÅ¥ metadáta obrázkov zo súborov.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert VložiÅ¥ metadáta zo zodpovedajúcich súborov *.exv.\n" +" Voľbou -S môžete zmeniÅ¥ príponu vstupných súborov.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract ExtrahovaÅ¥ metadáta do súborov *.exv, *.xmp a náhľadov.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename PremenovaÅ¥ súbory a/alebo nastaviÅ¥ Äasové známky podľa\n" +" Äasovej známky EXIF. Formát názvu súboru je možné nastaviÅ¥\n" +" voľbou -r, voľby Äasovej známku sa menia pomocou -t a -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify PoužiÅ¥ operácie na zmenu (pridanie, nastavenie, zmazanie) " +"EXIF\n" +" a IPTC metadát obrázkových súborov alebo nastavenie JPEG " +"komentára.\n" +" Vyžaduje voľbu -c, -m alebo -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso SkopírovaÅ¥ nastavenie ISO z Pozn. výrobcu Nikon Makernote " +"do\n" +" bežnej EXIF znaÄky.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Voľby:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h ZobraziÅ¥ tohto pomocníka a skonÄiÅ¥.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V ZobraziÅ¥ verziu programu a skonÄiÅ¥.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v VýreÄné informácie o behu programu.\n" + +#: src/exiv2.cpp:266 +#, fuzzy +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr " -v VýreÄné informácie o behu programu.\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b ZobrazovaÅ¥ veľké binárne hodnoty.\n" + +#: src/exiv2.cpp:269 +#, fuzzy +msgid " -u Show unknown tags.\n" +msgstr " -u NezobrazovaÅ¥ neznáme znaÄky.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k ZachovaÅ¥ Äasové známky súborov.\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Pri operácii „rename“ nastaviÅ¥ aj Äasové známky súborov (má " +"prioritu pred -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Operáciou „rename“ iba nastavovaÅ¥ Äasové známky, nepremenúvaÅ¥\n" +" súbor (má prioritu pred -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr " -f NepýtaÅ¥ sa pred prepísaním existujúcich súborov.\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F NepýtaÅ¥ sa pred premenovaním súborov.\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a time nastavenie Äasu vo formáte [-]HH[:MM[:SS]]. Táto voľba\n" +" sa používa iba s operáciou „adjust“.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y rok Nastavenie rokov operáciou „adjust“.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mes Nastavenie mesiacov operáciou „adjust“.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D deň Nastavenie dní operáciou „adjust“.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr " -p rež Režim výpisu operácie „print“. možné režimy sú:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s : vypísaÅ¥ zhrnutie EXIF metadát (Å¡tandardne)\n" + +#: src/exiv2.cpp:286 +#, fuzzy +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr " v : Äisto hodnoty EXIF údajov (skratka pre -Pxgnycv)\n" + +#: src/exiv2.cpp:287 +#, fuzzy +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" +" t : interpretované (preložené) EXIF údaje (skratka pre -Pkyct)\n" + +#: src/exiv2.cpp:288 +#, fuzzy +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : Äisto hodnoty EXIF údajov (skratka pre -Pxgnycv)\n" + +#: src/exiv2.cpp:289 +#, fuzzy +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" +" h : hexadecimálny výpis EXIF údajov (skratka pre -Pxgnycsh)\n" + +#: src/exiv2.cpp:290 +#, fuzzy +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : hodnoty IPTC údajov\n" + +#: src/exiv2.cpp:291 +#, fuzzy +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : XMP vlastnosti\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : JPEG komentár\n" + +#: src/exiv2.cpp:293 +#, fuzzy +msgid " p : list available previews\n" +msgstr " l : oznaÄenie znaÄky\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : Äisté dátové hodnoty\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " x : XMP vlastnosti\n" + +#: src/exiv2.cpp:296 +#, fuzzy +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P stĺps VypísaÅ¥ stĺpce zoznamu EXIF znaÄiek (operácia „print“). Platné " +"voľby:\n" + +#: src/exiv2.cpp:297 +#, fuzzy +msgid " E : include Exif tags in the list\n" +msgstr " s : veľkosÅ¥ v bajtoch\n" + +#: src/exiv2.cpp:298 +#, fuzzy +msgid " I : IPTC datasets\n" +msgstr " i : údaje IPTC\n" + +#: src/exiv2.cpp:299 +#, fuzzy +msgid " X : XMP properties\n" +msgstr " x : XMP vlastnosti\n" + +#: src/exiv2.cpp:300 +#, fuzzy +msgid " x : print a column with the tag number\n" +msgstr " x : vypísaÅ¥ stĺpec s hodnotou znaÄky\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : názov skupiny\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : kľúÄ\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : oznaÄenie znaÄky\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : názov znaÄky\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : typ\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : poÄet zložiek\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : veľkosÅ¥ v bajtoch\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : Äisté dátové hodnoty\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : interpretované (preložené) hodnoty\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : hexadecimálny výpis údajov\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr " -d cieľ Ciele zmazanie operácie „delete“. Možné ciele sú:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : vÅ¡etky podporované metadáta (Å¡tandardne)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : sekcia EXIF\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : iba EXIF náhľady\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : údaje IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : XMP paket\n" + +#: src/exiv2.cpp:318 +#, fuzzy +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i cieľ Ciele vkladania operácie „insert“. Možné ciele sú\n" +" rovnaké ako pri voľbe -d, plus:\n" +" X : VložiÅ¥ XMP paket zo .xmp\n" +" Je možné vložiÅ¥ iba náhľady JPEG, musia byÅ¥ pomenované\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +#, fuzzy +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e cieľ Ciele extrakcie operácie „extract“. Možné ciele\n" +" rovnaké ako pri voľbe -i, plus:\n" +" X : ExtrahovaÅ¥ XMP paket do .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Formát názvu súboru operácie „rename“. Formátovací reÅ¥azec\n" +" je podľa strftime(3). Podporované sú nasledovné kľúÄové slová:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - pôvodný názov súboru bez prípony\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - názov adresára, v ktorom sa nachádza pôvodný " +"súbor\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - názov rodiÄovského adresára\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Å tandardný formát názvu súboru je " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt ReÅ¥azec JPEG komentára, ktorý sa má v obrázku nastaviÅ¥.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m súbor Súbor s príkazmi operácie „modify“. Formát príkazov je\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M súbor Príkazový riadok operácie „modify“. Formát príkazov je\n" +" rovnaký ako formát riadkov súboru s príkazmi.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l adr Umiestnenie (adresár) súborov, ktoré sa majú vložiÅ¥ alebo " +"extrahovaÅ¥.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf PoužiÅ¥ príponu .suf pre zdrojové súbory operácie „insert“.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Voľba" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "vyžaduje parameter\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Neprípustná možnosÅ¥" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt vrátil neoÄakávaný kód znaku" + +#: src/exiv2.cpp:410 +#, fuzzy +msgid "Invalid argument" +msgstr "Neplatný kľúÄ" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Neplatný kľúÄ" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ignoruje sa nadbytoÄná voľba" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Ignoruje sa nadbytoÄná voľba -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Chyba syntaktickej analýzy argumentu voľby -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "Voľba -a nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Spracovanie chýb" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "argument voľby" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Nerozpoznaný režim výpisu" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Ignoruje sa nadbytoÄná voľba -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "Voľba -p nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Nerozpoznaný cieľ výpisu" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Ignoruje sa nadbytoÄná voľba -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "Voľba -P nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "Voľba -d nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "Voľba -e nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "Voľba -i nie je kompatibilná s predoÅ¡lou voľbou\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ adjust nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ print nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ delete nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ extract nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ insert nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ rename nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ modify nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ fixiso nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:824 +#, fuzzy +msgid "Action fixcom is not compatible with the given options\n" +msgstr "ÄŒinnosÅ¥ fixiso nie je kompatibilná so zadanými voľbami\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Musí byÅ¥ uvedená operácia\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "Operácia adjust vyžaduje aspoň jednu z volieb -a, -Y, -O alebo -D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "Operácia modify vyžaduje aspoň jednu z volieb -c, -m alebo -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Je požadovaný aspoň jeden súbor\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Chyba syntaktickej analýzy argumentov voľby -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Chyba syntaktickej analýzy argumentov voľby -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "Voľbu -l možno použiÅ¥ iba s operáciami extract alebo insert\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "Voľbu -S možno použiÅ¥ iba s operáciou insert\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "Voľbu -t možno použiÅ¥ iba s operáciou rename\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "Voľbu -T možno použiÅ¥ iba s operáciou rename\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Nerozpoznaný " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "cieľ" + +#: src/exiv2.cpp:1065 +#, fuzzy +msgid "Invalid preview number" +msgstr "Číslo intervalu" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Nepodarilo sa otvoriÅ¥ súbor s príkazmi na Äítanie\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "riadok" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "voľba -M" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Neplatný príkazový riadok" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Neplatný príkaz" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Neplatný kľúÄ" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Neplatný príkazový riadok" + +#: src/fujimn.cpp:62 +#, fuzzy +msgid "Soft mode 1" +msgstr "Bodový režim" + +#: src/fujimn.cpp:63 +#, fuzzy +msgid "Soft mode 2" +msgstr "Bodový režim" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "Tvrdý režim 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "Tvrdý režim 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "fluorescenÄné (denné svetlo)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "fluorescenÄné (teplá biela)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "fluorescenÄné (chladná biela)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Inkadescentné" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Žiadne (Äiernobiele)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Korekcia Äervených oÄí" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "NoÄná scéna" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Program AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Prirodzené svetlo" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Zabránenie rozostrenia" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Západ slnka" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "múzeum" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Oslavy" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Kvet" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Text" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Prírodné svetlo a blesk" + +# FUZZY exif-exposureprogram-3 +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Priorita clony AE" + +# FUZZY exif-exposureprogram-4 +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Priorita rýchlosti uzávierky AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Bez blesku a blesk" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Chróm" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Å iroké" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Å tandardný" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Å túdiový portrét" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichróm" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Å túdiový portrét Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400 %)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Raw" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Å tandardný (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Å iroký režim 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Å iroký režim 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Režim simulácie filmu" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Verzia" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Poznámka výrobcu Fujifilm" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Toto Äíslo je jedineÄné a obsahuje dátum výroby, ale nie je rovnaké ako " +"Äíslo na plášti fotoaparátu." + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Nastavenie kvality obrázka" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Farba" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Nastavenie sýtosti chromaticity" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "odtieň" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Nastavenie režimu spustenia blesku" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Sila blesku" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "Nastavenie kompenzácie intenzity blesku" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Nastavenie režimu makro" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Nastavenie režimu zaostrenia" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Pomalá synchronizácia" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Nastavenie režimu pomalej synchronizácie" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Režim obrázka" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Nastavenie režimu obrázka" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Nastavenie spojitého alebo viacnásobného záberu" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Poradové Äíslo" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Poradové Äíslo" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "FinePix Color" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Nastavenie farieb Fuji FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Upozornenie pred rozostrením" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Stav upozornenia pred rozostrením" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Upozornenie zaostrenia" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Stav upozornenia automatického zaistrenia" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Upozornenie expozície" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Stav upozornenia automatickej expozície" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Dynamický rozsah" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Dynamický rozsah" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Režim filmu" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Režim filmu" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Nastavenie dynamického rozsahu" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Nastavenie dynamického rozsahu" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Vývojový dynamický rozsah" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Vývojový dynamický rozsah" + +# FUZZY exif-focallength +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Minimálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Minimálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "maximálna clona pri maximálnom ohnisku" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "maximálna clona pri maximálnom ohnisku" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Zdroj súboru" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Zdroj súboru" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Poradové Äíslo" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Poradové Äíslo" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Číslo rámca" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Číslo rámca" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Neznáma znaÄka FujiMakerNote" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Prirodzená farba" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Živé farby" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarizácia" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Prirodzené" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "Prirodzené sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Prirodzené+ sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "VeÄer" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "NoÄný portrét" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "super jemný" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "extra jemný" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Poznámky zhotoviteľa - verzia" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "ReÅ¥azec 'MLT0' (nie je ukonÄený nulou)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Nastavenie fotoaparátu (Å¡td. staré)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Nastavenie fotoaparátu (Å¡td. nové)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Nastavenie fotoaparátu (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Nastavenia fotoaparátu (pre model Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Údaje o stabilizácii obrazu" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Údaje o stabilizácii obrazu" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "VeľkosÅ¥ komprimovaného obrázka" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "VeľkosÅ¥ komprimovaného obrázka" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "Jpeg miniatúra 640x480 bodov" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Ofset náhľadu" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Umiestnenie náhľadu v dátach" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Dĺžka náhľadu" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "VeľkosÅ¥ náhľadu" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Režim scény" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Farebný režim" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Farebný režim" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Kvalita obrázka" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Kompenzácia expozície blesku" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Kompenzácia expozície blesku v EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +#, fuzzy +msgid "Teleconverter Model" +msgstr "Režim scény" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +#, fuzzy +msgid "Zone Matching" +msgstr "Redukcia Å¡umu" + +#: src/minoltamn.cpp:154 +#, fuzzy +msgid "Zone matching" +msgstr "Redukcia Å¡umu" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Farebná teplota" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Identifikátor Å¡oÅ¡oviek" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "Kompenzácia tónu" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Tabuľka vyváženia bielej" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Tabuľka vyváženia bielej" + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "Stabilizácia obrazu" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Údaje o stabilizácii obrazu" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Nastavenie fotoaparátu (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Nastavenia fotoaparátu (pre model Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +#, fuzzy +msgid "PrintIM information" +msgstr "Informácie GPS" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Nastavenie fotoaparátu (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Nastavenia fotoaparátu (pre modely Z1, DImage X, a F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Neznáma znaÄka Minolta MakerNote" + +# exif-exposureprogram-3 +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "priorita clony" + +# exif-exposureprogram-4 +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "priorita uzávierky" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Spustí sa blesk" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +#, fuzzy +msgid "Rear flash sync" +msgstr "Odrazenie externého blesku" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Bezdrôtové" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "fluorescentné 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Plná veľkosÅ¥" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "super jemný" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "extrajemný" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +#, fuzzy +msgid "Single Frame" +msgstr "jediný záber" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "samospúšť" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Viacnásobné snímky" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Interval" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS spojitý" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS spojitý" + +# exif-meteringmode-4 +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +#, fuzzy +msgid "Multi-segment" +msgstr "Viacbodový" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Stredovo vážený priemer" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Elektromagnetické zväÄÅ¡enie" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "hore" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "vpravo hore" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "vpravo dolu" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "dolu" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "vľavo dolu" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "vpravo hore" + +# exif-sharpness-2 +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "tvrdý" + +# exif-sharpness-1 +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "mäkký" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "NoÄný portrét" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "AkÄný Å¡port" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Å tandardný tvar" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Tvar dát" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Prirodzená farba" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "ÄŒiernobiela" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Živé farby" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Žiadna oblasÅ¥" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Stredná oblasÅ¥ (vodorovná orientácia)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Stredná oblasÅ¥ (zvislá orientácia)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "OblasÅ¥ vľavo" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "OblasÅ¥ vpravo" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Automatické zaostrenie" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Å iroké zaostrenie (bežné)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Bodové zaostrenie" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Expozícia" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filter" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Nevložený" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Vložený" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Text + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (PokroÄilá integrácia vzdialenosti)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "RuÄné riadenie blesku" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Režim expozície" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Režim blesku" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "jazda autom" + +#: src/minoltamn.cpp:512 +#, fuzzy +msgid "ISO Value" +msgstr "Hodnota ISO rýchlosti" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "ÄŒas expozície" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "Äíslo F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "Číslo F" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Režim makro" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Kompenzácia expozície" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Krok viacnásobného záberu" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Krok viacnásobného záberu" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Dĺžka intervalu" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Dĺžka intervalu" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Číslo intervalu" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Číslo intervalu" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Zariadenie blesku" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Blesk vypnutý" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Dátum Minolta" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Dátum Minolta" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "ÄŒas Minolta" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "ÄŒas Minolta" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Pamäť Äísla súboru" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Pamäť Äísla súboru" + +#: src/minoltamn.cpp:559 +#, fuzzy +msgid "Last Image Number" +msgstr "Číslo obrázka" + +#: src/minoltamn.cpp:560 +#, fuzzy +msgid "Last image number" +msgstr "Číslo obrázka" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Vyváženie farieb ÄŒervená" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Vyváženie farieb ÄŒervená" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Vyváženie farieb Zelená" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Vyváženie farieb Zelená" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Vyváženie farieb Modrá" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Vyváženie farieb Modrá" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Program subjektu" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Program subjektu" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Nastavenia ISO" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Nastavenia ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Model Minolta" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Model Minolta" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Režim intervalu" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Režim intervalu" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Názov prieÄinka" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Názov prieÄinka" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Farebný režim" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Farebný filter" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Farebný filter" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "ÄŒiernobiely filter" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "ÄŒiernobiely filter" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Vnútorný blesk" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Jas" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "Bod zaostrenia X" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "Bod zaostrenia X" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "Bod zaostrenia Y" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "Bod zaostrenia Y" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Å iroký rozsah zaostrenia" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "OblasÅ¥ Å¡irokého zaostrenia" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "režim zaostrenia" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Rozsah zaostrenia" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "Poloha prepínaÄa DEC" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "poloha prepínaÄa DEC" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Farebný profil" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Farebný profil" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +#, fuzzy +msgid "Data Imprint" +msgstr "Výpis dát 1" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Meranie blesku" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Meranie blesku" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Neznáma znaÄka Nastavenie fotoaparátu Minolta" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Posunutie programu" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Posunutie programu" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvinov" + +# AF = automatické zaostrenie +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "automatické zaostrenie pre jeden záber" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "spojité automatické zaostrenie" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "automatické zaostrenie" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (prirodzené)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (prirodzené+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horizontálne (normálne)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "OtoÄiÅ¥ o 90°" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "OtoÄiÅ¥ o 270°" + +# AF = automatické zaostrenie +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "body automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "body automatického zaostrenia" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Farebný priestor" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Fariebný priestor" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Odtieň" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "otoÄenie" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Číslo obrázka" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Redukcia Å¡umu" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "" + +#: src/minoltamn.cpp:818 +#, fuzzy +msgid "Zone matching on" +msgstr "Kompenzácia tónu" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Neznáma znaÄka Minolta Camera Settings 7D" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Posunutie programu" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Posunutie programu" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "NoÄný portrét" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +#, fuzzy +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Stred" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Hore" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Vpravo hore" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Vpravo dolu" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Dolu" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Vľavo dolu" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Vľavo hore" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Výber" + +#: src/minoltamn.cpp:947 +#, fuzzy +msgid "Natural+" +msgstr "Prirodzené" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "NoÄná scéna" + +#: src/minoltamn.cpp:950 +#, fuzzy +msgid "Evening Scene" +msgstr "VeÄer" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "poloha zaostrenia" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "poloha zaostrenia" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "rozsah zaostrenia" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Revízia expozície" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "Revízia expozície" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "otoÄenie" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +#, fuzzy +msgid "Picture Finish" +msgstr "Informácie o obrázku" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "RuÄné skreslenie expozície" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "RuÄné skreslenie expozície" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Režim AZ" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Režim AZ" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Neznáma znaÄka Minolta Camera Settings 5D" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "samospúšť (12 sek)" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "samospúšť (2 sek)" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/minoltamn.cpp:1106 +#, fuzzy +msgid "Single-frame Bracketing Low" +msgstr "jediný záber" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Viacnásobné snímky" + +#: src/minoltamn.cpp:1108 +#, fuzzy +msgid "Single-frame Bracketing High" +msgstr "jediný záber" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Spojitý, vysoký" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +#, fuzzy +msgid "Continuous Bracketing" +msgstr "Spojitý, vysoký" + +#: src/minoltamn.cpp:1156 +#, fuzzy +msgid "Single-Frame Bracketing" +msgstr "jediný záber" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Å tandardné" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +#, fuzzy +msgid "Color Temperature/Color Filter" +msgstr "Farebná teplota" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Teplota" + +#: src/minoltamn.cpp:1213 +#, fuzzy +msgid "Setup" +msgstr "NastaviÅ¥" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +#, fuzzy +msgid "Image and Information" +msgstr "Konfigurácia obrázka" + +#: src/minoltamn.cpp:1233 +#, fuzzy +msgid "Image Only" +msgstr "Typ obrázka" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Výška obrázka" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "Spustí sa blesk" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "režim zaostrenia" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Dáta náhľadu" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "" + +#: src/minoltamn.cpp:1258 +#, fuzzy +msgid "Toggle" +msgstr "odtieň" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Bodový režim" + +#: src/minoltamn.cpp:1260 +#, fuzzy +msgid "Spot Toggle" +msgstr "Bodový režim" + +# exif-shutterspeedvalue +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "RýchlosÅ¥ uzávierky" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +#, fuzzy +msgid "Automatic" +msgstr "automatické zaostrenie" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "Automatický kontrast" + +#: src/minoltamn.cpp:1291 +#, fuzzy +msgid "Horizontal" +msgstr "Horizontálne (normálne)" + +#: src/minoltamn.cpp:1297 +#, fuzzy +msgid "Manual Rotate" +msgstr "RuÄné uvoľnenie" + +#: src/minoltamn.cpp:1302 +#, fuzzy +msgid "Within Range" +msgstr "Rozsah Å¡oÅ¡oviek:" + +#: src/minoltamn.cpp:1303 +#, fuzzy +msgid "Under/Over Range" +msgstr "prenosový rozsah" + +#: src/minoltamn.cpp:1304 +#, fuzzy +msgid "Out of Range" +msgstr "Ofset mimo rozsahu" + +#: src/minoltamn.cpp:1309 +#, fuzzy +msgid "Not Indicated" +msgstr "nedefinované" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "pod vodou" + +#: src/minoltamn.cpp:1311 +#, fuzzy +msgid "Bottom of Scale" +msgstr "zdola hore" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +#, fuzzy +msgid "Over Scale" +msgstr "Å tandardná Å¡kála" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "veľmi nízky" + +#: src/minoltamn.cpp:1350 +#, fuzzy +msgid "Half Full" +msgstr "Plný" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "Kompenzácia expozície" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "Kompenzácia expozície" + +#: src/minoltamn.cpp:1362 +#, fuzzy +msgid "High Speed Sync" +msgstr "Orezanie vysoká rýchlosÅ¥" + +#: src/minoltamn.cpp:1363 +#, fuzzy +msgid "High speed sync" +msgstr "Orezanie vysoká rýchlosÅ¥" + +#: src/minoltamn.cpp:1365 +#, fuzzy +msgid "Manual Exposure Time" +msgstr "ÄŒas expozície" + +#: src/minoltamn.cpp:1366 +#, fuzzy +msgid "Manual exposure time" +msgstr "ÄŒas expozície" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Číslo intervalu" + +#: src/minoltamn.cpp:1377 +#, fuzzy +msgid "Drive Mode 2" +msgstr "Režim jazda autom" + +#: src/minoltamn.cpp:1378 +#, fuzzy +msgid "Drive mode 2" +msgstr "jazda autom" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Režim AZ" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Režim blesku" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "Kompenzácia expozície blesku" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "Kompenzácia expozície blesku v EV" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +#, fuzzy +msgid "ISO Setting" +msgstr "Nastavenia ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Redukcia Å¡umu" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +#, fuzzy +msgid "Dynamic Range Optimizer Mode" +msgstr "Nastavenie dynamického rozsahu" + +#: src/minoltamn.cpp:1408 +#, fuzzy +msgid "Dynamic range optimizer mode" +msgstr "Nastavenie dynamického rozsahu" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +#, fuzzy +msgid "Self Timer Time" +msgstr "Samospúšť" + +#: src/minoltamn.cpp:1435 +#, fuzzy +msgid "Self timer time" +msgstr "Samospúšť" + +#: src/minoltamn.cpp:1438 +#, fuzzy +msgid "Continuous bracketing" +msgstr "Spojitý, vysoký" + +#: src/minoltamn.cpp:1440 +#, fuzzy +msgid "Single Frame Bracketing" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/minoltamn.cpp:1441 +#, fuzzy +msgid "Single frame bracketing" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "Nastavenie vyváženia bielej" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Vyváženie bielej" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "Vyváženie bielej" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Farebná teplota" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Farebná teplota" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Vlastný 1" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "Vlastný 1" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Nastavenie dynamického rozsahu" + +#: src/minoltamn.cpp:1464 +#, fuzzy +msgid "Custom WB Red Level" +msgstr "WB_RGGBLevelsShade" + +#: src/minoltamn.cpp:1465 +#, fuzzy +msgid "Custom WB red level" +msgstr "Úroveň Äiernej" + +#: src/minoltamn.cpp:1467 +#, fuzzy +msgid "Custom WB Green Level" +msgstr "Úroveň Äiernej" + +#: src/minoltamn.cpp:1468 +#, fuzzy +msgid "Custom WB green level" +msgstr "Úroveň Äiernej" + +#: src/minoltamn.cpp:1470 +#, fuzzy +msgid "Custom WB Blue Level" +msgstr "WB_RGGBLevelsShade" + +#: src/minoltamn.cpp:1471 +#, fuzzy +msgid "CustomWB blue level" +msgstr "Úroveň Äiernej" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Vlastný 1" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Nastavenie vyváženia bielej" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "Hodnota kompenzácie expozície" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +#, fuzzy +msgid "Sony Image Size" +msgstr "VeľkosÅ¥ obrázka" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +# AF = automatické zaostrenie +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "automatické zaostrenie pre jeden záber" + +#: src/minoltamn.cpp:1503 +#, fuzzy +msgid "Red Eye Reduction" +msgstr "Korekcia Äervených oÄí" + +#: src/minoltamn.cpp:1504 +#, fuzzy +msgid "Red eye reduction" +msgstr "Korekcia Äervených oÄí" + +#: src/minoltamn.cpp:1506 +#, fuzzy +msgid "Flash Default" +msgstr "Podrobnosti blesku" + +#: src/minoltamn.cpp:1507 +#, fuzzy +msgid "Flash default" +msgstr "podrobnosti blesku" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "Automatická uzávierka" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "Automatický viacnásobný záber" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "Nastavenie režimu zaostrenia" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "Nastavenie režimu zaostrenia" + +#: src/minoltamn.cpp:1515 +#, fuzzy +msgid "AEL Button" +msgstr "Nastavenie AE" + +#: src/minoltamn.cpp:1516 +#, fuzzy +msgid "AEL button" +msgstr "Nastavenie AE" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "Nastavenie kontrastu" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "Kontrast" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Kompenzácia expozície" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Kompenzácia expozície" + +#: src/minoltamn.cpp:1525 +#, fuzzy +msgid "AF assist" +msgstr "Asistent AZ" + +#: src/minoltamn.cpp:1527 +#, fuzzy +msgid "Card Shutter Lock" +msgstr "Ae zámok uzávierky" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "Ae zámok uzávierky" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "Ae zámok uzávierky" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "pomalá uzávierka" + +#: src/minoltamn.cpp:1533 +#, fuzzy +msgid "AF Area Illumination" +msgstr "GPS Informácie o oblasti" + +#: src/minoltamn.cpp:1534 +#, fuzzy +msgid "AF area illumination" +msgstr "Režim AZ" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Index expozície" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "ExpoziÄný index" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Index expozície" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +#, fuzzy +msgid "Exposure Bracketing Indicator Last" +msgstr "Viacnásobné snímky so zmenou expozície" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "Kompenzácia expozície blesku" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Kompenzácia expozície blesku" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "Kompenzácia expozície blesku" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "Kompenzácia expozície blesku" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "režim zaostrenia" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Nastavenie režimu zaostrenia" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash Type" +msgstr "Režim blesku" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash type" +msgstr "Režim blesku" + +# AE - automatická expozícia +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +#, fuzzy +msgid "AE Lock" +msgstr "zámok AE" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "úroveň batérie" + +#: src/minoltamn.cpp:1588 +#, fuzzy +msgid "Battery level" +msgstr "úroveň batérie" + +#: src/minoltamn.cpp:1592 +#, fuzzy +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 1" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +#, fuzzy +msgid "Clear" +msgstr "rok" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +#, fuzzy +msgid "Deep" +msgstr "Denver" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +#, fuzzy +msgid "Light" +msgstr "vpravo" + +#: src/minoltamn.cpp:1950 +#, fuzzy +msgid "Night View" +msgstr "NoÄná scéna" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "" + +#: src/minoltamn.cpp:1990 +#, fuzzy +msgid "Local" +msgstr "Umiestnenie" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "vpravo hore" + +#: src/minoltamn.cpp:2007 +#, fuzzy +msgid "Bottom-Right" +msgstr "vpravo dolu" + +#: src/minoltamn.cpp:2009 +#, fuzzy +msgid "Bottom-Left" +msgstr "vľavo dolu" + +#: src/minoltamn.cpp:2011 +#, fuzzy +msgid "Top-Left" +msgstr "vpravo hore" + +#: src/minoltamn.cpp:2012 +#, fuzzy +msgid "Far-Right" +msgstr "OrezaÅ¥ vpravo" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "OrezaÅ¥ vľavo" + +# exif-transferfunction +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +#, fuzzy +msgid "Advanced Auto" +msgstr "prenosová funkcia" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "Orezanie vysoká rýchlosÅ¥" + +# AF = automatické zaostrenie +#: src/minoltamn.cpp:2041 +#, fuzzy +msgid "AF" +msgstr "AZ-S" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Dátum vydania" + +#: src/minoltamn.cpp:2054 +#, fuzzy +msgid "RAW " +msgstr "RAW" + +#: src/minoltamn.cpp:2055 +#, fuzzy +msgid "CRAW " +msgstr "RAW" + +#: src/minoltamn.cpp:2058 +#, fuzzy +msgid "RAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2059 +#, fuzzy +msgid "CRAW+JPEG" +msgstr "JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Kompresný pomer" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "VeľkosÅ¥ komprimovaného obrázka" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Použité nastavenie ISO" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Vysoký kľúÄ" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "Nízky kľúÄ" + +#: src/nikonmn.cpp:80 +#, fuzzy +msgid "Extra High" +msgstr "extra jemný" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Jednoduchá oblasÅ¥" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Dynamická oblasÅ¥" + +#: src/nikonmn.cpp:88 +#, fuzzy +msgid "Dynamic area, closest subject" +msgstr "Najbližší subjekt" + +#: src/nikonmn.cpp:89 +#, fuzzy +msgid "Group dynamic" +msgstr "Skupinové dynamické AZ" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Dynamická oblasÅ¥ (Å¡iroká)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "vľavo hore" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "vpravo hore" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "vľavo dolu" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "vpravo dolu" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "najviac vľavo" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "najviac vpravo" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Blesk, ruÄne" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "blesk, externý" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +#, fuzzy +msgid "Fire, TTL mode" +msgstr "Režim AZ" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Oneskorenie" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Riadenie PC" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Viacnásobné snímky so zmenou expozície" + +#: src/nikonmn.cpp:156 +#, fuzzy +msgid "Auto ISO" +msgstr "Auto" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "riadenie IR" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Spojitý, vysoký" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "Riadenie PC" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Viacnásobné snímky so zmenou expozície" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "riadenie IR" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Automatické uvoľnenie" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "RuÄné uvoľnenie" + +#: src/nikonmn.cpp:182 +#, fuzzy +msgid "Lossy (type 1)" +msgstr "typ Å¡oÅ¡oviek" + +# exif-compression-1 +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "nekomprimovaný" + +#: src/nikonmn.cpp:184 +#, fuzzy +msgid "Lossless" +msgstr "Los Angeles" + +#: src/nikonmn.cpp:185 +#, fuzzy +msgid "Lossy (type 2)" +msgstr "typ Å¡oÅ¡oviek" + +#: src/nikonmn.cpp:191 +#, fuzzy +msgid "B & W" +msgstr "ÄŒB" + +#: src/nikonmn.cpp:193 +#, fuzzy +msgid "Trim" +msgstr "ÄŒas" + +#: src/nikonmn.cpp:194 +#, fuzzy +msgid "Small picture" +msgstr "Film" + +# exif-lightsource-1 +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "denné svetlo" + +#: src/nikonmn.cpp:196 +#, fuzzy +msgid "Red eye" +msgstr "ÄŒervené oÄi" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "typ" + +# exif-lightsource-1 +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "denné svetlo" + +#: src/nikonmn.cpp:199 +#, fuzzy +msgid "Warm tone" +msgstr "Farebný tón" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Farebný tón" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Tón obrázka" + +#: src/nikonmn.cpp:207 +#, fuzzy +msgid "Minimal" +msgstr "Manuál" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Poznámka výrobcu Nikon" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "ISO rýchlosÅ¥" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Zaostrovanie" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Nastavenie zaostrovania obrazu" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "zaostrenie" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Nastavenie blesku" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Nastavenie blesku" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Výber ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Výber ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +#, fuzzy +msgid "Data Dump" +msgstr "Výpis dát 1" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +#, fuzzy +msgid "Data dump" +msgstr "Výpis dát 1" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Úpravy obrázka" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Nastavenia úprav obrázka" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Pomocné Å¡oÅ¡ovky" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +#, fuzzy +msgid "Auxiliary lens (adapter)" +msgstr "Pomocné Å¡oÅ¡ovky" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "RuÄné nastavenie vzdialenosti zaostrenia" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "nastavenie digitálneho priblíženie" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "poloha automatického zaostrenia" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Neznáma znaÄka Nikon1MakerNote" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Spojité automatické zaostrenie" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Nepoužité" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "hádaÅ¥" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA základné" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "Normálny VGA" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA jemné" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA základné" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "Normálny SXGA" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA jemné" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Jas+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Jas-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Kontrast+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Kontrast-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Rýchlosvetlo" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Neznáma znaÄka Nikon2MakerNote" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Zariadenie blesku" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Zariadenie blesku" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Skreslenie vyváženia bielej" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Skreslenie vyváženia bielej" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB levels" +msgstr "Úroveň Äiernej" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "Posunutie programu" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "Posunutie programu" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Rozdiel expozície" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Rozdiel expozície" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Ukazovateľ na náhľad" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "Umiestnenie IFD obsahujúceho náhľad obrázka" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Komp. blesku" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Nastavenie kompenzácie blesku" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Okraj obrázka" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Okraj obrázka" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Kompenzácia expozície blesku" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Komp. viacnásobného záberu blesku" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Kompenzácia viacnásobného záberu blesku" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Komp. viacnásobného záberu" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "Použitá kompenzácia viacnásobného záberu AE" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Spracovanie obrazu" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Spracovanie obrazu" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "Orezanie vysoká rýchlosÅ¥" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "Orezanie vysoká rýchlosÅ¥" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Upozornenie expozície" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Upozornenie expozície" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "Nespracované info" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR info" +msgstr "Nespracované info" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "Orientácia obrázka" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "Orientácia obrázka" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Informácie o obrázku" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Informácie o obrázku" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "ÄŒas Minolta" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "ÄŒas Minolta" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO Info" +msgstr "Info o snímke" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO info" +msgstr "Nastavenia ISO" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette Control" +msgstr "Diaľkové ovládanie?" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette control" +msgstr "Diaľkové ovládanie?" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Kompenzácia tónu" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Kompenzácia tónu" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Použitý režim blesku" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Režim fotenia" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Režim fotenia" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "Uvoľnenie viacnásobného záberu" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "Uvoľnenie viacnásobného záberu" + +# TODO: check +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "F stops Å¡oÅ¡oviek" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "Kontrast" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "Kontrast" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Farebný tón" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Farebný tón" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Režim scény" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Zdroj svetla" + +# exif-lightsource +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Svetelný zdroj" + +#: src/nikonmn.cpp:583 +#, fuzzy +msgid "Shot info" +msgstr "Info o snímke" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Úpravy tónu" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Úpravy tónu" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Kompresia" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Kompresia" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "LinearizaÄná tabuľka" + +#: src/nikonmn.cpp:588 +#, fuzzy +msgid "Linearization table" +msgstr "LinearizaÄná tabuľka" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color Balance" +msgstr "Vyváženie farieb 1" + +#: src/nikonmn.cpp:589 +#, fuzzy +msgid "Color balance" +msgstr "Vyváženie farieb ÄŒervená" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Údaje Å¡oÅ¡oviek" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Nastavenia údajov Å¡oÅ¡oviek" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "PoÄet obrázkov" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw image center" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "VeľkosÅ¥ obrazového bodu snímaÄa" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "VeľkosÅ¥ obrazového bodu snímaÄa" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "Asistent AZ" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene assist" +msgstr "scenéria" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch History" +msgstr "História" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch history" +msgstr "História" + +#: src/nikonmn.cpp:597 +#, fuzzy +msgid "Serial NO" +msgstr "Sériové Äíslo" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "VeľkosÅ¥ obrazových údajov" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "VeľkosÅ¥ obrazových údajov" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "PoÄet obrázkov" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "PoÄet obrázkov" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted Image Count" +msgstr "ZmazaÅ¥ poÄet obrázkov" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted image count" +msgstr "ZmazaÅ¥ poÄet obrázkov" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "PoÄítadlo uzávierky" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "PoÄet snímok zachytených fotoaparátom" + +#: src/nikonmn.cpp:603 +#, fuzzy +msgid "Flash info" +msgstr "Info o blesku" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Optimalizácia obrázka" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Optimalizácia obrázka" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "Variácia programu" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Variácia programu" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "OdpoveÄ automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "OdpoveÄ automatického zaostrenia" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Vysoká redukcia Å¡umu ISO" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "fotoefekt" + +#: src/nikonmn.cpp:612 +#, fuzzy +msgid "AF info 2" +msgstr "Info o AZ" + +#: src/nikonmn.cpp:613 +#, fuzzy +msgid "File info" +msgstr "Názov súboru" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:614 +#, fuzzy +msgid "AF tune" +msgstr "Použitý bod automatického zaostrenia" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Dáta snímania" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Dáta snímania" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "Verzia snímania" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "Verzia snímania" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "Ofset snímania" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "Ofset snímania" + +#: src/nikonmn.cpp:621 +#, fuzzy +msgid "Scan IFD" +msgstr "UložiÅ¥ ID" + +#: src/nikonmn.cpp:622 +#, fuzzy +msgid "ICC profile" +msgstr "Farebný profil" + +#: src/nikonmn.cpp:623 +#, fuzzy +msgid "Capture output" +msgstr "Dáta snímania" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Neznáma znaÄka Nikon3MakerNote" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Nie" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Ãno" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration Reduction" +msgstr "Bez korekcie" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +#, fuzzy +msgid "Vibration reduction" +msgstr "Bez korekcie" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Neznáma znaÄka Canon Custom Function" + +#: src/nikonmn.cpp:667 +#, fuzzy +msgid "Default Settings" +msgstr "Nastavenia" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick Adjust" +msgstr "Úpravy tónu" + +#: src/nikonmn.cpp:669 +#, fuzzy +msgid "Full Control" +msgstr "Riadenie farieb" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +#, fuzzy +msgid "Name" +msgstr "Prezývka" + +#: src/nikonmn.cpp:701 +#, fuzzy +msgid "Base" +msgstr "Základné URL" + +#: src/nikonmn.cpp:702 +#, fuzzy +msgid "Adjust" +msgstr "DolaÄuje sa" + +#: src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick adjust" +msgstr "Úpravy tónu" + +#: src/nikonmn.cpp:709 +#, fuzzy +msgid "Filter effect" +msgstr "Farebný efekt" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "SýtosÅ¥" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "SýtosÅ¥" + +#: src/nikonmn.cpp:713 +#, fuzzy +msgid "Unknown Nikon Picture Control Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF Fine Tune Index" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:731 +#, fuzzy +msgid "AF fine tune index" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Použitý bod automatického zaostrenia" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:744 +#, fuzzy +msgid "Timezone" +msgstr "odtieň" + +# exif-lightsource-1 +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "denné svetlo" + +# exif-lightsource-1 +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "denné svetlo" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date Display Format" +msgstr "Formát súboru" + +#: src/nikonmn.cpp:746 +#, fuzzy +msgid "Date display format" +msgstr "Tvar dát" + +#: src/nikonmn.cpp:748 +#, fuzzy +msgid "Unknown Nikon World Time Tag" +msgstr "Neznáma znaÄka Nikon1MakerNote" + +#: src/nikonmn.cpp:759 +#, fuzzy +msgid "Hi 0.3" +msgstr "HV10" + +#: src/nikonmn.cpp:760 +#, fuzzy +msgid "Hi 0.5" +msgstr "HV10" + +#: src/nikonmn.cpp:761 +#, fuzzy +msgid "Hi 0.7" +msgstr "HV10" + +#: src/nikonmn.cpp:762 +#, fuzzy +msgid "Hi 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:763 +#, fuzzy +msgid "Hi 1.3" +msgstr "HV10" + +#: src/nikonmn.cpp:764 +#, fuzzy +msgid "Hi 1.5" +msgstr "HV10" + +#: src/nikonmn.cpp:765 +#, fuzzy +msgid "Hi 1.7" +msgstr "HV10" + +#: src/nikonmn.cpp:766 +#, fuzzy +msgid "Hi 2.0" +msgstr "HV10" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "HV10" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "HV10" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "HV10" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "" + +#: src/nikonmn.cpp:778 +#, fuzzy +msgid "Lo 1.0" +msgstr "HV10" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO Expansion" +msgstr "Výber ISO" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO expansion" +msgstr "Výber ISO" + +#: src/nikonmn.cpp:785 +#, fuzzy +msgid "ISO 2" +msgstr "Info o snímke" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO Expansion 2" +msgstr "Výber ISO" + +#: src/nikonmn.cpp:786 +#, fuzzy +msgid "ISO expansion 2" +msgstr "Výber ISO" + +#: src/nikonmn.cpp:788 +#, fuzzy +msgid "Unknown Nikon Iso Info Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "Jednoduchá oblasÅ¥" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "Dynamická oblasÅ¥" + +#: src/nikonmn.cpp:800 +#, fuzzy +msgid "Dynamic Area, Closest Subject" +msgstr "Najbližší subjekt" + +#: src/nikonmn.cpp:801 +#, fuzzy +msgid "Group Dynamic" +msgstr "Skupinové dynamické AZ" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Jednoduchá oblasÅ¥" + +#: src/nikonmn.cpp:803 +#, fuzzy +msgid "Dynamic Area (wide)" +msgstr "Dynamická oblasÅ¥ (Å¡iroká)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "v strede vľavo" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "v strede vpravo" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "OrezaÅ¥ vľavo" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "OrezaÅ¥ vpravo" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Režim AZ" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Použité body automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Použité body automatického zaostrenia" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Neznáma znaÄka Canon Custom Function" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "zapnutý" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "zapnutý" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "zapnutý" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "Nastavenie kontrastu" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "Nastavenie kontrastu" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase Detect AF" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase detect AF" +msgstr "Nepodarilo sa preÄítaÅ¥" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "Bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "bod automatického zaostrenia" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Šírka obrázka" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Šírka obrázka" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Výška obrázka" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "Dĺžka obrázka" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "poloha automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "poloha automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "poloha automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "poloha automatického zaostrenia" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Režim AZ" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Režim AZ" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Režim AZ" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "OrezaÅ¥ vpravo" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "Nastavenie kontrastu" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "Nastavenie kontrastu" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Neznáma znaÄka Canon Custom Function" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Poradové Äíslo" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Poradové Äíslo" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Tón obrázka" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Režim expozície" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "Viacnásobná expozícia" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Neznáma znaÄka Canon Custom Function" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Vnútorný" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +#, fuzzy +msgid "iTTL-BL" +msgstr "TTL" + +#: src/nikonmn.cpp:992 +#, fuzzy +msgid "iTTL" +msgstr "TTL" + +#: src/nikonmn.cpp:993 +#, fuzzy +msgid "Auto Aperture" +msgstr "Clona" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +#, fuzzy +msgid "Repeating Flash" +msgstr "RoÄník vydania" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Bez blesku" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "Äíslo F" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "Zdroj súboru" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "Zdroj súboru" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +#, fuzzy +msgid "0x0005" +msgstr "1000" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Priblíženie externého blesku" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Režim externého blesku" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "externý blesk" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "externý blesk" + +# FUZZY exif-focallength +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Súbor sa premenúva na" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "RuÄné riadenie blesku" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Farebný filter" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Farebný filter" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Hodnota uzávierky" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "Zariadenie blesku" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "Zariadenie blesku" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF Fine Tune Adj" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Použitý bod automatického zaostrenia" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "zapnutý" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "PoÄítadlo uzávierky" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Hodnota uzávierky" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Bez korekcie" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Bez korekcie" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "PoÄítadlo uzávierky" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Hodnota uzávierky" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration Reduction 2" +msgstr "Bez korekcie" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration reduction 2" +msgstr "Bez korekcie" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "Neznáma znaÄka Canon Picture Info" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG levels" +msgstr "Úroveň Äiernej" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Vyváženie farieb 1" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB levels" +msgstr "Úroveň Äiernej" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Vyváženie farieb 2" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Vyváženie farieb 2" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Vyváženie farieb 2" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG levels" +msgstr "Úroveň Äiernej" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Neznáma znaÄka Canon Panorama" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG Levels" +msgstr "WB_RGGBLevelsShade" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG levels" +msgstr "Úroveň Äiernej" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Neznáma znaÄka Canon Panorama" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Sériové Äíslo" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Sériové Äíslo fotoaparátu" + +# TODO: check +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "F stops Å¡oÅ¡oviek" + +# TODO: check +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "F stops Å¡oÅ¡oviek" + +# FUZZY exif-focallength +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min Focal Length" +msgstr "Minimálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +#, fuzzy +msgid "Min focal length" +msgstr "Minimálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max Focal Length" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +# FUZZY exif-focallength +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +#, fuzzy +msgid "Max focal length" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +#, fuzzy +msgid "Max Aperture At Min Focal" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +#, fuzzy +msgid "Max aperture at min focal" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +#, fuzzy +msgid "Max Aperture At Max Focal" +msgstr "maximálna clona pri maximálnom ohnisku" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +#, fuzzy +msgid "Max aperture at max focal" +msgstr "maximálna clona pri maximálnom ohnisku" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "Verzia ARM" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "Verzia ARM" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Neznáma znaÄka Nikon1MakerNote" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "Poloha prepínaÄa DEC" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "poloha prepínaÄa DEC" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Clona" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Clona" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective Max Aperture" +msgstr "Max. clona" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective max aperture" +msgstr "Max. clona" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Neznáma znaÄka Nikon1MakerNote" + +#: src/nikonmn.cpp:1399 +#, fuzzy +msgid "Max aperture at min focal length" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/nikonmn.cpp:1400 +#, fuzzy +msgid "Max aperture at max focal length" +msgstr "maximálna clona pri maximálnom ohnisku" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Neznáma znaÄka Nikon1MakerNote" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Najbližší subjekt" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "Skupinové dynamické AZ" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "žiadne" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "použité" + +# AF = automatické zaostrenie +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "body automatického zaostrenia" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "jediný záber" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Å tandardná kvalita (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Vysoká kvalita (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Super vysoká kvalita (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "Zapnuté (predvolené)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Å port" + +# exif-scenecapturetype-1 +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +#, fuzzy +msgid "Landscape+Portrait" +msgstr "krajinka" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +#, fuzzy +msgid "Self Portrait" +msgstr "Portrét" + +#: src/olympusmn.cpp:102 +#, fuzzy +msgid "2 in 1" +msgstr "zapnutý" + +#: src/olympusmn.cpp:105 +#, fuzzy +msgid "Night+Portrait" +msgstr "NoÄný portrét" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "jedlo" + +#: src/olympusmn.cpp:112 +#, fuzzy +msgid "Documents" +msgstr "ID dokumentu" + +#: src/olympusmn.cpp:114 +#, fuzzy +msgid "Shoot & Select" +msgstr "fotoefekt" + +#: src/olympusmn.cpp:115 +#, fuzzy +msgid "Beach & Snow" +msgstr "surfovanie & sneh" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "Samospúšť" + +#: src/olympusmn.cpp:117 +#, fuzzy +msgid "Candle" +msgstr "svetlo svieÄky" + +#: src/olympusmn.cpp:118 +#, fuzzy +msgid "Available Light" +msgstr "nedostupné" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +#, fuzzy +msgid "My Mode" +msgstr "Jednoduchý režim" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Zvieratko" + +#: src/olympusmn.cpp:122 +#, fuzzy +msgid "Underwater Wide1" +msgstr "pod vodou" + +#: src/olympusmn.cpp:123 +#, fuzzy +msgid "Underwater Macro" +msgstr "pod vodou" + +#: src/olympusmn.cpp:124 +#, fuzzy +msgid "Shoot & Select1" +msgstr "fotoefekt" + +#: src/olympusmn.cpp:125 +#, fuzzy +msgid "Shoot & Select2" +msgstr "fotoefekt" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "Stabilizácia obrazu" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "Auto" + +#: src/olympusmn.cpp:131 +#, fuzzy +msgid "Underwater Wide2" +msgstr "pod vodou" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:136 +#, fuzzy +msgid "Underwater Snapshot" +msgstr "pod vodou" + +#: src/olympusmn.cpp:137 +#, fuzzy +msgid "Shooting Guide" +msgstr "Režim fotenia" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Interný + externý" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Prekladaný" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progresívne" + +#: src/olympusmn.cpp:188 +#, fuzzy +msgid "Thumbnail Image" +msgstr "Náhľad" + +#: src/olympusmn.cpp:189 +#, fuzzy +msgid "Thumbnail image" +msgstr "Náhľad" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Å peciálny režim" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Režim fotenia" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "ÄŒiernobiely režim" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "ÄŒiernobiely režim" + +# exif-digitalzoomratio +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Pomer digitálneho priblíženia" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Diagonála ohniskovej roviny" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Diagonála ohniskovej roviny" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Parametre zakrivenia Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Parametre zakrivenia Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera Type" +msgstr "ZmaÄka fotoaparátu" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera type" +msgstr "ZmaÄka fotoaparátu" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "údaje vo formáte ASCII ako [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "ID fotoaparátu" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "ID údaje fotoaparátu" + +# exif-software +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "softvér" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +#, fuzzy +msgid "Preview Image" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +#, fuzzy +msgid "Preview image" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "PredzachytávaÅ¥ rámce" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "PredzachytávaÅ¥ rámce" + +#: src/olympusmn.cpp:240 +#, fuzzy +msgid "White Board" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:241 +#, fuzzy +msgid "White board" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "VB jedným dotykom" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Vyváženie bielej jedným dotykom" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +#, fuzzy +msgid "White Balance Bracket" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +#, fuzzy +msgid "White balance bracket" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmvér" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Výpis dát 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Rôzne nastavenia fotoaparátu 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Výpis dát 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Rôzne nastavenia fotoaparátu 2" + +# exif-shutterspeedvalue +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Hodnota rýchlosti uzávierky" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "Hodnota ISO rýchlosti" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Hodnota clony" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Hodnota jasu" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Viacnásobné snímky" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Hodnota kompenzácie expozície" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Teplota snímaÄa" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Teplota snímaÄa" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Teplota Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Teplota Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:294 +#, fuzzy +msgid "Light Condition" +msgstr "Silné nasýtenie" + +#: src/olympusmn.cpp:295 +#, fuzzy +msgid "Light condition" +msgstr "Silné nasýtenie" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "Rozsah zaostrenia" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "Rozsah zaostrenia" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Priblíženie" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "PoÄet krokov priblíženia" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Priblíženie makro" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "PoÄet krokov makro priblíženia" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Koeficient ostrosti" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Koeficient ostrosti" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Úroveň nabitia blesku" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Úroveň nabitia blesku" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Matica farieb" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Matica farieb" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Režim vyváženia bielej" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Vyváženie Äervenej" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Vyváženie Äervenej" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Vyváženie modrej" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Vyváženie modrej" + +#: src/olympusmn.cpp:342 +#, fuzzy +msgid "Color Matrix Number" +msgstr "Matica farieb 1" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Matica farieb 2" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Sériové Äíslo 1" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Sériové Äíslo 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Kompenzácia expozície blesku" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Odrazenie externého blesku" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Odrazenie externého blesku" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Priblíženie externého blesku" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Priblíženie externého blesku" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Režim externého blesku" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Režim externého blesku" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Riadenie farieb" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Riadenie farieb" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "Platné bity" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Platné bity" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Farebný filter" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Farebný filter" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Kompresný pomer" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Kompresný pomer" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Posunutie náhľadu" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "VeľkosÅ¥ náhľadu" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Režim CCD snímania" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "Režim CCD snímania" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "NekoneÄný krok Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "NekoneÄný krok Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Blízky krok Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Blízky krok Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Info o vybavení" + +#: src/olympusmn.cpp:448 +#, fuzzy +msgid "Camera equipment sub-IFD" +msgstr "Informácie o vybavení fotoaparátu" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "Nastavenie fotoaparátu (7D)" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Nespracovaný vývoj" + +#: src/olympusmn.cpp:454 +#, fuzzy +msgid "Raw development sub-IFD" +msgstr "Nespracovaný vývoj" + +#: src/olympusmn.cpp:456 +#, fuzzy +msgid "Raw Development 2" +msgstr "Nespracovaný vývoj" + +#: src/olympusmn.cpp:457 +#, fuzzy +msgid "Raw development 2 sub-IFD" +msgstr "Nespracovaný vývoj" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr "Spracovanie obrazu" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Info o zaostrení" + +#: src/olympusmn.cpp:463 +#, fuzzy +msgid "Focus sub-IFD" +msgstr "Info o zaostrení" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Nespracované info" + +#: src/olympusmn.cpp:466 +#, fuzzy +msgid "Raw sub-IFD" +msgstr "Sub-IFD" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Neznáma znaÄka OlympusMakerNote" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Posunutie programu" + +#: src/olympusmn.cpp:491 +#, fuzzy +msgid "Center-weighted average" +msgstr "Stredovo vážený priemer" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "" + +# exif-meteringmode-5 +#: src/olympusmn.cpp:494 +#, fuzzy +msgid "Pattern+AF" +msgstr "vzorka" + +#: src/olympusmn.cpp:495 +#, fuzzy +msgid "Spot+Highlight control" +msgstr "Riadenie farieb" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Riadenie farieb" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "Jednotlivý" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +#, fuzzy +msgid "Multi AF" +msgstr "Viacbodový" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:518 +#, fuzzy +msgid "AF Used" +msgstr "Použitý bod automatického zaostrenia" + +#: src/olympusmn.cpp:523 +#, fuzzy +msgid "Not Ready" +msgstr "Nepoužité" + +#: src/olympusmn.cpp:524 +#, fuzzy +msgid "Ready" +msgstr "ÄŒervené oÄi" + +#: src/olympusmn.cpp:531 +#, fuzzy +msgid "Fill-in" +msgstr "Názov súboru" + +#: src/olympusmn.cpp:533 +#, fuzzy +msgid "Slow-sync" +msgstr "Pomalá synchronizácia" + +# exif-lightsource-2 +#: src/olympusmn.cpp:534 +#, fuzzy +msgid "Forced On" +msgstr "fluorescencia" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +# exif-lightsource-9 +#: src/olympusmn.cpp:567 +#, fuzzy +msgid "7500K (Fine Weather with Shade)" +msgstr "pekné poÄasie" + +#: src/olympusmn.cpp:568 +#, fuzzy +msgid "6000K (Cloudy)" +msgstr "Auto (oblaÄno)" + +# exif-lightsource-9 +#: src/olympusmn.cpp:569 +#, fuzzy +msgid "5300K (Fine Weather)" +msgstr "pekné poÄasie" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Clona" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Auto (blesk)" + +# exif-lightsource-12 +#: src/olympusmn.cpp:574 +#, fuzzy +msgid "6600K (Daylight fluorescent)" +msgstr "denné svetlo, fluorescenÄné" + +#: src/olympusmn.cpp:575 +#, fuzzy +msgid "4500K (Neutral white fluorescent)" +msgstr "Auto (biely deň, fluorescenÄné)" + +#: src/olympusmn.cpp:576 +#, fuzzy +msgid "4000K (Cool white fluorescent)" +msgstr "chladné biele fluorescenÄné (W 3900 - 4500K)" + +# exif-lightsource-15 +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "biela, fluorescenÄná" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "VB jedným dotykom" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "VB jedným dotykom" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "VB jedným dotykom" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "VB jedným dotykom" + +#: src/olympusmn.cpp:584 +#, fuzzy +msgid "Custom WB 1" +msgstr "Vlastný 1" + +#: src/olympusmn.cpp:585 +#, fuzzy +msgid "Custom WB 2" +msgstr "Vlastný 2" + +#: src/olympusmn.cpp:586 +#, fuzzy +msgid "Custom WB 3" +msgstr "vlastné 3" + +#: src/olympusmn.cpp:587 +#, fuzzy +msgid "Custom WB 4" +msgstr "Vlastný 1" + +#: src/olympusmn.cpp:593 +#, fuzzy +msgid "CM1 (Red Enhance)" +msgstr "Vyváženie modrej" + +#: src/olympusmn.cpp:594 +#, fuzzy +msgid "CM2 (Green Enhance)" +msgstr "Vyváženie modrej" + +#: src/olympusmn.cpp:595 +#, fuzzy +msgid "CM3 (Blue Enhance)" +msgstr "Vyváženie modrej" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise Filter" +msgstr "Filter" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Filter" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +#, fuzzy +msgid "Muted" +msgstr "použité" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +#, fuzzy +msgid "Monotone" +msgstr "Farebný tón" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "zapnutý, režim 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "zapnutý, režim 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "zapnutý, režim 1" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera Settings Version" +msgstr "Informácie o nastaveniach fotoaparátu" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera settings version" +msgstr "Informácie o nastaveniach fotoaparátu" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "PreviewImage Valid" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "Preview image valid" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "PreviewImage Start" +msgstr "Dáta náhľadu" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "Preview image start" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "PreviewImage Length" +msgstr "Dĺžka obrázka" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "Preview image length" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/olympusmn.cpp:666 +#, fuzzy +msgid "Auto exposure lock" +msgstr "Automatická expozícia" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "ÄŒas expozície" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "ÄŒas expozície" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "režim zaostrenia" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Vlastné spracovanie" + +#: src/olympusmn.cpp:672 +#, fuzzy +msgid "AF Search" +msgstr "Moje vyhľadávania" + +#: src/olympusmn.cpp:672 +#, fuzzy +msgid "AF search" +msgstr "Moje vyhľadávania" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF Areas" +msgstr "rozsah zaostrenia" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF areas" +msgstr "Rozsah zaostrenia" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Nebol vybraný bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF Fine Tune Adjust" +msgstr "Použitý bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:675 +#, fuzzy +msgid "AF fine tune adjust" +msgstr "Použitý bod automatického zaostrenia" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "Diaľkové ovládanie?" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "Diaľkové ovládanie?" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Režim blesku" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Režim blesku" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "Aktivita blesku" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "Aktivita blesku" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "Sila blesku" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "RuÄné riadenie blesku" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +#, fuzzy +msgid "White Balance 2" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +#, fuzzy +msgid "White balance 2" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White Balance Temperature" +msgstr "Tabuľka vyváženia bielej" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White balance temperature" +msgstr "Tabuľka vyváženia bielej" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom Saturation" +msgstr "Modrá sýtosÅ¥" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom saturation" +msgstr "Slabé nasýtenie" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified Saturation" +msgstr "ÄŒervená sýtosÅ¥" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified saturation" +msgstr "ÄŒervená sýtosÅ¥" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +#, fuzzy +msgid "Contrast Setting" +msgstr "Nastavenie kontrastu" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +#, fuzzy +msgid "Sharpness Setting" +msgstr "Nastavenie zaostrenia" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion Correction" +msgstr "Bez korekcie" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion correction" +msgstr "Bez korekcie" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +#, fuzzy +msgid "Shading Compensation" +msgstr "Kompenzácia tónu" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +#, fuzzy +msgid "Shading compensation" +msgstr "Kompenzácia tónu" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression Factor" +msgstr "Kompresný pomer" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression factor" +msgstr "Kompresný pomer" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +#, fuzzy +msgid "Gradation" +msgstr "Trvanie" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:697 +#, fuzzy +msgid "Picture Mode Saturation" +msgstr "Nastavenie režimu obrázka" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +#, fuzzy +msgid "Picture mode saturation" +msgstr "Nastavenie režimu obrázka" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture Mode Hue" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture mode hue" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:699 +#, fuzzy +msgid "Picture Mode Contrast" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +#, fuzzy +msgid "Picture mode contrast" +msgstr "Nastavenie režimu obrázka" + +#: src/olympusmn.cpp:700 +#, fuzzy +msgid "Picture Mode Sharpness" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +#, fuzzy +msgid "Picture mode sharpness" +msgstr "Nastavenie režimu obrázka" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture Mode BW Filter" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture mode BW filter" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture Mode Tone" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture mode tone" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise filter" +msgstr "Farebný filter" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Filter" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Farebný filter" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Digitálny filter" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Digitálny filter" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama Mode" +msgstr "panoráma" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama mode" +msgstr "Rámec panorámy" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image Quality 2" +msgstr "Kvalita obrázka" + +#: src/olympusmn.cpp:708 +#, fuzzy +msgid "Image quality 2" +msgstr "Kvalita obrázka" + +# exif-compression-1 +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer Pressure" +msgstr "nekomprimovaný" + +# exif-compression-1 +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer pressure" +msgstr "nekomprimovaný" + +# exif-compression-1 +#: src/olympusmn.cpp:711 +#, fuzzy +msgid "Manometer Reading" +msgstr "nekomprimovaný" + +# exif-compression-1 +#: src/olympusmn.cpp:711 +#, fuzzy +msgid "Manometer reading" +msgstr "nekomprimovaný" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB Detect" +msgstr "Režim scény" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB detect" +msgstr "Režim scény" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "Neznáma znaÄka OlympusCs" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "Info o vybavení" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "Info o vybavení" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Sériové Äíslo" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +#, fuzzy +msgid "Lens Serial Number" +msgstr "Sériové Äíslo" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +#, fuzzy +msgid "Lens serial number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens Firmware Version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens firmware version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max Aperture At Current Focal" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max aperture at current focal" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens Properties" +msgstr "Vlastnosti digiKam" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens properties" +msgstr "Teplota Å¡oÅ¡oviek" + +#: src/olympusmn.cpp:761 +#, fuzzy +msgid "Extender" +msgstr "externý" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender Serial Number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender serial number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender Model" +msgstr "Režim scény" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender model" +msgstr "Režim scény" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender Firmware Version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender firmwareversion" +msgstr "Verzia formvéru" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion Lens" +msgstr "Verzie" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion lens" +msgstr "Hodnota jasu" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +#, fuzzy +msgid "Flash Model" +msgstr "Režim blesku" + +#: src/olympusmn.cpp:767 +#, fuzzy +msgid "Flash model" +msgstr "Režim blesku" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "Verzia firmvéru" + +#: src/olympusmn.cpp:769 +#, fuzzy +msgid "FlashSerialNumber" +msgstr "SériovéČíslo" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Neznáma znaÄka OlympusEq" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +#, fuzzy +msgid "High Speed" +msgstr "Orezanie vysoká rýchlosÅ¥" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +#, fuzzy +msgid "High Function" +msgstr "Silné nasýtenie" + +#: src/olympusmn.cpp:790 +#, fuzzy +msgid "Advanced High Speed" +msgstr "Orezanie vysoká rýchlosÅ¥" + +# exif-transferfunction +#: src/olympusmn.cpp:791 +#, fuzzy +msgid "Advanced High Function" +msgstr "prenosová funkcia" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Originál" + +# exif-scenecapturetype-1 +#: src/olympusmn.cpp:797 +#, fuzzy +msgid "Edited (Landscape)" +msgstr "krajinka" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +#, fuzzy +msgid "Edited (Portrait)" +msgstr "NoÄný portrét" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "Farebný tón" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:805 +#, fuzzy +msgid "WB Gray Point" +msgstr "Bod automatického zaostrenia" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "Nespracovaný vývoj" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "Informácie o nespracovanom vývoji" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Hodnota skreslenia expozície" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +#, fuzzy +msgid "Exposure bias value" +msgstr "Hodnota skreslenia expozície" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White Balance Value" +msgstr "Tabuľka vyváženia bielej" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White balance value" +msgstr "Tabuľka vyváženia bielej" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "Úpravy tónu" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "Úpravy tónu" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "Bod automatického zaostrenia" + +# AF = automatické zaostrenie +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray point" +msgstr "bod automatického zaostrenia" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation Emphasis" +msgstr "Nastavenie sýtosti" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation emphasis" +msgstr "Nastavenie sýtosti" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Moje farby" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory color emphasis" +msgstr "Moje farby" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast Value" +msgstr "Kontrast" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast value" +msgstr "Kontrast" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness Value" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness value" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +#, fuzzy +msgid "Engine" +msgstr "VeÄer" + +#: src/olympusmn.cpp:827 +#, fuzzy +msgid "Edit status" +msgstr "UpraviÅ¥ stav" + +#: src/olympusmn.cpp:828 +#, fuzzy +msgid "Settings" +msgstr "Nastavenie AE" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Neznáma znaÄka OlympusRd" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Nespracovaný vývoj" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "Informácie o nespracovanom vývoji" + +#: src/olympusmn.cpp:889 +#, fuzzy +msgid "White balance fine adjustment" +msgstr "Nastavenie vyváženia bielej" + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "SýtosÅ¥" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "Kontrast" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW Filter" +msgstr "Filter" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW filter" +msgstr "Filter" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Režim obrázka" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto Gradation" +msgstr "Trvanie zvuku" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto gradation" +msgstr "Trvanie zvuku" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "PM Noise Filter" +msgstr "Filter" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "Nastavenie režimu obrázka" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Neznáma znaÄka OlympusRd2" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Zapnuté (predvolené)" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Zapnuté (predvolené)" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Spracovanie obrazu" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Informácie o spracovaní obrazu" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB Levels 3000K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB levels 3000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB Levels 3300K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB levels 3300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB Levels 3600K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB levels 3600K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB Levels 3900K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB levels 3900K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB Levels 4000K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB levels 4000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB Levels 4300K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB levels 4300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB Levels 4500K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB levels 4500K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB Levels 4800K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB levels 4800K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB Levels 5300K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB levels 5300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB Levels 6000K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB levels 6000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB Levels 6600K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB levels 6600K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB Levels 7500K" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB levels 7500K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB Levels CWB1" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB levels CWB1" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB Levels CWB3" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB levels CWB3" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB Levels CWB4" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB levels CWB4" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G Level 3000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G level 3000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G Level 3300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G level 3300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G Level 3600K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G level 3600K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G Level 3900K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G level 3900K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G Level 4000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G level 4000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G Level 4300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G level 4300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G Level 4500K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G level 4500K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G Level 4800K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G level 4800K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G Level 5300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G level 5300K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G Level 6000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G level 6000K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G Level 6600K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G level 6600K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G Level 7500K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G level 7500K" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer Values" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer values" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Farebný filter" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Hodnota jasu" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Hodnota jasu" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +#, fuzzy +msgid "Black Level" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:975 +#, fuzzy +msgid "Gain Base" +msgstr "Základné URL" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +#, fuzzy +msgid "Valid Bits" +msgstr "Platné bity" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "OrezaÅ¥ vľavo" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +#, fuzzy +msgid "Crop left" +msgstr "OrezaÅ¥ vľavo" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "OrezaÅ¥ vrch" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +#, fuzzy +msgid "Crop top" +msgstr "OrezaÅ¥ vrch" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "OrezaÅ¥ šírku" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +#, fuzzy +msgid "Crop width" +msgstr "OrezaÅ¥ šírku" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "OrezaÅ¥ výšku" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +#, fuzzy +msgid "Crop height" +msgstr "OrezaÅ¥ výšku" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Režim expozície" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Viacnásobná expozícia" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "" + +#: src/olympusmn.cpp:985 +#, fuzzy +msgid "Aspect ratio" +msgstr "Trvanie zvuku" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Názov objektu" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Názov objektu" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +#, fuzzy +msgid "Face Detect" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +#, fuzzy +msgid "Face detect" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Neznáma znaÄka OlympusIp" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus Info Version" +msgstr "Informácie o zaostrení" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus info version" +msgstr "Informácie o zaostrení" + +#: src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto Focus" +msgstr "Automatické zaostrenie" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene Detect" +msgstr "Režim scény" + +#: src/olympusmn.cpp:1007 +#, fuzzy +msgid "Scene detect" +msgstr "Režim scény" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene Area" +msgstr "scenéria" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene area" +msgstr "Jednoduchá oblasÅ¥" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene Detect Data" +msgstr "Režim scény" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene detect data" +msgstr "Režim scény" + +#: src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom Step Count" +msgstr "PoÄet krokov priblíženia" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus Step Count" +msgstr "PoÄet krokov makro priblíženia" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus step count" +msgstr "PoÄet krokov makro priblíženia" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "Nastavenia zaostrenia" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "Nastavenia zaostrenia" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "Typ zaostrenia" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "VzdialenosÅ¥ zaostrenia" + +#: src/olympusmn.cpp:1016 +#, fuzzy +msgid "External Flash" +msgstr "externý blesk" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Režim externého blesku" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Odrazenie externého blesku" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "RuÄné uvoľnenie" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "RuÄné uvoľnenie" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Neznáma znaÄka OlympusFi" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "Neznáma znaÄka OlympusFi" + +# exif-lightsource-9 +#: src/olympusmn.cpp:1049 +#, fuzzy +msgid "Fine Weather" +msgstr "pekné poÄasie" + +# exif-lightsource-3 +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "volfram (inkadescentné svetlo)" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "VeÄer" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "denné svetlo fluorescenÄné (D 5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +#, fuzzy +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "biely deň, fluorescenÄné (N 4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +#, fuzzy +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "chladné biele fluorescenÄné (W 3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +#, fuzzy +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "biele fluorescenÄné (WW 3200 - 3700K)" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Vyváženie bielej jedným dotykom" + +#: src/olympusmn.cpp:1057 +#, fuzzy +msgid "Custom 1-4" +msgstr "Vlastný 1" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "Informácie o zaostrení" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "Nespracované informácie" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB Levels Used" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB levels used" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB Levels Auto" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB levels auto" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB Levels Shade" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB levels shade" +msgstr "WB_RGGBLevelsShade" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB Levels Cloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB levels cloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB Levels Fine Weather" +msgstr "WB_RGGBLevelsFlash" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB levels fine weather" +msgstr "WB_RGGBLevelsFlash" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB Levels Tungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB levels tungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB Levels Evening Sunlight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1068 +#, fuzzy +msgid "WB_RB levels evening sunlight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB Levels Daylight Fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1069 +#, fuzzy +msgid "WB_RB levels daylight fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB Levels Day White Fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1070 +#, fuzzy +msgid "WB_RB levels day white fluor" +msgstr "WB_RGGBLevelsDaylight" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB Levels Cool White Fluor" +msgstr "WB_RGGBLevelsCloudy" + +#: src/olympusmn.cpp:1071 +#, fuzzy +msgid "WB_RB levels cool white fluor" +msgstr "WB_RGGBLevelsCloudy" + +# exif-lightsource-15 +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "WB_RGGBLevelsFluorescentD" + +# exif-lightsource-15 +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "WB_RGGBLevelsFluorescentD" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color Matrix2" +msgstr "Matica farieb 2" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color matrix 2" +msgstr "Matica farieb 2" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black Level 2" +msgstr "Úroveň Äiernej" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black level 2" +msgstr "Úroveň Äiernej" + +# exif-ycbcrcoefficients +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "koeficienty YCbCr" + +# exif-ycbcrcoefficients +#: src/olympusmn.cpp:1077 +#, fuzzy +msgid "YCbCr coefficients" +msgstr "koeficienty YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "Nastavenie sýtosti" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "Nastavenia" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "Nastavenie AE" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM Exposure Compensation" +msgstr "Kompenzácia expozície" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM exposure compensation" +msgstr "Kompenzácia expozície" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Vyváženie bielej" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "Viacnásobné snímky so zmenou vyváženia bielej" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "SýtosÅ¥" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "SýtosÅ¥" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM Hue" +msgstr "Odtieň" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM hue" +msgstr "Odtieň" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "Kontrast" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "Kontrast" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "OstrosÅ¥" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "Neznáma znaÄka OlympusRd" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Vybrané používateľom" + +#: src/olympusmn.cpp:1122 +#, fuzzy +msgid "Auto-Override" +msgstr "PrepísaÅ¥" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "rýchly" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 Kelvinov" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 Kelvinov" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 Kelvinov" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 Kelvinov" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 Kelvinov" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 Kelvinov" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 Kelvinov" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "jedným dotykom" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "JedineÄný ID obrázka" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "Moje vyhľadávania" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Bodové zaostrenie" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "OblasÅ¥ vpravo" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "panoráma" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "režim zaostrenia" + +# exif-flashenergy +#: src/olympusmn.cpp:1510 +#, fuzzy +msgid "Fish Eye" +msgstr "energia blesku" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +#, fuzzy +msgid "Dramatic Tone" +msgstr "Informácie o snímke" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Bodové zaostrenie" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Max. clona" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Výber" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "režim zaostrenia" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:1532 +#, fuzzy +msgid "Diorama II" +msgstr "panoráma" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +#, fuzzy +msgid "Vintage II" +msgstr "Manažér" + +#: src/olympusmn.cpp:1535 +#, fuzzy +msgid "Vintage III" +msgstr "Manažér" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Prirodzená farba" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "OblasÅ¥ vľavo" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +#, fuzzy +msgid "Center (horizontal)" +msgstr "Stredná oblasÅ¥ (vodorovná orientácia)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +#, fuzzy +msgid "Center (vertical)" +msgstr "Stredná oblasÅ¥ (zvislá orientácia)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Stredná oblasÅ¥ (vodorovná orientácia)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "Horizontálne (normálne)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Horizontálne (normálne)" + +#: src/olympusmn.cpp:1630 +#, fuzzy +msgid "Bottom-left (horizontal)" +msgstr "vľavo dolu" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "vľavo dolu" + +#: src/olympusmn.cpp:1632 +#, fuzzy +msgid "Bottom-right (horizontal)" +msgstr "vpravo dolu" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "v strede" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "vpravo hore" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +#, fuzzy +msgid "Mid-right (vertical)" +msgstr "v strede vpravo" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +#, fuzzy +msgid "Bottom-left (vertical)" +msgstr "vľavo dolu" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "vľavo dolu" + +#: src/olympusmn.cpp:1643 +#, fuzzy +msgid "Bottom-right (vertical)" +msgstr "vpravo dolu" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Jednoduchá oblasÅ¥" + +#: src/olympusmn.cpp:1681 +#, fuzzy +msgid "All Target" +msgstr "cieľ" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Nastavenie dynamického rozsahu" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "veľmi vysoký" + +#: src/panasonicmn.cpp:60 +#, fuzzy +msgid "Motion Picture" +msgstr "Režim obrázka" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Film" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogén" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "auto, stlaÄenie tlaÄidla zaostrenia" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "auto, spojitý" + +# AF = automatické zaostrenie +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AZ-S" + +# AF = automatické zaostrenie +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AZ-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "posúvanie" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Tele-makro" + +# exif-subjectdistancerange-1 +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "makro" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "scenéria" + +# exif-exposureprogram-4 +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "priorita rýchlosti uzávierky" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Zapisuje sa" + +#: src/panasonicmn.cpp:123 +#, fuzzy +msgid "Simple" +msgstr "Jednotlivý" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Farebný efekt" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "noÄná scéna" + +#: src/panasonicmn.cpp:132 +#, fuzzy +msgid "Baby" +msgstr "Autor" + +# exif-sharpness-1 +#: src/panasonicmn.cpp:133 +#, fuzzy +msgid "Soft skin" +msgstr "mäkký" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "svetlo svieÄky" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "Å tandardné svetlo A" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "ISO citlivosÅ¥" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "panoráma" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +#, fuzzy +msgid "Intelligent ISO" +msgstr "Dĺžka intervalu" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Vyváženie bielej" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "Nastavenie spojité zaostrenie" + +#: src/panasonicmn.cpp:146 +#, fuzzy +msgid "Intelligent auto" +msgstr "Dĺžka intervalu" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Viacbodový" + +#: src/panasonicmn.cpp:148 +#, fuzzy +msgid "Transform" +msgstr "prenosový rozsah" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Skreslenie blesku" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Názov súboru" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Moje farby" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Rámec panorámy" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "svetlo svieÄky" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Diaľkové ovládanie?" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Digitálny filter" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Portrét" + +# exif-sharpness-1 +#: src/panasonicmn.cpp:163 +#, fuzzy +msgid "Silky Skin" +msgstr "mäkký" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "VzÅ¥ah" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "noÄná scéna" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "hodnota" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "GPS Informácie o oblasti" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "NoÄný portrét" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Teplé" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Chladné" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "Nízka/vysoká kvalita" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "nekoneÄno" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "stredný 1" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "stredný 1" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "vysoká" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "" + +#: src/panasonicmn.cpp:231 +#, fuzzy +msgid "Highest (+2)" +msgstr "vysoká" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "OtoÄiÅ¥ o 90°" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Nepoužité" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Nepoužité" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +#, fuzzy +msgid "Home" +msgstr "Rím" + +#: src/panasonicmn.cpp:294 +#, fuzzy +msgid "Standard (color)" +msgstr "Å tandardný tvar" + +#: src/panasonicmn.cpp:295 +#, fuzzy +msgid "Dynamic (color)" +msgstr "Dynamická oblasÅ¥" + +#: src/panasonicmn.cpp:296 +#, fuzzy +msgid "Nature (color)" +msgstr "Prirodzená farba" + +#: src/panasonicmn.cpp:297 +#, fuzzy +msgid "Smooth (color)" +msgstr "Hladký" + +#: src/panasonicmn.cpp:298 +#, fuzzy +msgid "Standard (B&W)" +msgstr "Å tandardný (100%)" + +#: src/panasonicmn.cpp:299 +#, fuzzy +msgid "Dynamic (B&W)" +msgstr "Dynamická oblasÅ¥" + +#: src/panasonicmn.cpp:300 +#, fuzzy +msgid "Smooth (B&W)" +msgstr "Hladký" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "Viacnásobné snímky" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "externý" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Auto" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Å tandardný tvar" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "OtoÄiÅ¥ o 90°" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "OtoÄiÅ¥ o 90°" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "zľava doprava" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "sprava doľava" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "zhora dolu" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "zdola hore" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "ÄŒas odoslania" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "Informácie o snímke" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Výber" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Audio" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Nastavenie vyváženia bielej" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Skreslenie blesku" + +# exif-exifversion +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Verzia EXIF" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Farebný efekt" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Farebný efekt" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Režim dávky" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Režim dávky" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Redukcia Å¡umu" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Samospúšť" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Asistent AZ" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "Autor" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical Zoom Mode" +msgstr "Å peciálny režim" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical zoom mode" +msgstr "Režim filmu" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "Cestovanie" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "Cestovanie" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World Time Location" +msgstr "Miesto záberu" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World time location" +msgstr "Miesto záberu" + +#: src/panasonicmn.cpp:475 +#, fuzzy +msgid "Text Stamp 1" +msgstr "ÄŒas odoslania" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Program" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Typ scény" + +#: src/panasonicmn.cpp:478 +#, fuzzy +msgid "Text Stamp 2" +msgstr "ÄŒas odoslania" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "Farebná teplota" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Farebná teplota" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Viacnásobné snímky" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "Úpravy tónu" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "Úpravy tónu" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Info o blesku" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Redukciu Å¡umu dlhej expozície" + +# AF = automatické zaostrenie +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "poloha automatického zaostrenia" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Typ Å¡oÅ¡pviek" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "typ Å¡oÅ¡oviek" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Sériové Äíslo" + +#: src/panasonicmn.cpp:497 +#, fuzzy +msgid "Transform 1" +msgstr "prenosový rozsah" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "Dĺžka intervalu" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Verzia firmvéru" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Informácie o redukcii chvenia" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Upozornenie zaostrenia" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Meranie blesku" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Názov" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Autor" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Umiestnenie" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Å tát" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +#, fuzzy +msgid "Intelligent resolution" +msgstr "Dĺžka intervalu" + +# exif-shutterspeedvalue +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "RýchlosÅ¥ uzávierky" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Vývojový dynamický rozsah" + +#: src/panasonicmn.cpp:512 +#, fuzzy +msgid "Clear Retouch" +msgstr "Redukcia Å¡umu" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Mesto" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Režim obrázka" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Orientácia obrázka" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "OrezaÅ¥ vľavo" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Smer panorámy" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Posunitie záznamu" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Interný + externý" + +# exif-shutterspeedvalue +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "rýchlosÅ¥ uzávierky" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Prebieha meranie" + +#: src/panasonicmn.cpp:530 +#, fuzzy +msgid "TouchAE" +msgstr "VB jedným dotykom" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "Poznámky zhotoviteľa - verzia" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "Poznámky zhotoviteľa - verzia" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB Red Level" +msgstr "WB_RGGBLevelsShade" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB red level" +msgstr "Úroveň Äiernej" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB Green Level" +msgstr "Úroveň Äiernej" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB green level" +msgstr "Úroveň Äiernej" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB Blue Level" +msgstr "WB_RGGBLevelsShade" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB blue level" +msgstr "Úroveň Äiernej" + +#: src/panasonicmn.cpp:539 +#, fuzzy +msgid "Text Stamp 3" +msgstr "ÄŒas odoslania" + +#: src/panasonicmn.cpp:540 +#, fuzzy +msgid "Text Stamp 4" +msgstr "ÄŒas odoslania" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "Autor" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +#, fuzzy +msgid "Transform 2" +msgstr "prenosový rozsah" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Neznáma znaÄka PanasonicMakerNote" + +#: src/panasonicmn.cpp:562 +#, fuzzy +msgid "Spot mode on or 9 area" +msgstr "Bodový režim" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "Bodové zaostrenie" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +#, fuzzy +msgid "1-area (high speed)" +msgstr "Orezanie vysoká rýchlosÅ¥" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Bodové zaostrenie" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "nenastavené\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "Verzia firmvéru" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "OrezaÅ¥ šírku" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "OrezaÅ¥ šírku" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "ÄŒistenie snímaÄa" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "ÄŒistenie snímaÄa" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor Top Border" +msgstr "Teplota snímaÄa" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor top border" +msgstr "Teplota snímaÄa" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor Left Border" +msgstr "Teplota snímaÄa" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor left border" +msgstr "Teplota snímaÄa" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Výrobca" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Model" + +#: src/panasonicmn.cpp:740 +#, fuzzy +msgid "The model name or model number of the equipment" +msgstr "Názov scény" + +# exif-stripoffsets +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "umiestnenie obrazových dát" + +# exif-stripoffsets +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "umiestnenie obrazových dát" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientácia" + +# exif-rowsperstrip +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "Rows Per Strip" +msgstr "riadkov na prúžok" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "The number of rows per strip" +msgstr "PoÄet úderov." + +# exif-stripbytecounts +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "bajtov na komprimovaný prúžok" + +# exif-stripbytecounts +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "bajtov na komprimovaný prúžok" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "umiestnenie IFD" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "HlaviÄka, ofset" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +#, fuzzy +msgid "GPS Info IFD Pointer" +msgstr "IFD ukazovateľ interoperability" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "Neznáma znaÄka PanasonicMakerNote" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "NoÄná scéna" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "dobrý" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Lepší" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Najlepší" + +#: src/pentaxmn.cpp:204 +#, fuzzy +msgid "Premium" +msgstr "Stredný" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 alebo 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 alebo 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 alebo 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "auto, blesk sa nespustil" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Blesk sa nespustil" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "automaticky, blesk sa nespustil, korekcia Äervených oÄí" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "auto, blesk sa spustil" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "Spustil sa" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "auto, blesk sa spustil, korekcia Äervených oÄí" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Zap., korekcia Äervených oÄí" + +#: src/pentaxmn.cpp:256 +#, fuzzy +msgid "On, Wireless (Master)" +msgstr "zapnuté, bezdrôtovo" + +#: src/pentaxmn.cpp:257 +#, fuzzy +msgid "On, Wireless (Control)" +msgstr "zapnuté, bezdrôtovo" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "zapnutý, mäkký" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "zapnuté, pomalá synchr." + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "zapnutý, pomalá synch., korekcia Äervených oÄí" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "zapnuté, synchr. koncovej záclony" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "posúvaÅ¥ zaostrenie" + +# AF = automatické zaostrenie +#: src/pentaxmn.cpp:275 +#, fuzzy +msgid "AF-A" +msgstr "AZ-S" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Nastavenie kontrastu" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "Nastavenie kontrastu" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "pevný stred" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "automatické zaostrenie" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Výber" + +#: src/pentaxmn.cpp:305 +#, fuzzy +msgid "Fixed Center or multiple" +msgstr "pevný stred" + +#: src/pentaxmn.cpp:307 +#, fuzzy +msgid "Top-center" +msgstr "v strede" + +#: src/pentaxmn.cpp:313 +#, fuzzy +msgid "Bottom-center" +msgstr "vľavo dolu" + +# exif-meteringmode-4 +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Viacbodový" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Stredovo vážený" + +# exif-lightsource-12 +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "denné svetlo, fluorescenÄné" + +# exif-lightsource-13 +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "biely deň, fluorescenÄné" + +# exif-lightsource-15 +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "biela, fluorescenÄná" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Farebná teplota" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Vybrané používateľom" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto (denné svetlo)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Auto (tieň)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (blesk)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (volfrám)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (biely deň, fluorescenÄné)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (biely deň, fluorescenÄné)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (biela, fluorescenÄná)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (oblaÄno)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Å tandard (ohňostroj?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "stredne nízky" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "stredne vysoký" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "stredne mäkký" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "stredne tvrdý" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "veľmi mäkký" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "veľmi tvrdý" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Domovské mesto" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Ukotvenie" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Mexico City" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "New York" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracus" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Londýn" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paríž" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Miláno" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rím" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlín" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istambul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Káhira" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jeruzalem" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moskva" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Teherán" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubaj" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "KaráÄí" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kábul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Male" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Káthmandu" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Yangon" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientiane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapur" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Pénh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Jakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Peking" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Å anghaj" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manila" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Tchaj-pej" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Soul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaide" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokio" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Noumea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Algiers" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsinki" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Athény" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Å tokholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lisabon" + +#: src/pentaxmn.cpp:560 +#, fuzzy +msgid "Copenhagen" +msgstr "Pokrytie" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Nespracovaný" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "veľkosÅ¥" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Orezaný" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Digitálny filter" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "Syntéza rámcov?" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Vysokorýchlostný program" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Program DOF" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "Program MTF" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "NoÄný portrét" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Bez blesku" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "surfovanie & sneh" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Deti" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "Výška obrázka" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "NoÄný záber" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "hodnota" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "NoÄná scéna" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "super makro" + +# exif-lightsource-2 +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "fluorescencia" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (Å¡tandard)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (portrét)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (krajinka)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (makro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (Å¡port)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Zelený režim" + +# exif-exposureprogram-4 +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Priorita rýchlosti uzávierky" + +# exif-exposureprogram-3 +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Priorita clony" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Žiarovka" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Posunutie programu" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Posunutie programu" + +# FUZZY exif-exposureprogram-3 +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Priorita clony (vyp. - auto - clona)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "RuÄné nastavenie (vyp. - auto - clona)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Žiarovka (vyp. - auto - clona)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Priorita uzávierky" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Priorita uzávierky a clony AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Priorita uzávierky a clony AE (1)" + +# FUZZY exif-exposureprogram-4 +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "Priorita citlivosti AE" + +# FUZZY exif-exposureprogram-4 +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "Priorita citlivosti AE (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "Blesk synch. s rýchlosÅ¥ou AE" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "Blesk synch. s rýchlosÅ¥ou AE (1)" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Program (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Program (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Program (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Riadenie farieb" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +#, fuzzy +msgid "Continuous (Hi)" +msgstr "Spojitý" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +#, fuzzy +msgid "Burst" +msgstr "Režim dávky" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +#, fuzzy +msgid "Video" +msgstr "Å iroké" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "samospúšť (12 sek)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "samospúšť (2 sek)" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +#, fuzzy +msgid "Remote Control (3 sec)" +msgstr "Diaľkové ovládanie?" + +#: src/pentaxmn.cpp:671 +#, fuzzy +msgid "Remote Control" +msgstr "Diaľkové ovládanie?" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Nastavenie spojité zaostrenie" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Silný" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Silný" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Silný" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Auto" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "Å¡oÅ¡ovky M-42 alebo žiadne" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "Å¡oÅ¡ovky K,M" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Å oÅ¡ovky série A" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Jasný" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +#, fuzzy +msgid "Weakest" +msgstr "Západ" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Slabé" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Silný" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Bez rozšírených viacnásobných snímok" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Neznáme" + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Poznámka výrobcu Pentax" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Režim záberu fotoaparátu" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Rozlíšenie náhľadu" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Dĺžka náhľadu" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "VeľkosÅ¥ IFD obsahujúceho náhľad obrázka" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Model" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Identifikácia modelu Pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Dátum" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "ÄŒas" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Nastavenie kvality obrázka" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Nastavenie veľkosti obrázka" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Nastavenie režimu blesku" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Nastavenie režimu zaostrenia" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Vybraný bod AZ" + +# AF = automatické zaostrenie +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "Použité body automatického zaostrenia" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "Äíslo F" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "ISO citlivosÅ¥" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Nastavenia citlivosti ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "merací režim" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Viacnásobné snímky" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Vyváženie modrej" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Vyváženie farieb ÄŒervená" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Ohnisková vzdialenosÅ¥" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Domovské mesto" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "Domovské mesto, letný Äas" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "ÄŒi v domovskom meste prebieha letný Äas" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Cieľová DST" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "ÄŒi v cieľovom meste prebieha letný Äas" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "Verzia firmvéru" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "Verzia firmvéru" + +#: src/pentaxmn.cpp:1261 +#, fuzzy +msgid "Light value" +msgstr "Hodnota jasu" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "VeľkosÅ¥ obrazových údajov" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "VeľkosÅ¥ obrázka" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +#, fuzzy +msgid "Preview image borders" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +#, fuzzy +msgid "Sensitivity adjust" +msgstr "ISO citlivosÅ¥" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Digitálny filter" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Teplota fotoaparátu" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Tón obrázka" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Redukcia chvenia" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Informácie o redukcii chvenia" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +#, fuzzy +msgid "Dynamic range expansion" +msgstr "Nastavenie dynamického rozsahu" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +#, fuzzy +msgid "High ISO noise reduction" +msgstr "Vysoká redukcia Å¡umu ISO" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "Úpravy tónu" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Äierny bod" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "biely bod" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +#, fuzzy +msgid "ShotInfo" +msgstr "Info o snímke" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "Info o AE" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Info o blesku" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "Segmenty merania AZ" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "FlashADump" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "FlashBDump" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "WB_RGGBLevelsShade" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "WB_RGGBLevelsTungsten" + +# exif-lightsource-15 +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "WB_RGGBLevelsFluorescentD" + +# exif-lightsource-15 +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "WB_RGGBLevelsFluorescentN" + +# exif-lightsource-15 +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "WB_RGGBLevelsFluorescentW" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "WB_RGGBLevelsFlash" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Info o fotoaparáte" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Info o batérii" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "Info o AZ" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +#, fuzzy +msgid "ColorInfo" +msgstr "Farba" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Neznáma znaÄka PentaxMakerNote" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +#, fuzzy +msgid "XMP Basic Job Ticket schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:117 +#, fuzzy +msgid "XMP Paged-Text schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:118 +#, fuzzy +msgid "XMP Dynamic Media schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +#, fuzzy +msgid "Adobe Lightroom schema" +msgstr "Schéma Adobe Photoshop" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Schéma Adobe PDF" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Schéma Adobe Photoshop" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "RAW schéma fotoaparátu" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:141 +#, fuzzy +msgid "XMP Darwin Core schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:142 +#, fuzzy +msgid "Qualified Dublin Core schema" +msgstr "XMP základná schéma" + +#: src/properties.cpp:143 +#, fuzzy +msgid "ACDSee XMP schema" +msgstr "Schéma Adobe PDF" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Å truktúra farbiva" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Å truktúra rozmerov" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Å truktúra písma" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Å truktúra náhľadu" + +#: src/properties.cpp:152 +#, fuzzy +msgid "Resource Event structure" +msgstr "Å truktúra písma" + +#: src/properties.cpp:153 +#, fuzzy +msgid "ResourceRef structure" +msgstr "Å truktúra verzie" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Å truktúra verzie" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Å truktúra farbiva" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Prispievateľ" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Prispeli do zdroja (okrem autorov)." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Pokrytie" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"Priestorová alebo Äasová téma zdroja, priestorová aplikovateľkosÅ¥ zdroja " +"alebo jurisdikcia, v ktorej je zdroj relevantný." + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Tvorca" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "Autori zdroja (uvedení v poradí, ak je to dôležité)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Dátumy, kedy sa so zdrojom udialo nieÄo významné." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"Textový popis obsahu zdroja. Môže byÅ¥ prítomných viacero hodnôt v rôznych " +"jazykoch." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Formát" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"Formátu súboru použitý pri uložení zdroja. Nástroje a aplikácie by mali túto " +"vlastnosÅ¥ nastavovaÅ¥ na formát, v ktorom sú uložené dáta. Môže obsahovaÅ¥ " +"prísluÅ¡né kvalifikátory." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identifikátor" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"JedineÄný identifikátor zdroja. OdporúÄa sa identifikovaÅ¥ zdroje reÅ¥azcom " +"zodpovedajúcim formalizovanému identifikaÄnému systému." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "Nezoradené pole so zoznamom jazykov použitých v zdroji." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Vydavateľ" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"Entita zodpovedná za sprístupnenie zdroja. Medzi príklady Vydavateľa patrí " +"osoba, organizácia alebo služba. Na oznaÄenie entity sa zvyÄajne používa " +"meno Vydavateľa." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "VzÅ¥ah" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"VzÅ¥ah k iným dokumentom. OdporúÄa sa identifikovaÅ¥ súvisiace zdroje reÅ¥azcom " +"zodpovedajúcim formalizovanému identifikaÄnému systému." + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Práva" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Neformálny oznam o právach, vybraný podľa jazyka. Informácia o právach je " +"zvyÄajne vyjadrenie o rôznych vlastníckych právach súvisiacich so zdrojom " +"vrátane práv na intelektuálne vlastníctvo." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "JedineÄný identifikátor diela, z ktorého bol zdroj odvodený." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Nezoradené pole popisných kľúÄových slov alebo spojení, ktoré Å¡pecifikujú " +"predmet obsahu zdroja." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"Titulok dokumentu alebo názov pridelený zdroju. ZvyÄajne to bude názov, " +"ktorým je zdroj formálne oznaÄovaný." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Typ" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "Typ dokumentu, napr. román, báseň alebo pracovný dokument." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Zoznam znaÄiek" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"Zoznam úplnej cesty ako reÅ¥azec. Hierarchia ciest sa oddeľuje znakom " +"„/“ (napr. „City/Paris/Monument/Eiffel Tower“)" + +#: src/properties.cpp:195 +#, fuzzy +msgid "Captions Author Names" +msgstr "Krajina" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "aktualizuje sa Äasová známka" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +#, fuzzy +msgid "Image History" +msgstr "Výška obrázka" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Nastavenia údajov Å¡oÅ¡oviek" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "Farebný priestor" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "OznaÄenie" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Rámec panorámy" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "Nastavenia" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Poradca" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "Základné URL" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "Dátum a Äas, kedy bol obrázok pôvodne vytvorený." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Vytvorené nástrojom" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "OznaÄenie" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Dátum (metadáta)" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Dátum zmeny" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Prezývka" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Hodnotenie" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Náhľady" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Certifikát" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "OznaÄené" + +#: src/properties.cpp:252 +#, fuzzy +msgid "Indicates that this is a rights-managed resource." +msgstr "Dátumy, kedy sa so zdrojom udialo nieÄo významné." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Vlastník" + +#: src/properties.cpp:253 +#, fuzzy +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "Nezoradené pole so zoznamom jazykov použitých v zdroji." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Podmienky používania" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +# exif-meteringmode-4 +#: src/properties.cpp:255 +#, fuzzy +msgid "Web Statement" +msgstr "element" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Odovodené od" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "ID dokumentu" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "História" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "ID príkladu" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Riadený z" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Manažér" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "Riadený z" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "Manažér" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "Manažér" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "RoÄník vydania" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Parametre interpretácie" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "ID verzie" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Verzie" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Posledný URL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Vydanie" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "UložiÅ¥ ID" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +#, fuzzy +msgid "Job Reference" +msgstr "ReferenÄný dátum" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Maximálna veľkosÅ¥ stránky" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "PoÄet stránok" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Písma" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Farbivá" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "Názvy plôch" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +#, fuzzy +msgid "Project Reference" +msgstr "GPS referencia zemepisnej dĺžky" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "PoÄet snímok za sekundu vo videu" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "PoÄet snímok za sekundu vo videu: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "VeľkosÅ¥ snímky vo videu" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "VeľkosÅ¥ snímky. Napr.: Å¡:720, v: 480, jednotka:pixely" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +#, fuzzy +msgid "Video Pixel Depth" +msgstr "Poradie video polí" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Farebný priestor videa" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +#, fuzzy +msgid "Video Alpha Mode" +msgstr "Model Minolta" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Kompresia videa" + +#: src/properties.cpp:341 +#, fuzzy +msgid "Video compression used. For example, jpeg." +msgstr "Použitý zvukový komprimátor. Napríklad MP3." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Poradie video polí" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +#, fuzzy +msgid "Pull Down" +msgstr "Dolu" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +#, fuzzy +msgid "Audio Sample Rate" +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +#, fuzzy +msgid "Audio Sample Type" +msgstr "Typ audio" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +#, fuzzy +msgid "Audio Channel Type" +msgstr "Typ audio" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Kompresia zvuku" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Použitý zvukový komprimátor. Napríklad MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Poloha reproduktora" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Dátum Minolta" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Názov pásky" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +#, fuzzy +msgid "Alternative Tape Name" +msgstr "Názov pásky" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Kód Äasu zaÄiatku" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +#, fuzzy +msgid "Alternative Time code" +msgstr "Kód Äasu zaÄiatku" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Trvanie" + +#: src/properties.cpp:357 +#, fuzzy +msgid "The duration of the media file." +msgstr "Názov scény" + +# exif-scenetype +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Scéna" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Názov scény" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Názov záberu" + +#: src/properties.cpp:359 +#, fuzzy +msgid "The name of the shot or take." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Dátum záberu" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Dátum a Äas, kedy bolo video nasnímané." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Miesto záberu" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Komentár denníka" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Komentár používateľovho denníka." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "ZnaÄky" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +#, fuzzy +msgid "Contributed Media" +msgstr "Prispievateľ" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Dátum úpravy videa" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Dátum a Äas, kedy bolo video naposledy zmenené." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Dátum úpravy zvuku" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Dátum a Äas, kedy bol zvuk naposledy zmenený." + +#: src/properties.cpp:370 +#, fuzzy +msgid "Metadata Modified Date" +msgstr "Dátum (metadáta)" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Umelec" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Album" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Názov albumu." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Číslo stopy" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Žáner" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Názov žánru" + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Informácie o autorských právach" + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Skladateľ" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Meno skladateľa" + +#: src/properties.cpp:378 src/properties.cpp:1143 +#, fuzzy +msgid "Engineer" +msgstr "VeÄer" + +#: src/properties.cpp:378 +#, fuzzy +msgid "The engineer's name." +msgstr "Meno skladateľa" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "RýchlosÅ¥" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Nástroj" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Hudobný nástroj" + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "ÄŒas vstupu" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "" + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Relatívna Äasová známka" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "SluÄka" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +#, fuzzy +msgid "Number Of Beats" +msgstr "PoÄet stránok" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "PoÄet úderov." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "KľúÄ" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Režim roztiahnutia" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "ÄŒasová signatúra" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Typ mierky" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Sériové Äíslo fotoaparátu." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Dátum vytvorenia." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Výrobca blesku" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Výrobca blesku." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Model blesku." + +#: src/properties.cpp:403 +#, fuzzy +msgid "Last Keyword IPTC" +msgstr "Posledné kľúÄové slovo XMP." + +#: src/properties.cpp:403 +#, fuzzy +msgid "Last Keyword IPTC." +msgstr "Posledné kľúÄové slovo XMP." + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP" +msgstr "Posledné kľúÄové slovo XMP." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Posledné kľúÄové slovo XMP." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Výrobca Å¡oÅ¡oviek" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Výrobca Å¡oÅ¡oviek." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Model Å¡oÅ¡oviek." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Percentá hodnotenia" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Percentá hodnotenia." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "KľúÄové slová." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "PDF verzia" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Verzia PDF súboru (napríklad: 1.0, 1.3, atÄ)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Tvorca" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Názov programu, pomocou ktorého bol vytvorený PDF dokument" + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Pozícia autora" + +#: src/properties.cpp:428 +#, fuzzy +msgid "By-line title." +msgstr "Vedľajší názov" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "ZapisovaÄ titulku" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Autor/vydavateľ" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "Mesto." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Pôvodca." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Titulok." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Å pecifické pokyny." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Zdroj." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Provincia/Å¡tát" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Doplnková kategória" + +#: src/properties.cpp:443 +#, fuzzy +msgid "Original transmission reference." +msgstr "OsvedÄenie na prenos" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "palcov" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Automatický jas" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Automatický kontrast" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Automatická korekcia expozície" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Automatické tiene" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "Modrý odtieň" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Nastavenie \"Modrý odtieň\". Rozsah -100 to 100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "Modrá sýtosÅ¥" + +#: src/properties.cpp:462 +#, fuzzy +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Nastavenie \"Jas\". Rozsah od 0 do +150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Profil fotoaparátu" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Nastavenie \"Profil fotoaparátu\"" + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Chromatická aberácia modrej" + +#: src/properties.cpp:465 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Chromatická aberácia Äervenej" + +#: src/properties.cpp:466 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Redukcia farebného Å¡umu" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Nastavenie \"Kontrast\". Rozsah od -50 do +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Nastavenie \"Kontrast\". Rozsah od -50 do +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "OrezaÅ¥ dolu" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "OrezaÅ¥ vpravo" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +#, fuzzy +msgid "Crop Angle" +msgstr "OrezaÅ¥ vľavo" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Jednotky pri orezávaní" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Nastavenie \"Expozícia\". Rozsah od -4.0 do +4.0." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Zelený odtieň" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Nastavenie \"Zelený odtieň\". Rozsah od -100 do +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Zelená sýtosÅ¥" + +#: src/properties.cpp:479 +#, fuzzy +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Orezanie" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Nastavenia" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +#, fuzzy +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Názov nespracovaného súboru" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Názov RAW súboru (nie kompletná cesta k nemu)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "ÄŒervený odtieň" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Nastavenie \"ÄŒervený odtieň\". Rozsah od -100 do +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "ÄŒervená sýtosÅ¥" + +#: src/properties.cpp:485 +#, fuzzy +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Tiene" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Nastavenie \"Tiene\". Rozsah od 0 do +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Sfarbenie tieňa" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Nastavenie \"Sfarbenie tieňa\". Rozsah od -100 do +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Nastavenie \"OstrosÅ¥\". Rozsah od 0 do +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Nastavenie \"Teplota\". Rozsah od 2000 do 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Sfarbenie" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Nastavenie \"Sfarbenie\". Rozsah od -150 do +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Krivka tónu" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Názov krivky tónu" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Verzia RAW zásuvného modulu fotoaparátu" + +#: src/properties.cpp:496 +#, fuzzy +msgid "Vignette Amount" +msgstr "Diaľkové ovládanie?" + +#: src/properties.cpp:496 +#, fuzzy +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:497 +#, fuzzy +msgid "Vignette Midpoint" +msgstr "Diaľkové ovládanie?" + +#: src/properties.cpp:497 +#, fuzzy +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Nastavenie \"SýtosÅ¥\". Rozsah od -100 do +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "TIFF tag 256, 0x100. Šírka obrázka v bodoch." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Dĺžka obrázka" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "TIFF tag 257, 0x101. Dĺžka obrázka v bodoch." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "bitov na vzorku" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Kompresia" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Fotometrická interpretácia" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "vzoriek na pixel" + +#: src/properties.cpp:519 +#, fuzzy +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "TIFF tag 257, 0x101. Dĺžka obrázka v bodoch." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Rovinná konfigurácia" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +# exif-ycbcrsubsampling +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "podvzorkovanie YCbCr" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "polohovanie YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +# exif-xresolution +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "horizontálne rozlíšenie" + +#: src/properties.cpp:525 +#, fuzzy +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" +"EXIF znaÄka 41486, 0xA20E. Vodorovné ohniskové rozlíšenie v pixeloch na " +"jednotku" + +# exif-xresolution +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "horizontálne rozlíšenie" + +#: src/properties.cpp:526 +#, fuzzy +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" +"EXIF znaÄka 41487, 0xA20F. Zvislé ohniskové rozlíšenie v pixeloch na jednotku" + +# exif-resolutionunit +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "jednotka rozlíšenia" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +# exif-transferfunction +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "prenosová funkcia" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +# exif-whitepoint +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "biely bod" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +# exif-primarychromaticities +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "primárne chromaticity" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "ReferenÄná Äierna a biela" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Dátum a Äas" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Popis obrázka" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Zhotoviteľ" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Verzia EXIF" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "EXIF znaÄka 36864, 0x9000. Číslo verzie EXIF." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "Verzia FlashPix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "EXIF znaÄka 40960, 0xA000. Verzia FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "EXIF znaÄka 40961, 0xA001. Informácie o farebnom priestore" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Nastavenie zložiek" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"EXIF znaÄka 37121, 0x9101. Konfigurácia dátových zložiek: 4 5 6 0 (pre RGB " +"komprimované údaje), 1 2 3 0 (ostatné prípady)." + +# exif-compressedbitsperpixel +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "komprimované bity na pixel" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"EXIF znaÄka 37122, 0x9102. Kompresný režim komprimovaného obrázka sa " +"oznaÄuje v jednotkách bity na pixel." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Vodorovný rozmer pixelu" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "EXIF znaÄka 40962, 0xA002. Platná šírka obrázka v pixeloch" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Zvislý rozmer pixelu" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "EXIF znaÄka 40963, 0xA003. Platná výška obrázka v pixeloch" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Komentár používateľa" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "EXIF znaÄka 37510, 0x9286. Komentár používateľa." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Súvisiaci zvukový súbor" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"EXIF znaÄka 40964, 0xA004. \"8.3\" názov súboru prísluÅ¡ného zvukového súboru." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Dátum a Äas zhotovenia" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"EXIF znaÄky 36867, 0x9003 (primárny) a 37521, 0x9291 (podsekundy). Dátum a " +"Äas, kedy bol vytvorený pôvodný obrázok, vo formáte ISO 8601. Vrátane údajov " +"EXIF SubSecTimeOriginal." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Dátum a Äas digitalizácie" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"EXIF znaÄka 36868, 0x9004 (primárny) a 37522, 0x9292 (podsekundy). Dátum a " +"Äas, kedy bol obrázok uložený ako digitálne údaje. Môže byÅ¥ rovnaký ako " +"DateTimeOriginal ak bol obrázok pôvodne uložený v digitálnej forme. Ukladá " +"sa vo formáte ISO 8601. Vrátane údajov EXIF SubSecTimeOriginal." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "EXIF znaÄka 33434, 0x829A. ÄŒas expozície v sekundách" + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Äíslo F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "EXIF znaÄka 33437, 0x829D. Číslo F" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "EXIF znaÄka 34850, 0x8822. Trieda expoziÄného programu" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Spektrálna citlivosÅ¥:" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "EXIF znaÄka 34852, 0x8824. Spektrálna citlivosÅ¥ každého kanála" + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "ISO rýchlosti" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"EXIF znaÄka 34855, 0x8827. OznaÄuje ISO rýchlosÅ¥ a ISO zemepisnú šírku " +"fotoaparátu alebo vstupného zariadenia podľa Å¡pecifikácie ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"EXIF znaÄka 34856, 0x8828. Opto-elektronická konverzná funkcie podľa " +"Å¡pecifikácie ISO 14524" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"EXIF znaÄka 37377, 0x9201. RýchlosÅ¥ uzávierky, jednotka je APEX. Pozri " +"Prílohu C Å pecifikácie EXIF." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "EXIF znaÄka 37378, 0x9202. Clona Å¡oÅ¡oviek, jednotka je APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Hodnota jasu" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "EXIF znaÄka 37379, 0x9203. Jas, jednotka je APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "EXIF znaÄka 37380, 0x9204. Skreslenie expozície, jednotka je APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Maximálna hodnota clony" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" +"EXIF znaÄka 37381, 0x9205. NajmenÅ¡ie Äíslo F Å¡oÅ¡oviek, jednotka je APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "EXIF znaÄka 37382, 0x9206. VzdialenosÅ¥ subjektu v metroch." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "EXIF znaÄka 37383, 0x9207. Režim merania" + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "EXIF znaÄka 37384, 0x9208. Svetelný zdroj" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" +"EXIF znaÄka 37385, 0x9209. Zdrojové údaje o impulznom osvetlení (blesk)" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" +"EXIF znaÄka 37386, 0x920A. Ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v milimetroch" + +# exif-subjectarea +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "oblasÅ¥ subjektu" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"EXIF znaÄka 37396, 0x9214. Táto znaÄka oznaÄuje polohu a plochu hlavného " +"subjektu v celkovej scéne." + +# exif-flashenergy +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "energia blesku" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "EXIF znaÄka 41483, 0xA20B. Energia blesku poÄas zachytenia obrázka" + +# exif-spatialfrequencyresponse +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "priestorová frekvenÄná odozva" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"EXIF znaÄka 41484, 0xA20C. Priestorové frekvenÄná tabuľka vstupného " +"zariadenia a hodnoty SFR podľa Å¡pecifikácie ISO 12233" + +# exif-focalplanexresolution +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "vodorovné rozlíšenie ohniskovej roviny" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"EXIF znaÄka 41486, 0xA20E. Vodorovné ohniskové rozlíšenie v pixeloch na " +"jednotku" + +# exif-focalplanexresolution +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "zvislé rozlíšenie ohniskovej roviny" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"EXIF znaÄka 41487, 0xA20F. Zvislé ohniskové rozlíšenie v pixeloch na jednotku" + +# exif-focalplaneresolutionunit +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "jednotka rozlíšenia v ohniskovej rovine" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" +"EXIF znaÄka 41488, 0xA210. Jednotka pre FocalPlaneXResolution a " +"FocalPlaneYResolution" + +# exif-subjectlocation +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "umiestnenie subjektu" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" +"EXIF znaÄka 41492, 0xA214. Umiestnenie hlavného subjektu scény. Prvá hodnota " +"je vodorovný a druhá zvislý pixel, na ktorom sa nachádza subjekt." + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Index expozície" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "EXIF znaÄka 41493, 0xA215. ExpoziÄný index vstupného zariadenia" + +# exif-sensingmethod +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "snímacia metóda" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"EXIF znaÄka 41495, 0xA217. Táto znaÄka oznaÄuje typ obrazového snímaÄa " +"vstupného fotoaparátu alebo vstupného zariadenia." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "EXIF znaÄka 41728, 0xA300. Zdroj obrázka" + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Typ scény" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "EXIF znaÄka 41729, 0xA301. Typ scény" + +# exif-cfapattern +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "vzorka CFA" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" +"EXIF znaÄka 41730, 0xA302. Geometrický vzor snímaÄa obrázka poľa farebného " +"filtra" + +# exif-customrendered +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "ruÄné spracovanie obrazu" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"EXIF znaÄka 41985, 0xA401. Použitie Å¡peciálneho spracovania obrazových údajov" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"EXIF znaÄka 41986, 0xA402. Táto znaÄka oznaÄuje aký režim expozície bol " +"zvolený pri odfotení obrázka." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"EXIF znaÄka 41987, 0xA403. Táto znaÄka oznaÄuje aký režim vyváženia bielej " +"bol zvolený pri odfotení obrázka." + +# exif-digitalzoomratio +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "pomer digitálneho priblíženia" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"EXIF znaÄka 41988, 0xA404. Táto znaÄka oznaÄuje aký pomer digitálneho " +"priblíženia bol zvolený pri odfotení obrázka." + +# exif-focallengthin35mmfilm +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "ohnisková vzdialenosÅ¥ na 35 mm filme" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"EXIF znaÄka 41989, 0xA405. Táto znaÄka oznaÄuje ohniskovú vzdialenosÅ¥ " +"ekvivalentnú fotoaparátu s 35 mm filmom. Hodnota 0 znamená, že ohnisková " +"vzdialenosÅ¥ je neznáma. VÅ¡imnite si, že táto znaÄka sa líši od znaÄky " +"FocalLength." + +# exif-scenecapturetype +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "typ zachytenia scény" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "EXIF znaÄka 41990, 0xA406. Typ snímanej scény." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Riadenie zosilnenia" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"EXIF znaÄka 41991, 0xA407. Táto znaÄka oznaÄuje stupeň celkového zosilnenia " +"obrazu." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"EXIF znaÄka 41992, 0xA408. Táto znaÄka oznaÄuje smer spracovania kontrastu, " +"ktorý použil fotoaparát pri zachytení obrázka." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"EXIF znaÄka 41993, 0xA409. Táto znaÄka oznaÄuje smer spracovania sýtosti, " +"ktorý použil fotoaparát pri zachytení obrázka." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"EXIF znaÄka 41994, 0xA40A. Táto znaÄka oznaÄuje smer spracovania ostrosti, " +"ktorý použil fotoaparát pri zachytení obrázka." + +# exif-devicesettingdescription +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "opis nastavení zariadenia" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"EXIF znaÄka 41995, 0xA40B. Táto znaÄka oznaÄuje informácie o podmienkach " +"fotografovania konkrétnym modelom fotoaparátu. ZnaÄka sa používa iba na " +"oznaÄenie podmienok fotografovania v Äítacom zariadení." + +# exif-subjectdistancerange +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "rozsah vzdialenosti subjektu" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "" +"EXIF znaÄka 41996, 0xA40C. Táto znaÄka oznaÄuje vzdialenosÅ¥ k subjektu." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "JedineÄný ID obrázka" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"EXIF znaÄka 42016, 0xA420. Táto znaÄka oznaÄuje jedineÄný identifikátor " +"priradený každému obrázku. Je zaznamenaný ako ASCII reÅ¥azec zodpovedajúci " +"hexadecimálnemu zápisu 128-bitového Äísla." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "ID verzie GPS" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +# exif-gpslatitude +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS zemepisná šírka" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +# exif-gpslongitude +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS zemepisná dĺžka" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +# exif-gpsaltituderef +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "GPS referencia nadmorskej výšky" + +#: src/properties.cpp:625 src/properties.cpp:1168 +#, fuzzy +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "GPS tag 6, 0x06. Udáva nadmorskú výšku v metroch." + +# exif-gpsaltitude +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPS nadmorská výška" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "GPS tag 6, 0x06. Udáva nadmorskú výšku v metroch." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +#, fuzzy +msgid "GPS Time Stamp" +msgstr "ÄŒas odoslania" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "GPS satelity" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Stav GPS" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS Režim merania" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +#, fuzzy +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "Stupeň presnosti GPS údajov" + +# exif-gpsaltituderef +#: src/properties.cpp:637 src/tags.cpp:2002 +#, fuzzy +msgid "GPS Speed Reference" +msgstr "GPS referencia nadmorskej výšky" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPS rýchlosÅ¥" + +#: src/properties.cpp:638 +#, fuzzy +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "OznaÄuje rýchlosÅ¥ pohybu GPS prijímaÄa." + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS Track Reference" +msgstr "GPS referencia zemepisnej šírky" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +#, fuzzy +msgid "GPS Image Direction Reference" +msgstr "GPS Smer obrázka" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "GPS Smer obrázka" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "Stav GPS" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" + +#: src/properties.cpp:644 src/tags.cpp:2033 +#, fuzzy +msgid "GPS Destination Latitude" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +#, fuzzy +msgid "GPS Destination Longitude" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +#, fuzzy +msgid "GPS Destination Bearing Reference" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +#, fuzzy +msgid "GPS Destination Bearing" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:649 +#, fuzzy +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "EXIF znaÄka 37382, 0x9206. VzdialenosÅ¥ subjektu v metroch." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "GPS Metóda spracovania" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "GPS Informácie o oblasti" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +#, fuzzy +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "GPS tag 6, 0x06. Udáva nadmorskú výšku v metroch." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Kontaktné informácie tvorcu" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Kontaktné informácie- Adresa" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Kontaktné informácie- Mesto" + +#: src/properties.cpp:669 +#, fuzzy +msgid "sub-key Creator Contact Info: city." +msgstr "Kontaktné informácie tvorcu" + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Kontaktné informácie- Å tát/Provincia" + +#: src/properties.cpp:670 +#, fuzzy +msgid "sub-key Creator Contact Info: state or province." +msgstr "Kontaktné informácie- Å tát/Provincia" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Kontaktné informácie- PSÄŒ" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Kontaktné informácie- Krajina" + +#: src/properties.cpp:672 +#, fuzzy +msgid "sub-key Creator Contact Info: country." +msgstr "Kontaktné informácie tvorcu" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Kontaktné informácie- E-mail" + +#: src/properties.cpp:673 +#, fuzzy +msgid "sub-key Creator Contact Info: email address." +msgstr "ÄŒasÅ¥ krajina kontaktných informácií." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Kontaktné informácie- Tel. Äíslo" + +#: src/properties.cpp:674 +#, fuzzy +msgid "sub-key Creator Contact Info: phone number." +msgstr "Kontaktné informácie tvorcu" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Kontaktné informácie- Web stránka" + +#: src/properties.cpp:675 +#, fuzzy +msgid "sub-key Creator Contact Info: web address." +msgstr "Kontaktné informácie tvorcu" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "IPTC Scéna" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "IPTC Kód subjektu" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +#, fuzzy +msgid "Additional model info" +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Model" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +#, fuzzy +msgid "Person shown" +msgstr "Verzie" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Stabilizácia obrazu" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "Názov scény" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +#, fuzzy +msgid "Event" +msgstr "VeÄer" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "nedostupné" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +# FUZZY exif-focallength +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "Maximálna ohnisková vzdialenosÅ¥" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +#, fuzzy +msgid "Registry Entry" +msgstr "položka poľa" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +#, fuzzy +msgid "Registry Entry-Item Identifier" +msgstr "položka poľa" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +#, fuzzy +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:711 +#, fuzzy +msgid "A location shown in the image." +msgstr "Posunutie náhľadu" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:712 +#, fuzzy +msgid "The location the photo was taken." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Location-City" +msgstr "Umiestnenie" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Name of the city of a location." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:714 +#, fuzzy +msgid "The ISO code of a country of a location." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "Názov umiestnenia" + +#: src/properties.cpp:715 +#, fuzzy +msgid "The name of a country of a location." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "Provincia Å¡tátu" + +#: src/properties.cpp:716 +#, fuzzy +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "Umiestnenie sub." + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:718 +#, fuzzy +msgid "The name of a world region of a location." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:719 +#, fuzzy +msgid "Artwork or object in the image" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +#, fuzzy +msgid "Artwork or object-Creator" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +#, fuzzy +msgid "Artwork or object-Date Created" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +#, fuzzy +msgid "Artwork or object-Source" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +#, fuzzy +msgid "Artwork or object-Source inventory number" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +#, fuzzy +msgid "Artwork or object-Title" +msgstr "Oznam autorských práv" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "ID fotoaparátu" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "ID fotoaparátu" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "ID fotoaparátu" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "PDF verzia" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +#, fuzzy +msgid "Licensee" +msgstr "Å¡oÅ¡ovky" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Názov umiestnenia" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Name of each Licensee." +msgstr "Názov scény" + +#: src/properties.cpp:746 +#, fuzzy +msgid "End User" +msgstr "externý" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +#, fuzzy +msgid "End User ID" +msgstr "externý" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Meno vlastníka" + +#: src/properties.cpp:748 +#, fuzzy +msgid "Name of each End User." +msgstr "Názov scény" + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Å¡oÅ¡ovky" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Názov umiestnenia" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Name of each Licensor." +msgstr "Názov scény" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor Address" +msgstr "Vlastnosti digiKam" + +#: src/properties.cpp:752 +#, fuzzy +msgid "Licensor street address." +msgstr "Krajina" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Licensor Address Detail" +msgstr "Kontaktné informácie- PSÄŒ" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Additional Licensor mailing address details." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Mexico City" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City name." +msgstr "Krajina" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "Å tát/provincia" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "Å tát/provincia" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "Kontaktné informácie- PSÄŒ" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code or Zip Code." +msgstr "Kontaktné informácie- PSÄŒ" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Krajina" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Krajina" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:758 +#, fuzzy +msgid "Licensor Telephone Type 1." +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone 1" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:759 +#, fuzzy +msgid "Licensor Telephone number 1." +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "Sériové Äíslo fotoaparátu" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "Názov umiestnenia" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "Kontaktné informácie- PSÄŒ" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Posledný URL" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "Vlastnosti digiKam" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "GPS Režim merania" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Dátum Minolta" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "Dátum a Äas, kedy bolo video nasnímané." + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Údaje Å¡oÅ¡oviek" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Názov scény" + +#: src/properties.cpp:768 +#, fuzzy +msgid "Media Constraints" +msgstr "Kontrast" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +#, fuzzy +msgid "Region Constraints" +msgstr "Kontrast" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +#, fuzzy +msgid "Product or Service Constraints" +msgstr "Automatický kontrast" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "Nastavenie veľkosti obrázka" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +#, fuzzy +msgid "Image Alteration Constraints" +msgstr "Nastavenie kvality obrázka" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "Nastavenie kvality obrázka" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Dátum vydania" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "ID modelu" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +#, fuzzy +msgid "Property Release Status" +msgstr "Dátum vydania" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +#, fuzzy +msgid "Property Release ID" +msgstr "ID modelu" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "Automatický kontrast" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Additional constraints on the license." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "Nepoužité" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Other License Requirements" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Additional license requirements." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:783 +#, fuzzy +msgid "Terms and Conditions Text" +msgstr "Podmienky zachytenia obrázka" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +#, fuzzy +msgid "Terms and Conditions URL" +msgstr "Podmienky zachytenia obrázka" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "Podmienky zachytenia obrázka" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Additional license conditions." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:786 +#, fuzzy +msgid "Identifies the type of image delivered." +msgstr "Identifikácia poskytovateľa a produktu" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +#, fuzzy +msgid "Image File Name As Delivered" +msgstr "Súvisiaci formát súboru obrázka" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +#, fuzzy +msgid "Image File Format As Delivered" +msgstr "Súvisiaci formát súboru obrázka" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +#, fuzzy +msgid "Image File Size As Delivered" +msgstr "Súvisiaci formát súboru obrázka" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "Copyright" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Oznam autorských práv" + +#: src/properties.cpp:792 +#, fuzzy +msgid "Copyright Registration Number" +msgstr "Meno vlastníka" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Dátum digitalizácie" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "Copyright" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "Copyright" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Meno vlastníka" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Name of Copyright Owner." +msgstr "Copyright" + +#: src/properties.cpp:797 +#, fuzzy +msgid "Copyright Owner Image ID" +msgstr "Copyright" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "Orientácia obrázka" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Creator/s of the image." +msgstr "Posunutie náhľadu" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Orientácia obrázka" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Tón obrázka" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "PoÄet obrázkov" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "Orientácia obrázka" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "JedineÄný ID obrázka" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "VeľkosÅ¥ obrázka" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Name of Image Supplier." +msgstr "PoÄet obrázkov" + +#: src/properties.cpp:804 +#, fuzzy +msgid "Image Supplier Image ID" +msgstr "JedineÄný ID obrázka" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "ZmazaÅ¥ poÄet obrázkov" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "ZmazaÅ¥ poÄet obrázkov" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Notes added by Licensee." +msgstr "Názov scény" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Other Image Info" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +#, fuzzy +msgid "Licensor Transaction ID" +msgstr "Dátum expirácie" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +#, fuzzy +msgid "Licensee Transaction ID" +msgstr "Dátum expirácie" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "Dátum expirácie" + +#: src/properties.cpp:812 +#, fuzzy +msgid "The date of the License Transaction." +msgstr "Názov scény" + +#: src/properties.cpp:813 +#, fuzzy +msgid "Reuse" +msgstr "použité" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +#, fuzzy +msgid "Other License Documents" +msgstr "Podmienky zachytenia obrázka" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Vlastný 1" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Vlastný 1" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Vlastný 1" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Vlastný 1" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Vlastný 1" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Vlastný 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Vlastný 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "Nepoužité" + +#: src/properties.cpp:839 +#, fuzzy +msgid "Protected" +msgstr "IdentifikaÄné Äíslo výrobku" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "" + +#: src/properties.cpp:846 +#, fuzzy +msgid "Credit Adjacent To Image" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "nedefinované" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "Solarizácia" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "Solarizácia" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +#, fuzzy +msgid "No Merging" +msgstr "Redukcia Å¡umu" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "Redukcia Å¡umu" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +#, fuzzy +msgid "No Duplication Constraints" +msgstr "Nastavenie kvality obrázka" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:871 +#, fuzzy +msgid "Maintain File Name" +msgstr "Názov nespracovaného súboru" + +#: src/properties.cpp:872 +#, fuzzy +msgid "Maintain File Type" +msgstr "Názov nespracovaného súboru" + +#: src/properties.cpp:873 +#, fuzzy +msgid "Maintain ID in File Name" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/properties.cpp:874 +#, fuzzy +msgid "Maintain Metadata" +msgstr "Dátum Minolta" + +#: src/properties.cpp:879 +#, fuzzy +msgid "Windows Bitmap (BMP)" +msgstr "Názov okna" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +# exif-jpeginterchangeformat +#: src/properties.cpp:882 +#, fuzzy +msgid "Graphics Interchange Format (GIF)" +msgstr "formát JPEG" + +# exif-jpeginterchangeformat +#: src/properties.cpp:883 +#, fuzzy +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "formát JPEG" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +#, fuzzy +msgid "Tagged Image File Format (TIFF)" +msgstr "Súvisiaci formát súboru obrázka" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +#, fuzzy +msgid "Up to 1 MB" +msgstr "Optio A10" + +#: src/properties.cpp:897 +#, fuzzy +msgid "Up to 10 MB" +msgstr "Optio A10" + +#: src/properties.cpp:898 +#, fuzzy +msgid "Up to 30 MB" +msgstr "Optio 30" + +#: src/properties.cpp:899 +#, fuzzy +msgid "Up to 50 MB" +msgstr "Optio S50" + +#: src/properties.cpp:904 +#, fuzzy +msgid "Illustrated Image" +msgstr "Šírka súvisiaceho obrázka" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Manažér" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "Neznáme" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +#, fuzzy +msgid "Unlimited Model Releases" +msgstr "ID modelu" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Model" + +#: src/properties.cpp:961 src/properties.cpp:970 +#, fuzzy +msgid "Status" +msgstr "Stav GPS" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 +#, fuzzy +msgid "Catalog Sets" +msgstr "Číslo intervalu" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "Verzie" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date Regions Valid" +msgstr "Dátum a Äas zhotovenia" + +#: src/properties.cpp:985 +#, fuzzy +msgid "Date the last region was created" +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "Názvy plôch" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +#, fuzzy +msgid "Person Email Digest" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +#, fuzzy +msgid "Applied To Dimensions" +msgstr "Vodorovný rozmer pixelu" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "Verzie" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Å truktúra verzie" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "rozsah zaostrenia" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Rozsah zaostrenia" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Krok viacnásobného záberu" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "Verzie" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +#, fuzzy +msgid "List of root keyword structures" +msgstr "Å truktúra verzie" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "KľúÄové slová" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +#, fuzzy +msgid "List of children keyword structures" +msgstr "Å truktúra verzie" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "panoráma" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Dáta snímania" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Softvér použitý na spracovanie" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Typ objektu" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "VzdialenosÅ¥ subjektu v metroch." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Dátum digitalizácie" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Dátum záberu" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Date and time for the last image created in the panorama." +msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Režim expozície" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +#, fuzzy +msgid "Cropped Area Image Width Pixels" +msgstr "Šírka obrázka" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +#, fuzzy +msgid "Cropped Area Image Height Pixels" +msgstr "Výška obrázka" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +#, fuzzy +msgid "Initial Camera Dolly" +msgstr "JedineÄný model fotoaparátu" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Miesto záberu" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "V diaľke" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "KľúÄové slová" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Popis obrázka" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Názov nespracovaného súboru" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Nastavenie zaostrenia" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Endianita" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Informácie o autorských právach" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Max. clona" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Režim AZ" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "maximálna clona pri minimálnom ohnisku" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Kompresia videa" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +# exif-devicesettingdescription +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "opis nastavení zariadenia" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Konfigurácia obrázka" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Nastavenie režimu jazda autom" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Komentár denníka" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Kompresia" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Kompresia" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Windows kľúÄové slová" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Kompresia" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Kompresia videa" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Kompresia videa" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Kompresia" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "ZmaÄka fotoaparátu" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Kompresný pomer" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +#, fuzzy +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" +"EXIF znaÄka 41992, 0xA408. Táto znaÄka oznaÄuje smer spracovania kontrastu, " +"ktorý použil fotoaparát pri zachytení obrázka." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "OrezaÅ¥ dolu" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "OrezaÅ¥ vľavo" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "OrezaÅ¥ vpravo" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "OrezaÅ¥ vrch" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Aktuálny ICC profil" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "OblasÅ¥ dát" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +#, fuzzy +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." + +#: src/properties.cpp:1111 +#, fuzzy +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"EXIF znaÄka 36868, 0x9004 (primárny) a 37522, 0x9292 (podsekundy). Dátum a " +"Äas, kedy bol obrázok uložený ako digitálne údaje. Môže byÅ¥ rovnaký ako " +"DateTimeOriginal ak bol obrázok pôvodne uložený v digitálnej forme. Ukladá " +"sa vo formáte ISO 8601. Vrátane údajov EXIF SubSecTimeOriginal." + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Dátum a Äas zhotovenia" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Redukcia farebného Å¡umu" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" +"EXIF znaÄka 41988, 0xA404. Táto znaÄka oznaÄuje aký pomer digitálneho " +"priblíženia bol zvolený pri odfotení obrázka." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Verzie" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Pôvodca" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Typ zaostrenia" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "Verzia záznamu" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Verzia modelu" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Názov scény" + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Verzia záznamu" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Verzia ARM" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "PoÄet snímok za sekundu vo videu" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "Kód Äasu zaÄiatku" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Info o vybavení" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Kompenzácia expozície" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Režim expozície" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "ÄŒas expozície v sekundách (sek)." + +# exif-devicesettingdescription +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "opis nastavení zariadenia" + +# exif-devicesettingdescription +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description, usually found in ASF type files." +msgstr "opis nastavení zariadenia" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Súbor" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Súbor" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Dĺžka dlaždice" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Dĺžka dlaždice" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Názov súboru" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "VeľkosÅ¥ súboru" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "VeľkosÅ¥ súboru" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Nový typ podsúboru" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +#, fuzzy +msgid "Focal length of the lens, in millimeters." +msgstr "" +"EXIF znaÄka 37386, 0x920A. Ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v milimetroch" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "PoÄet obrázkov" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Režim AZ" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Režim AZ" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "smer panorámy" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "ÄŒasová známka metadáta s kľúÄom" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Jednoduchý režim" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Popis obrázka" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Typ mierky" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Výrobca Å¡oÅ¡oviek." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "ÄŒistenie snímaÄa" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "Nastavenia úprav obrázka" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "Základné URL" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "Informácie o polohe automatického zaostrenia" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "Text" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Informácie o snímke" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Info URL" +msgstr "Posledný URL" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Informácie o snímke" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Údaje Å¡oÅ¡oviek" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Jazyk" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Ohnisková vzdialenosÅ¥" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Názov scény" + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Typ Å¡oÅ¡pviek" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Jas" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Jas" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Informácie o snímke" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "Posledný URL" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Info o vybavení" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "ZmaÄka fotoaparátu" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Poznámky zhotoviteľa - verzia" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "Poznámky zhotoviteľa - verzia" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "Základné URL" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Výrobca Å¡oÅ¡oviek." + +#: src/properties.cpp:1211 +#, fuzzy +msgid "Smallest F number of lens, in APEX." +msgstr "" +"EXIF znaÄka 37381, 0x9205. NajmenÅ¡ie Äíslo F Å¡oÅ¡oviek, jednotka je APEX." + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Maximálna hodnota clony" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Dátum Minolta" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Verzia modelu" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +#, fuzzy +msgid "Media Language Code" +msgstr "GPS Režim merania" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Dátum (metadáta)" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Stredný" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "Dátum (metadáta)" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "Dátum (metadáta)" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +# exif-meteringmode +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "merací režim" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Typ obrázka" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Verzia súboru" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Info o vybavení" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Model name or number of equipment." +msgstr "Názov scény" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Názov umiestnenia" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Verzia modelu" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "ÄŽalší IFD" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "PoÄet stránok" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Total number of colours used" +msgstr "Poradové Äíslo (ak je zo spojitého záberu)" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "PoÄet stránok" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "PoÄet stránok" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Orientácia" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Oslavy" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Oslavy" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "KľúÄové slová" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "KľúÄové slová." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Nastavenie režimu obrázka" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Informácie o obrázku" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Výber" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Výber" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Jednoduchý režim" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "ÄŒasÅ¥ krajina kontaktných informácií." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "ÄŒas expozície" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "ReferenÄný dátum" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Dáta náhľadu" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "OznaÄuje typ zvukového obsahu." + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Dáta náhľadu" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Dáta náhľadu" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Názov scény" + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Názov scény" + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Tvorca" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "KľúÄové slová" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Clona" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Clona" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "IdentifikaÄné Äíslo výrobku" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "IdentifikaÄné Äíslo výrobku" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "IdentifikaÄné Äíslo výrobku" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Posunitie záznamu" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Posunitie záznamu" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +#, fuzzy +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" +"EXIF znaÄka 41993, 0xA409. Táto znaÄka oznaÄuje smer spracovania sýtosti, " +"ktorý použil fotoaparát pri zachytení obrázka." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Názov žánru" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Výber" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Trvanie" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Verzia firmvéru" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "ZapisovaÄ titulku" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords" +msgstr "Windows kľúÄové slová" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "KľúÄové slová." + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Pôvodca" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Pôvodca." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Zdroj" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Zdroj." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Výška obrázka" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Šírka obrázka" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +#, fuzzy +msgid "Starring" +msgstr "Å tandardné svetlo A" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "Kód Äasu zaÄiatku" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Stav GPS" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "PoÄítadlo uzávierky" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "PoÄet stránok" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Názov záberu" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Kvalita obrázka" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "General Stream Quality" +msgstr "Kvalita obrázka" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "RýchlosÅ¥ zvuku" + +# exif-stripbytecounts +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "bajtov na komprimovaný prúžok" + +#: src/properties.cpp:1319 +#, fuzzy +msgid "Stream Sample Size" +msgstr "bitov na vzorku" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Typ mierky" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "Kód Äasu zaÄiatku" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Nastavenie režimu obrázka" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Názov" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "KľúÄové slová" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "KľúÄové slová." + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Jazyk" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "The Language in which the subtitles is recorded in." +msgstr "Názov scény" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Predmet" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Názov pásky" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Nastavenia" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Jazyk" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Názov pásky" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Typ obrázka" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Dĺžka náhľadu" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Dĺžka obrázka" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Dĺžka náhľadu" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "pod vodou" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +# exif-stripoffsets +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Ofsety dlaždíc" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "ÄŒas odoslania" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +# exif-stripbytecounts +#: src/properties.cpp:1351 +#, fuzzy +msgid "Total Frame Count" +msgstr "PoÄet bajtov dlaždice" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "PoÄet stránok" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "Viacnásobné snímky" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "PoÄet snímok za sekundu vo videu" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Číslo stopy" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Poznámky zhotoviteľa - verzia" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Jazyk" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "PoÄet snímok za sekundu vo videu" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Dátum úpravy videa" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Číslo stopy" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Číslo stopy" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Číslo stopy" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Å iroké" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Å iroké" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Program" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +#, fuzzy +msgid "The developer of the compressor that generated the compressed data." +msgstr "" +"Táto znaÄka oznaÄuje smer spracovania ostrosti, ktorý použil fotoaparát pri " +"zachytení obrázka." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Kvalita" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "PoÄet snímok za sekundu vo videu" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "VeľkosÅ¥ snímky vo videu" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "VeľkosÅ¥ snímky vo videu" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Typ mierky" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Tabuľka vyváženia bielej" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Šírka dlaždice" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Windows hodnotenie" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Zapísal" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Zapisuje sa" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +#, fuzzy +msgid "Horizontal resolution in pixels per unit." +msgstr "" +"EXIF znaÄka 41486, 0xA20E. Vodorovné ohniskové rozlíšenie v pixeloch na " +"jednotku" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Dátum a Äas, kedy bolo video naposledy zmenené." + +#: src/properties.cpp:1392 +#, fuzzy +msgid "Vertical resolution in pixels per unit." +msgstr "" +"EXIF znaÄka 41487, 0xA20F. Zvislé ohniskové rozlíšenie v pixeloch na jednotku" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Vyváženie Äervenej" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k cieľovému bodu." + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "bitov na vzorku" + +# exif-bitspersample +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "bitov na vzorku" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Kompresia zvuku" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Popis obrázka" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Nastavenie režimu zaostrenia" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Å tandardná Å¡kála" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "Automatická uzávierka" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "nájdený v súbore" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "nájdený v súbore" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Uvoľnenie viacnásobného záberu" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "Automatický viacnásobný záber" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "Trvanie zvuku" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Typ audio" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Dátum úpravy zvuku" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "RýchlosÅ¥ zvuku" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Názov žánru" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Identifikátor" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date on which the resource was changed." +msgstr "Dátum a Äas, kedy bolo video naposledy zmenené." + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Názov scény" + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Å¡oÅ¡ovky" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "OblasÅ¥ vpravo" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Práva" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "ReferenÄný dátum" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "Tvorca" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "InÅ¡trukcie" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Výber" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Režim rozlíšenia" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Výpis dát 1" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Názvy plôch" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "JedineÄný identifikátor diela, z ktorého bol zdroj odvodený." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Vlastnosti digiKam" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +#, fuzzy +msgid "Occurrence" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +#, fuzzy +msgid "Occurrence ID" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Číslo intervalu" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +#, fuzzy +msgid "Occurrence Details" +msgstr "ID Å¡oÅ¡oviek" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Poradové Äíslo" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "Tvorca" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +#, fuzzy +msgid "Organism Quantity" +msgstr "Kvalita obrázka" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "NastaviÅ¥" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "IdentifikaÄné Äíslo výrobku" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Trvanie" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "poloha zaostrenia" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Číslo intervalu" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Model" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +#, fuzzy +msgid "Associated Media" +msgstr "Prispievateľ" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "GPS referencia zemepisnej dĺžky" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "Poradové Äíslo AEB" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +#, fuzzy +msgid "Organism" +msgstr "Orientácia" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Názov záberu" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +#, fuzzy +msgid "Organism Associated Occurrences" +msgstr "Poradové Äíslo AEB" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +#, fuzzy +msgid "Associated Organisms" +msgstr "GPS referencia zemepisnej dĺžky" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +#, fuzzy +msgid "Organism Remarks" +msgstr "Prebieha meranie" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "bitov na vzorku" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "VeÄer" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "bitov na vzorku" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "VeÄer" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +#, fuzzy +msgid "Parent Event ID" +msgstr "VeÄer" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +#, fuzzy +msgid "Event Earliest Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Aktuálny ICC profil" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "mesiac" + +#: src/properties.cpp:1671 +#, fuzzy +msgid "The ordinal month in which the Event occurred." +msgstr "Názov scény" + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Oneskorenie" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Dátum vytvorenia" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +#, fuzzy +msgid "Sampling Effort" +msgstr "Formát súboru" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "OstrosÅ¥" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +#, fuzzy +msgid "Sampling Size Unit" +msgstr "Formát súboru" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Äíslo F" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +#, fuzzy +msgid "Field Notes" +msgstr "Vlastnosti digiKam" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Umiestnenie" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Spojitý" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Å tát/provincia" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Krajina" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Kvalita" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Umiestnenie" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +#, fuzzy +msgid "Maximum Depth In Meters" +msgstr "Dátum Minolta" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Kód umiestnenia" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "GPS VzdialenosÅ¥ cieľa" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +# exif-gpslongitude +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "GPS zemepisná dĺžka" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "ReferenÄný dátum" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "ReferenÄný dátum" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "ReferenÄná služba" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "ReferenÄné Äíslo" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Informácie o snímke" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "Äíslo F" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "ÄŒervené oÄi" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Model" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Model" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Identifikátor" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Identifikátor" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "GPS Smer obrázka" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Model" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +#, fuzzy +msgid "Identification Qualifier" +msgstr "Model" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Stav GPS" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +#, fuzzy +msgid "Original Name Usage ID" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Názov dokumentu" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +#, fuzzy +msgid "Parent Name Usage" +msgstr "Názvy plôch" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +#, fuzzy +msgid "Original Name Usage" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +#, fuzzy +msgid "Name According To" +msgstr "Posunitie záznamu" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Vydavateľ" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +#, fuzzy +msgid "The four-digit year in which the scientificName was published." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "Elektromagnetické zväÄÅ¡enie" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "poradie vypĺňania" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +#, fuzzy +msgid "Vernacular Name" +msgstr "Číslo stopy" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Prirodzená farba" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Zdroj súboru" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "blok obrazových prostriedkov" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Zdroj súboru" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +#, fuzzy +msgid "Measurement Or Fact" +msgstr "Interoperabilita merania" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Prebieha meranie" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +#, fuzzy +msgid "Measurement Type" +msgstr "Prebieha meranie" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Prebieha meranie" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +#, fuzzy +msgid "Measurement Accuracy" +msgstr "Interoperabilita merania" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +#, fuzzy +msgid "Measurement Unit" +msgstr "Interoperabilita merania" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +#, fuzzy +msgid "Measurement Determined Date" +msgstr "Interoperabilita merania" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +#, fuzzy +msgid "Measurement Determined By" +msgstr "Interoperabilita merania" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "GPS Režim merania" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +#, fuzzy +msgid "Measurement Remarks" +msgstr "Prebieha meranie" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Názov scény" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Dátum a Äas" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Meno autora alebo autorov" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +#, fuzzy +msgid "Notes" +msgstr "Vlastnosti digiKam" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Kategória" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Režim rozlíšenia" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Režim rozlíšenia" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Režim automatického zaostrenia" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Režim automatického zaostrenia" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Nastavenia zaostrenia" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Nastavenia zaostrenia" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Rozsah Å¡oÅ¡oviek:" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Rozsah ohniskovej vzdialenosti Å¡oÅ¡oviek" + +# exif-lightsource-11 +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Tieň" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Svetlé miesta" + +#: src/sigmamn.cpp:104 +#, fuzzy +msgid "Fill Light" +msgstr "nedostupné" + +#: src/sigmamn.cpp:105 +#, fuzzy +msgid "X3 Fill light" +msgstr "Spustí sa blesk" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Úprava farieb" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Úprava farieb" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Režim úprav" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Režim úprav" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Automatická uzávierka" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Automatický viacnásobný záber" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Neznáma znaÄka SigmaMakerNote" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "NoÄná scéna" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "NoÄný portrét" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Portrét" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "pomalá uzávierka" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "ISO citlivosÅ¥" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "panoráma" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "Režim obrázka" + +#: src/sonymn.cpp:170 +#, fuzzy +msgid "Backlight Correction HDR" +msgstr "Bez korekcie" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "Priblíženie makro" + +# exif-sharpness-1 +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "mäkký" + +#: src/sonymn.cpp:174 +#, fuzzy +msgid "3D Image" +msgstr "JedineÄný ID obrázka" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "Spojitý" + +#: src/sonymn.cpp:190 +#, fuzzy +msgid "On (Shooting)" +msgstr "Režim fotenia" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +# exif-lightsource-15 +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "biela, fluorescenÄná" + +# exif-lightsource-15 +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "biela, fluorescenÄná" + +# exif-lightsource-13 +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "biely deň, fluorescenÄné" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Inkadescentné" + +# exif-lightsource-15 +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "biela, fluorescenÄná" + +#: src/sonymn.cpp:221 +#, fuzzy +msgid "Underwater 1 (Blue Water)" +msgstr "pod vodou" + +#: src/sonymn.cpp:222 +#, fuzzy +msgid "Underwater 2 (Green Water)" +msgstr "pod vodou" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "v strede" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Bodový" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +#, fuzzy +msgid "Touch AF" +msgstr "VB jedným dotykom" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "RuÄné zaostrenie" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "Nepodarilo sa preÄítaÅ¥" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "Automatické zaostrenie" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "Režim dávky" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "Šírka súvisiaceho obrázka" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "Výška obrázka" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "automatický vysoký" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "Informácie o snímke" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "ID modelu" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "Redukcia farebného Å¡umu" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +#, fuzzy +msgid "Dynamic Range Optimizer" +msgstr "Nastavenie dynamického rozsahu" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Dátum Minolta" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "VeľkosÅ¥ obrázka" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "Kvalita" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Dátum vydania" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Poradové Äíslo (ak je zo spojitého záberu)" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Zabránenie rozostrenia" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "Redukciu Å¡umu dlhej expozície" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +#, fuzzy +msgid "Intelligent Auto" +msgstr "Dĺžka intervalu" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "Neznáma znaÄka SonyMakerNote" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "Spojitý, vysoký" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "Spojitý, nízky" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "Optimalizácia obrázka" + +#: src/sonymn.cpp:536 +#, fuzzy +msgid "Autumn" +msgstr "Auto" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Auto (blesk)" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +#, fuzzy +msgid "Dynamic Range Optimizer Level" +msgstr "Nastavenie dynamického rozsahu" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Dátum vytvorenia" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "Hodnota jasu" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "rýchla uzávierka" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Vysoká redukcia Å¡umu ISO" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Typ obrázka" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 1" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Neznáma znaÄka Nastavenie fotoaparátu Canon 2" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Neznáma sekcia" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Å truktúra obrazových údajov" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Posunitie záznamu" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Charakteristika obrazových dát" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Iné údaje" + +#: src/tags.cpp:193 +#, fuzzy +msgid "Exif data structure" +msgstr "Å truktúra obrazových údajov" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Konfigurácia obrázka" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Informácie o používateľovi" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Súviasiaci súbor" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Dátum a Äas" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Podmienky zachytenia obrázka" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Informácie GPS" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Informácie o interoperabilite" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Å pecifické informácie dodávateľa" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "ZnaÄky Adobe DNG" + +#: src/tags.cpp:204 +#, fuzzy +msgid "Panasonic RAW tags" +msgstr "Neznáma znaÄka PanasonicMakerNote" + +#: src/tags.cpp:205 +#, fuzzy +msgid "TIFF/EP tags" +msgstr "ID Å¡tandardu TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +#, fuzzy +msgid "Adobe OPI tags" +msgstr "ZnaÄky Adobe DNG" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Posledná sekcia" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Primárny obrázok" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Náhľad" + +#: src/tags.cpp:226 +#, fuzzy +msgid "Primary image, Multi page file" +msgstr "Primárny obrázok" + +#: src/tags.cpp:227 +#, fuzzy +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Náhľad" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "" + +#: src/tags.cpp:229 +#, fuzzy +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Náhľad" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +#, fuzzy +msgid "Full-resolution image data" +msgstr "Nepodarilo sa naÄítaÅ¥ obrazové údaje" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "palce" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Group 3 Fax" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Group 4 Fax" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG ÄŒB" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG farby" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Kompresia Epson ERF" + +#: src/tags.cpp:263 +#, fuzzy +msgid "Samsung SRW Compressed" +msgstr "Kompresia Epson ERF" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linework RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "IT8 Jednofarebný obrázok" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 Binárne Äiarové umenie" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +#, fuzzy +msgid "Pixar Deflate" +msgstr "Adobe deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Kompresia Nikon NEF" + +#: src/tags.cpp:280 +#, fuzzy +msgid "Kodak DCR Compressed" +msgstr "Kompresia Epson ERF" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Kompresia Pentax PEF" + +#: src/tags.cpp:286 +#, fuzzy +msgid "White Is Zero" +msgstr "ÄŒierna je nula" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "ÄŒierna je nula" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "RGB paleta" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +#, fuzzy +msgid "Color Filter Array" +msgstr "Farebný filter" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Lineárny Raw" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "Bežné spracovanie" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "hore, vľavo" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "hore, vpravo" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "dolu, vpravo" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "dolu. vľavo" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "hore, vľavo" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "vpravo, hore" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "vpravo, dolu" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "vľavo, dolu" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +#, fuzzy +msgid "not CMYK" +msgstr "CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "Nepodporovaný formát dátumu" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "nedefinované" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "" + +#: src/tags.cpp:352 +msgid "B" +msgstr "" + +#: src/tags.cpp:353 +msgid "C" +msgstr "" + +# AF = automatické zaostrenie +#: src/tags.cpp:354 +#, fuzzy +msgid "A+B-C" +msgstr "AZ-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Vystrednený" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Spolu umiestnený" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Bez blesku" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Spustil sa, vracajúci sa impulz svetla nebol detekovaný." + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Spustil sa, vracajúci sa impulz svetla bol detekovaný." + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Ãno, blesk sa nespustil" + +#: src/tags.cpp:373 +#, fuzzy +msgid "Yes, compulsory" +msgstr "Ãno, povinný režim blesku, korekcia Äervených oÄí" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Ãno, povinný režim blesku, vracajúce sa svetlo nedetekované." + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Ãno, povinný režim blesku, vracajúce sa svetlo detekované." + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Nie, nespustil sa, vracajúci sa impulz svetla nebol detekovaný." + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Nie, automaticky" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Ãno, automaticky" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Ãno, vracajúci sa impulz svetla nebol detekovaný." + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Ãno, automaticky, vracajúci sa impulz svetla bol detekovaný." + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Bez funkcie blesku." + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Nie, bez funkcie blesku." + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Ãno, korekcia Äervených oÄí" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Ãno, korekcia Äervených oÄí, vracajúce sa svetlo nedetekované." + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Ãno, korekcia Äervených oÄí, vracajúce sa svetlo detekované." + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Ãno, povinný režim blesku, korekcia Äervených oÄí" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" +"Ãno, povinný režim blesku, korekcia Äervených oÄí, vracajúce sa svetlo " +"nedetekované." + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" +"Ãno, povinný režim blesku, korekcia Äervených oÄí, vracajúce sa svetlo " +"detekované." + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Nie, korekcia Äervených oÄí" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Nie, automaticky, korekcia Äervených oÄí" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Ãno, automaticky, korekcia Äervených oÄí" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" +"Ãno, automaticky, korekcia Äervených oÄí, vracajúce sa svetlo nedetekované." + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" +"Ãno, automaticky, korekcia Äervených oÄí, vracajúce sa svetlo detekované." + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Softvér použitý na spracovanie" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Nový typ podsúboru" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "VÅ¡eobecné oznaÄenie údajov obsiahnutých v tomto podsúbore." + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "Nový typ podsúboru" + +#: src/tags.cpp:416 +#, fuzzy +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "VÅ¡eobecné oznaÄenie údajov obsiahnutých v tomto podsúbore." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"PoÄet stĺpcov obrazových údajov rovný poÄtu pixelov na riadok. V JPEG " +"komprimovaných dátach sa namiesto tejto znaÄky používa JPEG znaÄka." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"PoÄet riadkov obrazových údajov rovný poÄtu pixelov na stĺpec. V JPEG " +"komprimovaných dátach sa namiesto tejto znaÄky používa JPEG znaÄka." + +# exif-bitspersample +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "bitov na vzorku" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"PoÄet bitov na obrazovú zložku. V tomto Å¡tandarde má každá zložka 8 bitov, " +"takže hodnota tejto znaÄky je 8. Pozri aj . V JPEG " +"komprimovaných dátach sa namiesto tejto znaÄky používa JPEG znaÄka." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Kompresná schéma použitá na obrazové dáta. KeÄ je primárny obrázok " +"komprimovaný ako JPEG, tento údaj nie je potrebný a vynecháva sa. Ak náhľady " +"používajú JPEG kompresiu, hodnota tejto znaÄky je 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Kompozícia pixelov. V JPEG komprimovaných dátach sa namiesto tejto znaÄky " +"používa JPEG znaÄka." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "OrezaÅ¥ šírku" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Dĺžka dlaždice" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "poradie vypĺňania" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Názov dokumentu" + +#: src/tags.cpp:460 +#, fuzzy +msgid "The name of the document from which this image was scanned" +msgstr "Dátum, kedy bol titul vydaný" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Znakový reÅ¥azec udávajúci nadpis obrázka. Môže to byÅ¥ komentár ako \"rodinný " +"piknik 1988\" alebo podobne. Dvojbajtové znakové sady nie je možné použiÅ¥. " +"KeÄ je potrebná dvojbajtová znaková sada, použite Privátnu znaÄku Exif " +"." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Výrobca záznamového zariadenia. Toto je výrobca digitálneho fotoaparátu, " +"skenera, videodigitalizátora alebo iného zariadenia, ktoré vytvorilo " +"obrázok. KeÄ je pole prázdne, výrobca je neznámy." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Názov alebo Äíslo modelu zariadenia. Toto je model digitálneho fotoaparátu, " +"skenera, videodigitalizátora alebo iného zariadenia, ktoré vytvorilo " +"obrázok. KeÄ je pole prázdne, model je neznámy." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Pre každý prúžok, ofset prúžka v bajtoch. OdporúÄa sa ho zvoliÅ¥ tak, aby " +"poÄet bajtov prúžka neprekroÄil 60 kilobajtov. Pri JPEG komprimovaných " +"dátach tento údaj nie je potrebný a vynechá sa. Pozri aj a " +"." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Orientácia obrázka vzhľadom na riadky a stĺpce." + +# exif-samplesperpixel +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "vzoriek na pixel" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"PoÄet zložiek na pixel. KeÄže tento Å¡tandard sa vzÅ¥ahuje na RGB a YCbCr " +"obrázky, hodnota tejto znaÄky je 3. V JPEG komprimovaných dátach sa namiesto " +"tejto znaÄky používa JPEG znaÄka." + +# exif-rowsperstrip +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "riadkov na prúžok" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"PoÄet riadkov na prúžok. Toto je poÄet obrazových riadkov v jednom prúžku, " +"keÄ sa obrázok delí na prúžky. Pri JPEG komprimovaných dátach tento údaj nie " +"je potrebný a vynechá sa. Pozri aj a ." + +# exif-stripbytecounts +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "bajtov na komprimovaný prúžok" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"Celkový poÄet bajtov na každý komprimovaný prúžok. Pre JPEG komprimované " +"dáta tento údaj nie je potrebný a vynechá sa." + +# exif-xresolution +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "vodorovné rozlíšenie" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"PoÄet pixelov na v smere . KeÄ je rozlíšenie " +"obrázka neznáme, použije sa 72 [dpi]." + +# exif-xresolution +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "zvislé rozlíšenie" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"PoÄet pixelov na v smere . Použije sa rovnaká " +"hodnota ako ." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"OznaÄuje, Äi sa obrazové zložky zaznamenávajú v kúskovom alebo rovinnom " +"formáte. V JPEG komprimovaných dátach sa namiesto tejto znaÄky používa JPEG " +"znaÄka. Ak toto pole neexistuje, Å¡tandardná hodnota pre TIFF sa predpokladá " +"1 (kúskový)." + +# AF = automatické zaostrenie +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "bod automatického zaostrenia" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +#, fuzzy +msgid "Gray Response Curve" +msgstr "Krivka tónu" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "Voľba" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "Voľba" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Jednotka pre meranie and . Rovnaká jednotka sa " +"používa pre aj . Ak je rozlíšenie obrázka " +"neznáme, použije sa 2 (palce)." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Číslo obrázka" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Dátum, kedy bol titul vydaný" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Prenosová funkcia obrázka, popísaná tabuľkou. Bežne táto znaÄka nie je " +"potrebná, keÄže farebný priestor je uvedený v informaÄnej znaÄke farebného " +"priestoru ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Táto znaÄka zaznamenáva názov a verziu softvéru alebo firmvéru fotoaparátu " +"alebo zariadenia, ktoré bolo použité pri tvorbe obrázka. Podrobný formát nie " +"je Å¡pecifikovaný, ale odporúÄa sa dodržiavaÅ¥ formát ako v dolu uvedenom " +"príklade. KeÄ je pole prázdne, verzia je neznáma." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Dátum a Äas vytvorenia obrázka. V tomto Å¡tandarde (EXIF-2.1) je to dátum a " +"Äas zmeny súboru." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Táto znaÄka zaznamenáva vlastníka fotoaparátu, fotografa alebo tvorcu " +"obrázka. Presný formát nie je Å¡pecifikovaný, ale odporúÄa sa, aby kvôli " +"interoperabilite bola informácia zapísaná ako v dolu uvedenom príklade. KeÄ " +"je pole prázdne, umelec je neznámy. Príklad: \"Camera owner, John Smith; " +"Photographer, Michael Brown; Image creator, Ken James\"" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +#, fuzzy +msgid "Predictor" +msgstr "Pôvodca" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Chromaticita bieleho bodu obrázka. Bežne nie je táto znaÄka potrebná, keÄže " +"farebný priestor je uvedený v informaÄnej znaÄke farebného priestoru " +"()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Chromaticity troch primárnych farieb obrázka. Bežne nie je táto znaÄka " +"potrebná, keÄže farebný priestor je uvedený v informaÄnej znaÄke farebného " +"priestoru ()." + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Matica farieb" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Šírka dlaždice" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Dĺžka dlaždice" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +# exif-stripoffsets +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Ofsety dlaždíc" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +# exif-stripbytecounts +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "PoÄet bajtov dlaždice" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "Umiestnenie SubIFD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "Definovala Adobe Corporation aby umožnila TIFF stromy v TIFF súboroch." + +#: src/tags.cpp:612 +#, fuzzy +msgid "Ink Set" +msgstr "NastaviÅ¥" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Meno vlastníka" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "PoÄet stránok" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Dynamický rozsah" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "Cieľová clona" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "bitov na vzorku" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Formát súboru" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "OstrosÅ¥" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "Max. hodnota clony" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "prenosový rozsah" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "JPEG proces" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "JPEG proces" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +# exif-jpeginterchangeformat +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "formát JPEG" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"Ofset k zaÄiatoÄnému bajtu (SOI) komprimovaných JPEG dát náhľadu. Nepoužíva " +"sa pre JPEG dáta primárneho obrázka." + +# exif-jpeginterchangeformatlength +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "dĺžka JPEG dát" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"PoÄet bajtov komprimovaných JPEG dát náhľadu. Nepoužíva sa pre JPEG dáta " +"primárneho obrázka. JPEG náhľady sa nerozdeľujú ale zaznamenávajú sa ako " +"súvislý bitový tok JPEG od SOI po EOI. ZnaÄky Appn a COM sa nezaznamenávajú. " +"Komprimované náhľady nesmú byÅ¥ zaznamenané vo viac ako 64 kilobajtoch " +"vrátane vÅ¡etkých ostatných dát zaznamenaných v APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +#, fuzzy +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Táto znaÄka oznaÄuje smer spracovania ostrosti, ktorý použil fotoaparát pri " +"zachytení obrázka." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "JPEG proces" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +#, fuzzy +msgid "JPEG DC-Tables" +msgstr "JPEG proces" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +#, fuzzy +msgid "JPEG AC-Tables" +msgstr "JPEG proces" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Matica koeficientov transformácie obrazových dát z RGB na YCbCr. V TIFF nie " +"je definovaná Å¡tandardná hodnota; ale tu sa používa hodnota uvedená v " +"Prílohe E, \"Pokyny ohľadne farebného priestoru\". Farebný priestor je " +"deklarovaný informaÄnou znaÄkou farebného priestoru, priÄom Å¡tandardnou " +"hodnotou je tá, ktorá dáva optimálnu charakteristiku interoperability tohto " +"stavu." + +# exif-ycbcrsubsampling +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "podvzorkovanie YCbCr" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Vzorkovací pomer zložiek chrominancie v pomere k svietivosti. V dátach " +"komprimovaných JPEG sa namiesto tejto znaÄky používa znaÄka JPEG." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"Poloha zložiek chrominancie vzhľadom ku zložke svietivosti. Toto pole je " +"urÄené iba pre komprimované dáta JPEG alebo nekomprimované dáta YCbCr. " +"Å tandard TIFF je 1 (centrované), ale keÄ Y:Cb:Cr = 4:2:2 odporúÄa sa v tomto " +"Å¡tandarde použiÅ¥ pre záznam dát 2 (na rovnakom mieste), aby sa zlepÅ¡ila " +"kvalita obrazu pri zobrazovaní na televíznych systémoch. KeÄ toto pole " +"neexistuje, Äítacie zariadenie bude predpokladaÅ¥ Å¡tandard TIFF. V prípade, " +"že Y:Cb:Cr = 4:2:0 sa odporúÄa Å¡tandard TIFF (centrované). Ak Äítacie " +"zariadenie nedokáže naraz podporovaÅ¥ oba druhy , bude sa " +"držaÅ¥ Å¡tandardu TIFF nezávisle od hodnoty v tomto poli. Uprednostňuje sa, " +"aby Äítacie zariadenia podporovali obe polohy - centrované aj na rovnakom " +"mieste." + +# exif-referenceblackwhite +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "referenÄná Äierna/biela" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"ReferenÄná hodnota Äierneho bodu a referenÄná hodnota bieleho bodu. TIFF " +"neudáva Å¡tandardné hodnoty, ale nižšie uvedené hodnoty sú tu dané ako " +"Å¡tandardy. Farebný priestor sa deklaruje v informaÄnej znaÄke farebného " +"priestoru, priÄom Å¡tandardnou hodnotou je tá, ktorá dáva optimálnu " +"charakteristiku interoperability tohto stavu." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "XML paket" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Windows hodnotenie" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +#, fuzzy +msgid "Windows Rating Percent" +msgstr "Percentá hodnotenia" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "JedineÄný ID obrázka" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"OznaÄuje geometrickú vzorku poľa farebného filtra (CFA) obrazového snímaÄa " +"pri použítí jednoÄipového farebného snímaÄa oblasti. NevzÅ¥ahuje sa na vÅ¡etky " +"metódy snímania." + +#: src/tags.cpp:770 +#, fuzzy +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Informácia o autorských právach. V tomto Å¡tandarde znaÄka oznaÄuje aj práva " +"fotografa aj redaktora. Je to informácia o autorských právach osoby Äi " +"organizácie, ktorá si nárokuje práva na obrázok. Do tohto poľa patrí " +"vyhlásenie autorských práv vrátane dátumu; napr. \"Copyright, John Smith, " +"20xx. VÅ¡etky práva vyhradené.\". V tomto Å¡tandarde pole obsahuje ako " +"autorské práva fotografa, tak aj redaktora, priÄom každé je samostatnou " +"ÄasÅ¥ou záznamu. KeÄ existuje jasný rozdiel medzi autorskými právami " +"fotografa a redaktora, majú byÅ¥ zapísané v poradí najskôr fotograf, potom " +"redaktor, oddelené znakom NULL (v takom prípade, keÄže znaÄka tiež konÄí " +"znakom NULL, obsahuje dva znaky NULL) (pozri príklad 1). KeÄ sa udáva iba " +"fotograf, je ukonÄené iba jedným znakom NULL (pozri príklad 2). KeÄ je pole " +"nevyplnené, zaobchádza sa s ním ako s neznámym." + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "ÄŒas expozície v sekundách (sek)." + +# exif-fnumber +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "Äíslo F." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "Obsahuje IPTC/NAA nahrávku" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "blok obrazových prostriedkov" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"Ukazovateľ na Exif IFD. Interoperabilita, Exif IFD má rovnakú Å¡truktúru ako " +"Å¡truktúra IFD podľa Å¡pecifikácie v TIFF. Bežne vÅ¡ak neobsahuje obrazové dáta " +"ako v prípade Å¡truktúry v TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Farebný profil Inter" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"Trieda programu, ktorý fotoaparát používa na nastavenie expozície pri fotení " +"obrázka." + +#: src/tags.cpp:807 +#, fuzzy +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "EXIF znaÄka 34852, 0x8824. Spektrálna citlivosÅ¥ každého kanála" + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"Ukazovateľ na GPS Info IFD. Å truktúra interoperability GPS Info IFD, rovnako " +"ako pri Exif IFD, neobsahuje obrazové dáta." + +# exif-isospeedratings +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "rýchlostné ohodnotenie ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"OznaÄuje ISO rýchlosÅ¥ a ISO zemepisnú šírku fotoaparátu alebo vstupného " +"zariadenia podľa Å¡pecifikácie ISO 12232." + +#: src/tags.cpp:814 +#, fuzzy +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"EXIF znaÄka 34856, 0x8828. Opto-elektronická konverzná funkcie podľa " +"Å¡pecifikácie ISO 14524" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Prekladaný" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Indicates the field number of multifield images." +msgstr "Rozloženie obrázka." + +# exif-stripoffsets +#: src/tags.cpp:816 +#, fuzzy +msgid "Time Zone Offset" +msgstr "Ofsety dlaždíc" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "Samospúšť" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Dátum a Äas zhotovenia" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "Dátum a Äas, kedy boli metadáta naposledy zmenené." + +#: src/tags.cpp:825 +#, fuzzy +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" +"Informácia Å¡pecifická komprimovaným dátam. Režim kompresie použitý na " +"komprimovaný obrázok sa oznaÄuje v jednotkách bity na pixel." + +# exif-shutterspeedvalue +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "rýchlosÅ¥ uzávierky" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Max. clona" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "PoÄet úderov." + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Skreslenie expozície" + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Max. hodnota clony" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "Názov scény" + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "VzdialenosÅ¥ subjektu v metroch." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Režim merania." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Druh svetelného zdroja." + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "" +"Táto znaÄka oznaÄuje aký režim vyváženia bielej bol zvolený pri odfotení " +"obrázka." + +#: src/tags.cpp:835 +#, fuzzy +msgid "The actual focal length of the lens, in mm." +msgstr "" +"EXIF znaÄka 37386, 0x920A. Ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v milimetroch" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +#, fuzzy +msgid "Noise" +msgstr "NiÄ" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"PoÄet pixelov na v smere . Použije sa rovnaká " +"hodnota ako ." + +#: src/tags.cpp:840 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"PoÄet pixelov na v smere . Použije sa rovnaká " +"hodnota ako ." + +#: src/tags.cpp:841 +#, fuzzy +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"EXIF znaÄka 41488, 0xA210. Jednotka pre FocalPlaneXResolution a " +"FocalPlaneYResolution" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "Elektromagnetické zväÄÅ¡enie" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security classification assigned to the image." +msgstr "Elektromagnetické zväÄÅ¡enie" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +#, fuzzy +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" +"Táto znaÄka oznaÄuje polohu a plochu hlavného subjektu v celkovej scéne." + +#: src/tags.cpp:846 +#, fuzzy +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" +"Táto znaÄka oznaÄuje expoziÄný index zvolený na fotoaparáte alebo vstupnom " +"zariadení v Äase zachytenia obrázka." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "ID Å¡tandardu TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +#, fuzzy +msgid "Type of image sensor." +msgstr "PoÄet obrázkov" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Názov okna" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Windows Komentár" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Windows autor" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Windows kľúÄové slová" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Windows predmet" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "Verzia DNG" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "Spätná verzia DNG" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "JedineÄný model fotoaparátu" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Lokalizovaný model fotoaparátu" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "Farba CFA roviny" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "Úroveň Äiernej - stlmenie opakovania" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "Úroveň Äiernej - vodorov. rozdiel" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "Úroveň Äiernej - zvis. rozdiel" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Úroveň bielej" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "Å tandardná Å¡kála" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Å tandardná Å¡kála" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Matica farieb 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Matica farieb 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Kalibrácia fotoaparátu 1" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +#, fuzzy +msgid "Camera Calibration 2" +msgstr "Kalibrácia fotoaparátu 1" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +#, fuzzy +msgid "Reduction Matrix 1" +msgstr "Matica farieb 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +#, fuzzy +msgid "Reduction Matrix 2" +msgstr "Matica farieb 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Analógové vyváženie" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Neutrálny, ako nafotený" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "Viacnásobná expozícia" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +#, fuzzy +msgid "Baseline Noise" +msgstr "Viacnásobná expozícia" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "OstrosÅ¥" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Info o Å¡oÅ¡ovkách" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "Sila antialiasingu" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +# exif-lightsource-11 +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "Tieň" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "Privátne údaje DNG" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "Poistka Poznámky výrobcu" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "Bez korekcie" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "Å tandardná Å¡kála" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "JedineÄný ID nespracovaných údajov" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +#, fuzzy +msgid "Original Raw File Data" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +# exif-subjectarea +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Aktívna oblasÅ¥" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Maskované oblasti" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "ICC profil ako bolo nafotené" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +#, fuzzy +msgid "As-Shot Pre-Profile Matrix" +msgstr "ICC profil ako bolo nafotené" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Aktuálny ICC profil" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +#, fuzzy +msgid "Current Pre-Profile Matrix" +msgstr "Aktuálny ICC profil" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "GPS referencia zemepisnej dĺžky" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "Kalibrácia fotoaparátu 1" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +#, fuzzy +msgid "Profile Calibration Signature" +msgstr "Bez korekcie" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "ICC profil ako bolo nafotené" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Redukcia Å¡umu" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Názvy plôch" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Krivka tónu" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Copyright" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Matica farieb 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Matica farieb 2" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Dáta náhľadu" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "Verzia náhľadu" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "ZobraziÅ¥ vložený obrázok" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +# exif-devicesettingdescription +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "opis nastavení zariadenia" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Farebný priestor videa" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Dáta náhľadu" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "PoÄet obrázkov" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +#, fuzzy +msgid "Original Raw File Digest" +msgstr "Názov nespracovaného pôvodného súboru" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Farebný filter" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Neznáma znaÄka IFD" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "nedefinované" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Tvorivý program" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "AkÄný program" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Režim portrét" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Režim krajinka" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Viacbodový" + +# exif-lightsource-3 +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "volfram (inkadescentné svetlo)" + +# exif-lightsource-9 +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "pekné poÄasie" + +# exif-lightsource-10 +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "oblaÄné poÄasie" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "denné svetlo fluorescenÄné (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "biely deň, fluorescenÄné (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "chladné biele fluorescenÄné (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "biele fluorescenÄné (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Å tandardné svetlo A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Å tandardné svetlo B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Å tandardné svetlo C" + +# exif-lightsource-20 +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +# exif-lightsource-21 +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +# exif-lightsource-22 +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +# exif-lightsource-24 +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "ISO Å¡túdiový volfrám" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Iný svetelný zdroj" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Nekalibrované" + +# exif-sensingmethod-2 +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "jednoÄipový farebný snímaÄ oblasti" + +# exif-sensingmethod-3 +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "dvojÄipový farebný snímaÄ oblasti" + +# exif-sensingmethod-4 +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "trojÄipový farebný snímaÄ oblasti" + +# exif-sensingmethod-5 +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "sekvenÄný farebný snímaÄ oblasti" + +# exif-sensingmethod-7 +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "trilineárny snímaÄ" + +# exif-sensingmethod-5 +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "sekvenÄný farebný snímaÄ oblasti" + +#: src/tags.cpp:1477 +#, fuzzy +msgid "Film scanner" +msgstr "Názov súboru" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "digitálny fotoaparát" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Bežné spracovanie" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Vlastné spracovanie" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Slabé zosilnenie" + +# exif-gaincontrol-2 +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "vysoké zosilnenie" + +# exif-gaincontrol-3 +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "nízke zoslabenie" + +# exif-gaincontrol-4 +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "vysoké zoslabenie" + +# exif-subjectdistancerange-2 +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "pohľad zblízka" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Vzdialený pohľad" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "ÄŒas expozície v sekundách (sek)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"OznaÄuje spektrálnu citlivosÅ¥ každého z kanálov použitého fotoaparátu. " +"Hodnota znaÄky je ASCII reÅ¥azec kompatibilný so Å¡tandardom vyvinutým " +"Technickou komisiou ASTM." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +# exif-oecf +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"OznaÄuje optoelektronickú konverznú funkciu (OECF) podľa Å¡pecifikácie ISO " +"14524. je vzÅ¥ah medzi optickým vstupom fotoaparátu a hodnotami " +"obrázka." + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "ISO citlivosÅ¥" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Spektrálna citlivosÅ¥:" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Index expozície" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "Režim ISO rýchlosÅ¥" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "Režim ISO rýchlosÅ¥" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"Podporovaná verzia tohto Å¡tandardu. Neexistencia tohto poľa znamená " +"nekonformnosÅ¥ so Å¡tandardom." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Dátum a Äas (pôvodný)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Dátum a Äas, kedy boli vytvorené pôvodné obrazové dáta. Pre digitálny " +"fotoaparát je to dátum a Äas zachytenia a zaznamenania obrázka." + +# exif-datetimedigitized +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "dátum a Äas digitalizácie" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Dátum a Äas, kedy bol obrázok uložený ako digitálne dáta." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Informácia Å¡pecifická pre kompresné dáta. Kanály každej zložky sú zoradené v " +"poradí d 1. po 4. zložku. Pre nekomprimované dáta je poradie dát dané " +"znaÄkou . AvÅ¡ak keÄže " +"dokáže vyjadriÅ¥ iba poradie Y, Cb a táto znaÄka je použiteľná v prípadoch, " +"kedy komprimované dáta používajú iné komponenty ako Y, Cb, a Cr a na to, aby " +"sa umožnila podpora iných poradí." + +# exif-compressedbitsperpixel +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "komprimované bity na pixel" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Informácia Å¡pecifická komprimovaným dátam. Režim kompresie použitý na " +"komprimovaný obrázok sa oznaÄuje v jednotkách bity na pixel." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"RýchlosÅ¥ uzávierky. Jednotka je nastavenie APEX (Aditívny systém " +"fotografickej expozície)." + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Clona. Jednotka je hodnota APEX." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Hodnota jasu. Jednotka je hodnota APEX. Bežne sa udáva v rozsahu -99.99 až " +"99.99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Skreslenie expozície" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"ExpoziÄné skreslenie. Jednotka je hodnota APEX. Bežne sa udáva v rozsahu " +"-99.99 až 99.99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"NajmenÅ¡ie Äíslo F Å¡oÅ¡oviek. Jednotka je hodnota APEX. Bežne sa udáva v " +"rozsahu -99.99 až 99.99." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" +"Táto znaÄka sa zaznamenáva, keÄ je obrázok odfotený pri impulznom svetle " +"(blesk)." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"SkutoÄná ohnisková vzdialenosÅ¥ Å¡oÅ¡oviek v mm. Nerobí sa konverzia na " +"ohniskovú vzdialenosÅ¥ fotoaparátu s 35 mm filmom." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" +"Táto znaÄka oznaÄuje polohu a plochu hlavného subjektu v celkovej scéne." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Poznámka výrobcu" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"ZnaÄka pre výrobcov zariadení zapisujúcich EXIF informácie pre uloženie " +"akejkoľvek potrebnej informácie. Obsah je na výrobcovi." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +#, fuzzy +msgid "Sub-seconds Time" +msgstr "Pôvodný Äas - zlomky sekundy" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "ZnaÄka, ktorá sa používa na záznam zlomkov sekundy znaÄky ." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Pôvodný Äas - zlomky sekundy" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"ZnaÄka, ktorá sa používa na záznam zlomkov sekundy znaÄky ." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "ÄŒas digitalizácie - zlomky sekundy" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"ZnaÄka, ktorá sa používa na záznam zlomkov sekundy znaÄky " +"." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "Verzia FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "Verzia FlashPix formátu podporovaná FPXR súborom." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"ZnaÄka informácie o farebnom priestore je vždy zaznamenaná ako Å¡pecifikátor " +"farebného priestoru. Normálne sa na definíciu farebného priestoru používa " +"sRGB (=1) na základe podmienok a prostredia PC monitora. Ak je použitý iný " +"farebný priestor ako sRGB, nastaví sa Nekalibrovaný (=FFFF.H). S obrazovými " +"údajmi zaznamenanými ako Nekalibrované je možné pracovaÅ¥ ako s sRGB keÄ sa " +"skonvertujú na FlashPix." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Informácia Å¡pecifická komprimovaným dátam. KeÄ sa zaznamená komprimovaný " +"súbor, platná šírka zmysluplného obrázka sa musí zaznamenaÅ¥ do tejto znaÄky, " +"Äi je alebo nie je prítomná výplň alebo znaÄka reÅ¡tart. Táto znaÄka by " +"nemala existovaÅ¥ v nekomprimovanom súbore." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Informácia Å¡pecifická komprimovaným dátam. KeÄ sa zaznamená komprimovaný " +"súbor, platná výška zmysluplného obrázka sa musí zaznamenaÅ¥ do tejto znaÄky, " +"Äi je alebo nie je prítomná výplň alebo znaÄka reÅ¡tart. Táto znaÄka by " +"nemala existovaÅ¥ v nekomprimovanom súbore. KeÄže nie je potrebné dopĺňaÅ¥ " +"údaje v zvislom smere, poÄet riadkov zaznamenaných v tejto znaÄke platnej " +"výšky obrázka bude v skutoÄnosti rovnaký ako v SOF." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "IFD ukazovateľ interoperability" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"IFD interoperability sa skladá zo znaÄiek ukladajúcich informácie na " +"zaistenie interoperability a ukazuje naň nasledujúci znaÄku nachádzajúcu sa " +"v Exif IFD. Å truktúra IFD interoperability je rovnaká ako IFD Å¡truktúra " +"definovaná v TIFF, ale neobsahuje obrazové údaje charakteristicky porovnané " +"s normálnym TIFF IFD." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"OznaÄuje energiu elektronického dosvietenia v Äase zachytenia obrázka meranú " +"v Beam Candle Power Seconds (BCPS)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" +"Táto znaÄka zaznamenáva tabuľku priestorovej frekvenÄnej odozvy zariadenia a " +"hodnoty PFO v smere šírky obrázka a v diagonálnom smere podľa Å¡pecifikácie " +"ISO 12233." + +# exif-focalplanexresolution +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "horizontálne rozlíšenie ohniskovej roviny" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"Táto znaÄka oznaÄuje poÄet pixelov šírky obrázka (X) na " +" v ohniskovej rovine fotoaparátu." + +# exif-focalplanexresolution +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "horizontálne rozlíšenie ohniskovej roviny" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Táto znaÄka oznaÄuje poÄet pixelov výšky obrázka (Y) na " +" v ohniskovej rovine fotoaparátu." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"Táto znaÄka oznaÄuje jednotky, v ktorých je merané a " +". Táto hodnota je rovnaká ako ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Táto znaÄka oznaÄuje umiestnenie hlavného subjektu na scéne. Hodnota tejto " +"znaÄky predstavuje pixel v strede hlavného subjektu vzhľadom na ľavý okraj, " +"pred procesom rotácie podľa znaÄky . Prvá hodnota oznaÄuje Äíslo X " +"stĺpca a druhá oznaÄuje Äíslo Y riadka." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "ExpoziÄný index" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Táto znaÄka oznaÄuje expoziÄný index zvolený na fotoaparáte alebo vstupnom " +"zariadení v Äase zachytenia obrázka." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" +"Táto znaÄka oznaÄuje typ obrazového snímaÄa vstupného fotoaparátu alebo " +"vstupného zariadenia." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Táto znaÄka oznaÄuje zdroj obrázka. Ak obrázok zaznamenal DSC, táto znaÄka " +"musí byÅ¥ vždy nastavená na 3, Äo znaÄí, že obrázok bol nahraný na DSC." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Táto znaÄka oznaÄuje typ scény. Ak obrázok zaznamenal DSC, táto znaÄka musí " +"byÅ¥ vždy nastavená na 1, Äo znaÄí, že obrázok bol priamo odfotografovaný." + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Farebný filter" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"OznaÄuje geometrickú vzorku poľa farebného filtra (CFA) obrazového snímaÄa " +"pri použití jednoÄipového farebného snímaÄa oblasti. NevzÅ¥ahuje sa na vÅ¡etky " +"metódy snímania." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Táto znaÄka oznaÄuje použitie Å¡peciálneho spracovania obrazových dát ako " +"spracovanie zamerané na výstup. Po vykonaní Å¡peciálneho spracovania sa od " +"Äítacieho zariadenia oÄakáva, že vypne alebo minimalizuje akékoľvek ÄalÅ¡ie " +"spracovanie." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Táto znaÄka oznaÄuje aký expoziÄný režim bol zvolený pri odfotení obrázka. V " +"režime viacnásobných snímok so zmenou expozície fotoaparát nafotí sériu " +"snímok rovnakej scény pri rozliÄných nastaveniach expozície." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" +"Táto znaÄka oznaÄuje aký režim vyváženia bielej bol zvolený pri odfotení " +"obrázka." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Táto znaÄka oznaÄuje pomer digitálneho priblíženia v Äase zachytenia snímky. " +"Ak je zaznamenaná hodnota 0, nebolo použité digitálne priblíženie." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Táto znaÄka oznaÄuje ohniskovú vzdialenosÅ¥ ekvivalentnú fotoaparátu s 35 mm " +"filmom. Hodnota 0 znamená, že ohnisková vzdialenosÅ¥ je neznáma. VÅ¡imnite si, " +"že táto znaÄka sa líši od znaÄky ." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Táto znaÄka oznaÄuje typ zachytenej scény. Tiež je možné ho použiÅ¥ na " +"zaznamenanie režimu, v ktorom bol obrázok odfotený. VÅ¡imnite si, že táto " +"znaÄka sa líši od znaÄky ." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Táto znaÄka oznaÄuje stupeň celkového zosilnenia obrazu." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Táto znaÄka oznaÄuje smer spracovania kontrastu, ktorý použil fotoaparát pri " +"zachytení obrázka." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Táto znaÄka oznaÄuje smer spracovania sýtosti, ktorý použil fotoaparát pri " +"zachytení obrázka." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Táto znaÄka oznaÄuje smer spracovania ostrosti, ktorý použil fotoaparát pri " +"zachytení obrázka." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Táto znaÄka oznaÄuje informácie o podmienkach fotografovania konkrétnym " +"modelom fotoaparátu. ZnaÄka sa používa iba na oznaÄenie podmienok " +"fotografovania v Äítacom zariadení." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k subjektu." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Táto znaÄka oznaÄuje jedineÄný identifikátor priradený každému obrázku. Je " +"zaznamenaný ako ASCII reÅ¥azec zodpovedajúci hexadecimálnemu zápisu 128-" +"bitového Äísla." + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Meno vlastníka" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Sériové Äíslo" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Å pecifické informácie dodávateľa" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Model Å¡oÅ¡oviek" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Neznáma znaÄka EXIF" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Sever" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Juh" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Východ" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Západ" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "nad hladinou mora" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Pod hladinou mora" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Prebieha meranie" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Interoperabilita merania" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Dvojrozmerné meranie" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Trojrozmerné meranie" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "míľ za hodinu" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "uzlov" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "SkutoÄný smer" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Magnetický smer" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilometrov" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Míľ" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "Uzlov" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Bez korekcie" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "S korekciou" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"OznaÄuje verziu . Verzia sa udáva ako 2.0.0.0. Táto znaÄka je " +"povinný, ak je prítomná znaÄka . (Pozn.: ZnaÄka je " +"uvedená v bajtoch na rozdiel od znaÄky . KeÄ je verzia 2.0.0.0, " +"hodnota znaÄky je 02000000.H)." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "GPS referencia zemepisnej šírky" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"OznaÄuje, Äi je zemepisná šírka severná alebo južná šírka. ASCII hodnota „N“ " +"oznaÄuje severnú šírku a „S“ južnú šírku." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"OznaÄuje zemepisnú šírku. Zemepisná šírka je vyjadrená tromi RACIONÃLNYMI " +"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " +"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " +"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "GPS referencia zemepisnej dĺžky" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"OznaÄuje, Äi je zemepisná dĺžka východná alebo západná dĺžka. ASCII hodnota " +"„E“ oznaÄuje východnú dĺžku a „W“ západnú dĺžku." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"OznaÄuje zemepisnú dĺžku. Zemepisná dĺžka je vyjadrená tromi RACIONÃLNYMI " +"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " +"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " +"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"OznaÄuje nadmorskú výšku, ktorá sa použije ako referenÄná. Ak je referenÄnou " +"hodnotou úroveň hladiny mora a nadmorská výška je nad hladinou mora, udáva " +"sa 0. Ak je nadmorská výška pod hladinou mora, udáva sa hodnota 0 a " +"nadmorská výška sa uvedie ako absolútna hodnota v znaÄke GSPAltitude. " +"ReferenÄná jednotka sú metre. VÅ¡imnite si, že táto znaÄka je typu BAJT na " +"rozdiel od iných referenÄných znaÄiek." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"OznaÄuje nadmorskú výšku na základe referenÄného GPSAltitudeRef. Nadmorská " +"výška je vyjadrená ako jedna RACIONÃLNA hodnota. ReferenÄná jednotka sú " +"metre." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "Stupeň presnosti GPS údajov" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "OznaÄuje rýchlosÅ¥ pohybu GPS prijímaÄa." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "GPS referencia zemepisnej šírky" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"OznaÄuje, Äi je zemepisná šírka severná alebo južná šírka. ASCII hodnota „N“ " +"oznaÄuje severnú šírku a „S“ južnú šírku." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"OznaÄuje zemepisnú šírku. Zemepisná šírka je vyjadrená tromi RACIONÃLNYMI " +"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " +"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " +"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:2041 +#, fuzzy +msgid "GPS Destination Longitude Reference" +msgstr "GPS referencia zemepisnej dĺžky" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"OznaÄuje, Äi je zemepisná dĺžka východná alebo západná dĺžka. ASCII hodnota " +"„E“ oznaÄuje východnú dĺžku a „W“ západnú dĺžku." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"OznaÄuje zemepisnú dĺžku. Zemepisná dĺžka je vyjadrená tromi RACIONÃLNYMI " +"hodnotami udanými v stupňoch, minútach a sekundách. Stupne, minúty a sekundy " +"sú vyjadrené vo formáte ddd/1,mm/1,ss/1. KeÄ sú použité stupne, minúty a " +"napr. zlomky minút sú zadané na dve desatinné miesta, formát je ddd/1," +"mmmm/100,0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +#, fuzzy +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k cieľovému bodu." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Táto znaÄka oznaÄuje vzdialenosÅ¥ k cieľovému bodu." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +#, fuzzy +msgid "GPS Date Stamp" +msgstr "Dátum odoslania" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Neznáma znaÄka GPSInfo" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Index interoperability" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"OznaÄuje identifikáciu Pravidla interoperability. Použite \"R98\" pre " +"vyhlásenie pravidiel ExifR98. Použité Å¡tyri bajty vrátane ukonÄovacieho " +"znaku (NULL). ÄŽalÅ¡ie znaÄky použité v ExifR98 nájdete v samostatnom zväzku " +"Recommended Exif Interoperability Rules (ExifR98)." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Verzia interoperability" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Verzia interoperability" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Súvisiaci formát súboru obrázka" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Formát súboru s obrázkom" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Šírka súvisiaceho obrázka" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Dĺžka súvisiaceho obrázka" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Neznáma EXIF znaÄka Interoperability" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "Ofset" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Endianita" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Neznáma znaÄka Exiv2 MakerNote" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Neznáma znaÄka" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Digitálne priblíženie nebolo použité" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "HlaviÄka TIFF, ofset" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "bajtov" diff --git a/vendor/exiv2-0.25/po/sv.po b/vendor/exiv2-0.25/po/sv.po new file mode 100644 index 0000000..3972d78 --- /dev/null +++ b/vendor/exiv2-0.25/po/sv.po @@ -0,0 +1,27186 @@ +# Swedish translation for exiv2 +# Copyright (C) Andreas Huggel +# This file is distributed under the same license as the exif package. +# Daniel Nylander , 2007, 2008, 2009. +# Arve Eriksson, 2011. +# Josef Andersson , 2015. +# Kommentar frÃ¥n Josef: +# Denna översättning innehÃ¥ller väldigt mÃ¥nga +# specifika textdomäner och facksprÃ¥k. +# Det förekommer med största sannolikhet misstag. +# En del hjälp pÃ¥ vägen. +# Fotoord: http://www.fotoord.se/mediawiki/index.php?title=Huvudsida +# Tagg-referenser http://www.exiv2.org/metadata.html +# TIFF standard http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml +# Dublin Core http://rs.tdwg.org/dwc/terms/ +# Exif v2.2 http://www.exiv2.org/Exif2-2.PDF +# Exif v2.3 http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf +msgid "" +msgstr "" +"Project-Id-Version: exiv2 trunk\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2015-05-22 10:24+0100\n" +"Last-Translator: Josef Andersson \n" +"Language-Team: tp-sv\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.7.5\n" +"X-Launchpad-Export-Date: 2015-04-05 09:56+0000\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Misslyckades med att öppna filen\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Filnamn" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Filstorlek" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Byte" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "MIME-typ" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Bildstorlek" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Inget Exif-data hittades i filen\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Kameratillverkare" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Kameramodell" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "Bildens tidsstämpel" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Bildnummer" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Exponeringstid" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Bländare" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Exponeringskompensation" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Blixt" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Blixtkompensation" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Brännvidd" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "35mm motsvarighet" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "AvstÃ¥nd till motiv" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "ISO-hastighet" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Exponeringsläge" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Mätläge" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Makroläge" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Bildkvalitet" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "Exif-upplösning" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Vitbalans" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Miniatyrbild" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Ingen" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Copyright" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Exif-kommentar" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(Binärvärde dolt)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "JPEG-kommentar" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Förhandsvisa" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "bildpunkter" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "byte" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "Varken tagg" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "eller" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "hittades i filen" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "Bildens tidsstämpel inte angiven i filen" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Misslyckades med att tolka tidsstämpeln" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "i filen" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "Uppdaterar tidsstämpel till" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Raderar miniatyrbildsdata" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Raderar Exif-data frÃ¥n filen" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Raderar IPTC-data frÃ¥n filen" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Raderar JPEG-kommentar frÃ¥n filen" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Raderar XMP-data frÃ¥n filen" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Bilden innehÃ¥ller inte nÃ¥gon Exif-miniatyrbild\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Skriver miniatyrbild" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "till fil" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Exif-data innehÃ¥ller inte en miniatyrbild\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "Bilden innehÃ¥ller inte en miniatyrbild" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Skriver förhandsvisning" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Ställer in JPEG-kommentar" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Lägg till" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Varning" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Misslyckades med att läsa" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "värde" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Ange" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Ta bort" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "Tidsstämpel för metadatum med nyckel" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "ej satt\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Justerar" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "av" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "Ã¥r" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "Ã¥r" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "mÃ¥nader" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "mÃ¥nad" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "dygn" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "dygn" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Kan inte justera tidsstämpel med" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "till" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "Standard Exif ISO-tagg finns; inte ändrad\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Ställer in Exif ISO-värdet till" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Ingen Exif-användarkommentar hittades" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Hittade Exif-användarkommentar med oväntad värdetyp" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Ingen Exif-användarkommentar i UNICODE hittades" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "Sätter Exif-användarkommentaren i UNICODE till" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Skriver Exif-data frÃ¥n" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Skriver IPTC-data frÃ¥n" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Skriver XMP-data frÃ¥n" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Skriver JPEG-kommentar frÃ¥n" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Kunde inte skriva metadata till fil" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Filnamnsformatet anger tomt filnamn för filen" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Denna fil har redan det korrekta namnet" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Fil" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "finns. Skriv över[O], byt namn[r] eller hoppa över[s]?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Byter namn pÃ¥ fil till" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "uppdaterar tidsstämpel" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Misslyckades med att byta namn" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Skriv över" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Av" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "PÃ¥" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Format 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Format 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "PÃ¥ (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "PÃ¥ (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Okänd" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Kamerainställningar" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Olika kamerainställningar" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Brännvidd" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Bildinfo" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Bildinformation" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Bildtyp" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Bildtyp" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Version av fast programvara" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Version av fast programvara" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Filnummer" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Filnummer" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Ägarens namn" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Serienummer" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Kamerans serienummer" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "Kamerainformation" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "Kamerainfo" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "Anpassade funktioner" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "Modell-ID" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "Modell-ID" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Bildinfo" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Bildinformation" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "Giltigt omrÃ¥de för miniatyrbild" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "Giltigt omrÃ¥de för miniatyrbild" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "Serienummerformat" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "Serienummerformat" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Supermakro" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Supermakro" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "AF-information" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "AF-information" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "Ursprunglig beslutsdata-förskjutning" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "Ursprunglig beslutsdata-förskjutning" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Tabell för vitbalans" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Tabell för vitbalans" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "Objektivmodell" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "Objektivmodell" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Internt serienummer" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Internt serienummer" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Dammborttagningsdata" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "Dammborttagningsdata" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "Anpassade funktioner" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "Behandlingsinfo" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "Behandlingsinformation" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "Uppmätt färg" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "Uppmätt färg" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "Färgrymd" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "VRD-förskjutning" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "VRD-förskjutning" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "Sensorinformation" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "Sensorinformation" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "Färgdata" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "Färgdata" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Okänd CanonMakerNote-tagg" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Ekonomi" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Normal" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Fin" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Superfin" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Normal film" + +#: src/canonmn.cpp:439 +msgid "Movie (2)" +msgstr "Film (2)" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Auto" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Röda ögon" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "LÃ¥ngsam synkronisering" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Auto + röda ögon" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "PÃ¥ + röda ögon" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Extern" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Enkel / timer" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Kontinuerlig" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Film" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Kontinuerlig, hastighet prioriterad" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Kontinuerlig, lÃ¥g" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Kontinuerlig, hög" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Enstaka bild, AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "AI-servo, AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AI-fokus, AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Manuell fokus" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Enstaka" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Panoreringsfokus" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Stor" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Medel" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Liten" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Medium 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Medium 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Medium 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Helautomatik" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Manuell" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Landskap" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Snabb slutare" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "LÃ¥ngsam slutare" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Nattscen" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "GrÃ¥skala" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "Sepia" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Porträtt" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Sport" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Makro / närbild" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Svart och vit" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "Levande" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Neutral" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Blixt av" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "LÃ¥ng slutare" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "Grönska" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Inomhus" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Fyrverkeri" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Strand" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Under vatten" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Snö" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Barn och djur" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Nattbild" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Digitalt makro" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Mina färger" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Stillbild" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Övrigt" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "LÃ¥g" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Hög" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "ej tillgängligt" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Auto hög" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Standard" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Punkt" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Genomsnitt" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Utvärderande" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Delvis" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Mittviktad" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Inte känd" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Makro" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Mycket nära" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Nära" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Mellanintervall" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "FjärravstÃ¥nd" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Oändlighet" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Manuellt punktval för AF" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Ingen (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Auto-val" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Höger" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Centrera" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Vänster" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Automatiskt val av AF-punkt" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Enkel fotografering (auto)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Program (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Slutarprioritet (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Bländarprioritet (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Manuell (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Inte utlöst" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "Utlöst" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Extern blixt" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Intern blixt" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "FP-synk aktiverad" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "AndraridÃ¥-synkronisering används" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "FP-synk används" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "Normal AE" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Exponeringskompensation" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "AE-lÃ¥s" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "AE-lÃ¥s + exponeringskompensation" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Ingen AE" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "PÃ¥, endast tagning" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "AF-punkt" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Mjuk" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "S&V" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Anpassad" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Mitt färgdata" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Fullständig" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "sRAW1 (mRAW)" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "sRAW2 (sRAW)" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "Självutlösare" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Självutlösare" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Kvalitet" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Blixtläge" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Inställning för blixtläge" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Motorläge" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "Inställning för motorläge" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Fokusläge" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Inställning för fokusläge" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Bildstorlek" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Enkelt läge" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Enkelt fotograferingsläge" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Digitalzoom" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Digitalzoom" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Kontrast" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Kontrastinställning" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "Mättnad" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "Mättnadsinställning" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Skärpa" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Inställning för skärpa" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Läge för ISO-hastighet" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Inställning för ISO-hastighet" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Mätarläge" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Inställning för mätläge" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Fokustyp" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Inställning för fokustyp" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "AF-punkt vald" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Exponeringsprogram" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Inställning för exponeringsläge" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Objektivtyp" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Objektivtyp" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Objektiv" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"â€lÃ¥ng†och â€kort†brännvidd för objektivet (i â€brännviddsenheterâ€) och " +"â€brännviddsenheter†per mm" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Kort brännvidd" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Kort brännvidd" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "Brännviddsenheter" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "Brännviddsenheter" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Största bländare" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Största bländare" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Minsta bländare" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Minsta bländare" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "Blixtaktivitet" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "Blixtaktivitet" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Blixtdetaljer" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Blixtdetaljer" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Kontinuerligt fokus" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Inställning för kontinuerligt fokus" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "AE-inställning" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "AE-inställning" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Bildstabilisering" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Bildstabilisering" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Visa bländare" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Visa bländare" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "Zoomkällans bredd" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "Zoomkällans bredd" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "ZoommÃ¥lets bredd" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "ZoommÃ¥lets bredd" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "Punktmätningsläge" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "Punktmätningsläge" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Fotoeffekt" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Fotoeffekt" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "Manuell blixtutmatning" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "Manuell blixtutmatning" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Färgton" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Färgton" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "SRAW-kvalitetston" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "SRAW-kvalitet" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Okänd Canon kamerainställningar 1-tagg" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Dagsljus" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Molnigt" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Volfram" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "Fluorescerande" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Svart och vitt" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Skugga" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Manuell temperatur (Kelvin)" + +# TODO +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "PC Set 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Dagsljus fluorescerande" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Anpassad 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Anpassad 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Anpassad 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "PC set 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "PC set 5" + +#: src/canonmn.cpp:1117 +msgid "Auto (ambience priority)" +msgstr "Auto (ambiensprioritet)" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "vänster" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "mitten" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "höger" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Använder ISO-hastighet" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Använder ISO-hastighet" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "Uppmätt EV" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "SlutningsmÃ¥l" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Slutarens mÃ¥lhastighet" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Slutarens mÃ¥lhastighet" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Vitbalans" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Vitbalansinställning" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "Sekvens" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Sekvensnummer (om i seriebildsläge)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "Använd AF-punkt" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Använd AF-punkt" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Blixtkompensation" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Motivets avstÃ¥nd" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Motivets avstÃ¥nd (oklara enheter)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Bländarvärde" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Slutarhastighet" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Slutartid" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "Uppmätt EV 2" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Okänd Canon kamerainställningar 2-tagg" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "Vänster till höger" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "Höger till vänster" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Botten till topp" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Topp till botten" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "2x2-matris (medurs)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Panoramaram" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Panoramaram nummer" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Panoramariktning" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Panoramariktning" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Okänd Canon Panorama-tagg" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Brusreduktion" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Reduktion för brus vid lÃ¥ng exponeringstid" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Slutarens AE-lÃ¥s" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "Slutar-/AE-lÃ¥sknappar" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Spegeluppfällning" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Spegeluppfällning" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Ökning för exponeringsnivÃ¥" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "Tv/Av och exponeringsnivÃ¥" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "AF-hjälp" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "AF-hjälp, lätt" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Blixtsynkroniseringshastighet Av" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Slutarhastighet i Av-läge" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "AEB-sekvens" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "AEB-sekvens/automatiskt avbrott" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Slutarskydd, synkronisering" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Synkronisera slutarskydd" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Objektiv-AF stoppknapp" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Objektiv-AF stoppknapp-funktionsväxlare" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Blixtfyllnad auto-reducering" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Automatisk reducering av blixtfyllnad" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Menyknapp Tillbaka" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Menyknappen Tillbakas position" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Set-knappens funktion" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "Set-knappens funktion vid fotografering" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "Sensorrengöring" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "Sensorrengöring" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "Visa ovanpÃ¥" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "Visning ovanpÃ¥" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "Slutarsläpp inget CF-kort" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "Slutarsläpp utan CF-kort" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Okänd anpassad Canon-funktionstagg" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "mitt-höger" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "nederkant" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "överkant" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "mitt-vänster" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "överkant-vänster" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "överkant-höger" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "underkant-vänster" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "underkant-höger" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Bildbredd" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Bildbredd" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Bildhöjd" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Bildhöjd" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Bildbredd som fotograferad" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Bildbredd som fotograferad" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "Bildhöjd som fotograferad" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "Bildhöjd som fotograferad" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Använda AF-punkter" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Använda AF-punkter" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Använda AF-punkter 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Använda AF-punkter (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Okänd Canon-bildinfotagg" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "WB" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Vykort" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Bredbild" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Mellan film" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "Liten film" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "PÃ¥ 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "PÃ¥ 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "PÃ¥ (byt AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "PÃ¥ (byt GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Gul" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Orange" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Röd" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Grön" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "BlÃ¥" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Lila" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Gafflingläge" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Gafflingsvärde" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "Gafflingbildnummer" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "RAW JPG-kvalité" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "RAW JPG-storlek" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "WB-gafflingläge" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "WB-gaffling stödvärde AB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "WB-gaffling stödvärde GM" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Filtereffekt" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Nyanseffekt" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "Makroförstoring" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "Makroförstoring" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "Direktvyfotografering" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "Direktvyfotografering" + +#: src/canonmn.cpp:1347 +msgid "Focus Distance Upper" +msgstr "FokusavstÃ¥nd övre" + +#: src/canonmn.cpp:1348 +msgid "Focus Distance Lower" +msgstr "FokusavstÃ¥nd nedre" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "BlixtexponeringslÃ¥s" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "BlixtexponeringslÃ¥s" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Okänd Canon-filinfotagg" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Standard" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "Lägsta" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "Högsta" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "Hög färgmättnad" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "LÃ¥g färgmättnad" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "CM mängd 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "CM mängd 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "Användardef. 1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "Användardef. 2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "Användardef. 3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "PC 1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "PC 2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "PC 3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "Trogen" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Svartvitt" + +#: src/canonmn.cpp:1399 +msgid "Fine Detail" +msgstr "Detaljerade detaljer" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "Nyanskurva" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Nyanskurva" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "Skärpafrekvens" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "Skärpafrekvens" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "Sensorns rödnivÃ¥" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "Sensorns rödnivÃ¥" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "Sensorns blÃ¥nivÃ¥" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "Sensorns blÃ¥nivÃ¥" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "Vitbalans röd" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "Vitbalans röd" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "Vitbalans blÃ¥" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "Vitbalans blÃ¥" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "Vitbalans" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "Färgtemperatur" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Färgtemperatur" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "Bildstil" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Bildstil" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "Digital förstärkning" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "Digital förstärkning" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "WBskiftAB" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "WBskift AB" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "WBskift GM" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "WBskift GM" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "Okänd Canon-behandlingsinfotagg" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "Huvud, förskjutning" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "tagg" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "kat" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "typ" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "storlek" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "förskjutning" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(ogiltig)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "IIM-kuvert post" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "IIM-program post 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Modellversion" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Ett binärtal som identifierar versionen för Information Interchange Model, " +"del 1, använd av leverantören. Versionsnummer tilldelas av organisationerna " +"IPTC och NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "MÃ¥l" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Den här datamängden underlättar för vissa leverantörer som behöver " +"routinginformation ovanpÃ¥ de passande OSI-lagren." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Filformat" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Ett binärtal som representerar filformatet. Filformatet mÃ¥ste vara " +"registrerat hos IPTC eller NAA med ett unikt nummer tilldelat. Informationen " +"används för att styra data till rätt system och för att lÃ¥ta " +"mottagarsystemet utföra de lämpliga Ã¥tgärderna där med." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Filversion" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Ett binärtal som representerar den särskilda filformatsversionen som anges " +"av taggen ." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Tjänste-ID" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Identifierar leverantör och produkt" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Kuvertnummer" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Tecknen bildar ett nummer unikt för datumet som anges i taggen " +"och för tjänste-IDn angiven i taggen . Om identiska " +"kuvertnummer visas med samma datum och tjänste-ID, mÃ¥ste posterna 2-9 vara " +"samma som i originalet. Det här är inte avsett som en sekventiell " +"serienummermottagningskontroll." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Produkt-ID" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"LÃ¥ter en leverantör identifiera undergrupper i sin övergripande tjänst. " +"Används för att ge mottagande organisation data för urval, routing eller " +"annan datahantering." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Kuvert-prioritet" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"Anger kuvertets hanteringsprioritet och inte den redaktionella brÃ¥dskan (se " +"taggen ). â€1†är mest brÃ¥dskande, â€5†normal brÃ¥dska, och â€8†den " +"minst brÃ¥dskande kopian. Siffran â€9†ses som en användardefinierad " +"prioritet. Siffran â€0†är reserverad för framtida bruk." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Datum skickad" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"Använder formatet Ã…Ã…Ã…Ã…MMDD (fyrsiffrigt Ã¥r, mÃ¥nad, dag) enligt definitionen " +"i ISO 8601 för att ange Ã¥r, mÃ¥nad, och dag dÃ¥ tjänsten skickade materialet." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Tid skickad" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"Använder formatet TTMMSS:TTMM där TTMMSS visar lokal timme, minut och " +"sekund, och HHMM visar timmar och minuter före (+) eller efter (-) Universal " +"Time Coordinated, enligt definitionen i ISO 8601. Det här är tidpunkten dÃ¥ " +"tjänsten sände materialet." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Teckenuppsättning" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Taggen bestÃ¥r av en eller fler kontrollfunktioner som används för " +"tillkännagivande, Ã¥kallande eller benämning av kodade teckenuppsättningar. " +"Kontrollfunktionerna följer standarden ISO 2022 och kan bestÃ¥ av " +"flyktkontrolltecknet och en eller fler grafiska tecken." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Unikt namnobjekt" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Taggen tillhandahÃ¥ller en globalt unik identifikation för objekt, per " +"specifikation i IIM, oberoende av leverantör och mediaformat. Leverantören " +"mÃ¥ste försäkra sig om att UNOet är unikt. Objekt med samma UNO är identiska." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "ARM-identifierare" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"Datamängden identifierar Abstract Relationship Method-identifieraren (ARM) " +"som beskrivs i ett dokument registrerat för skaparen av ARM hos " +"organisationerna IPTC och NAA." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "ARM-version" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Taggen bestÃ¥r av ett binärtal som representerar den särskilda ARM-versionen " +"som anges i taggen ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "Inspelningsversion" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Ett binärtal som identifierar versionen av Information Interchange Model, " +"del 2, som används av leverantören. Versionsnummer tilldelas av " +"organisationerna IPTC och NAA." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Objekttyp" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"Objekttyp används för att skilja mellan olika typer av objekt inom IIM. Den " +"första delen är ett nummer som representerar en sprÃ¥koberoende " +"internationell referens till en objekttyp följd av en kolonavskiljare. Den " +"andra delen, om den används, är en textrepresentation av objekttypsnumret " +"och bestÃ¥r av grafiska tecken och blanksteg antingen pÃ¥ engelska eller i " +"tjänstens sprÃ¥k som visas i taggen " + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "Objektattribut" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"Objektattribut definierar objektets natur oberoende av rubriken. Den första " +"delen är ett nummer som representerar en sprÃ¥koberoende reference till ett " +"objektattribut och följs av en kolonavskiljare. Den andra delen, om den " +"används, är en textrepresentation av objektattributsnumret och bestÃ¥r av " +"grafiska tecken och mellanrum antingen pÃ¥ engelska eller i tjänstens sprÃ¥k " +"som visas i taggen " + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Objektnamn" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"Används som en snabbreferens för objektet. Ändringar pÃ¥ existerande data, " +"som uppdaterade historier eller nya beskärningar av bilder, bör identifieras " +"i taggen ." + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Dokumenttitel" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Redigera status" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "Status för objektdatan enligt leverantörens praxis." + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Redaktionell uppdatering" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"Visar typen av uppdatering som det här objektet ger ett tidigare objekt. " +"Länken till det tidigare objektet skapas med taggarna och " +", enligt leverantörens praxis." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "BrÃ¥dska" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Anger den redaktionella brÃ¥dskan för innehÃ¥llet, och inte nödvändigtvis " +"kuverthanteringens prioritet (se taggen ). â€1†är mest " +"brÃ¥dskande, â€5†normal, och â€8†är den minst brÃ¥dskande kopian." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Ämne" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "Ämnesreferensen är en strukturerad definition av ämnet." + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Kategori" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"Identifierar objektdatans ämne i leverantörens perspektiv. En lista över " +"kategorier underhÃ¥lls i ett regionalt register om möjligt, annars hos " +"leverantören." + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Extrakategori" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"Extrakategorier ger en tydligare beskrivning av objektdatans ämne. En " +"extrakategori kan inkludera nÃ¥gon av de etablerade kategorierna i taggen " +". Annars lämnas valet av extrakategorier till leverantören." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Extrakategorier" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "Fixtur-ID" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Identifierar objektdata som Ã¥terkommer ofta och i förutsägbara " +"omständigheter. Gör att användare omedelbart hittar eller kommer ihÃ¥g ett " +"sÃ¥dant objekt." + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Nyckelord" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"Används för att visa specifik informationshämtningsord. Det förväntas att en " +"leverantör av olika sorters data som relaterar till ämnet använder samma " +"nyckelord, vilket gör att mottagarsystemet eller dess delsystem kan söka " +"bland alla datatyper för relaterat material." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Platskod" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"Visar koden för ett land eller en geografisk plats som pekas ut i objektets " +"innehÃ¥ll. I de fall ISO har en etablerad landskod i ISO 3166 kommer den " +"koden användas. Om ISO 3166 inte ger tillräcklig identifikation för en plats " +"eller ett land, t.ex. skepp till havs, rymden, kommer IPTC tilldela en " +"passande tre-teckenkod bildad utifrÃ¥n ISO 3166 för att undvika konflikter." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Platsnamn" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Ger ett fullständigt och publicerbart namn för ett land eller en geografisk " +"plats som pekas ut i objektets innehÃ¥ll, enligt leverantörens riktlinjer." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Utgivningsdatum" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"Anger datum i formatet Ã…Ã…Ã…Ã…MMDD för det tidigaste tillfället leverantören " +"avser att objektet ska användas. Följer standarden ISO 8601." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Utgivningstid" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"Anger datum i formatet TTMMSS:TTMM för det tidigaste tillfället leverantören " +"avser att objektet ska användas. Följer standarden ISO 8601." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "UtgÃ¥ngsdatum" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Anger datum i formatet Ã…Ã…Ã…Ã…MMDD för det senaste tillfället leverantören " +"avser att objektet ska användas. Följer standarden ISO 8601." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "UtgÃ¥ngstid" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Anger datum i formatet TTMMSS:TTMM för det senaste tillfället leverantören " +"avser att objektet ska användas. Följer standarden ISO 8601." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Speciella instruktioner" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Andra redaktionella instruktioner gällande användning av objektdata som " +"embargon och varningar." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Instruktioner" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Föreslagen Ã¥tgärd" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"Visar typen av Ã¥tgärd det här objektet utför pÃ¥ ett tidigare objekt. Länken " +"till det tidigare objektet bildas genom att använda taggarna " +"och enligt leverantörens praxis." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Referenstjänst" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Identifierar tjänsteidentifieraren för ett tidigare kuvert till vilket " +"nuvarande objekt hänvisar." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Referensdatum" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" +"Identifierar datum för ett tidigare kuvert till vilket nuvarande objekt " +"hänvisar." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Referensnummer" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" +"Identifierar kuvertnumret för ett tidigare kuvert till vilket nuvarande " +"objekt hänvisar." + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Datum skapad" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Representeras i formatet Ã…Ã…Ã…Ã…MMDD för att ange datum dÃ¥ det intellektuella " +"innehÃ¥llet i objektdatan skapades snarare än dÃ¥ dess fysiska representation " +"skapades. Följer standarden ISO 8601." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Skapad tid" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Representeras i formatet TTMMSS:TTMM för att ange tiden dÃ¥ det " +"upphovsrättsliga innehÃ¥llet i objektdatan skapades snarare än dÃ¥ dess " +"fysiska representation skapades. Följer standarden ISO 8601." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Digitaliseringsdatum" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Representeras i formatet Ã…Ã…Ã…Ã…MMDD för att ange datum dÃ¥ den digitala " +"representationen av objektdatan skapades. Följer standarden ISO 8601." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Digitaliseringstid" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Representeras i formatet TTMMSS:TTMM för att ange tiden dÃ¥ den digitala " +"representationen av objektdatan skapades. Följer standarden ISO 8601." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Program" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "Identifierar vilken typ av program användes för att skapa objektdatan." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Programversion" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" +"Används för att identifiera versionen av programmet som nämns i taggen " +"." + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Objektcykel" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "Används för att identifiera objektdatans redaktionella cykel." + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "By-line" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"InnehÃ¥ller namnet pÃ¥ skaparen av objektdatan, t.ex. författare, fotograf, " +"eller grafiker." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Upphovsman" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "By-line titel" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" +"En by-line-titel är titeln för skaparen eller skaparna av ett objektdata. " +"När den används ska by-line-titeln följa den by-line den modifierar." + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Stad" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"Identifierar staden objektdatan härrör frÃ¥n enligt leverantörens riktlinjer." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Delplats" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"Identifierar platsen inom den stad frÃ¥n vilket objektdatan härrör, enligt " +"leverantörens riktlinjer." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "Provins/Stat" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" +"Identifierar ursprungsprovins eller -stat enligt leverantörens riktlinjer." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Stat/region" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Landskod" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Visar koden för landet eller den primära platsen där immaterialrätten för " +"objektdatan skapades, t.ex. där ett foto togs, eller ett evenemang tilldrog " +"sig. I de fall dÃ¥ ISO har en etablerad landskod i ISO 3166 kommer den koden " +"användas. Om ISO 3166 inte ger godtagbar identifikation för en plats eller " +"ett nytt land, t.ex. skepp till havs, eller rymden, kommer IPTC tilldela en " +"lämplig tre-teckenkod formad enligt ISO 3166 för att undvika konflikter." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Landsnamn" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Ger ett fullständigt och tryckbart namn för landet eller den primära plats " +"där immaterialrätten för objektdatan skapades, enligt leverantörens " +"riktlinjer." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Land" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "Sändningsreferens" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"En kod som representerar platsen för den ursprungliga sändningen enligt " +"leverantörens praxis." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Rubrik" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "En tryckbar post som ger en sammanfattning av objektdatans innehÃ¥ll." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "Tack till" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" +"Identifierar vem som tillhandahÃ¥ller objektdatan, inte nödvändigtvis ägaren/" +"skaparen." + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Källa" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Identifierar den ursprungliga ägaren av objektdatans upphovsrättsliga " +"innehÃ¥ll. Det kan vara en agentur, en medlem av en agentur, eller en individ." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "InnehÃ¥ller nödvändig upphovsrättsinformation." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Upphovsrättslig information" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Kontakt" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Identifierar personen eller organisationen som kan ge vidare " +"bakgrundsinformation om objektdatan." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "Text" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "En textbeskrivning av objektdatat." + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Beskrivning" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Författare" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Identifikationsnamn för personen som har skrivit, redigerat, eller rättat " +"objektdatan eller bildtext/sammanfattning." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "Rastrerad bildtext" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"InnehÃ¥ller den rastrerade objektdatabeskrivningen och används där tecken som " +"inte har kodats krävs för bildtexten." + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Indikerar färgkomponenterna för en bild." + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "Bildorientering" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Visar bildens layout." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "SprÃ¥k" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"Beskriver det största sprÃ¥ket i objektet, enligt tvÃ¥-bokstavskoderna i ISO " +"639:1988. Definierar eller antyder inte nÃ¥gon kodad teckenuppsättning, men " +"används för intern styrning, t.ex. till olika redaktionskontor." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Ljudtyp" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Visar typ av ljudinnehÃ¥ll." + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "Ljudfrekvens" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Visar samplingsfrekvens i Hertz för ljudinnehÃ¥ll." + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "Ljudupplösning" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "Visar samplingsupplösning för ljudinnehÃ¥ll." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "Speltid för ljud" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Visar ljudinnehÃ¥llets varaktighet." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Ljud utsignal" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Identifierar innehÃ¥llet för ett ljudobjektdatas slut, enligt leverantörens " +"riktlinjer." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Förhandsvisningsformat" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Ett binärtal som visar filformatet för objektdatans förhandsvisning. " +"Filformatet mÃ¥ste vara registrerat hos organisationerna IPTC och NAA med ett " +"unikt nummer tilldelat." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "Förhandsvisningsversion" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Ett binärtal som visar versionen för objektdatans förhandsvisningsfilformat " +"som anges i taggen ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Förhandsvisningsdata" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Binär data för bildförhandsvisning." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Ogiltig)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Okänd datamängd" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Fel %0: arg2=%2, arg3=%3, arg1=%1." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Lyckades" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "Detta ser inte ut som en %1-bild" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Ogiltigt datasamlingsnamn â€%1â€" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Ogiltigt postnamn â€%1â€" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Ogiltig nyckel â€%1â€" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Ogiltigt taggnamn eller ifdId â€%1â€, ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Värde inte angivet" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Misslyckades med att öppna datakällan: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: Misslyckades med att öppna filen (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: Filen innehÃ¥ller data för en okänd bildtyp" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Minnet innehÃ¥ller data för en okänd bildtyp" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Bildtypen %1 stöds inte" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Misslyckades med att läsa bilddata" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Det här ser inte ut som en JPEG-bild" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "%1: Kunde inte mappa filen för läsning och skrivning: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Misslyckades med att byta namn pÃ¥ filen till %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Överföring misslyckades: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Minnesöverföring misslyckades: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Misslyckades med att läsa indata" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Misslyckades med att skriva bild" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Indata innehÃ¥ller ingen giltig bild" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "Ogiltig ifdId %1" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Entry::setValue: Värdet är för stort (tagg=%1, storlek=%2, begärde=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" +"Entry::setDataArea: Värdet är för stort (tagg=%1, storlek=%2, begärde=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "Förskjutning utanför intervall" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Förskjutningstypen för dataomrÃ¥det stöds inte" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "Ogiltig teckenuppsättning: â€%1â€" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Datumformatet stöds inte" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Tidsformatet stöds inte" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Skrivning till %1 bilder stöds inte" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Inställning %1 i %2 bilder stöds inte" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Det ser inte ut som en CRW-bild" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: Stöds inte" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "Ingen namnrymdsinfo tillgänglig för XMP-prefix â€%1â€" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"Inget prefix registrerat för namnrymd â€%2â€, krävs för egenskapssökväg â€%1â€" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "Storlek för %1 JPEG-segment är större än 65535 byte" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Obehandlat XMP-datum %1 av typ %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "Obehandlad XMP-nod %1 med opt=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "XMP-verktygsfel %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Kunde inte avkoda Lang Alt-egenskap %1 med opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Kunde inte avkoda Lang Alt-kvalificerare %1 med opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Kunde inte avkoda Lang Alt-egenskap %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "Kunde inte avgöra egenskapsnamn frÃ¥n sökväg %1, namnrymd %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "Schemanamnrymd %1 är inte registrerad i XMP-verktygen" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "Ingen namnrymd registrerad för prefix â€%1â€" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"Alias stöds inte. Skicka detta XMP-paket till ahuggel@gmx.net â€%1â€, â€%2â€, " +"â€%3â€" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Ogiltig XMP-texttyp â€%1â€" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "TIFF-katalog %1 har för mÃ¥nga poster" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Flera TIFF-fältelementtaggar %1 i en katalog" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "TIFF-fältelementtaggar %1 har felaktig typ" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 har ogiltigt XMP-värdetyp â€%2â€" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "Copyright (C) 2004-2015 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Detta program är fri programvara. Du kan distribuera det och/eller\n" +"modifiera det under villkoren i GNU General Public License, publicerad\n" +"av Free Software Foundation, antingen version 2 eller (om du sÃ¥ vill)\n" +"nÃ¥gon senare version.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Detta program distribueras i hopp om att det ska vara användbart,\n" +"men UTAN NÃ…GON SOM HELST GARANTI, även utan underförstÃ¥dd garanti\n" +"om SÄLJBARHET eller LÄMPLIGHET FÖR NÃ…GOT SPECIELLT ÄNDAMÃ…L. Se GNU\n" +"General Public License för ytterligare information.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Du bör ha fÃ¥tt en kopia av GNU General Public License tillsammans\n" +"med detta program. Om inte, skriv till Free Software Foundation,\n" +"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "Användning:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ flaggor ] [ Ã¥tgärd ] fil ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Manipulera Exif-metadata i bilder.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Ã…tgärder:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Justera Exif-tidsstämplar med angiven tid. Denna Ã¥tgärd\n" +" kräver Ã¥tminstone en av flaggorna -a, -Y, -O eller -D.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print Skriv ut bildens metadata.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Ta bort bildmetadata frÃ¥n filerna.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Infoga metadata frÃ¥n motsvarande *.exv-filer.\n" +" Använd flaggan -S för att ändra ändelsen för " +"inmatningsfilerna.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract Extrahera metadata till *.exv, *.xmp och miniatyrbildfiler.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename Byt namn pÃ¥ filer och/eller ställ in filtidsstämplar enligt\n" +" Exif-tidsstämpeln. Filnamnsformatet kan anges med\n" +" -r format, flaggor för tidsstämplar styrs med -t och -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify Tillämpa kommandon att ändra (add, set, delete) Exif och\n" +" IPTC-metadata för bildfiler eller ange JPEG-kommentaren.\n" +" Kräver flaggan -c, -m eller -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Kopiera ISO-inställning frÃ¥n Nikon Makernote till den \n" +" vanliga Exif-taggen.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" +" fc | fixcom Konvertera Exif-användarkommentar frÃ¥n UNICODE till UCS-2. " +"Dess\n" +" nuvarande teckenkodning kan anges med väljaren -n.\n" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Flaggor:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h Visa denna hjälp och avsluta.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Visa programversionen och avsluta.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Var utförlig under programkörningen.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" +" -q Blockera varningar och felmeddelanden medan programmet kör " +"(quiet).\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" +" -Q lvl Ange loggnivÃ¥ för d(ebug), i(nfo), w(arning), e(rror) eller m" +"(ute).\n" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Visa stora binära värden.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Visa okända taggar.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g nyckel Bara utmatningsinformation för den här nyckeln (grep).\n" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" +" -K nyckel Bara utmatningsinformation för den här nyckeln (exakt träff).\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n kod Teckenkodning som ska användas för att avkoda Exif-" +"användarkommentarer i UNICODE.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k BehÃ¥ll filernas tidsstämplar.\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t Ange ocksÃ¥ filens tidsstämpel i â€renameâ€-Ã¥tgärden (ersätter -k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T Ange bara filens tidsstämpel i â€renameâ€-Ã¥tgärden, döp inte om " +"filen\n" +" (ersätter -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr " -f FrÃ¥ga inte innan befintliga filer skrivs över (force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F FrÃ¥ga inte innan filer döps om (Force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a tid Tidsjustering i formatet [-]TT[:MM[:SS]]. Alternativet " +"används bara tillsammans med Ã¥tgärden â€adjustâ€.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y Ã¥r Justera Ã¥r med â€adjustâ€-Ã¥tgärden.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O mÃ¥n Justera mÃ¥nad med â€adjustâ€-Ã¥tgärden.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D dag Justera dag med â€adjustâ€-Ã¥tgärden.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr " -p läge Utskriftsläge för â€printâ€-Ã¥tgärden. Möjliga lägen är:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" +" s : skriv ut ett sammandrag över Exif-metadata (standard)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : skriv Exif-, IPTC- och XMP-metadata (förkortning av -" +"Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t : tolkad Exif-data (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : vanliga Exif-datavärden (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : hexadecimal dumpning av Exif-datan (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : IPTC-datavärden (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : XMP-egenskaper (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : JPEG-kommentar\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : lista tillgängliga förhandsvisningar\n" + +#: src/exiv2.cpp:294 +msgid " S : print structure of image\n" +msgstr " S : skriv ut bildstruktur\n" + +#: src/exiv2.cpp:295 +msgid " X : extract XMP from image\n" +msgstr " X : extrahera XMP frÃ¥n bild\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgr Skriv-flaggor för finkornig kontroll av tagglistor (â€printâ€-" +"Ã¥tgärd):\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : inkludera Exif-taggar i listan\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : IPTC-datasamlingar\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : XMP-egenskaper\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : skriv en kolumn med taggnumret\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : gruppnamn\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : nyckel\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : taggetikett\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : taggnamn\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : typ\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : antal komponenter (count)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : storlek i byte\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : vanligt datavärde\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : tolkat (översatt) data\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : hexadecimaldump av data\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr " -d mÃ¥l Radera mÃ¥l för â€deleteâ€-Ã¥tgärden. Möjliga mÃ¥l är:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : all stödd metadata (standard)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : Exif-sektion\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : endast Exif-miniatyrbild\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : IPTC-data\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : XMP-paket\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i mÃ¥l Infoga mÃ¥l för â€insertâ€-Ã¥tgärden. Möjliga mÃ¥l är de samma\n" +" som de i väljaren -d, med en extra modifierare:\n" +" X : Infoga metadata frÃ¥n en associerad XMP-fil .xmp\n" +" Endast JPEG-miniatyrer kan infogas, och mÃ¥ste ha namnet\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e mÃ¥l Extrahera mÃ¥l för â€extractâ€-Ã¥tgärden. Möjliga mÃ¥l är de samma\n" +" som för väljaren -d, med ett mÃ¥l att extrahera förhands-\n" +" visningsbilder till och en modifierare för att skapa en " +"associerad\n" +" XMP-fil:\n" +" p[[, ...]] : Extrahera förhandsvisningsbilder.\n" +" X : Extrahera metadata till en associerad XMP-fil .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Filnamnsformat för â€döp omâ€-Ã¥tgärden. Formatsträngen följer\n" +" strftime(3). Följande nyckelord stöds:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - ursprungligt filnamn utan ändelse\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" +" :dirname: - namn pÃ¥ katalogen där ursprungsfilen finns\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - namn pÃ¥ toppkatalogen\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Standard för filnamnsformat är " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt JPEG-kommentarsträng att ange i bilden.\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" -m fil Kommandofil för â€modifyâ€-Ã¥tgärden. Formatet för kommandona är\n" +" set|add|del [[] ].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M kmd Kommandorad för â€modifyâ€-Ã¥tgärden. Format för kommandona\n" +" är samma som för kommandofilen.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l dir Plats (katalog) för filer som ska infogas frÃ¥n eller extraheras " +"till.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf Använd suffixet .suf för källfiler för kommandot â€insertâ€.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Flagga" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "kräver ett argument\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Okänd flagga" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "getopt gav oväntad teckenkod" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "Ogiltigt argument" + +#: src/exiv2.cpp:434 +msgid "Invalid regexp" +msgstr "Ogiltig regexp" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ignorerar överflödig flagga" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "är inte kompatibel med en tidigare flagga\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "Ignorerar överflödig flagga -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Fel vid tolkning av argument för flaggan -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "Flaggan -a är inte kompatibel med en tidigare flagga\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Fel vid tolkning" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "flaggargument" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Okänt utskriftsläge" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "Ignorerar överflödig flagga -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "Flaggan -p är inte kompatibel med en tidigare flagga\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Okänt utskriftsobjekt" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "Ignorerar överflödig flagga -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "Flaggan -P är inte kompatibel med en tidigare flagga\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "Flaggan -d är inte kompatibel med en föregÃ¥ende flagga\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "Flaggan -e är inte kompatibel med en föregÃ¥ende flagga\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "Flaggan -i är inte kompatibel med en föregÃ¥ende flagga\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "Ã…tgärden â€adjust†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "Ã…tgärden â€print†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "Ã…tgärden â€delete†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "Ã…tgärden â€extract†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "Ã…tgärden â€insert†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "Ã…tgärden â€rename†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "Ã…tgärden â€modify†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "Ã…tgärden â€fixiso†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "Ã…tgärden â€fixcom†är inte kompatibel med de givna flaggorna\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "En Ã¥tgärd mÃ¥ste anges\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" +"Ã…tgärden â€adjust†kräver Ã¥tminstone en av flaggorna -a, -Y, -O eller -D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "Ã…tgärden â€modify†kräver Ã¥tminstone en av flaggorna -c, -m eller -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Ã…tminstone en fil krävs\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Fel vid tolkning av argument för flaggan -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Fel vid tolkning av -M-flaggans argument\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" +"Flaggan -l kan endast användas vid extrahering eller infogandet av Ã¥tgärder\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "Flaggan -S kan endast användas med Ã¥tgärden infoga\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "Flaggan -t kan endast användas med Ã¥tgärden byt namn\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "Flaggan -T kan endast användas med Ã¥tgärden byt namn\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Okänd " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "mÃ¥l" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Ogiltigt förhandsvisningsnummer" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Misslyckades med att öppna kommandofilen för läsning\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "rad" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "flaggan -M" + +#: src/exiv2.cpp:1180 +msgid "Invalid command line:" +msgstr "Ogiltig kommandorad:" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Ogiltigt kommando" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Ogiltig nyckel" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Ogiltig kommandorad" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "Mjukt läge 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "Mjukt läge 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "HÃ¥rt läge 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "HÃ¥rt läge 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Fluorescerande (dagsljus)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Fluorescerande (varmt vitt)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Fluorescerande (kallt vitt)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Bländande" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Ingen (svart & vitt)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Minskning av röda ögon" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Nattscen" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Programmera AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Naturligt ljus" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti-oskärpa" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "SolnedgÃ¥ng" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Museum" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Fest" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Blomma" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Text" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Naturligt ljus & blixt" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Bländarprioritet AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Slutarhastighetsprioritet AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Ingen blixt & blixt" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Krom" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Bred" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Standard" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Studio portrait" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Studio portrait Ex" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Auto (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "RÃ¥" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Standard (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Brett läge 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Brett läge 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Filmsimuleringsläge" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Version" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "Fujifilm Makernote-version" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Numret är unikt och innehÃ¥ller tillverkningsdatum, men är inte detsamma som " +"numret som syns pÃ¥ kamerans chassi." + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Bildkvalitetsinställning" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Färg" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Färgmättnadsinställning" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Ton" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Blixtaktiveringsinställning" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Blixtstyrka" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "Kompensationsinställning för blixtaktiveringsstyrka" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "Makrolägesinställning" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Fokuslägesinställning" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "LÃ¥ngsam Synk" + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "LÃ¥ngsam synkroniseringslägesinställning" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Bildläge" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "Bildlägesinställning" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Seriebilder eller inställning för automatisk gaffling" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "Sekvensnummer" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "Sekvensnummer" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "FinePix färg" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "Fuji FinePix färginställning" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Varning för oskärpa" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "TillstÃ¥nd för varning för oskärpa" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Fokusvarning" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Autofokus-varningstillstÃ¥nd" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Exponeringsvarning" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "AutoexponeringsvarningstillstÃ¥nd" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Dynamikintervall" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Dynamikintervall" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Filmläge" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Filmläge" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Dynamikintervallsinställning" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Inställningar för dynamikintervall" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Utvecklingsdynamikintervall" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Utvecklingsdynamikintervall" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Minsta brännvidd" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Minsta brännvidd" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Största brännvidd" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Största brännvidd" + +#: src/fujimn.cpp:264 +msgid "Maximum Aperture at Minimum Focal" +msgstr "Största bländning vid minsta brännvidd" + +#: src/fujimn.cpp:265 +msgid "Maximum aperture at minimum focal" +msgstr "Största bländning vid minsta brännvidd" + +#: src/fujimn.cpp:267 +msgid "Maximum Aperture at Maximum Focal" +msgstr "Största bländning vid maximal brännvidd" + +#: src/fujimn.cpp:268 +msgid "Maximum aperture at maximum focal" +msgstr "Största bländning vid maximal brännvidd" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Filkälla" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Filkälla" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Ordningsnummer" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Ordningsnummer" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Bildrutenummer" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Bildrutenummer" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Okänd FujiMakerNote-tagg" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Naturlig färg" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "Lysande färger" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "Solarisering" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Naturlig" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "Naturlig sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Naturlig+ sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Kväll" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Nattporträtt" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Superfin" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "Extrafin" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "Makernote-version" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "Sträng â€MLT0†(inte avslutad tom)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Kamerainställningar (Std gml)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Standardinställningar för kamera (Gamla kameramodeller som D5, D7, S304 och " +"S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Kamerainställningar (Std ny)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" +"Standardinställningar för kamera (nya kameramodeller sÃ¥som D7u, D7i och D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Kamerainställningar (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Kamerainställningar (för modellen Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Bildstabiliseringsdata" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Bildstabiliseringsdata" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "WB Info A100" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "Vitbalansinformation för Sony DSLR-A100" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "Komprimerad bildstorlek" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "Komprimerad bildstorlek" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "JPEG-miniatyr 640x480 bildpunkter" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "Miniatyrbildförskjutning" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Miniatyrbildens förskjutning" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Miniatyrbildlängd" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Miniatyrbildens storlek" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Scenläge" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Färgläge" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Färgläge" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Bildkvalitet" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "Blixtexponeringskompensation" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "Blixtexponeringskompensation i EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Telekonverteringsmodell" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "RAW+JPG-indexering" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "Indexering för RAW- och JPG-filer" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Zonpassning" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Zonpassning" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Färgtemperatur" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "Objektiv-ID" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Objektividentifierare" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "Färgkompensationsfilter" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "Färgkompensationsfilter: negativt är grön, positivt är magenta" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "Finjustering vitbalans" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "Värde för finjustering av vitbalans" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "Bildstabilisering A100" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Bildstabilisering för Sony DSLR-A100" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "Kamerainställningar (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Kamerainställningar (för Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Print IM" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "PrintIM-information" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "Kamerainställningar (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Kamerainställningar (för modellerna Z1, DImage X och F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Okänd Minolta MakerNote-tagg" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Bländarprioritet" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Slutarprioritet" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Fyll blixt" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Synka bakre blixt" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "TrÃ¥dlös" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "Fluorescerande 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Full storlek" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Superfin" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "Extrafin" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Enstaka ram" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "Självutlösare" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Gaffling" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Intervall" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHS, kontinuerlig" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "HS, kontinuerlig" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Flera segment" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Centrerat viktat medeltal" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Elektronisk förstoring" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Överst" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Överst till höger" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Underst till höger" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Nederst" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Underst till vänster" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Överst till vänster" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "HÃ¥rd" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "Mjuk" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Nattporträtt" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Sport" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Tidsförloppsfilm" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Standardform" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Dataform" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Naturlig färg" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Svartvitt" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "Lysande färg" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Ingen zon" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Centerzon (horisontell orientering)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Centerzon (vertikal orientering)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Vänster zon" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Höger zon" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Automatisk fokus" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Bredfokus (normal)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Punktfokus" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "Exponering" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Filter" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Inte inbäddad" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Inbäddad" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "Text + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (Advanced Distance Integration)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Förblixt TTl" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Manuell blixtkontroll" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Exponeringsläge" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Blixtläge" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Driftsläge" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "ISO-värde" + +# Kallas även för slutartid +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Exponeringstid" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "FNummer" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "F-numret" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Makroläge" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Exponeringskompensation" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Gafflingssteg" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Gafflingssteg" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Längd för intervall" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Längd för intervall" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Intervallnummer" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Intervallnummer" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "FokusavstÃ¥nd" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "FokusavstÃ¥nd" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "Blixtutlöst" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "Blixtutlöst" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Minolta-datum" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Minolta-datum" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Minolta-tid" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Minolta-tid" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "Filnummerminne" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "Filnummerminne" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Senaste bildnummer" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Senaste bildnummer" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Färgbalans röd" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Färgbalans röd" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Färgbalans grön" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Färgbalans grön" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Färgbalans blÃ¥" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Färgbalans blÃ¥" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Ämnesprogram" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Ämnesprogram" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "ISO-inställningar" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "ISO-inställning" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Minolta-modell" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Minolta-modell" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Intervalläge" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Intervalläge" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Mappnamn" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Mappnamn" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Färgläge" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Färgfilter" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Färgfilter" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Svartvitt filter" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Svartvitt filter" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Intern blixt" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Ljusstyrka" + +#: src/minoltamn.cpp:613 +msgid "Spot Focus Point X" +msgstr "Punktfokus, punkt X" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "Punktfokus, punkt X" + +#: src/minoltamn.cpp:616 +msgid "Spot Focus Point Y" +msgstr "Punktfokus, punkt y" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "Punktfokus, punkt y" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Bred fokuszon" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Bred fokuszon" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Fokusläge" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "FokusomrÃ¥de" + +#: src/minoltamn.cpp:628 +msgid "DEC Switch Position" +msgstr "DEC-växlarposition" + +#: src/minoltamn.cpp:629 +msgid "DEC switch position" +msgstr "DEC-växlarposition" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Färgprofil" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Färgprofil" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "Datamarkering" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "Blixtmätning" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "Blixtmätning" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Okänd inställningstagg för Minolta-kamera" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "Programbyte A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "Programbyte S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "Enstaka-bild AF" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "Kontinuerlig AF" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "Automatisk AF" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Naturlig)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Naturlig+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Horisontell (normal)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Rotera 90 medsols" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Rotera 270 medsols" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "AF-punkter" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "AF-punkter" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Färgrymd" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Färgrymd" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "Frigör minneskortsbilder" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "Frigör minneskortsbilder" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Nyans" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Rotation" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Bildnummer" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Brusreducering" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "Zonpassning pÃ¥" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "Zonpassning pÃ¥" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Okänd 7D-inställningstagg för Minolta-kamera" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "Programbyte A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "Programbyte S" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "Nattvy/-porträtt" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (Zonpassning hög)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80 (Zonpassning lÃ¥g)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB (ICC)" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "Central" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Upp" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Upp höger" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Ned höger" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Ned" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Ned vänster" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Upp vänster" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Markering" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "Naturlig+" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "Vindscen" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "Kvällsscen" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Fokusposition" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Fokusposition" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Fokusyta" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "Exponeringsrevision" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "Exponeringsrevision" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "Rotation2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "Bildfinish" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Manuell exponeringsprioritering" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Manuell exponeringsprioritering" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "AF-läge" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "AF-läge" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Okänd 5D-inställningstagg för Minolta-kamera" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "Självutlösare 10 sek" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "Självutlösare 2 sek" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Vitbalansgaffling lÃ¥g" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "Vitbalansgaffling hög" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "Enstaka bildrutegaffling lÃ¥g" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "Kontinuerlig gaffling lÃ¥g" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "Enstaka bildrutegaffling hög" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "Kontinuerlig gaffling hög" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Avancerat" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "Kontinuerlig gaffling" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "Enstaka bildrutegaffling" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "Vitbalansgaffling" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Förval" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Färgtemperatur/färgfilter" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Temperatur" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "Inställningar" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "Dra tillbaka" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "OK" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "Fel" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Bild och information" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Endast bild" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "Bild och histogram" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "Fyll blixt" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "HÃ¥ll fokus" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "Förhandsgranska DOF" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "HÃ¥ll" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Växla" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "HÃ¥ll punkt" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "Växla punkt" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Slutarhastighet" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "Ambiens och blixt" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "Enbart ambiens" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0,3 sekunder" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0,6 sekunder" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Automatiskt" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "Autorotera" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Horisontellt" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "Manuell rotation" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "Inom intervall" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "Under/över intervall" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Utanför intervall" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "Inte visad" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "Under skala" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "Nederst i skala" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "Överst i skala" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "Över skala" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "AM" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "MF" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Inbyggt" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Mycket lÃ¥g" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "Halvfull" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "Tillräckligt mycket ström kvar" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "Exponeringskompensationsinställning" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "Exponeringskompensationsinställning" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "Höghastighetssynkronisering" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "Höghastighetssynkronisering" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "Manuell exponeringstid" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "Manuell exponeringstid" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +msgid "Manual FNumber" +msgstr "Manuellt F-nummer" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "Körläge 2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "Körläge 2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "Lokal AF-ytpunkt" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "AF-ytläge" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "Blixtläge" + +#: src/minoltamn.cpp:1395 +msgid "Flash Exposure Comp Setting" +msgstr "Blixtexponeringskompinställning" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "Kompensationsinställning för blixtexponering" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "ISO-inställning" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "Zonpassningsläge" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "Optimeringsläge för dynamiskt intervall" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "Optimeringsläge för dynamiskt intervall" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "Prioritetsinställning slutarutlösning" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Självutlösningstid" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Självutlösningstid" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "Kontinuerlig bildrutegaffling" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "Enstaka bildrutegaffling" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "Enstaka bildrutegaffling" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Vitbalansgaffling" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "Vitbalansinställning" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Förinställning Vitbalans" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Förinställning för vitbalans" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "Färgtemperaturinställning" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "Färgtemperaturinställning" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "Egen VB-inställning" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "Egen VB-inställning" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "Optimeringsinställninga för dynamikintervall" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "Egen VB, rödnivÃ¥" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "Egen VB, rödnivÃ¥" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "Egen VB, grönnivÃ¥" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "Egen VB, grönnivÃ¥" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "Egen VB, blÃ¥nivÃ¥" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "Egen VB, blÃ¥nivÃ¥" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "Egen VB, fel" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "Finjustering av vitbalans" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "Färgkompensationsfilter" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Sony bildstorlek" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "Direktuppspelningstid" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "Direktuppspelningstid" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "Direktuppspelningsinställningar" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "Direktuppspelningsinställningar" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "Öga inleder AF" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "Öga inleder AF" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "Korrigering av röda ögon" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "Korrigering av röda ögon" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "Standardblixt" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "Standardblixt" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "Autogaffling, ordning" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "Ordning för autogaffling" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "FokushÃ¥llningsknapp" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "Knapp för att hÃ¥lla fokus" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "AEL-knapp" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "AEL-knapp" + +#: src/minoltamn.cpp:1518 +msgid "Control Dial Set" +msgstr "Kontrollplatta inställd" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "Kontrollplatta inställd" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "Exponeringskompensationsläge" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "Exponeringskompensationsläge" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "AF-hjälp" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "Kort-slutarlÃ¥sning" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "Kort-slutarlÃ¥sning" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "Objektiv-slutarlÃ¥sning" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "Objektiv-slutarlÃ¥sning" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "AF-ytbelysning" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "AF-ytbelysning" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "Skärmvisning av" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "Skärmvisning av" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "Visa inspelning" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "Visa inspelning" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "Spela upp-visning" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "Spela upp-visning" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "Exponeringsindikator" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "Exponeringsindikator" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "AEL-exponeringsindikator" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" +"AEL-exponeringsindikator (indikerar ocksÃ¥ exponering för nästa bild vid " +"gaffling)" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "Exponeringsgafflingindikator, sista" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" +"Exponeringsgafflingindikator, sista (indikator för sista foto vid gaffling)" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "Mätning för indikator utanför skala" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" +"Mätning för indikator utanför skala (tvÃ¥ blinkande trianglar när du gÃ¥r " +"under eller över mätarskalan)" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "Blixtexponeringsindikator" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "Blixtexponeringsindikator" + +#: src/minoltamn.cpp:1560 +msgid "Flash Exposure Indicator Next" +msgstr "Blixtexponeringsindikator, nästa" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" +"Blixtexponeringsindikator, nästa (indikator för nästa bild vid gaffling)" + +#: src/minoltamn.cpp:1563 +msgid "Flash Exposure Indicator Last" +msgstr "Blixtexponeringsindikator, sista" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" +"Blixtexponeringsindikator, sista (indikator för sista bilden vid gaffling)" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "Fokuslägesändring" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "Fokuslägesändring" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Blixttyp" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Blixttyp" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "AE-lÃ¥s" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "Färgkompensationsfilter: negativt är grön, positivt är magenta" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "BatterinivÃ¥" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "BatterinivÃ¥" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Okänd A100-inställningstagg för Sony-kamera" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Rensa" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Djup" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Ljus" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Nattvy" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "Höstlöv" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Lokal" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Överst till höger" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Nederst till höger" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Nederst till vänster" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Överst till vänster" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Längst till höger" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Längst till vänster" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "Avancerad auto" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "Avancerad nivÃ¥" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "UtgÃ¥va" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "RAW + JPEG" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "Komprimerad RAW" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "Komprimerad RAW + JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "Minolta AF 2x APO (D)" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO II" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Använd ISO-inställning" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Hög nyckel" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "LÃ¥g nyckel" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "Extra hög" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Enstaka yta" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Dynamisk yta" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Dynamisk yta, närmaste motiv" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Gruppdynamik" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "Enstaka yta (bred)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Dynamisk yta (bred)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Övre vänster" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Övre höger" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Nederst till vänster" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Nederst till höger" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "Längst till vänster" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "Längst till höger" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "Utlöst, manuell" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "Utlöst, extern" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "Utlös, kommandoläge" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "Utlös, TTL-läge" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Fördröjning" + +#: src/nikonmn.cpp:153 +msgid "PC Control" +msgstr "PC-kontroll" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "Exponeringsgaffling" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "Auto-ISO" + +#: src/nikonmn.cpp:157 +msgid "White-Balance Bracketing" +msgstr "Vitbalansgaffling" + +#: src/nikonmn.cpp:158 +msgid "IR Control" +msgstr "IR-kontroll" + +#: src/nikonmn.cpp:159 +msgid "D-Lighting Bracketing" +msgstr "D-ljus-gaffling" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "PC-kontroll" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Exponeringsgaffling" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "Oanvänd LE-NR-broms" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "IR-kontroll" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "Autosläpp" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "Manuellt släpp" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "Med förluster (typ 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Okomprimerad" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Förlustfri" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "Med förluster (typ 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "S&V" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "Klipp" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Liten bild" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "D-ljus" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Röda ögon" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +msgid "Cyanotype" +msgstr "Cyanotyp" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "Himmelsljus" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "Varm ton" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "Egen färg" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "Bildöverlagring" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Minimal" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Nikon Makernote-version" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "ISO-hastighet" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Skärpa" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Bildskärpa-inställning" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Fokus" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Blixtinställning" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Blixtinställningar" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "ISO-val" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "ISO-val" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Datadumpning" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Datadumpning" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "Bildjustering" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "Inställning för bildjustering" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "Externt objektiv" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "Externt objektiv (adapter)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Manuellt fokusavstÃ¥nd" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Inställning för digital zoom" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "AF-fokusposition" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "AF-fokuspositionsinformation" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Okänd Nikon1MakerNote-tagg" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Kontinuerlig autofokus" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Enstaka autofokus" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Inte använd" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "gissa" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA Grundläggande" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA Normal" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA Fin" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA Grundläggande" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA Normal" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA Fin" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Ljus+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Ljus-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Kontrast+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Kontrast-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "Speedlight" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Okänd Nikon2MakerNote-tagg" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Blixtenhet" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Blixtenhet" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Vitbalansprioritering" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Vitbalansprioritering" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "VB RB-nivÃ¥er" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "VB RB-nivÃ¥er" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "Programbyte" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "Programbyte" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "Exponeringsdifferens" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "Exponeringsdifferens" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Pekare till en förhandsgranskningsbild" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "Förskjutning för en förhandsvisningsbild som innehÃ¥ller IFD" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "Blixtkomp" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "Inställning för blixtkompensation" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Bildgräns" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Bildgräns" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "Blixtexponeringskomp" + +#: src/nikonmn.cpp:553 +msgid "Flash Bracket Comp" +msgstr "Blixtgafflingskomp" + +#: src/nikonmn.cpp:553 +msgid "Flash bracket compensation applied" +msgstr "Blixtgafflingskompensation tillämpad" + +#: src/nikonmn.cpp:554 +msgid "Exposure Bracket Comp" +msgstr "Exponeringsgafflingkomp" + +#: src/nikonmn.cpp:554 +msgid "AE bracket compensation applied" +msgstr "AE-gafflingskompensation tillämpad" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Bildbehandling" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Bildbehandling" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "Beskär hög hastighet" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "Beskär hög hastighet" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "Exponeringsjustering" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "Exponeringsjustering" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "VR-info" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "VR-information" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "Bildautentisering" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "Bildautentisering" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "ActiveD-ljus" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "ActiveD-ljus" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "Bildkontroll" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " Bildkontroll" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "Världstid" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "Världstid" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "ISO-info" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "ISO-information" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "Vinjettkontroll" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "Vinjettkontroll" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "Tonkompensation" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "Tonkompensation" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Använt blixtläge" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Fotograferingsläge" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Fotograferingsläge" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "Autogaffling, släpp" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "Autogaffling, släpp" + +#: src/nikonmn.cpp:578 +msgid "Lens FStops" +msgstr "Objektiv FStops" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "Kontrastkurva" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Kontrastkurva" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "Färgnyans" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "Färgnyans" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Scenläge" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Ljuskälla" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Ljuskälla" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "Bildinformation" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "Nyansjustering" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "Nyansjustering" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "NEF-komprimering" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "NEF-komprimering" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Linjäriseringstabell" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Linjäriseringstabell" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Färgbalans" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Färgbalans" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Objektivdata" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Objektivdatainställningar" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "RÃ¥bildcentrum" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "RÃ¥bildcentrum" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Sensorns bildpunktsstorlek" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Sensorns bildpunktsstorlek" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "Scenhjälp" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "Scenhjälp" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "Retuscheringshistorik" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "Retuscheringshistorik" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Serienr" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Kamerans serienummer, börjar oftast med â€NO=â€" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Bilddatans storlek" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Bilddatans storlek" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Bildantal" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Bildantal" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "Antal raderade bilder" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "Antal raderade bilder" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "Slutarräknare" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "Antal bilder tagna av kameran" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Blixtinformation" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "Bildoptimering" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "Bildoptimering" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "Programvariation" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "Programvariation" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "AF-svar" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "AF-svar" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "Multiexponering" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Hög ISO-brusreducering" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "Toneffekt" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "AF-info 2" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "Filinformation" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "AF-justering" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "FÃ¥nga data" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "FÃ¥nga data" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "FÃ¥ngstversion" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "FÃ¥ngstversion" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "FÃ¥ngstförskjutningar" + +#: src/nikonmn.cpp:620 +msgid "Capture offsets" +msgstr "FÃ¥ngstförskjutningar" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "Skanna IFD" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "ICC-profil" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "FÃ¥nga utdata" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Okänd Nikon3MakerNote-tagg" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Nej" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Ja" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "Ã…/M/D" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "M/D/Ã…" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "D/M/Ã…" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "Vibrationsreducering" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Vibrationsreducering" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Okänd Nikon vibrationsreduceringstagg" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Standardinställningar" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Snabbjustering" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Fullständig kontroll" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "BlÃ¥-grön" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "Lila-blÃ¥" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "Röd-lila" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Namn" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "Bas" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Justera" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Snabbjustering" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Filtereffekt" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "Tonmättnad" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "Tonmättnad" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "Okänd Nikon bildkontroll" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "AF-finjustering" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "AF-finjustering" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "AF-finjusteringsindex" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "AF-finjusteringsindex" + +#: src/nikonmn.cpp:732 +msgid "AF Fine Tune Adjustment" +msgstr "AF-finjustera anpassning" + +#: src/nikonmn.cpp:732 +msgid "AF fine tune adjustment" +msgstr "AF-finjustera anpassning" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Okänd Nikon AF-finjusteringstagg" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "Tidszon" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "Sommar-/Vintertid" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "Sommar-/Vintertid" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Datumformat" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Datumformat" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "Okänd Nikon världstid-tagg" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Hög 0,3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Hög 0,5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Hög 0,7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Hög 1,0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Hög 1,3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Hög 1,5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Hög 1,7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Hög 2,0" + +#: src/nikonmn.cpp:767 +msgid "Hi 2.3" +msgstr "Hög 2,3" + +#: src/nikonmn.cpp:768 +msgid "Hi 2.5" +msgstr "Hög 2,5" + +#: src/nikonmn.cpp:769 +msgid "Hi 2.7" +msgstr "Hög 2,7" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "Hög 3,0" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "Hög 3,3" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "Hög 3,5" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "Hög 3,7" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "Hög 4,0" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "LÃ¥g 0,3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "LÃ¥g 0,5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "LÃ¥g 0,7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "LÃ¥g 1,0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "ISO-expansion" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "ISO-expansion" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "ISO-expansion 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "ISO-expansion 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "Okänd Nikon ISO-informationstagg" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "Enstaka yta" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "Dynamisk yta" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "Dynamisk yta, närmaste motiv" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "Gruppdynamik" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "Enstaka yta (bred)" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "Dynamisk yta (bred)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "Mitt-vänster" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "Mitt-höger" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "Längst till vänster" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "Längst till höger" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "AF-ytläge" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "AF-punkt" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "AF-punkter i fokus" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "Af-punkter i fokus" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Okänd Nikon autofokus-tagg" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "PÃ¥ (51-punkts)" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "PÃ¥ (11-punkts)" + +#: src/nikonmn.cpp:855 +msgid "On (39-point)" +msgstr "PÃ¥ (39-punkts)" + +#: src/nikonmn.cpp:856 +msgid "On (73-point)" +msgstr "PÃ¥ (73-punkts)" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "PÃ¥ (73-punkts, ny)" + +#: src/nikonmn.cpp:858 +msgid "On (105-point)" +msgstr "PÃ¥ (105-punkts)" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "Kontrastmedveten AF" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "Kontrastmedveten AF" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "Fasmedveten AF" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "Fasmedveten AF" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "Primär AF-punkt" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "Primär AF-punkt" + +#: src/nikonmn.cpp:869 +msgid "AF Image Width" +msgstr "AF-bildbredd" + +#: src/nikonmn.cpp:869 +msgid "AF image width" +msgstr "AF-bildbredd" + +#: src/nikonmn.cpp:870 +msgid "AF Image Height" +msgstr "AF-bildhöjd" + +#: src/nikonmn.cpp:870 +msgid "AF image height" +msgstr "AF-bildhöjd" + +#: src/nikonmn.cpp:871 +msgid "AF Area X Position" +msgstr "AF-ytans x-position" + +#: src/nikonmn.cpp:871 +msgid "AF area x position" +msgstr "AF-ytans x-position" + +#: src/nikonmn.cpp:872 +msgid "AF Area Y Position" +msgstr "AF-ytans y-position" + +#: src/nikonmn.cpp:872 +msgid "AF area y position" +msgstr "AF-ytans y-position" + +#: src/nikonmn.cpp:873 +msgid "AF Area Width" +msgstr "AF-ytans bredd" + +#: src/nikonmn.cpp:873 +msgid "AF area width" +msgstr "AF-ytans bredd" + +#: src/nikonmn.cpp:874 +msgid "AF Area Height" +msgstr "AF-ytans höjd" + +#: src/nikonmn.cpp:874 +msgid "AF area height" +msgstr "AF-ytans höjd" + +#: src/nikonmn.cpp:875 +msgid "Contrast Detect AF In Focus" +msgstr "Kontrastmedveten AF i fokus" + +#: src/nikonmn.cpp:875 +msgid "Contrast detect AF in focus" +msgstr "Kontrastmedveten AF i fokus" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Okänd Nikon autofokus 2-tagg" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "Katalognummer" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "Katalognummer" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "Okänd Nikon filinformationstagg" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +msgid "Multiple Exposure" +msgstr "Multiexponering" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "Bildöverlagring" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Multiexponeringsläge" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Multiexponeringsläge" + +#: src/nikonmn.cpp:910 +msgid "Multi Exposure Shots" +msgstr "Multiexponeringsfoton" + +#: src/nikonmn.cpp:910 +msgid "Multi exposure shots" +msgstr "Multiexponeringsfoton" + +#: src/nikonmn.cpp:911 +msgid "Multi Exposure Auto Gain" +msgstr "Multiexponering, autoförstärkning" + +#: src/nikonmn.cpp:911 +msgid "Multi exposure auto gain" +msgstr "Multiexponering, autoförstärkning" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Okänd Nikon multiexponeringstagg" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Intern" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "1.01 (SB-800 eller Metz 58 AF-1)" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Autobländning" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "GN (avstÃ¥ndsprioritet)" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "Upprepad blixt" + +#: src/nikonmn.cpp:1004 +msgid "Bounce Flash" +msgstr "Studsande blixt" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "Bred blixtadapter" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "Gulbrun" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "Blixtkälla" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "Blixtkälla" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External Flash Firmware" +msgstr "Fast programvara för extern blixt" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +msgid "External flash firmware" +msgstr "Fast programvara för extern blixt" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External Flash Flags" +msgstr "Externa blixtflaggor" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +msgid "External flash flags" +msgstr "Externa blixtflaggor" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash Focal Length" +msgstr "Blixtens brännvidd" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +msgid "Flash focal length" +msgstr "Blixtens brännvidd" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "Blixtupprepningsfrekvens" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating flash rate" +msgstr "Blixtupprepningsfrekvens" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "Antal blixtupprepningar" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating flash count" +msgstr "Antal blixtupprepningar" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN Distance" +msgstr "Blixtens GN-avstÃ¥nd" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +msgid "Flash GN distance" +msgstr "Blixtens GN-avstÃ¥nd" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "Kontrolläge för blixtgrupp A" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "Kontrolläge för blixtgrupp a" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "Kontrolläge för blixtgrupp B" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "Kontrolläge för blixtgrupp b" + +#: src/nikonmn.cpp:1073 +msgid "Flash Color Filter" +msgstr "Blixtens färgfilter" + +#: src/nikonmn.cpp:1073 +msgid "Flash color filter" +msgstr "Blixtens färgfilter" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +msgid "Shutter count" +msgstr "Slutarantal" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Okänd Nikon bildinformations-D80-tagg" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "BlixtnivÃ¥" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "BlixtnivÃ¥" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Okänd Nikon bildinformation-D40-tagg" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "Regl AF-finjustering" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "Reglera AF-finjustering" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Okänd Nikon bildinformation-D300 (a)-tagg" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Okänd Nikon bildinformation-D300 (b)-tagg" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "PÃ¥ (3)" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "Slutarantal 1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "Slutarantal 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "Vibrationsreducering 1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "Vibrationsreducering 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "Slutarantal 2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "Slutarantal 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "Vibrationsreducering 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "Vibrationsreducering 2" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "Okänd Nikon bildinformationstagg" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "VB RBGG-nivÃ¥er" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "VB RBGG-nivÃ¥er" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Okänd Nikon Färgbalans 1-tagg" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "VB RGGB-nivÃ¥er" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "VB RGGB-nivÃ¥er" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Okänd Nikon Färgbalans 2-tagg" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Okänd Nikon Färgbalans 2a-tagg" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Okänd Nikon Färgbalans 2b-tagg" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "VB RGBG-nivÃ¥er" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "VB RGBG-nivÃ¥er" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Okänd Nikon Färgbalans 3-tagg" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "VB GRBG-nivÃ¥er" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "VB GRBG-nivÃ¥er" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Okänd Nikon Färgbalans 4-tagg" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "Objektiv-IDnummer" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "Objektiv-ID-nummer" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-Stops" +msgstr "Objektiv F-stopp" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +msgid "Lens F-stops" +msgstr "Objektiv F-stopp" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Min brännvidd" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Min brännvidd" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Max brännvidd" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Max brännvidd" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Max bländning vid min brännvidd" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Max bländning vid min brännvidd" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Max bländning vid max brännvidd" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Max bländning vid max brännvidd" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "MCU-version" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "MCU-version" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Okänd Nikon objektivdata 1-tagg" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit Pupil Position" +msgstr "UtgÃ¥ende pupillposition" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +msgid "Exit pupil position" +msgstr "UtgÃ¥ende pupillposition" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "AF-bländning" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "AF-bländning" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "Effektiv maxbländning" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "Effektiv maxbländning" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Okänd Nikon objektivdata 2-tagg" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "Max bländning vid min brännvidd" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "Max bländning vid max brännvidd" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Okänd Nikon objektivdata 3-tagg" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Närmsta motiv" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "Gruppdynamik-AF" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "ingen" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "använt" + +#: src/nikonmn.cpp:1650 +msgid "All 11 Points" +msgstr "Alla 11 punkter" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Enstaka ram" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Standardkvalitet (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Hög kvalitet (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Superhög kvalitet (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "PÃ¥ (förval)" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Sport" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Liggande+stÃ¥ende" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Självporträtt" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 i 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Natt+stÃ¥ende" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Mat" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Dokument" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "Fota & välj" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Strand och snö" + +#: src/olympusmn.cpp:116 +msgid "Self Portrait+Timer" +msgstr "Självporträtt+självutlösning" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Stearinljus" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "Tillgängligt ljus" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Bakom glas" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "Mitt läge" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Husdjur" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "Undervatten bred1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "Undervatten makro" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "Fota & välj1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "Fota & välj2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "Digital bildstabilisering" + +#: src/olympusmn.cpp:128 +msgid "Auction" +msgstr "Auktion" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "Undervatten bred2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Barn" + +#: src/olympusmn.cpp:135 +msgid "Nature Macro" +msgstr "Natur makro" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "Undervatten snabbfoto" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "Fotografiguide" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Intern + extern" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "Flätad" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "Progressiv" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Miniatyrbild" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Miniatyrbild" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body Firmware Version" +msgstr "Chassits fast programvaruversion" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "Chassits fast programvaruversion" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Specialläge" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Fotograferingsläge" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Svart-och-vitt-läge" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Svart-och-vitt-läge" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Digital zoom" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Fokalplan, diagonalt" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Fokalplan, diagonalt" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Objektivdistorsionsparametrar" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Objektivdistorsionsparametrar" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Kameratyp" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Kameratyp" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "Data i ASCII-format, som [PictureInfo]" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "Kamera-ID" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "Kamera-ID-data" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Program" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Förhandsgranska bild" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Förhandsgranska bild" + +#: src/olympusmn.cpp:237 +msgid "Pre Capture Frames" +msgstr "FörfÃ¥ngst av ramar" + +#: src/olympusmn.cpp:238 +msgid "Pre-capture frames" +msgstr "FörfÃ¥ngst av ramar" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "Vit tavla" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "Vit tavla" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "Enkelberörings-vb" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Enkelberörings-vitbalans" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "Vitbalansgaffling" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "Vitbalansgaffling" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Fast programvara" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Datadump 1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "Diverse kamerainställningar 1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Datadump 2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "Diverse kamerainställningar 1" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Värde för slutarhastighet" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "Värde för ISO-hastighet" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Bländarvärde" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Värde för ljusstyrka" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "Gaffling" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Värde för exponeringskompensation" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Sensortemperatur" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Sensortemperatur" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Objektivtemperatur" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Objektivtemperatur" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "LjusförhÃ¥llande" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Ljusförutsättning" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Fokusvidd" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "FokusavstÃ¥nd" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Zoom" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "Zoomstegsräknare" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "Makrofokus" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "Makrofokusstegräknare" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Faktor för skärpa" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Faktor för skärpa" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "LaddningsnivÃ¥ för blixt" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "LaddningsnivÃ¥ för blixt" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Färgmatris" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Färgmatris" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "SvartnivÃ¥" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "SvartnivÃ¥" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Vitbalansläge" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Rödbalans" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Rödbalans" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "BlÃ¥balans" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "BlÃ¥balans" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Färgmatrisnummer" + +#: src/olympusmn.cpp:343 +msgid "Color matrix number" +msgstr "Färgmatrisnummer" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Serienummer 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Serienummer 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Blixtexponeringskompensation" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Extern blixtstudsning" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Extern blixtstudsning" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +msgid "External Flash Zoom" +msgstr "Zoom för extern blixt" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Zoom för extern blixt" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Externt blixtläge" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Externt blixtläge" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Färgkontroll" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Färgkontroll" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "Giltiga bitar" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "Giltiga bitar" + +#: src/olympusmn.cpp:402 +msgid "CoringFilter" +msgstr "Coring-filter" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring filter" +msgstr "Coring-filter" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "KomprimeringsförhÃ¥llande" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "KomprimeringsförhÃ¥llande" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Förhandsvisningssbild inbäddad" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Förskjutning av förhandsvisningsbilden" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Förhandsvisningsbildens storlek" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "CCD-skanningsläge" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "CCD-skanningsläge" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Oändlig objektivstegning" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Oändlig objektivstegning" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Nära objektivstegning" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Nära objektivstegning" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Utrustningsinformation" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "Kamerautrustningens del-IFD" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "Kamerainställningarnas del-IFD" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "RAW-utveckling" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "RAW-utvecklingens del-IFD" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "RAW-utveckling 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "RAW-utveckling 2 del-IFD" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Bildbehandlingens del-IFD" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Fokusinformation" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "Fokus del-IFD" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "RAW-information" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "RAW del-IFD" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Okänd OlympusMakerNote-tagg" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "Program-byte" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Center-viktat medelvärde" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "Mönster+AF" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "Punkt+högdagerkontroll" + +#: src/olympusmn.cpp:496 +msgid "Spot+Shadow control" +msgstr "Punkt+skuggkontroll" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +msgid "Single AF" +msgstr "Enstaka AF" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "Sekventiell fotografering AF" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "Multi-AF" + +#: src/olympusmn.cpp:517 +msgid "AF Not Used" +msgstr "AF används inte" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "AF används" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Inte redo" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Redo" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "Fyll i" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "LÃ¥ngsam synkronisering" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "Tvingad pÃ¥" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "Andra ridÃ¥n" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "Kanal 1, lÃ¥g" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "Kanal 2, lÃ¥g" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "Kanal 3, lÃ¥g" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "Kanal 4, lÃ¥g" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "Kanal 1, mellan" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "Kanal 2, mellan" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "Kanal 3, mellan" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "Kanal 4, mellan" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "Kanal 1, hög" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "Kanal 2, hög" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "Kanal 3, hög" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "Kanal 4, hög" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "Auto (varma färger av" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500K (Vackert väder med skuggor)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (Molnigt)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (Vackert väder)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K (Volframljus)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "3600K (Volframartat ljus)" + +#: src/olympusmn.cpp:572 +msgid "Auto Setup" +msgstr "Autoinställning" + +#: src/olympusmn.cpp:573 +msgid "5500K (Flash)" +msgstr "5500K (blixt)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (Fluorescerande dagsljus)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (Fluorescerande neutralt vitt)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (Fluorescerande kallt vitt)" + +#: src/olympusmn.cpp:577 +msgid "White Fluorescent" +msgstr "Vitt fluorescerande" + +#: src/olympusmn.cpp:580 +msgid "One Touch WB 1" +msgstr "Enkelberörings-vb 1" + +#: src/olympusmn.cpp:581 +msgid "One Touch WB 2" +msgstr "Enkelberörings-vb 2" + +#: src/olympusmn.cpp:582 +msgid "One Touch WB 3" +msgstr "Enkelberörings-vb 3" + +#: src/olympusmn.cpp:583 +msgid "One Touch WB 4" +msgstr "Enkelberörings-vb 4" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "Egen VB 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "Egen VB 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "Egen VB 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "Egen VB 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (rödförstärkning)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (grönförstärkning)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (blÃ¥förstärkning)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "CM4 (hudtoner)" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "Pro Photo RGB" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Brusfilter" + +#: src/olympusmn.cpp:610 +msgid "Noise Filter (ISO Boost)" +msgstr "Brusfilter (ISO-förstärkning)" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Dämpad" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "Monoton" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "PÃ¥, läge 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "PÃ¥, läge 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "PÃ¥, läge 3" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Kamerainställningsversion" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Kamerainställningsversion" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Giltig förhandsgranskning" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Giltig förhandsgranskningsbild" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "Börja förhandsvisning" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "Börja förhandsgranska bilden" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Förhandsvisningsbildens längd" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Förhandsvisningsbildens längd" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Auto exponeringslÃ¥s" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "Exponeringsbyte" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "Exponeringsbyte" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Fokusförlopp" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Fokusförlopp" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "AF-sökning" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "AF-sökning" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "AF-omrÃ¥den" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "AF-omrÃ¥den" + +#: src/olympusmn.cpp:674 +msgid "AFPointSelected" +msgstr "Vald AF-punkt" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "Reglera AF-finjustering" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "Reglera AF-finjustering" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "Fjärrkontroll för blixt" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "Fjärrkontroll för blixt" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "Blixtkontrolläge" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "Blixtkontrolläge" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "Blixtintensitet" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "Blixtintensitet" + +#: src/olympusmn.cpp:681 +msgid "Manual Flash Strength" +msgstr "Manuell blixtstyrka" + +#: src/olympusmn.cpp:681 +msgid "Manual flash strength" +msgstr "Manuell blixtstyrka" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Vitbalans 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Vitbalans 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Vitbalansens färgtemperatur" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Vitbalansens färgtemperatur" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Egen färgmättnad" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Egen färgmättnad" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Ändrad färgmättnad" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Ändrad färgmättnad" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Kontrastinställning" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Inställning för skärpa" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "Distorsionkorrigering" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "Distorsionkorrigering" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "Skuggkompensation" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "Skuggkompensation" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "Komprimeringsfaktor" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "Komprimeringsfaktor" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "Gradering" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Bildläge" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Bildlägets färgmättnad" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Bildlägets färgmättnad" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Bildlägets nyans" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Bildlägets nyans" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Bildlägets kontrast" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Bildlägets kontrast" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Bildlägets skärpa" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Bildlägets skärpa" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Bildlägets SV-filter" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Bildlägets SV-filter" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "Bildlägets färgton" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "Bildlägets färgton" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Brusfilter" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "Konstfilter" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "Konstfilter" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "Magiskt filter" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "Magiskt filter" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Panoramaläge" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Panoramaläge" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Bildkvalité 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Bildkvalité 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "Manometertryck" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "Manometertryck" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "Manometeravläsning" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "Manometeravläsning" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "Utökad VB-avkänning" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "Utökad VB-avkänning" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "NivÃ¥visare rullning" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "NivÃ¥visare rullning" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "NivÃ¥visare lutning" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "NivÃ¥visare lutning" + +#: src/olympusmn.cpp:716 +msgid "Unknown OlympusCs tag" +msgstr "Okänd OlympusCs-tagg" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "Simpelt E-system" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "E-system" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "Utrustningsversion" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "Utrustningsversion" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Serienummer" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "Serienummer för objektiv" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +msgid "Lens serial number" +msgstr "Serienummer för objektiv" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "Objektivets fast-programvaruversion" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "Objektivets fast-programvaruversion" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Max bländning vid nuvarande brännvidd" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Max bländning vid nuvarande brännvidd" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "Objektivegenskaper" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "Objektivegenskaper" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Förlängare" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "Förlängarens serienummer" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "Förlängarens serienummer" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "Förlängarens modell" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "Förlängarens modell" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "Förlängarens fast-programvaruversion" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "Förlängarens fast-programvaruversion" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Konverteringsobjektiv" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Konverteringsobjektiv" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +msgid "Flash Model" +msgstr "Blixtmodell" + +#: src/olympusmn.cpp:767 +msgid "Flash model" +msgstr "Blixtmodell" + +#: src/olympusmn.cpp:768 +msgid "Flash Firmware Version" +msgstr "Blixtens fast-programvaruversion" + +#: src/olympusmn.cpp:768 +msgid "Flash firmware version" +msgstr "Blixtens fast-programvaruversion" + +#: src/olympusmn.cpp:769 +msgid "FlashSerialNumber" +msgstr "Blixtens serienummer" + +#: src/olympusmn.cpp:771 +msgid "Unknown OlympusEq tag" +msgstr "Okänd OlympusEq-tagg" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Hög hastighet" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "Hög funktion" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "Avancerad hög hastighet" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "Avancerad hög funktion" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Ursprunglig" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Ändrad (liggande)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Ändrad (stÃ¥ende)" + +#: src/olympusmn.cpp:804 +msgid "WB Color Temp" +msgstr "VB färgtemperatur" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "VB grÃ¥punkt" + +#: src/olympusmn.cpp:815 +msgid "Raw Development Version" +msgstr "RAW-utvecklingsversion" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "RAW-utvecklingsversion" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Exponeringsprioritetsvärde" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Exponeringsprioritetsvärde" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Vitbalansvärde" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Vitbalansvärde" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +msgid "WB Fine Adjustment" +msgstr "VB finjustering" + +#: src/olympusmn.cpp:818 +msgid "WB fine adjustment" +msgstr "VB finjustering" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +msgid "Gray Point" +msgstr "GrÃ¥punkt" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +msgid "Gray point" +msgstr "GrÃ¥punkt" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "Mättnadsbetoning" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "Mättnadsbetoning" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "Minnesfärgbetoning" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "Minnesfärgbetoning" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Kontrastvärde" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Kontrastvärde" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "Värde för skärpa" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "Värde för skärpa" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Motor" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Redigeringsstatus" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Inställningar" + +#: src/olympusmn.cpp:830 +msgid "Unknown OlympusRd tag" +msgstr "Okänd OlympusRd-tagg" + +#: src/olympusmn.cpp:885 +msgid "Raw Development 2 Version" +msgstr "RAW-utveckling 2-version" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "RAW-utveckling 2-version" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Finjustering av vitbalans" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "PM-mättnad" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "PM-kontrast" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "PM-skärpa" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "PM SV-filter" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "PM SV-filter" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "PM bildton" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "PM bildton" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "Autogradering" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "Autogradering" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "PM brusfilter" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "Bildlägets brusfilter" + +#: src/olympusmn.cpp:909 +msgid "Unknown OlympusRd2 tag" +msgstr "Okänd OlympusRd2-tagg" + +#: src/olympusmn.cpp:920 +msgid "On (2 frames)" +msgstr "PÃ¥ (2 ramar)" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "PÃ¥ (3 ramar)" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "Bildbehandlingsversion" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "Bildbehandlingsversion" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "VB RB-nivÃ¥er 3000K" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "VB RB-nivÃ¥er 3000K" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "VB RB-nivÃ¥er 3300K" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "VB RB-nivÃ¥er 3300K" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "VB RB-nivÃ¥er 3600K" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "VB RB-nivÃ¥er 3600K" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "VB RB-nivÃ¥er 3900K" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "VB RB-nivÃ¥er 3900K" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "VB RB-nivÃ¥er 4000K" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "VB RB-nivÃ¥er 4000K" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "VB RB-nivÃ¥er 4300K" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "VB RB-nivÃ¥er 4300K" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "VB RB-nivÃ¥er 4500K" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "VB RB-nivÃ¥er 4500K" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "VB RB-nivÃ¥er 4800K" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "VB RB-nivÃ¥er 4800K" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "VB RB-nivÃ¥er 5300K" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "VB RB-nivÃ¥er 5300K" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "VB RB-nivÃ¥er 6000K" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "VB RB-nivÃ¥er 6000K" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "VB RB-nivÃ¥er 6600K" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "VB RB-nivÃ¥er 6600K" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "VB RB-nivÃ¥er 7500K" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "VB RB-nivÃ¥er 7500K" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "VB RB-nivÃ¥er CWB1" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "VB RB-nivÃ¥er CWB1" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "VB RB-nivÃ¥er CWB2" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "VB RB-nivÃ¥er CWB2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "VB RB-nivÃ¥er CWB3" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "VB RB-nivÃ¥er CWB3" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "VB RB-nivÃ¥er CWB4" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "VB RB-nivÃ¥er CWB4" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "VB G-nivÃ¥ 3000K" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "VB G-nivÃ¥ 3000K" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "VB G-nivÃ¥ 3300K" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "VB G-nivÃ¥ 3300K" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "VB G-nivÃ¥ 3600K" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "VB G-nivÃ¥ 3600K" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "VB G-nivÃ¥ 3900K" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "VB G-nivÃ¥ 3900K" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "VB G-nivÃ¥ 4000K" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "VB G-nivÃ¥ 4000K" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "VB G-nivÃ¥ 4300K" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "VB G-nivÃ¥ 4300K" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "VB G-nivÃ¥ 4500K" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "VB G-nivÃ¥ 4500K" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "VB G-nivÃ¥ 4800K" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "VB G-nivÃ¥ 4800K" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "VB G-nivÃ¥ 5300K" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "VB G-nivÃ¥ 5300K" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "VB G-nivÃ¥ 6000K" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "VB G-nivÃ¥ 6000K" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "VB G-nivÃ¥ 6600K" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "VB G-nivÃ¥ 6600K" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "VB G-nivÃ¥ 7500K" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "VB G-nivÃ¥ 7500K" + +#: src/olympusmn.cpp:968 +msgid "WB G Level" +msgstr "VB G-nivÃ¥" + +#: src/olympusmn.cpp:968 +msgid "WB G level" +msgstr "VB G-nivÃ¥" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "Förstärkare" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "Förstärkarvärden" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "Förstärkarvärden" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +msgid "Coring Filter" +msgstr "Coring-filter" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring Values" +msgstr "Coring-värden" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +msgid "Coring values" +msgstr "Coring-värden" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "SvartnivÃ¥" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "Bastillägg" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "Bastillägg" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "Giltiga bitar" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "Beskär vänster" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "Beskär vänster" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "Beskär topp" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "Beskär topp" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "Beskär bredd" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "Beskär bredd" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "Beskär höjd" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "Beskär höjd" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "Multiexponeringsläge" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "Multiexponeringsläge" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "BildförhÃ¥llande" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "BildförhÃ¥llande" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "Bildformat" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "Bildformat" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "AnsiktsspÃ¥rning" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "AnsiktsspÃ¥rning" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "AnsiktsspÃ¥rningsyta" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "AnsiktsspÃ¥rningsyta" + +#: src/olympusmn.cpp:990 +msgid "Unknown OlympusIp tag" +msgstr "Okänd OlympusIp-tagg" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "Studs eller Av" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "Dirigera" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Fokusinfo-version" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Fokusinformationsversion" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Automatisk fokus" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "ScenspÃ¥rning" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "ScenspÃ¥rning" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "Scenyta" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "Scenyta" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "ScenspÃ¥rningsdata" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "ScenspÃ¥rningsdata" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "Zoomstegsräknare" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Fokusstegsräknare" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Fokusstegsräknare" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Fokussteg oändligt" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Fokussteg oändligt" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Fokussteg nära" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Fokussteg nära" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Extern blixt" + +#: src/olympusmn.cpp:1017 +msgid "External Flash Guide Number" +msgstr "Externt blixtguidenummer" + +#: src/olympusmn.cpp:1017 +msgid "External flash guide number" +msgstr "Externt blixtguidenummer" + +#: src/olympusmn.cpp:1021 +msgid "Manual Flash" +msgstr "Manuell blixt" + +#: src/olympusmn.cpp:1021 +msgid "Manual flash" +msgstr "Manuell blixt" + +#: src/olympusmn.cpp:1025 +msgid "Unknown OlympusFi tag" +msgstr "Okänd OlympusFi-tagg" + +#: src/olympusmn.cpp:1036 +msgid "Unknown OlympusFe tag" +msgstr "Okänd OlympusFe-tagg" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "Vackert väder" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "Volfram (bländande)" + +#: src/olympusmn.cpp:1051 +msgid "Evening Sunlight" +msgstr "Kvällssol" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "Dagsljus fluorescerande (D 5700-7100K)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "Dagsljus vitt fluorescerande (N 4600-5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "Kallt vitt fluorescerande (V 3900-4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "Vitt fluorescerande (VV 3200-3700K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Enkelberöringsvitbalans" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "Anpassad 1-4" + +#: src/olympusmn.cpp:1061 +msgid "Raw Info Version" +msgstr "RAW-info-version" + +#: src/olympusmn.cpp:1061 +msgid "Raw info version" +msgstr "RAW-informationsversion" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "VB_RB-nivÃ¥er använda" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "VB_RB-nivÃ¥er använda" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "VB_RB-nivÃ¥er auto" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "VB_RB-nivÃ¥er auto" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "VB_RB-nivÃ¥er skugga" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "VB_RB-nivÃ¥er skugga" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "VB_RB-nivÃ¥er, molnigt" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "VB_RB-nivÃ¥er, molnigt" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "VB_RB-nivÃ¥er, vackert väder" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "VB_RB-nivÃ¥er, vackert väder" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "VB_RB-nivÃ¥er, volfram" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "VB_RB-nivÃ¥er, volfram" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "VB_RB-nivÃ¥er, kvällsljus" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "VB_RB-nivÃ¥er, kvällsljus" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "VB_RB-nivÃ¥er, dagsljus fluor" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "VB_RB-nivÃ¥er, dagsljus fluorescerande" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "VB_RB-nivÃ¥er, dagsljus vitt fluor" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "VB_RB-nivÃ¥er, dagsljust vitt fluorescerande" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "VB_RB-nivÃ¥er, kallt vitt fluor" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "VB_RB-nivÃ¥er, kallt vitt fluorescerande" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB Levels White Fluorescent" +msgstr "VB_RB-nivÃ¥er vitt fluorescerande" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "VB_RB-nivÃ¥er vitt fluorescerande" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "Färgmatris 2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "Färgmatris 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "SvartnivÃ¥ 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "SvartnivÃ¥ 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "YCbCr-koefficienter" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "YCbCr-koefficienter" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "Giltigt bildpunktsdjup" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "Giltigt bildpunktsdjup" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "Vitbalanskomp" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "Vitbalanskompensation" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "Färgmättnadsinställning" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "Nyansinställning" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "Nyansinställning" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "CM-exponeringskompensation" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "CM-exponeringskompensation" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "CM-vitbalans" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "CM-vitbalans" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "CM-vitbalanskompensation" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "CM-vitbalanskompensation" + +#: src/olympusmn.cpp:1092 +msgid "CM White Balance Gray Point" +msgstr "CM-vitbalans, grÃ¥punkt" + +#: src/olympusmn.cpp:1092 +msgid "CM white balance gray point" +msgstr "CM-vitbalans, grÃ¥punkt" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "CM-färgmättnad" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "CM-färgmättnad" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "CM-nyans" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "CM-nyans" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "CM-kontrast" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "CM-kontrast" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "CM-skärpa" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "CM-skärpa" + +#: src/olympusmn.cpp:1098 +msgid "Unknown OlympusRi tag" +msgstr "Okänd OlympusRi-tagg" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Användarvald" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "Auto-tvÃ¥ng" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Snabb" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 kelvin" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 kelvin" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 kelvin" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 kelvin" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 kelvin" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 kelvin" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "Enkel-beröring" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-AF" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-AF" + +#: src/olympusmn.cpp:1456 +msgid "Imager AF" +msgstr "Visar-AF" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "AF-sensor" + +#: src/olympusmn.cpp:1502 +msgid "Soft Focus" +msgstr "Mjukt fokus" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "Popkonst" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "Blek & ljus färg" + +#: src/olympusmn.cpp:1505 +msgid "Light Tone" +msgstr "Ljuston" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "NÃ¥lsöga" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "Grynig film" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "Diorama" + +#: src/olympusmn.cpp:1509 +msgid "Cross Process" +msgstr "Korsprocess" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Fisköga" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "Ritning" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "Mild sepia" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "Blek & ljus färg 2" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "Popkonst 2" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "NÃ¥lsöga 2" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "NÃ¥lsöga 3" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "Grynig film 2" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "Dramatisk nyans" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "Punk" + +#: src/olympusmn.cpp:1520 +msgid "Soft Focus 2" +msgstr "Mjukt fokus 2" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "Gnista" + +#: src/olympusmn.cpp:1522 +msgid "Watercolor" +msgstr "Vattenfärg" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "Nyckelrad" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "Nyckelrad 2" + +#: src/olympusmn.cpp:1525 +msgid "Miniature" +msgstr "Miniatyr" + +#: src/olympusmn.cpp:1526 +msgid "Reflection" +msgstr "Spegling" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "Fragmenterad" + +#: src/olympusmn.cpp:1528 +msgid "Cross Process II" +msgstr "Korsprocess 2" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "Dramatiskt ton 2" + +#: src/olympusmn.cpp:1530 +msgid "Watercolor I" +msgstr "Vattenfärg 1" + +#: src/olympusmn.cpp:1531 +msgid "Watercolor II" +msgstr "Vattenfärg 2" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "Diorama 2" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "Vintage" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "Vintage 2" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "Vintage 3" + +#: src/olympusmn.cpp:1536 +msgid "Partial Color" +msgstr "Delvis färg" + +#: src/olympusmn.cpp:1537 +msgid "Partial Color II" +msgstr "Delvis färg 2" + +#: src/olympusmn.cpp:1538 +msgid "Partial Color III" +msgstr "Delvis färg 3" + +#: src/olympusmn.cpp:1608 +msgid "Left (or n/a)" +msgstr "Vänster (eller inte tillgänglig)" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "Mitten (horisontell)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "Mitten (vertikal)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "Överst till vänster (horisontell)" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "Överst i mitten (horisontell)" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "Överst till höger (horisontell)" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "Vänster (horisontell)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "Mellan-vänster (horisontell)" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "Mellan-höger (horisontell)" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "Höger (horisontell)" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "Nederst till vänster (horisontell)" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "Nederst i mitten (horisontell)" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "Nederst till höger (horisontell)" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "Överst till vänster (vertikal)" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "Överst i mitten (vertikal)" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "Överst till höger (vertikal)" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "Vänster (vertikal)" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "Mellan-vänster (vertikal)" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "Mellan-höger (vertikal)" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "Höger (vertikal)" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "Nederst till vänster (vertikal)" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "Nederst i mitten (vertikal)" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "Nederst till höger (vertikal)" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "Enstaka mÃ¥l" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "Alla mÃ¥l" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "Dynamiskt enstaka mÃ¥l" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Mycket hög" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Rörlig bild" + +#: src/panasonicmn.cpp:61 +msgid "Full HD Movie" +msgstr "Full HD-film" + +#: src/panasonicmn.cpp:62 +msgid "4k Movie" +msgstr "4k-film" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Halogen" + +#: src/panasonicmn.cpp:83 +msgid "Auto, focus button" +msgstr "Auto, fokusknapp" + +#: src/panasonicmn.cpp:84 +msgid "Auto, continuous" +msgstr "Auto, kontinuerlig" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "AF-F" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "Panorering" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "Telemakro" + +#: src/panasonicmn.cpp:104 +msgid "Macro-zoom" +msgstr "Makro-zoom" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Landskap" + +#: src/panasonicmn.cpp:117 +msgid "Shutter-speed priority" +msgstr "Slutarhastighetsprioritet" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "Filmförhandsgranskning" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "Enkel" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "Färgeffekter" + +#: src/panasonicmn.cpp:130 +msgid "Night scenery" +msgstr "Nattscen" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "Baby" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "Mjukt skin" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Stearinljus" + +#: src/panasonicmn.cpp:135 +msgid "Starry night" +msgstr "Stjärnklar natt" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "Hög känslighet" + +#: src/panasonicmn.cpp:137 +msgid "Panorama assist" +msgstr "Panoramahjälp" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "Flygfoto" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "Intelligent ISO" + +#: src/panasonicmn.cpp:144 +msgid "Clipboard" +msgstr "Urklipp" + +#: src/panasonicmn.cpp:145 +msgid "High speed continuous shooting" +msgstr "Höghastighetsseriebilder" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "Intelligent auto" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "Multi-aspekt" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "Transformera" + +#: src/panasonicmn.cpp:149 +msgid "Flash Burst" +msgstr "Blixtseriebild" + +#: src/panasonicmn.cpp:151 +msgid "Film Grain" +msgstr "Filmgrynighet" + +#: src/panasonicmn.cpp:152 +msgid "My Color" +msgstr "Min färg" + +#: src/panasonicmn.cpp:153 +msgid "Photo Frame" +msgstr "Bildruteram" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "HDR" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +msgid "Handheld Night Shot" +msgstr "Handburen mörkertagning" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "3d" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +msgid "Creative Control" +msgstr "Kreativ kontroll" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "Genom glas" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Digitalt filter" + +#: src/panasonicmn.cpp:162 +msgid "Clear Portrait" +msgstr "Rent porträtt" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "Mjuk hud" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "Bakgrundsbelyst mjukhet" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "Klar med bakgrundsljus" + +#: src/panasonicmn.cpp:166 +msgid "Relaxing Tone" +msgstr "Avslappnad nyans" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "Sött barnansikte" + +#: src/panasonicmn.cpp:168 +msgid "Distinct Scenery" +msgstr "Distinkt omgivning" + +#: src/panasonicmn.cpp:169 +msgid "Bright Blue Sky" +msgstr "KlarblÃ¥ himmel" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "Romantisk skymmning" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "Intensiv skymmning" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "Glittrande vatten" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "Klar natt" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "Cool natt" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "Varm glödande natt" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "Artistisk natt" + +#: src/panasonicmn.cpp:177 +msgid "Glittering Illuminations" +msgstr "Glittrande belysningar" + +#: src/panasonicmn.cpp:178 +msgid "Clear Night Portrait" +msgstr "Rent nattporträtt" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "Mjuk bild av blomma" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "Aptitretande mat" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "Söt öken" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "Fryst djurrörelse" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "Ren sportfotografering" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "Stereo" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Varm" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Häftig" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "Glad" + +#: src/panasonicmn.cpp:208 +msgid "Low/High quality" +msgstr "LÃ¥g/Hög kvalitet" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "Oändlig" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "MedellÃ¥g" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "Medelhög" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "LÃ¥g (-1)" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "Hög (+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Lägsta (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "Högsta (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "Rotera 180" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "Aktiverad men inte använd" + +#: src/panasonicmn.cpp:254 +msgid "Disabled but Required" +msgstr "Inaktiverad men krävs" + +#: src/panasonicmn.cpp:255 +msgid "Disabled and Not Required" +msgstr "Inaktiverad och krävs ej" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "EX-optik" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "Telefoto" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "Hem" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Standard (färg)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "Dynamisk (färg)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Natur (färg)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "Mjuk (färg)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Standard (S&V)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "Dynamisk (S&V)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "Mjuk (S&V)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "Nostalgisk" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "Lysande" + +#: src/panasonicmn.cpp:307 +msgid "No Bracket" +msgstr "Ingen gaffling" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "Tre bilder, sekvens 0/-/+" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "Tre bilder, sekvens -/0/+" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "Fem bilder, sekvens 0/-/+" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "Fem bilder, sekvens -/0/+" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "Sju bilder, sekvens 0/-/+" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "Sju bilder, sekvens -/0/+" + +#: src/panasonicmn.cpp:319 +msgid "1st" +msgstr "Första" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "Andra" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "Ja (blixt krävs, men är inaktiverad" + +#: src/panasonicmn.cpp:349 +msgid "Extended" +msgstr "Utökad" + +#: src/panasonicmn.cpp:368 +msgid "NoAuto" +msgstr "NoAuto" + +#: src/panasonicmn.cpp:369 +msgid "Standard or Custom" +msgstr "Standard eller anpassad" + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "Rotera medsols" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "Rotera motsols" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "Luta uppÃ¥t" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "Luta nerÃ¥t" + +#: src/panasonicmn.cpp:396 +msgid "Left to Right" +msgstr "Vänster till höger" + +#: src/panasonicmn.cpp:397 +msgid "Right to Left" +msgstr "Höger till vänster" + +#: src/panasonicmn.cpp:398 +msgid "Top to Bottom" +msgstr "Topp till botten" + +#: src/panasonicmn.cpp:399 +msgid "Bottom to Top" +msgstr "Botten till topp" + +#: src/panasonicmn.cpp:405 +msgid "Time Lapse" +msgstr "Tidsskala" + +#: src/panasonicmn.cpp:406 +msgid "Stop-Motion Animation" +msgstr "Stop-Motion-animation" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "1 EV" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "2 EV" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "3 EV" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "1 EV (Auto)" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "2 EV (Auto)" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "3 EV (Auto)" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "Mekanism" + +#: src/panasonicmn.cpp:423 +msgid "Electronic" +msgstr "Elektronisk" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "Hybrid" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Ljud" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Justering av vitbalans" + +#: src/panasonicmn.cpp:454 +msgid "FlashBias" +msgstr "Blixtprioritet" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Exif-version" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Färgeffekt" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Färgeffekt" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" +"Tid i 1/100 s frÃ¥n dÃ¥ kameran sattes pÃ¥ tills bilden skrivs till minneskortet" + +#: src/panasonicmn.cpp:460 +msgid "Burst Mode" +msgstr "Upprepningsläge" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "Upprepningsläge" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Brusreducering" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "Självutlösare" + +#: src/panasonicmn.cpp:467 +msgid "AF Assist Lamp" +msgstr "AF-hjälplampa" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "Bebisens Ã¥lder 1" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "Bebisens (eller husdjurets) Ã¥lder 1" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "Optisk zoom-läge" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "Optisk zoom-läge" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "Avresedag" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "Avresedag" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Världstidsplats" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Världstidsplats" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "Textstämpel 1" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "Program-ISO" + +#: src/panasonicmn.cpp:477 +msgid "Advanced Scene Type" +msgstr "Avancerad scentyp" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "Textstämpel 2" + +#: src/panasonicmn.cpp:479 +msgid "Faces detected" +msgstr "Ansikte avkänt" + +#: src/panasonicmn.cpp:483 +msgid "Color Temp Kelvin" +msgstr "Färgtemperatur Kelvin" + +#: src/panasonicmn.cpp:483 +msgid "Color Temperatur in Kelvin" +msgstr "Färgtemperatur i Kelvin" + +#: src/panasonicmn.cpp:484 +msgid "Bracket Settings" +msgstr "Gafflingsinställningar" + +#: src/panasonicmn.cpp:485 +msgid "WB Adjust AB" +msgstr "VB justera AB" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "VB justera AB. Positivt är ett skifte mot blÃ¥tt." + +#: src/panasonicmn.cpp:486 +msgid "WB Adjust GM" +msgstr "VB justera GM" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "VB justera GM. Positivt är ett skifte mot grönt." + +#: src/panasonicmn.cpp:487 +msgid "Flash Curtain" +msgstr "BlixtridÃ¥" + +#: src/panasonicmn.cpp:488 +msgid "Long Shutter Noise Reduction" +msgstr "LÃ¥ng bländare, brusreducering" + +#: src/panasonicmn.cpp:491 +msgid "AF Point Position" +msgstr "AF-punktposition" + +#: src/panasonicmn.cpp:492 +msgid "Face detection info" +msgstr "AnsiktsspÃ¥rningsinfo" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "Typ av tillbehör" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "Typ av tillbehör" + +#: src/panasonicmn.cpp:496 +msgid "Accessory Serial Number" +msgstr "Tillbehörsserienummer" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "Transform 1" + +#: src/panasonicmn.cpp:498 +msgid "Intelligent Exposure" +msgstr "Intelligent exponering" + +#: src/panasonicmn.cpp:499 +msgid "Firmware Version of the Lens" +msgstr "Version av fast programvara för objektivet" + +#: src/panasonicmn.cpp:500 +msgid "Face recognition info" +msgstr "Ansiktsigenkänningsinfo" + +#: src/panasonicmn.cpp:501 +msgid "Flash Warning" +msgstr "Blixtvarning" + +#: src/panasonicmn.cpp:501 +msgid "Flash warning" +msgstr "Blixtvarning" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Titel" + +#: src/panasonicmn.cpp:503 +msgid "Baby Name" +msgstr "Bebisens namn" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "Bebisens (eller husdjurets) namn" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Plats" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "TillstÃ¥nd" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "Landmärke" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "Intelligent upplösning" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed" +msgstr "Seriebildshastighet" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "Hastighet för seriebildsläge i bilder per sekund" + +#: src/panasonicmn.cpp:511 +msgid "Intelligent Dynamic Range" +msgstr "Intelligent dynamikintervall" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "Ren retuschering" + +#: src/panasonicmn.cpp:513 +msgid "City2" +msgstr "Stad 2" + +#: src/panasonicmn.cpp:515 +msgid "Photo style" +msgstr "Fotostil" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "Accelerometer Z" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "positivt är acceleration uppÃ¥t" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "Accelerometer x" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "positivt är vänsteracceleration" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "Accelerometer y" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "positivt är acceleration bakÃ¥t" + +#: src/panasonicmn.cpp:520 +msgid "Camera Orientation" +msgstr "Kameraorientering" + +#: src/panasonicmn.cpp:521 +msgid "Roll Angle" +msgstr "Roll-vinkel" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "grader av medurs kamerarotation" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "Pitch angle" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "grader pÃ¥ kameralutning uppÃ¥t" + +#: src/panasonicmn.cpp:523 +msgid "Sweep Panorama Direction" +msgstr "Panoramasvepriktning" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "Fält för panoramavy" + +#: src/panasonicmn.cpp:525 +msgid "Timer Recording" +msgstr "Tidtagarinspelning" + +#: src/panasonicmn.cpp:526 +msgid "Internal ND Filter" +msgstr "Internt ND-filter" + +#: src/panasonicmn.cpp:528 +msgid "Shutter Type" +msgstr "Slutartyp" + +#: src/panasonicmn.cpp:529 +msgid "Clear Retouch Value" +msgstr "Rent retuscheringsvärde" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "Berörings-AE" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "MakerNote-version" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "MakerNote-version" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "VB rödnivÃ¥" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "VB rödnivÃ¥" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "VB grönnivÃ¥" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "VB grönnivÃ¥" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "VB blÃ¥nivÃ¥" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "VB blÃ¥nivÃ¥" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "Textstämpel 3" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "Textstämpel 4" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "Bebisens Ã¥lder 2" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "Bebisens (eller husdjurets) Ã¥lder 2" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "Transformera 2" + +#: src/panasonicmn.cpp:544 +msgid "Unknown PanasonicMakerNote tag" +msgstr "Okänd PanasonicMakerNote-tagg" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "Punktläge pÃ¥ eller 9-omrÃ¥de" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "Punktläge av eller 3-omrÃ¥de (hög hastighet)" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "23-omrÃ¥de" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "Punktfokusering" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "5-omrÃ¥de" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "1-omrÃ¥de" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "1-omrÃ¥de (hög hastighet)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "3-omrÃ¥de (auto)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "3-omrÃ¥de (vänster)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "3-omrÃ¥de (mitt)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "3-omrÃ¥de (höger)" + +#: src/panasonicmn.cpp:574 +msgid "Spot Focusing 2" +msgstr "Punktfokusering 2" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " EV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +msgid "not set" +msgstr "ej satt" + +#: src/panasonicmn.cpp:725 +msgid "Panasonic raw version" +msgstr "Panasonic RAW-version" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "Sensorvidd" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "Sensorvidd" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "Sensorhöjd" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "Sensorhöjd" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "Sensorns översta gräns" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "Sensorns översta gräns" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "Sensorns vänstra gräns" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "Sensorns vänstra gräns" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Rödbalans (finns i Digilus 2 RAW-bilder)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Tillverkare" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "Inspelningsutrustningens tillverkare" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Modell" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "Utrustningens modellnamn eller -nummer" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "Strippförskjutningar" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "Strippförskjutningar" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "Orientering" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "Rader per stripp" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "Antal rader per stripp" + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "Stripp, antal byte" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "Antal byte per stripp" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "RAW-dataförskjutning" + +#: src/panasonicmn.cpp:745 +msgid "Raw data offset" +msgstr "RAW-dataförskjutning" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "Exif IFD-pekare" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "En pekare till Exifs IFD" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "GPS-info IFD-pekare" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "En pekare till GPS-informationens IFD" + +#: src/panasonicmn.cpp:749 +msgid "Unknown PanasonicRaw tag" +msgstr "Okänd Panasonic-RAW-tagg" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Nattscen" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Bra" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Bättre" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Bäst" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Premium" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 eller 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 eller 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 eller 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Auto, inte utlöst" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +msgid "Off, Did not fire" +msgstr "Av, utlöstes inte" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Automatisk, inte utlöst, minskning av röda ögon" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "PÃ¥, utlöstes inte, TrÃ¥dlös (Master)" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Auto, utlöst" + +#: src/pentaxmn.cpp:253 +msgid "On, Fired" +msgstr "PÃ¥, utlöstes" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Automatisk, utlöst, minskning av röda ögon" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "PÃ¥, minskning av röda ögon" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "PÃ¥, utlöstes (Master)" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "PÃ¥, trÃ¥dlös (Control)" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "PÃ¥, mjuk" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "PÃ¥, lÃ¥ngsam synk" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "PÃ¥, lÃ¥ngsam synk, minskning av röda ögon" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "PÃ¥, släpande-ridÃ¥ synkronisering" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Panoreringsfokus" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "AF-A" + +#: src/pentaxmn.cpp:276 +msgid "Contrast-detect" +msgstr "Kontrastigenkänning" + +#: src/pentaxmn.cpp:277 +msgid "Tracking Contrast-detect" +msgstr "SpÃ¥rar kontrastigenkänning" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "Fixerat centrum" + +#: src/pentaxmn.cpp:285 +msgid "Automatic Tracking AF" +msgstr "Automatisk spÃ¥rning AF" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "Ansiktsigenkänning AF" + +#: src/pentaxmn.cpp:287 +msgid "AF Select" +msgstr "AF-val" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "Fixerat centrum eller flera" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Överst i mitten" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Nederst i mitten" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Multisegment" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Mitt-viktad" + +#: src/pentaxmn.cpp:415 +msgid "DaylightFluorescent" +msgstr "Dagsljus, fluorescerande" + +#: src/pentaxmn.cpp:416 +msgid "DaywhiteFluorescent" +msgstr "Dagslj. v. fluor" + +#: src/pentaxmn.cpp:417 +msgid "WhiteFluorescent" +msgstr "Vitt fluorescerande" + +#: src/pentaxmn.cpp:420 +msgid "Color Temperature Enhancement" +msgstr "Färgtempererad förbättring" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Användardefinierat" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Auto (dagsljus)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Auto (skugga)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Auto (blixt)" + +#: src/pentaxmn.cpp:431 +msgid "Auto (Tungsten)" +msgstr "Auto (volfram)" + +#: src/pentaxmn.cpp:432 +msgid "Auto (DaylightFluorescent)" +msgstr "Auto (dagsljusfluorescerande)" + +#: src/pentaxmn.cpp:433 +msgid "Auto (DaywhiteFluorescent)" +msgstr "Auto (dagsljus, vitt fluorescerande)" + +#: src/pentaxmn.cpp:434 +msgid "Auto (WhiteFluorescent)" +msgstr "Auto (vitt fluorescerande)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Auto (molnigt)" + +#: src/pentaxmn.cpp:437 +msgid "Preset (Fireworks?)" +msgstr "Förval (fyrverkerier?)" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +msgid "Med Low" +msgstr "Mellan lÃ¥g" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +msgid "Med High" +msgstr "Mellan hög" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "Medelmjuk" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "MedelhÃ¥rd" + +#: src/pentaxmn.cpp:475 +msgid "Very Soft" +msgstr "Mycket mjuk" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "Mycket hÃ¥rd" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "Hemstad" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Pago Pago" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Honolulu" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Anchorage" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Vancouver" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "San Fransisco" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "Los Angeles" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Calgary" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Denver" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Mexico City" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Chicago" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Miami" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Toronto" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "New York" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "Santiago" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "Caracus" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Halifax" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "Buenos Aires" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Sao Paulo" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Rio de Janeiro" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Madrid" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "London" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Paris" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Milano" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Rom" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Berlin" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "Johannesburg" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Istanbul" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Kairo" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "Jerusalem" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "Moskva" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Jeddah" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Teheran" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Dubai" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Karachi" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Kabul" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Malé" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Delhi" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Colombo" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Katmandu" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Dacca" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Yangon" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Bangkok" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Kuala Lumpur" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Vientiane" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Singapore" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Phnom Penh" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Ho Chi Minh" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Jakarta" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Hong Kong" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Perth" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Peking" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Shanghai" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Manilla" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Taipei" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Seoul" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Adelaide" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Tokyo" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Guam" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Sydney" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Noumea" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Wellington" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Auckland" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Lima" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Dakar" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Alger" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Helsingfors" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Aten" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Nairobi" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Amsterdam" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Stockholm" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "Lissabon" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Köpenhamn" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "Warsawa" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "Prag" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "Budapest" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Obehandlad" + +#: src/pentaxmn.cpp:570 +msgid "Resized" +msgstr "Storleksändrad" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "Beskuren" + +#: src/pentaxmn.cpp:573 +msgid "Digital Filter 6" +msgstr "Digitalfilter 6" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "Ramsyntes?" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Höghastighetsprogram" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "DOF-program" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +msgid "MTF Program" +msgstr "MTF-program" + +#: src/pentaxmn.cpp:588 +msgid "Night Scene Portrait" +msgstr "Nattscensporträtt" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Ingen blixt" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "Hav och snö" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Barn" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "Scenbelysning" + +#: src/pentaxmn.cpp:601 +msgid "Night Snap" +msgstr "Nattbild" + +#: src/pentaxmn.cpp:602 +msgid "Blue Sky" +msgstr "BlÃ¥ himmel" + +#: src/pentaxmn.cpp:604 +msgid "Night Scene HDR" +msgstr "Nattscen HDR" + +#: src/pentaxmn.cpp:606 +msgid "Quick Macro" +msgstr "Kvick makro" + +#: src/pentaxmn.cpp:607 +msgid "Forest" +msgstr "Skog" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "Bakgrundsbelyst siluett" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "Auto PICT (standard)" + +#: src/pentaxmn.cpp:611 +msgid "Auto PICT (Portrait)" +msgstr "Auto PICT (stÃ¥ende)" + +#: src/pentaxmn.cpp:612 +msgid "Auto PICT (Landscape)" +msgstr "Auto PICT (liggande)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "Auto PICT (makro)" + +#: src/pentaxmn.cpp:614 +msgid "Auto PICT (Sport)" +msgstr "Auto PICT (sport)" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Grönläge" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +msgid "Shutter Speed Priority" +msgstr "Slutarhastighetsprioritet" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Bländarprioritet" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Glödlampa" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "Ytlig DOF" + +#: src/pentaxmn.cpp:631 +msgid "Program Tv Shift" +msgstr "Programmera Tv-byte" + +#: src/pentaxmn.cpp:632 +msgid "Program Av Shift" +msgstr "Programmera Av-byte" + +#: src/pentaxmn.cpp:635 +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Bländarprioritet (autobländning-av)" + +#: src/pentaxmn.cpp:636 +msgid "Manual (Off-Auto-Aperture)" +msgstr "Manuell (Av-autobländning)" + +#: src/pentaxmn.cpp:637 +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Glödlampa (autobländning-av)" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Slutarprioritet" + +#: src/pentaxmn.cpp:640 +msgid "Shutter & Aperture Priority AE" +msgstr "Slutar- & bländarprioritet AE" + +#: src/pentaxmn.cpp:641 +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Slutar- & bländarprioritet AE (1)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "Känslighetsprioritet AE" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "Känslighetsprioritet AE (1)" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "Blixtens x-synkhastighet AE" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "Blixtens x-synkhastighet AE (1)" + +#: src/pentaxmn.cpp:646 +msgid "Auto Program (Normal)" +msgstr "Autoprogram (normal)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "Autoprogram (hi-speed)" + +#: src/pentaxmn.cpp:648 +msgid "Auto Program (DOF)" +msgstr "Autoprogram (DOF)" + +#: src/pentaxmn.cpp:649 +msgid "Auto Program (MTF)" +msgstr "Autoprogram (MTF)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "Autoprogram (ytlig DOF)" + +#: src/pentaxmn.cpp:651 +msgid "Blur control" +msgstr "Oskärpakontroll" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "Video (30 fps)" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "Video (24 fps)" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Kontinuerlig (hög)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Upprepning" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "Video" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "Självutlösning (12 sek)" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "Självutlösning (2 sek)" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "Spegeluppfällning" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Fjärrutlösning (3 sek)" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Fjärrkontroll" + +#: src/pentaxmn.cpp:672 +msgid "Remote Continuous Shooting" +msgstr "Fjärrseriebildsläge" + +#: src/pentaxmn.cpp:675 +msgid "HDR Strong 1" +msgstr "HDR stark 1" + +#: src/pentaxmn.cpp:676 +msgid "HDR Strong 2" +msgstr "HDR stark 2" + +#: src/pentaxmn.cpp:677 +msgid "HDR Strong 3" +msgstr "HDR stark 3" + +#: src/pentaxmn.cpp:678 +msgid "HDR Auto" +msgstr "HDR auto" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 eller inget objektiv" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "K eller M-objektiv" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "Serie A-objektiv" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Ljus" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "Omvänd film" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "Bleach bypass" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "Radie" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Svagaste" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Svag" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Stark" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "Ingen utökad gaffling" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Okänd " + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "Pentax Makernote-version" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Kamerans fotograferingsläge" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Upplösning för förhandsvisningsbild" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Längd för förhandsvisningsbild" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "Storlek för IFD som innehÃ¥ller en förhandsvisningsbild" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Modellidentifiering" + +#: src/pentaxmn.cpp:1161 +msgid "Pentax model identification" +msgstr "Pentax-modellidentifiering" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Datum" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Tid" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Inställningar för bildkvalitet" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Inställningar för bildstorlek" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Inställningar för blixtläge" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Inställningar för fokusläge" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Vald AF-punkt" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +msgid "AF point in focus" +msgstr "AF-punkt i fokus" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "F-nummer" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "ISO-känslighet" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "ISO-känslighetsinställningar" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Mätningsläge" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +msgid "AutoBracketing" +msgstr "Autobracketing" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "BlÃ¥ färgbalans" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Röd färgbalans" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "Brännvidd" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "Hemstad" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "Hemstadens sommar-/vintertid" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "Om det är sommar- eller vintertid i hemstaden" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Destinationens sommar-/vintertid" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "Om det är sommar- eller vintertid pÃ¥ destinationen" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +msgid "DSPFirmwareVersion" +msgstr "DSP fast-programvaruversion" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +msgid "CPUFirmwareVersion" +msgstr "CPU fast-programvaruversion" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Ljusvärde" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "Kamerans beräknade ljusvärde, inkluderar exponeringskompensation" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "Bildytans förskjutning" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "RAW-bildstorlek" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Förhandsvisningsramar" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Känslighetsjustering" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Digitalt filter" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Kamerans temperatur" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Bildton" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Bildstabilisering" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "Bildstabiliseringinformation" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "Dynamisk intervallexpansion" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Hög ISO-brusreducering" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "AF-justering" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Svartpunkt" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Vitpunkt" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Bildinfo" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +msgid "AEInfo" +msgstr "AE-info" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Objektivinfo" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Blixtinfo" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "AE-mätningssegment" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +msgid "FlashADump" +msgstr "Blixt A-dump" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +msgid "FlashBDump" +msgstr "Blixt B-dump" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "WB_RGGBLevelsDaylight" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "WB_RGGBLevelsShade" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "WB_RGGBLevelsCloudy" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "WB_RGGBLevelsTungsten" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "VB_RGGB-nivÃ¥er fluor. dagslj" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "VB_RGGB-nivÃ¥er fluor. natt" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "VB_RGGB-nivÃ¥er fluor. vitt" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "WB_RGGBLevelsFlash" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Kamerainfo" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Batteri-info" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +msgid "AFInfo" +msgstr "AF-info" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "Färginfo" + +#: src/pentaxmn.cpp:1405 +msgid "Unknown PentaxMakerNote tag" +msgstr "Okänd PentaxMakerNote-tagg" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "Dublin Core-schema" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "digiKam fotohanteringsschema" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "KDEs bildprogramsgränssnittsschema" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "XMP basschema" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "XMP rättighetshanteringsschema" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "XMP mediahanteringsschema" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "XMP basjobbsschema" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "XMP indelad text-schema" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "XMP dynamiskt media-schema" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "Microsoft Photo-schema" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "Adobe Lightroom-schema" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "Adobe PDF-schema" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "Adobe Photoshop-schema" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "Kamerans RAW-schema" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "Exif-schema för TIFF-egenskaper" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "Exif-schema för Exif-specifika egenskaper" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "Exif-schema för ytterligare Exif-egenskaper" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "IPTC Core-schema" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "IPTC Extension-schema" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "PLUS licensdataformatschema" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "iView Media Pro-schema" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "Expression Media-schema" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "Microsoft Photo 1.2-schema" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "Microsoft Photo RegionInfo-schema" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "Microsoft Photo Region-schema" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "Metadata Working Group Regions-schema" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "Metadata Working Group Keywords-schema" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "XMP Extended Video-schema" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "XMP Extended Audio-schema" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "XMP Darwin Core-schema" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "Qualified Dublin Core-schema" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "ACDSee XMP-schema" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "Google Photo Sphere XMP-schema" + +#: src/properties.cpp:148 +msgid "Colorant structure" +msgstr "Färgningsstruktur" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "Dimensionsstruktur" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "Teckensnittsstruktur" + +#: src/properties.cpp:151 +msgid "Thumbnail structure" +msgstr "Miniatyrbildsstruktur" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "Resurshändelsestruktur" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "Resursref-struktur" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Versionsstruktur" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "Grundläggande jobb-/arbetsflödesstruktur" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "OmrÃ¥desstruktur" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "Kvalificerare för xmp:Identifier" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Bidragsgivare" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "Vi bidrog till resursen (andra än författarna)." + +#: src/properties.cpp:164 +msgid "Coverage" +msgstr "Täckning" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" +"Det spatiala eller temporala ämnet för resursen, dess spatiala " +"tillämpbarhet, eller lagfarten under vilken den är relevant." + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Skapare" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" +"Författarna för resursen (räknas upp efter hierarki, i de fall det har " +"betydelse)." + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "Datum dÃ¥ nÃ¥got intressant hände med resursen." + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" +"En textbeskrivning av resursens innehÃ¥ll. Flera värden kan finnas för olika " +"sprÃ¥k." + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Format" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" +"Filformatet som används för att spara resursen. Verktyg och program ska ange " +"den här egenskapen till lagringsformatet för datat. Det kan inkludera " +"passande kvalificerare." + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Identifierare" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" +"Resursens unika identifikation. Rekommenderad användning är att identifiera " +"resursen med en sträng som följer ett formellt identifieringssystem." + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "Ett osorterat fält som anger vilka sprÃ¥k som används i resursen." + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Utgivare" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" +"En organisation ansvarig för att göra resursen tillgänglig. Exempel pÃ¥ " +"utgivare är en person, organisation, eller tjänst. I regel bör utgivarens " +"namn användas för att beskriva organisationen." + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Relation" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" +"Relationer till andra dokument. Rekommenderad användning är att identifiera " +"den relaterade resursen med en sträng som följer ett formellt " +"identifikationssystem." + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Rättigheter" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" +"Ã…beropande av informella rättigheter, valt efter sprÃ¥k. I regel innehÃ¥ller " +"rättighetsinformation ett Ã¥beropande av olika äganderättigheter associerade " +"med resursen, inklusive immateriell äganderätt." + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Unik identifierare av det verk frÃ¥n vilket resursen härrör." + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" +"Ett osorterat fält med beskrivande fraser eller nyckelord som anger ämnet " +"för resursens innehÃ¥ll." + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" +"Dokumentets titel, eller namnet som tilldelats resursen. I vanliga fall är " +"det namnet resursen kallas formellt." + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Typ" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "En dokumenttyp, till exempel roman, dikt, eller arbetsrapport." + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "Tagglista" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" +"Listan över fullständiga taggsökvägar som en sträng. Sökvägshierarkin " +"separeras med tecknet â€/†(t.ex. â€Stad/Paris/Monument/Eiffeltornetâ€)." + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Bildtext författarnamn" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" +"Listan över all bildtext och författarnamn för varje sprÃ¥k, eller bildtext " +"angiven i vanliga XMP-taggar." + +#: src/properties.cpp:196 +msgid "Captions Date Time Stamps" +msgstr "Bildtext datum-/tidsstämplar" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" +"Listan över all bildtext och datum-/tidsstämplar för varje sprÃ¥k, eller " +"bildtext angiven i vanliga XMP-taggar." + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Bildhistorik" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" +"Ett XML-baserat innehÃ¥ll som listar alla Ã¥tgärder som verkställts pÃ¥ den här " +"bilden med bildredigerare (som beskär, rotera, färgkorrektur, justeringar, " +"osv.)." + +#: src/properties.cpp:198 +msgid "Lens Correction Settings" +msgstr "Objektivkorrigeringar" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" +"Listan över verktygsinställningar för objektivkorrigering som används för " +"att rätta till objektivdistorsion. Det inkluderar automatiserad köhanterare " +"och bildredigeringsverktyg baserad pÃ¥ biblioteket LensFun." + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Färgetikett" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" +"Färgetiketten som har tilldelats objektet. Möjliga värden är â€0â€: ingen " +"etikett; â€1â€: Röd; â€2â€: Orange; â€3â€: Gul; â€4â€: Grön; â€5â€: BlÃ¥; â€6â€: Magenta; " +"â€7â€: GrÃ¥; â€8â€: Svart; â€9â€: Vit." + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "Pick-etikett" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" +"En pick-etikett tillägna detta objekt. Möjliga värden är â€0â€: ingen etikett; " +"â€1â€: objekt tillbakavisad; â€2â€: objekt väntandes pÃ¥ validering; â€3â€: objekt " +"accepteras." + +#: src/properties.cpp:206 +msgid "Panorama Input Files" +msgstr "Indatafiler för Panorama" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" +"Listan över filer som behandlats med programmet Hugin genom verktyget " +"Panorama." + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "Indatafiler för Enfuse" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" +"Listan över filer som behandlats med programmet Enfuse genom verktyget " +"ExpoBlending." + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Inställningar av Enfuse" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" +"Listan över Enfuse-inställningar som används för att blanda bildhögen med " +"verktyget ExpoBlending." + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "PicasaWeb objekt-ID" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "Objekt-ID frÃ¥n PicasaWeb-webbtjänst." + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "Yandex Fotki objekt-ID" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "Objekt-ID frÃ¥n Yandex Fotki-webbtjänst." + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "Varning" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" +"Ett osorterat fält som anger egenskaper som redigerades utanför programmet " +"som skapade dem. Varje objekt bör innehÃ¥lla ett namn och en XPath, " +"separerade med ett ASCII-blanksteg (U+0020)." + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "Bas-URL" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" +"Bas-URL:en för relativa URL:er i dokumentets innehÃ¥ll. Om dokumentet " +"innehÃ¥ller internetlänkar, och de är relativa, är de dÃ¥ relativa till den " +"här bas-URL:en. Egenskapen tillhandahÃ¥ller en standard för hur inbäddade " +"relativa URL:er tolkas av verktyg. Webbdesignprogram bör ange värdet baserat " +"pÃ¥ deras begrepp om var URL:erna kommer tolkas." + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Skapat datum" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "Datum och tid dÃ¥ resursen ursprungligen skapades." + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "Skaparverktyg" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" +"Namnet pÃ¥ det först kända verktyg som användes för att skapa resursen. Om " +"historiken finns i metadatan ska det här värdet vara samma som xmpMM:" +"Historys softwareAgent-egenskap." + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" +"Ett osorterat fält med textsträngar som tydligt identifierar resursen inom " +"ett givet sammanhang. Ett vektorobjekt kan kvalificeras med xmpidq:Scheme " +"för att visa vilket formellt identifieringssystem identifieraren följer. " +"OBS: Egenskapen dc:identifier används inte eftersom den saknar en definierad " +"schema-kvalificerare och har definierats i XMP-specifikationen som en enkel " +"egenskap (ett värde)." + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Etikett" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" +"Ett ord eller en kort fras som identifierar ett dokument som en del av en " +"användardefinierad samling. Används för att sortera dokument i en " +"filhanterare." + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "Metadata, datum" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" +"Datum och tiden dÃ¥ metadata för den här resursen senast ändrades. Det borde " +"vara samma som eller nyare än xmp:ModifyDate." + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Ändringsdatum" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" +"Datum och tid dÃ¥ resursen senast ändrades. OBS: Värdet för den här " +"egenskapen är inte nödvändigtvis samma som filsystemets ändringsdatum " +"eftersom det anges innan filen sparas." + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "Alias" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Ett kort informellt namn för resursen." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Gradering" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" +"Ett nummer som visar ett dokuments tillstÃ¥nd relativt till andra dokument, " +"används för att sortera dokument i en filhanterare. Värden är " +"användardefinierade inom ett programdefinierat intervall." + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Miniatyrbilder" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" +"Ett alternativt fält med miniatyrbilder för en fil, vilka kan variera i " +"egenskaper som storlek eller bildkodning." + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Certifikat" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "Internet-baserat rättighetshanteringscertifikat." + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Märkt" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "Visar att det här är en rättighetshanterad resurs." + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Ägare" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "Ett osorterat fält som anger de lagliga ägarna för en resurs." + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "Användningsvillkor" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "Textinstruktioner om hur en resurs lagligen kan användas." + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "WebbÃ¥beropan" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" +"Platsen för en webbsida som beskriver ägaren och/eller rättighetsÃ¥beropan " +"för resursen." + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "Härrör frÃ¥n" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" +"En referens till det ursprungliga dokumentet frÃ¥n vilket det här härrör. Det " +"är en minimal referens; saknade komponenter kan antas vara oförändrade. En " +"ny version kanske till exempel bara behöver ange instans-ID och föregÃ¥ende " +"versionens versionsnummer, eller ett Ã¥tergivande kanske bara behöver ange " +"instans-ID och Ã¥tergivningsklassen för originalet." + +#: src/properties.cpp:266 +msgid "Document ID" +msgstr "Dokument-ID" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" +"Den gemensamma identifieraren för alla versioner och Ã¥tergivanden av ett " +"dokument. Det bör baseras pÃ¥ ett UUIC; se Dokument- och Instans-ID nedanför." + +#: src/properties.cpp:268 +msgid "History" +msgstr "Historik" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" +"Ett sorterat fält av detaljerade användarÃ¥tgärder som gav upphov till " +"resursen. Det är avsett att ge mänskliga läsare en allmän fingervisning om " +"stegen som togs för att utföra ändringarna frÃ¥n föregÃ¥ende version till " +"denna. Listan ska vara pÃ¥ en abstrakt nivÃ¥; den är inte avsedd att vara en " +"uttömmande lista över tangentkommandon eller annan detaljerad historik." + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "Instans-ID" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" +"En identifierare för en specifik version av ett dokument, uppdaterad var " +"gÃ¥ng en fil sparas. Den bör baseras pÃ¥ ett UUID; se Dokument- och Instans-ID " +"nedanför." + +#: src/properties.cpp:274 +msgid "Managed From" +msgstr "Hanterad frÃ¥n" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" +"En referens till dokument sÃ¥ som det var innan det började hanteras. Det " +"anges när ett hanterat dokument introduceras i ett tillgÃ¥ngshanteringssystem " +"som för närvarande inte äger det. Det mÃ¥ste inte inkludera referenser till " +"olika hanteringssystem." + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Hanterare" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" +"Namnet pÃ¥ tillgÃ¥ngshanteringssystemet som hanterar den här resursen. " +"Tillsammans med xmpMM: ManagerVariant talar det om för program vilket " +"tillgÃ¥ngshanteringssystem som ska kontaktas rörande det här dokumentet." + +#: src/properties.cpp:280 +msgid "Manage To" +msgstr "Hantera till" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" +"En URI som identifierar den hanterade resursen för " +"tillgÃ¥ngshanteringssystemet; egenskapens existens är den formella indikatorn " +"för att resursen hanteras. Formen och innehÃ¥llet för den här URI:n är privat " +"och tillhör tillgÃ¥ngshanteringssystemet." + +#: src/properties.cpp:283 +msgid "Manage UI" +msgstr "Hantera UI" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" +"En URI som kan användas för att komma Ã¥t information om den hanterade " +"resursen genom en webbläsare. Det kan kräva ett anpassat webbläsarinstick." + +#: src/properties.cpp:285 +msgid "Manager Variant" +msgstr "Hanterarvariant" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" +"Anger en särskild variant för tillgÃ¥ngshanteringssystemet. Formatet för " +"egenskapen är privat och tillhör sitt tillgÃ¥ngshanteringssystem." + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "Ã…tergivningsklass" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" +"Resursens Ã¥tergivningsklass. Egenskapen borde frÃ¥nvara eller anges till " +"standard för en dokumentversion som inte är en nedärvd Ã¥tergivning." + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "Ã…tergivningsparametrar" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" +"Kan användas för att tillhandahÃ¥lla ytterligare Ã¥tergivningsparametrar som " +"är för komplexa eller lÃ¥nga för att skriva i xmpMM: RenditionClass." + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "Versions-ID" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" +"Resursens dokumentversionsidentifierare. Varje version av ett dokument fÃ¥r " +"en ny identifierare, oftast genom att bara öka heltalen 1, 2, 3, och sÃ¥ " +"vidare. Mediahanteringssystem kan ha andra konventioner, eller stödja " +"avgrening vilket kräver ett mer komplicerat schema." + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Versioner" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" +"Versionshistoriken som är associerat till den här resursen. Post [1] är den " +"äldsta kända versionen för det här dokumentet, posten [last()] är den " +"senaste versionen. I allmänhet ska ett mediahanteringssystem fylla i " +"versionsinformationen i metadatan vid incheckning. Det finns ingen garanti " +"för att en fullständig historik frÃ¥n första till nuvarande version bevaras i " +"egenskapen xmpMM:Versions. Intern versionsinformation kan komprimeras eller " +"uteslutas, och versionshistoriken kan avdelas vid en viss tidpunkt." + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "Senaste URL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "Övergiven för att skydda din personliga integritet." + +#: src/properties.cpp:302 +msgid "Rendition Of" +msgstr "Ã…tergivning av" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" +"Övergiven till fördel för xmpMM:DerivedFrom. En referens till dokumentet som " +"Ã¥terges." + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "Lagrings-ID" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" +"Övergiven. Tidigare bara använt för att stödja xmpMM:LastURL-egenskapen." + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "Jobbreferens" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" +"Hänvisar till en extern jobbhanteringsfil flr en jobbprocess där ett " +"dokument används. Användaren kontrollerar hur jobbnamnen används. Det " +"används i vanliga fall till att identifiera alla dokument som tillhör ett " +"visst jobb eller kontrakt. Det finns flera värden eftersom ett dokument kan " +"användas i flera olika jobb nÃ¥gon gÃ¥ng, och det kan ocksÃ¥ vara praktiskt att " +"behÃ¥lla historikinformation om vilka jobb ett dokument tidigare använts i." + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Största sidstorlek" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"Storleken för den största sidan i dokumentet (inklusive infogade dokument)." + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Antal sidor" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "Antal sidor i dokumentet (inklusive infogade dokument)." + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Teckensnitt" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Ett osorterat fält av teckensnitt som används i dokumentet (inklusive " +"infogade dokument)." + +#: src/properties.cpp:322 +msgid "Colorants" +msgstr "Färgningar" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Ett sorterat vektor över rutor med färger som används i dokumentet " +"(inklusive infogade dokument)." + +#: src/properties.cpp:323 +msgid "Plate Names" +msgstr "PlÃ¥tnamn" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Ett sorterat fält med plÃ¥tnamn som behövs för att skriva ut dokumentet " +"(inklusive infogade dokument)." + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Projektreferens" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "En referens till projektet som skapade filen." + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Videons bildfrekvens" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Videons bildfrekvens. Antingen 24, NTSC, eller PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Videons bildstorlek" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "Bildstorleken. Ett exempel: w:720, h:480, unit:bildpunkter" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "Videons bildpunktsproportioner" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "Bildproportionerna, angivna som höjd/bredd. Exempelvis â€648/720†= 0,9" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "Videons bildpunktsdjup" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" +"Storleken i bitar för varje färgkomponent i en bildpunkt. Windows 32-bitars " +"standardbildpunkter har 8 bitar per komponent. Antingen 8Int, 16Int, 32Int, " +"eller 32Float." + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Videons färgrymd" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"Färgrymden. Antingen sRGB (används av Photoshop), CCIR-601 (används till " +"NTSC), CCIR-709 (används för HD)." + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "Videons alfaläge" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "Alfaläget. Antingen straight eller pre-multiplied." + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "Videons alfa-premultiple-färg" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" +"En färg i CMYK eller RGB att använda som pre-multipelfärgen när alfaläget är " +"pre-multiplied." + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "Videons alfa-sammanhang är genomskinligt" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" +"När satt till sant är sammanhanget klart; vid falskt är det ogenomskinligt." + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Videokomprimerare" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Videokomprimeringen som används. Till exempel jpeg." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Videons fältordning" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "Videons fältordning. Antingen Upper, Lower, eller Progressive." + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "Dra ner" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" +"Samplingsfasen i en film som ska konverteras till video (dra-ner). Antingen " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, eller WWSSW_24p." + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Ljudets samplingsfrekvens" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"Ljudets samplingsfrekvens. Det kan vara vilket värde som helst, men " +"vanligast är 32000, 41100, eller 48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Ljudets samplingstyp" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Ljudets samplingstyp. Antingen 8Int, 16Int, 32Int, eller 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Ljudkanaltyp" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Ljudkanaltyp. Antingen Mono, Stereo, 5.1, eller 7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Ljudkomprimerare" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Ljudkomprimeringen som används. Ex. MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "Högtalarplacering" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" +"En beskrivning av högtalarnas vinkling frÃ¥n centerhögtalaren i grader. " +"Exempelvis â€Vänster = -30, Höger = 30, Center = 0, LFE = 45, Vänster " +"surround = -110, Höger surround = 110â€" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "Filens datahastighet" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" +"Filens datahastighet i megabyte per sekund. Exempelvis blir â€36/10†3,6 MB/" +"sek" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Kassettnamn" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" +"Namnet pÃ¥ kassetten frÃ¥n vilket klippet togs, som angivet i fÃ¥ngstprocessen." + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "Alternativt kassettnamn" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" +"Ett alternativt kassettnamn, angivet i projektfönstret eller " +"tidskodsdialogrutan i Premiere. Om ett alternativt namn har angivits och " +"inte Ã¥terkallats, visas det namnet." + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "Börja tidskod" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "Tidskoden för den första videoramen i filen, enligt enhetskontrollen." + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "Alternativ tidskod" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" +"En tidskod angiven av användaren. När den anges används den istället för " +"startTimecode." + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Längd" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Mediafilens längd." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Scen" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Scenens namn." + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Bildnamn" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "Namnet pÃ¥ bilden eller tagningen." + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Bilddatum" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Datum och tid dÃ¥ videon filmades." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Bildplats" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"Namnet pÃ¥ platsen där videon filmades. T.ex. â€Oktoberfest, München, " +"Tysklandâ€. För noggrannare positionering, använd Exifs GPS-värden." + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Loggkommentar" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Användarens loggkommentarer." + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Markörer" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "En sorterad lista över markörer" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "Bidragen media" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" +"En osorterad lista över all media som användes för att skapa det här mediet." + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "Absolut ljudtoppsfilsökväg" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"Den absoluta sökvägen till filens ljudtoppsfil. Om fältet är tomt finns " +"ingen ljudtoppsfil." + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "Relativ ljudtoppsfilsökväg" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" +"Den relativa sökvägen till filens ljudtoppsfil. Om fältet är tomt finns " +"ingen ljudtoppsfil." + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "Videons ändringsdatum" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "Datum och tid dÃ¥ videon senast ändrades." + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "Ljudets ändringsdatum" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "Datum och tid dÃ¥ ljudet senast ändrades." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Metadatans ändringsdatum" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "Datum och tid dÃ¥ metadatan senast modifierades." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Artist" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Namnet pÃ¥ artist/-erna." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Album" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Namnet pÃ¥ albumet." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "SpÃ¥rnummer" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" +"Ett numeriskt värde som visar ordningen för ljudfilen inom dess ursprungliga " +"inspelning." + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Genre" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "Namnet pÃ¥ genren." + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Upphovsrättsinformation." + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "Datumet dÃ¥ titeln släpptes." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Kompositör" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Kompositörens namn." + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Tekniker" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Teknikerns namn." + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Tempo" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Ljudets tempo." + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Instrument" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Musikinstrumentet." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Intro-tid" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "Mängden inledningstid för kösättning av musik." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "Ut-vinkning" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "Tiden dÃ¥ uttoning ska inledas." + +#: src/properties.cpp:383 +msgid "Relative Timestamp" +msgstr "Relativ tidsstämpel" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "Starttiden för mediet inom ljudprojektet." + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Upprepa" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "Om sant kan klippet upprepas utan avbrott." + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "Slag per minut" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "Antal slag per minut." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Tonart" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" +"Ljudets musikaliska tonart. Antingen C, C#, D, D#, E, F, F#, G, G#, A, A#, " +"eller B." + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "Utsträckningsläge" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" +"Ljudets utsträckningsläge. Antingen Fixed length, Time-Scale, Resample, Beat " +"Splice eller Hybrid." + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "Tidsskalningsparametrar" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "Ytterligare parametrar för utsträckningsläget Tidsskala." + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "Omsamplingsparametrar" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "Ytterligare parametrar för utsträckningsläget Omsampling." + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "Tempojusteringsparametrar" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "Ytterligare parametrar för utsträckningsläget Tempojustering." + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Taktart" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" +"Musikens taktart. Antingen 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, eller " +"other." + +#: src/properties.cpp:392 +msgid "Scale Type" +msgstr "Skaltyp" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" +"Skalan som används i musiken. Antingen Major, Minor, Both eller Neither. " +"Ingen används oftast för instrument utan associerad skala, som slagverk." + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Kamerans serienummer" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Kamerans serienummer." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "Anskaffningsdatum" + +#: src/properties.cpp:400 +msgid "Date Acquired." +msgstr "Anskaffningsdatum." + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Blixtens tillverkare" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Blixtens tillverkare." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Blixtens modell." + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "Senaste nyckelordet IPTC" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "Senaste nyckelordet IPTC." + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "Senaste nyckelordet XMP" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP." +msgstr "Senaste nyckelordet XMP." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Objektivtillverkare" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Objektivtillverkare." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Objektivmodell." + +#: src/properties.cpp:407 +msgid "Rating Percent" +msgstr "Betyg i procent" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "Betyg i procent." + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "Hierarkiskt subjekt" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "Adobe Lightroom hierarkiska nyckelord." + +#: src/properties.cpp:414 +msgid "Private RTK Info" +msgstr "Privat RTK-info" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "Adobe Lightroom privat RTK-info." + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Nyckelord." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "PDF-version" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "PDF-filversionen (till exempel 1.0, 1.3, och sÃ¥ vidare)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Producent" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "Namnet pÃ¥ verktyget som skapade PDF-dokumentet." + +#: src/properties.cpp:428 +msgid "Authors Position" +msgstr "Författarens position" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "By-line-titel." + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Skrivning av bildtext" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Skrivare/redigerare." + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "Kategori. Begränsad till tre sjubitars ASCII-tecken." + +#: src/properties.cpp:431 +msgid "City." +msgstr "Stad." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "Land/primär plats." + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "Tack till." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" +"Datum dÃ¥ dokumentets intellektuella innehÃ¥ll skapades (istället för den " +"fysiska representationens skapelsedatum), enligt IIMs konventioner. Ett foto " +"som togs under till exempel det amerikanska inbördeskriget skulle fÃ¥ ett " +"skapelsedatum frÃ¥n den epoken (1861-1865) istället för datumet dÃ¥ fotot " +"digitaliserades för arkivering." + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Rubrik." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Speciella instruktioner." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Källa." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Provins/stat." + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "Tilläggskategori." + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "Referens till ursprunglig överföring." + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "BrÃ¥dska. Giltigt intervall är 1-8." + +#: src/properties.cpp:452 +msgid "inches" +msgstr "tum" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "cm" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "Automatisk ljusstyrka" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Om sant justeras â€Ljusstyrka†automatiskt." + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Automatisk kontrast" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Om sant justeras â€Kontrast†automatiskt." + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "Automatisk exponering" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Om sant justeras â€Exponering†automatiskt." + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Automatiska skuggor" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Om sant justeras â€Skuggor†automatiskt." + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "BlÃ¥ nyans" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Inställningen för â€BlÃ¥ nyansâ€. Intervall: -100 till +100." + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "BlÃ¥ färgmättnad" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Inställningen för â€BlÃ¥ färgmättnadâ€. Intervall: -100 till +100." + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Inställningen för â€Ljusstyrkaâ€. Intervall: 0 till +150." + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Kameraprofil" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "Inställningen â€Kameraprofilâ€." + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "Kromatisk avvikelse, blÃ¥" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" +"Inställningen för â€Kromatisk avvikelse, justera blÃ¥/gul kantâ€. Intervall: " +"-100 till +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "Kromatisk avvikelse, röd" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" +"Inställningen för â€Kromatisk avvikelse, justera röd/ljusblÃ¥ kantâ€. " +"Intervall: -100 till +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Färgens brusreducering" + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Inställningen för â€Färgbrusreduceringâ€. Intervall: 0 till +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Inställningen â€Kontrastâ€. Intervall: -50 till +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "När â€Har beskärning†är sant avses överkant av beskärningsrektangeln" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "När â€Har beskärning†är sant avses överkant av beskärningsrektangeln." + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "Beskär nederkant" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "När â€Har beskärning†är sant avses nederkant av beskärningsrektangeln." + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "Beskär höger" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" +"När â€Har beskärning†är sant avses höger kant av beskärningsrektangeln." + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "Beskärningsvinkel" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "När â€Har beskärning†är sant avses beskärningsrektangelns vinkling." + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "Bredd för den resulterande beskurna bilden i beskärningsenheter." + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "Höjd för den resulterande beskurna bilden i beskärningsenheter." + +#: src/properties.cpp:476 +msgid "Crop Units" +msgstr "Beskärningsenheter" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" +"Enheter för beskärningsbredd och beskärningshöjd. 0=bildpunkter, 1=tum, 2=cm" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Inställningen â€Exponeringâ€. Intervall: -4,0 till +4,0." + +#: src/properties.cpp:478 +msgid "Green Hue" +msgstr "Grön nyans" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Inställningen â€Grön nyansâ€. Intervall: -100 till +100." + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "Grön färgmättnad" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Inställningen â€Grön färgmättnadâ€. Intervall: -100 till +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "Har beskärning" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "Om sant har bilden en beskärningsrektangel." + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "Har inställningar" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "Om sant används RAW-inställningar som inte är kamerans standard." + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "Skenutjämning" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Inställningen â€Skenutjämningâ€. Intervall: 0 till +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "RAW-filens namn" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Filnamnet för RAW-filen (inte en sökväg)." + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "Röd nyans" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Inställningen â€Röd nyansâ€. Intervall: -100 till +100." + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "Röd färgmättnad" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Inställningen â€Röd färgmättnadâ€. Intervall: -100 till +100." + +#: src/properties.cpp:486 +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Inställningen â€Färgmättnadâ€. Intervall: -100 till +100." + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Skuggor" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Inställningen â€Skuggorâ€. Intervall: 0 till +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "Skuggans färgton" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Inställningen â€Skuggans färgtonâ€. Intervall: -100 till +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Inställningen â€Skärpaâ€. Intervall: 0 till +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Inställningen â€Temperaturâ€. Intervall: 2000 till 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "Färgton" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Inställningen â€Färgtonâ€. Intervall: -150 till +150." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Tonkurva" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "Ett fält med punkter (Heltal, Heltal) som definierar en â€Tonkurvaâ€." + +#: src/properties.cpp:493 +msgid "Tone Curve Name" +msgstr "Tonkurvans namn" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" +"Namnet pÃ¥ Tonkurvan som beskrivs i Tonkurva. Antingen Linear, Medium " +"Contrast, Strong Contrast, Custom eller ett användardefinierat förval." + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "Versionen av kamerans RAW-instick." + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "Vinjettmängd" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Inställningen â€Vinjettmängdâ€. Intervall: -100 till +100." + +#: src/properties.cpp:497 +msgid "Vignette Midpoint" +msgstr "Vinjettens mittpunkt" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Inställningen â€Vinjettens mittpunktâ€. Intervall: 0 till +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" +"Inställningen â€Vitbalansâ€. Antingen: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash eller Custom" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "TIFF-tagg 256, 0x100. Bildbredd i bildpunkter." + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Bildlängd" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "TIFF-tagg 257, 0x101. Bildhöjd i bildpunkter." + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Bitar per sampling" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "TIFF-tagg 258, 0x102. Antal bitar per komponent i varje kanal." + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Komprimering" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "TIFF-tagg 259, 0x103. Komprimeringsmetod: 1 = okomprimerad; 6 = JPEG." + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Fotometrisk tolkning" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "TIFF-tagg 262, 0x106. Bildpunktssammansättning: 2 = RGB; 6 = YCbCr." + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" +"TIFF-tagg 274, 0x112. Orientering: 1 = 0:te raden längst upp, 0:te kolumnen " +"till vänster; 2 = 0:te raden längst upp, 0:te kolumnen till höger; 3 = 0:te " +"raden längst ner, 0:te kolumnen till höger; 4 = 0:te raden längst ner, 0:te " +"kolumnen till vänster; 5 = 0:te raden till vänster, 0:te kolumnen längst " +"upp; 6 = 0:te raden till höger, 0:te kolumnen längst upp; 7 = 0:te raden " +"till höger, 0:te kolumnen längst ner; 8 = 0:te raden till vänster, 0:te " +"kolumnen längst ner" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "Samplingar per bildpunkt" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "TIFF-tagg 277, 0x115. Antal komponenter per bildpunkt." + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "Planär inställning" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "TIFF-tagg 284, 0x11C. Datalayout: 1 = block; 2 = plan." + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "YCbCr delsampling" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" +"TIFF-tagg 530, 0x212. Samplingsproportion för krominanskomponenter: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "YCbCr-positionering" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" +"TIFF-tagg 531, 0x213. Positionering av krominans- i förhÃ¥llande till " +"luminanskomponenter: 1 = centrerade; 2 = sida vid sida." + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "X-upplösning" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "TIFF-tagg 282, 0x11A. Horisontell upplösning i bildpunkter per enhet." + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Y-upplösning" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "TIFF-tagg 283, 0x11B. Vertikal upplösning i bildpunkter per enhet." + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "Upplösningsenhet" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" +"TIFF-tagg 296, 0x128. Enhet att använda för XResolution och YResolution. " +"Värdet är antingen 2 (tum) eller 3 (centimeter)." + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Överföringsfunktion" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" +"TIFF-tagg 301, 0x12D. Överföringsfunktion för bilden, beskriven i tabulär " +"stil med 3 st. 256-poster." + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Vitpunkt" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "TIFF-tagg 318, 0x13E. Vitpunktens kromaticitet." + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "Primära kromaticiteter" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "TIFF-tagg 319, 0x13F. Kromaticitet för de tre primärfärgerna." + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" +"TIFF-tagg 529, 0x211. Matriskoefficienter för transformering frÃ¥n RGB till " +"YCbCr." + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Svartvit referens" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "TIFF-tagg 532, 0x214. Referensvärden för svart- och vitpunkter." + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Datum och tid" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" +"TIFF-tagg 306, 0x132 (primär) och Exif-tagg 37520, 0x9290 (delsekunder). " +"Datum och tid för skapande av bild (ingen tidszon i Exif), lagrad i ISO 8601-" +"format, inte det ursprungliga Exif-formatet. Den här egenskapen inkluderar " +"värdet för Exifs SubSecTime-attribut. OBS: Egenskapen lagras i XMP som xmp:" +"ModifyDate." + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Bildbeskrivning" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" +"TIFF-tagg 270, 0x10E. Bildbeskrivning. OBS: Egenskapen lagras i XMP som dc:" +"description." + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Skapa" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "TIFF-tagg 271, 0x10F. Inspelningsutrustningens tillverkare." + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "TIFF-tagg 272, 0x110. Modellnamn eller utrustningens nummer." + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" +"TIFF-tagg 305, 0x131. Mjukvara eller firmware som användes för att skapa " +"bilden. OBS: Egenskapen lagras i XMP som xmp:CreatorTool. " + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" +"TIFF-tagg 315, 0x13B. Kamerans ägare, fotograf, eller bildens skapare. OBS: " +"Egenskapen lagras i XMP som den första posten i dc:creator-fältet." + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" +"TIFF-tagg 33432, 0x8298. Upphovsrättsinformation. OBS: Egenskapen lagras i " +"XMP som dc:rights." + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Exif-version" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "Exif-tagg 36864, 0x9000. Exif-versionsnummer." + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "FlashPix-version" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "Exif-tagg 40960, 0xA000. Version av FlashPix." + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "Exif-tagg 40961, 0xA001. Information om färgrymd" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "Komponentinställningar" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" +"Exif-tagg 37121, 0x9101. Inställning av komponenter i data: 4 5 6 0 " +"(komprimerad RGB-data), 1 2 3 0 (övriga)." + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "Komprimerade bitar per bildpunkt" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" +"Exif-tagg 37122, 0x9102. Komprimeringsläge som används för en komprimerad " +"bild visas i enheten bitar per bildpunkt (pixel)." + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "Bildpunktdimension, x" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "Exif-tagg 40962, 0xA002. Giltig bildbredd, i bildpunkter." + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "Bildpunktsdimension, y" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "Exif-tagg 40963, 0xA003. Giltig bildhöjd, i bildpunkter." + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Användarkommentar" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "Exif-tagg 37510, 0x9286. Kommentarer frÃ¥n användaren." + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Relaterad ljudfil" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" +"Exif-tagg 40964, 0xA004. Ett filnamn med längden 8.3 för den relaterade " +"ljudfilen." + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Ursprungligt datum och tid" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" +"Exif-tagg 36867, 0x9003 (primär) och 37521, 0x9291 (delsekunder). Datum och " +"tid dÃ¥ den ursprungliga bilden skapades, i ISO 8601-format. Inkluderar Exifs " +"SubSecTimeOriginal-data." + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Datum och tid för digitalisering" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" +"Exif-tagg 36868, 0x9004 (primär) och 37522, 0x9292 (delsekunder). Datum och " +"tid dÃ¥ bilden lagrades som digital data. Kan vara samma som DateTimeOriginal " +"om den lagrades digitalt frÃ¥n början. Lagras i ISO 8601-format. Inkluderar " +"Exifs SubSecTimeDigitized-data." + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "Exif-tagg 33434, 0x829A. Exponeringstid i sekunder." + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "F-nummer" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "Exif-tagg 33437, 0x829D. F-nummer." + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "Exif-tagg 34850, 0x8822. Programklass använt för exponering." + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Spektral känslighet" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "Exif-tagg 34852, 0x8824. Spektral känslighet för varje kanal." + +#: src/properties.cpp:577 +msgid "ISOSpeedRatings" +msgstr "ISO-hastighetsgränser" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" +"Exif-tagg 34855, 0x8827. ISO-hastighet och ISO-latitud för inmatningsenheten " +"enligt specifikationerna i ISO 12232." + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" +"Exif-tagg 34856, 0x8828. Opto-elektronisk konverteringsfunktion enligt " +"specifikationerna i ISO 14524." + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" +"Exif-tagg 37377, 0x9201. Slutarhastighet i enheten APEX. Se Annex C i Exif-" +"specifikationerna." + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "Exif-tagg 37378, 0x9202. Objektivöppning i enheten APEX." + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "LjusstyrkenivÃ¥" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "Exif-tagg 37379, 0x9203. Ljusstyrka i enheten APEX." + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "Exif-tagg 37380, 0x9204. Exponeringsprioritet i enheten APEX." + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Maximalt bländarvärde" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "Exif-tagg 37381, 0x9205. Objektivets minsta F-nummer i enheten APEX." + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "Exif-tagg 37382, 0x9206. AvstÃ¥nd till motiv i meter." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "Exif-tagg 37383, 0x9207. Mätningsläge." + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "Exif-tagg 37384, 0x9208. Ljuskälla." + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "Exif-tagg 37385, 0x9209. Källdata för stroboskopljus (blixt)." + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "Exif-tagg 37386, 0x920A. Objektivets brännvidd i millimeter." + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "MotivomrÃ¥de" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" +"Exif-tagg 37396, 0x9214. Positionen och ytan för det huvudsakliga motivet i " +"scenen." + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Blixtenergi" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "Exif-tagg 41483, 0xA20B. Stroboskopets energi vid bildfÃ¥ngst." + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "Spatialfrekvenssvar" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" +"Exif-tagg 41484, 0xA20C. Inmatningsenhetens spatiella frekvenstabell och SFS-" +"värden enligt specifikationerna i ISO 12233." + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Fokalplanets x-upplösning" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" +"Exif-tagg 41486, 0xA20E. Horisontell brännviddsupplösning, mätt i " +"bildpunkter per enhet." + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Brännvidd y-upplösning" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" +"Exif-tagg 41487, 0xA20F. Vertikal brännviddsupplösning, mätt i bildpunkter " +"per enhet." + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "Brännviddens upplösningsenhet" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" +"Exif-tagg 41488, 0xA210. Enhet att använda för FocalPlaneXResolution och " +"FocalPlaneYResolution." + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Motivets plats" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" +"Exif-tagg 41492, 0xA214. Platsen för det huvudsakliga motivet i scenen. Det " +"första värdet är den horisontella bildpunkten och det andra värdet är den " +"vertikala där det huvudsakliga motivet visas." + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Exponeringsindex" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "Exif-tagg 41493, 0xA215. Exponeringsindex för inmatningsenheten." + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Avkänningsmetod" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "Exif-tagg 41495, 0xA217. Bildsensortyp i inmatningsenheten." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "Exif-tagg 41728, 0xA300. Visar bildkällan." + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Scentyp" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "Exif-tagg 41729, 0xA301. Visar scenens typ." + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "CFA-mönster (FFF)" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" +"Exif-tagg 41730, 0xA302. Färgfilterfältets geometriska mönster i " +"bildavkänningen." + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Renderat pÃ¥ anpassat sätt" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" +"Exif-tagg 41985, 0xA401. Visar att en speciell behandling har utförts pÃ¥ " +"bilddatan." + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" +"Exif-tagg 41986, 0xA402. Visar vilket exponeringsläge som var inställt när " +"bilden togs." + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" +"Exif-tagg 41987, 0xA403. Visar vilket vitbalansläge användes när bilden togs." + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Digital zoom" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" +"Exif-tagg 41988, 0xA404. Visar hur stor digital zoom användes när bilden " +"togs." + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Brännvidd i 35 mm-film" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" +"Exif-tagg 41989, 0xA405. Visar motsvarande brännvidd om det hade varit en 35 " +"mm-filmkamera, i mm. Värdet 0 betyder att brännvidden är okänd. Observera " +"att den här taggen skiljer sig frÃ¥n taggen brännvidd." + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Typ av scenfÃ¥ngst" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "Exif-tagg 41990, 0xA406. Visar vilken typ av scen som fotograferades." + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "Förstärkningskontroll" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" +"Exif-tagg 41991, 0xA407. Visar omfattningen av bildomfattande förstärkning." + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" +"Exif-tagg 41992, 0xA408. Visar riktningen av kontrastbehandlingen som " +"tillämpats av kameran." + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" +"Exif-tagg 41993, 0xA409. Visar riktningen av färgmättnadsbehandlingen som " +"tillämpats av kameran." + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" +"Exif-tagg 41994, 0xA40A. Visar riktningen för skärpabehandlingen som " +"tillämpats av kameran." + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "Enhetsinställningsbeskrivning" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" +"Exif-tagg 41995, 0xA40B. Visar information om fotograferingsförhÃ¥llandena " +"hos en viss kameramodell." + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Motivets avstÃ¥ndsintervall" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Exif-tagg 41996, 0xA40C. Visar avstÃ¥nd till motivet." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "Bildens unika ID" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" +"Exif-tagg 42016, 0xA420. En unik identifierare som tilldelas varje bild. Den " +"lagras som en ASCII-sträng om 32 tecken, motsvarande hexadecimal notering " +"och 128-bitars fixerad längd." + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "GPS-versions-ID" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" +"GPS-tagg 0, 0x00. En decimal kodning för alla fyra Exif-byte, Ã¥tskilda med " +"punkter. Nuvarande värde är â€2.0.0.0â€." + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS-latitud" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "GPS-tagg 2, 0x02 (position) och 1 0x01 (nord/syd). Visar latitud." + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS-longitud" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "GPS-tagg 4, 0x04 (position) och 3, 0x03 (öst/väst). Visar longitud." + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +msgid "GPS Altitude Reference" +msgstr "GPS-höjdreferens" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "GPS-tagg 5, 0x05. Visar om höjden är ovan eller under havsnivÃ¥n." + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPS-höjd" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "GPS-tagg 6, 0x06. Visar höjd i meter." + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +msgid "GPS Time Stamp" +msgstr "GPS-tidsstämpel" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" +"GPS-tagg 29 (datum), 0x1D, och GPS-tagg 7 (tid), 0x07. Tidsstämpeln för GPS-" +"data, i Universal Time Coordinated. OBS: Taggen GPSDateStamp är ny för Exif " +"2.2. GPS-tidsstämpeln i Exif 2.1 inkluderar inget datum. Om det inte finns " +"till, bör datumkomponenten för XMP läsas frÃ¥n exif:DateTimeOriginal, eller, " +"om den ocksÃ¥ saknas, frÃ¥n exif:DateTimeDigitized. Om inget datum finns " +"tillgängligt, skriv inte exif:GPSTimeStamp till XMP." + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "GPS-satelliter" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "GPS-tagg 8, 0x08. Satellitinformation, ospecificerat format." + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "GPS-tillstÃ¥nd" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "GPS-tagg 9, 0x09. GPS-mottagarens tillstÃ¥nd dÃ¥ bilden skapades." + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS-mätningsläge" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "GPS-tagg 10, 0x0A. GPS-mätningsläge, Text-typ." + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "GPS-tagg 11, 0x0B. GPS-datans precision." + +#: src/properties.cpp:637 src/tags.cpp:2002 +msgid "GPS Speed Reference" +msgstr "GPS-hastighetreferens" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "GPS-tagg 12, 0x0C. Enheter som används för att mäta hastighet." + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPS-hastighet" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "GPS-tagg 13, 0x0D. Hastigheten GPS-mottagaren rör sig med." + +#: src/properties.cpp:639 +msgid "GPS Track Reference" +msgstr "GPS-spÃ¥rningsreferens" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "GPS-tagg 14, 0x0E. Referens för rörelsens riktning." + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "GPS-spÃ¥rning" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" +"GPS-tagg 15, 0x0F. Riktning för GPS-rörelse; värden i intervallet 0 till " +"359,99." + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "GPS-bildriktningsreferens" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "GPS-tagg 16, 0x10. Referens för bildens riktning." + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "GPS-bildriktning" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" +"GPS-tagg 17, 0x11. Riktning för bilden vid fÃ¥ngst; värden frÃ¥n 0 till 359,99." + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +msgid "GPS Map Datum" +msgstr "GPS-kartans datum" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "GPS-tagg 18, 0x12. Geodetiskt mätningsdata." + +#: src/properties.cpp:644 src/tags.cpp:2033 +msgid "GPS Destination Latitude" +msgstr "GPS, destinationens latitud" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" +"GPS-tagg 20, 0x14 (position) och 19, 0x13 (nord/syd). Visar destinationens " +"latitud." + +#: src/properties.cpp:645 src/tags.cpp:2045 +msgid "GPS Destination Longitude" +msgstr "GPS, destinationens longitud" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" +"GPS-tagg 22, 0x16 (position) och 21, 0x15 (öst/väst). Visar destinationens " +"longitud." + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "GPS, destinationens bäringsreferens" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "GPS-tagg 23, 0x17. Referens för rörelsens riktning." + +#: src/properties.cpp:647 src/tags.cpp:2056 +msgid "GPS Destination Bearing" +msgstr "GPS, destinationens bäring" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "GPS-tagg 24, 0x18. Destinationens bäring; värden frÃ¥n 0 till 359,99." + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "GPS destinationsavstÃ¥ndsreferens" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "GPS-tagg 25, 0x19. Enheter som används för hastighetsmätning." + +#: src/properties.cpp:649 src/tags.cpp:2064 +msgid "GPS Destination Distance" +msgstr "GPS, avstÃ¥nd till destination" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "GPS-tagg 26, 0x1A. AvstÃ¥nd till destinationen." + +#: src/properties.cpp:650 src/tags.cpp:2067 +msgid "GPS Processing Method" +msgstr "GPS-behandlingsmetod" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" +"GPS-tagg 27, 0x1B. En teckensträng som visar namnet pÃ¥ metoden som användes " +"för att hitta platsen." + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "GPS-omrÃ¥desinformation" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "GPS-tagg 28, 0x1C. En teckensträng som visar namnet pÃ¥ GPS-omrÃ¥det." + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "GPS-differential" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" +"GPS-tagg 30, 0x1E. Visar om differentialkorrektion har tillämpats pÃ¥ GPS-" +"mottagaren." + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" +"En beskrivning av objektivet som användes för att ta bilden. Exempel: " +"â€70-200 mm f/2,8-4,0â€." + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" +"Serienumret för kameran eller kamerachassit som användes för att ta bilden." + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "Skaparens kontaktinfo" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" +"Skaparens kontaktinformation ger all nödvändig information för att komma i " +"kontakt med skaparen av det här nyhetsobjektet och utgör en samling " +"delegenskaper för lämplig adressering." + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "Kontaktinfo-Adress" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"undernyckel av skaparens kontaktinfo: adress. Omfattar ett valfritt " +"företagsnamn och all nödvändig information för att hitta byggnaden eller " +"brevlÃ¥dan dit all post ska skickas." + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "Kontaktinfo-Stad" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "undernyckel av skaparens kontaktinfo: stad." + +#: src/properties.cpp:670 +msgid "Contact Info-State/Province" +msgstr "Kontaktinfo-Stat/provins" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "undernyckel av skaparens kontaktinfo: stat/provins." + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "Kontaktinfo-Postnummer" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "undernyckel av skaparens kontaktinfo: lokal postkod." + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "Kontaktinfo-Land" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "undernyckel av skaparens kontaktinfo: Land." + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "Kontaktinfo-E-post" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "undernyckel av skaparens kontaktinfo: e-postadress." + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "Kontaktinfo-Telefon" + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "undernyckel av skaparens kontaktinfo: telefon." + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "Kontaktinfo-Webbsida" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "undernyckel av skaparens kontaktinfo: webbadress." + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "Intellektuell genre" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" +"Beskriver naturen, de intellektuella eller journalistiska karaktärerna av " +"ett nyhetsobjekt, inte nödvändigtvis dess innehÃ¥ll." + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "IPTC-scen" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" +"Beskriver scenen i ett fotos innehÃ¥ll. Anger en eller flera termer frÃ¥n " +"IPTCs â€Scene-NewsCodesâ€. Varje scen representeras som en sträng om 6 siffror " +"i en osorterad lista." + +#: src/properties.cpp:680 +msgid "IPTC Subject Code" +msgstr "IPTC-motivkod" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" +"Anger en eller flera motiv frÃ¥n IPTCs â€Subject-NewsCodesâ€-klassificering för " +"att kategorisera innehÃ¥llet. Varje motiv representeras som en sträng om Ã¥tta " +"siffror i en osorterad lista." + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" +"(förÃ¥ldrad) Namnet pÃ¥ en plats innehÃ¥llet fokuserar pÃ¥ - antingen platsen " +"som visas i visuell media eller som den som hänvisas i text- eller " +"ljudmedia. Platsens namn kan antingen vara en delplats i en stad eller " +"namnet pÃ¥ en välkänd plats eller (natur-) monument utanför en stad. I " +"sammanhanget delplats i en stad är det här elementet pÃ¥ den fjärde nivÃ¥n i " +"en vertikal geografisk hierarki." + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" +"(förÃ¥ldrad) Koden för landet innehÃ¥llet fokuserar pÃ¥ - antingen landet som " +"visas i visuella media eller som hänvisas till i text- eller ljudmedia. Det " +"här elementet är längst upp/första nivÃ¥n i en vertikal geografisk hierarki. " +"Landskoden bör hämtas bland ISO 3166s tvÃ¥- eller trebokstavskoder. Landets " +"hela namn hör hemma i â€Landâ€-elementet." + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "Ytterligare modellinformation" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" +"Information om den etniska tillhörigheten och andra fakta om modellen/-erna " +"i en publicerad bild." + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "Kod för visad organisation" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" +"Kod frÃ¥n ett kontrollerat vokabulär för att identifiera organisationen eller " +"företaget som visas i bilden." + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "Kontrollerad term" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" +"En term som beskriver bildens innehÃ¥ll med ett värde ur en kontrollerad " +"vokabulär." + +#: src/properties.cpp:699 +msgid "Model age" +msgstr "Modellens Ã¥lder" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" +"Ã…ldern för den mänskliga modellen/-erna dÃ¥ bilden togs i en publicerad bild." + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "Namn för visad organisation" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "Namnet pÃ¥ organisationen eller företaget som visas i bilden." + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "Visad person" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "Namn pÃ¥ personen som visas i bilden." + +#: src/properties.cpp:702 +msgid "Digital Image Identifier" +msgstr "Digital bildidentifierare" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" +"En globalt unik identifierare för den här digitala bilden. Den skapas och " +"tillämpas av skaparen av den digitala bilden dÃ¥ bilden skapas. Värdet ska " +"inte ändras efterÃ¥t." + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "Originalfotots fysiska typ" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "Den digitala filens källtyp." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "Händelse" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "Namn eller beskrivning av den specifika händelse där bilden togs." + +#: src/properties.cpp:705 +msgid "Maximum available height" +msgstr "Högsta möjliga höjd" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"Högsta möjliga höjd i bildpunkter för originalfotot frÃ¥n vilket det här " +"fotot har skapats genom att minska storleken." + +#: src/properties.cpp:706 +msgid "Maximum available width" +msgstr "Högsta möjliga bredd" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" +"Högsta möjliga bredd i bildpunkter för originalfotot frÃ¥n vilket det här " +"fotot har skapats genom att minska storleken." + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "Registerpost" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" +"BÃ¥de en registerobjekt-ID och en registerorganisations-ID för att bokföra " +"all registrering för den här digitala bilden med ett register." + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "Registerpost-objektsidentifierare" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" +"En unik identifierare som skapas av ett register och tillämpas av " +"digitalbildens skapare. Värdet ska inte ändras efter att det tillämpats. Den " +"här identifieraren är länkad till en motsvarande " +"registerorganisationsidentifierare." + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "Registerpost-organisationsidentifierare" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" +"En identifierare för registret som utfärdade motsvarande registerbilds-ID." + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "IPTC-fält som senast ändrades" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" +"Datum och, valfritt, tid dÃ¥ nÃ¥gon av fotots IPTC-metadatafält senast " +"redigerades." + +#: src/properties.cpp:711 +msgid "Location shown" +msgstr "Visad plats" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "En plats som visas i bilden." + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "Skapelseplats" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "Platsen där bilden togs." + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Plats-stad" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Namnet pÃ¥ staden för en plats." + +#: src/properties.cpp:714 +msgid "Location-Country ISO-Code" +msgstr "Plats-landets ISO-kod" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "ISO-koden för landet där bilden togs." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Plats-landets namn" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "Namnet pÃ¥ landet där bilden togs." + +#: src/properties.cpp:716 +msgid "Location-Province/State" +msgstr "Plats-Provins/stat" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "Namnet pÃ¥ ett lands delregion - en provins, ett län - där bilden togs." + +#: src/properties.cpp:717 +msgid "Location-Sublocation" +msgstr "Plats-delplats" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" +"Namn pÃ¥ en delplats. Delplatsens namn kan antingen vara namnet pÃ¥ en " +"delplats i en stad, eller namnet pÃ¥ en välkänd plats eller (natur-) monument " +"utanför en stad." + +#: src/properties.cpp:718 +msgid "Location-World Region" +msgstr "Plats-världsregion" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "Namnet den världsdel där bilden togs." + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "Konstverk eller -objekt i bild" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "En uppsättning metadata om ett konstverk eller objekt i bilden." + +#: src/properties.cpp:720 +msgid "Artwork or object-Copyright notice" +msgstr "Konstverk eller objekt-Upphovsrätt" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" +"InnehÃ¥ller all nödvändig upphovsrättsinformation för Ã¥beropande av " +"intellektuell äganderätt för ett konstverk eller ett objekt i bilden och bör " +"identifiera den nuvarande ägaren av upphovsrätten för verket med tillhörande " +"intellektuell upphovsrätt." + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "Konstverk eller objekt-skapare" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" +"InnehÃ¥ller namnet pÃ¥ den konstnär som skapade konstverket eller objektet i " +"bilden. I de fall dÃ¥ artisten inte kan eller bör identifieras kan namnet pÃ¥ " +"ett företag eller organisation vara passande." + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "Konstverk eller objekt-skapelsedatum" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" +"Anger datumet och, om man vill, tidpunkten dÃ¥ konstverket eller objektet i " +"bilden skapades. Det här relaterar till konstverket eller objektet med " +"tillhörande intellektuell äganderätt." + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "Konstverk eller objekt-källa" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" +"Organisationen eller ägaren som innehar och registrerar konstverket eller " +"objektet i bilden för sitt inventarium." + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "Konstverk eller objekt-källans inventarienummer" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" +"Inventarienumret som utfärdats av organisationen eller ägaren som innehar " +"och registrerar konstverket eller objektet i bilden." + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "Konstverk eller objekt-Titel" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "En referens till konstverket eller objektet i bilden." + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "Skannad frÃ¥n film" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "Skannad frÃ¥n genomskinlighet (inklusive diabild)" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "Skannad frÃ¥n utskrift" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "Kamerans RAW" + +#: src/properties.cpp:736 +msgid "Camera TIFF" +msgstr "Kamerans TIFF" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "Kamerans JPEG" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "PLUS-version" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "Versionsnumret för PLUS-standarderna dÃ¥ transaktionen tilldrog sig." + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Licensinnehavare" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" +"Part eller parter till vilka licensen ges av licensutfärdaren vid " +"licenstransaktionen." + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "Licensägar-ID" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "Valfri PLUS-ID som identifierar varje licensägare." + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "Licensägarens namn" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "Namnet pÃ¥ varje licensägare." + +#: src/properties.cpp:746 +msgid "End User" +msgstr "Användare" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "Part eller parter som till sist använder den licensierade bilden." + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "Användar-ID" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "Valfri PLUS-ID som identifierar varje användare." + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "Användarens namn" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "Namn för varje användare." + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "Licensutfärdare" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "Part eller parter som utfärdar licensen till licensägaren." + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "Licensutfärdar-ID" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "Valfri PLUS-ID som identifierar varje licensutfärdare." + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "Licensutfärdarens namn" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "Namn för varje licensutfärdare." + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "Licensutfärdarens adress" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "Licensutfärdarens gatuadress." + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "Licensutfärdarens adressdetaljer" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "Ytterligare postadressdetaljer om licensutfärdaren." + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "Licensutfärdarens stad" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "Namnet pÃ¥ licensutfärdarens stad." + +#: src/properties.cpp:755 +msgid "Licensor State or Province" +msgstr "Licensutfärdarens stat/provins" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "Namnet pÃ¥ licensutfärdarens stat eller provins." + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "Licensutfärdarens postnummer" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "Licensutfärdarens postkod eller postnummer." + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "Licensutfärdarens land" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "Namnet pÃ¥ licensutfärdarens land." + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "Licensutfärdarens telefon, typ 1" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "Licensutfärdarens telefon typ 1." + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "Licensutfärdarens telefon 1" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "Licensutfärdarens telefonnummer 1." + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "Licensutfärdarens telefon typ 2" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "Licensutfärdarens telefon typ 2." + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "Licensutfärdarens telefon 2" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "Licensutfärdarens telefonnummer 2." + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "Licensutfärdarens e-post" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "Licensutfärdarens e-postadress." + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "Licensutfärdarens webbadress" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "Licensutfärdarens webbsida." + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "Licensutfärdare, anteckningar" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" +"Ytterligare information för att identifiera och kontakta licensutfärdaren/-" +"arna." + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "PLUS-mediasummeringskod" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" +"En PLUS-standardiserad alfanumerisk kodsträng som summerar mediaanvändandet " +"som inkluderas i licensen." + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "Licensens startdatum" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "Datum dÃ¥ licensen träder i kraft." + +#: src/properties.cpp:767 +msgid "License End Date" +msgstr "Licensens slutdatum" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "Datum dÃ¥ licensen utgÃ¥r." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "Mediabegränsningar" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" +"Begränsningar pÃ¥ vilken omfattning av PLUS-mediaanvändning som inkluderas i " +"licensen till vissa media eller media som inte uttryckligen nämns i PLUS " +"mediamatris." + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "Regionbegränsningar" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" +"Begränsningar rörande omfattningen av geografisk distribution till vissa " +"städer, länder, provinser, eller andra omrÃ¥den som kan inkluderas eller " +"uteslutas frÃ¥n PLUS-regionerna som specificeras i licensens specificerade " +"mediaanvändande." + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "Produkt- eller tjänstebegränsningar" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" +"Begränsningar för användning av bilden för att göra reklam för/associera med " +"en namngiven produkt eller tjänst." + +#: src/properties.cpp:771 +msgid "Image File Constraints" +msgstr "Bildfilsbegränsningar" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "Begränsningar pÃ¥ ändringar av bildfilsnamnet, metadata eller filtyp." + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "Bildändringsbegränsningar" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" +"Begränsningar pÃ¥ hur bilden fÃ¥r ändras med beskärning, spegling, " +"retuschering, färgsättning, färgborttagning, eller sammanfogning." + +#: src/properties.cpp:773 +msgid "Image Duplication Constraints" +msgstr "Bilddupliceringsbegränsningar" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "Begränsningar för flerfaldigande av bilden." + +#: src/properties.cpp:774 +msgid "Model Release Status" +msgstr "Modellutgivningsstatus" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" +"Sammanfattar tillgängligheten och omfattningen av modellutgivning som " +"tillÃ¥ter användande av en persons likheter i fotografiet." + +#: src/properties.cpp:775 +msgid "Model Release ID" +msgstr "Modellutgivnings-ID" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "Valfri identifierare tillhörande varje modellutgÃ¥va." + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "MinderÃ¥rig modells Ã¥ldersavslöjande" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" +"Ã…ldern för den yngsta modellen som visas i bilden, vid den tidpunkt dÃ¥ " +"bilden togs." + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "Ägandeutgivningsstatus" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" +"Sammanfattar tillgängligheten och omfattningen av ägandeutgÃ¥vor som tillÃ¥ter " +"användande av vad som visas i fotografiet." + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "ÄgandeutgÃ¥va-ID" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "Valfri identifierare tillhörande varje ägandeutgÃ¥va." + +#: src/properties.cpp:779 +msgid "Other Constraints" +msgstr "Andra begränsningar" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "Ytterligare begränsningar för licensen." + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "Tack-till-rad krävs" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "Tillskrivningskrav, om de finns." + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "Varning om pornografiskt material" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" +"En varning som visar om det förekommer innehÃ¥ll som inte är lämpligt för " +"minderÃ¥riga." + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "Andra licenskrav" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "Ytterligare licenskrav." + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Villkorstext" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Villkor som gäller för licensen." + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "Villkorens webbadress" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "Webbadress för villkoren som gäller för licensen." + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Andra licensvillkor" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "Ytterligare licensvillkor." + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "Identifierar bildtypen som levereras." + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "Licensutfärdarens bild-ID" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "Valfri identifierare som tilldelas bilden av licensutfärdaren." + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "Bildfilens namn vid leverans" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" +"Namnet pÃ¥ bildfilen dÃ¥ den levererades till licensägaren för bruk enligt " +"licensen." + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "Bildfilformat som levererat" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" +"Filformatet för bildfilen dÃ¥ den levererades till licensägaren för bruk " +"enligt licensen." + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "Bildfilens storlek som levererad" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "Bildfilens storlek dÃ¥ den levererades till licensägaren." + +#: src/properties.cpp:791 +msgid "Copyright Status" +msgstr "Upphovsrättsstatus" + +#: src/properties.cpp:791 +msgid "Copyright status of the image." +msgstr "Bildens upphovsrättsstatus." + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "Upphovsrättens registreringsnummer" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" +"Upphovsrättens registreringsnummer, om det finns, som gäller för den " +"licensierade bilden." + +#: src/properties.cpp:793 +msgid "First Publication Date" +msgstr "Första publiceringsdatum" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "Det datum dÃ¥ bilden först publicerades." + +#: src/properties.cpp:794 +msgid "Copyright Owner" +msgstr "Upphovsrättsägare" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "Ägare av upphovsrätten för den licensierade bilden." + +#: src/properties.cpp:795 +msgid "Copyright Owner ID" +msgstr "Upphovsrättsägar-ID" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "Valfri PLUS-ID som identifierar varje upphovsrättsägare." + +#: src/properties.cpp:796 +msgid "Copyright Owner Name" +msgstr "Upphovsrättsägarens namn" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "Upphovsrättsägarens namn." + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "Upphovsrättsägarens bild-ID" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "Valfri identifierare som tilldelas bilden av upphovsrättsägaren." + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Bildskapare" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "Bildens skapare." + +#: src/properties.cpp:799 +msgid "Image Creator ID" +msgstr "Bildskaparens ID" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "Valfri PLUS-ID som identifierar varje bildskapare." + +#: src/properties.cpp:800 +msgid "Image Creator Name" +msgstr "Bildskaparens namn" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "Bildskaparens namn." + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "Bildskaparens bild-ID" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "Valfri identifierare som tilldelas bilden av bildskaparen." + +#: src/properties.cpp:802 +msgid "Image Supplier ID" +msgstr "Bildleverantörs-ID" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "Valfri PLUS-ID som identifierar bildens leverantör." + +#: src/properties.cpp:803 +msgid "Image Supplier Name" +msgstr "Bildleverantörsnamn" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "Bildleverantörens namn." + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "Bildleverantörs bild-ID" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "Valfri identifierare som tilldelas bilden av bildleverantören." + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "Licensägarens bild-ID" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "Valfri identifierare som tilldelas bilden av licensägaren." + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "Licensägarens bildanteckningar" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "Anteckningar tillagda av licensägaren." + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "Övrig bildinfo" + +#: src/properties.cpp:807 +msgid "Additional image information." +msgstr "Ytterligare bildinformation." + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "Licens-ID" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "Valfri PLUS-ID som tilldelas licensen av licensutfärdaren." + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "Licensutfärdarens transaktions-ID" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" +"Identifierare som tilldelas av licensutfärdaren för deras referenser och " +"internt bruk." + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "Licensägarens transaktions-ID" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" +"Identifierare som tilldelas av licensägaren för deras referenser och internt " +"bruk." + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "Licensägarens projektreferens" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" +"Namn eller beskrivning av projektreferensen, som tilldelas av licensägaren." + +#: src/properties.cpp:812 +msgid "License Transaction Date" +msgstr "Licenstransaktionsdatum" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "Datumet för licenstransaktionen." + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Ã…teranvänd" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" +"Visar om en licens är en upprepad eller förstagÃ¥ngslicens. Ã…teranvändning " +"kan kräva att licenserna som lagras i filerna som tidigare levererats till " +"kunden blir uppdaterade." + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "Övriga licensdokument" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" +"Referensinformation för ytterligare dokument som hör ihop med licensen." + +#: src/properties.cpp:815 +msgid "Other License Info" +msgstr "Övrig licensinfo" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "Ytterligare licensinformation." + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "Valfritt fält som licensutfärdaren kan använda till vadsomhelst." + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "Anpassad 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "Anpassad 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "Anpassad 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "Valfritt fält som licensägaren kan använda till vadsomhelst." + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "Anpassad 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "Anpassad 8" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "Anpassad 9" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "Anpassad 10" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "Varning om pornografiskt material krävs" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "Krävs ej" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "Skyddad" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "Public Domain" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "Tack till bredvid bilden" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "Tack till i tack-omrÃ¥det" + +#: src/properties.cpp:848 +msgid "Credit on Image" +msgstr "Tack till pÃ¥ bilden" + +#: src/properties.cpp:849 +msgid "Not Require" +msgstr "Behövs inte" + +#: src/properties.cpp:854 +msgid "No Colorization" +msgstr "Ingen färgsättning" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "Ingen beskärning" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "Ingen färgminskning" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "Ingen spegling" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "Ingen sammanfogning" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "Ingen retuschering" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "Flerfaldigande bara vid behov enligt licens" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "Inga dupliceringsbegränsningar" + +#: src/properties.cpp:866 +msgid "No Duplication" +msgstr "Ingen duplicering" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "BibehÃ¥ll filnamn" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "BibehÃ¥ll filtyp" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "BibehÃ¥ll ID i filnamn" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "BibehÃ¥ll metadata" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "Windows-bitmap (BMP)" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Digitalt negativ (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "Encapsulated PostScript (EPS)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "Graphics Interchange Format (GIF)" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "JPEG Interchange Formats (JPG, JIF, JFIF)" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "Macintosh Picture (PICT)" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "Portable Network Graphics (PNG)" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "Photoshop Dokument (PSD)" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "Slutet RAW-bildformat" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "Tagged Image File Format (TIFF)" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "Windows Media Photo (HD Photo)" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "Större än 50 MB" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "Upp till 1 MB" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "Upp till 10 MB" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "Upp till 30 MB" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "Upp till 50 MB" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "Illustrerad bild" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "Multimedia eller sammansatt bild" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Fotografisk bild" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "Cell" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "Fax" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "Sökare" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "Arbetsadress" + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "Ã…lder okänd" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "Ã…lder 25 och äldre" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "24 Ã¥r gammal" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "23 Ã¥r gammal" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "22 Ã¥r gammal" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "21 Ã¥r gammal" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "20 Ã¥r gammal" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "19 Ã¥r gammal" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "18 Ã¥r gammal" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "17 Ã¥r gammal" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "16 Ã¥r gammal" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "15 Ã¥r gammal" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "14 Ã¥r och yngre" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "Ej tillämpbart" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "Obegränsade modellutgÃ¥vor" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "Begränsade eller ofullständiga modellutgÃ¥vor" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "Obegränsade ägandeutgÃ¥vor" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "Begränsade eller ofullständiga ägandeutgÃ¥vor" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "Upprepad användning" + +#: src/properties.cpp:960 src/properties.cpp:969 +msgid "Fixture Identification" +msgstr "Fixturidentifiering" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Status" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "En notering som gör bilden unik" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Personer" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "Katalogmängd" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "Beskrivningar av katalogobjekt efter innehÃ¥ll" + +#: src/properties.cpp:978 +msgid "RegionInfo" +msgstr "Regioninfo" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "Microsoft Photo metadatarot för personigenkänning" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "OmrÃ¥den" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "InnehÃ¥ller omrÃ¥des-/persontaggar" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "Datum för giltiga omrÃ¥den" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "Datum dÃ¥ det sista omrÃ¥det skapades" + +#: src/properties.cpp:991 +msgid "Person Display Name" +msgstr "Visningsnamn" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "Namn pÃ¥ personen (i den givna rektangeln)" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "Rektangel" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "Rektangel som identifierar personen i fotot" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "E-postsammandrag" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "SHA-1 krypterat meddelandehash för personens Windows Live e-postadress" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "LiveId CID" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "Signerad decimalrepresentation för personens Windows Live CID" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "Huvudstruktur innehÃ¥llandes omrÃ¥desbaserad information" + +#: src/properties.cpp:1001 +msgid "Applied To Dimensions" +msgstr "Verkställd pÃ¥ dimensioner" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "Bredd och höjd pÃ¥ bild vid lagring av omrÃ¥desdata" + +#: src/properties.cpp:1002 +msgid "Region List" +msgstr "OmrÃ¥deslista" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "Lista över regionstrukturer" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "OmrÃ¥de" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "Typmening för omrÃ¥de (Face|Pet|Focus|BarCode)" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "Namn/kort beskrivning av innehÃ¥ll i en bildregion" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" +"Användarscenario för en given fokusarea (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" + +#: src/properties.cpp:1007 +msgid "Focus Usage" +msgstr "Fokusanvändning" + +#: src/properties.cpp:1008 +msgid "Bar Code Value" +msgstr "Streckkodsvärde" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "Avkodad BarCode-värdesträng" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "Tillägg" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "Alla XMP-egenskaper pÃ¥ toppnivÃ¥ som beskriver regionsinnehÃ¥ll" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "Huvudstruktur innehÃ¥llandes nyckelordsbaserad information" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "Hierarki" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "Lista över rotnyckelordsstrukturer" + +#: src/properties.cpp:1017 +msgid "Keyword" +msgstr "Nyckelord" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "Namn pÃ¥ nyckelord (-nod)" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "Verkställd" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" +"True om nyckelordet har verkställts, False annars. Om saknat, antas mwg-kw:" +"Applied vara True för lövnoder och False för släktnoder" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "Lista över underordnade nyckelordsstrukturer" + +#: src/properties.cpp:1026 +msgid "Use Panorama Viewer" +msgstr "Använda Panoramvisare" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" +"Huruvida denna bild ska visas i en panoramavisare istället för som en normal " +"platt bild. Det kan specificeras baserat pÃ¥ användarinställningar eller " +"genom programvaran för stitching. Programmet som visar eller använder bilden " +"kan välja att ignorera detta." + +#: src/properties.cpp:1027 +msgid "Capture Software" +msgstr "FÃ¥ngstprogramvara" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" +"Om fÃ¥ngst skedde med ett program eller en mobil enhet, som en Android-" +"telefon, namnet pÃ¥ programmet som används (som en â€Photo Sphereâ€). Detta ska " +"lämnas tomt om källbilder fÃ¥ngades manuellt, som genom att använde en DSLR " +"pÃ¥ en tripod." + +#: src/properties.cpp:1028 +msgid "Stitching Software" +msgstr "Stitching-programvara" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" +"Programmet som användes för att skapa det slutgiltiga panoramat. Det kan " +"ibland vara samma värde som GPano:CaptureSoftware." + +#: src/properties.cpp:1029 +msgid "Projection Type" +msgstr "Projektionstyp" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" +"Projektionstyp använd i bildfilen. Google-produkter stödjer för tillfället " +"värdet equirectangular." + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "Position kompassriktning i grader" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" +"Grader för kompassriktning för att centrera bilden. Värdet mÃ¥ste vara >= 0 " +"och < 360." + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "Position Pitch grader" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" +"Pitch, i grader för centrum i bilden. Värdet mÃ¥ste vara >= -90 och <= 90." + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "Position Roll i grader" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" +"Roll i grader för bilden, där nivÃ¥ med horisonten är 0. Värdet mÃ¥ste vara > " +"- 180 och <= 180." + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "Initial vy, riktning i grader" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "Vinkeln för riktningen av den initiala vyn i grader." + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "Initial vy, Pitch i grader" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "Pitch-vinkel för initial vy i grader." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "Initial vy, Roll i grader" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "Roll-vinkel för den initiala vyn i grader." + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "Initial horisontell FOV i grader" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" +"Initiala horisontella fältet för vyn som visaren ska visa (i grader). Det är " +"liknande en zoomnivÃ¥." + +#: src/properties.cpp:1037 +msgid "First Photo Date" +msgstr "Första fotodatum" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "Datum och tid för den första bilden skapad i panoramat." + +#: src/properties.cpp:1038 +msgid "Last Photo Date" +msgstr "Senaste fotodatum" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "Datum och tid för när den senaste bilden i panoramat skapades." + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "Antal källfoton" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "Antal källbilder använda för att skapa panoramat" + +#: src/properties.cpp:1040 +msgid "Exposure Lock Used" +msgstr "ExponeringslÃ¥s använt" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" +"När individuella källfotografier fÃ¥ngades, oavsett om kamerans " +"exponeringsinställning var lÃ¥st. " + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "Bredd pÃ¥ beskuret bildomrÃ¥de i bildpunkter" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" +"Originalbredd i bildpunkter för bilden (likadan som den aktuella bildens " +"bredd för oredigerade bilder)." + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "Höjd pÃ¥ beskuret bildomrÃ¥de i bildpunkter" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" +"Originalhöjd i bildpunkter för bilden (likadan som den aktuella bildens höjd " +"för oredigerade bilder)." + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "Hel panoramabredd i bildpunkter" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" +"Ursprungliga hela panoramabredden frÃ¥n vilken bilden beskärdes. Eller, om " +"bara ett partiellt panorama fÃ¥ngades, anger detta bredden pÃ¥ vad hela " +"panoramat skulle ha varit." + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "Hel panoramahöjd i bildpunkter" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" +"Ursprungliga hela panoramahöjden frÃ¥n vilken bilden beskärdes. Eller, om " +"bara ett partiellt panorama fÃ¥ngades, anger detta höjden pÃ¥ vad hela " +"panoramat skulle ha varit." + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "Beskuret omrÃ¥de till vänster i bildpunkter" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" +"Kolumn frÃ¥n var den vänstra kanten av bilden beskärdes frÃ¥n fullstora " +"panoramat." + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "Beskuret omrÃ¥de överst i bildpunkter" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" +"Rad frÃ¥n var den översta kanten av bilden beskärdes frÃ¥n fullstora panoramat." + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "Initial kameravagn" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" +"Denna valfria parameter flyttar den virtuella kamerapositionen längs " +"synfältet, bort frÃ¥n centrum av fotosfären. Bakre ytposition representeras " +"av -1.0 medan främre ytposition representeras av 1.0. För normal visning bör " +"parametern sättas till 0." + +#: src/properties.cpp:1055 +msgid "Archival Location" +msgstr "Arkiveringsplats" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "Information om arkiveringsplatsen." + +#: src/properties.cpp:1056 +msgid "Arranger" +msgstr "Arrangör" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "Information om arrangören." + +#: src/properties.cpp:1057 +msgid "Arranger Keywords" +msgstr "Arrangörnyckelord" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "Information om arrangörnyckelorden." + +#: src/properties.cpp:1059 +msgid "Video Aspect Ratio" +msgstr "BildförhÃ¥llande" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" +"Ratio för bredd:höjd, hjälper till att bestämma hur en video kan visas pÃ¥ " +"skärm" + +#: src/properties.cpp:1060 +msgid "Video Aspect Ratio Type" +msgstr "BildförhÃ¥llandetyp" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "BildförhÃ¥llandetyp. Exempelvis - Free-Resizing eller Fixed" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "Bifogad fildata" + +#: src/properties.cpp:1062 +msgid "Attached File Description" +msgstr "Bifogad filbeskrivning" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "Bifogad fil-MIME-typ" + +#: src/properties.cpp:1064 +msgid "Attached File Name" +msgstr "Bifogat filnamn" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "Bifogat fil-UID" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "Bifogat fil-universalt ID" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "En C-sträng som specificerar en grund-URL." + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "Bit-djup" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" +"Ett 16-bitars heltal som indikerar bildpunktsdjupet för den komprimerade " +"bilden. Värden 1, 2 , 4, 8, 16, 24 och 32 indikerar djup pÃ¥ färgbilder" + +#: src/properties.cpp:1068 +msgid "Brightness setting." +msgstr "Ljussättning." + +#: src/properties.cpp:1069 +msgid "Camera Byte Order" +msgstr "Kamera byte-riktning" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "Byte-riktning för videoinfÃ¥ngarenheten." + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "Video Cinematographer" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "Video Cinematographer-information." + +#: src/properties.cpp:1071 +msgid "Clean Aperture Width" +msgstr "Rensa slutarbredd" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "Rensa slutarbredd i bildpunkter" + +#: src/properties.cpp:1072 +msgid "Clean Aperture Height" +msgstr "Rensa slutarhöjd" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "Rensa slutarhöjd i bildpunkter" + +#: src/properties.cpp:1073 +msgid "Video Codec" +msgstr "Videokodek" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" +"Videokodekinformationen. Informerar om kodningsalgoritmen för video. " +"Kodekinformation krävs för videouppspelning." + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "Avkodningsinfo för videokodek" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" +"InnehÃ¥ller information om videokodeken avkoda allt, d.v.s. aktiverad/" +"inaktiverad" + +#: src/properties.cpp:1075 +msgid "Video Codec Description" +msgstr "Videokodekbeskrivning" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "InnehÃ¥ller beskrivning av kodeken." + +#: src/properties.cpp:1076 +msgid "Video Codec Information" +msgstr "Videokodekinformation" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "InnehÃ¥ller information kodeken behöver innan avkodning kan börja." + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "Hämtnings-URL för videokodek" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "Hämtnings-URL för videokodek." + +#: src/properties.cpp:1078 +msgid "Video Codec Settings" +msgstr "Videokodekinställningar" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "InnehÃ¥ller information kodeken behöver innan avkodning kan ske." + +#: src/properties.cpp:1083 +msgid "Comment" +msgstr "Kommentar" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "Information om kommentaren." + +#: src/properties.cpp:1084 +msgid "Commissioned" +msgstr "Beställda" + +#: src/properties.cpp:1084 +msgid "Commissioned." +msgstr "Beställda." + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "QTime-kompatibel filtyps-märke" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "Andra QuickTime-kompatibla fil-typsmärken" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "Information om kompositören." + +#: src/properties.cpp:1087 +msgid "Composer Keywords" +msgstr "Nyckelord för kompositör" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "Information om nyckelord för kompositör." + +#: src/properties.cpp:1088 +msgid "Compressor" +msgstr "Komprimerare" + +#: src/properties.cpp:1088 +msgid "Video Compression Library Used" +msgstr "Videokomprimeringsbibliotek som används" + +#: src/properties.cpp:1089 +msgid "Video Compressor ID" +msgstr "Videokomprimerings-ID" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "Videokomprimerings-ID pÃ¥ använd teknologi/kodek" + +#: src/properties.cpp:1090 +msgid "Compressor Version" +msgstr "Komprimeringsversion" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "Information om komprimeringsversionen." + +#: src/properties.cpp:1091 +msgid "Container Type" +msgstr "BehÃ¥llartyp" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "Primär metadatabehÃ¥llare" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm" +msgstr "Algoritm för komprimering av innehÃ¥ll" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "Algoritm för komprimering av innehÃ¥ll. Exempelvis: zlib" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "Kodningstyp för innehÃ¥ll" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "Kodningstyp för innehÃ¥ll. Exempelvis: kryptering eller komprimering" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "Krypteringsalgoritm för innehÃ¥ll" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "Krypteringsalgoritm för innehÃ¥ll. Exempelvis: Blowfish" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "Signaturalgoritm för innehÃ¥ll" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "Signaturalgoritm för innehÃ¥ll. Exempelvis: RSA" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "Signaturhash-algoritm för innehÃ¥ll" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "Signaturhash-algoritm för innehÃ¥ll. Exempelvis: SHA1-160 eller MD5" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "Indikerar riktningen pÃ¥ kontrastbearbetning tillagd av kameran." + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "Copyright, kan vara namnet pÃ¥ en organisation eller en individ." + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "Kostymdesigner" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "Kostymdesigner associerad med den här videon." + +#: src/properties.cpp:1100 +msgid "Name of the country where the video was created." +msgstr "Namn pÃ¥ landet där videon skapades." + +#: src/properties.cpp:1101 +msgid "Creation Date" +msgstr "Skapad" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" +"Datum och tid för dÃ¥ filen skapades. Värdet ges sm numret av 100-" +"nanosekundintervall sedan första januari 1601, i linje med Coordinated " +"Universal Time (Greenwich Mean Time)." + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "Bildpunktsbeskärning botten" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "Antal bildpunkter att beskära frÃ¥n botten." + +#: src/properties.cpp:1104 +msgid "Pixel Crop Left" +msgstr "Bildpunktsbeskärning vänster" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "Antal bildpunkter att beskäras frÃ¥n vänster." + +#: src/properties.cpp:1105 +msgid "Pixel Crop Right" +msgstr "Bildpunktsbeskärning höger" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "Antal bildpunkter att beskära frÃ¥n höger." + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "Fält som indikerar om en video är beskuren." + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "Bildpunktsbeskärning överst" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "Antal bildpunkter att beskära frÃ¥n toppen." + +#: src/properties.cpp:1108 +msgid "Current Time" +msgstr "Aktuell tid" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "Tiden för den aktuella tidspositionen i filmen." + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "Datapaket" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "Anger antalet datapaket som existerar i dataobjektet." + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "Datum och tid i ISO 8601-format för när originalvideon skapades. " + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" +"Datum och tid för när videon lagrades som digitalt data, kan vara detsamma " +"som DateTimeOriginal om ursprungligen lagrat i digital form. Lagras i ISO " +"8601-format." + +#: src/properties.cpp:1113 +msgid "Date-Time Original" +msgstr "Datum-tid original" + +#: src/properties.cpp:1113 +msgid "Contains the production date" +msgstr "InnehÃ¥ller produktionsdatumet" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "VideospÃ¥r pÃ¥ som standard" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "VideospÃ¥r pÃ¥ som standard, d.v.s. aktiverad/inaktiverad" + +#: src/properties.cpp:1115 +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "Indikerar den digitala zoomförhÃ¥llandet när videon togs." + +#: src/properties.cpp:1116 +msgid "Dimensions" +msgstr "Dimensioner" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "Information om bildrutans dimensioner." + +#: src/properties.cpp:1117 +msgid "Director" +msgstr "Regissör" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "Information om regissören." + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "Video Display Unit" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "Video display unit. Exempelvis cm, bildpunkter, tum" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "Distribuerad av" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "Distribuerad av, d.v.s. namnet pÃ¥ en person eller organisation." + +#: src/properties.cpp:1120 +msgid "Doc Type" +msgstr "Dokumenttyp" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" +"Beskriver innehÃ¥llet pÃ¥ filen. Om det är en MATROSKA-fil blir dess värde " +"â€matroskaâ€" + +#: src/properties.cpp:1121 +msgid "Doc Type Read Version" +msgstr "Dokumenttyp läsversion" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" +"En Matroskavideo-specifik egenskap, hjälper till med att bestämma " +"kompatibiliteten för en fil med en specifik version av videospelare" + +#: src/properties.cpp:1122 +msgid "Doc Type Version" +msgstr "Doc Type Version" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" +"En Matroskavideo-specifik egenskap, indikerar filtypens version, hjälper " +"till att bestämma kompatibiliteten" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "Punkter per tum" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Längden pÃ¥ mediafilen. Mäts i millisekunder." + +#: src/properties.cpp:1125 +msgid "EBML Read Version" +msgstr "EBML Read Version" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "Extensible Binary Meta Language Read Version" + +#: src/properties.cpp:1126 +msgid "EBML Version" +msgstr "EBML Version" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "Extensible Binary Meta Language Version" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "Edit Block 1 / Language" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "Information om redigering / sprÃ¥k." + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "Redigering block 2 / sprÃ¥k" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "Redigering block 3 / sprÃ¥k" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "Redigering block 4 / sprÃ¥k" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "Redigering block 5 / sprÃ¥k" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "Redigering block 6 / sprÃ¥k" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "Redigering block 7 / sprÃ¥k" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "Redigering block 8 / sprÃ¥k" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "Redigering block 9 / sprÃ¥k" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "Redigerad av" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "Redigerad av, d.v.s. namnet pÃ¥ person eller organisation." + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "VideospÃ¥r aktiverat" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "Status pÃ¥ videospÃ¥r, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "Kodat av" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "Kodat av, d.v.s. namn pÃ¥ person eller organisation." + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "Kodade bildpunkters bredd" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "Kodade bildpunkters bredd i bildpunkter" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "Kodade bildpunkters höjd" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "Kodade bildpunkters höjd i bildpunkter" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "Kodare" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "Information om kodaren." + +#: src/properties.cpp:1142 +msgid "End Timecode" +msgstr "Sluttidskod" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "Ingenjör, vanligen namnet pÃ¥ en person." + +#: src/properties.cpp:1144 +msgid "Equipment" +msgstr "Utrustning" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "Information om utrustningen som användes för att spela in video." + +#: src/properties.cpp:1145 +msgid "Exposure Compensation Information." +msgstr "Exponeringskompensationsinformation." + +#: src/properties.cpp:1146 +msgid "Exposure Program Information." +msgstr "Exponeringsprograminformation." + +#: src/properties.cpp:1147 +msgid "Exposure time in seconds." +msgstr "Exponeringstid i sekunder." + +#: src/properties.cpp:1148 +msgid "Extended Content Description" +msgstr "Extended Content Description" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "Extended Content Description, vanligen funnet i filer av typen ASF." + +#: src/properties.cpp:1150 +msgid "File ID" +msgstr "Fil-ID" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "Fil-ID." + +#: src/properties.cpp:1151 +msgid "File Length" +msgstr "Fillängd" + +#: src/properties.cpp:1151 +msgid "File length." +msgstr "Fillängd." + +#: src/properties.cpp:1152 +msgid "File Name" +msgstr "Filnamn" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "Filnamn eller absolut sökväg" + +#: src/properties.cpp:1153 +msgid "File Size" +msgstr "Filstorlek" + +#: src/properties.cpp:1153 +msgid "File Size, in MB" +msgstr "Filstorlek i MB" + +#: src/properties.cpp:1154 +msgid "File Type" +msgstr "Filtyp" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "Filtillägg eller filtyp" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "Verkställda filtereffektinställningar." + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "Version pÃ¥ fast programvara för kamera-/videoenheten." + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "F-nummer. Kameraobjektivsspecifik data." + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "Brännvidd pÃ¥ objektivet i millimeter." + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "Fokusläge pÃ¥ objektivet. Exempelvis - AF för autofokus" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" +"Indikation pÃ¥ filmformat (datorgenererad, digitaliserad och sÃ¥ vidare)." + +#: src/properties.cpp:1161 +msgid "Frame Count" +msgstr "Antal bildrutor" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "Totala antalet bildrutor i en video" + +#: src/properties.cpp:1162 +msgid "Frame Height" +msgstr "Bildrutehöjd" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "Höjden pÃ¥ bildrutor i en video" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" +"Hastigheten för hur bildrutor presenteras i en video (uttrycks i fps/bps " +"(frames per second/bildrutor per sekund))" + +#: src/properties.cpp:1165 +msgid "Frame Width" +msgstr "Bildrutebredd" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "Bredd pÃ¥ bildrutor i en video" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "GPS-koordinater" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "Information om GPS-koordinaterna." + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "Datumstämpel för GPD-data, " + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "Riktning pÃ¥ bilden när den togs, värdeintervall frÃ¥n 0 till 359.99." + +#: src/properties.cpp:1172 +msgid "Reference for image direction." +msgstr "Referens för bildriktning." + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "(Norr/söder). Indikerar latitud." + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "(Öst/väst). Indikerar longitud." + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "Geodetiskt undersökningsdata." + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "Satellitinformation, format ospecificerat." + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "Tidsstämpel pÃ¥ GPS-data, " + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "En decimalkodning med punktseparatorer. " + +#: src/properties.cpp:1179 +msgid "Graphics Mode" +msgstr "Graphics-läge" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" +"Ett 16-bitars heltal som anger överföringsläget. Överföringsläget anger " +"vilken boolesk Ã¥tgärd QuickDraw ska utföra vid uppritning eller överföring " +"av en bild frÃ¥n en plats till en annan." + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "Gruppering" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "Information om grupperingen." + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "Hanterarklass" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" +"En fyrsiffrig kod som identifierar typen pÃ¥ hanterare. Endast tvÃ¥ värden är " +"giltiga för detta fält: â€mhlr†för mediahanterare och â€dhlr†för " +"datahanterare." + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "Handler Description" +msgstr "Hanterarbeskrivning" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" +"En (uppräknad) sträng som specificerar namnet pÃ¥ komponenten - det vill säga " +"mediahanteraren som användes när detta media skapades.." + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "Handler Type" +msgstr "Hanterartyp" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" +"En fyrsiffrig kod som identifierar typen av mediahanterare eller " +"datahanterare." + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "Tillverkar-ID för hanterare" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Component manufacturer." +msgstr "Komponenttillverkare." + +#: src/properties.cpp:1186 +msgid "Video Height" +msgstr "Videohöjd" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "Videohöjd i bildpunkter" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "Information om inställningar för toningsjustering." + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "Bildlängd, en egenskap ärvd frÃ¥n formatet BitMap" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "Infobannerbild" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "Informationsbannerbild." + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "Infobanner-URL" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "Informationsbanner-URL." + +#: src/properties.cpp:1191 +msgid "Information" +msgstr "Information" + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "Ytterligare filminformation." + +#: src/properties.cpp:1192 +msgid "Info Text" +msgstr "Infotext" + +#: src/properties.cpp:1192 +msgid "Information Text." +msgstr "Informationstext." + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "Info-URL" + +#: src/properties.cpp:1193 +msgid "Information URL." +msgstr "Informations-URL." + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "Information om ISO-inställningen." + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "ISRC-kod" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "Information om ISRC-koden." + +#: src/properties.cpp:1196 +msgid "Junk Data" +msgstr "Skräpdata" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "Videoskräpdata" + +#: src/properties.cpp:1197 +msgid "Language." +msgstr "SprÃ¥k." + +#: src/properties.cpp:1198 +msgid "Length" +msgstr "Längd" + +#: src/properties.cpp:1198 +msgid "The length of the media file." +msgstr "Längden pÃ¥ mediafilen." + +#: src/properties.cpp:1200 +msgid "Lens Type." +msgstr "Objektivtyp." + +#: src/properties.cpp:1201 +msgid "Lightness" +msgstr "Ljusstyrka" + +#: src/properties.cpp:1201 +msgid "Lightness." +msgstr "Ljusstyrka." + +#: src/properties.cpp:1202 +msgid "Location Information" +msgstr "Platsinformation" + +#: src/properties.cpp:1202 +msgid "Location Information." +msgstr "Platsinformation." + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "Logoikon-URL" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "En C-sträng som anger logoikon-URL." + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "Logo-URL" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "En C-sträng som anger en logo-URL." + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "Text" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "Text till en sÃ¥ng/video." + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "QTime Major FileType Brand" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "QuickTime Major File Type Brand" + +#: src/properties.cpp:1207 +msgid "Equipment Make" +msgstr "Utrustningstillverkare" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "Tillverkare av inspelningsutrustning" + +#: src/properties.cpp:1208 +msgid "Camera Maker Note Type" +msgstr "Kameratillverkare anteckningstyp" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "Kameratillverkare anteckningstyp." + +#: src/properties.cpp:1209 +msgid "Camera Maker Note Version" +msgstr "Kameratillverkare anteckningstyp" + +#: src/properties.cpp:1209 +msgid "Maker Note Version of the camera." +msgstr "Kameratillverkare anteckningstyp." + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "Tillverkar-URL" + +#: src/properties.cpp:1210 +msgid "Camera Manufacturer's URL." +msgstr "Kameratillverkarens URL." + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "Minsta F-nummer för objektiv i APEX." + +#: src/properties.cpp:1212 +msgid "Maximum Bit Rate" +msgstr "Högsta bithastighet" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" +"Anger den högsta bithastigheten i bitar per sekund för hela filen. Det ska " +"vara lika som summan av bithastigheterna för de olika digitala " +"mediaströmmarna." + +#: src/properties.cpp:1213 +msgid "Maximum Data Rate" +msgstr "Maximal datahastighet" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" +"Topphastighet för när data presenteras i en video (uttryckt i kB/s(kilobytes " +"per sekund))" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "MediaspÃ¥r skapat" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" +"Ett 32-bitars heltal som indikerar (i sekunder sedan midnatt, 1:a januari " +"1904) när mediahuvudet skapades." + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "Media Track Duration" +msgstr "MediaspÃ¥rets längd" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" +"Ett tidsvärde som indikerar längden pÃ¥ detta media (i filmens " +"tidskoordinatsystem)." + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "Media Header Version" +msgstr "Mediahuvudversion" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "En en byte stor specifikation av versionen pÃ¥ detta mediahuvud" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "MediasprÃ¥kkod" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "Ett 16-bitars heltal som anger sprÃ¥kkoden för detta media." + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "Media Track Modify Date" +msgstr "Ändringsdatum för mediaspÃ¥r" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" +"Ett 32-bitars heltal som indikerar (i sekunder sedan midnatt, 1:a januari " +"1904) för när mediahuvudet senast ändrades." + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "Mediatidsskala" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" +"Ett tidsvärde som indikerar tidsskalan för detta media - det vill säga " +"antalet tidsenheter som passerar per sekund i dess tidskoordinatsystem." + +#: src/properties.cpp:1220 +msgid "Medium." +msgstr "Media." + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "Metadata" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "En vektor av okända/oregistrerade metadatataggar och deras värden." + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "Metadatabibliotek" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" +"En vektor av oregistrerade bibliotekstaggar för metadata och deras värden." + +#: src/properties.cpp:1223 +msgid "Metering mode." +msgstr "Mätläge." + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "Mikrosekunder per bildruta" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "Antal mikrosekunder per bildruta eller bildrutehastighet" + +#: src/properties.cpp:1225 +msgid "Mime Type" +msgstr "Mime-typ" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "Berättar om videoformatet" + +#: src/properties.cpp:1226 +msgid "QTime Minor FileType Version" +msgstr "QTime Minor FileType Version" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "QuickTime Minor File Type Version" + +#: src/properties.cpp:1227 +msgid "Equipment Model" +msgstr "Utrustningsmodell" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "Modellnamn eller nummer för utrustningen." + +#: src/properties.cpp:1228 +msgid "Modification Date-Time" +msgstr "Ändringsdatum datum-tid" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "InnehÃ¥ller ändringsdatumet för videon" + +#: src/properties.cpp:1229 +msgid "Movie Header Version" +msgstr "Filmhuvudversion" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "Musik av" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "Musik av, d.v.s. namn pÃ¥ person eller organisation." + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "Muxingprogram" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" +"InnehÃ¥ller namnet pÃ¥ biblioteket som användes för att skapa filen (som " +"â€libmatroska 0.7.0â€)" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "Namn pÃ¥ lÃ¥t eller händelsen." + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "Nästa spÃ¥r-ID" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" +"Ett 32-bitars heltal som indikerar ett värde för att använda spÃ¥r-ID-numret " +"för nästa spÃ¥r som tillagd till denna film. Observera att 0 inte är ett " +"giltigt värde för spÃ¥r-ID." + +#: src/properties.cpp:1234 +msgid "Number Of Colours" +msgstr "Antal färger" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "Totala antalet färger som används" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "Antal viktiga färger" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "Antal viktiga färger, en egenskap ärvd frÃ¥n formatet BitMap" + +#: src/properties.cpp:1236 +msgid "Number Of Parts" +msgstr "Antal delar" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "Totala antalet delar i videon." + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "Ã…tgärdsfärger" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" +"Tre 16-bitars värden vilka anger den röda, gröna och blÃ¥a färgen för " +"Ã¥tgärden överföringsläge indikerad i fältet grafikläge." + +#: src/properties.cpp:1238 +msgid "Organization" +msgstr "Organisation" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "Namnet pÃ¥ organisationen associerad med denna video." + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" +"Videoriktning: 1 = horisontal (normal) 2 = spegling horisontal 3 = rotera " +"180 4 = spegling vertikal 5 = spegling horisontal och rotera 270 CW 6 = " +"rotera 90 CW 7 = spegling horisontal och rotera 90 CW 8 = rotera 270 CW" + +#: src/properties.cpp:1248 +msgid "Part" +msgstr "Del" + +#: src/properties.cpp:1248 +msgid "Part." +msgstr "Del." + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "Artister" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "Artister involverade i denna video." + +#: src/properties.cpp:1250 +msgid "Performer Keywords" +msgstr "Artister nyckelord" + +#: src/properties.cpp:1250 +msgid "Performer Keywords." +msgstr "Artister nyckelord." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "Artist-URL" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "Artistens dedikerade URL." + +#: src/properties.cpp:1252 +msgid "Picture Control Data" +msgstr "Bildkontrolldata" + +#: src/properties.cpp:1252 +msgid "Picture Control Data." +msgstr "Bildkontrolldata." + +#: src/properties.cpp:1253 +msgid "Picture Control Version" +msgstr "Bildkontrollversion" + +#: src/properties.cpp:1253 +msgid "Picture Control Data Version." +msgstr "Bildkontrolldataversion." + +#: src/properties.cpp:1254 +msgid "Picture Control Name" +msgstr "Bildkontrollnamn" + +#: src/properties.cpp:1254 +msgid "Picture Control Name." +msgstr "Bildkontrollnamn." + +#: src/properties.cpp:1255 +msgid "Picture Control Base" +msgstr "Bildkontrollbas" + +#: src/properties.cpp:1255 +msgid "Picture Control Data Base." +msgstr "Bilkontrolldatabas." + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust" +msgstr "Bildkontroll justera" + +#: src/properties.cpp:1256 +msgid "Picture Control Adjust Information." +msgstr "Bildkontroll justeringsinformation." + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjust" +msgstr "Bildkontroll snabbjustering" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "Bildkontroll snabbjusteringsinställningar." + +#: src/properties.cpp:1258 +msgid "Play Selection" +msgstr "Spela markerade" + +#: src/properties.cpp:1258 +msgid "Play Selection." +msgstr "Spela markerade." + +#: src/properties.cpp:1259 +msgid "Play Mode" +msgstr "Uppspelningsläge" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "Information om uppspelningsläge." + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "Avsnitt fysisk motsvarighet" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "InnehÃ¥ller informationen om extern media." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "Bildpunkter per meter X" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "Bildpunkter per x-meter, en egenskap ärvd frÃ¥n formatet BitMap" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "Bildpunkter per y-meter" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "Bildpunkter per y-meter, en egenskap ärvd frÃ¥n formatet BitMap" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "Plan" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "Antalet bildplan i videon" + +#: src/properties.cpp:1266 +msgid "Poster Time" +msgstr "Affischtid" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "Tidsvärdet för tiden för filmaffischen." + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "Föredragen hastighet" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" +"En 32-bitars fixpunktstal som anger hastigheten för att spela denna film. " +"Ett värde pÃ¥ 1.0 indikerar normal hastighet." + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "Föredragen volym" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" +"En 16-bitars fixpunktstal som anger hur högt filmens ljud ska spelas upp. " +"Ett värde pÃ¥ 1.0 indikerar full volym." + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "Förrullning" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" +"Anger tiden att buffra data innan uppspelning av filen i " +"millisekundsenheter. Om detta värde inte är noll kommer spellängdsfältet och " +"all payload presentationstidsfält att bli offset frÃ¥n detta värde. Därför " +"mÃ¥ste uppspelningsprogramvaran dra av värdet i förrullningsfältet frÃ¥n " +"uppspelningslängden och presentationstiden att beräkna frÃ¥n deras aktuella " +"värden." + +#: src/properties.cpp:1272 +msgid "Preview Atom Type" +msgstr "Förhandsgranska Atom-typ" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "Indikerar Atom-typ som innehÃ¥ller förhandsvisningsdata" + +#: src/properties.cpp:1273 +msgid "Preview Date" +msgstr "Förhandsvisningsdatum" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "Datumet för filmpremiären lokal tid konverterad frÃ¥n UTC" + +#: src/properties.cpp:1274 +msgid "Preview Duration" +msgstr "Förhandsgranska längd" + +#: src/properties.cpp:1274 +msgid "The duration of the movie preview in movie time scale units" +msgstr "Längden för förhandsvisningen av filmen i tidskalaenheter för film" + +#: src/properties.cpp:1275 +msgid "Preview Time" +msgstr "Förhandsvisningstid" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "Tiden i filmen dÃ¥ förhandsvisningen börjar." + +#: src/properties.cpp:1276 +msgid "The version of the movie preview " +msgstr "Versionen av filmförhandsvisningen " + +#: src/properties.cpp:1277 +msgid "Produced By" +msgstr "Producerad av" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "Producerad av, d.v.s. namn pÃ¥ person eller organisation." + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "Producent involverad i videon." + +#: src/properties.cpp:1279 +msgid "Producer Keywords" +msgstr "Producent nyckelord" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "Information nyckelord för producent." + +#: src/properties.cpp:1280 +msgid "Production Aperture Width" +msgstr "Slutarbredd för produktion" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "Slutarbredd för produktion i bildpunkter" + +#: src/properties.cpp:1281 +msgid "Production Aperture Height" +msgstr "Slutarhöjd för produktion" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "Slutarhöjd för produktion i bildpunkter" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "Produktionsdesigner" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "Information om produktionsdesignern." + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "Produktionsstudio" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "Information om produktionsstudion." + +#: src/properties.cpp:1284 +msgid "Product" +msgstr "Produkt" + +#: src/properties.cpp:1284 +msgid "Product." +msgstr "Produkt." + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "Ã…ldergräns" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "Ã…ldersgräns." + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "Ã…ldersgräns satt" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "Ã…ldersgränscirkeln krävd för att visa videon." + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "Ã…ldersgräns, egentligen 7 eller 8 (av 10)." + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "Skivbolagsnamn" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "Skivbolagsnamn eller namnet pÃ¥ organisationen som spelat in videon." + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "Skivbolags-URL" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "Skivbolags-URL." + +#: src/properties.cpp:1291 +msgid "Recording Copyright" +msgstr "Upphovsrätt pÃ¥ inspelningen" + +#: src/properties.cpp:1291 +msgid "Recording Copyright." +msgstr "Upphovsrätt pÃ¥ inspelningen." + +#: src/properties.cpp:1292 +msgid "Requirements" +msgstr "Krav" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "Information om kraven." + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" +"Enhet använd för XResolution och YResolution. Värdet är ett av: 2 = tum, 3 = " +"centimeter." + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "Rippad av" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "Rippad av, d.v.s. namn pÃ¥ personen eller organisation." + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "Indikerar riktning pÃ¥ mättnadsbearbetningen kameran lagt pÃ¥." + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "Sekundär genre" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "Namnet pÃ¥ sekundär genre.." + +#: src/properties.cpp:1297 +msgid "Selection Time" +msgstr "Markeringstid" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "Tidsvärdet pÃ¥ starttiden för aktuell markering." + +#: src/properties.cpp:1298 +msgid "Selection Duration" +msgstr "Markeringslängd" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "Längden pÃ¥ markerat val i filmtidsenheter." + +#: src/properties.cpp:1299 +msgid "Send Duration" +msgstr "Sändlängd" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" +"Anger tiden det tar att sända filen i enhet 100 nanosekunder. Värdet bör " +"inkludera längden pÃ¥ sista paketet i innehÃ¥llet." + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "Programmet som användes för att generera / skapa videodata." + +#: src/properties.cpp:1303 +msgid "Software Version" +msgstr "Programversion" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "Versionen av programmet." + +#: src/properties.cpp:1304 +msgid "Song Writer" +msgstr "LÃ¥tskrivare" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "Namnet pÃ¥ lÃ¥tskrivaren." + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "Nyckelord för lÃ¥tskrivare" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords." +msgstr "Nyckelord för lÃ¥tskrivare." + +#: src/properties.cpp:1307 +msgid "Source Credits" +msgstr "Tack" + +#: src/properties.cpp:1307 +msgid "Source Credits." +msgstr "Tack." + +#: src/properties.cpp:1308 +msgid "Source Form" +msgstr "Källform" + +#: src/properties.cpp:1308 +msgid "Source Form." +msgstr "Källform." + +#: src/properties.cpp:1309 +msgid "Source Image Height" +msgstr "Höjd pÃ¥ källbild" + +#: src/properties.cpp:1310 +msgid "Source Image Width" +msgstr "Bredd pÃ¥ källbild" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "Videobredd i bildpunkter" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "Medverkande" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "Medverkande, namn pÃ¥ kända personer i videon." + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "Starttidskod" + +#: src/properties.cpp:1313 +msgid "Statistics" +msgstr "Statistik" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "Statistik." + +#: src/properties.cpp:1314 +msgid "Stream Count" +msgstr "Strömantal" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "Totala antalet strömmar" + +#: src/properties.cpp:1315 +msgid "Stream Name" +msgstr "Strömnamn" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "Beskrivning av strömnamnet, exempelvis FUJIFILM AVI STREAM 0100" + +#: src/properties.cpp:1316 +msgid "Stream Quality" +msgstr "Strömkvalitet" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "Allmän strömkvalitet" + +#: src/properties.cpp:1317 +msgid "Stream Sample Rate" +msgstr "Strömsamplingsfrekvens" + +#: src/properties.cpp:1318 +msgid "Stream Sample Count" +msgstr "Strömmens samplingsantal" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "Strömmens samplingsstorlek" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "Allmän strömsamplingsstorlek" + +#: src/properties.cpp:1320 +msgid "Stream Type" +msgstr "Strömtyp" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "Beskriver strömtypen, exempelvis - video, ljud eller undertexter" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "Undertextkodek" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "Strömkodek för undertexter, för allmän användning" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "Avkodningsinformation om undertextkodek" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" +"InnehÃ¥ller information om undertextkodeken avkodning, d.v.s. aktiverad/" +"inaktiverad" + +#: src/properties.cpp:1323 +msgid "Subtitles Codec Information" +msgstr "Information om undertextkodek" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "InnehÃ¥ller ytterligare information om undertexter." + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "Hämtnings-URL för undertextkodek" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "Hämtnings-URL för videoundertextkodek." + +#: src/properties.cpp:1325 +msgid "Subtitle Codec Settings" +msgstr "Inställningar för undertextkodek" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "UndertextspÃ¥r aktiverat som standard" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "UndertextspÃ¥r aktiverat som standard, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "UndertextspÃ¥r aktiverat" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "Status pÃ¥ undertextspÃ¥r, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1328 +msgid "Subtitle" +msgstr "Undertext" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "Undertext för videon." + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords" +msgstr "Nyckelord för undertext" + +#: src/properties.cpp:1329 +msgid "Subtitle Keywords." +msgstr "Nyckelord för undertext." + +#: src/properties.cpp:1330 +msgid "Subtitles Language" +msgstr "UndertextsprÃ¥k" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "SprÃ¥ket pÃ¥ undertexterna." + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "Tvingat undertextspÃ¥r" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "Tvingat undertextspÃ¥r, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "UndertextspÃ¥r-lacing" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "UndertextspÃ¥r-lacing, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1333 +msgid "Subject. " +msgstr "Subjekt. " + +#: src/properties.cpp:1334 +msgid "TapeName." +msgstr "Bandnamn." + +#: src/properties.cpp:1335 +msgid "Tag Default Setting" +msgstr "Standardtagginställning" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "Om tagg är aktiverat som standard är värdet ja, annars nej " + +#: src/properties.cpp:1336 +msgid "Tag Language" +msgstr "TaggsprÃ¥k" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "Det sprÃ¥k som använts för att definiera taggar" + +#: src/properties.cpp:1337 +msgid "Tag Name" +msgstr "Taggnamn" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "Taggar kunde användas till att definiera flera titlar för ett segment." + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "Taggsträng" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "Information i taggar" + +#: src/properties.cpp:1339 +msgid "Target Type" +msgstr "MÃ¥ltyp" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" +"Sträng som beskriver den logiska nivÃ¥n pÃ¥ objektet taggen hänvisar till." + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "Tekniker" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "Tekniker, i vanliga fall namnet pÃ¥ en person." + +#: src/properties.cpp:1341 +msgid "Thumbnail Height" +msgstr "Miniatyrbildhöjd" + +#: src/properties.cpp:1341 +msgid "Preview Image Thumbnail Height." +msgstr "Förhandsvisningshöjd pÃ¥ miniatyrbild." + +#: src/properties.cpp:1342 +msgid "Preview Image Thumbnail Length." +msgstr "Förhandsvisningslängd pÃ¥ miniatyrbild." + +#: src/properties.cpp:1343 +msgid "Thumbnail Width" +msgstr "Miniatyrbildsbredd" + +#: src/properties.cpp:1343 +msgid "Preview Image Thumbnail Width." +msgstr "Förhandsvisningsbredd pÃ¥ miniatyrbild." + +#: src/properties.cpp:1344 +msgid "Timecode Scale" +msgstr "Tidkodsskala" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" +"Multipliceringsfaktor som hjälper till vid beräkning av en speciell tidskod" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "Time Offset" +msgstr "Tidsförskjutning" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" +"Anger presentationstidsförskjutningen för strömmen i enheter om 100 " +"nanosekunder. Värdet kommer att vara lika som sändningstiden för det första " +"inflätade paketet i dataavsnittet." + +#: src/properties.cpp:1346 +msgid "Time Scale" +msgstr "Tidsskala" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" +"Ett tidsvärde som indikerar tidsskalan för denna film - det vill säga " +"antalet tidsenheter som passerar per sekund i dess tidskoordinatsystem. Ett " +"tidskoordinatsystem som mäter tid i sextiondel av en sekund har till exempel " +"en tidsskala pÃ¥ 60." + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" +"InnehÃ¥ller ett generellt namn för SEGMENTET, exempelvis â€Sagan om ringen - " +"de tvÃ¥ tornen†- men taggar kan användas till att definiera titlar för ett " +"segment." + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "Inställningar för toningseffekter tillämpade." + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "Antal bildrutor" + +#: src/properties.cpp:1352 +msgid "Number Of Streams" +msgstr "Antal strömmar" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "Antala strömmar i en video, exempelvis video, ljud eller undertexter" + +#: src/properties.cpp:1353 +msgid "Track" +msgstr "SpÃ¥r" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "Information om spÃ¥ret." + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "VideospÃ¥r skapat" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" +"Ett 32-bitars heltal som indikerar (i sekunder sedan midnatt, 1:a januari " +"1904) när spÃ¥rhuvudet skapades." + +#: src/properties.cpp:1355 +msgid "Video Track Duration" +msgstr "VideospÃ¥rets längd" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" +"Ett tidsvärde som indikerar längden pÃ¥ detta spÃ¥r (i filmens " +"tidskoordinatsystem)." + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "VideospÃ¥r tvingat" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "VideospÃ¥r tvingad, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "Track ID" +msgstr "SpÃ¥r-ID" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" +"Ett 32-bitars heltal som unikt identifierar spÃ¥ret. Kan inte använda värdet " +"0." + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "Track Header Version" +msgstr "SpÃ¥rhuvudversion" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "En 1-bitars specifikation av version för detta spÃ¥rhuvud" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "VideospÃ¥r-lacing" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "VideospÃ¥r-lacing, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "Track Language" +msgstr "SpÃ¥rsprÃ¥k" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "SprÃ¥ket vilket en specifik ström är inspelad i." + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "VideospÃ¥rlager" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" +"Ett 16-bitars heltal som indikerar detta spÃ¥rs spatiala prioritet i dess " +"film. QuickTime MovieToolbox använder värdet för att bestämma hur spÃ¥r " +"överlagrar varandra. SpÃ¥r med lägre lagervärden visas före spÃ¥r med höge " +"lagervärden." + +#: src/properties.cpp:1364 +msgid "Video Track Modify Date" +msgstr "Ändringsdatum för videospÃ¥r" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" +"Ett 32-bitars heltal som indikerar (i sekunder sedan midnatt 1:a januari " +"1904) när spÃ¥rhuvudet ändrades senast." + +#: src/properties.cpp:1365 +msgid "Track Name" +msgstr "SpÃ¥rnamn" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "SpÃ¥rnamn kan användas för att definiera titlar för ett segment." + +#: src/properties.cpp:1366 +msgid "Track Number." +msgstr "SpÃ¥rnummer." + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "SpÃ¥rvolym" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" +"Ett 16-bitars fixpunktstal som specificerar hur högt ljudspÃ¥ret ska spelas " +"upp. Ett värde pÃ¥ 1.0 indikerar full volym." + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "Kapitel översättningskodek" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" +"Kapitel översättningskodekinformation. Kan användas i Matroska fil-typer." + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown Information" +msgstr "Okänd information" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "Okända/oregistrerade metadatataggar och deras värden." + +#: src/properties.cpp:1371 +msgid "Video URL" +msgstr "Video-URL" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" +"En C-sträng som specificerar en URL. Det kan finnas ytterligare data i C-" +"strängen." + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "Video-URN" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" +"En C-sträng som specificerar en URN. Det kan finnas ytterligare data efter C-" +"strängen." + +#: src/properties.cpp:1373 +msgid "Vari Program" +msgstr "Variprogram" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "Programinställningar som används för att generera / skapa videodata." + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "Vegas version major" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "Vegas version major." + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "Vegas version minor" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "Vegas version minor." + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "Tillverkare" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "Utvecklaren för kompressorn som genererar den komprimerade data." + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "Vendor ID" +msgstr "Tillverkar-ID" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" +"Ett 32-bitars heltal som anger utvecklaren för komprimeraren vilken " +"genererade den komprimerade datan. Fältet innehÃ¥ller ofta â€appl†till för " +"att visa Apple Computer, Inc." + +#: src/properties.cpp:1378 +msgid "Video Quality" +msgstr "Videokvalitet" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "Videoströmkvalitet" + +#: src/properties.cpp:1379 +msgid "Video Sample Size" +msgstr "Videosamplingsstorlek" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "Samplingsstorlek för videoström" + +#: src/properties.cpp:1380 +msgid "Video Scan Type" +msgstr "Videoskanningstyp" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "Videoskanningstyp, kan vara progressiv eller flätad" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "Vattenmärke-URL" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "En C-sträng som specificerar en vattenmärke-URL." + +#: src/properties.cpp:1384 +msgid "White Balance Fine Tune." +msgstr "Finjustering av vitbalans." + +#: src/properties.cpp:1385 +msgid "Video Width" +msgstr "Videobredd" + +#: src/properties.cpp:1386 +msgid "Window Location" +msgstr "Fönsterplats" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "Information om fönsterplatsen." + +#: src/properties.cpp:1388 +msgid "Written By" +msgstr "Skriven av" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "Skriven av, d.v.s. namnet pÃ¥ en person eller organisation." + +#: src/properties.cpp:1389 +msgid "Writing App" +msgstr "Skapar program" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" +"InnehÃ¥ller namnet pÃ¥ programmet som används för att skapa filen (t.ex. " +"â€mkvmerge 0.8.1â€)" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "Horisontal upplösning i bildpunkter per enhet." + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "Ã…r" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "Ã…r dÃ¥ videon skapades." + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "Vertikal upplösning i bildpunkter per enhet." + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "Genomsnittliga byte per sekund" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "Genomsnittliga byte per sekund funna i ljudström" + +#: src/properties.cpp:1398 +msgid "Balance" +msgstr "Balans" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "Vänster-högerbalans för ljudet" + +#: src/properties.cpp:1399 +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bitar per sampling/bithastighet" + +#: src/properties.cpp:1399 +msgid "Bits per test sample" +msgstr "Bitar per testsampling" + +#: src/properties.cpp:1401 +msgid "Audio Codec" +msgstr "Ljudkodek" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "Kodek som används för kodning/avkodning" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "Ljudkodek avkodningsinformation" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "Information om ljudkodeken decode all, d.v.s. aktiverade/inaktiverade" + +#: src/properties.cpp:1403 +msgid "Audio Codec Description" +msgstr "Ljudkodekbeskrivning" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "Hämtnings-URL för ljudkodek" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "Hämtnings-URL för ljudkodek." + +#: src/properties.cpp:1405 +msgid "Audio Codec Information" +msgstr "Ljudkodekinformation" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" +"Information kodeken behöver innan avkodning kan ske. Ett exempel är paketen " +"Vorbis-initiering för Vorbis-ljud." + +#: src/properties.cpp:1406 +msgid "Audio Codec Settings" +msgstr "Ljudkodekinställningar" + +#: src/properties.cpp:1408 +msgid "Audio Default Duration" +msgstr "Standardlängd för ljud" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "Antalet mikrosekunder en ljudchunk spelar." + +#: src/properties.cpp:1409 +msgid "Audio Default Stream" +msgstr "Standardström för ljud" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "Ljudström att spela upp som standard." + +#: src/properties.cpp:1410 +msgid "Audio Track Default On" +msgstr "LjudspÃ¥r standard pÃ¥" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "LjudspÃ¥r standard pÃ¥, d.v.s. inaktiverad/inaktiverad" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "LjudspÃ¥r aktiverat" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "Status för ljudspÃ¥r, d.v.s. aktiverad/inaktiverad" + +#: src/properties.cpp:1412 +msgid "Audio Format" +msgstr "Ljudformat" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "En fyra tecken lÃ¥ng kod som identifierar ljudformatet." + +#: src/properties.cpp:1423 +msgid "Output Audio Sample Rate" +msgstr "Samplingsfrekvens för ljudutmatning" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"Samplingsfrekvens pÃ¥ ljudutmatning. Valfritt värde men vanligtvis 32000, " +"41100 eller 48000." + +#: src/properties.cpp:1424 +msgid "Audio Sample Count" +msgstr "Ljudsamplingsantal" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "Sampling tagen för att analysera ljudström" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title" +msgstr "Namn pÃ¥ ljudschema" + +#: src/properties.cpp:1427 +msgid "Sound Scheme Title." +msgstr "Namn pÃ¥ ljudschema." + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "LjudspÃ¥r skapat" + +#: src/properties.cpp:1430 +msgid "Audio Track Duration" +msgstr "LjudspÃ¥rslängd" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced" +msgstr "LjudspÃ¥r tvingat" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "LjudspÃ¥r tvingat, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing" +msgstr "VideospÃ¥r-lacing" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "VideospÃ¥r-lacing, d.v.s. aktiverat/inaktiverat" + +#: src/properties.cpp:1436 +msgid "Audio Track Layer" +msgstr "LjudspÃ¥rslager" + +#: src/properties.cpp:1439 +msgid "Audio Track Modify Date" +msgstr "Ändringsdatum för ljudspÃ¥r" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "Ljud-URL" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "Ljud-URN" + +#: src/properties.cpp:1449 +msgid "The nature or genre of the resource." +msgstr "Namnet pÃ¥ genren eller resursens natur." + +#: src/properties.cpp:1450 +msgid "Date Modified" +msgstr "Datum ändrad" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "Datum dÃ¥ resursen ändrades." + +#: src/properties.cpp:1451 +msgid "A language of the resource." +msgstr "Ett sprÃ¥k för resursen." + +#: src/properties.cpp:1452 +msgid "License" +msgstr "Licens" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" +"Ett juridiskt dokument som ger officiell tillÃ¥telse att göra nÃ¥got med " +"resursen." + +#: src/properties.cpp:1453 +msgid "Rights Holder" +msgstr "Rättighetsägare" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" +"En person eller organisation som äger eller hanterar rättigheter för " +"resursen." + +#: src/properties.cpp:1454 +msgid "Access Rights" +msgstr "Ã…tkomsträttigheter" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" +"Information om vilken som kan komma Ã¥t resursen eller en indikation pÃ¥ dess " +"säkerhetsstatus." + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "Källhänvisning" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "En källhänvisning för resursen." + +#: src/properties.cpp:1456 +msgid "References" +msgstr "Referenser" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" +"En relaterad resurs som refereras, citeras eller annars pekas ut av den " +"beskrivna resursen." + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "*Huvudstruktur* innehÃ¥llandes Darwin Core platsbaserad information." + +#: src/properties.cpp:1468 +msgid "Record" +msgstr "Post" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "*Huvudstruktur* innehÃ¥llandes postbaserad information." + +#: src/properties.cpp:1472 +msgid "Institution ID" +msgstr "Institutions-ID" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" +"En identifierare för institutionen som förvaltar objekt(en) eller information" +"(en) inspelningen hänvisar till." + +#: src/properties.cpp:1475 +msgid "Collection ID" +msgstr "Samlings-ID" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" +"Identifierare för samlingen eller datamängden frÃ¥n vilken inspelningen " +"härstammar ifrÃ¥n. För fysiska prover är det rekommenderade sättet att " +"använda identifieraren i ett samlingsregister som Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." + +#: src/properties.cpp:1478 +msgid "Institution Code" +msgstr "Institutionskod" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" +"Namnet (eller akronymen) använd av institutionen som har vÃ¥rdnaden av objekt" +"(en) eller information(en) inspelningen hänvisar till." + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "Datamängd-ID" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" +"Identifierare för datamängden. Kan vara en global unik identifierare eller " +"en identifierare specifik för en samling eller institution." + +#: src/properties.cpp:1484 +msgid "Collection Code" +msgstr "Samlingskod" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" +"Namnet, akronymen, koden eller initialismen som identifierar samlingen eller " +"datamängden frÃ¥n vilken inspelningen härstammar." + +#: src/properties.cpp:1487 +msgid "Dataset Name" +msgstr "Datamängdsnamn" + +#: src/properties.cpp:1488 +msgid "The name identifying the data set from which the record was derived." +msgstr "" +"Namnet som identifierar det datamängden frÃ¥n vilket inspelningen härrör." + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "Kod för ägarinstitution" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" +"Namnet (eller akronymen) använd av institutionen som äger objekt(et) eller " +"information(en) inspelningen hänvisar till." + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "Inspelningens grund" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" +"Specifika omrÃ¥det för inspelningen - en undertyp av typen. Rekommenderad " +"användning är att använda en kontrollerad vokabulär som Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." + +#: src/properties.cpp:1496 +msgid "Information Withheld" +msgstr "Information hemlighÃ¥llen" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" +"Ytterligare information som finns men inte har delats i den givna posten." + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "Datageneraliseringar" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" +"Ã…tgärder för att göra den delade datan mindre specifik eller komplett än i " +"dess ursprungliga form. Implicerar att alternativ data av högre kvalitet kan " +"finnas tillgänglig vid begäran." + +#: src/properties.cpp:1502 +msgid "Dynamic Properties" +msgstr "Dynamiska egenskaper" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" +"En lista (konkatenerad och separerad) över ytterligare mätningar, fakta, " +"karakteristik eller försäkran om posten. Avsedd för att strukturerat " +"innehÃ¥ll som nyckel-värdepar." + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "Förekomst" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "*Huvudstruktur* innehÃ¥llandes förekomstbaserad information." + +#: src/properties.cpp:1511 +msgid "Occurrence ID" +msgstr "Händelse-ID" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" +"En identifierare för förekomsten (i motsats till en specifik digital post av " +"förekomsten). I avsaknad av en beständig global unik identifierare, skapa en " +"frÃ¥n kombinationen av identifierare i posten som mest kan göra förekomst-ID " +"globalt unik." + +#: src/properties.cpp:1514 +msgid "Catalog Number" +msgstr "Katalognummer" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" +"En identifierare (helst unik) för posten i datamängden eller -samlingen." + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "Detaljer om förekomst" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "FörÃ¥ldrad. Detaljer om förekomsten." + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "Förekomst-kommentarer" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "Kommentarer eller anteckningar om förekomsten." + +#: src/properties.cpp:1523 +msgid "Record Number" +msgstr "Inspelningsnummer" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" +"En identifierare för förekomsten dÃ¥ den spelades in. Används ofta som en " +"länk mellan fältanteckningar och en förekomstpost som en individs " +"samlingsnummer." + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "Inspelad av" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" +"En lista (konkatenerad och separerad) över namn pÃ¥ personer, grupper eller " +"organisationer ansvariga för att spela in originalförekomsten. Primär " +"samlare eller observatör, speciellt en som lägger till en personlig " +"identifierare (recordNumber), ska listas först." + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "Individ-ID" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" +"FörÃ¥ldrad. En identifierare för en individ eller namngiven grupp av " +"individuella organismer representerade i förekomsten. Avsedd att underlätta " +"Ã¥tersampling av samma individ eller grupp i övervakningssyften. Kan vara en " +"global unik identifierare eller en identifierare specifik för en datamängd." + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "Individantal" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "Antalet individer närvarande vid förekomsten." + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "Organismkvantitet" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "En siffra eller uppräkningsvärde för antalet organismer." + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "Organism antalstyp" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "Typ av kvantifieringssystem som används för antalet organismer." + +#: src/properties.cpp:1541 +msgid "Sex" +msgstr "Kön" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"Kön pÃ¥ individ(erna) i förekomsten. Rekommenderad användning är att använda " +"en kontrollerad vokabulär." + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "LivsnivÃ¥" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" +"Ã…ldersgrupp eller livsnivÃ¥ för individ(erna) dÃ¥ förekomsten spelades in. " +"Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1547 +msgid "Reproductive Condition" +msgstr "Reproduktivt tillstÃ¥nd" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" +"Reproduktivt tillstÃ¥nd pÃ¥ individ(erna) i förekomsten. Rekommenderad " +"användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "Beteende" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" +"En beskrivning av subjektets beteende i förekomsten dÃ¥ den spelades in. " +"Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "EtableringstillvägagÃ¥ng" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" +"Processen för hur individ(erna) i förekomsten etablerade sig pÃ¥ platsen. " +"Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "Status pÃ¥ förekomst" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"Ett uttalande om närvaro eller frÃ¥nvaro av ett taxon pÃ¥ en plats. " +"Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1559 +msgid "Preparations" +msgstr "Förberedelser" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" +"En lista (konkatenerad eller separerad) över förberedelser och " +"bevaringsmetoder för en individ." + +#: src/properties.cpp:1562 +msgid "Disposition" +msgstr "Disposition" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" +"Nuvarande tillstÃ¥nd pÃ¥ en individ utifrÃ¥n samlingen identifierade i " +"collectionCode eller collectionID. Rekommenderad användning är att använda " +"en kontrollerad vokabulär." + +#: src/properties.cpp:1565 +msgid "Other Catalog Numbers" +msgstr "Andra katalognummer" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" +"En lista (konkatenerad och separerad) över tidigare eller alternativa " +"kvalificerade katalognummer eller andra mänskligt läsbara identifierare för " +"samma förekomst i alla datamängder eller -samlingar." + +#: src/properties.cpp:1568 src/properties.cpp:1607 +msgid "Previous Identifications" +msgstr "Tidigare identifieringar" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" +"FörÃ¥ldrad. En lista (konkatenerad och separerad) över tidigare tilldelningar " +"av namn i förekomsten." + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "Associerad media" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" +"En lista (konkatenerad och separerad) över identifierare (publicering, " +"globala unika identifierare, URI) för media associerade med förekomsten." + +#: src/properties.cpp:1574 +msgid "Associated References" +msgstr "Associerade referenser" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" +"En lista (konkatenerad och separerad) över identifierare (publikationer, " +"källreferenser, globala unika identifierare, URI) över litteratur associerad " +"med förekomsten." + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "Associerade förekomster" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" +"FörÃ¥ldrad. En lista (konkatenerad och separerad) över identifierare över " +"andra förekomstsposter och deras associationer till denna förekomst." + +#: src/properties.cpp:1580 +msgid "Associated Sequences" +msgstr "Associerade sekvenser" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" +"En lista (konkatenerad och separerad) över identifierare (publikationer, " +"globala unika identifierare, URI) över genetisk sekvensinformation " +"associerade med förekomsten." + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "Associerad taxa" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" +"En lista (konkatenerad och separerad) över identifierare eller namn pÃ¥ taxa " +"och deras associationer med förekomsten." + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "Organism" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "*Huvudstruktur* innehÃ¥llandes organismbaserad information." + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "Organism-ID" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" +"En identifierare för organisminstansen (i motsats till en specifik digital " +"post av organismen). Kan vara en global unik identifierare eller en " +"identifierare specifik för datamängden." + +#: src/properties.cpp:1595 +msgid "Organism Name" +msgstr "Organismnamn" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "Ett namn eller en etikett tilldelad till en organisminstans." + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "OrganismomfÃ¥ng" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" +"En beskrivning av organisminstansen. Kan användas för att indikera huruvida " +"organisminstansen representerar en diskret organism eller om den " +"representerar en speciellt typ av aggregation. Rekommenderad användning är " +"att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "Organismassocierade förekomster" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" +"En lista (konkatenerad och separerad med ett vertikalt â€| â€) över " +"identifierare över andra förekomstsposter och deras associationer till denna " +"förekomst." + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "Associerade organismer" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" +"En lista (konkatenerad och separerad med â€|â€) över identifierare över andra " +"organismer och deras associationer till denna organism." + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" +"En lista (konkatenerad and separerad med 'â€|†) över tidigare tilldelning av " +"namn till organismen." + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "Organismanmärkningar" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "Kommentarer eller anteckningar om organisminstansen." + +#: src/properties.cpp:1615 +msgid "Material Sample" +msgstr "Materialsampling" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "*Huvudstruktur* innehÃ¥llandes materialsamplingsbaserad information." + +#: src/properties.cpp:1618 +msgid "Living Specimen" +msgstr "Levande exemplar" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes information baserad pÃ¥ levande exemplar. Ett " +"levande exemplar." + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "Bevarat exemplar" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes information baserad pÃ¥ bevarat exemplar. Ett " +"exemplar som bevarats." + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "Fossilt exemplar" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes information baserad pÃ¥ fossilt exemplar. Ett " +"bevarat exemplar som är en fossil." + +#: src/properties.cpp:1628 +msgid "Material Sample ID" +msgstr "Materialsamplings-ID" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" +"En identifierare för MaterialSample (som motsats till en specifik digital " +"post av materialsampling). I frÃ¥nvaron av en beständig global unik " +"identifierare, skapa en frÃ¥n en kombination av identifierare i posten som " +"närmast gör materialSampleID globalt unik." + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "*Huvudstruktur* innehÃ¥llandes händelsebaserad information." + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "Mänsklig observation" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes information baserad pÃ¥ mänsklig observation." + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "Maskinell obeservation" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes information baserad pÃ¥ maskinell observation." + +#: src/properties.cpp:1643 +msgid "Event ID" +msgstr "Händelse-ID" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" +"En identifierare för mängden information associerad med en händelse (nÃ¥got " +"som förekommer med plats och tid). Kan vara en global unik identifierare " +"eller en identifierare specifik för datamängden." + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "Överordnat händelse-ID" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" +"En identifierare för den bredare händelse som grupperar den här, och " +"potentiellt andra händelser." + +#: src/properties.cpp:1649 +msgid "Event Date" +msgstr "Händelsedatum" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" +"Datum-tid eller intervallet under vilket en händelser inträffade. För " +"förekomster är detta datum-tid när händelsen spelades in. Passar in för tid " +"i en geologisk kontext. Rekommenderad användning är att använda " +"kodningsscheman som ISO 8601:2004(E)." + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "Tidigaste händelsedatum" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"FörÃ¥ldrad. (Underordnad Xmp.dwc.Event) Datum-tid eller intervallet under " +"vilket en händelse inträffade. För förekomster är detta datum-tid när " +"händelsen spelades in. Passar inte för tid i en geologisk kontext. " +"Rekommenderat användning är att använda kodningsscheman som ISO 8601:2004(E)." + +#: src/properties.cpp:1655 +msgid "Event Latest Date" +msgstr "Senare händelsedatum" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"FörÃ¥ldrad. (Underordnad Xmp.dwc.Event) Datum-tid eller intervallet under " +"vilket en händelse inträffade. För förekomster är detta datum-tid när " +"händelsen spelades in. Passar inte för tid i en geologisk kontext. " +"Rekommenderat användning är att använda kodningsscheman som ISO 8601:2004(E)." + +#: src/properties.cpp:1658 +msgid "Event Time" +msgstr "Händelsetid" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"Tid eller intervall under vilken en händelser inträffat. Rekommenderad " +"användning är att använda ett kodningsschema som ISO 8601:2004(E)." + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "Startdag pÃ¥ Ã¥ret" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" +"Tidigaste dagnummer dÃ¥ vilken händelsen inträffade (1 för januari, 365 för " +"31:a december förutom skottÃ¥r dÃ¥ det är 366)." + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "Sistadag pÃ¥ Ã¥ret" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" +"Det sista dagnumret pÃ¥ Ã¥ret dÃ¥ vilken händelsen inträffade (1 för januari, " +"365 för 31:a december utom skottÃ¥r dÃ¥ det är 366)." + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "Fyrsiffriga Ã¥ret för när händelsen inträffade enligt vÃ¥r tideräkning." + +#: src/properties.cpp:1670 +msgid "Month" +msgstr "MÃ¥nad" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "MÃ¥nadsnummer dÃ¥ händelsen inträffad." + +#: src/properties.cpp:1673 +msgid "Day" +msgstr "Dag" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "MÃ¥nadsdag i heltal dÃ¥ händelsen inträffade." + +#: src/properties.cpp:1676 +msgid "Verbatim Event Date" +msgstr "Informativt händelsedatum" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" +"Bokstavliga originalrepresentationen av datum och tidsinformation för en " +"händelse." + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "Miljö" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" +"En kategori eller beskrivning av miljön i vilken en händelse inträffade." + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "Samplingsprotokoll" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" +"Namnet pÃ¥, referensen till, eller beskrivningen av metoden eller protokollet " +"som användes vid en händelse." + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "Samplingsförsök" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "Mängden av arbetsinsats som gick Ã¥t under en händelse." + +#: src/properties.cpp:1688 +msgid "Sampling Size Value" +msgstr "Värde pÃ¥ samplingsstorlek" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" +"Ett numeriskt värde för mätningen av storleken (tid, längd, omrÃ¥de eller " +"volym) för en sampling i en samplingshändelse." + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "Enhet för samplingsstorlek" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" +"Enheten för mätningen av storlek (tid, längd, omrÃ¥de eller volym) för en " +"sampling i en samplingshändelse." + +#: src/properties.cpp:1694 +msgid "Field Number" +msgstr "Fältnummer" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" +"En identifierare given till händelsen i fältet. Används ofta som en länk " +"mellan fältanteckningar och händelse." + +#: src/properties.cpp:1697 +msgid "Field Notes" +msgstr "Fältanteckningar" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" +"En (a) en indikator pÃ¥ existensen av , (b) en referens till (publikation, " +"URI) eller (c) texten för anteckningar i fältet om händelsen." + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "Händelseanmärkningar" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "Kommentarer eller anteckningar om händelsen." + +#: src/properties.cpp:1705 +msgid "Location Class" +msgstr "Platsklass" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" +"FörÃ¥ldrad. Använd Xmp.dcterms.Location istället. *Huvudstruktur* " +"innehÃ¥llandes platsbaserad information." + +#: src/properties.cpp:1709 +msgid "Location ID" +msgstr "Plats-ID" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" +"En identifierare för mängden av platsinformation (data associerad med " +"platsen). Kan vara en global unik identifierare eller en identifierare " +"specifik för datamängden." + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "Högre geografi-ID" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" +"En identifierare för det geografiska omrÃ¥det är platsen var. Rekommenderad " +"användning är att använda en beständig identifierare frÃ¥n en kontrollerad " +"vokabulär som Getty uppslagsverk över geografiska namn." + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "Högre geografi" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" +"En lista (konkatenerad och separerad) över geografiska namn mindre specifik " +"än informationen infÃ¥ngad i platstermen." + +#: src/properties.cpp:1718 +msgid "Continent" +msgstr "Kontinent" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" +"Namnet pÃ¥ kontinenten där platsen finns. Rekommenderad användning är att " +"använda en kontrollerad vokabulär som Getty uppslagsverk över geografiska " +"namn eller ISO 3166-kontinentkoden." + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "Vattenmärke" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" +"Namnet pÃ¥ vattenmärket är platsen finns. Rekommenderad användning är att " +"använda en kontrollerad vokabulär som Getty uppslagsverk över geografiska " +"namn." + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "Ögrupp" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" +"Namnet pÃ¥ ögruppen där platsen finns. Rekommenderad användning är att " +"använda en kontrollerad vokabulär som Getty uppslagsverk över geografiska " +"namn." + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "Ö" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" +"Namnet pÃ¥ ön som platsen finns pÃ¥. Rekommenderad användning är att använda " +"en kontrollerad vokabulär som Getty uppslagsverk över geografiska namn." + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" +"Namnet pÃ¥ landet eller större administrativ enhet där platsen finns. " +"Rekommenderad användning är att använda en kontrollerad vokabulär som Getty " +"uppslagsverk över geografiska namn." + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" +"Standardkoden för landet där platsen finns. Rekommenderad användning är att " +"använda landskoderna ISO 3166-1-alpha-2." + +#: src/properties.cpp:1736 +msgid "State Province" +msgstr "Stat region" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" +"Namnet pÃ¥ nästa mindre administrativ omrÃ¥de än land (stat, provins, kanton, " +"avdelning, region, etc.) där platsen finns." + +#: src/properties.cpp:1739 +msgid "County" +msgstr "Län" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" +"Hela oavkortade namnet för nästa mindre administrativa region än " +"stateProvince (land, län, avdelning, etc.) där platsen förekomster." + +#: src/properties.cpp:1742 +msgid "Municipality" +msgstr "Kommun" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" +"Hela oavkortade namnet för nästa mindre administrativa omrÃ¥de än län (stad, " +"kommun etc.) där platsen förekommer. Använd inte denna term för näraliggande " +"platser som inte innehÃ¥ller platsen." + +#: src/properties.cpp:1745 +msgid "Locality" +msgstr "Lokalitet" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" +"Den specifika beskrivningen av platsen. Mindre specifik geografiskt " +"information kan ges i andra geografiska termer (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). Denna term kan innehÃ¥lla modifierad information jämfört med " +"originalet för att rätta fel eller standardisera beskrivningen." + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "Informativ plats" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "Ursprungliga textbeskrivningen för platsen." + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "Informativ höjning" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" +"Originalbeskrivningen för höjningen (altitud, vanligen ovanför havet) för " +"platsen." + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "Minsta höjning i meter" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" +"Den lägsta gränsen för omrÃ¥det av höjning (altitud, vanligtvis höjd över " +"havet) i meter." + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "Högsta höjning i meter" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" +"Högsta gränsen för omrÃ¥det av höjningen (altitud, vanligen ovan havshöjd) i " +"meter." + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "Bokstavligt djup" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "Originalbeskrivningen för djupet under den lokala ytan." + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "Minsta djup i meter" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" +"Det mindre djupet för ett omrÃ¥de av djup under den lokala ytan i meter." + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "Högsta djup i meter" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "Det större djupet för ett djupomrÃ¥de under den lokala ytan i meter." + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "Minsta avstÃ¥nd ovan ytan i meter" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" +"Det mindre avstÃ¥ndet i ett omrÃ¥de för avstÃ¥nd frÃ¥n ett referensyta i " +"vertikal riktning i meter. Använd positiva värden för platser ovan ytan, " +"negativa värden för platser under. Om djupmätningar ges kommer referensytans " +"plats vara given av djupet, annars kommer referensytan vara platsen given av " +"höjningen." + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "Högsta avstÃ¥nd mellan ytan i meter" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" +"Det större avstÃ¥ndet i ett omrÃ¥de av avstÃ¥nd frÃ¥n en referensyta i vertikal " +"riktning i meter. Använd positiva värden för platser ovan ytan, negativa " +"värden för platser under. Om djupmätningar ges kommer referensytans plats " +"vara given av djupet, annars kommer referensytan vara platsen given av " +"höjningen." + +#: src/properties.cpp:1775 +msgid "Location According To" +msgstr "Plats enligt" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" +"Information om källan för denna platsinformation. Kan vara en publikation " +"(ortförteckning), institution eller team av individer." + +#: src/properties.cpp:1778 +msgid "Location Remarks" +msgstr "Platsanmärkningar enligt" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "Kommentarer eller anteckningar om platsen." + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "Utförliga koordinater" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" +"Utförlig original-spatiala koordinaterna för platsen. Koordinatellipsioden, " +"geodetiskt datum eller spatialt referenssystem (SRS) för dessa koordinater " +"bör lagras i verbatimSRS och koordinatsystemen ska lagras i " +"verbatimCoordinateSystem." + +#: src/properties.cpp:1784 +msgid "Verbatim Latitude" +msgstr "Utförlig latitud" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" +"Utförlig original-latitud för platsen. Koordinatellipsioden, geodetiskt " +"datum eller spatialt referenssystem (SRS) för dessa koordinator bör lagras i " +"verbatimSRS och koordinatsystemet bör lagras i verbatimCoordinateSystem." + +#: src/properties.cpp:1787 +msgid "Verbatim Longitude" +msgstr "Utförlig longitud" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" +"Utförlig original-longitud för platsen. Koordinatellipsioden, geodetiskt " +"datum eller spatialt referenssystem (SRS) för dessa koordinator bör lagras i " +"verbatimSRS och koordinatsystemet bör lagras i verbatimCoordinateSystem." + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "Utförligt koordinatsystem" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" +"Spatiala koordinatsystemet för verbatimLatitude och verbatimLongitude eller " +"verbatimCoordinates för platsen. Rekommenderad användning är att använda en " +"kontrollerad vokabulär." + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "Verbatim SRS" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" +"Ellipsiod, geodetiskt datum eller spatialt referenssystem (SRS) varpÃ¥ " +"koordinater givna i verbatimLatitude och verbatimLongitude eller " +"verbatimCoordinates baseras. Rekommenderad användning är att använda EPSG-" +"kod som en kontrollerad vokabulär för att erhÃ¥lla ett SRS om känt. Använd " +"annars en kontrollerad vokabulär för namnet eller koden för gedodektiskt " +"datum om känd. Använd annars en kontrollerad vokabulär för namnet eller " +"koden för ellipsioden om känd. Om ingen av dessa är kända använd värdet " +"â€unknownâ€." + +#: src/properties.cpp:1796 +msgid "Decimal Latitude" +msgstr "Decimal latitud" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" +"Geografisk latitud (i decimal grader använd den spatiala referenssystemet " +"givet i geodetiskt datum) för det geografiska centret för en plats. Positiva " +"värden är norr om ekvatorn, negativa värden är söder om den. Giltiga värden " +"är mellan -90 och 90." + +#: src/properties.cpp:1799 +msgid "Decimal Longitude" +msgstr "Decimal longitud" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" +"Geografisk longitud (i decimal grader använd den spatiala referenssystemet " +"givet i geodetiskt datum) för det geografiska centret för en plats. Positiva " +"värden är öster om Greenwich-meridianen, negativa värden är väster om den. " +"Giltiga värden är mellan -180 och 180." + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "Geodetiskt datum" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" +"Ellipsiod, geodetiskt datum eller spatialt referenssystem (SRS) frÃ¥n var " +"geografiska koordinaterna givna i decimalLatitude och decimalLongitude. " +"Rekommenderad användning är att använda EPSG-koden som en kontrollerad " +"vokabulär för att erhÃ¥lla ett SRS om känt. Använd annars en kontrollerad " +"vokabulär för namnet eller koden för geodetiskt datum om känd. Använd annars " +"en kontrollerad vokabulär för namnet eller koden för ellipsioden om känd. Om " +"ingen av dessa är kända använd värdet â€unknownâ€." + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "Koordinatosäkerhet i meter" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" +"Horisontell distans (i meter) frÃ¥n den givna decimalLatitude och " +"decimalLongitude beskrivande den minsta cirkeln innehÃ¥llande hela platsen. " +"Lämna värdet tomt om osäkerheten är okänd, inte kan beräknas eller inte är " +"tillämpbar (eftersom det inte finns koordinater). Noll är inte ett giltigt " +"värde för denna term." + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "Koordinatprecision" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" +"En decimalrepresentation av precision för koordinaterna givna i " +"decimalLatitude och decimalLongitude." + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "Point Radius Spatial Fit" + +#: src/properties.cpp:1812 +#, fuzzy, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" +"Ratio för omrÃ¥det för punkt-radien (decimalLatitude, decimalLongitude, " +"coordinateUncertaintyInMeters) gentemot den riktiga (original eller mest " +"specificerade) spatiala representation för plats. Giltiga värden är 0, " +"större än eller lika med 1 eller okänd. Värde 1 är en precis matchning eller " +"100% överlappande. Värde 0 bör användas om den givna punkt-radien inte helt " +"innehÃ¥ller originalrepresentationen. pointRadiusSpatialFit är odefinierad " +"(och bör lämnas tom) om originalrepresentationen är en punkt utan osäkerhet " +"och den givna georeferensen inte är samma punkt (utan osäkerhet). Om bÃ¥de " +"originalet och den givna georeferensen är samma punkt är " +"pointRadiusSpatialFit 1." + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "WKT fingeravtryck" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" +"En välkänd text (WKT)-representation för formen (fingeravtryck, geometri) " +"som definierar platsen. En plats kan ha bÃ¥de punkt-radiusrepresentation (se " +"decimalLatitude) och ett fingeravtrycksrepresentation, och de kan skilja sig " +"frÃ¥n varandra." + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "SRS-fingeravtryck" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" +"En välkänd text (WKT)-representation av det spatiala referenssystemet (SRS) " +"för footprintWKT för platsen. Använd inte termen för att beskriva SRS för " +"decimalLatitude och decimalLongitude även om det är samma som för " +"footprintWKT - använd geodeticDatum istället." + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "Spatial fit för fingeravtryck" + +#: src/properties.cpp:1821 +#, fuzzy, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" +"Ratio för omrÃ¥det för fingeravtrycket (footprintWKT) gentemot den riktiga " +"(original eller mest specificerade) spatiala representation för plats. " +"Giltiga värden är 0, större än eller lika med 1 eller okänd. Värde 1 är en " +"precis matchning eller 100% överlappande. Värde 0 bör användas om den givna " +"punkt-radien inte helt innehÃ¥ller originalrepresentationen. " +"footprintSpatialFit är odefinierad (och bör lämnas tom) om " +"originalrepresentationen är en punkt utan osäkerhet och den givna " +"georeferensen inte är samma punkt (utan osäkerhet). Om bÃ¥de originalet och " +"den givna georeferensen är samma punkt är footprintSpatialFit 1." + +#: src/properties.cpp:1823 +msgid "Georeferenced By" +msgstr "Georefererad av" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" +"En lista (konkatenerad eller separerad) över namn pÃ¥ personer, grupper eller " +"organisationer som bestämmer georeferens (spatiala representationen) för " +"platsen." + +#: src/properties.cpp:1826 +msgid "Georeferenced Date" +msgstr "Georefererat datum" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"Datumet för platsen blev georefererad. Rekommenderad användning är att " +"använda ett kodningschema som ISO 8601:2004(E)." + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "Georeferensprotokoll" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" +"En beskrivning eller referens för metoderna som används för att bestämma det " +"spatiala fingeravtrycket, koordinater och osäkerheter." + +#: src/properties.cpp:1832 +msgid "Georeference Sources" +msgstr "Georeferens-källor" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" +"En lista (konkatenerad och separerad) över kartor, ortförteckning och andra " +"resurser som används för georeferenser till platsen, beskrivet specifikt nog " +"för att tillÃ¥ta alla att i framtiden använda samma resurs." + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "Georeferens verifikationstatus" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" +"En kategorisk beskrivning av omfattningen för hur georeferensen har " +"verifierats för att representera den bästa spatiala beskrivningen. " +"Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:1838 +msgid "Georeference Remarks" +msgstr "Georeferens-anmärkningar" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" +"Anteckningar eller kommentarer om den spatiala beskrivningsbestämmelsen, " +"förklarar antaganden gjorda i tillägg i motsats med de formaliserade i " +"metoden refererad till i georeferenceProtocol." + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "Geologisk kontext" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes information baserad pÃ¥ geologisk kontext." + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "Geologisk kontext-ID" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" +"En identifierare för informationsmängden associerad med ett " +"GeologicalContext (platsen inuti en geologisk kontext som en stratigrafi). " +"Kan vara en global unik identifierare eller en identifierare specifik för " +"datamängden." + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "Tidgaste eon eller lägsta eonothem" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"Hela namnet för tidigast möjliga geokronologiska eon eller lägsta " +"kronostratigrafiska eonothem för informella namnet (â€Precambrianâ€) som kan " +"attribueras till stratigrafiska omrÃ¥det frÃ¥n vilken det katalogiserade " +"objektet samlades in." + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "Senaste eon eller högsta eonothem" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"Hela namnet för senaste möjliga geokronologiska eon eller högsta " +"kronostratigrafiska eonothem för informella namnet (â€Precambrianâ€) som kan " +"attribueras till stratigrafiska omrÃ¥det frÃ¥n vilken det katalogiserade " +"objektet samlades in." + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "Tidigaste eon eller högsta Erathem" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för tidigaste möjliga geokronologiska eon eller lägsta " +"kronostratigrafiska erathem som kan attribueras till stratigrafiska omrÃ¥det " +"frÃ¥n vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "Senaste era eller högsta Erathem" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för senast möjliga geokronologiska era eller högsta " +"kronostratigrafiska erathem som kan attribueras till stratigrafiska omrÃ¥det " +"frÃ¥n vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "Tidigaste perioden eller lägsta system" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för tidigaste möjliga geokronologiska eon eller lägsta " +"kronostratigrafiska system som kan attribueras till stratigrafiska omrÃ¥det " +"frÃ¥n vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "Senaste period eller högsta system" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för senaste möjliga geokronologiska period eller lägsta " +"kronostratigrafiska system som kan attribueras till stratigrafiska omrÃ¥det " +"frÃ¥n vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "Tidigast epok eller lägsta serie" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för tidigast möjliga geokronologiska epok eller lägsta " +"chronostratigraphic serie med attribut till stratigrafiska omrÃ¥det frÃ¥n " +"vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "Senaste epok eller högsta serie" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för senast möjliga geokronologiska epok eller högsta " +"chronostratigraphic serie med attribut till stratigrafiska omrÃ¥det frÃ¥n " +"vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "Tidigaste Ã¥lder eller minsta steg" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för tidigast möjliga geokronologiska Ã¥lder eller lägsta " +"chronostratigraphic serie med attribut till stratigrafiska omrÃ¥det frÃ¥n " +"vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "Senaste Ã¥lder eller högsta steg" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" +"Hela namnet för senast möjliga geokronologiska epok eller lägsta " +"chronostratigraphic serie med attribut till stratigrafiska omrÃ¥det frÃ¥n " +"vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "Lägsta biostratigrafiska zon" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"Hela namnet för lägsta möjliga geologiska biostratigrafiska zon frÃ¥n " +"stratigrafiska omrÃ¥det frÃ¥n vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "Högsta biostratigrafiska zon" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" +"Hela namnet för högsta möjliga geologiska biostratigrafiska zon frÃ¥n " +"stratigrafiska omrÃ¥det frÃ¥n vilken det katalogiserade objektet samlades in." + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "Litostratigrafiska termer" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" +"Kombinationen av alla litostratigrafiska namn för stenen frÃ¥n vilken det " +"katalogiserade objektet samlades in." + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "Grupp" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" +"Hela namnet pÃ¥ litostratigrafiska gruppen frÃ¥n vilken det katalogiserade " +"objektet samlades in." + +#: src/properties.cpp:1892 +msgid "Formation" +msgstr "Formering" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" +"Hela namnet pÃ¥ den litostratigrafiska formationen frÃ¥n vilken det " +"katalogiserade objektet samlades in." + +#: src/properties.cpp:1895 +msgid "Member" +msgstr "Medlem" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" +"Hela namnet för den litostratigrafiska medlemmen frÃ¥n vilken det " +"katalogiserade objektet samlades in." + +#: src/properties.cpp:1898 +msgid "Bed" +msgstr "Bädd" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" +"Hela namnet för den litostratigrafiska bädden frÃ¥n vilken det katalogiserade " +"objektet samlades in." + +#: src/properties.cpp:1903 +msgid "Identification" +msgstr "Identifiering" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "*Huvudstruktur* innehÃ¥llandes identifieringsbaserad information." + +#: src/properties.cpp:1907 +msgid "Identification ID" +msgstr "Identifierings-ID" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" +"En identifierare för identifikationen (huvuddelen av informationen " +"associerad med tilldelningen av ett vetenskapligt namn). Kan vara en global " +"unik identifierare eller en identifierare specifik för datamängden." + +#: src/properties.cpp:1910 +msgid "Identified By" +msgstr "Identifierad av" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" +"En lista (konkatenerade eller separerade) över namn pÃ¥ personer, grupper " +"eller organisationer som tilldelat Taxon till ämnet." + +#: src/properties.cpp:1913 +msgid "Date Identified" +msgstr "Datum för identifiering" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" +"Datumet dÃ¥ ett subjekt identifierades som representant för Taxon. Bästa " +"användningssätt är att använda ett kodningsschema som exempelvis ISO " +"8601:2004(E)." + +#: src/properties.cpp:1916 +msgid "Identification References" +msgstr "Identifieringsreferenser" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" +"En lista (konkatenerad och separerad) frÃ¥n vilken referenser (publikationer, " +"global unik identifierare, URI) används i identifieringen." + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "Verifieringsstatus för identifiering" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" +"En kategorisk indikator för till vilken utökning den taxonomiska " +"identifieringen har verifierats vara korrekt. Rekommenderad användning är " +"att använda en kontrollerad vokabulär som den används i HISPID/ABCD." + +#: src/properties.cpp:1922 +msgid "Identification Remarks" +msgstr "Identifieringsanteckningar" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "Kommentarer eller anteckningar kring identifieringen." + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "Identifieringskvalificerare" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" +"En kort fras eller standardterm (â€cf.†â€aff.â€) för att uttrycka bestämmarens " +"tvekan om identifieringen." + +#: src/properties.cpp:1928 +msgid "Type Status" +msgstr "Typstatus" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" +"En lista (konkatenerad och separerad) över nomenklaturtyper (typstatus, " +"nedskriven vetenskapligt namn, publikation) tillämpade för objektet." + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "Taxon" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "*Huvudstruktur* innehÃ¥llandes taxonomibaserad information." + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "Taxon-ID" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" +"En identifierare för mängden av taxoninformation (data associerat med taxon-" +"klassen). Kan vara en global unik identifierare eller en identifierare " +"specifik för datamängden." + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "Vetenskapligt namn-ID" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" +"En identifierare för nomenklaturdetaljerna (inte taxonomin) för ett " +"vetenskapligt schema." + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "Accepterat namnanvändnings-ID" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" +"En identifierare för namnanvändningen (dokumenterad mening för namnet enligt " +"källan) över aktuell giltig (zoologisk) eller accepterad (botanisk) taxon." + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "Föräldranamn användnings-ID" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" +"En identifierare för namnanvändningen (dokumenterad mening för namnet enligt " +"källan) över det mest närliggande direkta högst graderade föräldrataxonet (i " +"en klassificering) över det mest specifika elementet för det vetenskapliga " +"namnet." + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "Användnings-ID för originalnamn" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" +"En identifierare för namnanvändningen (dokumenterad mening för namnet enligt " +"källan) dÃ¥ avslutande elementet för scientificName ursprungligen etablerades " +"under reglerna för associerad nomenclaturalCode." + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "Namn enligt ID" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" +"En identifierare för vilken källan i det specifika taxonkonceptet förbigÃ¥ng " +"är definierat eller implicerat. Se nameAccordingTo." + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "Namn publicerad i ID" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" +"En identifierare för vilken publikation i vilken scientificName " +"ursprungligen etablerades under reglerna för associerad nomenclaturalCode." + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "Taxonkoncept-ID" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" +"En identifierare för det taxonomiska koncept till vilken posten hör - inte " +"för nomenklaturdetaljerna för ett taxon." + +#: src/properties.cpp:1961 +msgid "Scientific Name" +msgstr "Vetenskapligt namn" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" +"Hela det vetenskapliga namnet med författarskap och datuminformation om " +"känt. När del av en identifiering bör detta namn vara i lägsta nivÃ¥n av " +"taxonomisk grad som kan bestämmas. Denna term bör inte innehÃ¥lla " +"identifieringskvalifikationer som istället bör tillhandahÃ¥llas i " +"IdentificationQualifier-termen." + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "Accepterad namnanvändning" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" +"Hela namnet med författarskap och datuminformation, om känt, över aktuell " +"giltig (zoologisk) eller accepterat (botaniskt) taxon." + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "Föräldranamnsanvändning" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" +"Hela namnet med författarskap och datuminformation, om känt, över de mest " +"närliggande högst graderade föräldrataxonet (i en klassificering) över det " +"mest specifika elementet för det vetenskapliga namnet." + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "Ursprunglig namnanvändning" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" +"Taxonnamnet för vilket författarskap och datuminformation är kända, som de " +"ursprungligen var vid etablering under reglerna för associerad " +"nomenclaturalCode. Basionym (botanik) eller basonym (bakteriologi) över det " +"vetenskapliga namnet eller äldre/tidigare homonym för ersatta namn." + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "Namn enligt till" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" +"Referensen till källan i vilken det specifika taxonkonceptet undantag är " +"definierat eller implicerat - traditionell signatur med latin â€sensu†eller " +"â€sec.â€. (frÃ¥n secundum vilket betyder â€enligtâ€). För taxa som resulterar " +"frÃ¥n identifieringar bör en referens till nycklarna, monograferna, " +"experterna och källorna ges." + +#: src/properties.cpp:1976 +msgid "Name Published In" +msgstr "Namn publicerat i" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" +"En referens för publikationen i vilken scientificName ursprungligen " +"etablerades under reglerna för associerad nomenclaturalCode." + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "PubliceringsÃ¥r för namn" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "Fyrsiffrigt Ã¥r dÃ¥ scientificName först publicerades." + +#: src/properties.cpp:1982 +msgid "Higher Classification" +msgstr "Högre klassificering" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" +"En lista (konkatenerad och separerad) över taxanamn som slutar vid gradering " +"direkt över taxonet refererat till i taxonposten. Rekommenderad användning " +"är att sortera listan med början med den högsta graderingen och separera " +"namnen för varje gradering med ett semikolon ;" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "Rike" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "Hela vetenskapliga namnet för riket i vilket taxonet är klassificerat." + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "Phylum" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" +"Hela vetenskapliga namnet för phylum eller avdelning i vilken taxonet är " +"klassificerat." + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "Klass" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" +"Hela vetenskapliga namnet för klassen i vilken taxonet är klassificerat." + +#: src/properties.cpp:1994 +msgid "Order" +msgstr "Sortering" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" +"Hela vetenskapliga namnet för ordningen i vilken taxonet är klassificerat." + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "Familj" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" +"Hela vetenskapliga namnet för familjen i vilken taxonet är klassificerat." + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "Kön" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" +"Hela vetenskapliga namnet pÃ¥ det kön för vilket taxonet är klassificerat." + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "Underkön" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" +"Hela vetenskapliga namnet pÃ¥ det underkön för vilken taxonet är " +"klassificerat. Värden ska inkludera kön för undvika homonym förvirring." + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "Specifik epitet" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "Namnet pÃ¥ första, eller artepitet för scientificName." + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "Infraspecifik epitet" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" +"Namn pÃ¥ lägsta eller avslutande infraspecifik epitet för det vetenskapliga " +"namnet, uteslutande graderingsbestämning." + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "Taxongradering" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"Den taxonomiska graderingen av det mest specifika namnet i det vetenskapliga " +"namnet. Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "Ordagrann taxongradering" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" +"Taxonomiska graderingen för det mest specifika namnet i scientificName som " +"det visas i originalposten." + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "Vetenskapligt namnförfattarskap" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" +"Författarskapsinformation för scientificName formaterad enligt " +"konventionerna för den tillämpbara nomenclaturalCode." + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "Inländskt namn" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "Ett vanligt eller inländskt namn." + +#: src/properties.cpp:2024 +msgid "Nomenclatural Code" +msgstr "Nomenklaturkod" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" +"Nomenklaturkoden (eller koderna i händelse av ett ambiregnalnamn) under " +"vilken scientificName är konstruerat. Rekommenderad användning är att " +"använda en kontrollerad vokabulär." + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "Taxonomistatus" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" +"Status för användningen för det vetenskapliga namnet som en tagg för ett " +"taxon. Kräver taxonomisk alternativ för att definiera omfÃ¥nget för ett " +"taxon. Regler för prioritet användes dÃ¥ för att definiera den taxonomiska " +"statusen för nomenklaturen i det omfÃ¥nget, kombinerat med expertutlÃ¥tanden. " +"Det mÃ¥ste vara länkat till en specifik taxonomisk referens som definierar " +"konceptet. Rekommenderad användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "Nomenklaturstatus" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" +"Statusen relaterat till originalpublikationen för namnet och dess anpassning " +"till relevanta regler för nomenklaturen. Det är baserat pÃ¥ en algoritm " +"enligt affärsreglerna för koden. Det kräver inget taxonomiskt alternativ." + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "Taxonanmärkningar" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "Kommentarer eller anteckningar om taxonet eller namnet." + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "Resursrelation" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" +"*Huvudstruktur* innehÃ¥llandes relationer mellan resursbaserad information." + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "Resursrelations-ID" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" +"En identifierare för en relationsinstans mellan en resurs (subjektet) och " +"andra (relaterad resurs, objektet)." + +#: src/properties.cpp:2045 +msgid "Resource ID" +msgstr "Resurs-ID" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "En identifierare för resursen som är subjektet för relationen." + +#: src/properties.cpp:2048 +msgid "Related Resource ID" +msgstr "Relationsresurs-ID" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" +"En identifierare för en relaterad resurs (objektet snarare än subjektet för " +"relationen)." + +#: src/properties.cpp:2051 +msgid "Relationship Of Resource" +msgstr "Relationsresurs" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" +"Relationen för resursen identifierad för relaterat resurs-ID till subjektet " +"(valfritt identifierad genom resurs-ID). Rekommenderad användning är att " +"använda en kontrollerad vokabulär." + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "Relation med hänseende till" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" +"Källan (person, organisation, publikation, referens) som etablerar " +"relationen mellan de tvÃ¥ resurserna." + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "Datum dÃ¥ relation etablerades" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" +"Datum-tid dÃ¥ relationen mellan de tvÃ¥ resurserna etablerades. Rekommenderad " +"användning är att använda ett kodningsschema som ISO 8601:2004(E)." + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "Relationsanteckningar" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "Kommentarer eller anteckningar om relationen mellan de tvÃ¥ resurserna." + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "Mätningsnoggrannhet eller fakta" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "*Huvudstruktur* innehÃ¥llandes mätningsbaserad information." + +#: src/properties.cpp:2069 +msgid "Measurement ID" +msgstr "Mätnings-ID" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" +"En identifierare för mätning eller fakta (information rörande mätningar, " +"fakta, karakteristik eller försäkran). Kan vara en global unik identifierare " +"eller en identifierare specifik för datamängden." + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "Mätningstyp" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" +"Typ för mätningen, faktan, karakteristiken eller försäkran. Rekommenderad " +"användning är att använda en kontrollerad vokabulär." + +#: src/properties.cpp:2075 +msgid "Measurement Value" +msgstr "Mätningsvärde" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "Värde pÃ¥ mätningen, faktan, karakteristiken eller försäkran." + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "Mätningsnoggranhet" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "Beskrivningen pÃ¥ det potentiella felet associerat med mätningsvärdet." + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "Mätningsenhet" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" +"Enheten associerad med mätningsvärdet. Rekommenderad användning är att " +"använda det internationella enhetssystemet (SI)." + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "Mätningsbestämningsdatum" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" +"Datum dÃ¥ mätning eller fakta skapades. Rekommenderad användning är att " +"använda ett kodningschema som ISO 8601:2004(E)." + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "Mätning bestämd av" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" +"En lista (konkatenerad och separerad) över namn pÃ¥ personer, grupper eller " +"organisationer som bestämde värdet för mätning eller fakta." + +#: src/properties.cpp:2090 +msgid "Measurement Method" +msgstr "Mätningsmetod" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" +"En beskrivning över, eller en referens till (publikation, URI) metoden eller " +"protokollet som användes för att bestämma mätningen, faktan, karakteristiken " +"eller försäkran." + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "Mätningskommentarer" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "Kommentarer eller anteckningar tillhörande mätning eller fakta." + +#: src/properties.cpp:2101 +msgid "A brief description of the file" +msgstr "En kort beskrivning av filen" + +#: src/properties.cpp:2102 +msgid "Date Time" +msgstr "Datum och tid" + +#: src/properties.cpp:2103 +msgid "The name of the author or photographer" +msgstr "Namnet pÃ¥ författaren eller fotografen" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "Numerisk gradering frÃ¥n 1 till 5" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "Anteckningar" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "Beskrivande eller ytterligare fritext upp till 4095 tecken" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "Taggad" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "True eller False" + +#: src/properties.cpp:2107 +msgid "Categories" +msgstr "Kategorier" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "Katalog över hierarkiska nyckelord och grupper" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Upplösningsläge" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Upplösningsläge" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Autofokusläge" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Autofokusläge" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Fokusinställning" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Fokusinställning" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Objektivintervall" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Objektiv-brännviddsintervall" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Skugga" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "Högdagrar" + +#: src/sigmamn.cpp:104 +msgid "Fill Light" +msgstr "Fyllnadsljus" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "X3 fyllnadsljus" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "Färgjustering" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "Färgjustering" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Justeringsläge" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Justeringsläge" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "Automatisk gaffling" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "Automatisk gaffling" + +#: src/sigmamn.cpp:127 +msgid "Unknown SigmaMakerNote tag" +msgstr "Okänd SigmaMakerNote-tagg" + +#: src/sigmamn.cpp:170 +msgid "8-Segment" +msgstr "8-Segment" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "Avancerad nivÃ¥ 1" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "Avancerad nivÃ¥ 2" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "Avancerad nivÃ¥ 3" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "Avancerad nivÃ¥ 4" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "Avancerad nivÃ¥ 5" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "Nattscen/skymning" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "Höghastighetsslutare" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Skymningsporträtt" + +#: src/sonymn.cpp:157 +msgid "Soft Snap / Portrait" +msgstr "Mjuk snap / porträtt" + +#: src/sonymn.cpp:159 +msgid "Smile Shutter" +msgstr "Leende slutare" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "Hög känslighet" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "Avancerad sportfotografering" + +#: src/sonymn.cpp:166 +msgid "Sweep Panorama" +msgstr "Sveppanorama" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "Anti-rörelseoskärpa" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "Bakljuskorrigering HDR" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "Överlägsen auto" + +#: src/sonymn.cpp:172 +msgid "Background Defocus" +msgstr "Bakgrunds avfokus" + +#: src/sonymn.cpp:173 +msgid "Soft Skin" +msgstr "Mjuk hud" + +#: src/sonymn.cpp:174 +msgid "3D Image" +msgstr "3D-bild" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "PÃ¥ (kontinuerlig)" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "PÃ¥ (tar bilder)" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "Plus" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Vitt fluorescerande" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "Kallt vitt fluorescerande" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "Dag vitt fluorescerande" + +#: src/sonymn.cpp:217 +msgid "Incandescent2" +msgstr "Incandescent2" + +#: src/sonymn.cpp:218 +msgid "Warm White Fluorescent" +msgstr "Varmt vitt fluorescerande" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Undervatten 1 (blÃ¥tt vatten)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Undervatten 2 (grönt vatten)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "Permanent AF" + +#: src/sonymn.cpp:237 +msgid "Center AF" +msgstr "Centrerad AF" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "Punkt-AF" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "Flexibel punkt-AF" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "Berörings-AF" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "Manuellt fokus" + +#: src/sonymn.cpp:242 +msgid "Face Detected" +msgstr "Ansikte avkänt" + +#: src/sonymn.cpp:257 +msgid "Close Focus" +msgstr "Nära fokus" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +msgid "Multi Burst Mode" +msgstr "Flerupprepningsläge" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +msgid "Multi Burst Image Width" +msgstr "Flerupprepningsbildbredd" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +msgid "Multi Burst Image Height" +msgstr "Flerupprepningsbildhöjd" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "JPEG förhandsgranskningsbild" + +#: src/sonymn.cpp:390 +msgid "Auto HDR" +msgstr "Auto-HDR" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "High Definition Range-läge" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Bildinformation" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "Sony modell-ID" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "FärgÃ¥tergivning" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "Optimera dynamikintervall" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "Minolta MakerNote" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Full bildstorlek" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Förhandsvisningsstorlek" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Förhandsvisningsbildens storlek" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "AF-belysare" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "JPEG-kvalitet" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Släppläge" + +#: src/sonymn.cpp:464 +msgid "Shot number in continuous burst mode" +msgstr "Bildnummer i seriebildsläge" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "Anti-oskärpa" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "LÃ¥ng exponering, brusreducering" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "Intelligent auto" + +#: src/sonymn.cpp:483 +msgid "Unknown Sony1MakerNote tag" +msgstr "Okänd Sony1MakerNote-tagg" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Kontinuerlig hög" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Kontinuerlig lÃ¥g" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "D-intervall optimeringsgaffling, lÃ¥g" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "Höst" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "ADI" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "Stilruta 1" + +#: src/sonymn.cpp:578 +msgid "Auto No Flash" +msgstr "Auto utan blixt" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "OptimiseringsnivÃ¥ för dynamikintervallet" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +msgid "Creative Style" +msgstr "Kreativ stil" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +msgid "Zone Matching Value" +msgstr "Zonpassningsvärde" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +msgid "AF With Shutter" +msgstr "AF med slutare" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +msgid "High ISO NoiseReduction" +msgstr "Hög ISO-brusreducering" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Bildstil" + +#: src/sonymn.cpp:704 +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Okänd Sony1-kamerainställningstagg" + +#: src/sonymn.cpp:768 +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Okänd Sony1-kamerainställningstagg 2" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Okänt avsnitt" + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Bilddatastruktur" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "Inspelningsförskjutning" + +#: src/tags.cpp:191 +msgid "Image data characteristics" +msgstr "Bilddatans egenskaper" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Övrig data" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Exif-datastruktur" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Bildkonfiguration" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Användarinformation" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Relaterad fil" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Datum och tid" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Omständigheter vid fotografering" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "GPS-information" + +#: src/tags.cpp:201 +msgid "Interoperability information" +msgstr "Interoperabilitetsinformation" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Tillverkarspecifik information" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Adobe DNG-taggar" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Panasonic RAW-taggar" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "TIFF/EP-taggar" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "TIFF PageMaker 6.0-taggar" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Adobe OPI-taggar" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Sista avsnittet" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Primär bild" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Miniatyr-/förhandsvisningsbild" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Primärbild, flersidesfil" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Miniatyr/förhandsvisningsbild, flersidesfil" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Primärbild, genomskinlighetsmask" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Miniatyr-/förhandsvisningsbild, genomskinlighetsmask" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Primärbild, flersidesfil, genomskinlighetsmask" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "Miniatyr-/förhandsvisningsbild, flersidesfil, genomskinlighetsmask" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Bilddata i full upplösning" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Bilddata i reducerad upplösning" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "En enstaka sida av en flersidesbild" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "tum" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "T4/Grupp 3 Fax" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "T6/Grupp 4 Fax" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (gammal)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG S&V" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Färg" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "Next 2-bits RLE" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF-komprimerad" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "Samsung SRW-komprimerad" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1-word" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "IT8 CT-vaddering" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 Linjearbetes-RLE" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "IT8 monokrom bild" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 binär linjekonst" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "Pixar Film (10-bitars LZW)" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "Pixar Log (11-bitars ZIP)" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar Deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Kodak DCS Encoding" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI Log Luminans RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "SGI Log 24-bits packad" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF-komprimerad" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR-komprimerad" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF-komprimerad" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "Vitt är noll" + +#: src/tags.cpp:287 +msgid "Black Is Zero" +msgstr "Svart är noll" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "RGB-palett" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Genomskinlighetsmask" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Färgfilterfält" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "Linär RAW" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "Ingen dithering eller halvton" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "Sorterad dither- eller halvtonsteknik" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Slumpmässig behandling" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "överst, vänster" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "överst, höger" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "nederst, höger" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "nederst, vänster" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "vänster, överst" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "höger, överst" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "höger. nederst" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "vänster, nederst" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "Inget gissningsschema används" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Horisontell differentiering" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "inte CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "Omärkt heltalsdata" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "TvÃ¥ har hjälpt märkt heltalsdata" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "IEEE flyttalsdata" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "Odefinierat dataformat" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "Inte indexerat" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "Indexerat" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Centrerad" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "Intilliggande" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Ingen blixt" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "Avfyrat, upptäckte ej returljus" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "Avfyrad, upptäckte ej returljus" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "Ja, inte utlöst" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Ja, obligatorisk" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "Ja, obligatorisk, Ã¥tervändande ljus inte avkänt" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "Ja, obligatorisk, Ã¥tervändande ljust avkänt" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "Nej, obligatorisk" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "Nej, avfyrade inte, upptäckte inte returljus" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Nej, auto" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Ja, auto" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Ja, auto, Ã¥tervändande ljus inte avkänt" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Ja, auto, Ã¥tervändande ljus avkänt" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Ingen blixtfunktion" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "Nej, ingen blixtfunktion" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Ja, motverka röda ögon" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Ja, motverka röda ögon, Ã¥tervändande ljus inte avkänt" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Ja, motverka röda ögon, Ã¥tervändande ljus inte avkänt" + +#: src/tags.cpp:387 +msgid "Yes, compulsory, red-eye reduction" +msgstr "Ja, obligatorisk, motverka röda ögon" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "Ja, obligatorisk, motverka röda ögon, Ã¥tervändande ljus inte avkänt" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "Ja, obligatorisk, motverka röda ögon, Ã¥tervändande ljus avkänt" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Nej, motverka röda ögon" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Nej, auto, motverka röda ögon" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Ja, auto, motverka röda ögon" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Ja, auto, motverka röda ögon, Ã¥tervändande ljus inte avkänt" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Ja, auto, motverka röda ögon, Ã¥tervändande ljus avkänt" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Rektangulär (eller fyrkantig) layout" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "Stegad layout A: jämna kolumner förskjuts nerÃ¥t med 1/2 rad" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "Stegad layout B: jämna kolumner förskjuts uppÃ¥t med 1/2 rad" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "Stegad layout C: jämna rader förskjuts höger med 1/2 kolumn" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "Stegad layout D: jämna rader förskjuts vänster med 1/2 kolumn" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Behandlingsmjukvara" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" +"Namn och version av programmet som används för att efterbehandla bilden." + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Ny delfilstyp" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "En allmän visning om vilken sorts data som finns i delfilen." + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "Delfilstyp" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"En allmän visning om vilken sorts data som finns i delfilen. Det här fältet " +"kommer fasas ut. Fältet NewSubfileType bör användas istället." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Antalet kolumner med bilddata, lika med antalet bildpunkter per rad. I JPEG-" +"komprimerad data används en JPEG-markör istället för denna tagg." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Antalet rader med bilddata. I JPEG-komprimerad används en JPEG-markör " +"istället för denna tagg." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bitar per sampling" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Antalet bitar per bildkomponent. I denna standard sÃ¥ är varje komponent av " +"bilden 8 bitar, sÃ¥ värdet för denna tagg är 8. Se även . I " +"JPEG-komprimerad data används en JPEG-markör istället för denna tagg." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Det komprimeringsschema som används för bilddatan. När en primärbild är " +"komprimerad med JPEG är det här inte intressant och utesluts. När " +"miniatyrbilder använder JPEG-komprimering är värdet i den här taggen satt " +"till 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Bildpunktssammansättningen. I JPEG-komprimerad data används en JPEG-markör " +"istället för denna tagg." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "Tröskelvärde" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" +"För svartvita TIFF-filer som representerar grÃ¥skala används tekniken för att " +"konvertera frÃ¥n grÃ¥a till svarta och vita bildpunkter." + +#: src/tags.cpp:448 +msgid "Cell Width" +msgstr "Cellbredd" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" +"Bredd för ditherings- eller halvtoningsmatrisen som används för att skapa en " +"dithrad eller halvtonad tvÃ¥nivÃ¥fil." + +#: src/tags.cpp:452 +msgid "Cell Length" +msgstr "Cellängd" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" +"Längd för ditherings- eller halvtoningsmatrisen som används för att skapa en " +"dithrad eller halvtonad tvÃ¥nivÃ¥fil." + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Fyllnadsordning" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Den logiska ordningen av bitar inom en byte" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Dokumentnamn" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Namnet pÃ¥ dokumentet frÃ¥n vilken bilden skannades in" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"En teckensträng som get titeln pÃ¥ bilden. Det kan vara en kommentar som " +"â€1988 företagspicknick†eller nÃ¥got i den stilen. Teckenkoder pÃ¥ tvÃ¥ byte " +"kan inte användas. När en tvÃ¥-byte-kod behövs ska den privata Exif-taggen " +" användas." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Inspelningsutrustningens tillverkare. Det här är tillverkaren av DSC:n, " +"skannern, videodigitaliseraren, eller annan utrustning som skapade bilden. " +"När fältet lämnas tomt behandlas det som ett okänt värde." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Modellnamn eller -nummer pÃ¥ utrustningen. Det här är modellnamnet eller -" +"numret pÃ¥ DSC:n, skannern, videodigitaliseraren, eller annan utrustning som " +"skapade bilden. När fältet lämnas tomt behandlas det som ett okänt värde." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"För varje stripp, byte-förskjutning av strippen. Vi rekommenderar att det " +"anges sÃ¥ att antal stripp-byte inte överstiger 64 Kbyte. För JPEG-" +"komprimerad data är det här onödigt och utesluts. Se ocksÃ¥ " +"och ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Bildorientering i rader och kolumner." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Samplingar per bildpunkt" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Antal komponenter per bildpunkt. Eftersom standarden gäller för RGB- och " +"YCbCr-bilder anges värdet i den här taggen till 3. För JPEG-komprimerad data " +"används en JPEG-markör istället för denna tagg." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Rader per stripp" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"Antal rader per stripp. Det här är antalet rader i bilden för en stripp när " +"en bild är fördelad i sÃ¥dana. För JPEG-data är det inte nödvändigt och " +"utesluts. Se ocksÃ¥ och ." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Strippens byte-antal" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"Totala mängden byte i varje stripp. För JPEG-komprimerad data är det här " +"onödigt och utesluts." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "X-upplösning" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Antal bildpunkter per i anvisningen . När " +"bildupplösningen inte är känd antas 72 [dpi]." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Y-upplösning" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Antal bildpunkter per i anvisningen . Samma " +"värde som i tilldelas." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" +"Visar om bildpunktskomponenterna lagras i block- eller planformat. I JPEG-" +"komprimerade bilder används en JPEG-markör istället för denna tagg. Om " +"fältet inte existerar antas standardvärdet för TIFF (1 - block)." + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "GrÃ¥ svarsenhet" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "Precision för informationen som lagras i grÃ¥svarskurva." + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "GrÃ¥ svarskurva" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" +"För grÃ¥skala är det här den optiska densiteten för varje möjligt " +"bildpunktsvärde." + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "T4-alternativ" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "T.4-kodningsalternativ." + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "T6-alternativ" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "T.6-kodningsalternativ." + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"Enheten som och mäts i. Samma enhet används för " +"bÃ¥de och . Om bildens upplösning är okänd antas 2 " +"tum." + +#: src/tags.cpp:537 +msgid "Page Number" +msgstr "Sidnummer" + +#: src/tags.cpp:538 +msgid "The page number of the page from which this image was scanned." +msgstr "Sidonumret för sidan frÃ¥n vilken bilden skannades in." + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"En överföringsfunktion för bilden, beskriven i tabulär stil. I normala fall " +"är taggen överflödig, eftersom färgrymden anges i " +"färgrymdsinformationstaggen ()." + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Taggen innehÃ¥ller namn och version för kamerans eller bildindataenhetens " +"mjukvara eller firmware som användes för att skapa bilden. Det detaljerade " +"formatet är inte specificerat, men vi rekommenderar att exemplet nedan " +"följs. När fältet lämnas tomt behandlas det som ett okänt värde." + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Datum och tid för bildens skapande. I Exif-standarden är det datum och tid " +"dÃ¥ filen ändrades." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Taggen innehÃ¥ller kameraägarens, fotografens, eller bildskaparens namn. Det " +"detaljerade formatet är inte specificerat, men vi rekommenderar att " +"informationen skrivs som i exemplet nedan för att underlätta " +"interoperabilitet. Om fältet lämnas tomt behandlas det som ett okänt värde. " +"Ex.: â€Kameraägare, Adam Bengtsson; Fotograf, Charles Danielsson; " +"Bildskapare, Evert Fredrikssonâ€" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "Värddator" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" +"Taggen innehÃ¥ller information om värddatorn som användes för att skapa " +"bilden." + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Kodningshjälpare" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" +"En kodningshjälpare är en matematisk operand som tillämpas pÃ¥ bilddatan " +"innan ett kodningsschema tillämpas." + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Kromaciteten för bildens vitpunkt. I normala fall är taggen onödig, eftersom " +"färgrymd anges i färgrymdsinformationstaggen ()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Kromaciteten för bildens tre primärfärger. I normala fall är taggen onödig, " +"eftersom färgrymd anges i färgrymdsinformationstaggen ()." + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Färgkarta" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" +"En färgkarta för palettfärgsbilder. Det här fältet definierar en röd-grön-" +"blÃ¥ färgkarta (ofta kallad uppslagningstabell) för palettfärgsbilder. I en " +"palettfärgsbild används ett bildpunktsvärde för att slÃ¥ upp färger i en RGB-" +"uppslagningstabell." + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "Halvtonsvinkningar" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" +"Syftet med fältet Halvtonsvinkningar är att förmedla intervallet av " +"grÃ¥nivÃ¥er till halvtonsfunktionen inom en färgmetriskt specificerad bild som " +"borde bevara färgtonsdetaljer." + +#: src/tags.cpp:593 +msgid "Tile Width" +msgstr "Rutbredd" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "Rutbredden i bildpunkter. Det här är antalet kolumner för varje ruta." + +#: src/tags.cpp:596 +msgid "Tile Length" +msgstr "Rutlängd" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" +"Rutlängden (höjd) i bildpunkter. Det här är antalet rader i varje ruta." + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "Rutförskjutningar" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" +"För varje ruta, byteförskjutningen för den rutan, som komprimerad och lagrad " +"pÃ¥ hÃ¥rddisken. Förskjutningen specificeras utifrÃ¥n TIFF-filens början. " +"Observera att det här antyder att varje ruta har en placering som är " +"oberoende av de andra rutornas placeringar." + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "Rutans byte-antal" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" +"För varje ruta, antalet (komprimerade) i den rutan. Se TileOffsets för en " +"beskrivning av hur byte-antalen sorteras." + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "DelIFD-förskjutningar" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" +"Definieras av Adobe Corporation för att möjliggöra TIFF-träd inom en TIFF-" +"fil." + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Bläck-mängd" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"Mängden bläck som används i en separerad (PhotometricInterpretation=5) bild." + +#: src/tags.cpp:615 +msgid "Ink Names" +msgstr "Bläcknamn" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" +"Namn pÃ¥ varje bläck som används i en separerad (PhotometricInterpretation=5) " +"bild." + +#: src/tags.cpp:618 +msgid "Number Of Inks" +msgstr "Antal bläck" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" +"Antal bläck. Oftast lika med SamplesPerPixel, om det inte förekommer extra " +"samplingar." + +#: src/tags.cpp:621 +msgid "Dot Range" +msgstr "Punktintervall" + +#: src/tags.cpp:622 +#, fuzzy, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "Komponentvärden som motsvarar en 0% punkt och en 100% punkt." + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "MÃ¥lskrivare" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "En beskrivning av utskriftsmiljön för vilken separeringen avses." + +#: src/tags.cpp:627 +msgid "Extra Samples" +msgstr "Extra samplingar" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" +"Specificerar att varje bildpunkt har m extra komponenter vilkas tolkning " +"definieras av en av värdena som räknas upp nedanför." + +#: src/tags.cpp:631 +msgid "Sample Format" +msgstr "Samplingsformat" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" +"Det här fältet specificerar hur bildpunkternas datasamplingar ska tolkas." + +#: src/tags.cpp:634 +msgid "SMin Sample Value" +msgstr "SMin samplingsvärde" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "Det här fältet anger det minsta samplingsvärdet." + +#: src/tags.cpp:637 +msgid "SMax Sample Value" +msgstr "SMax samplingsvärde" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "Det här fältet anger det största samplingsvärdet." + +#: src/tags.cpp:640 +msgid "Transfer Range" +msgstr "Överföringsintervall" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "Utökar intervallet för TransferFunction" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "Klippsökväg" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" +"En TIFF-ClipPath avses för att visa det viktiga i PostScripts " +"sökvägsskaparfunktionalitet." + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "X klippsökvägsenheter" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"Antal enheter som omfattar bildens bredd, i heltals-ClipPath-koordinater." + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "Y klippsökvägsenheter" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" +"Antal enheter som omfattar bildens höjd, i heltals-ClipPath-koordinater." + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" +"Indexerade bilder är bilder där â€bildpunkterna†inte representerar " +"färgvärden, utan hellre ett index (ofta 8-bitars) i en separat färgtabell, " +"färgkartan." + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "JPEG-tabeller" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" +"Den här valfria taggen kan användas för att koda JPEG-kvantisering och " +"Huffman-tabeller för senare användning under JPEG-avkomprimeringsprocessen." + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "OPI-proxy" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" +"OPI-proxy get information om bilden är en lÃ¥gupplöst mellanhand till en " +"högupplöst bild (Adobe OPI)." + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "JPEG-process" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" +"Det här fältet visar vilken process användes för att skapa den komprimerade " +"datan" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "JPEG Interchange Format" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" +"Förskjutningen för startbyten (SOI) för JPEG-komprimerad miniatyrbildsdata. " +"Det här används inte för primärbilds-JPEG-data." + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "JPEG Interchange Format-längd" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" +"Antal byte för JPEG-komprimerad miniatyrbildsdata. Det här används inte för " +"primärbilds-JPEG-data. JPEG-miniatyrer delas inte, men sparas som en " +"kontinuerlig JPEG-bitström frÃ¥n SOI till EOI. Appn- och COM-markörer bör " +"inte lagras. Komprimerade miniatyrbilder mÃ¥ste sparas i max 64 Kbyte, " +"inklusive all annan data som ska sparas i APP1." + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "JPEG omstartsintervall" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" +"Det här fältet visar längden för omstartsintervallet som används i den " +"komprimerade bilddatan." + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "JPEG förlustfria hjälpare" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" +"Det här fältet pekar ut en lista över förlustfria hjälpar-vals-värden, en " +"per komponent." + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "JPEG-punkttransformeringar" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" +"Det här fältet pekar mot en lista över punkttransformeringsvärden, en per " +"komponent." + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "JPEG Q-tabeller" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" +"Det här fältet pekar mot en lista över förskjutningar pÃ¥ " +"kvantiseringstabeller, en per komponent." + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "JPEG DC-tabeller" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" +"Det här fältet pekar Ã¥t en lista med förskjutningar pÃ¥ DC Huffman-tabellerna " +"eller de förlustfria Huffman-tabellerna, en per komponent." + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "JPEG AC-tabeller" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" +"Det här fältet pekar pÃ¥ en lista med förskjutningar pÃ¥ Huffman AC-" +"tabellerna, en per komponent." + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" +"Matriskoefficienterna för transformering av RGB- till YCbCr-bilddata. Inget " +"standardval ges i TIFF, men här används värdet i Bilaga E, " +"â€Färgrymdsriktlinjerâ€, som standard. Färgrymden beskrivs i en " +"färgrymdsinformationstagg, med ett standardvärde som ger bästa möjliga " +"bildegenskaper interoperabilitet det här villkoret." + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "YCbCr del-sampling" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Samplingsproportionerna av krominanskomponenterna i förhÃ¥llande till " +"luminanskomponenten. I JPEG-komprimerad data används en JPEG-markör istället " +"för den här taggen." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" +"Positionen för krominanskomponenterna i förhÃ¥llande till " +"luminanskomponenten. Det här fältet används bara för JPEG-komprimerad data " +"eller okomprimerad YCbCr-data. TIFFs standard är 1 (centrerad); men om Y:Cb:" +"Cr = 4:2:2 rekommenderar den här standarden att 2 (sida-vid-sida) används " +"för att spara data för att ge bättre bildkvalité när bilden visas pÃ¥ TV-" +"system. Om fältet inte finns ska läsaren anta TIFFs standardvärde. Om Y:Cb:" +"Cr = 4:2:0 rekommenderas TIFFs standard (centrerad). Om läsaren inte har " +"stöd för bÃ¥da typer av ska den följa TIFF-standarden " +"oavsett vad fältet visar för värde. Helst ska läsarna ha stöd för bÃ¥de " +"centrerad och sida-vid-sida positionering." + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Referens svart/vitt" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" +"Svartpunktens referensvärde och vitpunktens referensvärde. Ingen standard " +"anges i TIFF, men värden nedanför anges som standard här. Färgrymden " +"beskrivs i en färgrymdsinformationstagg, med ett standardvärde som ger bästa " +"möjliga bildegenskaper interoperabilitet dessa villkor." + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "XML-paket" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "XMP-metadata (Adobe technote 9-14-02)" + +#: src/tags.cpp:746 +msgid "Windows Rating" +msgstr "Windows-betyg" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "Betygstagg som används av Windows" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "Windows-betyg i procent" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "Betygstagg som används av Windows, värde i procent" + +#: src/tags.cpp:752 +msgid "Image ID" +msgstr "Bild-ID" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" +"Bild-ID är den fullständiga sökvägen för den ursprungliga högupplösta " +"bilden, eller nÃ¥gon annan identifierande sträng som är unik för " +"originalbilden (Adobe OPI)." + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "CFA upprepa mönsterdimension" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" +"InnehÃ¥ller tvÃ¥ värden som representerar minsta antal rader och kolumner för " +"att definiera de upprepade mönstren för färgfilterfältet" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" +"Visar färgfilterfältets (CFA) geometriska mönster för bildsensorn när en " +"singel-chip färgomrÃ¥dessensor används. Det gäller inte för alla sensormetoder" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" +"Upphovsrättsinformation. I den här standarden används taggen för att visa " +"bÃ¥de fotografens och redaktörens upphovsrätt. Det är " +"upphovsrättsinformationen frÃ¥n personen eller organisationen som Ã¥beropar " +"rättigheter för bilden. Interoperabilitets-upphovsrättsÃ¥beropan inkluderar " +"datum och rättigheter ska skrivas i det här fältet; t.ex. â€Copyright, Adam " +"Bengtsson, 19xx. Alla rättigheter förbehÃ¥llna.â€. I den här standarden lagrar " +"fältet bÃ¥de fotografens och redaktörens upphovsrätter, lagrad i separata " +"delar av yttrandet. När det finns en tydlig skillnad mellan fotografens och " +"redaktörens upphovsrätter ska de skrivas i ordningen fotografens följd av " +"redaktörens rättigheter, avdelade med NULL (i det här fallet; eftersom " +"yttrandet ocksÃ¥ slutar med NULL finns det tvÃ¥ NULL-koder). När bara " +"fotografens upphovsrätt visas, avslutas den av en NULL-kod. När bara " +"redaktörens upphovsrätt visas bestÃ¥r fotografens upphovsrättsavsnitt av ett " +"blanksteg följt av en avslutande NULL-kod, sedan visas redaktörens " +"upphovsrätt. Om fältet lämnas tomt behandlas det som ett okänt värde." + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "Exponeringstid i sekunder." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "F-numret." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "InnehÃ¥ller en IPTC/NAA-post" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "Bildresursblock" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "InnehÃ¥ller information som bäddats in av programmet Adobe Photoshop" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" +"En pekare till Exifs IFD. Interoperabilitet, Exif IFD har samma struktur som " +"den IFD som specificeras i TIFF. I vanliga fall innehÃ¥ller den Ã¥ andra sidan " +"inte bilddata, som i TIFF." + +#: src/tags.cpp:803 +msgid "Inter Color Profile" +msgstr "Inter Color-profil" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" +"InnehÃ¥ller en färgrymdskaraktär/-profil i formatet InterColor Consortium " +"(ICC)" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"Programmets klass som användes av kameran för att ange exponering när bilden " +"tas." + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "Visar den spektrala känsligheten för varje kamerakanal som används." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" +"En pekare till GPS-info IFD. Interoperabilitetsstrukturen i GPS-info IFD, " +"som Exif IFD, saknar bilddata." + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "ISO-hastighetsgränser" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"Visar ISO-hastigheten och ISO-latituden för kameran eller inmatningsenheten " +"enligt ISO 12232." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" +"Visar den Opto-elektriska konverteringsfunktionen (OECF) enligt ISO 14524." + +#: src/tags.cpp:815 +msgid "Interlace" +msgstr "Fläta" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "Visar fältnumret för flerfältsbilder." + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "Tidszonsförskjutning" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" +"Den här valfria taggen kodar tidszonen för kamerans klocka (relativt till " +"Greenwich Mean Time) som användes för att skapa taggvärdet för " +"DataTimeOriginal när bilden togs. Den kan ocksÃ¥ innehÃ¥lla " +"tidszonsförskjutningen för klockan som användes för att skapa taggvärdet för " +"DateTime när bilden ändrades." + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "Självutlösningsläge" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" +"Antal sekunder som bildfÃ¥ngst fördröjdes frÃ¥n det att knappen trycktes ner." + +#: src/tags.cpp:824 +msgid "Date Time Original" +msgstr "Datum/tid original" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "Datum och tid dÃ¥ den ursprungliga bilddatan skapades." + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "Specifik för komprimerad data; visar komprimerade bitar per bildpunkt." + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Slutarhastighet." + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "Objektivets öppning." + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "Värde för ljusstyrkan." + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "Exponeringsprioritet." + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Största bländarvärde" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "Objektivets minsta F-nummer." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "AvstÃ¥nd till motivet i meter." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Mätarläge." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Typ av ljuskälla." + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "Visar blixtens tillstÃ¥nd när bilden togs." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "Den faktiska brännvidden för objektivet i millimeter." + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "Blixtenergi (BCPS)." + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "Kamerans SFR." + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Brus" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "Brusmätningsvärden." + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Antal bildpunkter per FocalPlaneResolutionUnit (37392) i ImageWidth-" +"beskrivningen för bilden." + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Antal bildpunkter per FocalPlaneResolutionUnit (37392) i ImageLength-" +"beskrivningen för bilden." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" +"Mätningsenhet för FocalPlaneXResolution(37390) och FocalPlaneYResolution" +"(37391)." + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "Bildens tilldelade nummer, till exempel i en sekventiell upprepning." + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "Säkerhetsklassificering" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "Bildens tilldelade säkerhetsklassificering." + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "Lista över vad som har gjorts med bilden." + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "Visar platsen och ytan för huvudmotivet i scenen." + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "Kodar kamerans exponeringsindexinställning när bilden togs." + +#: src/tags.cpp:847 +msgid "TIFF/EP Standard ID" +msgstr "TIFF/EP standard-ID" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" +"InnehÃ¥ller fyra ASCII-tecken som representerar TIFF/EP-standardversionen av " +"en TIFF/EP-fil, t.ex. â€1â€, â€0â€, â€0â€, â€0â€" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "Bildsensortyp." + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Windows-titel" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "Titeltagg som används av Windows, kodad i UCS2" + +#: src/tags.cpp:855 +msgid "Windows Comment" +msgstr "Windows-kommentar" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "Kommentartagg som används av Windows, kodad i UCS2" + +#: src/tags.cpp:858 +msgid "Windows Author" +msgstr "Windows-författare" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "Författartagg som används av Windows, kodad i UCS2" + +#: src/tags.cpp:861 +msgid "Windows Keywords" +msgstr "Windows-nyckelord" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "Nyckelordstagg som används av Windows, kodad i UCS2" + +#: src/tags.cpp:864 +msgid "Windows Subject" +msgstr "Windows-motiv" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "Motivtagg som används av Windows, kodad i UCS2" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "Utskriftsbildsmatchning" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "Utskriftsbildsmatchning, behöver beskrivning." + +#: src/tags.cpp:870 +msgid "DNG version" +msgstr "DNG-version" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" +"Taggen kodar DNGs versionsnummer i fyra nivÃ¥er. För filer som följer version " +"1.1.0.0 av DNGs specifikation ska taggen innehÃ¥lla byte: 1, 1, 0, 0." + +#: src/tags.cpp:875 +msgid "DNG backward version" +msgstr "DNG bakÃ¥t-version" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" +"Taggen specificerar den äldsta versionen av Digital Negativ-specifikationen " +"en fil är kompatibel med. Läsare bör inte försöka läsa en fil om taggen " +"anger ett versionsnummer som är nyare än versionen av specifikationen som " +"läsaren baserades pÃ¥. Utöver att kontrollera versionstaggarna ska läsarna, " +"för alla taggar, kolla typerna, antalen, och värdena för att försäkra sig om " +"att den kan läsa filen korrekt." + +#: src/tags.cpp:884 +msgid "Unique Camera Model" +msgstr "Unik kameramodell" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" +"Anger ett unikt, icke-lokalanpassat namn för kameramodellen som skapade " +"bilden i RAW-filen. Namnet bör inkludera tillverkarens namn för att undvika " +"konflikter, och bör inte lokalanpassas, inte ens om kameran själv har döpts " +"om för olika marknader (se LocalizedCameraModel). Strängen kan användas av " +"läsarprogramvara för att indexera inställningar och ersättningsprofiler för " +"varje kamera." + +#: src/tags.cpp:892 +msgid "Localized Camera Model" +msgstr "Lokalanpassad kameramodell" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" +"Samma som fältet UniqueCameraModel, förutom att namnet kan lokalanpassas för " +"olika marknader för att stämma överens med kamerans namn där." + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "CFA-planfärg" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" +"TillhandahÃ¥ller en mappning mellan värdena i CFAPattern-taggen och " +"plannumren i LinearRaw-rymden. Taggen krävs för icke-RGB CFA-bilder." + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "CFA-layout" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "Beskriver den spatiala layouten av CFA." + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" +"Beskriver en uppslagningstabell som mappar lagrade värden som linjära " +"värden. Taggen används oftast för att öka komprimeringen genom att lagra den " +"rÃ¥a datan i ett icke-linjärt, mer visuellt standardiserat utrymme med färre " +"totala kodningsnivÃ¥er. Om SamplesPerPixel inte är lika med ett gäller denna " +"enda tabell för alla samplingar för varje bildpunkt." + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "SvartnivÃ¥ upprepningsdim" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "Anger upprepningsmönstrets storlek för BlackLevel-taggen." + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" +"Anger noll-ljusets (s.k. termiskt svart eller svart ström) kodningsnivÃ¥, som " +"ett upprepat mönster. Mönstrets origo är det översta vänstra hörnet i " +"ActiveArea-rektangeln. Värdena lagras i ordningen rad-kolumn-" +"samplingskanning." + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "SvartnivÃ¥ns delta-h" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" +"Om noll-ljusets kodningsnivÃ¥ är en funktion av bildkolumnen specificerar " +"BlackLevelDeltaH skillnaden mellan noll-ljuskodningsnivÃ¥n för varje kolumn " +"och basvärdet för noll-ljuskodningsnivÃ¥n. Om SamplesPerPixel inte är lika " +"med ett gäller denna enda tabell för alla samplingar i alla bildpunkter." + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "SvartnivÃ¥ns delta-v" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" +"Om noll-ljusets kodningsnivÃ¥ är en funktion av bildraden specificerar taggen " +"skillnaden mellan noll-ljuskodningsnivÃ¥n för varje kolumn och basvärdet för " +"noll-ljuskodningsnivÃ¥n. Om SamplesPerPixel inte är lika med ett gäller denna " +"enda tabell för alla samplingar i alla bildpunkter." + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "VitnivÃ¥" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" +"Taggen anger den fullmättade kodningsnivÃ¥n för RAW-samplingsvärdena. Mättnad " +"orsakas antingen av att sensorn själv blir icke-linjär i sin respons, eller " +"av att kamerans analog-till-digital-konverterare överskrider sin gräns." + +#: src/tags.cpp:941 +msgid "Default Scale" +msgstr "Standardskalning" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" +"DefaultScale krävs för kameror med bildpunkter som inte är fyrkantiga. Det " +"anger standardskalningsfaktorn för varje riktning vid konvertering av bilden " +"till fyrkantiga bildpunkter. I allmänhet väljs faktorn sÃ¥ att den " +"ungefärliga bildpunktsmängden bevaras. För CFA-bilder som använder CFALayout " +"lika med 2, 3, 4, eller fem, som Fujifilm SuperCCD, bör värdena skilja sig " +"med faktorn 2,0." + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "Standardbeskärningsorigo" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" +"RAW-bilder lagrar ofta extrabildpunkter runt den färdiga bildens kanter. " +"Dessa extrabildpunkter hjälper till att förhindra interpolationsdefekter " +"nära kanterna pÃ¥ den färdiga bilden. DefaultCropOrigin anger origo för den " +"färdiga bildens yta, i RAW-bildskoordinater (d.v.s. innan DefaultScale har " +"tillämpats), relativt till översta vänstra hörnet av ActiveArea-rektangeln." + +#: src/tags.cpp:957 +msgid "Default Crop Size" +msgstr "Standardbeskärningsstorlek" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" +"RAW-bilder lagrar ofta extrabildpunkter runt den färdiga bildens kanter. " +"Dessa extra bildpunkter hjälper till att förhindra interpolationsdefekter " +"nära kanterna pÃ¥ den färdiga bilden. DefaultCropSize anger storleken för den " +"färdiga bildens yta, i RAW-bildskoordinater (d.v.s. innan DefaultScale har " +"tillämpats)." + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "Färgmatris 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" +"ColorMatrix1 definierar en transformationsmatris som konverterar XYZ-värden " +"till referenskamerans egna färgrymdsvärden, under den första " +"kalibreringsilluminanten. Matrisvärdena lagras i radskanningsordning. " +"ColorMatrix1-taggen krävs för alla icke-monokroma DNG-filer." + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "Färgmatris 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" +"ColorMatrix2 definierar en transformeringsmatris som konverterar XYZ-värden " +"till referenskamerans egna färgrymdsvärden, under den andra " +"kalibreringsilluminanten. Matrisvärdena lagras i radskanningsordning." + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "Kamerakalibrering 1" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"CameraCalibration1 definierar en kalibreringsmatris som transformerar " +"referenskamerans egna färgrymdsvärden till individuella kameraspecifika " +"färgrymdsvärden under den första kalibreringsilluminanten. Matrisen lagras i " +"radskanningsordning. Matrisen lagras separat frÃ¥n matrisen som anges i " +"ColorMatrix1-taggen för att göra det möjligt för RAW-konverterare att byta " +"ut färgmatriserna baserat pÃ¥ UniqueCameraModel-taggen, medan man fortfarande " +"har nytta av all kamera-specifik kalibrering som utförts av kamerans " +"tillverkare." + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "Kamerakalibrering 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" +"CameraCalibration2 definierar en kalibreringsmatris som transformerar " +"referenskamerans egna färgrymdsvärden till individuella kameraspecifika " +"färgrymdsvärden under den andra kalibreringsilluminanten. Matrisen lagras i " +"radskanningsordning. Matrisen lagras separat frÃ¥n matrisen som specificeras " +"i ColorMatrix2-taggen för att göra det möjligt för RAW-konverterare att byta " +"ut färgmatriserna baserat pÃ¥ UniqueCameraModel-taggen, medan man fortfarande " +"har nytta av all kamera-specifik kalibrering som utförts av kamerans " +"tillverkare." + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "Reduceringsmatris 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"ReductionMatrix1 definierar en dimensionsreduceringsmatris som används i " +"första stadiet dÃ¥ kamerans egna färgrymdsvärden konverteras till XYZ-värden " +"under den första kalibreringsilluminanten. Taggen används bara om " +"ColorPlanes är större än 3. Matrisen lagras i radskanningsordning." + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "Reduceringsmatris 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" +"ReductionMatrix2 definierar en dimensionsreduceringsmatris som används i " +"första stadiet dÃ¥ kamerans egna färgrymdsvärden konverteras till XYZ-värden, " +"under den andra kalibreringsilluminanten. Taggen används bara om ColorPlanes " +"är större än 3. Matrisen lagras i radskanningsordning." + +#: src/tags.cpp:1011 +msgid "Analog Balance" +msgstr "Analog balans" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" +"I normala fall är inte de lagrade RAW-värdena vitbalanserade, eftersom all " +"digital vitbalansering kommer reducera den färdiga bildens dynamikintervall " +"om användaren sedan skulle vilja justera vitbalansen; men om kamerans " +"hÃ¥rdvara klarar av att vitbalansera färgkanalerna innan signalen " +"digitaliseras kan den färdiga bildens dynamikintervall förbättras. " +"AnalogBalance definierar förstärkningen, antingen analog (rekommenderas) " +"eller digital (rekommenderas inte) som sedan tillämpas pÃ¥ de lagrade RAW-" +"värdena." + +#: src/tags.cpp:1021 +msgid "As Shot Neutral" +msgstr "Som vid fotografering, neutral" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" +"Specificerar den valda vitbalansen vid fotograferingstillfället, kodad som " +"koordinater i en helt neutral färg i linjära referensrymdsvärden. Användning " +"av den här taggen föregÃ¥r användning av taggen AsShotWhiteXY." + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "Som vid fotografering, vit XY" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" +"Specificerar den valda vitbalansen vid fotograferingstillfället, kodad som x-" +"y-kromaticitetskoordinater. Användning av den här taggen föregÃ¥r användning " +"av taggen AsShotNeutral." + +#: src/tags.cpp:1032 +msgid "Baseline Exposure" +msgstr "Basexponering" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" +"Kameramodeller gör olika avvägningar mellan utrymme för högdagrar och " +"skuggbrus. Vissa ger ett stort utrymme för högdagrar vid normal exponering. " +"Det här möjliggör tillämpning av stor negativ exponeringskompensation vid " +"RAW-konvertering, men betyder ocksÃ¥ att normala exponeringar innehÃ¥ller mer " +"skuggbrus. Andra modeller ger mindre utrymme vid normal exponering. Det ger " +"mindre utrymme för negativ exponeringskompensation, men ger ett lägre " +"skuggbrus för normala exponeringar. PÃ¥ grund av dessa skillnader mÃ¥ste en " +"RAW-konverterare variera sin nollpunkt för exponeringskompensationskontroll " +"frÃ¥n en modell till en annan. BaselineExposure anger med hur mycket (i EV-" +"enheter) som nollpunkten ska flyttas. Positiva värden ger ljusare resultat, " +"medan negativa värden ger mörkare resultat." + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "Basbrus" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" +"Specificerar den relative brusnivÃ¥n i kameramodellen vid ett bas-ISO-värde " +"av 100, jämfört med en referenskameramodell. Eftersom brusnivÃ¥er brukar " +"skilja sig med den ungefärliga kvadratroten för ISO-värdet kan en RAW-" +"konverterare använda det här värdet, kombinerat med nuvarande ISO, för att " +"gissa den relativa brusnivÃ¥n i nuvarande bild." + +#: src/tags.cpp:1054 +msgid "Baseline Sharpness" +msgstr "Basskärpa" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" +"Anger den relativa skärpa som krävs för den här kameramodellen, jämfört med " +"en referenskameramodell. Kameramodeller varierar i styrka bland sina " +"kantutjämningsfilter. Kameror med svaga eller frÃ¥nvarande filter kräver " +"mindre skärpa än kameror med starka kantutjämningsfilter." + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "Bayer-gröndelning" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" +"Gäller bara för CFA-bilder som använder ett Bayer-mönsterfilterfält. Taggen " +"anger, i godtyckliga enheter, hur när värdet för de gröna bildpunkterna i de " +"blÃ¥a/gröna raderna följer värdena för de gröna bildpunkterna i de röda/gröna " +"raderna. Värdet 0 betyder att de tvÃ¥ olika gröna bildpunkterna stämmer nära " +"överens, medan ett annat värde innebär att de ibland skiljer sig. Det " +"praktiska intervallet för taggen är frÃ¥n 0 (ingen skillnad) till c:a 5000 " +"(riktigt stor skillnad)." + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "Linjär respons-gräns" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" +"Vissa sensorer har ett oförutsägbart olinjärt drag i sin respons när de nÃ¥r " +"taket för sitt kodningsintervall. Det resulterar i färgskiftningar i " +"högdageromrÃ¥dena i den resulterande bilden om inte RAW-konverteraren " +"kompenserar för effekten. LinearResponeLimit specificerar gränsen i " +"kodningsintervallet där responsen kan bli svÃ¥rt olinjär." + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" +"CameraSerialNumber innehÃ¥ller serienumret för kameran eller kamerachassit " +"som tog bilden." + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Objektivinformation" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" +"InnehÃ¥ller information om objektivet som tog bilden. Om de minsta f-stoppen " +"är okända ska de kodas som 0/0." + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "Kromaoskärperadie" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" +"ChromaBlurRadius talar om för DNG-läsaren hur mycket kromasuddighet ska " +"tillämpas pÃ¥ bilden. Om taggen utesluts kommer läsaren använda sin " +"standardinställning. I normala fall används taggen bara för icke-CFA-bilder, " +"eftersom mängden kromasuddighet som krävs för mosaikbilder beror starkt pÃ¥ " +"av-mosaikalgoritmen, i vilket fall DNG-läsarens standardvärde sannolikt har " +"optimerats för sin särskilda av-mosaikalgoritm." + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "Kantutjämningsstyrka" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" +"Talar om för DNG-läsaren hur starkt kamerans kantutjämningsfilter är. Värdet " +"0.0 innebär att utjämningsfilter saknas (d.v.s.. kameran ger kantdefekter " +"med vissa motiv), medan värdet 1.0 innebär att kantutjämningsfiltret är " +"starkt (dvs. att kameran nästan aldrig ger kantdefekter)." + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "Skuggskalning" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" +"Taggen används av Adobe Camera RAW för att kontrollera känsligheten i dess " +"â€Skuggâ€-reglage." + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "Privat DNG-data" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" +"TillhandahÃ¥ller en metod för kameratillverkare att lagra privat data i DNG-" +"filen för bruk med deras egna RAW-konverterare, och att bevara datan i " +"program som redigerar DNG-filer." + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "MakerNote-säkerhet" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" +"MakerNoteSafety lÃ¥ter DNG-läsaren veta om Exifs MakerNote-tagg tryggt kan " +"bevaras tillsammans med resten av Exif-datan. Filhanterare och annan " +"bildhanteringsmjukvara som behandlar en bild med en bevarad MakerNote bör " +"veta om att miniatyrbildsdata som inbäddats i MakerNote kan vara förÃ¥ldrad, " +"och kanske inte visar den fullstora bildens nuvarande tillstÃ¥nd." + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "Kalibreringsilluminant 1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" +"Illuminanten som används för den första serien kalibreringstaggar " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). TillÃ¥tna värden för " +"taggen är detsamma som de tillÃ¥tna värdena för Exif-taggen LightSource." + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "Kalibreringsilluminant 2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" +"Illuminanten används för en valfri andra uppsättning färgkalibreringstaggar " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). TillÃ¥tna värden för " +"taggen är desamma som för CalibrationIlluminant1-taggen; men om bÃ¥da används " +"fÃ¥r ingen av dem ha värdet 0 (okänt)." + +#: src/tags.cpp:1132 +msgid "Best Quality Scale" +msgstr "Bästa kvalitetsskalning" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" +"För vissa kameror uppnÃ¥s inte bästa möjliga bildkvalitet genom att bevara " +"totala bildpunktsantalet vid konvertering. Till exempel Fujifilm SuperCCD-" +"bilder har maximal detaljrikedom när deras bildpunktsantal fördubblas. " +"Taggen specificerar talet med vilket värdena i taggen DefaultScale mÃ¥ste " +"multipliceras för att uppnÃ¥ bästa bildkvalitetsstorlek." + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "RAW-data, unik ID" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" +"Taggen innehÃ¥ller en 16-byte unik identifierare för RAW-bilddatan i DNG-" +"filen. DNG-läsare kan använda taggen för att känna igen en viss RAW-bild, " +"även om filens namn eller metadatan i filen har ändrats. Om en DNG-skrivare " +"skapar en sÃ¥dan identifierare ska den göra det med algoritm som försäkrar " +"sig om att det är mycket osannolikt att tvÃ¥ olika bilder kommer fÃ¥ samma " +"identifierare." + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "Ursprungligt RAW-filnamn" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" +"Om DNG-filen konverterades frÃ¥n en icke-DNG RAW-fil innehÃ¥ller taggen " +"filnamnet för den ursprungliga RAW-filen." + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "Ursprunglig RAW-fildata" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" +"Om DNG-filen konverterades frÃ¥n en icke-DNG RAW-fil innehÃ¥ller taggen det " +"komprimerade innehÃ¥llet i den ursprungliga RAW-filen. InnehÃ¥llet i taggen " +"använder alltid big-endian byte-ordning. Taggen innehÃ¥ller en sekvens av " +"datablock. Framtida versioner av DNG-specifikationen kan definiera " +"ytterligare datablock, sÃ¥ DNG-läsare bör ignorera extra byte när taggen " +"tolkas. DNG-läsare ska ocksÃ¥ känna av de fall dÃ¥ datablock saknas frÃ¥n " +"sekvensens slut, och ska anta ett standardvärde för alla saknade block. Det " +"finns inga utfyllnads- eller rättningsbyte mellan datablock." + +#: src/tags.cpp:1164 +msgid "Active Area" +msgstr "Aktivt omrÃ¥de" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" +"Den här rektangeln definierar de aktiva (icke-maskerade) bildpunkterna i " +"sensorn. Ordningen för rektangels koordinater är: överst, vänster, nederst, " +"höger." + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "Maskerade omrÃ¥den" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" +"Taggen innehÃ¥ller en lista över icke-överlappande rektangelkoordinater för " +"helt maskerade bildpunkterna, vilka vid behov kan användas av DNG-läsare för " +"att mäta svartkodningsnivÃ¥n. Ordningen för varje triangels koordinat är: " +"överst, vänster, nederst, höger. Om RAW-bilddatan redan har sin " +"svartkodningsnivÃ¥ subtraherad används inte taggen, eftersom de maskerade " +"bildpunkterna inte fyller nÃ¥gon funktion längre." + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "Som vid fotografering ICC-profil" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" +"Taggen innehÃ¥ller en ICC-profil som, tillsammans med taggen " +"AsShotPreProfileMatrix, ger kameratillverkaren ett sätt att ange en standard-" +"färgÃ¥tergivning utifrÃ¥n kamerans färgrymdskoordinater (linjära " +"referensvärden) in i ICC-profilens anslutningsrymd. ICC-" +"profilanslutningsrymden är en utmatningshänvisad färgmetrisk rymd, medan de " +"andra färgkalibreringstaggarna i DNG specificerar en konvertering till en " +"scenhänvisad färgmetrisk rymd. Det här innebär att Ã¥tergivningen i den här " +"profilen bör inkludera föredragen färgton och färguppsättningsmappning som " +"behövs för att konvertera mellan scenhänvisade värden och " +"utmatningshänvisade värden." + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "Som vid fotografering för-profilsmatris" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" +"Taggen används tillsammans med AsShotICCProfile-taggen. Den anger en matris " +"som bör tillämpas pÃ¥ kamerans färgrymdskoordinater innan värdena behandlas " +"genom ICC-profilen som specificeras i AsShotICCProfile-taggen. Matrisen " +"lagras i radskanningsordning. Om ColorPlanes är större än 3 kan matrisen " +"(men mÃ¥ste inte) reducera dimensionaliteten för färgdatan ner till tre " +"komponenter, dÃ¥ AsShotICCProfile bör ha 3 snarare än ColorPlanes " +"inmatningskomponenter." + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "Nuvarande ICC-profil" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Taggen används tillsammans med taggen CurrentPreProfileMatrix. " +"CurrentICCProfile- och CurrentPreProfileMatrix-taggarna har samma syfte och " +"används pÃ¥ samma sätt som taggparet AsShotICCProfile och " +"AsShotPreProfileMatrix, bortsett frÃ¥n att de ska användas av RAW-" +"filredigerare snarare än kameratillverkare." + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "Nuvarande förprofilsmatris" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" +"Taggen används tillsammans med taggen CurrentICCProfile. CurrentICCProfile " +"och CurrentPreProfileMatrix-taggarna har samma syfte och används pÃ¥ samma " +"sätt som taggparet AsShotICCProfile och AsShotPreProfileMatrix, bortsett " +"frÃ¥n att de ska användas av RAW-filredigerare snarare än kameratillverkare." + +#: src/tags.cpp:1212 +msgid "Colorimetric Reference" +msgstr "Colorimetric referens" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" +"Färgmodellen DNG dokumenterar en transformering mellan kamerafärger oc CIE " +"XYZ-värden. Denna tagg beskriver den colorimetriska referensen för CIE XYZ--" +"värdena. 0 = XYZ-värdena är scenrefererade. 1 = XYZ-värdena är " +"utmatningsrefererade, använder ICC perceptual dynamic range. Denna tagg " +"tillÃ¥ter utmatningsrefererad data till att lagras i DNG-filer och ändÃ¥ " +"bearbetas korrekt av DNG-läsare." + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "Kamerakalibreringsignatur" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" +"En UTF8-kodad sträng associerad med taggarna CameraCalibration1 och " +"CameraCalibration2. Taggarna CameraCalibration1 och CameraCalibration2 bör " +"endast används i DNG-färgtransformering om strängen lagrad i " +"CameraCalibrationSignature-taggen precis matchar strängen lagrad i " +"ProfileCalibrationSignature för den valda kameraprofilen." + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "Profilkalibreringssignatur" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" +"En UTF8-kodad sträng associerad med kameraprofiltaggarna. Taggarna " +"CameraCalibration1 och CameraCalibration2 bör endast användas i DNG-" +"färgtransformering om strängen lagrad i CameraCalibrationSignature precis " +"matchar strängen lagrad i taggen ProfileCalibrationSignature för den valda " +"kamera profilen." + +#: src/tags.cpp:1234 +msgid "As Shot Profile Name" +msgstr "Profilnamn som taget" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" +"En UTF-8-kodad sträng innehÃ¥llandes namnet för kameraprofilen â€as shotâ€, om " +"nÃ¥gon." + +#: src/tags.cpp:1238 +msgid "Noise Reduction Applied" +msgstr "Brusreducering tillämpad" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" +"Taggen indikerar hur mycket brusreducering som tillämpas pÃ¥ rÃ¥datan pÃ¥ en " +"skala frÃ¥n 0.0 till 1.0. Ett 0.0-värde indikerar att ingen brusreducering " +"har tillämpats. Ett 1.0-värde indikerar att â€ideal†mängd brusreducering har " +"tillämpats, d.v.s. att DNG-läsaren inte ska lägga pÃ¥ ytterligare " +"brusreducering som standard. Ett värde pÃ¥ 0/0 indikerar att parametern är " +"okänd." + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "Profilnamn" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" +"En UTF-8-kodad sträng med namnet för kameraprofilen. Taggen är valfri om det " +"endast finns en kameraprofil lagrad i filen men krävs för alla " +"kameraprofiler om det finns mer än en kameraprofil lagrad i filen." + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "Profiltoning sat map dims" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" +"Taggen specificerar antalet inmatningssamplingar för varje dimension av " +"nyans-/mättnad-/intensitetsmappningstabellerna. Data för dessa tabeller " +"lagras i taggarna ProfileHueSatMapData1 och ProfileHueSatMapData2. Den " +"vanligaste användningen har ValueDivisions lika med 1, sÃ¥ endast nyans och " +"mättnad används som indata för mappningstabellen." + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "Profile Hue Sat Map Data 1" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" +"Taggen innehÃ¥ller data för den första nyans-/mättnad-/intensitet-" +"mappningstabellen. Varje post i tabellen innehÃ¥ller tre 32-bitars IEEE " +"flyttalsvärden. Första värdet är nyans-skiftning i grader, det andra värdet " +"är mättnadsskalfaktor och det tredje värdet är en intensitetsskalfaktor. " +"Tabellposterna lagras i taggen i nästlad loop-order, med intensitetsdelaren " +"i yttre loop, nyansdelarna i mittenloopen och mättnadsdelarna i inre loop. " +"Alla nollindata poster mÃ¥ste ha skalfaktor 1.0." + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "Profile Hue Sat Map Data 2" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" +"Taggen innehÃ¥ller data för det andra nyans-/mättnad-/intensitet-" +"mappningstabellen. Varje post i tabellen innehÃ¥ller tre 32-bitars IEEE " +"flyttalsvärden. Första värdet är nyans-skiftning i grader, det andra värdet " +"är mättnads-skalfaktor och det tredje värdet är en intensitetsskalfaktor. " +"Tabellposterna lagras i taggen i nästlad loop-order, med intensitetsdelaren " +"i yttre loop, nyans-delarna i mittenloop och mättnadsdelarna i inre loopen. " +"Alla nollindata poster mÃ¥ste ha skalfaktor 1.0." + +#: src/tags.cpp:1279 +msgid "Profile Tone Curve" +msgstr "Profiltoningskurva" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" +"Taggen innehÃ¥ller en standardtonkurva som kan tillämpas under bearbetning av " +"bilden som en startpunkt för användarjusteringar. Kurvan är specificerad som " +"ett 32-bitars IEEE-flyttalsvärdepar i linjär gamma. Varje sampling har ett " +"indatavärde i omrÃ¥det 0.0 till 1.0 och ett utdatavärde i omrÃ¥det 0.0 till " +"1.0. Den första samplingen ska vara (0.0, 0.0) och den sista samplingen ska " +"vara (1.0, 1.0). Interpolerar kurvan med hjälp av cubic spline." + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "Profilinmatningspolicy" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" +"Taggen innehÃ¥ller information om användningsreglerna för den associerade " +"kameraprofilen." + +#: src/tags.cpp:1292 +msgid "Profile Copyright" +msgstr "Profil-upphovsrätt" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" +"En UTF-8-kodad sträng innehÃ¥llandes upphovsrättsinformationen för " +"kameraprofilen. Denna sträng bör alltid förvaras tillsammans med andra " +"kameraprofiltaggar." + +#: src/tags.cpp:1297 +msgid "Forward Matrix 1" +msgstr "Forward Matrix 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" +"Taggen definierar en matris som mappar vitbalanserade kamerafärger till XYZ " +"D50-färger." + +#: src/tags.cpp:1301 +msgid "Forward Matrix 2" +msgstr "Forward Matrix 2" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "Namn för förhandsvisningsprogrammet" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" +"En UTF-8-kodad sträng innehÃ¥llandes namnet för programmet som skapade " +"förhandsvisningen lagrad i IFD." + +#: src/tags.cpp:1309 +msgid "Preview Application Version" +msgstr "Version för förhandsvisningsprogrammet" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" +"En UTF-8-kodad sträng innehÃ¥llandes versionsnumret för programmet som " +"skapade förhandsvisningen lagrad i IFD." + +#: src/tags.cpp:1313 +msgid "Preview Settings Name" +msgstr "Inställningsnamn för förhandsvisning" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" +"En UTF-8-kodad sträng innehÃ¥llandes namnet för konverteringsinställningarna " +"(exempelvis snapshotnamn) använd för förhandsvisningen lagrad i IFD." + +#: src/tags.cpp:1317 +msgid "Preview Settings Digest" +msgstr "Inställningssumma för förhandsvisning" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" +"Ett unikt ID för konverteringsinställningarna (exempelvis MD5 digest) " +"använda för att rendera förhandsvisningen lagrad i IFD." + +#: src/tags.cpp:1321 +msgid "Preview Color Space" +msgstr "Färgrymd för förhandsvisning" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" +"Taggen specificerar färgrymden i vilken den renderade förhandsvisningen i " +"IFD lagras. Standardvärdet för denna tagg är sRGB för färgförhandsvisningar " +"och Gray Gamma 2.2 för monokroma förhandsvisningar." + +#: src/tags.cpp:1326 +msgid "Preview Date Time" +msgstr "Datum och tid för förhandsvisning" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" +"Taggen är en ASCII-sträng innehÃ¥llandes namnet för datum/tid dÃ¥ " +"förhandsvisningen i IFD renderades. Datum/tid är kodat med ISO 8601-formatet." + +#: src/tags.cpp:1331 +msgid "Raw Image Digest" +msgstr "Kontrollsumma för rÃ¥bild" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" +"Taggen är en MD5-kontrollsumma av rÃ¥bildsdata. Alla bildpunkter i bilden är " +"bearbetade i radskanningsordning. Varje bildpunkt är nollpaddad till 16 " +"eller 32-bitars djup (16-bitars för data mindre än eller lika med 16-bitars " +"djup, annars 32-bitar). Data för varje bildpunkt bearbetas i little-endian " +"byteordning." + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "Ursprunglig kontrollsumma för rÃ¥bild" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" +"Taggen är en MD5-kontrollsumma för datat lagrat i taggen OriginalRawFileData." + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "Blockstorlek för underruta" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" +"Vanligtvis lagras bildpunkterna i en ruta i enkel radskanningordning. Taggen " +"anger att bildpunkterna i en ruta ska grupperas, först till rektangulära " +"block av specificerad storlek. Blocken lagras i radskanningsordning. I varje " +"block kommer bildpunkterna att lagras i radskanningsordning. Användningen av " +"ett icke-standardvärde för denna tagg kräver att DNGBackwardVersion är minst " +"1.2.0.0." + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "Radinflätningsfaktor" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" +"Taggen anger att raderna för bilden ska lagras i inflätad ordning. Värdet " +"för taggen specificerar antalet flätade fält. Användning av ett icke-" +"standardvärde för denna tagg kräver att DNGBackwardVersion sätts till minst " +"1.2.0.0." + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "Profile Look Table Dims" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" +"Taggen specificerar antalet indatasamplingar i varje dimension av en " +"standard â€lookâ€-tabell. Data för denna tabell lagras i taggen " +"ProfileLookTableData." + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "Profile Look Table Data" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" +"Taggen innehÃ¥ller en standard â€lookâ€-tabell som kan tillämpas under " +"bearbetning av bilden som en startpunkt för användarjustering. Tabellen " +"använder samma format som tabellerna lagrade i ProfileHueSatMapData1 och " +"ProfileHueSatMapData2 och verkställs i samma färgrymd. Den ska dock " +"verkställas senare i bearbetningsströmmen, efter eventuell " +"exponeringskompensation och/eller fyllnadsljus, men innan tonkurvesteget. " +"Varje post i tabellen innehÃ¥ller tre 32-bitars IEEE flyttalsvärden. Första " +"värdet är nyans-skiftning i grader, andra värdet är mättnadsskalfaktorn och " +"den tredje posten är intensitetsskalfaktorn. Tabellposterna lagras i taggen " +"i nästlad loop-ordning, med intensitetsdivisionen i den yttre loopen, nyans-" +"divisionen i mittenloopen och mättnadsdivisionen i den inre loopen. Alla " +"nollindata-mättnadinmatningar kräver en skalfaktor pÃ¥ 1.0." + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "Opkodlista 1" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" +"Specificerar listan av opkoder som ska tillämpas pÃ¥ den rÃ¥a bilden som lästs " +"in direkt frÃ¥n filen." + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "Opkodlista 2" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" +"Specificerar listan av opkoder som ska tillämpas pÃ¥ den rÃ¥a bilden precis " +"efter att den har blivit mappad till linjära referensvärden." + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "Opkodlista 3" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" +"Specificerar listan av opkoder som ska tillämpas pÃ¥ den rÃ¥a bilden precis " +"efter att den har blivit demosaiced." + +#: src/tags.cpp:1387 +msgid "Noise Profile" +msgstr "Brusprofil" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" +"NoiseProfile beskriver mängden brus i en rÃ¥bild. Specifikt modellerar taggen " +"mängden signalberoende foton (blixt)-brus och signaloberoende " +"sensorläsarbrus, tvÃ¥ vanliga bruskällor i rÃ¥a bilder. Modellen antar att " +"bruset är vitt spatialt oberoende, ignorerar bestämda mönstereffekter och " +"andra källor av brus (e.g. bildpunktavvikelse, spatialberoende " +"termaleffekter, etc.)." + +#: src/tags.cpp:1396 src/tags.cpp:1397 +msgid "Unknown IFD tag" +msgstr "Okänd IFD-tagg" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Inte definierad" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Skapande program" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "Ã…tgärdsprogram" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Porträttläge" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Liggande läge" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Flera punkter" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Volfram (bländande ljus)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "Fint väder" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Molnigt väder" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Dagsljus fluorescerande (D 5700 - 7100K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Dagsljus vitt fluorescerande (N 4600 - 5400K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Kallt vitt fluorescerande (W 3900 - 4500K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "Vitt fluorescerande (WW 3200 - 3700K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Standardljus A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Standardljus B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Standardljus C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "ISO studio volfram" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Annan ljuskälla" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Okalibrerad" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "FärgomrÃ¥de med en krets" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "FärgomrÃ¥de med tvÃ¥ kretsar" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "FärgomrÃ¥de med tre kretsar" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "FärgomrÃ¥de i sekvens" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Trilinjär sensor" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Färglinjär i sekvens" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Filmläsare" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "Reflexion utskriftsskanner" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Digital stillbildskamera" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "Direkt fotograferad" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Normal process" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Anpassad process" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "LÃ¥g förstärkning upp" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Hög förstärkning upp" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "LÃ¥g förstärkning ner" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Hög förstärkning ner" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Närbild" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Fjärrbild" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "Exponeringstid, angivet i sekunder (s)." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" +"Visar spektralkänsligheten för varje kanal i den använda kameran. Taggvärdet " +"är en ASCII-sträng som är kompatibel med standarden utvecklad av den " +"tekniska kommittén ASTM." + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "Opto-elektorisk konverteringsfunktion" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" +"Visar den opto-elektroniska konverteringsfunktionen (OECF) som specificeras " +"i ISO 14524. är förhÃ¥llandet mellan kamerans optiska inmatning och " +"bildens värden." + +#: src/tags.cpp:1573 +msgid "Sensitivity Type" +msgstr "Känslighetstyp" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" +"Taggen känslighetstyp indikerar vilken av parametrarna för ISO122332 som är " +"PhotographicSensitivity-taggen. Även om det är en valfri tagg bör den lagras " +"när taggen PhotographicSensitivity lagras. Värde = 4, 5, 6 eller 7 kan " +"användas i det fall att värdena pÃ¥ flertalet parametrar är detsamma." + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "Standard Output Sensitivity" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" +"Taggen indikerar standard utdata känslighetsvärde för en kamera eller " +"indataenhet som definieras i ISO 12232. Denna tag ska inte lagras utan " +"taggarna PhotographicSensitivity och SensitivityType." + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "Rekommenderat exponeringsindexvärde" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" +"Taggen indikerar rekommenderat exponeringsindexvärde för en kamera eller " +"indataenhet som definieras i ISO 12232. Denna tag ska inte lagras utan " +"taggarna PhotographicSensitivity och SensitivityType." + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" +"Taggen indikerar ISO-hastighet värde för en kamera eller indataenhet som " +"definieras i ISO 12232. Denna tag ska inte lagras utan taggarna " +"PhotographicSensitivity och SensitivityType." + +#: src/tags.cpp:1595 +msgid "ISO Speed Latitude yyy" +msgstr "ISO Speed Latitude yyy" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" +"Taggen indikerar ISO-hastighet latitude yyy-värde för en kamera eller " +"indataenhet som definieras i ISO 12232. Denna tag ska inte lagras utan " +"ISOSpeed och ISOSpeedLatitudezzz." + +#: src/tags.cpp:1600 +msgid "ISO Speed Latitude zzz" +msgstr "ISO Speed Latitude zzz" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" +"Taggen indikerar ISO-hastighet latitude zzz-värde för en kamera eller " +"indataenhet som definieras i ISO 12232. Denna tag ska inte lagras utan " +"ISOSpeed och ISOSpeedLatitudeyyy." + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"Den version av standarden som har stöd. Om fältet inte finns antas det visa " +"pÃ¥ att standarden inte följs." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Datum och tid (original)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Datum och tid dÃ¥ den ursprungliga bilddatan skapades. För en digital " +"stillbildskamera lagras datum och tid dÃ¥ bilden togs." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Datum och tid (digitaliserad)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Datum och tid dÃ¥ bilden lagrades som digital data." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" +"Information som är specifik för den komprimerade datan. Kanalerna för varje " +"komponent ordnas frÃ¥n den första komponenten till den fjärde. För " +"okomprimerade data anges datasorteringen i -" +"taggen. Men eftersom bara kan uttrycka ordningen " +"Y, Cb, och Cr, tillhandahÃ¥lls den här taggen för fall dÃ¥ komprimerad data " +"använder andra komponenter än Y, Cb, och Cr, och för att möjliggöra stöd för " +"andra sekvenser." + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "Komprimerade bitar per bildpunkt" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" +"Information som är bunden till komprimerad data. Komprimeringsläget som " +"används för en komprimerad bild indikeras i enheten bitar per bildpunkt." + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" +"Slutarhastighet. Enheten är APEX (Additive system of Photographic EXposure)." + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Objektivöppningen. Enheten är APEX-värdet." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" +"Ljusstyrkans värde. Enheten är APEX-värdet. I vanliga fall anges det i " +"intervallet -99,99 till 99,99." + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Exponeringsprioritet" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" +"Exponeringsprioriteten. Enheten är APEX-värdet. I vanliga fall anges det i " +"intervallet -99,99 till 99,99." + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" +"Objektivets minsta F-nummer. Enheten är APEX-värdet. I vanliga fall anges " +"det i intervallet 00,00 till 99,99, men det är inte begränsat till det." + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "Taggen lagras när en bild tas med hjälp av stroboskopljus (blixt)." + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" +"Objektivets faktiskt brännvidd i mm. Konvertering sker inte för brännvidd " +"hos en 35 mm filmkamera." + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "Taggen visar platsen och omrÃ¥det för de huvudsakliga motiven i scenen." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Anteckning frÃ¥n tillverkaren" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" +"En tagg för tillverkare av Exif-skrivare att spara information. InnehÃ¥llet " +"bestäms av tillverkaren." + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" +"En tagg där Exif-användare kan skriva in nyckelord eller kommentarer för " +"bilden vid sidan av dem i , och utan " +"teckenkodsbegränsningarna i taggen ." + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "Delsekunder tid" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" +"En tagg som används för att lagra delar av sekunder för -taggen." + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Delsekunder ursprunglig tid" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"En tagg som används för att lagra delar av sekunder för -" +"taggen." + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Delsekunder tid digitaliserad" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" +"En tagg som används för att lagra delar av sekunder för -" +"taggen." + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "FlashPix-version" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "Versionen av FlashPix-formatet som stöds av en FPXR-fil." + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" +"Färgrymdsinformationstaggen lagras alltid som färgrymdsidentifieraren. I " +"normala fall används sRGB för att definiera färgrymden baserat pÃ¥ PC:ns " +"skärmomständigheter och -miljö. Om en annan färgrymd än sRGB används, anges " +"Okalibrerad. Bilddata som anges som Okalibrerad kan behandlas som sRGB när " +"den konverteras till FlashPix." + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" +"Information bunden till komprimerad data. När en komprimerad fil sparas, " +"mÃ¥ste den giltiga bredden för en godtagbar bild lagras i den här taggen, " +"vara sig det finns utfyllnadsdata eller omstartsmarkörer. Taggen bör inte " +"finnas i en okomprimerad fil." + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" +"Information bunden till komprimerad data. När en komprimerad fil sparas, " +"mÃ¥ste den giltiga höjden för en godtagbar bild lagras i den här taggen, vare " +"sig det finns utfyllnadsdata eller omstartsmarkörer. Taggen bör inte finnas " +"i en okomprimerad fil. Eftersom datautfyllnad inte behövs i det vertikala " +"kommer antalet rader som sparas i den här giltig bildhöjdstaggen egentligen " +"vara samma som sparas i SOF." + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" +"Taggen används för att spara namnet pÃ¥ en ljudfil som hör till bilddatan. " +"Den enda relaterande information som sparas här är Exif ljudfilsnamn och -" +"filändelse (en ASCII-sträng som bestÃ¥r av 8 tecken + â€.†+ 3 tecken). " +"Sökvägen sparas inte." + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "Interoperabilitets-IFD-pekare" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" +"Interoperabilitets-IFD bestÃ¥r av taggar som lagrar information för att " +"säkerställa interoperabiliteten och spetsig av följande tagg som finns i " +"Exif IFD. Interoperabilitetsstrukturen i Interoperability-IFD är samma som " +"den TIFF-definierade IFD-strukturen, men innehÃ¥ller inte bilddatan som i " +"regel jämförs med normal TIFF-IFD." + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" +"Visar stroboskopenergin dÃ¥ bilden togs, mätt i Beam Candle Power Seconds " +"(BCPS)." + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" +"Taggen lagrar kamerans eller inmatningsenhetens spatialfrekvenstabell och " +"SFR-värden i frÃ¥ga om bildens bredd, höjd och diagonal riktning enligt " +"specifikationen ISO 12233." + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "Fokalplanets X-upplösning" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" +"Visar antalet bildpunkter i bildens bredd (X) enligt " +" i kamerans brännviddsplan." + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Fokalplanets Y-upplösning" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" +"Visar antalet bildpunkter i bildens höjd (Y) enligt " +" i kamerans brännviddsplan." + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" +"Visar enheten för mätning av och " +". Det här värdet är detsamma som ." + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" +"Visar platsen för det huvudsakliga motivet i scenen. Värdet för den här " +"taggen representerar bildpunkten mitt i huvudmotivet relativt till den " +"vänstra kanten, innan rotationsbehandling per taggen . Det första " +"värdet visar X-kolumnnumret och den andra visar Y-radnumret." + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Exponeringsindex" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Visar det exponeringsindex som hade valts pÃ¥ kameran eller inmatningsenheten " +"vid tiden dÃ¥ bilden togs." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "Visar bildsensortypen i kameran eller inmatningsenheten." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" +"Visar bildkällan. Om en DSC sparade bilden är taggens värde alltid satt till " +"3, vilket visar att bilden togs med en DSC." + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" +"Visar scentypen. Om en DSC sparade bilden mÃ¥ste den här taggen alltid anges " +"som 1, vilket visar att bilden fotograferades direkt." + +#: src/tags.cpp:1776 +msgid "Color Filter Array Pattern" +msgstr "Färgfilterfältsmönster" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" +"Visar färgfilterfältets (CFA) geometriska mönster för bildsensorn när en " +"enkel-krets-färgomrÃ¥dessensor används. Den gäller inte för alla " +"sensormetoder." + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" +"Taggen visar om särskild behandling har skett pÃ¥ bilddatan, som Ã¥tergivning " +"inriktad pÃ¥ utmatning. När särskild behandling utförs förväntas läsaren " +"avaktivera eller minimera all vidare behandling." + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" +"Taggen visar vilket exponeringsläge var aktiverat när bilden togs. I auto-" +"gafflingsläget tar kameran en serie bilder av samma scen vid olika " +"exponeringsinställningar." + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "Taggen visar vilket vitbalansläge som användes när bilden togs." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" +"Taggen visar den digitala zoom som användes när bilden togs. Om det sparade " +"numret är 0 användes ingen digital zoom." + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" +"Taggen visar den motsvarande brännvidd jämfört med en 35 mm filmkamera i mm. " +"Värdet 0 betyder att brännvidden är okänd. Notera att den här taggen inte är " +"samma som ." + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" +"Taggen visar vilken typ av scen som fotograferades. Den kan ocksÃ¥ användas " +"för att lagra i vilket läge bilden togs. Notera att det här skiljer sig frÃ¥n " +"taggen ." + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Taggen visar omfattningen av övergripande bildförstärkningsjustering." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" +"Taggen visar vilken kontrastbehandling som tillämpades av kameran när bilden " +"togs." + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" +"Taggen visar vilken färgmättnadsbehandling som tillämpades av kameran när " +"bilden togs." + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" +"Taggen visar vilken skärpebehandling som tillämpades av kameran när bilden " +"togs." + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" +"Taggen ger information om fotograferingsförhÃ¥llandena för en viss " +"kameramodell. Taggen används bara för att indikera " +"fotograferingsförhÃ¥llanden i läsaren." + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Taggen visar avstÃ¥nd till motivet." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" +"Taggen innehÃ¥ller en identifierare som tilldelas unikt för varje bild. Den " +"lagras som en ASCII-sträng som motsvarar hexadecimal notering och 128-bitars " +"fixerad längd." + +#: src/tags.cpp:1839 +msgid "Camera Owner Name" +msgstr "Kameraägarnamn" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" +"Taggen lagrar ägare för en kamera använd i fotografiet som en ASCII-sträng." + +#: src/tags.cpp:1843 +msgid "Body Serial Number" +msgstr "Kropp-serienummer" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" +"Taggen lagrar serienumret för kroppen pÃ¥ kameran som användes i fotografiet " +"som ASCII-sträng." + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "Objektivspecifikation" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" +"Taggen anger minimal brännvidd, maximal brännvidd, minsta F-nummer i den " +"minsta brännvidden och minsta F-nummer i den maximala brännvidden, vilket är " +"specifikationsinformation för objektivet som användes i fotografiet. När det " +"minsta F-numret är okänt är notationen 0/0" + +#: src/tags.cpp:1854 +msgid "Lens Make" +msgstr "Objektivtillverkare" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "Taggen sparar objektivtillverkaren som en ASCII-sträng." + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" +"Taggen sparar objektivmodellens namn och modellnummer som en ASCII-sträng." + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" +"Taggen lagrar serienumret för den utbytbara objektivet som användes i " +"fotografiet som en ASCII-sträng." + +#: src/tags.cpp:1866 src/tags.cpp:1867 +msgid "Unknown Exif tag" +msgstr "Okänd Exif-tagg" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "Nord" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "Syd" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "Öst" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "Väst" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "Ovanför havsnivÃ¥" + +#: src/tags.cpp:1891 +msgid "Below sea level" +msgstr "Nedanför havsnivÃ¥" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "Mätning pÃ¥gÃ¥r" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "Mätningsinteroperabilitet" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "TvÃ¥dimensionell mätning" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Tredimensionell mätning" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "knop" + +#: src/tags.cpp:1915 +msgid "True direction" +msgstr "Korrekt riktning" + +#: src/tags.cpp:1916 +msgid "Magnetic direction" +msgstr "Magnetisk riktning" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "Kilometer" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "Miles" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "Knop" + +#: src/tags.cpp:1928 +msgid "Without correction" +msgstr "Utan korrigering" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "Korrigering tillämpad" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" +"Visar versionen av . Den givna versionen är 2.0.0.0. Taggen är " +"obligatorisk när taggen används. (OBS: -taggen ges i " +"byte, till skillnad frÃ¥n -taggen. Om versionen är 2.0.0.0 är " +"taggens värde 02000000.H)." + +#: src/tags.cpp:1941 +msgid "GPS Latitude Reference" +msgstr "GPS latitudreferens" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" +"Visar om latituden är nordlig eller sydlig. ASCII-värdet â€N†indikerar " +"nordlig, och â€S†sydlig latitud." + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" +"Visar latituden. Latituden visas som tre RATIONELLA värden med " +"respektivegrader, minuter, och sekunder. När grader, minuter, och sekunder " +"visas är formatet gg/1,mm/1,ss/1. När grader och minuter används, och, till " +"exempel, delar av minuter anges med upp till tvÃ¥ decimaler, är formatet gg/1," +"mmmm/100,0/1." + +#: src/tags.cpp:1953 +msgid "GPS Longitude Reference" +msgstr "GPS longitudreferens" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" +"Visar om longituden är östlig eller västlig. ASCII â€E†indikerar östlig, och " +"â€W†västlig." + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" +"Visar longituden. Longituden visas som tre RATIONELLA värden, och ger " +"respektive grader, minuter, och sekunder. Om grader, minuter och sekunder " +"visas är formatet ggg/1,mm/1,ss/1. När grader och minuter används, och, till " +"exempel, delar av minuter används med upp till tvÃ¥ decimaler, är formatet " +"ggg/1,mmmm/100,0/1." + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" +"Visar höjden som används som referenshöjd. Om referensen är havsnivÃ¥ och " +"höjden är ovanför havsnivÃ¥n anges 0. Om höjden är under havsnivÃ¥n ges värdet " +"1, och höjden visas som ett absolut värde i taggen GPSAltitude. " +"Referensenheten är meter. Observera att taggen använder typen BYTE, till " +"skillnad frÃ¥n andra referenstaggar." + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" +"Visar höjden baserat pÃ¥ referensen i GPSAltitudeRef. Höjden visas som ett " +"RATIONELLT värde. Referensenheten är meter." + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" +"Visar tid som UTC (Universal Time Coordinated). uttrycks som tre " +"RATIONELLA värden och ger timma, minut, och sekund (atomklocka)." + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" +"Visar vilka GPS-satelliter användes vid mätningen. Taggen kan användas för " +"att beskriva antalet satelliter, deras ID-nummer, vinkel, asimut, SNR, och " +"annan information i ASCII-tecken. Formatet är inte specificerat. Om GPS-" +"mottagaren inte kan ta ut mÃ¥tt anges taggens värde till NULL." + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" +"Visar GPS-mottagarens tillstÃ¥nd när bilden togs. â€A†innebär att mätning " +"pÃ¥gÃ¥r, och â€V†innebär att mätningen är Interoperability." + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" +"Visar GPS-mätningsläge. â€2†betyder tvÃ¥dimensionell mätning och â€3†att " +"tredimensionell mätning pÃ¥gÃ¥r." + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "GPS-datans precision" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" +"Visar GPS:ens DOP (dataprecision). Ett HDOP-värde skrivs vid tvÃ¥dimensionell " +"mätning, och PDOP vid tredimensionell mätning." + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" +"Visar vilken enhet användes för att uttrycka GPS-mottagarens " +"rörelsehastighet. â€Kâ€, â€Mâ€, och â€N†representerar kilometer per timme, miles " +"per timme, och knop." + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "Visar GPS-mottagarens rörelsehastighet." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "GPS-spÃ¥rningsref" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Visar referensen för att ge riktningen för GPS-mottagarens rörelse. â€T†" +"innebär sann riktning och â€M†magnetisk riktning." + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" +"Visar riktningen GPS-mottagaren för sig i. Värdets intervall är frÃ¥n 0,00 " +"till 359,99." + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Visar referensen för att ange riktningen för bilden när den togs. â€T†" +"antyder sann riktning och â€M†magnetisk." + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" +"Visar riktningen för bilden när den togs. Värdets intervall är frÃ¥n 0,00 " +"till 359,99." + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" +"Visar den geodetiska mätningsdatan som GPS-mottagaren använder. Om " +"mätningsdatan begränsas till Japan är taggens värde â€TOKYO†eller â€WGS-84â€." + +#: src/tags.cpp:2029 +msgid "GPS Destination Latitude Reference" +msgstr "GPS destinationslatitudreferens" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" +"Visar om latituden för destinationspunkten är nordlig eller sydlig. ASCII-" +"värdet â€N†innebär nordlig, och â€S†sydlig latitud." + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" +"Visar destinationens latitud. Den visas som tre RATIONELLA värden som ger " +"respektive grader, minuter, och sekunder. DÃ¥ anges latituden i vanliga fall " +"i formatet gg/1,mm/1,ss/1. När grader och minuter används, och, till " +"exempel, delar av minuter ges upp till tvÃ¥ decimaler, blir formatet gg/1," +"mmmm/100,0/1." + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "GPS destinationslongitudreferens" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" +"Visar om longituden vid destinationen är östlig eller västlig. ASCII â€E†" +"antyder östlig, och â€W†västlig longitud." + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" +"Visar destinationens longitud. Longituden visas som tre RATIONELLA värden " +"som ger respektive grader, minuter, och sekunder. DÃ¥ används i regel " +"formatet ggg/1,mm/1,ss/1. När grader och minuter används, och, till exempel, " +"delar av minuter ges upp till tvÃ¥ decimaler bli formatet ggg/1,mmmm/100,0/1." + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" +"Visar referensen som används för att ge bäringen till destinationen. â€T†" +"visar sann riktning och â€M†magnetisk." + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" +"Visar bäringen till destinationen. Värdets intervall är frÃ¥n 0,00 till " +"359,99." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" +"Visar enheten som används för att visa avstÃ¥nd till destinationen. â€Kâ€, â€M†" +"och â€N†representerar kilometer, miles, och knop." + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Visar avstÃ¥nd till destinationen." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" +"En teckensträng som lagrar namnet för metoden som används för att hitta " +"platsen. Den första byten visar vilken teckenuppsättning som används, och " +"det följs av metodens namn." + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" +"En teckensträng som lagrar namnet pÃ¥ GPS-omrÃ¥det. Den första byten visar " +"vilken teckenuppsättning som används, och det följs av GPS-omrÃ¥dets namn." + +#: src/tags.cpp:2076 +msgid "GPS Date Stamp" +msgstr "GPS datumstämpel" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" +"En teckensträng som lagrar datum- och tidsinformation relativt till UTC " +"(Universal Time Coordinated). Formatet är â€Ã…Ã…Ã…Ã…:MM:DD.â€." + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "Visar om differentiell justering har tillämpats pÃ¥ GPS-mottagaren." + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "Okänd GPSInfo-tagg" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Interoperabilitetsindex" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" +"Visar identifieringen för interoperabilitetsregeln. Använd â€R98†för att " +"ange ExifR98-regler. Fyra byte används inklusive avslutningskoden (NULL). Se " +"den separata volymen om Rekommenderade Exif-interoperabilitetsregler " +"(ExifR98) för att se vilka andra taggar som används till ExifR98." + +#: src/tags.cpp:2103 +msgid "Interoperability Version" +msgstr "Interoperabilitetsversion" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "Interoperabilitetsversion" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Related Image File Format" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Bildfilens filformat" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Relaterad bildbredd" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Relaterad bildlängd" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "Okänd Exif-interoperabilitetstagg" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "Förskjutning" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "Förskjutning av tillverkaranmärkningen frÃ¥n början av TIFF-huvudet." + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Byteordning" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" +"Byteordning som används för att kode MakerNote-taggar; â€MM†(big-endian) " +"eller â€II†(little-endian)." + +#: src/tags.cpp:2135 src/tags.cpp:2136 +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Okänd Exiv2 Makernote-info-tagg" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Okänd tagg" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Digital zoom inte använd" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "TIFF-huvud, förskjutning" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "little endian-kodad" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "big endian-kodad" + +#~ msgid "ascii bytes" +#~ msgstr "ascii-byte" diff --git a/vendor/exiv2-0.25/po/ug.po b/vendor/exiv2-0.25/po/ug.po new file mode 100644 index 0000000..f98aab7 --- /dev/null +++ b/vendor/exiv2-0.25/po/ug.po @@ -0,0 +1,26543 @@ +# Uyghur translation for exiv2 +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the exiv2 package. +# Gheyret Kenji , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2014-04-16 21:24+0000\n" +"Last-Translator: Gheyret T.Kenji \n" +"Language-Team: Uyghur Computer Science Association \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 22:59+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "ھۆججەت ئÛچىش مەغلۇپ بولدى\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "ھۆججەت ئاتى" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "ھۆججەت چوڭلۇقى" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "بايت" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "MIME تىپى" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "سۈرەت چوڭلۇقى" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "ھۆججەتتىن EXIF سانلىق مەلۇماتى تÛپىلمىدى\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰ ياسىغۇچى" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰Ú­ تىپى" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "سۈرەت ۋاقتى" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "سۈرەت نومۇرى" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "نۇرلاندۇرۇش ۋاقتى" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "نۇر گەردىشى" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "نۇرلاندۇرۇش پەرقى" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "چاقماق لامپا" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "چاقناش پەرقى" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "35mm غا تەڭداش" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "جىسىم ئارىلىقى" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "ISO سۈرئىتى" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "يورۇتۇش ھالىتى" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "ئۆلچەش ھالىتى" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "ماكرو ھالىتى" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "سۈرەت سۈپىتى" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "ExifئÛنىقلىقى" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "ئاق تەڭپۇڭلۇق" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "كىچىك سۈرەت" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "يوق" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "نەشر ھوقۇقى" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Exifئىزاھاتى" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(ئىككىلىق قىممىتى چەكلەنگەن)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "JPEGئىزاھاتى" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "ئالدىن كۆزەت" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "Ù¾Ûكسىللار" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "بايت" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "ھىچبىر بەلگە" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "ئەمەس" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "ھۆججەتتىن ئىزدە" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "ۋاقىت تامغىلىق ئىمزا مەغلۇپ بولدى" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "ھۆججەتتە" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "ۋاقىت تامغىنى ÙŠÛڭىلاۋاتىدۇ" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "كىچىك سۈرەت سانلىق مەلۇماتىنى ئۆچۈرۈۋاتىدۇ" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "ھۆججەتتىن Exifسانلىق مەلۇماتىنى ئۆچۈرۈۋاتىدۇ" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "ھۆججەتتىن IPTCسانلىق مەلۇماتىنى ئۆچۈرۈۋاتىدۇ" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "ھۆججەتتىن JPEGئىزاھاتىنى ئۆچۈرۈۋاتىدۇ" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "ھۆججەتتىن XMPسانلىق مەلۇماتىنى ئۆچۈرۈۋاتىدۇ" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "سۈرەت Exifكىچىك سۈرەتنى ئۆز ئىچىگە ئالمايدۇ\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "كىچىك سۈرەتنى ÙŠÛØ²Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "ھۆججەتكە(_F)" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Exifسانلىق مەلۇماتى كىچىك سۈرەتنى ئۆز ئىچىگە ئالمايدۇ\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "سۈرەتنى ئالدىن كۈزەتمەيدۇ" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "يازغاننى ئالدىن كۈزىتىش" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "JPEGئىزاھاتىنى تەڭشەۋاتىدۇ" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "قوش" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "ئاگاھلاندۇرۇش" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "ئوقۇش مەغلۇپ بولدى" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "قىممىتى" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "بەلگىلەش" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Del" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "نومۇر تاختىسى " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "تەڭشەلمىگەن\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "تەڭشەۋاتىدۇ" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "ئارىلىق" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "يىل" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "يىل" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "ئاي" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "ئاي" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "ÙƒÛˆÙ†" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "ÙƒÛˆÙ†" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "ۋاقىت تامغىسىنى تەڭشىيەلمەيدۇ" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "غا" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "ئۆلچەملىك Exif ISO خەتكۈچ مەۋجۇد؛ئۆزگەرتىلمىگەن\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Exif ISOنىڭ قىممىتىنى تەڭشەۋاتىدۇ" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Exifئىشلەتكۈچى ئىزاھاتى تÛپىلمىدى" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Foundئىشلەتكۈچى ئىزاھاتى Û‹Û• تاساددىپى قىممەت تىپىنى تاپ" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "يۇنىكودلۇقExif ئىشلەتكۈچى ئىزاھاتى تÛپىلمىدى" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "يۇنىكودلۇق Exifئىشلەتكۈچى ئىزاھاتىنى تەڭشەۋاتىدۇ" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Exifسانلىق مەلۇماتىدىن ÙŠÛØ²Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "IPTCسانلىق مەلۇماتىدىن ÙŠÛØ²Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "XMPسانلىق مەلۇماتىدىن ÙŠÛØ²Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "JPEGئىزاھاتىدىن ÙŠÛØ²Ù‰Û‹Ø§ØªÙ‰Ø¯Û‡" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "ھۆججەتكە Ù…ÛØªØ§ سانلىق مەلۇماتىنى يازالمىدى" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "ھۆججەت" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "ھۆججەت ئاتىنى ئۆزگەرتىۋاتدۇ" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "ۋاقىت ÙŠÛڭىلاۋاتىدۇ" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "ئاتىنى ئۆزگەرتەلمىدى" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "قاپلا" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "تاقا" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "ئوچۇق" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Ùورمات 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Ùورمات 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "(1 )دا" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "(2 )دا" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "نامەلۇم" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "ÙƒØ§Ù…ÛØ±Ø§ تەڭشىكى" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "ھەر خىل ÙƒØ§Ù…ÛØ±Ø§ تەڭشىكى" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "رەسىمگە تارتىش ئۇچۇرى" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Panorama" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "سۈرەت تىپى" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "سۈرەت تىپى" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Firmware نەشرى:" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Firmware نەشرى:" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "ھۆججەت سانى" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "ھۆججەت سانى" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "ئىگىدار ئاتى" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "تەرتىپ نومۇرى" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰Ú­ تەرتىپ نومۇرى" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "ÙƒØ§Ù…ÛØ±Ø§ ئۇچۇرى" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "ÙƒØ§Ù…ÛØ±Ø§ ئۇچۇرى" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +msgid "Custom Functions" +msgstr "ئىختىيارى Ùونكىسيە" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "كىملىك مودىلى" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "كىملىك مودىلى" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "رەسىم ئۇچۇرى" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "رەسىم ئۇچۇرى" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "سۈرەت ئاددى ئۈنۈملۈك كۆلىمى" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "سۈرەت ئاددى ئۈنۈملۈك كۆلىمى" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "تەرتىپ نومۇر Ùورماتى" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "تەرتىپ نومۇر Ùورماتى" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "ئالىي ماكرو" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "ئالىي ماكرو" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "ئاپتوماتىك Ùۇكۇس ئۇچۇرى" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "ئاپتوماتىك Ùۇكۇسئۇچۇرى" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "سانلىق مەلۇمات Ø¦ÛØºÙ‰Ø´Ù‰ دەسلەپكى ھۆكۈمى" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "سانلىق مەلۇمات Ø¦ÛØºÙ‰Ø´Ù‰ دەسلەپكى ھۆكۈمى" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "ئاق تەڭپۇڭلۇق جەدۋىلى" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "ئاق تەڭپۇڭلۇق جەدۋىلى" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +msgid "Lens Model" +msgstr "لىنزا ھالىتى" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +msgid "Lens model" +msgstr "لىنزا ھالىتى" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "ئىچكى تەرتىپ نومۇرى" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "ئىچكى تەرتىپ نومۇرى" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "تازىلانغان سانلىق مەلۇمات" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "تازىلانغان سانلىق مەلۇمات" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "ئىختىيارى Ùونكىسيە" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "ئۇچۇرنى بىر تەرەپ قىلىۋاتىدۇ" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "ئۇچۇرنى بىر تەرەپ قىلىۋاتىدۇ" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "رەڭ ئۆلچەش" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "رەڭ ئۆلچەش" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "رەڭ بوشلۇقى" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "VRDØ¦ÛØºÙ‰Ø´Ù‰" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "VRDØ¦ÛØºÙ‰Ø´Ù‰" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "سەزگۈچ ئۇچۇرى" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "سەزگۈچ ئۇچۇرى" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "رەڭ سانلىق مەلۇماتى" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "رەڭ سانلىق مەلۇماتى" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "نامەلۇم Canonياسىغۇچى ئىزاھاتى بەلگىسى" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "ئىقتىساد" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "نورمال" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "سىپتا" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "تەبىئىي" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "ئالاھىدە ئىنچىكە" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "نورمال Ùىلىم" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "كىنو" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "ئاپتوماتىك" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "قىزىل-كۆز" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "ئاستا قەدەمداشلاش" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "ئاپتوماتىك+قىزىل كۆز" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "قىزىل كۆز+دا" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "سىرتقى" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "يەككە/timer" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "ئۈزلۈكسىز" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "كىنو" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "ئۆزلۈكسىز، سۈرەت ئالدىنلىقى" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "ئۆزلۈكسىز، ئاز" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "ئۆزلۈكسىز، يۇقۇرى" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "يەككە Ù‚ÛØªÙ‰Ù…لىق AF" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "AI servo AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AI Ùوكۇس AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "قوللانما Ùوكۇس" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "يەككە" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Ùوكۇس يۆنۈلۈشى" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Ú†ÙˆÚ­" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "ئوتتۇراھال" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "كىچىك" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "ئوتتۇرا1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "ئوتتۇرا2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "ئوتتۇرا3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "تولۇق ئاپتوماتىك" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "قولدا" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "توغرا يۆنىلىش" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "تىز ئىشىك" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "ئاستا ئىشىك" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "كەچلىك مەنزىرە" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "كۈلرەڭ" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "رەڭ ئال" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "بوي يۆنىلىش" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "تەنتەربىيە" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "ماكرو/ئالاھىدە" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "ئاق&قارا" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "تەسىرلىك" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "بىتەرەپ" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "چاقناش چىرىقى Ø¦ÛØªÙ‰Ùƒ" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "ئۇزۇن ئىشىك" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "يوپۇرماق" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "ئۆي ئىچى" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Fireworks" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "ساھىل" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "سۇ ئاستى" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "قار" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "بالىلار&ئەرمەك ھايۋان" + +#: src/canonmn.cpp:515 +#, fuzzy +msgid "Night SnapShot" +msgstr "ÙƒÛÚ†Û• رەسىمى" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "ماكرو رەقەملىك" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "رەڭلىرىم" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "ھەركەتسىز سۈرەت" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "باشقا" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "تۆۋەن" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "يۇقىرى" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/a" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "ئاپتوماتىك يۇقۇرى" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "كۆڭۈلدىكى" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "نۇقتا" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "ئوتتۇرىچە" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "باھا" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "قىسمەن" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "مەركەزگە پايدىلىق" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "نامەلۇم" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "ماكرو" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "ÙŠÛپىش" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "ياپ" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "ئوتتۇرا دائىرە" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "يىراق دائىرە" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "چەكسىز" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Ùوكۇسنى قولدا تاللاش" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "يوق(MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "ئاپتوماتىك تاللاش" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "ئوڭ" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "مەركەز" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "سول" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Ùوكۇسنى ئاپتوماتىك تاللاش" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "ئەركىن رەسىم تارتىش(ئاپتوماتىك)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "پروگرامما (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "قاپقاق ئالدىنقىلىقى (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "نور چەمبىكىرىنىڭ ئالدىنقىلىقى" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "قوللانما(M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "ئوت يوق" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "لامپا" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "سىرىتقى چاقماق" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "ئىچكى چاقماق" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "FPقەدەدەمداشلاش ئىناۋەتلىك" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "كىيىنكى پەردە قەدەمداشلاش ئىلشلتىلدى" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "FPقەدەمداشلاش ئىشلىتىلدى" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "نورمال AE" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "يورۇتۇشنى تولۇقلاش" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "AEنى قولۇپى" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "AEنى قولۇپى+يورۇتۇشنى تولۇقلاش" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "AEيوق" + +#: src/canonmn.cpp:1002 +#, fuzzy +msgid "On, shot only" +msgstr "يەككە Ù‚ÛØªÙ‰Ù…لىق AF" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "AFنوقتا" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "سىلىق" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "B&W" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "ئىختىيارى" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "رەڭ سانلىق مەلۇماتىم" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "تامامەن" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "sRAW1 (mRAW)" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "sRAW2 (sRAW)" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "ئۆزى تارتىش ۋاقىت بەلگىلىگۈچى" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "ئۆزىدىكى ۋاقىت" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "سۈپەت" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "چاقناش ھالىتى" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "چاقناش ھالەت تەڭشىكى" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "ئۈسكۈنە ھالىتى" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "ئۈسكۈنە ھالىتى تەكشىكى" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Ùوكۇس ھالىتى" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Ùوكۇس ھالىتى تەڭشىكى" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "سۈرەت چوڭلۇقى" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "قۇلاي ھالەت" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "ئەركىن رەسىم تارتىش ھالىتى" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "رەقەملىك ÙƒÛڭەيت تارايىت" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "رەقەملىك ÙƒÛڭەيت تارايىت" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "ئاق-قارىلىقى" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "ئاق قارىلىق تەڭشىكى" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "تويۇنۇش" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "تويۇنۇش تەڭشىكى" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "ئۆتكۈرلۈك" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "ئۆتكۈرلۈك تەڭشىكى" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "ISOسۈرئەت ھالىتى" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "ISOسۈرئەت ھالىتى تەڭشىكى" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "مۆلچەر شەكلى" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "مۆلچەر شەكلى تەڭشىكى" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Ùوكۇس تىپى" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Ùوكۇس تىپى تەڭشىكى" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "ئاپتوماتىك نوقتا تاللاش" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "يورۇتۇش پروگراممىسى" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "نۇر ئۆتكۈزۈش ھالىتى تەڭشىكى" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "لىنزا تىپى" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "لىنزا تىپى" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Ù„Ûنزىلار" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "قىسقا Ùوكۇس" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "قىسقا Ùوكۇس" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "Ùوكۇس بىرلىكلىرى" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "Ùوكۇس بىرلىكلىرى" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "ئەڭ كىچىك نۇر گەردىشى" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "ئەڭ كىچىك نۇر گەردىشى" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "چاقناش پائالىيىتى" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "چاقناش پائالىيىتى" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "چاقناش تەپسىلاتى" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "چاقناش تەپسىلاتى" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "ئۆزلۈكسىز Ùوكۇس" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "ۆزلۈكسىز Ùوكۇس تەڭشىكى" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "AEتەڭشىكى" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "AEتەڭشىكى" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "سۈرەت مۇقىملىقى" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "سۈرەت مۇقىملىقى" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "نۇر گەردىشىنى كۆرسەت" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "نۇر گەردىشىنى كۆرسەت" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "ئەسلى كەڭلىكىنى ÙƒÛڭەيت تارايت" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "ئەسلى كەڭلىكىنى ÙƒÛڭەيت تارايت" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "نىشان كەڭلىكنى ÙƒÛڭەيت تارايت" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "نىشان كەڭلىكنى ÙƒÛڭەيت تارايت" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "مۆلچەر نوقتا شەكلى" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "مۆلچەر نوقتا شەكلى" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "سۈرەت ئۈنۈمى" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "سۈرەت ئۈنۈمى" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "چاقناشنى قولىدا چىقىرىش" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "چاقناشنى قولىدا چىقىرىش" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "رەڭ تۈسى" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "رەڭ تۈسى" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "SRAWسۈپەت تۈسى" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "SRAWسۈپىتى" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "نامەلۇم Canon كامىراسى 1Ú¯Û• تەڭشەلگەن" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "ÙƒÛˆÙ† نۇرى" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "بۇلۇتلۇق" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "تۇڭىستÛÙ†" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "يالتىراق لامپا" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "ئاق&قارا" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "تۈرۈش" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "تÛمپراتۇرا قوللانمىسى(ÙƒÛلىۋىن)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "PC Set 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "PC Set 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "PC Set 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "ئىختىيارىچە 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "ئىختىيارىچە 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "ئىختىيارىچە 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "PC Set 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "PC Set 5" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "سول" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "ئوتتۇرا" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "ئوڭ" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "ISOسۈرئەت ئىشلىتىلدى" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "ISOسۈرئەت ئىشلىتىلدى" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "EV ئۆلچەش" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "نىشان نۇر گەردىشى" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "نىشان قاپقاق ØªÛØ²Ù„ىكى" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "نىشان قاپقاق ØªÛØ²Ù„ىكى" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "ئاق تەڭپۇڭلۇق" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "ئاق تەڭپۇڭلۇق تەڭشىكى" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "تەرتىپ" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "تەرتىپ نومۇر(ئەگەر ئۆزلۈكسىزلىك تويۇقسىز پەيدا بولسا)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "AFنوقتا ئىشلىتىلدى" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "AFنوقتا ئىشلىتىلدى" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "چاقناش پەرقى" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "جىسىم ئارىلىقى" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "جىسىم ئارىلىقى(بىرلىكى ئÛنىق ئەمەس)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "نۇر چەمبەر قىممىتى" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "قاپقاق ØªÛØ²Ù„ىكى قىممىتى" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "قاپقاق ØªÛØ²Ù„ىكى" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "EV2 ئۆلچەش" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "نامەلۇم Canon كامىراسى 2Ú¯Û• تەڭشەلگەن" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "سولدىن ئوڭغا" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "ئوڭدىن سولغا" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "ئاستىدىن ئۈستىگە" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "ئۈستىدىن ئاستىغا" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "2x2ماترىتسا(سائەت ئىسترÛلكىسىنىڭ يۆنىلىشى بويىچە)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "كاندۇك تولۇق مەنزىرە" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "كاندۇك تولۇق مەنزىرە نومۇرى" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "تولۇق مەنزىرە يۆنىلىشى" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "تولۇق مەنزىرە يۆنىلىشى" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "نامەلۇم Canon تولۇق مەنزىرە بەلگىسى" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "ئۇزۇن ۋاقىت نور ئۆتكۈزۈش شاۋقۇنىنى ئاجىزلىتىش" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Aeقۇلۇپى قاپقىقى" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "قاپقاق/AEقۇلۇپى كونۇپكىسى" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "نۇر ئۆتكۈزۈش دەرىجىسىنى تەدرىجى ئاشۇرۇش" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "TV/ AvÛ‹Û• نۇر ئۆتكۈۈش دەرىجىسىنى ئاشۇرۇش" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "AF ياردەمچى" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "AFياردەمچى نۇر" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "Avچاقناشنى قەدەمدەشلاش تىزلىكى" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "Avھالىتىدىكى قاپقاق تىزلىكى" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "AEBتەرتىپ" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "AEBتەرتىپ/ئاپتوماتىك ئەمەلدىن قالدۇرۇش" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "قاپقاپ پەردىسىنى قەدەمداشلاش" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "ئÛچىش-ÙŠÛپىش Ø¦ÛØºÙ‰Ø²Ù‰ پەردىسىنى قەدەمداشلاش" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "لىنزىنىڭ ئاپتوماتىك توغرىلاشنى توختىتىش كونۇپكىسى" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "ئالماشتۇر" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "چاقناشنى تولدۇرۇشنى ئاپتوماتىك كىچىكلەت" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "تولۇق چاقناشنى ئاپتوماتىك كىچىكلەت" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "تىزىملىك توپچىسىغا قايتىش" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "تىزىملىك توپچىسىغا قايتىش ئورنى" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Ùونكىسيە توپچىسىنى تەڭشەش" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "سۈرەتكە ئالغاندىكى ئىقتىدار كونۇپكىسىنى تەڭشەش" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "سەزگۈچنى تازىلاۋاتىدۇ" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "سەزگۈچنى تازىلاۋاتىدۇ" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "قاتلىنىشنى كۆرسىتىش" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "قاتلىنىشنى كۆرسىتىش" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "زاتۇر نەشىرىدە CFكارتا يوق" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "زاتۇر نەشىرى CF W/Oكارتا" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "نامەلۇم Canonئىختىيارى Ùونكىسيە بەلگىسى" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "ئوتتۇرا-ئوڭ" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "ئاستى" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "چوققا" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "ئوتتۇرا- سول" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "ئۈستۈنكى - سول" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "ئۈستۈنكى - ئوڭ" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "تۆۋەنكى - سول" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "تۆۋەنكى - ئوڭ" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "سۈرەت كەڭلىكى" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image Width As Shot" +msgstr "سۈرەت كەڭلىكى" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image width (as shot)" +msgstr "سۈرەت كەڭلىكى" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image Height As Shot" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image height (as shot)" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "ئاتپوماتىك Ùوكۇس نوقتا ئىشلىتىلدى" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "ئاتپوماتىك Ùوكۇس نوقتا ئىشلىتىلدى" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "ئاتپوماتىك Ùوكۇس نوقتا 20Dئىشلىتىلدى" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "ئاتپوماتىك Ùوكۇس نوقتا ئىشلىتىلدى(20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "نامەلۇم Canonرەسىن ئۇچۇرى بەلگىسى" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "WB" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "پوچتا كارتىسى" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "ÙƒÛ•Ú­ ئÛكرانلىق" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "ئوتتۇراھال Ùىلىم" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "كىچىك Ùىلىم" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "1 دا" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "2 دا" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "دا(shift AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "دا (shift GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Ø³ÛØ±Ù‰Ù‚" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "قىزغۇچ Ø³ÛØ±Ù‰Ù‚" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "قىزىل" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "ÙŠÛØ´Ù‰Ù„" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "ÙƒÛ†Ùƒ" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "بىنەپشە" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "تەگلىك ھالىتى" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "تەگلىك قىممىتى" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "تەگلىك قەدىمى" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "Jpg تەبىئىي سۈپىتى" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Jpg تەبىئىي چوڭلۇقى" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "ئاق تەڭپۇڭلۇق تەگلىك ھالىتى" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "تەگلىك قىممىتى" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "تەگلىك قىممىتى" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "سۈزگۈچ ئۈنۈمى" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "رەڭ تەڭشەش ئۈنۈمى" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "ماكرو چوڭايت" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "ماكرو چوڭايت" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "تارتقاننى شۇئان كۆرسىتىش" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "تارتقاننى شۇئان كۆرسىتىش" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Ùوكۇس ئارلىقى" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Ùوكۇس ئارلىقى" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "چاقناپ نۇر ئۆتكۈزۈش قۇلۇپى" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "چاقناپ نۇر ئۆتكۈزۈش قۇلۇپى" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "نامەلۇم Canonھۆججەت ئۇچۇر بەلگىسى" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "ئۆلچەملىك" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "ئەڭ تۆۋەن" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "ئەڭ يۇقىرى" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "يۇقۇرى تويۇنۇش دەرىجىسى" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "تۆۋەن تويۇنۇش دەرىجىسى" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "CMتوپلىمى 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "CMتوپلىمى 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "ئىشلەتكۈچى ئÛنىقلىمىسى.1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "ئىشلەتكۈچى ئÛنىقلىمىسى.2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "ئىشلەتكۈچى ئÛنىقلىمىسى.3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "PC1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "PC2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "PC3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "ئىشەنچلىك" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "رەڭسىز" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "چاقناش تەپسىلاتى" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "تون" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "Tone curve" +msgstr "ئەگرىلىكىنى سÛلىشتۇر" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "ئۆتكۈرلۈك چاستوتىسى" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "ئۆتكۈرلۈك چاستوتىسى" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "سەزگۈچ قىزىللىق دەرىجىسى" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "سەزگۈچ قىزىل رەڭ دەرىجىسى" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "سەزگۈچ ÙƒÛ†Ùƒ رەڭ دەرىجىسى" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "سەزگۈچ ÙƒÛ†Ùƒ رەڭ دەرىجىسى" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "ئاق تەڭپۇڭلۇق قىزىل" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "ئاق تەڭپۇڭلۇق قىزىل" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "ئاق تەڭپۇڭلۇق ÙƒÛ†Ùƒ" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "ئاق تەڭپۇڭلۇق ÙƒÛ†Ùƒ" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "ئاق تەڭپۇڭلۇق" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "رەسىم ئۇسلۇبى" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "رەسىم ئۇسلۇبى" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "رەقەملىك پاي Ú†Ûكى" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "رەقەملىك پاي Ú†Ûكى" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +#, fuzzy +msgid "WBShift AB" +msgstr "دا(shift AB)" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +#, fuzzy +msgid "WB Shift GM" +msgstr "دا (shift GM)" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "نامەلۇم Canon بىر تەرەپ قىلىش ئۇچۇرى بەلگىسى" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "بەت Ù‚ÛØ´Ù‰ØŒ Ø¦ÛØºÙ‰Ø´" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "خەتكۈش" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "dir" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "تىپى" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "چوڭلۇقى" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "Ø¦ÛØºÙ‰Ø´" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(ئىناۋەتسىز)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "IIMÙ„Ûپاپ خاتىرە" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "IIMÙ„Ûپاپ خاتىرە 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "ئۈلگە نەشىرى" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "نىشان" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "ھۆججەت Ùورماتى" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "ھۆججەت نەشىرى" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "مۇلازىمەت Idسى" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "Ù„Ûپاپ نومۇرى" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "مەھسۇلات كىملىكى" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Ù„Ûپاپ ئالدىنقىلىقى" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "يوللىغان چىسلا" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "يوللىغان ۋاقىت" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "ھەرپ توپى" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "ئوبىكىتنىڭ ئۆزگىچە ئاتى" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "ARMكىملىكى" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "ARMنەشىرى" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "خاتىرە نەشىرى" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "ئوبيÛكت تىپى" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "ئوبىكىت خاسلىقى" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "ئوبيÛكت ئاتى" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "پۈتۈك ماۋزۇسى" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "تەھرىرلەش ھالىتى" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "ÙŠÛڭىلاشنى تەھرىرلەش" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "جىددى" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "تÛما" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "كاتÛگورىيە" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "تولۇقلىما كاتÛگورىيە" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +#, fuzzy +msgid "Supplemental Categories" +msgstr "تولۇقلىما كاتÛگورىيە" + +#: src/datasets.cpp:229 +#, fuzzy +msgid "Fixture Id" +msgstr "رەسىم ئۇچۇرى" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "ئورۇن كودى" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "ئورۇن ئاتى" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "تارقاتقان Ú†ÛØ³Ù„ا" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "تارقاتقان ۋاقتى" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "ئىناۋەتلىك Ú†ÛØ³Ù„اسى" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "ئىناۋەتلىك ۋاقتى" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "ئالاھىدە چۈشەندۈرۈش" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "پەرمانلار" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "مەشغۇلات ئەسكەرتمىسى" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "پايدىلىنىش مۇلازىمىتى" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "پايدىلىنىش چىسلاسى" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "پايدىلىنىش نومۇرى" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "قۇرۇلغان Ú†ÛØ³Ù„ا" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +#, fuzzy +msgid "Time Created" +msgstr "قۇرۇلغان Ú†ÛØ³Ù„ا" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +#, fuzzy +msgid "Digitization Date" +msgstr "رەقەملىك ۋاقىت" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "رەقەملىك ۋاقىت" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "پروگرامما" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "پروگرامما نەشرى" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "ئوبىكىت دەۋرى" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +#, fuzzy +msgid "By-line" +msgstr "قۇر" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "ئاپتور" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "شەھەر" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +#, fuzzy +msgid "Sub Location" +msgstr "يەرلىك تÛما" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +#, fuzzy +msgid "Province State" +msgstr "دائىرە/ھالەت." + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "ئىشتات/ئۆلكە" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "دۆلەت كودى:" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "دۆلەت ئاتى" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "دۆلەت" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +#, fuzzy +msgid "Transmission Reference" +msgstr "ۋەزىپە نەقىلى" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +#, fuzzy +msgid "Headline" +msgstr "قۇر" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +#, fuzzy +msgid "Credit" +msgstr "ÙƒØ±ÛØ¯Ù‰Øª." + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "مەنبە" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "نەشر باياناتى:" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "ئالاقەداش" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "ماۋزۇ" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "چۈشەندۈرۈش" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "ئاپتور" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +#, fuzzy +msgid "Rasterized Caption" +msgstr "نۇرئۆتۈش" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "" + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "سۈرەت يۇنىلىشى" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "تىل" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "ئۈن تىپى" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "" + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "ئاۋاز نىسبىتى" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "ئۈن ئÛنىقلىقى" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "" + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "" + +#: src/datasets.cpp:420 +#, fuzzy +msgid "Audio Outcue" +msgstr "ئاۋاز نىسبىتى" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "پىچىمنى ئالدىن كۈزەت" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "كۆرۈپ بÛقىش نەشىرى" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "سانلىق مەلۇماتنى ئالدىن كۈزەت" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(ئىناۋەتسىز)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "نامەلۇم سانلىق مەلۇمات تەڭشىكى" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "" + +#: src/error.cpp:56 +msgid "Success" +msgstr "مۇۋەپپەقىيەتلىك بولدى" + +#: src/error.cpp:59 +#, fuzzy +msgid "This does not look like a %1 image" +msgstr "قارىماققا JPEGسۈرىتى ئەمەستەك قىلىدۇ" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "ئىناۋەتسىز سانلىق مەلۇمات تەڭشەك ئاتى `%1'" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "ئىناۋەتسىز خاتىرە ئاتى `%1'" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "ئىناۋەتسىز كونۇپكا `%1'" + +#: src/error.cpp:63 +#, fuzzy +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "ئىناۋەتسىز سانلىق مەلۇمات تەڭشەك ئاتى `%1'" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "قىممىتىنى تەڭشىيەلمىدى" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "1%:سانلىق مەلۇمات مەنبەسىنى ئÛچىش مەغلۇب بولدى:%2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "1%:ھۆججەت ئÛچىش مەغلۇپ بولدى(%2)%3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:69 +#, fuzzy +msgid "Image type %1 is not supported" +msgstr "%1: قوللىمايدۇ" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "سۈرەت سانلىق مەلۇماتىنى ئوقۇش مەغلۇب بولدى" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "قارىماققا JPEGسۈرىتى ئەمەستەك قىلىدۇ" + +#: src/error.cpp:72 +#, fuzzy +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "ئاچقان بۇيرۇق ھۆججىتىنى ئوقۇش مەغلۇب بولدى\n" + +#: src/error.cpp:73 +#, fuzzy +msgid "%1: Failed to rename file to %2: %3" +msgstr "1%:ھۆججەت ئÛچىش مەغلۇپ بولدى(%2)%3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "1%:يوللاش مەغلۇب بولدى: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "ئىچكى ساقلىغۇچقا يوللاش مەغلۇب بولدى: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "كىرگۈزۈش سانلىق مەلۇماتىنى ئوقۇش مەغلۇب بولدى" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "سۈرەت ÙŠÛØ²Ù‰Ø´ مەغلۇب بولدى" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "كىرگۈزگەن سانلىق مەلۇمات ئۈنۈملۈك سۈرەتنى ئۆز ئىچىگە ئالمايدۇ" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "ئەگەر راستنلا ئىناۋەتسىز بولسا% 1" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:82 +#, fuzzy +msgid "Offset out of range" +msgstr "دائىرە سىرتىدا" + +#: src/error.cpp:83 +#, fuzzy +msgid "Unsupported data area offset type" +msgstr "قوللىمايدىغان Ú†ÛØ³Ù„ا پىچىمى" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "ئىناۋەتسىز ھەرىپلەر توپلىمى : `%1'" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "قوللىمايدىغان Ú†ÛØ³Ù„ا پىچىمى" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "قوللىمايدىغان ۋاقىت پىچىمى" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "" + +#: src/error.cpp:89 +#, fuzzy +msgid "This does not look like a CRW image" +msgstr "قارىماققا JPEGسۈرىتى ئەمەستەك قىلىدۇ" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: قوللىمايدۇ" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +#, fuzzy +msgid "Invalid XmpText type `%1'" +msgstr "ئىناۋەتسىز كونۇپكا `%1'" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"بۇ پروگرامما ئەركىن يۇمشاق Ø¯ÛØªØ§Ù„Ø› سىز ئەركىن يۇمشاق Ø¯ÛØªØ§Ù„ ۋەخپىسى تارقاتقان " +"GNU ئادەتتىكى ئاممىۋى ئىجازەتنامە بويىچە ئۇنى قايتا تارقىتىپ ياكى " +"ئۆزگەرتەلەيسىز؛ سىز Ø´Û‡ ئىجازەت ÙƒÛلىشىمىنىڭ ئىككىنچى نەشرى ياكى يۇقىرى " +"نەشرىنى ئىشلەتسىڭىز بولىدۇ.\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"بۇ پروگراممىنى تارقىتىشتىكى مەقسەت سىزگە قۇلايلىق ئÛلىپ ÙƒÛلىش، ئەمما سودا " +"ياكى باشقا ئالاھىدە قوللىنىشقا نىسبەتەن Ú¾Ûچقانداق كاپالەت يوق. GNU " +"ئادەتتىكى ئاممىۋى ئىجازەت ÙƒÛلىشىمىنى كۆرۈپ ØªÛØ®Ù‰Ù…Û‡ ÙƒÛ†Ù¾ تەپسىلاتقا Ø¦ÛØ±Ù‰Ø´Ù‰Ú­.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"مەزكۇر پروگرامما بىلەن بىرگە GNU ئادەتتىكى ئاممىۋى ئىجازەت ÙƒÛلىشىمىدىن بىر " +"نۇسخا تاپشۇرۇۋالىسىز؛ ئۇنداق بولمىسا Free Software Foundation, Inc., 51 " +"Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA بىلەن ئالاقە " +"قىلىڭ.\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "ئىشلىتىش ئۇسۇلى:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[تاللانما][مەشغۇلات]ھۆججەت...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"مەشغۇلاتلار:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr "" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr "" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"تاللانمىلار:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr "" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr "" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr "" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr "" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr "" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr "" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr "" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr "" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr "" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr "" + +#: src/exiv2.cpp:294 +msgid " S : print structure of image\n" +msgstr "" + +#: src/exiv2.cpp:295 +msgid " X : extract XMP from image\n" +msgstr "" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr "" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr "" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr "" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr "" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr "" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr "" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr "" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr "" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr "" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr "" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr "" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr "" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr "" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr "" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr "" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr "" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr "" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr "" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr "" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr "" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr "" + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr "" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "تاللانما" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "ئۆزگەرگۈچى مىقدار Û‹Û• ئÛھتىياج\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "قوللىمايدىغان تاللانما" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "ئىناۋەتسىز ئەركىن ئۆزگەرگۈچى" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "ئىناۋەتسىز ئەركىن ئۆزگەرگۈچى" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +#, fuzzy +msgid "Ignoring surplus option" +msgstr "تويۇنۇش دەرىجىسىنى تەڭشەش" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "" + +#: src/exiv2.cpp:504 +#, fuzzy +msgid "Error parsing -a option argument" +msgstr "تاللانما ئەركىن ئۆزگەرگۈچى" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "تەھلىل قىلىش خاتالىقى" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "تاللانما ئەركىن ئۆزگەرگۈچى" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "قوللىمايدىغان Ø¨ÛØ³Ù‰Ø´ تىپى" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "قوللىمايدىغان Ø¨ÛØ³Ù‰Ø´ تۈرى" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "" + +#: src/exiv2.cpp:920 +#, fuzzy +msgid "Error parsing -m option arguments\n" +msgstr "تاللانما ئەركىن ئۆزگەرگۈچى" + +#: src/exiv2.cpp:927 +#, fuzzy +msgid "Error parsing -M option arguments\n" +msgstr "تاللانما ئەركىن ئۆزگەرگۈچى" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "نامەلۇم " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "نىشان" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "نومۇرنى ئالدىن كۈزىتىش مەغلۇب بولدى" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "ئاچقان بۇيرۇق ھۆججىتىنى ئوقۇش مەغلۇب بولدى\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "قۇر" + +#: src/exiv2.cpp:1133 +#, fuzzy +msgid "-M option" +msgstr "تاللانما" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "بۇيرۇق قۇرى ئىناۋەتسىز" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "خاتا بۇيرۇق" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "ئىناۋەتسىز كونۇپكا" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "بۇيرۇق قۇرى ئىناۋەتسىز" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "يۇمشاق ھالەت 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "يۇمشاق ھالەت 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "قاتتىق ھالەت 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "قاتتىق ھالەت 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Ù†Û•ÙŠ لامپا(ÙƒÛˆÙ† نۇرى)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Ù†Û•ÙŠ لامپا (ئىللىق ئاق)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Ù†Û•ÙŠ لامپا (سوغۇق ئاق)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "چوغلانما لامپا" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "يوق(ئاق &قارا)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "كەچلىك مەنزىرە" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "پرۇگرامما AE" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "تەبىئىي يوقۇرۇق" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Anti-blur" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "ÙƒÛˆÙ† ئولتۇرۇش(Sunset)" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "مۇزÛÙŠ" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "يىغىلىش" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Ú¯ÛˆÙ„" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "تÛكىست" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "تەبىئىي يورۇق&چاقماق لامپا" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +#, fuzzy +msgid "Aperture-priority AE" +msgstr "نۇر چەمبىرىنىڭ ئالدىنلىقى" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +#, fuzzy +msgid "Shutter speed priority AE" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/fujimn.cpp:142 +#, fuzzy +msgid "No flash & flash" +msgstr "تەبىئىي يورۇق&چاقماق لامپا" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "Chrome" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "كەڭرى" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/ئۆلچىمى" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/سۈرەت خىزمەتخانىسى" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +#, fuzzy +msgid "F3/Studio portrait Ex" +msgstr "F1/سۈرەت خىزمەتخانىسى" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "ئاپتوماتىك ( %400-100)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "خام" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "ئۆلچەملىك(%100)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "كەڭرى ھالەت 1(%230)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "كەڭرى ھالەت 2(%400)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "كىنو تەقلىد ھالىتى" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "نەشرى" + +#: src/fujimn.cpp:180 +#, fuzzy +msgid "Fujifilm Makernote version" +msgstr "Nikon زاۋۇت ئىزاھاتى نەشىرى" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "سۈرەت سۈپەت تەڭشىكى" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "رەڭ" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "Chromaتويۇنۇش تەڭشىكى" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "تون" + +#: src/fujimn.cpp:202 +#, fuzzy +msgid "Flash firing mode setting" +msgstr "چاقناش ھالەت تەڭشىكى" + +#: src/fujimn.cpp:204 +#, fuzzy +msgid "Flash Strength" +msgstr "چاقناش تەڭشىكى" + +#: src/fujimn.cpp:205 +#, fuzzy +msgid "Flash firing strength compensation setting" +msgstr "چاقناشنى تولۇقلاش تەڭشىكى" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "ماكرو ھالەت تەڭشىكى" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "Ùوكۇس ھالىتى تەڭشىكى" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "ئاستا قەدەمداشلاش" + +#: src/fujimn.cpp:217 +#, fuzzy +msgid "Slow synchro mode setting" +msgstr "ماكرو ھالەت تەڭشىكى" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "رەسىم ھالىتى" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "رەسىم ھالىتى تەڭشىكى" + +#: src/fujimn.cpp:226 +#, fuzzy +msgid "Continuous shooting or auto bracketing setting" +msgstr "ئۆزلۈكسىز قورشىشى يۇقۇرى" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "تەرتىپ نومۇرى" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "تەرتىپ نومۇرى" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "FinePix رەڭ" + +#: src/fujimn.cpp:235 +#, fuzzy +msgid "Fuji FinePix color setting" +msgstr "FinePix رەڭ" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "غۇۋالىق ئاگاھلاندۇرۇشى" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "غۇۋالىق ئاگاھلاندۇرۇش ھالىتى" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Ùۇكۇس ئاگاھلاندۇرۇشى" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "ئاپتوماتىك Ùوكۇس ئاگاھلاندۇرۇش ھالىتى" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "نۇرلاندۇرۇش ئاگاھلاندۇرۇشى" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "ئاپتوماتىك نۇرلاندۇرۇش ئاگاھلاندۇرۇش ھالىتى" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "ھەرىكەتچان دائىرە" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "ھەرىكەتچان دائىرە" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "كىنو ھالىتى" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "كىنو ھالىتى" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "ھەركەتجان دائىرە تەڭشىكى" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "ھەركەتجان دائىرە تەڭشىكى" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "ھەركەتچان دائىرىنى ئÛچىش" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "ھەركەتچان دائىرىنى ئÛچىش" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر نۇر گەردىشى ئەڭ Ú†ÙˆÚ­ Ùۇكۇسدا" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر نۇر گەردىشى ئەڭ Ú†ÙˆÚ­ Ùۇكۇسدا" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر نۇر گەردىشى ئەڭ Ú†ÙˆÚ­ Ùۇكۇسد" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر نۇر گەردىشى ئەڭ Ú†ÙˆÚ­ Ùۇكۇسد" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "ھۆججەت مەنبەسى" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "ھۆججەت مەنبەسى" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "نومۇر تەرتىپى" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "نومۇر تەرتىپى" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "كاندۇك نومۇرى" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "كاندۇك نومۇرى" + +#: src/fujimn.cpp:281 +#, fuzzy +msgid "Unknown FujiMakerNote tag" +msgstr "نامەلۇم Nikon1 زاۋۇت ئىزاھاتى بەلگىسى" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "تەبىئىي رەڭ" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "يورۇق رەڭ" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "نۇرئۆتۈش" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "تەبىئىي" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "تەبىئىي sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "تەبىئىي+ sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "ÙƒÛ•Ú†" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "ÙƒÛÚ†Û• رەسىمى" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "ئالاھىدە ئىنچىكە" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "ئارتۇقچە ئىنچىكە" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "زاۋۇت ئىزاھات نەشىرى" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "كامىرا تەڭشىكى(Std كونا)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "كامىرا تەڭشىكى(Std ÙŠÛÚ­Ù‰)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "كامىرا تەڭشىكى(7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "كامىرا تەڭشىكى( Dynax 7D مودىلى ئۈچۈن)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "سۈرەت مۇقىلىقى سانلىق مەلۇماتى" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "سۈرەت مۇقىلىقى سانلىق مەلۇماتى" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "ئاق تەڭپۇڭلۇق ئۇچۇرىA100" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "پرىسلانغان سۈرەت چوڭلۇقى" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "پرىسلانغان سۈرەت چوڭلۇقى" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +msgid "Thumbnail Offset" +msgstr "قىسقا Ø¦ÛØºÙ‰Ø´" + +#: src/minoltamn.cpp:118 +msgid "Offset of the thumbnail" +msgstr "Ø¦ÛØºÙ‰Ø´Ù‰ قىسقا" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "قىسقا ئارلىق" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "چوڭلۇقى كىچىن" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "كۆرۈنۈش ھالىتى" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "رەڭلىك" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "رەڭلىك" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "سۈرەت سۈپىتى" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "تولۇقلاپ چاقناپ نۇر ئۆتكۈزۈش" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +#, fuzzy +msgid "Flash exposure compensation in EV" +msgstr "تولۇقلاپ چاقناپ نۇر ئۆتكۈزۈش" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +#, fuzzy +msgid "Teleconverter Model" +msgstr "قوشۇمچە تىپ" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "ماس رايۇن" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "ماس رايۇن" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "رەڭ تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "لىنزا كىملىكى" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "لىنزا كىملىكى" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "رەڭ تولدۇرۇش سۈزگۈچى" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "رەڭ تولدۇرۇش سۈزگۈچى:Ù†Ûگاتىپ ÙŠÛØ´Ù‰Ù„ØŒ ئۇدۇلدىن ئاچ ھالرەڭ" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "ئاق تەڭپۇڭلۇقنى مىكرو تەڭشەش" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "ئاق تەڭپۇڭلۇقنى مىكرو تەڭشەش قىممىتى" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "سۈرەت مۇقىملىقى A100" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "سۈرەت مۇقىملىقى A100" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "كامىرا تەڭشىكى(5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "كامىرا تەڭشىكى ( Dynax 5D مودىلى ئۈچۈن)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "IM باس" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "IMنى Ø¨ÛØ³Ù‰Ø´ ئۇچۇرى" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "كامىرا تەڭشىكى (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "كامىرا تەڭشىكى ( Z1, DImage X Û‹Û• F100مودىلى ئۈچۈن)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "نامەلۇم Minoltaياسىغۇچى ئىزاھات بەلگىسى" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "نۇر چەمبىرىنىڭ ئالدىنلىقى" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "نۇر تولۇقلاش" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "ئارقا نۇرنى قەدەملەشلاش" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "سىمسىز" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "يالتىراق لامپا 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "ئەسلى Ú†ÙˆÚ­- كىچىكلىكى" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "ئالاھىدە ئىنچىكە" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "ئارتۇقچە ئىنچىكە" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "يالغۇز كاندۇك" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +#, fuzzy +msgid "Self-timer" +msgstr "ئۆزى تارتىش ۋاقىت بەلگىلىگۈچى" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "تىرناق" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "UHSئۆزلۈكسىزلىكى" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "UHSئۆزلۈكسىزلىكى" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "ÙƒÛ†Ù¾ سÛگمىت" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +#, fuzzy +msgid "Center weighted average" +msgstr "مەركەزگە پايدىلىق" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "ئÛÙ„Ûكترونلۇق چوڭايت" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "ئۈستى" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "ئوڭ ئۈستى" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "ئوڭ ئاستى" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "ئاستى" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "سول ئاستى" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "سول ئۈستى" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "تەس" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "يۇمشاق" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "ÙƒÛÚ†Û• رەسىمى" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "ھەركەت مەشغۇلاتى" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "ئۆلچەملىك تىپ" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "سانلىق مەلۇمات تىپى" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "تەبىئىي رەڭ" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "رەڭسىز" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "يورۇق رەڭ" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "رايۇن يوق" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "مەركىزىي رايۇن(بوي يۆنىلىش)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "مەركىزىي رايۇن( تىك يۆنىلىش)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "سول رايۇن" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "ئوڭ رايۇن" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "ئاپتوماتىك Ùوكۇس" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "ÙƒÛ•Ú­ Ùوكۇس(نورمال)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "نۇر ئۆتۈش" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "سۈزگۈچ" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "سىڭدۈرۈلمىگەن" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "سىڭدۈرۈلگەن" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "تÛكىست+ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI(ئالىي ئارلىق توپلاشتۇرۇش)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "چاقناشنى قولىدا باشقۇرۇش" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "يورۇتۇش ھالىتى" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "چاقناش ھالىتى" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "ئۈسكۈنە ھالىتى" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "ISOقىممىتى" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "نۇر ئۆتۈش ۋاقتى" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +#, fuzzy +msgid "FNumber" +msgstr "F قىممىتى" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +#, fuzzy +msgid "The F-Number" +msgstr "F قىممىتى" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "ماكرو ھالەت" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "يورۇتۇشنى تولۇقلاش" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "تەگلىك قەدىمى" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "تەگلىك قەدىمى" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ ئۇزۇنلۇقى" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ ئۇزۇنلۇقى" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ نومۇرى" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ نومۇرى" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Ùوكۇس ئارلىقى" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Ùوكۇس ئارلىقى" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "چاقماق لامپا" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "چاقماق لامپا" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Minoltaسانلىق مەلۇماتى" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Minoltaسانلىق مەلۇماتى" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Minolta ۋاقتى" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Minolta ۋاقتى" + +#: src/minoltamn.cpp:556 +msgid "File Number Memory" +msgstr "ئەسلەڭ ھۆججەت نومۇرى" + +#: src/minoltamn.cpp:557 +msgid "File number memory" +msgstr "ئەسلەڭ ھۆججەت نومۇرى" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "كىيىنكى سۈرەت نومۇرى" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "كىيىنكى سۈرەت نومۇرى" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "قىزىل رەڭ تەڭپۇڭلۇقى" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "قىزىل رەڭ تەڭپۇڭلۇقى" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "ÙŠÛØ´Ù‰Ù„ رەڭ تەڭپۇڭلۇقى" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "ÙŠÛØ´Ù‰Ù„ رەڭ تەڭپۇڭلۇقى" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "ÙƒÛ†Ú­ رەڭ تەڭپۇڭلۇقى" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "ÙƒÛ†Ú­ رەڭ تەڭپۇڭلۇقى" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "پرۇگرامما باش تÛمىسى" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "پرۇگرامما باش تÛمىسى" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "ISOتەڭشىكى" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "ISOتەڭشىكى" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Minoltaمودىلى" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Minoltaمودىلى" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ شەكلى" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ شەكلى" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "قىسقۇچ ئاتى" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "قىسقۇچ ئاتى" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "رەڭ ھالىتى" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "رەڭ سۈزگۈچ" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "رەڭ سۈزگۈچ" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "رەڭسىز سۈزگۈچ" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "رەڭسىز سۈزگۈچ" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "ئىچكى چاقماق" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "يورۇقلۇق" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:614 +#, fuzzy +msgid "Spot focus point X" +msgstr "Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:617 +#, fuzzy +msgid "Spot focus point Y" +msgstr "Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "ÙƒÛ•Ú­ Ùوكۇس رايۇنى" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "ÙƒÛ•Ú­ Ùوكۇس رايۇنى" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Ùوكۇس ھالىتى" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Ùوكۇس دائىرىسى" + +#: src/minoltamn.cpp:628 +#, fuzzy +msgid "DEC Switch Position" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى" + +#: src/minoltamn.cpp:629 +#, fuzzy +msgid "DEC switch position" +msgstr "Ùوكۇس ئورنى" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "رەڭ سەپلىمە ھۆججىتى" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "رەڭ سەپلىمە ھۆججىتى" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "سانلىق مەلۇمات نەشىر ئىزاھاتى" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +msgid "Flash Metering" +msgstr "مۆلچەر چاقنىشى" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +msgid "Flash metering" +msgstr "مۆلچەر چاقنىشى" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "نامەلۇم Minoltaكامىرا تەڭشەك بەلگىسى" + +#: src/minoltamn.cpp:660 +msgid "Program-shift A" +msgstr "پروگرامما-shift A" + +#: src/minoltamn.cpp:661 +msgid "Program-shift S" +msgstr "پروگرامما-shift S" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "ÙƒÛلۋىن" + +#: src/minoltamn.cpp:695 +#, fuzzy +msgid "Single-shot AF" +msgstr "يەككە Ù‚ÛØªÙ‰Ù…لىق AF" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "ئۆزلۈكسىز ئاپتوماتىك Ùۇكۇس" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "ئاپتوماتىك AF" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (نورمال)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (نورمال+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "توغرا يۆنىلىش(نورمال)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "°90تەتۈر ئايلاندۇر" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "°270تەتۈر ئايلاندۇر" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "رەڭ بوشلۇقى" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "رەڭ بوشلۇقى" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "رەڭگى" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "ئايلاندۇر" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "سۈرەت نومۇرى" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "ماس رايۇندا" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "ماس رايۇندا" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "نامەلۇم Minolta كامىرا تەڭشىكى 7Dبەلگىسى" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +msgid "Program Shift A" +msgstr "پروگرامما Shift A" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +msgid "Program Shift S" +msgstr "پروگرامما Shift S" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "ÙƒÛچىلىك /سۈرەت" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (يۇقۇرى ماس رايۇن)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80(تۆۋەن ماس رايۇن)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB (ICC)" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "ئوتتۇرا" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "ئۈستى" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "ئوڭ ئۈستى" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "ئوڭ ئاستى" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "ئاستى" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "سول ئاستى" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "سول ئۈستى" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "تاللاش" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "تەبىئىي+" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "شامال مەنزىرىسى" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "كىچە مەنزىرىسى" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Ùوكۇس ئورنى" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Ùوكۇس ئورنى" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Ùوكۇس دائىرىسى" + +#: src/minoltamn.cpp:1036 +msgid "Exposure Revision" +msgstr "نورلاندۇرۇشنى تۈزىتىش" + +#: src/minoltamn.cpp:1037 +msgid "Exposure revision" +msgstr "نورلاندۇرۇشنى تۈزىتىش" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "ئايلاندۇرۇش 2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "رەسىم تاماملاش" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "نۇر ئۆتۈش Ø¦ÛØºÙ‰Ø´Ù‰ قوللانچىسى" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "نۇر ئۆتۈش Ø¦ÛØºÙ‰Ø´Ù‰ قوللانچىسى" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Ùوكۇسنى ئاپتوماتىك تەكشەش ھالىتى" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Ùوكۇسنى ئاپتوماتىك تەكشەش ھالىتى" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "نامەلۇم Minoltaكامىرا تەڭشىكى 5Dبەلگىسى" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +#, fuzzy +msgid "Self-timer 10 sec" +msgstr "ئۆزى تارتىش ۋاقىت بەلگىلىگۈچى" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +#, fuzzy +msgid "Self-timer 2 sec" +msgstr "ئۆزى تارتىش ۋاقىت بەلگىلىگۈچى" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "ئاق تەڭپۇڭلۇق قورشىشى تۆۋەن" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "ئاق تەڭپۇڭلۇق قورشىشى يۇقۇرى" + +#: src/minoltamn.cpp:1106 +msgid "Single-frame Bracketing Low" +msgstr "يەككە كاندۇك قورشىشى تۆۋەن" + +#: src/minoltamn.cpp:1107 +msgid "Continuous Bracketing Low" +msgstr "ئۆزلۈكسىز قورشىشى تۆۋەن" + +#: src/minoltamn.cpp:1108 +msgid "Single-frame Bracketing High" +msgstr "يەككە كاندۇك قورشىشى يۇقۇرى" + +#: src/minoltamn.cpp:1109 +msgid "Continuous Bracketing High" +msgstr "ئۆزلۈكسىز قورشىشى يۇقۇرى" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "ئالىي" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "ئۆزلۈكسىز قورشىشى" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "يەككە كاندۇك قورشىشى" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "ئاق تەڭپۇڭلۇق قورشىشى" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "تەڭشە:" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§/رەڭ سۈزگۈچ" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "ئورنات" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "تامام" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "خاتالىق" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "سۈرەت Û‹Û• ئۇچۇر" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "سۈرەتلا" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "سۈرەت Û‹Û• (كاتەكسىمان)" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "نۇر تولۇقلاش" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "Ùوكۇسنى ساقلاپ Ù‚Ûلىش" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "DOFئالدىن كۈزىتىش" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "كۈتۈش" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "ئالماشتۇر" + +#: src/minoltamn.cpp:1259 +msgid "Spot Hold" +msgstr "ساقلاپ Ù‚Ûلىنغان نوقتا" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "نوقتا تۈگۈنى" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "قاپقاق ØªÛØ²Ù„ىكى" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "ئەتراپ Û‹Û• چاقناش" + +#: src/minoltamn.cpp:1272 +msgid "Ambient Only" +msgstr "ئەتراپلا" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0.3 سÛكۇنت" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0.6سÛكۇنت" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "ئاپتوماتىك" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "ئاپتوماتىك ئايلاندۇرۇش" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "توغرا يۆنىلىش" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "قولىدا ئايلاندۇرۇش" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "دائىرە ئىچىدە" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "ئاستى/دائىرە ئۈستىدە" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "دائىرە سىرتىدا" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "ئەسكەرتىلمىگەن" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "ئۈستۈنكى نىسبەت" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "نىسبەت ئاخىرى" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "نىسبەت ئۈستى" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "نىسبەت ئۈستىدە" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "Ú† ب" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "MF" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "ئىچكى" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "بەك تۆۋەن" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "ÙŠÛØ±Ù‰Ù…Ù‰ توشتى" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "قالغان توك ÙŠÛØªÛ•رلىك" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "يورۇتۇشنى تولۇقلاش تەڭشىكى" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "يورۇتۇشنى تولۇقلاش تەڭشىكى" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "يۇقۇرى سۈرئەتنى قەدەمداشلاش" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "يۇقۇرى سۈرئەتنى قەدەمداشلاش" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "قولىدا نۇر ئۆتكۈزۈش ۋاقتى" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "قولىدا نۇر ئۆتكۈزۈش ۋاقتى" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ نومۇرى" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "ئۈسكۈنە ھالىتى2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "ئۈسكۈنە ھالىتى2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "يەرلىك AF دائىرە نوقتا" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +msgid "AF Area Mode" +msgstr "AFدائىرە ھالىتى" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "چاقناش ھالىتى" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "تولۇقلاپ چاقناپ نۇر ئۆتكۈزۈش" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "يورۇتۇشنى تولۇقلاش تەڭشىكى" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "ISOتەڭشىكى" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +msgid "Zone Matching Mode" +msgstr "ماس رايۇن ھالىتى" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "ھەركەتچان دائىرەنى ئەلالاشتۇرۇش مودىلى" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "ھەركەتچان دائىرەنى ئەلالاشتۇرۇش مودىلى" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +#, fuzzy +msgid "Self Timer Time" +msgstr "ئۆزىدىكى ۋاقىت" + +#: src/minoltamn.cpp:1435 +#, fuzzy +msgid "Self timer time" +msgstr "ئۆزىدىكى ۋاقىت" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "ئۆزلۈكسىز قورشىشى" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "يەككە كاندۇك قورشىشى" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "يەككە كاندۇك قورشىشى" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "ئاق تەڭپۇڭلۇق قورشىشى" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "ئاق تەڭپۇڭلۇق تەڭشىكى" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "ئاق تەڭپۇڭلۇقنى ئالدىن تەڭشەش" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "ئاق تەڭپۇڭلۇقنى ئالدىن تەڭشەش" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§ تەڭشىكى" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§ تەڭشىكى" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق تەڭشەكى" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق تەڭشەكى" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +msgid "Dynamic Range Optimizer Settings" +msgstr "ھەركەتچان دائىرەنى ئەلالاشتۇرۇش تەڭشىكى" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق قىزىل رەڭ دەرىجىسى" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق قىزىل رەڭ دەرىجىسى" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق ÙŠÛØ´Ù‰Ù„ رەڭ دەرىجىسى" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق ÙŠÛØ´Ù‰Ù„ رەڭ دەرىجىسى" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق ÙƒÛ†Ùƒ رەڭ دەرىجىسى" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق ÙƒÛ†Ùƒ رەڭ دەرىجىسى" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +msgid "Custom WB Error" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق خاتالىقى" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "ئاق تەڭپۇڭلۇقنى مىكرو تەڭشەش" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "رەڭ تولدۇرۇش سۈزگۈچى" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Sony سۈرەت چوڭلۇقى" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "ھازىر قويۇش ۋاقتى" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "قۇلاي قويۇش ۋاقتى" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "قۇلاي قويۇشنى ئورنىتىش" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "قۇلاي قويۇشنى ئورنىتىش" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "يەككە Ù‚ÛØªÙ‰Ù…لىق AF" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "قىزىل كۆزنى تۆۋەنلىتىش" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "قىزىل كۆزنى تۆۋەنلىتىش" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "كۆڭۈلدىكى چاقناش" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "كۆڭۈلدىكى چاقناش" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "تەگلىك تەرتىپى ئاپتوماتىك" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "تەگلىك تەرتىپى ئاپتوماتىك" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "Ùوكۇسنى ساقلاپ Ù‚Ûلىش توپچىسى" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "Ùوكۇسنى ساقلاپ Ù‚Ûلىش توپچىسى" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "AELتوپچىسى" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "AELتوپچىسى" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "باشقۇرۇش يۈزىنى تەڭشەش" + +#: src/minoltamn.cpp:1519 +msgid "Control dial set" +msgstr "باشقۇرۇش يۈزىنى تەڭشەش" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "يورۇتۇشنى تولۇقلاش مودىلى" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "يورۇتۇشنى تولۇقلاش مودىلى" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "ياردەمچى ئاپتوماتىك Ùۇكۇس" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "كارتا زاتۇر قۇلۇپى" + +#: src/minoltamn.cpp:1528 +msgid "Card shutter lock" +msgstr "كارتا زاتۇر قۇلۇپى" + +#: src/minoltamn.cpp:1530 +msgid "Lens Shutter Lock" +msgstr "لىنزا زاتۇر قۇلۇپى" + +#: src/minoltamn.cpp:1531 +msgid "Lens shutter lock" +msgstr "لىنزا زاتۇر قۇلۇپى" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "ئاپتوماتىك Ùوكۇس يورۇتۇش دائىرىسى" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "ئاپتوماتىك Ùوكۇس يورۇتۇش دائىرىسى" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "كۈزەتكۈچ كۆرسىتىش Ø¦ÛØªÙ‰Ùƒ" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "كۈزەتكۈچ كۆرسىتىش Ø¦ÛØªÙ‰Ùƒ" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "خاتىرىنى كۆرسىتىش" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "خاتىرىنى كۆرسىتىش" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "قويۇشنى كۆرسىتىش" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "قويۇشنى كۆرسىتىش" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1548 +msgid "AEL Exposure Indicator" +msgstr "AELنۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +#, fuzzy +msgid "Exposure Bracketing Indicator Last" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "نۇرلاندۇرۇش كۆرسەتكۈچى" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "Ùوكۇس ھالىتى" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Ùوكۇس ھالىتى تەڭشىكى" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash Type" +msgstr "چاقناش ھالىتى" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash type" +msgstr "چاقناش ھالىتى" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "AE قولۇپى" + +#: src/minoltamn.cpp:1585 +#, fuzzy +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "رەڭ تولدۇرۇش سۈزگۈچى:Ù†Ûگاتىپ ÙŠÛØ´Ù‰Ù„ØŒ ئۇدۇلدىن ئاچ ھالرەڭ" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "توكدان دەرىجىسى" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "توكداننىڭ توكى" + +#: src/minoltamn.cpp:1592 +#, fuzzy +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "نامەلۇم Canon كامىراسى 1Ú¯Û• تەڭشەلگەن" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "تازىلا" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "چوڭقۇرلۇقى" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "ئاق" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "ÙƒÛچىلىك كۆرۈنۈش" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "كۈز ياپرىقى" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "يەرلىك" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "ئوڭ ئۇستى" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "تۆۋەن ئوڭ" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "سول ئاستى" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "سول ئۇستى" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "ئوڭ-يىراق" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "سول - يىراق" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "ئالىي ئاپتوماتىك" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "ئالىي دەرىجە" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "Ùوكۇس ئاپتوماتىك" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "تارقاتقۇچى" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "تەبىئىي " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "JPEGتەبىئىي+Raw" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "تەبىئىي پىرىسلانغان" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "تەبىئىي پىرىسلانغان+JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "D) AF 2x APO" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +#, fuzzy +msgid "Minolta AF 1.4x APO (D)" +msgstr "D) AF 2x APO" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "ISOتەڭشىكى ئىشلىتىدى" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "يۇقۇرىقى كونۇپكا" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "تۆۋەنكى كونۇپكا" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "ئارتۇقچە يۇقۇرى" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "يەككە رايۇن" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "ھەركەتچان رايۇن" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "ھەركەتچان رايۇن، ÙŠÛقىنقى تارتىلغان ئوبىكىت" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "ھەركەتچان گورۇپپا" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +msgid "Single area (wide)" +msgstr "يەككە رايۇن(ÙƒÛ•Ú­)" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "ھەركەتچان رايۇن (ÙƒÛ•Ú­)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "ئۈستۈنكى - سول" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "ئۈستۈنكى - ئوڭ" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "تۆۋەنكى - سول" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "تۆۋەنكى - ئوڭ" + +#: src/nikonmn.cpp:108 +msgid "Left-most" +msgstr "ئەڭ- سول" + +#: src/nikonmn.cpp:109 +msgid "Right-most" +msgstr "ئەڭ ئوڭ" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "ئوت، قولىدا" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "ئوت، سىرىتقى" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "ئوت، قۇماندا ھالىتى" + +#: src/nikonmn.cpp:146 +msgid "Fire, TTL mode" +msgstr "ئوت، TTLھالىتى" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "ÙƒÛچىكتۈر" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "كومپيۇتىر نى باشقۇرۇش" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "نۇرلاندۇرۇش قورشىشى" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "ئاپتوماتىك ISO" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "ئاق تەڭپۇڭلۇق قورشىشى" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "IRكونترولى" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "ئۆزلۈكسىز قورشىشى" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "كومپيۇتىر نى باشقۇرۇش" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "نۇرلاندۇرۇش قورشىشى" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "LE-NRنى ئاستىلىتىش ئىشلىتىلمىگەن" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "IRكونترولى" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "ئۆزلۈكىدىن قويۇپ Ø¨ÛØ±Ù‰Ø´" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "قولىدا قويۇپ Ø¨ÛØ±Ù‰Ø´" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "خورايدىغان(تىپ 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "Ù¾Ø±ÛØ³Ù„انمىغان" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "خورىماس" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "خورايدىغان(تىپ 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "B & W" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "كەس" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "كىچىك رەسىم" + +#: src/nikonmn.cpp:195 +msgid "D-Lighting" +msgstr "يورۇت-D" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "قىزىل كۆز" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "تىپى" + +#: src/nikonmn.cpp:198 +msgid "Sky light" +msgstr "يورۇق ئاسمان" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "ئىللىق تۈس" + +#: src/nikonmn.cpp:200 +msgid "Color custom" +msgstr "ئىختىيارى رەڭ" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "سۈرەت دەستىلەش" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "ئەڭ كىچىك" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "Nikon زاۋۇت ئىزاھاتى نەشىرى" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "ISO ØªÛØ²Ù„ىكى" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "رۇشەنلەشتۈرۈش" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "سۈرەتنى رۈشەنلەشتۈرۈش تەڭشىكى" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Ùوكۇس" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "چاقناش تەڭشىكى" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "چاقناش تەڭشىكى" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "تاللىغان ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "تاللىغان ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "سانلىق مەلۇمات تۆكمىسى" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "سانلىق مەلۇمات تۆكمىسى" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "سۈرەت تەڭشىلىشى" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "سۈرەت تەڭشىلىش تەڭشىكى" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "قوشۇمچە لىنزا" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "قوشۇمچە لىنزا (ماسلاشتۇرغۇچ)" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "Ùوكۇسنى قولىدا تەڭشەش ئارلىقى" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "رەقەملىك ÙƒÛڭەيتىش تارايتىش تەڭشىكى" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى ئۇچۇرى" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "نامەلۇم Nikon1 زاۋۇت ئىزاھاتى بەلگىسى" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "ئۆزلۈكسىز ئاپتوماتىك Ùوكۇس" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "يەككە ئاپتوماتىك Ùوكۇس" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "ئىشلىتىلمىگەن" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "مۆلچەر" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "ئاساسى VGA" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "نورمال VGA" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "ئالاھىدە VGA" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "ئاساسىي SXGA" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "نورمال SXGA" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "ئالاھىدە SXGA" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "ئوچۇق+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "ئوچۇق-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "سÛلىشتۇرما دەرىجە+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "سÛلىشتۇرما دەرىجە-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "يالتىراق لامپا" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "نامەلۇم Nikon2زاۋۇت ئىزاھاتى بەلگىسى" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Flashئۈسكۈنىسى" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "Flashئۈسكۈنىسى" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "ئاق تەڭپۇڭلۇق Ø¦ÛØºÙ‰Ø´Ù‰" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "ئاق تەڭپۇڭلۇق Ø¦ÛØºÙ‰Ø´Ù‰" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/nikonmn.cpp:544 +msgid "Program Shift" +msgstr "پرۇگرامما Shift" + +#: src/nikonmn.cpp:544 +msgid "Program shift" +msgstr "پرۇگرامما Shift" + +#: src/nikonmn.cpp:545 +msgid "Exposure Difference" +msgstr "يورۇتۇش پەرقى" + +#: src/nikonmn.cpp:545 +msgid "Exposure difference" +msgstr "يورۇتۇش پەرقى" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "نۇر بەلگە ئارقىلىق سۈرەتنى ئالدىن كۈزىتىش" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash Comp" +msgstr "چاقناش چىرىقى Ø¦ÛØªÙ‰Ùƒ" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "چاقناشنى تولۇقلاش تەڭشىكى" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "سۈرەت چىگرىسى" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "سۈرەت چىگرىسى" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "چاقناپ نۇر ئۆتكۈزۈش قۇلۇپى" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "ئاق تەڭپۇڭلۇق سÛلىشتۇرمىسى" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "چاقناشنى تولۇقلاش تەڭشىكى" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "نۇرلاندۇرۇش قورشىشى" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "AE bracket compensation applied" +msgstr "يورۇتۇشنى تولۇقلاش قىممىتى" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "سۈرەتچىلىك" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "سۈرەتچىلىك" + +#: src/nikonmn.cpp:556 +msgid "Crop High Speed" +msgstr "تىز سۈرئەتتە كەس" + +#: src/nikonmn.cpp:556 +msgid "Crop high speed" +msgstr "تىز سۈرئەتتە كەس" + +#: src/nikonmn.cpp:557 +msgid "Exposure Tuning" +msgstr "نۇرلەندۈرۈشنى تەڭشەش" + +#: src/nikonmn.cpp:557 +msgid "Exposure tuning" +msgstr "نۇرلەندۈرۈشنى تەڭشەش" + +#: src/nikonmn.cpp:560 +msgid "VR Info" +msgstr "VRئۇچۇرى" + +#: src/nikonmn.cpp:560 +msgid "VR info" +msgstr "VRئۇچۇرى" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "سۈرەت دەلىللەش" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "سۈرەت دەلىللەش" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-Lighting" +msgstr "يورۇت-D" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-lighting" +msgstr "يورۇت-D" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "رەسىم تىزگىنى" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " رەسىم تىزگىنى" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "دۇنيا ۋاقتى" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "دۇنيا ۋاقتى" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "ISOئۇچۇرى" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "ISOئۇچۇرى" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "قىستۇرما سۈرەت تىزگىنى" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "قىستۇرما سۈرەت تىزگىنى" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "تولۇقلاش تۈسى" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "تولۇقلاش تۈسى" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "چاقناشنى ئىشلىتىش ھالىتى" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +#, fuzzy +msgid "Shooting Mode" +msgstr "رەسىمگە تارتىش يىتەكچىسى" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +#, fuzzy +msgid "Shooting mode" +msgstr "رەسىمگە تارتىش يىتەكچىسى" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "تەگلىكنى ئۆزلۈكىدىن نۇرلاندۇرۇش" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "تەگلىكنى ئۆزلۈكىدىن نۇرلاندۇرۇش" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "لىنزا تىپى" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "ئەگرىلىكىنى سÛلىشتۇر" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "ئەگرىلىكىنى سÛلىشتۇر" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Ù†Û•Ø® مەيدان ھالىتى" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "يورۇقلۇق مەنبەسى" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "يورۇقلۇق مەنبەسى" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "رەسىمگە تارتىش ئۇچۇرى" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø²Ø³Ù‰Ù†Ù‰ تەڭشەش" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰Ù†Ù‰ تەڭشەش" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "NEFپرىسلاش" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "NEFپرىسلاش" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "سىزىقلىق جەدۋەل" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "سىزىقلىق جەدۋەل" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "رەڭ تەڭپۇڭى" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "رەڭ تەڭپۇڭى" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "لىنزا سانلىق مەلۇماتى" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "لىنزا سانلىق مەلۇمات تەڭشىكى" + +#: src/nikonmn.cpp:591 +msgid "Raw Image Center" +msgstr "ئەسلى سۈرەت مەركىزى" + +#: src/nikonmn.cpp:591 +msgid "Raw image center" +msgstr "ئەسلى سۈرەت مەركىزى" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "سەزگۈچ پىكسÛÙ„ چوڭلۇقى" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "سەزگۈچ پىكسÛÙ„ چوڭلۇقى" + +#: src/nikonmn.cpp:594 +msgid "Scene Assist" +msgstr "كۆرۈنۈش ياردەمچى" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "كۆرۈنۈش ياردەمچى" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "ئىزلارنى تۈزەت" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "ئىزلارنى تۈزەت" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "تەرتىپ يوق" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "كامىرا تەرتىپ نومۇرى، باشلانغاندا دائىم \"NO= \"" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "سۈرەت سانلىق مەلۇمات چوڭلۇقى" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "سۈرەت سانلىق مەلۇمات چوڭلۇقى" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "سۈرەت سانى" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "سۈرەت سانى" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "سۈرەت سانىنى ئۆچۈر" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "سۈرەت سانىنى ئۆچۈر" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +msgid "Shutter Count" +msgstr "قاپقاق سانى" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "كامىرادىكى تارتىلغان سۈرەت سانى" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "چاقناش ئۇچۇرى" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "سۈرەتنى ئەلالاشتۇرۇش" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "سۈرەتنى ئەلالاشتۇرۇش" + +#: src/nikonmn.cpp:606 +msgid "Program Variation" +msgstr "پرۇگرامما پەرقى" + +#: src/nikonmn.cpp:606 +msgid "Program variation" +msgstr "پرۇگرامما پەرقى" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "نۇر ئۆتۈش ÙƒÛ†Ù¾" + +#: src/nikonmn.cpp:610 +#, fuzzy +msgid "High ISO Noise Reduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "رەڭ تەڭشەش ئۈنۈمى" + +#: src/nikonmn.cpp:612 +msgid "AF info 2" +msgstr "AFئۇچۇرى2" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "ھۆججەت ئۇچۇرى" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "Ùوكۇسنى ئاپتوماتىك مىكرو تەكشەش" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "سانلىق مەلۇماتقا Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "سانلىق مەلۇماتقا Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/nikonmn.cpp:618 +msgid "Capture Version" +msgstr "نەشىرگە Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/nikonmn.cpp:618 +msgid "Capture version" +msgstr "نەشىرگە Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture Offsets" +msgstr "سانلىق مەلۇماتقا Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "Ø¦ÛØ±Ù‰Ø´ÙƒÛ•ننى چىقىرىش" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "IFDتەكشۈر" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "ICCسەپلىمە ھۆججىتى" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "Ø¦ÛØ±Ù‰Ø´ÙƒÛ•ننى چىقىرىش" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "نامەلۇم Nikon3 زاۋۇت ئىزاھاتى بەلگىسى" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "ياق" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "ھەئە" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "يىل- ئاي -ÙƒÛˆÙ†" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "يىل-ÙƒÛˆÙ† -ئاي" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "يىل- ئاي -ÙƒÛˆÙ†" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "تىترەشنى ئازلىتىش" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "تىترەشنى ئازلىتىش" + +#: src/nikonmn.cpp:657 +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "نامەلۇم Nikon تىترەشنى ئازلىتىش بەلگىسى" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "كۆڭۈلدىكى تەڭشەكلەر" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "تىز تەڭشەش" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "تولۇق كونترول قىلىش" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "ÙƒÛ†Ùƒ-ÙŠÛØ´Ù‰Ù„" + +#: src/nikonmn.cpp:692 +msgid "Purple-blue" +msgstr "بىنەپشە- ÙƒÛ†Ùƒ" + +#: src/nikonmn.cpp:693 +msgid "Red-purple" +msgstr "قىزىل-بىنەپشە" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "ئاتى" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "ئاساسى" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "تەڭشە" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "تىز تەڭشەش" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "سۈزگۈچ ئۈنۈمى" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "تويۇنۇش دەرىجىسىنى تەڭشەش" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "تويۇنۇش دەرىجىسىنى تەڭشەش" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "نامەلۇم Nikonرەسىم باشقۇرۇش بەلگىسى" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "ئالاھىدە VGA" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF fine tune" +msgstr "Ùوكۇسنى ئاپتوماتىك مىكرو تەكشەش" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "ئاپتوماتىك Ùوكۇس تەڭشەش" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰Ù†Ù‰ تەڭشەش" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "ۋاقىت رايونى" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "ÙƒÛˆÙ† نۇرى" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "ÙƒÛˆÙ† نۇرى" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "چىسلا كۆرسىتىش پىچىمى" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "چىسلا كۆرسىتىش پىچىمى" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Hi 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Hi 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Hi 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Hi 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Hi 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Hi 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Hi 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Lo 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Lo 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Lo 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Lo 1.0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "ISOÙƒÛڭەيتىلگەن" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "ISOÙƒÛڭەيتىلگەن" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "ISOÙƒÛڭەيتىلگەن 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "ISOÙƒÛڭەيتىلگەن 2" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "يەككە رايۇن" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "ھەركەتچان رايۇن" + +#: src/nikonmn.cpp:800 +msgid "Dynamic Area, Closest Subject" +msgstr "ھەركەتچان رايۇن، ÙŠÛقىنقى تارتىلغان ئوبىكىت" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "ھەركەتچان گورۇپپا" + +#: src/nikonmn.cpp:802 +msgid "Single Area (wide)" +msgstr "يەككە رايۇن(ÙƒÛ•Ú­)" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "ھەركەتچان رايۇن (ÙƒÛ•Ú­)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "ئوتتۇرا- سول" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "ئوتتۇرا-ئوڭ" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "يىراق سول" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "يىراق ئوڭ" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "ئاپتوماتىك Ùوكۇس دائىرە ھالىتى" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا" + +#: src/nikonmn.cpp:840 +msgid "AF Points In Focus" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا Ùوكۇس ئىچىدە" + +#: src/nikonmn.cpp:840 +msgid "AF points in focus" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا Ùوكۇس ئىچىدە" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:853 +#, fuzzy +msgid "On (51-point)" +msgstr "(1 )دا" + +#: src/nikonmn.cpp:854 +#, fuzzy +msgid "On (11-point)" +msgstr "(1 )دا" + +#: src/nikonmn.cpp:855 +msgid "On (39-point)" +msgstr "" + +#: src/nikonmn.cpp:856 +msgid "On (73-point)" +msgstr "" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "(1 )دا" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase Detect AF" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/nikonmn.cpp:866 +#, fuzzy +msgid "Phase detect AF" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "AFنوقتا" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "سۈرەت كەڭلىكى" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "ئاپتوماتىك Ùوكۇس يورۇتۇش دائىرىسى" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "ئاپتوماتىك Ùوكۇس يورۇتۇش دائىرىسى" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "AFدائىرە ھالىتى" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "ئاپتوماتىك Ùوكۇس دائىرە ھالىتى" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "AFدائىرە ھالىتى" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "يىراق ئوڭ" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:888 +msgid "Directory Number" +msgstr "مۇندەرىجە نومۇرى" + +#: src/nikonmn.cpp:888 +msgid "Directory number" +msgstr "مۇندەرىجە نومۇرى" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +#, fuzzy +msgid "Multiple Exposure" +msgstr "ÙƒÛ†Ù¾ خىل نۇر ئۆتكۈزۈش ھالىتى" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "سۈرەت دەستىلەش" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "ÙƒÛ†Ù¾ خىل نۇر ئۆتكۈزۈش ھالىتى" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "ÙƒÛ†Ù¾ خىل نۇر ئۆتكۈزۈش ھالىتى" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "نۇر ئۆتۈش ÙƒÛ†Ù¾" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "نۇر ئۆتۈش ÙƒÛ†Ù¾" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "ÙƒÛ†Ù¾ خىل نۇر ئۆتكۈزۈش ھالىتى" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "نۇر ئۆتۈش ÙƒÛ†Ù¾" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "ئىچكى" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "نۇر گەردىشى ئاپتوماتىك" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "ئىچكى چاقماق" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +msgid "Amber" +msgstr "ساغۇچ رەڭلىك" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "نۇر مەنبەسى" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "نۇر مەنبەسى" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "سىرىتقى چاقماق" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "سىرىتقى چاقماق" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "سىرىتقى چاقماق" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "سىرىتقى چاقماق" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "ھۆججەت ئاتىنى ئۆزگەرتىۋاتدۇ" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "چاقناشنى قولىدا باشقۇرۇش" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "رەڭ سۈزگۈچ" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "رەڭ سۈزگۈچ" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +#, fuzzy +msgid "Shutter count" +msgstr "قاپقاق سانى1" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "چاقناش دەرىجىسى" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "چاقناش دەرىجىسى" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +#, fuzzy +msgid "AF fine tune adj" +msgstr "Ùوكۇسنى ئاپتوماتىك مىكرو تەكشەش" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "(1 )دا" + +#: src/nikonmn.cpp:1248 +msgid "Shutter Count 1" +msgstr "قاپقاق سانى1" + +#: src/nikonmn.cpp:1248 +msgid "Shutter count 1" +msgstr "قاپقاق سانى1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration Reduction 1" +msgstr "تىترەشنى ئازلىتىش1" + +#: src/nikonmn.cpp:1251 +msgid "Vibration reduction 1" +msgstr "تىترەشنى ئازلىتىش1" + +#: src/nikonmn.cpp:1252 +msgid "Shutter Count 2" +msgstr "قاپقاق سانى2" + +#: src/nikonmn.cpp:1252 +msgid "Shutter count 2" +msgstr "قاپقاق سانى2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "تىترەشنى ئازلىتىش2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "تىترەشنى ئازلىتىش2" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "RBGGدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "RBGGدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "RGBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "RGBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "نامەلۇم Nikon دۇنيا ۋاقتى بەلگىسى" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID Number" +msgstr "لىنزا كىملىك نومۇرى" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +msgid "Lens ID number" +msgstr "لىنزا كىملىك نومۇرى" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "لىنزا تىپى" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "لىنزا تىپى" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "ئەڭ كىچىك Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "ئەڭ كىچىك Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ كىچىك Ùۇكۇسدا" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ كىچىك Ùۇكۇسدا" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ چوك Ùۇكۇسدا" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ چوك Ùۇكۇسدا" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU Version" +msgstr "MCUنەشىرى" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +msgid "MCU version" +msgstr "MCUنەشىرى" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "Ùوكۇس ئورنى" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF Aperture" +msgstr "ئاپتوماتىك Ùۇكۇس نۇر گەردىشى" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +msgid "AF aperture" +msgstr "ئاپتوماتىك Ùۇكۇس نۇر گەردىشى" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective Max Aperture" +msgstr "ئۈنۈملۈك ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +msgid "Effective max aperture" +msgstr "ئۈنۈملۈك ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ كىچىك Ùوكۇس ئارلىقىدا" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشىئەڭ Ú†ÙˆÚ­ Ùۇكۇس ئارلىقىدا" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "نامەلۇم Nikon Isoئۇچۇرى بەلگىسى" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "ÙŠÛقىنقى ئوبىكىت" + +#: src/nikonmn.cpp:1591 +#, fuzzy +msgid "Group dynamic-AF" +msgstr "ھەركەتچان گورۇپپا" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "يوق" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "ئىشلىتىلگىنى" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "يەككە كاندۇك" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "سۈپەت ئۆلچىمى(SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "يۇقۇرى سۈپەت (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "ئالاھىدە يۇقۇرى سۈپەت (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "تەنتەربىيە" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "توغرىسىغا+بويىغا" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +#, fuzzy +msgid "Self Portrait" +msgstr "بوي يۆنىلىش" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "ÙƒÛÚ†Û• +رەسىم" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "ÙŠÛمەكلىك" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "پۈتۈكلەر" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "سۈرەتكە ئÛلىش +تاللاش" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "دÛڭىز ساھىلى+قار" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "ئۆزىدىكى ۋاقىت" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "شام" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "ئىشلەتكىلى بولىدىغان يورۇقلۇق" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "ئارقا ئەينەك" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "مىنىڭ ھالىتىم" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +#, fuzzy +msgid "Pet" +msgstr "Ù¾ÛØ±Øª" + +#: src/olympusmn.cpp:122 +msgid "Underwater Wide1" +msgstr "سۇ ئاستى كەڭرى 1" + +#: src/olympusmn.cpp:123 +msgid "Underwater Macro" +msgstr "سۇ ئاستى ماكرو" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "سۈرەت تارتىش +تاللاش1" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "سۈرەت تارتىش+تاللاش 2" + +#: src/olympusmn.cpp:127 +msgid "Digital Image Stabilization" +msgstr "رەقەملىك سۈرەت مۇقىملىقى" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "" +"\n" +"مەشغۇلاتلار:\n" + +#: src/olympusmn.cpp:131 +msgid "Underwater Wide2" +msgstr "سۇ ئاستى كەڭرى2" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "بالا" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "ئالىي ماكرو" + +#: src/olympusmn.cpp:136 +msgid "Underwater Snapshot" +msgstr "سۇ ئاستى ئىكران كۆرۈنۈشى" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "رەسىمگە تارتىش يىتەكچىسى" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "ئىچكى+سىرىتقى" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "گىرەلەشتۈرۈلگەن" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "قەدەممۇ-قەدەم" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "ئاددى سۈرەت" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "ئاددى سۈرەت" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "Firmware نەشرى:" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "Firmware نەشرى:" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "ئالاھىدە ھالەت" + +#: src/olympusmn.cpp:196 +#, fuzzy +msgid "Picture taking mode" +msgstr "رەسىم ھالىتى" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "رەڭسىز ھالەت" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "رەڭسىز ھالەت" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "رەقەملىك ÙƒÛڭەيت تاراىتىش نىسبىتى" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "كامىرا تىپى" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "كامىرا تىپى" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "كامىرا كىملىكى" + +#: src/olympusmn.cpp:223 +msgid "Camera ID data" +msgstr "كامىرانىڭ كىملىك سانلىق مەلۇماتى" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "يۇمشاق Ø¯ÛØªØ§Ù„" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "نەشىرگە Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "قىياپەت كاندۇك" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "ئاق تاختاي" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "ئاق تاختاي" + +#: src/olympusmn.cpp:243 +#, fuzzy +msgid "One Touch WB" +msgstr "چەكمە" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "چەكمە ئاق تەڭپۇقلۇق" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +msgid "White Balance Bracket" +msgstr "ئاق تەڭپۇڭلۇق تەگلىكى" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +msgid "White balance bracket" +msgstr "ئاق تەڭپۇڭلۇق تەگلىكى" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmware" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "سانلىق مەلۇمات تۆكمىسى1" + +#: src/olympusmn.cpp:262 +msgid "Various camera settings 1" +msgstr "ھەر خىل ÙƒØ§Ù…ÛØ±Ø§ تەڭشىكى1" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "سانلىق مەلۇمات تۆكمىسى2" + +#: src/olympusmn.cpp:265 +msgid "Various camera settings 2" +msgstr "ھەر خىل ÙƒØ§Ù…ÛØ±Ø§ تەڭشىكى2" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "قاپقاق ØªÛØ²Ù„ىكى قىممىتى" + +#: src/olympusmn.cpp:271 +msgid "ISO speed value" +msgstr "ISOسۈرئەت قىممىتى" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "نۇر چەمبەر قىممىتى" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "يورۇقلۇق دەرىجىسى قىممىتى" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "تىرناق" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "يورۇتۇشنى تولۇقلاش قىممىتى" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "سەزگۈچ تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "سەزگۈچ تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "لىنزا تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "لىنزا تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "يورۇتۇش شارائىتى" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "يورۇتۇش شارائىتى" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Ùوكۇس دائىرىسى" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "Ùوكۇس دائىرىسى" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "ÙƒÛڭەيت-تارايت" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "قەدەم سانىنى ÙƒÛڭەت تارايت" + +#: src/olympusmn.cpp:309 +msgid "Macro Focus" +msgstr "ماكرو Ùوكۇس" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "ماكرو Ùوكۇس قەدەم سانى" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "ئۆتكۈرلۈك نىسبىتى" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "ئۆتكۈرلۈك نىسبىتى" + +#: src/olympusmn.cpp:315 +#, fuzzy +msgid "Flash Charge Level" +msgstr "چاقناش دەرىجىسى" + +#: src/olympusmn.cpp:316 +#, fuzzy +msgid "Flash charge level" +msgstr "چاقناش دەرىجىسى" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "رەك ماترىتساسى" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "رەڭ ماترىتساسى" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "قارىلىق دەرىجىسى" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "قارىلىق دەرىجىسى" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "ئاق تەڭپۇڭلۇق ھالىتى" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "قىزىل تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "قىزىل تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "ÙƒÛ†Ùƒ تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "ÙƒÛ†Ùƒ تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "رەڭ ماترىسا نومۇرى" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "رەڭ ماترىسا نومۇرى" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "تەرتىپ نومۇرى2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "تەرتىپ نومۇرى2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +#, fuzzy +msgid "Flash exposure compensation" +msgstr "تولۇقلاپ چاقناپ نۇر ئۆتكۈزۈش" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External Flash Zoom" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External flash zoom" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:387 +#, fuzzy +msgid "External Flash Mode" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:388 +#, fuzzy +msgid "External flash mode" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "رەڭ تىزگىنى" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "رەڭ تىزگىنى" + +#: src/olympusmn.cpp:399 +#, fuzzy +msgid "ValidBits" +msgstr "ئىناۋەتلىك بىت" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "ئىناۋەتلىك بىت" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "رەڭ سۈزگۈچ" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "رەڭ سۈزگۈچ" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Ù¾Ø±ÛØ³ نىسبىتى:" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Ù¾Ø±ÛØ³ نىسبىتى:" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "سۈرەت سىڭدۇرمىسىنى ئالدىن كۈزەت" + +#: src/olympusmn.cpp:430 +#, fuzzy +msgid "Offset of the preview image" +msgstr "سۈرەتنى ئالدىن كۈزىتىش چوڭلۇقى" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "سۈرەتنى ئالدىن كۈزىتىش چوڭلۇقى" + +#: src/olympusmn.cpp:435 +#, fuzzy +msgid "CCD Scan Mode" +msgstr "كۆرۈنۈش ھالىتى" + +#: src/olympusmn.cpp:436 +#, fuzzy +msgid "CCD scan mode" +msgstr "Ù†Û•Ø® مەيدان ھالىتى" + +#: src/olympusmn.cpp:441 +#, fuzzy +msgid "Infinity Lens Step" +msgstr "چەكسىز" + +#: src/olympusmn.cpp:442 +#, fuzzy +msgid "Infinity lens step" +msgstr "چەكسىز" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "لىنزا تىپى" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +#, fuzzy +msgid "Equipment Info" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "كامىرا تەڭشىكى(7D)" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr "سۈرەتچىلىك" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Ùوكۇس ئۇچۇرى" + +#: src/olympusmn.cpp:463 +#, fuzzy +msgid "Focus sub-IFD" +msgstr "Ùوكۇس ئۇچۇرى" + +#: src/olympusmn.cpp:465 +#, fuzzy +msgid "Raw Info" +msgstr "VRئۇچۇرى" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:470 +#, fuzzy +msgid "Unknown OlympusMakerNote tag" +msgstr "نامەلۇم Canonياسىغۇچى ئىزاھاتى بەلگىسى" + +#: src/olympusmn.cpp:486 +msgid "Program-shift" +msgstr "پروگرامما-shift A" + +#: src/olympusmn.cpp:491 +#, fuzzy +msgid "Center-weighted average" +msgstr "مەركەزگە پايدىلىق" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "ئەندىزە+ئاپتوماتىك Ùوكۇس" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "رەڭ تىزگىنى" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "يەككە رايۇن" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "" + +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "AFنوقتا ئىشلىتىلدى" + +#: src/olympusmn.cpp:518 +msgid "AF Used" +msgstr "ئاپتوماتىك Ùوكۇس ئىشلىتىلدى" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "تەييار ئەمەس" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "تەييار" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "" + +#: src/olympusmn.cpp:533 +#, fuzzy +msgid "Slow-sync" +msgstr "ئاستا قەدەمداشلاش" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "قانال 1ØŒ تۆۋەن" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "قانال 2ØŒ تۆۋەن" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "قانال 3ØŒ تۆۋەن" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "قانال 4ØŒ تۆۋەن" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "قانال 1 ،ئوتتۇرا" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "قانال 2ØŒ ئوتتۇرا" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "قانال 3 ،ئوتتۇرا" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "قانال 4 ،ئوتتۇرا" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "قانال 1ØŒ يۇقۇرى" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "قانال 2ØŒ يۇقۇرى" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "قانال 3ØŒ يۇقۇرى" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "قانال 4ØŒ يۇقۇرى" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +#, fuzzy +msgid "7500K (Fine Weather with Shade)" +msgstr "5300K( ئوچۇق)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (بۇلۇتلۇق)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K( ئوچۇق)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "3000K(Û‹ÙˆÙ„ÙØ±Ø§Ù… لامپا)" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +#, fuzzy +msgid "3600K (Tungsten light-like)" +msgstr "3000K(Û‹ÙˆÙ„ÙØ±Ø§Ù… لامپا)" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "نۇر گەردىشى ئاپتوماتىك" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "5300K( ئوچۇق)" + +#: src/olympusmn.cpp:574 +#, fuzzy +msgid "6600K (Daylight fluorescent)" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "يالتىراق لامپا" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "چەكمە" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "چەكمە" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "چەكمە" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "چەكمە" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "" + +#: src/olympusmn.cpp:595 +#, fuzzy +msgid "CM3 (Blue Enhance)" +msgstr "ÙƒÛ†Ùƒ تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "RGBسەپلىمە سۈرەت" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +#, fuzzy +msgid "Noise Filter" +msgstr "شاۋقۇن سۈزگۈچ" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Ú† Ùƒ شاۋقۇن سۈزگۈچ" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "ئۈنسىز" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +#, fuzzy +msgid "Monotone" +msgstr "رەڭ تۈسى" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "SQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +#, fuzzy +msgid "On, Mode 1" +msgstr "لىنزا ھالىتى" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +#, fuzzy +msgid "On, Mode 2" +msgstr "ئۈسكۈنە ھالىتى2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "لىنزا ھالىتى" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "كامىرا تەڭشەك نەشىرى" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "كامىرا تەڭشەك نەشىرى" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "سۈرەت ئالدىن كۈزىتىش ئىناۋەتسىز" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "Preview image valid" +msgstr "سۈرەت ئالدىن كۈزىتىش ئىناۋەتسىز" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "سۈرەت ئالدىن كۈزىتىشنى باشلا" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "Preview image start" +msgstr "سۈرەت ئالدىن كۈزىتىشنى باشلا" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "سۈرەت ئارلىقىنى ئالدىن كۈزەت" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "سۈرەت ئارلىقىنى ئالدىن كۈزەت" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "ئاپتوماتىك نۇر ئۆتكۈزۈش قۇلۇپى" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "نۇرلاندۇرۇش ۋاقتى" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "نۇرلاندۇرۇش ۋاقتى" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Ùوكۇسنى توغرىلاش" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Ùوكۇسنى توغرىلاش" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "ئاپتوماتىك Ùۇكۇس ئىزدەش" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "ئاپتوماتىك Ùۇكۇس ئىزدەش" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "ئاپتوماتىك Ùۇكۇس دائىرىسى" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "ئاپتوماتىك Ùۇكۇس دائىرىسى" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "ئاپتوماتىك نوقتا تاللاش" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "يىراقتا تىزگىنلەش" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "يىراقتا تىزگىنلەش" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "چاقناش ھالىتى" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "چاقناش ھالىتى" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "چاقناش پائالىيىتى" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "چاقناش پائالىيىتى" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "چاقناشنى قولىدا چىقىرىش" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "چاقناشنى قولىدا چىقىرىش" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "ئاق تەڭپۇڭلۇق2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "ئاق تەڭپۇڭلۇق2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "ئاق تەڭپۇڭلۇق تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "ئاق تەڭپۇڭلۇق تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "ئىختىيارى تويۇنۇش دەرىجىسى" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "ئىختىيارى تويۇنۇش دەرىجىسى" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "تويۇنۇش دەرىجىسىنى ئۆزگەرت" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "تويۇنۇش دەرىجىسىنى ئۆزگەرت" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "ئاق قارىلىق تەڭشىكى" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "ئۆتكۈرلۈك تەڭشىكى" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion Correction" +msgstr "تىترەشنى ئازلىتىش" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion correction" +msgstr "تىترەشنى ئازلىتىش" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +msgid "Shading Compensation" +msgstr "دالدىلاپ تولۇقلاش" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +msgid "Shading compensation" +msgstr "دالدىلاپ تولۇقلاش" + +#: src/olympusmn.cpp:694 +msgid "Compression Factor" +msgstr "تولۇقلاش نىسبىتى" + +#: src/olympusmn.cpp:694 +msgid "Compression factor" +msgstr "تولۇقلاش نىسبىتى" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +msgid "Gradation" +msgstr "قاتلام" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "رەسىم ھالىتى" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "رەسىم تويۇنۇش ھالىتى" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "رەسىم تويۇنۇش ھالىتى" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "رەسىم رەڭ ÙØ§Ø²Ù‰Ø³Ù‰ ھالىتى" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "رەسىم رەڭ ÙØ§Ø²Ù‰Ø³Ù‰ ھالىتى" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "رەسىم ئاق قارىلىق ھالىتى" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "رەسىم ئاق قارىلىق ھالىتى" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "رەسىم ئۆتكۈرلۈك ھالىتى" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "رەسىم ئۆتكۈرلۈك ھالىتى" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "رەسىم BWسۈزگۈچ ھالىتى" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "رەسىم BWسۈزگۈچ ھالىتى" + +#: src/olympusmn.cpp:702 +msgid "Picture Mode Tone" +msgstr "رەسىم تۈسى ھالىتى" + +#: src/olympusmn.cpp:702 +msgid "Picture mode tone" +msgstr "رەسىم تۈسى ھالىتى" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "شاۋقۇن سۈزگۈچ" + +#: src/olympusmn.cpp:704 +msgid "Art Filter" +msgstr "سەنئەتلىك سۈزگۈچ" + +#: src/olympusmn.cpp:704 +msgid "Art filter" +msgstr "سەنئەتلىك سۈزگۈچ" + +#: src/olympusmn.cpp:705 +msgid "Magic Filter" +msgstr "سÛھىرلىك سۈزگۈچ" + +#: src/olympusmn.cpp:705 +msgid "Magic filter" +msgstr "سÛھىرلىك سۈزگۈچ" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "تولۇق مەنزىرە مودىلى" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "تولۇق مەنزىرە مودىلى" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "سۈرەت سۈپىتى2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "سۈرەت سۈپىتى2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "ئاتمۇسÙÛØ±Ø§ بىسىمىنى ئۆلچەش سائىتى" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "ئاتمۇسÙÛØ±Ø§ بىسىمىنى ئۆلچەش سائىتى" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "ئۆلچەش سائىتىنى ئۆقۇۋاتىدۇ" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "ئۆلچەش سائىتىنى ئۆقۇۋاتىدۇ" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "ÙƒÛڭەيتىلمە ئاق تەڭپۇڭلۇقنى بايقاش" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "ÙƒÛڭەيتىلمە ئاق تەڭپۇڭلۇقنى بايقاش" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +msgid "Equipment Version" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:745 +msgid "Equipment version" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "تەرتىپ نومۇرى" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +msgid "Lens Serial Number" +msgstr "لىنزا تەرتىپ نومۇرى" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +#, fuzzy +msgid "Lens serial number" +msgstr "لىنزا تەرتىپ نومۇرى" + +#: src/olympusmn.cpp:754 +msgid "Lens Firmware Version" +msgstr "لىنزا قاتتىق دىتال نەشىرى" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "لىنزا قاتتىق دىتال نەشىرى" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى نۆۋەتتىكى Ùۇكۇستا" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى نۆۋەتتىكى Ùۇكۇستا" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "لىنزا خاسلىقى" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "لىنزا خاسلىقى" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "قوشۇمچە" + +#: src/olympusmn.cpp:762 +msgid "Extender Serial Number" +msgstr "لىنزا قوشۇمچە تەرتىپ نومۇرى" + +#: src/olympusmn.cpp:762 +msgid "Extender serial number" +msgstr "لىنزا قوشۇمچە تەرتىپ نومۇرى" + +#: src/olympusmn.cpp:763 +msgid "Extender Model" +msgstr "قوشۇمچە تىپ" + +#: src/olympusmn.cpp:763 +msgid "Extender model" +msgstr "قوشۇمچە تىپ" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "قوشۇمچە قاتتىق دىتال نەشىرى" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender firmwareversion" +msgstr "قوشۇمچە قاتتىق دىتال نەشىرى" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion Lens" +msgstr "Ù„Ûنزا ئايلاندۇرۇش" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +msgid "Conversion lens" +msgstr "Ù„Ûنزا ئايلاندۇرۇش" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +#, fuzzy +msgid "Flash Model" +msgstr "چاقناش ھالىتى" + +#: src/olympusmn.cpp:767 +#, fuzzy +msgid "Flash model" +msgstr "چاقناش ھالىتى" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "Firmware نەشرى:" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "Firmware نەشرى:" + +#: src/olympusmn.cpp:769 +#, fuzzy +msgid "FlashSerialNumber" +msgstr "تەرتىپ نومۇرى" + +#: src/olympusmn.cpp:771 +#, fuzzy +msgid "Unknown OlympusEq tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "يۇقۇرى سۈرئەت" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +msgid "High Function" +msgstr "يۇقۇرى ئىقتىدار" + +#: src/olympusmn.cpp:790 +msgid "Advanced High Speed" +msgstr "ئالىي يۇقۇرى سۈرئەت" + +#: src/olympusmn.cpp:791 +#, fuzzy +msgid "Advanced High Function" +msgstr "يۇقۇرى ئىقتىدار" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "ئەسلى" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "تەھرىرلەندى(توغرىسىغا)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "تەھرىرلەندى(سۈرەت)" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "رەڭ تۈسى" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "يورۇتۇش تولۇقلاش قىممىتى" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "يورۇتۇش تولۇقلاش قىممىتى" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "ئاق تەڭپۇڭلۇق قىممىتى" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "ئاق تەڭپۇڭلۇق قىممىتى" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "ئاپتوماتىك Ùوكۇس تەڭشەش" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰Ù†Ù‰ تەڭشەش" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "AFنوقتا" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray point" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "تويۇنۇش دەرىجىسىنى تەكىتلەش" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "تويۇنۇش دەرىجىسىنى تەكىتلەش" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory Color Emphasis" +msgstr "رەڭ ئەسلىكىنى تەكىتلەش" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "رەڭ ئەسلىكىنى تەكىتلەش" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "سىلىشتۇرما قىممەت" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "سىلىشتۇرما قىممەت" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness Value" +msgstr "رۇشەنلەشتۈرۈش قىممىتى" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +msgid "Sharpness value" +msgstr "رۇشەنلەشتۈرۈش قىممىتى" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "ماتور" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "تەھرىرلەش ھالىتى" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "تەڭشەكلەر" + +#: src/olympusmn.cpp:830 +#, fuzzy +msgid "Unknown OlympusRd tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "ئاق تەڭپۇڭلۇقنى ئىنچىكە تەڭشەش" + +#: src/olympusmn.cpp:899 +msgid "PM Saturation" +msgstr "چۈشتىن كىيىنكى تويۇنۇش دەرىجىسى" + +#: src/olympusmn.cpp:900 +msgid "PM Contrast" +msgstr "Ú† Ùƒ ئاق قارىلىق" + +#: src/olympusmn.cpp:901 +msgid "PM Sharpness" +msgstr "Ú† Ùƒ رۇشەنلەشتۈرۈش" + +#: src/olympusmn.cpp:902 +msgid "PM BW Filter" +msgstr "Ú† Ùƒ BWسۈزگۈچ" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "Ú† Ùƒ BWسۈزگۈچ" + +#: src/olympusmn.cpp:903 +msgid "PM Picture Tone" +msgstr "رەڭ تۈسۈم" + +#: src/olympusmn.cpp:903 +msgid "PM picture tone" +msgstr "رەڭ تۈسۈم" + +#: src/olympusmn.cpp:906 +msgid "Auto Gradation" +msgstr "ئاپتوماتىك قاتلام" + +#: src/olympusmn.cpp:906 +msgid "Auto gradation" +msgstr "ئاپتوماتىك قاتلام" + +#: src/olympusmn.cpp:907 +msgid "PM Noise Filter" +msgstr "Ú† Ùƒ شاۋقۇن سۈزگۈچ" + +#: src/olympusmn.cpp:907 +msgid "Picture mode noise filter" +msgstr "رەسىم شاۋقۇن سۈزگۈچ ھالىتى" + +#: src/olympusmn.cpp:909 +#, fuzzy +msgid "Unknown OlympusRd2 tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "(2 )دا" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "" + +#: src/olympusmn.cpp:938 +msgid "Image Processing Version" +msgstr "سۈرەتچىلىك نەشىرى" + +#: src/olympusmn.cpp:938 +msgid "Image processing version" +msgstr "سۈرەتچىلىك نەشىرى" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB Levels 3000K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:940 +#, fuzzy +msgid "WB RB levels 3000K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB Levels 3300K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:941 +#, fuzzy +msgid "WB RB levels 3300K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB Levels 3600K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:942 +#, fuzzy +msgid "WB RB levels 3600K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB Levels 3900K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:943 +#, fuzzy +msgid "WB RB levels 3900K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB Levels 4000K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:944 +#, fuzzy +msgid "WB RB levels 4000K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB Levels 4300K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:945 +#, fuzzy +msgid "WB RB levels 4300K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB Levels 4500K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:946 +#, fuzzy +msgid "WB RB levels 4500K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB Levels 4800K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:947 +#, fuzzy +msgid "WB RB levels 4800K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB Levels 5300K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:948 +#, fuzzy +msgid "WB RB levels 5300K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB Levels 6000K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:949 +#, fuzzy +msgid "WB RB levels 6000K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB Levels 6600K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:950 +#, fuzzy +msgid "WB RB levels 6600K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB Levels 7500K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:951 +#, fuzzy +msgid "WB RB levels 7500K" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB Levels CWB1" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:952 +#, fuzzy +msgid "WB RB levels CWB1" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB Levels CWB3" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:954 +#, fuzzy +msgid "WB RB levels CWB3" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB Levels CWB4" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:955 +#, fuzzy +msgid "WB RB levels CWB4" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G Level 3000K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:956 +#, fuzzy +msgid "WB G level 3000K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G Level 3300K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:957 +#, fuzzy +msgid "WB G level 3300K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G Level 3600K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:958 +#, fuzzy +msgid "WB G level 3600K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G Level 3900K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:959 +#, fuzzy +msgid "WB G level 3900K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G Level 4000K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:960 +#, fuzzy +msgid "WB G level 4000K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G Level 4300K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:961 +#, fuzzy +msgid "WB G level 4300K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G Level 4500K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:962 +#, fuzzy +msgid "WB G level 4500K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G Level 4800K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:963 +#, fuzzy +msgid "WB G level 4800K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G Level 5300K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:964 +#, fuzzy +msgid "WB G level 5300K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G Level 6000K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:965 +#, fuzzy +msgid "WB G level 6000K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G Level 6600K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:966 +#, fuzzy +msgid "WB G level 6600K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G Level 7500K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:967 +#, fuzzy +msgid "WB G level 7500K" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "GRBGدەرىجىسى ئاق تەڭپۇڭلۇقى" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "كۈچەيتكۈچى" + +#: src/olympusmn.cpp:971 +msgid "Enhancer Values" +msgstr "كۈچەيتكۈچى قىممەت" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "كۈچەيتكۈچى قىممەت" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "رەڭ سۈزگۈچ" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "سىلىشتۇرما قىممەت" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "سىلىشتۇرما قىممەت" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "قارىلىق دەرىجىسى" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "ئاساسى پايدا" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "ئاساسى پايدا" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "ئىناۋەتلىك بىت" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +msgid "Crop Left" +msgstr "سولغا قىسقارتىش" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +msgid "Crop left" +msgstr "سولغا قىسقارتىش" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "ئۈستىگە قىسقارتىش" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "ئۈستىگە قىسقارتىش" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "كەڭلىكىنى قىسقارتىش" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "كەڭلىكىنى قىسقارتىش" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +msgid "Crop Height" +msgstr "ئÛگىزلىكىنى قىسقارتىش" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +msgid "Crop height" +msgstr "ئÛگىزلىكىنى قىسقارتىش" + +#: src/olympusmn.cpp:984 +msgid "Multiple Exposure Mode" +msgstr "ÙƒÛ†Ù¾ خىل نۇر ئۆتكۈزۈش ھالىتى" + +#: src/olympusmn.cpp:984 +msgid "Multiple exposure mode" +msgstr "ÙƒÛ†Ù¾ خىل نۇر ئۆتكۈزۈش ھالىتى" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "ئۇزۇنلۇق كەڭلىك نىسبىتى" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "ئۇزۇنلۇق كەڭلىك نىسبىتى" + +#: src/olympusmn.cpp:986 +msgid "Aspect Frame" +msgstr "قىياپەت كاندۇك" + +#: src/olympusmn.cpp:986 +msgid "Aspect frame" +msgstr "قىياپەت كاندۇك" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "چىراي بايقاش" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +#, fuzzy +msgid "Face detect" +msgstr "چىراي بايقاش" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "چىراي بايقاش رايۇنى" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "چىراي بايقاش رايۇنى" + +#: src/olympusmn.cpp:990 +#, fuzzy +msgid "Unknown OlympusIp tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "بىۋاستە" + +#: src/olympusmn.cpp:1005 +msgid "Focus Info Version" +msgstr "Ùوكۇس ئۇچۇرى نەشىرى" + +#: src/olympusmn.cpp:1005 +msgid "Focus info version" +msgstr "Ùوكۇس ئۇچۇرى نەشىرى" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "ئاپتوماتىك Ùوكۇس" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "كۆرۈنۈش بايقاش" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "كۆرۈنۈش بايقاش" + +#: src/olympusmn.cpp:1008 +msgid "Scene Area" +msgstr "كۆرۈنۈش رايۇنى" + +#: src/olympusmn.cpp:1008 +msgid "Scene area" +msgstr "كۆرۈنۈش رايۇنى" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "كۆرۈنۈش بايقاش سانلىق مەلۇماتى" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "كۆرۈنۈش بايقاش سانلىق مەلۇماتى" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "قەدەم سانىنى ÙƒÛڭەت تارايت" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "Ùوكۇس قەدەم سانىنى ÙƒÛڭەيت تارايت" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "Ùوكۇس قەدەم سانىنى ÙƒÛڭەيت تارايت" + +#: src/olympusmn.cpp:1012 +msgid "Focus Step Infinity" +msgstr "Ùوكۇس قەدىمى چەكسىز" + +#: src/olympusmn.cpp:1012 +msgid "Focus step infinity" +msgstr "Ùوكۇس قەدىمى چەكسىز" + +#: src/olympusmn.cpp:1013 +msgid "Focus Step Near" +msgstr "Ùوكۇس قەدەم سانى ÙŠÛقىن" + +#: src/olympusmn.cpp:1013 +msgid "Focus step near" +msgstr "Ùوكۇس قەدەم سانى ÙŠÛقىن" + +#: src/olympusmn.cpp:1016 +#, fuzzy +msgid "External Flash" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "سىرىتقى چاقماق" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "چاقناشنى قولىدا چىقىرىش" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "چاقناشنى قولىدا چىقىرىش" + +#: src/olympusmn.cpp:1025 +#, fuzzy +msgid "Unknown OlympusFi tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:1049 +#, fuzzy +msgid "Fine Weather" +msgstr "ئوچۇق" + +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "Û‹ÙˆÙ„ÙØ±Ø§Ù… لامپا (چوغلانما لامپا)" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "كىچە مەنزىرىسى" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "چەكمە ئاق تەڭپۇقلۇق" + +#: src/olympusmn.cpp:1057 +msgid "Custom 1-4" +msgstr "ئىختىيارىچە1-4" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "Ùوكۇس ئۇچۇرى نەشىرى" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "Ùوكۇس ئۇچۇرى نەشىرى" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB Levels Used" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1062 +#, fuzzy +msgid "WB_RB levels used" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB Levels Auto" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1063 +#, fuzzy +msgid "WB_RB levels auto" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB Levels Shade" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1064 +#, fuzzy +msgid "WB_RB levels shade" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB Levels Cloudy" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1065 +#, fuzzy +msgid "WB_RB levels cloudy" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB Levels Tungsten" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1067 +#, fuzzy +msgid "WB_RB levels tungsten" +msgstr "RB ئاق تەڭپۇڭلۇق دەرىجىسى" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/olympusmn.cpp:1072 +msgid "WB_RB levels white fluorescent" +msgstr "" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "رەڭ ماترىتسا2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "رەك ماترىتساسى2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "قارىلىق دەرىجىسى2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "قارىلىق دەرىجىسى2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "YCbCrكوئÛÙÙىتسÛنتى" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "YCbCrكوئÛÙÙىتسÛنتى" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "پىكسىل چوڭقۇرلۇقى ئىناۋەتسىز" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "پىكسىل چوڭقۇرلۇقى ئىناۋەتسىز" + +#: src/olympusmn.cpp:1084 +msgid "White Balance Comp" +msgstr "ئاق تەڭپۇڭلۇق سÛلىشتۇرمىسى" + +#: src/olympusmn.cpp:1084 +msgid "White balance comp" +msgstr "ئاق تەڭپۇڭلۇق سÛلىشتۇرمىسى" + +#: src/olympusmn.cpp:1085 +msgid "Saturation Setting" +msgstr "تويۇنۇش تەڭشىكى" + +#: src/olympusmn.cpp:1086 +msgid "Hue Setting" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰ تەڭشىكى" + +#: src/olympusmn.cpp:1086 +msgid "Hue setting" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰ تەڭشىكى" + +#: src/olympusmn.cpp:1089 +msgid "CM Exposure Compensation" +msgstr "CMنۇر ئۆتكۈزۈشنى تولۇقلاش" + +#: src/olympusmn.cpp:1089 +msgid "CM exposure compensation" +msgstr "CMنۇر ئۆتكۈزۈشنى تولۇقلاش" + +#: src/olympusmn.cpp:1090 +msgid "CM White Balance" +msgstr "CMئاق تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:1090 +msgid "CM white balance" +msgstr "CMئاق تەڭپۇڭلۇق" + +#: src/olympusmn.cpp:1091 +msgid "CM White Balance Comp" +msgstr "CMئاق تەڭپۇڭلۇقنى سÛلىشتۇرۇش" + +#: src/olympusmn.cpp:1091 +msgid "CM white balance comp" +msgstr "CMئاق تەڭپۇڭلۇقنى سÛلىشتۇرۇش" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "CMئاق تەڭپۇڭلۇقنى سÛلىشتۇرۇش" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "CMئاق تەڭپۇڭلۇقنى سÛلىشتۇرۇش" + +#: src/olympusmn.cpp:1093 +msgid "CM Saturation" +msgstr "CMتويۇنۇش دەرىجىسى" + +#: src/olympusmn.cpp:1093 +msgid "CM saturation" +msgstr "CMتويۇنۇش دەرىجىسى" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "CMرەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "CMرەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/olympusmn.cpp:1095 +msgid "CM Contrast" +msgstr "CMئاق قارىلىق" + +#: src/olympusmn.cpp:1095 +msgid "CM contrast" +msgstr "CMئاق قارىلىق" + +#: src/olympusmn.cpp:1096 +msgid "CM Sharpness" +msgstr "CMرۇشەنلەشتۈرۈش" + +#: src/olympusmn.cpp:1096 +msgid "CM sharpness" +msgstr "CMرۇشەنلەشتۈرۈش" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "ئىشلەتكۈچى تاللاندى" + +#: src/olympusmn.cpp:1122 +msgid "Auto-Override" +msgstr "ئاپتوماتىك قاپلاش" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "ØªÛØ²" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 ÙƒÛلۋىنâ€" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "چەكمە" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "سۈرەت چوڭلۇقى" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "ئاپتوماتىك Ùۇكۇس ئىزدەش" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Ùوكۇس نوقتا" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "ئوڭ رايۇن" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Panorama" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Ùوكۇسنى توغرىلاش" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "بÛلىق كۆز" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "سىزمىچىلىق" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Ùوكۇس نوقتا" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "تەبىئىي رەڭ" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "ئەڭ كىچىك نۇر گەردىشى" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "تاللاش" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Ùوكۇسنى توغرىلاش" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "تەبىئىي رەڭ" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "تەبىئىي رەڭ" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "تەبىئىي رەڭ" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "تەبىئىي رەڭ" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "تەبىئىي رەڭ" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "سول(توغرىسى)" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "مەركەز( توغرىسى)" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "مەركەز(تىك)" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "ئۈستى سول(توغرىسى)" + +#: src/olympusmn.cpp:1623 +msgid "Top-center (horizontal)" +msgstr "ئۈستى مەركەز(توغرىسى" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "ئۈستى ئوڭ(توغرىسى)" + +#: src/olympusmn.cpp:1625 +msgid "Left (horizontal)" +msgstr "سول(توغرىسى)" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "ئوتتۇرا سول(توغرىسى)" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "ئوتتۇرا ئوڭ(توغرىسى)" + +#: src/olympusmn.cpp:1629 +msgid "Right (horizontal)" +msgstr "ئوڭ(توغرىسى)" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "تۆۋەنكى سول(توغرىسى)" + +#: src/olympusmn.cpp:1631 +msgid "Bottom-center (horizontal)" +msgstr "تۆۋەنكى مەركەز(توغرىسى)" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "تۆۋەنكى ئوڭ(توغرىسى)" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "ئۈستى سول(تىك)" + +#: src/olympusmn.cpp:1634 +msgid "Top-center (vertical)" +msgstr "ئۈستى مەركەز" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "ئۈستى ئوڭ(تىك)" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "سول(تىك)" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "ئوتتۇرا سول(تىك)" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "ئوتتۇرا ئوڭ( تىك)" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "ئوڭ(تىك)" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "تۆۋەنكى سول(تىك)" + +#: src/olympusmn.cpp:1642 +msgid "Bottom-center (vertical)" +msgstr "تۆۋەنكى مەركەز(تىك)" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "تۆۋەنكى ئوڭ(تىك)" + +#: src/olympusmn.cpp:1680 +msgid "Single Target" +msgstr "يەككە نىشان" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "بارلىق نىشان" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "ھەركەتچان يەككە نىشان" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "ناھايىتى يۇقىرى" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "ھەركەت رەسىمى" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "كىچىك Ùىلىم" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "كىنو" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "" + +#: src/panasonicmn.cpp:83 +#, fuzzy +msgid "Auto, focus button" +msgstr "ئاپتوماتىك Ùوكۇس" + +#: src/panasonicmn.cpp:84 +#, fuzzy +msgid "Auto, continuous" +msgstr "UHSئۆزلۈكسىزلىكى" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +#, fuzzy +msgid "Panning" +msgstr "ئاگاھلاندۇرۇش" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "ماكرو" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +#, fuzzy +msgid "Scenery" +msgstr "كۆرۈنۈش رايۇنى" + +#: src/panasonicmn.cpp:117 +#, fuzzy +msgid "Shutter-speed priority" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/panasonicmn.cpp:121 +msgid "Movie preview" +msgstr "كىنونى ئالدىن كۈزىتىش" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "ئاددىي" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "رەڭ ئۈنۈملىرى" + +#: src/panasonicmn.cpp:130 +#, fuzzy +msgid "Night scenery" +msgstr "كەچلىك مەنزىرە" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +#, fuzzy +msgid "Soft skin" +msgstr "يۇمشاق" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +#, fuzzy +msgid "Candlelight" +msgstr "شام" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "يورۇق ئاسمان" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "ئەڭ يۇقىرى" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Panorama" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +#, fuzzy +msgid "Intelligent ISO" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ ئۇزۇنلۇقى" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "ئاق تاختاي" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "ۆزلۈكسىز Ùوكۇس تەڭشىكى" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "ÙƒÛ†Ù¾ سÛگمىت" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "چاقناش پەرقى" + +#: src/panasonicmn.cpp:151 +msgid "Film Grain" +msgstr "" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "رەڭلىرىم" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "كاندۇك تولۇق مەنزىرە" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +msgid "Handheld Night Shot" +msgstr "" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "يىراقتا تىزگىنلەش" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "رەقەملىك سۈزگۈچ" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "بوي يۆنىلىش" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "مۇناسىۋەت" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "شامال مەنزىرىسى" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "يورۇقلۇق دەرىجىسى قىممىتى" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "ئاپتوماتىك Ùوكۇس يورۇتۇش دائىرىسى" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "ÙƒÛÚ†Û• رەسىمى" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "ئىللىق" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "سوغۇق" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +#, fuzzy +msgid "Low/High quality" +msgstr "يۇقۇرى سۈپەت (HQ)" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "چەكسىز" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "ئوتتۇرا1" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "ئوتتۇرا1" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "تۆۋەن(-1(" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "يۇقىرى(+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "ئەڭ تۆۋەن(-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "ئەڭ يۇقىرى(+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "°90تەتۈر ئايلاندۇر" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "زۆرۈر ئەمەس" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "زۆرۈر ئەمەس" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "ماكان" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "ئۆلچەم(رەڭ)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "ھەرىكەتچان(رەڭ)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "سۈپەت(رەڭ)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "پارقىراق" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "ئۆلچەم(B&W)" + +#: src/panasonicmn.cpp:299 +msgid "Dynamic (B&W)" +msgstr "ھەرىكەتچان (B&W)" + +#: src/panasonicmn.cpp:300 +msgid "Smooth (B&W)" +msgstr "پارقىراق (B&W)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "تىرناق" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10s" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "قوشۇمچە" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "ئاپتوماتىك" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "ئۆلچەملىك تىپ" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "°90تەتۈر ئايلاندۇر" + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "°90تەتۈر ئايلاندۇر" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "سولدىن ئوڭغا" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "ئوڭدىن سولغا" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "ئۈستىدىن ئاستىغا" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "ئاستىدىن ئۈستىگە" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "يوللىغان ۋاقىت" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى ئۇچۇرى" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "تاللاش" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "ئۈن" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "ئاق تەڭپۇڭلۇقنى تەڭشەش" + +#: src/panasonicmn.cpp:454 +#, fuzzy +msgid "FlashBias" +msgstr "چاقناش پەرقى" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "Exifنەشرى" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "رەڭ ئۈنۈمى" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "رەڭ ئۈنۈمى" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst Mode" +msgstr "ئارقىمۇ-ئارقا تارتىش" + +#: src/panasonicmn.cpp:460 +msgid "Burst mode" +msgstr "ئارقىمۇ-ئارقا تارتىش" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self Timer" +msgstr "ئۆزىدىكى ۋاقىت" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "AF ياردەمچى" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +msgid "Optical Zoom Mode" +msgstr "ئوپتىكىلىق ÙƒÛڭەيت تارايت ھالىتى" + +#: src/panasonicmn.cpp:470 +msgid "Optical zoom mode" +msgstr "ئوپتىكىلىق ÙƒÛڭەيت تارايت ھالىتى" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "دۇنيا ۋاقتى ئورنى" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "دۇنيا ۋاقتى ئورنى" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "" + +#: src/panasonicmn.cpp:476 +msgid "Program ISO" +msgstr "ISOپروگراممىسى" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "ئالىي دەرىجە" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "چىراي بايقاش رايۇنى" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§ تەڭشىكى" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "تىرناق" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "تەڭشە" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "تەڭشە" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "چاقناش ئۇچۇرى" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "ئۇزۇن ۋاقىت نور ئۆتكۈزۈش شاۋقۇنىنى ئاجىزلىتىش" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "ئاپتوماتىك Ùوكۇس ئورنى" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "چىراي بايقاش رايۇنى" + +#: src/panasonicmn.cpp:495 +msgid "Accessory Type" +msgstr "قوشۇمچە زاپچاسلار تىپى" + +#: src/panasonicmn.cpp:495 +msgid "Accessory type" +msgstr "قوشۇمچە زاپچاسلار تىپى" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "لىنزا تەرتىپ نومۇرى" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "ئاپتوماتىك نۇر ئۆتكۈزۈش" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Firmware نەشرى:" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "تەۋرىنىشنى ئاجىزلىتىش ئۇچۇرلىرى" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Ùۇكۇس ئاگاھلاندۇرۇشى" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "مۆلچەر چاقنىشى" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "ماۋزۇ" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "تىپ ئاتى" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "ئورنى" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "ھالەت" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "قاپقاق ØªÛØ²Ù„ىكى" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "ھەركەتچان دائىرىنى ئÛچىش" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "شەھەر" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "رەسىم ئۇسلۇبى" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "سۈرەت يۇنىلىشى" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "بۇلۇڭغا قىسقارتىش" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "تولۇق مەنزىرە يۆنىلىشى" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "ئۆلچەش سائىتىنى ئۆقۇۋاتىدۇ" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "ئىچكى+سىرىتقى" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "قاپقاق ØªÛØ²Ù„ىكى" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "نۇر چەمبەر قىممىتى" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote Version" +msgstr "زاۋۇت ئىزاھات نەشرى" + +#: src/panasonicmn.cpp:533 +msgid "MakerNote version" +msgstr "زاۋۇت ئىزاھات نەشرى" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB Red Level" +msgstr "ئاق تەڭپۇڭلۇق قىزىللىق دەرىجىسى" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +msgid "WB red level" +msgstr "ئاق تەڭپۇڭلۇق قىزىللىق دەرىجىسى" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "ئاق تەڭپۇڭلۇق ÙŠÛØ´Ù‰Ù„لىق دەرىجىسى" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "ئاق تەڭپۇڭلۇق ÙŠÛØ´Ù‰Ù„لىق دەرىجىسى" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB Blue Level" +msgstr "ئاق تەڭپۇڭلۇق ÙƒÛ†Ùƒ رەڭ دەرىجىسى" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +msgid "WB blue level" +msgstr "ئاق تەڭپۇڭلۇق ÙƒÛ†Ùƒ رەڭ دەرىجىسى" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +#, fuzzy +msgid "Unknown PanasonicMakerNote tag" +msgstr "نامەلۇم Canonياسىغۇچى ئىزاھاتى بەلگىسى" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +#, fuzzy +msgid "Spot mode off or 3-area (high speed)" +msgstr "1-دائىرە(يۇقىرى سۈرئەت)" + +#: src/panasonicmn.cpp:564 +#, fuzzy +msgid "23-area" +msgstr "5-دائىرە" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "Ùوكۇس نوقتا" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "5-دائىرە" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "1-دائىرە" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "1-دائىرە(يۇقىرى سۈرئەت)" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "3-دائىرە(ئاپتوماتىك)" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "3-دائىرە(سول)" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "3-دائىرە(مەركەز)" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "3-دائىرە (ئوڭ)" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "Ùوكۇس نوقتا" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr " eV" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "تەڭشەلمىگەن\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "لىنزا قاتتىق دىتال نەشىرى" + +#: src/panasonicmn.cpp:726 +msgid "Sensor Width" +msgstr "ÙƒÛ•Ú­ سەزگۈچ" + +#: src/panasonicmn.cpp:726 +msgid "Sensor width" +msgstr "ÙƒÛ•Ú­ سەزگۈچ" + +#: src/panasonicmn.cpp:727 +msgid "Sensor Height" +msgstr "ئەڭ يۇقىرى سەزگۈچ" + +#: src/panasonicmn.cpp:727 +msgid "Sensor height" +msgstr "ئەڭ يۇقىرى سەزگۈچ" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "سەزگۈچ يۇقىرى گىرۋىكى" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "سەزگۈچ يۇقىرى گىرۋىكى" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "سەزگۈچ سول گىرۋىكى" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "سەزگۈچ سول گىرۋىكى" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "ياسىغۇچى سودىگەر" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "ئەندىزە" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +#, fuzzy +msgid "Strip Offsets" +msgstr "Ø¦ÛØºÙ‰Ø´" + +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "Ø¦ÛØºÙ‰Ø´" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "يۆنىلىش" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "قاپقاق سانى" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "قاپقاق سانى1" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "VRDØ¦ÛØºÙ‰Ø´Ù‰" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "VRDØ¦ÛØºÙ‰Ø´Ù‰" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "نامەلۇم Canon تولۇق مەنزىرە بەلگىسى" + +#: src/pentaxmn.cpp:57 +#, fuzzy +msgid "Night-Scene" +msgstr "كەچلىك مەنزىرە" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "ياخشى" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "ØªÛØ®Ù‰Ù…Û‡ ياخشى" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "ئەڭ ياخشى" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "سۇغۇرتا خىراجىتى" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 ياكى 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 ياكى 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 ياكى 2816x2112" + +#: src/pentaxmn.cpp:247 +#, fuzzy +msgid "Auto, Did not fire" +msgstr "ئوت يوق" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "ئوت يوق" + +#: src/pentaxmn.cpp:250 +#, fuzzy +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +#, fuzzy +msgid "Auto, Fired" +msgstr "ئاپتوماتىك+قىزىل كۆز" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "لامپا" + +#: src/pentaxmn.cpp:254 +#, fuzzy +msgid "Auto, Fired, Red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/pentaxmn.cpp:255 +#, fuzzy +msgid "On, Red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +#, fuzzy +msgid "On, Soft" +msgstr "يۇمشاق" + +#: src/pentaxmn.cpp:259 +#, fuzzy +msgid "On, Slow-sync" +msgstr "ئاستا قەدەمداشلاش" + +#: src/pentaxmn.cpp:260 +#, fuzzy +msgid "On, Slow-sync, Red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +#, fuzzy +msgid "Pan Focus" +msgstr "Ùوكۇس يۆنۈلۈشى" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "ئاپتوماتىك Ùۇكۇسدا ئاق قارىلىقنى بايقاش" + +#: src/pentaxmn.cpp:284 +#, fuzzy +msgid "Fixed Center" +msgstr "مەركەز" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "ئاپتوماتىك AF" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "تاللاش" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "" + +#: src/pentaxmn.cpp:307 +#, fuzzy +msgid "Top-center" +msgstr "ئوتتۇرا" + +#: src/pentaxmn.cpp:313 +#, fuzzy +msgid "Bottom-center" +msgstr "سول ئاستى" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "ÙƒÛ†Ù¾ سÛÚ¯Ù…Ûنت" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "مەركەزگە پايدىلىق" + +#: src/pentaxmn.cpp:415 +#, fuzzy +msgid "DaylightFluorescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/pentaxmn.cpp:416 +#, fuzzy +msgid "DaywhiteFluorescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "يالتىراق لامپا" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "رەڭلىك تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ø§ تەڭشىكى" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "ئىشلەتكۈچى تاللاندى" + +#: src/pentaxmn.cpp:428 +#, fuzzy +msgid "Auto (Daylight)" +msgstr "ÙƒÛˆÙ† نۇرى" + +#: src/pentaxmn.cpp:429 +#, fuzzy +msgid "Auto (Shade)" +msgstr "ئاپتوماتىك سايە" + +#: src/pentaxmn.cpp:430 +#, fuzzy +msgid "Auto (Flash)" +msgstr "ئۆزلۈكىدىن قويۇپ Ø¨ÛØ±Ù‰Ø´" + +#: src/pentaxmn.cpp:431 +#, fuzzy +msgid "Auto (Tungsten)" +msgstr "تۇڭىستÛÙ†" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/pentaxmn.cpp:433 +#, fuzzy +msgid "Auto (DaywhiteFluorescent)" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/pentaxmn.cpp:434 +#, fuzzy +msgid "Auto (WhiteFluorescent)" +msgstr "يالتىراق لامپا" + +#: src/pentaxmn.cpp:435 +#, fuzzy +msgid "Auto (Cloudy)" +msgstr "6000K (بۇلۇتلۇق)" + +#: src/pentaxmn.cpp:437 +#, fuzzy +msgid "Preset (Fireworks?)" +msgstr "Fireworks" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +#, fuzzy +msgid "Med Low" +msgstr "بەك تۆۋەن" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +#, fuzzy +msgid "Med High" +msgstr "ناھايىتى يۇقىرى" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +#, fuzzy +msgid "Med Soft" +msgstr "يۇمشاق" + +#: src/pentaxmn.cpp:474 +#, fuzzy +msgid "Med Hard" +msgstr "بەك تەس" + +#: src/pentaxmn.cpp:475 +#, fuzzy +msgid "Very Soft" +msgstr "بەك تۆۋەن" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "بەك تەس" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "يۇرت" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "پاگو-پاگو" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "ھونولۇلۇ" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Ø¦Ø§Ù†ÙƒÙˆØ±ÛØ¬" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Û‹Ø§Ù†ÙƒÛ‡Û‹ÛØ±" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "سان Ùىرانسىسكو" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "لوس-ئانجÛÙ„ÛØ³" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "كالگارى" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "دÛÙ†Û‹ÛØ±" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Ù…Ûكسىكا شەھىرى" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "چىكاگو" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "مئامى" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "تورونتو" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "نيۇ-يورك" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "سانتىياگو" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "كىراكوس" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "Ø®Ø§Ù„Ù‰ÙØ§ÙƒØ³" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "بۇئÛنۇس-Ø¦Ø§ÙŠØ±ÛØ³" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "سان-پاۋلو" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "رىئو-دÛ-جانÛيرو" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "مادرىد" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "لوندون" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "پارىژ" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "مىلان" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "رىم" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Ø¨ÛØ±Ù„ىن" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "ÙŠÙˆÚ¾Ø§Ù†Ù†ÛØ³Ø¨Û‡Ø±Ú¯" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "ئىستانبۇل" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "قاھىرە" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "ÙŠÛØ±Û‡Ø³Ø§Ù„ÛÙ…" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "موسكۋا" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "تÛھران" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "دۇبەي" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "كاراچى" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "كابۇل" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "مالÛ" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "دÛھلى" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "كولومبو" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "كاتماندۇ" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "داككا" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "يانگون" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "باڭكوك" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "كۇئالالۇمپۇر" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "ۋىيÛنتيان" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "سىنگاپور" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Ùىنوم-Ù¾ÛÙ†" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "خو Ú†Ù‰ مىنخ" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "جاكارتا" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "شياڭگاڭ" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Ù¾ÛØ±Øª" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "بÛيجىڭ" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "شاڭخەي" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "مانىلا" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "تەيبÛÙŠ" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Ø³ÛØ¦Û‡Ù„" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "ئادÛلايدÛ" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "توكيو" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "گۇئام ئارىلى" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "سىدنÛÙŠ" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Ù†Û‡Ù…ÛØ¦Ø§" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Û‹Ûللىڭتون" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "ئاۋكلاند" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "لىما" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "داكار" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "ئالجىر" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "Ø®Ûلسىنكى" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "ئاÙÛنا" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "نايروبى" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "Ø¦Ø§Ù…Ø³ØªÛØ±Ø¯Ø§Ù…" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "سىتوكھولم" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "لىسبون" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "كوپÛنھاگÛÙ†" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +#, fuzzy +msgid "Unprocessed" +msgstr "Ù¾Ø±ÛØ³Ù„انمىغان" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "چوڭلۇقى" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "كەس" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "رەقەملىك سۈزگۈچ" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "كاندۇك بىرىكمىسى؟" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +#, fuzzy +msgid "Hi-speed Program" +msgstr "يورۇتۇش پروگراممىسى" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +#, fuzzy +msgid "DOF Program" +msgstr "پروگرامما" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +#, fuzzy +msgid "MTF Program" +msgstr "پروگرامما" + +#: src/pentaxmn.cpp:588 +#, fuzzy +msgid "Night Scene Portrait" +msgstr "ÙƒÛÚ†Û• رەسىمى" + +#: src/pentaxmn.cpp:589 +#, fuzzy +msgid "No Flash" +msgstr "چاقماق لامپا" + +#: src/pentaxmn.cpp:592 +#, fuzzy +msgid "Surf & Snow" +msgstr "دÛڭىز ساھىلى+قار" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "بالىلار" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "يورۇت-D" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "كەچلىك مەنزىرە" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "ÙƒÛ†Ùƒ" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "كەچلىك مەنزىرە" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "ئالىي ماكرو" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "يالتىراق لامپا" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "" + +#: src/pentaxmn.cpp:611 +#, fuzzy +msgid "Auto PICT (Portrait)" +msgstr "ئاپتوماتىك ئاق-قارىلىقى" + +#: src/pentaxmn.cpp:612 +#, fuzzy +msgid "Auto PICT (Landscape)" +msgstr "تەھرىرلەندى(توغرىسىغا)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "" + +#: src/pentaxmn.cpp:614 +#, fuzzy +msgid "Auto PICT (Sport)" +msgstr "ئاپتوماتىك ئاق-قارىلىقى" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "لىنزا ھالىتى" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +#, fuzzy +msgid "Shutter Speed Priority" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +#, fuzzy +msgid "Aperture Priority" +msgstr "نۇر چەمبىرىنىڭ ئالدىنلىقى" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "پرۇگرامما Shift" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "پرۇگرامما Shift" + +#: src/pentaxmn.cpp:635 +#, fuzzy +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "نور چەمبىكىرىنىڭ ئالدىنقىلىقى" + +#: src/pentaxmn.cpp:636 +#, fuzzy +msgid "Manual (Off-Auto-Aperture)" +msgstr "نۇر گەردىشى ئاپتوماتىك" + +#: src/pentaxmn.cpp:637 +#, fuzzy +msgid "Bulb (Off-Auto-Aperture)" +msgstr "نۇر گەردىشى ئاپتوماتىك" + +#: src/pentaxmn.cpp:639 +#, fuzzy +msgid "Shutter Priority" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/pentaxmn.cpp:640 +#, fuzzy +msgid "Shutter & Aperture Priority AE" +msgstr "ØªÛØ² قاپقاقنىڭ ئالدىنلىقى" + +#: src/pentaxmn.cpp:641 +#, fuzzy +msgid "Shutter & Aperture Priority AE (1)" +msgstr "قاپقاق ئالدىنقىلىقى (Tv)" + +#: src/pentaxmn.cpp:642 +msgid "Sensitivity Priority AE" +msgstr "" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:644 +#, fuzzy +msgid "Flash X-Sync Speed AE" +msgstr "Avچاقناشنى قەدەمدەشلاش تىزلىكى" + +#: src/pentaxmn.cpp:645 +#, fuzzy +msgid "Flash X-Sync Speed AE (1)" +msgstr "Avچاقناشنى قەدەمدەشلاش تىزلىكى" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "پروگرامما (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "پروگرامما (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "پروگرامما (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "رەڭ تىزگىنى" + +#: src/pentaxmn.cpp:654 +#, fuzzy +msgid "Video (30 fps)" +msgstr "سىن(24 fps)" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "سىن(24 fps)" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "ئۈزلۈكسىز" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "ئارقىمۇ-ئارقا تارتىش" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "سىن" + +#: src/pentaxmn.cpp:666 +#, fuzzy +msgid "Self-timer (12 sec)" +msgstr "ئۆزى تارتىش ۋاقىت بەلگىلىگۈچى" + +#: src/pentaxmn.cpp:667 +#, fuzzy +msgid "Self-timer (2 sec)" +msgstr "ئۆزى تارتىش ۋاقىت بەلگىلىگۈچى" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "يىراقتا تىزگىنلەش (3سÛكۇنت" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "يىراقتا تىزگىنلەش" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "ئۆزلۈكسىز، يۇقۇرى" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "ÙƒÛˆÚ†Ù„ÛˆÙƒ" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "ÙƒÛˆÚ†Ù„ÛˆÙƒ" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "ÙƒÛˆÚ†Ù„ÛˆÙƒ" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "ئاپتوماتىك" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +#, fuzzy +msgid "Bright" +msgstr "ئوچۇق+" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "ئەڭ ئاجىز" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "ئاجىز" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "ÙƒÛˆÚ†Ù„ÛˆÙƒ" + +#: src/pentaxmn.cpp:1112 +#, fuzzy +msgid "No extended bracketing" +msgstr "ئاق تەڭپۇڭلۇق قورشىشى" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "نامەلۇم " + +#: src/pentaxmn.cpp:1146 +#, fuzzy +msgid "Pentax Makernote version" +msgstr "Nikon زاۋۇت ئىزاھاتى نەشىرى" + +#: src/pentaxmn.cpp:1149 +#, fuzzy +msgid "Camera shooting mode" +msgstr "ئەركىن رەسىم تارتىش ھالىتى" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +#, fuzzy +msgid "Resolution of a preview image" +msgstr "نۇر بەلگە ئارقىلىق سۈرەتنى ئالدىن كۈزىتىش" + +#: src/pentaxmn.cpp:1154 +#, fuzzy +msgid "Length of a preview image" +msgstr "نۇر بەلگە ئارقىلىق سۈرەتنى ئالدىن كۈزىتىش" + +#: src/pentaxmn.cpp:1155 +#, fuzzy +msgid "Size of an IFD containing a preview image" +msgstr "سۈرەتنى ئالدىن كۈزىتىش چوڭلۇقى" + +#: src/pentaxmn.cpp:1160 +#, fuzzy +msgid "Model identification" +msgstr "ماكرو چوڭايت" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "ماكرو چوڭايت" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Ú†ÛØ³Ù„ا" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "ۋاقىت" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "سۈرەت سۈپەت تەڭشەكلىرى" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "سۈرەت چوڭلۇقى تەڭشەكلىرى" + +#: src/pentaxmn.cpp:1177 +#, fuzzy +msgid "Flash mode settings" +msgstr "چاقناش ھالەت تەڭشىكى" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Ùوكۇس ھالىتى تەڭشەكلىرى" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "ئاپتوماتىك Ùوكۇس نۇقتا تاللاندى" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "ئاپتوماتىك Ùوكۇس نوقتا Ùوكۇس ئىچىدە" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +#, fuzzy +msgid "F-Number" +msgstr "F قىممىتى" + +#: src/pentaxmn.cpp:1195 +#, fuzzy +msgid "ISO sensitivity" +msgstr "ISOتەڭشىكى" + +#: src/pentaxmn.cpp:1196 +#, fuzzy +msgid "ISO sensitivity settings" +msgstr "ISOسۈرئەت ھالىتى تەڭشىكى" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "مۆلچەر شەكلى" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +#, fuzzy +msgid "AutoBracketing" +msgstr "تىرناق" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "ÙƒÛ†Ùƒ رەڭ تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "قىزىل رەڭ تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +#, fuzzy +msgid "FocalLength" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "يۇرت" + +#: src/pentaxmn.cpp:1245 +#, fuzzy +msgid "Hometown DST" +msgstr "يۇرت" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +#, fuzzy +msgid "Destination DST" +msgstr "نىشان" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "Firmware نەشرى:" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "Firmware نەشرى:" + +#: src/pentaxmn.cpp:1261 +#, fuzzy +msgid "Light value" +msgstr "يورۇقلۇق دەرىجىسى قىممىتى" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "سۈرەت سانلىق مەلۇمات چوڭلۇقى" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +#, fuzzy +msgid "Raw image size" +msgstr "سۈرەت چوڭلۇقى" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +#, fuzzy +msgid "Preview image borders" +msgstr "سۈرەت سىڭدۇرمىسىنى ئالدىن كۈزەت" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "رەقەملىك سۈزگۈچ" + +#: src/pentaxmn.cpp:1299 +#, fuzzy +msgid "Camera temperature" +msgstr "رەڭ تÛÙ…Ù¾ÛØ±Ø§ØªÛ‡Ø±Ù‰Ø³Ù‰" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "سۈرەت تۈسى" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "تەۋرىنىشنى ئاجىزلىتىش" + +#: src/pentaxmn.cpp:1320 +msgid "Shake reduction information" +msgstr "تەۋرىنىشنى ئاجىزلىتىش ئۇچۇرلىرى" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "ھەرىكەتچان دائىرە ÙƒÛڭىيىشى" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +#, fuzzy +msgid "High ISO noise reduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +msgid "AF Adjustment" +msgstr "ئاپتوماتىك Ùوكۇس تەڭشەش" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "قارا نۇقتا" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "ئاق نۇقتا" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +#, fuzzy +msgid "ShotInfo" +msgstr "رەسىمگە تارتىش ئۇچۇرى" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +#, fuzzy +msgid "AEInfo" +msgstr "ئاپتوماتىك Ùۇكۇس ئۇچۇرى" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Ù„Ûنزا ئۇچۇرى" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +#, fuzzy +msgid "FlashInfo" +msgstr "چاقناش ئۇچۇرى" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +#, fuzzy +msgid "AEMeteringSegments" +msgstr "ئۆلچەش ھالىتى" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "چاقماق لامپا" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "چاقماق لامپا" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +#, fuzzy +msgid "WB_RGGBLevelsDaylight" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +#, fuzzy +msgid "WB_RGGBLevelsShade" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +#, fuzzy +msgid "WB_RGGBLevelsCloudy" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +#, fuzzy +msgid "WB_RGGBLevelsTungsten" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentD" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentN" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentW" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +#, fuzzy +msgid "WB_RGGBLevelsFlash" +msgstr "RGGBدەرىجىسىنىڭ ئاق تەڭپۇڭلۇقى" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "ÙƒØ§Ù…ÛØ±Ø§ ئۇچۇرى" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "توكدان ئۇچۇرى" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +#, fuzzy +msgid "AFInfo" +msgstr "ئاپتوماتىك Ùۇكۇس ئۇچۇرى" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +msgid "ColorInfo" +msgstr "رەڭ ئۇچۇرى" + +#: src/pentaxmn.cpp:1405 +#, fuzzy +msgid "Unknown PentaxMakerNote tag" +msgstr "نامەلۇم Minoltaياسىغۇچى ئىزاھات بەلگىسى" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "" + +#: src/properties.cpp:118 +#, fuzzy +msgid "XMP Dynamic Media schema" +msgstr "ھەركەتچان رايۇن" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "" + +#: src/properties.cpp:121 +msgid "Adobe PDF schema" +msgstr "" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "" + +#: src/properties.cpp:123 +#, fuzzy +msgid "Camera Raw schema" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰ ياسىغۇچى" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +#, fuzzy +msgid "IPTC Extension schema" +msgstr "ÙƒÛڭەيتمىلەر" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +#, fuzzy +msgid "Colorant structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:149 +#, fuzzy +msgid "Dimensions structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:150 +#, fuzzy +msgid "Font structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:151 +#, fuzzy +msgid "Thumbnail structure" +msgstr "كىچىك سۈرەت" + +#: src/properties.cpp:152 +#, fuzzy +msgid "Resource Event structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:153 +#, fuzzy +msgid "ResourceRef structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:154 +#, fuzzy +msgid "Version structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +msgid "Area structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "تۆھپىكار" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +#, fuzzy +msgid "Coverage" +msgstr "ئوتتۇرىچە" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "تۈزگۈچى" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "پىچىمى" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "بەلگە" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "تارقاتقۇچى" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "مۇناسىۋەت" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "ھوقۇق" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "تىپى" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "بەلگە تىزىمى" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "ئاپتور ئاتى تÛمىسى" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "ئاپتور ئاتى تÛمىسى" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "تارىخىي سۈرەت" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "لىنزا سانلىق مەلۇمات تەڭشىكى" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "رەڭ ئەنى" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +msgid "Pick Label" +msgstr "ئەن ئىلغاش" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "كاندۇك تولۇق مەنزىرە" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰ تەڭشىكى" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "مەسلىھەت Ø¨ÛØ±Ù‰Ø´" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "ئاساسىي URL" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/properties.cpp:224 +msgid "The date and time the resource was originally created." +msgstr "" + +#: src/properties.cpp:225 +msgid "Creator Tool" +msgstr "ياسىغۇچى قورالى" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "ئەن" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +msgid "Metadata Date" +msgstr "مىتا سانلىق مەلۇماتى" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Ú†ÛØ³Ù„ا ئۆزگەرت" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "تەخەللۇس" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "باھالاش" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "كىچىك سۈرەت" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "گۇۋاھنامە" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "كۆرۈنەرلىك" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "ئىگىسى" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +#, fuzzy +msgid "Derived From" +msgstr "ئۈسكۈنە ھالىتى" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +#, fuzzy +msgid "Document ID" +msgstr "پۈتۈكلەر" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "ئىز" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +#, fuzzy +msgid "Managed From" +msgstr "باشقۇرغۇ" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "باشقۇرغۇ" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "باشقۇرغۇ" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "باشقۇرغۇ" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "باشقۇرغۇ" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +msgid "Version ID" +msgstr "نەشر كىملىكى" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr ". ." + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "نەشرى" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "ئاخىرقىURL" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +#, fuzzy +msgid "Rendition Of" +msgstr "مۇناسىۋەت" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "ساقلاش كىملىكى" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +msgid "Job Reference" +msgstr "ۋەزىپە نەقىلى" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "ئەڭ Ú†ÙˆÚ­ بەت چوڭلۇقى" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "بەت سانى" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "خەت نۇسخىلىرى" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +#, fuzzy +msgid "Colorants" +msgstr "رەڭ سانلىق مەلۇماتى" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "تىپ ئاتى" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "سىن كاندۇك ØªÛØ²Ù„ىكى" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "سىن كاندۇك چوڭلۇقى" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" + +#: src/properties.cpp:332 +#, fuzzy +msgid "Video Pixel Aspect Ratio" +msgstr "ئۇزۇنلۇق كەڭلىك نىسبىتى" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +#, fuzzy +msgid "Video Pixel Depth" +msgstr "پىكسىل چوڭقۇرلۇقى ئىناۋەتسىز" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "سىن رەڭ بوشلۇقى" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +msgid "Video Alpha Mode" +msgstr "سىن AlphaمودÛلى" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "سىن Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "" + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "سىن سۆز بۆلىكى تەرتىپى" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +#, fuzzy +msgid "Pull Down" +msgstr "ئاستى" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "ئۈننىڭ ئەۋرىشكىلەش ØªÛØ²Ù„ىكى:" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +#, fuzzy +msgid "Audio Sample Type" +msgstr "ئۈننىڭ ئەۋرىشكىلەش ØªÛØ²Ù„ىكى:" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "ئۈن قانىلى تىپى" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "ئۈن Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "" + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "File Data Rate" +msgstr "ھۆججەت سانلىق مەلۇمات نىسبىتى" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "تىپ ئاتى" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "باشقىچە تاللاش تىپى ئاتى" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "باشلىنىش ۋاقتى كودى" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "ۋاقىتنى باشقىچە تاللاش كودى" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "ۋاقتى" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "" + +#: src/properties.cpp:358 +#, fuzzy +msgid "Scene" +msgstr "كۆرۈنۈش ھالىتى" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "تارتىلغان سۈرەت ئاتى" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "تارتىلغان ۋاقتى" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "" + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "يەرلىكتە تارت" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "ئىزاھات خاتىرىسى" + +#: src/properties.cpp:363 +#, fuzzy +msgid "User's log comments." +msgstr "ئىشلەتكۈچى ئىزاھاتى" + +#: src/properties.cpp:364 +#, fuzzy +msgid "Markers" +msgstr "كۆرۈنەرلىك" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +#, fuzzy +msgid "Contributed Media" +msgstr "تۆھپىكار" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "سىننىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:368 +msgid "The date and time when the video was last modified." +msgstr "" + +#: src/properties.cpp:369 +msgid "Audio Modified Date" +msgstr "ئۈننىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:369 +msgid "The date and time when the audio was last modified." +msgstr "" + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "Ù…ÛØªØ§Ù„ سانلىق مەلۇماتىنىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:370 +msgid "The date and time when the metadata was last modified." +msgstr "" + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "ئورۇنلىغۇچى" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "ئالبوم" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "" + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "نەغمە نومۇرى" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "ئÛقىم" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "The name of the genre." +msgstr "" + +#: src/properties.cpp:375 +#, fuzzy +msgid "The copyright information." +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/properties.cpp:376 +msgid "The date the title was released." +msgstr "" + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "مۇزىكىسىنى ئىشلىگۈچى" + +#: src/properties.cpp:377 +#, fuzzy +msgid "The composer's name." +msgstr "ئىنژÛÙ†ÛØ± ئاتى" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "ئىنژÛÙ†ÛØ±" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "ئىنژÛÙ†ÛØ± ئاتى" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "ئۇدار" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "ئۈن ئۇدارى" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "ئۆلچىگۈچ" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "نەغمە-ناۋا ئۆلچىگۈچ" + +#: src/properties.cpp:381 +#, fuzzy +msgid "Intro Time" +msgstr "Minolta ۋاقتى" + +#: src/properties.cpp:381 +msgid "The duration of lead time for queuing music." +msgstr "" + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +#, fuzzy +msgid "Relative Timestamp" +msgstr "سۈرەت ۋاقتى" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "دەۋرىي" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +#, fuzzy +msgid "Number Of Beats" +msgstr "بەت سانى" + +#: src/properties.cpp:385 +#, fuzzy +msgid "The number of beats." +msgstr "بەت سانى" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "ئاچقۇچ" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +msgid "Stretch Mode" +msgstr "ÙƒÛØ±Ù‰Ù„ىش ھالىتى" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "ۋاقىت Ù¾Ø§Ø±Ø§Ù…ÛØªÙ‰Ø±Ù„ىرى" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +#, fuzzy +msgid "Resample Parameters" +msgstr "ۋاقىت Ù¾Ø§Ø±Ø§Ù…ÛØªÙ‰Ø±Ù„ىرى" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +#, fuzzy +msgid "Beat Splice Parameters" +msgstr "ۋاقىت Ù¾Ø§Ø±Ø§Ù…ÛØªÙ‰Ø±Ù„ىرى" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +#, fuzzy +msgid "Time Signature" +msgstr "يوللىغان ۋاقىت" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +#, fuzzy +msgid "Scale Type" +msgstr "سۈرەت تىپى" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰Ú­ تەرتىپ نومۇرى." + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰Ú­ تەرتىپ نومۇرى." + +#: src/properties.cpp:400 +msgid "Date Acquired" +msgstr "زىيارەت قىلغان Ú†ÛØ³Ù„ا" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired." +msgstr "زىيارەت قىلغان Ú†ÛØ³Ù„ا" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer" +msgstr "ياسىغۇچى سودىگەر" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer." +msgstr "ياسىغۇچى سودىگەر" + +#: src/properties.cpp:402 +#, fuzzy +msgid "Flash Model." +msgstr "چاقناش ھالىتى" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP." +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer" +msgstr "ياسىغۇچى سودىگەر" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer." +msgstr "ياسىغۇچى سودىگەر" + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Ù„Ûنزا مودÛلى" + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent" +msgstr "باھالاش" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "رەسىم ئۇچۇرى" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:421 +#, fuzzy +msgid "PDF Version" +msgstr "ھۆججەت نەشىرى" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "" + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Ùىلىم ئىشلىگۈچى" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "" + +#: src/properties.cpp:428 +#, fuzzy +msgid "Authors Position" +msgstr "Ùوكۇس ئورنى" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "ماۋزۇ يازغۇچ" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "يازغۇچ/تەھرىرلىگۈچى" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "شەھەر :" + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "ÙƒØ±ÛØ¯Ù‰Øª." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +#, fuzzy +msgid "Headline." +msgstr "قۇر" + +#: src/properties.cpp:439 +#, fuzzy +msgid "Special instructions." +msgstr "ئالاھىدە چۈشەندۈرۈش" + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "مەنبە" + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "دائىرە/ھالەت." + +#: src/properties.cpp:442 +#, fuzzy +msgid "Supplemental category." +msgstr "تولۇقلىما كاتÛگورىيە" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "دىيۇيم" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "Ø³Ø§Ù†ØªÙ‰Ù…ÛØªÙ‰Ø±" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "ئاپتوماتىك يورۇقلۇقى" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "ئاپتوماتىك ئاق-قارىلىقى" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "ئاپتوماتىك نۇر ئۆتكۈزۈش" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "ئاپتوماتىك سايە" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +msgid "Blue Hue" +msgstr "ÙƒÛ†Ùƒ رەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "" + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "ÙƒÛ†Ùƒ رەڭ تويۇنۇش دەرىجىسى" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "" + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "ÙƒØ§Ù…ÛØ±Ø§ سەپلىمە ھۆججىتى" + +#: src/properties.cpp:464 +msgid "\"Camera Profile\" setting." +msgstr "\"ÙƒØ§Ù…ÛØ±Ø§ سەپلىمە ھۆججىتى\"تەڭشىكى." + +#: src/properties.cpp:465 +#, fuzzy +msgid "Chromatic Aberration Blue" +msgstr "Chromaتويۇنۇش تەڭشىكى" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:466 +#, fuzzy +msgid "Chromatic Aberration Red" +msgstr "Chromaتويۇنۇش تەڭشىكى" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "Color Noise Reduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "تويۇنۇش تەڭشىكى" + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +msgid "Crop Bottom" +msgstr "ئاستىغا قىسقارتىش" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +msgid "Crop Right" +msgstr "ئوڭغا قىسقارتىش" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "بۇلۇڭغا قىسقارتىش" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +#, fuzzy +msgid "Crop Units" +msgstr "كەڭلىكىنى قىسقارتىش" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "" + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "ÙŠÛØ´Ù‰Ù„ رەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:479 +msgid "Green Saturation" +msgstr "ÙŠÛØ´Ù‰Ù„ تويۇنۇش دەرىجىسى" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "قىسقارتقۇچ بار" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +msgid "Has Settings" +msgstr "تەڭشەكلەر بار" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:483 +#, fuzzy +msgid "Raw File Name" +msgstr "ھۆججەت ئاتى" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "" + +#: src/properties.cpp:484 +msgid "Red Hue" +msgstr "قىزىل رەڭ ÙØ§Ø²Ù‰Ø³Ù‰" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "قىزىل تويۇنۇش دەرىجىسى" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:486 +#, fuzzy +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "تويۇنۇش تەڭشىكى" + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "سايە" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:488 +#, fuzzy +msgid "Shadow Tint" +msgstr "سايە" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:489 src/properties.cpp:1301 +#, fuzzy +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "ئۆتكۈرلۈك تەڭشىكى" + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "" + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "رەڭلە" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "" + +#: src/properties.cpp:492 +#, fuzzy +msgid "Tone Curve" +msgstr "ئەگرىلىكىنى سÛلىشتۇر" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +#, fuzzy +msgid "Tone Curve Name" +msgstr "ئىگىدار ئاتى" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +#, fuzzy +msgid "Vignette Amount" +msgstr "قىستۇرما سۈرەت تىزگىنى" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:497 +#, fuzzy +msgid "Vignette Midpoint" +msgstr "قىستۇرما سۈرەت تىزگىنى" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "سۈرەت ئارىلىقى" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +msgid "Samples Per Pixel" +msgstr "" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +msgid "Planar Configuration" +msgstr "" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +#, fuzzy +msgid "X Resolution" +msgstr "ExifئÛنىقلىقى" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +#, fuzzy +msgid "Y Resolution" +msgstr "ExifئÛنىقلىقى" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +#, fuzzy +msgid "Resolution Unit" +msgstr "ExifئÛنىقلىقى" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +#, fuzzy +msgid "Transfer Function" +msgstr "پەرمانلار" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "ئاق نۇقتا" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "پايدىلىنىش ئاق قارىلىقى" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Ú†ÛØ³Ù„ا Û‹Û• ۋاقىت" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "سۈرەت چۈشەندۈرۈشى" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +msgid "Make" +msgstr "ياسا" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "Exifنەشرى" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +#, fuzzy +msgid "Flashpix Version" +msgstr "ھۆججەت نەشىرى" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +#, fuzzy +msgid "Components Configuration" +msgstr "Ù¾Ø±ÛØ³ نىسبىتى:" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +#, fuzzy +msgid "Compressed Bits Per Pixel" +msgstr "پرىسلانغان سۈرەت چوڭلۇقى" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "ئىشلەتكۈچى ئىزاھاتى" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "مۇناسىۋەتلىك ئۈن ھۆججىتى" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„ا ئورىگىنالى" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„انى رەقەملەشتۈرۈش" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "F قىممىتى" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "ISO سۈرئەت نىسبىتى" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "OECF" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "" + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "يورۇقلۇق دەرىجىسى قىممىتى" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "" + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر چەمبىرى قىممىتى" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "" + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "" + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "تÛما رايون" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +#, fuzzy +msgid "Flash Energy" +msgstr "مۆلچەر چاقنىشى" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +#, fuzzy +msgid "Focal Plane X Resolution" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +#, fuzzy +msgid "Focal Plane Y Resolution" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +#, fuzzy +msgid "Focal Plane Resolution Unit" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "يەرلىك تÛما" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "نۇر ئۆتكۈزۈش ئىندÛكسى" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +#, fuzzy +msgid "Sensing Method" +msgstr "ھۆججەت ئاتىنى ئۆزگەرتىۋاتدۇ" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "" + +#: src/properties.cpp:603 src/tags.cpp:1771 +#, fuzzy +msgid "Scene Type" +msgstr "لىنزا تىپى" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "" + +#: src/properties.cpp:604 src/tags.cpp:761 +#, fuzzy +msgid "CFA Pattern" +msgstr "ئەندىزە+ئاپتوماتىك Ùوكۇس" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +#, fuzzy +msgid "Custom Rendered" +msgstr "ئىختىيارى ئاق تەڭپۇڭلۇق قىزىل رەڭ دەرىجىسى" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +#, fuzzy +msgid "Digital Zoom Ratio" +msgstr "رەقەملىك ÙƒÛڭەيت تاراىتىش نىسبىتى" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:609 src/tags.cpp:1800 +#, fuzzy +msgid "Focal Length In 35mm Film" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" + +#: src/properties.cpp:612 src/tags.cpp:1806 +#, fuzzy +msgid "Scene Capture Type" +msgstr "كۆرۈنۈش رايۇنى" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" + +#: src/properties.cpp:613 src/tags.cpp:1811 +#, fuzzy +msgid "Gain Control" +msgstr "قىستۇرما سۈرەت تىزگىنى" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:617 src/tags.cpp:1826 +#, fuzzy +msgid "Device Setting Description" +msgstr "كامىرا تەڭشەك نەشىرى" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" + +#: src/properties.cpp:618 src/tags.cpp:1831 +#, fuzzy +msgid "Subject Distance Range" +msgstr "جىسىم ئارىلىقى" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "" + +#: src/properties.cpp:619 src/tags.cpp:1834 +#, fuzzy +msgid "Image Unique ID" +msgstr "سۈرەت نومۇرى" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +msgid "GPS Version ID" +msgstr "GPSنەشر كىملىكى" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS كەڭلىك:" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS ئۇزۇنلۇق:" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +#, fuzzy +msgid "GPS Altitude Reference" +msgstr "GPSئÛگىزلىك" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPSئÛگىزلىك" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +#, fuzzy +msgid "GPS Time Stamp" +msgstr "يوللىغان ۋاقىت" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "GPS سۈنئىي ھەمراھ" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "GPSھالىتى" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS ئۆلچەم ھالىتى" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "GPS DOP" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "" + +#: src/properties.cpp:637 src/tags.cpp:2002 +#, fuzzy +msgid "GPS Speed Reference" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPSØªÛØ²Ù„ىكى" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS Track Reference" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +#, fuzzy +msgid "GPS Image Direction Reference" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +#, fuzzy +msgid "GPS Image Direction" +msgstr "سۈرەت چۈشەندۈرۈشى" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "GPSھالىتى" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" + +#: src/properties.cpp:644 src/tags.cpp:2033 +#, fuzzy +msgid "GPS Destination Latitude" +msgstr "GPS كەڭلىك:" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +#, fuzzy +msgid "GPS Destination Longitude" +msgstr "GPS ئۇزۇنلۇق:" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +#, fuzzy +msgid "GPS Destination Bearing" +msgstr "نىشان" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" + +#: src/properties.cpp:649 src/tags.cpp:2064 +#, fuzzy +msgid "GPS Destination Distance" +msgstr "نىشان" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "" + +#: src/properties.cpp:650 src/tags.cpp:2067 +#, fuzzy +msgid "GPS Processing Method" +msgstr "ئۇچۇرنى بىر تەرەپ قىلىۋاتىدۇ" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +msgid "GPS Area Information" +msgstr "GPSدائىرە ئۇچۇرى" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +#, fuzzy +msgid "Contact Info-City" +msgstr "ئورۇن -شەھەر" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +#, fuzzy +msgid "Contact Info-State/Province" +msgstr "ئىشتات/ئۆلكە" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "" + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +#, fuzzy +msgid "IPTC Scene" +msgstr "شامال مەنزىرىسى" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +#, fuzzy +msgid "IPTC Subject Code" +msgstr "تÛما رايون" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "ئەندىزە" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "رەقەملىك سۈرەت مۇقىملىقى" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +msgid "The type of the source digital file." +msgstr "" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "ھادىسە" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "ئىشلەتكىلى بولىدىغان يورۇقلۇق" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "ئەڭ Ú†ÙˆÚ­ Ùوكۇس ئارلىقى" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "" + +#: src/properties.cpp:712 +msgid "Location Created" +msgstr "ئورۇن قۇرۇلدى" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "" + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "ئورۇن -شەھەر" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "" + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "" + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "ئورۇن ئاتى" + +#: src/properties.cpp:715 +msgid "The name of a country of a location." +msgstr "" + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "دائىرە/ھالەت." + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "ئورۇن -شەھەر" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "" + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "نەشر باياناتى:" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "كامىرا كىملىكى" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "كامىرا كىملىكى" + +#: src/properties.cpp:737 +msgid "Camera JPEG" +msgstr "ÙƒØ§Ù…ÛØ±Ø§ JPEG" + +#: src/properties.cpp:742 +msgid "PLUS Version" +msgstr "PLUSنەشرى" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "رۇخسەت قىلىنغۇچى" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "رۇخسەت قىلىنغۇچى كىملىكى" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +msgid "Licensee Name" +msgstr "رۇخسەت قىلىنغۇچى ئاتى" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "" + +#: src/properties.cpp:746 +msgid "End User" +msgstr "ئاخىرقى ئىشلەتكۈچى" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "ئاخىرقى ئىشلەتكۈچى كىملىكى" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +msgid "End User Name" +msgstr "ئاخىرقى ئىشلەتكۈچى ئاتى" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "" + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "رۇخسەت قىلغۇچى" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +msgid "Licensor ID" +msgstr "رۇخسەت قىلغۇچى كىملىكى" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +msgid "Licensor Name" +msgstr "رۇخسەت قىلغۇچى ئاتى" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "رۇخسەت قىلغۇچى Ø¦Ø§Ø¯Ø±ÛØ³Ù‰" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "رۇخسەت قىلغۇچى كوچا Ø¦Ø§Ø¯Ø±ÛØ³Ù‰" + +#: src/properties.cpp:753 +#, fuzzy +msgid "Licensor Address Detail" +msgstr "رۇخسەت قىلغۇچى Ø¦Ø§Ø¯Ø±ÛØ³Ù‰" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "رۇخسەت قىلغۇچى شەھىرى" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "رۇخسەت قىلغۇچى شەھىرى ئاتى" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "ئىشتات/ئۆلكە" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province name." +msgstr "رۇخسەت قىلغۇچى دۆلىتى ئاتى" + +#: src/properties.cpp:756 +#, fuzzy +msgid "Licensor Postal Code" +msgstr "رۇخسەت قىلغۇچى ئاتى" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "" + +#: src/properties.cpp:757 +msgid "Licensor Country" +msgstr "رۇخسەت قىلغۇچى دۆلىتى" + +#: src/properties.cpp:757 +msgid "Licensor Country name." +msgstr "رۇخسەت قىلغۇچى دۆلىتى ئاتى" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙون تىپى 1" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙون تىپى 1" + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙونى 1" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙون نومۇرى1." + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2" +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙون تىپى 1" + +#: src/properties.cpp:760 +#, fuzzy +msgid "Licensor Telephone Type 2." +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙون تىپى 1" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone 2" +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙونى 1" + +#: src/properties.cpp:761 +#, fuzzy +msgid "Licensor Telephone number 2." +msgstr "رۇخسەت قىلغۇچى تÛÙ„ÛÙون نومۇرى1." + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email" +msgstr "رۇخسەت قىلغۇچى ئاتى" + +#: src/properties.cpp:762 +#, fuzzy +msgid "Licensor Email address." +msgstr "رۇخسەت قىلغۇچى Ø¦Ø§Ø¯Ø±ÛØ³Ù‰" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "رۇخسەت قىلغۇچى" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor world wide web address." +msgstr "رۇخسەت قىلغۇچى كوچا Ø¦Ø§Ø¯Ø±ÛØ³Ù‰" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "رۇخسەت قىلغۇچى ئاتى" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "GPS ئۆلچەم ھالىتى" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "رۇخسەت قىلىنغۇچى ئاتى" + +#: src/properties.cpp:766 +msgid "The date on which the license takes effect." +msgstr "" + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "رۇخسەت قىلىنغۇچى ئاتى" + +#: src/properties.cpp:767 +msgid "The date on which the license expires." +msgstr "" + +#: src/properties.cpp:768 +#, fuzzy +msgid "Media Constraints" +msgstr "Ú† Ùƒ ئاق قارىلىق" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "سۈرەت چوڭلۇقى تەڭشەكلىرى" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "سۈرەت سۈپەت تەڭشەكلىرى" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "تارقاتقان Ú†ÛØ³Ù„ا" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "كىملىك مودىلى" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "ئاپتوماتىك ئاق-قارىلىقى" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "" + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "زۆرۈر ئەمەس" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "يورۇتۇش شارائىتى" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "" + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "" + +#: src/properties.cpp:787 +#, fuzzy +msgid "Licensor Image ID" +msgstr "رۇخسەت قىلغۇچى كىملىكى" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "نەشر ھوقۇقى" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "نەشر باياناتى:" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "ئىناۋەتلىك Ú†ÛØ³Ù„اسى" + +#: src/properties.cpp:793 +msgid "The date on which the image was first published." +msgstr "" + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "نەشر ھوقۇقى" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "نەشر ھوقۇقى" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "ئىگىدار ئاتى" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "" + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "سۈرەت يۇنىلىشى" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "سۈرەت يۇنىلىشى" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "سۈرەت Û‹Û• (كاتەكسىمان)" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "ئەسلى سۈرەت مەركىزى" + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "سۈرەت چوڭلۇقى" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "سۈرەت چوڭلۇقى" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "" + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "رۇخسەت قىلىنغۇچى كىملىكى" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "رۇخسەت قىلىنغۇچى ئاتى" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "" + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "ئاپتوماتىك Ùوكۇس ئورنى ئۇچۇرى" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "رۇخسەت قىلىنغۇچى كىملىكى" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +#, fuzzy +msgid "Licensor Transaction ID" +msgstr "رۇخسەت قىلغۇچى كىملىكى" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +#, fuzzy +msgid "Licensee Transaction ID" +msgstr "رۇخسەت قىلىنغۇچى كىملىكى" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +#, fuzzy +msgid "Licensee Project Reference" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "ئىناۋەتلىك Ú†ÛØ³Ù„اسى" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "رۇخسەت قىلىنغۇچى كىملىكى" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "ئاپتوماتىك Ùوكۇس ئورنى ئۇچۇرى" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "ئىختىيارىچە 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "ئىختىيارى 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "ئىختىيارى 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "ئىختىيارى 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "ئىختىيارى 8" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "ئىختىيارىچە 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "ئىختىيارىچە 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "زۆرۈر ئەمەس" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "قوغدالغان" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "زۆرۈر ئەمەس" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "نۇرئۆتۈش" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "نۇرئۆتۈش" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "ماس رايۇن" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "" + +#: src/properties.cpp:880 +#, fuzzy +msgid "Digital Negative (DNG)" +msgstr "رەقەملىك پاي Ú†Ûكى" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "" + +#: src/properties.cpp:898 +msgid "Up to 30 MB" +msgstr "" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "كاتەكچە" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "چاقىرغۇ" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "ئىش" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "نامەلۇم" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "ماس كەلمەيدۇ" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "رەسىم تويۇنۇش ھالىتى" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "ھالىتى" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "كىشىلەر" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "رايونلار" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +msgid "Regions" +msgstr "رايونلار" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "" + +#: src/properties.cpp:991 +#, fuzzy +msgid "Person Display Name" +msgstr "سەپلەك(Profile) ھۆججەت ئاتى" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "تىك تۆت بۇلۇڭ" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Applied To Dimensions" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "رايونلار" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "دائىرە" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Ùوكۇس دائىرىسى" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "تەگلىك قىممىتى" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +msgid "Extensions" +msgstr "ÙƒÛڭەيتمىلەر" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "تولۇق مەنزىرە مودىلى" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "سانلىق مەلۇماتقا Ø¦ÛØ±Ù‰Ø´Ù‰Ø´" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "يۇمشاق Ø¯ÛØªØ§Ù„" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "ئوبيÛكت تىپى" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "تارتىلغان ۋاقتى" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "تارتىلغان ۋاقتى" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "يورۇتۇش ھالىتى" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "يەرلىكتە تارت" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "قىزغۇچ Ø³ÛØ±Ù‰Ù‚" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "ئۇزۇنلۇق كەڭلىك نىسبىتى" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "ئۇزۇنلۇق كەڭلىك نىسبىتى" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "سۈرەت چۈشەندۈرۈشى" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +msgid "Attached File Name" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "ئۆتكۈرلۈك تەڭشىكى" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "بايت تەرتىپى" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "ئەڭ كىچىك نۇر گەردىشى" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ كىچىك Ùۇكۇسدا" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "مەركەزگە پايدىلىق" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر گەردىشى ئەڭ كىچىك Ùۇكۇسدا" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "سىن Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "سۈرەت چۈشەندۈرۈشى" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "سۈرەت Û‹Û• ئۇچۇر" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "ئۈسكۈنە ھالىتى تەكشىكى" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "ئىزاھات خاتىرىسى" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "سىن Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "سىن Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "كامىرا تىپى" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Ù¾Ø±ÛØ³ نىسبىتى:" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +msgid "Name of the country where the video was created." +msgstr "" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +#, fuzzy +msgid "Pixel Crop Bottom" +msgstr "ئاستىغا قىسقارتىش" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +#, fuzzy +msgid "Pixel Crop Left" +msgstr "سولغا قىسقارتىش" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +#, fuzzy +msgid "Pixel Crop Right" +msgstr "ئوڭغا قىسقارتىش" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +#, fuzzy +msgid "Pixel Crop Top" +msgstr "ئۈستىگە قىسقارتىش" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "نۇر ئۆتۈش ۋاقتى" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„ا ئورىگىنالى" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "" + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "ÙƒÛڭەيتمىلەر" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "بىۋاستە" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +#, fuzzy +msgid "Video Display Unit" +msgstr "خاتىرىنى كۆرسىتىش" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Ùوكۇس تىپى" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "خاتىرە نەشىرى" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "ئۈلگە نەشىرى" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "" + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "خاتىرە نەشىرى" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "ARMنەشىرى" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "سىن كاندۇك ØªÛØ²Ù„ىكى" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "ۋاقىتنى باشقىچە تاللاش كودى" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "يورۇتۇشنى تولۇقلاش تەڭشىكى" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "يورۇتۇش پروگراممىسى" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "نۇرلاندۇرۇش ۋاقتى" + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "ÙƒÛڭەيتىلمە ئاق تەڭپۇڭلۇقنى بايقاش" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "ھۆججەت" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "ھۆججەت" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Ùوكۇس ئارىلىقى" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "ھۆججەت ئاتى" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "ھۆججەت چوڭلۇقى" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "ھۆججەت چوڭلۇقى" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "ھۆججەت ئاتى" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "سۈرەت سانى" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "تولۇق مەنزىرە يۆنىلىشى" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "تەگلىك ھالىتى" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "سۈرەت چۈشەندۈرۈشى" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "كامىرا تىپى" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "ياسىغۇچى سودىگەر" + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "ئەڭ يۇقىرى سەزگۈچ" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "سۈرەت تەڭشىلىش تەڭشىكى" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "ئاساسىي URL" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "ئاپتوماتىك Ùوكۇس ئورنى ئۇچۇرى" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "تÛكىست" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "IMنى Ø¨ÛØ³Ù‰Ø´ ئۇچۇرى" + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "IMنى Ø¨ÛØ³Ù‰Ø´ ئۇچۇرى" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "لىنزا سانلىق مەلۇماتى" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "تىل" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/properties.cpp:1198 +msgid "The length of the media file." +msgstr "" + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "لىنزا تىپى" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "يورۇقلۇق" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "يورۇقلۇق" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +#, fuzzy +msgid "Logo URL" +msgstr "ئاخىرقىURL" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "كامىرا تىپى" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "زاۋۇت ئىزاھات نەشرى" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "زاۋۇت ئىزاھات نەشرى" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "ئاساسىي URL" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "ياسىغۇچى سودىگەر" + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر چەمبىرى قىممىتى" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "ھۆججەت سانلىق مەلۇمات نىسبىتى" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "ئۈلگە نەشىرى" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Ù…ÛØªØ§Ù„ سانلىق مەلۇماتىنىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "ئوتتۇراھال" + +#: src/properties.cpp:1221 +#, fuzzy +msgid "Metadata" +msgstr "مىتا سانلىق مەلۇماتى" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +#, fuzzy +msgid "Metadata Library" +msgstr "مىتا سانلىق مەلۇماتى" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "ئۆلچەش ھالىتى" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "سۈرەت تىپى" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "ھۆججەت نەشىرى" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "ئۈسكۈنەنەشىرى" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "ئورۇن ئاتى" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "ئۈلگە نەشىرى" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "تÛكىست+ID#" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "بەت سانى" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "بەت سانى" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "يۆنىلىش" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "يىغىلىش" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "يىغىلىش" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "رەسىم تويۇنۇش ھالىتى" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "رەسىم تىزگىنى" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "تاللاش" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "تاللاش" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "قۇلاي ھالەت" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "نۇر ئۆتۈش ۋاقتى" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "پايدىلىنىش چىسلاسى" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "سانلىق مەلۇماتنى ئالدىن كۈزەت" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "سانلىق مەلۇماتنى ئالدىن كۈزەت" + +#: src/properties.cpp:1274 +msgid "The duration of the movie preview in movie time scale units" +msgstr "" + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "سۈرەتنى ئالدىن كۈزەتمەيدۇ" + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Ùىلىم ئىشلىگۈچى" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "نۇر گەردىشى ئاپتوماتىك" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "نۇر گەردىشى ئاپتوماتىك" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "مەھسۇلات كىملىكى" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "مەھسۇلات كىملىكى" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "مەھسۇلات كىملىكى" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "نەشر ھوقۇقى" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "نەشر ھوقۇقى" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "ئۆزگەرگۈچى مىقدار Û‹Û• ئÛھتىياج\n" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "تاللاش" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "ۋاقتى" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Firmware نەشرى:" + +#: src/properties.cpp:1303 +msgid "The Version of the software used." +msgstr "" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "ماۋزۇ يازغۇچ" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "مەنبە" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "ÙƒØ±ÛØ¯Ù‰Øª." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "مەنبە" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "مەنبە" + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +#, fuzzy +msgid "Start Timecode" +msgstr "باشلىنىش ۋاقتى كودى" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "ھالىتى" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "قاپقاق سانى" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "تارتىلغان سۈرەت ئاتى" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "سۈرەت سۈپىتى" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "ئۈننىڭ ئەۋرىشكىلەش ØªÛØ²Ù„ىكى:" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "سۈرەت سانى" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "كامىرا تىپى" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +#, fuzzy +msgid "Subtitles Codec" +msgstr "باشلىنىش ۋاقتى كودى" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "GPSدائىرە ئۇچۇرى" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "رەسىم ھالىتى تەڭشىكى" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "ماۋزۇ" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "ھالقىلىق سۆزلەر" + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "تىل" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "تÛما" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "تىپ ئاتى" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "كۆڭۈلدىكى تەڭشەكلەر" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "تىل" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "تىپ ئاتى" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "سۈرەت تىپى" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "قىسقا ئارلىق" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "سۈرەت ئارلىقىنى ئالدىن كۈزەت" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "سۈرەت ئارلىقىنى ئالدىن كۈزەت" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "قىسقا ئارلىق" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "سۈرەت ئالدىن كۈزىتىش ئىناۋەتسىز" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "ئۈستۈنكى نىسبەت" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Ø¦ÛØºÙ‰Ø´" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "يوللىغان ۋاقىت" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "بەت سانى" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +#, fuzzy +msgid "Track" +msgstr "تىرناق" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "سىن كاندۇك ØªÛØ²Ù„ىكى" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "نەغمە نومۇرى" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "زاۋۇت ئىزاھات نەشىرى" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "تىل" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "سىن كاندۇك ØªÛØ²Ù„ىكى" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "سىننىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "نەغمە نومۇرى" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "نەغمە نومۇرى" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "نەغمە نومۇرى" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "سىن" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "سىن" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "پروگرامما" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "رۇخسەت قىلغۇچى كىملىكى" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "سۈپەت" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "سىن كاندۇك ØªÛØ²Ù„ىكى" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "سىن كاندۇك چوڭلۇقى" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "سىن كاندۇك چوڭلۇقى" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "ئۈن قانىلى تىپى" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "ئاق تەڭپۇڭلۇقنى مىكرو تەڭشەش" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "ÙƒÛ•Ú­ سەزگۈچ" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "يەرلىكتە تارت" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "ئاپتور" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "يازغاننى ئالدىن كۈزىتىش" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +msgid "Year in which the video was made." +msgstr "" + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "قىزىل تەڭپۇڭلۇق" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "ئۈن Ù¾Ø±ÛØ³Ù„اش" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "سۈرەت چۈشەندۈرۈشى" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "GPSدائىرە ئۇچۇرى" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Ùوكۇس ھالىتى تەڭشەكلىرى" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "ئاۋاز نىسبىتى" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +#, fuzzy +msgid "Audio Track Default On" +msgstr "تەگلىك تەرتىپى ئاپتوماتىك" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "ئاۋاز نىسبىتى" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "ئۈننىڭ ئەۋرىشكىلەش ØªÛØ²Ù„ىكى:" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "ئۈننىڭ ئەۋرىشكىلەش ØªÛØ²Ù„ىكى:" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "ھۆججەتتىن ئىزدە" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "ھۆججەتتىن ئىزدە" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "تەگلىكنى ئۆزلۈكىدىن نۇرلاندۇرۇش" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "تەگلىك تەرتىپى ئاپتوماتىك" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "ئۈن داۋاملىشىش ۋاقتى" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "ئۈن تىپى" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "ئۈننىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "ئاۋاز نىسبىتى" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "ئاۋاز نىسبىتى" + +#: src/properties.cpp:1449 +msgid "The nature or genre of the resource." +msgstr "" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Ù…ÛØªØ§Ù„ سانلىق مەلۇماتىنىڭ ئۆزگەرتىلگەن ۋاقتى" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "" + +#: src/properties.cpp:1451 +msgid "A language of the resource." +msgstr "" + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "رۇخسەت قىلىنغۇچى" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "ئوڭ رايۇن" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "ھوقۇق" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "ۋەزىپە نەقىلى" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "خاتىرە نەشىرى" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "پەرمانلار" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "تاللاش" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "پەرمانلار" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "سانلىق مەلۇمات تۆكمىسى" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "تىپ ئاتى" + +#: src/properties.cpp:1488 +msgid "The name identifying the data set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +msgid "Information Withheld" +msgstr "" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "لىنزا خاسلىقى" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +msgid "Occurrence ID" +msgstr "" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "كىيىنكى سۈرەت نومۇرى" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "مۇندەرىجە نومۇرى" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +#, fuzzy +msgid "Recorded By" +msgstr "خاتىرىنى كۆرسىتىش" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "بەلگىلەش" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "يىراقتا تىزگىنلەش" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "قاتلام" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Ùوكۇس ئورنى" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Ø¦Ù‰Ù†ØªÛØ±Û‹Ø§Ù„ نومۇرى" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "ماكرو چوڭايت" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "AEBتەرتىپ" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "ئىگىدار ئاتى" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "كىچە مەنزىرىسى" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "ھادىسە" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "ھادىسە" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "ئاي" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "ÙƒÛچىكتۈر" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +#, fuzzy +msgid "Sampling Size Value" +msgstr "رۇشەنلەشتۈرۈش قىممىتى" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "ھۆججەت سانى" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +msgid "Field Notes" +msgstr "" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "ئورنى" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "ئۈزلۈكسىز" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "ئىشتات/ئۆلكە" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "دۆلەت" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "سۈپەت" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "يەرلىك" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "ئورۇن كودى" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "GPS كەڭلىك:" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "GPS ئۇزۇنلۇق:" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "GPS كەڭلىك:" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "GPS ئۇزۇنلۇق:" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "ۋەزىپە نەقىلى" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "پايدىلىنىش چىسلاسى" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "پايدىلىنىش مۇلازىمىتى" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "پايدىلىنىش نومۇرى" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "پىچىمى" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "ساغۇچ رەڭلىك" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "قىزىل" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "بەلگە" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +msgid "Identification ID" +msgstr "" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "بەلگە" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "بەلگە" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "پايدىلىنىش تۈرى" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "بەلگە" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "ھالىتى" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "پۈتۈك ئاتى" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "تارقاتقۇچى" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "" + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "يۇقۇرى تويۇنۇش دەرىجىسى" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "بايت تەرتىپى" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "تەبىئىي رەڭ" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "ھۆججەت مەنبەسى" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "ھۆججەت مەنبەسى" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "نۇر مەنبەسى" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "EV ئۆلچەش" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "نۇر چەمبەر قىممىتى" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "GPS ئۆلچەم ھالىتى" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +msgid "A brief description of the file" +msgstr "" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Ú†ÛØ³Ù„ا Û‹Û• ۋاقىت" + +#: src/properties.cpp:2103 +msgid "The name of the author or photographer" +msgstr "" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "كاتÛگورىيە" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +#, fuzzy +msgid "Resolution Mode" +msgstr "ExifئÛنىقلىقى" + +#: src/sigmamn.cpp:63 +#, fuzzy +msgid "Resolution mode" +msgstr "ExifئÛنىقلىقى" + +#: src/sigmamn.cpp:65 +#, fuzzy +msgid "Autofocus Mode" +msgstr "Ùوكۇس ھالىتى" + +#: src/sigmamn.cpp:66 +#, fuzzy +msgid "Autofocus mode" +msgstr "Ùوكۇس ھالىتى" + +#: src/sigmamn.cpp:68 +#, fuzzy +msgid "Focus Setting" +msgstr "Ùوكۇس ھالىتى تەڭشىكى" + +#: src/sigmamn.cpp:69 +#, fuzzy +msgid "Focus setting" +msgstr "Ùوكۇس ھالىتى تەڭشىكى" + +#: src/sigmamn.cpp:80 +#, fuzzy +msgid "Lens Range" +msgstr "Ùوكۇس دائىرىسى" + +#: src/sigmamn.cpp:81 +#, fuzzy +msgid "Lens focal length range" +msgstr "ئەڭ كىچىك Ùوكۇس ئارلىقى" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "سايە" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "يورۇت" + +#: src/sigmamn.cpp:104 +#, fuzzy +msgid "Fill Light" +msgstr "ئىشلەتكىلى بولىدىغان يورۇقلۇق" + +#: src/sigmamn.cpp:105 +#, fuzzy +msgid "X3 Fill light" +msgstr "نۇر تولۇقلاش" + +#: src/sigmamn.cpp:107 +#, fuzzy +msgid "Color Adjustment" +msgstr "ئاپتوماتىك Ùوكۇس تەڭشەش" + +#: src/sigmamn.cpp:108 +#, fuzzy +msgid "Color adjustment" +msgstr "رەڭ ÙØ§Ø²Ù‰Ø³Ù‰Ù†Ù‰ تەڭشەش" + +#: src/sigmamn.cpp:110 +#, fuzzy +msgid "Adjustment Mode" +msgstr "ئاپتوماتىك Ùوكۇس تەڭشەش" + +#: src/sigmamn.cpp:111 +#, fuzzy +msgid "Adjustment mode" +msgstr "ئاپتوماتىك Ùوكۇس تەڭشەش" + +#: src/sigmamn.cpp:122 +#, fuzzy +msgid "Auto Bracket" +msgstr "ئۆزلۈكىدىن نۇرلاندۇرۇش تەڭشەش" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "ئۆزلۈكىدىن نۇرلاندۇرۇش تەڭشەش" + +#: src/sigmamn.cpp:127 +#, fuzzy +msgid "Unknown SigmaMakerNote tag" +msgstr "نامەلۇم Canonياسىغۇچى ئىزاھاتى بەلگىسى" + +#: src/sigmamn.cpp:170 +#, fuzzy +msgid "8-Segment" +msgstr "ÙƒÛ†Ù¾ سÛÚ¯Ù…Ûنت" + +#: src/sonymn.cpp:131 +#, fuzzy +msgid "Advanced Lv1" +msgstr "ئالىي دەرىجە" + +#: src/sonymn.cpp:132 +#, fuzzy +msgid "Advanced Lv2" +msgstr "ئالىي دەرىجە" + +#: src/sonymn.cpp:133 +#, fuzzy +msgid "Advanced Lv3" +msgstr "ئالىي دەرىجە" + +#: src/sonymn.cpp:134 +#, fuzzy +msgid "Advanced Lv4" +msgstr "ئالىي دەرىجە" + +#: src/sonymn.cpp:135 +#, fuzzy +msgid "Advanced Lv5" +msgstr "ئالىي دەرىجە" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "كەچلىك مەنزىرە" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "ÙƒÛÚ†Û• رەسىمى" + +#: src/sonymn.cpp:157 +msgid "Soft Snap / Portrait" +msgstr "" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "ئاستا ئىشىك" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "ئەڭ يۇقىرى" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Panorama" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "ھەركەت رەسىمى" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +#, fuzzy +msgid "Background Defocus" +msgstr "ماكرو Ùوكۇس" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "يۇمشاق" + +#: src/sonymn.cpp:174 +msgid "3D Image" +msgstr "" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "ئۈزلۈكسىز" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "پىلۇس" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "يالتىراق لامپا" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "چوغلانما لامپا" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/sonymn.cpp:221 +#, fuzzy +msgid "Underwater 1 (Blue Water)" +msgstr "سۇ ئاستى كەڭرى 1" + +#: src/sonymn.cpp:222 +#, fuzzy +msgid "Underwater 2 (Green Water)" +msgstr "سۇ ئاستى ئىكران كۆرۈنۈشى" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "مەركەز" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "نۇقتا" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "قوللانما Ùوكۇس" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "چىراي بايقاش" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "ئاپتوماتىك Ùوكۇس" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "ئارقىمۇ-ئارقا تارتىش" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "سۈرەت ئÛگىزلىكى:" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "ئاپتوماتىك يۇقۇرى" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "كىملىك مودىلى" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +#, fuzzy +msgid "Dynamic Range Optimizer" +msgstr "ھەركەتچان دائىرەنى ئەلالاشتۇرۇش مودىلى" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Minoltaسانلىق مەلۇماتى" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "سۈرەت چوڭلۇقى" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +#, fuzzy +msgid "AF Illuminator" +msgstr "ئاپتوماتىك Ùوكۇس يورۇتۇش دائىرىسى" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "JPEG سۈپىتى" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "تارقاتقان Ú†ÛØ³Ù„ا" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "تەرتىپ نومۇر(ئەگەر ئۆزلۈكسىزلىك تويۇقسىز پەيدا بولسا)" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Anti-blur" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "ئۇزۇن ۋاقىت نور ئۆتكۈزۈش شاۋقۇنىنى ئاجىزلىتىش" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "نامەلۇم Nikon1 زاۋۇت ئىزاھاتى بەلگىسى" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "ئۆزلۈكسىز، يۇقۇرى" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "ئۆزلۈكسىز، ئاز" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "ھەركەتچان دائىرەنى ئەلالاشتۇرۇش تەڭشىكى" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "كۈز" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "ئۆزلۈكىدىن قويۇپ Ø¨ÛØ±Ù‰Ø´" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +#, fuzzy +msgid "Dynamic Range Optimizer Level" +msgstr "ھەركەتچان دائىرەنى ئەلالاشتۇرۇش مودىلى" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Ú†ÛØ³Ù„ا قۇر" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "ماس رايۇن" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "تىز ئىشىك" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "سۈرەت تىپى" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "نامەلۇم Canon كامىراسى 1Ú¯Û• تەڭشەلگەن" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "نامەلۇم Canon كامىراسى 2Ú¯Û• تەڭشەلگەن" + +#: src/tags.cpp:188 +#, fuzzy +msgid "Unknown section" +msgstr "نامەلۇم سانلىق مەلۇمات تەڭشىكى" + +#: src/tags.cpp:189 +#, fuzzy +msgid "Image data structure" +msgstr "سۈرەت سانلىق مەلۇمات چوڭلۇقى" + +#: src/tags.cpp:190 +#, fuzzy +msgid "Recording offset" +msgstr "رەڭ تەڭشەش ئۈنۈمى" + +#: src/tags.cpp:191 +#, fuzzy +msgid "Image data characteristics" +msgstr "سۈرەت سانلىق مەلۇمات چوڭلۇقى" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "باشقا سانلىق-مەلۇمات" + +#: src/tags.cpp:193 +#, fuzzy +msgid "Exif data structure" +msgstr "دائىرە قۇرۇلمىسى" + +#: src/tags.cpp:195 +#, fuzzy +msgid "Image configuration" +msgstr "سۈرەتنى ئەلالاشتۇرۇش" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "ئىشلەتكۈچى ئۇچۇرى" + +#: src/tags.cpp:197 +#, fuzzy +msgid "Related file" +msgstr "مۇناسىۋەتلىك ئۈن ھۆججىتى" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Ú†ÛØ³Ù„ا Û‹Û• ۋاقىت" + +#: src/tags.cpp:199 +#, fuzzy +msgid "Picture taking conditions" +msgstr " رەسىم تىزگىنى" + +#: src/tags.cpp:200 +#, fuzzy +msgid "GPS information" +msgstr "رەسىمگە تارتىش ئۇچۇرلىرى" + +#: src/tags.cpp:201 +#, fuzzy +msgid "Interoperability information" +msgstr "IMنى Ø¨ÛØ³Ù‰Ø´ ئۇچۇرى" + +#: src/tags.cpp:202 +#, fuzzy +msgid "Vendor specific information" +msgstr "ئىشلەتكۈچى ئۇچۇرى" + +#: src/tags.cpp:203 +#, fuzzy +msgid "Adobe DNG tags" +msgstr "Adobe RGB" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "" + +#: src/tags.cpp:208 +#, fuzzy +msgid "Last section" +msgstr "ئاق قارىلىق تەڭشىكى" + +#: src/tags.cpp:224 +#, fuzzy +msgid "Primary image" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/tags.cpp:225 +#, fuzzy +msgid "Thumbnail/Preview image" +msgstr "ئاددى سۈرەت" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "" + +#: src/tags.cpp:227 +#, fuzzy +msgid "Thumbnail/Preview image, Multi page file" +msgstr "سۈرەت ئاددى ئۈنۈملۈك كۆلىمى" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "" + +#: src/tags.cpp:229 +#, fuzzy +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "سۈرەت ئاددى ئۈنۈملۈك كۆلىمى" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +#, fuzzy +msgid "Full-resolution image data" +msgstr "سۈرەت سانلىق مەلۇماتىنى ئوقۇش مەغلۇب بولدى" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "دىيۇيم" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "" + +#: src/tags.cpp:260 +#, fuzzy +msgid "JBIG Color" +msgstr "رەڭ" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +#, fuzzy +msgid "Epson ERF Compressed" +msgstr "NEFپرىسلاش" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "" + +#: src/tags.cpp:269 +#, fuzzy +msgid "IT8 Monochrome Picture" +msgstr "رەڭسىز" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "" + +#: src/tags.cpp:275 +#, fuzzy +msgid "ISO JBIG" +msgstr "ISOئۇچۇرى" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "" + +#: src/tags.cpp:279 +#, fuzzy +msgid "Nikon NEF Compressed" +msgstr "NEFپرىسلاش" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "" + +#: src/tags.cpp:281 +#, fuzzy +msgid "Pentax PEF Compressed" +msgstr "NEFپرىسلاش" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "" + +#: src/tags.cpp:287 +#, fuzzy +msgid "Black Is Zero" +msgstr "ئاق&قارا" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "" + +#: src/tags.cpp:296 +#, fuzzy +msgid "Color Filter Array" +msgstr "رەڭ سۈزگۈچ" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "نورمال بىر تەرەپ قىلىش" + +#: src/tags.cpp:311 +#, fuzzy +msgid "top, left" +msgstr "سولغا قىسقارتىش" + +#: src/tags.cpp:312 +#, fuzzy +msgid "top, right" +msgstr "ئوڭ ئۈستى" + +#: src/tags.cpp:313 +#, fuzzy +msgid "bottom, right" +msgstr "ئوڭ ئاستى" + +#: src/tags.cpp:314 +#, fuzzy +msgid "bottom, left" +msgstr "سول ئاستى" + +#: src/tags.cpp:315 +#, fuzzy +msgid "left, top" +msgstr "سول" + +#: src/tags.cpp:316 +#, fuzzy +msgid "right, top" +msgstr "ئوڭ" + +#: src/tags.cpp:317 +#, fuzzy +msgid "right, bottom" +msgstr "ئاستى" + +#: src/tags.cpp:318 src/tags.cpp:319 +#, fuzzy +msgid "left, bottom" +msgstr "ئاستى" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +#, fuzzy +msgid "Horizontal differencing" +msgstr "توغرا يۆنىلىش" + +#: src/tags.cpp:331 +#, fuzzy +msgid "not CMYK" +msgstr "CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "قوللىمايدىغان Ú†ÛØ³Ù„ا پىچىمى" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "ئÛنىقلىما Ø¨ÛØ±Ù‰Ù„مىگەن" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "ئىندÛكسلانغان" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "مەركەز" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "" + +#: src/tags.cpp:368 +#, fuzzy +msgid "No flash" +msgstr "نۇر تولۇقلاش" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "" + +#: src/tags.cpp:372 +#, fuzzy +msgid "Yes, did not fire" +msgstr "ئوت يوق" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "چاقماق لامپا ئىقتىدارى يوق" + +#: src/tags.cpp:383 +#, fuzzy +msgid "No, no flash function" +msgstr "چاقماق لامپا ئىقتىدارى يوق" + +#: src/tags.cpp:384 +#, fuzzy +msgid "Yes, red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:387 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:390 +#, fuzzy +msgid "No, red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/tags.cpp:391 +#, fuzzy +msgid "No, auto, red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/tags.cpp:392 +#, fuzzy +msgid "Yes, auto, red-eye reduction" +msgstr "قىزىل كۆز شاۋقۇن" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +#, fuzzy +msgid "Processing Software" +msgstr "ئۇچۇرنى بىر تەرەپ قىلىۋاتىدۇ" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "" + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "ئۈن تىپى" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" + +#: src/tags.cpp:428 +#, fuzzy +msgid "Bits per Sample" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "كەڭلىكىنى قىسقارتىش" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Ùوكۇس ئارىلىقى" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +#, fuzzy +msgid "Fill Order" +msgstr "سىن سۆز بۆلىكى تەرتىپى" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "پۈتۈك ئاتى" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "" + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" + +#: src/tags.cpp:502 +#, fuzzy +msgid "Strip Byte Count" +msgstr "قاپقاق سانى" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" + +#: src/tags.cpp:506 +#, fuzzy +msgid "X-Resolution" +msgstr "ExifئÛنىقلىقى" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" + +#: src/tags.cpp:510 +#, fuzzy +msgid "Y-Resolution" +msgstr "ExifئÛنىقلىقى" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "تاللانما" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "تاللانما" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "سۈرەت نومۇرى" + +#: src/tags.cpp:538 +msgid "The page number of the page from which this image was scanned." +msgstr "" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +#, fuzzy +msgid "Predictor" +msgstr "ÙƒØ±ÛØ¯Ù‰Øª." + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "رەك ماترىتساسى" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +#, fuzzy +msgid "Tile Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "قىسقا ئارلىق" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +#, fuzzy +msgid "Tile Offsets" +msgstr "قىسقا Ø¦ÛØºÙ‰Ø´" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +#, fuzzy +msgid "SubIFD Offsets" +msgstr "VRDØ¦ÛØºÙ‰Ø´Ù‰" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "رەڭ تەڭشىكى" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "ئىگىدار ئاتى" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "بەت سانى" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Ùوكۇس دائىرىسى" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "نىشان نۇر گەردىشى" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "ھەر بىر ئەۋرىشكىدىكى بىت سانى" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "ھۆججەت Ùورماتى" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "ئۈننىڭ ئەۋرىشكىلەش ØªÛØ²Ù„ىكى:" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "رۇشەنلەشتۈرۈش قىممىتى" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +#, fuzzy +msgid "Transfer Range" +msgstr "يىراق دائىرە" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "JPEG سۈپىتى" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +#, fuzzy +msgid "JPEG Process" +msgstr "Ùوكۇسنى توغرىلاش" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "JPEG سۈپىتى" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +#, fuzzy +msgid "Reference Black/White" +msgstr "پايدىلىنىش ئاق قارىلىقى" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "" + +#: src/tags.cpp:746 +#, fuzzy +msgid "Windows Rating" +msgstr "باھالاش" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "سۈرەت چوڭلۇقى" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "نورلاندۇرۇشنى تۈزىتىش" + +#: src/tags.cpp:790 src/tags.cpp:1553 +#, fuzzy +msgid "The F number." +msgstr "ھۆججەت سانى" + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +#, fuzzy +msgid "Image Resources Block" +msgstr "چاقناپ نۇر ئۆتكۈزۈش قۇلۇپى" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +#, fuzzy +msgid "Inter Color Profile" +msgstr "رەڭ سەپلىمە ھۆججىتى" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "ISO سۈرئەت نىسبىتى" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "گىرەلەشتۈرۈلگەن" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "" + +#: src/tags.cpp:816 +#, fuzzy +msgid "Time Zone Offset" +msgstr "قىسقا Ø¦ÛØºÙ‰Ø´" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "ئۆزىدىكى ۋاقىت" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„ا ئورىگىنالى" + +#: src/tags.cpp:824 +msgid "The date and time when the original image data was generated." +msgstr "" + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +#, fuzzy +msgid "Shutter speed." +msgstr "قاپقاق ØªÛØ²Ù„ىكى" + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "ئەڭ كىچىك نۇر گەردىشى" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "ئاپتوماتىك يورۇقلۇقى" + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "نۇرلاندۇرۇش پەرقى" + +#: src/tags.cpp:830 src/tags.cpp:1645 +#, fuzzy +msgid "Max Aperture Value" +msgstr "ئەڭ Ú†ÙˆÚ­ نۇر چەمبىرى قىممىتى" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "" + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "" + +#: src/tags.cpp:832 src/tags.cpp:1654 +#, fuzzy +msgid "The metering mode." +msgstr "مۆلچەر نوقتا شەكلى" + +#: src/tags.cpp:833 src/tags.cpp:1657 +#, fuzzy +msgid "The kind of light source." +msgstr "باشقا نۇر مەنبەسى" + +#: src/tags.cpp:834 +msgid "Indicates the status of flash when the image was shot." +msgstr "" + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "شاۋقۇن" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "ئÛÙ„Ûكترونلۇق چوڭايت" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +#, fuzzy +msgid "TIFF/EP Standard ID" +msgstr "F0/ئۆلچىمى" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +#, fuzzy +msgid "Windows Comment" +msgstr "ئىزاھات خاتىرىسى" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +#, fuzzy +msgid "Windows Author" +msgstr "ئاپتور" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +#, fuzzy +msgid "Windows Keywords" +msgstr "ھالقىلىق سۆزلەر" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +#, fuzzy +msgid "Windows Subject" +msgstr "تÛما" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +#, fuzzy +msgid "Print Image Matching" +msgstr "ماس رايۇن" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "MCUنەشىرى" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +#, fuzzy +msgid "DNG backward version" +msgstr "Firmware نەشرى:" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +#, fuzzy +msgid "Unique Camera Model" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰Ú­ تىپى" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +#, fuzzy +msgid "Localized Camera Model" +msgstr "ÙƒØ§Ù…ÛØ±Ø§Ù†Ù‰Ú­ تىپى" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +#, fuzzy +msgid "CFA Plane Color" +msgstr "FinePix رەڭ" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "قارىلىق دەرىجىسى2" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +#, fuzzy +msgid "Black Level Delta H" +msgstr "قارىلىق دەرىجىسى2" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +#, fuzzy +msgid "Black Level Delta V" +msgstr "قارىلىق دەرىجىسى2" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +#, fuzzy +msgid "White Level" +msgstr "ئاق تەڭپۇڭلۇق قىزىللىق دەرىجىسى" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "كۆڭۈلدىكى" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "كۆڭۈلدىكى تەڭشەكلەر" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +#, fuzzy +msgid "Color Matrix 1" +msgstr "رەك ماترىتساسى" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +#, fuzzy +msgid "Color Matrix 2" +msgstr "رەڭ ماترىتسا2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +#, fuzzy +msgid "Camera Calibration 1" +msgstr "كامىرا تەڭشىكى (Z1)" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +#, fuzzy +msgid "Analog Balance" +msgstr "رەڭ تەڭپۇڭى" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "بىتەرەپ" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "نۇر ئۆتۈش ÙƒÛ†Ù¾" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Ú† Ùƒ رۇشەنلەشتۈرۈش" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +#, fuzzy +msgid "Lens Info" +msgstr "Ù„Ûنزا ئۇچۇرى" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +msgid "Anti Alias Strength" +msgstr "" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "سايە" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +#, fuzzy +msgid "DNG Private Data" +msgstr "سانلىق مەلۇماتنى ئالدىن كۈزەت" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "ياسىغۇچىنىڭ ئىلاۋىسى" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +#, fuzzy +msgid "Calibration Illuminant 1" +msgstr "تىترەشنى ئازلىتىش1" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "تىترەشنى ئازلىتىش2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "سۈرەت سۈپىتى2" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +#, fuzzy +msgid "Active Area" +msgstr "كۆرۈنۈش رايۇنى" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +#, fuzzy +msgid "Masked Areas" +msgstr "ئاپتوماتىك Ùۇكۇس دائىرىسى" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "ICCسەپلىمە ھۆججىتى" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +#, fuzzy +msgid "Current ICC Profile" +msgstr "ICCسەپلىمە ھۆججىتى" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "پايدىلىنىش تۈرى" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "سەپلەك(Profile) ھۆججەت ئاتى" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "شاۋقۇننى ئاجىزلىتىش" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +msgid "Profile Name" +msgstr "سەپلەك(Profile) ھۆججەت ئاتى" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "سەپلەك(Profile) ھۆججەت ئاتى" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +#, fuzzy +msgid "Profile Embed Policy" +msgstr "سەپلەك(Profile) ھۆججەت ئاتى" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "نەشر ھوقۇقى" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "رەك ماترىتساسى" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "رەڭ ماترىتسا2" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "سانلىق مەلۇماتنى ئالدىن كۈزەت" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "كۆرۈپ بÛقىش نەشىرى" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "سۈرەتنى ئالدىن كۆزەت" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "سىن رەڭ بوشلۇقى" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "سانلىق مەلۇماتنى ئالدىن كۈزەت" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "ئەسلى سۈرەت مەركىزى" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "شاۋقۇن سۈزگۈچ" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +#, fuzzy +msgid "Unknown IFD tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "ئÛنىقلىما Ø¨ÛØ±Ù‰Ù„مىگەن" + +#: src/tags.cpp:1413 +#, fuzzy +msgid "Creative program" +msgstr "پرۇگرامما باش تÛمىسى" + +#: src/tags.cpp:1414 +#, fuzzy +msgid "Action program" +msgstr "پرۇگرامما باش تÛمىسى" + +#: src/tags.cpp:1415 +#, fuzzy +msgid "Portrait mode" +msgstr "بوي يۆنىلىش" + +#: src/tags.cpp:1416 +#, fuzzy +msgid "Landscape mode" +msgstr "توغرا يۆنىلىش " + +#: src/tags.cpp:1425 +#, fuzzy +msgid "Multi-spot" +msgstr "ÙƒÛ†Ù¾ سÛگمىت" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Û‹ÙˆÙ„ÙØ±Ø§Ù… لامپا (چوغلانما لامپا)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "ئوچۇق" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "بۇلۇتلۇق" + +#: src/tags.cpp:1442 +#, fuzzy +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "ÙƒÛˆÙ† نۇرلۇق يالتىراق لامپا" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "ئۆلچەملىك چىراغ A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "ئۆلچەملىك چىراغ B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "ئۆلچەملىك چىراغ C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "ISO سۈرەتكە ئÛلىش چىرىغى" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "باشقا نۇر مەنبەسى" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "توغرىلانمىغان" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "ئۈچ سىزىقلىق سەزگۈچ" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +#, fuzzy +msgid "Digital still camera" +msgstr "رەقەملىك سۈزگۈچ" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "نورمال بىر تەرەپ قىلىش" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "ئىختىيارىچە بىر تەرەپ قىلىش" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "تۆۋەن ئارتىش" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "يۇقىرى ئارتىش" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "ئاستا تۆۋەنلەش" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "ØªÛØ² تۆۋەنلەش" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "ÙŠÛقىن مەنزىرە" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "يىراق مەنزىرە" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "" + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "لىنزا تىپى" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +msgid "Standard Output Sensitivity" +msgstr "" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "نۇر ئۆتكۈزۈش ئىندÛكسى" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "ISOسۈرئەت ھالىتى" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "ISOسۈرئەت ھالىتى" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +#, fuzzy +msgid "Date and Time (original)" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„ا ئورىگىنالى" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" + +#: src/tags.cpp:1613 +#, fuzzy +msgid "Date and Time (digitized)" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„انى رەقەملەشتۈرۈش" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "" + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +#, fuzzy +msgid "Compressed Bits per Pixel" +msgstr "پرىسلانغان سۈرەت چوڭلۇقى" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +#, fuzzy +msgid "Exposure Bias" +msgstr "نۇرلاندۇرۇش پەرقى" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "ياسىغۇچىنىڭ ئىلاۋىسى" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +#, fuzzy +msgid "Sub-seconds Time Original" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„ا ئورىگىنالى" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +#, fuzzy +msgid "Sub-seconds Time Digitized" +msgstr "ۋاقىت Û‹Û• Ú†ÛØ³Ù„انى رەقەملەشتۈرۈش" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +#, fuzzy +msgid "FlashPix Version" +msgstr "ھۆججەت نەشىرى" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +#, fuzzy +msgid "Focal Plane X-Resolution" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +#, fuzzy +msgid "Focal Plane Y-Resolution" +msgstr "Ùوكۇس تەكشىلىكى دىئاگۇنالى" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +#, fuzzy +msgid "Exposure index" +msgstr "نۇر ئۆتكۈزۈش ئىندÛكسى" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "رەڭ سۈزگۈچ" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "" + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "" + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "ئىگىدار ئاتى" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "تەرتىپ نومۇرى" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +msgid "Lens Specification" +msgstr "" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "لىنزا ھالىتى" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +#, fuzzy +msgid "Unknown Exif tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "شىمال" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "جەنۇب" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "شەرق" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "غەرب" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "" + +#: src/tags.cpp:1891 +#, fuzzy +msgid "Below sea level" +msgstr "قارىلىق دەرىجىسى" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "km/h" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "mph" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "دÛڭىز مىلى" + +#: src/tags.cpp:1915 +#, fuzzy +msgid "True direction" +msgstr "تولۇق مەنزىرە يۆنىلىشى" + +#: src/tags.cpp:1916 +#, fuzzy +msgid "Magnetic direction" +msgstr "تولۇق مەنزىرە يۆنىلىشى" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "ÙƒÙ‰Ù„ÙˆÙ…ÛØªÙ‰Ø±" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "ئىنگلىز مىلى" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "دÛڭىز مىلى" + +#: src/tags.cpp:1928 +#, fuzzy +msgid "Without correction" +msgstr "يەرلىكتە تارت" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +#, fuzzy +msgid "GPS Latitude Reference" +msgstr "GPS كەڭلىك:" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +#, fuzzy +msgid "GPS Longitude Reference" +msgstr "GPS ئۇزۇنلۇق:" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "" + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "GPS كەڭلىك:" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +#, fuzzy +msgid "GPS Date Stamp" +msgstr "يوللىغان چىسلا" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +#, fuzzy +msgid "Unknown GPSInfo tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +#, fuzzy +msgid "Interoperability Version" +msgstr "پروگرامما نەشرى" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "" + +#: src/tags.cpp:2106 +#, fuzzy +msgid "Related Image File Format" +msgstr "سۈرەت سانىنى ئۆچۈر" + +#: src/tags.cpp:2107 +#, fuzzy +msgid "File format of image file" +msgstr "ھۆججەت ئÛچىش مەغلۇپ بولدى\n" + +#: src/tags.cpp:2109 +#, fuzzy +msgid "Related Image Width" +msgstr "سۈرەت كەڭلىكى" + +#: src/tags.cpp:2112 +#, fuzzy +msgid "Related Image Length" +msgstr "سۈرەت ئارىلىقى" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +#, fuzzy +msgid "Unknown Exif Interoperability tag" +msgstr "نامەلۇم Minoltaياسىغۇچى ئىزاھات بەلگىسى" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "Ø¦ÛØºÙ‰Ø´" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "بايت تەرتىپى" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "نامەلۇم Nikon2زاۋۇت ئىزاھاتى بەلگىسى" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "نامەلۇم خەتكۈش" + +#: src/tags.cpp:2688 +#, fuzzy +msgid "Digital zoom not used" +msgstr "رەقەملىك ÙƒÛڭەيتىش تارايتىش تەڭشىكى" + +#: src/tiffimage.cpp:2308 +#, fuzzy +msgid "TIFF header, offset" +msgstr "بەت Ù‚ÛØ´Ù‰ØŒ Ø¦ÛØºÙ‰Ø´" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" + +#, fuzzy +#~ msgid "ascii bytes" +#~ msgstr "بايت" diff --git a/vendor/exiv2-0.25/po/uk.po b/vendor/exiv2-0.25/po/uk.po new file mode 100644 index 0000000..61d317f --- /dev/null +++ b/vendor/exiv2-0.25/po/uk.po @@ -0,0 +1,26887 @@ +# Ukrainian translation for exiv2 +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the exiv2 package. +# +# Yuri Chornoivan , 2011, 2013. +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2014-04-01 17:30+0000\n" +"Last-Translator: Микола Ткач \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 22:59+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Помилка при відкритті файлу\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Ðазва файлу" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Розмір файла" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "Байт" + +#: src/actions.cpp:293 +msgid "MIME type" +msgstr "Тип MIME" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Розмір зображеннÑ" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +msgid "No Exif data found in the file\n" +msgstr "Ðе знайдено Exif-даних у файлі\n" + +#: src/actions.cpp:307 +msgid "Camera make" +msgstr "Марка фотоапарата" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Модель фотоапарата" + +#: src/actions.cpp:313 +msgid "Image timestamp" +msgstr "ЧаÑова мітка зображеннÑ" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Ðомер зображеннÑ" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Витримка" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Діафрагма" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Ухил екÑпозиції" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Спалах" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Ухил Ñпалаху" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "ФокуÑна відÑтань" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "35-мм еквівалент" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "ВідÑтань до об’єкта" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "СвітлочутливіÑть ISO" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Режим екÑпозиції" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +#, fuzzy +msgid "Metering mode" +msgstr "Режим вимірюваннÑ" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Macro режим" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "ЯкіÑть зображеннÑ" + +#: src/actions.cpp:403 +msgid "Exif Resolution" +msgstr "РоздільніÑть Exif" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Мініатюра" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Ðемає" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +#, fuzzy +msgid "Copyright" +msgstr "Вгорі праворуч" + +#: src/actions.cpp:458 +msgid "Exif comment" +msgstr "Коментар Exif" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "(Двійкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð¾)" + +#: src/actions.cpp:742 +msgid "JPEG comment" +msgstr "Коментар JPEG" + +#: src/actions.cpp:767 +#, fuzzy +msgid "Preview" +msgstr "Попередній переглÑд глибини різкоÑті" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "" + +#: src/actions.cpp:773 src/actions.cpp:1113 +#, fuzzy +msgid "bytes" +msgstr "Байт" + +#: src/actions.cpp:820 +msgid "Neither tag" +msgstr "ÐÑ– мітки" + +#: src/actions.cpp:821 +msgid "nor" +msgstr "ні" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "знайдено у файлі" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "У файлі Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑÑƒÑ‚Ð½Ñ Ð²Ñ–Ð´Ð¼Ñ–Ñ‚ÐºÐ° про Ñ‡Ð°Ñ Ð¹Ð¾Ð³Ð¾ ÑтвореннÑ" + +#: src/actions.cpp:833 src/actions.cpp:1590 +msgid "Failed to parse timestamp" +msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ мітки" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "у файлі" + +#: src/actions.cpp:845 +msgid "Updating timestamp to" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ñ–Ñ‚ÐºÐ¸ длÑ" + +#: src/actions.cpp:939 +msgid "Erasing thumbnail data" +msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… мініатюри" + +#: src/actions.cpp:947 +msgid "Erasing Exif data from the file" +msgstr "Витираю Exif дані з файлу" + +#: src/actions.cpp:956 +msgid "Erasing IPTC data from the file" +msgstr "Витираю IPTC дані з файлу" + +#: src/actions.cpp:965 +msgid "Erasing JPEG comment from the file" +msgstr "Стерти коментар з файлу JPEG" + +#: src/actions.cpp:974 +msgid "Erasing XMP data from the file" +msgstr "Витираю XMP дані з файлу" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ міÑтить макету EXIF\n" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÐµÑ‚Ñƒ" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "у файл" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "Дані EXIF не міÑÑ‚Ñть макету\n" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ має попереднього переглÑду" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Ðалаштувати коментар JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +#, fuzzy +msgid "Warning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ розмитоÑті" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "не вдалоÑÑŒ зчитати" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +#, fuzzy +msgid "value" +msgstr "Оціночний" + +#: src/actions.cpp:1355 +msgid "Set" +msgstr "Ð’Ñтановити" + +#: src/actions.cpp:1427 +#, fuzzy +msgid "Del" +msgstr "Затримка" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "Reg " + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "ЧаÑова мітка метаданих з ключем" + +#: src/actions.cpp:1544 +msgid "not set\n" +msgstr "не вÑтановлено\n" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "РегулюваннÑ" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "від" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "Ñ" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "Ðе можу налаштувати мітки на" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +#, fuzzy +msgid "to" +msgstr "вгорі" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "ІÑнує Ñтандартний тег EXIF ISO; не змінений\n" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Зміна Exif ISO до" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "ÐÑ–Ñких коментарів Exif не знайдено." + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Знайдено Exif коментар з невірним значеннÑм" + +#: src/actions.cpp:1723 +msgid "No Exif UNICODE user comment found" +msgstr "Ðе знайдено коментарів Exif UNICODE" + +#: src/actions.cpp:1729 +msgid "Setting Exif UNICODE user comment to" +msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Exif UNICODE" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "ЗапиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… Exif з" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "ЗапиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… IPTC з" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "ЗапиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… XMP з" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "ЗапиÑуємо коментар JPEG з" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати мета-данні в файл" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Визначений формат назв файлів призвів до порожньої назви файла" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Цей файл вже має правильне ім'Ñ" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +#, fuzzy +msgid "File" +msgstr "Ðазва файлу" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "Ñ–Ñнує. [O] перезапиÑати, [r] перейменувати або [s] пропуÑтити?" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Перейменувти файл на" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ñ–Ñ‚ÐºÐ¸" + +#: src/actions.cpp:2015 +#, fuzzy +msgid "Failed to rename" +msgstr "не вдалоÑÑŒ зчитати" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Вимкн." + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Увімкнути" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Формат 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Формат 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "Включено (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "Включено (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "sRGB" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +msgid "Adobe RGB" +msgstr "Adobe RGB" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Ðевідома" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +#, fuzzy +msgid "Camera Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (7D)" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Різноманітні параметри фотоапарата" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +#, fuzzy +msgid "Focal Length" +msgstr "ФокуÑна відÑтань" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +#, fuzzy +msgid "Panorama" +msgstr "Рамка панорами" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +#, fuzzy +msgid "Image Type" +msgstr "Розмір зображеннÑ" + +#: src/canonmn.cpp:388 +#, fuzzy +msgid "Image type" +msgstr "Тон зображеннÑ" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +#, fuzzy +msgid "Firmware Version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +#, fuzzy +msgid "Firmware version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Ðомер файла" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Ðомер файла" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +#, fuzzy +msgid "Serial Number" +msgstr "Серійний номер 2" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +#, fuzzy +msgid "Camera serial number" +msgstr "Серійний номер фотоапарата" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ камеру" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ камеру" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +#, fuzzy +msgid "Custom Functions" +msgstr "Ðетипові функції" + +#: src/canonmn.cpp:395 +#, fuzzy +msgid "ModelID" +msgstr "Модель" + +#: src/canonmn.cpp:395 +#, fuzzy +msgid "Model ID" +msgstr "Модель" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ картинку" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ картинку" + +#: src/canonmn.cpp:397 +msgid "Thumbnail Image Valid Area" +msgstr "Мініатюрне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð¾Ñ— облаÑті" + +#: src/canonmn.cpp:397 +msgid "Thumbnail image valid area" +msgstr "Мініатюрне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð¾Ñ— облаÑті" + +#: src/canonmn.cpp:398 +msgid "Serial Number Format" +msgstr "Формат Серійного Ðомеру" + +#: src/canonmn.cpp:398 +msgid "Serial number format" +msgstr "Формат Ñерійного номеру" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Супер Макро" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Супер макро" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "AF інформаціÑ" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "AF інформаціÑ" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… вихідного вибору" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… вихідного вибору" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð‘Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +#, fuzzy +msgid "Lens Model" +msgstr "Режим Ñцени" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Режим Ñцени" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +msgid "Internal Serial Number" +msgstr "Вбудований Ñерійний номер" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Вбудований Ñерійний номер" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Дані щодо уÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¸Ð»Ñƒ" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "Дані щодо уÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¸Ð»Ñƒ" + +#: src/canonmn.cpp:406 +msgid "Custom functions" +msgstr "Ðетипові функції" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "Дані щодо обробки" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "Дані щодо обробки" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "ВимірÑний колір" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "ВимірÑний колір" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "ПроÑтір кольорів" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ VRD" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ VRD" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ СенÑор" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ ÑенÑор" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Колір" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ колір" + +#: src/canonmn.cpp:417 +msgid "Unknown CanonMakerNote tag" +msgstr "Ðевідома мітка CanonMakerNote" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +#, fuzzy +msgid "Normal" +msgstr "Ðормальний AE" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +#, fuzzy +msgid "Fine" +msgstr "VGA, ÑкіÑна" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "RAW" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Ðадтонкий" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Звичайне відео" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Відео" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Ðвто" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Червоні очі" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Повільна ÑинхронізаціÑ" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Ðвто + червоні очі" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "Включено + червоні очі" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +#, fuzzy +msgid "External" +msgstr "Внутрішні" + +#: src/canonmn.cpp:457 +msgid "Single / timer" +msgstr "Одиночний / таймер" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Ðеперервний" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Відео" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Ðеперервне з перевагою швидкоÑті" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Ðеперервне, низька" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Ðеперервна, виÑока" + +#: src/canonmn.cpp:467 +msgid "One shot AF" +msgstr "Однознімкове ÐФ" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "ШІ-Ñерво AF" + +#: src/canonmn.cpp:469 +msgid "AI focus AF" +msgstr "AI Ñ„Ð¾ÐºÑƒÑ AF" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Ручний фокуÑ" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "Поодинокі" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +msgid "Pan focus" +msgstr "Панорамне фокуÑуваннÑ" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Великий" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Середній" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Малий" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Середній 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Середній 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Середній 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Повна автоматика" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Вручну" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Ðльбомна" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Швидкий затвор" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Повільний затвор" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Ðічне оÑвітленнÑ" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "Шкала Ñірого" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "СепіÑ" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Книжкова" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Спорт" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Макро / крупний план" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Чорно-білий" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "ЧіткіÑть" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Ðейтральне" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Спалах вимкнено" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Повільна зйомка" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "ЛиÑÑ‚Ñ" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "У приміщенні" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Феєрверк" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "ПлÑж" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Під водою" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Сніг" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Діти Ñ– домашні улюбленці" + +#: src/canonmn.cpp:515 +msgid "Night SnapShot" +msgstr "Ðічний пейзаж" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Цифрове збільшеннÑ" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Мої кольори" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Статична картинка" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Інше" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Ðизький" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "ВиÑокий" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "н/д" + +#: src/canonmn.cpp:540 +msgid "Auto High" +msgstr "Ðвто виÑокий" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Типовий" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "ПлÑма" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "ПоÑередньо" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Оціночний" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "ЧаÑтковий" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +msgid "Center weighted" +msgstr "Центрально-зважений" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Ðевідомий" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Макро" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "Дуже близько" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "Закрити" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "Середній діапазон" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Далекий діапазон" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "ÐеÑкінченіÑть" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Вибір точки AF вручну" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Ðемає (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Ðвто-вибір" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Стрілка праворуч" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "По центру" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Стрілка ліворуч" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Ðвтовибір точки AF" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "ПроÑте Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ (авто)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Програма (P)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Пріоритет витримки (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Пріоритет діафрагми (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Ручний (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "A-DEP" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "M-DEP" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "Ðе Ñпрацював" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "ВикориÑтано" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Зовнішній Ñпалах" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Внутрішній Ñпалах" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "FP ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ другій шторці" + +#: src/canonmn.cpp:980 +msgid "FP sync used" +msgstr "FP ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтана" + +#: src/canonmn.cpp:991 +msgid "Normal AE" +msgstr "Ðормальний AE" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "AE блокуваннÑ" + +#: src/canonmn.cpp:994 +msgid "AE lock + exposure compensation" +msgstr "AE Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ + компенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "Без AE" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "Увімкн, лише знімок" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Точка AF" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Згладити" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "Ч/Б" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Ðетипова" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "ÐœÐ¾Ñ ÐºÐ¾Ð»Ñ–Ñ€Ð½Ð° інформаціÑ" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Ðа веÑÑŒ екран" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "sRAW1 (mRAW)" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "sRAW2 (sRAW)" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "ВлаÑний таймер" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +msgid "Self timer" +msgstr "Безпечний таймер" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "ЯкіÑть" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Режим Ñпалаху" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалаху" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +msgid "Drive Mode" +msgstr "Режим мотора" + +#: src/canonmn.cpp:1046 +msgid "Drive mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ \"У руÑÑ–\"" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Режим фокуÑу" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑу" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Розмір зображеннÑ" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "ПроÑтий режим" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Режим проÑтого зніманнÑ" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Цифрове збільшеннÑ" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Цифрове збільшеннÑ" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "КонтраÑÑ‚" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð°Ñту" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +msgid "Saturation" +msgstr "ÐаÑиченіÑть" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +msgid "Saturation setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "РізкіÑть" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾Ñті" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Режим чутливоÑті ISO" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÑƒÑ‚Ð»Ð¸Ð²Ð¾Ñті ISO" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Режим вимірюваннÑ" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Параметр режиму вимірюваннÑ" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Тип фокуÑу" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ фокуÑу" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Вибрана точка ÐФ" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Програма екÑпозиції" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Параметр режиму екÑпонуваннÑ" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Тип Лінзи" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Тип лінзи" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "Об’єктив" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"\"Довгі\" та \"короткі\" фокуÑні відÑтані об’єктива (у \"координаційних " +"одиницÑÑ…\") та \"координаційних одиницÑÑ…\" на мм" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Короткий фокуÑ" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Короткий фокуÑ" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "Координаційні одиниці" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "Координаційні одиниці" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "МакÑ. апертура" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "МакÑ. апертура" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Мінімальна Діафрагма" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Мінімальна діафрагма" + +#: src/canonmn.cpp:1069 +msgid "Flash Activity" +msgstr "ÐктивніÑть Ñпалаху" + +#: src/canonmn.cpp:1069 +msgid "Flash activity" +msgstr "ÐктивніÑть Ñпалаху" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Деталі Спалаху" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Деталі Ñпалаху" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "ТриваліÑть фокуÑуваннÑ" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€Ð¸Ð²Ð°Ð»Ð¾Ñті фокуÑуваннÑ" + +#: src/canonmn.cpp:1074 +msgid "AESetting" +msgstr "AE налаштуваннÑ" + +#: src/canonmn.cpp:1074 +msgid "AE setting" +msgstr "AE налаштуваннÑ" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "Ð¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐšÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "Ð¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Показувати Діафрагму" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "Показувати діафрагму" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "МаÑштабувати джерельну ширину" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "МаÑштабувати джерельну ширину" + +#: src/canonmn.cpp:1078 +msgid "Zoom Target Width" +msgstr "МаÑштабувати призначену ширину" + +#: src/canonmn.cpp:1078 +msgid "Zoom target width" +msgstr "МаÑштабувати призначену ширину" + +#: src/canonmn.cpp:1080 +msgid "Spot Metering Mode" +msgstr "Точковий Режим Виміру" + +#: src/canonmn.cpp:1080 +msgid "Spot metering mode" +msgstr "Точковий режим виміру" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Фотоефект" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Фотоефект" + +#: src/canonmn.cpp:1082 +msgid "Manual Flash Output" +msgstr "Ðалаштовувана потужніÑть Ñпалаху" + +#: src/canonmn.cpp:1082 +msgid "Manual flash output" +msgstr "Ðалаштовувана потужніÑть Ñпалаху" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Тон кольорів" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Тон кольору" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "ЯкіÑть відтінку SRAW" + +#: src/canonmn.cpp:1084 +msgid "SRAW quality" +msgstr "SRAW ÑкіÑть" + +#: src/canonmn.cpp:1086 +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Ðевідомі Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ Canon 1 tag" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Денне Ñвітло" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Хмарно" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "Лампа розжарюваннÑ" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +msgid "Fluorescent" +msgstr "ФлуореÑцентна лампа" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Чорно-біле" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Тінь" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "Ручна температура (Кельвін)" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "ПК ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ 1" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "ПК ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ 2" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "ПК ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ 3" + +#: src/canonmn.cpp:1109 +msgid "Daylight Fluorescent" +msgstr "Денне Ñвітло" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Інше 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Інше 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Інше 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "ПК ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ 4" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "ПК ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ 5" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Пріоритет затвору" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "ліворуч" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "центр" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "праворуч" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "ЧутливіÑть ISO ВикориÑтана" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "ЧутливіÑть ISO викориÑтана" + +#: src/canonmn.cpp:1152 +msgid "Measured EV" +msgstr "Вимір екÑпозиції EV" + +#: src/canonmn.cpp:1153 +msgid "Target Aperture" +msgstr "Діафрагма призначеннÑ" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Цільова швидкіÑть затвора" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Цільова швидкіÑть затвора" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Параметр баланÑу білого" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "ПоÑлідовніÑть" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "Ðомер поÑлідовноÑті (Ñкщо безперервний Ñпалах)" + +#: src/canonmn.cpp:1163 +msgid "AF Point Used" +msgstr "AF Точка ВикориÑтана" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "AF точка викориÑтана" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Ухил Ñпалаху" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "ВідÑтань до об’єкта" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "ВідÑтань до об’єкта (одиниці невідомі)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Розмір діафрагми" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті руху затвору" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "ШвидкіÑть затвору" + +#: src/canonmn.cpp:1172 +msgid "Measured EV 2" +msgstr "Вимір екÑпозиції EV 2" + +#: src/canonmn.cpp:1177 +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Тег невідомих налаштувань камери Canon 2" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "Зліва праворуч" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "Справа ліворуч" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Знизу догори" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Згори вниз" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ 2x2 (за годинниковою Ñтрілкою)" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Рамка панорами" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Ðомер кадру панорами" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "ÐапрÑмок панорами" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "ÐапрÑмок діафрагми" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð²" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñƒ довгої екÑпозиції" + +#: src/canonmn.cpp:1210 +msgid "Shutter Ae Lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð° автоекÑпозиції" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "Кнопки Затвора/Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾ÐµÐºÑпозиції" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»Ð°" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»Ð°" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +msgid "Exposure Level Increments" +msgstr "Ð—Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ñ€Ñ–Ð²Ð½Ñ ÐµÐºÑпозиції" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "Tv/Av та рівень екÑпозиції" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "AF ÐÑиÑтент" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "AF аÑиÑтент Ñвітла" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "ШвидкіÑть Ñинхронізації Ñпалаху у режимі Av" + +#: src/canonmn.cpp:1214 +msgid "Shutter speed in Av mode" +msgstr "ШвидкіÑть затвора у режимі Av" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "AEB поÑлідовніÑть" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "AEB поÑлідовніÑть/авто ÑкаÑуваннÑ" + +#: src/canonmn.cpp:1216 +msgid "Shutter Curtain Sync" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/canonmn.cpp:1216 +msgid "Shutter curtain sync" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "Лінзова AF кнопка зупинки" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "Кнопка зупинки об’єктива AF Fn. Switch" + +#: src/canonmn.cpp:1218 +msgid "Fill Flash Auto Reduction" +msgstr "Ðвтоматичне Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ð²Ð¿Ð»Ð¸Ð²Ñƒ заповнюючого Ñпалаху" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "Ðвтоматичне Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ð²Ð¿Ð»Ð¸Ð²Ñƒ заповнюючого Ñпалаху" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Кнопка меню Ðазад" + +#: src/canonmn.cpp:1219 +msgid "Menu button return position" +msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ меню Ðазад" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "Ð’Ñтановити функцію кнопки" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ñ— кнопки SET при зйомці" + +#: src/canonmn.cpp:1221 +msgid "Sensor Cleaning" +msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ°" + +#: src/canonmn.cpp:1221 +msgid "Sensor cleaning" +msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ°" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "СуміÑний екран" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "СуміÑний екран" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "СпуÑк затвора при відÑутноÑті картки пам’Ñті CF" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "СпуÑк затвора при відÑутноÑті картки пам’Ñті CF" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "Тег невідомої функції Canon Ñка налаштовуєтьÑÑ" + +#: src/canonmn.cpp:1236 +msgid "mid-right" +msgstr "поÑередині-праворуч" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "внизу" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "вгорі" + +#: src/canonmn.cpp:1240 +msgid "mid-left" +msgstr "поÑередині ліворуч" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "вгорі ліворуч" + +#: src/canonmn.cpp:1248 +msgid "upper-right" +msgstr "вгорі праворуч" + +#: src/canonmn.cpp:1252 +msgid "lower-left" +msgstr "внизу ліворуч" + +#: src/canonmn.cpp:1253 +msgid "lower-right" +msgstr "внизу праворуч" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Ширина зображеннÑ" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Ширина зображеннÑ" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "ВиÑота зображеннÑ" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "ВиÑота зображеннÑ" + +#: src/canonmn.cpp:1261 +msgid "Image Width As Shot" +msgstr "Кадрова ширина зображеннÑ" + +#: src/canonmn.cpp:1261 +msgid "Image width (as shot)" +msgstr "Ширина Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (Ñк у кадрі)" + +#: src/canonmn.cpp:1262 +msgid "Image Height As Shot" +msgstr "ВиÑота Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñк у кадрі" + +#: src/canonmn.cpp:1262 +msgid "Image height (as shot)" +msgstr "ВиÑота Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (Ñк у кадрі)" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡Ð¾Ðº ÐФ" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡Ð¾Ðº ÐФ" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡Ð¾Ðº ÐФ 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡Ð¾Ðº (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "Ðевідомий тег відомоÑтей про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "WB" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "Поштова картка" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Широкоекранний" + +#: src/canonmn.cpp:1293 +msgid "Medium Movie" +msgstr "Середній відеофрагмент" + +#: src/canonmn.cpp:1294 +msgid "Small Movie" +msgstr "Ðевеликий відеофрагмент" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "Ðа 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "Ðа 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "Ðа (shift AB)" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "Ðа (shift GM)" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Жовтий" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "ЖовтогарÑчий" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Червоний" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Зелений" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Синій" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Пурпуровий" + +#: src/canonmn.cpp:1334 +msgid "Bracket Mode" +msgstr "Режим вилки" + +#: src/canonmn.cpp:1335 +msgid "Bracket Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ñ€ÐµÐºÐµÑ‚Ð¸Ð½Ð³Ñƒ" + +#: src/canonmn.cpp:1336 +msgid "Bracket Shot Number" +msgstr "КількіÑть кадрів брекетингу" + +#: src/canonmn.cpp:1337 +msgid "Raw Jpg Quality" +msgstr "ЯкіÑть необробленого jpg" + +#: src/canonmn.cpp:1338 +msgid "Raw Jpg Size" +msgstr "Розмір необробленого jpg" + +#: src/canonmn.cpp:1340 +msgid "WB Bracket Mode" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у режимі брекетингу" + +#: src/canonmn.cpp:1341 +msgid "WB Bracket Value AB" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у режимі брекетингу AB" + +#: src/canonmn.cpp:1342 +msgid "WB Bracket Value GM" +msgstr "WB Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ñ€ÐµÐºÐµÑ‚Ð¸Ð½Ð³Ñƒ GM" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Ефект фільтруваннÑ" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +msgid "Toning Effect" +msgstr "Ефект тонуваннÑ" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "МакрозбільшеннÑ" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "МакрозбільшеннÑ" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "Зйомка у режимі контрольваної зйомки" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "Зйомка у режимі контрольваної зйомки" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "ФокуÑна відÑтань" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "ФокуÑна відÑтань" + +#: src/canonmn.cpp:1349 +msgid "Flash Exposure Lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ñ–Ñтю Ñпалаху" + +#: src/canonmn.cpp:1349 +msgid "Flash exposure lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ñ–Ñтю Ñпалаху" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "Ðевідомий тег відомоÑтей про файл Canon" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Стандартна" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "Ðайнижча" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "Ðайвища" + +#: src/canonmn.cpp:1381 +msgid "High Saturation" +msgstr "ВиÑока наÑиченіÑть" + +#: src/canonmn.cpp:1383 +msgid "Low Saturation" +msgstr "Ðизька наÑиченіÑть" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "CM набір 1" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "CM набір 2" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "КориÑтувачева 1" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "КориÑтувачева 2" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "КориÑтувачева 3" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "ПК 1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "ПК 2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "ПК 3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "Ðадійний" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +msgid "Monochrome" +msgstr "Чорно-біле" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Деталі Спалаху" + +#: src/canonmn.cpp:1404 +msgid "ToneCurve" +msgstr "Тональна крива" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "Крива тону" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "ЧаÑтота різкоÑті" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "ЧаÑтота різкоÑті" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "Датчик Ñ€Ñ–Ð²Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1407 +msgid "Sensor red level" +msgstr "Рівень червоного на датчику" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "Датчик Ñ€Ñ–Ð²Ð½Ñ Ñинього" + +#: src/canonmn.cpp:1408 +msgid "Sensor blue level" +msgstr "Рівень Ñинього на датчику" + +#: src/canonmn.cpp:1409 +msgid "WhiteBalanceRed" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾-червоного" + +#: src/canonmn.cpp:1409 +msgid "White balance red" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ Ð´Ð»Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾ каналу" + +#: src/canonmn.cpp:1410 +msgid "WhiteBalanceBlue" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾-Ñинього" + +#: src/canonmn.cpp:1410 +msgid "White balance blue" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ Ð´Ð»Ñ Ñинього каналу" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/canonmn.cpp:1412 +msgid "ColorTemperature" +msgstr "Температура кольору" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +msgid "Color Temperature" +msgstr "Кольорова температура" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "Стиль зображеннÑ" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Стиль зображеннÑ" + +#: src/canonmn.cpp:1414 +msgid "DigitalGain" +msgstr "Цифрове підÑиленнÑ" + +#: src/canonmn.cpp:1414 +msgid "Digital gain" +msgstr "Цифрове підÑиленнÑ" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "WBShiftAB" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "WBShift AB" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "WBShiftGM" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "WB Shift GM" + +#: src/canonmn.cpp:1417 +msgid "Unknown Canon Processing Info tag" +msgstr "Ðевідомий тег відомоÑтей про обробку Canon" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "Заголовок, зÑув" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "мітка" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "каталог" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "тип" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "розмір" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "зміщеннÑ" + +#: src/datasets.cpp:79 +msgid "(invalid)" +msgstr "(некоректний)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ IIM" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ IIM 2" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "ВерÑÑ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Двійкове чиÑло що ідентифікує верÑÑ–ÑŽ Ñтандарту Information Interchange " +"Model, ЧаÑтина I, що викориÑтовуєтьÑÑ Ð¿Ð¾Ñтачальником. Ðомера верÑій " +"призначаютьÑÑ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñми IPTC та NAA." + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "ПризначеннÑ" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" +"Дані призначені Ð´Ð»Ñ Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ— Ñлужб деÑких поÑтачальників, Ñкі вимагають " +"маршрутну інформацію Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ñ… рівнів OSI." + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Формат файла" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" +"Двійковий номер, що вказує формат файлу. Кожен формат файлу повинен бути " +"зареєÑтрований у IPTC або NAA з привлаÑненнÑм йому унікального номера. Ð¦Ñ " +"Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ð´Ð»Ñ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… до відповідної " +"ÑиÑтеми, а також Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб дати право ÑиÑтемі що приймає робити потрібні " +"дії Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸." + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" +"Двійковий номер, що показує конкретну верÑÑ–ÑŽ формату файлу, вказаного тегом " +"." + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "Ід. Ñлужби" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "Ідентифікує виробника Ñ– продукт" + +#: src/datasets.cpp:108 +msgid "Envelope Number" +msgstr "КількіÑть конвертів" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" +"Символи формують унікальний номер Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ— дати вказаної у тезі " +" та Ð´Ð»Ñ Ñлужби ідентифікатора, вказаного тегом " +". При збігу діапазонів номерів з однаковою датою та одним " +"й тим Ñамим Ñлужбовим ідентифікатором, запиÑу 2-9 повинні бути незмінні з " +"оригінальних. Це не призначено Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ñлідовної нумерації." + +#: src/datasets.cpp:117 +msgid "Product Id" +msgstr "Ід. продукту" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" +"ДозволÑÑ” поÑтачальнику розпізнавати підÑиÑтеми його Ñлужби. ВикориÑтовуєтьÑÑ " +"Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð¹Ð¼Ð°Ð½Ð½Ñ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ñ— інформації, на оÑнові Ñкої " +"робитьÑÑ Ð²Ð¸Ð±Ñ–Ñ€, Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ñ–Ñ Ñ‚Ð° інша обробка даних." + +#: src/datasets.cpp:122 +msgid "Envelope Priority" +msgstr "Пріоритет конверта" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" +"Визначає пріоритет обробки конверта а не редакційну терміновіÑть ( див. " +" тег). \"1\" вказує на найактуальніші , \"5\" Ñередньої " +"терміновоÑті та \"8\" найменш термінові копіÑ. Цифра \"9\" вказує на " +"КориÑтувача з певним пріоритетом. Цифра \"0\" зарезервовано Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ " +"у майбутньому." + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Дата надÑиланнÑ" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" +"ВикориÑтовує формат ССРРММДД (ÑторіччÑ, рік, міÑÑць, день) визначений у ISO " +"8601 Ð´Ð»Ñ Ñ–Ð½Ð´Ð¸ÐºÐ°Ñ†Ñ–Ñ— дати Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð°Ñ‚ÐµÑ€Ñ–Ð°Ð»Ñƒ Ñлужбою." + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Ð§Ð°Ñ Ð½Ð°Ð´ÑиланнÑ" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" +"ВикориÑтовує формат ГГХХСС:ГГХХ, де ГГХХСС міÑтить локальний Ñ‡Ð°Ñ Ñƒ годинах, " +"хвилинах та Ñекундах, а ГГХХ вказує на різніÑть локального чаÑу з " +"універÑальним координатним, охарактеризованим у ISO 8601. Цей Ñ‡Ð°Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” " +"мить Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð°Ñ‚ÐµÑ€Ñ–Ð°Ð»Ñƒ Ñлужбою." + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "Ðабір Ñимволів" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" +"Цей тег міÑтить одну иабо декілька можливоÑтей що викориÑтовуютьÑÑ Ð´Ð»Ñ " +"ÑповіщеннÑ, Ñ–Ð½Ñ–Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ або Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°ÐºÐ¾Ð´Ð¾Ð²Ð°Ð½Ð¸Ñ… груп Ñимволів. " +"МожливоÑті ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ³ÑƒÐ»ÑŽÑŽÑ‚ÑŒÑÑ Ñтандартом ISO 2022 й можуть міÑтити " +"перехідні Ñимволи ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° один або декілька графічних Ñимволів." + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "Унікальна назва об’єкта" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" +"Цей тег надає загальну унікальну ідентифікацію Ð´Ð»Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–Ð², " +"охарактеризовану у IIM, незалежну від поÑтачальників та форм ноÑіїв. " +"ПоÑтачальник має переконатиÑÑ Ð² унікальноÑті UNO. Об’єкти що мають однаковий " +"UNO ідентичні." + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "Ідентифікатор ARM" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" +"DataSet ідентифікує метод ідентифікації Abstract Relationship Method " +"identifier (ARM), Ñкий охарактеризовано у документі зареєÑтрованому " +"ініціатором ARM у організаціÑÑ… IPTC та NAA." + +#: src/datasets.cpp:156 +msgid "ARM Version" +msgstr "ВерÑÑ–Ñ ARM" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" +"Цей тег міÑтить двійковий номер, що предÑтавлÑÑ” конкретну верÑÑ–ÑŽ ARM, " +"вказану тегом ." + +#: src/datasets.cpp:170 +msgid "Record Version" +msgstr "ВерÑÑ–Ñ Ð·Ð°Ð¿Ð¸Ñу" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" +"Двійкове чиÑло, що виÑвлÑÑ” верÑÑ–ÑŽ моделі обміну інформацією, чаÑтина II, що " +"викориÑтовуєтьÑÑ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€Ð¾Ð¼. Ðомери верÑій привлаÑнюютьÑÑ IPTC та NAA " +"організаціÑми." + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Тип об'єкта" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" +"Тип об’єкту викориÑтовуєтьÑÑ, щоб розрізнÑти різні типи об’єктів у рамках " +"ММВ. Перша чаÑтина ÑвлÑÑ” Ñобою чиÑло, що предÑтавлÑÑ” мову незалежного " +"міжнародного поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Object Type двокрапка Ñепаратора.Друга чаÑтина, " +"Ñкщо вона викориÑтовуєтьÑÑ, Ñ” текÑтовим поданнÑм. КількіÑть типів об’єктів, " +"що ÑкладаютьÑÑ Ð· графічних Ñимволів з пробілами на английÑькій або мовою " +"Ñлужби, Ñк вказано у тезі " + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "ВлаÑтивоÑті об’єкту" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" +"Ðтрибут об’єкту визначає природу об’єкту незалежно віт Ñуб’єкту. Перша " +"чаÑтина - чиÑло, що ÑвлÑÑ” Ñобою незалежне від мови міжнародне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° " +"Ðтрибут об’єкту, з наÑтупним розділювачем- двокрапкою. Друга чаÑтина, Ñкщо " +"викориÑтовуєтьÑÑ, Ñ” текÑтовим поданнÑм ЧиÑла Ðтрибуту об’єкту, що " +"ÑкладаєтьÑÑ Ð· графічних Ñимволів Ð¿Ð»ÑŽÑ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ð¸ або на англійÑькій мові, або " +"мовою Ñлужби, Ñк вказано у тезі " + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Ðазва об'єкта" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" +"ВикориÑтовуєтьÑÑ Ñк Ñкорочене поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° об’єкт. Зміни у даних що Ñ–Ñнують, " +"такі Ñк оновлені Ñ–Ñторії або нові люди на фотографії, повинні бути визначені " +"у тезі ." + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Заголовок документа" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Змінити Ñтан" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "Стан об’єктних даних, відповідно практики провайдера." + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "Оновлена редакціÑ" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" +"Вказує тип оновленнÑ, Ñке даний об’єкт надає попередньому об’єкту. ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ " +"на попередній об’єкт вказуєтьÑÑ Ñ‚ÐµÐ³Ð°Ð¼Ð¸ та , у " +"відповідноÑті з інÑтрукціÑми поÑтачальника." + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "ТерміновіÑть" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" +"Вказує актуальніÑть редакції вміÑту й не обов’Ñзково пріоритет обробки (див. " +"тег ). \"1\" Ñ” найактуальнішим, \"5\" нормальний та \"8\" " +"позначає найменш актуальні копії." + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Об’єкт" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "Тематичний довідник міÑтить Ñтруктуровані Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€ÐµÐ´Ð¼ÐµÑ‚Ñƒ." + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "КатегоріÑ" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" +"Визначає предмет даних об’єктів, за думкою провайдера. СпиÑок категорій буде " +"підтримуватиÑÑ Ñ€ÐµÐ³Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¸Ð¼Ð¸ реєÑтрами, де це можливо, у протилежному " +"випадку поÑтачальником." + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "Додаткова категоріÑ" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" +"Додаткові категорії покликані уточнити вміÑÑ‚ даних об’єкту. Такі категорії " +"можуть бути обрані з перерахованих у тезі . У протилежному " +"випадку, Ð²ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… категорій залишаєтьÑÑ Ð·Ð° поÑтачальником." + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "Додаткові категорії" + +#: src/datasets.cpp:229 +msgid "Fixture Id" +msgstr "Світильник Id" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" +"Визначає чаÑто й передбачувано викориÑтовувані влаÑтивоÑті об’єкту. Такі " +"влаÑтивоÑті дозволÑють швидко знаходити та викликати об’єкти." + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Ключові Ñлова" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" +"ВикориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸Ñ… Ñлів. ОчікуєтьÑÑ, що поÑтачальник " +"різних типів даних, що відноÑÑтьÑÑ Ð´Ð¾ ÑутноÑті об’єктів, вказує ті Ñамі " +"ключові Ñлова, дозволÑючи ÑиÑтемі що приймає або підÑиÑтемам проводити пошук " +"по уÑім типам даних, що відноÑÑтьÑÑ Ð´Ð¾ матеріалів." + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Код міÑцерозташуваннÑ" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" +"Вказує код країни або географічного регіону, що має Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ð´Ð¾ об’єкту. " +"Якщо ISO має підходÑщий код у відповідноÑті з ISO 1366, тоді цей код буде " +"викориÑтано. У випадку, Ñкщо ISO 1366 не може надати правильний код Ð´Ð»Ñ " +"Ð²ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–ÑÑ†ÐµÑ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ країни, наприклад Ð´Ð»Ñ ÐºÐ¾Ñ€Ð°Ð±Ð»Ñ–Ð² у океані або " +"у коÑмоÑÑ–, тоді IPTC вкаже підходÑщий трех-Ñимвольний код, у відповідноÑті з " +"методикою ISO 1366 Ð´Ð»Ñ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚Ñ–Ð²." + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Ðазва міÑцÑ" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" +"Забазпечує повну, оголошувану назву країни / географічного розташуваннÑ, на " +"Ñкі поÑилаєтьÑÑ Ð²Ð¼Ñ–ÑÑ‚ об’єкту, у відповідноÑті з вказівками поÑтачальника." + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Дата випуÑку" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" +"Початкова дата, коли по визначенню поÑтачальника, об’єкт може бути " +"викориÑтано, вказуєтьÑÑ Ñƒ форматі ССРРММДД у відповідноÑті зі Ñтандартом ISO " +"6801." + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Ð§Ð°Ñ Ð²Ð¸Ð¿ÑƒÑку" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" +"Початковий чаÑ, коли по визначенню поÑтачальника, об’єкт може бути " +"викориÑтано, вказуєтьÑÑ Ñƒ форматі ГГХХСС:ГГХХ у відповідноÑті зі Ñтандартом " +"ISO 6801." + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Дата Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñтроку дії" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Кінцева дата, коли по визначенню поÑтачальника, об’єкт може бути " +"викориÑтано, вказуєтьÑÑ Ñƒ форматі ССРРММДД у відповідноÑті зі Ñтандартом ISO " +"6801." + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Термін дії" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" +"Кінцевий чаÑ, коли по визначенню поÑтачальника, об’єкт може бути " +"викориÑтано, вказуєтьÑÑ Ñƒ форматі ГГХХСС:ГГХХ у відповідноÑті зі Ñтандартом " +"ISO 6801." + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "ОÑобливі наÑтанови" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" +"Інші редакторÑькі інÑтрукції, що відноÑÑтьÑÑ Ð´Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… об’єкту, " +"такі Ñк Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‚Ð° попередженнÑ." + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "ÐаÑтанови" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "Рекомендована діÑ" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" +"Вказує тип дій, Ñкі цей об’єкт забезпечує до попереднього об’єкту. ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ " +"на попередній об’єкт відбуваєтьÑÑ Ð·Ð° допомогою тегів та " +", у відповідноÑті з практикою поÑтачальника." + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "Довідкова Ñлужба" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" +"Визначає ідентифікатор Ñлужби перед конвертуваннÑм до Ñкої відноÑитьÑÑ " +"поточний об’єкт." + +#: src/datasets.cpp:283 +msgid "Reference Date" +msgstr "Дата" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" +"Визначає дату перед конвертуваннÑм, до Ñкої відноÑитьÑÑ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ об’єкт." + +#: src/datasets.cpp:286 +msgid "Reference Number" +msgstr "Ðомер поÑиланнÑ" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" +"Визначає кількіÑть конвертів до ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ Ñких відноÑитьÑÑ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ " +"об’єкт." + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Дата ÑтвореннÑ" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Дата ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÐ»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ вміÑту об’єкту (не плутати з датою ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ " +"фізичного предÑтавленнÑ), вказуєтьÑÑ Ñƒ форматі ССРРММДД у відповідноÑті зі " +"Ñтандартом ISO 6801." + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Ð§Ð°Ñ ÑтвореннÑ" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" +"Ð§Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÐ»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ вміÑту об’єкту (не плутати з чаÑом ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ " +"фізичного предÑтавленнÑ), вказуєтьÑÑ Ñƒ форматі ГГХХСС:ГГХХ у відповідноÑті " +"зі Ñтандартом ISO 6801." + +#: src/datasets.cpp:301 +msgid "Digitization Date" +msgstr "Дата цифруваннÑ" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Дата ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð³Ð¾ предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… об’єкту, вказуєтьÑÑ Ñƒ форматі " +"ССРРММДД у відповідноÑті зі Ñтандартом ISO 6801." + +#: src/datasets.cpp:305 +msgid "Digitization Time" +msgstr "Ð§Ð°Ñ Ñ†Ð¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" +"Ð§Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð³Ð¾ предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… об’єкту, вказуєтьÑÑ Ñƒ форматі " +"ГГХХСС:ГГХХ у відповідноÑті зі Ñтандартом ISO 6801." + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Програма" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" +"Тип програмного забезпеченнÑ, що викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… " +"об’єкту." + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ забезпеченнÑ, вказаного у тезі ." + +#: src/datasets.cpp:316 +msgid "Object Cycle" +msgstr "Цикл об’єкту" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "ВикориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ð¸ÐºÐ»Ñƒ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… об’єкту." + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð°" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" +"МіÑтить Ñ–Ð¼â€™Ñ Ñ‚Ð²Ð¾Ñ€Ñ†Ñ Ð´Ð°Ð½Ð¸Ñ… об’єкту, наприклад, пиÑьменника, фотографа або " +"художника." + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Ðвтор" + +#: src/datasets.cpp:324 +msgid "By-line Title" +msgstr "ПоÑада автора" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" +"ПоÑада автора це поÑада Ñ‚Ð²Ð¾Ñ€Ñ†Ñ Ð°Ð±Ð¾ творців даних об’єкту. ВикориÑтовуєтьÑÑ " +"разом з підпиÑом автора або авторів." + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "МіÑто/Селище" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" +"Вказує міÑто, на Ñке поÑилаютьÑÑ Ð´Ð°Ð½Ñ– об’єкту, у відповідноÑті з методикою, " +"визначеною поÑтачальником." + +#: src/datasets.cpp:333 +msgid "Sub Location" +msgstr "Додаткові дані про міÑцерозташуваннÑ" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" +"Вказує Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ Ñередині міÑта, на Ñке поÑилаютьÑÑ Ð´Ð°Ð½Ñ– об’єкту, у " +"відповідноÑті з методикою, визначеною поÑтачальником." + +#: src/datasets.cpp:337 +msgid "Province State" +msgstr "ÐŸÑ€Ð¾Ð²Ñ–Ð½Ñ†Ñ–Ñ Ð°Ð±Ð¾ облаÑть" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" +"Вказує географічну облаÑть, на Ñку поÑилаютьÑÑ Ð´Ð°Ð½Ñ– об’єкту, у відповідноÑті " +"з методикою, визначеною поÑтачальником." + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "ОблаÑть/провінціÑ" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Код країни" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" +"Вказує код країни або оÑновного міÑцерозташуваннÑ, у Ñких було Ñтворено " +"інтелектуальний вміÑÑ‚ даних об’єкту, наприклад відзнÑто фотографію або " +"ÑталаÑÑ Ð¿Ð¾Ð´Ñ–Ñ. Якщо ISO код можливо визначити по Ñтандарту ISO 3166, тоді " +"потрібно викориÑтовувати його. Якщо ж код у відповідноÑті з ISO 3166 " +"визначити неможливо, наприклад Ð´Ð»Ñ ÐºÐ¾Ñ€Ð°Ð±Ð»Ñ–Ð² у океані або у коÑмоÑÑ–, тоді " +"IPTC привлаÑнює відповідний трех-Ñимвольний код у відповідноÑті з ISO 3166 " +"Ð´Ð»Ñ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚Ñ–Ð²." + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Ðазва країни" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" +"Вказує повну, друковану назву країни або іншого оÑновного міÑцезнаходженнÑ, " +"де було Ñтворено інтелектуальний вміÑÑ‚ даних об’єкту, оÑновуючиÑÑŒ на " +"вказівках поÑтачальника." + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Країна" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +msgid "Transmission Reference" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" +"Код, що предÑтавлÑÑ” Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ñ€Ð¸Ð³Ñ–Ð½Ð°Ð»ÑŒÐ½Ð¾Ñ— передачі, у відповідноÑті з " +"практикою поÑтачальника." + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Заголовок" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "Публіковані вÑтупи надаючи короткий оглÑд вміÑту об’єкту даних." + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "ПодÑка" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" +"Вказує поÑтачальника даних об’єкту, не обов’Ñзково Ñ‚Ð²Ð¾Ñ€Ñ†Ñ Ð°Ð±Ð¾ влаÑника." + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Джерело" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" +"Вказує початкового влаÑника інтелектуального вміÑту даних об’єкту. Це може " +"бути агентÑтво або предÑтавник агентÑтва або індивідуальна людина." + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "МіÑтить будь-Ñку потрібну інформацію про авторÑькі права." + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "ÐвторÑькі права" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Контакту" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" +"Вказує перÑону або організацію, Ñкі можуть надати додаткову інформацію по " +"даних об’єкту." + +#: src/datasets.cpp:384 src/properties.cpp:2101 +msgid "Caption" +msgstr "ПідпиÑ" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "ТекÑтовий Ð¾Ð¿Ð¸Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñƒ знімку" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "ОпиÑ" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Ðвтор текÑту" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" +"Вказує Ñ–Ð¼â€™Ñ Ð¿ÐµÑ€Ñони, що брала учаÑть у напиÑанні, редагуванні або зборі " +"даних об’єкту, або Ñ—Ñ… опиÑу." + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "РаÑтрований підпиÑ" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" +"МіÑтить раÑтеризовану верÑÑ–ÑŽ опиÑу даних об’єкту Ð´Ð»Ñ Ñ‚Ð¸Ñ… випадків, коли Ð¾Ð¿Ð¸Ñ " +"міÑтить Ñимволи, що не можуть бути показані." + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "Показує колірні компоненти зображеннÑ." + +#: src/datasets.cpp:399 +msgid "Image Orientation" +msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "Показує макет зображеннÑ." + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Мова" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" +"ОпиÑує оÑновну національну мову об’єкту у виглÑді 2-Ñ… Ñимвольного коду, у " +"відповідноÑті з ISO 639:1988. ÐÑ–Ñк не визначає й не припуÑкає ÑкеÑÑŒ " +"ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів, у той же Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ñ— " +"маршрутизації, наприклад з метою редагуваннÑ." + +#: src/datasets.cpp:408 +msgid "Audio Type" +msgstr "Тип звуку" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "Вказує тип звукового вміÑту." + +#: src/datasets.cpp:411 +msgid "Audio Rate" +msgstr "ЧаÑтота вибірки" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "Показує чаÑтоту ÑÐµÐ¼Ð¿Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÐ¾Ð·Ð°Ð¿Ð¸Ñу у Герцах" + +#: src/datasets.cpp:414 +msgid "Audio Resolution" +msgstr "ЯкіÑть звуку." + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "Вказує чаÑтотну роздільну здатніÑть звукового вміÑту." + +#: src/datasets.cpp:417 +msgid "Audio Duration" +msgstr "ТриваліÑть звуку" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "Показує триваліÑть звукозапиÑу." + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "Звуковий вихідний Ñигнал" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" +"Вказує вміÑÑ‚ кінцівки звукових даних об’єкту, у відповідноÑті з методикою " +"поÑтачальника." + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Формат еÑкізу" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" +"Двійкове чиÑло, що показує формат файлу з попереднім переглÑдом даних " +"об’єкту. Формат файлу повинен бути зареєÑтрований у організаціÑÑ… IPTC або " +"NAA з привлаÑненнÑм унікального номеру." + +#: src/datasets.cpp:429 src/properties.cpp:1276 +msgid "Preview Version" +msgstr "ВерÑÑ–Ñ ÐµÑкізу" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" +"Двійкове чиÑло, що показує певну верÑÑ–ÑŽ формату файлу попереднього переглÑду " +"даних об’єкту, вказану у тезі ." + +#: src/datasets.cpp:433 +msgid "Preview Data" +msgstr "Дані еÑкізу" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "Двійкові дані еÑкізу зображеннÑ." + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Ðекоректне)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +msgid "Unknown dataset" +msgstr "Ðевідомий набір даних" + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "Помилка %0: arg2=%2, arg3=%3, arg1=%1." + +#: src/error.cpp:56 +msgid "Success" +msgstr "Виконано уÑпішно" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "%1 не Ñ” зображеннÑм" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "Ðеправильне Ñ–Ð¼â€™Ñ Ð½Ð°Ð±Ð¾Ñ€Ñƒ даних `%1'" + +#: src/error.cpp:61 +msgid "Invalid record name `%1'" +msgstr "Ðеправильне Ñ–Ð¼â€™Ñ Ð·Ð°Ð¿Ð¸Ñу `%1'" + +#: src/error.cpp:62 +msgid "Invalid key `%1'" +msgstr "Ðекоректний ключ «%1»" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "Ðеправильне Ñ–Ð¼â€™Ñ Ñ‚ÐµÐ³Ñƒ або ifdId `%1', ifdId %2" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ вÑтановлено" + +#: src/error.cpp:65 +msgid "%1: Failed to open the data source: %2" +msgstr "%1: Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ джерело даних: %2" + +#: src/error.cpp:66 +msgid "%1: Failed to open file (%2): %3" +msgstr "%1: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл (%2): %3" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "%1: Файл міÑтить дані невідомого типу зображеннÑ" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "Пам’Ñть міÑтить дані невідомого типу зображеннÑ" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ %1 не підтримуютьÑÑ" + +#: src/error.cpp:70 +msgid "Failed to read image data" +msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані зображеннÑ" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "Це не Ñхоже на Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JPEG" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "%1: Ðеможливо відкрити файл Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу: %2" + +#: src/error.cpp:73 +msgid "%1: Failed to rename file to %2: %3" +msgstr "%1: Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ назву файлу на %2: %3" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "%1: Помилка передачі: %2" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "Помилка переноÑу ділÑнки пам’Ñті: %1" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… що вводÑтьÑÑ" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Ðеможливо запиÑати зображеннÑ" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "Дані що вводÑтьÑÑ Ð½Ðµ міÑÑ‚Ñть припуÑтиме зображеннÑ" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "Ðеправильний ifdId% 1" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Entry::setValue: Завелике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (мітка=%1, розмір=%2, запит=%3)" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "Entry::setDataArea: Завелике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (мітка=%1, розмір=%2, запит=%3)" + +#: src/error.cpp:82 +msgid "Offset out of range" +msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ð³Ð¾ зміщеннÑ" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "Ðепідтримувана зÑунута облаÑть даних" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "ÐеприпуÑтиме кодуваннÑ: `%1'" + +#: src/error.cpp:85 +msgid "Unsupported date format" +msgstr "Ðепідтримуваний формат дати" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "Ðепідтримуваний формат чаÑу" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "Ð—Ð°Ð¿Ð¸Ñ Ñƒ %1 Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ підтримуєтьÑÑ" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %1 у %2 Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ підтримуєтьÑÑ" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "Це не Ñхоже на Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ CRW" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "%1: не підтримуєтьÑÑ" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "ВідÑутні відомоÑті проÑтору імен Ð´Ð»Ñ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑу XMP `%1'" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" +"ВідÑутній зареєÑтрований Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñтору імен `%2', потрібний Ð´Ð»Ñ " +"адреÑи влаÑтивоÑті `%1'" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "Розмір %1 Ñегменту JPEG перевищує 65535 байтів" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "Ðеоброблені Xmpdatum %1 з %2" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "Ðеоброблений вузол XMP %1 з opt=%2" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "Помилка оÑÐ½Ð°Ñ‰ÐµÐ½Ð½Ñ XMP %1: %2" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "Помилка Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Lang Alt влаÑтивоÑті %1 з opt=%2" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "Помилка Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Lang Alt Ñпецифікатора %1 з opt=%2" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "Помилка ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Lang Alt влаÑтивоÑті %1" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "Помилка Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð¼â€™Ñ Ð²Ð»Ð°ÑтивоÑті за адреÑою %1, проÑтір імен %2" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "Схема імен %1 не зареєÑтровані у XMP Toolkit" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "ВідÑутній проÑтір імен зареєÑтрований Ð´Ð»Ñ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑу `%1'" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" +"ПÑевдоніми не підтримуютьÑÑ. Будь лаÑка, відправте цей XMP пакунок за " +"адреÑою ahuggel@gmx.net `%1', `%2', `%3'" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "Ðеправильний тип XmpText `% 1 '" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "Каталог TIFF %1 міÑтить забагато запиÑів" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "Декілька міток елемету TIFF маÑиву %1 у одній директорії" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "Мітка елементу TIFF маÑиву %1 має неправильний тип" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "%1 має неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ XMP типу `%2'" + +#: src/exiv2.cpp:213 +#, fuzzy +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "ÐвторÑьке право (C) 2004-2013 Andreas Huggel.\n" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" +"Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° - вільне програмне забезпеченнÑ; ви можете розповÑюджувати його " +"та/або\n" +"модифікувати його керуючиÑÑŒ УніверÑальною ÑуÑпільною ліцензією GNU,\n" +"оголошеною Фондом вільного програмного забезпеченнÑ; починаючи 2-ою верÑією\n" +"ліцензії, або (на ваш вибір) будь-Ñкою пізньою верÑією\n" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" +"Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° поширюєтьÑÑ Ð· надією, що вона буде кориÑною,\n" +"але БЕЗ БУДЬ-ЯКИХ ГÐРÐÐТІЙ; навіть без гарантії КОРИСÐОСТІ\n" +"чи ПРИДÐТÐОСТІ ДЛЯ ПЕВÐОЇ КОÐКРЕТÐОЇ МЕТИ. ДивітьÑÑ\n" +"GNU General Public License Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´ÐµÑ‚Ð°Ð»ÑŒÐ½Ñ–ÑˆÐ¾Ñ— інформації.\n" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" +"Ви повинні були отримати копію УніверÑальної ÑуÑпільної ліцензії\n" +"GNU з цією програмою; Ñкщо ні, тоді напишіть до Фонду вільного\n" +"програмного забезпеченнÑ, 51 Franklin Street, П’Ñтий поверх,\n" +"БоÑтон, MA 02110-1301 СШÐ\n" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "ВикориÑтаннÑ:" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" +"[ опції ] [ Ð´Ñ–Ñ ] файл ...\n" +"\n" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "Робота з метаданими зображень.\n" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" +"\n" +"Дії:\n" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" +" ad | adjust Замінити відмітки чаÑу Exif на заданий чаÑ.\n" +" Цій дії потрібен ключ -a time.\n" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr " pr | print ВивеÑти на екран метадані зображеннÑ.\n" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr " rm | delete Вилучити метадані зображень з Ñ—Ñ… файлів.\n" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" +" in | insert Ð’Ñтавити метадані з відповідних файлів *.exv.\n" +" ВикориÑтовуйте ключ -S Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ ÑуфікÑу вхідних файлів.\n" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" +" ex | extract ВитÑгти метадані у файли *.exv, *.xmp та файли еÑкізів.\n" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" +" mv | rename змінити назви файлів та/або вÑтановити відмітки\n" +" чаÑу у відповідноÑті з відміткою чаÑу ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· даних " +"Exif.\n" +" Формат файлу можна вÑтановити ключем -r, параметри відмітки\n" +" чаÑу контролюютьÑÑ ÐºÐ»ÑŽÑ‡Ð°Ð¼Ð¸ -t та -T.\n" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" +" mo | modify ЗаÑтоÑувати команди зміни (додати, вÑтановити, вилучити)\n" +" метаданих Exif та IPTC зображень або вÑтановити коментар " +"JPEG.\n" +" Потрібно викориÑтати у парі з ключем -c, -m або -M.\n" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" +" fi | fixiso Скопіювати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ISO з Nikon Makernote\n" +" у звичайне поле Exif.\n" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" +" fc | fixcom перетворити Exif коментар кориÑтувача (UNICODE) у UCS-2. " +"Поточне\n" +" ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути вказано за допомогою опції -n.\n" + +#: src/exiv2.cpp:262 +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Параметри:\n" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h вивеÑти це довідкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– вийти.\n" + +#: src/exiv2.cpp:264 +msgid " -V Show the program version and exit.\n" +msgstr " -V Показати верÑÑ–ÑŽ програми та вийти.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr " -v Виводити детальну інформацію при виконанні дій.\n" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" +" -q Ðе оголошувати Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки під Ñ‡Ð°Ñ " +"Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ (тихий режим).\n" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" +" -Q вÑтановити рівень Ñ–Ð½Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° d(налагодженнÑ), i(інформаціÑ), w" +"(попередженнÑ), e(помилки) або m(заглушити)\n" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr " -b Показати великі двійкові значеннÑ.\n" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr " -u Показ невідомих тегів.\n" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr " -g ключ - Вивід інформації лише Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ключа (пошуком).\n" + +#: src/exiv2.cpp:271 +#, fuzzy +msgid " -K key Only output info for this key (exact match).\n" +msgstr " -g ключ - Вивід інформації лише Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ключа (пошуком).\n" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" +" -n enc ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‰Ð¾ викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð®Ð½Ñ–ÐºÐ¾Ð´ Exif " +"коментарів кориÑтувачів.\n" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr " -k Зберігати тимчаÑові відмітки файлів (keep).\n" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" +" -t При дії 'rename' також виÑтавлÑти Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файлу (ÑкаÑовує опцію -" +"k).\n" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" +" -T При дії 'rename' лише виÑтавлÑти Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файлу,\n" +" не змінювати назву (ÑкаÑовує опцію -k).\n" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr " -F Ðе питати Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð½Ð° Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² (force).\n" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr " -F Ðе питати Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð½Ð° зміну назв файлів (Force).\n" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" +" -a Ð§Ð°Ñ Ðове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу у форматі [-]ГГ[:ХХ[:СС]]. Ð¦Ñ Ð¾Ð¿Ñ†Ñ–Ñ\n" +" викориÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ з дією 'adjust'.\n" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr " -Y рік Ðове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾ÐºÑƒ Ð´Ð»Ñ Ð´Ñ–Ñ— 'adjust'.\n" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr " -O міÑÑць Ðове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ñ–ÑÑÑ†Ñ Ð´Ð»Ñ Ð´Ñ–Ñ— 'adjust'.\n" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr " -D день Ðове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð½Ñ Ð´Ð»Ñ Ð´Ñ–Ñ— 'adjust'.\n" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr " -p режим Print -- режим Ð´Ð»Ñ Ð´Ñ–Ñ— 'вивід' (print). Можливі режими:\n" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr " s : вивеÑти Ð·Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… Exif (типово)\n" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" +" a : друк метаданих Exif, IPTC та XMP (ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ -Pkyct)\n" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr " t : інтерпретовані (перекладені) Exif дані (-PEkyct)\n" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr " v : незмінені Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Exif даних (-PExgnycv)\n" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr " h : 16-ричний дамп даних Exif (-PExgnycsh)\n" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr " i : Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… IPTC (-PIkyct)\n" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr " x : влаÑтивоÑті XMP (-PXkyct)\n" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr " c : коментар JPEG\n" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr " p : вивеÑти ÑпиÑок доÑтупних попередніх переглÑдів\n" + +#: src/exiv2.cpp:294 +#, fuzzy +msgid " S : print structure of image\n" +msgstr " v : звичайне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…\n" + +#: src/exiv2.cpp:295 +#, fuzzy +msgid " X : extract XMP from image\n" +msgstr " X : влаÑтивоÑті XMP\n" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" +" -P flgs: друк прапорців Ð´Ð»Ñ ÐºÑ€Ð°Ñ‰Ð¾Ð³Ð¾ контролю ÑпиÑку тегів ('print' " +"action)\n" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr " E : включити у ÑпиÑок теги Exif\n" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr " I : набори даних IPTC\n" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr " X : влаÑтивоÑті XMP\n" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr " x : друк колонки з номером тегу\n" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr " g : Ñ–Ð¼â€™Ñ Ð³Ñ€ÑƒÐ¿Ð¸\n" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr " k : ключ\n" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr " l : мітка тегу\n" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr " n : Ñ–Ð¼â€™Ñ Ñ‚ÐµÐ³Ñƒ\n" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr " y : тип\n" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr " c : кількіÑть компонентів (count)\n" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr " s : розмір у байтах\n" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr " v : звичайне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…\n" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr " t : інтерпретовані (перекладені) дані\n" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr " h : шіÑтнадцÑтиричний дамп даних\n" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr " -d tgt Цілі Ð´Ð»Ñ Ð´Ñ–Ñ— 'delete' що вилучаютьÑÑ. Можливі цілі:\n" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr " a : уÑÑ– підтримувані метадані (типово)\n" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr " e : розділ Exif\n" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr " t : лише Exif-еÑкіз\n" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr " i : дані IPTC\n" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr " x : пакунок XMP\n" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" +" -i tgt Цілі Ð´Ð»Ñ Ð´Ñ–Ñ— що вÑтавлÑютьÑÑ 'insert'. Можливі цілі\n" +" ті Ñамі що й Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° -d Ð¿Ð»ÑŽÑ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€:\n" +" X : Ð’Ñтавити метадані з Ñупутнього файлу XMP <файл>.xmp\n" +" Можна вÑтавлÑти лише еÑкізи у форматі JPEG, й Ñ—Ñ… Ñ–Ð¼â€™Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð¾ мати " +"виглÑд\n" +" -thumb.jpg\n" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" +" -e tgt ВитÑгнути ціл(ÑŒ/Ñ–) Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ 'extract'. Можливі цілі\n" +" такі ж Ñк Ñ– Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -d, Ð¿Ð»ÑŽÑ Ñ†Ñ–Ð»ÑŒ Ð´Ð»Ñ Ð²Ð¸Ñ‚ÑгуваннÑ\n" +" попередній переглÑд зображень Ñ– зміна Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ XMP " +"sidecar:\n" +" p[[, ...]] : ВитÑгнути попередні зображеннÑ.\n" +" X: ВитÑгнути метадані Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñƒ XMP sidecar .xmp\n" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" +" -r fmt Формат імені файлу Ð´Ð»Ñ Ð´Ñ–Ñ— 'rename'. РÑдок формату\n" +" Ñлідує правилам з strftime(3). ПідтримуютьÑÑ Ð½Ð°Ñтупні ключові " +"Ñлова:\n" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr " :basename: - оригінальне Ñ–Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ без розширеннÑ\n" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr " :dirname: - Ñ–Ð¼â€™Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ, що міÑтить оригінальний файл\n" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr " :parentname: - Ñ–Ð¼â€™Ñ Ð±Ð°Ñ‚ÑŒÐºÑ–Ð²Ñького каталогу\n" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr " Типовим форматом файлів Ñ” " + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr " -c txt JPEG Ñ€Ñдок ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð´Ð»Ñ Ð²Ñтавки у зображеннÑ\n" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" +" m file Керуючий файл Ð´Ð»Ñ Ð´Ñ–Ñ— modify. Формат команд:\n" +" set|add|del <ключ> [[<тип>] <значеннÑ>].\n" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" +" -M cmd Керуючий Ñ€Ñдок Ð´Ð»Ñ Ð´Ñ–Ñ— modify. Формат\n" +" команд такий Ñамий Ñк Ð´Ð»Ñ Ñ€Ñдків керуючого файлу.\n" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" +" -l каталог Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ (каталог) файлів що вÑтавлÑютьÑÑ Ð°Ð±Ð¾ " +"витÑгуютьÑÑ.\n" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" +" -S .suf ВикориÑтовувати ÑÑƒÑ„Ñ–ÐºÑ .suf Ð´Ð»Ñ Ð¾Ñ€Ð¸Ð³Ñ–Ð½Ð°Ð»ÑŒÐ½Ð¸Ñ… файлів з командою " +"insert.\n" +"\n" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +msgid "Option" +msgstr "Параметр" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "вимагає аргумент\n" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "Ðерозпізнаний параметр" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "виклик getopt повернув неÑподіваний код Ñимволу" + +#: src/exiv2.cpp:410 +msgid "Invalid argument" +msgstr "Ðеправильний аргумент" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Ðеправильний аргумент" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "Ðадлишкові опції проігноровано" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "ІгноруєтьÑÑ Ð½Ð°Ð´Ð»Ð¸ÑˆÐºÐ¾Ð²Ð° Ð¾Ð¿Ñ†Ñ–Ñ -a" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "Помилка при розборі аргументу опції -a" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "Параметр -a неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "Помилка обробки" + +#: src/exiv2.cpp:535 +msgid "option argument" +msgstr "аргумент опції" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "Ðерозпізнаний режим друку" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "ІгноруєтьÑÑ Ð½Ð°Ð´Ð»Ð¸ÑˆÐºÐ¾Ð²Ð° Ð¾Ð¿Ñ†Ñ–Ñ -p" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "Параметр -p неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "Ðерозпізнаний об’єкт друку" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "ІгноруєтьÑÑ Ð½Ð°Ð´Ð»Ð¸ÑˆÐºÐ¾Ð²Ð° Ð¾Ð¿Ñ†Ñ–Ñ -P" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "Параметр -P неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "Параметр -d неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "Параметр -e неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "Параметр -i неÑуміÑний з попереднім параметром\n" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ adjust неÑуміÑна з заданими опціÑми\n" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ Ð´Ñ€ÑƒÐºÑƒ неÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð½ÐµÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ Ð²Ð¸Ñ‚ÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ Ð²Ñтавки неÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ Ð·Ð¼Ñ–Ð½Ð¸ назви неÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ Ð·Ð¼Ñ–Ð½Ð¸ неÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ fixiso неÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "Ð”Ñ–Ñ fixcom неÑуміÑна з заданими параметрами\n" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "Має бути вказана діÑ\n" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "Ð”Ð»Ñ Ð´Ñ–Ñ— adjust потрібна Ñк мінімум одна з опцій -a, -Y, -O або -D\n" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "Ð”Ð»Ñ Ð´Ñ–Ñ— modify потрібна Ñк мінімум одна з опцій -c, -m або -M\n" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "Потрібно вказати хоча б один файл\n" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "Помилка при розборі аргументів опції -m\n" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "Помилка при розборі аргументів опції -M\n" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" +"Параметр -l може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ з діÑми витÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° вÑтавки\n" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "Параметр -S може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ з дією вÑтавки\n" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "Параметр -t може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ з дією зміни назви\n" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "Параметр -t може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ з дією зміни назви\n" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "Ðерозпізнано " + +#: src/exiv2.cpp:1039 +msgid "target" +msgstr "ціль" + +#: src/exiv2.cpp:1065 +msgid "Invalid preview number" +msgstr "Ðеправильний номер попереднього переглÑду" + +#: src/exiv2.cpp:1097 +msgid "Failed to open command file for reading\n" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ керуючий файл Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ\n" + +#: src/exiv2.cpp:1110 +msgid "line" +msgstr "Ñ€Ñдок" + +#: src/exiv2.cpp:1133 +msgid "-M option" +msgstr "-M параметр" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Ðекоректний командний Ñ€Ñдок" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Ðекоректна команда" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Ðекоректний ключ" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Ðекоректний командний Ñ€Ñдок" + +#: src/fujimn.cpp:62 +msgid "Soft mode 1" +msgstr "М'Ñкий режим 1" + +#: src/fujimn.cpp:63 +msgid "Soft mode 2" +msgstr "М'Ñкий режим 2" + +#: src/fujimn.cpp:65 +msgid "Hard mode 1" +msgstr "ЖорÑткий режим 1" + +#: src/fujimn.cpp:66 +msgid "Hard mode 2" +msgstr "ЖорÑткий режим 2" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "ФлуореÑцентна лампа (денне Ñвітло)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "ФлуореÑцентна лампа (тепле біле)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "ФлуореÑцентна лампа (прохолодне біле)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "Лампа накалюваннÑ" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +msgid "None (black & white)" +msgstr "Ðемає (чорно-біле)" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ «Червоних очей»" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Ðічне оÑвітленнÑ" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +msgid "Program AE" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Ðатуральне Ñвітло" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "ÐнтирозмиваннÑ" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "Захід" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Музей" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Вечірка" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Квітка" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "ТекÑÑ‚" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Ðатуральне Ñвітло & Ñпалах" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +msgid "Aperture-priority AE" +msgstr "Пріоритет-діафрагми AE" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +msgid "Shutter speed priority AE" +msgstr "Пріоритет витримки швидкіÑть AE" + +#: src/fujimn.cpp:142 +msgid "No flash & flash" +msgstr "Без Ñпалаху Ñ– Ñпалах" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "ХромуваннÑ" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Широкий" + +#: src/fujimn.cpp:160 +msgid "F0/Standard" +msgstr "F0/Стандартний" + +#: src/fujimn.cpp:161 +msgid "F1/Studio portrait" +msgstr "F1/Студійний портрет" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "F2/Fujichrome" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "F3/Розширений Ñтудійний портрет" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "F4/Velvia" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Ðвто (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Без обробки" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Стандартний (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Широкоекранний режим 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Широкоекранний режим 2 (400%)" + +#: src/fujimn.cpp:174 +msgid "Film simulation mode" +msgstr "Режим імітації плівки" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "ВерÑÑ–Ñ" + +#: src/fujimn.cpp:180 +msgid "Fujifilm Makernote version" +msgstr "ВерÑÑ–Ñ Fujifilm Makernote" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" +"Це унікальный номер, що міÑтить дату вробництва, але не той Ñамий, що " +"вказано на корпуÑÑ– камери." + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑкоÑті зображеннÑ" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Колір" + +#: src/fujimn.cpp:196 +msgid "Chroma saturation setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті кольорів" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Тон" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñпалаху" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "потужніÑть Ñпалаху" + +#: src/fujimn.cpp:205 +msgid "Flash firing strength compensation setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿ÐµÐ½Ñації ÑÐ¿Ñ€Ð°Ñ†ÑŒÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалаху" + +#: src/fujimn.cpp:208 +msgid "Macro mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Макро" + +#: src/fujimn.cpp:211 +msgid "Focusing mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ фокуÑуваннÑ" + +#: src/fujimn.cpp:216 +msgid "Slow Sync" +msgstr "Уповільнена Ñинхр." + +#: src/fujimn.cpp:217 +msgid "Slow synchro mode setting" +msgstr "Повільна ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ режиму" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +msgid "Picture Mode" +msgstr "Режим зображеннÑ" + +#: src/fujimn.cpp:220 +msgid "Picture mode setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "Безперервна зйомка або Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ брекетингу" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +msgid "Sequence Number" +msgstr "ЧиÑло з поÑлідовноÑті" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +msgid "Sequence number" +msgstr "ЧиÑло з поÑлідовноÑті" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "Колір FinePix" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ Fuji FinePix" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ розмитоÑті" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ розмиттÑ" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ фокуÑ" + +#: src/fujimn.cpp:241 +msgid "Auto Focus warning status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ автофокуÑ" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ витримку" + +#: src/fujimn.cpp:244 +msgid "Auto exposure warning status" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ автоматичну витримку" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "Динамічний діапазон" + +#: src/fujimn.cpp:247 +msgid "Dynamic range" +msgstr "Динамічний діапазон" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Режим фільму" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Режим фільму" + +#: src/fujimn.cpp:252 +msgid "Dynamic Range Setting" +msgstr "Параметр динамічного діапазону" + +#: src/fujimn.cpp:253 +msgid "Dynamic range settings" +msgstr "Параметри динамічного діапазону" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "Динамічні Межі Розробки" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "Динамічні межі розробки" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Мінімальна фокуÑна відÑтань" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Мінімальна фокуÑна відÑтань" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "МакÑимальна діафрагма при мінімальному фокуÑÑ–" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "МакÑимальна діафрагма при мінімальному фокуÑÑ–" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "МакÑимальна діафрагма при макÑимальному фокуÑÑ–" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "МакÑимальна діафрагма при макÑимальному фокуÑÑ–" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Файлове джерело" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Файлове джерело" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Ðомер замовленнÑ" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Ðомер замовленнÑ" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "КількіÑть кадрів" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "КількіÑть кадрів" + +#: src/fujimn.cpp:281 +msgid "Unknown FujiMakerNote tag" +msgstr "Ðевідомий тег FujiMakerNote" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Ðатуральний колір" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +msgid "Vivid Color" +msgstr "ЯÑкравий колір" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +msgid "Solarization" +msgstr "ВигораннÑ" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "AdobeRGB" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Природній" + +#: src/minoltamn.cpp:64 +msgid "Natural sRGB" +msgstr "Ðатуральний sRGB" + +#: src/minoltamn.cpp:65 +msgid "Natural+ sRGB" +msgstr "Ðатуральний+ sRGB" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Вечір" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Ðічний портрет" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +msgid "Super Fine" +msgstr "Дуже добре" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "ВиÑока ÑкіÑть" + +#: src/minoltamn.cpp:90 +msgid "Makernote Version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "РÑдок 'MLT0' (не нуль-термінований)" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (Std Old)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Стандартні параметри камери (ЗаÑтарілі моделі камер D5, D7, S304 та S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (Std New)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "Стандартні параметри камери (Ðові моделі камер D7u, D7i та D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (Ð´Ð»Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ– Dynax 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Дані Ñтабілізації зображеннÑ" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Дані Ñтабілізації зображеннÑ" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "ВідомоÑті про Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ Ð´Ð»Ñ A100" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "ВідомоÑті про Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ Ð´Ð»Ñ Sony DSLR-A100" + +#: src/minoltamn.cpp:111 +msgid "Compressed Image Size" +msgstr "СтиÑнений розмір зображеннÑ" + +#: src/minoltamn.cpp:112 +msgid "Compressed image size" +msgstr "СтиÑнений розмір зображеннÑ" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "ЕÑкіз Jpeg 640x480 пікÑелів" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +#, fuzzy +msgid "Thumbnail Offset" +msgstr "Мініатюри" + +#: src/minoltamn.cpp:118 +#, fuzzy +msgid "Offset of the thumbnail" +msgstr "Розмір еÑкізу" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +msgid "Thumbnail Length" +msgstr "Довжина еÑкізу" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Розмір еÑкізу" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +msgid "Scene Mode" +msgstr "Режим Ñцени" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Режим кольорів" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Режим кольорів" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "ЯкіÑть зображеннÑ" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +msgid "Flash Exposure Compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñпалаху" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +msgid "Flash exposure compensation in EV" +msgstr "ЕкÑпокомпенÑÐ°Ñ†Ñ–Ñ Ñпалаху у EV" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "Модель телеконвертора" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "Ð—Ð°Ð¿Ð¸Ñ RAW+JPG" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "Ð—Ð°Ð¿Ð¸Ñ RAW та JPG-файлів" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð—Ð¾Ð½Ð¸" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð½Ð¸" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Кольорова температура" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +msgid "Lens ID" +msgstr "Ідентифікатор об'єктива" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "Ідентифікатор об’єктиву" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +msgid "Color Compensation Filter" +msgstr "Фільтр компенÑації кольору" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" +"Фільтр КомпенÑації Кольору: від’ємні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ - зелений, плюÑові - малиновий" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +msgid "White Balance Fine Tune" +msgstr "Точне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +msgid "White Balance Fine Tune Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" + +#: src/minoltamn.cpp:168 +msgid "Image Stabilization A100" +msgstr "Ð¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ A100" + +#: src/minoltamn.cpp:169 +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Ð¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ Sony DSLR-A100" + +#: src/minoltamn.cpp:173 +msgid "Camera Settings (5D)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (5D)" + +#: src/minoltamn.cpp:174 +msgid "Camera Settings (for Dynax 5D model)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (Ð´Ð»Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ– Dynax 5D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "Print IM" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +msgid "PrintIM information" +msgstr "ВідомоÑті PrintIM" + +#: src/minoltamn.cpp:183 +msgid "Camera Settings (Z1)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (Z1)" + +#: src/minoltamn.cpp:184 +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (Ð´Ð»Ñ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ Z1, DImage X та F100)" + +#: src/minoltamn.cpp:188 +msgid "Unknown Minolta MakerNote tag" +msgstr "Ðевідомий тег Minolta MakerNote" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Пріоритет діафрагми" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Пріоритет затвору" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +msgid "Fill flash" +msgstr "Спалах" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +msgid "Rear flash sync" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Бездротовий" + +#: src/minoltamn.cpp:224 +msgid "Fluorescent 2" +msgstr "ФлуореÑцентна лампа 2" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Повний розмір" + +#: src/minoltamn.cpp:243 +msgid "Super fine" +msgstr "Супер чудовий" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "ЕкÑтра чудовий" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Окремий кадр" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "ÐвтоÑпуÑк" + +#: src/minoltamn.cpp:255 +msgid "Bracketing" +msgstr "Ðвтовилка" + +#: src/minoltamn.cpp:256 +msgid "Interval" +msgstr "Інтервал" + +#: src/minoltamn.cpp:257 +msgid "UHS continuous" +msgstr "Безперервний UHS (Дуже Велика ШвидкіÑть)" + +#: src/minoltamn.cpp:258 +msgid "HS continuous" +msgstr "Безперервний HS (Велика ШвидкіÑть)" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +msgid "Multi-segment" +msgstr "Мульти-Ñегмент" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "Середній відноÑно центру" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "Електронне збільшеннÑ" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +msgid "Top" +msgstr "Верхнє" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +msgid "Top-right" +msgstr "Вгорі праворуч" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +msgid "Bottom-right" +msgstr "Внизу праворуч" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +msgid "Bottom" +msgstr "Ðижнє" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +msgid "Bottom-left" +msgstr "Внизу ліворуч" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +msgid "Top-left" +msgstr "Вгорі ліворуч" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "ЖорÑткий" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +msgid "Soft" +msgstr "М’Ñкий" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Ðічний портрет" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Спортивні дії" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "Покадровий фільм" + +#: src/minoltamn.cpp:349 +msgid "Standard form" +msgstr "Стандартна форма" + +#: src/minoltamn.cpp:350 +msgid "Data form" +msgstr "Форма даних" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Ðатуральний колір" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Чорно-біле" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "ЯÑкравий колір" + +#: src/minoltamn.cpp:364 +msgid "No zone" +msgstr "Ðемає зони" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "Центр зони (горизонтальна орієнтаціÑ)" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "Центр зони (вертикальна орієнтаціÑ)" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Ліва зона" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Права зона" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Ðвтоматичне фокуÑуваннÑ" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "Широкий Ñ„Ð¾ÐºÑƒÑ (нормальний)" + +#: src/minoltamn.cpp:380 +msgid "Spot focus" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "ЕкÑпозиціÑ" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Фільтр" + +#: src/minoltamn.cpp:393 +msgid "Not embedded" +msgstr "Ðе вбудований" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "Вбудований" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "ТекÑÑ‚ + ID#" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "ADI (СиÑтема виміру Ñвітла Ñпалаху)" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "Попередній Ñпалах TTL" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Ручне ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалахом" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Режим екÑпозиції" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Режим Ñпалаху" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +msgid "Drive mode" +msgstr "Режим мотора" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ISO" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Ð§Ð°Ñ ÐµÐºÑпозиції" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +msgid "FNumber" +msgstr "ЧиÑло F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +msgid "The F-Number" +msgstr "Діафрагмове чиÑло" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +msgid "Macro Mode" +msgstr "Макрорежим" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "Крок брекетингу" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "Крок брекетингу" + +#: src/minoltamn.cpp:532 +msgid "Interval Length" +msgstr "Довжина інтервалу" + +#: src/minoltamn.cpp:533 +msgid "Interval length" +msgstr "Довжина інтервалу" + +#: src/minoltamn.cpp:535 +msgid "Interval Number" +msgstr "КількіÑть інтервалів" + +#: src/minoltamn.cpp:536 +msgid "Interval number" +msgstr "КількіÑть інтервалів" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "ФокуÑна відÑтань" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "ФокуÑна відÑтань" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +msgid "Flash Fired" +msgstr "Спалах" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +msgid "Flash fired" +msgstr "Спалах Ñпрацював" + +#: src/minoltamn.cpp:547 +msgid "Minolta Date" +msgstr "Дата Minolta" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "Дата Minolta" + +#: src/minoltamn.cpp:550 +msgid "Minolta Time" +msgstr "Ð§Ð°Ñ Minolta" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "Ð§Ð°Ñ Minolta" + +#: src/minoltamn.cpp:556 +#, fuzzy +msgid "File Number Memory" +msgstr "Ðомер файла" + +#: src/minoltamn.cpp:557 +#, fuzzy +msgid "File number memory" +msgstr "Ðомер файла" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Ðомер оÑтаннього зображеннÑ" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Ðомер оÑтаннього зображеннÑ" + +#: src/minoltamn.cpp:562 +msgid "Color Balance Red" +msgstr "Колірний Ð±Ð°Ð»Ð°Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾" + +#: src/minoltamn.cpp:563 +msgid "Color balance red" +msgstr "Колірний Ð±Ð°Ð»Ð°Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾" + +#: src/minoltamn.cpp:565 +msgid "Color Balance Green" +msgstr "Колірний Ð±Ð°Ð»Ð°Ð½Ñ Ð·ÐµÐ»ÐµÐ½Ð¾Ð³Ð¾" + +#: src/minoltamn.cpp:566 +msgid "Color balance green" +msgstr "Колірний Ð±Ð°Ð»Ð°Ð½Ñ Ð·ÐµÐ»ÐµÐ½Ð¾Ð³Ð¾" + +#: src/minoltamn.cpp:568 +msgid "Color Balance Blue" +msgstr "Колірний Ð±Ð°Ð»Ð°Ð½Ñ Ñинього" + +#: src/minoltamn.cpp:569 +msgid "Color balance blue" +msgstr "Колірний Ð±Ð°Ð»Ð°Ð½Ñ Ñинього" + +#: src/minoltamn.cpp:580 +msgid "Subject Program" +msgstr "Предмет Програми" + +#: src/minoltamn.cpp:581 +msgid "Subject program" +msgstr "Предмет програми" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Параметри IS0" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Параметр ISO" + +#: src/minoltamn.cpp:589 +msgid "Minolta Model" +msgstr "Модель Minolta" + +#: src/minoltamn.cpp:590 +msgid "Minolta model" +msgstr "Модель Minolta" + +#: src/minoltamn.cpp:592 +msgid "Interval Mode" +msgstr "Режим інтервалу" + +#: src/minoltamn.cpp:593 +msgid "Interval mode" +msgstr "Режим інтервалу" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Ðазва теки" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Ðазва теки" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Режим кольору" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Фільтр кольорів" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Фільтр кольорів" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Чорно-білий фільтр" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Чорно-білий фільтр" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +msgid "Internal Flash" +msgstr "Вбудований Ñпалах" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "ЯÑкравіÑть" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/minoltamn.cpp:614 +#, fuzzy +msgid "Spot focus point X" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/minoltamn.cpp:617 +#, fuzzy +msgid "Spot focus point Y" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Ширина Зони ФокуÑу" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Ширина зони фокуÑу" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Режим фокуÑу" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Зона фокуÑуваннÑ" + +#: src/minoltamn.cpp:628 +#, fuzzy +msgid "DEC Switch Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð²Ñ‚Ð¾Ñ„Ð¾ÐºÑƒÑу" + +#: src/minoltamn.cpp:629 +#, fuzzy +msgid "DEC switch position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/minoltamn.cpp:631 +msgid "Color Profile" +msgstr "Профіль кольорів" + +#: src/minoltamn.cpp:632 +msgid "Color profile" +msgstr "Профіль кольорів" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +#, fuzzy +msgid "Data Imprint" +msgstr "Дамп даних" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +#, fuzzy +msgid "Flash Metering" +msgstr "Параметри Ñпалаху" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +#, fuzzy +msgid "Flash metering" +msgstr "Параметри Ñпалаху" + +#: src/minoltamn.cpp:642 +msgid "Unknown Minolta Camera Settings tag" +msgstr "Ðевідомий тег налаштувань камери Minolta" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Кельвін" + +#: src/minoltamn.cpp:695 +msgid "Single-shot AF" +msgstr "Покадрова ÐФ" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +msgid "Continuous AF" +msgstr "Безперервна ÐФ" + +#: src/minoltamn.cpp:698 +msgid "Automatic AF" +msgstr "Ðвтоматична ÐФ" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Ðатуральний)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Ðатуральний+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "Горизонтально (норма)" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "Обернути на 90° за г. Ñтр." + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "Обернути на 270° за г. Ñтр." + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Точки ÐФ" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Точки ÐФ" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "ПроÑтір кольорів" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "ПроÑтір кольорів" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "Відтінок" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "ОбертаннÑ" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Ðомер зображеннÑ" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñƒ" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ñ–Ð»Ñнок Увімк" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ñ–Ð»Ñнок увімк" + +#: src/minoltamn.cpp:822 +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Ðевідомий тег налаштувань камери Minolta 7D" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +msgid "Night View/Portrait" +msgstr "Ðічна зйомка/Портрет" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "200 (ВиÑоке Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð”Ñ–Ð»Ñнок)" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "80 (Ðизьке Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð”Ñ–Ð»Ñнок)" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "Adobe RGB (ICC)" + +#: src/minoltamn.cpp:918 +msgid "Central" +msgstr "У центрі" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "Вгору" + +#: src/minoltamn.cpp:920 +msgid "Up right" +msgstr "Вгорі праворуч" + +#: src/minoltamn.cpp:922 +msgid "Down right" +msgstr "Знизу праворуч" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "Вниз" + +#: src/minoltamn.cpp:924 +msgid "Down left" +msgstr "Знизу ліворуч" + +#: src/minoltamn.cpp:926 +msgid "Up left" +msgstr "Вгорі ліворуч" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Вибрані" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "Природній+" + +#: src/minoltamn.cpp:949 +msgid "Wind Scene" +msgstr "Вітер Ñцена" + +#: src/minoltamn.cpp:950 +msgid "Evening Scene" +msgstr "Вечір Ñцена" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "ДілÑнка фокуÑуваннÑ" + +#: src/minoltamn.cpp:1036 +#, fuzzy +msgid "Exposure Revision" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +msgid "Rotation2" +msgstr "ОбертаннÑ2" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "Кінець картинки" + +#: src/minoltamn.cpp:1063 +msgid "Exposure Manual Bias" +msgstr "Ручна компенÑÐ°Ñ†Ñ–Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸" + +#: src/minoltamn.cpp:1064 +msgid "Exposure manual bias" +msgstr "Ручна компенÑÐ°Ñ†Ñ–Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Режим ÐФ" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Режим ÐФ" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "Ðевідомий тег налаштувань камери Minolta 5D" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "ÐвтоÑпуÑк 10 Ñек" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "ÐвтоÑпуÑк 2 Ñек" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +msgid "White Balance Bracketing Low" +msgstr "Ðизький брекетинг баланÑу білого" + +#: src/minoltamn.cpp:1105 +msgid "White Balance Bracketing High" +msgstr "ВиÑокий брекетинг баланÑу білого" + +#: src/minoltamn.cpp:1106 +#, fuzzy +msgid "Single-frame Bracketing Low" +msgstr "Покадровий брекетинг" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Безперервний брекетинг" + +#: src/minoltamn.cpp:1108 +#, fuzzy +msgid "Single-frame Bracketing High" +msgstr "Покадровий брекетинг" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Безперервний брекетинг" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "Додатково" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +msgid "Continuous Bracketing" +msgstr "Безперервний брекетинг" + +#: src/minoltamn.cpp:1156 +msgid "Single-Frame Bracketing" +msgstr "Покадровий брекетинг" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +msgid "White Balance Bracketing" +msgstr "Брекетинг баланÑу білого" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "Шаблон" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +msgid "Color Temperature/Color Filter" +msgstr "Колірна температура / Колірний фільтр" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Температура" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "Ð’Ñтановити" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "Гаразд" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "Помилка" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° інформаціÑ" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Лише зображеннÑ" + +#: src/minoltamn.cpp:1234 +msgid "Image and Histogram" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° гіÑтограма" + +#: src/minoltamn.cpp:1240 +msgid "Fill Flash" +msgstr "Повний Ñпалах" + +#: src/minoltamn.cpp:1251 +msgid "Focus Hold" +msgstr "Ð£Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑу" + +#: src/minoltamn.cpp:1252 +msgid "DOF Preview" +msgstr "Попередній переглÑд глибини різкоÑті" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Призупинити" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "Перемкнути" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/minoltamn.cpp:1260 +#, fuzzy +msgid "Spot Toggle" +msgstr "Перемкнути" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "ШвидкіÑть затвору" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +#, fuzzy +msgid "Ambient Only" +msgstr "Лише зображеннÑ" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0,3 Ñекунди" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0,6 Ñекунд" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Ðвтоматично" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +msgid "Auto-rotate" +msgstr "Ðвтоматичний поворот" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "Горизонтально" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "У межах" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð° діапазоном" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "Ðе вказано" + +#: src/minoltamn.cpp:1310 +msgid "Under Scale" +msgstr "Під шкалою" + +#: src/minoltamn.cpp:1311 +msgid "Bottom of Scale" +msgstr "Ðиз Шкали" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "Верх шкали" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "ЗашкалюваннÑ" + +#: src/minoltamn.cpp:1335 +msgid "AM" +msgstr "AM" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "MF" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Вбудована" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Дуже низький" + +#: src/minoltamn.cpp:1350 +msgid "Half Full" +msgstr "Ðаполовину повний" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "ДоÑÑ‚Ð°Ñ‚Ð½Ñ Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ñ–Ñть, що залишилаÑÑ" + +#: src/minoltamn.cpp:1359 +msgid "Exposure Compensation Setting" +msgstr "Параметр компенÑації екÑпозиції" + +#: src/minoltamn.cpp:1360 +msgid "Exposure compensation setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿ÐµÐ½Ñації екÑпозиції" + +#: src/minoltamn.cpp:1362 +msgid "High Speed Sync" +msgstr "ВиÑокошвидкіÑна СинхронізаціÑ" + +#: src/minoltamn.cpp:1363 +msgid "High speed sync" +msgstr "ВиÑокошвидкіÑна ÑинхронізаціÑ" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "Ð§Ð°Ñ Ð ÑƒÑ‡Ð½Ð¾Ñ— ЕкÑпозиції" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "Ð§Ð°Ñ Ñ€ÑƒÑ‡Ð½Ð¾Ñ— екÑпозиції" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Ручний фокуÑ" + +#: src/minoltamn.cpp:1377 +msgid "Drive Mode 2" +msgstr "Режим мотора 2" + +#: src/minoltamn.cpp:1378 +msgid "Drive mode 2" +msgstr "Режим мотора 2" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Режим облаÑті автофокуÑуваннÑ" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +msgid "FlashMode" +msgstr "Режим Ñпалаху" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñпалаху" + +#: src/minoltamn.cpp:1396 +msgid "Flash exposure compensation setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐºÑпокомпенÑації Ñпалаху" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ISO" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð—Ð¾Ð½Ð¸" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +#, fuzzy +msgid "Dynamic Range Optimizer Mode" +msgstr "Оптимізатор динамічного діапазону" + +#: src/minoltamn.cpp:1408 +#, fuzzy +msgid "Dynamic range optimizer mode" +msgstr "Оптимізатор динамічного діапазону" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ñ–Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ñƒ ÑпуÑку затвора" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "Ð§Ð°Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑку" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "Ð§Ð°Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑку" + +#: src/minoltamn.cpp:1438 +msgid "Continuous bracketing" +msgstr "Безперервний брекетинг" + +#: src/minoltamn.cpp:1440 +msgid "Single Frame Bracketing" +msgstr "Покадровий брекетинг" + +#: src/minoltamn.cpp:1441 +msgid "Single frame bracketing" +msgstr "Покадровий брекетинг" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +msgid "White balance bracketing" +msgstr "Брекетинг баланÑу білого" + +#: src/minoltamn.cpp:1446 +msgid "White Balance Setting" +msgstr "Параметр баланÑу білого" + +#: src/minoltamn.cpp:1449 +msgid "Preset White Balance" +msgstr "Профіль БаланÑу Білого" + +#: src/minoltamn.cpp:1450 +msgid "Preset white balance" +msgstr "Профіль баланÑу білого" + +#: src/minoltamn.cpp:1452 +msgid "Color Temperature Setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¢ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸ Кольору" + +#: src/minoltamn.cpp:1453 +msgid "Color temperature setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸ кольору" + +#: src/minoltamn.cpp:1455 +msgid "Custom WB Setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого вручну" + +#: src/minoltamn.cpp:1456 +msgid "Custom WB setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого вручну" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Оптимізатор динамічного діапазону" + +#: src/minoltamn.cpp:1464 +msgid "Custom WB Red Level" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/minoltamn.cpp:1465 +msgid "Custom WB red level" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/minoltamn.cpp:1467 +msgid "Custom WB Green Level" +msgstr "Ðалаштовуваний рівень зеленого (ББ)" + +#: src/minoltamn.cpp:1468 +msgid "Custom WB green level" +msgstr "Ðалаштовуваний рівень зеленого (ББ)" + +#: src/minoltamn.cpp:1470 +msgid "Custom WB Blue Level" +msgstr "Ðалаштовуваний рівень блакитного (ББ)" + +#: src/minoltamn.cpp:1471 +msgid "CustomWB blue level" +msgstr "Ðалаштовуваний рівень блакитного (ББ)" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/minoltamn.cpp:1477 +msgid "White balance fine tune" +msgstr "Точне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" + +#: src/minoltamn.cpp:1483 +msgid "Color compensation filter" +msgstr "Фільтр компенÑації кольору" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Sony" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +#, fuzzy +msgid "Eye start AF" +msgstr "Однознімкове ÐФ" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ «Червоних очей»" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ «Червоних очей»" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "Типовий Спалах" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "Типовий Ñпалах" + +#: src/minoltamn.cpp:1509 +#, fuzzy +msgid "Auto Bracket Order" +msgstr "ÐвтообмеженнÑ" + +#: src/minoltamn.cpp:1510 +#, fuzzy +msgid "Auto bracket order" +msgstr "ÐвтообмеженнÑ" + +#: src/minoltamn.cpp:1512 +msgid "Focus Hold Button" +msgstr "Кнопка Ð’Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¤Ð¾ÐºÑƒÑу" + +#: src/minoltamn.cpp:1513 +msgid "Focus hold button" +msgstr "Кнопка Ð²Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑу" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "Параметр контраÑтноÑті" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "КонтраÑÑ‚" + +#: src/minoltamn.cpp:1521 +msgid "Exposure Compensation Mode" +msgstr "Режим КомпенÑації ЕкÑпозиції" + +#: src/minoltamn.cpp:1522 +msgid "Exposure compensation mode" +msgstr "Режим компенÑації екÑпозиції" + +#: src/minoltamn.cpp:1525 +#, fuzzy +msgid "AF assist" +msgstr "AF ÐÑиÑтент" + +#: src/minoltamn.cpp:1527 +#, fuzzy +msgid "Card Shutter Lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð° автоекÑпозиції" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð° автоекÑпозиції" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð° автоекÑпозиції" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "Повільна зйомка" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ ÐФ" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ AF" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +#, fuzzy +msgid "Record Display" +msgstr "СуміÑний екран" + +#: src/minoltamn.cpp:1540 +#, fuzzy +msgid "Record display" +msgstr "СуміÑний екран" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +msgid "Exposure Indicator" +msgstr "Індикатор ЕкÑпозиції" + +#: src/minoltamn.cpp:1546 +msgid "Exposure indicator" +msgstr "Індикатор екÑпозиції" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Індикатор ЕкÑпозиції" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +#, fuzzy +msgid "Exposure Bracketing Indicator Last" +msgstr "ЕкÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +msgid "Flash Exposure Indicator" +msgstr "Індикатор ЕкÑпозиції Спалаху" + +#: src/minoltamn.cpp:1558 +msgid "Flash exposure indicator" +msgstr "Індикатор екÑпозиції Ñпалаху" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "Індикатор ЕкÑпозиції Спалаху" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "Індикатор ЕкÑпозиції Спалаху" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +msgid "Focus Mode Switch" +msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð ÐµÐ¶Ð¸Ð¼Ñƒ ФокуÑуваннÑ" + +#: src/minoltamn.cpp:1570 +msgid "Focus mode switch" +msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ фокуÑуваннÑ" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +msgid "Flash Type" +msgstr "Тип Спалаху" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +msgid "Flash type" +msgstr "Тип Ñпалаху" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" +"Фільтр компенÑації кольору: негативні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ â€” зелений, позитивні — " +"пурпуровий" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "ЗарÑд батарей" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "ЗарÑд батарей" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "Ðевідомий тег налаштувань камери Sony A100" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Спорожнити" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Глибина" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Світлий" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Ðічне баченнÑ" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "ОÑіннє лиÑÑ‚Ñ" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Локальний" + +#: src/minoltamn.cpp:2005 +msgid "Top-Right" +msgstr "Вгорі праворуч" + +#: src/minoltamn.cpp:2007 +msgid "Bottom-Right" +msgstr "Внизу праворуч" + +#: src/minoltamn.cpp:2009 +msgid "Bottom-Left" +msgstr "Внизу ліворуч" + +#: src/minoltamn.cpp:2011 +msgid "Top-Left" +msgstr "Вгорі ліворуч" + +#: src/minoltamn.cpp:2012 +msgid "Far-Right" +msgstr "Далеко праворуч" + +#: src/minoltamn.cpp:2013 +msgid "Far-Left" +msgstr "Далеко ліворуч" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +#, fuzzy +msgid "Advanced Auto" +msgstr "Додатково" + +#: src/minoltamn.cpp:2028 +#, fuzzy +msgid "Advanced Level" +msgstr "Додатковий рівень 1" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +msgid "Release" +msgstr "СпуÑк" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:2116 +msgid "Compressed Raw" +msgstr "СтиÑнений Raw" + +#: src/minoltamn.cpp:2117 +msgid "Compressed Raw + JPEG" +msgstr "СтиÑнений Raw + JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "Minolta AF 2x APO (D)" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "Minolta AF 2x APO II" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "Minolta AF 1.4x APO (D)" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "Minolta AF 1.4x APO II" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Параметр ISO, що викориÑтовуєтьÑÑ" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +msgid "High Key" +msgstr "Темне" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "ЯÑкраве" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "Дуже виÑокий" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +msgid "Single area" +msgstr "Одиночна облаÑть" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +msgid "Dynamic area" +msgstr "Динамічна облаÑть" + +#: src/nikonmn.cpp:88 +msgid "Dynamic area, closest subject" +msgstr "Динамічна облаÑть, найближчий предмет" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "Динаміка групи" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +#, fuzzy +msgid "Single area (wide)" +msgstr "Одиночна облаÑть" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "Динамічна зона (широка)" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "Вгорі ліворуч" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +msgid "Upper-right" +msgstr "Вгорі праворуч" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +msgid "Lower-left" +msgstr "Внизу ліворуч" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +msgid "Lower-right" +msgstr "Внизу праворуч" + +#: src/nikonmn.cpp:108 +#, fuzzy +msgid "Left-most" +msgstr "Стрілка ліворуч" + +#: src/nikonmn.cpp:109 +#, fuzzy +msgid "Right-most" +msgstr "Права" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "" + +#: src/nikonmn.cpp:144 +msgid "Fire, external" +msgstr "" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +#, fuzzy +msgid "Fire, TTL mode" +msgstr "Режим облаÑті автофокуÑуваннÑ" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "Затримка" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· комп’ютера" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +msgid "Exposure Bracketing" +msgstr "ЕкÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "Ðвтоматично визначати ISO" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Брекетинг баланÑу білого" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "ІЧ-керуваннÑ" + +#: src/nikonmn.cpp:159 +#, fuzzy +msgid "D-Lighting Bracketing" +msgstr "Безперервний брекетинг" + +#: src/nikonmn.cpp:166 +msgid "PC control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· комп’ютера" + +#: src/nikonmn.cpp:167 +msgid "Exposure bracketing" +msgstr "Брекетинг екÑпозиції" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +msgid "IR control" +msgstr "ІЧ-керуваннÑ" + +#: src/nikonmn.cpp:176 +msgid "Auto release" +msgstr "ÐвтоÑпуÑк" + +#: src/nikonmn.cpp:177 +msgid "Manual release" +msgstr "СпуÑк вручну" + +#: src/nikonmn.cpp:182 +msgid "Lossy (type 1)" +msgstr "З втратами (тип 1)" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +msgid "Uncompressed" +msgstr "ÐеÑтиÑнений" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "Без втрат" + +#: src/nikonmn.cpp:185 +msgid "Lossy (type 2)" +msgstr "З втратами (тип 2)" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "Ч/Б" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "Обрізати" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Мініатюра" + +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "Сценічне оÑвітленнÑ" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Червоні очі" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "тип" + +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "Денне Ñвітло" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "Теплі тони" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Тон кольору" + +#: src/nikonmn.cpp:201 +msgid "Image overlay" +msgstr "ÐÐ°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "Мінімальний" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +msgid "Nikon Makernote version" +msgstr "ВерÑÑ–Ñ Nikon Makernote" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "СвітлочутливіÑть ISO" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Збільшенні різкоÑті" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾Ñті" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "ФокуÑуваннÑ" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Параметри Ñпалаху" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Параметри Ñпалаху" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Вибір ISO" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Вибір ISO" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "Дамп даних" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "Дамп даних" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +msgid "Image Adjustment" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +msgid "Image adjustment setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ— зображеннÑ" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +msgid "Manual focus distance" +msgstr "ДиÑÑ‚Ð°Ð½Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð³Ð¾ маÑштабуваннÑ" + +#: src/nikonmn.cpp:260 +msgid "AF Focus Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð²Ñ‚Ð¾Ñ„Ð¾ÐºÑƒÑу" + +#: src/nikonmn.cpp:261 +msgid "AF focus position information" +msgstr "ВідомоÑті про позицію автофокуÑу" + +#: src/nikonmn.cpp:265 +msgid "Unknown Nikon1MakerNote tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +msgid "Continuous autofocus" +msgstr "Безперервне автофокуÑуваннÑ" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +msgid "Single autofocus" +msgstr "Покадрове автофокуÑуваннÑ" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "Ðе викориÑтовуєтьÑÑ" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "припущеннÑ" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "VGA, базова" + +#: src/nikonmn.cpp:419 +msgid "VGA Normal" +msgstr "VGA, звичайна" + +#: src/nikonmn.cpp:420 +msgid "VGA Fine" +msgstr "VGA, ÑкіÑна" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "SXGA, базова" + +#: src/nikonmn.cpp:422 +msgid "SXGA Normal" +msgstr "SXGA, звичайна" + +#: src/nikonmn.cpp:423 +msgid "SXGA Fine" +msgstr "SXGA, ÑкіÑна" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "ЯÑкравіÑть+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "ЯÑкравіÑть-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "КонтраÑÑ‚+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "КонтраÑÑ‚-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "" + +#: src/nikonmn.cpp:497 +msgid "Unknown Nikon2MakerNote tag" +msgstr "Ðевідомий тег Nikon2MakerNote" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "ПриÑтрій Ñпалаху" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +msgid "Flash device" +msgstr "ПриÑтрій Ñпалаху" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +#, fuzzy +msgid "White Balance Bias" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +#, fuzzy +msgid "White balance bias" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB Levels" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +#, fuzzy +msgid "WB RB levels" +msgstr "Рівень чорного" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Програма" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure Difference" +msgstr "Показник екÑпозиції" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure difference" +msgstr "Показник екÑпозиції" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +msgid "Pointer to a preview image" +msgstr "Вказівник на попереднє зображеннÑ" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +msgid "Offset to an IFD containing a preview image" +msgstr "" + +#: src/nikonmn.cpp:549 +msgid "Flash Comp" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð¡Ð¿Ð°Ð»Ð°Ñ…Ñƒ" + +#: src/nikonmn.cpp:549 +msgid "Flash compensation setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿ÐµÐ½Ñації Ñпалаху" + +#: src/nikonmn.cpp:551 +msgid "Image Boundary" +msgstr "Межа зображеннÑ" + +#: src/nikonmn.cpp:551 +msgid "Image boundary" +msgstr "Межа зображеннÑ" + +#: src/nikonmn.cpp:552 +msgid "Flash exposure comp" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції Ñпалаху" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð¡Ð¿Ð°Ð»Ð°Ñ…Ñƒ" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції Ñпалаху" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "ЕкÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "AE bracket compensation applied" +msgstr "Режим компенÑації екÑпозиції" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +msgid "Image Processing" +msgstr "Обробка зображень" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +msgid "Image processing" +msgstr "Обробка зображень" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "ВиÑока швидкіÑть" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "ВиÑока швидкіÑть" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ витримку" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ витримку" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "AF інформаціÑ" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR info" +msgstr "AF інформаціÑ" + +#: src/nikonmn.cpp:561 +msgid "Image Authentication" +msgstr "ÐÐ²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/nikonmn.cpp:561 +msgid "Image authentication" +msgstr "ÐÐ²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-Lighting" +msgstr "Сценічне оÑвітленнÑ" + +#: src/nikonmn.cpp:562 +#, fuzzy +msgid "ActiveD-lighting" +msgstr "Сценічне оÑвітленнÑ" + +#: src/nikonmn.cpp:563 +msgid "Picture Control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/nikonmn.cpp:563 +msgid " Picture control" +msgstr " ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +msgid "World Time" +msgstr "Світовий ЧаÑ" + +#: src/nikonmn.cpp:564 +msgid "World time" +msgstr "Світовий чаÑ" + +#: src/nikonmn.cpp:565 +msgid "ISO Info" +msgstr "ВідомоÑті про ISO" + +#: src/nikonmn.cpp:565 +msgid "ISO info" +msgstr "ВідомоÑті про ISO" + +#: src/nikonmn.cpp:566 +msgid "Vignette Control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð½ÑŒÑ”Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñм" + +#: src/nikonmn.cpp:566 +msgid "Vignette control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð½ÑŒÑ”Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñм" + +#: src/nikonmn.cpp:568 +msgid "Tone Compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ñ‚Ð¾Ð½Ñƒ" + +#: src/nikonmn.cpp:568 +msgid "Tone compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ñ‚Ð¾Ð½Ñƒ" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "Режим Ñпалаху, що викориÑтовувавÑÑ" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Режим затвора" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Режим зніманнÑ" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto Bracket Release" +msgstr "ÐвтообмеженнÑ" + +#: src/nikonmn.cpp:577 +#, fuzzy +msgid "Auto bracket release" +msgstr "ÐвтообмеженнÑ" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "Тип лінзи" + +#: src/nikonmn.cpp:579 +msgid "Contrast Curve" +msgstr "Крива контраÑтноÑті" + +#: src/nikonmn.cpp:579 +msgid "Contrast curve" +msgstr "Крива контраÑтноÑті" + +#: src/nikonmn.cpp:580 +msgid "Color Hue" +msgstr "Відтінок кольору" + +#: src/nikonmn.cpp:580 +msgid "Color hue" +msgstr "Відтінок кольору" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +msgid "Scene mode" +msgstr "Режим Ñцени" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Джерело Ñвітла" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Джерело Ñвітла" + +#: src/nikonmn.cpp:583 +msgid "Shot info" +msgstr "ВідомоÑті про знÑток" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +msgid "Hue Adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +msgid "Hue adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/nikonmn.cpp:585 +msgid "NEF Compression" +msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ NEF" + +#: src/nikonmn.cpp:585 +msgid "NEF compression" +msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ NEF" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð›Ñ–Ð½ÐµÐ°Ñ€Ð¸Ð·Ð°Ñ†Ñ–Ñ—" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð»Ñ–Ð½ÐµÐ°Ñ€Ð¸Ð·Ð°Ñ†Ñ–Ñ—" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Дані об’єктиву" + +#: src/nikonmn.cpp:590 +msgid "Lens data settings" +msgstr "Параметри об’єктиву" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw image center" +msgstr "Розмір цифрового негатива" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Розмір точки на датчику" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Розмір точки на датчику" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "AF ÐÑиÑтент" + +#: src/nikonmn.cpp:594 +msgid "Scene assist" +msgstr "" + +#: src/nikonmn.cpp:595 +msgid "Retouch History" +msgstr "ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð ÐµÑ‚ÑƒÑˆÑƒÐ²Ð°Ð½Ð½Ñ" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ñ€ÐµÑ‚ÑƒÑˆÑƒÐ²Ð°Ð½Ð½Ñ" + +#: src/nikonmn.cpp:597 +msgid "Serial NO" +msgstr "Серійний â„–" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "Серійний номер камери, зазвичай починаєтьÑÑ Ð· \"NO= \"" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Розмір даних зображеннÑ" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Розмір даних зображеннÑ" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "ЧиÑло Зображень" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "ЧиÑло зображень" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted Image Count" +msgstr "ЧиÑло Вилучених Зображень" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +msgid "Deleted image count" +msgstr "ЧиÑло вилучених зображень" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +#, fuzzy +msgid "Shutter Count" +msgstr "Пріоритет затвору" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "ЧиÑло знÑтків, зроблених камерою" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Дані щодо Ñпалаху" + +#: src/nikonmn.cpp:604 +msgid "Image Optimization" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/nikonmn.cpp:604 +msgid "Image optimization" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "" + +#: src/nikonmn.cpp:609 +msgid "Multi exposure" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:610 +msgid "High ISO Noise Reduction" +msgstr "Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +msgid "Toning effect" +msgstr "Ефект тонуваннÑ" + +#: src/nikonmn.cpp:612 +#, fuzzy +msgid "AF info 2" +msgstr "AF інформаціÑ" + +#: src/nikonmn.cpp:613 +msgid "File info" +msgstr "ВідомоÑті про файл" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture Data" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Колір" + +#: src/nikonmn.cpp:617 +#, fuzzy +msgid "Capture data" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ колір" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "ПідпиÑ" + +#: src/nikonmn.cpp:620 +msgid "Capture Offsets" +msgstr "" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "ВідÑтуп облаÑті зображеннÑ" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "Профіль ICC" + +#: src/nikonmn.cpp:623 +msgid "Capture output" +msgstr "" + +#: src/nikonmn.cpp:625 +msgid "Unknown Nikon3MakerNote tag" +msgstr "Ðевідомий тег Nikon3MakerNote" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "ÐÑ–" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Так" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "Р/М/Д" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "М/Д/Р" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "Д/М/Р" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ 2" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Типові параметри" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Швидке налаштуваннÑ" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Ðеобмежене керуваннÑ" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "Блакитно-зелений" + +#: src/nikonmn.cpp:692 +#, fuzzy +msgid "Purple-blue" +msgstr "Пурпуровий" + +#: src/nikonmn.cpp:693 +#, fuzzy +msgid "Red-purple" +msgstr "Пурпуровий" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Ðазва" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "ОÑнова" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Виправити" + +#: src/nikonmn.cpp:703 +#, fuzzy +msgid "Quick adjust" +msgstr "Швидке налаштуваннÑ" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Ефект фільтруваннÑ" + +#: src/nikonmn.cpp:711 +msgid "Toning Saturation" +msgstr "ÐаÑиченіÑть ТонуваннÑ" + +#: src/nikonmn.cpp:711 +msgid "Toning saturation" +msgstr "ÐаÑиченіÑть тонуваннÑ" + +#: src/nikonmn.cpp:713 +#, fuzzy +msgid "Unknown Nikon Picture Control Tag" +msgstr "Ðевідомий тег відомоÑтей про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon" + +#: src/nikonmn.cpp:730 +#, fuzzy +msgid "AF Fine Tune" +msgstr "VGA, ÑкіÑна" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/nikonmn.cpp:734 +#, fuzzy +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "Ðевідомий тег відомоÑтей про файл Canon" + +#: src/nikonmn.cpp:744 +msgid "Timezone" +msgstr "ЧаÑовий поÑÑ" + +#: src/nikonmn.cpp:745 +msgid "Daylight Savings" +msgstr "Літній чаÑ" + +#: src/nikonmn.cpp:745 +msgid "Daylight savings" +msgstr "Літній чаÑ" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Формат показу дати" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Формат показу дати" + +#: src/nikonmn.cpp:748 +#, fuzzy +msgid "Unknown Nikon World Time Tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Hi 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Hi 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Hi 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Hi 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Hi 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Hi 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Hi 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Lo 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Lo 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Lo 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Lo 1.0" + +#: src/nikonmn.cpp:784 +msgid "ISO Expansion" +msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ISO" + +#: src/nikonmn.cpp:784 +msgid "ISO expansion" +msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ISO" + +#: src/nikonmn.cpp:785 +msgid "ISO 2" +msgstr "ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ISO 2" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ISO 2" + +#: src/nikonmn.cpp:788 +#, fuzzy +msgid "Unknown Nikon Iso Info Tag" +msgstr "Ðевідомий тег відомоÑтей про файл Canon" + +#: src/nikonmn.cpp:798 +msgid "Single Area" +msgstr "Одиночна облаÑть" + +#: src/nikonmn.cpp:799 +msgid "Dynamic Area" +msgstr "Динамічна ОблаÑть" + +#: src/nikonmn.cpp:800 +#, fuzzy +msgid "Dynamic Area, Closest Subject" +msgstr "Динамічна облаÑть, найближчий предмет" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "Динаміка групи" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Одиночна облаÑть" + +#: src/nikonmn.cpp:803 +#, fuzzy +msgid "Dynamic Area (wide)" +msgstr "Динамічна зона (широка)" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +msgid "Mid-left" +msgstr "ПоÑередині ліворуч" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +msgid "Mid-right" +msgstr "ПоÑередині-праворуч" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +msgid "Far Left" +msgstr "Далеко ліворуч" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +msgid "Far Right" +msgstr "Далеко праворуч" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +msgid "AF area mode" +msgstr "Режим облаÑті автофокуÑуваннÑ" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +msgid "AF point" +msgstr "Точка ÐФ" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡Ð¾Ðº ÐФ" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¾Ñ‡Ð¾Ðº ÐФ" + +#: src/nikonmn.cpp:842 +#, fuzzy +msgid "Unknown Nikon Auto Focus Tag" +msgstr "Тег невідомої функції Canon Ñка налаштовуєтьÑÑ" + +#: src/nikonmn.cpp:853 +msgid "On (51-point)" +msgstr "Увімк (51 точка)" + +#: src/nikonmn.cpp:854 +msgid "On (11-point)" +msgstr "Увімк (11 точок)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Увімк (51 точка)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Увімк (51 точка)" + +#: src/nikonmn.cpp:857 +#, fuzzy +msgid "On (73-point, new)" +msgstr "Увімк (51 точка)" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Увімк (11 точок)" + +#: src/nikonmn.cpp:864 +msgid "Contrast Detect AF" +msgstr "КонтраÑтний ÐвтофокуÑ" + +#: src/nikonmn.cpp:864 +msgid "Contrast detect AF" +msgstr "КонтраÑтний автофокуÑ" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "Фазовий ÐвтофокуÑ" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "Фазовий автофокуÑ" + +#: src/nikonmn.cpp:867 +msgid "Primary AF Point" +msgstr "Головна точка автофокуÑу" + +#: src/nikonmn.cpp:867 +msgid "Primary AF point" +msgstr "Головна точка автофокуÑу" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Ширина зображеннÑ" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Ширина зображеннÑ" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "ВиÑота зображеннÑ" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "ВиÑота зображеннÑ" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð²Ñ‚Ð¾Ñ„Ð¾ÐºÑƒÑу" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ AF" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð²Ñ‚Ð¾Ñ„Ð¾ÐºÑƒÑу" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ AF" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Режим облаÑті автофокуÑуваннÑ" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Режим облаÑті автофокуÑуваннÑ" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "AF аÑиÑтент Ñвітла" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "Далеко праворуч" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "КонтраÑтний ÐвтофокуÑ" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "КонтраÑтний автофокуÑ" + +#: src/nikonmn.cpp:877 +#, fuzzy +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "Тег невідомої функції Canon Ñка налаштовуєтьÑÑ" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Ðомер замовленнÑ" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Ðомер замовленнÑ" + +#: src/nikonmn.cpp:891 +#, fuzzy +msgid "Unknown Nikon File Info Tag" +msgstr "Ðевідомий тег відомоÑтей про файл Canon" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +#, fuzzy +msgid "Multiple Exposure" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:903 +msgid "Image Overlay" +msgstr "ÐÐ°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi Exposure Mode" +msgstr "Режим екÑпозиції" + +#: src/nikonmn.cpp:909 +#, fuzzy +msgid "Multi exposure mode" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "МультиекÑпонуваннÑ" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +#, fuzzy +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +msgid "Internal" +msgstr "Внутрішні" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Ðвтодіафрагма" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Без Ñпалаху" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "FL-GL1" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "FL-GL2" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "TN-A1" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "TN-A2" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "ЧиÑло F" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash Source" +msgstr "Файлове джерело" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +#, fuzzy +msgid "Flash source" +msgstr "Файлове джерело" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "Зовнішній Ñпалах" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "Зовнішній Ñпалах" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Перейменувти файл на" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "Ручне ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалахом" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "ФокуÑна відÑтань" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "ФокуÑна відÑтань" + +#: src/nikonmn.cpp:1032 +msgid "Flash Group A Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1032 +msgid "Flash group a control mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash Group B Control Mode" +msgstr "" + +#: src/nikonmn.cpp:1033 +msgid "Flash group b control mode" +msgstr "" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Фільтр кольорів" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Фільтр кольорів" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +#, fuzzy +msgid "Shutter count" +msgstr "Пріоритет затвору" + +#: src/nikonmn.cpp:1088 +#, fuzzy +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "Ðевідомий тег відомоÑтей про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +#, fuzzy +msgid "Flash Level" +msgstr "ПриÑтрій Ñпалаху" + +#: src/nikonmn.cpp:1100 +#, fuzzy +msgid "Flash level" +msgstr "ПриÑтрій Ñпалаху" + +#: src/nikonmn.cpp:1102 +#, fuzzy +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "Ðевідомий тег відомоÑтей про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "" + +#: src/nikonmn.cpp:1162 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "Ðевідомий тег відомоÑтей про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon" + +#: src/nikonmn.cpp:1222 +#, fuzzy +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "Ðевідомий тег відомоÑтей про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon" + +#: src/nikonmn.cpp:1235 +#, fuzzy +msgid "On (3)" +msgstr "Включено (1)" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ 2" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ 2" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾ задній шторці" + +#: src/nikonmn.cpp:1253 +msgid "Vibration Reduction 2" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ 2" + +#: src/nikonmn.cpp:1253 +msgid "Vibration reduction 2" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ 2" + +#: src/nikonmn.cpp:1257 +#, fuzzy +msgid "Unknown Nikon Shot Info Tag" +msgstr "Ðевідомий тег відомоÑтей про файл Canon" + +#: src/nikonmn.cpp:1268 +#, fuzzy +msgid "WB RBGG Levels" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "" + +#: src/nikonmn.cpp:1270 +#, fuzzy +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +#, fuzzy +msgid "WB RGGB Levels" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "" + +#: src/nikonmn.cpp:1283 +#, fuzzy +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/nikonmn.cpp:1296 +#, fuzzy +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/nikonmn.cpp:1309 +#, fuzzy +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/nikonmn.cpp:1320 +#, fuzzy +msgid "WB RGBG Levels" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "" + +#: src/nikonmn.cpp:1322 +#, fuzzy +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/nikonmn.cpp:1333 +#, fuzzy +msgid "WB GRBG Levels" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "" + +#: src/nikonmn.cpp:1335 +#, fuzzy +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Ðомер оÑтаннього зображеннÑ" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Ідентифікатор об'єктива" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "Тип лінзи" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "Тип лінзи" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Мінімальна фокуÑна відÑтань" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Мінімальна фокуÑна відÑтань" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +#, fuzzy +msgid "Max Aperture At Min Focal" +msgstr "МакÑимальна діафрагма при мінімальному фокуÑÑ–" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +#, fuzzy +msgid "Max aperture at min focal" +msgstr "МакÑ. діафрагма при мін. фокуÑній відÑтані" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +#, fuzzy +msgid "Max Aperture At Max Focal" +msgstr "МакÑимальна діафрагма при макÑимальному фокуÑÑ–" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +#, fuzzy +msgid "Max aperture at max focal" +msgstr "МакÑ. діафрагма при макÑ. фокуÑній відÑтані" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "ВерÑÑ–Ñ ARM" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "ВерÑÑ–Ñ ARM" + +#: src/nikonmn.cpp:1354 +#, fuzzy +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð²Ñ‚Ð¾Ñ„Ð¾ÐºÑƒÑу" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Діафрагма" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Діафрагма" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective Max Aperture" +msgstr "МакÑ. апертура" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective max aperture" +msgstr "МакÑ. апертура" + +#: src/nikonmn.cpp:1379 +#, fuzzy +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/nikonmn.cpp:1399 +msgid "Max aperture at min focal length" +msgstr "МакÑ. діафрагма при мін. фокуÑній відÑтані" + +#: src/nikonmn.cpp:1400 +msgid "Max aperture at max focal length" +msgstr "МакÑ. діафрагма при макÑ. фокуÑній відÑтані" + +#: src/nikonmn.cpp:1404 +#, fuzzy +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Ðайближчий об’єкт" + +#: src/nikonmn.cpp:1591 +#, fuzzy +msgid "Group dynamic-AF" +msgstr "Динаміка групи" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "немає" + +#: src/nikonmn.cpp:1624 +msgid "used" +msgstr "викориÑтано" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "Точки ÐФ" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Окремий кадр" + +#: src/olympusmn.cpp:71 +#, fuzzy +msgid "Standard Quality (SQ)" +msgstr "Стандартне Ñвітло A" + +#: src/olympusmn.cpp:72 +#, fuzzy +msgid "High Quality (HQ)" +msgstr "ЯкіÑть Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ 2" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Спорт" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +#, fuzzy +msgid "Landscape+Portrait" +msgstr "Ðльбомна" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Ðвтопортрет" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 в 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Ðічний портрет" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Їжа" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Документи" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "ПлÑж/Ðа Ñнігу" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "Ðвтопортрет" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Свічка" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "" + +#: src/olympusmn.cpp:120 +#, fuzzy +msgid "My Mode" +msgstr "ПроÑтий режим" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +#, fuzzy +msgid "Pet" +msgstr "Перт" + +#: src/olympusmn.cpp:122 +#, fuzzy +msgid "Underwater Wide1" +msgstr "Під водою" + +#: src/olympusmn.cpp:123 +#, fuzzy +msgid "Underwater Macro" +msgstr "Під водою" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "Ð¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ ÐšÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "" +"\n" +"Дії:\n" + +#: src/olympusmn.cpp:131 +#, fuzzy +msgid "Underwater Wide2" +msgstr "Під водою" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Діти" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "Супер Макро" + +#: src/olympusmn.cpp:136 +#, fuzzy +msgid "Underwater Snapshot" +msgstr "Під водою" + +#: src/olympusmn.cpp:137 +#, fuzzy +msgid "Shooting Guide" +msgstr "Режим затвора" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Внутрішнє+зовнішнє" + +#: src/olympusmn.cpp:176 +msgid "Interlaced" +msgstr "ЧерезрÑдкове" + +#: src/olympusmn.cpp:177 +msgid "Progressive" +msgstr "ПрогреÑивне" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "ЗображеннÑ-мініатюра" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "ЗображеннÑ-мініатюра" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +msgid "Body firmware version" +msgstr "" + +#: src/olympusmn.cpp:195 +#, fuzzy +msgid "Special Mode" +msgstr "Режим фільму" + +#: src/olympusmn.cpp:196 +#, fuzzy +msgid "Picture taking mode" +msgstr "Режим знімка" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Чорно-білий режим" + +#: src/olympusmn.cpp:205 +#, fuzzy +msgid "Black and white mode" +msgstr "Чорно-біле" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Коефіцієнт цифрового збільшеннÑ" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "Діагональ у фокальній площині" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "Діагональ у фокальній площині" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "Параметри Ð²Ð¸ÐºÑ€Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸Ð²Ð¾Ð¼" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "Параметри Ð²Ð¸ÐºÑ€Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸Ð²Ð¾Ð¼" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Тип фотоапарата" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +msgid "Camera type" +msgstr "Тип фотоапарата" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +msgid "Camera ID" +msgstr "Ід. фотоапарата" + +#: src/olympusmn.cpp:223 +#, fuzzy +msgid "Camera ID data" +msgstr "Ід. фотоапарата" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Програми" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "ЕÑкіз зображеннÑ" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "ЕÑкіз зображеннÑ" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Тип Ñцени" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Режим знімка" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "Біла дошка" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "Біла дошка" + +#: src/olympusmn.cpp:243 +#, fuzzy +msgid "One Touch WB" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:244 +msgid "One touch white balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +#, fuzzy +msgid "White Balance Bracket" +msgstr "Брекетинг баланÑу білого" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +#, fuzzy +msgid "White balance bracket" +msgstr "Брекетинг баланÑу білого" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Мікропрограма" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "Дамп даних 1" + +#: src/olympusmn.cpp:262 +#, fuzzy +msgid "Various camera settings 1" +msgstr "Різноманітні параметри фотоапарата" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "Дамп даних 2" + +#: src/olympusmn.cpp:265 +#, fuzzy +msgid "Various camera settings 2" +msgstr "Різноманітні параметри фотоапарата" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті руху затвору" + +#: src/olympusmn.cpp:271 +#, fuzzy +msgid "ISO speed value" +msgstr "ЧутливіÑть ISO викориÑтана" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Розмір діафрагми" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑÑкравоÑті" + +#: src/olympusmn.cpp:285 +#, fuzzy +msgid "Bracket" +msgstr "Ðвтовилка" + +#: src/olympusmn.cpp:286 +#, fuzzy +msgid "Exposure compensation value" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Температура датчика" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Температура датчика" + +#: src/olympusmn.cpp:291 +msgid "Lens Temperature" +msgstr "Температура об’єктива" + +#: src/olympusmn.cpp:292 +msgid "Lens temperature" +msgstr "Температура об’єктива" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "Умови оÑвітленнÑ" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Умови оÑвітленнÑ" + +#: src/olympusmn.cpp:297 +msgid "Focus Range" +msgstr "Діапазон фокуÑуваннÑ" + +#: src/olympusmn.cpp:298 +msgid "Focus range" +msgstr "Діапазон фокуÑуваннÑ" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "МаÑштаб" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +msgid "Zoom step count" +msgstr "КількіÑть кроків маÑштабуваннÑ" + +#: src/olympusmn.cpp:309 +#, fuzzy +msgid "Macro Focus" +msgstr "Панорамне фокуÑуваннÑ" + +#: src/olympusmn.cpp:310 +#, fuzzy +msgid "Macro focus step count" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Коефіцієнт різкоÑті" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Коефіцієнт різкоÑті" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Рівень зарÑду Ñпалаху" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Рівень зарÑду Ñпалаху" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/olympusmn.cpp:321 +msgid "BlackLevel" +msgstr "Рівень чорного" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +msgid "Black level" +msgstr "Рівень чорного" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Режим баланÑу білого" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñинього" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñинього" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Ðомер матриці кольору" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Ðомер матриці кольору" + +#: src/olympusmn.cpp:345 +msgid "Serial Number 2" +msgstr "Серійний номер 2" + +#: src/olympusmn.cpp:346 +msgid "Serial number 2" +msgstr "Серійний номер 2" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції Ñпалаху" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External Flash Bounce" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +#, fuzzy +msgid "External flash bounce" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External Flash Zoom" +msgstr "Зовнішній Ñпалах" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External flash zoom" +msgstr "Зовнішній Ñпалах" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ð¾Ð¼" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ð¾Ð¼" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Фільтр кольорів" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Фільтр кольорів" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Рівень ÑтиÑканнÑ" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Рівень ÑтиÑканнÑ" + +#: src/olympusmn.cpp:427 +#, fuzzy +msgid "Preview image embedded" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/olympusmn.cpp:430 +#, fuzzy +msgid "Offset of the preview image" +msgstr "Вказівник на попереднє зображеннÑ" + +#: src/olympusmn.cpp:433 +#, fuzzy +msgid "Size of the preview image" +msgstr "Вказівник на попереднє зображеннÑ" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Режим ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÐŸÐ—Ð—" + +#: src/olympusmn.cpp:436 +msgid "CCD scan mode" +msgstr "Режим ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÐŸÐ—Ð—" + +#: src/olympusmn.cpp:441 +#, fuzzy +msgid "Infinity Lens Step" +msgstr "ÐеÑкінченіÑть" + +#: src/olympusmn.cpp:442 +#, fuzzy +msgid "Infinity lens step" +msgstr "ÐеÑкінченіÑть" + +#: src/olympusmn.cpp:444 +#, fuzzy +msgid "Near Lens Step" +msgstr "Тип лінзи" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "" + +#: src/olympusmn.cpp:447 +#, fuzzy +msgid "Equipment Info" +msgstr "Дані щодо об’єктива" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:451 +#, fuzzy +msgid "Camera Settings sub-IFD" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (7D)" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:460 +#, fuzzy +msgid "Image processing sub-IFD" +msgstr "Обробка зображень" + +#: src/olympusmn.cpp:462 +#, fuzzy +msgid "Focus Info" +msgstr "AF інформаціÑ" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:465 +#, fuzzy +msgid "Raw Info" +msgstr "AF інформаціÑ" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "" + +#: src/olympusmn.cpp:470 +#, fuzzy +msgid "Unknown OlympusMakerNote tag" +msgstr "Ðевідомий тег FujiMakerNote" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Програма" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "Середній відноÑно центру" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ð¾Ð¼" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "Одиночна облаÑть" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "" + +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "AF Точка ВикориÑтана" + +#: src/olympusmn.cpp:518 +#, fuzzy +msgid "AF Used" +msgstr "AF Точка ВикориÑтана" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Ðе готовий" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Готово" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "ЗаповненнÑ" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "Уповільнена ÑинхронізаціÑ" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +msgid "Channel 1, Low" +msgstr "" + +#: src/olympusmn.cpp:542 +msgid "Channel 2, Low" +msgstr "" + +#: src/olympusmn.cpp:543 +msgid "Channel 3, Low" +msgstr "" + +#: src/olympusmn.cpp:544 +msgid "Channel 4, Low" +msgstr "" + +#: src/olympusmn.cpp:545 +msgid "Channel 1, Mid" +msgstr "" + +#: src/olympusmn.cpp:546 +msgid "Channel 2, Mid" +msgstr "" + +#: src/olympusmn.cpp:547 +msgid "Channel 3, Mid" +msgstr "" + +#: src/olympusmn.cpp:548 +msgid "Channel 4, Mid" +msgstr "" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "" + +#: src/olympusmn.cpp:568 +#, fuzzy +msgid "6000K (Cloudy)" +msgstr "Хмарно" + +#: src/olympusmn.cpp:569 +#, fuzzy +msgid "5300K (Fine Weather)" +msgstr "ЯÑна погода" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Ðвтодіафрагма" + +#: src/olympusmn.cpp:573 +msgid "5500K (Flash)" +msgstr "" + +#: src/olympusmn.cpp:574 +#, fuzzy +msgid "6600K (Daylight fluorescent)" +msgstr "Денне Ñвітло" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "" + +#: src/olympusmn.cpp:576 +#, fuzzy +msgid "4000K (Cool white fluorescent)" +msgstr "Холодне біле флуореÑцентне" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Біле флуореÑцентне" + +#: src/olympusmn.cpp:580 +#, fuzzy +msgid "One Touch WB 1" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:581 +#, fuzzy +msgid "One Touch WB 2" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:582 +#, fuzzy +msgid "One Touch WB 3" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:583 +#, fuzzy +msgid "One Touch WB 4" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:584 +#, fuzzy +msgid "Custom WB 1" +msgstr "Інше 1" + +#: src/olympusmn.cpp:585 +#, fuzzy +msgid "Custom WB 2" +msgstr "Інше 2" + +#: src/olympusmn.cpp:586 +#, fuzzy +msgid "Custom WB 3" +msgstr "Інше 3" + +#: src/olympusmn.cpp:587 +#, fuzzy +msgid "Custom WB 4" +msgstr "Інше 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "" + +#: src/olympusmn.cpp:595 +#, fuzzy +msgid "CM3 (Blue Enhance)" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñинього" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Фільтр шуму" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Фільтр шуму" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "Вимкнено" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +#, fuzzy +msgid "Monotone" +msgstr "Тон кольору" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "" + +#: src/olympusmn.cpp:648 +#, fuzzy +msgid "SHQ" +msgstr "SQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +#, fuzzy +msgid "On, Mode 1" +msgstr "Ід. моделі Sony" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +#, fuzzy +msgid "On, Mode 2" +msgstr "Режим мотора 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +#, fuzzy +msgid "On, Mode 3" +msgstr "Ід. моделі Sony" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera Settings Version" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (7D)" + +#: src/olympusmn.cpp:661 +#, fuzzy +msgid "Camera settings version" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ (7D)" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "PreviewImage Valid" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/olympusmn.cpp:662 +#, fuzzy +msgid "Preview image valid" +msgstr "ЕÑкіз зображеннÑ" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "PreviewImage Start" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/olympusmn.cpp:663 +#, fuzzy +msgid "Preview image start" +msgstr "ЕÑкіз зображеннÑ" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "PreviewImage Length" +msgstr "Довжина зображеннÑ" + +#: src/olympusmn.cpp:664 +#, fuzzy +msgid "Preview image length" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Запам'ÑÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ витримки" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure Shift" +msgstr "Витримка" + +#: src/olympusmn.cpp:668 +#, fuzzy +msgid "Exposure shift" +msgstr "Витримка" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus Process" +msgstr "Режим фокуÑу" + +#: src/olympusmn.cpp:671 +#, fuzzy +msgid "Focus process" +msgstr "Ðетиповою обробкою" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF Areas" +msgstr "ДілÑнка фокуÑуваннÑ" + +#: src/olympusmn.cpp:673 +#, fuzzy +msgid "AF areas" +msgstr "Режим облаÑті автофокуÑуваннÑ" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Вибрана точка ÐФ" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash Remote Control" +msgstr "ДиÑтанційне керуваннÑ" + +#: src/olympusmn.cpp:678 +#, fuzzy +msgid "Flash remote control" +msgstr "ДиÑтанційне керуваннÑ" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash Control Mode" +msgstr "Режим Ñпалаху" + +#: src/olympusmn.cpp:679 +#, fuzzy +msgid "Flash control mode" +msgstr "Режим Ñпалаху" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash Intensity" +msgstr "ÐктивніÑть Ñпалаху" + +#: src/olympusmn.cpp:680 +#, fuzzy +msgid "Flash intensity" +msgstr "ÐктивніÑть Ñпалаху" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "потужніÑть Ñпалаху" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "Ðалаштовувана потужніÑть Ñпалаху" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/olympusmn.cpp:683 +msgid "White Balance Temperature" +msgstr "Температура кольорів" + +#: src/olympusmn.cpp:683 +msgid "White balance temperature" +msgstr "Температура кольорів" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom Saturation" +msgstr "Ðизька наÑиченіÑть" + +#: src/olympusmn.cpp:685 +#, fuzzy +msgid "Custom saturation" +msgstr "Ðетипові функції" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified Saturation" +msgstr "ÐаÑиченіÑть червоного" + +#: src/olympusmn.cpp:686 +#, fuzzy +msgid "Modified saturation" +msgstr "ÐаÑиченіÑть червоного" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Параметр контраÑтноÑті" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Параметр різкоÑті" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion Correction" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑпотвореннÑ" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +msgid "Distortion correction" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑпотвореннÑ" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +#, fuzzy +msgid "Shading Compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ñ‚Ð¾Ð½Ñƒ" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +#, fuzzy +msgid "Shading compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ñ‚Ð¾Ð½Ñƒ" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression Factor" +msgstr "Рівень ÑтиÑканнÑ" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression factor" +msgstr "Рівень ÑтиÑканнÑ" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +#, fuzzy +msgid "Gradation" +msgstr "ТриваліÑть" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Режим знімка" + +#: src/olympusmn.cpp:697 +#, fuzzy +msgid "Picture Mode Saturation" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +#, fuzzy +msgid "Picture mode saturation" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture Mode Hue" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:698 +#, fuzzy +msgid "Picture mode hue" +msgstr "Режим знімка" + +#: src/olympusmn.cpp:699 +#, fuzzy +msgid "Picture Mode Contrast" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +#, fuzzy +msgid "Picture mode contrast" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/olympusmn.cpp:700 +#, fuzzy +msgid "Picture Mode Sharpness" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +#, fuzzy +msgid "Picture mode sharpness" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture Mode BW Filter" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:701 +#, fuzzy +msgid "Picture mode BW filter" +msgstr "Режим знімка" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture Mode Tone" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture mode tone" +msgstr "Режим знімка" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Фільтр шуму" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Фільтр" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Фільтр кольорів" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Цифровий фільтр" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Цифровий фільтр" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama Mode" +msgstr "Рамка панорами" + +#: src/olympusmn.cpp:707 +#, fuzzy +msgid "Panorama mode" +msgstr "Рамка панорами" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "ЯкіÑть Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "ЯкіÑть Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +#, fuzzy +msgid "Manometer pressure" +msgstr "ÐеÑтиÑнений" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB Detect" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñцени" + +#: src/olympusmn.cpp:712 +#, fuzzy +msgid "Extended WB detect" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñцени" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "ВерÑÑ–Ñ Exif" + +#: src/olympusmn.cpp:747 +msgid "Serial number" +msgstr "Серійний номер" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +#, fuzzy +msgid "Lens Serial Number" +msgstr "Вбудований Ñерійний номер" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +#, fuzzy +msgid "Lens serial number" +msgstr "Вбудований Ñерійний номер" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens Firmware Version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/olympusmn.cpp:754 +msgid "Lens firmware version" +msgstr "" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max Aperture At Current Focal" +msgstr "МакÑимальна діафрагма при мінімальному фокуÑÑ–" + +#: src/olympusmn.cpp:759 +#, fuzzy +msgid "Max aperture at current focal" +msgstr "МакÑ. діафрагма при мін. фокуÑній відÑтані" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens Properties" +msgstr "Температура об’єктива" + +#: src/olympusmn.cpp:760 +#, fuzzy +msgid "Lens properties" +msgstr "Температура об’єктива" + +#: src/olympusmn.cpp:761 +msgid "Extender" +msgstr "Розширювач" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender Serial Number" +msgstr "Вбудований Ñерійний номер" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender serial number" +msgstr "Вбудований Ñерійний номер" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender Model" +msgstr "Розширювач" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender model" +msgstr "Розширювач" + +#: src/olympusmn.cpp:764 +msgid "Extender Firmware Version" +msgstr "" + +#: src/olympusmn.cpp:764 +msgid "Extender firmwareversion" +msgstr "" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion Lens" +msgstr "ВерÑÑ–Ñ—" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion lens" +msgstr "ВерÑÑ–Ñ—" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +#, fuzzy +msgid "Flash Model" +msgstr "Режим Ñпалаху" + +#: src/olympusmn.cpp:767 +#, fuzzy +msgid "Flash model" +msgstr "Режим Ñпалаху" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "ВерÑÑ–Ñ FlashPix" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "ВерÑÑ–Ñ FlashPix" + +#: src/olympusmn.cpp:769 +#, fuzzy +msgid "FlashSerialNumber" +msgstr "Серійний номер 2" + +#: src/olympusmn.cpp:771 +#, fuzzy +msgid "Unknown OlympusEq tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "ВиÑока швидкіÑть" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +#, fuzzy +msgid "High Function" +msgstr "ВиÑока наÑиченіÑть" + +#: src/olympusmn.cpp:790 +#, fuzzy +msgid "Advanced High Speed" +msgstr "ВиÑока швидкіÑть" + +#: src/olympusmn.cpp:791 +#, fuzzy +msgid "Advanced High Function" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑеннÑ" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Оригінал" + +#: src/olympusmn.cpp:797 +#, fuzzy +msgid "Edited (Landscape)" +msgstr "Ðльбомна" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +#, fuzzy +msgid "Edited (Portrait)" +msgstr "Ðічний портрет" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "Тон кольорів" + +#: src/olympusmn.cpp:805 +#, fuzzy +msgid "WB Gray Point" +msgstr "Головна точка автофокуÑу" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/olympusmn.cpp:815 +msgid "Raw development version" +msgstr "" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑƒÑ…Ð¸Ð»Ñƒ екÑпозиції" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑƒÑ…Ð¸Ð»Ñƒ екÑпозиції" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White Balance Value" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð‘Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +#, fuzzy +msgid "White balance value" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ Ð´Ð»Ñ Ñинього каналу" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "Головна точка автофокуÑу" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray point" +msgstr "Головна точка автофокуÑу" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation Emphasis" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +#, fuzzy +msgid "Saturation emphasis" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Мої кольори" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast Value" +msgstr "Крива контраÑтноÑті" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +#, fuzzy +msgid "Contrast value" +msgstr "Крива контраÑтноÑті" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness Value" +msgstr "РізкіÑть" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness value" +msgstr "РізкіÑть" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +#, fuzzy +msgid "Engine" +msgstr "Інженер запиÑу" + +#: src/olympusmn.cpp:827 +msgid "Edit status" +msgstr "Стан редагуваннÑ" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Параметри" + +#: src/olympusmn.cpp:830 +#, fuzzy +msgid "Unknown OlympusRd tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Динамічні межі розробки" + +#: src/olympusmn.cpp:885 +msgid "Raw development 2 version" +msgstr "" + +#: src/olympusmn.cpp:889 +msgid "White balance fine adjustment" +msgstr "Точне ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "ÐаÑиченіÑть" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "РізкіÑть" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW Filter" +msgstr "Фільтр" + +#: src/olympusmn.cpp:902 +msgid "PM BW filter" +msgstr "" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Режим зображеннÑ" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto Gradation" +msgstr "ТриваліÑть звуку" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto gradation" +msgstr "ТриваліÑть звуку" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "PM Noise Filter" +msgstr "Фільтр шуму" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/olympusmn.cpp:909 +#, fuzzy +msgid "Unknown OlympusRd2 tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Включено (2)" + +#: src/olympusmn.cpp:921 +msgid "On (3 frames)" +msgstr "" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Обробка зображень" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Обробка зображень" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB Levels CWB2" +msgstr "Рівень чорного 2" + +#: src/olympusmn.cpp:953 +#, fuzzy +msgid "WB RB levels CWB2" +msgstr "Рівень чорного 2" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "Рівень чорного" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Рівень чорного" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer Values" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ñ€ÐµÐºÐµÑ‚Ð¸Ð½Ð³Ñƒ" + +#: src/olympusmn.cpp:971 +msgid "Enhancer values" +msgstr "" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Фільтр кольорів" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑÑкравоÑті" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑÑкравоÑті" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +msgid "Black Level" +msgstr "Рівень чорного" + +#: src/olympusmn.cpp:975 +#, fuzzy +msgid "Gain Base" +msgstr "ОÑнова" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +#, fuzzy +msgid "Crop Left" +msgstr "Далеко ліворуч" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +#, fuzzy +msgid "Crop left" +msgstr "вгорі ліворуч" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +#, fuzzy +msgid "Crop Height" +msgstr "вгорі праворуч" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +#, fuzzy +msgid "Crop height" +msgstr "вгорі праворуч" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Режим екÑпозиції" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "МультиекÑпонуваннÑ" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "СпіввідношеннÑ" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "СпіввідношеннÑ" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "СпіввідношеннÑ" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face Detect Area" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/olympusmn.cpp:988 +#, fuzzy +msgid "Face detect area" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/olympusmn.cpp:990 +#, fuzzy +msgid "Unknown OlympusIp tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus Info Version" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus info version" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/olympusmn.cpp:1006 +msgid "Auto Focus" +msgstr "Ðвтоматичне фокуÑуваннÑ" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñцени" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñцени" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene Area" +msgstr "Одиночна облаÑть" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene area" +msgstr "Одиночна облаÑть" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene Detect Data" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñцени" + +#: src/olympusmn.cpp:1009 +#, fuzzy +msgid "Scene detect data" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñцени" + +#: src/olympusmn.cpp:1010 +msgid "Zoom Step Count" +msgstr "КількіÑть кроків маÑштабуваннÑ" + +#: src/olympusmn.cpp:1011 +msgid "Focus Step Count" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:1011 +msgid "Focus step count" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "КількіÑть кроків фокуÑуваннÑ" + +#: src/olympusmn.cpp:1016 +msgid "External Flash" +msgstr "Зовнішній Ñпалах" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Режим зовнішнього Ñпалаху" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "Ðалаштовувана потужніÑть Ñпалаху" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "Ðалаштовувана потужніÑть Ñпалаху" + +#: src/olympusmn.cpp:1025 +#, fuzzy +msgid "Unknown OlympusFi tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:1049 +msgid "Fine Weather" +msgstr "ЯÑна погода" + +#: src/olympusmn.cpp:1050 +#, fuzzy +msgid "Tungsten (incandescent)" +msgstr "Лампа Ñ€Ð¾Ð·Ð¶Ð°Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ (Ñвітло дуги)" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "Вечір Ñцена" + +#: src/olympusmn.cpp:1052 +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "ФлуореÑцентна лампа денного Ñвітла (D5700 - 7100K)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "ФлуореÑцентна лампа з білим Ñвітлом (N4600 - 5400K)" + +#: src/olympusmn.cpp:1054 +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "ФлуореÑцентна лампа з холодним білим Ñвітлом (W3900 - 4500K)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "ФлуореÑцентна лампа з білим Ñвітлом (WW 3200 - 3700 K)" + +#: src/olympusmn.cpp:1056 +msgid "One Touch White Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ у один дотик" + +#: src/olympusmn.cpp:1057 +#, fuzzy +msgid "Custom 1-4" +msgstr "Інше 1" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "ВерÑÑ–Ñ ARM" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "ВерÑÑ–Ñ Exif" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "" + +#: src/olympusmn.cpp:1066 +#, fuzzy +msgid "WB_RB Levels Fine Weather" +msgstr "ЯÑна погода" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "Холодне біле флуореÑцентне" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "Біле флуореÑцентне" + +#: src/olympusmn.cpp:1073 +msgid "Color Matrix2" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 2" + +#: src/olympusmn.cpp:1073 +msgid "Color matrix 2" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 2" + +#: src/olympusmn.cpp:1076 +msgid "Black Level 2" +msgstr "Рівень чорного 2" + +#: src/olympusmn.cpp:1076 +msgid "Black level 2" +msgstr "Рівень чорного 2" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "Коефіцієнти YCbCr" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "Коефіцієнти YCbCr" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "Параметри enfuse" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "AE налаштуваннÑ" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM Exposure Compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM exposure compensation" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ 2" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "Брекетинг баланÑу білого" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "Брекетинг баланÑу білого" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "ÐаÑиченіÑть" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "ÐаÑиченіÑть" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM Hue" +msgstr "Відтінок кольору" + +#: src/olympusmn.cpp:1094 +#, fuzzy +msgid "CM hue" +msgstr "Відтінок кольору" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "КонтраÑÑ‚" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "РізкіÑть" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "РізкіÑть" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "Ðевідома мітка" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +msgid "User-Selected" +msgstr "Вибрана кориÑтувачем" + +#: src/olympusmn.cpp:1122 +#, fuzzy +msgid "Auto-Override" +msgstr "Ðвтодіафрагма" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Швидкий" + +#: src/olympusmn.cpp:1223 +msgid "3000 Kelvin" +msgstr "3000 K" + +#: src/olympusmn.cpp:1224 +msgid "3700 Kelvin" +msgstr "3700 K" + +#: src/olympusmn.cpp:1225 +msgid "4000 Kelvin" +msgstr "4000 K" + +#: src/olympusmn.cpp:1226 +msgid "4500 Kelvin" +msgstr "4500 K" + +#: src/olympusmn.cpp:1227 +msgid "5500 Kelvin" +msgstr "5500 K" + +#: src/olympusmn.cpp:1228 +msgid "6500 Kelvin" +msgstr "6500 K" + +#: src/olympusmn.cpp:1229 +msgid "7500 Kelvin" +msgstr "7500 K" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "Один дотик" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-AF" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-AF" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "Розмір зображеннÑ" + +#: src/olympusmn.cpp:1457 +msgid "AF sensor" +msgstr "" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Права зона" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +msgid "Diorama" +msgstr "" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Ðетиповою обробкою" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Риб'Ñче око" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "Малюнок" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Ðатуральний колір" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Мінімальна діафрагма" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Вибрані" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Ðетиповою обробкою" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Ðатуральний колір" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Ðатуральний колір" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Ðатуральний колір" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Ðатуральний колір" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Ðатуральний колір" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "Ліва зона" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +#, fuzzy +msgid "Center (horizontal)" +msgstr "Згори ліворуч горизонтально" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +#, fuzzy +msgid "Center (vertical)" +msgstr "Згори ліворуч вертикально" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "Згори ліворуч горизонтально" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Згори ліворуч горизонтально" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "Згори праворуч горизонтально" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "Згори ліворуч горизонтально" + +#: src/olympusmn.cpp:1626 +#, fuzzy +msgid "Mid-left (horizontal)" +msgstr "Згори ліворуч горизонтально" + +#: src/olympusmn.cpp:1628 +#, fuzzy +msgid "Mid-right (horizontal)" +msgstr "Згори праворуч горизонтально" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Згори праворуч горизонтально" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "Знизу ліворуч горизонтально" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "Знизу ліворуч горизонтально" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "Знизу праворуч горизонтально" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "Згори ліворуч вертикально" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "Згори ліворуч вертикально" + +#: src/olympusmn.cpp:1635 +msgid "Top-right (vertical)" +msgstr "Згори праворуч вертикально" + +#: src/olympusmn.cpp:1636 +#, fuzzy +msgid "Left (vertical)" +msgstr "Згори ліворуч вертикально" + +#: src/olympusmn.cpp:1637 +#, fuzzy +msgid "Mid-left (vertical)" +msgstr "Згори ліворуч вертикально" + +#: src/olympusmn.cpp:1639 +#, fuzzy +msgid "Mid-right (vertical)" +msgstr "Згори праворуч вертикально" + +#: src/olympusmn.cpp:1640 +#, fuzzy +msgid "Right (vertical)" +msgstr "Згори праворуч вертикально" + +#: src/olympusmn.cpp:1641 +msgid "Bottom-left (vertical)" +msgstr "Знизу ліворуч вертикально" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "Знизу ліворуч вертикально" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "Знизу праворуч вертикально" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Одиночна облаÑть" + +#: src/olympusmn.cpp:1681 +#, fuzzy +msgid "All Target" +msgstr "ціль" + +#: src/olympusmn.cpp:1682 +#, fuzzy +msgid "Dynamic Single Target" +msgstr "Параметр динамічного діапазону" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "TIFF" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +msgid "Very High" +msgstr "Дуже виÑокий" + +#: src/panasonicmn.cpp:60 +msgid "Motion Picture" +msgstr "Фільм" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Ðевеликий відеофрагмент" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Відео" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "Галогени" + +#: src/panasonicmn.cpp:83 +#, fuzzy +msgid "Auto, focus button" +msgstr "Ðвтоматичне фокуÑуваннÑ" + +#: src/panasonicmn.cpp:84 +#, fuzzy +msgid "Auto, continuous" +msgstr "Безперервний HS (Велика ШвидкіÑть)" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "AF-S" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "AF-C" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +msgid "Panning" +msgstr "ПанорамуваннÑ" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Макро" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "Декорації" + +#: src/panasonicmn.cpp:117 +#, fuzzy +msgid "Shutter-speed priority" +msgstr "Пріоритет витримки швидкіÑть AE" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "ПроÑто" + +#: src/panasonicmn.cpp:124 +msgid "Color effects" +msgstr "Ефекти кольорів" + +#: src/panasonicmn.cpp:130 +#, fuzzy +msgid "Night scenery" +msgstr "Ðічне оÑвітленнÑ" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +#, fuzzy +msgid "Soft skin" +msgstr "М’Ñкий" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +msgid "Candlelight" +msgstr "Світло Ñвічок" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "Далеко праворуч" + +#: src/panasonicmn.cpp:136 +msgid "High sensitivity" +msgstr "ВиÑока чутливіÑть" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Рамка панорами" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +#, fuzzy +msgid "Intelligent ISO" +msgstr "Довжина інтервалу" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Біла дошка" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€Ð¸Ð²Ð°Ð»Ð¾Ñті фокуÑуваннÑ" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "" + +#: src/panasonicmn.cpp:147 +#, fuzzy +msgid "Multi-aspect" +msgstr "Мульти-плÑма" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Ухил Ñпалаху" + +#: src/panasonicmn.cpp:151 +#, fuzzy +msgid "Film Grain" +msgstr "Плівковий Ñканер" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Мої кольори" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Рамка панорами" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +#, fuzzy +msgid "Handheld Night Shot" +msgstr "ВиÑота Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñк у кадрі" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "ДиÑтанційне керуваннÑ" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +msgid "Digital Filter" +msgstr "Цифровий фільтр" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Ðвтопортрет" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Зв’Ñзок" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +#, fuzzy +msgid "Distinct Scenery" +msgstr "Вітер Ñцена" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑÑкравоÑті" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +#, fuzzy +msgid "Glittering Illuminations" +msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ ÐФ" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Ðічний портрет" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +msgid "Warm" +msgstr "Тепло" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "Крутий" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +#, fuzzy +msgid "Low/High quality" +msgstr "ЯкіÑть зображеннÑ" + +#: src/panasonicmn.cpp:209 +msgid "Infinite" +msgstr "ÐеÑкінченний" + +#: src/panasonicmn.cpp:217 +msgid "Medium low" +msgstr "Помірно низький" + +#: src/panasonicmn.cpp:218 +msgid "Medium high" +msgstr "Помірно виÑокий" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "Ðизький (-1)" + +#: src/panasonicmn.cpp:229 +msgid "High (+1)" +msgstr "ВиÑокий (+1)" + +#: src/panasonicmn.cpp:230 +msgid "Lowest (-2)" +msgstr "Ðайнижчий (-2)" + +#: src/panasonicmn.cpp:231 +msgid "Highest (+2)" +msgstr "Ðайвищий (+2)" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +#, fuzzy +msgid "Rotate 180" +msgstr "Обернути на 90° за г. Ñтр." + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +#, fuzzy +msgid "Disabled but Required" +msgstr "Ðе потрібне" + +#: src/panasonicmn.cpp:255 +#, fuzzy +msgid "Disabled and Not Required" +msgstr "Ðе потрібне" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "Домівка" + +#: src/panasonicmn.cpp:294 +#, fuzzy +msgid "Standard (color)" +msgstr "Стандартна форма" + +#: src/panasonicmn.cpp:295 +#, fuzzy +msgid "Dynamic (color)" +msgstr "Динамічна облаÑть" + +#: src/panasonicmn.cpp:296 +#, fuzzy +msgid "Nature (color)" +msgstr "Ðатуральний колір" + +#: src/panasonicmn.cpp:297 +#, fuzzy +msgid "Smooth (color)" +msgstr "Згладити" + +#: src/panasonicmn.cpp:298 +#, fuzzy +msgid "Standard (B&W)" +msgstr "Стандартна " + +#: src/panasonicmn.cpp:299 +#, fuzzy +msgid "Dynamic (B&W)" +msgstr "Динамічна облаÑть" + +#: src/panasonicmn.cpp:300 +#, fuzzy +msgid "Smooth (B&W)" +msgstr "Згладити" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +#, fuzzy +msgid "No Bracket" +msgstr "ÐвтообмеженнÑ" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10 Ñ" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Розширювач" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Ðвто" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Стандартна форма" + +#: src/panasonicmn.cpp:386 +#, fuzzy +msgid "Rotate CW" +msgstr "Обернути на 90° за г. Ñтр." + +#: src/panasonicmn.cpp:388 +#, fuzzy +msgid "Rotate CCW" +msgstr "Обернути на 90° за г. Ñтр." + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Зліва праворуч" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Справа ліворуч" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Згори вниз" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Знизу догори" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Ð§Ð°Ñ ÑтвореннÑ" + +#: src/panasonicmn.cpp:406 +#, fuzzy +msgid "Stop-Motion Animation" +msgstr "ВідомоÑті про позицію автофокуÑу" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Вибрані" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "Ðудіо" + +#: src/panasonicmn.cpp:453 +#, fuzzy +msgid "White balance adjustment" +msgstr "Точне ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" + +#: src/panasonicmn.cpp:454 +#, fuzzy +msgid "FlashBias" +msgstr "Ухил Ñпалаху" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +msgid "Exif version" +msgstr "ВерÑÑ–Ñ Exif" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Ефект кольорів" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Ефект кольорів" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst Mode" +msgstr "Режим вилки" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst mode" +msgstr "Режим фокуÑу" + +#: src/panasonicmn.cpp:463 +#, fuzzy +msgid "NoiseReduction" +msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð²" + +#: src/panasonicmn.cpp:464 +msgid "Self Timer" +msgstr "ÐвтоÑпуÑк" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "AF ÐÑиÑтент" + +#: src/panasonicmn.cpp:469 +#, fuzzy +msgid "Baby Age 1" +msgstr "Вік 19" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical Zoom Mode" +msgstr "Режим фільму" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical zoom mode" +msgstr "Режим фільму" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +msgid "World Time Location" +msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° вÑеÑвітнім чаÑом" + +#: src/panasonicmn.cpp:474 +msgid "World time location" +msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° вÑеÑвітнім чаÑом" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Програма" + +#: src/panasonicmn.cpp:477 +#, fuzzy +msgid "Advanced Scene Type" +msgstr "Тип Ñцени" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "" + +#: src/panasonicmn.cpp:479 +#, fuzzy +msgid "Faces detected" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temp Kelvin" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¢ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸ Кольору" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Кольорова температура" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Ðвтовилка" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "Виправити" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "Виправити" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Дані щодо Ñпалаху" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² при довгій екÑпозиції" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð²Ñ‚Ð¾Ñ„Ð¾ÐºÑƒÑу" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Тип Лінзи" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "Тип лінзи" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Серійний номер фотоапарата" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "ÐвтоекÑпозиціÑ" + +#: src/panasonicmn.cpp:499 +msgid "Firmware Version of the Lens" +msgstr "" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ фокуÑ" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Дані щодо Ñпалаху" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Заголовок" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Ðазва Ñтрічки" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "ÐдреÑа" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "ОблаÑть" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "ШвидкіÑть затвору" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +#, fuzzy +msgid "Intelligent Dynamic Range" +msgstr "Динамічні Межі Розробки" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "МіÑто/Селище" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Стиль зображеннÑ" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/panasonicmn.cpp:521 +#, fuzzy +msgid "Roll Angle" +msgstr "ЛоÑ-ÐнджелеÑ" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "ÐапрÑмок панорами" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +#, fuzzy +msgid "Timer Recording" +msgstr "Ð—Ð°Ð¿Ð¸Ñ RAW+JPG" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Внутрішнє+зовнішнє" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "ШвидкіÑть затвору" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Розмір діафрагми" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB Red Level" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB red level" +msgstr "Ðалаштовуваний рівень червоного (ББ)" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB Green Level" +msgstr "Ðалаштовуваний рівень зеленого (ББ)" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +#, fuzzy +msgid "WB green level" +msgstr "Ðалаштовуваний рівень зеленого (ББ)" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB Blue Level" +msgstr "Ðалаштовуваний рівень блакитного (ББ)" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB blue level" +msgstr "Ðалаштовуваний рівень блакитного (ББ)" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "" + +#: src/panasonicmn.cpp:541 +#, fuzzy +msgid "Baby Age 2" +msgstr "Вік 24" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +#, fuzzy +msgid "Unknown PanasonicMakerNote tag" +msgstr "Ðевідома мітка CanonMakerNote" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +#, fuzzy +msgid "Spot focussing" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +#, fuzzy +msgid "3-area (right)" +msgstr "Далеко праворуч" + +#: src/panasonicmn.cpp:574 +#, fuzzy +msgid "Spot Focusing 2" +msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° плÑмами" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr "" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "не вÑтановлено\n" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ ÑенÑор" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ ÑенÑор" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ°" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ñ‚Ñ‡Ð¸ÐºÐ°" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor Top Border" +msgstr "Температура датчика" + +#: src/panasonicmn.cpp:728 +#, fuzzy +msgid "Sensor top border" +msgstr "Температура датчика" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor Left Border" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ СенÑор" + +#: src/panasonicmn.cpp:729 +#, fuzzy +msgid "Sensor left border" +msgstr "Рівень Ñинього на датчику" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Виробник" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +msgid "Model" +msgstr "Модель" + +#: src/panasonicmn.cpp:740 +msgid "The model name or model number of the equipment" +msgstr "" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +#, fuzzy +msgid "Strip Offsets" +msgstr "ЗміщеннÑ" + +#: src/panasonicmn.cpp:741 +#, fuzzy +msgid "Strip offsets" +msgstr "зміщеннÑ" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +msgid "Orientation" +msgstr "ОрієнтаціÑ" + +#: src/panasonicmn.cpp:743 +msgid "Rows Per Strip" +msgstr "РÑдків на Ñмугу" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "The number of rows per strip" +msgstr "КількіÑть тактів." + +#: src/panasonicmn.cpp:744 +msgid "Strip Byte Counts" +msgstr "" + +#: src/panasonicmn.cpp:744 +msgid "Strip byte counts" +msgstr "" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw Data Offset" +msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ VRD" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "ВідÑтуп облаÑті зображеннÑ" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "Ðевідомий панорамний тег Canon" + +#: src/pentaxmn.cpp:57 +msgid "Night-Scene" +msgstr "Ðічне оÑвітленнÑ" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Добре" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Краще" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Ðайкраще" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "Вищий Ñорт" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 або 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 або 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 або 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "Ðвто, не Ñпрацювала" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +#, fuzzy +msgid "Off, Did not fire" +msgstr "Ðе Ñпрацював" + +#: src/pentaxmn.cpp:250 +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Ðвто, не Ñпрацювала, Ð¿Ñ€Ð¸Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +msgid "Auto, Fired" +msgstr "Ðвто, Ñпрацювала" + +#: src/pentaxmn.cpp:253 +#, fuzzy +msgid "On, Fired" +msgstr "ВикориÑтано" + +#: src/pentaxmn.cpp:254 +msgid "Auto, Fired, Red-eye reduction" +msgstr "Ðвто, Ñпрацювала, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Увімкнено, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "Увімкнено, програмний" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Увімкнено, повільна ÑинхронізаціÑ" + +#: src/pentaxmn.cpp:260 +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Увімкнено, повільна ÑинхронізаціÑ, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +msgid "Pan Focus" +msgstr "Панорамне фокуÑуваннÑ" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "AF-A" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "КонтраÑтний автофокуÑ" + +#: src/pentaxmn.cpp:277 +#, fuzzy +msgid "Tracking Contrast-detect" +msgstr "КонтраÑтний автофокуÑ" + +#: src/pentaxmn.cpp:284 +msgid "Fixed Center" +msgstr "ФікÑована за центром" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "Ðвтоматична ÐФ" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Вибрані" + +#: src/pentaxmn.cpp:305 +#, fuzzy +msgid "Fixed Center or multiple" +msgstr "ФікÑована за центром" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "ПоÑередині згори" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "ПоÑередині знизу" + +#: src/pentaxmn.cpp:402 +#, fuzzy +msgid "Multi Segment" +msgstr "Мульти-Ñегмент" + +#: src/pentaxmn.cpp:403 +msgid "Center Weighted" +msgstr "Центрально-зважений" + +#: src/pentaxmn.cpp:415 +#, fuzzy +msgid "DaylightFluorescent" +msgstr "Денне Ñвітло" + +#: src/pentaxmn.cpp:416 +#, fuzzy +msgid "DaywhiteFluorescent" +msgstr "Тепле біле флуореÑцентне" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "Біле флуореÑцентне" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¢ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸ Кольору" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Вибрана кориÑтувачем" + +#: src/pentaxmn.cpp:428 +#, fuzzy +msgid "Auto (Daylight)" +msgstr "Денне Ñвітло" + +#: src/pentaxmn.cpp:429 +#, fuzzy +msgid "Auto (Shade)" +msgstr "Ðвтоматично визначати ISO" + +#: src/pentaxmn.cpp:430 +#, fuzzy +msgid "Auto (Flash)" +msgstr "Без Ñпалаху" + +#: src/pentaxmn.cpp:431 +#, fuzzy +msgid "Auto (Tungsten)" +msgstr "Лампа розжарюваннÑ" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "Денне Ñвітло" + +#: src/pentaxmn.cpp:433 +#, fuzzy +msgid "Auto (DaywhiteFluorescent)" +msgstr "Тепле біле флуореÑцентне" + +#: src/pentaxmn.cpp:434 +#, fuzzy +msgid "Auto (WhiteFluorescent)" +msgstr "Холодне біле флуореÑцентне" + +#: src/pentaxmn.cpp:435 +#, fuzzy +msgid "Auto (Cloudy)" +msgstr "Хмарно" + +#: src/pentaxmn.cpp:437 +#, fuzzy +msgid "Preset (Fireworks?)" +msgstr "Феєрверк" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +#, fuzzy +msgid "Med Low" +msgstr "Дуже низький" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +#, fuzzy +msgid "Med High" +msgstr "Дуже виÑокий" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +#, fuzzy +msgid "Med Soft" +msgstr "М’Ñкий" + +#: src/pentaxmn.cpp:474 +#, fuzzy +msgid "Med Hard" +msgstr "ЖорÑткий" + +#: src/pentaxmn.cpp:475 +#, fuzzy +msgid "Very Soft" +msgstr "Дуже низький" + +#: src/pentaxmn.cpp:476 +#, fuzzy +msgid "Very Hard" +msgstr "Дуже виÑокий" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +#, fuzzy +msgid "Home town" +msgstr "МіÑцевий Ñ‡Ð°Ñ (DST)" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "Паго-Паго" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "Гонолулу" + +#: src/pentaxmn.cpp:491 +msgid "Anchorage" +msgstr "Ðнкорідж" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "Ванкувер" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "Сан-ФранциÑко" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "ЛоÑ-ÐнджелеÑ" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "Калгарі" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "Денвер" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "Мехіко" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "Чикаго" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "Майамі" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "Торонто" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "Ðью-Йорк" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "СантьÑго" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "КаракаÑ" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "ГаліфакÑ" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "БуеноÑ-ÐйреÑ" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "Сан-Паулу" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "Ріо-де-Жанейро" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "Мадрид" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "Лондон" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "Париж" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "Мілан" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "Рим" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "Берлін" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "ЙоганнеÑбург" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "Стамбул" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "Каїр" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "ЄруÑалим" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "МоÑква" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "Джедда" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "Тегеран" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "Дубаї" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "Карачі" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "Кабул" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "Мале" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "Делі" + +#: src/pentaxmn.cpp:526 +msgid "Colombo" +msgstr "Коломбо" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "Катманду" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "Дакка" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "Янгон" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "Бангкок" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "Куала-Лумпур" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "Ð’'єнтьÑн" + +#: src/pentaxmn.cpp:533 +msgid "Singapore" +msgstr "Сінгапур" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "Пномпень" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "Хошимін" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "Джакарта" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "Гонконг" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "Перт" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "Пекін" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "Шанхай" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "Маніла" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "Тайбей" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "Сеул" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "Ðделаїда" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "Токіо" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "Гуам" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "Сідней" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "Ðумеа" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "Веллінгтон" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "Окленд" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "Ліма" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "Дакар" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "Ðлжир" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "ГельÑінкі" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "Ðфіни" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "Ðайробі" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "ÐмÑтердам" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "Стокгольм" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "ЛіÑабон" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "Копенгаген" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "Без обробки" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "розмір" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Цифровий фільтр" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +#, fuzzy +msgid "Hi-speed Program" +msgstr "Програма екÑпозиції" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +#, fuzzy +msgid "DOF Program" +msgstr "Програма" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +#, fuzzy +msgid "MTF Program" +msgstr "Програма" + +#: src/pentaxmn.cpp:588 +#, fuzzy +msgid "Night Scene Portrait" +msgstr "Ðічний портрет" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Без Ñпалаху" + +#: src/pentaxmn.cpp:592 +msgid "Surf & Snow" +msgstr "ÐŸÐ¾Ð²ÐµÑ€Ñ…Ð½Ñ Ñ– Ñніг" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "Діти" + +#: src/pentaxmn.cpp:600 +msgid "Stage Lighting" +msgstr "Сценічне оÑвітленнÑ" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "Ðічний пейзаж" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "Синій" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Ðічне оÑвітленнÑ" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Супер Макро" + +#: src/pentaxmn.cpp:607 +#, fuzzy +msgid "Forest" +msgstr "ФлуореÑцентна лампа" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +msgid "Auto PICT (Standard)" +msgstr "" + +#: src/pentaxmn.cpp:611 +#, fuzzy +msgid "Auto PICT (Portrait)" +msgstr "ÐвтоконтраÑтніÑть" + +#: src/pentaxmn.cpp:612 +#, fuzzy +msgid "Auto PICT (Landscape)" +msgstr "Ðльбомна" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "" + +#: src/pentaxmn.cpp:614 +#, fuzzy +msgid "Auto PICT (Sport)" +msgstr "ÐвтоконтраÑтніÑть" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +msgid "Green Mode" +msgstr "Режим зеленого" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +#, fuzzy +msgid "Shutter Speed Priority" +msgstr "Пріоритет витримки швидкіÑть AE" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Пріоритет діафрагми" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "Кнопка" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Програмне автоекÑпонуваннÑ" + +#: src/pentaxmn.cpp:635 +#, fuzzy +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Пріоритет діафрагми (Av)" + +#: src/pentaxmn.cpp:636 +#, fuzzy +msgid "Manual (Off-Auto-Aperture)" +msgstr "Ðвтодіафрагма" + +#: src/pentaxmn.cpp:637 +#, fuzzy +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Ðвтодіафрагма" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Пріоритет затвору" + +#: src/pentaxmn.cpp:640 +#, fuzzy +msgid "Shutter & Aperture Priority AE" +msgstr "Пріоритет витримки швидкіÑть AE" + +#: src/pentaxmn.cpp:641 +#, fuzzy +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Пріоритет витримки швидкіÑть AE" + +#: src/pentaxmn.cpp:642 +#, fuzzy +msgid "Sensitivity Priority AE" +msgstr "Пріоритет затвору" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:644 +#, fuzzy +msgid "Flash X-Sync Speed AE" +msgstr "ШвидкіÑть Ñинхронізації Ñпалаху у режимі Av" + +#: src/pentaxmn.cpp:645 +#, fuzzy +msgid "Flash X-Sync Speed AE (1)" +msgstr "ШвидкіÑть Ñинхронізації Ñпалаху у режимі Av" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Програма (P)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Програма (P)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Програма (P)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ð¾Ð¼" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +#, fuzzy +msgid "Continuous (Hi)" +msgstr "Ðеперервна, виÑока" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "Бульба" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "Відео" + +#: src/pentaxmn.cpp:666 +#, fuzzy +msgid "Self-timer (12 sec)" +msgstr "ÐвтоÑпуÑк 2 Ñек" + +#: src/pentaxmn.cpp:667 +#, fuzzy +msgid "Self-timer (2 sec)" +msgstr "ÐвтоÑпуÑк 2 Ñек" + +#: src/pentaxmn.cpp:669 +#, fuzzy +msgid "Mirror Lock-up" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»Ð°" + +#: src/pentaxmn.cpp:670 +#, fuzzy +msgid "Remote Control (3 sec)" +msgstr "ДиÑтанційне керуваннÑ" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "ДиÑтанційне керуваннÑ" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Ðеперервна, виÑока" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Складний" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Складний" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Складний" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Ðвто" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "" + +#: src/pentaxmn.cpp:691 +msgid "K or M Lens" +msgstr "" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "ЯÑкраво" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "Діапозитив" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +#, fuzzy +msgid "Weakest" +msgstr "ПроÑтий" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "ПроÑтий" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Складний" + +#: src/pentaxmn.cpp:1112 +#, fuzzy +msgid "No extended bracketing" +msgstr "Брекетинг баланÑу білого" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "WB-BA" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "WB-GM" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Ðевідомий " + +#: src/pentaxmn.cpp:1146 +#, fuzzy +msgid "Pentax Makernote version" +msgstr "ВерÑÑ–Ñ Nikon Makernote" + +#: src/pentaxmn.cpp:1149 +#, fuzzy +msgid "Camera shooting mode" +msgstr "Режим проÑтого зніманнÑ" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +#, fuzzy +msgid "Resolution of a preview image" +msgstr "Вказівник на попереднє зображеннÑ" + +#: src/pentaxmn.cpp:1154 +#, fuzzy +msgid "Length of a preview image" +msgstr "Вказівник на попереднє зображеннÑ" + +#: src/pentaxmn.cpp:1155 +msgid "Size of an IFD containing a preview image" +msgstr "" + +#: src/pentaxmn.cpp:1160 +msgid "Model identification" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Дата" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "ЧаÑ" + +#: src/pentaxmn.cpp:1170 +#, fuzzy +msgid "Image quality settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑкоÑті зображеннÑ" + +#: src/pentaxmn.cpp:1173 +#, fuzzy +msgid "Image size settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑкоÑті зображеннÑ" + +#: src/pentaxmn.cpp:1177 +#, fuzzy +msgid "Flash mode settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалаху" + +#: src/pentaxmn.cpp:1180 +#, fuzzy +msgid "Focus mode settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑу" + +#: src/pentaxmn.cpp:1183 +#, fuzzy +msgid "Selected AF point" +msgstr "Точка ÐФ" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "AF точка викориÑтана" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +msgid "F-Number" +msgstr "ЧиÑло F" + +#: src/pentaxmn.cpp:1195 +#, fuzzy +msgid "ISO sensitivity" +msgstr "ВиÑока чутливіÑть" + +#: src/pentaxmn.cpp:1196 +#, fuzzy +msgid "ISO sensitivity settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÑƒÑ‚Ð»Ð¸Ð²Ð¾Ñті ISO" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +#, fuzzy +msgid "MeteringMode" +msgstr "Режим вимірюваннÑ" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +#, fuzzy +msgid "AutoBracketing" +msgstr "ÐвтообмеженнÑ" + +#: src/pentaxmn.cpp:1216 +#, fuzzy +msgid "Blue color balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñинього" + +#: src/pentaxmn.cpp:1219 +#, fuzzy +msgid "Red color balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +#, fuzzy +msgid "FocalLength" +msgstr "ФокуÑна відÑтань" + +#: src/pentaxmn.cpp:1239 +#, fuzzy +msgid "Hometown" +msgstr "МіÑцевий Ñ‡Ð°Ñ (DST)" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "МіÑцевий Ñ‡Ð°Ñ (DST)" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +msgid "Destination DST" +msgstr "Ð§Ð°Ñ Ð¼Ñ–ÑÑ†Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (DST)" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/pentaxmn.cpp:1261 +#, fuzzy +msgid "Light value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑÑкравоÑті" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +msgid "Image area offset" +msgstr "ВідÑтуп облаÑті зображеннÑ" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "Розмір цифрового негатива" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +#, fuzzy +msgid "Preview image borders" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +#, fuzzy +msgid "Sensitivity adjust" +msgstr "ВиÑока чутливіÑть" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Цифровий фільтр" + +#: src/pentaxmn.cpp:1299 +msgid "Camera temperature" +msgstr "Температура фотоапарата" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +msgid "Image tone" +msgstr "Тон зображеннÑ" + +#: src/pentaxmn.cpp:1319 +#, fuzzy +msgid "Shake reduction" +msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñƒ" + +#: src/pentaxmn.cpp:1320 +#, fuzzy +msgid "Shake reduction information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +#, fuzzy +msgid "Dynamic range expansion" +msgstr "Параметри динамічного діапазону" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Чорна точка" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Біла точка" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +#, fuzzy +msgid "ShotInfo" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +#, fuzzy +msgid "AEInfo" +msgstr "AF інформаціÑ" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +#, fuzzy +msgid "LensInfo" +msgstr "Дані щодо об’єктива" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +#, fuzzy +msgid "FlashInfo" +msgstr "Дані щодо Ñпалаху" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +msgid "AEMeteringSegments" +msgstr "" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð¡Ð¿Ð°Ð»Ð°Ñ…Ñƒ" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð¡Ð¿Ð°Ð»Ð°Ñ…Ñƒ" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentD" +msgstr "ФлуореÑцентна лампа" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentN" +msgstr "ФлуореÑцентна лампа" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +#, fuzzy +msgid "WB_RGGBLevelsFluorescentW" +msgstr "ФлуореÑцентна лампа" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +#, fuzzy +msgid "CameraInfo" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ камеру" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +#, fuzzy +msgid "BatteryInfo" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ камеру" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +#, fuzzy +msgid "AFInfo" +msgstr "AF інформаціÑ" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +#, fuzzy +msgid "ColorInfo" +msgstr "Колір" + +#: src/pentaxmn.cpp:1405 +#, fuzzy +msgid "Unknown PentaxMakerNote tag" +msgstr "Ðевідомий тег Minolta MakerNote" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "" + +#: src/properties.cpp:118 +#, fuzzy +msgid "XMP Dynamic Media schema" +msgstr "Динамічна облаÑть" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "" + +#: src/properties.cpp:121 +#, fuzzy +msgid "Adobe PDF schema" +msgstr "Adobe Deflate" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "" + +#: src/properties.cpp:123 +#, fuzzy +msgid "Camera Raw schema" +msgstr "Марка фотоапарата" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +#, fuzzy +msgid "IPTC Core schema" +msgstr "Схема Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ IPTC" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "Схема Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ IPTC" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "Схема формату ліцензійних даних PLUS" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +#, fuzzy +msgid "Expression Media schema" +msgstr "Схема Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ IPTC" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +#, fuzzy +msgid "XMP Extended Video schema" +msgstr "Схема Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ IPTC" + +#: src/properties.cpp:140 +#, fuzzy +msgid "XMP Extended Audio schema" +msgstr "Схема Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ IPTC" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +#, fuzzy +msgid "Colorant structure" +msgstr "Кольорова температура" + +#: src/properties.cpp:149 +msgid "Dimensions structure" +msgstr "" + +#: src/properties.cpp:150 +msgid "Font structure" +msgstr "" + +#: src/properties.cpp:151 +#, fuzzy +msgid "Thumbnail structure" +msgstr "Мініатюри" + +#: src/properties.cpp:152 +msgid "Resource Event structure" +msgstr "" + +#: src/properties.cpp:153 +msgid "ResourceRef structure" +msgstr "" + +#: src/properties.cpp:154 +#, fuzzy +msgid "Version structure" +msgstr "ВерÑÑ–Ñ—" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Діафрагма" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +#, fuzzy +msgid "Contributor" +msgstr "Ðеперервний" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +#, fuzzy +msgid "Coverage" +msgstr "ПоÑередньо" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Ðвтор" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Формат" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "Ідентифікатор" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Видавець" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Зв’Ñзок" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Права" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +msgid "Unique identifier of the work from which this resource was derived." +msgstr "" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Тип" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "СпиÑок міток" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +msgid "Captions Author Names" +msgstr "Імена авторів підпиÑів" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "Імена авторів підпиÑів" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Журнал змін зображеннÑ" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Параметри об’єктиву" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +msgid "Color Label" +msgstr "Позначка кольору" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Мітка" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Рамка панорами" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +#, fuzzy +msgid "Enfuse Input Files" +msgstr "Параметри enfuse" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +msgid "Enfuse Settings" +msgstr "Параметри enfuse" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "РекомендаціÑ" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "ОÑновна адреÑа" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +#, fuzzy +msgid "Create Date" +msgstr "Дата випуÑку" + +#: src/properties.cpp:224 +#, fuzzy +msgid "The date and time the resource was originally created." +msgstr "Дата Ñ– чаÑ, коли Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ збережено у форматі цифрових даних." + +#: src/properties.cpp:225 +#, fuzzy +msgid "Creator Tool" +msgstr "Ðвтор" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Мітка" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +#, fuzzy +msgid "Metadata Date" +msgstr "Дата Minolta" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +#, fuzzy +msgid "Modify Date" +msgstr "Дата Minolta" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "ПÑевдонім" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "Коротка інформативна назва реÑурÑу." + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Оцінка" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +msgid "Thumbnails" +msgstr "Мініатюри" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Сертифікат" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Позначено" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "ВлаÑник" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +#, fuzzy +msgid "Derived From" +msgstr "Режим мотора" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +#, fuzzy +msgid "Document ID" +msgstr "Документи" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "Журнал" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "Ідентифікатор екземплÑра" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +#, fuzzy +msgid "Managed From" +msgstr "КеруваннÑ" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "КеруваннÑ" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "КеруваннÑ" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "КеруваннÑ" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "КеруваннÑ" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +#, fuzzy +msgid "Rendition Params" +msgstr "Параметри Ð²Ð¸ÐºÑ€Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸Ð²Ð¾Ð¼" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +#, fuzzy +msgid "Version ID" +msgstr "ВерÑÑ–Ñ" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "ВерÑÑ–Ñ—" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +#, fuzzy +msgid "Last URL" +msgstr "ОÑновна адреÑа" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +#, fuzzy +msgid "Rendition Of" +msgstr "Зв’Ñзок" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +#, fuzzy +msgid "Job Reference" +msgstr "Дата" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +#, fuzzy +msgid "Maximum Page Size" +msgstr "Розмір зображеннÑ" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "КількіÑть Ñторінок" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Шрифти" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" + +#: src/properties.cpp:322 +#, fuzzy +msgid "Colorants" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Колір" + +#: src/properties.cpp:322 +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "Ðазва Ñтрічки" + +#: src/properties.cpp:323 +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" + +#: src/properties.cpp:329 src/properties.cpp:1285 +#, fuzzy +msgid "Project Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "" + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "" + +#: src/properties.cpp:332 +#, fuzzy +msgid "Video Pixel Aspect Ratio" +msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "Video Pixel Depth" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +#, fuzzy +msgid "Video Color Space" +msgstr "ПроÑтір кольорів" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" + +#: src/properties.cpp:337 +#, fuzzy +msgid "Video Alpha Mode" +msgstr "Модель Minolta" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +#, fuzzy +msgid "Video Compressor" +msgstr "Звуковий кодек" + +#: src/properties.cpp:341 +#, fuzzy +msgid "Video compression used. For example, jpeg." +msgstr "Звуковий кодек викориÑтаний Ð´Ð»Ñ ÑтиÑканнÑ. Приклад: MP3." + +#: src/properties.cpp:342 +#, fuzzy +msgid "Video Field Order" +msgstr "ПорÑдок заповненнÑ" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "" + +#: src/properties.cpp:343 +#, fuzzy +msgid "Pull Down" +msgstr "Вниз" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +#, fuzzy +msgid "Audio Sample Rate" +msgstr "ЧаÑтота вибірки" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" + +#: src/properties.cpp:346 src/properties.cpp:1426 +#, fuzzy +msgid "Audio Sample Type" +msgstr "Тип звукового каналу" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Тип звукового каналу" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Звуковий кодек" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Звуковий кодек викориÑтаний Ð´Ð»Ñ ÑтиÑканнÑ. Приклад: MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Дата Minolta" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +msgid "Tape Name" +msgstr "Ðазва Ñтрічки" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +#, fuzzy +msgid "Alternative Tape Name" +msgstr "Ðазва Ñтрічки" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "ТриваліÑть" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:358 +msgid "Scene" +msgstr "Сцена" + +#: src/properties.cpp:358 +msgid "The name of the scene." +msgstr "Ðазва Ñцени." + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Ðазва зйомки" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Дата зйомки" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "МіÑце зйомки" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" + +#: src/properties.cpp:363 +#, fuzzy +msgid "Log Comment" +msgstr "Коментар кориÑтувача" + +#: src/properties.cpp:363 +#, fuzzy +msgid "User's log comments." +msgstr "Коментар кориÑтувача" + +#: src/properties.cpp:364 +msgid "Markers" +msgstr "Маркери" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +msgid "Contributed Media" +msgstr "" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +msgid "Video Modified Date" +msgstr "" + +#: src/properties.cpp:368 +#, fuzzy +msgid "The date and time when the video was last modified." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:369 +#, fuzzy +msgid "Audio Modified Date" +msgstr "ЧаÑтота вибірки" + +#: src/properties.cpp:369 +#, fuzzy +msgid "The date and time when the audio was last modified." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:370 +msgid "Metadata Modified Date" +msgstr "" + +#: src/properties.cpp:370 +#, fuzzy +msgid "The date and time when the metadata was last modified." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Виконавець" + +#: src/properties.cpp:371 src/properties.cpp:1058 +msgid "The name of the artist or artists." +msgstr "Ð†Ð¼â€™Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð²Ñ†Ñ Ð°Ð±Ð¾ назва групи виконавців." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Ðльбом" + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "The name of the album." +msgstr "Ðазва альбому." + +#: src/properties.cpp:373 src/properties.cpp:1366 +msgid "Track Number" +msgstr "Ðомер композиції" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "Жанр" + +#: src/properties.cpp:374 src/properties.cpp:1166 +#, fuzzy +msgid "The name of the genre." +msgstr "Ðазва Ñцени." + +#: src/properties.cpp:375 +#, fuzzy +msgid "The copyright information." +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:376 +#, fuzzy +msgid "The date the title was released." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Композитор" + +#: src/properties.cpp:377 +msgid "The composer's name." +msgstr "Ð†Ð¼â€™Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð°." + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "Інженер запиÑу" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Ð†Ð¼â€™Ñ Ñ–Ð½Ð¶ÐµÐ½ÐµÑ€Ð°." + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Ритм" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "Ритм звуку." + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "ІнÑтрумент" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Музичний інÑтрумент." + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "ТриваліÑть вÑтупу" + +#: src/properties.cpp:381 +#, fuzzy +msgid "The duration of lead time for queuing music." +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +#, fuzzy +msgid "Relative Timestamp" +msgstr "ЧаÑова мітка зображеннÑ" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Цикл" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +msgid "Number Of Beats" +msgstr "КількіÑть тактів" + +#: src/properties.cpp:385 +msgid "The number of beats." +msgstr "КількіÑть тактів." + +#: src/properties.cpp:386 +msgid "Key" +msgstr "ТональніÑть" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +#, fuzzy +msgid "Stretch Mode" +msgstr "Режим вилки" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +msgid "Time Signature" +msgstr "Знак розмірноÑті" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +#, fuzzy +msgid "Scale Type" +msgstr "Тип Ñцени" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +msgid "Camera Serial Number" +msgstr "Серійний номер фотоапарата" + +#: src/properties.cpp:399 +msgid "Camera Serial Number." +msgstr "Серійний номер фотоапарата." + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired" +msgstr "Ðе потрібне" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired." +msgstr "Ðе потрібне" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer" +msgstr "Виробник" + +#: src/properties.cpp:401 +#, fuzzy +msgid "Flash Manufacturer." +msgstr "Виробник" + +#: src/properties.cpp:402 +#, fuzzy +msgid "Flash Model." +msgstr "Режим Ñпалаху" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP." +msgstr "Ключові Ñлова." + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer" +msgstr "Виробник" + +#: src/properties.cpp:405 +#, fuzzy +msgid "Lens Manufacturer." +msgstr "Виробник" + +#: src/properties.cpp:406 src/properties.cpp:1199 +#, fuzzy +msgid "Lens Model." +msgstr "Режим Ñцени" + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent" +msgstr "Оцінка" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ картинку" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Ключові Ñлова." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "ВерÑÑ–Ñ PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð° PDF (приклад: 1.0, 1.3 тощо)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Виробник" + +#: src/properties.cpp:422 +#, fuzzy +msgid "The name of the tool that created the PDF document." +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:428 +#, fuzzy +msgid "Authors Position" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/properties.cpp:428 +#, fuzzy +msgid "By-line title." +msgstr "ПоÑада автора" + +#: src/properties.cpp:429 +msgid "Caption Writer" +msgstr "Ðвтор підпиÑу" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "СценариÑÑ‚, редактор." + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "МіÑто/Селище." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "Країна або оÑновна назва міÑцевоÑті." + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "ПодÑка." + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Заголовок." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "ОÑобливі наÑтанови." + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Джерело." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "ÐŸÑ€Ð¾Ð²Ñ–Ð½Ñ†Ñ–Ñ Ð°Ð±Ð¾ облаÑть." + +#: src/properties.cpp:442 +#, fuzzy +msgid "Supplemental category." +msgstr "Додаткова категоріÑ" + +#: src/properties.cpp:443 +#, fuzzy +msgid "Original transmission reference." +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +msgid "inches" +msgstr "дюйми" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "Ñм" + +#: src/properties.cpp:457 +msgid "Auto Brightness" +msgstr "ÐвтоÑÑкравіÑть" + +#: src/properties.cpp:457 +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "ÐвтоконтраÑтніÑть" + +#: src/properties.cpp:458 +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "ÐвтоекÑпозиціÑ" + +#: src/properties.cpp:459 +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:460 +#, fuzzy +msgid "Auto Shadows" +msgstr "Тіні" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "" + +#: src/properties.cpp:461 +#, fuzzy +msgid "Blue Hue" +msgstr "Синій" + +#: src/properties.cpp:461 +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "" + +#: src/properties.cpp:462 +msgid "Blue Saturation" +msgstr "ÐаÑиченіÑть Ñинього" + +#: src/properties.cpp:462 +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:463 +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "" + +#: src/properties.cpp:464 +msgid "Camera Profile" +msgstr "Профіль фотоапарата" + +#: src/properties.cpp:464 +#, fuzzy +msgid "\"Camera Profile\" setting." +msgstr "Профіль фотоапарата" + +#: src/properties.cpp:465 +#, fuzzy +msgid "Chromatic Aberration Blue" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті кольорів" + +#: src/properties.cpp:465 +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:466 +#, fuzzy +msgid "Chromatic Aberration Red" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті кольорів" + +#: src/properties.cpp:466 +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "Color Noise Reduction" +msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð²" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті" + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "" + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +#, fuzzy +msgid "Crop Bottom" +msgstr "Ðижнє" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +#, fuzzy +msgid "Crop Right" +msgstr "Далеко праворуч" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +#, fuzzy +msgid "Crop Angle" +msgstr "ЛоÑ-ÐнджелеÑ" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +#, fuzzy +msgid "Crop Units" +msgstr "Координаційні одиниці" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "" + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Режим зеленого" + +#: src/properties.cpp:478 +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:479 +#, fuzzy +msgid "Green Saturation" +msgstr "ÐаÑиченіÑть червоного" + +#: src/properties.cpp:479 +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +#, fuzzy +msgid "Has Settings" +msgstr "Параметри Ñпалаху" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:483 +#, fuzzy +msgid "Raw File Name" +msgstr "Ðазва файлу" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "" + +#: src/properties.cpp:484 +#, fuzzy +msgid "Red Hue" +msgstr "Червоні очі" + +#: src/properties.cpp:484 +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:485 +msgid "Red Saturation" +msgstr "ÐаÑиченіÑть червоного" + +#: src/properties.cpp:485 +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:486 +#, fuzzy +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°ÑиченоÑті" + +#: src/properties.cpp:487 +msgid "Shadows" +msgstr "Тіні" + +#: src/properties.cpp:487 +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:488 +#, fuzzy +msgid "Shadow Tint" +msgstr "Тінь" + +#: src/properties.cpp:488 +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:489 src/properties.cpp:1301 +#, fuzzy +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾Ñті" + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "" + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "ЗатіненнÑ" + +#: src/properties.cpp:491 +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "" + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "Крива тону" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +#, fuzzy +msgid "Tone Curve Name" +msgstr "Крива тону" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +#, fuzzy +msgid "Vignette Amount" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð½ÑŒÑ”Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñм" + +#: src/properties.cpp:496 +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "" + +#: src/properties.cpp:497 +#, fuzzy +msgid "Vignette Midpoint" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð½ÑŒÑ”Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñм" + +#: src/properties.cpp:497 +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "" + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Довжина зображеннÑ" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +msgid "Bits Per Sample" +msgstr "Бітів на фрагмент" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +msgid "Compression" +msgstr "СтиÑненнÑ" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "Фотометрична інтерпретаціÑ" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +#, fuzzy +msgid "Samples Per Pixel" +msgstr "КількіÑть ÑтиÑнених бітів на пікÑель" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +#, fuzzy +msgid "Planar Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ–Ð²" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ YCbCr" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Роздільна здатніÑть за X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Роздільна здатніÑть за Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +msgid "Resolution Unit" +msgstr "ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñті" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +msgid "Transfer Function" +msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑеннÑ" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Біла точка" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +msgid "Primary Chromaticities" +msgstr "" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +msgid "Reference Black White" +msgstr "Еталонні чорне/біле" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Дата Ñ– чаÑ" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +msgid "Make" +msgstr "Виробник" + +#: src/properties.cpp:542 +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +msgid "Exif Version" +msgstr "ВерÑÑ–Ñ Exif" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +msgid "Flashpix Version" +msgstr "ВерÑÑ–Ñ FlashPix" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +msgid "Components Configuration" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ–Ð²" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +msgid "Compressed Bits Per Pixel" +msgstr "КількіÑть ÑтиÑнених бітів на пікÑель" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Коментар кориÑтувача" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Пов’Ñзаний звуковий файл" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Дата Ñ– Ñ‡Ð°Ñ (зніманнÑ)" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +msgid "Date and Time Digitized" +msgstr "Дата Ñ– Ñ‡Ð°Ñ (оцифровуваннÑ)" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Діафрагмове чиÑло" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +msgid "Spectral Sensitivity" +msgstr "Спектральна чутливіÑть" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "СвітлочутливіÑть ISO" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "" + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑÑкравоÑті" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "" + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "МакÑимальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:585 +#, fuzzy +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "ВідÑтань до об’єкта, вказана у метрах." + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "" + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:590 src/tags.cpp:1666 +msgid "Subject Area" +msgstr "Площа об'єкту" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Ð•Ð½ÐµÑ€Ð³Ñ–Ñ Ñпалаху" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +msgid "Focal Plane X Resolution" +msgstr "Роздільна здатніÑть фокальної площини X" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +msgid "Focal Plane Y Resolution" +msgstr "Роздільна здатніÑть фокальної площини Y" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñті у фокальній площині" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +msgid "Subject Location" +msgstr "Ð—Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¾Ð±'єкта" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +msgid "Exposure Index" +msgstr "Показник екÑпозиції" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +msgid "Sensing Method" +msgstr "Метод розпізнаваннÑ" + +#: src/properties.cpp:601 +#, fuzzy +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" +"Визначає тип датчика Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° фотоапараті або приÑтрої вхідних даних." + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "" + +#: src/properties.cpp:603 src/tags.cpp:1771 +msgid "Scene Type" +msgstr "Тип Ñцени" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "" + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +msgid "Custom Rendered" +msgstr "Ðетипове перетворено" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +msgid "Digital Zoom Ratio" +msgstr "Коефіцієнт цифрового збільшеннÑ" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:609 src/tags.cpp:1800 +msgid "Focal Length In 35mm Film" +msgstr "Фокальна довжина Ð´Ð»Ñ 35-мм плівки" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "Тип Ñцени" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" + +#: src/properties.cpp:613 src/tags.cpp:1811 +msgid "Gain Control" +msgstr "РегулÑтор поÑиленнÑ" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:617 src/tags.cpp:1826 +msgid "Device Setting Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² приÑтрою" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" + +#: src/properties.cpp:618 src/tags.cpp:1831 +msgid "Subject Distance Range" +msgstr "Діапазон відÑтані до об’єкта" + +#: src/properties.cpp:618 +#, fuzzy +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "Цей теґ міÑтить дані щодо відÑтані до об’єкта зйомки." + +#: src/properties.cpp:619 src/tags.cpp:1834 +msgid "Image Unique ID" +msgstr "Унікальний ідентифікатор зображеннÑ" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +#, fuzzy +msgid "GPS Version ID" +msgstr "ВерÑÑ–Ñ PDF" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "Широта за GPS" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "Довгота за GPS" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +#, fuzzy +msgid "GPS Altitude Reference" +msgstr "ВиÑота за GPS" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "ВиÑота за GPS" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +#, fuzzy +msgid "GPS Time Stamp" +msgstr "Ð§Ð°Ñ Ð½Ð°Ð´ÑиланнÑ" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Супутники GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Стан GPS" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +#, fuzzy +msgid "GPS Measure Mode" +msgstr "Режим зображеннÑ" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "" + +#: src/properties.cpp:637 src/tags.cpp:2002 +#, fuzzy +msgid "GPS Speed Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +#, fuzzy +msgid "GPS Speed" +msgstr "СвітлочутливіÑть ISO" + +#: src/properties.cpp:638 +#, fuzzy +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "Визначає швидкіÑть руху приймача даних GPS." + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS Track Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +msgid "GPS Image Direction Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +msgid "GPS Image Direction" +msgstr "ÐапрÑмок Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "Стан GPS" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" + +#: src/properties.cpp:644 src/tags.cpp:2033 +#, fuzzy +msgid "GPS Destination Latitude" +msgstr "Широта за GPS" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +#, fuzzy +msgid "GPS Destination Longitude" +msgstr "Довгота за GPS" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +#, fuzzy +msgid "GPS Destination Bearing Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +#, fuzzy +msgid "GPS Destination Bearing" +msgstr "ПризначеннÑ" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +#, fuzzy +msgid "GPS Destination Distance Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" + +#: src/properties.cpp:649 src/tags.cpp:2064 +#, fuzzy +msgid "GPS Destination Distance" +msgstr "Ð§Ð°Ñ Ð¼Ñ–ÑÑ†Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (DST)" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "" + +#: src/properties.cpp:650 src/tags.cpp:2067 +#, fuzzy +msgid "GPS Processing Method" +msgstr "Метод розпізнаваннÑ" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +#, fuzzy +msgid "GPS Area Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "" + +#: src/properties.cpp:667 +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" + +#: src/properties.cpp:669 +msgid "Contact Info-City" +msgstr "" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +#, fuzzy +msgid "Contact Info-State/Province" +msgstr "ОблаÑть/провінціÑ" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "" + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +#, fuzzy +msgid "IPTC Scene" +msgstr "Сцена" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +#, fuzzy +msgid "IPTC Subject Code" +msgstr "Площа об'єкту" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Модель" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Цифровий фільтр" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "ПодіÑ" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "МакÑимальна фокуÑна відÑтань" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:711 +#, fuzzy +msgid "A location shown in the image." +msgstr "ПозначеннÑ, що робить Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑƒÐ½Ñ–ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:712 +#, fuzzy +msgid "The location the photo was taken." +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:713 +#, fuzzy +msgid "Location-City" +msgstr "ÐдреÑа" + +#: src/properties.cpp:713 +#, fuzzy +msgid "Name of the city of a location." +msgstr "Ð†Ð¼â€™Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð²Ñ†Ñ Ð°Ð±Ð¾ назва групи виконавців." + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:714 +msgid "The ISO code of a country of a location." +msgstr "" + +#: src/properties.cpp:715 +#, fuzzy +msgid "Location-Country Name" +msgstr "Ðазва міÑцÑ" + +#: src/properties.cpp:715 +#, fuzzy +msgid "The name of a country of a location." +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "ÐŸÑ€Ð¾Ð²Ñ–Ð½Ñ†Ñ–Ñ Ð°Ð±Ð¾ облаÑть" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "Додаткові дані про міÑцерозташуваннÑ" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:718 +msgid "The name of a world region of a location." +msgstr "" + +#: src/properties.cpp:719 +#, fuzzy +msgid "Artwork or object in the image" +msgstr "ЗаÑоби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ." + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "ÐвторÑькі права" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "" + +#: src/properties.cpp:725 +msgid "A reference for the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +msgid "Camera RAW" +msgstr "Цифровий негатив фотоапарата" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "Ід. фотоапарата" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "Ід. фотоапарата" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "ВерÑÑ–Ñ PDF" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "Ліцензіат" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +#, fuzzy +msgid "Licensee ID" +msgstr "Ліцензіат" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Ліцензіат" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Name of each Licensee." +msgstr "Ðазва Ñцени." + +#: src/properties.cpp:746 +msgid "End User" +msgstr "" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "" + +#: src/properties.cpp:749 +#, fuzzy +msgid "Licensor" +msgstr "Ліцензіат" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ СенÑор" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Ліцензіат" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +#, fuzzy +msgid "Licensor City" +msgstr "Мехіко" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "ОблаÑть/провінціÑ" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Країна" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Ðазва країни" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "" + +#: src/properties.cpp:763 +#, fuzzy +msgid "Licensor URL" +msgstr "Ліцензіат" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +#, fuzzy +msgid "Licensor Notes" +msgstr "Ліцензіат" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +msgid "PLUS Media Summary Code" +msgstr "" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "License Start Date" +msgstr "Ліцензіат" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Ліцензіат" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "Дані Ñтабілізації зображеннÑ" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Дата випуÑку" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "Дата випуÑку" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "ÐвтоконтраÑтніÑть" + +#: src/properties.cpp:779 +msgid "Additional constraints on the license." +msgstr "" + +#: src/properties.cpp:780 +#, fuzzy +msgid "Credit Line Required" +msgstr "Ðе потрібне" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +msgid "Other License Requirements" +msgstr "" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:784 +msgid "Terms and Conditions URL" +msgstr "" + +#: src/properties.cpp:784 +msgid "URL for Terms and Conditions applying to the license." +msgstr "" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Other License Conditions" +msgstr "Умови оÑвітленнÑ" + +#: src/properties.cpp:785 +msgid "Additional license conditions." +msgstr "" + +#: src/properties.cpp:786 +#, fuzzy +msgid "Identifies the type of image delivered." +msgstr "Ідентифікує виробника Ñ– продукт" + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +msgid "Image File Format As Delivered" +msgstr "" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "ÐвторÑькі права" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "ЗаÑоби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ." + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Дата цифруваннÑ" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "Дата Ñ– чаÑ, коли Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ збережено у форматі цифрових даних." + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "ÐвторÑькі права" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "ÐвторÑькі права" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "" + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +msgid "Image Creator" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:798 +msgid "Creator/s of the image." +msgstr "ЗаÑоби ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ." + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Name of Image Creator." +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:801 +#, fuzzy +msgid "Image Creator Image ID" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "Унікальний ідентифікатор зображеннÑ" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Розмір зображеннÑ" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "" + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +#, fuzzy +msgid "Licensee Image ID" +msgstr "Ліцензіат" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +#, fuzzy +msgid "Licensee Image Notes" +msgstr "ЧиÑло Вилучених Зображень" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "" + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "ВідомоÑті про позицію автофокуÑу" + +#: src/properties.cpp:808 +#, fuzzy +msgid "License ID" +msgstr "Ліцензіат" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +msgid "Licensee Project Reference" +msgstr "" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "Дата Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñтроку дії" + +#: src/properties.cpp:812 +#, fuzzy +msgid "The date of the License Transaction." +msgstr "Ðазва Ñцени." + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "Повторне викориÑтаннÑ" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +msgid "Other License Documents" +msgstr "" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Дані щодо об’єктива" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Additional license information." +msgstr "ВідомоÑті про позицію автофокуÑу" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +msgid "Custom 4" +msgstr "Інше 4" + +#: src/properties.cpp:820 +msgid "Custom 5" +msgstr "Інше 5" + +#: src/properties.cpp:821 +msgid "Custom 6" +msgstr "Інше 6" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +msgid "Custom 7" +msgstr "Інше 7" + +#: src/properties.cpp:823 +msgid "Custom 8" +msgstr "Інше 8" + +#: src/properties.cpp:824 +msgid "Custom 9" +msgstr "Інше 9" + +#: src/properties.cpp:825 +msgid "Custom 10" +msgstr "Інше 10" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +msgid "Not Required" +msgstr "Ðе потрібне" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "Захищено" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "Ð”Ð»Ñ ÑуÑпільного викориÑтаннÑ" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "ЕÑкіз зображеннÑ" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "Ðе потрібне" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "ВигораннÑ" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +#, fuzzy +msgid "No De-Colorization" +msgstr "ВигораннÑ" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "" + +#: src/properties.cpp:859 +#, fuzzy +msgid "No Retouching" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð—Ð¾Ð½Ð¸" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:871 +msgid "Maintain File Name" +msgstr "" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "" + +#: src/properties.cpp:879 +msgid "Windows Bitmap (BMP)" +msgstr "" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "Цифровий негатив (DNG)" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "ІнкапÑульований PostScript (eps)" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +msgid "Tagged Image File Format (TIFF)" +msgstr "" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "" + +#: src/properties.cpp:898 +#, fuzzy +msgid "Up to 30 MB" +msgstr "Optio 30" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "" + +#: src/properties.cpp:904 +msgid "Illustrated Image" +msgstr "" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "Фотографічне зображеннÑ" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "FAX" + +#: src/properties.cpp:916 +msgid "Pager" +msgstr "Пейджер" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "Роб." + +#: src/properties.cpp:922 +msgid "Age Unknown" +msgstr "Вік не відомий" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "Вік 25 або Ñтарші" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "Вік 24" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "Вік 23" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "Вік 22" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "Вік 21" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "Вік 20" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "Вік 19" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "Вік 18" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "Вік 17" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "Вік 16" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "Вік 15" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "Вік 14 або менше" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "ÐезаÑтоÑовне" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "Status" +msgstr "Стан" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "ПозначеннÑ, що робить Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑƒÐ½Ñ–ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "Люди" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Дані щодо об’єктива" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "ВерÑÑ–Ñ—" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "" + +#: src/properties.cpp:991 +msgid "Person Display Name" +msgstr "" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Applied To Dimensions" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "Region List" +msgstr "ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñті" + +#: src/properties.cpp:1002 +msgid "List of Region structures" +msgstr "" + +#: src/properties.cpp:1003 +msgid "Area" +msgstr "" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Діапазон фокуÑуваннÑ" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ñ€ÐµÐºÐµÑ‚Ð¸Ð½Ð³Ñƒ" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "ВерÑÑ–Ñ—" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Ключові Ñлова" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Рамка панорами" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Програми" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Програми" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Тип об'єкта" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +#, fuzzy +msgid "The pitch angle of the initial view in degrees." +msgstr "ВідÑтань до об’єкта, вказана у метрах." + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Дата зйомки" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Дата зйомки" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Режим екÑпозиції" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "МіÑце зйомки" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "ЖовтогарÑчий" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Ключові Ñлова" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +msgid "Attached File Name" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾Ñті" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "ПорÑдок байтів" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +msgid "The video Cinematographer information." +msgstr "" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Мінімальна Діафрагма" + +#: src/properties.cpp:1071 +msgid "Clean aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Центрально-зважений" + +#: src/properties.cpp:1072 +msgid "Clean aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Відео" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² приÑтрою" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +#, fuzzy +msgid "Contains description the codec." +msgstr "ТекÑтовий Ð¾Ð¿Ð¸Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñƒ знімку" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° інформаціÑ" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ \"У руÑÑ–\"" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Коментар кориÑтувача" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned" +msgstr "СтиÑненнÑ" + +#: src/properties.cpp:1084 +#, fuzzy +msgid "Commissioned." +msgstr "СтиÑненнÑ" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Ключові Ñлова" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "СтиÑненнÑ" + +#: src/properties.cpp:1088 +msgid "Video Compression Library Used" +msgstr "" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Звуковий кодек" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "СтиÑненнÑ" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Тип фотоапарата" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Рівень ÑтиÑканнÑ" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Дата Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñтроку дії" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +msgid "Pixel Crop Left" +msgstr "" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +msgid "Pixel Crop Right" +msgstr "" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Ð§Ð°Ñ ÐµÐºÑпозиції" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +#, fuzzy +msgid "Data Packets" +msgstr "Пакунок XML" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Дата Ñ– Ñ‡Ð°Ñ (зніманнÑ)" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "ВерÑÑ–Ñ—" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +#, fuzzy +msgid "Director" +msgstr "Завбачник" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Тип фокуÑу" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +#, fuzzy +msgid "Doc Type Read Version" +msgstr "ВерÑÑ–Ñ Ð·Ð°Ð¿Ð¸Ñу" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "ВерÑÑ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "ВерÑÑ–Ñ Ð·Ð°Ð¿Ð¸Ñу" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "ВерÑÑ–Ñ ARM" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +msgid "Video Track Enabled" +msgstr "" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +#, fuzzy +msgid "End Timecode" +msgstr "ЧаÑовий поÑÑ" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +msgid "Equipment" +msgstr "" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Параметр компенÑації екÑпозиції" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Програма екÑпозиції" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "ТриваліÑть екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð° у Ñекундах." + +#: src/properties.cpp:1148 +#, fuzzy +msgid "Extended Content Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² приÑтрою" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Ðазва файлу" + +#: src/properties.cpp:1150 +msgid "File ID." +msgstr "" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Довжина зображеннÑ" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "ФокуÑна відÑтань" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Ðазва файлу" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Розмір файла" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Розмір файла" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Тип Спалаху" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "ЧиÑло Зображень" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "ВиÑота зображеннÑ" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Ширина зображеннÑ" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "ÐапрÑмок діафрагми" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +#, fuzzy +msgid "Time stamp of GPS data, " +msgstr "ЧаÑова мітка метаданих з ключем" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Режим вилки" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Тип фотоапарата" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Виробник" + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "ВиÑота зображеннÑ" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment Settings Information." +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ— зображеннÑ" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +#, fuzzy +msgid "Info Banner URL" +msgstr "ОÑновна адреÑа" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Additional Movie Information." +msgstr "ВідомоÑті про позицію автофокуÑу" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "ТекÑÑ‚" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Дані об’єктиву" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Мова" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "Довжина зображеннÑ" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Тип Лінзи" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "ЯÑкравіÑть" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "ЯÑкравіÑть" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Equipment Make" +msgstr "" + +#: src/properties.cpp:1207 +msgid "Manufacturer of recording equipment" +msgstr "" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Тип фотоапарата" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Maker Note Version of the camera." +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Maker URL" +msgstr "ОÑновна адреÑа" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Виробник" + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "МакÑимальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "МакÑимальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "Media Track Create Date" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "ВерÑÑ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "Media Track Modify Date" +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Середній" + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Режим вимірюваннÑ" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Тип фотоапарата" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "ВерÑÑ–Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Режим коригуваннÑ" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Ðазва міÑцÑ" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "ВерÑÑ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +#, fuzzy +msgid "Next Track ID" +msgstr "ТекÑÑ‚ + ID#" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "КількіÑть тактів" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +#, fuzzy +msgid "Number Of Important Colours" +msgstr "КількіÑть тактів" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "КількіÑть тактів" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "ОрієнтаціÑ" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Вечірка" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Вечірка" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Ключові Ñлова" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Ключові Ñлова." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Вибрані" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Вибрані" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "ПроÑтий режим" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +msgid "Contains the information of External media." +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Ð§Ð°Ñ ÐµÐºÑпозиції" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +#, fuzzy +msgid "Preferred Rate" +msgstr "Дата" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "ЕÑкіз зображеннÑ" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Indicates the type of atom that contains the preview data" +msgstr "Вказує тип звукового вміÑту." + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Дані еÑкізу" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Дані еÑкізу" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "ЕÑкіз зображеннÑ" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "ТриваліÑть Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¾Ð³Ð¾ файла." + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Виробник" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Ключові Ñлова" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Ðвтодіафрагма" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Ðвтодіафрагма" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +#, fuzzy +msgid "Production Studio" +msgstr "Ід. продукту" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "Ід. продукту" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "Ід. продукту" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +msgid "Recording Copyright" +msgstr "" + +#: src/properties.cpp:1291 +msgid "Recording Copyright." +msgstr "" + +#: src/properties.cpp:1292 +#, fuzzy +msgid "Requirements" +msgstr "вимагає аргумент\n" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +#, fuzzy +msgid "The name of the secondary genre.." +msgstr "Ðазва Ñцени." + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Вибрані" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "ТриваліÑть" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "ВерÑÑ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Ðвтор підпиÑу" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "The name of the song writer." +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Ключові Ñлова." + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "ПодÑка" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "ПодÑка." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Джерело" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Джерело." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "ВиÑота зображеннÑ" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Ширина зображеннÑ" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "" + +#: src/properties.cpp:1313 +#, fuzzy +msgid "Statistics" +msgstr "Стан" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "КількіÑть кроків маÑштабуваннÑ" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Total Number Of Streams" +msgstr "КількіÑть тактів" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Ðазва зйомки" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "ЯкіÑть зображеннÑ" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +msgid "Stream Sample Rate" +msgstr "" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "ЧиÑло Зображень" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Тип Ñцени" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ зображеннÑ" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Заголовок" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Ключові Ñлова" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Ключові Ñлова." + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Мова" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Об’єкт" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Ðазва Ñтрічки" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Типові параметри" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Мова" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Ðазва Ñтрічки" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Діафрагма призначеннÑ" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Довжина еÑкізу" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Довжина еÑкізу" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Довжина еÑкізу" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Під шкалою" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "ЧаÑовий поÑÑ" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Ð§Ð°Ñ Ð½Ð°Ð´ÑиланнÑ" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "КількіÑть тактів" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Track" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +msgid "Video Track Create Date" +msgstr "" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +#, fuzzy +msgid "Track ID" +msgstr "Ðомер композиції" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "ВерÑÑ–Ñ Makernote" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Мова" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +msgid "Video Track Layer" +msgstr "" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +msgid "Video Track Modify Date" +msgstr "" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Ðомер композиції" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Ðомер композиції" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +#, fuzzy +msgid "Track Volume" +msgstr "Ðомер композиції" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +#, fuzzy +msgid "Video URL" +msgstr "Відео" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +#, fuzzy +msgid "Video URN" +msgstr "Відео" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Програма" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ СенÑор" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "ЯкіÑть" + +#: src/properties.cpp:1378 +msgid "Video Stream Quality" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Sample Size" +msgstr "" + +#: src/properties.cpp:1379 +msgid "Video Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Тип Ñцени" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Точне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Ширина зображеннÑ" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "МіÑце зйомки" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Ðвтор текÑту" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Дата Ñ– чаÑ, коли було знÑто відео." + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ð³Ð¾" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Indicates the left-right balance of the audio" +msgstr "Визначає відÑтань до точки призначеннÑ." + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Бітів на фрагмент" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Бітів на фрагмент" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Звуковий кодек" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "ÐžÐ¿Ð¸Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ фокуÑуваннÑ" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +#, fuzzy +msgid "Audio Default Stream" +msgstr "Adobe Deflate" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On" +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "ЧаÑтота вибірки" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +msgid "Output Audio Sample Rate" +msgstr "" + +#: src/properties.cpp:1423 +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "КількіÑть кроків маÑштабуваннÑ" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "знайдено у файлі" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "знайдено у файлі" + +#: src/properties.cpp:1429 +msgid "Audio Track Create Date" +msgstr "" + +#: src/properties.cpp:1430 +#, fuzzy +msgid "Audio Track Duration" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:1431 +#, fuzzy +msgid "Audio Track Forced" +msgstr "ÐвтообмеженнÑ" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +#, fuzzy +msgid "Audio Track Lacing" +msgstr "ТриваліÑть звуку" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +#, fuzzy +msgid "Audio Track Layer" +msgstr "Тип звуку" + +#: src/properties.cpp:1439 +msgid "Audio Track Modify Date" +msgstr "" + +#: src/properties.cpp:1441 +#, fuzzy +msgid "Audio URL" +msgstr "ЧаÑтота вибірки" + +#: src/properties.cpp:1442 +#, fuzzy +msgid "Audio URN" +msgstr "ЧаÑтота вибірки" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Ðазва Ñцени." + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Дата Ñ– чаÑ" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "" + +#: src/properties.cpp:1451 +#, fuzzy +msgid "A language of the resource." +msgstr "Коротка інформативна назва реÑурÑу." + +#: src/properties.cpp:1452 +#, fuzzy +msgid "License" +msgstr "Ліцензіат" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Права зона" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Права" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +#, fuzzy +msgid "A bibliographic reference for the resource." +msgstr "Коротка інформативна назва реÑурÑу." + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Дата" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +#, fuzzy +msgid "Record" +msgstr "ВерÑÑ–Ñ Ð·Ð°Ð¿Ð¸Ñу" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "ÐаÑтанови" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Вибрані" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Режим роздільноÑті" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +#, fuzzy +msgid "Dataset ID" +msgstr "Дамп даних" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Ðазва Ñтрічки" + +#: src/properties.cpp:1488 +msgid "The name identifying the data set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +#, fuzzy +msgid "Information Withheld" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Динамічна облаÑть" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +msgid "Occurrence ID" +msgstr "" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Ðомер оÑтаннього зображеннÑ" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Ðомер замовленнÑ" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +#, fuzzy +msgid "Sex" +msgstr "Ð’Ñтановити" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "ДиÑтанційне керуваннÑ" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "ÐаÑиченіÑть" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "КількіÑть інтервалів" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +#, fuzzy +msgid "Associated Sequences" +msgstr "AEB поÑлідовніÑть" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Бітів на фрагмент" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Вечір Ñцена" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Бітів на фрагмент" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "ПодіÑ" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "ПодіÑ" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +msgid "Event Latest Date" +msgstr "" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "ТриваліÑть вÑтупу" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +msgid "Month" +msgstr "" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Затримка" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +msgid "Verbatim Event Date" +msgstr "" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +msgid "Sampling Size Value" +msgstr "" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Ðомер файла" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +msgid "Field Notes" +msgstr "" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "ÐдреÑа" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Ðеперервний" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "ОблаÑть/провінціÑ" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Країна" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "ЯкіÑть" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Локальний" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +#, fuzzy +msgid "The original textual description of the place." +msgstr "ТекÑтовий Ð¾Ð¿Ð¸Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñƒ знімку" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Код міÑцерозташуваннÑ" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "Широта за GPS" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "Довгота за GPS" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "Широта за GPS" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "Довгота за GPS" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +#, fuzzy +msgid "Georeferenced By" +msgstr "Дата" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +#, fuzzy +msgid "Georeferenced Date" +msgstr "Дата" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +#, fuzzy +msgid "Georeference Sources" +msgstr "Довідкова Ñлужба" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +#, fuzzy +msgid "Georeference Remarks" +msgstr "Ðомер поÑиланнÑ" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Формат" + +#: src/properties.cpp:1893 +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "" + +#: src/properties.cpp:1895 +#, fuzzy +msgid "Member" +msgstr "ЧиÑло F" + +#: src/properties.cpp:1896 +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Червоний" + +#: src/properties.cpp:1899 +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +#, fuzzy +msgid "Identification ID" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +#, fuzzy +msgid "Identified By" +msgstr "Ідентифікатор" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Ідентифікатор" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +#, fuzzy +msgid "Identification Remarks" +msgstr "Ідентифікатор" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Стан" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Ðазва документа" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Видавець" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "" + +#: src/properties.cpp:1982 +#, fuzzy +msgid "Higher Classification" +msgstr "ВиÑока наÑиченіÑть" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "ПорÑдок заповненнÑ" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Ðатуральний колір" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Файлове джерело" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Файлове джерело" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +msgid "Relationship Of Resource" +msgstr "" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +#, fuzzy +msgid "Measurement ID" +msgstr "Вимір екÑпозиції EV" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Розмір діафрагми" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "Метод розпізнаваннÑ" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "ТекÑтовий Ð¾Ð¿Ð¸Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñƒ знімку" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Дата Ñ– чаÑ" + +#: src/properties.cpp:2103 +#, fuzzy +msgid "The name of the author or photographer" +msgstr "Ðазва знімка або запиÑу." + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "КатегоріÑ" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +msgid "Resolution Mode" +msgstr "Режим роздільноÑті" + +#: src/sigmamn.cpp:63 +msgid "Resolution mode" +msgstr "Режим роздільноÑті" + +#: src/sigmamn.cpp:65 +msgid "Autofocus Mode" +msgstr "Режим автофокуÑу" + +#: src/sigmamn.cpp:66 +msgid "Autofocus mode" +msgstr "Режим автофокуÑа" + +#: src/sigmamn.cpp:68 +msgid "Focus Setting" +msgstr "Параметр фокуÑуваннÑ" + +#: src/sigmamn.cpp:69 +msgid "Focus setting" +msgstr "Параметр фокуÑуваннÑ" + +#: src/sigmamn.cpp:80 +msgid "Lens Range" +msgstr "Діапазон об’єктива" + +#: src/sigmamn.cpp:81 +msgid "Lens focal length range" +msgstr "Діапазон фокуÑних відÑтаней об’єктива" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +msgid "Shadow" +msgstr "Тінь" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +msgid "Highlight" +msgstr "ПідÑвічуваннÑ" + +#: src/sigmamn.cpp:104 +#, fuzzy +msgid "Fill Light" +msgstr "Світлий" + +#: src/sigmamn.cpp:105 +#, fuzzy +msgid "X3 Fill light" +msgstr "Спалах" + +#: src/sigmamn.cpp:107 +msgid "Color Adjustment" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/sigmamn.cpp:108 +msgid "Color adjustment" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "Режим коригуваннÑ" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "Режим коригуваннÑ" + +#: src/sigmamn.cpp:122 +msgid "Auto Bracket" +msgstr "ÐвтообмеженнÑ" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +msgid "Auto bracket" +msgstr "ÐвтообмеженнÑ" + +#: src/sigmamn.cpp:127 +#, fuzzy +msgid "Unknown SigmaMakerNote tag" +msgstr "Ðевідомий тег FujiMakerNote" + +#: src/sigmamn.cpp:170 +#, fuzzy +msgid "8-Segment" +msgstr "Мульти-Ñегмент" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "Додатковий рівень 1" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "Додатковий рівень 2" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "Додатковий рівень 3" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "Додатково4" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "Додатково5" + +#: src/sonymn.cpp:154 +msgid "Night Scene / Twilight" +msgstr "Ðічне оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñутінки" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "ВиÑокошвидкіÑний затвор" + +#: src/sonymn.cpp:156 +msgid "Twilight Portrait" +msgstr "Портрет у Ñутінках" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Ðвтопортрет" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "Повільний затвор" + +#: src/sonymn.cpp:161 +msgid "High Sensitivity" +msgstr "ВиÑока чутливіÑть" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +msgid "Sweep Panorama" +msgstr "" + +#: src/sonymn.cpp:168 +#, fuzzy +msgid "Anti Motion Blur" +msgstr "ÐнтирозмиваннÑ" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +msgid "Background Defocus" +msgstr "" + +#: src/sonymn.cpp:173 +#, fuzzy +msgid "Soft Skin" +msgstr "М’Ñкий" + +#: src/sonymn.cpp:174 +msgid "3D Image" +msgstr "" + +#: src/sonymn.cpp:189 +msgid "On (Continuous)" +msgstr "Увімкнено (неперервне)" + +#: src/sonymn.cpp:190 +msgid "On (Shooting)" +msgstr "Увімкнено (зніманнÑ)" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "ПлюÑ" + +#: src/sonymn.cpp:214 +msgid "White Flourescent" +msgstr "Біле флуореÑцентне" + +#: src/sonymn.cpp:215 +msgid "Cool White Flourescent" +msgstr "Холодне біле флуореÑцентне" + +#: src/sonymn.cpp:216 +msgid "Day White Flourescent" +msgstr "Тепле біле флуореÑцентне" + +#: src/sonymn.cpp:217 +#, fuzzy +msgid "Incandescent2" +msgstr "Лампа накалюваннÑ" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "Тепле біле флуореÑцентне" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "Підводне 1 (блакитна вода)" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "Підводне 2 (зелена вода)" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "По центру" + +#: src/sonymn.cpp:238 +msgid "Spot AF" +msgstr "Точковий автофокуÑ" + +#: src/sonymn.cpp:239 +#, fuzzy +msgid "Flexible Spot AF" +msgstr "Точковий автофокуÑ" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "" + +#: src/sonymn.cpp:241 +msgid "Manual Focus" +msgstr "Ручний фокуÑ" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ð¸Ñ‡" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "Ðвтоматичне фокуÑуваннÑ" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "МультиекÑпонуваннÑ" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "Ширина зображеннÑ" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "ВиÑота зображеннÑ" + +#: src/sonymn.cpp:364 +msgid "JPEG preview image" +msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду JPEG" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "Ðвто виÑокий" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +msgid "Shot Information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +msgid "Sony Model ID" +msgstr "Ід. моделі Sony" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +msgid "Color Reproduction" +msgstr "Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "Оптимізатор динамічного діапазону" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +#, fuzzy +msgid "Minolta MakerNote" +msgstr "Дата Minolta" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +msgid "Full Image Size" +msgstr "Розмір повного зображеннÑ" + +#: src/sonymn.cpp:436 +msgid "Preview Image Size" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/sonymn.cpp:437 +msgid "Preview image size" +msgstr "Розмір Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +#, fuzzy +msgid "AF Illuminator" +msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ ÐФ" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +msgid "JPEG Quality" +msgstr "ЯкіÑть JPEG" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +msgid "Release Mode" +msgstr "Режим ÑпуÑку" + +#: src/sonymn.cpp:464 +#, fuzzy +msgid "Shot number in continuous burst mode" +msgstr "Ðомер поÑлідовноÑті (Ñкщо безперервний Ñпалах)" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +msgid "Anti-Blur" +msgstr "ÐнтирозмиваннÑ" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +msgid "Long Exposure Noise Reduction" +msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² при довгій екÑпозиції" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "Ðевідомий тег Nikon1MakerNote" + +#: src/sonymn.cpp:497 +msgid "Continuous High" +msgstr "Ðеперервна, виÑока" + +#: src/sonymn.cpp:501 +msgid "Continuous Low" +msgstr "Ðеперервне, низька" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +#, fuzzy +msgid "D-Range Optimizer Bracketing Low" +msgstr "Покадровий брекетинг" + +#: src/sonymn.cpp:536 +msgid "Autumn" +msgstr "ОÑінь" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Без Ñпалаху" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "Рівень оптимізації динамічного діапазону" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Творча програма" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð—Ð¾Ð½Ð¸" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "Швидкий затвор" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +#, fuzzy +msgid "Image Style" +msgstr "Розмір зображеннÑ" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Ðевідомий тег налаштувань камери Sony A100" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Ðевідомий тег налаштувань камери Sony A100" + +#: src/tags.cpp:188 +msgid "Unknown section" +msgstr "Ðевідомий розділ" + +#: src/tags.cpp:189 +#, fuzzy +msgid "Image data structure" +msgstr "Розмір даних зображеннÑ" + +#: src/tags.cpp:190 +#, fuzzy +msgid "Recording offset" +msgstr "Ефект тонуваннÑ" + +#: src/tags.cpp:191 +#, fuzzy +msgid "Image data characteristics" +msgstr "Розмір даних зображеннÑ" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Інші дані" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "" + +#: src/tags.cpp:195 +#, fuzzy +msgid "Image configuration" +msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "ВідомоÑті про кориÑтувача" + +#: src/tags.cpp:197 +#, fuzzy +msgid "Related file" +msgstr "Пов’Ñзаний звуковий файл" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Дата Ñ– чаÑ" + +#: src/tags.cpp:199 +#, fuzzy +msgid "Picture taking conditions" +msgstr " ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñм" + +#: src/tags.cpp:200 +#, fuzzy +msgid "GPS information" +msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ знімок" + +#: src/tags.cpp:201 +#, fuzzy +msgid "Interoperability information" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:202 +#, fuzzy +msgid "Vendor specific information" +msgstr "ВідомоÑті про кориÑтувача" + +#: src/tags.cpp:203 +#, fuzzy +msgid "Adobe DNG tags" +msgstr "Adobe RGB" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "" + +#: src/tags.cpp:208 +#, fuzzy +msgid "Last section" +msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð°Ñту" + +#: src/tags.cpp:224 +#, fuzzy +msgid "Primary image" +msgstr "ЕÑкіз зображеннÑ" + +#: src/tags.cpp:225 +#, fuzzy +msgid "Thumbnail/Preview image" +msgstr "ЗображеннÑ-мініатюра" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "" + +#: src/tags.cpp:227 +#, fuzzy +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Мініатюрне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð¾Ñ— облаÑті" + +#: src/tags.cpp:228 +#, fuzzy +msgid "Primary image, Transparency mask" +msgstr "МаÑка прозороÑті" + +#: src/tags.cpp:229 +#, fuzzy +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Мініатюрне Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð¾Ñ— облаÑті" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "" + +#: src/tags.cpp:237 +#, fuzzy +msgid "Full-resolution image data" +msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані зображеннÑ" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "дюйм" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "Adobe Deflate" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "" + +#: src/tags.cpp:260 +#, fuzzy +msgid "JBIG Color" +msgstr "Колір" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +#, fuzzy +msgid "Epson ERF Compressed" +msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ NEF" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "IT8 linework RLE" + +#: src/tags.cpp:269 +#, fuzzy +msgid "IT8 Monochrome Picture" +msgstr "Чорно-біле" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "IT8 binary lineart" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "Pixar deflate" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "SGI log luminance RLE" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +#, fuzzy +msgid "Nikon NEF Compressed" +msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ NEF" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "" + +#: src/tags.cpp:281 +#, fuzzy +msgid "Pentax PEF Compressed" +msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ NEF" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "" + +#: src/tags.cpp:287 +#, fuzzy +msgid "Black Is Zero" +msgstr "Чорно-білий" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "МаÑка прозороÑті" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +#, fuzzy +msgid "Color Filter Array" +msgstr "Фільтр кольорів" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +#, fuzzy +msgid "Randomized process" +msgstr "Звичайною обробкою" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "вгорі ліворуч" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "вгорі праворуч" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "внизу праворуч" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "внизу ліворуч" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "ліворуч, вгорі" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "Правий верхній" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "праворуч, внизу" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "ліворуч, внизу" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "Горизонтальні відмінноÑті" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "не CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "" + +#: src/tags.cpp:339 src/tags.cpp:340 +#, fuzzy +msgid "Undefined data format" +msgstr "Ðепідтримуваний формат дати" + +#: src/tags.cpp:345 +msgid "Not indexed" +msgstr "ÐеіндекÑоване" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "ІндекÑований" + +#: src/tags.cpp:351 +msgid "A" +msgstr "Ð" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "За центром" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Без Ñпалаху" + +#: src/tags.cpp:370 +msgid "Fired, return light not detected" +msgstr "" + +#: src/tags.cpp:371 +msgid "Fired, return light detected" +msgstr "" + +#: src/tags.cpp:372 +#, fuzzy +msgid "Yes, did not fire" +msgstr "Ðе Ñпрацював" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "Так, примуÑово" + +#: src/tags.cpp:374 +msgid "Yes, compulsory, return light not detected" +msgstr "" + +#: src/tags.cpp:375 +msgid "Yes, compulsory, return light detected" +msgstr "" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "ÐÑ–, примуÑово" + +#: src/tags.cpp:377 +msgid "No, did not fire, return light not detected" +msgstr "" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "ÐÑ–, автоматично" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Так, автоматично" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Без функції Ñпалаху" + +#: src/tags.cpp:383 +#, fuzzy +msgid "No, no flash function" +msgstr "Без функції Ñпалаху" + +#: src/tags.cpp:384 +#, fuzzy +msgid "Yes, red-eye reduction" +msgstr "Увімкнено, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:387 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction" +msgstr "Увімкнено, повільна ÑинхронізаціÑ, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/tags.cpp:388 +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:389 +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:390 +#, fuzzy +msgid "No, red-eye reduction" +msgstr "Увімкнено, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/tags.cpp:391 +#, fuzzy +msgid "No, auto, red-eye reduction" +msgstr "Ðвто, Ñпрацювала, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/tags.cpp:392 +#, fuzzy +msgid "Yes, auto, red-eye reduction" +msgstr "Ðвто, Ñпрацювала, уÑÑƒÐ²Ð°Ð½Ð½Ñ Â«Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ñ… очей»" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "" + +#: src/tags.cpp:408 +#, fuzzy +msgid "Processing Software" +msgstr "Дані щодо обробки" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Ðовий тип підфайлів" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Загальне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ даних, що міÑÑ‚ÑтьÑÑ Ñƒ цьому підфайлі." + +#: src/tags.cpp:415 +#, fuzzy +msgid "Subfile Type" +msgstr "Ðовий тип підфайлів" + +#: src/tags.cpp:416 +#, fuzzy +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "Загальне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ даних, що міÑÑ‚ÑтьÑÑ Ñƒ цьому підфайлі." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Бітів на фрагмент" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "Ширина зображеннÑ" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Довжина зображеннÑ" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "ПорÑдок заповненнÑ" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Ðазва документа" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "" + +#: src/tags.cpp:491 +#, fuzzy +msgid "Samples per Pixel" +msgstr "КількіÑть ÑтиÑнених бітів на пікÑель" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "РÑдків на Ñмугу" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Роздільна здатніÑть за X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Роздільна здатніÑть за Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +#, fuzzy +msgid "Gray Response Unit" +msgstr "ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñті" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +#, fuzzy +msgid "Gray Response Curve" +msgstr "Крива тону" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +#, fuzzy +msgid "T4 Options" +msgstr "Параметр" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "" + +#: src/tags.cpp:529 +#, fuzzy +msgid "T6 Options" +msgstr "Параметр" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "" + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Ðомер зображеннÑ" + +#: src/tags.cpp:538 +msgid "The page number of the page from which this image was scanned." +msgstr "" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" + +#: src/tags.cpp:546 +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" + +#: src/tags.cpp:553 +#, fuzzy +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Дата Ñ– чаÑ, коли було Ñтворено початкове зображеннÑ. Ð”Ð»Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ñ… " +"фотоапаратів дата Ñ– Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу цифрових даних." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "Завбачник" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" + +#: src/tags.cpp:582 +msgid "Color Map" +msgstr "Карта кольорів" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +#, fuzzy +msgid "Tile Width" +msgstr "Ширина зображеннÑ" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "Довжина еÑкізу" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +#, fuzzy +msgid "Tile Offsets" +msgstr "ЧаÑовий поÑÑ" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +msgid "Tile Byte Counts" +msgstr "" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +#, fuzzy +msgid "SubIFD Offsets" +msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ VRD" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "Ðабір чорнил" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "КількіÑть тактів" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Діапазон фокуÑуваннÑ" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +#, fuzzy +msgid "Target Printer" +msgstr "Діафрагма призначеннÑ" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "Бітів на фрагмент" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Формат файла" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "Мінімальна діафрагма" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "МакÑ. апертура" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +#, fuzzy +msgid "Transfer Range" +msgstr "Діапазон об’єктива" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "Контур-обрізаннÑ" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +#, fuzzy +msgid "X Clip Path Units" +msgstr "Контур-обрізаннÑ" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +#, fuzzy +msgid "Y Clip Path Units" +msgstr "Контур-обрізаннÑ" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +#, fuzzy +msgid "JPEG tables" +msgstr "ЯкіÑть JPEG" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +msgid "JPEG Process" +msgstr "" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +#, fuzzy +msgid "JPEG Q-Tables" +msgstr "ЯкіÑть JPEG" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "" + +#: src/tags.cpp:716 +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "Еталонні чорне/біле" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "Пакунок XML" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "" + +#: src/tags.cpp:746 +#, fuzzy +msgid "Windows Rating" +msgstr "Оцінка" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "Унікальний ідентифікатор зображеннÑ" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +#, fuzzy +msgid "Exposure time, given in seconds." +msgstr "ТриваліÑть екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð° у Ñекундах." + +#: src/tags.cpp:790 src/tags.cpp:1553 +msgid "The F number." +msgstr "Діафрагмове чиÑло." + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +#, fuzzy +msgid "Image Resources Block" +msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ñ–Ñтю Ñпалаху" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +#, fuzzy +msgid "Inter Color Profile" +msgstr "Профіль кольорів" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" +"ÐšÐ»Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸, викориÑтаної фотоапаратом Ð´Ð»Ñ ÐµÐºÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ." + +#: src/tags.cpp:807 +#, fuzzy +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" +"Визначає тип датчика Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° фотоапараті або приÑтрої вхідних даних." + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +msgid "ISO Speed Ratings" +msgstr "СвітлочутливіÑть ISO" + +#: src/tags.cpp:813 src/tags.cpp:1565 +#, fuzzy +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" +"Визначає тип датчика Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° фотоапараті або приÑтрої вхідних даних." + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "ЧерезрÑдкове" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Indicates the field number of multifield images." +msgstr "Показує макет зображеннÑ." + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "ЧаÑовий поÑÑ" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +#, fuzzy +msgid "Self Timer Mode" +msgstr "Ð§Ð°Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑку" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Дата Ñ– Ñ‡Ð°Ñ (зніманнÑ)" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "Дата Ñ– чаÑ, коли Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ збережено у форматі цифрових даних." + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "ШвидкіÑть затвору." + +#: src/tags.cpp:827 +#, fuzzy +msgid "The lens aperture." +msgstr "Мінімальна діафрагма" + +#: src/tags.cpp:828 +#, fuzzy +msgid "The value of brightness." +msgstr "КількіÑть тактів." + +#: src/tags.cpp:829 +#, fuzzy +msgid "The exposure bias." +msgstr "Ухил екÑпозиції" + +#: src/tags.cpp:830 src/tags.cpp:1645 +#, fuzzy +msgid "Max Aperture Value" +msgstr "МакÑимальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" + +#: src/tags.cpp:830 +#, fuzzy +msgid "The smallest F number of the lens." +msgstr "Ðазва Ñцени." + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "ВідÑтань до об’єкта, вказана у метрах." + +#: src/tags.cpp:832 src/tags.cpp:1654 +msgid "The metering mode." +msgstr "Режим вимірюваннÑ." + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "Тип джерела Ñвітла." + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "Показує макет зображеннÑ." + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Шум" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" + +#: src/tags.cpp:840 +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +#, fuzzy +msgid "Security Classification" +msgstr "Електронне збільшеннÑ" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +#, fuzzy +msgid "TIFF/EP Standard ID" +msgstr "F0/Стандартний" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "" + +#: src/tags.cpp:852 +#, fuzzy +msgid "Windows Title" +msgstr "ПоÑада автора" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +#, fuzzy +msgid "Windows Comment" +msgstr "Коментар кориÑтувача" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +#, fuzzy +msgid "Windows Author" +msgstr "Ðвтор" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +#, fuzzy +msgid "Windows Keywords" +msgstr "Ключові Ñлова" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +#, fuzzy +msgid "Windows Subject" +msgstr "Об’єкт" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +#, fuzzy +msgid "Print Image Matching" +msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð—Ð¾Ð½Ð¸" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "ВерÑÑ–Ñ PDF" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +#, fuzzy +msgid "DNG backward version" +msgstr "ВерÑÑ–Ñ Nikon Makernote" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +#, fuzzy +msgid "Unique Camera Model" +msgstr "Модель фотоапарата" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +#, fuzzy +msgid "Localized Camera Model" +msgstr "Модель фотоапарата" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +#, fuzzy +msgid "CFA Plane Color" +msgstr "Колір FinePix" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +#, fuzzy +msgid "Black Level Repeat Dim" +msgstr "Рівень чорного 2" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +#, fuzzy +msgid "Black Level Delta H" +msgstr "Рівень чорного 2" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +#, fuzzy +msgid "Black Level Delta V" +msgstr "Рівень чорного 2" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +msgid "White Level" +msgstr "Рівень білого" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "Типовий" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Типові параметри" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +msgid "Color Matrix 1" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 1" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +msgid "Color Matrix 2" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 2" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "ÐšÐ°Ð»Ñ–Ð±Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ°Ð¼ÐµÑ€Ð¸ 1" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "ÐšÐ°Ð»Ñ–Ð±Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ°Ð¼ÐµÑ€Ð¸ 2" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +#, fuzzy +msgid "Reduction Matrix 1" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 1" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +#, fuzzy +msgid "Reduction Matrix 2" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 2" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +#, fuzzy +msgid "Analog Balance" +msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð²" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "Ðейтральне" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "МультиекÑпонуваннÑ" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "РізкіÑть" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Дані щодо об’єктива" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "потужніÑть Ñпалаху" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +#, fuzzy +msgid "Shadow Scale" +msgstr "Тінь" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +#, fuzzy +msgid "DNG Private Data" +msgstr "Дані еÑкізу" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +#, fuzzy +msgid "MakerNote Safety" +msgstr "Ðотатка виробника" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +#, fuzzy +msgid "Calibration Illuminant 2" +msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€ÐµÐ¼Ñ‚Ñ–Ð½Ð½Ñ 2" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "ЯкіÑть Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ 2" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +#, fuzzy +msgid "Raw Data Unique ID" +msgstr "Унікальний ідентифікатор зображеннÑ" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +msgid "Original Raw File Name" +msgstr "" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +#, fuzzy +msgid "Active Area" +msgstr "Одиночна облаÑть" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +msgid "Masked Areas" +msgstr "" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +#, fuzzy +msgid "As-Shot ICC Profile" +msgstr "Профіль ICC" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +#, fuzzy +msgid "Current ICC Profile" +msgstr "Профіль ICC" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +msgid "Colorimetric Reference" +msgstr "" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +#, fuzzy +msgid "Camera Calibration Signature" +msgstr "ÐšÐ°Ð»Ñ–Ð±Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ°Ð¼ÐµÑ€Ð¸ 1" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Ðазва зйомки" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð²" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Ðазва теки" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +#, fuzzy +msgid "Profile Tone Curve" +msgstr "Крива тону" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +msgid "Profile Copyright" +msgstr "" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 1" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñ–Ð² 2" + +#: src/tags.cpp:1305 +#, fuzzy +msgid "Preview Application Name" +msgstr "Дані еÑкізу" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +#, fuzzy +msgid "Preview Application Version" +msgstr "ВерÑÑ–Ñ ÐµÑкізу" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "ЕÑкіз зображеннÑ" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² приÑтрою" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "ПроÑтір кольорів" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Дані еÑкізу" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Розмір цифрового негатива" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Фільтр шуму" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +#, fuzzy +msgid "Unknown IFD tag" +msgstr "Ðевідома мітка" + +#: src/tags.cpp:1408 src/tags.cpp:1466 +msgid "Not defined" +msgstr "Ðе визначено" + +#: src/tags.cpp:1413 +msgid "Creative program" +msgstr "Творча програма" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "ДіÑльна програма" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Книжковий режим" + +#: src/tags.cpp:1416 +msgid "Landscape mode" +msgstr "Ðльбомний режим" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "Мульти-плÑма" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "Лампа Ñ€Ð¾Ð·Ð¶Ð°Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ (Ñвітло дуги)" + +#: src/tags.cpp:1439 +msgid "Fine weather" +msgstr "ЯÑна погода" + +#: src/tags.cpp:1440 +msgid "Cloudy weather" +msgstr "Хмарна погода" + +#: src/tags.cpp:1442 +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "Лампа денного Ñвітла (D 5700 - 7100 K)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "Біла лампа денного Ñвітла (N 4600 - 5400 K)" + +#: src/tags.cpp:1444 +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "Лампа холодного білого Ñвітла (W 3900 - 4500 K)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "ФлуореÑцентна лампа з білим Ñвітлом (WW 3200 - 3700 K)" + +#: src/tags.cpp:1446 +msgid "Standard light A" +msgstr "Стандартне Ñвітло A" + +#: src/tags.cpp:1447 +msgid "Standard light B" +msgstr "Стандартне Ñвітло B" + +#: src/tags.cpp:1448 +msgid "Standard light C" +msgstr "Стандартне Ñвітло C" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +msgid "ISO studio tungsten" +msgstr "Студійна лампа Ñ€Ð¾Ð·Ð¶Ð°Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ ISO" + +#: src/tags.cpp:1454 +msgid "Other light source" +msgstr "Інше джерело Ñвітла" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "Ðекалібрована" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "Одночипова кольорова облаÑть" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "Двочипова кольорова облаÑть" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "Тричипова кольорова облаÑть" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "ОблаÑть поÑлідовноÑті кольорів" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "Трилінійний ÑенÑор" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "Лінійна поÑлідовніÑть кольорів" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "Плівковий Ñканер" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +msgid "Digital still camera" +msgstr "Ðерухома цифрова фотокамера" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "БезпоÑередньо Ñфотографовано" + +#: src/tags.cpp:1489 +msgid "Normal process" +msgstr "Звичайною обробкою" + +#: src/tags.cpp:1490 +msgid "Custom process" +msgstr "Ðетиповою обробкою" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "Ðевелике підÑиленнÑ" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "Значне підÑиленнÑ" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "Ðевелике поÑлабленнÑ" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "Значне поÑлабленнÑ" + +#: src/tags.cpp:1542 +msgid "Close view" +msgstr "Зблизька" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "Ðа відÑтані" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "ТриваліÑть екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð° у Ñекундах." + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "ВиÑока чутливіÑть" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Спектральна чутливіÑть" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +#, fuzzy +msgid "Recommended Exposure Index" +msgstr "Показник екÑпозиції" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "Режим чутливоÑті ISO" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "Режим чутливоÑті ISO" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" +"Підтримувана верÑÑ–Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñтандарту. Якщо у цьому полі не вказано значеннÑ, " +"вважатиметьÑÑ, що дані не відповідають Ñтандарту." + +#: src/tags.cpp:1609 +msgid "Date and Time (original)" +msgstr "Дата Ñ– Ñ‡Ð°Ñ (зніманнÑ)" + +#: src/tags.cpp:1610 +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Дата Ñ– чаÑ, коли було Ñтворено початкове зображеннÑ. Ð”Ð»Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ñ… " +"фотоапаратів дата Ñ– Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу цифрових даних." + +#: src/tags.cpp:1613 +msgid "Date and Time (digitized)" +msgstr "Дата Ñ– Ñ‡Ð°Ñ (оцифровуваннÑ)" + +#: src/tags.cpp:1614 +msgid "The date and time when the image was stored as digital data." +msgstr "Дата Ñ– чаÑ, коли Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ збережено у форматі цифрових даних." + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +msgid "Compressed Bits per Pixel" +msgstr "КількіÑть ÑтиÑнених бітів на пікÑель" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "Діафрагма об’єктива. Одиницею Ñ” Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ APEX." + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +msgid "Exposure Bias" +msgstr "Ухил екÑпозиції" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +#, fuzzy +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "Цей теґ міÑтить дані щодо відÑтані до об’єкта зйомки." + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "Ðотатка виробника" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +#, fuzzy +msgid "Sub-seconds Time" +msgstr "Дробові чаÑтки Ñекунд чаÑу зніманнÑ" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +msgid "Sub-seconds Time Original" +msgstr "Дробові чаÑтки Ñекунд чаÑу зніманнÑ" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "Дробові чаÑтки Ñекунд чаÑу оцифровуваннÑ" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +msgid "FlashPix Version" +msgstr "ВерÑÑ–Ñ FlashPix" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +#, fuzzy +msgid "Interoperability IFD Pointer" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +msgid "Focal Plane X-Resolution" +msgstr "Роздільна здатніÑть фокальної площини X" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +msgid "Focal Plane Y-Resolution" +msgstr "Роздільна здатніÑть фокальної площини Y" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +msgid "Exposure index" +msgstr "Показник екÑпозиції" + +#: src/tags.cpp:1760 +#, fuzzy +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" +"Визначає тип датчика Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° фотоапараті або приÑтрої вхідних даних." + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" +"Визначає тип датчика Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° фотоапараті або приÑтрої вхідних даних." + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Фільтр кольорів" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +#, fuzzy +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "Цей теґ міÑтить дані щодо відÑтані до об’єкта зйомки." + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +#, fuzzy +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "Цей теґ міÑтить дані щодо відÑтані до об’єкта зйомки." + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "Цей теґ міÑтить дані щодо відÑтані до об’єкта зйомки." + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Серійний номер 2" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ–" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Діапазон об’єктива" + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +#, fuzzy +msgid "Unknown Exif tag" +msgstr "Ðевідома мітка" + +#: src/tags.cpp:1878 +msgid "North" +msgstr "" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "" + +#: src/tags.cpp:1891 +#, fuzzy +msgid "Below sea level" +msgstr "Рівень чорного" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "" + +#: src/tags.cpp:1897 +#, fuzzy +msgid "Measurement Interoperability" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "Двомірний вимір" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "Тримірний вимір" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "" + +#: src/tags.cpp:1915 +#, fuzzy +msgid "True direction" +msgstr "ÐапрÑмок діафрагми" + +#: src/tags.cpp:1916 +#, fuzzy +msgid "Magnetic direction" +msgstr "ÐапрÑмок діафрагми" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "" + +#: src/tags.cpp:1928 +#, fuzzy +msgid "Without correction" +msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑпотвореннÑ" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +#, fuzzy +msgid "GPS Latitude Reference" +msgstr "Широта за GPS" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +#, fuzzy +msgid "GPS Longitude Reference" +msgstr "Довгота за GPS" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "Визначає швидкіÑть руху приймача даних GPS." + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +#, fuzzy +msgid "GPS Destination Longitude Reference" +msgstr "Режим відліку напрÑмку Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ñƒ GPS" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +#, fuzzy +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "Визначає відÑтань до точки призначеннÑ." + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "Визначає відÑтань до точки призначеннÑ." + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +#, fuzzy +msgid "GPS Date Stamp" +msgstr "Дата надÑиланнÑ" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +#, fuzzy +msgid "Unknown GPSInfo tag" +msgstr "Ðевідома мітка" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +#, fuzzy +msgid "Interoperability Version" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:2104 +#, fuzzy +msgid "Interoperability version" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:2106 +#, fuzzy +msgid "Related Image File Format" +msgstr "ЧиÑло Вилучених Зображень" + +#: src/tags.cpp:2107 +#, fuzzy +msgid "File format of image file" +msgstr "Помилка при відкритті файлу\n" + +#: src/tags.cpp:2109 +#, fuzzy +msgid "Related Image Width" +msgstr "Ширина зображеннÑ" + +#: src/tags.cpp:2112 +#, fuzzy +msgid "Related Image Length" +msgstr "Довжина зображеннÑ" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +#, fuzzy +msgid "Unknown Exif Interoperability tag" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð·Ð´Ð°Ñ‚Ð½Ð¾Ñті до взаємодії" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "ЗміщеннÑ" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "ПорÑдок байтів" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Ðевідомий тег Nikon2MakerNote" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +msgid "Unknown tag" +msgstr "Ðевідома мітка" + +#: src/tags.cpp:2688 +msgid "Digital zoom not used" +msgstr "Цифровий транÑфокатор не викориÑтовувавÑÑ" + +#: src/tiffimage.cpp:2308 +#, fuzzy +msgid "TIFF header, offset" +msgstr "Заголовок, зÑув" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "Маленький endian закодований" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "великий endian закодований" diff --git a/vendor/exiv2-0.25/po/vi.po b/vendor/exiv2-0.25/po/vi.po new file mode 100644 index 0000000..1cfc6bd --- /dev/null +++ b/vendor/exiv2-0.25/po/vi.po @@ -0,0 +1,26963 @@ +# Vietnamese translation for exiv2 +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the exiv2 package. +# +msgid "" +msgstr "" +"Project-Id-Version: exiv2\n" +"Report-Msgid-Bugs-To: ahuggel@gmx.net\n" +"POT-Creation-Date: 2015-06-18 18:40+0800\n" +"PO-Revision-Date: 2011-04-27 03:48+0000\n" +"Last-Translator: Lê Hoàng Phương \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2015-05-09 22:59+0000\n" +"X-Generator: Launchpad (build 17474)\n" + +#: src/actions.cpp:259 src/actions.cpp:272 src/actions.cpp:513 +#: src/actions.cpp:735 src/actions.cpp:752 src/actions.cpp:797 +#: src/actions.cpp:887 src/actions.cpp:1030 src/actions.cpp:1072 +#: src/actions.cpp:1141 src/actions.cpp:1183 src/actions.cpp:1188 +#: src/actions.cpp:1208 src/actions.cpp:1213 src/actions.cpp:1245 +#: src/actions.cpp:1488 src/actions.cpp:1624 src/actions.cpp:1689 +#: src/actions.cpp:1857 +msgid "Failed to open the file\n" +msgstr "Thất bại khi mở tập tin\n" + +#: src/actions.cpp:282 +msgid "File name" +msgstr "Tên tập tin" + +#: src/actions.cpp:288 +msgid "File size" +msgstr "Kích cỡ tập tin" + +#: src/actions.cpp:289 src/actions.cpp:449 src/actions.cpp:1056 +msgid "Bytes" +msgstr "" + +#: src/actions.cpp:293 +#, fuzzy +msgid "MIME type" +msgstr "Kiểu hình ảnh" + +#: src/actions.cpp:297 src/canonmn.cpp:1051 src/minoltamn.cpp:500 +#: src/minoltamn.cpp:745 src/minoltamn.cpp:992 src/pentaxmn.cpp:1172 +msgid "Image size" +msgstr "Kích cỡ hình ảnh" + +#: src/actions.cpp:302 src/actions.cpp:810 src/actions.cpp:1039 +#: src/actions.cpp:1501 src/actions.cpp:1637 src/actions.cpp:1702 +#, fuzzy +msgid "No Exif data found in the file\n" +msgstr "tìm thấy trong tập tin" + +#: src/actions.cpp:307 +#, fuzzy +msgid "Camera make" +msgstr "Kiểu Ca-me-ra" + +#: src/actions.cpp:310 +msgid "Camera model" +msgstr "Kiểu Ca-me-ra" + +#: src/actions.cpp:313 +#, fuzzy +msgid "Image timestamp" +msgstr "Cập nhật nhãn thá»i g" + +#: src/actions.cpp:317 src/minoltamn.cpp:805 src/minoltamn.cpp:812 +#: src/minoltamn.cpp:1070 +msgid "Image number" +msgstr "Số hiệu ảnh" + +#: src/actions.cpp:322 src/minoltamn.cpp:515 src/minoltamn.cpp:798 +#: src/minoltamn.cpp:1028 src/minoltamn.cpp:1372 src/pentaxmn.cpp:1189 +#: src/pentaxmn.cpp:1190 +msgid "Exposure time" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/actions.cpp:334 src/canonmn.cpp:1170 src/minoltamn.cpp:1266 +#: src/tags.cpp:1634 +msgid "Aperture" +msgstr "Khẩu độ" + +#: src/actions.cpp:345 +msgid "Exposure bias" +msgstr "Bù trừ ánh sáng" + +#: src/actions.cpp:348 src/canonmn.cpp:1101 src/minoltamn.cpp:874 +#: src/minoltamn.cpp:1202 src/minoltamn.cpp:2151 src/panasonicmn.cpp:72 +#: src/pentaxmn.cpp:418 src/properties.cpp:588 src/sonymn.cpp:220 +#: src/tags.cpp:834 src/tags.cpp:1438 src/tags.cpp:1659 +msgid "Flash" +msgstr "Äèn chá»›p" + +#: src/actions.cpp:351 src/canonmn.cpp:1164 src/panasonicmn.cpp:454 +msgid "Flash bias" +msgstr "Bù trừ ánh sáng đèn chá»›p" + +#: src/actions.cpp:356 src/canonmn.cpp:384 src/minoltamn.cpp:539 +#: src/nikonmn.cpp:1369 src/nikonmn.cpp:1394 +msgid "Focal length" +msgstr "Tiêu cá»±" + +#: src/actions.cpp:361 +msgid "35 mm equivalent" +msgstr "Tương tá»± 35mm" + +#: src/actions.cpp:373 +msgid "Subject distance" +msgstr "Khoảng cách đến vật thể" + +#: src/actions.cpp:387 +msgid "ISO speed" +msgstr "Äá»™ nhạy sáng" + +#: src/actions.cpp:390 src/minoltamn.cpp:491 src/minoltamn.cpp:742 +#: src/minoltamn.cpp:989 src/minoltamn.cpp:1357 src/olympusmn.cpp:665 +#: src/sigmamn.cpp:75 +msgid "Exposure mode" +msgstr "Chế độ phÆ¡i sáng" + +#: src/actions.cpp:393 src/minoltamn.cpp:509 src/minoltamn.cpp:1010 +#: src/minoltamn.cpp:1399 src/olympusmn.cpp:667 src/sigmamn.cpp:78 +msgid "Metering mode" +msgstr "Chế độ Ä‘o đạc" + +#: src/actions.cpp:396 src/canonmn.cpp:1042 src/minoltamn.cpp:521 +#: src/olympusmn.cpp:202 src/olympusmn.cpp:669 src/panasonicmn.cpp:448 +msgid "Macro mode" +msgstr "Chế độ chụp cận cảnh" + +#: src/actions.cpp:399 src/minoltamn.cpp:133 src/minoltamn.cpp:503 +#: src/minoltamn.cpp:748 src/minoltamn.cpp:995 src/pentaxmn.cpp:1169 +#: src/sonymn.cpp:324 +msgid "Image quality" +msgstr "Chất lượng hình ảnh" + +#: src/actions.cpp:403 +#, fuzzy +msgid "Exif Resolution" +msgstr "Äá»™ phân giải X" + +#: src/actions.cpp:433 src/canonmn.cpp:1411 src/minoltamn.cpp:178 +#: src/minoltamn.cpp:497 src/minoltamn.cpp:751 src/minoltamn.cpp:998 +#: src/minoltamn.cpp:1381 src/nikonmn.cpp:228 src/nikonmn.cpp:478 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:887 src/pentaxmn.cpp:1209 +#: src/pentaxmn.cpp:1210 src/sigmamn.cpp:72 src/sonymn.cpp:339 +msgid "White balance" +msgstr "Cân bằng trắng" + +#: src/actions.cpp:436 src/minoltamn.cpp:114 src/olympusmn.cpp:426 +msgid "Thumbnail" +msgstr "Ảnh thu nhá»" + +#: src/actions.cpp:440 src/actions.cpp:445 src/canonmn.cpp:523 +#: src/canonmn.cpp:1315 src/canonmn.cpp:1324 src/canonmn.cpp:1378 +#: src/minoltamn.cpp:310 src/minoltamn.cpp:399 src/minoltamn.cpp:2129 +#: src/nikonmn.cpp:175 src/nikonmn.cpp:190 src/nikonmn.cpp:923 +#: src/nikonmn.cpp:948 src/nikonmn.cpp:1010 src/olympusmn.cpp:142 +#: src/olympusmn.cpp:726 src/olympusmn.cpp:733 src/olympusmn.cpp:1189 +#: src/olympusmn.cpp:1258 src/olympusmn.cpp:1407 src/olympusmn.cpp:1612 +#: src/olympusmn.cpp:1621 src/pentaxmn.cpp:288 src/pentaxmn.cpp:304 +#: src/pentaxmn.cpp:451 src/pentaxmn.cpp:452 src/properties.cpp:939 +#: src/properties.cpp:947 src/tags.cpp:1517 +msgid "None" +msgstr "Không" + +#: src/actions.cpp:455 src/datasets.cpp:376 src/properties.cpp:375 +#: src/properties.cpp:548 src/properties.cpp:1098 src/tags.cpp:769 +msgid "Copyright" +msgstr "Bản quyá»n" + +#: src/actions.cpp:458 +#, fuzzy +msgid "Exif comment" +msgstr "Không tìm thấy chú thích cá»§a ngưá»i dùng Exif nào" + +#: src/actions.cpp:675 src/actions.cpp:700 src/actions.cpp:721 +msgid "(Binary value suppressed)" +msgstr "" + +#: src/actions.cpp:742 +#, fuzzy +msgid "JPEG comment" +msgstr "Tùy chỉnh bình luạn JPEG" + +#: src/actions.cpp:767 +msgid "Preview" +msgstr "Xem lại" + +#: src/actions.cpp:771 src/actions.cpp:1111 src/properties.cpp:451 +msgid "pixels" +msgstr "Các Ä‘iểm ảnh" + +#: src/actions.cpp:773 src/actions.cpp:1113 +msgid "bytes" +msgstr "" + +#: src/actions.cpp:820 +#, fuzzy +msgid "Neither tag" +msgstr "Dữ liệu khác" + +#: src/actions.cpp:821 +#, fuzzy +msgid "nor" +msgstr "Trong nhà" + +#: src/actions.cpp:822 +msgid "found in the file" +msgstr "tìm thấy trong tập tin" + +#: src/actions.cpp:827 +msgid "Image file creation timestamp not set in the file" +msgstr "" + +#: src/actions.cpp:833 src/actions.cpp:1590 +#, fuzzy +msgid "Failed to parse timestamp" +msgstr "Ghi hình ảnh thất bại" + +#: src/actions.cpp:834 +msgid "in the file" +msgstr "trong tập tin" + +#: src/actions.cpp:845 +#, fuzzy +msgid "Updating timestamp to" +msgstr "Cập nhật nhãn thá»i g" + +#: src/actions.cpp:939 +#, fuzzy +msgid "Erasing thumbnail data" +msgstr "Viết ảnh phác thảo" + +#: src/actions.cpp:947 +#, fuzzy +msgid "Erasing Exif data from the file" +msgstr "Viết dữ liệu Exif từ" + +#: src/actions.cpp:956 +#, fuzzy +msgid "Erasing IPTC data from the file" +msgstr "Viết dữ liệu IPTC từ" + +#: src/actions.cpp:965 +#, fuzzy +msgid "Erasing JPEG comment from the file" +msgstr "Viết chú thích JPEG từ" + +#: src/actions.cpp:974 +#, fuzzy +msgid "Erasing XMP data from the file" +msgstr "Viết dữ liệu XMP từ" + +#: src/actions.cpp:1046 +msgid "Image does not contain an Exif thumbnail\n" +msgstr "" + +#: src/actions.cpp:1055 +msgid "Writing thumbnail" +msgstr "Viết ảnh phác thảo" + +#: src/actions.cpp:1056 src/actions.cpp:1114 +msgid "to file" +msgstr "tá»›i tập tin" + +#: src/actions.cpp:1062 +msgid "Exif data doesn't contain a thumbnail\n" +msgstr "" + +#: src/actions.cpp:1092 src/actions.cpp:1118 +msgid "Image does not have preview" +msgstr "Hình ảnh không có chế độ xem trước" + +#: src/actions.cpp:1107 +msgid "Writing preview" +msgstr "Viết bài duyệt trước" + +#: src/actions.cpp:1278 +msgid "Setting JPEG comment" +msgstr "Tùy chỉnh bình luạn JPEG" + +#: src/actions.cpp:1319 +msgid "Add" +msgstr "Thêm" + +#: src/actions.cpp:1341 src/actions.cpp:1415 +msgid "Warning" +msgstr "Cảnh báo" + +#: src/actions.cpp:1342 src/actions.cpp:1416 +msgid "Failed to read" +msgstr "Äá»c thất bại" + +#: src/actions.cpp:1344 src/actions.cpp:1418 +msgid "value" +msgstr "Giá trị" + +#: src/actions.cpp:1355 +#, fuzzy +msgid "Set" +msgstr "Thú cưng" + +#: src/actions.cpp:1427 +msgid "Del" +msgstr "Xóa" + +#: src/actions.cpp:1459 +msgid "Reg " +msgstr "" + +#: src/actions.cpp:1543 +msgid "Timestamp of metadatum with key" +msgstr "" + +#: src/actions.cpp:1544 +#, fuzzy +msgid "not set\n" +msgstr "Chưa đặt giá trị" + +#: src/actions.cpp:1549 +msgid "Adjusting" +msgstr "Thay đổi" + +#: src/actions.cpp:1549 +msgid "by" +msgstr "bởi" + +#: src/actions.cpp:1553 src/actions.cpp:1602 +msgid "years" +msgstr "Các năm" + +#: src/actions.cpp:1556 +msgid "year" +msgstr "Năm" + +#: src/actions.cpp:1564 +msgid "months" +msgstr "Các tháng" + +#: src/actions.cpp:1567 +msgid "month" +msgstr "Tháng" + +#: src/actions.cpp:1575 +msgid "days" +msgstr "Các ngày" + +#: src/actions.cpp:1578 +msgid "day" +msgstr "Ngày" + +#: src/actions.cpp:1584 +msgid "s" +msgstr "s" + +#: src/actions.cpp:1600 +msgid "Can't adjust timestamp by" +msgstr "" + +#: src/actions.cpp:1609 src/actions.cpp:1881 src/actions.cpp:1889 +#: src/actions.cpp:1897 src/actions.cpp:1906 src/actions.cpp:2016 +msgid "to" +msgstr "tá»›i" + +#: src/actions.cpp:1644 +msgid "Standard Exif ISO tag exists; not modified\n" +msgstr "" + +#: src/actions.cpp:1652 +msgid "Setting Exif ISO value to" +msgstr "Cài đặt giá trị độ nhạy sáng Exif tá»›i" + +#: src/actions.cpp:1708 +msgid "No Exif user comment found" +msgstr "Không tìm thấy chú thích cá»§a ngưá»i dùng Exif nào" + +#: src/actions.cpp:1716 +msgid "Found Exif user comment with unexpected value type" +msgstr "Tìm thấy chú thích cá»§a ngưá»i dùng Exif vá»›i kiểu giá trị không mong đợi" + +#: src/actions.cpp:1723 +#, fuzzy +msgid "No Exif UNICODE user comment found" +msgstr "Không tìm thấy chú thích cá»§a ngưá»i dùng Exif nào" + +#: src/actions.cpp:1729 +#, fuzzy +msgid "Setting Exif UNICODE user comment to" +msgstr "Cài đặt giá trị độ nhạy sáng Exif tá»›i" + +#: src/actions.cpp:1880 +msgid "Writing Exif data from" +msgstr "Viết dữ liệu Exif từ" + +#: src/actions.cpp:1888 +msgid "Writing IPTC data from" +msgstr "Viết dữ liệu IPTC từ" + +#: src/actions.cpp:1896 +msgid "Writing XMP data from" +msgstr "Viết dữ liệu XMP từ" + +#: src/actions.cpp:1905 +msgid "Writing JPEG comment from" +msgstr "Viết chú thích JPEG từ" + +#: src/actions.cpp:1915 +msgid "Could not write metadata to file" +msgstr "" + +#: src/actions.cpp:1942 +msgid "Filename format yields empty filename for the file" +msgstr "Äịnh dạng tên tập tin" + +#: src/actions.cpp:1951 +msgid "This file already has the correct name" +msgstr "Tập tin đã có sẵn tên chính xác" + +#: src/actions.cpp:1975 src/exiv2.cpp:168 +msgid "File" +msgstr "Tập tin" + +#: src/actions.cpp:1976 +msgid "exists. [O]verwrite, [r]ename or [s]kip?" +msgstr "" + +#: src/actions.cpp:2004 +msgid "Renaming file to" +msgstr "Äổi tên tập tin thành" + +#: src/actions.cpp:2006 +msgid "updating timestamp" +msgstr "Cập nhật nhãn thá»i g" + +#: src/actions.cpp:2015 +msgid "Failed to rename" +msgstr "Äổi tên thất bại" + +#: src/actions.cpp:2037 +msgid "Overwrite" +msgstr "Lưu đè" + +#: src/canonmn.cpp:58 src/canonmn.cpp:369 src/canonmn.cpp:428 +#: src/canonmn.cpp:444 src/canonmn.cpp:1000 src/canonmn.cpp:1013 +#: src/canonmn.cpp:1276 src/canonmn.cpp:1299 src/canonmn.cpp:1308 +#: src/fujimn.cpp:56 src/fujimn.cpp:102 src/fujimn.cpp:140 +#: src/minoltamn.cpp:84 src/minoltamn.cpp:213 src/minoltamn.cpp:270 +#: src/minoltamn.cpp:1138 src/minoltamn.cpp:1279 src/minoltamn.cpp:1341 +#: src/minoltamn.cpp:1963 src/minoltamn.cpp:1977 src/minoltamn.cpp:2025 +#: src/nikonmn.cpp:62 src/nikonmn.cpp:68 src/nikonmn.cpp:76 +#: src/nikonmn.cpp:206 src/nikonmn.cpp:649 src/nikonmn.cpp:674 +#: src/nikonmn.cpp:723 src/nikonmn.cpp:758 src/nikonmn.cpp:852 +#: src/nikonmn.cpp:901 src/nikonmn.cpp:990 src/nikonmn.cpp:1232 +#: src/nikonmn.cpp:1241 src/olympusmn.cpp:59 src/olympusmn.cpp:79 +#: src/olympusmn.cpp:86 src/olympusmn.cpp:501 src/olympusmn.cpp:529 +#: src/olympusmn.cpp:540 src/olympusmn.cpp:557 src/olympusmn.cpp:592 +#: src/olympusmn.cpp:654 src/olympusmn.cpp:919 src/olympusmn.cpp:1140 +#: src/olympusmn.cpp:1500 src/olympusmn.cpp:1501 src/olympusmn.cpp:1567 +#: src/panasonicmn.cpp:93 src/panasonicmn.cpp:102 src/panasonicmn.cpp:109 +#: src/panasonicmn.cpp:197 src/panasonicmn.cpp:207 src/panasonicmn.cpp:236 +#: src/panasonicmn.cpp:273 src/panasonicmn.cpp:288 src/panasonicmn.cpp:325 +#: src/panasonicmn.cpp:331 src/panasonicmn.cpp:345 src/panasonicmn.cpp:354 +#: src/panasonicmn.cpp:362 src/panasonicmn.cpp:379 src/panasonicmn.cpp:395 +#: src/panasonicmn.cpp:404 src/panasonicmn.cpp:411 src/panasonicmn.cpp:429 +#: src/pentaxmn.cpp:390 src/pentaxmn.cpp:983 src/pentaxmn.cpp:989 +#: src/sonymn.cpp:56 src/sonymn.cpp:127 src/sonymn.cpp:188 src/sonymn.cpp:196 +#: src/sonymn.cpp:203 src/sonymn.cpp:248 src/sonymn.cpp:255 src/sonymn.cpp:286 +#: src/sonymn.cpp:549 +msgid "Off" +msgstr "Tắt" + +#: src/canonmn.cpp:59 src/canonmn.cpp:427 src/canonmn.cpp:446 +#: src/canonmn.cpp:1001 src/canonmn.cpp:1302 src/fujimn.cpp:57 +#: src/fujimn.cpp:101 src/fujimn.cpp:141 src/minoltamn.cpp:85 +#: src/minoltamn.cpp:1964 src/minoltamn.cpp:1976 src/nikonmn.cpp:63 +#: src/nikonmn.cpp:648 src/nikonmn.cpp:724 src/nikonmn.cpp:725 +#: src/nikonmn.cpp:1242 src/olympusmn.cpp:60 src/olympusmn.cpp:80 +#: src/olympusmn.cpp:87 src/olympusmn.cpp:502 src/olympusmn.cpp:530 +#: src/olympusmn.cpp:1568 src/panasonicmn.cpp:101 src/panasonicmn.cpp:289 +#: src/panasonicmn.cpp:326 src/panasonicmn.cpp:363 src/panasonicmn.cpp:380 +#: src/panasonicmn.cpp:430 src/pentaxmn.cpp:391 src/pentaxmn.cpp:984 +#: src/sonymn.cpp:204 src/sonymn.cpp:256 src/sonymn.cpp:287 +msgid "On" +msgstr "Bật" + +#: src/canonmn.cpp:363 +msgid "Format 1" +msgstr "Äịnh dạng 1" + +#: src/canonmn.cpp:364 +msgid "Format 2" +msgstr "Äịnh dạng 2" + +#: src/canonmn.cpp:370 src/nikonmn.cpp:1233 +msgid "On (1)" +msgstr "Mở (1)" + +#: src/canonmn.cpp:371 src/nikonmn.cpp:1234 +msgid "On (2)" +msgstr "Mở (2)" + +#: src/canonmn.cpp:376 src/minoltamn.cpp:1146 src/nikonmn.cpp:136 +#: src/olympusmn.cpp:601 src/olympusmn.cpp:781 src/olympusmn.cpp:846 +#: src/pentaxmn.cpp:684 src/tags.cpp:1459 +msgid "sRGB" +msgstr "" + +#: src/canonmn.cpp:377 src/canonmn.cpp:1382 src/minoltamn.cpp:359 +#: src/minoltamn.cpp:729 src/minoltamn.cpp:905 src/minoltamn.cpp:954 +#: src/minoltamn.cpp:1147 src/nikonmn.cpp:137 src/olympusmn.cpp:602 +#: src/olympusmn.cpp:782 src/olympusmn.cpp:847 src/pentaxmn.cpp:685 +#: src/sonymn.cpp:531 src/sonymn.cpp:556 src/tags.cpp:1460 +#, fuzzy +msgid "Adobe RGB" +msgstr "Thẻ Adobe DNG" + +#: src/canonmn.cpp:382 src/canonmn.cpp:385 src/canonmn.cpp:410 +#: src/canonmn.cpp:411 src/canonmn.cpp:412 src/canonmn.cpp:1047 +#: src/canonmn.cpp:1049 src/canonmn.cpp:1050 src/canonmn.cpp:1062 +#: src/canonmn.cpp:1071 src/canonmn.cpp:1072 src/canonmn.cpp:1079 +#: src/canonmn.cpp:1150 src/canonmn.cpp:1155 src/canonmn.cpp:1157 +#: src/canonmn.cpp:1159 src/canonmn.cpp:1160 src/canonmn.cpp:1161 +#: src/canonmn.cpp:1162 src/canonmn.cpp:1165 src/canonmn.cpp:1166 +#: src/canonmn.cpp:1167 src/canonmn.cpp:1169 src/canonmn.cpp:1173 +#: src/canonmn.cpp:1174 src/canonmn.cpp:1175 src/fujimn.cpp:214 +#: src/fujimn.cpp:223 src/fujimn.cpp:232 src/nikonmn.cpp:240 +#: src/nikonmn.cpp:306 src/nikonmn.cpp:463 src/nikonmn.cpp:484 +#: src/nikonmn.cpp:493 src/nikonmn.cpp:541 src/nikonmn.cpp:593 +#: src/nikonmn.cpp:596 src/nikonmn.cpp:599 src/nikonmn.cpp:1025 +#: src/nikonmn.cpp:1047 src/nikonmn.cpp:1520 src/nikonmn.cpp:2676 +#: src/olympusmn.cpp:186 src/olympusmn.cpp:325 src/olympusmn.cpp:328 +#: src/olympusmn.cpp:334 src/olympusmn.cpp:349 src/olympusmn.cpp:352 +#: src/olympusmn.cpp:355 src/olympusmn.cpp:358 src/olympusmn.cpp:361 +#: src/olympusmn.cpp:364 src/olympusmn.cpp:367 src/olympusmn.cpp:370 +#: src/olympusmn.cpp:376 src/olympusmn.cpp:379 src/olympusmn.cpp:412 +#: src/olympusmn.cpp:415 src/olympusmn.cpp:418 src/olympusmn.cpp:421 +#: src/olympusmn.cpp:1046 src/panasonicmn.cpp:444 src/panasonicmn.cpp:452 +#: src/panasonicmn.cpp:457 src/panasonicmn.cpp:465 src/panasonicmn.cpp:532 +#: src/pentaxmn.cpp:422 src/properties.cpp:834 src/properties.cpp:841 +#: src/sonymn.cpp:342 src/sonymn.cpp:361 src/sonymn.cpp:367 src/sonymn.cpp:370 +#: src/sonymn.cpp:379 src/sonymn.cpp:382 src/sonymn.cpp:385 src/sonymn.cpp:388 +#: src/tags.cpp:1421 src/tags.cpp:1434 src/tags.cpp:1540 src/tags.cpp:2587 +#: src/tags.cpp:2705 +msgid "Unknown" +msgstr "Không biết" + +#: src/canonmn.cpp:383 src/olympusmn.cpp:450 src/sonymn.cpp:335 +#: src/sonymn.cpp:336 +msgid "Camera Settings" +msgstr "Tùy chỉnh máy ảnh" + +#: src/canonmn.cpp:383 +msgid "Various camera settings" +msgstr "Các tùy chỉnh máy ảnh khác nhau" + +#: src/canonmn.cpp:384 src/minoltamn.cpp:538 src/nikonmn.cpp:1369 +#: src/nikonmn.cpp:1394 src/properties.cpp:589 src/properties.cpp:1158 +#: src/tags.cpp:835 src/tags.cpp:1662 +msgid "Focal Length" +msgstr "Tiêu cá»±" + +#: src/canonmn.cpp:386 src/sonymn.cpp:394 +msgid "Shot Info" +msgstr "Thông tin Chụp" + +#: src/canonmn.cpp:386 +msgid "Shot information" +msgstr "Thông tin ảnh ch" + +#: src/canonmn.cpp:387 src/olympusmn.cpp:101 src/olympusmn.cpp:1159 +#: src/panasonicmn.cpp:158 src/sonymn.cpp:357 src/sonymn.cpp:358 +msgid "Panorama" +msgstr "Toàn cảnh" + +#: src/canonmn.cpp:388 src/datasets.cpp:396 src/properties.cpp:786 +msgid "Image Type" +msgstr "Kiểu hình ảnh" + +#: src/canonmn.cpp:388 +msgid "Image type" +msgstr "Kiểu hình ảnh" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 src/properties.cpp:1156 +msgid "Firmware Version" +msgstr "Phiên bản phần vững" + +#: src/canonmn.cpp:389 src/panasonicmn.cpp:442 +msgid "Firmware version" +msgstr "Firmware Version" + +#: src/canonmn.cpp:390 src/canonmn.cpp:1333 src/nikonmn.cpp:889 +msgid "File Number" +msgstr "Tập tin số" + +#: src/canonmn.cpp:390 src/nikonmn.cpp:889 +msgid "File number" +msgstr "Tập tin số" + +#: src/canonmn.cpp:391 +msgid "Owner Name" +msgstr "Tên chá»§ sở hữu" + +#: src/canonmn.cpp:392 src/fujimn.cpp:182 src/nikonmn.cpp:558 +#: src/olympusmn.cpp:747 src/pentaxmn.cpp:1400 src/pentaxmn.cpp:1401 +#: src/properties.cpp:659 src/sigmamn.cpp:56 +msgid "Serial Number" +msgstr "Chuá»—i số" + +#: src/canonmn.cpp:392 src/sigmamn.cpp:57 +msgid "Camera serial number" +msgstr "Số thứ tá»± máy ảnh" + +#: src/canonmn.cpp:393 +msgid "Camera Info" +msgstr "Thông tin Máy ảnh" + +#: src/canonmn.cpp:393 +msgid "Camera info" +msgstr "Thông tin máy ảnh" + +#: src/canonmn.cpp:394 src/canonmn.cpp:406 +#, fuzzy +msgid "Custom Functions" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/canonmn.cpp:395 +msgid "ModelID" +msgstr "" + +#: src/canonmn.cpp:395 +msgid "Model ID" +msgstr "" + +#: src/canonmn.cpp:396 src/olympusmn.cpp:219 +msgid "Picture Info" +msgstr "Thông tin hình ảnh" + +#: src/canonmn.cpp:396 +msgid "Picture info" +msgstr "Thông tin hình ảnh" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail Image Valid Area" +msgstr "Hình ảnh thu nhá»" + +#: src/canonmn.cpp:397 +#, fuzzy +msgid "Thumbnail image valid area" +msgstr "Hình ảnh thu nhá»" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial Number Format" +msgstr "Chuá»—i số" + +#: src/canonmn.cpp:398 +#, fuzzy +msgid "Serial number format" +msgstr "Chuá»—i số" + +#: src/canonmn.cpp:399 src/minoltamn.cpp:2095 src/olympusmn.cpp:110 +#: src/olympusmn.cpp:503 src/pentaxmn.cpp:271 +msgid "Super Macro" +msgstr "Siêu cận cảnh phóng to" + +#: src/canonmn.cpp:399 src/canonmn.cpp:507 src/canonmn.cpp:577 +#: src/olympusmn.cpp:81 +msgid "Super macro" +msgstr "Siêu cận cảnh phóng to" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF Info" +msgstr "Thông tin Lấy nét tá»± động" + +#: src/canonmn.cpp:400 src/nikonmn.cpp:575 +msgid "AF info" +msgstr "Thông tin lấy nét tá»± động" + +#: src/canonmn.cpp:401 +msgid "Original Decision Data Offset" +msgstr "" + +#: src/canonmn.cpp:401 +msgid "Original decision data offset" +msgstr "" + +#: src/canonmn.cpp:402 +msgid "White Balance Table" +msgstr "Bảng cân bằng trắng" + +#: src/canonmn.cpp:402 +msgid "White balance table" +msgstr "Bảng cân bằng trắng" + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 src/properties.cpp:406 +#: src/properties.cpp:1199 src/tags.cpp:1857 +#, fuzzy +msgid "Lens Model" +msgstr "Kiểu ống kính." + +#: src/canonmn.cpp:403 src/olympusmn.cpp:753 +#, fuzzy +msgid "Lens model" +msgstr "Kiểu ống kính." + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 src/panasonicmn.cpp:455 +#, fuzzy +msgid "Internal Serial Number" +msgstr "Dãy số bên trong" + +#: src/canonmn.cpp:404 src/olympusmn.cpp:748 +msgid "Internal serial number" +msgstr "Dãy số bên trong" + +#: src/canonmn.cpp:405 +msgid "Dust Removal Data" +msgstr "Dữ liệu loại bá» bụi" + +#: src/canonmn.cpp:405 +msgid "Dust removal data" +msgstr "Dữ liệu loại bá» bụi" + +#: src/canonmn.cpp:406 +#, fuzzy +msgid "Custom functions" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/canonmn.cpp:407 +msgid "Processing Info" +msgstr "Xá»­ lý Thông tin" + +#: src/canonmn.cpp:407 +msgid "Processing info" +msgstr "Xá»­ lý thông tin" + +#: src/canonmn.cpp:408 +msgid "Measured Color" +msgstr "Äo lưá»ng Màu sắc" + +#: src/canonmn.cpp:408 +msgid "Measured color" +msgstr "Äo lưá»ng màu sắc" + +#: src/canonmn.cpp:409 +msgid "ColorSpace" +msgstr "Khoảng không gian màu" + +#: src/canonmn.cpp:413 +msgid "VRD Offset" +msgstr "" + +#: src/canonmn.cpp:413 +msgid "VRD offset" +msgstr "" + +#: src/canonmn.cpp:414 +msgid "Sensor Info" +msgstr "Thông tin cảm biến" + +#: src/canonmn.cpp:414 +msgid "Sensor info" +msgstr "Thông tin cảm biến" + +#: src/canonmn.cpp:415 +msgid "Color Data" +msgstr "Dữ liệu màu" + +#: src/canonmn.cpp:415 +msgid "Color data" +msgstr "Dữ liệu màu" + +#: src/canonmn.cpp:417 +#, fuzzy +msgid "Unknown CanonMakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/canonmn.cpp:433 src/minoltamn.cpp:78 src/minoltamn.cpp:246 +#: src/minoltamn.cpp:677 src/minoltamn.cpp:863 src/minoltamn.cpp:2113 +#: src/panasonicmn.cpp:126 +msgid "Economy" +msgstr "Kinh tế" + +#: src/canonmn.cpp:434 src/canonmn.cpp:533 src/fujimn.cpp:64 src/fujimn.cpp:84 +#: src/fujimn.cpp:93 src/minoltamn.cpp:304 src/minoltamn.cpp:675 +#: src/minoltamn.cpp:861 src/nikonmn.cpp:70 src/nikonmn.cpp:78 +#: src/nikonmn.cpp:209 src/nikonmn.cpp:434 src/olympusmn.cpp:150 +#: src/olympusmn.cpp:162 src/olympusmn.cpp:170 src/olympusmn.cpp:1115 +#: src/olympusmn.cpp:1157 src/panasonicmn.cpp:57 src/panasonicmn.cpp:110 +#: src/panasonicmn.cpp:214 src/panasonicmn.cpp:260 src/panasonicmn.cpp:385 +#: src/pentaxmn.cpp:267 src/pentaxmn.cpp:443 src/pentaxmn.cpp:458 +#: src/pentaxmn.cpp:471 src/sonymn.cpp:180 src/sonymn.cpp:265 +#: src/sonymn.cpp:271 src/tags.cpp:1526 src/tags.cpp:1533 +msgid "Normal" +msgstr "Bình thưá»ng" + +#: src/canonmn.cpp:435 src/minoltamn.cpp:76 src/minoltamn.cpp:244 +#: src/minoltamn.cpp:674 src/minoltamn.cpp:860 src/minoltamn.cpp:2057 +#: src/minoltamn.cpp:2111 src/sonymn.cpp:181 +msgid "Fine" +msgstr "Tốt" + +#: src/canonmn.cpp:436 src/olympusmn.cpp:649 src/pentaxmn.cpp:203 +msgid "RAW" +msgstr "Nguyên gốc" + +#: src/canonmn.cpp:437 +msgid "Superfine" +msgstr "Siêutốt" + +#: src/canonmn.cpp:438 +msgid "Normal Movie" +msgstr "Phim bình thưá»ng" + +#: src/canonmn.cpp:439 +#, fuzzy +msgid "Movie (2)" +msgstr "Phim" + +#: src/canonmn.cpp:445 src/canonmn.cpp:541 src/canonmn.cpp:569 +#: src/canonmn.cpp:1096 src/canonmn.cpp:1303 src/canonmn.cpp:1398 +#: src/fujimn.cpp:71 src/fujimn.cpp:100 src/fujimn.cpp:109 src/fujimn.cpp:115 +#: src/minoltamn.cpp:218 src/minoltamn.cpp:324 src/minoltamn.cpp:659 +#: src/minoltamn.cpp:682 src/minoltamn.cpp:716 src/minoltamn.cpp:839 +#: src/minoltamn.cpp:868 src/minoltamn.cpp:888 src/minoltamn.cpp:1123 +#: src/minoltamn.cpp:1186 src/minoltamn.cpp:1239 src/minoltamn.cpp:2029 +#: src/minoltamn.cpp:2096 src/minoltamn.cpp:2145 src/nikonmn.cpp:81 +#: src/nikonmn.cpp:451 src/olympusmn.cpp:94 src/olympusmn.cpp:156 +#: src/olympusmn.cpp:559 src/olympusmn.cpp:565 src/olympusmn.cpp:611 +#: src/olympusmn.cpp:1206 src/olympusmn.cpp:1217 src/olympusmn.cpp:1218 +#: src/panasonicmn.cpp:67 src/panasonicmn.cpp:81 src/pentaxmn.cpp:56 +#: src/pentaxmn.cpp:283 src/pentaxmn.cpp:409 src/sonymn.cpp:57 +#: src/sonymn.cpp:130 src/sonymn.cpp:145 src/sonymn.cpp:210 src/sonymn.cpp:249 +#: src/sonymn.cpp:548 src/sonymn.cpp:565 src/tags.cpp:1410 src/tags.cpp:1495 +#: src/tags.cpp:1502 +msgid "Auto" +msgstr "Tá»± động" + +#: src/canonmn.cpp:447 src/olympusmn.cpp:532 +msgid "Red-eye" +msgstr "Mắt Ä‘á»" + +#: src/canonmn.cpp:448 +msgid "Slow sync" +msgstr "Äồng bá»™ chậm" + +#: src/canonmn.cpp:449 +msgid "Auto + red-eye" +msgstr "Tá»± động + mắt Ä‘á»" + +#: src/canonmn.cpp:450 +msgid "On + red-eye" +msgstr "Mở + mắt-Ä‘á»" + +#: src/canonmn.cpp:451 src/canonmn.cpp:452 src/minoltamn.cpp:1343 +#: src/nikonmn.cpp:924 src/olympusmn.cpp:144 +msgid "External" +msgstr "Ngoài" + +#: src/canonmn.cpp:457 +#, fuzzy +msgid "Single / timer" +msgstr "Khung hình đơn" + +#: src/canonmn.cpp:458 src/canonmn.cpp:472 src/canonmn.cpp:986 +#: src/fujimn.cpp:225 src/minoltamn.cpp:253 src/minoltamn.cpp:1101 +#: src/minoltamn.cpp:1153 src/nikonmn.cpp:151 src/nikonmn.cpp:164 +#: src/pentaxmn.cpp:661 +msgid "Continuous" +msgstr "Liên tục" + +#: src/canonmn.cpp:459 src/olympusmn.cpp:103 +msgid "Movie" +msgstr "Phim" + +#: src/canonmn.cpp:460 +msgid "Continuous, speed priority" +msgstr "Liên tục, ưu tiên tốc độ" + +#: src/canonmn.cpp:461 +msgid "Continuous, low" +msgstr "Liên tục, thấp" + +#: src/canonmn.cpp:462 +msgid "Continuous, high" +msgstr "Liên tục, cao" + +#: src/canonmn.cpp:467 +#, fuzzy +msgid "One shot AF" +msgstr "Mở, chỉ chụp" + +#: src/canonmn.cpp:468 +msgid "AI servo AF" +msgstr "" + +#: src/canonmn.cpp:469 +#, fuzzy +msgid "AI focus AF" +msgstr "Lấy nét tá»± động" + +#: src/canonmn.cpp:470 src/canonmn.cpp:473 src/minoltamn.cpp:374 +msgid "Manual focus" +msgstr "Lấy nét tay" + +#: src/canonmn.cpp:471 src/canonmn.cpp:985 src/sonymn.cpp:280 +msgid "Single" +msgstr "ÄÆ¡n" + +#: src/canonmn.cpp:474 src/canonmn.cpp:475 src/canonmn.cpp:502 +#: src/canonmn.cpp:576 +#, fuzzy +msgid "Pan focus" +msgstr "Lấy nét tay" + +#: src/canonmn.cpp:480 src/canonmn.cpp:1285 src/minoltamn.cpp:666 +#: src/minoltamn.cpp:852 src/sonymn.cpp:583 +msgid "Large" +msgstr "Lá»›n" + +#: src/canonmn.cpp:481 src/canonmn.cpp:1028 src/canonmn.cpp:1286 +#: src/minoltamn.cpp:667 src/minoltamn.cpp:853 src/minoltamn.cpp:1226 +#: src/properties.cpp:1220 src/sonymn.cpp:584 +msgid "Medium" +msgstr "Trung bình" + +#: src/canonmn.cpp:482 src/canonmn.cpp:1287 src/minoltamn.cpp:668 +#: src/minoltamn.cpp:854 src/minoltamn.cpp:1227 src/sonymn.cpp:585 +msgid "Small" +msgstr "Nhá»" + +#: src/canonmn.cpp:483 src/canonmn.cpp:1288 +msgid "Medium 1" +msgstr "Trung bình 1" + +#: src/canonmn.cpp:484 src/canonmn.cpp:1289 +msgid "Medium 2" +msgstr "Trung bình 2" + +#: src/canonmn.cpp:485 src/canonmn.cpp:1290 +msgid "Medium 3" +msgstr "Trung bình 3" + +#: src/canonmn.cpp:490 +msgid "Full auto" +msgstr "Tá»± động hoàn toàn" + +#: src/canonmn.cpp:491 src/canonmn.cpp:568 src/canonmn.cpp:974 +#: src/canonmn.cpp:1362 src/fujimn.cpp:110 src/fujimn.cpp:135 +#: src/minoltamn.cpp:204 src/minoltamn.cpp:658 src/minoltamn.cpp:689 +#: src/minoltamn.cpp:690 src/minoltamn.cpp:697 src/minoltamn.cpp:838 +#: src/minoltamn.cpp:876 src/minoltamn.cpp:1285 src/nikonmn.cpp:996 +#: src/olympusmn.cpp:157 src/olympusmn.cpp:482 src/olympusmn.cpp:560 +#: src/panasonicmn.cpp:71 src/panasonicmn.cpp:74 src/panasonicmn.cpp:82 +#: src/panasonicmn.cpp:120 src/pentaxmn.cpp:58 src/pentaxmn.cpp:270 +#: src/pentaxmn.cpp:414 src/pentaxmn.cpp:620 src/pentaxmn.cpp:633 +#: src/sigmamn.cpp:157 src/sonymn.cpp:160 src/sonymn.cpp:211 +#: src/sonymn.cpp:509 src/sonymn.cpp:566 src/tags.cpp:1409 src/tags.cpp:1496 +#: src/tags.cpp:1503 +msgid "Manual" +msgstr "Thá»§ công" + +#: src/canonmn.cpp:492 src/canonmn.cpp:1394 src/fujimn.cpp:117 +#: src/minoltamn.cpp:66 src/minoltamn.cpp:846 src/minoltamn.cpp:1940 +#: src/minoltamn.cpp:2092 src/olympusmn.cpp:98 src/pentaxmn.cpp:585 +#: src/pentaxmn.cpp:972 src/sonymn.cpp:150 src/sonymn.cpp:527 +#: src/sonymn.cpp:576 src/tags.cpp:1509 +msgid "Landscape" +msgstr "Phong cảnh" + +#: src/canonmn.cpp:493 +msgid "Fast shutter" +msgstr "Thá»i gian chập nhanh" + +#: src/canonmn.cpp:494 +msgid "Slow shutter" +msgstr "Thá»i gian chập chậm" + +#: src/canonmn.cpp:495 src/minoltamn.cpp:68 src/minoltamn.cpp:951 +#: src/minoltamn.cpp:2089 src/olympusmn.cpp:99 src/pentaxmn.cpp:591 +msgid "Night Scene" +msgstr "Cảnh đêm" + +#: src/canonmn.cpp:496 +msgid "Gray scale" +msgstr "" + +#: src/canonmn.cpp:497 src/canonmn.cpp:1017 src/canonmn.cpp:1325 +#: src/minoltamn.cpp:61 src/nikonmn.cpp:192 src/nikonmn.cpp:685 +#: src/olympusmn.cpp:621 src/olympusmn.cpp:638 src/olympusmn.cpp:863 +#: src/olympusmn.cpp:878 src/panasonicmn.cpp:201 src/sonymn.cpp:537 +msgid "Sepia" +msgstr "" + +#: src/canonmn.cpp:498 src/canonmn.cpp:1380 src/canonmn.cpp:1393 +#: src/fujimn.cpp:116 src/minoltamn.cpp:63 src/minoltamn.cpp:311 +#: src/minoltamn.cpp:842 src/minoltamn.cpp:948 src/minoltamn.cpp:1939 +#: src/minoltamn.cpp:2087 src/olympusmn.cpp:96 src/olympusmn.cpp:619 +#: src/panasonicmn.cpp:111 src/panasonicmn.cpp:374 src/pentaxmn.cpp:584 +#: src/pentaxmn.cpp:971 src/sonymn.cpp:146 src/sonymn.cpp:526 +#: src/sonymn.cpp:572 src/tags.cpp:1510 +msgid "Portrait" +msgstr "Chân dung" + +#: src/canonmn.cpp:499 src/fujimn.cpp:118 src/minoltamn.cpp:843 +#: src/minoltamn.cpp:2091 src/panasonicmn.cpp:113 src/sonymn.cpp:148 +#: src/sonymn.cpp:573 +msgid "Sports" +msgstr "Thể thao" + +#: src/canonmn.cpp:500 +msgid "Macro / close-up" +msgstr "Cận cảnh phóng to/ Cận cảnh" + +#: src/canonmn.cpp:501 src/fujimn.cpp:149 +msgid "Black & white" +msgstr "Äen và trắng" + +#: src/canonmn.cpp:503 src/canonmn.cpp:1014 src/olympusmn.cpp:134 +#: src/olympusmn.cpp:616 src/olympusmn.cpp:859 src/panasonicmn.cpp:262 +#: src/panasonicmn.cpp:370 src/sonymn.cpp:525 src/sonymn.cpp:555 +msgid "Vivid" +msgstr "" + +#: src/canonmn.cpp:504 src/canonmn.cpp:1015 src/canonmn.cpp:1395 +#: src/minoltamn.cpp:1945 src/minoltamn.cpp:1946 src/olympusmn.cpp:627 +#: src/olympusmn.cpp:637 src/olympusmn.cpp:868 src/olympusmn.cpp:877 +#: src/sonymn.cpp:532 src/sonymn.cpp:557 +msgid "Neutral" +msgstr "Trung tính" + +#: src/canonmn.cpp:505 +msgid "Flash off" +msgstr "Äèn chá»›p tắt" + +#: src/canonmn.cpp:506 +msgid "Long shutter" +msgstr "Thá»i gian chập dài" + +#: src/canonmn.cpp:508 +msgid "Foliage" +msgstr "" + +#: src/canonmn.cpp:509 src/olympusmn.cpp:106 +msgid "Indoor" +msgstr "Trong nhà" + +#: src/canonmn.cpp:510 src/fujimn.cpp:131 src/olympusmn.cpp:107 +#: src/panasonicmn.cpp:127 src/sonymn.cpp:158 +msgid "Fireworks" +msgstr "Pháo hoa" + +#: src/canonmn.cpp:511 src/fujimn.cpp:129 src/olympusmn.cpp:129 +#: src/panasonicmn.cpp:139 src/sonymn.cpp:147 +msgid "Beach" +msgstr "Bãi biển" + +#: src/canonmn.cpp:512 src/canonmn.cpp:1112 src/fujimn.cpp:132 +#: src/olympusmn.cpp:579 src/panasonicmn.cpp:138 src/sonymn.cpp:164 +msgid "Underwater" +msgstr "Dưới nước" + +#: src/canonmn.cpp:513 src/fujimn.cpp:130 src/olympusmn.cpp:130 +#: src/panasonicmn.cpp:129 src/sonymn.cpp:149 +msgid "Snow" +msgstr "Tuyết" + +#: src/canonmn.cpp:514 +msgid "Kids & pets" +msgstr "Trẻ em và thú cưng" + +#: src/canonmn.cpp:515 +#, fuzzy +msgid "Night SnapShot" +msgstr "Chân dung đêm" + +#: src/canonmn.cpp:516 +msgid "Digital macro" +msgstr "Cận cảnh phóng to Ä‘iện tá»­" + +#: src/canonmn.cpp:517 +msgid "My Colors" +msgstr "Màu sắc cá»§a tôi" + +#: src/canonmn.cpp:518 src/minoltamn.cpp:343 +msgid "Still image" +msgstr "Ảnh tÄ©nh" + +#: src/canonmn.cpp:526 src/canonmn.cpp:527 src/properties.cpp:884 +#: src/properties.cpp:906 src/tags.cpp:1428 src/tags.cpp:1429 +msgid "Other" +msgstr "Khác" + +#: src/canonmn.cpp:532 src/canonmn.cpp:1029 src/canonmn.cpp:1370 +#: src/fujimn.cpp:86 src/fujimn.cpp:95 src/minoltamn.cpp:1168 +#: src/minoltamn.cpp:1174 src/minoltamn.cpp:1180 src/minoltamn.cpp:1349 +#: src/nikonmn.cpp:69 src/nikonmn.cpp:77 src/nikonmn.cpp:208 +#: src/olympusmn.cpp:171 src/olympusmn.cpp:1141 src/panasonicmn.cpp:215 +#: src/panasonicmn.cpp:219 src/panasonicmn.cpp:332 src/panasonicmn.cpp:346 +#: src/panasonicmn.cpp:355 src/pentaxmn.cpp:442 src/pentaxmn.cpp:457 +#: src/sonymn.cpp:263 src/tags.cpp:1534 +msgid "Low" +msgstr "Thấp" + +#: src/canonmn.cpp:534 src/canonmn.cpp:1372 src/fujimn.cpp:85 +#: src/fujimn.cpp:94 src/minoltamn.cpp:1169 src/minoltamn.cpp:1175 +#: src/minoltamn.cpp:1181 src/nikonmn.cpp:71 src/nikonmn.cpp:79 +#: src/nikonmn.cpp:210 src/olympusmn.cpp:169 src/olympusmn.cpp:1143 +#: src/panasonicmn.cpp:56 src/panasonicmn.cpp:216 src/panasonicmn.cpp:221 +#: src/panasonicmn.cpp:222 src/panasonicmn.cpp:334 src/panasonicmn.cpp:348 +#: src/panasonicmn.cpp:357 src/pentaxmn.cpp:444 src/pentaxmn.cpp:459 +#: src/sonymn.cpp:266 src/tags.cpp:1535 +msgid "High" +msgstr "Cao" + +#: src/canonmn.cpp:539 src/canonmn.cpp:1026 src/canonmn.cpp:1030 +#: src/canonmn.cpp:1035 src/canonmn.cpp:1368 src/nikonmn.cpp:679 +#: src/nikonmn.cpp:694 src/nikonmn.cpp:930 src/nikonmn.cpp:985 +#: src/nikonmn.cpp:1240 src/olympusmn.cpp:626 src/olympusmn.cpp:636 +#: src/panasonicmn.cpp:318 src/panasonicmn.cpp:657 src/pentaxmn.cpp:205 +#: src/sonymn.cpp:175 src/sonymn.cpp:183 src/sonymn.cpp:191 src/sonymn.cpp:230 +#: src/sonymn.cpp:243 src/sonymn.cpp:250 src/sonymn.cpp:258 src/sonymn.cpp:264 +#: src/sonymn.cpp:275 src/sonymn.cpp:281 src/sonymn.cpp:288 +msgid "n/a" +msgstr "n/a" + +#: src/canonmn.cpp:540 +#, fuzzy +msgid "Auto High" +msgstr "Tá»± động (Ãnh sáng ngày)" + +#: src/canonmn.cpp:558 src/sonymn.cpp:235 +msgid "Default" +msgstr "Mặc định" + +#: src/canonmn.cpp:559 src/minoltamn.cpp:265 src/minoltamn.cpp:883 +#: src/minoltamn.cpp:933 src/minoltamn.cpp:1133 src/minoltamn.cpp:1991 +#: src/olympusmn.cpp:492 src/panasonicmn.cpp:119 src/pentaxmn.cpp:404 +#: src/sonymn.cpp:519 src/tags.cpp:1424 +msgid "Spot" +msgstr "Xác định" + +#: src/canonmn.cpp:560 src/sigmamn.cpp:168 src/tags.cpp:1422 +msgid "Average" +msgstr "Trung bình" + +#: src/canonmn.cpp:561 +msgid "Evaluative" +msgstr "Äánh giá" + +#: src/canonmn.cpp:562 src/tags.cpp:1427 +msgid "Partial" +msgstr "Bá»™ phận" + +#: src/canonmn.cpp:563 src/minoltamn.cpp:882 +#, fuzzy +msgid "Center weighted" +msgstr "Canh giữa" + +#: src/canonmn.cpp:570 +msgid "Not known" +msgstr "Không biết" + +#: src/canonmn.cpp:571 src/canonmn.cpp:1042 src/fujimn.cpp:207 +#: src/minoltamn.cpp:847 src/minoltamn.cpp:2094 src/olympusmn.cpp:109 +#: src/olympusmn.cpp:151 src/olympusmn.cpp:201 src/panasonicmn.cpp:118 +#: src/panasonicmn.cpp:276 src/panasonicmn.cpp:277 src/panasonicmn.cpp:448 +#: src/pentaxmn.cpp:268 src/pentaxmn.cpp:586 src/sonymn.cpp:162 +#: src/sonymn.cpp:439 src/sonymn.cpp:440 src/sonymn.cpp:577 src/tags.cpp:1541 +msgid "Macro" +msgstr "Cận cảnh phóng to" + +#: src/canonmn.cpp:572 +msgid "Very close" +msgstr "rất gần" + +#: src/canonmn.cpp:573 +msgid "Close" +msgstr "gần" + +#: src/canonmn.cpp:574 +msgid "Middle range" +msgstr "" + +#: src/canonmn.cpp:575 +msgid "Far range" +msgstr "Khoảng cách xa" + +#: src/canonmn.cpp:578 src/olympusmn.cpp:1587 src/pentaxmn.cpp:269 +#: src/tags.cpp:2590 +msgid "Infinity" +msgstr "Vô cá»±c" + +#: src/canonmn.cpp:583 +msgid "Manual AF point selection" +msgstr "Lá»±a chá»n Ä‘iểm lấy nét tá»± động thá»§ công" + +#: src/canonmn.cpp:584 +msgid "None (MF)" +msgstr "Không (MF)" + +#: src/canonmn.cpp:585 +msgid "Auto-selected" +msgstr "Tá»± động-chá»n" + +#: src/canonmn.cpp:586 src/minoltamn.cpp:287 src/minoltamn.cpp:706 +#: src/minoltamn.cpp:921 src/minoltamn.cpp:2006 src/nikonmn.cpp:103 +#: src/olympusmn.cpp:1610 src/pentaxmn.cpp:296 src/pentaxmn.cpp:311 +msgid "Right" +msgstr "Phải" + +#: src/canonmn.cpp:587 src/canonmn.cpp:1007 src/minoltamn.cpp:284 +#: src/minoltamn.cpp:703 src/minoltamn.cpp:2003 src/nikonmn.cpp:99 +#: src/nikonmn.cpp:808 src/nikonmn.cpp:823 src/pentaxmn.cpp:294 +#: src/pentaxmn.cpp:310 src/sigmamn.cpp:169 +msgid "Center" +msgstr "Trung tâm" + +#: src/canonmn.cpp:588 src/minoltamn.cpp:291 src/minoltamn.cpp:710 +#: src/minoltamn.cpp:925 src/minoltamn.cpp:2010 src/nikonmn.cpp:102 +#: src/pentaxmn.cpp:292 src/pentaxmn.cpp:309 +msgid "Left" +msgstr "Trái" + +#: src/canonmn.cpp:589 +msgid "Auto AF point selection" +msgstr "Tá»± động chá»n Ä‘iểm lấy nét tá»± động" + +#: src/canonmn.cpp:594 +msgid "Easy shooting (Auto)" +msgstr "Chụp đơn giản (Tá»± động)" + +#: src/canonmn.cpp:595 +msgid "Program (P)" +msgstr "Chương trình (2)" + +#: src/canonmn.cpp:596 +msgid "Shutter priority (Tv)" +msgstr "Ưu tiên tốc độ chập (Tv)" + +#: src/canonmn.cpp:597 +msgid "Aperture priority (Av)" +msgstr "Ưu tiên khẩu độ (Av)" + +#: src/canonmn.cpp:598 +msgid "Manual (M)" +msgstr "Thá»§ công (M)" + +#: src/canonmn.cpp:599 +msgid "A-DEP" +msgstr "" + +#: src/canonmn.cpp:600 +msgid "M-DEP" +msgstr "" + +#: src/canonmn.cpp:966 src/minoltamn.cpp:297 src/nikonmn.cpp:142 +msgid "Did not fire" +msgstr "" + +#: src/canonmn.cpp:967 src/minoltamn.cpp:298 src/nikonmn.cpp:1003 +#: src/panasonicmn.cpp:252 src/tags.cpp:369 +msgid "Fired" +msgstr "" + +#: src/canonmn.cpp:972 src/olympusmn.cpp:1016 +msgid "External flash" +msgstr "Äèn chá»›p gắn ngoài" + +#: src/canonmn.cpp:973 src/olympusmn.cpp:1020 +msgid "Internal flash" +msgstr "Äèn chá»›p trong máy" + +#: src/canonmn.cpp:975 src/olympusmn.cpp:558 src/sonymn.cpp:543 +msgid "TTL" +msgstr "TTL" + +#: src/canonmn.cpp:976 +msgid "A-TTL" +msgstr "A-TTL" + +#: src/canonmn.cpp:977 +msgid "E-TTL" +msgstr "E-TTL" + +#: src/canonmn.cpp:978 +msgid "FP sync enabled" +msgstr "" + +#: src/canonmn.cpp:979 +msgid "2nd-curtain sync used" +msgstr "" + +#: src/canonmn.cpp:980 +#, fuzzy +msgid "FP sync used" +msgstr "Äiểm lấy nét tá»± động đã sá»­ dụng" + +#: src/canonmn.cpp:991 +#, fuzzy +msgid "Normal AE" +msgstr "Bình thưá»ng" + +#: src/canonmn.cpp:992 src/minoltamn.cpp:527 src/minoltamn.cpp:769 +#: src/minoltamn.cpp:1049 src/pentaxmn.cpp:1199 src/pentaxmn.cpp:1200 +msgid "Exposure compensation" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/canonmn.cpp:993 src/minoltamn.cpp:1579 src/pentaxmn.cpp:1301 +#: src/pentaxmn.cpp:1302 +msgid "AE lock" +msgstr "" + +#: src/canonmn.cpp:994 +#, fuzzy +msgid "AE lock + exposure compensation" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/canonmn.cpp:995 +msgid "No AE" +msgstr "" + +#: src/canonmn.cpp:1002 +msgid "On, shot only" +msgstr "Mở, chỉ chụp" + +#: src/canonmn.cpp:1008 src/canonmn.cpp:1060 src/nikonmn.cpp:839 +#: src/olympusmn.cpp:1015 +msgid "AF Point" +msgstr "Äiểm lấy nét tá»± động" + +#: src/canonmn.cpp:1016 +msgid "Smooth" +msgstr "Äá»™ mịn" + +#: src/canonmn.cpp:1018 src/nikonmn.cpp:684 +msgid "B&W" +msgstr "B&W" + +#: src/canonmn.cpp:1019 src/canonmn.cpp:1102 src/canonmn.cpp:1363 +#: src/fujimn.cpp:78 src/fujimn.cpp:79 src/minoltamn.cpp:222 +#: src/minoltamn.cpp:1188 src/minoltamn.cpp:1191 src/minoltamn.cpp:2153 +#: src/pentaxmn.cpp:993 +msgid "Custom" +msgstr "Tùy chỉnh" + +#: src/canonmn.cpp:1020 src/canonmn.cpp:1021 +msgid "My color data" +msgstr "Dữ liệu màu sắc cá»§a tôi" + +#: src/canonmn.cpp:1027 src/pentaxmn.cpp:211 +msgid "Full" +msgstr "Äầy" + +#: src/canonmn.cpp:1036 +msgid "sRAW1 (mRAW)" +msgstr "" + +#: src/canonmn.cpp:1037 +msgid "sRAW2 (sRAW)" +msgstr "" + +#: src/canonmn.cpp:1043 +msgid "Selftimer" +msgstr "" + +#: src/canonmn.cpp:1043 src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self timer" +msgstr "Chân dung" + +#: src/canonmn.cpp:1044 src/fujimn.cpp:186 src/minoltamn.cpp:1488 +#: src/minoltamn.cpp:1489 src/nikonmn.cpp:224 src/nikonmn.cpp:465 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:198 src/panasonicmn.cpp:441 +#: src/sigmamn.cpp:113 src/sigmamn.cpp:114 src/sonymn.cpp:696 +#: src/sonymn.cpp:697 +msgid "Quality" +msgstr "Chất lượng" + +#: src/canonmn.cpp:1045 src/fujimn.cpp:201 src/minoltamn.cpp:493 +#: src/minoltamn.cpp:762 src/nikonmn.cpp:574 src/olympusmn.cpp:279 +#: src/olympusmn.cpp:676 +msgid "Flash Mode" +msgstr "Chế độ đèn chá»›p" + +#: src/canonmn.cpp:1045 +msgid "Flash mode setting" +msgstr "Tùy chỉnh chế độ đèn chá»›p" + +#: src/canonmn.cpp:1046 src/minoltamn.cpp:505 src/minoltamn.cpp:1431 +#: src/olympusmn.cpp:706 src/sigmamn.cpp:59 src/sonymn.cpp:608 +#: src/sonymn.cpp:609 +#, fuzzy +msgid "Drive Mode" +msgstr "Chế độ Phim" + +#: src/canonmn.cpp:1046 +#, fuzzy +msgid "Drive mode setting" +msgstr "Tùy chỉnh chế độ phÆ¡i sáng" + +#: src/canonmn.cpp:1048 src/fujimn.cpp:210 src/minoltamn.cpp:622 +#: src/minoltamn.cpp:753 src/minoltamn.cpp:1039 src/minoltamn.cpp:1383 +#: src/nikonmn.cpp:480 src/olympusmn.cpp:300 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/properties.cpp:1159 src/sonymn.cpp:445 +#: src/sonymn.cpp:446 src/sonymn.cpp:615 src/sonymn.cpp:616 src/sonymn.cpp:721 +#: src/sonymn.cpp:722 +msgid "Focus Mode" +msgstr "Chế độ lấy nét" + +#: src/canonmn.cpp:1048 +msgid "Focus mode setting" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/canonmn.cpp:1051 src/minoltamn.cpp:499 src/minoltamn.cpp:744 +#: src/minoltamn.cpp:991 +msgid "Image Size" +msgstr "Kích cỡ hình ảnh" + +#: src/canonmn.cpp:1052 +msgid "Easy Mode" +msgstr "Chế độ dá»… dàng" + +#: src/canonmn.cpp:1052 +msgid "Easy shooting mode" +msgstr "Chế độ chụp đơn giản" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:523 src/nikonmn.cpp:257 +#: src/nikonmn.cpp:486 src/nikonmn.cpp:573 src/olympusmn.cpp:207 +msgid "Digital Zoom" +msgstr "Thu/phóng Ä‘iện tá»­" + +#: src/canonmn.cpp:1053 src/minoltamn.cpp:524 src/pentaxmn.cpp:1224 +#: src/pentaxmn.cpp:1225 +msgid "Digital zoom" +msgstr "Thu/phóng Ä‘iện tá»­" + +#: src/canonmn.cpp:1054 src/minoltamn.cpp:386 src/minoltamn.cpp:574 +#: src/minoltamn.cpp:575 src/minoltamn.cpp:777 src/minoltamn.cpp:778 +#: src/minoltamn.cpp:1021 src/minoltamn.cpp:1022 src/minoltamn.cpp:1419 +#: src/minoltamn.cpp:1420 src/nikonmn.cpp:705 src/olympusmn.cpp:390 +#: src/olympusmn.cpp:807 src/panasonicmn.cpp:462 src/panasonicmn.cpp:473 +#: src/pentaxmn.cpp:1130 src/pentaxmn.cpp:1230 src/pentaxmn.cpp:1231 +#: src/properties.cpp:468 src/properties.cpp:614 src/properties.cpp:1097 +#: src/sigmamn.cpp:89 src/sigmamn.cpp:90 src/sonymn.cpp:373 src/sonymn.cpp:642 +#: src/sonymn.cpp:643 src/sonymn.cpp:748 src/sonymn.cpp:749 src/tags.cpp:1814 +msgid "Contrast" +msgstr "Tương phản" + +#: src/canonmn.cpp:1054 src/fujimn.cpp:199 src/olympusmn.cpp:391 +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 src/panasonicmn.cpp:462 +msgid "Contrast setting" +msgstr "Tùy chỉnh độ tương phản" + +#: src/canonmn.cpp:1055 src/minoltamn.cpp:387 src/minoltamn.cpp:571 +#: src/minoltamn.cpp:572 src/minoltamn.cpp:780 src/minoltamn.cpp:781 +#: src/minoltamn.cpp:1024 src/minoltamn.cpp:1025 src/minoltamn.cpp:1422 +#: src/minoltamn.cpp:1423 src/nikonmn.cpp:586 src/nikonmn.cpp:605 +#: src/nikonmn.cpp:707 src/olympusmn.cpp:806 src/olympusmn.cpp:905 +#: src/panasonicmn.cpp:480 src/pentaxmn.cpp:1124 src/pentaxmn.cpp:1227 +#: src/pentaxmn.cpp:1228 src/properties.cpp:486 src/properties.cpp:615 +#: src/properties.cpp:1295 src/sigmamn.cpp:98 src/sigmamn.cpp:99 +#: src/sonymn.cpp:376 src/sonymn.cpp:645 src/sonymn.cpp:646 src/sonymn.cpp:751 +#: src/sonymn.cpp:752 src/tags.cpp:1818 +#, fuzzy +msgid "Saturation" +msgstr "Thá»i lượng" + +#: src/canonmn.cpp:1055 src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation setting" +msgstr "Tùy chỉnh độ tương phản" + +#: src/canonmn.cpp:1056 src/canonmn.cpp:1405 src/fujimn.cpp:189 +#: src/minoltamn.cpp:577 src/minoltamn.cpp:578 src/minoltamn.cpp:774 +#: src/minoltamn.cpp:775 src/minoltamn.cpp:1018 src/minoltamn.cpp:1019 +#: src/minoltamn.cpp:1416 src/minoltamn.cpp:1417 src/nikonmn.cpp:704 +#: src/olympusmn.cpp:808 src/panasonicmn.cpp:481 src/pentaxmn.cpp:1127 +#: src/pentaxmn.cpp:1233 src/pentaxmn.cpp:1234 src/properties.cpp:489 +#: src/properties.cpp:616 src/properties.cpp:1301 src/sigmamn.cpp:101 +#: src/sigmamn.cpp:102 src/sonymn.cpp:639 src/sonymn.cpp:640 +#: src/sonymn.cpp:745 src/sonymn.cpp:746 src/tags.cpp:1822 +msgid "Sharpness" +msgstr "Äá»™ mịn" + +#: src/canonmn.cpp:1056 src/fujimn.cpp:190 src/olympusmn.cpp:688 +#: src/olympusmn.cpp:1088 +msgid "Sharpness setting" +msgstr "Tùy chinh độ mịn" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:765 src/minoltamn.cpp:1012 +msgid "ISO Speed Mode" +msgstr "Chế độ nhạy sáng" + +#: src/canonmn.cpp:1057 src/minoltamn.cpp:766 src/minoltamn.cpp:1013 +#: src/nikonmn.cpp:219 src/nikonmn.cpp:475 src/nikonmn.cpp:533 +#: src/panasonicmn.cpp:734 +msgid "ISO speed setting" +msgstr "Tuỳ chỉnh chế độ nhạy sáng" + +#: src/canonmn.cpp:1058 src/minoltamn.cpp:508 src/minoltamn.cpp:1009 +#: src/minoltamn.cpp:1398 src/olympusmn.cpp:667 src/properties.cpp:586 +#: src/properties.cpp:1223 src/sigmamn.cpp:77 src/sonymn.cpp:624 +#: src/sonymn.cpp:625 src/sonymn.cpp:730 src/sonymn.cpp:731 src/tags.cpp:832 +#: src/tags.cpp:1653 +msgid "Metering Mode" +msgstr "Chế độ Ä‘o đạc" + +#: src/canonmn.cpp:1058 +msgid "Metering mode setting" +msgstr "Tùy chỉnh chế độ Ä‘o đạc" + +#: src/canonmn.cpp:1059 +msgid "Focus Type" +msgstr "Kiểu lấy nét" + +#: src/canonmn.cpp:1059 +msgid "Focus type setting" +msgstr "Tùy chỉnh kiểu lấy nét" + +#: src/canonmn.cpp:1060 +msgid "AF point selected" +msgstr "Lá»±a chá»n Ä‘iểm lấy nét tá»± động" + +#: src/canonmn.cpp:1061 src/properties.cpp:575 src/properties.cpp:1146 +#: src/sonymn.cpp:681 src/sonymn.cpp:682 src/sonymn.cpp:757 src/sonymn.cpp:758 +#: src/tags.cpp:806 src/tags.cpp:1555 +msgid "Exposure Program" +msgstr "Tá»± động phÆ¡i sáng hoàn toàn" + +#: src/canonmn.cpp:1061 +msgid "Exposure mode setting" +msgstr "Tùy chỉnh chế độ phÆ¡i sáng" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/properties.cpp:1200 +msgid "Lens Type" +msgstr "Kiểu á»ng kính" + +#: src/canonmn.cpp:1063 src/nikonmn.cpp:570 src/olympusmn.cpp:751 +#: src/panasonicmn.cpp:493 src/pentaxmn.cpp:1288 src/pentaxmn.cpp:1289 +msgid "Lens type" +msgstr "Kiểu ống kính" + +#: src/canonmn.cpp:1064 src/nikonmn.cpp:571 src/properties.cpp:658 +msgid "Lens" +msgstr "á»ng kính" + +#: src/canonmn.cpp:1064 +msgid "" +"'long' and 'short' focal length of lens (in 'focal units') and 'focal units' " +"per mm" +msgstr "" +"Khoảng tiêu cá»± 'dài' và 'ngắn' cá»§a ống kính (trong 'đơn vị tiêu cá»±') và 'đơn " +"vị tiêu cá»±' má»—i mm" + +#: src/canonmn.cpp:1065 +msgid "Short Focal" +msgstr "Tiêu cá»± Ngắn" + +#: src/canonmn.cpp:1065 +msgid "Short focal" +msgstr "Tiêu cá»± ngắn" + +#: src/canonmn.cpp:1066 +msgid "Focal Units" +msgstr "ÄÆ¡n vị tiêu cá»±" + +#: src/canonmn.cpp:1066 +msgid "Focal units" +msgstr "ÄÆ¡n vị tiêu cá»±" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:553 +msgid "Max Aperture" +msgstr "Khẩu độ tối Ä‘a" + +#: src/canonmn.cpp:1067 src/minoltamn.cpp:554 +msgid "Max aperture" +msgstr "Khẩu độ tối Ä‘a" + +#: src/canonmn.cpp:1068 +msgid "Min Aperture" +msgstr "Khẩu Ä‘6á» tối thiểu" + +#: src/canonmn.cpp:1068 +msgid "Min aperture" +msgstr "Khẩu độ tối thiểu" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash Activity" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/canonmn.cpp:1069 +#, fuzzy +msgid "Flash activity" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/canonmn.cpp:1070 +msgid "Flash Details" +msgstr "Chi tiết đèn chá»›p" + +#: src/canonmn.cpp:1070 +msgid "Flash details" +msgstr "Chi tiết đèn chá»›p" + +#: src/canonmn.cpp:1073 +msgid "Focus Continuous" +msgstr "Lấy nét Liên tục" + +#: src/canonmn.cpp:1073 +msgid "Focus continuous setting" +msgstr "Cài đặt lấy nét liên tục" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AESetting" +msgstr "Tùy chỉnh" + +#: src/canonmn.cpp:1074 +#, fuzzy +msgid "AE setting" +msgstr "Tùy chỉnh độ nhạy sáng" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:147 src/minoltamn.cpp:814 +#: src/minoltamn.cpp:1075 src/minoltamn.cpp:1566 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:421 src/sonymn.cpp:684 src/sonymn.cpp:685 +msgid "Image Stabilization" +msgstr "á»”n định hình ảnh" + +#: src/canonmn.cpp:1075 src/minoltamn.cpp:148 src/minoltamn.cpp:815 +#: src/minoltamn.cpp:1076 src/minoltamn.cpp:1567 src/nikonmn.cpp:607 +#: src/olympusmn.cpp:709 src/olympusmn.cpp:1023 src/panasonicmn.cpp:447 +#: src/sonymn.cpp:422 +msgid "Image stabilization" +msgstr "á»”n định hình ảnh" + +#: src/canonmn.cpp:1076 +msgid "Display Aperture" +msgstr "Hiển thị khẩu độ" + +#: src/canonmn.cpp:1076 +msgid "Display aperture" +msgstr "HIển thị khẩu độ" + +#: src/canonmn.cpp:1077 +msgid "Zoom Source Width" +msgstr "" + +#: src/canonmn.cpp:1077 +msgid "Zoom source width" +msgstr "" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom Target Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/canonmn.cpp:1078 +#, fuzzy +msgid "Zoom target width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot Metering Mode" +msgstr "Chế độ Ä‘o đạc" + +#: src/canonmn.cpp:1080 +#, fuzzy +msgid "Spot metering mode" +msgstr "Chế độ Ä‘o đạc" + +#: src/canonmn.cpp:1081 +msgid "Photo Effect" +msgstr "Hiệu ứng hình ảnh" + +#: src/canonmn.cpp:1081 +msgid "Photo effect" +msgstr "Hiệu ứng hình ảnh" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual Flash Output" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/canonmn.cpp:1082 +#, fuzzy +msgid "Manual flash output" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/canonmn.cpp:1083 +msgid "Color Tone" +msgstr "Tông màu" + +#: src/canonmn.cpp:1083 +msgid "Color tone" +msgstr "Tông màu" + +#: src/canonmn.cpp:1084 +msgid "SRAW Quality Tone" +msgstr "" + +#: src/canonmn.cpp:1084 +#, fuzzy +msgid "SRAW quality" +msgstr "Chất lượng hình ảnh" + +#: src/canonmn.cpp:1086 +#, fuzzy +msgid "Unknown Canon Camera Settings 1 tag" +msgstr "Tùy chỉnh máy ảnh" + +#: src/canonmn.cpp:1097 src/fujimn.cpp:72 src/minoltamn.cpp:219 +#: src/minoltamn.cpp:683 src/minoltamn.cpp:869 src/minoltamn.cpp:1197 +#: src/minoltamn.cpp:2147 src/nikonmn.cpp:453 src/panasonicmn.cpp:68 +#: src/pentaxmn.cpp:410 src/sonymn.cpp:212 src/tags.cpp:1435 +msgid "Daylight" +msgstr "Ãnh sáng ban ngày" + +#: src/canonmn.cpp:1098 src/fujimn.cpp:73 src/minoltamn.cpp:220 +#: src/minoltamn.cpp:685 src/minoltamn.cpp:870 src/minoltamn.cpp:1198 +#: src/minoltamn.cpp:2148 src/nikonmn.cpp:456 src/olympusmn.cpp:1048 +#: src/panasonicmn.cpp:69 src/pentaxmn.cpp:419 src/sonymn.cpp:213 +msgid "Cloudy" +msgstr "Trá»i mây" + +#: src/canonmn.cpp:1099 src/minoltamn.cpp:221 src/minoltamn.cpp:686 +#: src/minoltamn.cpp:872 src/minoltamn.cpp:1200 src/minoltamn.cpp:2150 +#: src/pentaxmn.cpp:413 +msgid "Tungsten" +msgstr "" + +#: src/canonmn.cpp:1100 src/minoltamn.cpp:223 src/minoltamn.cpp:687 +#: src/minoltamn.cpp:873 src/minoltamn.cpp:1201 src/minoltamn.cpp:2152 +#: src/nikonmn.cpp:455 src/pentaxmn.cpp:412 src/tags.cpp:1436 +#, fuzzy +msgid "Fluorescent" +msgstr "Huỳnh quang (Ãnh sáng ngày)" + +#: src/canonmn.cpp:1103 src/minoltamn.cpp:57 src/minoltamn.cpp:1943 +#: src/sonymn.cpp:530 +msgid "Black & White" +msgstr "Äen và trắng" + +#: src/canonmn.cpp:1104 src/minoltamn.cpp:684 src/minoltamn.cpp:871 +#: src/minoltamn.cpp:1199 src/minoltamn.cpp:2149 src/olympusmn.cpp:1047 +#: src/panasonicmn.cpp:75 src/pentaxmn.cpp:411 src/tags.cpp:1441 +msgid "Shade" +msgstr "Bóng râm" + +#: src/canonmn.cpp:1105 +msgid "Manual Temperature (Kelvin)" +msgstr "" + +#: src/canonmn.cpp:1106 +msgid "PC Set 1" +msgstr "" + +#: src/canonmn.cpp:1107 +msgid "PC Set 2" +msgstr "" + +#: src/canonmn.cpp:1108 +msgid "PC Set 3" +msgstr "" + +#: src/canonmn.cpp:1109 +#, fuzzy +msgid "Daylight Fluorescent" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/canonmn.cpp:1110 src/properties.cpp:816 +msgid "Custom 1" +msgstr "Tùy chỉnh 1" + +#: src/canonmn.cpp:1111 src/minoltamn.cpp:225 src/properties.cpp:817 +msgid "Custom 2" +msgstr "Tùy chỉnh 2" + +#: src/canonmn.cpp:1113 src/canonmn.cpp:1114 src/minoltamn.cpp:226 +#: src/properties.cpp:818 +msgid "Custom 3" +msgstr "Tùy chỉnh 3" + +#: src/canonmn.cpp:1115 +msgid "PC Set 4" +msgstr "" + +#: src/canonmn.cpp:1116 +msgid "PC Set 5" +msgstr "" + +#: src/canonmn.cpp:1117 +#, fuzzy +msgid "Auto (ambience priority)" +msgstr "Ưu tiên tốc độ" + +#: src/canonmn.cpp:1122 src/canonmn.cpp:1241 src/canonmn.cpp:1249 +msgid "left" +msgstr "Trái" + +#: src/canonmn.cpp:1123 src/canonmn.cpp:1238 src/canonmn.cpp:1250 +msgid "center" +msgstr "Trung tâm" + +#: src/canonmn.cpp:1124 src/canonmn.cpp:1235 src/canonmn.cpp:1251 +msgid "right" +msgstr "Phải" + +#: src/canonmn.cpp:1151 +msgid "ISO Speed Used" +msgstr "Äá»™ nhạy sáng Äã sá»­ dụng" + +#: src/canonmn.cpp:1151 +msgid "ISO speed used" +msgstr "Äá»™ nhạy sáng đã sá»­ dụng" + +#: src/canonmn.cpp:1152 +#, fuzzy +msgid "Measured EV" +msgstr "Äo lưá»ng Màu sắc" + +#: src/canonmn.cpp:1153 +#, fuzzy +msgid "Target Aperture" +msgstr "Khẩu độ tối Ä‘a" + +#: src/canonmn.cpp:1154 +msgid "Target Shutter Speed" +msgstr "Tốc độ Chụp mục tiêu" + +#: src/canonmn.cpp:1154 +msgid "Target shutter speed" +msgstr "Tốc độ chụp mục tiêu" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:192 src/minoltamn.cpp:177 +#: src/minoltamn.cpp:496 src/minoltamn.cpp:750 src/minoltamn.cpp:997 +#: src/minoltamn.cpp:1380 src/nikonmn.cpp:227 src/nikonmn.cpp:477 +#: src/nikonmn.cpp:536 src/olympusmn.cpp:330 src/olympusmn.cpp:887 +#: src/panasonicmn.cpp:443 src/properties.cpp:498 src/properties.cpp:607 +#: src/properties.cpp:1382 src/sigmamn.cpp:71 src/sonymn.cpp:338 +#: src/tags.cpp:1792 +msgid "White Balance" +msgstr "Cân bằng trắng" + +#: src/canonmn.cpp:1156 src/fujimn.cpp:193 src/minoltamn.cpp:1447 +#: src/panasonicmn.cpp:443 +msgid "White balance setting" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/canonmn.cpp:1158 +msgid "Sequence" +msgstr "" + +#: src/canonmn.cpp:1158 +msgid "Sequence number (if in a continuous burst)" +msgstr "" + +#: src/canonmn.cpp:1163 +#, fuzzy +msgid "AF Point Used" +msgstr "Äiểm Lấy nét tá»± động Äã dùng" + +#: src/canonmn.cpp:1163 +msgid "AF point used" +msgstr "Äiểm lấy nét tá»± động đã sá»­ dụng" + +#: src/canonmn.cpp:1164 src/olympusmn.cpp:372 +msgid "Flash Bias" +msgstr "Bù trừ sáng đèn chá»›p" + +#: src/canonmn.cpp:1168 src/properties.cpp:585 src/tags.cpp:831 +#: src/tags.cpp:1650 +msgid "Subject Distance" +msgstr "Khoảng cách Vật thể" + +#: src/canonmn.cpp:1168 +msgid "Subject distance (units are not clear)" +msgstr "Khoảng cách vật thể (không rõ đơn vi)" + +#: src/canonmn.cpp:1170 src/olympusmn.cpp:273 src/properties.cpp:581 +#: src/tags.cpp:827 +msgid "Aperture Value" +msgstr "Giá trị khẩu độ" + +#: src/canonmn.cpp:1171 src/properties.cpp:580 src/tags.cpp:826 +msgid "Shutter Speed Value" +msgstr "Giá trị tốc độ màn chập" + +#: src/canonmn.cpp:1171 src/tags.cpp:1630 +msgid "Shutter speed" +msgstr "Tốc độ màn chập" + +#: src/canonmn.cpp:1172 +#, fuzzy +msgid "Measured EV 2" +msgstr "Äo lưá»ng Màu sắc" + +#: src/canonmn.cpp:1177 +#, fuzzy +msgid "Unknown Canon Camera Settings 2 tag" +msgstr "Tùy chỉnh máy ảnh" + +#: src/canonmn.cpp:1187 src/olympusmn.cpp:1171 +msgid "Left to right" +msgstr "Trái sang phải" + +#: src/canonmn.cpp:1188 src/olympusmn.cpp:1172 +msgid "Right to left" +msgstr "Phải sang trái" + +#: src/canonmn.cpp:1189 src/olympusmn.cpp:1173 +msgid "Bottom to top" +msgstr "Dưới lên trên" + +#: src/canonmn.cpp:1190 src/olympusmn.cpp:1174 +msgid "Top to bottom" +msgstr "Trên xuống dưới" + +#: src/canonmn.cpp:1191 +msgid "2x2 matrix (Clockwise)" +msgstr "" + +#: src/canonmn.cpp:1196 +msgid "Panorama Frame" +msgstr "Khung hình toàn cảnh" + +#: src/canonmn.cpp:1196 +msgid "Panorama frame number" +msgstr "Số khung hình toàn cảnh" + +#: src/canonmn.cpp:1197 +msgid "Panorama Direction" +msgstr "Chiá»u chụp toàn cảnh" + +#: src/canonmn.cpp:1197 +msgid "Panorama direction" +msgstr "Chiá»u chụp toàn cảnh" + +#: src/canonmn.cpp:1199 +msgid "Unknown Canon Panorama tag" +msgstr "" + +#: src/canonmn.cpp:1209 src/canonmn.cpp:1339 src/minoltamn.cpp:807 +#: src/minoltamn.cpp:1072 src/minoltamn.cpp:1497 src/nikonmn.cpp:587 +#: src/olympusmn.cpp:438 src/olympusmn.cpp:608 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:811 src/olympusmn.cpp:826 src/olympusmn.cpp:896 +#: src/olympusmn.cpp:981 +msgid "Noise Reduction" +msgstr "Giảm nhiá»…u" + +#: src/canonmn.cpp:1209 +msgid "Long exposure noise reduction" +msgstr "Giảm nhiá»…u cá»§a sá»± phÆ¡i sáng lâu" + +#: src/canonmn.cpp:1210 +#, fuzzy +msgid "Shutter Ae Lock" +msgstr "Tốc độ màn chập" + +#: src/canonmn.cpp:1210 +msgid "Shutter/AE lock buttons" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror Lockup" +msgstr "" + +#: src/canonmn.cpp:1211 +msgid "Mirror lockup" +msgstr "" + +#: src/canonmn.cpp:1212 src/sonymn.cpp:699 src/sonymn.cpp:700 +#, fuzzy +msgid "Exposure Level Increments" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/canonmn.cpp:1212 +msgid "Tv/Av and exposure level" +msgstr "" + +#: src/canonmn.cpp:1213 src/minoltamn.cpp:1524 +msgid "AF Assist" +msgstr "Há»— trợ lấy nét tá»± động" + +#: src/canonmn.cpp:1213 +msgid "AF assist light" +msgstr "Ãnh sáng há»— trợ lấy nét tá»± động" + +#: src/canonmn.cpp:1214 +msgid "Flash Sync Speed Av" +msgstr "" + +#: src/canonmn.cpp:1214 +#, fuzzy +msgid "Shutter speed in Av mode" +msgstr "Giá trị tốc độ chụp" + +#: src/canonmn.cpp:1215 +msgid "AEB Sequence" +msgstr "" + +#: src/canonmn.cpp:1215 +msgid "AEB sequence/auto cancellation" +msgstr "" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter Curtain Sync" +msgstr "Ưu tiên tốc độ" + +#: src/canonmn.cpp:1216 +#, fuzzy +msgid "Shutter curtain sync" +msgstr "Ưu tiên tốc độ" + +#: src/canonmn.cpp:1217 +msgid "Lens AF Stop Button" +msgstr "" + +#: src/canonmn.cpp:1217 +msgid "Lens AF stop button Fn. Switch" +msgstr "" + +#: src/canonmn.cpp:1218 +#, fuzzy +msgid "Fill Flash Auto Reduction" +msgstr "Giảm rung" + +#: src/canonmn.cpp:1218 +msgid "Auto reduction of fill flash" +msgstr "" + +#: src/canonmn.cpp:1219 +msgid "Menu Button Return" +msgstr "Nút trở vá» trình đơn" + +#: src/canonmn.cpp:1219 +#, fuzzy +msgid "Menu button return position" +msgstr "Nút trở vá» trình đơn" + +#: src/canonmn.cpp:1220 +msgid "Set Button Function" +msgstr "" + +#: src/canonmn.cpp:1220 +msgid "SET button func. when shooting" +msgstr "" + +#: src/canonmn.cpp:1221 +#, fuzzy +msgid "Sensor Cleaning" +msgstr "Thông tin cảm biến" + +#: src/canonmn.cpp:1221 +#, fuzzy +msgid "Sensor cleaning" +msgstr "Thông tin cảm biến" + +#: src/canonmn.cpp:1222 +msgid "Superimposed Display" +msgstr "" + +#: src/canonmn.cpp:1222 +msgid "Superimposed display" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release No CF Card" +msgstr "" + +#: src/canonmn.cpp:1223 +msgid "Shutter Release W/O CF Card" +msgstr "" + +#: src/canonmn.cpp:1225 +msgid "Unknown Canon Custom Function tag" +msgstr "" + +#: src/canonmn.cpp:1236 +#, fuzzy +msgid "mid-right" +msgstr "Phải" + +#: src/canonmn.cpp:1237 src/canonmn.cpp:1254 +msgid "bottom" +msgstr "Dưới" + +#: src/canonmn.cpp:1239 src/canonmn.cpp:1246 +msgid "top" +msgstr "Trên" + +#: src/canonmn.cpp:1240 +#, fuzzy +msgid "mid-left" +msgstr "Trái" + +#: src/canonmn.cpp:1247 +msgid "upper-left" +msgstr "" + +#: src/canonmn.cpp:1248 +#, fuzzy +msgid "upper-right" +msgstr "Phải" + +#: src/canonmn.cpp:1252 +#, fuzzy +msgid "lower-left" +msgstr "Hoa" + +#: src/canonmn.cpp:1253 +#, fuzzy +msgid "lower-right" +msgstr "Phải" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:225 src/olympusmn.cpp:405 +#: src/panasonicmn.cpp:731 src/properties.cpp:505 src/tags.cpp:419 +msgid "Image Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/canonmn.cpp:1259 src/olympusmn.cpp:226 src/olympusmn.cpp:406 +#: src/panasonicmn.cpp:489 src/panasonicmn.cpp:731 src/tags.cpp:2110 +msgid "Image width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:228 src/olympusmn.cpp:408 +#: src/panasonicmn.cpp:730 +msgid "Image Height" +msgstr "Chiá»u cao hình ảnh" + +#: src/canonmn.cpp:1260 src/olympusmn.cpp:229 src/olympusmn.cpp:409 +#: src/panasonicmn.cpp:490 src/panasonicmn.cpp:730 src/tags.cpp:2113 +msgid "Image height" +msgstr "Chiá»u cao hình ảnh" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image Width As Shot" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/canonmn.cpp:1261 +#, fuzzy +msgid "Image width (as shot)" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image Height As Shot" +msgstr "Chiá»u cao hình ảnh" + +#: src/canonmn.cpp:1262 +#, fuzzy +msgid "Image height (as shot)" +msgstr "Chiá»u cao hình ảnh" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF Points Used" +msgstr "Äiểm Lấy nét tá»± động Äã dùng" + +#: src/canonmn.cpp:1263 src/nikonmn.cpp:868 +msgid "AF points used" +msgstr "Äiểm lấy nét tá»± động đã dùng" + +#: src/canonmn.cpp:1264 +msgid "AF Points Used 20D" +msgstr "Äiểm Lấy nét tá»± động Äã dùng trên máy 20D" + +#: src/canonmn.cpp:1264 +msgid "AF points used (20D)" +msgstr "Äiểm Lấy nét tá»± động Äã dùng (20D)" + +#: src/canonmn.cpp:1266 +msgid "Unknown Canon Picture Info tag" +msgstr "" + +#: src/canonmn.cpp:1277 +msgid "AEB" +msgstr "AEB" + +#: src/canonmn.cpp:1278 +msgid "FEB" +msgstr "FEB" + +#: src/canonmn.cpp:1279 src/minoltamn.cpp:511 src/nikonmn.cpp:783 +#: src/nikonmn.cpp:1158 src/nikonmn.cpp:1218 src/nikonmn.cpp:1254 +msgid "ISO" +msgstr "ISO" + +#: src/canonmn.cpp:1280 +msgid "WB" +msgstr "WB" + +#: src/canonmn.cpp:1291 +msgid "Postcard" +msgstr "" + +#: src/canonmn.cpp:1292 +msgid "Widescreen" +msgstr "Màn hình rá»™ng" + +#: src/canonmn.cpp:1293 +#, fuzzy +msgid "Medium Movie" +msgstr "Trung bình 1" + +#: src/canonmn.cpp:1294 +#, fuzzy +msgid "Small Movie" +msgstr "Phim bình thưá»ng" + +#: src/canonmn.cpp:1300 +msgid "On 1" +msgstr "Mở 1" + +#: src/canonmn.cpp:1301 +msgid "On 2" +msgstr "Mở 2" + +#: src/canonmn.cpp:1309 +msgid "On (shift AB)" +msgstr "" + +#: src/canonmn.cpp:1310 +msgid "On (shift GM)" +msgstr "" + +#: src/canonmn.cpp:1316 src/nikonmn.cpp:675 src/nikonmn.cpp:688 +#: src/nikonmn.cpp:1017 src/olympusmn.cpp:628 src/olympusmn.cpp:869 +msgid "Yellow" +msgstr "Vàng" + +#: src/canonmn.cpp:1317 src/nikonmn.cpp:676 src/olympusmn.cpp:629 +#: src/olympusmn.cpp:870 +msgid "Orange" +msgstr "Cam" + +#: src/canonmn.cpp:1318 src/nikonmn.cpp:677 src/nikonmn.cpp:687 +#: src/nikonmn.cpp:1015 src/olympusmn.cpp:630 src/olympusmn.cpp:871 +msgid "Red" +msgstr "Äá»" + +#: src/canonmn.cpp:1319 src/canonmn.cpp:1328 src/nikonmn.cpp:678 +#: src/nikonmn.cpp:689 src/olympusmn.cpp:631 src/olympusmn.cpp:641 +#: src/olympusmn.cpp:872 src/olympusmn.cpp:881 +msgid "Green" +msgstr "Xanh lá" + +#: src/canonmn.cpp:1326 src/nikonmn.cpp:691 src/nikonmn.cpp:1016 +#: src/olympusmn.cpp:639 src/olympusmn.cpp:879 +msgid "Blue" +msgstr "Xanh dương" + +#: src/canonmn.cpp:1327 src/olympusmn.cpp:640 src/olympusmn.cpp:880 +msgid "Purple" +msgstr "Tím" + +#: src/canonmn.cpp:1334 +#, fuzzy +msgid "Bracket Mode" +msgstr "Chế độ Äen và Trắng" + +#: src/canonmn.cpp:1335 +#, fuzzy +msgid "Bracket Value" +msgstr "Giá trị Tương phản" + +#: src/canonmn.cpp:1336 +#, fuzzy +msgid "Bracket Shot Number" +msgstr "Số Khung hình" + +#: src/canonmn.cpp:1337 +#, fuzzy +msgid "Raw Jpg Quality" +msgstr "Chất lượng Hình ảnh" + +#: src/canonmn.cpp:1338 +#, fuzzy +msgid "Raw Jpg Size" +msgstr "Kích cỡ hình ảnh gốc" + +#: src/canonmn.cpp:1340 +#, fuzzy +msgid "WB Bracket Mode" +msgstr "Chế độ Äen và Trắng" + +#: src/canonmn.cpp:1341 +#, fuzzy +msgid "WB Bracket Value AB" +msgstr "Giá trị Cân bằng Sáng" + +#: src/canonmn.cpp:1342 +#, fuzzy +msgid "WB Bracket Value GM" +msgstr "Giá trị Cân bằng Sáng" + +#: src/canonmn.cpp:1343 src/nikonmn.cpp:709 src/properties.cpp:1155 +msgid "Filter Effect" +msgstr "Kính lá»c hiệu ứng" + +#: src/canonmn.cpp:1344 src/nikonmn.cpp:710 src/properties.cpp:1350 +#, fuzzy +msgid "Toning Effect" +msgstr "Hiệu ứng hình ảnh" + +#: src/canonmn.cpp:1345 +msgid "Macro Magnification" +msgstr "" + +#: src/canonmn.cpp:1345 +msgid "Macro magnification" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live View Shooting" +msgstr "" + +#: src/canonmn.cpp:1346 +msgid "Live view shooting" +msgstr "" + +#: src/canonmn.cpp:1347 +#, fuzzy +msgid "Focus Distance Upper" +msgstr "Khoảng cách Lấy nét" + +#: src/canonmn.cpp:1348 +#, fuzzy +msgid "Focus Distance Lower" +msgstr "Khoảng cách Lấy nét" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash Exposure Lock" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/canonmn.cpp:1349 +#, fuzzy +msgid "Flash exposure lock" +msgstr "Khoá tá»± động phÆ¡i sáng" + +#: src/canonmn.cpp:1351 +msgid "Unknown Canon File Info tag" +msgstr "" + +#: src/canonmn.cpp:1361 src/canonmn.cpp:1371 src/canonmn.cpp:1379 +#: src/canonmn.cpp:1392 src/fujimn.cpp:147 src/fujimn.cpp:154 +#: src/minoltamn.cpp:77 src/minoltamn.cpp:245 src/minoltamn.cpp:1139 +#: src/minoltamn.cpp:1225 src/minoltamn.cpp:1937 src/minoltamn.cpp:2026 +#: src/minoltamn.cpp:2060 src/minoltamn.cpp:2086 src/minoltamn.cpp:2112 +#: src/olympusmn.cpp:93 src/olympusmn.cpp:1142 src/panasonicmn.cpp:220 +#: src/panasonicmn.cpp:227 src/panasonicmn.cpp:267 src/panasonicmn.cpp:333 +#: src/panasonicmn.cpp:347 src/panasonicmn.cpp:356 src/pentaxmn.cpp:583 +#: src/sonymn.cpp:128 src/sonymn.cpp:197 src/sonymn.cpp:524 src/sonymn.cpp:554 +#: src/tags.cpp:1508 +msgid "Standard" +msgstr "Tiêu chuẩn" + +#: src/canonmn.cpp:1369 +msgid "Lowest" +msgstr "Thấp nhất" + +#: src/canonmn.cpp:1373 +msgid "Highest" +msgstr "Cao nhất" + +#: src/canonmn.cpp:1381 +#, fuzzy +msgid "High Saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/canonmn.cpp:1383 +#, fuzzy +msgid "Low Saturation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/canonmn.cpp:1384 +msgid "CM Set 1" +msgstr "" + +#: src/canonmn.cpp:1385 +msgid "CM Set 2" +msgstr "" + +#: src/canonmn.cpp:1386 +msgid "User Def. 1" +msgstr "" + +#: src/canonmn.cpp:1387 +msgid "User Def. 2" +msgstr "" + +#: src/canonmn.cpp:1388 +msgid "User Def. 3" +msgstr "" + +#: src/canonmn.cpp:1389 +msgid "PC 1" +msgstr "PC 1" + +#: src/canonmn.cpp:1390 +msgid "PC 2" +msgstr "PC 2" + +#: src/canonmn.cpp:1391 +msgid "PC 3" +msgstr "PC 3" + +#: src/canonmn.cpp:1396 +msgid "Faithful" +msgstr "" + +#: src/canonmn.cpp:1397 src/minoltamn.cpp:903 src/minoltamn.cpp:953 +#: src/nikonmn.cpp:429 src/panasonicmn.cpp:184 src/panasonicmn.cpp:372 +#: src/pentaxmn.cpp:974 +#, fuzzy +msgid "Monochrome" +msgstr "ÄÆ¡n sắc" + +#: src/canonmn.cpp:1399 +#, fuzzy +msgid "Fine Detail" +msgstr "Chi tiết đèn chá»›p" + +#: src/canonmn.cpp:1404 +#, fuzzy +msgid "ToneCurve" +msgstr "Tông" + +#: src/canonmn.cpp:1404 +msgid "Tone curve" +msgstr "" + +#: src/canonmn.cpp:1406 +msgid "SharpnessFrequency" +msgstr "Cưá»ngđộMịn" + +#: src/canonmn.cpp:1406 +msgid "Sharpness frequency" +msgstr "Cưá»ng độ mịn" + +#: src/canonmn.cpp:1407 +msgid "SensorRedLevel" +msgstr "" + +#: src/canonmn.cpp:1407 +#, fuzzy +msgid "Sensor red level" +msgstr "Kích cỡ Äiểm ảnh Cảm biến" + +#: src/canonmn.cpp:1408 +msgid "SensorBlueLevel" +msgstr "" + +#: src/canonmn.cpp:1408 +#, fuzzy +msgid "Sensor blue level" +msgstr "ÄÆ°á»ng viá»n trái cá»§a cảm biến" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "WhiteBalanceRed" +msgstr "Cân bằng trắng" + +#: src/canonmn.cpp:1409 +#, fuzzy +msgid "White balance red" +msgstr "Cân bằng trắng 2" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "WhiteBalanceBlue" +msgstr "Cân bằng trắng" + +#: src/canonmn.cpp:1410 +#, fuzzy +msgid "White balance blue" +msgstr "Bảng cân bằng trắng" + +#: src/canonmn.cpp:1411 +msgid "WhiteBalance" +msgstr "Cân bằng trắng" + +#: src/canonmn.cpp:1412 +#, fuzzy +msgid "ColorTemperature" +msgstr "Nhiệt độ màu" + +#: src/canonmn.cpp:1412 src/minoltamn.cpp:156 src/minoltamn.cpp:786 +#: src/minoltamn.cpp:1042 src/minoltamn.cpp:1057 src/minoltamn.cpp:1058 +#: src/minoltamn.cpp:1479 src/minoltamn.cpp:1581 src/olympusmn.cpp:840 +#: src/sonymn.cpp:406 src/sonymn.cpp:407 +#, fuzzy +msgid "Color Temperature" +msgstr "Nhiệt độ màu" + +#: src/canonmn.cpp:1413 +msgid "PictureStyle" +msgstr "KiểuHìnhảnh" + +#: src/canonmn.cpp:1413 +msgid "Picture style" +msgstr "Kiểu hình ảnh" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "DigitalGain" +msgstr "Cận cảnh phóng to Ä‘iện tá»­" + +#: src/canonmn.cpp:1414 +#, fuzzy +msgid "Digital gain" +msgstr "Cận cảnh phóng to Ä‘iện tá»­" + +#: src/canonmn.cpp:1415 +msgid "WBShiftAB" +msgstr "" + +#: src/canonmn.cpp:1415 +msgid "WBShift AB" +msgstr "" + +#: src/canonmn.cpp:1416 +msgid "WBShiftGM" +msgstr "" + +#: src/canonmn.cpp:1416 +msgid "WB Shift GM" +msgstr "" + +#: src/canonmn.cpp:1417 +#, fuzzy +msgid "Unknown Canon Processing Info tag" +msgstr "Xá»­ lý Thông tin" + +#: src/crwimage.cpp:656 +msgid "Header, offset" +msgstr "" + +#: src/crwimage.cpp:674 +msgid "tag" +msgstr "" + +#: src/crwimage.cpp:676 +msgid "dir" +msgstr "" + +#: src/crwimage.cpp:678 +msgid "type" +msgstr "Kiểu" + +#: src/crwimage.cpp:679 +msgid "size" +msgstr "Kích cỡ" + +#: src/crwimage.cpp:680 +msgid "offset" +msgstr "" + +#: src/datasets.cpp:79 +#, fuzzy +msgid "(invalid)" +msgstr "(Không hợp lệ)" + +#: src/datasets.cpp:80 +msgid "IIM envelope record" +msgstr "" + +#: src/datasets.cpp:81 +msgid "IIM application record 2" +msgstr "" + +#: src/datasets.cpp:85 +msgid "Model Version" +msgstr "Mẫu phiên bản" + +#: src/datasets.cpp:86 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part I, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:90 src/panasonicmn.cpp:283 src/pentaxmn.cpp:484 +#: src/pentaxmn.cpp:1242 src/pentaxmn.cpp:1243 +msgid "Destination" +msgstr "Äích đến" + +#: src/datasets.cpp:91 +msgid "" +"This DataSet is to accommodate some providers who require routing " +"information above the appropriate OSI layers." +msgstr "" + +#: src/datasets.cpp:94 src/sonymn.cpp:397 src/sonymn.cpp:398 +msgid "File Format" +msgstr "Äịnh dạng tập tin" + +#: src/datasets.cpp:95 +msgid "" +"A binary number representing the file format. The file format must be " +"registered with IPTC or NAA with a unique number assigned to it. The " +"information is used to route the data to the appropriate system and to allow " +"the receiving system to perform the appropriate actions there to." +msgstr "" + +#: src/datasets.cpp:101 +msgid "File Version" +msgstr "Phiên bản tập tin" + +#: src/datasets.cpp:102 +msgid "" +"A binary number representing the particular version of the File Format " +"specified by tag." +msgstr "" + +#: src/datasets.cpp:105 +msgid "Service Id" +msgstr "" + +#: src/datasets.cpp:106 +msgid "Identifies the provider and product" +msgstr "" + +#: src/datasets.cpp:108 +#, fuzzy +msgid "Envelope Number" +msgstr "Tập tin số" + +#: src/datasets.cpp:109 +msgid "" +"The characters form a number that will be unique for the date specified in " +" tag and for the Service Identifier specified by " +" tag. If identical envelope numbers appear with the same " +"date and with the same Service Identifier, records 2-9 must be unchanged " +"from the original. This is not intended to be a sequential serial number " +"reception check." +msgstr "" + +#: src/datasets.cpp:117 +#, fuzzy +msgid "Product Id" +msgstr "Nhà sản xuất" + +#: src/datasets.cpp:118 +msgid "" +"Allows a provider to identify subsets of its overall service. Used to " +"provide receiving organisation data on which to select, route, or otherwise " +"handle data." +msgstr "" + +#: src/datasets.cpp:122 +#, fuzzy +msgid "Envelope Priority" +msgstr "Ưu tiên khẩu độ" + +#: src/datasets.cpp:123 +msgid "" +"Specifies the envelope handling priority and not the editorial urgency (see " +" tag). \"1\" indicates the most urgent, \"5\" the normal urgency, " +"and \"8\" the least urgent copy. The numeral \"9\" indicates a User Defined " +"Priority. The numeral \"0\" is reserved for future use." +msgstr "" + +#: src/datasets.cpp:129 +msgid "Date Sent" +msgstr "Ngày gá»­i" + +#: src/datasets.cpp:130 +msgid "" +"Uses the format CCYYMMDD (century, year, month, day) as de-fined in ISO 8601 " +"to indicate year, month and day the service sent the material." +msgstr "" + +#: src/datasets.cpp:133 +msgid "Time Sent" +msgstr "Thá»i gian gá»­i" + +#: src/datasets.cpp:134 +msgid "" +"Uses the format HHMMSS:HHMM where HHMMSS refers to local hour, minute and " +"seconds and HHMM refers to hours and minutes ahead (+) or behind (-) " +"Universal Coordinated Time as described in ISO 8601. This is the time the " +"service sent the material." +msgstr "" + +#: src/datasets.cpp:139 +msgid "Character Set" +msgstr "" + +#: src/datasets.cpp:140 +msgid "" +"This tag consisting of one or more control functions used for the " +"announcement, invocation or designation of coded character sets. The control " +"functions follow the ISO 2022 standard and may consist of the escape control " +"character and one or more graphic characters." +msgstr "" + +#: src/datasets.cpp:145 +msgid "Unique Name Object" +msgstr "" + +#: src/datasets.cpp:146 +msgid "" +"This tag provide a globally unique identification for objects as specified " +"in the IIM, independent of provider and for any media form. The provider " +"must ensure the UNO is unique. Objects with the same UNO are identical." +msgstr "" + +#: src/datasets.cpp:151 +msgid "ARM Identifier" +msgstr "" + +#: src/datasets.cpp:152 +msgid "" +"The DataSet identifies the Abstract Relationship Method identifier (ARM) " +"which is described in a document registered by the originator of the ARM " +"with the IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:156 +#, fuzzy +msgid "ARM Version" +msgstr "Phiên bản" + +#: src/datasets.cpp:157 +msgid "" +"This tag consisting of a binary number representing the particular version " +"of the ARM specified by tag ." +msgstr "" + +#: src/datasets.cpp:170 +#, fuzzy +msgid "Record Version" +msgstr "Mẫu phiên bản" + +#: src/datasets.cpp:171 +msgid "" +"A binary number identifying the version of the Information Interchange " +"Model, Part II, utilised by the provider. Version numbers are assigned by " +"IPTC and NAA organizations." +msgstr "" + +#: src/datasets.cpp:175 +msgid "Object Type" +msgstr "Kiểu vật thể" + +#: src/datasets.cpp:176 +msgid "" +"The Object Type is used to distinguish between different types of objects " +"within the IIM. The first part is a number representing a language " +"independent international reference to an Object Type followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Type Number consisting of graphic characters plus spaces either in English " +"or in the language of the service as indicated in tag " +msgstr "" + +#: src/datasets.cpp:184 +msgid "Object Attribute" +msgstr "" + +#: src/datasets.cpp:185 +msgid "" +"The Object Attribute defines the nature of the object independent of the " +"Subject. The first part is a number representing a language independent " +"international reference to an Object Attribute followed by a colon " +"separator. The second part, if used, is a text representation of the Object " +"Attribute Number consisting of graphic characters plus spaces either in " +"English, or in the language of the service as indicated in tag " +"" +msgstr "" + +#: src/datasets.cpp:193 +msgid "Object Name" +msgstr "Tên vật thể" + +#: src/datasets.cpp:194 +msgid "" +"Used as a shorthand reference for the object. Changes to exist-ing data, " +"such as updated stories or new crops on photos, should be identified in tag " +"." +msgstr "" + +#: src/datasets.cpp:198 +msgid "Document Title" +msgstr "Tiêu đỠvăn bản" + +#: src/datasets.cpp:199 src/olympusmn.cpp:827 +msgid "Edit Status" +msgstr "Tùy chỉnh trạng thái" + +#: src/datasets.cpp:200 +msgid "Status of the object data, according to the practice of the provider." +msgstr "" + +#: src/datasets.cpp:202 +msgid "Editorial Update" +msgstr "" + +#: src/datasets.cpp:203 +msgid "" +"Indicates the type of update that this object provides to a previous object. " +"The link to the previous object is made using the tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:207 src/datasets.cpp:212 src/properties.cpp:444 +msgid "Urgency" +msgstr "" + +#: src/datasets.cpp:208 +msgid "" +"Specifies the editorial urgency of content and not necessarily the envelope " +"handling priority (see tag ). The \"1\" is most urgent, " +"\"5\" normal and \"8\" denotes the least-urgent copy." +msgstr "" + +#: src/datasets.cpp:213 src/properties.cpp:184 src/properties.cpp:1333 +msgid "Subject" +msgstr "Vật thể" + +#: src/datasets.cpp:214 +msgid "The Subject Reference is a structured definition of the subject matter." +msgstr "" + +#: src/datasets.cpp:216 src/datasets.cpp:221 src/properties.cpp:430 +msgid "Category" +msgstr "Phân loại" + +#: src/datasets.cpp:217 +msgid "" +"Identifies the subject of the object data in the opinion of the provider. A " +"list of categories will be maintained by a regional registry, where " +"available, otherwise by the provider." +msgstr "" + +#: src/datasets.cpp:222 +msgid "Supplemental Category" +msgstr "" + +#: src/datasets.cpp:223 +msgid "" +"Supplemental categories further refine the subject of an object data. A " +"supplemental category may include any of the recognised categories as used " +"in tag . Otherwise, selection of supplemental categories are left " +"to the provider." +msgstr "" + +#: src/datasets.cpp:228 src/properties.cpp:442 +msgid "Supplemental Categories" +msgstr "" + +#: src/datasets.cpp:229 +#, fuzzy +msgid "Fixture Id" +msgstr "Thông tin hình ảnh" + +#: src/datasets.cpp:230 +msgid "" +"Identifies object data that recurs often and predictably. Enables users to " +"immediately find or recall such an object." +msgstr "" + +#: src/datasets.cpp:233 src/datasets.cpp:239 src/properties.cpp:420 +#: src/properties.cpp:1015 +msgid "Keywords" +msgstr "Từ khóa" + +#: src/datasets.cpp:234 +msgid "" +"Used to indicate specific information retrieval words. It is expected that a " +"provider of various types of data that are related in subject matter uses " +"the same keyword, enabling the receiving system or subsystems to search " +"across all types of data for related material." +msgstr "" + +#: src/datasets.cpp:240 +msgid "Location Code" +msgstr "Mã vị trí" + +#: src/datasets.cpp:241 +msgid "" +"Indicates the code of a country/geographical location referenced by the " +"content of the object. Where ISO has established an appropriate country code " +"under ISO 3166, that code will be used. When ISO 3166 does not adequately " +"provide for identification of a location or a country, e.g. ships at sea, " +"space, IPTC will assign an appropriate three-character code under the " +"provisions of ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:248 +msgid "Location Name" +msgstr "Tên vị trí" + +#: src/datasets.cpp:249 +msgid "" +"Provides a full, publishable name of a country/geographical location " +"referenced by the content of the object, according to guidelines of the " +"provider." +msgstr "" + +#: src/datasets.cpp:253 src/properties.cpp:376 +msgid "Release Date" +msgstr "Ngày phát hành" + +#: src/datasets.cpp:254 +msgid "" +"Designates in the form CCYYMMDD the earliest date the provider intends the " +"object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:257 +msgid "Release Time" +msgstr "Thá»i gian phát hành" + +#: src/datasets.cpp:258 +msgid "" +"Designates in the form HHMMSS:HHMM the earliest time the provider intends " +"the object to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:261 +msgid "Expiration Date" +msgstr "Ngày hết hạn" + +#: src/datasets.cpp:262 +msgid "" +"Designates in the form CCYYMMDD the latest date the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:265 +msgid "ExpirationTime" +msgstr "Thá»i gian hết han" + +#: src/datasets.cpp:266 +msgid "" +"Designates in the form HHMMSS:HHMM the latest time the provider or owner " +"intends the object data to be used. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:269 +msgid "Special Instructions" +msgstr "Hướng dẫn đặc biệt" + +#: src/datasets.cpp:270 +msgid "" +"Other editorial instructions concerning the use of the object data, such as " +"embargoes and warnings." +msgstr "" + +#: src/datasets.cpp:273 src/properties.cpp:439 +msgid "Instructions" +msgstr "Hướng dẫn" + +#: src/datasets.cpp:274 +msgid "Action Advised" +msgstr "" + +#: src/datasets.cpp:275 +msgid "" +"Indicates the type of action that this object provides to a previous object. " +"The link to the previous object is made using tags and " +", according to the practices of the provider." +msgstr "" + +#: src/datasets.cpp:279 +msgid "Reference Service" +msgstr "" + +#: src/datasets.cpp:280 +msgid "" +"Identifies the Service Identifier of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:283 +#, fuzzy +msgid "Reference Date" +msgstr "Ngày phát hành" + +#: src/datasets.cpp:284 +msgid "" +"Identifies the date of a prior envelope to which the current object refers." +msgstr "" + +#: src/datasets.cpp:286 +#, fuzzy +msgid "Reference Number" +msgstr "Số Khung hình" + +#: src/datasets.cpp:287 +msgid "" +"Identifies the Envelope Number of a prior envelope to which the current " +"object refers." +msgstr "" + +#: src/datasets.cpp:289 src/datasets.cpp:294 src/properties.cpp:434 +msgid "Date Created" +msgstr "Ngày tạo" + +#: src/datasets.cpp:290 +msgid "" +"Represented in the form CCYYMMDD to designate the date the intellectual " +"content of the object data was created rather than the date of the creation " +"of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:295 +msgid "Time Created" +msgstr "Thá»i gian tạo" + +#: src/datasets.cpp:296 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the intellectual " +"content of the object data current source material was created rather than " +"the creation of the physical representation. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:301 +#, fuzzy +msgid "Digitization Date" +msgstr "Ngày hết hạn" + +#: src/datasets.cpp:302 +msgid "" +"Represented in the form CCYYMMDD to designate the date the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:305 +#, fuzzy +msgid "Digitization Time" +msgstr "Thá»i gian hết han" + +#: src/datasets.cpp:306 +msgid "" +"Represented in the form HHMMSS:HHMM to designate the time the digital " +"representation of the object data was created. Follows ISO 8601 standard." +msgstr "" + +#: src/datasets.cpp:310 src/minoltamn.cpp:201 src/minoltamn.cpp:655 +#: src/minoltamn.cpp:835 src/olympusmn.cpp:483 src/panasonicmn.cpp:115 +#: src/pentaxmn.cpp:579 src/pentaxmn.cpp:653 src/sigmamn.cpp:154 +#: src/sonymn.cpp:151 +msgid "Program" +msgstr "Chương trình" + +#: src/datasets.cpp:311 +msgid "Identifies the type of program used to originate the object data." +msgstr "" + +#: src/datasets.cpp:313 +msgid "Program Version" +msgstr "Phiên bản chương trình" + +#: src/datasets.cpp:314 +msgid "Used to identify the version of the program mentioned in tag ." +msgstr "" + +#: src/datasets.cpp:316 +#, fuzzy +msgid "Object Cycle" +msgstr "Kiểu vật thể" + +#: src/datasets.cpp:317 +msgid "Used to identify the editorial cycle of object data." +msgstr "" + +#: src/datasets.cpp:319 +msgid "By-line" +msgstr "" + +#: src/datasets.cpp:320 +msgid "" +"Contains name of the creator of the object data, e.g. writer, photographer " +"or graphic artist." +msgstr "" + +#: src/datasets.cpp:323 src/properties.cpp:2103 +msgid "Author" +msgstr "Tác giả" + +#: src/datasets.cpp:324 +#, fuzzy +msgid "By-line Title" +msgstr "Tiêu đỠcá»­a sổ" + +#: src/datasets.cpp:325 +msgid "" +"A by-line title is the title of the creator or creators of an object data. " +"Where used, a by-line title should follow the by-line it modifies." +msgstr "" + +#: src/datasets.cpp:328 src/datasets.cpp:332 src/panasonicmn.cpp:507 +#: src/properties.cpp:431 +msgid "City" +msgstr "Thành phố" + +#: src/datasets.cpp:329 +msgid "" +"Identifies city of object data origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:333 +#, fuzzy +msgid "Sub Location" +msgstr "Äịa Ä‘iểm quay" + +#: src/datasets.cpp:334 +msgid "" +"Identifies the location within a city from which the object data originates, " +"according to guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:337 +#, fuzzy +msgid "Province State" +msgstr "Tỉnh/Bang" + +#: src/datasets.cpp:338 +msgid "" +"Identifies Province/State of origin according to guidelines established by " +"the provider." +msgstr "" + +#: src/datasets.cpp:341 +msgid "State/Province" +msgstr "Bang/Tỉnh" + +#: src/datasets.cpp:342 src/properties.cpp:687 src/properties.cpp:1733 +msgid "Country Code" +msgstr "Mã quốc gia" + +#: src/datasets.cpp:343 +msgid "" +"Indicates the code of the country/primary location where the intellectual " +"property of the object data was created, e.g. a photo was taken, an event " +"occurred. Where ISO has established an appropriate country code under ISO " +"3166, that code will be used. When ISO 3166 does not adequately provide for " +"identification of a location or a new country, e.g. ships at sea, space, " +"IPTC will assign an appropriate three-character code under the provisions of " +"ISO 3166 to avoid conflicts." +msgstr "" + +#: src/datasets.cpp:352 +msgid "Country Name" +msgstr "Tên quốc gia" + +#: src/datasets.cpp:353 +msgid "" +"Provides full, publishable, name of the country/primary location where the " +"intellectual property of the object data was created, according to " +"guidelines of the provider." +msgstr "" + +#: src/datasets.cpp:357 src/panasonicmn.cpp:505 src/properties.cpp:432 +#: src/properties.cpp:1100 src/properties.cpp:1730 +msgid "Country" +msgstr "Quốc gia" + +#: src/datasets.cpp:358 src/datasets.cpp:362 src/properties.cpp:443 +#, fuzzy +msgid "Transmission Reference" +msgstr "Liên kết dá»± án" + +#: src/datasets.cpp:359 +msgid "" +"A code representing the location of original transmission according to " +"practices of the provider." +msgstr "" + +#: src/datasets.cpp:363 src/datasets.cpp:366 src/properties.cpp:438 +msgid "Headline" +msgstr "Tiêu Ä‘á»" + +#: src/datasets.cpp:364 +msgid "" +"A publishable entry providing a synopsis of the contents of the object data." +msgstr "" + +#: src/datasets.cpp:367 src/datasets.cpp:370 src/properties.cpp:433 +msgid "Credit" +msgstr "" + +#: src/datasets.cpp:368 +msgid "" +"Identifies the provider of the object data, not necessarily the owner/" +"creator." +msgstr "" + +#: src/datasets.cpp:371 src/datasets.cpp:375 src/properties.cpp:183 +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source" +msgstr "Nguồn" + +#: src/datasets.cpp:372 +msgid "" +"Identifies the original owner of the intellectual content of the object " +"data. This could be an agency, a member of an agency or an individual." +msgstr "" + +#: src/datasets.cpp:377 +msgid "Contains any necessary copyright notice." +msgstr "" + +#: src/datasets.cpp:379 +msgid "Copyright Notice" +msgstr "Lưu ý bản quyá»n" + +#: src/datasets.cpp:380 src/properties.cpp:962 src/properties.cpp:971 +msgid "Contact" +msgstr "Liên hệ" + +#: src/datasets.cpp:381 +msgid "" +"Identifies the person or organisation which can provide further background " +"information on the object data." +msgstr "" + +#: src/datasets.cpp:384 src/properties.cpp:2101 +#, fuzzy +msgid "Caption" +msgstr "Xoay" + +#: src/datasets.cpp:385 +msgid "A textual description of the object data." +msgstr "" + +#: src/datasets.cpp:387 src/properties.cpp:168 src/properties.cpp:1006 +msgid "Description" +msgstr "Miêu tả" + +#: src/datasets.cpp:388 +msgid "Writer" +msgstr "Tác giả" + +#: src/datasets.cpp:389 +msgid "" +"Identification of the name of the person involved in the writing, editing or " +"correcting the object data or caption/abstract." +msgstr "" + +#: src/datasets.cpp:392 +msgid "Rasterized Caption" +msgstr "" + +#: src/datasets.cpp:393 +msgid "" +"Contains the rasterized object data description and is used where characters " +"that have not been coded are required for the caption." +msgstr "" + +#: src/datasets.cpp:397 +msgid "Indicates the color components of an image." +msgstr "" + +#: src/datasets.cpp:399 +#, fuzzy +msgid "Image Orientation" +msgstr "Miêu tả hình ảnh" + +#: src/datasets.cpp:400 +msgid "Indicates the layout of an image." +msgstr "" + +#: src/datasets.cpp:402 src/properties.cpp:174 src/properties.cpp:1197 +#: src/properties.cpp:1451 +msgid "Language" +msgstr "Ngôn ngữ" + +#: src/datasets.cpp:403 +msgid "" +"Describes the major national language of the object, according to the 2-" +"letter codes of ISO 639:1988. Does not define or imply any coded character " +"set, but is used for internal routing, e.g. to various editorial desks." +msgstr "" + +#: src/datasets.cpp:408 +#, fuzzy +msgid "Audio Type" +msgstr "Kiểu mẫu âm thanh" + +#: src/datasets.cpp:409 +msgid "Indicates the type of an audio content." +msgstr "" + +#: src/datasets.cpp:411 +#, fuzzy +msgid "Audio Rate" +msgstr "Tỉ lệ mẫu âm thanh" + +#: src/datasets.cpp:412 +msgid "Indicates the sampling rate in Hertz of an audio content." +msgstr "" + +#: src/datasets.cpp:414 +#, fuzzy +msgid "Audio Resolution" +msgstr "Äá»™ phân giải X" + +#: src/datasets.cpp:415 +msgid "Indicates the sampling resolution of an audio content." +msgstr "" + +#: src/datasets.cpp:417 +#, fuzzy +msgid "Audio Duration" +msgstr "Thá»i lượng" + +#: src/datasets.cpp:418 +msgid "Indicates the duration of an audio content." +msgstr "" + +#: src/datasets.cpp:420 +msgid "Audio Outcue" +msgstr "" + +#: src/datasets.cpp:421 +msgid "" +"Identifies the content of the end of an audio object data, according to " +"guidelines established by the provider." +msgstr "" + +#: src/datasets.cpp:424 +msgid "Preview Format" +msgstr "Äịnh dạng xem trước" + +#: src/datasets.cpp:425 +msgid "" +"A binary number representing the file format of the object data preview. The " +"file format must be registered with IPTC or NAA organizations with a unique " +"number assigned to it." +msgstr "" + +#: src/datasets.cpp:429 src/properties.cpp:1276 +#, fuzzy +msgid "Preview Version" +msgstr "Phiên bản tập tin" + +#: src/datasets.cpp:430 +msgid "" +"A binary number representing the particular version of the object data " +"preview file format specified in tag ." +msgstr "" + +#: src/datasets.cpp:433 +#, fuzzy +msgid "Preview Data" +msgstr "Äịnh dạng xem trước" + +#: src/datasets.cpp:434 +msgid "Binary image preview data." +msgstr "" + +#: src/datasets.cpp:436 src/datasets.cpp:437 +msgid "(Invalid)" +msgstr "(Không hợp lệ)" + +#: src/datasets.cpp:446 src/datasets.cpp:447 src/datasets.cpp:450 +#, fuzzy +msgid "Unknown dataset" +msgstr "Không biết " + +#: src/error.cpp:55 +msgid "Error %0: arg2=%2, arg3=%3, arg1=%1." +msgstr "" + +#: src/error.cpp:56 +msgid "Success" +msgstr "Thành công" + +#: src/error.cpp:59 +msgid "This does not look like a %1 image" +msgstr "" + +#: src/error.cpp:60 +msgid "Invalid dataset name `%1'" +msgstr "" + +#: src/error.cpp:61 +#, fuzzy +msgid "Invalid record name `%1'" +msgstr "Dòng lệnh khong6 hợp lệ" + +#: src/error.cpp:62 +#, fuzzy +msgid "Invalid key `%1'" +msgstr "Khóa không hợp lệ" + +#: src/error.cpp:63 +msgid "Invalid tag name or ifdId `%1', ifdId %2" +msgstr "" + +#: src/error.cpp:64 +msgid "Value not set" +msgstr "Chưa đặt giá trị" + +#: src/error.cpp:65 +#, fuzzy +msgid "%1: Failed to open the data source: %2" +msgstr "Thất bại khi mở tập tin\n" + +#: src/error.cpp:66 +#, fuzzy +msgid "%1: Failed to open file (%2): %3" +msgstr "Thất bại khi mở tập tin\n" + +#: src/error.cpp:67 +msgid "%1: The file contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:68 +msgid "The memory contains data of an unknown image type" +msgstr "" + +#: src/error.cpp:69 +msgid "Image type %1 is not supported" +msgstr "" + +#: src/error.cpp:70 +#, fuzzy +msgid "Failed to read image data" +msgstr "Äá»c thông tin đầu vào thất bại" + +#: src/error.cpp:71 +msgid "This does not look like a JPEG image" +msgstr "" + +#: src/error.cpp:72 +msgid "%1: Failed to map file for reading and writing: %2" +msgstr "" + +#: src/error.cpp:73 +#, fuzzy +msgid "%1: Failed to rename file to %2: %3" +msgstr "Äổi tên thất bại" + +#: src/error.cpp:74 +msgid "%1: Transfer failed: %2" +msgstr "" + +#: src/error.cpp:75 +msgid "Memory transfer failed: %1" +msgstr "" + +#: src/error.cpp:76 +msgid "Failed to read input data" +msgstr "Äá»c thông tin đầu vào thất bại" + +#: src/error.cpp:77 +msgid "Failed to write image" +msgstr "Ghi hình ảnh thất bại" + +#: src/error.cpp:78 +msgid "Input data does not contain a valid image" +msgstr "" + +#: src/error.cpp:79 +msgid "Invalid ifdId %1" +msgstr "" + +#: src/error.cpp:80 +msgid "Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:81 +msgid "Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)" +msgstr "" + +#: src/error.cpp:82 +#, fuzzy +msgid "Offset out of range" +msgstr "Ngoài phạm vi" + +#: src/error.cpp:83 +msgid "Unsupported data area offset type" +msgstr "" + +#: src/error.cpp:84 +msgid "Invalid charset: `%1'" +msgstr "" + +#: src/error.cpp:85 +#, fuzzy +msgid "Unsupported date format" +msgstr "định dạng dữ liệu không xác định" + +#: src/error.cpp:86 +msgid "Unsupported time format" +msgstr "" + +#: src/error.cpp:87 +msgid "Writing to %1 images is not supported" +msgstr "" + +#: src/error.cpp:88 +msgid "Setting %1 in %2 images is not supported" +msgstr "" + +#: src/error.cpp:89 +msgid "This does not look like a CRW image" +msgstr "" + +#: src/error.cpp:90 +msgid "%1: Not supported" +msgstr "" + +#: src/error.cpp:91 +msgid "No namespace info available for XMP prefix `%1'" +msgstr "" + +#: src/error.cpp:92 +msgid "No prefix registered for namespace `%2', needed for property path `%1'" +msgstr "" + +#: src/error.cpp:93 +msgid "Size of %1 JPEG segment is larger than 65535 bytes" +msgstr "" + +#: src/error.cpp:94 +msgid "Unhandled Xmpdatum %1 of type %2" +msgstr "" + +#: src/error.cpp:95 +msgid "Unhandled XMP node %1 with opt=%2" +msgstr "" + +#: src/error.cpp:96 +msgid "XMP Toolkit error %1: %2" +msgstr "" + +#: src/error.cpp:97 +msgid "Failed to decode Lang Alt property %1 with opt=%2" +msgstr "" + +#: src/error.cpp:98 +msgid "Failed to decode Lang Alt qualifier %1 with opt=%2" +msgstr "" + +#: src/error.cpp:99 +msgid "Failed to encode Lang Alt property %1" +msgstr "" + +#: src/error.cpp:100 +msgid "Failed to determine property name from path %1, namespace %2" +msgstr "" + +#: src/error.cpp:101 +msgid "Schema namespace %1 is not registered with the XMP Toolkit" +msgstr "" + +#: src/error.cpp:102 +msgid "No namespace registered for prefix `%1'" +msgstr "" + +#: src/error.cpp:103 +msgid "" +"Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `" +"%1', `%2', `%3'" +msgstr "" + +#: src/error.cpp:104 +msgid "Invalid XmpText type `%1'" +msgstr "" + +#: src/error.cpp:105 +msgid "TIFF directory %1 has too many entries" +msgstr "" + +#: src/error.cpp:106 +msgid "Multiple TIFF array element tags %1 in one directory" +msgstr "" + +#: src/error.cpp:107 +msgid "TIFF array element tag %1 has wrong type" +msgstr "" + +#: src/error.cpp:108 +msgid "%1 has invalid XMP value type `%2'" +msgstr "" + +#: src/exiv2.cpp:213 +msgid "Copyright (C) 2004-2015 Andreas Huggel.\n" +msgstr "" + +#: src/exiv2.cpp:215 +msgid "" +"This program is free software; you can redistribute it and/or\n" +"modify it under the terms of the GNU General Public License\n" +"as published by the Free Software Foundation; either version 2\n" +"of the License, or (at your option) any later version.\n" +msgstr "" + +#: src/exiv2.cpp:220 +msgid "" +"This program is distributed in the hope that it will be useful,\n" +"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +"GNU General Public License for more details.\n" +msgstr "" + +#: src/exiv2.cpp:225 +msgid "" +"You should have received a copy of the GNU General Public\n" +"License along with this program; if not, write to the Free\n" +"Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" +"Boston, MA 02110-1301 USA\n" +msgstr "" + +#: src/exiv2.cpp:236 +msgid "Usage:" +msgstr "" + +#: src/exiv2.cpp:237 +msgid "" +"[ options ] [ action ] file ...\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:238 +msgid "Manipulate the Exif metadata of images.\n" +msgstr "" + +#: src/exiv2.cpp:244 +msgid "" +"\n" +"Actions:\n" +msgstr "" + +#: src/exiv2.cpp:245 +msgid "" +" ad | adjust Adjust Exif timestamps by the given time. This action\n" +" requires at least one of the -a, -Y, -O or -D options.\n" +msgstr "" + +#: src/exiv2.cpp:247 +msgid " pr | print Print image metadata.\n" +msgstr "" + +#: src/exiv2.cpp:248 +msgid " rm | delete Delete image metadata from the files.\n" +msgstr "" + +#: src/exiv2.cpp:249 +msgid "" +" in | insert Insert metadata from corresponding *.exv files.\n" +" Use option -S to change the suffix of the input files.\n" +msgstr "" + +#: src/exiv2.cpp:251 +msgid "" +" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n" +msgstr "" + +#: src/exiv2.cpp:252 +msgid "" +" mv | rename Rename files and/or set file timestamps according to the\n" +" Exif create timestamp. The filename format can be set with\n" +" -r format, timestamp options are controlled with -t and -T.\n" +msgstr "" + +#: src/exiv2.cpp:255 +msgid "" +" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" +" IPTC metadata of image files or set the JPEG comment.\n" +" Requires option -c, -m or -M.\n" +msgstr "" + +#: src/exiv2.cpp:258 +msgid "" +" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" +" Exif tag.\n" +msgstr "" + +#: src/exiv2.cpp:260 +msgid "" +" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" +" character encoding can be specified with the -n option.\n" +msgstr "" + +#: src/exiv2.cpp:262 +#, fuzzy +msgid "" +"\n" +"Options:\n" +msgstr "Tuỳ chá»n T4" + +#: src/exiv2.cpp:263 +msgid " -h Display this help and exit.\n" +msgstr " -h HIển thị giúp đỡ và thoát.\n" + +#: src/exiv2.cpp:264 +#, fuzzy +msgid " -V Show the program version and exit.\n" +msgstr " -h HIển thị giúp đỡ và thoát.\n" + +#: src/exiv2.cpp:265 +msgid " -v Be verbose during the program run.\n" +msgstr "" + +#: src/exiv2.cpp:266 +msgid "" +" -q Silence warnings and error messages during the program run " +"(quiet).\n" +msgstr "" + +#: src/exiv2.cpp:267 +msgid "" +" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n" +msgstr "" + +#: src/exiv2.cpp:268 +msgid " -b Show large binary values.\n" +msgstr "" + +#: src/exiv2.cpp:269 +msgid " -u Show unknown tags.\n" +msgstr "" + +#: src/exiv2.cpp:270 +msgid " -g key Only output info for this key (grep).\n" +msgstr "" + +#: src/exiv2.cpp:271 +msgid " -K key Only output info for this key (exact match).\n" +msgstr "" + +#: src/exiv2.cpp:272 +msgid " -n enc Charset to use to decode UNICODE Exif user comments.\n" +msgstr "" + +#: src/exiv2.cpp:273 +msgid " -k Preserve file timestamps (keep).\n" +msgstr "" + +#: src/exiv2.cpp:274 +msgid "" +" -t Also set the file timestamp in 'rename' action (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:275 +msgid "" +" -T Only set the file timestamp in 'rename' action, do not rename\n" +" the file (overrides -k).\n" +msgstr "" + +#: src/exiv2.cpp:277 +msgid " -f Do not prompt before overwriting existing files (force).\n" +msgstr "" + +#: src/exiv2.cpp:278 +msgid " -F Do not prompt before renaming files (Force).\n" +msgstr "" + +#: src/exiv2.cpp:279 +msgid "" +" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" +" is only used with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:281 +msgid " -Y yrs Year adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:282 +msgid " -O mon Month adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:283 +msgid " -D day Day adjustment with the 'adjust' action.\n" +msgstr "" + +#: src/exiv2.cpp:284 +msgid " -p mode Print mode for the 'print' action. Possible modes are:\n" +msgstr "" + +#: src/exiv2.cpp:285 +msgid " s : print a summary of the Exif metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:286 +msgid "" +" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n" +msgstr "" + +#: src/exiv2.cpp:287 +msgid " t : interpreted (translated) Exif data (-PEkyct)\n" +msgstr "" + +#: src/exiv2.cpp:288 +msgid " v : plain Exif data values (-PExgnycv)\n" +msgstr "" + +#: src/exiv2.cpp:289 +msgid " h : hexdump of the Exif data (-PExgnycsh)\n" +msgstr "" + +#: src/exiv2.cpp:290 +msgid " i : IPTC data values (-PIkyct)\n" +msgstr "" + +#: src/exiv2.cpp:291 +msgid " x : XMP properties (-PXkyct)\n" +msgstr "" + +#: src/exiv2.cpp:292 src/exiv2.cpp:317 +msgid " c : JPEG comment\n" +msgstr "" + +#: src/exiv2.cpp:293 +msgid " p : list available previews\n" +msgstr "" + +#: src/exiv2.cpp:294 +msgid " S : print structure of image\n" +msgstr "" + +#: src/exiv2.cpp:295 +msgid " X : extract XMP from image\n" +msgstr "" + +#: src/exiv2.cpp:296 +msgid "" +" -P flgs Print flags for fine control of tag lists ('print' action):\n" +msgstr "" + +#: src/exiv2.cpp:297 +msgid " E : include Exif tags in the list\n" +msgstr "" + +#: src/exiv2.cpp:298 +msgid " I : IPTC datasets\n" +msgstr "" + +#: src/exiv2.cpp:299 +msgid " X : XMP properties\n" +msgstr "" + +#: src/exiv2.cpp:300 +msgid " x : print a column with the tag number\n" +msgstr "" + +#: src/exiv2.cpp:301 +msgid " g : group name\n" +msgstr "" + +#: src/exiv2.cpp:302 +msgid " k : key\n" +msgstr "" + +#: src/exiv2.cpp:303 +msgid " l : tag label\n" +msgstr "" + +#: src/exiv2.cpp:304 +msgid " n : tag name\n" +msgstr "" + +#: src/exiv2.cpp:305 +msgid " y : type\n" +msgstr "" + +#: src/exiv2.cpp:306 +msgid " c : number of components (count)\n" +msgstr "" + +#: src/exiv2.cpp:307 +msgid " s : size in bytes\n" +msgstr "" + +#: src/exiv2.cpp:308 +msgid " v : plain data value\n" +msgstr "" + +#: src/exiv2.cpp:309 +msgid " t : interpreted (translated) data\n" +msgstr "" + +#: src/exiv2.cpp:310 +msgid " h : hexdump of the data\n" +msgstr "" + +#: src/exiv2.cpp:311 +msgid "" +" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n" +msgstr "" + +#: src/exiv2.cpp:312 +msgid " a : all supported metadata (the default)\n" +msgstr "" + +#: src/exiv2.cpp:313 +msgid " e : Exif section\n" +msgstr "" + +#: src/exiv2.cpp:314 +msgid " t : Exif thumbnail only\n" +msgstr "" + +#: src/exiv2.cpp:315 +msgid " i : IPTC data\n" +msgstr "" + +#: src/exiv2.cpp:316 +msgid " x : XMP packet\n" +msgstr "" + +#: src/exiv2.cpp:318 +msgid "" +" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" +" the same as those for the -d option, plus a modifier:\n" +" X : Insert metadata from an XMP sidecar file .xmp\n" +" Only JPEG thumbnails can be inserted, they need to be named\n" +" -thumb.jpg\n" +msgstr "" + +#: src/exiv2.cpp:323 +msgid "" +" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" +" are the same as those for the -d option, plus a target to " +"extract\n" +" preview images and a modifier to generate an XMP sidecar file:\n" +" p[[, ...]] : Extract preview images.\n" +" X : Extract metadata to an XMP sidecar file .xmp\n" +msgstr "" + +#: src/exiv2.cpp:328 +msgid "" +" -r fmt Filename format for the 'rename' action. The format string\n" +" follows strftime(3). The following keywords are supported:\n" +msgstr "" + +#: src/exiv2.cpp:330 +msgid " :basename: - original filename without extension\n" +msgstr "" + +#: src/exiv2.cpp:331 +msgid "" +" :dirname: - name of the directory holding the original file\n" +msgstr "" + +#: src/exiv2.cpp:332 +msgid " :parentname: - name of parent directory\n" +msgstr "" + +#: src/exiv2.cpp:333 +msgid " Default filename format is " +msgstr "" + +#: src/exiv2.cpp:335 +msgid " -c txt JPEG comment string to set in the image.\n" +msgstr "" + +#: src/exiv2.cpp:336 +msgid "" +" -m file Command file for the modify action. The format for commands is\n" +" set|add|del [[] ].\n" +msgstr "" + +#: src/exiv2.cpp:338 +msgid "" +" -M cmd Command line for the modify action. The format for the\n" +" commands is the same as that of the lines of a command file.\n" +msgstr "" + +#: src/exiv2.cpp:340 +msgid "" +" -l dir Location (directory) for files to be inserted from or extracted " +"to.\n" +msgstr "" + +#: src/exiv2.cpp:341 +msgid "" +" -S .suf Use suffix .suf for source files for insert command.\n" +"\n" +msgstr "" + +#: src/exiv2.cpp:379 src/exiv2.cpp:409 src/exiv2.cpp:433 src/exiv2.cpp:482 +#: src/exiv2.cpp:541 src/exiv2.cpp:730 +#, fuzzy +msgid "Option" +msgstr "Optio S5n" + +#: src/exiv2.cpp:380 +msgid "requires an argument\n" +msgstr "" + +#: src/exiv2.cpp:384 +msgid "Unrecognized option" +msgstr "" + +#: src/exiv2.cpp:390 +msgid "getopt returned unexpected character code" +msgstr "" + +#: src/exiv2.cpp:410 +#, fuzzy +msgid "Invalid argument" +msgstr "Khóa không hợp lệ" + +#: src/exiv2.cpp:434 +#, fuzzy +msgid "Invalid regexp" +msgstr "Khóa không hợp lệ" + +#: src/exiv2.cpp:473 src/exiv2.cpp:526 +msgid "Ignoring surplus option" +msgstr "" + +#: src/exiv2.cpp:483 src/exiv2.cpp:543 src/exiv2.cpp:731 +msgid "is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:498 +msgid "Ignoring surplus option -a" +msgstr "" + +#: src/exiv2.cpp:504 +msgid "Error parsing -a option argument" +msgstr "" + +#: src/exiv2.cpp:511 +msgid "Option -a is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:533 +msgid "Error parsing" +msgstr "" + +#: src/exiv2.cpp:535 +#, fuzzy +msgid "option argument" +msgstr "Tên vị trí" + +#: src/exiv2.cpp:568 +msgid "Unrecognized print mode" +msgstr "" + +#: src/exiv2.cpp:576 +msgid "Ignoring surplus option -p" +msgstr "" + +#: src/exiv2.cpp:580 +msgid "Option -p is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:611 +msgid "Unrecognized print item" +msgstr "" + +#: src/exiv2.cpp:620 +msgid "Ignoring surplus option -P" +msgstr "" + +#: src/exiv2.cpp:624 +msgid "Option -P is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:651 +msgid "Option -d is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:679 +msgid "Option -e is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:707 +msgid "Option -i is not compatible with a previous option\n" +msgstr "" + +#: src/exiv2.cpp:748 +msgid "Action adjust is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:757 +msgid "Action print is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:766 +msgid "Action delete is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:777 +msgid "Action extract is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:788 +msgid "Action insert is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:797 +msgid "Action rename is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:806 +msgid "Action modify is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:815 +msgid "Action fixiso is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:824 +msgid "Action fixcom is not compatible with the given options\n" +msgstr "" + +#: src/exiv2.cpp:895 +msgid "An action must be specified\n" +msgstr "" + +#: src/exiv2.cpp:904 +msgid "Adjust action requires at least one -a, -Y, -O or -D option\n" +msgstr "" + +#: src/exiv2.cpp:910 +msgid "Modify action requires at least one -c, -m or -M option\n" +msgstr "" + +#: src/exiv2.cpp:914 +msgid "At least one file is required\n" +msgstr "" + +#: src/exiv2.cpp:920 +msgid "Error parsing -m option arguments\n" +msgstr "" + +#: src/exiv2.cpp:927 +msgid "Error parsing -M option arguments\n" +msgstr "" + +#: src/exiv2.cpp:938 +msgid "-l option can only be used with extract or insert actions\n" +msgstr "" + +#: src/exiv2.cpp:943 +msgid "-S option can only be used with insert action\n" +msgstr "" + +#: src/exiv2.cpp:948 +msgid "-t option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:953 +msgid "-T option can only be used with rename action\n" +msgstr "" + +#: src/exiv2.cpp:1038 +msgid "Unrecognized " +msgstr "" + +#: src/exiv2.cpp:1039 +#, fuzzy +msgid "target" +msgstr "Lá»›n" + +#: src/exiv2.cpp:1065 +#, fuzzy +msgid "Invalid preview number" +msgstr "Dãy số bên trong" + +#: src/exiv2.cpp:1097 +#, fuzzy +msgid "Failed to open command file for reading\n" +msgstr "Thất bại khi mở tập tin\n" + +#: src/exiv2.cpp:1110 +#, fuzzy +msgid "line" +msgstr "Tiêu Ä‘á»" + +#: src/exiv2.cpp:1133 +#, fuzzy +msgid "-M option" +msgstr "Tuỳ chá»n T4" + +#: src/exiv2.cpp:1180 +#, fuzzy +msgid "Invalid command line:" +msgstr "Dòng lệnh khong6 hợp lệ" + +#: src/exiv2.cpp:1187 +msgid "Invalid command" +msgstr "Lệnh không hợp lệ" + +#: src/exiv2.cpp:1219 +msgid "Invalid key" +msgstr "Khóa không hợp lệ" + +#: src/exiv2.cpp:1239 src/exiv2.cpp:1251 +msgid "Invalid command line" +msgstr "Dòng lệnh khong6 hợp lệ" + +#: src/fujimn.cpp:62 +#, fuzzy +msgid "Soft mode 1" +msgstr "Chế độ chụp" + +#: src/fujimn.cpp:63 +#, fuzzy +msgid "Soft mode 2" +msgstr "Chế độ chụp" + +#: src/fujimn.cpp:65 +#, fuzzy +msgid "Hard mode 1" +msgstr "Chế độ chụp cận cảnh" + +#: src/fujimn.cpp:66 +#, fuzzy +msgid "Hard mode 2" +msgstr "Chế độ chụp cận cảnh" + +#: src/fujimn.cpp:74 +msgid "Fluorescent (daylight)" +msgstr "Huỳnh quang (Ãnh sáng ngày)" + +#: src/fujimn.cpp:75 +msgid "Fluorescent (warm white)" +msgstr "Huỳnh quang (Trắng ấm)" + +#: src/fujimn.cpp:76 +msgid "Fluorescent (cool white)" +msgstr "Huỳnh quang (Trắng lạnh)" + +#: src/fujimn.cpp:77 src/nikonmn.cpp:454 src/sonymn.cpp:219 +msgid "Incandescent" +msgstr "" + +#: src/fujimn.cpp:87 src/fujimn.cpp:88 +#, fuzzy +msgid "None (black & white)" +msgstr "Äen và trắng" + +#: src/fujimn.cpp:103 src/fujimn.cpp:104 src/minoltamn.cpp:210 +msgid "Red-eye reduction" +msgstr "Giảm mắt-Ä‘á»" + +#: src/fujimn.cpp:119 src/tags.cpp:1511 src/tags.cpp:1512 +msgid "Night scene" +msgstr "Cảnh ban đêm" + +#: src/fujimn.cpp:120 src/pentaxmn.cpp:616 src/pentaxmn.cpp:623 +#: src/sonymn.cpp:567 +#, fuzzy +msgid "Program AE" +msgstr "Chương trình" + +#: src/fujimn.cpp:121 +msgid "Natural light" +msgstr "Ãnh sáng tá»± nhiên" + +#: src/fujimn.cpp:122 +msgid "Anti-blur" +msgstr "Chống-má»" + +#: src/fujimn.cpp:123 src/minoltamn.cpp:314 src/minoltamn.cpp:844 +#: src/minoltamn.cpp:1941 src/minoltamn.cpp:2090 src/olympusmn.cpp:108 +#: src/panasonicmn.cpp:141 src/pentaxmn.cpp:594 src/pentaxmn.cpp:603 +#: src/sonymn.cpp:528 src/sonymn.cpp:574 +msgid "Sunset" +msgstr "" + +#: src/fujimn.cpp:124 src/olympusmn.cpp:113 src/pentaxmn.cpp:598 +msgid "Museum" +msgstr "Bảo tàng" + +#: src/fujimn.cpp:125 src/panasonicmn.cpp:128 +msgid "Party" +msgstr "Tiệc" + +#: src/fujimn.cpp:126 +msgid "Flower" +msgstr "Hoa" + +#: src/fujimn.cpp:127 src/minoltamn.cpp:312 src/minoltamn.cpp:402 +#: src/minoltamn.cpp:2088 src/pentaxmn.cpp:593 +msgid "Text" +msgstr "Văn bản" + +#: src/fujimn.cpp:128 +msgid "Natural light & flash" +msgstr "Ãnh sáng tá»± nhiên và đèn chá»›p" + +#: src/fujimn.cpp:133 src/olympusmn.cpp:484 src/sonymn.cpp:568 +#, fuzzy +msgid "Aperture-priority AE" +msgstr "Ưu tiên khẩu độ" + +#: src/fujimn.cpp:134 src/olympusmn.cpp:485 src/sonymn.cpp:569 +#, fuzzy +msgid "Shutter speed priority AE" +msgstr "Ưu tiên tốc độ" + +#: src/fujimn.cpp:142 +#, fuzzy +msgid "No flash & flash" +msgstr "Không đèn chá»›p" + +#: src/fujimn.cpp:148 +msgid "Chrome" +msgstr "" + +#: src/fujimn.cpp:155 src/minoltamn.cpp:917 src/minoltamn.cpp:931 +#: src/minoltamn.cpp:1989 src/panasonicmn.cpp:274 +msgid "Wide" +msgstr "Rá»™ng" + +#: src/fujimn.cpp:160 +#, fuzzy +msgid "F0/Standard" +msgstr "Tiêu chuẩn" + +#: src/fujimn.cpp:161 +#, fuzzy +msgid "F1/Studio portrait" +msgstr "Chân dung đêm" + +#: src/fujimn.cpp:162 +msgid "F2/Fujichrome" +msgstr "" + +#: src/fujimn.cpp:163 +msgid "F3/Studio portrait Ex" +msgstr "" + +#: src/fujimn.cpp:164 +msgid "F4/Velvia" +msgstr "" + +#: src/fujimn.cpp:169 +msgid "Auto (100-400%)" +msgstr "Tá»± động (100-400%)" + +#: src/fujimn.cpp:170 src/minoltamn.cpp:74 src/minoltamn.cpp:242 +#: src/minoltamn.cpp:673 src/minoltamn.cpp:859 src/minoltamn.cpp:2109 +#: src/olympusmn.cpp:74 src/panasonicmn.cpp:59 +msgid "Raw" +msgstr "Nguyên gốc" + +#: src/fujimn.cpp:171 +msgid "Standard (100%)" +msgstr "Tiêu chuẩn (100%)" + +#: src/fujimn.cpp:172 +msgid "Wide mode 1 (230%)" +msgstr "Chế độ góc rá»™ng 1 (230%)" + +#: src/fujimn.cpp:173 +msgid "Wide mode 2 (400%)" +msgstr "Chế độ góc rá»™ng 2 (400%)" + +#: src/fujimn.cpp:174 +#, fuzzy +msgid "Film simulation mode" +msgstr "Chế độ phim" + +#: src/fujimn.cpp:179 src/nikonmn.cpp:215 src/nikonmn.cpp:532 +#: src/nikonmn.cpp:654 src/nikonmn.cpp:699 src/nikonmn.cpp:863 +#: src/nikonmn.cpp:887 src/nikonmn.cpp:908 src/nikonmn.cpp:1023 +#: src/nikonmn.cpp:1045 src/nikonmn.cpp:1065 src/nikonmn.cpp:1085 +#: src/nikonmn.cpp:1098 src/nikonmn.cpp:1157 src/nikonmn.cpp:1217 +#: src/nikonmn.cpp:1247 src/nikonmn.cpp:1267 src/nikonmn.cpp:1280 +#: src/nikonmn.cpp:1293 src/nikonmn.cpp:1306 src/nikonmn.cpp:1319 +#: src/nikonmn.cpp:1332 src/nikonmn.cpp:1345 src/nikonmn.cpp:1364 +#: src/nikonmn.cpp:1389 src/panasonicmn.cpp:725 src/pentaxmn.cpp:1145 +#: src/properties.cpp:495 +msgid "Version" +msgstr "Phiên bản" + +#: src/fujimn.cpp:180 +#, fuzzy +msgid "Fujifilm Makernote version" +msgstr "Firmware Version" + +#: src/fujimn.cpp:183 src/panasonicmn.cpp:455 +msgid "" +"This number is unique, and contains the date of manufacture, but is not the " +"same as the number printed on the camera body." +msgstr "" + +#: src/fujimn.cpp:187 src/nikonmn.cpp:225 src/nikonmn.cpp:466 +#: src/nikonmn.cpp:535 src/olympusmn.cpp:199 +msgid "Image quality setting" +msgstr "Tùy chỉnh chất lượng hình ảnh" + +#: src/fujimn.cpp:195 src/nikonmn.cpp:428 +msgid "Color" +msgstr "Màu sắc" + +#: src/fujimn.cpp:196 +#, fuzzy +msgid "Chroma saturation setting" +msgstr "Tùy chỉnh độ tương phản" + +#: src/fujimn.cpp:198 +msgid "Tone" +msgstr "Tông" + +#: src/fujimn.cpp:202 +msgid "Flash firing mode setting" +msgstr "Tùy chỉnh chế độ mở đèn chá»›p" + +#: src/fujimn.cpp:204 +msgid "Flash Strength" +msgstr "Äá»™ mạnh đèn chá»›p" + +#: src/fujimn.cpp:205 +#, fuzzy +msgid "Flash firing strength compensation setting" +msgstr "Tùy chỉnh chế độ mở đèn chá»›p" + +#: src/fujimn.cpp:208 +#, fuzzy +msgid "Macro mode setting" +msgstr "Tùy chỉnh chế độ đèn chá»›p" + +#: src/fujimn.cpp:211 +#, fuzzy +msgid "Focusing mode setting" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/fujimn.cpp:216 +#, fuzzy +msgid "Slow Sync" +msgstr "Äồng bá»™ chậm" + +#: src/fujimn.cpp:217 +#, fuzzy +msgid "Slow synchro mode setting" +msgstr "Tùy chỉnh chế độ đèn chá»›p" + +#: src/fujimn.cpp:219 src/olympusmn.cpp:696 src/olympusmn.cpp:898 +#, fuzzy +msgid "Picture Mode" +msgstr "Chế độ ảnh" + +#: src/fujimn.cpp:220 +#, fuzzy +msgid "Picture mode setting" +msgstr "Chế độ ảnh bão hòa" + +#: src/fujimn.cpp:226 +msgid "Continuous shooting or auto bracketing setting" +msgstr "" + +#: src/fujimn.cpp:228 src/panasonicmn.cpp:461 src/sonymn.cpp:463 +#, fuzzy +msgid "Sequence Number" +msgstr "Chuá»—i số" + +#: src/fujimn.cpp:229 src/olympusmn.cpp:1165 src/panasonicmn.cpp:461 +#, fuzzy +msgid "Sequence number" +msgstr "Tập tin số" + +#: src/fujimn.cpp:234 +msgid "FinePix Color" +msgstr "" + +#: src/fujimn.cpp:235 +msgid "Fuji FinePix color setting" +msgstr "" + +#: src/fujimn.cpp:237 +msgid "Blur Warning" +msgstr "Cảnh báo nhòe" + +#: src/fujimn.cpp:238 +msgid "Blur warning status" +msgstr "Tình trạng cảnh báo nhòe" + +#: src/fujimn.cpp:240 +msgid "Focus Warning" +msgstr "Cảnh báo lấy nét" + +#: src/fujimn.cpp:241 +#, fuzzy +msgid "Auto Focus warning status" +msgstr "Tình trạng cảnh báo nhòe" + +#: src/fujimn.cpp:243 +msgid "Exposure Warning" +msgstr "Cảnh báo phÆ¡i sáng" + +#: src/fujimn.cpp:244 +#, fuzzy +msgid "Auto exposure warning status" +msgstr "Tình trạng cảnh báo nhòe" + +#: src/fujimn.cpp:246 +msgid "Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:247 +#, fuzzy +msgid "Dynamic range" +msgstr "Sặc sỡ (màu sắc)" + +#: src/fujimn.cpp:249 src/panasonicmn.cpp:482 +msgid "Film Mode" +msgstr "Chế độ Phim" + +#: src/fujimn.cpp:250 src/panasonicmn.cpp:482 +msgid "Film mode" +msgstr "Chế độ phim" + +#: src/fujimn.cpp:252 +#, fuzzy +msgid "Dynamic Range Setting" +msgstr "Tùy chỉnh máy ảnh" + +#: src/fujimn.cpp:253 +#, fuzzy +msgid "Dynamic range settings" +msgstr "Tùy chỉnh máy ảnh" + +#: src/fujimn.cpp:255 +msgid "Development Dynamic Range" +msgstr "" + +#: src/fujimn.cpp:256 +msgid "Development dynamic range" +msgstr "" + +#: src/fujimn.cpp:258 +msgid "Minimum Focal Length" +msgstr "Khoảng Tiêu cá»± Tối thiểu" + +#: src/fujimn.cpp:259 +msgid "Minimum focal length" +msgstr "Khoảng tiêu cá»± tối thiểu" + +#: src/fujimn.cpp:261 +msgid "Maximum Focal Length" +msgstr "Khoảng Tiêu cá»± Tối Ä‘a" + +#: src/fujimn.cpp:262 +msgid "Maximum focal length" +msgstr "Khoảng tiêu cá»± tối thiểu" + +#: src/fujimn.cpp:264 +#, fuzzy +msgid "Maximum Aperture at Minimum Focal" +msgstr "Khẩu độ Tối Ä‘a tai Tiêu cá»± Tối thiểu" + +#: src/fujimn.cpp:265 +#, fuzzy +msgid "Maximum aperture at minimum focal" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/fujimn.cpp:267 +#, fuzzy +msgid "Maximum Aperture at Maximum Focal" +msgstr "Khẩu độ Tối Ä‘a tại Tiêu cá»± Tối Ä‘a" + +#: src/fujimn.cpp:268 +#, fuzzy +msgid "Maximum aperture at maximum focal" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± tối Ä‘a" + +#: src/fujimn.cpp:270 src/properties.cpp:602 src/tags.cpp:1766 +msgid "File Source" +msgstr "Tập tin Nguồn" + +#: src/fujimn.cpp:271 +msgid "File source" +msgstr "Nguồn tập tin" + +#: src/fujimn.cpp:273 +msgid "Order Number" +msgstr "Số Thứ tá»±" + +#: src/fujimn.cpp:274 +msgid "Order number" +msgstr "Số thứ tá»±" + +#: src/fujimn.cpp:276 +msgid "Frame Number" +msgstr "Số Khung hình" + +#: src/fujimn.cpp:277 src/pentaxmn.cpp:1257 src/pentaxmn.cpp:1258 +msgid "Frame number" +msgstr "Số khung hình" + +#: src/fujimn.cpp:281 +#, fuzzy +msgid "Unknown FujiMakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/minoltamn.cpp:56 +msgid "Natural Color" +msgstr "Màu sắc tá»± nhiên" + +#: src/minoltamn.cpp:58 src/minoltamn.cpp:1938 +#, fuzzy +msgid "Vivid Color" +msgstr "Không gian màu phim" + +#: src/minoltamn.cpp:59 src/minoltamn.cpp:358 +#, fuzzy +msgid "Solarization" +msgstr "Thể thao hành động" + +#: src/minoltamn.cpp:60 src/minoltamn.cpp:1944 +msgid "AdobeRGB" +msgstr "" + +#: src/minoltamn.cpp:62 src/minoltamn.cpp:946 src/olympusmn.cpp:617 +#: src/olympusmn.cpp:860 src/panasonicmn.cpp:261 src/panasonicmn.cpp:371 +#: src/pentaxmn.cpp:969 +msgid "Natural" +msgstr "Tá»± nhiên" + +#: src/minoltamn.cpp:64 +#, fuzzy +msgid "Natural sRGB" +msgstr "Tá»± nhiên" + +#: src/minoltamn.cpp:65 +#, fuzzy +msgid "Natural+ sRGB" +msgstr "Tá»± nhiên+" + +#: src/minoltamn.cpp:67 +msgid "Evening" +msgstr "Buổi chiá»u" + +#: src/minoltamn.cpp:69 src/minoltamn.cpp:952 src/minoltamn.cpp:2093 +#: src/sonymn.cpp:575 +msgid "Night Portrait" +msgstr "Chân dung ban đêm" + +#: src/minoltamn.cpp:75 src/minoltamn.cpp:2110 +#, fuzzy +msgid "Super Fine" +msgstr "Siêutốt" + +#: src/minoltamn.cpp:79 src/minoltamn.cpp:2056 src/minoltamn.cpp:2114 +#: src/sonymn.cpp:182 +msgid "Extra Fine" +msgstr "" + +#: src/minoltamn.cpp:90 +#, fuzzy +msgid "Makernote Version" +msgstr "Mẫu phiên bản" + +#: src/minoltamn.cpp:91 +msgid "String 'MLT0' (not null terminated)" +msgstr "" + +#: src/minoltamn.cpp:93 +msgid "Camera Settings (Std Old)" +msgstr "Tùy chỉnh máy ảnh (Std Old)" + +#: src/minoltamn.cpp:94 +msgid "" +"Standard Camera settings (Old Camera models like D5, D7, S304, and S404)" +msgstr "" +"Tùy chỉnh các máy ảnh tiêu chuẩn (Máy ảnh cÅ© như D5, D7, S304, và S404)" + +#: src/minoltamn.cpp:96 +msgid "Camera Settings (Std New)" +msgstr "Tùy chỉnh máy ảnh (Std New)" + +#: src/minoltamn.cpp:97 +msgid "Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)" +msgstr "Tùy chỉnh máy ảnh tiêu chuẩn (Kiểu máy ảnh má»›i như D7u, D7i, and D7hi)" + +#: src/minoltamn.cpp:99 +msgid "Camera Settings (7D)" +msgstr "Tùy chỉnh máy ảnh (7D)" + +#: src/minoltamn.cpp:100 +msgid "Camera Settings (for Dynax 7D model)" +msgstr "Tùy chỉnh máy ảnh (cho Dynax mẫu 7D)" + +#: src/minoltamn.cpp:102 +msgid "Image Stabilization Data" +msgstr "Dữ liệu á»”n định Hình ảnh" + +#: src/minoltamn.cpp:103 +msgid "Image stabilization data" +msgstr "Dữ liệu ổn định hình ảnh" + +#: src/minoltamn.cpp:107 +msgid "WB Info A100" +msgstr "" + +#: src/minoltamn.cpp:108 +msgid "White balance information for the Sony DSLR-A100" +msgstr "" + +#: src/minoltamn.cpp:111 +#, fuzzy +msgid "Compressed Image Size" +msgstr "Kích cỡ hình Sony" + +#: src/minoltamn.cpp:112 +#, fuzzy +msgid "Compressed image size" +msgstr "Kích cỡ hình ảnh gốc" + +#: src/minoltamn.cpp:115 +msgid "Jpeg thumbnail 640x480 pixels" +msgstr "" + +#: src/minoltamn.cpp:117 src/olympusmn.cpp:429 +#, fuzzy +msgid "Thumbnail Offset" +msgstr "Ảnh thu nhá»" + +#: src/minoltamn.cpp:118 +#, fuzzy +msgid "Offset of the thumbnail" +msgstr "Kích cỡ cá»§a hình thu nhá»" + +#: src/minoltamn.cpp:120 src/olympusmn.cpp:432 src/properties.cpp:1342 +#, fuzzy +msgid "Thumbnail Length" +msgstr "Ảnh thu nhá»" + +#: src/minoltamn.cpp:121 +msgid "Size of the thumbnail" +msgstr "Kích cỡ cá»§a hình thu nhá»" + +#: src/minoltamn.cpp:123 src/minoltamn.cpp:124 src/nikonmn.cpp:581 +#: src/olympusmn.cpp:252 src/olympusmn.cpp:690 src/panasonicmn.cpp:534 +#: src/sonymn.cpp:412 src/sonymn.cpp:413 +#, fuzzy +msgid "Scene Mode" +msgstr "Chế độ quét CCD" + +#: src/minoltamn.cpp:128 src/minoltamn.cpp:1410 src/nikonmn.cpp:221 +#: src/nikonmn.cpp:468 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +#: src/properties.cpp:1079 src/sonymn.cpp:430 src/sonymn.cpp:431 +msgid "Color Mode" +msgstr "Chế độ Màu" + +#: src/minoltamn.cpp:129 src/minoltamn.cpp:1411 src/nikonmn.cpp:222 +#: src/nikonmn.cpp:469 src/nikonmn.cpp:534 src/panasonicmn.cpp:468 +msgid "Color mode" +msgstr "Chế độ màu" + +#: src/minoltamn.cpp:132 src/minoltamn.cpp:502 src/minoltamn.cpp:747 +#: src/minoltamn.cpp:994 src/panasonicmn.cpp:441 src/sonymn.cpp:323 +msgid "Image Quality" +msgstr "Chất lượng Hình ảnh" + +#: src/minoltamn.cpp:137 src/minoltamn.cpp:138 +msgid "0x0103" +msgstr "0x0103" + +#: src/minoltamn.cpp:141 src/minoltamn.cpp:583 src/olympusmn.cpp:677 +#: src/sonymn.cpp:326 +#, fuzzy +msgid "Flash Exposure Compensation" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:142 src/minoltamn.cpp:584 src/sonymn.cpp:327 +#, fuzzy +msgid "Flash exposure compensation in EV" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:144 src/minoltamn.cpp:145 src/sonymn.cpp:329 +#: src/sonymn.cpp:330 +msgid "Teleconverter Model" +msgstr "" + +#: src/minoltamn.cpp:150 +msgid "RAW+JPG Recording" +msgstr "" + +#: src/minoltamn.cpp:151 +msgid "RAW and JPG files recording" +msgstr "" + +#: src/minoltamn.cpp:153 src/sonymn.cpp:415 src/sonymn.cpp:416 +msgid "Zone Matching" +msgstr "" + +#: src/minoltamn.cpp:154 +msgid "Zone matching" +msgstr "" + +#: src/minoltamn.cpp:157 src/minoltamn.cpp:787 src/minoltamn.cpp:1043 +#: src/minoltamn.cpp:1480 src/minoltamn.cpp:1582 src/pentaxmn.cpp:1315 +#: src/pentaxmn.cpp:1316 +msgid "Color temperature" +msgstr "Nhiệt độ màu" + +#: src/minoltamn.cpp:159 src/sonymn.cpp:424 +#, fuzzy +msgid "Lens ID" +msgstr "Thông tin ống kính" + +#: src/minoltamn.cpp:160 src/sonymn.cpp:425 +msgid "Lens identifier" +msgstr "" + +#: src/minoltamn.cpp:162 src/minoltamn.cpp:1482 src/minoltamn.cpp:1584 +#: src/sonymn.cpp:409 +#, fuzzy +msgid "Color Compensation Filter" +msgstr "Giá trị bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:163 src/sonymn.cpp:410 +msgid "Color Compensation Filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:165 src/minoltamn.cpp:1476 src/properties.cpp:1384 +#: src/sonymn.cpp:332 src/sonymn.cpp:612 src/sonymn.cpp:613 +#, fuzzy +msgid "White Balance Fine Tune" +msgstr "Bảng cân bằng trắng" + +#: src/minoltamn.cpp:166 src/sonymn.cpp:333 +#, fuzzy +msgid "White Balance Fine Tune Value" +msgstr "Giá trị Cân bằng Sáng" + +#: src/minoltamn.cpp:168 +#, fuzzy +msgid "Image Stabilization A100" +msgstr "á»”n định hình ảnh" + +#: src/minoltamn.cpp:169 +#, fuzzy +msgid "Image Stabilization for the Sony DSLR-A100" +msgstr "Dữ liệu á»”n định Hình ảnh" + +#: src/minoltamn.cpp:173 +#, fuzzy +msgid "Camera Settings (5D)" +msgstr "Tùy chỉnh máy ảnh (7D)" + +#: src/minoltamn.cpp:174 +#, fuzzy +msgid "Camera Settings (for Dynax 5D model)" +msgstr "Tùy chỉnh máy ảnh (cho Dynax mẫu 7D)" + +#: src/minoltamn.cpp:180 src/nikonmn.cpp:615 src/olympusmn.cpp:258 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:344 +msgid "Print IM" +msgstr "" + +#: src/minoltamn.cpp:181 src/nikonmn.cpp:615 src/olympusmn.cpp:259 +#: src/panasonicmn.cpp:531 src/sonymn.cpp:345 +#, fuzzy +msgid "PrintIM information" +msgstr "Thông tin GPS" + +#: src/minoltamn.cpp:183 +#, fuzzy +msgid "Camera Settings (Z1)" +msgstr "Tùy chỉnh máy ảnh (7D)" + +#: src/minoltamn.cpp:184 +#, fuzzy +msgid "Camera Settings (for Z1, DImage X, and F100 models)" +msgstr "Tùy chỉnh máy ảnh (cho Dynax mẫu 7D)" + +#: src/minoltamn.cpp:188 +#, fuzzy +msgid "Unknown Minolta MakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/minoltamn.cpp:202 src/minoltamn.cpp:656 src/minoltamn.cpp:836 +#: src/panasonicmn.cpp:116 src/sigmamn.cpp:155 src/sonymn.cpp:152 +#: src/tags.cpp:1411 +msgid "Aperture priority" +msgstr "Ưu tiên khẩu độ" + +#: src/minoltamn.cpp:203 src/minoltamn.cpp:657 src/minoltamn.cpp:837 +#: src/sigmamn.cpp:156 src/sonymn.cpp:153 src/tags.cpp:1412 +msgid "Shutter priority" +msgstr "Ưu tiên tốc độ" + +#: src/minoltamn.cpp:209 src/minoltamn.cpp:1126 +#, fuzzy +msgid "Fill flash" +msgstr "Không đèn chá»›p" + +#: src/minoltamn.cpp:211 src/minoltamn.cpp:1124 +#, fuzzy +msgid "Rear flash sync" +msgstr "Nảy đèn nháy bên ngoài" + +#: src/minoltamn.cpp:212 src/minoltamn.cpp:1125 +msgid "Wireless" +msgstr "Không dây" + +#: src/minoltamn.cpp:224 +#, fuzzy +msgid "Fluorescent 2" +msgstr "Huỳnh quang (Ãnh sáng ngày)" + +#: src/minoltamn.cpp:231 +msgid "Full size" +msgstr "Kích cỡ đầy đủ" + +#: src/minoltamn.cpp:243 +#, fuzzy +msgid "Super fine" +msgstr "Siêutốt" + +#: src/minoltamn.cpp:247 +msgid "Extra fine" +msgstr "" + +#: src/minoltamn.cpp:252 src/minoltamn.cpp:1103 src/minoltamn.cpp:1152 +#: src/sonymn.cpp:496 +msgid "Single Frame" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:254 src/minoltamn.cpp:1154 src/nikonmn.cpp:154 +msgid "Self-timer" +msgstr "" + +#: src/minoltamn.cpp:255 +#, fuzzy +msgid "Bracketing" +msgstr "Äánh giá" + +#: src/minoltamn.cpp:256 +#, fuzzy +msgid "Interval" +msgstr "Äèn chá»›p trong máy" + +#: src/minoltamn.cpp:257 +#, fuzzy +msgid "UHS continuous" +msgstr "Liên tục" + +#: src/minoltamn.cpp:258 +#, fuzzy +msgid "HS continuous" +msgstr "Liên tục" + +#: src/minoltamn.cpp:263 src/minoltamn.cpp:881 src/minoltamn.cpp:1131 +#: src/sonymn.cpp:517 src/tags.cpp:1426 +#, fuzzy +msgid "Multi-segment" +msgstr "Äa phân vùng" + +#: src/minoltamn.cpp:264 src/minoltamn.cpp:1132 src/sonymn.cpp:518 +#: src/tags.cpp:1423 +msgid "Center weighted average" +msgstr "" + +#: src/minoltamn.cpp:271 +msgid "Electronic magnification" +msgstr "" + +#: src/minoltamn.cpp:285 src/minoltamn.cpp:704 src/minoltamn.cpp:2004 +#: src/nikonmn.cpp:100 src/nikonmn.cpp:809 src/nikonmn.cpp:824 +#: src/pentaxmn.cpp:290 +#, fuzzy +msgid "Top" +msgstr "Trên" + +#: src/minoltamn.cpp:286 src/minoltamn.cpp:705 src/pentaxmn.cpp:308 +#, fuzzy +msgid "Top-right" +msgstr "Bản quyá»n" + +#: src/minoltamn.cpp:288 src/minoltamn.cpp:707 src/pentaxmn.cpp:314 +#, fuzzy +msgid "Bottom-right" +msgstr "dưới, phải" + +#: src/minoltamn.cpp:289 src/minoltamn.cpp:708 src/minoltamn.cpp:2008 +#: src/nikonmn.cpp:101 src/nikonmn.cpp:810 src/nikonmn.cpp:825 +#: src/pentaxmn.cpp:298 +#, fuzzy +msgid "Bottom" +msgstr "Dưới" + +#: src/minoltamn.cpp:290 src/minoltamn.cpp:709 src/pentaxmn.cpp:312 +#, fuzzy +msgid "Bottom-left" +msgstr "dưới, trái" + +#: src/minoltamn.cpp:292 src/minoltamn.cpp:711 src/pentaxmn.cpp:306 +#, fuzzy +msgid "Top-left" +msgstr "trên, trái" + +#: src/minoltamn.cpp:303 src/olympusmn.cpp:163 src/pentaxmn.cpp:472 +#: src/tags.cpp:1528 +msgid "Hard" +msgstr "" + +#: src/minoltamn.cpp:305 src/olympusmn.cpp:164 src/pentaxmn.cpp:470 +#: src/tags.cpp:1527 +#, fuzzy +msgid "Soft" +msgstr "Phần má»m" + +#: src/minoltamn.cpp:313 src/panasonicmn.cpp:114 +msgid "Night portrait" +msgstr "Chân dung đêm" + +#: src/minoltamn.cpp:315 +msgid "Sports action" +msgstr "Thể thao hành động" + +#: src/minoltamn.cpp:344 +msgid "Time-lapse movie" +msgstr "" + +#: src/minoltamn.cpp:349 +#, fuzzy +msgid "Standard form" +msgstr "Tiêu chuẩn" + +#: src/minoltamn.cpp:350 +#, fuzzy +msgid "Data form" +msgstr "Äịnh dạng hiển thị ngày" + +#: src/minoltamn.cpp:355 +msgid "Natural color" +msgstr "Màu tá»± nhiên" + +#: src/minoltamn.cpp:356 src/panasonicmn.cpp:73 src/panasonicmn.cpp:200 +msgid "Black and white" +msgstr "Äen và trắng" + +#: src/minoltamn.cpp:357 +msgid "Vivid color" +msgstr "" + +#: src/minoltamn.cpp:364 +#, fuzzy +msgid "No zone" +msgstr "Vùng bên trái" + +#: src/minoltamn.cpp:365 +msgid "Center zone (horizontal orientation)" +msgstr "" + +#: src/minoltamn.cpp:366 +msgid "Center zone (vertical orientation)" +msgstr "" + +#: src/minoltamn.cpp:367 +msgid "Left zone" +msgstr "Vùng bên trái" + +#: src/minoltamn.cpp:368 +msgid "Right zone" +msgstr "Vùng bên phải" + +#: src/minoltamn.cpp:373 src/olympusmn.cpp:1006 +msgid "Auto focus" +msgstr "Lấy nét tá»± động" + +#: src/minoltamn.cpp:379 +msgid "Wide focus (normal)" +msgstr "lấy nét rá»™ng (bình thưá»ng)" + +#: src/minoltamn.cpp:380 +#, fuzzy +msgid "Spot focus" +msgstr "Lấy nét tá»± động" + +#: src/minoltamn.cpp:385 src/properties.cpp:477 src/sigmamn.cpp:86 +#: src/sigmamn.cpp:87 +msgid "Exposure" +msgstr "PhÆ¡i sáng" + +#: src/minoltamn.cpp:388 +msgid "Filter" +msgstr "Lá»c" + +#: src/minoltamn.cpp:393 +#, fuzzy +msgid "Not embedded" +msgstr "chưa được sá»­ dụng" + +#: src/minoltamn.cpp:394 +msgid "Embedded" +msgstr "" + +#: src/minoltamn.cpp:403 +msgid "Text + ID#" +msgstr "" + +#: src/minoltamn.cpp:408 +msgid "ADI (Advanced Distance Integration)" +msgstr "" + +#: src/minoltamn.cpp:409 +msgid "Pre-flash TTl" +msgstr "" + +#: src/minoltamn.cpp:410 +msgid "Manual flash control" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/minoltamn.cpp:490 src/minoltamn.cpp:741 src/minoltamn.cpp:988 +#: src/minoltamn.cpp:1356 src/olympusmn.cpp:665 src/properties.cpp:606 +#: src/sigmamn.cpp:74 src/sonymn.cpp:442 src/sonymn.cpp:443 src/tags.cpp:1787 +msgid "Exposure Mode" +msgstr "Chế độ phÆ¡i sáng" + +#: src/minoltamn.cpp:494 src/minoltamn.cpp:763 src/olympusmn.cpp:280 +#: src/olympusmn.cpp:676 src/pentaxmn.cpp:1176 +msgid "Flash mode" +msgstr "Chế độ đèn chá»›p" + +#: src/minoltamn.cpp:506 src/minoltamn.cpp:1432 src/olympusmn.cpp:706 +#: src/pentaxmn.cpp:1271 src/pentaxmn.cpp:1272 src/sigmamn.cpp:60 +#, fuzzy +msgid "Drive mode" +msgstr "Chế độ ảnh" + +#: src/minoltamn.cpp:512 +msgid "ISO Value" +msgstr "Giá trị nhạy sáng" + +#: src/minoltamn.cpp:514 src/minoltamn.cpp:797 src/minoltamn.cpp:1027 +#: src/minoltamn.cpp:1371 src/properties.cpp:573 src/properties.cpp:1147 +#: src/tags.cpp:789 src/tags.cpp:1549 +msgid "Exposure Time" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/minoltamn.cpp:517 src/minoltamn.cpp:794 src/minoltamn.cpp:1030 +#: src/minoltamn.cpp:1374 src/minoltamn.cpp:1375 src/tags.cpp:790 +#: src/tags.cpp:1552 +#, fuzzy +msgid "FNumber" +msgstr "Số F" + +#: src/minoltamn.cpp:518 src/minoltamn.cpp:795 src/minoltamn.cpp:1031 +#, fuzzy +msgid "The F-Number" +msgstr "Số F" + +#: src/minoltamn.cpp:520 src/olympusmn.cpp:669 +#, fuzzy +msgid "Macro Mode" +msgstr "Chế độ chụp cận cảnh" + +#: src/minoltamn.cpp:526 src/minoltamn.cpp:768 src/minoltamn.cpp:1048 +#: src/properties.cpp:1145 +msgid "Exposure Compensation" +msgstr "Bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:529 +msgid "Bracket Step" +msgstr "" + +#: src/minoltamn.cpp:530 +msgid "Bracket step" +msgstr "" + +#: src/minoltamn.cpp:532 +#, fuzzy +msgid "Interval Length" +msgstr "Tiêu cá»±" + +#: src/minoltamn.cpp:533 +#, fuzzy +msgid "Interval length" +msgstr "Äèn chá»›p trong máy" + +#: src/minoltamn.cpp:535 +#, fuzzy +msgid "Interval Number" +msgstr "Chuá»—i số" + +#: src/minoltamn.cpp:536 +#, fuzzy +msgid "Interval number" +msgstr "Dãy số bên trong" + +#: src/minoltamn.cpp:541 src/nikonmn.cpp:254 src/nikonmn.cpp:572 +#: src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 src/olympusmn.cpp:303 +#: src/olympusmn.cpp:1014 +msgid "Focus Distance" +msgstr "Khoảng cách Lấy nét" + +#: src/minoltamn.cpp:542 src/nikonmn.cpp:1368 src/nikonmn.cpp:1393 +#: src/olympusmn.cpp:1014 +msgid "Focus distance" +msgstr "Khoảng cách lấy net1" + +#: src/minoltamn.cpp:544 src/minoltamn.cpp:759 src/minoltamn.cpp:1006 +#: src/panasonicmn.cpp:538 +#, fuzzy +msgid "Flash Fired" +msgstr "Thiết bị đèn chá»›p" + +#: src/minoltamn.cpp:545 src/minoltamn.cpp:760 src/minoltamn.cpp:1007 +#, fuzzy +msgid "Flash fired" +msgstr "Äèn chá»›p tắt" + +#: src/minoltamn.cpp:547 +#, fuzzy +msgid "Minolta Date" +msgstr "Ngày quay" + +#: src/minoltamn.cpp:548 +msgid "Minolta date" +msgstr "" + +#: src/minoltamn.cpp:550 +#, fuzzy +msgid "Minolta Time" +msgstr "Thá»i gian mở" + +#: src/minoltamn.cpp:551 +msgid "Minolta time" +msgstr "" + +#: src/minoltamn.cpp:556 +#, fuzzy +msgid "File Number Memory" +msgstr "Tập tin số" + +#: src/minoltamn.cpp:557 +#, fuzzy +msgid "File number memory" +msgstr "Tập tin số" + +#: src/minoltamn.cpp:559 +msgid "Last Image Number" +msgstr "Số hình ảnh Cuối cùng" + +#: src/minoltamn.cpp:560 +msgid "Last image number" +msgstr "Số hình ảnh cuối cùng" + +#: src/minoltamn.cpp:562 +#, fuzzy +msgid "Color Balance Red" +msgstr "Cân bằng Màu sắc" + +#: src/minoltamn.cpp:563 +#, fuzzy +msgid "Color balance red" +msgstr "Cần bằng màu sắc" + +#: src/minoltamn.cpp:565 +#, fuzzy +msgid "Color Balance Green" +msgstr "Cân bằng Màu sắc" + +#: src/minoltamn.cpp:566 +#, fuzzy +msgid "Color balance green" +msgstr "Cần bằng màu sắc" + +#: src/minoltamn.cpp:568 +#, fuzzy +msgid "Color Balance Blue" +msgstr "Cân bằng Màu sắc" + +#: src/minoltamn.cpp:569 +#, fuzzy +msgid "Color balance blue" +msgstr "Cần bằng màu sắc" + +#: src/minoltamn.cpp:580 +#, fuzzy +msgid "Subject Program" +msgstr "Tá»± động phÆ¡i sáng hoàn toàn" + +#: src/minoltamn.cpp:581 +#, fuzzy +msgid "Subject program" +msgstr "Vật thể" + +#: src/minoltamn.cpp:586 src/nikonmn.cpp:550 +msgid "ISO Settings" +msgstr "Tùy chỉnh Äá»™ nhạy sáng" + +#: src/minoltamn.cpp:587 src/minoltamn.cpp:1402 src/nikonmn.cpp:550 +msgid "ISO setting" +msgstr "Tùy chỉnh độ nhạy sáng" + +#: src/minoltamn.cpp:589 +#, fuzzy +msgid "Minolta Model" +msgstr "Mẫu đèn chá»›p" + +#: src/minoltamn.cpp:590 +#, fuzzy +msgid "Minolta model" +msgstr "Chế độ phim" + +#: src/minoltamn.cpp:592 +#, fuzzy +msgid "Interval Mode" +msgstr "Chế độ đặc biệt" + +#: src/minoltamn.cpp:593 +#, fuzzy +msgid "Interval mode" +msgstr "Kiểu Ca-me-ra" + +#: src/minoltamn.cpp:595 +msgid "Folder Name" +msgstr "Tên Thư mục" + +#: src/minoltamn.cpp:596 +msgid "Folder name" +msgstr "Tên thư mục" + +#: src/minoltamn.cpp:598 src/minoltamn.cpp:599 +msgid "ColorMode" +msgstr "Chếđộmàusắc" + +#: src/minoltamn.cpp:601 src/minoltamn.cpp:1208 src/pentaxmn.cpp:572 +msgid "Color Filter" +msgstr "Lá»c Màu" + +#: src/minoltamn.cpp:602 +msgid "Color filter" +msgstr "Lá»c màu" + +#: src/minoltamn.cpp:604 +msgid "Black and White Filter" +msgstr "Lá»c Äen và Trắng" + +#: src/minoltamn.cpp:605 +msgid "Black and white filter" +msgstr "Lá»c Ä‘en và trắng" + +#: src/minoltamn.cpp:607 src/minoltamn.cpp:608 src/olympusmn.cpp:1020 +#, fuzzy +msgid "Internal Flash" +msgstr "Äèn chá»›p trong máy" + +#: src/minoltamn.cpp:610 src/minoltamn.cpp:611 src/nikonmn.cpp:706 +#: src/olympusmn.cpp:276 src/properties.cpp:463 src/properties.cpp:1068 +#: src/sonymn.cpp:651 src/sonymn.cpp:652 src/tags.cpp:1637 +msgid "Brightness" +msgstr "Äá»™ sáng" + +#: src/minoltamn.cpp:613 +#, fuzzy +msgid "Spot Focus Point X" +msgstr "Vị trí Lấy nét" + +#: src/minoltamn.cpp:614 +msgid "Spot focus point X" +msgstr "" + +#: src/minoltamn.cpp:616 +#, fuzzy +msgid "Spot Focus Point Y" +msgstr "Vị trí Lấy nét" + +#: src/minoltamn.cpp:617 +msgid "Spot focus point Y" +msgstr "" + +#: src/minoltamn.cpp:619 +msgid "Wide Focus Zone" +msgstr "Vùng Lấy nét Góc rá»™ng" + +#: src/minoltamn.cpp:620 +msgid "Wide focus zone" +msgstr "Vùng lấy góc nét rá»™ng" + +#: src/minoltamn.cpp:623 src/minoltamn.cpp:754 src/minoltamn.cpp:1040 +#: src/minoltamn.cpp:1384 src/nikonmn.cpp:234 src/nikonmn.cpp:481 +#: src/nikonmn.cpp:538 src/olympusmn.cpp:301 src/olympusmn.cpp:670 +#: src/panasonicmn.cpp:445 src/pentaxmn.cpp:1179 +msgid "Focus mode" +msgstr "Chế độ lấy nét" + +#: src/minoltamn.cpp:625 src/minoltamn.cpp:626 src/minoltamn.cpp:1004 +msgid "Focus area" +msgstr "Vùng lấy nét" + +#: src/minoltamn.cpp:628 +#, fuzzy +msgid "DEC Switch Position" +msgstr "Vị trí Lấy nét" + +#: src/minoltamn.cpp:629 +#, fuzzy +msgid "DEC switch position" +msgstr "Vị trí lấy nét" + +#: src/minoltamn.cpp:631 +#, fuzzy +msgid "Color Profile" +msgstr "Lá»c màu" + +#: src/minoltamn.cpp:632 +#, fuzzy +msgid "Color profile" +msgstr "Lá»c màu" + +#: src/minoltamn.cpp:634 src/minoltamn.cpp:635 +msgid "Data Imprint" +msgstr "" + +#: src/minoltamn.cpp:637 src/minoltamn.cpp:1425 +#, fuzzy +msgid "Flash Metering" +msgstr "Tùy chỉnh Äèn chá»›p" + +#: src/minoltamn.cpp:638 src/minoltamn.cpp:1426 +#, fuzzy +msgid "Flash metering" +msgstr "Tùy chỉnh Äèn chá»›p" + +#: src/minoltamn.cpp:642 +#, fuzzy +msgid "Unknown Minolta Camera Settings tag" +msgstr "Tùy chỉnh máy ảnh" + +#: src/minoltamn.cpp:660 +#, fuzzy +msgid "Program-shift A" +msgstr "Chương trình" + +#: src/minoltamn.cpp:661 +#, fuzzy +msgid "Program-shift S" +msgstr "Chương trình" + +#: src/minoltamn.cpp:676 src/minoltamn.cpp:862 +msgid "Raw+Jpeg" +msgstr "Raw+Jpeg" + +#: src/minoltamn.cpp:688 src/minoltamn.cpp:875 src/panasonicmn.cpp:76 +#: src/pentaxmn.cpp:421 +msgid "Kelvin" +msgstr "Kelvin" + +#: src/minoltamn.cpp:695 +#, fuzzy +msgid "Single-shot AF" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:696 src/olympusmn.cpp:510 src/olympusmn.cpp:1441 +#, fuzzy +msgid "Continuous AF" +msgstr "Liên tục" + +#: src/minoltamn.cpp:698 +#, fuzzy +msgid "Automatic AF" +msgstr "Tá»± động" + +#: src/minoltamn.cpp:727 src/minoltamn.cpp:901 +msgid "sRGB (Natural)" +msgstr "sRGB (Tá»± nhiên)" + +#: src/minoltamn.cpp:728 src/minoltamn.cpp:902 +msgid "sRGB (Natural+)" +msgstr "sRGB (Tá»± nhiên+)" + +#: src/minoltamn.cpp:734 src/minoltamn.cpp:910 src/minoltamn.cpp:2072 +#: src/panasonicmn.cpp:244 +msgid "Horizontal (normal)" +msgstr "" + +#: src/minoltamn.cpp:735 src/minoltamn.cpp:911 src/minoltamn.cpp:2073 +#: src/panasonicmn.cpp:246 +msgid "Rotate 90 CW" +msgstr "" + +#: src/minoltamn.cpp:736 src/minoltamn.cpp:912 src/minoltamn.cpp:2074 +#: src/panasonicmn.cpp:247 +msgid "Rotate 270 CW" +msgstr "" + +#: src/minoltamn.cpp:756 +msgid "AF Points" +msgstr "Äiểm Lấy nét tá»± động" + +#: src/minoltamn.cpp:757 +msgid "AF points" +msgstr "Äiểm lấy nét tá»± động" + +#: src/minoltamn.cpp:771 src/minoltamn.cpp:1015 src/minoltamn.cpp:1413 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:809 +#: src/olympusmn.cpp:824 src/olympusmn.cpp:895 src/properties.cpp:557 +#: src/sigmamn.cpp:83 src/tags.cpp:1691 +msgid "Color Space" +msgstr "Không gian Màu" + +#: src/minoltamn.cpp:772 src/minoltamn.cpp:1016 src/minoltamn.cpp:1414 +#: src/nikonmn.cpp:559 src/olympusmn.cpp:689 src/olympusmn.cpp:824 +#: src/olympusmn.cpp:895 src/pentaxmn.cpp:1275 src/pentaxmn.cpp:1276 +#: src/sigmamn.cpp:84 +msgid "Color space" +msgstr "Không gian màu" + +#: src/minoltamn.cpp:783 src/minoltamn.cpp:801 src/minoltamn.cpp:1033 +#: src/minoltamn.cpp:1051 src/minoltamn.cpp:1461 +msgid "Free Memory Card Images" +msgstr "" + +#: src/minoltamn.cpp:784 src/minoltamn.cpp:802 src/minoltamn.cpp:1034 +#: src/minoltamn.cpp:1052 src/minoltamn.cpp:1462 +msgid "Free memory card images" +msgstr "" + +#: src/minoltamn.cpp:789 +msgid "Hue" +msgstr "" + +#: src/minoltamn.cpp:791 src/minoltamn.cpp:792 src/minoltamn.cpp:1045 +#: src/minoltamn.cpp:1046 src/minoltamn.cpp:1575 src/minoltamn.cpp:1576 +#: src/panasonicmn.cpp:466 src/sonymn.cpp:687 src/sonymn.cpp:688 +#: src/sonymn.cpp:760 src/sonymn.cpp:761 +msgid "Rotation" +msgstr "Xoay" + +#: src/minoltamn.cpp:804 src/minoltamn.cpp:811 src/minoltamn.cpp:1069 +#: src/tags.cpp:842 +msgid "Image Number" +msgstr "Số hình ảnh" + +#: src/minoltamn.cpp:808 src/minoltamn.cpp:1073 src/minoltamn.cpp:1498 +#: src/nikonmn.cpp:587 src/olympusmn.cpp:439 src/olympusmn.cpp:691 +#: src/olympusmn.cpp:826 src/olympusmn.cpp:896 src/olympusmn.cpp:981 +#: src/panasonicmn.cpp:463 src/pentaxmn.cpp:1304 src/pentaxmn.cpp:1305 +msgid "Noise reduction" +msgstr "GIảm nhiá»…u" + +#: src/minoltamn.cpp:817 +msgid "Zone Matching On" +msgstr "" + +#: src/minoltamn.cpp:818 +msgid "Zone matching on" +msgstr "" + +#: src/minoltamn.cpp:822 +#, fuzzy +msgid "Unknown Minolta Camera Settings 7D tag" +msgstr "Tùy chỉnh máy ảnh (7D)" + +#: src/minoltamn.cpp:840 src/sonymn.cpp:570 +#, fuzzy +msgid "Program Shift A" +msgstr "Chương trình" + +#: src/minoltamn.cpp:841 src/sonymn.cpp:571 +#, fuzzy +msgid "Program Shift S" +msgstr "Chương trình" + +#: src/minoltamn.cpp:845 src/minoltamn.cpp:1942 src/minoltamn.cpp:2097 +#: src/sonymn.cpp:529 +#, fuzzy +msgid "Night View/Portrait" +msgstr "Chân dung ban đêm" + +#: src/minoltamn.cpp:895 +msgid "200 (Zone Matching High)" +msgstr "" + +#: src/minoltamn.cpp:896 +msgid "80 (Zone Matching Low)" +msgstr "" + +#: src/minoltamn.cpp:904 src/minoltamn.cpp:955 +msgid "Adobe RGB (ICC)" +msgstr "" + +#: src/minoltamn.cpp:918 +#, fuzzy +msgid "Central" +msgstr "Trung tâm" + +#: src/minoltamn.cpp:919 +msgid "Up" +msgstr "" + +#: src/minoltamn.cpp:920 +#, fuzzy +msgid "Up right" +msgstr "trên, phải" + +#: src/minoltamn.cpp:922 +#, fuzzy +msgid "Down right" +msgstr "trên, phải" + +#: src/minoltamn.cpp:923 +msgid "Down" +msgstr "" + +#: src/minoltamn.cpp:924 +#, fuzzy +msgid "Down left" +msgstr "trên, trái" + +#: src/minoltamn.cpp:926 +#, fuzzy +msgid "Up left" +msgstr "trên, trái" + +#: src/minoltamn.cpp:932 +msgid "Selection" +msgstr "Lá»±a chá»n" + +#: src/minoltamn.cpp:947 +msgid "Natural+" +msgstr "Tá»± nhiên+" + +#: src/minoltamn.cpp:949 +#, fuzzy +msgid "Wind Scene" +msgstr "Cảnh đêm" + +#: src/minoltamn.cpp:950 +#, fuzzy +msgid "Evening Scene" +msgstr "Buổi chiá»u" + +#: src/minoltamn.cpp:1000 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus Position" +msgstr "Vị trí Lấy nét" + +#: src/minoltamn.cpp:1001 src/nikonmn.cpp:1367 src/nikonmn.cpp:1392 +msgid "Focus position" +msgstr "Vị trí lấy nét" + +#: src/minoltamn.cpp:1003 +msgid "Focus Area" +msgstr "Vùng lấy nét" + +#: src/minoltamn.cpp:1036 +#, fuzzy +msgid "Exposure Revision" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1037 +#, fuzzy +msgid "Exposure revision" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1054 src/minoltamn.cpp:1055 +#, fuzzy +msgid "Rotation2" +msgstr "Xoay" + +#: src/minoltamn.cpp:1060 src/minoltamn.cpp:1061 +msgid "Picture Finish" +msgstr "Bức ảnh hoàn tất" + +#: src/minoltamn.cpp:1063 +#, fuzzy +msgid "Exposure Manual Bias" +msgstr "Bù trừ ánh sáng" + +#: src/minoltamn.cpp:1064 +#, fuzzy +msgid "Exposure manual bias" +msgstr "Bù trừ ánh sáng" + +#: src/minoltamn.cpp:1066 src/panasonicmn.cpp:446 src/sonymn.cpp:448 +#: src/sonymn.cpp:449 +msgid "AF Mode" +msgstr "Chế độ Lấy nét tá»± động" + +#: src/minoltamn.cpp:1067 src/panasonicmn.cpp:446 +msgid "AF mode" +msgstr "Chế độ lấy nét tá»± động" + +#: src/minoltamn.cpp:1087 +msgid "Unknown Minolta Camera Settings 5D tag" +msgstr "" + +#: src/minoltamn.cpp:1100 src/sonymn.cpp:498 +msgid "Self-timer 10 sec" +msgstr "" + +#: src/minoltamn.cpp:1102 src/sonymn.cpp:499 +msgid "Self-timer 2 sec" +msgstr "" + +#: src/minoltamn.cpp:1104 src/sonymn.cpp:502 +#, fuzzy +msgid "White Balance Bracketing Low" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/minoltamn.cpp:1105 +#, fuzzy +msgid "White Balance Bracketing High" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/minoltamn.cpp:1106 +#, fuzzy +msgid "Single-frame Bracketing Low" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:1107 +#, fuzzy +msgid "Continuous Bracketing Low" +msgstr "Liên tục, thấp" + +#: src/minoltamn.cpp:1108 +#, fuzzy +msgid "Single-frame Bracketing High" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:1109 +#, fuzzy +msgid "Continuous Bracketing High" +msgstr "Liên tục, cao" + +#: src/minoltamn.cpp:1140 src/sonymn.cpp:205 +msgid "Advanced" +msgstr "" + +#: src/minoltamn.cpp:1155 src/minoltamn.cpp:1437 src/sonymn.cpp:500 +#, fuzzy +msgid "Continuous Bracketing" +msgstr "Liên tục, cao" + +#: src/minoltamn.cpp:1156 +#, fuzzy +msgid "Single-Frame Bracketing" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:1157 src/minoltamn.cpp:1443 src/sonymn.cpp:274 +#, fuzzy +msgid "White Balance Bracketing" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/minoltamn.cpp:1187 src/minoltamn.cpp:1190 src/nikonmn.cpp:452 +msgid "Preset" +msgstr "" + +#: src/minoltamn.cpp:1189 src/minoltamn.cpp:1192 src/minoltamn.cpp:2146 +#, fuzzy +msgid "Color Temperature/Color Filter" +msgstr "Nhiệt độ màu" + +#: src/minoltamn.cpp:1207 src/pentaxmn.cpp:1298 src/properties.cpp:490 +msgid "Temperature" +msgstr "Nhiệt độ" + +#: src/minoltamn.cpp:1213 +msgid "Setup" +msgstr "" + +#: src/minoltamn.cpp:1214 +msgid "Recall" +msgstr "" + +#: src/minoltamn.cpp:1219 +msgid "Ok" +msgstr "Ok" + +#: src/minoltamn.cpp:1220 +msgid "Error" +msgstr "" + +#: src/minoltamn.cpp:1232 +msgid "Image and Information" +msgstr "Hình ảnh và thông tin" + +#: src/minoltamn.cpp:1233 +msgid "Image Only" +msgstr "Chỉ hình ảnh" + +#: src/minoltamn.cpp:1234 +#, fuzzy +msgid "Image and Histogram" +msgstr "Lịch sá»­ hình ảnh" + +#: src/minoltamn.cpp:1240 +#, fuzzy +msgid "Fill Flash" +msgstr "Không đèn chá»›p" + +#: src/minoltamn.cpp:1251 +#, fuzzy +msgid "Focus Hold" +msgstr "Chế độ lấy nét" + +#: src/minoltamn.cpp:1252 +#, fuzzy +msgid "DOF Preview" +msgstr "Xem lại" + +#: src/minoltamn.cpp:1257 +msgid "Hold" +msgstr "Giữ" + +#: src/minoltamn.cpp:1258 +msgid "Toggle" +msgstr "" + +#: src/minoltamn.cpp:1259 +#, fuzzy +msgid "Spot Hold" +msgstr "Xác định" + +#: src/minoltamn.cpp:1260 +msgid "Spot Toggle" +msgstr "" + +#: src/minoltamn.cpp:1265 src/olympusmn.cpp:267 +msgid "Shutter Speed" +msgstr "Tốc độ chụp" + +#: src/minoltamn.cpp:1271 +msgid "Ambient and Flash" +msgstr "" + +#: src/minoltamn.cpp:1272 +#, fuzzy +msgid "Ambient Only" +msgstr "Chỉ hình ảnh" + +#: src/minoltamn.cpp:1277 +msgid "0.3 seconds" +msgstr "0.3 giây" + +#: src/minoltamn.cpp:1278 +msgid "0.6 seconds" +msgstr "0.6 giây" + +#: src/minoltamn.cpp:1284 src/nikonmn.cpp:294 src/nikonmn.cpp:994 +#: src/nikonmn.cpp:1440 +msgid "Automatic" +msgstr "Tá»± động" + +#: src/minoltamn.cpp:1290 src/minoltamn.cpp:1296 +#, fuzzy +msgid "Auto-rotate" +msgstr "Tương phản tá»± động" + +#: src/minoltamn.cpp:1291 +msgid "Horizontal" +msgstr "" + +#: src/minoltamn.cpp:1297 +msgid "Manual Rotate" +msgstr "Xoay thá»§ công" + +#: src/minoltamn.cpp:1302 +msgid "Within Range" +msgstr "Trong phạm vi" + +#: src/minoltamn.cpp:1303 +msgid "Under/Over Range" +msgstr "Dưới/Quá phạm vi" + +#: src/minoltamn.cpp:1304 +msgid "Out of Range" +msgstr "Ngoài phạm vi" + +#: src/minoltamn.cpp:1309 +msgid "Not Indicated" +msgstr "" + +#: src/minoltamn.cpp:1310 +#, fuzzy +msgid "Under Scale" +msgstr "Dưới nước" + +#: src/minoltamn.cpp:1311 +#, fuzzy +msgid "Bottom of Scale" +msgstr "Dưới lên trên" + +#: src/minoltamn.cpp:1329 +msgid "Top of Scale" +msgstr "" + +#: src/minoltamn.cpp:1330 +msgid "Over Scale" +msgstr "" + +#: src/minoltamn.cpp:1335 +#, fuzzy +msgid "AM" +msgstr "A" + +#: src/minoltamn.cpp:1336 src/olympusmn.cpp:512 src/olympusmn.cpp:1444 +#: src/olympusmn.cpp:1454 +msgid "MF" +msgstr "MF" + +#: src/minoltamn.cpp:1342 +msgid "Built-in" +msgstr "Lắp-trong" + +#: src/minoltamn.cpp:1348 src/pentaxmn.cpp:447 src/pentaxmn.cpp:462 +msgid "Very Low" +msgstr "Rất thấp" + +#: src/minoltamn.cpp:1350 +#, fuzzy +msgid "Half Full" +msgstr "Äầy" + +#: src/minoltamn.cpp:1351 +msgid "Sufficient Power Remaining" +msgstr "" + +#: src/minoltamn.cpp:1359 +#, fuzzy +msgid "Exposure Compensation Setting" +msgstr "Bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1360 +#, fuzzy +msgid "Exposure compensation setting" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1362 +#, fuzzy +msgid "High Speed Sync" +msgstr "Tốc độ cao" + +#: src/minoltamn.cpp:1363 +#, fuzzy +msgid "High speed sync" +msgstr "Tốc độ cao" + +#: src/minoltamn.cpp:1365 +msgid "Manual Exposure Time" +msgstr "Chỉnh thá»§ công Thá»i gian PhÆ¡i sáng" + +#: src/minoltamn.cpp:1366 +msgid "Manual exposure time" +msgstr "Chỉnh thá»§ công thá»i gian phÆ¡i sáng" + +#: src/minoltamn.cpp:1368 src/minoltamn.cpp:1369 +#, fuzzy +msgid "Manual FNumber" +msgstr "Chuá»—i số" + +#: src/minoltamn.cpp:1377 +#, fuzzy +msgid "Drive Mode 2" +msgstr "Mở, Chế độ 2" + +#: src/minoltamn.cpp:1378 +#, fuzzy +msgid "Drive mode 2" +msgstr "Chế độ góc rá»™ng 2 (400%)" + +#: src/minoltamn.cpp:1386 src/minoltamn.cpp:1387 src/sonymn.cpp:621 +#: src/sonymn.cpp:622 src/sonymn.cpp:727 src/sonymn.cpp:728 +msgid "Local AF Area Point" +msgstr "" + +#: src/minoltamn.cpp:1389 src/minoltamn.cpp:1390 src/nikonmn.cpp:838 +#: src/nikonmn.cpp:865 src/sonymn.cpp:618 src/sonymn.cpp:619 +#: src/sonymn.cpp:724 src/sonymn.cpp:725 +#, fuzzy +msgid "AF Area Mode" +msgstr "Chế độ Lấy nét tá»± động" + +#: src/minoltamn.cpp:1392 src/minoltamn.cpp:1393 src/sonymn.cpp:654 +#: src/sonymn.cpp:655 src/sonymn.cpp:754 src/sonymn.cpp:755 +#, fuzzy +msgid "FlashMode" +msgstr "Chế độ đèn chá»›p" + +#: src/minoltamn.cpp:1395 +#, fuzzy +msgid "Flash Exposure Comp Setting" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:1396 +#, fuzzy +msgid "Flash exposure compensation setting" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:1401 src/properties.cpp:1194 src/sonymn.cpp:627 +#: src/sonymn.cpp:628 src/sonymn.cpp:733 src/sonymn.cpp:734 +msgid "ISO Setting" +msgstr "Tùy chỉnh độ nhạy sáng" + +#: src/minoltamn.cpp:1404 src/minoltamn.cpp:1405 +#, fuzzy +msgid "Zone Matching Mode" +msgstr "Chế độ Ä‘o đạc" + +#: src/minoltamn.cpp:1407 src/sonymn.cpp:630 src/sonymn.cpp:631 +#: src/sonymn.cpp:736 src/sonymn.cpp:737 +msgid "Dynamic Range Optimizer Mode" +msgstr "" + +#: src/minoltamn.cpp:1408 +msgid "Dynamic range optimizer mode" +msgstr "" + +#: src/minoltamn.cpp:1428 src/minoltamn.cpp:1429 src/sonymn.cpp:658 +#: src/sonymn.cpp:659 +msgid "Priority Setup Shutter Release" +msgstr "" + +#: src/minoltamn.cpp:1434 +msgid "Self Timer Time" +msgstr "" + +#: src/minoltamn.cpp:1435 +msgid "Self timer time" +msgstr "" + +#: src/minoltamn.cpp:1438 +#, fuzzy +msgid "Continuous bracketing" +msgstr "Liên tục, cao" + +#: src/minoltamn.cpp:1440 +#, fuzzy +msgid "Single Frame Bracketing" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:1441 +#, fuzzy +msgid "Single frame bracketing" +msgstr "Khung hình đơn" + +#: src/minoltamn.cpp:1444 src/nikonmn.cpp:169 +#, fuzzy +msgid "White balance bracketing" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/minoltamn.cpp:1446 +#, fuzzy +msgid "White Balance Setting" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/minoltamn.cpp:1449 +#, fuzzy +msgid "Preset White Balance" +msgstr "Cân bằng trắng" + +#: src/minoltamn.cpp:1450 +#, fuzzy +msgid "Preset white balance" +msgstr "Cân bằng trắng" + +#: src/minoltamn.cpp:1452 +#, fuzzy +msgid "Color Temperature Setting" +msgstr "Nhiệt độ màu" + +#: src/minoltamn.cpp:1453 +#, fuzzy +msgid "Color temperature setting" +msgstr "Nhiệt độ màu" + +#: src/minoltamn.cpp:1455 +#, fuzzy +msgid "Custom WB Setting" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1456 +#, fuzzy +msgid "Custom WB setting" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1458 src/minoltamn.cpp:1459 +#, fuzzy +msgid "Dynamic Range Optimizer Settings" +msgstr "Tùy chỉnh kích cỡ hình ảnh" + +#: src/minoltamn.cpp:1464 +#, fuzzy +msgid "Custom WB Red Level" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1465 +#, fuzzy +msgid "Custom WB red level" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1467 +#, fuzzy +msgid "Custom WB Green Level" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1468 +#, fuzzy +msgid "Custom WB green level" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1470 +#, fuzzy +msgid "Custom WB Blue Level" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1471 +#, fuzzy +msgid "CustomWB blue level" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1473 src/minoltamn.cpp:1474 +#, fuzzy +msgid "Custom WB Error" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/minoltamn.cpp:1477 +#, fuzzy +msgid "White balance fine tune" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/minoltamn.cpp:1483 +#, fuzzy +msgid "Color compensation filter" +msgstr "Giá trị bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1485 src/minoltamn.cpp:1486 src/sonymn.cpp:690 +#: src/sonymn.cpp:691 src/sonymn.cpp:763 src/sonymn.cpp:764 +msgid "Sony Image Size" +msgstr "Kích cỡ hình Sony" + +#: src/minoltamn.cpp:1491 +msgid "Instant Playback Time" +msgstr "" + +#: src/minoltamn.cpp:1492 +msgid "Instant playback time" +msgstr "" + +#: src/minoltamn.cpp:1494 +msgid "Instant Playback Setup" +msgstr "" + +#: src/minoltamn.cpp:1495 +msgid "Instant playback setup" +msgstr "" + +#: src/minoltamn.cpp:1500 +msgid "Eye Start AF" +msgstr "" + +#: src/minoltamn.cpp:1501 +msgid "Eye start AF" +msgstr "" + +#: src/minoltamn.cpp:1503 +msgid "Red Eye Reduction" +msgstr "TIêu giảm Mắt Äá»" + +#: src/minoltamn.cpp:1504 +msgid "Red eye reduction" +msgstr "Tiêu giảm mắt Ä‘á»" + +#: src/minoltamn.cpp:1506 +msgid "Flash Default" +msgstr "Äèn chá»›p mặc định" + +#: src/minoltamn.cpp:1507 +msgid "Flash default" +msgstr "Äèn chá»›p mặc định" + +#: src/minoltamn.cpp:1509 +msgid "Auto Bracket Order" +msgstr "" + +#: src/minoltamn.cpp:1510 +msgid "Auto bracket order" +msgstr "" + +#: src/minoltamn.cpp:1512 +#, fuzzy +msgid "Focus Hold Button" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/minoltamn.cpp:1513 +#, fuzzy +msgid "Focus hold button" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/minoltamn.cpp:1515 +msgid "AEL Button" +msgstr "" + +#: src/minoltamn.cpp:1516 +msgid "AEL button" +msgstr "" + +#: src/minoltamn.cpp:1518 +#, fuzzy +msgid "Control Dial Set" +msgstr "Thiết lập độ tương phản" + +#: src/minoltamn.cpp:1519 +#, fuzzy +msgid "Control dial set" +msgstr "Tương phản" + +#: src/minoltamn.cpp:1521 +#, fuzzy +msgid "Exposure Compensation Mode" +msgstr "Bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1522 +#, fuzzy +msgid "Exposure compensation mode" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/minoltamn.cpp:1525 +msgid "AF assist" +msgstr "Há»— trợ lấy nét tá»± động" + +#: src/minoltamn.cpp:1527 +msgid "Card Shutter Lock" +msgstr "" + +#: src/minoltamn.cpp:1528 +#, fuzzy +msgid "Card shutter lock" +msgstr "Thá»i gian chập nhanh" + +#: src/minoltamn.cpp:1530 +#, fuzzy +msgid "Lens Shutter Lock" +msgstr "Thá»i gian chập dài" + +#: src/minoltamn.cpp:1531 +#, fuzzy +msgid "Lens shutter lock" +msgstr "Thá»i gian chập dài" + +#: src/minoltamn.cpp:1533 +msgid "AF Area Illumination" +msgstr "" + +#: src/minoltamn.cpp:1534 +msgid "AF area illumination" +msgstr "" + +#: src/minoltamn.cpp:1536 +msgid "Monitor Display Off" +msgstr "" + +#: src/minoltamn.cpp:1537 +msgid "Monitor display off" +msgstr "" + +#: src/minoltamn.cpp:1539 +msgid "Record Display" +msgstr "" + +#: src/minoltamn.cpp:1540 +msgid "Record display" +msgstr "" + +#: src/minoltamn.cpp:1542 +msgid "Play Display" +msgstr "" + +#: src/minoltamn.cpp:1543 +msgid "Play display" +msgstr "" + +#: src/minoltamn.cpp:1545 +#, fuzzy +msgid "Exposure Indicator" +msgstr "Bù trừ ánh sáng" + +#: src/minoltamn.cpp:1546 +#, fuzzy +msgid "Exposure indicator" +msgstr "Bù trừ ánh sáng" + +#: src/minoltamn.cpp:1548 +#, fuzzy +msgid "AEL Exposure Indicator" +msgstr "Bù trừ ánh sáng" + +#: src/minoltamn.cpp:1549 +msgid "" +"AEL exposure indicator (also indicates exposure for next shot when " +"bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1551 +msgid "Exposure Bracketing Indicator Last" +msgstr "" + +#: src/minoltamn.cpp:1552 +msgid "" +"Exposure bracketing indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1554 +msgid "Metering Off Scale Indicator" +msgstr "" + +#: src/minoltamn.cpp:1555 +msgid "" +"Metering off scale indicator (two flashing triangles when under or over " +"metering scale)" +msgstr "" + +#: src/minoltamn.cpp:1557 +#, fuzzy +msgid "Flash Exposure Indicator" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:1558 +#, fuzzy +msgid "Flash exposure indicator" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:1560 +#, fuzzy +msgid "Flash Exposure Indicator Next" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:1561 +msgid "Flash exposure indicator next (indicator for next shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1563 +#, fuzzy +msgid "Flash Exposure Indicator Last" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/minoltamn.cpp:1564 +msgid "Flash exposure indicator last (indicator for last shot when bracketing)" +msgstr "" + +#: src/minoltamn.cpp:1569 +#, fuzzy +msgid "Focus Mode Switch" +msgstr "Chế độ lấy nét" + +#: src/minoltamn.cpp:1570 +#, fuzzy +msgid "Focus mode switch" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/minoltamn.cpp:1572 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash Type" +msgstr "Chế độ đèn chá»›p" + +#: src/minoltamn.cpp:1573 src/olympusmn.cpp:766 +#, fuzzy +msgid "Flash type" +msgstr "Chế độ đèn chá»›p" + +#: src/minoltamn.cpp:1578 src/olympusmn.cpp:666 +msgid "AE Lock" +msgstr "" + +#: src/minoltamn.cpp:1585 +msgid "Color compensation filter: negative is green, positive is magenta" +msgstr "" + +#: src/minoltamn.cpp:1587 src/tags.cpp:766 +msgid "Battery Level" +msgstr "Mức Pin" + +#: src/minoltamn.cpp:1588 +msgid "Battery level" +msgstr "Mức pin" + +#: src/minoltamn.cpp:1592 +msgid "Unknown Sony Camera Settings A100 tag" +msgstr "" + +#: src/minoltamn.cpp:1947 src/sonymn.cpp:533 +msgid "Clear" +msgstr "Rõ" + +#: src/minoltamn.cpp:1948 src/sonymn.cpp:534 +msgid "Deep" +msgstr "Sâu" + +#: src/minoltamn.cpp:1949 src/sonymn.cpp:535 +msgid "Light" +msgstr "Ãnh sáng" + +#: src/minoltamn.cpp:1950 +msgid "Night View" +msgstr "Nhìn Ban đêm" + +#: src/minoltamn.cpp:1951 +msgid "Autumn Leaves" +msgstr "Lá Mùa thu" + +#: src/minoltamn.cpp:1990 +msgid "Local" +msgstr "Äịa phương" + +#: src/minoltamn.cpp:2005 +#, fuzzy +msgid "Top-Right" +msgstr "Phải" + +#: src/minoltamn.cpp:2007 +#, fuzzy +msgid "Bottom-Right" +msgstr "dưới, phải" + +#: src/minoltamn.cpp:2009 +#, fuzzy +msgid "Bottom-Left" +msgstr "Dưới-trung tâm" + +#: src/minoltamn.cpp:2011 +#, fuzzy +msgid "Top-Left" +msgstr "Trái" + +#: src/minoltamn.cpp:2012 +#, fuzzy +msgid "Far-Right" +msgstr "Phải" + +#: src/minoltamn.cpp:2013 +#, fuzzy +msgid "Far-Left" +msgstr "Trái" + +#: src/minoltamn.cpp:2027 src/sonymn.cpp:129 +msgid "Advanced Auto" +msgstr "" + +#: src/minoltamn.cpp:2028 +msgid "Advanced Level" +msgstr "" + +#: src/minoltamn.cpp:2041 +msgid "AF" +msgstr "AF" + +#: src/minoltamn.cpp:2042 +#, fuzzy +msgid "Release" +msgstr "Ngày phát hành" + +#: src/minoltamn.cpp:2054 +msgid "RAW " +msgstr "RAW " + +#: src/minoltamn.cpp:2055 +msgid "CRAW " +msgstr "CRAW " + +#: src/minoltamn.cpp:2058 +msgid "RAW+JPEG" +msgstr "RAW+JPEG" + +#: src/minoltamn.cpp:2059 +msgid "CRAW+JPEG" +msgstr "CRAW+JPEG" + +#: src/minoltamn.cpp:2115 +msgid "Raw + JPEG" +msgstr "Raw + JPEG" + +#: src/minoltamn.cpp:2116 +#, fuzzy +msgid "Compressed Raw" +msgstr "Tá»· lệ nén" + +#: src/minoltamn.cpp:2117 +#, fuzzy +msgid "Compressed Raw + JPEG" +msgstr "Raw + JPEG" + +#: src/minoltamn.cpp:2130 +msgid "Minolta AF 2x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2131 +msgid "Minolta AF 2x APO II" +msgstr "" + +#: src/minoltamn.cpp:2132 +msgid "Minolta AF 1.4x APO (D)" +msgstr "" + +#: src/minoltamn.cpp:2133 +msgid "Minolta AF 1.4x APO II" +msgstr "" + +#: src/minoltamn.cpp:2163 +msgid "ISO Setting Used" +msgstr "Các tùy chỉnh độ nhạy sáng đã sá»­ dụng" + +#: src/minoltamn.cpp:2164 src/olympusmn.cpp:126 src/olympusmn.cpp:1116 +#, fuzzy +msgid "High Key" +msgstr "Tốc độ cao" + +#: src/minoltamn.cpp:2165 src/olympusmn.cpp:132 src/olympusmn.cpp:1114 +msgid "Low Key" +msgstr "" + +#: src/nikonmn.cpp:80 +msgid "Extra High" +msgstr "" + +#: src/nikonmn.cpp:86 src/nikonmn.cpp:1588 +#, fuzzy +msgid "Single area" +msgstr "Khung hình đơn" + +#: src/nikonmn.cpp:87 src/nikonmn.cpp:1589 +#, fuzzy +msgid "Dynamic area" +msgstr "Sặc sỡ (màu sắc)" + +#: src/nikonmn.cpp:88 +#, fuzzy +msgid "Dynamic area, closest subject" +msgstr "Vật thể gần nhất" + +#: src/nikonmn.cpp:89 +msgid "Group dynamic" +msgstr "" + +#: src/nikonmn.cpp:90 src/nikonmn.cpp:1592 +#, fuzzy +msgid "Single area (wide)" +msgstr "Khung hình đơn" + +#: src/nikonmn.cpp:91 src/nikonmn.cpp:1593 +msgid "Dynamic area (wide)" +msgstr "" + +#: src/nikonmn.cpp:104 src/nikonmn.cpp:813 src/nikonmn.cpp:828 +#: src/pentaxmn.cpp:289 +msgid "Upper-left" +msgstr "" + +#: src/nikonmn.cpp:105 src/nikonmn.cpp:814 src/nikonmn.cpp:829 +#: src/pentaxmn.cpp:291 +#, fuzzy +msgid "Upper-right" +msgstr "Phải" + +#: src/nikonmn.cpp:106 src/nikonmn.cpp:815 src/nikonmn.cpp:830 +#: src/pentaxmn.cpp:297 +#, fuzzy +msgid "Lower-left" +msgstr "Thấp nhất" + +#: src/nikonmn.cpp:107 src/nikonmn.cpp:816 src/nikonmn.cpp:831 +#: src/pentaxmn.cpp:299 +#, fuzzy +msgid "Lower-right" +msgstr "Phải" + +#: src/nikonmn.cpp:108 +#, fuzzy +msgid "Left-most" +msgstr "Trái" + +#: src/nikonmn.cpp:109 +#, fuzzy +msgid "Right-most" +msgstr "Quyá»n lợi" + +#: src/nikonmn.cpp:143 +msgid "Fire, manual" +msgstr "" + +#: src/nikonmn.cpp:144 +#, fuzzy +msgid "Fire, external" +msgstr "Ngoài" + +#: src/nikonmn.cpp:145 +msgid "Fire, commander mode" +msgstr "" + +#: src/nikonmn.cpp:146 +#, fuzzy +msgid "Fire, TTL mode" +msgstr "Chế độ ảnh" + +#: src/nikonmn.cpp:152 src/nikonmn.cpp:165 +msgid "Delay" +msgstr "" + +#: src/nikonmn.cpp:153 +#, fuzzy +msgid "PC Control" +msgstr "Äiá»u khiển màu" + +#: src/nikonmn.cpp:155 src/sonymn.cpp:273 +#, fuzzy +msgid "Exposure Bracketing" +msgstr "Cảnh báo phÆ¡i sáng" + +#: src/nikonmn.cpp:156 +msgid "Auto ISO" +msgstr "Äá»™ nhạy sáng tá»± động" + +#: src/nikonmn.cpp:157 +#, fuzzy +msgid "White-Balance Bracketing" +msgstr "Tùy chỉnh cân bằng trắng" + +#: src/nikonmn.cpp:158 +#, fuzzy +msgid "IR Control" +msgstr "Äiá»u khiển Từ xa" + +#: src/nikonmn.cpp:159 +msgid "D-Lighting Bracketing" +msgstr "" + +#: src/nikonmn.cpp:166 +#, fuzzy +msgid "PC control" +msgstr "Äiá»u khiển màu" + +#: src/nikonmn.cpp:167 +#, fuzzy +msgid "Exposure bracketing" +msgstr "Cảnh báo phÆ¡i sáng" + +#: src/nikonmn.cpp:168 +msgid "Unused LE-NR slowdown" +msgstr "" + +#: src/nikonmn.cpp:170 +#, fuzzy +msgid "IR control" +msgstr "Äiá»u khiển màu" + +#: src/nikonmn.cpp:176 +#, fuzzy +msgid "Auto release" +msgstr "Tá»± động + mắt Ä‘á»" + +#: src/nikonmn.cpp:177 +#, fuzzy +msgid "Manual release" +msgstr "Xoay thá»§ công" + +#: src/nikonmn.cpp:182 +#, fuzzy +msgid "Lossy (type 1)" +msgstr "Kiểu ống kính" + +#: src/nikonmn.cpp:183 src/tags.cpp:251 +#, fuzzy +msgid "Uncompressed" +msgstr "Epson ERF đã nén" + +#: src/nikonmn.cpp:184 +msgid "Lossless" +msgstr "" + +#: src/nikonmn.cpp:185 +#, fuzzy +msgid "Lossy (type 2)" +msgstr "Kiểu ống kính" + +#: src/nikonmn.cpp:191 +msgid "B & W" +msgstr "B & W" + +#: src/nikonmn.cpp:193 +msgid "Trim" +msgstr "" + +#: src/nikonmn.cpp:194 +msgid "Small picture" +msgstr "Hình ảnh nhá»" + +#: src/nikonmn.cpp:195 +#, fuzzy +msgid "D-Lighting" +msgstr "Ãnh sáng" + +#: src/nikonmn.cpp:196 +msgid "Red eye" +msgstr "Mắt Ä‘á»" + +#: src/nikonmn.cpp:197 src/nikonmn.cpp:686 +#, fuzzy +msgid "Cyanotype" +msgstr "Kiểu" + +#: src/nikonmn.cpp:198 +#, fuzzy +msgid "Sky light" +msgstr "Ãnh sáng ban ngày" + +#: src/nikonmn.cpp:199 +msgid "Warm tone" +msgstr "Tông màu ấm" + +#: src/nikonmn.cpp:200 +#, fuzzy +msgid "Color custom" +msgstr "Tông màu" + +#: src/nikonmn.cpp:201 +#, fuzzy +msgid "Image overlay" +msgstr "Chỉ hình ảnh" + +#: src/nikonmn.cpp:207 +msgid "Minimal" +msgstr "" + +#: src/nikonmn.cpp:216 src/nikonmn.cpp:532 +#, fuzzy +msgid "Nikon Makernote version" +msgstr "Firmware Version" + +#: src/nikonmn.cpp:218 src/nikonmn.cpp:474 src/nikonmn.cpp:533 +#: src/olympusmn.cpp:270 src/panasonicmn.cpp:734 src/tags.cpp:1590 +msgid "ISO Speed" +msgstr "Äá»™ nhạy sáng" + +#: src/nikonmn.cpp:230 src/nikonmn.cpp:537 +msgid "Sharpening" +msgstr "Äá»™ mịn" + +#: src/nikonmn.cpp:231 src/nikonmn.cpp:537 +msgid "Image sharpening setting" +msgstr "Tùy chỉnh độ mịn cá»§a hình" + +#: src/nikonmn.cpp:233 src/nikonmn.cpp:538 +msgid "Focus" +msgstr "Lấy nét" + +#: src/nikonmn.cpp:236 src/nikonmn.cpp:539 +msgid "Flash Setting" +msgstr "Tùy chỉnh Äèn chá»›p" + +#: src/nikonmn.cpp:237 src/nikonmn.cpp:539 +msgid "Flash setting" +msgstr "Tùy chỉnh đèn chá»›p" + +#: src/nikonmn.cpp:242 src/nikonmn.cpp:546 +msgid "ISO Selection" +msgstr "Lá»±a chá»n Äá»™ nhạy sáng" + +#: src/nikonmn.cpp:243 src/nikonmn.cpp:546 +msgid "ISO selection" +msgstr "Lá»±a chá»n độ nhạy" + +#: src/nikonmn.cpp:245 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data Dump" +msgstr "" + +#: src/nikonmn.cpp:246 src/nikonmn.cpp:547 src/panasonicmn.cpp:451 +msgid "Data dump" +msgstr "" + +#: src/nikonmn.cpp:248 src/nikonmn.cpp:471 src/nikonmn.cpp:567 +#, fuzzy +msgid "Image Adjustment" +msgstr "Tổng số Hình ảnh" + +#: src/nikonmn.cpp:249 src/nikonmn.cpp:472 src/nikonmn.cpp:567 +#, fuzzy +msgid "Image adjustment setting" +msgstr "Tùy chỉnh kích cỡ hình ảnh" + +#: src/nikonmn.cpp:251 src/nikonmn.cpp:489 src/nikonmn.cpp:569 +msgid "Auxiliary Lens" +msgstr "" + +#: src/nikonmn.cpp:252 src/nikonmn.cpp:490 src/nikonmn.cpp:569 +msgid "Auxiliary lens (adapter)" +msgstr "" + +#: src/nikonmn.cpp:255 src/nikonmn.cpp:572 src/olympusmn.cpp:304 +#, fuzzy +msgid "Manual focus distance" +msgstr "Khoảng cách lấy net1" + +#: src/nikonmn.cpp:258 src/nikonmn.cpp:487 src/nikonmn.cpp:573 +msgid "Digital zoom setting" +msgstr "Tùy chỉnh thu/phóng Ä‘iện tá»­" + +#: src/nikonmn.cpp:260 +#, fuzzy +msgid "AF Focus Position" +msgstr "Vị trí Lấy nét" + +#: src/nikonmn.cpp:261 +#, fuzzy +msgid "AF focus position information" +msgstr "Vị trí lấy nét" + +#: src/nikonmn.cpp:265 +#, fuzzy +msgid "Unknown Nikon1MakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/nikonmn.cpp:292 src/nikonmn.cpp:1438 +#, fuzzy +msgid "Continuous autofocus" +msgstr "Liên tục, thấp" + +#: src/nikonmn.cpp:293 src/nikonmn.cpp:1439 +#, fuzzy +msgid "Single autofocus" +msgstr "Lấy nét tá»± động" + +#: src/nikonmn.cpp:330 src/nikonmn.cpp:513 src/nikonmn.cpp:1544 +msgid "Not used" +msgstr "chưa được sá»­ dụng" + +#: src/nikonmn.cpp:371 +msgid "guess" +msgstr "" + +#: src/nikonmn.cpp:418 +msgid "VGA Basic" +msgstr "" + +#: src/nikonmn.cpp:419 +#, fuzzy +msgid "VGA Normal" +msgstr "Bình thưá»ng" + +#: src/nikonmn.cpp:420 +#, fuzzy +msgid "VGA Fine" +msgstr "Tốt" + +#: src/nikonmn.cpp:421 +msgid "SXGA Basic" +msgstr "" + +#: src/nikonmn.cpp:422 +#, fuzzy +msgid "SXGA Normal" +msgstr "Bình thưá»ng" + +#: src/nikonmn.cpp:423 +#, fuzzy +msgid "SXGA Fine" +msgstr "Tốt" + +#: src/nikonmn.cpp:435 +msgid "Bright+" +msgstr "Sáng+" + +#: src/nikonmn.cpp:436 +msgid "Bright-" +msgstr "Sáng-" + +#: src/nikonmn.cpp:437 +msgid "Contrast+" +msgstr "Tương phản+" + +#: src/nikonmn.cpp:438 +msgid "Contrast-" +msgstr "Tương phản-" + +#: src/nikonmn.cpp:457 +msgid "Speedlight" +msgstr "" + +#: src/nikonmn.cpp:497 +#, fuzzy +msgid "Unknown Nikon2MakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:282 +msgid "Flash Device" +msgstr "Thiết bị đèn chá»›p" + +#: src/nikonmn.cpp:540 src/olympusmn.cpp:283 +#, fuzzy +msgid "Flash device" +msgstr "Thiết bị đèn chá»›p" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:249 src/panasonicmn.cpp:453 +msgid "White Balance Bias" +msgstr "Bù trừ Cân bằng sáng" + +#: src/nikonmn.cpp:542 src/olympusmn.cpp:250 +msgid "White balance bias" +msgstr "Bù trừ cân bằng sáng" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB Levels" +msgstr "" + +#: src/nikonmn.cpp:543 src/olympusmn.cpp:939 +msgid "WB RB levels" +msgstr "" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program Shift" +msgstr "Chương trình" + +#: src/nikonmn.cpp:544 +#, fuzzy +msgid "Program shift" +msgstr "Phiên bản chương trình" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure Difference" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/nikonmn.cpp:545 +#, fuzzy +msgid "Exposure difference" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1157 +#, fuzzy +msgid "Pointer to a preview image" +msgstr "Äá»™ dài cá»§a ảnh xem trước" + +#: src/nikonmn.cpp:548 src/pentaxmn.cpp:1158 +#, fuzzy +msgid "Offset to an IFD containing a preview image" +msgstr "Bù trừ hình ảnh xem trước" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash Comp" +msgstr "Äèn chá»›p tắt" + +#: src/nikonmn.cpp:549 +#, fuzzy +msgid "Flash compensation setting" +msgstr "Tùy chỉnh chế độ đèn chá»›p" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image Boundary" +msgstr "Tổng số Hình ảnh" + +#: src/nikonmn.cpp:551 +#, fuzzy +msgid "Image boundary" +msgstr "Tổng số Hình ảnh" + +#: src/nikonmn.cpp:552 +#, fuzzy +msgid "Flash exposure comp" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash Bracket Comp" +msgstr "Nguồn Äèn chá»›p" + +#: src/nikonmn.cpp:553 +#, fuzzy +msgid "Flash bracket compensation applied" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "Exposure Bracket Comp" +msgstr "Tá»± động phÆ¡i sáng hoàn toàn" + +#: src/nikonmn.cpp:554 +#, fuzzy +msgid "AE bracket compensation applied" +msgstr "Giá trị bù trừ phÆ¡i sáng" + +#: src/nikonmn.cpp:555 src/olympusmn.cpp:459 +#, fuzzy +msgid "Image Processing" +msgstr "Sub-IFD sá»± xá»­ lý ảnh" + +#: src/nikonmn.cpp:555 src/pentaxmn.cpp:1265 src/pentaxmn.cpp:1266 +#, fuzzy +msgid "Image processing" +msgstr "Sub-IFD sá»± xá»­ lý ảnh" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop High Speed" +msgstr "Tốc độ cao" + +#: src/nikonmn.cpp:556 +#, fuzzy +msgid "Crop high speed" +msgstr "Tốc độ cao" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure Tuning" +msgstr "Cảnh báo phÆ¡i sáng" + +#: src/nikonmn.cpp:557 +#, fuzzy +msgid "Exposure tuning" +msgstr "Cảnh báo phÆ¡i sáng" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR Info" +msgstr "Thông tin thô" + +#: src/nikonmn.cpp:560 +#, fuzzy +msgid "VR info" +msgstr "Thông tin lấy nét tá»± động" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image Authentication" +msgstr "á»”n định hình ảnh" + +#: src/nikonmn.cpp:561 +#, fuzzy +msgid "Image authentication" +msgstr "á»”n định hình ảnh" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-Lighting" +msgstr "" + +#: src/nikonmn.cpp:562 +msgid "ActiveD-lighting" +msgstr "" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid "Picture Control" +msgstr "Thông tin hình ảnh" + +#: src/nikonmn.cpp:563 +#, fuzzy +msgid " Picture control" +msgstr "Thông tin hình ảnh" + +#: src/nikonmn.cpp:564 src/properties.cpp:1387 +#, fuzzy +msgid "World Time" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/nikonmn.cpp:564 +#, fuzzy +msgid "World time" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO Info" +msgstr "Thông tin Chụp" + +#: src/nikonmn.cpp:565 +#, fuzzy +msgid "ISO info" +msgstr "Thông tin lấy nét tá»± động" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette Control" +msgstr "Äiá»u khiển Từ xa" + +#: src/nikonmn.cpp:566 +#, fuzzy +msgid "Vignette control" +msgstr "Äiá»u khiển Từ xa" + +#: src/nikonmn.cpp:568 +#, fuzzy +msgid "Tone Compensation" +msgstr "Bù trừ phÆ¡i sáng" + +#: src/nikonmn.cpp:568 +#, fuzzy +msgid "Tone compensation" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/nikonmn.cpp:574 +msgid "Mode of flash used" +msgstr "" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 +msgid "Shooting Mode" +msgstr "Chế độ Chụp" + +#: src/nikonmn.cpp:576 src/panasonicmn.cpp:449 src/pentaxmn.cpp:1148 +msgid "Shooting mode" +msgstr "Chế độ chụp" + +#: src/nikonmn.cpp:577 +msgid "Auto Bracket Release" +msgstr "" + +#: src/nikonmn.cpp:577 +msgid "Auto bracket release" +msgstr "" + +#: src/nikonmn.cpp:578 +#, fuzzy +msgid "Lens FStops" +msgstr "Kiểu ống kính" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast Curve" +msgstr "Giá trị Tương phản" + +#: src/nikonmn.cpp:579 +#, fuzzy +msgid "Contrast curve" +msgstr "Giá trị Tương phản" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color Hue" +msgstr "Tông màu" + +#: src/nikonmn.cpp:580 +#, fuzzy +msgid "Color hue" +msgstr "Tông màu" + +#: src/nikonmn.cpp:581 src/olympusmn.cpp:253 src/olympusmn.cpp:690 +#: src/panasonicmn.cpp:534 +#, fuzzy +msgid "Scene mode" +msgstr "Chế độ ảnh" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 src/properties.cpp:587 +#: src/tags.cpp:833 src/tags.cpp:1656 +msgid "Light Source" +msgstr "Nguồn Sáng" + +#: src/nikonmn.cpp:582 src/olympusmn.cpp:1083 +msgid "Light source" +msgstr "Nguồn sáng" + +#: src/nikonmn.cpp:583 +#, fuzzy +msgid "Shot info" +msgstr "Thông tin Chụp" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 src/properties.cpp:1187 +#, fuzzy +msgid "Hue Adjustment" +msgstr "Äiá»u chỉnh nhanh" + +#: src/nikonmn.cpp:584 src/nikonmn.cpp:708 +#, fuzzy +msgid "Hue adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF Compression" +msgstr "Tá»· lệ nén" + +#: src/nikonmn.cpp:585 +#, fuzzy +msgid "NEF compression" +msgstr "Nikon NEF đã nén" + +#: src/nikonmn.cpp:588 src/tags.cpp:905 +msgid "Linearization Table" +msgstr "" + +#: src/nikonmn.cpp:588 +msgid "Linearization table" +msgstr "" + +#: src/nikonmn.cpp:589 +msgid "Color Balance" +msgstr "Cân bằng Màu sắc" + +#: src/nikonmn.cpp:589 +msgid "Color balance" +msgstr "Cần bằng màu sắc" + +#: src/nikonmn.cpp:590 +msgid "Lens Data" +msgstr "Dữ liệu ống kính" + +#: src/nikonmn.cpp:590 +#, fuzzy +msgid "Lens data settings" +msgstr "Tùy chỉnh chất lượng hình ảnh" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw Image Center" +msgstr "Tổng số Hình ảnh" + +#: src/nikonmn.cpp:591 +#, fuzzy +msgid "Raw image center" +msgstr "Kích cỡ hình ảnh gốc" + +#: src/nikonmn.cpp:592 +msgid "Sensor Pixel Size" +msgstr "Kích cỡ Äiểm ảnh Cảm biến" + +#: src/nikonmn.cpp:592 +msgid "Sensor pixel size" +msgstr "Kích cỡ Ä‘iểm ảnh cảm biến" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene Assist" +msgstr "Há»— trợ lấy nét tá»± động" + +#: src/nikonmn.cpp:594 +#, fuzzy +msgid "Scene assist" +msgstr "Há»— trợ lấy nét tá»± động" + +#: src/nikonmn.cpp:595 +#, fuzzy +msgid "Retouch History" +msgstr "Lịch sá»­ hình ảnh" + +#: src/nikonmn.cpp:595 +msgid "Retouch history" +msgstr "" + +#: src/nikonmn.cpp:597 +#, fuzzy +msgid "Serial NO" +msgstr "Chuá»—i số" + +#: src/nikonmn.cpp:597 +msgid "Camera serial number, usually starts with \"NO= \"" +msgstr "" + +#: src/nikonmn.cpp:598 +msgid "Image Data Size" +msgstr "Kích cỡ Dữ liệu Hình ảnh" + +#: src/nikonmn.cpp:598 +msgid "Image data size" +msgstr "Kích cỡ dữ liệu hình ảnh" + +#: src/nikonmn.cpp:600 +msgid "Image Count" +msgstr "Tổng số Hình ảnh" + +#: src/nikonmn.cpp:600 +msgid "Image count" +msgstr "Tổng số hình ảnh" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted Image Count" +msgstr "Tổng số Hình ảnh" + +#: src/nikonmn.cpp:601 src/nikonmn.cpp:1249 +#, fuzzy +msgid "Deleted image count" +msgstr "Tổng số hình ảnh" + +#: src/nikonmn.cpp:602 src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 +#: src/nikonmn.cpp:1159 src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 +#, fuzzy +msgid "Shutter Count" +msgstr "Ưu tiên tốc độ" + +#: src/nikonmn.cpp:602 +msgid "Number of shots taken by camera" +msgstr "" + +#: src/nikonmn.cpp:603 +msgid "Flash info" +msgstr "Thông tin đèn chá»›p" + +#: src/nikonmn.cpp:604 +#, fuzzy +msgid "Image Optimization" +msgstr "á»”n định hình ảnh" + +#: src/nikonmn.cpp:604 +#, fuzzy +msgid "Image optimization" +msgstr "á»”n định hình ảnh" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program Variation" +msgstr "Phiên bản chương trình" + +#: src/nikonmn.cpp:606 +#, fuzzy +msgid "Program variation" +msgstr "Phiên bản chương trình" + +#: src/nikonmn.cpp:608 +msgid "AF Response" +msgstr "" + +#: src/nikonmn.cpp:608 +msgid "AF response" +msgstr "" + +#: src/nikonmn.cpp:609 +#, fuzzy +msgid "Multi exposure" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:610 +#, fuzzy +msgid "High ISO Noise Reduction" +msgstr "Giảm nhiá»…u do độ nhạy sáng cao" + +#: src/nikonmn.cpp:611 src/nikonmn.cpp:710 +#, fuzzy +msgid "Toning effect" +msgstr "Hiệu ứng hình ảnh" + +#: src/nikonmn.cpp:612 +#, fuzzy +msgid "AF info 2" +msgstr "Thông tin lấy nét tá»± động" + +#: src/nikonmn.cpp:613 +#, fuzzy +msgid "File info" +msgstr "Thông tin lấy nét tá»± động" + +#: src/nikonmn.cpp:614 +msgid "AF tune" +msgstr "" + +#: src/nikonmn.cpp:617 +msgid "Capture Data" +msgstr "Dữ liệu thu được" + +#: src/nikonmn.cpp:617 +msgid "Capture data" +msgstr "Dữ liệu thu được" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture Version" +msgstr "Phiên bản phần vững" + +#: src/nikonmn.cpp:618 +#, fuzzy +msgid "Capture version" +msgstr "Firmware Version" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture Offsets" +msgstr "Dữ liệu thu được" + +#: src/nikonmn.cpp:620 +#, fuzzy +msgid "Capture offsets" +msgstr "Dữ liệu thu được" + +#: src/nikonmn.cpp:621 +msgid "Scan IFD" +msgstr "" + +#: src/nikonmn.cpp:622 +msgid "ICC profile" +msgstr "" + +#: src/nikonmn.cpp:623 +#, fuzzy +msgid "Capture output" +msgstr "Dữ liệu thu được" + +#: src/nikonmn.cpp:625 +#, fuzzy +msgid "Unknown Nikon3MakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/nikonmn.cpp:635 src/olympusmn.cpp:65 src/panasonicmn.cpp:191 +#: src/panasonicmn.cpp:339 src/panasonicmn.cpp:435 src/pentaxmn.cpp:396 +msgid "No" +msgstr "Không" + +#: src/nikonmn.cpp:636 src/olympusmn.cpp:66 src/panasonicmn.cpp:190 +#: src/panasonicmn.cpp:436 src/pentaxmn.cpp:397 +msgid "Yes" +msgstr "Có" + +#: src/nikonmn.cpp:641 +msgid "Y/M/D" +msgstr "Y/M/D" + +#: src/nikonmn.cpp:642 +msgid "M/D/Y" +msgstr "M/D/Y" + +#: src/nikonmn.cpp:643 +msgid "D/M/Y" +msgstr "D/M/Y" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration Reduction" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:655 src/nikonmn.cpp:1250 +msgid "Vibration reduction" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:657 +#, fuzzy +msgid "Unknown Nikon Vibration Reduction Tag" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:667 +msgid "Default Settings" +msgstr "Các cài đặt mặc định" + +#: src/nikonmn.cpp:668 src/nikonmn.cpp:703 +msgid "Quick Adjust" +msgstr "Äiá»u chỉnh nhanh" + +#: src/nikonmn.cpp:669 +msgid "Full Control" +msgstr "Äiá»u khiển hoàn toàn" + +#: src/nikonmn.cpp:690 +msgid "Blue-green" +msgstr "" + +#: src/nikonmn.cpp:692 +#, fuzzy +msgid "Purple-blue" +msgstr "Tím" + +#: src/nikonmn.cpp:693 +#, fuzzy +msgid "Red-purple" +msgstr "Tím" + +#: src/nikonmn.cpp:700 src/properties.cpp:1005 src/properties.cpp:1232 +msgid "Name" +msgstr "Tên" + +#: src/nikonmn.cpp:701 +msgid "Base" +msgstr "" + +#: src/nikonmn.cpp:702 +msgid "Adjust" +msgstr "Äiá»u chỉnh" + +#: src/nikonmn.cpp:703 +msgid "Quick adjust" +msgstr "Äiá»u chỉnh nhanh" + +#: src/nikonmn.cpp:709 +msgid "Filter effect" +msgstr "Hiệu ứng kính lá»c" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning Saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/nikonmn.cpp:711 +#, fuzzy +msgid "Toning saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/nikonmn.cpp:713 +msgid "Unknown Nikon Picture Control Tag" +msgstr "" + +#: src/nikonmn.cpp:730 +msgid "AF Fine Tune" +msgstr "" + +#: src/nikonmn.cpp:730 +msgid "AF fine tune" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF Fine Tune Index" +msgstr "" + +#: src/nikonmn.cpp:731 +msgid "AF fine tune index" +msgstr "" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF Fine Tune Adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/nikonmn.cpp:732 +#, fuzzy +msgid "AF fine tune adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/nikonmn.cpp:734 +msgid "Unknown Nikon AF Fine Tune Tag" +msgstr "" + +#: src/nikonmn.cpp:744 +#, fuzzy +msgid "Timezone" +msgstr "Thá»i gian" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight Savings" +msgstr "Ãnh sáng ban ngày" + +#: src/nikonmn.cpp:745 +#, fuzzy +msgid "Daylight savings" +msgstr "Ãnh sáng ban ngày" + +#: src/nikonmn.cpp:746 +msgid "Date Display Format" +msgstr "Äịnh dạng hiển thị ngày" + +#: src/nikonmn.cpp:746 +msgid "Date display format" +msgstr "Äịnh dạng hiển thị ngày" + +#: src/nikonmn.cpp:748 +msgid "Unknown Nikon World Time Tag" +msgstr "" + +#: src/nikonmn.cpp:759 +msgid "Hi 0.3" +msgstr "Hi 0.3" + +#: src/nikonmn.cpp:760 +msgid "Hi 0.5" +msgstr "Hi 0.5" + +#: src/nikonmn.cpp:761 +msgid "Hi 0.7" +msgstr "Hi 0.7" + +#: src/nikonmn.cpp:762 +msgid "Hi 1.0" +msgstr "Hi 1.0" + +#: src/nikonmn.cpp:763 +msgid "Hi 1.3" +msgstr "Hi 1.3" + +#: src/nikonmn.cpp:764 +msgid "Hi 1.5" +msgstr "Hi 1.5" + +#: src/nikonmn.cpp:765 +msgid "Hi 1.7" +msgstr "Hi 1.7" + +#: src/nikonmn.cpp:766 +msgid "Hi 2.0" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:767 +#, fuzzy +msgid "Hi 2.3" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:768 +#, fuzzy +msgid "Hi 2.5" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:769 +#, fuzzy +msgid "Hi 2.7" +msgstr "Hi 2.0" + +#: src/nikonmn.cpp:770 +msgid "Hi 3.0" +msgstr "" + +#: src/nikonmn.cpp:771 +msgid "Hi 3.3" +msgstr "" + +#: src/nikonmn.cpp:772 +msgid "Hi 3.5" +msgstr "" + +#: src/nikonmn.cpp:773 +msgid "Hi 3.7" +msgstr "" + +#: src/nikonmn.cpp:774 +msgid "Hi 4.0" +msgstr "" + +#: src/nikonmn.cpp:775 +msgid "Lo 0.3" +msgstr "Lo 0.3" + +#: src/nikonmn.cpp:776 +msgid "Lo 0.5" +msgstr "Lo 0.5" + +#: src/nikonmn.cpp:777 +msgid "Lo 0.7" +msgstr "Lo 0.7" + +#: src/nikonmn.cpp:778 +msgid "Lo 1.0" +msgstr "Lo 1.0" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO Expansion" +msgstr "Lá»±a chá»n độ nhạy" + +#: src/nikonmn.cpp:784 +#, fuzzy +msgid "ISO expansion" +msgstr "Lá»±a chá»n Äá»™ nhạy sáng" + +#: src/nikonmn.cpp:785 +#, fuzzy +msgid "ISO 2" +msgstr "ISO JBIG" + +#: src/nikonmn.cpp:786 +msgid "ISO Expansion 2" +msgstr "" + +#: src/nikonmn.cpp:786 +msgid "ISO expansion 2" +msgstr "" + +#: src/nikonmn.cpp:788 +msgid "Unknown Nikon Iso Info Tag" +msgstr "" + +#: src/nikonmn.cpp:798 +#, fuzzy +msgid "Single Area" +msgstr "Khung hình đơn" + +#: src/nikonmn.cpp:799 +#, fuzzy +msgid "Dynamic Area" +msgstr "Sặc sỡ (màu sắc)" + +#: src/nikonmn.cpp:800 +#, fuzzy +msgid "Dynamic Area, Closest Subject" +msgstr "Vật thể gần nhất" + +#: src/nikonmn.cpp:801 +msgid "Group Dynamic" +msgstr "" + +#: src/nikonmn.cpp:802 +#, fuzzy +msgid "Single Area (wide)" +msgstr "Khung hình đơn" + +#: src/nikonmn.cpp:803 +msgid "Dynamic Area (wide)" +msgstr "" + +#: src/nikonmn.cpp:811 src/nikonmn.cpp:826 src/pentaxmn.cpp:293 +#, fuzzy +msgid "Mid-left" +msgstr "Trái" + +#: src/nikonmn.cpp:812 src/nikonmn.cpp:827 src/pentaxmn.cpp:295 +#, fuzzy +msgid "Mid-right" +msgstr "Phải" + +#: src/nikonmn.cpp:817 src/nikonmn.cpp:832 +#, fuzzy +msgid "Far Left" +msgstr "Trái" + +#: src/nikonmn.cpp:818 src/nikonmn.cpp:833 +#, fuzzy +msgid "Far Right" +msgstr "Phải" + +#: src/nikonmn.cpp:838 src/nikonmn.cpp:865 +#, fuzzy +msgid "AF area mode" +msgstr "Chế độ lấy nét tá»± động" + +#: src/nikonmn.cpp:839 src/olympusmn.cpp:1015 src/pentaxmn.cpp:1182 +#, fuzzy +msgid "AF point" +msgstr "Äiểm lấy nét tá»± động" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF Points In Focus" +msgstr "Äiểm Lấy nét tá»± động Äã dùng" + +#: src/nikonmn.cpp:840 +#, fuzzy +msgid "AF points in focus" +msgstr "Äiểm lấy nét tá»± động đã dùng" + +#: src/nikonmn.cpp:842 +msgid "Unknown Nikon Auto Focus Tag" +msgstr "" + +#: src/nikonmn.cpp:853 +#, fuzzy +msgid "On (51-point)" +msgstr "Mở (1)" + +#: src/nikonmn.cpp:854 +#, fuzzy +msgid "On (11-point)" +msgstr "Mở (1)" + +#: src/nikonmn.cpp:855 +#, fuzzy +msgid "On (39-point)" +msgstr "Mở (3)" + +#: src/nikonmn.cpp:856 +#, fuzzy +msgid "On (73-point)" +msgstr "Mở (3)" + +#: src/nikonmn.cpp:857 +msgid "On (73-point, new)" +msgstr "" + +#: src/nikonmn.cpp:858 +#, fuzzy +msgid "On (105-point)" +msgstr "Mở (1)" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast Detect AF" +msgstr "Tùy chỉnh độ tương phản" + +#: src/nikonmn.cpp:864 +#, fuzzy +msgid "Contrast detect AF" +msgstr "Tùy chỉnh độ tương phản" + +#: src/nikonmn.cpp:866 +msgid "Phase Detect AF" +msgstr "" + +#: src/nikonmn.cpp:866 +msgid "Phase detect AF" +msgstr "" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF Point" +msgstr "Äiểm lấy nét tá»± động" + +#: src/nikonmn.cpp:867 +#, fuzzy +msgid "Primary AF point" +msgstr "Äiểm lấy nét tá»± động" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF Image Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/nikonmn.cpp:869 +#, fuzzy +msgid "AF image width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF Image Height" +msgstr "Chiá»u cao hình ảnh" + +#: src/nikonmn.cpp:870 +#, fuzzy +msgid "AF image height" +msgstr "Chiá»u cao hình ảnh" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF Area X Position" +msgstr "Vị trí Lấy nét" + +#: src/nikonmn.cpp:871 +#, fuzzy +msgid "AF area x position" +msgstr "Vị trí lấy nét" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF Area Y Position" +msgstr "Vị trí Lấy nét" + +#: src/nikonmn.cpp:872 +#, fuzzy +msgid "AF area y position" +msgstr "Vị trí lấy nét" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF Area Width" +msgstr "Vùng lấy nét tá»± động" + +#: src/nikonmn.cpp:873 +#, fuzzy +msgid "AF area width" +msgstr "Vùng lấy nét từ động" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF Area Height" +msgstr "Vùng lấy nét tá»± động" + +#: src/nikonmn.cpp:874 +#, fuzzy +msgid "AF area height" +msgstr "Chiá»u cao hình ảnh" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast Detect AF In Focus" +msgstr "Tùy chỉnh độ tương phản" + +#: src/nikonmn.cpp:875 +#, fuzzy +msgid "Contrast detect AF in focus" +msgstr "Tùy chỉnh độ tương phản" + +#: src/nikonmn.cpp:877 +msgid "Unknown Nikon Auto Focus 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory Number" +msgstr "Số Thứ tá»±" + +#: src/nikonmn.cpp:888 +#, fuzzy +msgid "Directory number" +msgstr "Số thứ tá»±" + +#: src/nikonmn.cpp:891 +msgid "Unknown Nikon File Info Tag" +msgstr "" + +#: src/nikonmn.cpp:902 src/pentaxmn.cpp:673 +#, fuzzy +msgid "Multiple Exposure" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:903 +#, fuzzy +msgid "Image Overlay" +msgstr "Chỉ hình ảnh" + +#: src/nikonmn.cpp:909 +msgid "Multi Exposure Mode" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:909 +msgid "Multi exposure mode" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi Exposure Shots" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:910 +#, fuzzy +msgid "Multi exposure shots" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi Exposure Auto Gain" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:911 +#, fuzzy +msgid "Multi exposure auto gain" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/nikonmn.cpp:913 src/nikonmn.cpp:1035 src/nikonmn.cpp:1055 +#: src/nikonmn.cpp:1075 +msgid "Unknown Nikon Multi Exposure Tag" +msgstr "" + +#: src/nikonmn.cpp:925 src/olympusmn.cpp:143 +#, fuzzy +msgid "Internal" +msgstr "Ngoài" + +#: src/nikonmn.cpp:931 +msgid "1.01 (SB-800 or Metz 58 AF-1)" +msgstr "" + +#: src/nikonmn.cpp:991 +msgid "iTTL-BL" +msgstr "iTTL-BL" + +#: src/nikonmn.cpp:992 +msgid "iTTL" +msgstr "iTTL" + +#: src/nikonmn.cpp:993 +msgid "Auto Aperture" +msgstr "Khẩu độ tá»± động" + +#: src/nikonmn.cpp:995 +msgid "GN (distance priority)" +msgstr "" + +#: src/nikonmn.cpp:997 src/nikonmn.cpp:998 +msgid "Repeating Flash" +msgstr "" + +#: src/nikonmn.cpp:1004 +#, fuzzy +msgid "Bounce Flash" +msgstr "Không đèn chá»›p" + +#: src/nikonmn.cpp:1005 +msgid "Wide Flash Adapter" +msgstr "" + +#: src/nikonmn.cpp:1011 +msgid "FL-GL1" +msgstr "" + +#: src/nikonmn.cpp:1012 +msgid "FL-GL2" +msgstr "" + +#: src/nikonmn.cpp:1013 +msgid "TN-A1" +msgstr "" + +#: src/nikonmn.cpp:1014 +msgid "TN-A2" +msgstr "" + +#: src/nikonmn.cpp:1018 +#, fuzzy +msgid "Amber" +msgstr "Số F" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash Source" +msgstr "Nguồn Äèn chá»›p" + +#: src/nikonmn.cpp:1024 src/nikonmn.cpp:1046 src/nikonmn.cpp:1066 +msgid "Flash source" +msgstr "Nguồn đèn chá»›p" + +#: src/nikonmn.cpp:1025 src/nikonmn.cpp:1047 +msgid "0x0005" +msgstr "0x0005" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External Flash Firmware" +msgstr "Chế độ đèn nháy bên ngoài" + +#: src/nikonmn.cpp:1026 src/nikonmn.cpp:1048 src/nikonmn.cpp:1067 +#, fuzzy +msgid "External flash firmware" +msgstr "Chế độ đèn nháy bên ngoài" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External Flash Flags" +msgstr "Chế độ đèn nháy bên ngoài" + +#: src/nikonmn.cpp:1027 src/nikonmn.cpp:1049 src/nikonmn.cpp:1068 +#, fuzzy +msgid "External flash flags" +msgstr "Äèn chá»›p gắn ngoài" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash Focal Length" +msgstr "Khoảng Tiêu cá»± Tối Ä‘a" + +#: src/nikonmn.cpp:1028 src/nikonmn.cpp:1050 src/nikonmn.cpp:1069 +#, fuzzy +msgid "Flash focal length" +msgstr "Khoảng Tiêu cá»± tối Ä‘a" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +msgid "Repeating Flash Rate" +msgstr "" + +#: src/nikonmn.cpp:1029 src/nikonmn.cpp:1051 src/nikonmn.cpp:1070 +#, fuzzy +msgid "Repeating flash rate" +msgstr "Äổi tên tập tin thành" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +msgid "Repeating Flash Count" +msgstr "" + +#: src/nikonmn.cpp:1030 src/nikonmn.cpp:1052 src/nikonmn.cpp:1071 +#, fuzzy +msgid "Repeating flash count" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN Distance" +msgstr "Khoảng cách Lấy nét" + +#: src/nikonmn.cpp:1031 src/nikonmn.cpp:1053 src/nikonmn.cpp:1072 +#, fuzzy +msgid "Flash GN distance" +msgstr "Khoảng cách lấy net1" + +#: src/nikonmn.cpp:1032 +#, fuzzy +msgid "Flash Group A Control Mode" +msgstr "Chế độ Ä‘iá»u khiển đèn chá»›p" + +#: src/nikonmn.cpp:1032 +#, fuzzy +msgid "Flash group a control mode" +msgstr "Chế độ Ä‘iá»u khiển đèn chá»›p" + +#: src/nikonmn.cpp:1033 +#, fuzzy +msgid "Flash Group B Control Mode" +msgstr "Chế độ Ä‘iá»u khiển đèn chá»›p" + +#: src/nikonmn.cpp:1033 +#, fuzzy +msgid "Flash group b control mode" +msgstr "Chế độ Ä‘iá»u khiển đèn chá»›p" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash Color Filter" +msgstr "Lá»c Màu" + +#: src/nikonmn.cpp:1073 +#, fuzzy +msgid "Flash color filter" +msgstr "Lá»c màu" + +#: src/nikonmn.cpp:1086 src/nikonmn.cpp:1099 src/nikonmn.cpp:1159 +#: src/nikonmn.cpp:1219 src/nikonmn.cpp:1255 src/pentaxmn.cpp:1322 +#: src/pentaxmn.cpp:1323 +#, fuzzy +msgid "Shutter count" +msgstr "Ưu tiên tốc độ" + +#: src/nikonmn.cpp:1088 +msgid "Unknown Nikon Shot Info D80 Tag" +msgstr "" + +#: src/nikonmn.cpp:1100 src/sonymn.cpp:457 src/sonymn.cpp:458 +msgid "Flash Level" +msgstr "Cưá»ng độ Äèn chá»›p" + +#: src/nikonmn.cpp:1100 +msgid "Flash level" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/nikonmn.cpp:1102 +msgid "Unknown Nikon Shot Info D40 Tag" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF Fine Tune Adj" +msgstr "" + +#: src/nikonmn.cpp:1160 src/nikonmn.cpp:1220 +msgid "AF fine tune adj" +msgstr "" + +#: src/nikonmn.cpp:1162 +msgid "Unknown Nikon Shot Info D300 (a) Tag" +msgstr "" + +#: src/nikonmn.cpp:1222 +msgid "Unknown Nikon Shot Info D300 (b) Tag" +msgstr "" + +#: src/nikonmn.cpp:1235 +msgid "On (3)" +msgstr "Mở (3)" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter Count 1" +msgstr "Ưu tiên tốc độ" + +#: src/nikonmn.cpp:1248 +#, fuzzy +msgid "Shutter count 1" +msgstr "Ưu tiên tốc độ" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration Reduction 1" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:1251 +#, fuzzy +msgid "Vibration reduction 1" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter Count 2" +msgstr "Ưu tiên tốc độ" + +#: src/nikonmn.cpp:1252 +#, fuzzy +msgid "Shutter count 2" +msgstr "Ưu tiên tốc độ" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration Reduction 2" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:1253 +#, fuzzy +msgid "Vibration reduction 2" +msgstr "Giảm rung" + +#: src/nikonmn.cpp:1257 +msgid "Unknown Nikon Shot Info Tag" +msgstr "" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG Levels" +msgstr "" + +#: src/nikonmn.cpp:1268 +msgid "WB RBGG levels" +msgstr "" + +#: src/nikonmn.cpp:1270 +msgid "Unknown Nikon Color Balance 1 Tag" +msgstr "" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB Levels" +msgstr "" + +#: src/nikonmn.cpp:1281 src/nikonmn.cpp:1294 src/nikonmn.cpp:1307 +msgid "WB RGGB levels" +msgstr "" + +#: src/nikonmn.cpp:1283 +msgid "Unknown Nikon Color Balance 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:1296 +msgid "Unknown Nikon Color Balance 2a Tag" +msgstr "" + +#: src/nikonmn.cpp:1309 +msgid "Unknown Nikon Color Balance 2b Tag" +msgstr "" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG Levels" +msgstr "" + +#: src/nikonmn.cpp:1320 +msgid "WB RGBG levels" +msgstr "" + +#: src/nikonmn.cpp:1322 +msgid "Unknown Nikon Color Balance 3 Tag" +msgstr "" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG Levels" +msgstr "" + +#: src/nikonmn.cpp:1333 +msgid "WB GRBG levels" +msgstr "" + +#: src/nikonmn.cpp:1335 +msgid "Unknown Nikon Color Balance 4 Tag" +msgstr "" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID Number" +msgstr "Số hình ảnh Cuối cùng" + +#: src/nikonmn.cpp:1346 src/nikonmn.cpp:1370 src/nikonmn.cpp:1395 +#, fuzzy +msgid "Lens ID number" +msgstr "Số hình ảnh cuối cùng" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-Stops" +msgstr "Kiểu ống kính" + +#: src/nikonmn.cpp:1347 src/nikonmn.cpp:1371 src/nikonmn.cpp:1396 +#, fuzzy +msgid "Lens F-stops" +msgstr "Kiểu ống kính" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min Focal Length" +msgstr "Khoảng Tiêu cá»± Tối thiểu" + +#: src/nikonmn.cpp:1348 src/nikonmn.cpp:1372 src/nikonmn.cpp:1397 +#: src/olympusmn.cpp:757 +msgid "Min focal length" +msgstr "Khoảng Tiêu cá»± tối thiểu" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max Focal Length" +msgstr "Khoảng Tiêu cá»± Tối Ä‘a" + +#: src/nikonmn.cpp:1349 src/nikonmn.cpp:1373 src/nikonmn.cpp:1398 +#: src/olympusmn.cpp:758 +msgid "Max focal length" +msgstr "Khoảng Tiêu cá»± tối Ä‘a" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/nikonmn.cpp:1399 +#: src/olympusmn.cpp:755 +msgid "Max Aperture At Min Focal" +msgstr "Khẩu độ Tối Ä‘a tại Tiêu cá»± Tối thiểu" + +#: src/nikonmn.cpp:1350 src/nikonmn.cpp:1374 src/olympusmn.cpp:755 +msgid "Max aperture at min focal" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/nikonmn.cpp:1400 +#: src/olympusmn.cpp:756 +msgid "Max Aperture At Max Focal" +msgstr "Khẩu độ Tối Ä‘a tại Tiêu cá»± Tối Ä‘a" + +#: src/nikonmn.cpp:1351 src/nikonmn.cpp:1375 src/olympusmn.cpp:756 +msgid "Max aperture at max focal" +msgstr "Tiêu cá»± tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU Version" +msgstr "Phiên bản" + +#: src/nikonmn.cpp:1352 src/nikonmn.cpp:1376 src/nikonmn.cpp:1401 +#, fuzzy +msgid "MCU version" +msgstr "Mẫu phiên bản" + +#: src/nikonmn.cpp:1354 +msgid "Unknown Nikon Lens Data 1 Tag" +msgstr "" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit Pupil Position" +msgstr "Vị trí Lấy nét" + +#: src/nikonmn.cpp:1365 src/nikonmn.cpp:1390 +#, fuzzy +msgid "Exit pupil position" +msgstr "Vị trí lấy nét" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF Aperture" +msgstr "Khẩu độ" + +#: src/nikonmn.cpp:1366 src/nikonmn.cpp:1391 +#, fuzzy +msgid "AF aperture" +msgstr "Khẩu độ" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective Max Aperture" +msgstr "Khẩu độ tối Ä‘a" + +#: src/nikonmn.cpp:1377 src/nikonmn.cpp:1402 +#, fuzzy +msgid "Effective max aperture" +msgstr "Khẩu độ tối Ä‘a" + +#: src/nikonmn.cpp:1379 +msgid "Unknown Nikon Lens Data 2 Tag" +msgstr "" + +#: src/nikonmn.cpp:1399 +#, fuzzy +msgid "Max aperture at min focal length" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/nikonmn.cpp:1400 +#, fuzzy +msgid "Max aperture at max focal length" +msgstr "Tiêu cá»± tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/nikonmn.cpp:1404 +msgid "Unknown Nikon Lens Data 3 Tag" +msgstr "" + +#: src/nikonmn.cpp:1590 +msgid "Closest subject" +msgstr "Vật thể gần nhất" + +#: src/nikonmn.cpp:1591 +msgid "Group dynamic-AF" +msgstr "" + +#: src/nikonmn.cpp:1614 src/tags.cpp:244 +msgid "none" +msgstr "" + +#: src/nikonmn.cpp:1624 +#, fuzzy +msgid "used" +msgstr "chưa được sá»­ dụng" + +#: src/nikonmn.cpp:1650 +#, fuzzy +msgid "All 11 Points" +msgstr "Äiểm Lấy nét tá»± động" + +#: src/nikonmn.cpp:1665 src/nikonmn.cpp:1666 src/pentaxmn.cpp:660 +#: src/pentaxmn.cpp:665 +msgid "Single-frame" +msgstr "Khung hình đơn" + +#: src/olympusmn.cpp:71 +msgid "Standard Quality (SQ)" +msgstr "Chất lượng tiêu chuẩn (SQ)" + +#: src/olympusmn.cpp:72 +msgid "High Quality (HQ)" +msgstr "Chất lượng cao (HQ)" + +#: src/olympusmn.cpp:73 +msgid "Super High Quality (SHQ)" +msgstr "Chất lượng siêu cao (SHQ)" + +#: src/olympusmn.cpp:88 +msgid "On (preset)" +msgstr "" + +#: src/olympusmn.cpp:95 src/pentaxmn.cpp:587 +msgid "Sport" +msgstr "Thể thao" + +#: src/olympusmn.cpp:97 src/olympusmn.cpp:104 +msgid "Landscape+Portrait" +msgstr "Phong cảnh+Chân dung" + +#: src/olympusmn.cpp:100 src/panasonicmn.cpp:125 +msgid "Self Portrait" +msgstr "Chân dung" + +#: src/olympusmn.cpp:102 +msgid "2 in 1" +msgstr "2 trong 1" + +#: src/olympusmn.cpp:105 +msgid "Night+Portrait" +msgstr "Äêm+Chân dung" + +#: src/olympusmn.cpp:111 src/panasonicmn.cpp:131 src/pentaxmn.cpp:599 +#: src/sonymn.cpp:165 +msgid "Food" +msgstr "Thức ăn" + +#: src/olympusmn.cpp:112 +msgid "Documents" +msgstr "Tài liệu" + +#: src/olympusmn.cpp:114 +msgid "Shoot & Select" +msgstr "" + +#: src/olympusmn.cpp:115 +msgid "Beach & Snow" +msgstr "Bãi biển và Tuyết" + +#: src/olympusmn.cpp:116 +#, fuzzy +msgid "Self Portrait+Timer" +msgstr "Chân dung" + +#: src/olympusmn.cpp:117 +msgid "Candle" +msgstr "Äèn cầy" + +#: src/olympusmn.cpp:118 +msgid "Available Light" +msgstr "Ãnh sáng có sẵn" + +#: src/olympusmn.cpp:119 +msgid "Behind Glass" +msgstr "Äằng sau kính" + +#: src/olympusmn.cpp:120 +msgid "My Mode" +msgstr "Chế độ cá»§a tôi" + +#: src/olympusmn.cpp:121 src/panasonicmn.cpp:142 src/pentaxmn.cpp:596 +#: src/sonymn.cpp:169 +msgid "Pet" +msgstr "Thú cưng" + +#: src/olympusmn.cpp:122 +#, fuzzy +msgid "Underwater Wide1" +msgstr "Dưới nước" + +#: src/olympusmn.cpp:123 +#, fuzzy +msgid "Underwater Macro" +msgstr "Dưới nước" + +#: src/olympusmn.cpp:124 +msgid "Shoot & Select1" +msgstr "" + +#: src/olympusmn.cpp:125 +msgid "Shoot & Select2" +msgstr "" + +#: src/olympusmn.cpp:127 +#, fuzzy +msgid "Digital Image Stabilization" +msgstr "á»”n định hình ảnh" + +#: src/olympusmn.cpp:128 +#, fuzzy +msgid "Auction" +msgstr "Vị trí" + +#: src/olympusmn.cpp:131 +#, fuzzy +msgid "Underwater Wide2" +msgstr "Dưới nước" + +#: src/olympusmn.cpp:133 src/properties.cpp:1019 +msgid "Children" +msgstr "Trẻ em" + +#: src/olympusmn.cpp:135 +#, fuzzy +msgid "Nature Macro" +msgstr "Siêu cận cảnh phóng to" + +#: src/olympusmn.cpp:136 +#, fuzzy +msgid "Underwater Snapshot" +msgstr "Dưới nước" + +#: src/olympusmn.cpp:137 +msgid "Shooting Guide" +msgstr "Hướng dẫn chụp" + +#: src/olympusmn.cpp:145 +msgid "Internal + External" +msgstr "Bên trong và bên ngoài" + +#: src/olympusmn.cpp:176 +#, fuzzy +msgid "Interlaced" +msgstr "Canh giữa" + +#: src/olympusmn.cpp:177 +#, fuzzy +msgid "Progressive" +msgstr "Phiên bản chương trình" + +#: src/olympusmn.cpp:188 +msgid "Thumbnail Image" +msgstr "Hình ảnh thu nhá»" + +#: src/olympusmn.cpp:189 +msgid "Thumbnail image" +msgstr "Hình ảnh thu nhá»" + +#: src/olympusmn.cpp:192 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body Firmware Version" +msgstr "Phiên bản phần vững" + +#: src/olympusmn.cpp:193 src/olympusmn.cpp:750 src/olympusmn.cpp:1034 +#, fuzzy +msgid "Body firmware version" +msgstr "Firmware Version" + +#: src/olympusmn.cpp:195 +msgid "Special Mode" +msgstr "Chế độ đặc biệt" + +#: src/olympusmn.cpp:196 +msgid "Picture taking mode" +msgstr "Chế độ chụp hình ảnh" + +#: src/olympusmn.cpp:204 +msgid "Black & White Mode" +msgstr "Chế độ Äen và Trắng" + +#: src/olympusmn.cpp:205 +msgid "Black and white mode" +msgstr "Chế độ Ä‘en và trắng" + +#: src/olympusmn.cpp:208 +msgid "Digital zoom ratio" +msgstr "Tỉ lệ thu/phóng Ä‘iện tá»­" + +#: src/olympusmn.cpp:210 src/olympusmn.cpp:749 +msgid "Focal Plane Diagonal" +msgstr "" + +#: src/olympusmn.cpp:211 src/olympusmn.cpp:749 +msgid "Focal plane diagonal" +msgstr "" + +#: src/olympusmn.cpp:213 +msgid "Lens Distortion Parameters" +msgstr "" + +#: src/olympusmn.cpp:214 +msgid "Lens distortion parameters" +msgstr "" + +#: src/olympusmn.cpp:216 src/olympusmn.cpp:746 +msgid "Camera Type" +msgstr "Kiểu Ca-me-ra" + +#: src/olympusmn.cpp:217 src/olympusmn.cpp:746 +#, fuzzy +msgid "Camera type" +msgstr "Kiểu Ca-me-ra" + +#: src/olympusmn.cpp:220 +msgid "ASCII format data such as [PictureInfo]" +msgstr "" + +#: src/olympusmn.cpp:222 +#, fuzzy +msgid "Camera ID" +msgstr "Thông tin Máy ảnh" + +#: src/olympusmn.cpp:223 +#, fuzzy +msgid "Camera ID data" +msgstr "Thông tin Máy ảnh" + +#: src/olympusmn.cpp:231 src/olympusmn.cpp:232 src/properties.cpp:544 +#: src/properties.cpp:1302 src/sigmamn.cpp:119 src/sigmamn.cpp:120 +#: src/tags.cpp:545 +msgid "Software" +msgstr "Phần má»m" + +#: src/olympusmn.cpp:234 src/panasonicmn.cpp:738 src/sonymn.cpp:363 +msgid "Preview Image" +msgstr "Xem trước hình ảnh" + +#: src/olympusmn.cpp:235 src/panasonicmn.cpp:738 +msgid "Preview image" +msgstr "Xem trước hình ảnh" + +#: src/olympusmn.cpp:237 +#, fuzzy +msgid "Pre Capture Frames" +msgstr "Dữ liệu thu được" + +#: src/olympusmn.cpp:238 +#, fuzzy +msgid "Pre-capture frames" +msgstr "Chế độ ảnh" + +#: src/olympusmn.cpp:240 +msgid "White Board" +msgstr "Bảng trắng" + +#: src/olympusmn.cpp:241 +msgid "White board" +msgstr "Bảng trắng" + +#: src/olympusmn.cpp:243 +msgid "One Touch WB" +msgstr "" + +#: src/olympusmn.cpp:244 +#, fuzzy +msgid "One touch white balance" +msgstr "Cân bằng trắng" + +#: src/olympusmn.cpp:246 src/olympusmn.cpp:684 +#, fuzzy +msgid "White Balance Bracket" +msgstr "Bù trừ Cân bằng sáng" + +#: src/olympusmn.cpp:247 src/olympusmn.cpp:684 +#, fuzzy +msgid "White balance bracket" +msgstr "Bù trừ cân bằng sáng" + +#: src/olympusmn.cpp:255 src/olympusmn.cpp:256 src/sigmamn.cpp:116 +#: src/sigmamn.cpp:117 +msgid "Firmware" +msgstr "Firmware" + +#: src/olympusmn.cpp:261 +msgid "Data Dump 1" +msgstr "" + +#: src/olympusmn.cpp:262 +#, fuzzy +msgid "Various camera settings 1" +msgstr "Các tùy chỉnh máy ảnh khác nhau" + +#: src/olympusmn.cpp:264 +msgid "Data Dump 2" +msgstr "" + +#: src/olympusmn.cpp:265 +#, fuzzy +msgid "Various camera settings 2" +msgstr "Các tùy chỉnh máy ảnh khác nhau" + +#: src/olympusmn.cpp:268 +msgid "Shutter speed value" +msgstr "Giá trị tốc độ chụp" + +#: src/olympusmn.cpp:271 +#, fuzzy +msgid "ISO speed value" +msgstr "Äá»™ nhạy sáng đã sá»­ dụng" + +#: src/olympusmn.cpp:274 +msgid "Aperture value" +msgstr "Giá trị khẩu độ" + +#: src/olympusmn.cpp:277 +msgid "Brightness value" +msgstr "Giá trị độ sáng" + +#: src/olympusmn.cpp:285 +msgid "Bracket" +msgstr "" + +#: src/olympusmn.cpp:286 +msgid "Exposure compensation value" +msgstr "Giá trị bù trừ phÆ¡i sáng" + +#: src/olympusmn.cpp:288 src/olympusmn.cpp:1022 +msgid "Sensor Temperature" +msgstr "Cảm biến Nhiệt độ" + +#: src/olympusmn.cpp:289 src/olympusmn.cpp:1022 +msgid "Sensor temperature" +msgstr "Cảm biến nhiệt độ" + +#: src/olympusmn.cpp:291 +#, fuzzy +msgid "Lens Temperature" +msgstr "Cảm biến Nhiệt độ" + +#: src/olympusmn.cpp:292 +#, fuzzy +msgid "Lens temperature" +msgstr "Cảm biến nhiệt độ" + +#: src/olympusmn.cpp:294 +msgid "Light Condition" +msgstr "Äiá»u kiện Ãnh sáng" + +#: src/olympusmn.cpp:295 +msgid "Light condition" +msgstr "Äiá»u kiện ánh sáng" + +#: src/olympusmn.cpp:297 +#, fuzzy +msgid "Focus Range" +msgstr "Vùng lấy nét" + +#: src/olympusmn.cpp:298 +#, fuzzy +msgid "Focus range" +msgstr "Vùng lấy nét" + +#: src/olympusmn.cpp:306 +msgid "Zoom" +msgstr "Thu/phóng" + +#: src/olympusmn.cpp:307 src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom step count" +msgstr "Tổng số hình ảnh" + +#: src/olympusmn.cpp:309 +#, fuzzy +msgid "Macro Focus" +msgstr "Chế độ chụp cận cảnh" + +#: src/olympusmn.cpp:310 +msgid "Macro focus step count" +msgstr "" + +#: src/olympusmn.cpp:312 src/olympusmn.cpp:393 +msgid "Sharpness Factor" +msgstr "Hệ số độ sắc nét" + +#: src/olympusmn.cpp:313 src/olympusmn.cpp:394 +msgid "Sharpness factor" +msgstr "Hệ số độ sắc nét" + +#: src/olympusmn.cpp:315 +msgid "Flash Charge Level" +msgstr "Mức độ nạp Ä‘iện đèn nháy" + +#: src/olympusmn.cpp:316 +msgid "Flash charge level" +msgstr "Mức độ nạp Ä‘iện đèn nháy" + +#: src/olympusmn.cpp:318 src/olympusmn.cpp:969 +msgid "Color Matrix" +msgstr "Ma trận màu" + +#: src/olympusmn.cpp:319 src/olympusmn.cpp:969 +msgid "Color matrix" +msgstr "Ma trận màu" + +#: src/olympusmn.cpp:321 +#, fuzzy +msgid "BlackLevel" +msgstr "Cưá»ng độ Äèn chá»›p" + +#: src/olympusmn.cpp:322 src/olympusmn.cpp:974 +#, fuzzy +msgid "Black level" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/olympusmn.cpp:331 src/pentaxmn.cpp:1212 src/pentaxmn.cpp:1213 +msgid "White balance mode" +msgstr "Chế độ cân bằng trắng" + +#: src/olympusmn.cpp:336 src/panasonicmn.cpp:732 +msgid "Red Balance" +msgstr "Cân bằng Ä‘á»" + +#: src/olympusmn.cpp:337 src/pentaxmn.cpp:1218 +msgid "Red balance" +msgstr "Cân bằng Ä‘á»" + +#: src/olympusmn.cpp:339 src/panasonicmn.cpp:733 +msgid "Blue Balance" +msgstr "Cân bằng Xanh" + +#: src/olympusmn.cpp:340 src/panasonicmn.cpp:733 src/pentaxmn.cpp:1215 +msgid "Blue balance" +msgstr "Cân bằng xanh" + +#: src/olympusmn.cpp:342 +msgid "Color Matrix Number" +msgstr "Số ma trận màu" + +#: src/olympusmn.cpp:343 +#, fuzzy +msgid "Color matrix number" +msgstr "Số ma trận màu" + +#: src/olympusmn.cpp:345 +#, fuzzy +msgid "Serial Number 2" +msgstr "Chuá»—i số" + +#: src/olympusmn.cpp:346 +#, fuzzy +msgid "Serial number 2" +msgstr "Chuá»—i số" + +#: src/olympusmn.cpp:373 src/olympusmn.cpp:677 src/pentaxmn.cpp:1308 +#: src/pentaxmn.cpp:1309 +msgid "Flash exposure compensation" +msgstr "Sá»± bù phÆ¡i sáng đèn nháy" + +#: src/olympusmn.cpp:381 src/olympusmn.cpp:1018 +msgid "External Flash Bounce" +msgstr "Nảy đèn nháy bên ngoài" + +#: src/olympusmn.cpp:382 src/olympusmn.cpp:1018 +msgid "External flash bounce" +msgstr "Nảy đèn nháy bên ngoài" + +#: src/olympusmn.cpp:384 src/olympusmn.cpp:1019 +#, fuzzy +msgid "External Flash Zoom" +msgstr "Thu/phóng đèn nháy bên ngoài" + +#: src/olympusmn.cpp:385 src/olympusmn.cpp:1019 +msgid "External flash zoom" +msgstr "Thu/phóng đèn nháy bên ngoài" + +#: src/olympusmn.cpp:387 +msgid "External Flash Mode" +msgstr "Chế độ đèn nháy bên ngoài" + +#: src/olympusmn.cpp:388 +msgid "External flash mode" +msgstr "Chế độ đèn nháy bên ngoài" + +#: src/olympusmn.cpp:396 +msgid "Color Control" +msgstr "Äiá»u khiển màu" + +#: src/olympusmn.cpp:397 +msgid "Color control" +msgstr "Äiá»u khiển màu" + +#: src/olympusmn.cpp:399 +msgid "ValidBits" +msgstr "" + +#: src/olympusmn.cpp:400 src/olympusmn.cpp:976 +msgid "Valid bits" +msgstr "" + +#: src/olympusmn.cpp:402 +#, fuzzy +msgid "CoringFilter" +msgstr "Lá»c Màu" + +#: src/olympusmn.cpp:403 src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring filter" +msgstr "Lá»c màu" + +#: src/olympusmn.cpp:423 +msgid "Compression Ratio" +msgstr "Tá»· lệ nén" + +#: src/olympusmn.cpp:424 +msgid "Compression ratio" +msgstr "Tá»· lệ nén" + +#: src/olympusmn.cpp:427 +msgid "Preview image embedded" +msgstr "Xem trước ảnh nhúng" + +#: src/olympusmn.cpp:430 +msgid "Offset of the preview image" +msgstr "Bù trừ hình ảnh xem trước" + +#: src/olympusmn.cpp:433 +msgid "Size of the preview image" +msgstr "Kích cỡ hình ảnh xem trước" + +#: src/olympusmn.cpp:435 +msgid "CCD Scan Mode" +msgstr "Chế độ quét CCD" + +#: src/olympusmn.cpp:436 +#, fuzzy +msgid "CCD scan mode" +msgstr "Chế độ quét CCD" + +#: src/olympusmn.cpp:441 +msgid "Infinity Lens Step" +msgstr "Bước ống kính vô hạn" + +#: src/olympusmn.cpp:442 +msgid "Infinity lens step" +msgstr "Bước ống kính vô hạn" + +#: src/olympusmn.cpp:444 +msgid "Near Lens Step" +msgstr "Bước ống kính ở gần" + +#: src/olympusmn.cpp:445 +msgid "Near lens step" +msgstr "Bước ống kính ở gần" + +#: src/olympusmn.cpp:447 +msgid "Equipment Info" +msgstr "Thông tin thiết bị" + +#: src/olympusmn.cpp:448 +msgid "Camera equipment sub-IFD" +msgstr "Sub-IFD thiết bị máy ảnh" + +#: src/olympusmn.cpp:451 +msgid "Camera Settings sub-IFD" +msgstr "Sub-IFD thiết lập máy ảnh" + +#: src/olympusmn.cpp:453 +msgid "Raw Development" +msgstr "Sá»± phát triển thô" + +#: src/olympusmn.cpp:454 +msgid "Raw development sub-IFD" +msgstr "Sub-IFD phát triển thô" + +#: src/olympusmn.cpp:456 +msgid "Raw Development 2" +msgstr "Sá»± phát triển thô 2" + +#: src/olympusmn.cpp:457 +msgid "Raw development 2 sub-IFD" +msgstr "Sub-IFD sá»± phát triển thô 2" + +#: src/olympusmn.cpp:460 +msgid "Image processing sub-IFD" +msgstr "Sub-IFD sá»± xá»­ lý ảnh" + +#: src/olympusmn.cpp:462 +msgid "Focus Info" +msgstr "Thông tin tiêu cá»±" + +#: src/olympusmn.cpp:463 +msgid "Focus sub-IFD" +msgstr "Sub-IFD tiêu cá»±" + +#: src/olympusmn.cpp:465 +msgid "Raw Info" +msgstr "Thông tin thô" + +#: src/olympusmn.cpp:466 +msgid "Raw sub-IFD" +msgstr "Sub-IFD thô" + +#: src/olympusmn.cpp:470 +msgid "Unknown OlympusMakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:486 +#, fuzzy +msgid "Program-shift" +msgstr "Chương trình" + +#: src/olympusmn.cpp:491 +msgid "Center-weighted average" +msgstr "" + +#: src/olympusmn.cpp:493 +msgid "ESP" +msgstr "ESP" + +#: src/olympusmn.cpp:494 +msgid "Pattern+AF" +msgstr "" + +#: src/olympusmn.cpp:495 +msgid "Spot+Highlight control" +msgstr "" + +#: src/olympusmn.cpp:496 +#, fuzzy +msgid "Spot+Shadow control" +msgstr "Äiá»u khiển màu" + +#: src/olympusmn.cpp:508 src/olympusmn.cpp:1439 +#, fuzzy +msgid "Single AF" +msgstr "ÄÆ¡n" + +#: src/olympusmn.cpp:509 src/olympusmn.cpp:1440 +msgid "Sequential shooting AF" +msgstr "" + +#: src/olympusmn.cpp:511 src/olympusmn.cpp:1442 src/sonymn.cpp:236 +msgid "Multi AF" +msgstr "" + +#: src/olympusmn.cpp:517 +#, fuzzy +msgid "AF Not Used" +msgstr "Äiểm Lấy nét tá»± động Äã dùng" + +#: src/olympusmn.cpp:518 +#, fuzzy +msgid "AF Used" +msgstr "Äiểm Lấy nét tá»± động Äã dùng" + +#: src/olympusmn.cpp:523 +msgid "Not Ready" +msgstr "Chưa sẵn sàng" + +#: src/olympusmn.cpp:524 +msgid "Ready" +msgstr "Sẵn sàng" + +#: src/olympusmn.cpp:531 +msgid "Fill-in" +msgstr "" + +#: src/olympusmn.cpp:533 +msgid "Slow-sync" +msgstr "Äồng bá»™ chậm" + +#: src/olympusmn.cpp:534 +msgid "Forced On" +msgstr "" + +#: src/olympusmn.cpp:535 +msgid "2nd Curtain" +msgstr "" + +#: src/olympusmn.cpp:541 +#, fuzzy +msgid "Channel 1, Low" +msgstr "Kênh 1, Cao" + +#: src/olympusmn.cpp:542 +#, fuzzy +msgid "Channel 2, Low" +msgstr "Kênh 2, Cao" + +#: src/olympusmn.cpp:543 +#, fuzzy +msgid "Channel 3, Low" +msgstr "Kênh 3, Cao" + +#: src/olympusmn.cpp:544 +#, fuzzy +msgid "Channel 4, Low" +msgstr "Kênh 4, Cao" + +#: src/olympusmn.cpp:545 +#, fuzzy +msgid "Channel 1, Mid" +msgstr "Kênh 1, Cao" + +#: src/olympusmn.cpp:546 +#, fuzzy +msgid "Channel 2, Mid" +msgstr "Kênh 2, Cao" + +#: src/olympusmn.cpp:547 +#, fuzzy +msgid "Channel 3, Mid" +msgstr "Kênh 3, Cao" + +#: src/olympusmn.cpp:548 +#, fuzzy +msgid "Channel 4, Mid" +msgstr "Kênh 4, Cao" + +#: src/olympusmn.cpp:549 +msgid "Channel 1, High" +msgstr "Kênh 1, Cao" + +#: src/olympusmn.cpp:550 +msgid "Channel 2, High" +msgstr "Kênh 2, Cao" + +#: src/olympusmn.cpp:551 +msgid "Channel 3, High" +msgstr "Kênh 3, Cao" + +#: src/olympusmn.cpp:552 +msgid "Channel 4, High" +msgstr "Kênh 4, Cao" + +#: src/olympusmn.cpp:566 +msgid "Auto (Keep Warm Color Off" +msgstr "" + +#: src/olympusmn.cpp:567 +msgid "7500K (Fine Weather with Shade)" +msgstr "7500k (Thá»i tiết đẹp vá»›i bóng râm)" + +#: src/olympusmn.cpp:568 +msgid "6000K (Cloudy)" +msgstr "6000K (Trá»i mây)" + +#: src/olympusmn.cpp:569 +msgid "5300K (Fine Weather)" +msgstr "5300K (Thá»i tiết tốt)" + +#: src/olympusmn.cpp:570 +msgid "3000K (Tungsten light)" +msgstr "" + +#: src/olympusmn.cpp:571 src/olympusmn.cpp:578 +msgid "3600K (Tungsten light-like)" +msgstr "" + +#: src/olympusmn.cpp:572 +#, fuzzy +msgid "Auto Setup" +msgstr "Khẩu độ tá»± động" + +#: src/olympusmn.cpp:573 +#, fuzzy +msgid "5500K (Flash)" +msgstr "Tá»± động (Äèn chá»›p)" + +#: src/olympusmn.cpp:574 +msgid "6600K (Daylight fluorescent)" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/olympusmn.cpp:575 +msgid "4500K (Neutral white fluorescent)" +msgstr "4500K (Ãnh sáng huỳnh quang trắng tá»± nhiên)" + +#: src/olympusmn.cpp:576 +msgid "4000K (Cool white fluorescent)" +msgstr "4000K (Ãnh sáng trắng lạnh)" + +#: src/olympusmn.cpp:577 +#, fuzzy +msgid "White Fluorescent" +msgstr "Äiểm trắng" + +#: src/olympusmn.cpp:580 +msgid "One Touch WB 1" +msgstr "" + +#: src/olympusmn.cpp:581 +msgid "One Touch WB 2" +msgstr "" + +#: src/olympusmn.cpp:582 +msgid "One Touch WB 3" +msgstr "" + +#: src/olympusmn.cpp:583 +msgid "One Touch WB 4" +msgstr "" + +#: src/olympusmn.cpp:584 +msgid "Custom WB 1" +msgstr "Tùy chỉnh cân bằng sáng 1" + +#: src/olympusmn.cpp:585 +msgid "Custom WB 2" +msgstr "Tùy chỉnh cân bằng sáng 2" + +#: src/olympusmn.cpp:586 +msgid "Custom WB 3" +msgstr "Tùy chỉnh cân bằng sáng 3" + +#: src/olympusmn.cpp:587 +msgid "Custom WB 4" +msgstr "Tùy chỉnh cân bằng sáng 4" + +#: src/olympusmn.cpp:593 +msgid "CM1 (Red Enhance)" +msgstr "CM1 (Tăng Ä‘á»)" + +#: src/olympusmn.cpp:594 +msgid "CM2 (Green Enhance)" +msgstr "CM2 (Tăng xanh lá)" + +#: src/olympusmn.cpp:595 +msgid "CM3 (Blue Enhance)" +msgstr "CM3 (Tăng xanh dương)" + +#: src/olympusmn.cpp:596 +msgid "CM4 (Skin Tones)" +msgstr "" + +#: src/olympusmn.cpp:603 src/olympusmn.cpp:783 src/olympusmn.cpp:848 +msgid "Pro Photo RGB" +msgstr "" + +#: src/olympusmn.cpp:609 src/olympusmn.cpp:703 +msgid "Noise Filter" +msgstr "Bá»™ lá»c nhiá»…u" + +#: src/olympusmn.cpp:610 +#, fuzzy +msgid "Noise Filter (ISO Boost)" +msgstr "Bá»™ lá»c nhiá»…u" + +#: src/olympusmn.cpp:618 src/olympusmn.cpp:861 src/pentaxmn.cpp:975 +msgid "Muted" +msgstr "" + +#: src/olympusmn.cpp:620 src/olympusmn.cpp:862 +msgid "Monotone" +msgstr "ÄÆ¡n sắc" + +#: src/olympusmn.cpp:646 +msgid "SQ" +msgstr "SQ" + +#: src/olympusmn.cpp:647 +msgid "HQ" +msgstr "HQ" + +#: src/olympusmn.cpp:648 +msgid "SHQ" +msgstr "SHQ" + +#: src/olympusmn.cpp:655 src/panasonicmn.cpp:92 +msgid "On, Mode 1" +msgstr "Mở, Chế độ 1" + +#: src/olympusmn.cpp:656 src/panasonicmn.cpp:94 +msgid "On, Mode 2" +msgstr "Mở, Chế độ 2" + +#: src/olympusmn.cpp:657 src/panasonicmn.cpp:96 +msgid "On, Mode 3" +msgstr "Mở, Chế độ 3" + +#: src/olympusmn.cpp:661 +msgid "Camera Settings Version" +msgstr "Phiên bản thiết lập máy ảnh" + +#: src/olympusmn.cpp:661 +msgid "Camera settings version" +msgstr "Phiên bản thiết lập máy ảnh" + +#: src/olympusmn.cpp:662 +msgid "PreviewImage Valid" +msgstr "Kiểm tra ảnh xem trước" + +#: src/olympusmn.cpp:662 +msgid "Preview image valid" +msgstr "Kiểm tra ảnh xem trước" + +#: src/olympusmn.cpp:663 +msgid "PreviewImage Start" +msgstr "Bắt đầu ảnh xem trước" + +#: src/olympusmn.cpp:663 +msgid "Preview image start" +msgstr "Bắt đầu ảnh xem trước" + +#: src/olympusmn.cpp:664 +msgid "PreviewImage Length" +msgstr "Äá»™ dài ảnh xem trước" + +#: src/olympusmn.cpp:664 +msgid "Preview image length" +msgstr "Äá»™ dài ảnh xem trước" + +#: src/olympusmn.cpp:666 +msgid "Auto exposure lock" +msgstr "Khoá tá»± động phÆ¡i sáng" + +#: src/olympusmn.cpp:668 +msgid "Exposure Shift" +msgstr "Dịch chuyển phÆ¡i sáng" + +#: src/olympusmn.cpp:668 +msgid "Exposure shift" +msgstr "Dịch chuyển phÆ¡i sáng" + +#: src/olympusmn.cpp:671 +msgid "Focus Process" +msgstr "Tiến trình lấy nét" + +#: src/olympusmn.cpp:671 +msgid "Focus process" +msgstr "Quá trình lấy nétTiến trình lấy nét" + +#: src/olympusmn.cpp:672 +msgid "AF Search" +msgstr "Tìm kiếm lấy nét tá»± động" + +#: src/olympusmn.cpp:672 +msgid "AF search" +msgstr "Tìm kiếm lấy nét tá»± động" + +#: src/olympusmn.cpp:673 +msgid "AF Areas" +msgstr "Vùng lấy nét tá»± động" + +#: src/olympusmn.cpp:673 +msgid "AF areas" +msgstr "Vùng lấy nét từ động" + +#: src/olympusmn.cpp:674 +#, fuzzy +msgid "AFPointSelected" +msgstr "Lá»±a chá»n Ä‘iểm lấy nét tá»± động" + +#: src/olympusmn.cpp:675 +msgid "AF Fine Tune Adjust" +msgstr "" + +#: src/olympusmn.cpp:675 +msgid "AF fine tune adjust" +msgstr "" + +#: src/olympusmn.cpp:678 +msgid "Flash Remote Control" +msgstr "Äiá»u khiển từ xa đèn chá»›p" + +#: src/olympusmn.cpp:678 +msgid "Flash remote control" +msgstr "Äiá»u khiển từ xa đèn chá»›p" + +#: src/olympusmn.cpp:679 +msgid "Flash Control Mode" +msgstr "Chế độ Ä‘iá»u khiển đèn chá»›p" + +#: src/olympusmn.cpp:679 +msgid "Flash control mode" +msgstr "Chế độ Ä‘iá»u khiển đèn chá»›p" + +#: src/olympusmn.cpp:680 +msgid "Flash Intensity" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/olympusmn.cpp:680 +msgid "Flash intensity" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual Flash Strength" +msgstr "Äá»™ mạnh đèn chá»›p" + +#: src/olympusmn.cpp:681 +#, fuzzy +msgid "Manual flash strength" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:478 +msgid "White Balance 2" +msgstr "Cân bằng Trắng 2" + +#: src/olympusmn.cpp:682 src/sonymn.cpp:479 +msgid "White balance 2" +msgstr "Cân bằng trắng 2" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White Balance Temperature" +msgstr "Bảng cân bằng trắng" + +#: src/olympusmn.cpp:683 +#, fuzzy +msgid "White balance temperature" +msgstr "Bảng cân bằng trắng" + +#: src/olympusmn.cpp:685 +msgid "Custom Saturation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/olympusmn.cpp:685 +msgid "Custom saturation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/olympusmn.cpp:686 +msgid "Modified Saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/olympusmn.cpp:686 +msgid "Modified saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/olympusmn.cpp:687 src/olympusmn.cpp:1087 +msgid "Contrast Setting" +msgstr "Thiết lập độ tương phản" + +#: src/olympusmn.cpp:688 src/olympusmn.cpp:1088 +msgid "Sharpness Setting" +msgstr "Thiết lập độ sắc nét" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion Correction" +msgstr "Giảm rung" + +#: src/olympusmn.cpp:692 src/olympusmn.cpp:982 +#, fuzzy +msgid "Distortion correction" +msgstr "Giảm rung" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 src/panasonicmn.cpp:516 +#, fuzzy +msgid "Shading Compensation" +msgstr "Bù trừ phÆ¡i sáng" + +#: src/olympusmn.cpp:693 src/olympusmn.cpp:983 +#, fuzzy +msgid "Shading compensation" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression Factor" +msgstr "Tá»· lệ nén" + +#: src/olympusmn.cpp:694 +#, fuzzy +msgid "Compression factor" +msgstr "Tá»· lệ nén" + +#: src/olympusmn.cpp:695 src/olympusmn.cpp:904 +#, fuzzy +msgid "Gradation" +msgstr "Thá»i lượng" + +#: src/olympusmn.cpp:696 src/olympusmn.cpp:898 src/pentaxmn.cpp:1268 +#: src/pentaxmn.cpp:1269 +msgid "Picture mode" +msgstr "Chế độ ảnh" + +#: src/olympusmn.cpp:697 +msgid "Picture Mode Saturation" +msgstr "Chế độ ảnh bão hòa" + +#: src/olympusmn.cpp:697 src/olympusmn.cpp:899 +msgid "Picture mode saturation" +msgstr "Chế độ ảnh bão hòa" + +#: src/olympusmn.cpp:698 +msgid "Picture Mode Hue" +msgstr "Chế độ ảnh màu sắc" + +#: src/olympusmn.cpp:698 +msgid "Picture mode hue" +msgstr "Chế độ ảnh màu sắc" + +#: src/olympusmn.cpp:699 +msgid "Picture Mode Contrast" +msgstr "Chế độ ảnh tương phản" + +#: src/olympusmn.cpp:699 src/olympusmn.cpp:900 +msgid "Picture mode contrast" +msgstr "Chế độ ảnh tương phản" + +#: src/olympusmn.cpp:700 +msgid "Picture Mode Sharpness" +msgstr "Chế độ ảnh sắc nét" + +#: src/olympusmn.cpp:700 src/olympusmn.cpp:901 +msgid "Picture mode sharpness" +msgstr "Chế độ ảnh sắc nét" + +#: src/olympusmn.cpp:701 +msgid "Picture Mode BW Filter" +msgstr "Chế độ ảnh bá»™ lá»c cân bằng trắng" + +#: src/olympusmn.cpp:701 +msgid "Picture mode BW filter" +msgstr "Chế độ ảnh bá»™ lá»c cân bằng trắng" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture Mode Tone" +msgstr "Chế độ ảnh màu sắc" + +#: src/olympusmn.cpp:702 +#, fuzzy +msgid "Picture mode tone" +msgstr "Chế độ ảnh màu sắc" + +#: src/olympusmn.cpp:703 +msgid "Noise filter" +msgstr "Lá»c nhiá»…u" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art Filter" +msgstr "Lá»c" + +#: src/olympusmn.cpp:704 +#, fuzzy +msgid "Art filter" +msgstr "Lá»c màu" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic Filter" +msgstr "Bá»™ lá»c nhiá»…u" + +#: src/olympusmn.cpp:705 +#, fuzzy +msgid "Magic filter" +msgstr "Lá»c Ä‘iện tá»­" + +#: src/olympusmn.cpp:707 +msgid "Panorama Mode" +msgstr "Chế độ toàn cảnh" + +#: src/olympusmn.cpp:707 +msgid "Panorama mode" +msgstr "Chế độ toàn cảnh" + +#: src/olympusmn.cpp:708 +msgid "Image Quality 2" +msgstr "Chất lượng hình ảnh 2" + +#: src/olympusmn.cpp:708 +msgid "Image quality 2" +msgstr "Chất lượng hình ảnh 2" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer Pressure" +msgstr "" + +#: src/olympusmn.cpp:710 src/panasonicmn.cpp:514 +msgid "Manometer pressure" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer Reading" +msgstr "" + +#: src/olympusmn.cpp:711 +msgid "Manometer reading" +msgstr "" + +#: src/olympusmn.cpp:712 +msgid "Extended WB Detect" +msgstr "" + +#: src/olympusmn.cpp:712 +msgid "Extended WB detect" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level Gauge Roll" +msgstr "" + +#: src/olympusmn.cpp:713 +msgid "Level gauge roll" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level Gauge Pitch" +msgstr "" + +#: src/olympusmn.cpp:714 +msgid "Level gauge pitch" +msgstr "" + +#: src/olympusmn.cpp:716 +#, fuzzy +msgid "Unknown OlympusCs tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:727 +msgid "Simple E-System" +msgstr "" + +#: src/olympusmn.cpp:728 +msgid "E-System" +msgstr "" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment Version" +msgstr "Thông tin thiết bị" + +#: src/olympusmn.cpp:745 +#, fuzzy +msgid "Equipment version" +msgstr "Thông tin thiết bị" + +#: src/olympusmn.cpp:747 +#, fuzzy +msgid "Serial number" +msgstr "Chuá»—i số" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 src/tags.cpp:1861 +#, fuzzy +msgid "Lens Serial Number" +msgstr "Chuá»—i số" + +#: src/olympusmn.cpp:752 src/panasonicmn.cpp:494 +#, fuzzy +msgid "Lens serial number" +msgstr "Dãy số bên trong" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens Firmware Version" +msgstr "Phiên bản phần vững" + +#: src/olympusmn.cpp:754 +#, fuzzy +msgid "Lens firmware version" +msgstr "Firmware Version" + +#: src/olympusmn.cpp:759 +msgid "Max Aperture At Current Focal" +msgstr "Khẩu độ Tối Ä‘a Tại Tiêu cá»± Hiện tại" + +#: src/olympusmn.cpp:759 +msgid "Max aperture at current focal" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± hiện tại" + +#: src/olympusmn.cpp:760 +msgid "Lens Properties" +msgstr "" + +#: src/olympusmn.cpp:760 +msgid "Lens properties" +msgstr "" + +#: src/olympusmn.cpp:761 +#, fuzzy +msgid "Extender" +msgstr "Ngoài" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender Serial Number" +msgstr "Chuá»—i số" + +#: src/olympusmn.cpp:762 +#, fuzzy +msgid "Extender serial number" +msgstr "Dãy số bên trong" + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender Model" +msgstr "Kiểu ống kính." + +#: src/olympusmn.cpp:763 +#, fuzzy +msgid "Extender model" +msgstr "Kiểu Ca-me-ra" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender Firmware Version" +msgstr "Phiên bản phần vững" + +#: src/olympusmn.cpp:764 +#, fuzzy +msgid "Extender firmwareversion" +msgstr "Firmware Version" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion Lens" +msgstr "Phiên bản" + +#: src/olympusmn.cpp:765 src/panasonicmn.cpp:471 +#, fuzzy +msgid "Conversion lens" +msgstr "Phiên bản" + +#: src/olympusmn.cpp:767 src/properties.cpp:402 +#, fuzzy +msgid "Flash Model" +msgstr "Mẫu đèn chá»›p" + +#: src/olympusmn.cpp:767 +#, fuzzy +msgid "Flash model" +msgstr "Chế độ đèn chá»›p" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash Firmware Version" +msgstr "Phiên bản phần vững" + +#: src/olympusmn.cpp:768 +#, fuzzy +msgid "Flash firmware version" +msgstr "Firmware Version" + +#: src/olympusmn.cpp:769 +#, fuzzy +msgid "FlashSerialNumber" +msgstr "Chuá»—i số" + +#: src/olympusmn.cpp:771 +#, fuzzy +msgid "Unknown OlympusEq tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:788 src/olympusmn.cpp:853 +msgid "High Speed" +msgstr "Tốc độ cao" + +#: src/olympusmn.cpp:789 src/olympusmn.cpp:810 src/olympusmn.cpp:854 +#, fuzzy +msgid "High Function" +msgstr "Äiá»u kiện Ãnh sáng" + +#: src/olympusmn.cpp:790 +#, fuzzy +msgid "Advanced High Speed" +msgstr "Tốc độ cao" + +#: src/olympusmn.cpp:791 +msgid "Advanced High Function" +msgstr "" + +#: src/olympusmn.cpp:796 +msgid "Original" +msgstr "Nguyên gốc" + +#: src/olympusmn.cpp:797 +msgid "Edited (Landscape)" +msgstr "Äã chỉnh sá»­a (Phong cảnh)" + +#: src/olympusmn.cpp:798 src/olympusmn.cpp:799 +msgid "Edited (Portrait)" +msgstr "Äã chỉnh sá»­a (Chân dung)" + +#: src/olympusmn.cpp:804 +#, fuzzy +msgid "WB Color Temp" +msgstr "Tông màu" + +#: src/olympusmn.cpp:805 +msgid "WB Gray Point" +msgstr "" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw Development Version" +msgstr "Sá»± phát triển thô 2" + +#: src/olympusmn.cpp:815 +#, fuzzy +msgid "Raw development version" +msgstr "Sá»± phát triển thô 2" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 src/properties.cpp:583 +#: src/tags.cpp:829 +msgid "Exposure Bias Value" +msgstr "Giá trị Bù trừ PhÆ¡i sáng" + +#: src/olympusmn.cpp:816 src/olympusmn.cpp:886 +msgid "Exposure bias value" +msgstr "Giá trị bù trừ phÆ¡i sáng" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White Balance Value" +msgstr "Giá trị Cân bằng Sáng" + +#: src/olympusmn.cpp:817 src/olympusmn.cpp:888 +msgid "White balance value" +msgstr "Giá trị cân bằng sáng" + +#: src/olympusmn.cpp:818 src/olympusmn.cpp:889 +#, fuzzy +msgid "WB Fine Adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/olympusmn.cpp:818 +#, fuzzy +msgid "WB fine adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:841 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray Point" +msgstr "Äiểm lấy nét tá»± động" + +#: src/olympusmn.cpp:819 src/olympusmn.cpp:890 +#, fuzzy +msgid "Gray point" +msgstr "Äiểm Ä‘en" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation Emphasis" +msgstr "" + +#: src/olympusmn.cpp:820 src/olympusmn.cpp:893 +msgid "Saturation emphasis" +msgstr "" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +#, fuzzy +msgid "Memory Color Emphasis" +msgstr "Màu sắc cá»§a tôi" + +#: src/olympusmn.cpp:821 src/olympusmn.cpp:894 +msgid "Memory color emphasis" +msgstr "" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast Value" +msgstr "Giá trị Tương phản" + +#: src/olympusmn.cpp:822 src/olympusmn.cpp:891 +msgid "Contrast value" +msgstr "Giá trị tương phản" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness Value" +msgstr "Äá»™ mịn" + +#: src/olympusmn.cpp:823 src/olympusmn.cpp:892 +#, fuzzy +msgid "Sharpness value" +msgstr "Äá»™ mịn" + +#: src/olympusmn.cpp:825 src/olympusmn.cpp:897 +msgid "Engine" +msgstr "Äá»™ng cÆ¡" + +#: src/olympusmn.cpp:827 +#, fuzzy +msgid "Edit status" +msgstr "Tùy chỉnh trạng thái" + +#: src/olympusmn.cpp:828 +msgid "Settings" +msgstr "Tùy chỉnh" + +#: src/olympusmn.cpp:830 +#, fuzzy +msgid "Unknown OlympusRd tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw Development 2 Version" +msgstr "Sá»± phát triển thô 2" + +#: src/olympusmn.cpp:885 +#, fuzzy +msgid "Raw development 2 version" +msgstr "Sá»± phát triển thô 2" + +#: src/olympusmn.cpp:889 +#, fuzzy +msgid "White balance fine adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/olympusmn.cpp:899 +#, fuzzy +msgid "PM Saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/olympusmn.cpp:900 +#, fuzzy +msgid "PM Contrast" +msgstr "Tương phản" + +#: src/olympusmn.cpp:901 +#, fuzzy +msgid "PM Sharpness" +msgstr "Äá»™ mịn" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW Filter" +msgstr "Chế độ ảnh bá»™ lá»c cân bằng trắng" + +#: src/olympusmn.cpp:902 +#, fuzzy +msgid "PM BW filter" +msgstr "Chế độ ảnh bá»™ lá»c cân bằng trắng" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM Picture Tone" +msgstr "Chế độ ảnh" + +#: src/olympusmn.cpp:903 +#, fuzzy +msgid "PM picture tone" +msgstr "Chế độ ảnh" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto Gradation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/olympusmn.cpp:906 +#, fuzzy +msgid "Auto gradation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "PM Noise Filter" +msgstr "Bá»™ lá»c nhiá»…u" + +#: src/olympusmn.cpp:907 +#, fuzzy +msgid "Picture mode noise filter" +msgstr "Chế độ ảnh bá»™ lá»c cân bằng trắng" + +#: src/olympusmn.cpp:909 +#, fuzzy +msgid "Unknown OlympusRd2 tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:920 +#, fuzzy +msgid "On (2 frames)" +msgstr "Mở (2)" + +#: src/olympusmn.cpp:921 +#, fuzzy +msgid "On (3 frames)" +msgstr "Mở (3)" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image Processing Version" +msgstr "Sub-IFD sá»± xá»­ lý ảnh" + +#: src/olympusmn.cpp:938 +#, fuzzy +msgid "Image processing version" +msgstr "Sub-IFD sá»± xá»­ lý ảnh" + +#: src/olympusmn.cpp:940 +msgid "WB RB Levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:940 +msgid "WB RB levels 3000K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB Levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:941 +msgid "WB RB levels 3300K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB Levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:942 +msgid "WB RB levels 3600K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB Levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:943 +msgid "WB RB levels 3900K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB Levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:944 +msgid "WB RB levels 4000K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB Levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:945 +msgid "WB RB levels 4300K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB Levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:946 +msgid "WB RB levels 4500K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB Levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:947 +msgid "WB RB levels 4800K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB Levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:948 +msgid "WB RB levels 5300K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB Levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:949 +msgid "WB RB levels 6000K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB Levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:950 +msgid "WB RB levels 6600K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB Levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:951 +msgid "WB RB levels 7500K" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB Levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:952 +msgid "WB RB levels CWB1" +msgstr "" + +#: src/olympusmn.cpp:953 +msgid "WB RB Levels CWB2" +msgstr "" + +#: src/olympusmn.cpp:953 +msgid "WB RB levels CWB2" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB Levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:954 +msgid "WB RB levels CWB3" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB Levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:955 +msgid "WB RB levels CWB4" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G Level 3000K" +msgstr "" + +#: src/olympusmn.cpp:956 +msgid "WB G level 3000K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G Level 3300K" +msgstr "" + +#: src/olympusmn.cpp:957 +msgid "WB G level 3300K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G Level 3600K" +msgstr "" + +#: src/olympusmn.cpp:958 +msgid "WB G level 3600K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G Level 3900K" +msgstr "" + +#: src/olympusmn.cpp:959 +msgid "WB G level 3900K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G Level 4000K" +msgstr "" + +#: src/olympusmn.cpp:960 +msgid "WB G level 4000K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G Level 4300K" +msgstr "" + +#: src/olympusmn.cpp:961 +msgid "WB G level 4300K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G Level 4500K" +msgstr "" + +#: src/olympusmn.cpp:962 +msgid "WB G level 4500K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G Level 4800K" +msgstr "" + +#: src/olympusmn.cpp:963 +msgid "WB G level 4800K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G Level 5300K" +msgstr "" + +#: src/olympusmn.cpp:964 +msgid "WB G level 5300K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G Level 6000K" +msgstr "" + +#: src/olympusmn.cpp:965 +msgid "WB G level 6000K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G Level 6600K" +msgstr "" + +#: src/olympusmn.cpp:966 +msgid "WB G level 6600K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G Level 7500K" +msgstr "" + +#: src/olympusmn.cpp:967 +msgid "WB G level 7500K" +msgstr "" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G Level" +msgstr "Mức Pin" + +#: src/olympusmn.cpp:968 +#, fuzzy +msgid "WB G level" +msgstr "Mức pin" + +#: src/olympusmn.cpp:970 +msgid "Enhancer" +msgstr "" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer Values" +msgstr "Giá trị Cân bằng Sáng" + +#: src/olympusmn.cpp:971 +#, fuzzy +msgid "Enhancer values" +msgstr "Giá trị cân bằng sáng" + +#: src/olympusmn.cpp:972 src/olympusmn.cpp:1074 +#, fuzzy +msgid "Coring Filter" +msgstr "Lá»c Màu" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring Values" +msgstr "Giá trị Tương phản" + +#: src/olympusmn.cpp:973 src/olympusmn.cpp:1075 +#, fuzzy +msgid "Coring values" +msgstr "Giá trị tương phản" + +#: src/olympusmn.cpp:974 src/tags.cpp:915 +#, fuzzy +msgid "Black Level" +msgstr "Cưá»ng độ Äèn chá»›p" + +#: src/olympusmn.cpp:975 +msgid "Gain Base" +msgstr "" + +#: src/olympusmn.cpp:975 +msgid "Gain base" +msgstr "" + +#: src/olympusmn.cpp:976 +msgid "Valid Bits" +msgstr "" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 src/properties.cpp:470 +#, fuzzy +msgid "Crop Left" +msgstr "Trái" + +#: src/olympusmn.cpp:977 src/olympusmn.cpp:1079 +#, fuzzy +msgid "Crop left" +msgstr "trên, trái" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 src/properties.cpp:469 +msgid "Crop Top" +msgstr "" + +#: src/olympusmn.cpp:978 src/olympusmn.cpp:1080 +msgid "Crop top" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 src/properties.cpp:474 +msgid "Crop Width" +msgstr "" + +#: src/olympusmn.cpp:979 src/olympusmn.cpp:1081 +msgid "Crop width" +msgstr "" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 src/properties.cpp:475 +#, fuzzy +msgid "Crop Height" +msgstr "Bản quyá»n" + +#: src/olympusmn.cpp:980 src/olympusmn.cpp:1082 +#, fuzzy +msgid "Crop height" +msgstr "Bản quyá»n" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple Exposure Mode" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/olympusmn.cpp:984 +#, fuzzy +msgid "Multiple exposure mode" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/olympusmn.cpp:985 src/sonymn.cpp:693 src/sonymn.cpp:694 +msgid "Aspect Ratio" +msgstr "" + +#: src/olympusmn.cpp:985 +msgid "Aspect ratio" +msgstr "" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect Frame" +msgstr "Tên vật thể" + +#: src/olympusmn.cpp:986 +#, fuzzy +msgid "Aspect frame" +msgstr "Tên vật thể" + +#: src/olympusmn.cpp:987 src/panasonicmn.cpp:573 src/pentaxmn.cpp:278 +msgid "Face Detect" +msgstr "" + +#: src/olympusmn.cpp:987 src/olympusmn.cpp:1443 src/olympusmn.cpp:1455 +msgid "Face detect" +msgstr "" + +#: src/olympusmn.cpp:988 +msgid "Face Detect Area" +msgstr "" + +#: src/olympusmn.cpp:988 +msgid "Face detect area" +msgstr "" + +#: src/olympusmn.cpp:990 +#, fuzzy +msgid "Unknown OlympusIp tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:1000 +msgid "Bounce or Off" +msgstr "" + +#: src/olympusmn.cpp:1001 +msgid "Direct" +msgstr "" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus Info Version" +msgstr "Thông tin tiêu cá»±" + +#: src/olympusmn.cpp:1005 +#, fuzzy +msgid "Focus info version" +msgstr "Vị trí Lấy nét" + +#: src/olympusmn.cpp:1006 +#, fuzzy +msgid "Auto Focus" +msgstr "Lấy nét tá»± động" + +#: src/olympusmn.cpp:1007 +msgid "Scene Detect" +msgstr "" + +#: src/olympusmn.cpp:1007 +msgid "Scene detect" +msgstr "" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene Area" +msgstr "Vùng lấy nét" + +#: src/olympusmn.cpp:1008 +#, fuzzy +msgid "Scene area" +msgstr "Vùng lấy nét" + +#: src/olympusmn.cpp:1009 +msgid "Scene Detect Data" +msgstr "" + +#: src/olympusmn.cpp:1009 +msgid "Scene detect data" +msgstr "" + +#: src/olympusmn.cpp:1010 +#, fuzzy +msgid "Zoom Step Count" +msgstr "Tổng số Hình ảnh" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus Step Count" +msgstr "Lấy nét Liên tục" + +#: src/olympusmn.cpp:1011 +#, fuzzy +msgid "Focus step count" +msgstr "Vị trí Lấy nét" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus Step Infinity" +msgstr "Thông tin tiêu cá»±" + +#: src/olympusmn.cpp:1012 +#, fuzzy +msgid "Focus step infinity" +msgstr "Vị trí Lấy nét" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus Step Near" +msgstr "Kiểu lấy nét" + +#: src/olympusmn.cpp:1013 +#, fuzzy +msgid "Focus step near" +msgstr "Khoảng cách Lấy nét" + +#: src/olympusmn.cpp:1016 +#, fuzzy +msgid "External Flash" +msgstr "Äèn chá»›p gắn ngoài" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External Flash Guide Number" +msgstr "Chế độ đèn nháy bên ngoài" + +#: src/olympusmn.cpp:1017 +#, fuzzy +msgid "External flash guide number" +msgstr "Nảy đèn nháy bên ngoài" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual Flash" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/olympusmn.cpp:1021 +#, fuzzy +msgid "Manual flash" +msgstr "Äiá»u khiển đèn chá»›p thá»§ công" + +#: src/olympusmn.cpp:1025 +#, fuzzy +msgid "Unknown OlympusFi tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:1036 +#, fuzzy +msgid "Unknown OlympusFe tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:1049 +#, fuzzy +msgid "Fine Weather" +msgstr "5300K (Thá»i tiết tốt)" + +#: src/olympusmn.cpp:1050 +msgid "Tungsten (incandescent)" +msgstr "" + +#: src/olympusmn.cpp:1051 +#, fuzzy +msgid "Evening Sunlight" +msgstr "Buổi chiá»u" + +#: src/olympusmn.cpp:1052 +#, fuzzy +msgid "Daylight Fluorescent (D 5700 - 7100K)" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/olympusmn.cpp:1053 +msgid "Day White Fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/olympusmn.cpp:1054 +#, fuzzy +msgid "Cool White Fluorescent (W 3900 - 4500K)" +msgstr "4000K (Ãnh sáng trắng lạnh)" + +#: src/olympusmn.cpp:1055 +msgid "White Fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/olympusmn.cpp:1056 +#, fuzzy +msgid "One Touch White Balance" +msgstr "Cân bằng trắng" + +#: src/olympusmn.cpp:1057 +#, fuzzy +msgid "Custom 1-4" +msgstr "Tùy chỉnh 1" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw Info Version" +msgstr "Thông tin thô" + +#: src/olympusmn.cpp:1061 +#, fuzzy +msgid "Raw info version" +msgstr "Phiên bản thiết lập máy ảnh" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB Levels Used" +msgstr "" + +#: src/olympusmn.cpp:1062 +msgid "WB_RB levels used" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB Levels Auto" +msgstr "" + +#: src/olympusmn.cpp:1063 +msgid "WB_RB levels auto" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB Levels Shade" +msgstr "" + +#: src/olympusmn.cpp:1064 +msgid "WB_RB levels shade" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB Levels Cloudy" +msgstr "" + +#: src/olympusmn.cpp:1065 +msgid "WB_RB levels cloudy" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB Levels Fine Weather" +msgstr "" + +#: src/olympusmn.cpp:1066 +msgid "WB_RB levels fine weather" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB Levels Tungsten" +msgstr "" + +#: src/olympusmn.cpp:1067 +msgid "WB_RB levels tungsten" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB Levels Evening Sunlight" +msgstr "" + +#: src/olympusmn.cpp:1068 +msgid "WB_RB levels evening sunlight" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB Levels Daylight Fluor" +msgstr "" + +#: src/olympusmn.cpp:1069 +msgid "WB_RB levels daylight fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB Levels Day White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1070 +msgid "WB_RB levels day white fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB Levels Cool White Fluor" +msgstr "" + +#: src/olympusmn.cpp:1071 +msgid "WB_RB levels cool white fluor" +msgstr "" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB Levels White Fluorescent" +msgstr "4500K (Ãnh sáng huỳnh quang trắng tá»± nhiên)" + +#: src/olympusmn.cpp:1072 +#, fuzzy +msgid "WB_RB levels white fluorescent" +msgstr "4500K (Ãnh sáng huỳnh quang trắng tá»± nhiên)" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color Matrix2" +msgstr "Ma trận màu" + +#: src/olympusmn.cpp:1073 +#, fuzzy +msgid "Color matrix 2" +msgstr "Ma trận màu" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black Level 2" +msgstr "Cưá»ng độ Äèn chá»›p" + +#: src/olympusmn.cpp:1076 +#, fuzzy +msgid "Black level 2" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/olympusmn.cpp:1077 src/properties.cpp:533 src/tags.cpp:706 +msgid "YCbCr Coefficients" +msgstr "" + +#: src/olympusmn.cpp:1077 +msgid "YCbCr coefficients" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid Pixel Depth" +msgstr "" + +#: src/olympusmn.cpp:1078 +msgid "Valid pixel depth" +msgstr "" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White Balance Comp" +msgstr "Cân bằng Trắng 2" + +#: src/olympusmn.cpp:1084 +#, fuzzy +msgid "White balance comp" +msgstr "Cân bằng trắng 2" + +#: src/olympusmn.cpp:1085 +#, fuzzy +msgid "Saturation Setting" +msgstr "Thiết lập độ tương phản" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue Setting" +msgstr "Tùy chỉnh" + +#: src/olympusmn.cpp:1086 +#, fuzzy +msgid "Hue setting" +msgstr "Tùy chỉnh độ nhạy sáng" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM Exposure Compensation" +msgstr "Bù trừ phÆ¡i sáng" + +#: src/olympusmn.cpp:1089 +#, fuzzy +msgid "CM exposure compensation" +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM White Balance" +msgstr "Cân bằng trắng" + +#: src/olympusmn.cpp:1090 +#, fuzzy +msgid "CM white balance" +msgstr "Cân bằng trắng" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM White Balance Comp" +msgstr "Cân bằng Trắng 2" + +#: src/olympusmn.cpp:1091 +#, fuzzy +msgid "CM white balance comp" +msgstr "Cân bằng trắng 2" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM White Balance Gray Point" +msgstr "Bù trừ Cân bằng sáng" + +#: src/olympusmn.cpp:1092 +#, fuzzy +msgid "CM white balance gray point" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM Saturation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/olympusmn.cpp:1093 +#, fuzzy +msgid "CM saturation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/olympusmn.cpp:1094 +msgid "CM Hue" +msgstr "" + +#: src/olympusmn.cpp:1094 +msgid "CM hue" +msgstr "" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM Contrast" +msgstr "Tương phản" + +#: src/olympusmn.cpp:1095 +#, fuzzy +msgid "CM contrast" +msgstr "Tương phản" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM Sharpness" +msgstr "Äá»™ mịn" + +#: src/olympusmn.cpp:1096 +#, fuzzy +msgid "CM sharpness" +msgstr "Äá»™ mịn" + +#: src/olympusmn.cpp:1098 +#, fuzzy +msgid "Unknown OlympusRi tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/olympusmn.cpp:1121 src/pentaxmn.cpp:436 +#, fuzzy +msgid "User-Selected" +msgstr "Lá»±a chá»n ngưá»i dùng" + +#: src/olympusmn.cpp:1122 +#, fuzzy +msgid "Auto-Override" +msgstr "Lưu đè" + +#: src/olympusmn.cpp:1158 +msgid "Fast" +msgstr "Nhanh" + +#: src/olympusmn.cpp:1223 +#, fuzzy +msgid "3000 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1224 +#, fuzzy +msgid "3700 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1225 +#, fuzzy +msgid "4000 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1226 +#, fuzzy +msgid "4500 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1227 +#, fuzzy +msgid "5500 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1228 +#, fuzzy +msgid "6500 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1229 +#, fuzzy +msgid "7500 Kelvin" +msgstr "Kelvin" + +#: src/olympusmn.cpp:1235 +msgid "One-touch" +msgstr "" + +#: src/olympusmn.cpp:1452 +msgid "S-AF" +msgstr "S-AF" + +#: src/olympusmn.cpp:1453 +msgid "C-AF" +msgstr "C-AF" + +#: src/olympusmn.cpp:1456 +#, fuzzy +msgid "Imager AF" +msgstr "Kích cỡ hình ảnh" + +#: src/olympusmn.cpp:1457 +#, fuzzy +msgid "AF sensor" +msgstr "Tìm kiếm lấy nét tá»± động" + +#: src/olympusmn.cpp:1502 +#, fuzzy +msgid "Soft Focus" +msgstr "Tiêu cá»± Ngắn" + +#: src/olympusmn.cpp:1503 +msgid "Pop Art" +msgstr "" + +#: src/olympusmn.cpp:1504 +msgid "Pale & Light Color" +msgstr "" + +#: src/olympusmn.cpp:1505 +#, fuzzy +msgid "Light Tone" +msgstr "Vùng bên phải" + +#: src/olympusmn.cpp:1506 src/panasonicmn.cpp:150 +msgid "Pin Hole" +msgstr "" + +#: src/olympusmn.cpp:1507 +msgid "Grainy Film" +msgstr "" + +#: src/olympusmn.cpp:1508 +#, fuzzy +msgid "Diorama" +msgstr "Toàn cảnh" + +#: src/olympusmn.cpp:1509 +#, fuzzy +msgid "Cross Process" +msgstr "Tiến trình lấy nét" + +#: src/olympusmn.cpp:1510 +msgid "Fish Eye" +msgstr "Mắt cá" + +#: src/olympusmn.cpp:1511 +msgid "Drawing" +msgstr "" + +#: src/olympusmn.cpp:1512 +msgid "Gentle Sepia" +msgstr "" + +#: src/olympusmn.cpp:1513 +msgid "Pale & Light Color II" +msgstr "" + +#: src/olympusmn.cpp:1514 +msgid "Pop Art II" +msgstr "" + +#: src/olympusmn.cpp:1515 +msgid "Pin Hole II" +msgstr "" + +#: src/olympusmn.cpp:1516 +msgid "Pin Hole III" +msgstr "" + +#: src/olympusmn.cpp:1517 +msgid "Grainy Film II" +msgstr "" + +#: src/olympusmn.cpp:1518 +msgid "Dramatic Tone" +msgstr "" + +#: src/olympusmn.cpp:1519 +msgid "Punk" +msgstr "" + +#: src/olympusmn.cpp:1520 +#, fuzzy +msgid "Soft Focus 2" +msgstr "Tiêu cá»± Ngắn" + +#: src/olympusmn.cpp:1521 +msgid "Sparkle" +msgstr "" + +#: src/olympusmn.cpp:1522 +#, fuzzy +msgid "Watercolor" +msgstr "Màu tá»± nhiên" + +#: src/olympusmn.cpp:1523 +msgid "Key Line" +msgstr "" + +#: src/olympusmn.cpp:1524 +msgid "Key Line II" +msgstr "" + +#: src/olympusmn.cpp:1525 +#, fuzzy +msgid "Miniature" +msgstr "Khẩu độ tối thiểu" + +#: src/olympusmn.cpp:1526 +#, fuzzy +msgid "Reflection" +msgstr "Lá»±a chá»n" + +#: src/olympusmn.cpp:1527 +msgid "Fragmented" +msgstr "" + +#: src/olympusmn.cpp:1528 +#, fuzzy +msgid "Cross Process II" +msgstr "Tiến trình lấy nét" + +#: src/olympusmn.cpp:1529 +msgid "Dramatic Tone II" +msgstr "" + +#: src/olympusmn.cpp:1530 +#, fuzzy +msgid "Watercolor I" +msgstr "Màu tá»± nhiên" + +#: src/olympusmn.cpp:1531 +#, fuzzy +msgid "Watercolor II" +msgstr "Màu tá»± nhiên" + +#: src/olympusmn.cpp:1532 +msgid "Diorama II" +msgstr "" + +#: src/olympusmn.cpp:1533 +msgid "Vintage" +msgstr "" + +#: src/olympusmn.cpp:1534 +msgid "Vintage II" +msgstr "" + +#: src/olympusmn.cpp:1535 +msgid "Vintage III" +msgstr "" + +#: src/olympusmn.cpp:1536 +#, fuzzy +msgid "Partial Color" +msgstr "Màu sắc tá»± nhiên" + +#: src/olympusmn.cpp:1537 +#, fuzzy +msgid "Partial Color II" +msgstr "Màu sắc tá»± nhiên" + +#: src/olympusmn.cpp:1538 +#, fuzzy +msgid "Partial Color III" +msgstr "Màu sắc tá»± nhiên" + +#: src/olympusmn.cpp:1608 +#, fuzzy +msgid "Left (or n/a)" +msgstr "Vùng bên trái" + +#: src/olympusmn.cpp:1609 src/olympusmn.cpp:1627 +msgid "Center (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1611 src/olympusmn.cpp:1638 +msgid "Center (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1622 +msgid "Top-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1623 +#, fuzzy +msgid "Top-center (horizontal)" +msgstr "Trên-trung tâm" + +#: src/olympusmn.cpp:1624 +msgid "Top-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1625 +#, fuzzy +msgid "Left (horizontal)" +msgstr "Vùng bên trái" + +#: src/olympusmn.cpp:1626 +msgid "Mid-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1628 +msgid "Mid-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1629 +#, fuzzy +msgid "Right (horizontal)" +msgstr "Vùng bên phải" + +#: src/olympusmn.cpp:1630 +msgid "Bottom-left (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1631 +#, fuzzy +msgid "Bottom-center (horizontal)" +msgstr "Dưới-trung tâm" + +#: src/olympusmn.cpp:1632 +msgid "Bottom-right (horizontal)" +msgstr "" + +#: src/olympusmn.cpp:1633 +msgid "Top-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1634 +#, fuzzy +msgid "Top-center (vertical)" +msgstr "Trên-trung tâm" + +#: src/olympusmn.cpp:1635 +#, fuzzy +msgid "Top-right (vertical)" +msgstr "Lưu ý bản quyá»n" + +#: src/olympusmn.cpp:1636 +msgid "Left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1637 +msgid "Mid-left (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1639 +msgid "Mid-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1640 +msgid "Right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1641 +#, fuzzy +msgid "Bottom-left (vertical)" +msgstr "Dưới-trung tâm" + +#: src/olympusmn.cpp:1642 +#, fuzzy +msgid "Bottom-center (vertical)" +msgstr "Dưới-trung tâm" + +#: src/olympusmn.cpp:1643 +msgid "Bottom-right (vertical)" +msgstr "" + +#: src/olympusmn.cpp:1680 +#, fuzzy +msgid "Single Target" +msgstr "Khung hình đơn" + +#: src/olympusmn.cpp:1681 +msgid "All Target" +msgstr "" + +#: src/olympusmn.cpp:1682 +msgid "Dynamic Single Target" +msgstr "" + +#: src/panasonicmn.cpp:55 src/pentaxmn.cpp:202 +msgid "TIFF" +msgstr "" + +#: src/panasonicmn.cpp:58 src/pentaxmn.cpp:448 src/pentaxmn.cpp:463 +#, fuzzy +msgid "Very High" +msgstr "Cao" + +#: src/panasonicmn.cpp:60 +#, fuzzy +msgid "Motion Picture" +msgstr "Khẩu Ä‘6á» tối thiểu" + +#: src/panasonicmn.cpp:61 +#, fuzzy +msgid "Full HD Movie" +msgstr "Kích cỡ đầy đủ" + +#: src/panasonicmn.cpp:62 +#, fuzzy +msgid "4k Movie" +msgstr "Phim" + +#: src/panasonicmn.cpp:70 +msgid "Halogen" +msgstr "" + +#: src/panasonicmn.cpp:83 +#, fuzzy +msgid "Auto, focus button" +msgstr "Lấy nét tá»± động" + +#: src/panasonicmn.cpp:84 +#, fuzzy +msgid "Auto, continuous" +msgstr "Liên tục" + +#: src/panasonicmn.cpp:85 src/pentaxmn.cpp:273 +msgid "AF-S" +msgstr "" + +#: src/panasonicmn.cpp:86 src/pentaxmn.cpp:274 +msgid "AF-C" +msgstr "" + +#: src/panasonicmn.cpp:87 +msgid "AF-F" +msgstr "" + +#: src/panasonicmn.cpp:95 src/panasonicmn.cpp:122 +#, fuzzy +msgid "Panning" +msgstr "Cảnh báo" + +#: src/panasonicmn.cpp:103 +msgid "Tele-macro" +msgstr "" + +#: src/panasonicmn.cpp:104 +#, fuzzy +msgid "Macro-zoom" +msgstr "Cận cảnh phóng to" + +#: src/panasonicmn.cpp:112 src/panasonicmn.cpp:373 +msgid "Scenery" +msgstr "" + +#: src/panasonicmn.cpp:117 +#, fuzzy +msgid "Shutter-speed priority" +msgstr "Ưu tiên tốc độ" + +#: src/panasonicmn.cpp:121 +#, fuzzy +msgid "Movie preview" +msgstr "Viết bài duyệt trước" + +#: src/panasonicmn.cpp:123 +msgid "Simple" +msgstr "" + +#: src/panasonicmn.cpp:124 +#, fuzzy +msgid "Color effects" +msgstr "Hiệu ứng màu sắc" + +#: src/panasonicmn.cpp:130 +#, fuzzy +msgid "Night scenery" +msgstr "Cảnh ban đêm" + +#: src/panasonicmn.cpp:132 +msgid "Baby" +msgstr "" + +#: src/panasonicmn.cpp:133 +msgid "Soft skin" +msgstr "" + +#: src/panasonicmn.cpp:134 src/pentaxmn.cpp:597 +#, fuzzy +msgid "Candlelight" +msgstr "Äèn cầy" + +#: src/panasonicmn.cpp:135 +#, fuzzy +msgid "Starry night" +msgstr "Ãnh sáng ban ngày" + +#: src/panasonicmn.cpp:136 +#, fuzzy +msgid "High sensitivity" +msgstr "Äá»™ nhạy sáng" + +#: src/panasonicmn.cpp:137 +#, fuzzy +msgid "Panorama assist" +msgstr "Toàn cảnh" + +#: src/panasonicmn.cpp:140 +msgid "Aerial photo" +msgstr "" + +#: src/panasonicmn.cpp:143 src/panasonicmn.cpp:654 +msgid "Intelligent ISO" +msgstr "" + +#: src/panasonicmn.cpp:144 +#, fuzzy +msgid "Clipboard" +msgstr "Bảng trắng" + +#: src/panasonicmn.cpp:145 +#, fuzzy +msgid "High speed continuous shooting" +msgstr "Cài đặt lấy nét liên tục" + +#: src/panasonicmn.cpp:146 +msgid "Intelligent auto" +msgstr "" + +#: src/panasonicmn.cpp:147 +msgid "Multi-aspect" +msgstr "" + +#: src/panasonicmn.cpp:148 +msgid "Transform" +msgstr "" + +#: src/panasonicmn.cpp:149 +#, fuzzy +msgid "Flash Burst" +msgstr "Bù trừ sáng đèn chá»›p" + +#: src/panasonicmn.cpp:151 +msgid "Film Grain" +msgstr "" + +#: src/panasonicmn.cpp:152 +#, fuzzy +msgid "My Color" +msgstr "Màu sắc cá»§a tôi" + +#: src/panasonicmn.cpp:153 +#, fuzzy +msgid "Photo Frame" +msgstr "Khung hình toàn cảnh" + +#: src/panasonicmn.cpp:154 src/panasonicmn.cpp:160 src/panasonicmn.cpp:527 +#: src/pentaxmn.cpp:605 src/pentaxmn.cpp:674 +msgid "HDR" +msgstr "" + +#: src/panasonicmn.cpp:155 src/sonymn.cpp:167 +msgid "Handheld Night Shot" +msgstr "" + +#: src/panasonicmn.cpp:156 +msgid "3D" +msgstr "" + +#: src/panasonicmn.cpp:157 src/panasonicmn.cpp:185 +#, fuzzy +msgid "Creative Control" +msgstr "Äiá»u khiển Từ xa" + +#: src/panasonicmn.cpp:159 +msgid "Glass Through" +msgstr "" + +#: src/panasonicmn.cpp:161 src/pentaxmn.cpp:569 +#, fuzzy +msgid "Digital Filter" +msgstr "Lá»c Ä‘iện tá»­" + +#: src/panasonicmn.cpp:162 +#, fuzzy +msgid "Clear Portrait" +msgstr "Chân dung" + +#: src/panasonicmn.cpp:163 +msgid "Silky Skin" +msgstr "" + +#: src/panasonicmn.cpp:164 +msgid "Backlit Softness" +msgstr "" + +#: src/panasonicmn.cpp:165 +msgid "Clear in Backlight" +msgstr "" + +#: src/panasonicmn.cpp:166 +#, fuzzy +msgid "Relaxing Tone" +msgstr "Mối liên hệ" + +#: src/panasonicmn.cpp:167 +msgid "Sweet Child's Face" +msgstr "" + +#: src/panasonicmn.cpp:168 +msgid "Distinct Scenery" +msgstr "" + +#: src/panasonicmn.cpp:169 +#, fuzzy +msgid "Bright Blue Sky" +msgstr "Giá trị độ sáng" + +#: src/panasonicmn.cpp:170 +msgid "Romantic Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:171 +msgid "Vivid Sunset Glow" +msgstr "" + +#: src/panasonicmn.cpp:172 +msgid "Glistening Water" +msgstr "" + +#: src/panasonicmn.cpp:173 +msgid "Clear Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:174 +msgid "Cool Night Sky" +msgstr "" + +#: src/panasonicmn.cpp:175 +msgid "Warm Glowing Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:176 +msgid "Artistic Nightscape" +msgstr "" + +#: src/panasonicmn.cpp:177 +msgid "Glittering Illuminations" +msgstr "" + +#: src/panasonicmn.cpp:178 +#, fuzzy +msgid "Clear Night Portrait" +msgstr "Chân dung ban đêm" + +#: src/panasonicmn.cpp:179 +msgid "Soft Image of a Flower" +msgstr "" + +#: src/panasonicmn.cpp:180 +msgid "Appetizing Food" +msgstr "" + +#: src/panasonicmn.cpp:181 +msgid "Cute Desert" +msgstr "" + +#: src/panasonicmn.cpp:182 +msgid "Freeze Animal Motion" +msgstr "" + +#: src/panasonicmn.cpp:183 +msgid "Clear Sports Shot" +msgstr "" + +#: src/panasonicmn.cpp:192 +msgid "Stereo" +msgstr "" + +#: src/panasonicmn.cpp:198 +#, fuzzy +msgid "Warm" +msgstr "Tông màu ấm" + +#: src/panasonicmn.cpp:199 +msgid "Cool" +msgstr "" + +#: src/panasonicmn.cpp:202 +msgid "Happy" +msgstr "" + +#: src/panasonicmn.cpp:208 +#, fuzzy +msgid "Low/High quality" +msgstr "Chất lượng cao (HQ)" + +#: src/panasonicmn.cpp:209 +#, fuzzy +msgid "Infinite" +msgstr "Vô cá»±c" + +#: src/panasonicmn.cpp:217 +#, fuzzy +msgid "Medium low" +msgstr "Trung bình 1" + +#: src/panasonicmn.cpp:218 +#, fuzzy +msgid "Medium high" +msgstr "Trung bình 1" + +#: src/panasonicmn.cpp:228 +msgid "Low (-1)" +msgstr "" + +#: src/panasonicmn.cpp:229 +#, fuzzy +msgid "High (+1)" +msgstr "Cao" + +#: src/panasonicmn.cpp:230 +#, fuzzy +msgid "Lowest (-2)" +msgstr "Thấp nhất" + +#: src/panasonicmn.cpp:231 +#, fuzzy +msgid "Highest (+2)" +msgstr "Cao nhất" + +#: src/panasonicmn.cpp:245 src/panasonicmn.cpp:387 +msgid "Rotate 180" +msgstr "" + +#: src/panasonicmn.cpp:253 +msgid "Enabled but Not Used" +msgstr "" + +#: src/panasonicmn.cpp:254 +msgid "Disabled but Required" +msgstr "" + +#: src/panasonicmn.cpp:255 +msgid "Disabled and Not Required" +msgstr "" + +#: src/panasonicmn.cpp:268 +msgid "EX optics" +msgstr "" + +#: src/panasonicmn.cpp:275 +msgid "Telephoto" +msgstr "" + +#: src/panasonicmn.cpp:282 src/properties.cpp:915 +msgid "Home" +msgstr "" + +#: src/panasonicmn.cpp:294 +msgid "Standard (color)" +msgstr "Tiêu chuẩn (màu sắc)" + +#: src/panasonicmn.cpp:295 +msgid "Dynamic (color)" +msgstr "Sặc sỡ (màu sắc)" + +#: src/panasonicmn.cpp:296 +msgid "Nature (color)" +msgstr "Tá»± nhiên (màu sắc)" + +#: src/panasonicmn.cpp:297 +msgid "Smooth (color)" +msgstr "Mịn (màu sắc)" + +#: src/panasonicmn.cpp:298 +msgid "Standard (B&W)" +msgstr "Tiêu chuẩn (B&W)" + +#: src/panasonicmn.cpp:299 +#, fuzzy +msgid "Dynamic (B&W)" +msgstr "Sặc sỡ (màu sắc)" + +#: src/panasonicmn.cpp:300 +#, fuzzy +msgid "Smooth (B&W)" +msgstr "Mịn (màu sắc)" + +#: src/panasonicmn.cpp:301 +msgid "Nostalgic" +msgstr "" + +#: src/panasonicmn.cpp:302 src/pentaxmn.cpp:973 +msgid "Vibrant" +msgstr "" + +#: src/panasonicmn.cpp:307 +msgid "No Bracket" +msgstr "" + +#: src/panasonicmn.cpp:308 +msgid "3 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:309 +msgid "3 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:310 +msgid "5 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:311 +msgid "5 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:312 +msgid "7 images, Sequence 0/-/+" +msgstr "" + +#: src/panasonicmn.cpp:313 +msgid "7 images, Sequence -/0/+" +msgstr "" + +#: src/panasonicmn.cpp:319 +#, fuzzy +msgid "1st" +msgstr "10 giây" + +#: src/panasonicmn.cpp:320 +msgid "2nd" +msgstr "" + +#: src/panasonicmn.cpp:340 +msgid "Yes (flash required but disabled" +msgstr "" + +#: src/panasonicmn.cpp:349 +#, fuzzy +msgid "Extended" +msgstr "Ngoài" + +#: src/panasonicmn.cpp:368 +#, fuzzy +msgid "NoAuto" +msgstr "Tá»± động" + +#: src/panasonicmn.cpp:369 +#, fuzzy +msgid "Standard or Custom" +msgstr "Tiêu chuẩn (màu sắc)" + +#: src/panasonicmn.cpp:386 +msgid "Rotate CW" +msgstr "" + +#: src/panasonicmn.cpp:388 +msgid "Rotate CCW" +msgstr "" + +#: src/panasonicmn.cpp:389 +msgid "Tilt upwards" +msgstr "" + +#: src/panasonicmn.cpp:390 +msgid "Tilt downwards" +msgstr "" + +#: src/panasonicmn.cpp:396 +#, fuzzy +msgid "Left to Right" +msgstr "Trái sang phải" + +#: src/panasonicmn.cpp:397 +#, fuzzy +msgid "Right to Left" +msgstr "Phải sang trái" + +#: src/panasonicmn.cpp:398 +#, fuzzy +msgid "Top to Bottom" +msgstr "Trên xuống dưới" + +#: src/panasonicmn.cpp:399 +#, fuzzy +msgid "Bottom to Top" +msgstr "Dưới lên trên" + +#: src/panasonicmn.cpp:405 +#, fuzzy +msgid "Time Lapse" +msgstr "Thá»i gian tạo" + +#: src/panasonicmn.cpp:406 +msgid "Stop-Motion Animation" +msgstr "" + +#: src/panasonicmn.cpp:412 +msgid "1 EV" +msgstr "" + +#: src/panasonicmn.cpp:413 +msgid "2 EV" +msgstr "" + +#: src/panasonicmn.cpp:414 +msgid "3 EV" +msgstr "" + +#: src/panasonicmn.cpp:415 +msgid "1 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:416 +msgid "2 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:417 +msgid "3 EV (Auto)" +msgstr "" + +#: src/panasonicmn.cpp:422 +msgid "Mechanical" +msgstr "" + +#: src/panasonicmn.cpp:423 +#, fuzzy +msgid "Electronic" +msgstr "Lá»±a chá»n" + +#: src/panasonicmn.cpp:424 +msgid "Hybrid" +msgstr "" + +#: src/panasonicmn.cpp:450 +msgid "Audio" +msgstr "" + +#: src/panasonicmn.cpp:453 +msgid "White balance adjustment" +msgstr "Äiá»u chỉnh cân bằng trắng" + +#: src/panasonicmn.cpp:454 +#, fuzzy +msgid "FlashBias" +msgstr "Bù trừ sáng đèn chá»›p" + +#: src/panasonicmn.cpp:456 src/tags.cpp:194 +#, fuzzy +msgid "Exif version" +msgstr "Phiên bản tập tin" + +#: src/panasonicmn.cpp:458 +msgid "Color Effect" +msgstr "Hiệu ứng Màu sắc" + +#: src/panasonicmn.cpp:458 +msgid "Color effect" +msgstr "Hiệu ứng màu sắc" + +#: src/panasonicmn.cpp:459 +msgid "" +"Time in 1/100 s from when the camera was powered on to when the image is " +"written to memory card" +msgstr "" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst Mode" +msgstr "Chế độ lấy nét" + +#: src/panasonicmn.cpp:460 +#, fuzzy +msgid "Burst mode" +msgstr "Chế độ lấy nét" + +#: src/panasonicmn.cpp:463 +msgid "NoiseReduction" +msgstr "Giảmnhiá»…u" + +#: src/panasonicmn.cpp:464 +#, fuzzy +msgid "Self Timer" +msgstr "Thá»i gian phát hành" + +#: src/panasonicmn.cpp:467 +#, fuzzy +msgid "AF Assist Lamp" +msgstr "Há»— trợ lấy nét tá»± động" + +#: src/panasonicmn.cpp:469 +msgid "Baby Age 1" +msgstr "" + +#: src/panasonicmn.cpp:469 +msgid "Baby (or pet) age 1" +msgstr "" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical Zoom Mode" +msgstr "Chế độ đặc biệt" + +#: src/panasonicmn.cpp:470 +#, fuzzy +msgid "Optical zoom mode" +msgstr "Chế độ phim" + +#: src/panasonicmn.cpp:472 +msgid "Travel Day" +msgstr "" + +#: src/panasonicmn.cpp:472 +msgid "Travel day" +msgstr "" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World Time Location" +msgstr "Äịa Ä‘iểm quay" + +#: src/panasonicmn.cpp:474 +#, fuzzy +msgid "World time location" +msgstr "Äịa Ä‘iểm quay" + +#: src/panasonicmn.cpp:475 +msgid "Text Stamp 1" +msgstr "" + +#: src/panasonicmn.cpp:476 +#, fuzzy +msgid "Program ISO" +msgstr "Chương trình" + +#: src/panasonicmn.cpp:477 +msgid "Advanced Scene Type" +msgstr "" + +#: src/panasonicmn.cpp:478 +msgid "Text Stamp 2" +msgstr "" + +#: src/panasonicmn.cpp:479 +msgid "Faces detected" +msgstr "" + +#: src/panasonicmn.cpp:483 +msgid "Color Temp Kelvin" +msgstr "" + +#: src/panasonicmn.cpp:483 +#, fuzzy +msgid "Color Temperatur in Kelvin" +msgstr "Nhiệt độ màu" + +#: src/panasonicmn.cpp:484 +#, fuzzy +msgid "Bracket Settings" +msgstr "Tùy chỉnh máy ảnh" + +#: src/panasonicmn.cpp:485 +#, fuzzy +msgid "WB Adjust AB" +msgstr "Äiá»u chỉnh" + +#: src/panasonicmn.cpp:485 +msgid "WB adjust AB. Positive is a shift toward blue." +msgstr "" + +#: src/panasonicmn.cpp:486 +#, fuzzy +msgid "WB Adjust GM" +msgstr "Äiá»u chỉnh" + +#: src/panasonicmn.cpp:486 +msgid "WBAdjustGM. Positive is a shift toward green." +msgstr "" + +#: src/panasonicmn.cpp:487 +#, fuzzy +msgid "Flash Curtain" +msgstr "Thông tin đèn chá»›p" + +#: src/panasonicmn.cpp:488 +#, fuzzy +msgid "Long Shutter Noise Reduction" +msgstr "Giảm nhiá»…u cá»§a sá»± phÆ¡i sáng lâu" + +#: src/panasonicmn.cpp:491 +#, fuzzy +msgid "AF Point Position" +msgstr "Vị trí Lấy nét" + +#: src/panasonicmn.cpp:492 +#, fuzzy +msgid "Face detection info" +msgstr "Tá»± động lấy nét và tá»± động nhận diện khuôn mặt" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory Type" +msgstr "Kiểu á»ng kính" + +#: src/panasonicmn.cpp:495 +#, fuzzy +msgid "Accessory type" +msgstr "Kiểu ống kính" + +#: src/panasonicmn.cpp:496 +#, fuzzy +msgid "Accessory Serial Number" +msgstr "Chuá»—i số" + +#: src/panasonicmn.cpp:497 +msgid "Transform 1" +msgstr "" + +#: src/panasonicmn.cpp:498 +#, fuzzy +msgid "Intelligent Exposure" +msgstr "PhÆ¡i sáng tá»± động" + +#: src/panasonicmn.cpp:499 +#, fuzzy +msgid "Firmware Version of the Lens" +msgstr "Phiên bản phần vững" + +#: src/panasonicmn.cpp:500 +#, fuzzy +msgid "Face recognition info" +msgstr "Tá»± động lấy nét và tá»± động nhận diện khuôn mặt" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash Warning" +msgstr "Cảnh báo lấy nét" + +#: src/panasonicmn.cpp:501 +#, fuzzy +msgid "Flash warning" +msgstr "Thông tin đèn chá»›p" + +#: src/panasonicmn.cpp:502 src/properties.cpp:186 src/properties.cpp:1349 +msgid "Title" +msgstr "Tá»±a Ä‘á»" + +#: src/panasonicmn.cpp:503 +#, fuzzy +msgid "Baby Name" +msgstr "Tên" + +#: src/panasonicmn.cpp:503 +msgid "Baby name (or pet name)" +msgstr "" + +#: src/panasonicmn.cpp:504 src/pentaxmn.cpp:1236 src/pentaxmn.cpp:1237 +#: src/properties.cpp:682 src/properties.cpp:1458 +msgid "Location" +msgstr "Vị trí" + +#: src/panasonicmn.cpp:506 src/properties.cpp:441 +msgid "State" +msgstr "Bang" + +#: src/panasonicmn.cpp:508 +msgid "Landmark" +msgstr "" + +#: src/panasonicmn.cpp:509 +msgid "Intelligent resolution" +msgstr "" + +#: src/panasonicmn.cpp:510 +#, fuzzy +msgid "Burst Speed" +msgstr "Tốc độ chụp" + +#: src/panasonicmn.cpp:510 +msgid "Burst Speed in pictures per second" +msgstr "" + +#: src/panasonicmn.cpp:511 +msgid "Intelligent Dynamic Range" +msgstr "" + +#: src/panasonicmn.cpp:512 +msgid "Clear Retouch" +msgstr "" + +#: src/panasonicmn.cpp:513 +#, fuzzy +msgid "City2" +msgstr "Thành phố" + +#: src/panasonicmn.cpp:515 +#, fuzzy +msgid "Photo style" +msgstr "Kiểu hình ảnh" + +#: src/panasonicmn.cpp:517 +msgid "Accelerometer Z" +msgstr "" + +#: src/panasonicmn.cpp:517 +msgid "positive is acceleration upwards" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "Accelerometer X" +msgstr "" + +#: src/panasonicmn.cpp:518 +msgid "positive is acceleration to the left" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "Accelerometer Y" +msgstr "" + +#: src/panasonicmn.cpp:519 +msgid "positive is acceleration backwards" +msgstr "" + +#: src/panasonicmn.cpp:520 +#, fuzzy +msgid "Camera Orientation" +msgstr "Tùy chỉnh máy ảnh" + +#: src/panasonicmn.cpp:521 +msgid "Roll Angle" +msgstr "" + +#: src/panasonicmn.cpp:521 +msgid "degress of clockwise camera rotation" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "Pitch Angle" +msgstr "" + +#: src/panasonicmn.cpp:522 +msgid "degress of upwards camera tilt" +msgstr "" + +#: src/panasonicmn.cpp:523 +#, fuzzy +msgid "Sweep Panorama Direction" +msgstr "Chiá»u chụp toàn cảnh" + +#: src/panasonicmn.cpp:524 +msgid "Field of View of Panorama" +msgstr "" + +#: src/panasonicmn.cpp:525 +msgid "Timer Recording" +msgstr "" + +#: src/panasonicmn.cpp:526 +#, fuzzy +msgid "Internal ND Filter" +msgstr "Bên trong và bên ngoài" + +#: src/panasonicmn.cpp:528 +#, fuzzy +msgid "Shutter Type" +msgstr "Tốc độ màn chập" + +#: src/panasonicmn.cpp:529 +#, fuzzy +msgid "Clear Retouch Value" +msgstr "Giá trị khẩu độ" + +#: src/panasonicmn.cpp:530 +msgid "TouchAE" +msgstr "" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote Version" +msgstr "Mẫu phiên bản" + +#: src/panasonicmn.cpp:533 +#, fuzzy +msgid "MakerNote version" +msgstr "Firmware Version" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB Red Level" +msgstr "Mức Pin" + +#: src/panasonicmn.cpp:535 src/panasonicmn.cpp:735 +#, fuzzy +msgid "WB red level" +msgstr "Mức pin" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB Green Level" +msgstr "" + +#: src/panasonicmn.cpp:536 src/panasonicmn.cpp:736 +msgid "WB green level" +msgstr "" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB Blue Level" +msgstr "Mức Pin" + +#: src/panasonicmn.cpp:537 src/panasonicmn.cpp:737 +#, fuzzy +msgid "WB blue level" +msgstr "Mức pin" + +#: src/panasonicmn.cpp:539 +msgid "Text Stamp 3" +msgstr "" + +#: src/panasonicmn.cpp:540 +msgid "Text Stamp 4" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby Age 2" +msgstr "" + +#: src/panasonicmn.cpp:541 +msgid "Baby (or pet) age 2" +msgstr "" + +#: src/panasonicmn.cpp:542 +msgid "Transform 2" +msgstr "" + +#: src/panasonicmn.cpp:544 +#, fuzzy +msgid "Unknown PanasonicMakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/panasonicmn.cpp:562 +msgid "Spot mode on or 9 area" +msgstr "" + +#: src/panasonicmn.cpp:563 +msgid "Spot mode off or 3-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:564 +msgid "23-area" +msgstr "" + +#: src/panasonicmn.cpp:565 +msgid "Spot focussing" +msgstr "" + +#: src/panasonicmn.cpp:566 +msgid "5-area" +msgstr "" + +#: src/panasonicmn.cpp:567 +msgid "1-area" +msgstr "" + +#: src/panasonicmn.cpp:568 +msgid "1-area (high speed)" +msgstr "" + +#: src/panasonicmn.cpp:569 +msgid "3-area (auto)" +msgstr "" + +#: src/panasonicmn.cpp:570 +msgid "3-area (left)" +msgstr "" + +#: src/panasonicmn.cpp:571 +msgid "3-area (center)" +msgstr "" + +#: src/panasonicmn.cpp:572 +msgid "3-area (right)" +msgstr "" + +#: src/panasonicmn.cpp:574 +msgid "Spot Focusing 2" +msgstr "" + +#: src/panasonicmn.cpp:588 +msgid " EV" +msgstr "" + +#: src/panasonicmn.cpp:621 src/panasonicmn.cpp:637 +#, fuzzy +msgid "not set" +msgstr "Chưa đặt giá trị" + +#: src/panasonicmn.cpp:725 +#, fuzzy +msgid "Panasonic raw version" +msgstr "Thẻ Panasonic RAW" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor Width" +msgstr "Thông tin cảm biến" + +#: src/panasonicmn.cpp:726 +#, fuzzy +msgid "Sensor width" +msgstr "Thông tin cảm biến" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor Height" +msgstr "Thông tin cảm biến" + +#: src/panasonicmn.cpp:727 +#, fuzzy +msgid "Sensor height" +msgstr "Thông tin cảm biến" + +#: src/panasonicmn.cpp:728 +msgid "Sensor Top Border" +msgstr "ÄÆ°á»ng viá»n Trên cá»§a Cảm biến" + +#: src/panasonicmn.cpp:728 +msgid "Sensor top border" +msgstr "ÄÆ°á»ng viá»n trên cá»§a cảm biến" + +#: src/panasonicmn.cpp:729 +msgid "Sensor Left Border" +msgstr "ÄÆ°á»ng viến Trái cá»§a Cảm biến" + +#: src/panasonicmn.cpp:729 +msgid "Sensor left border" +msgstr "ÄÆ°á»ng viá»n trái cá»§a cảm biến" + +#: src/panasonicmn.cpp:732 +msgid "Red balance (found in Digilux 2 RAW images)" +msgstr "Cân bằng đỠ(tìm thấy trong hình ảnh gốc cá»§a Digilux 2)" + +#: src/panasonicmn.cpp:739 src/tags.cpp:469 +msgid "Manufacturer" +msgstr "Nhà sản xuất" + +#: src/panasonicmn.cpp:739 +msgid "The manufacturer of the recording equipment" +msgstr "Nhà sản xuất cá»§a các thiết bị thu" + +#: src/panasonicmn.cpp:740 src/properties.cpp:543 src/tags.cpp:475 +#, fuzzy +msgid "Model" +msgstr "Chế độ Lấy nét tá»± động" + +#: src/panasonicmn.cpp:740 +#, fuzzy +msgid "The model name or model number of the equipment" +msgstr "Nhà sản xuất cá»§a các thiết bị thu" + +#: src/panasonicmn.cpp:741 src/tags.cpp:481 +msgid "Strip Offsets" +msgstr "" + +#: src/panasonicmn.cpp:741 +msgid "Strip offsets" +msgstr "" + +#: src/panasonicmn.cpp:742 src/properties.cpp:510 src/properties.cpp:1239 +#: src/tags.cpp:488 +#, fuzzy +msgid "Orientation" +msgstr "Äích đến" + +#: src/panasonicmn.cpp:743 +#, fuzzy +msgid "Rows Per Strip" +msgstr "Hàng trên mảnh" + +#: src/panasonicmn.cpp:743 +msgid "The number of rows per strip" +msgstr "" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip Byte Counts" +msgstr "Số byte mảnh" + +#: src/panasonicmn.cpp:744 +#, fuzzy +msgid "Strip byte counts" +msgstr "Số byte mảnh" + +#: src/panasonicmn.cpp:745 +msgid "Raw Data Offset" +msgstr "" + +#: src/panasonicmn.cpp:745 +#, fuzzy +msgid "Raw data offset" +msgstr "Kích cỡ dữ liệu hình ảnh" + +#: src/panasonicmn.cpp:746 src/tags.cpp:797 +msgid "Exif IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:746 +msgid "A pointer to the Exif IFD" +msgstr "" + +#: src/panasonicmn.cpp:747 src/tags.cpp:808 +msgid "GPS Info IFD Pointer" +msgstr "" + +#: src/panasonicmn.cpp:747 +msgid "A pointer to the GPS Info IFD" +msgstr "" + +#: src/panasonicmn.cpp:749 +#, fuzzy +msgid "Unknown PanasonicRaw tag" +msgstr "Thẻ Panasonic RAW" + +#: src/pentaxmn.cpp:57 +#, fuzzy +msgid "Night-Scene" +msgstr "Cảnh đêm" + +#: src/pentaxmn.cpp:199 +msgid "Good" +msgstr "Tốt" + +#: src/pentaxmn.cpp:200 +msgid "Better" +msgstr "Tốt h" + +#: src/pentaxmn.cpp:201 +msgid "Best" +msgstr "Tốt nh" + +#: src/pentaxmn.cpp:204 +msgid "Premium" +msgstr "" + +#: src/pentaxmn.cpp:216 +msgid "2560x1920 or 2304x1728" +msgstr "2560x1920 hoặc 2304x1728" + +#: src/pentaxmn.cpp:222 +msgid "2304x1728 or 2592x1944" +msgstr "2304x1728 hoặc 2592x1944" + +#: src/pentaxmn.cpp:224 +msgid "2816x2212 or 2816x2112" +msgstr "2816x2212 hoặc 2816x2112" + +#: src/pentaxmn.cpp:247 +msgid "Auto, Did not fire" +msgstr "" + +#: src/pentaxmn.cpp:248 src/pentaxmn.cpp:249 +msgid "Off, Did not fire" +msgstr "" + +#: src/pentaxmn.cpp:250 +#, fuzzy +msgid "Auto, Did not fire, Red-eye reduction" +msgstr "Mở, tiêu giảm mắt-Ä‘á»" + +#: src/pentaxmn.cpp:251 +msgid "On. Did not fire. Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:252 +#, fuzzy +msgid "Auto, Fired" +msgstr "Tá»± động + mắt Ä‘á»" + +#: src/pentaxmn.cpp:253 +msgid "On, Fired" +msgstr "" + +#: src/pentaxmn.cpp:254 +#, fuzzy +msgid "Auto, Fired, Red-eye reduction" +msgstr "Không, giảm mắt Ä‘á»" + +#: src/pentaxmn.cpp:255 +msgid "On, Red-eye reduction" +msgstr "Mở, tiêu giảm mắt-Ä‘á»" + +#: src/pentaxmn.cpp:256 +msgid "On, Wireless (Master)" +msgstr "" + +#: src/pentaxmn.cpp:257 +msgid "On, Wireless (Control)" +msgstr "" + +#: src/pentaxmn.cpp:258 +msgid "On, Soft" +msgstr "" + +#: src/pentaxmn.cpp:259 +msgid "On, Slow-sync" +msgstr "Mở, Äồng bá»™-chậm, Tiêu giảm mắt-Ä‘á»" + +#: src/pentaxmn.cpp:260 +#, fuzzy +msgid "On, Slow-sync, Red-eye reduction" +msgstr "Mở, tiêu giảm mắt-Ä‘á»" + +#: src/pentaxmn.cpp:261 +msgid "On, Trailing-curtain Sync" +msgstr "" + +#: src/pentaxmn.cpp:272 +#, fuzzy +msgid "Pan Focus" +msgstr "Lấy nét" + +#: src/pentaxmn.cpp:275 +msgid "AF-A" +msgstr "" + +#: src/pentaxmn.cpp:276 +#, fuzzy +msgid "Contrast-detect" +msgstr "Tương phản-" + +#: src/pentaxmn.cpp:277 +msgid "Tracking Contrast-detect" +msgstr "" + +#: src/pentaxmn.cpp:284 +#, fuzzy +msgid "Fixed Center" +msgstr "Trung tâm" + +#: src/pentaxmn.cpp:285 +#, fuzzy +msgid "Automatic Tracking AF" +msgstr "Tá»± động" + +#: src/pentaxmn.cpp:286 +msgid "Face Recognition AF" +msgstr "Tá»± động lấy nét và tá»± động nhận diện khuôn mặt" + +#: src/pentaxmn.cpp:287 +#, fuzzy +msgid "AF Select" +msgstr "Lá»±a chá»n" + +#: src/pentaxmn.cpp:305 +msgid "Fixed Center or multiple" +msgstr "" + +#: src/pentaxmn.cpp:307 +msgid "Top-center" +msgstr "Trên-trung tâm" + +#: src/pentaxmn.cpp:313 +msgid "Bottom-center" +msgstr "Dưới-trung tâm" + +#: src/pentaxmn.cpp:402 +msgid "Multi Segment" +msgstr "Äa phân vùng" + +#: src/pentaxmn.cpp:403 +#, fuzzy +msgid "Center Weighted" +msgstr "Canh giữa" + +#: src/pentaxmn.cpp:415 +#, fuzzy +msgid "DaylightFluorescent" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/pentaxmn.cpp:416 +#, fuzzy +msgid "DaywhiteFluorescent" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/pentaxmn.cpp:417 +#, fuzzy +msgid "WhiteFluorescent" +msgstr "4000K (Ãnh sáng trắng lạnh)" + +#: src/pentaxmn.cpp:420 +#, fuzzy +msgid "Color Temperature Enhancement" +msgstr "Nhiệt độ màu" + +#: src/pentaxmn.cpp:423 +msgid "User Selected" +msgstr "Lá»±a chá»n ngưá»i dùng" + +#: src/pentaxmn.cpp:428 +msgid "Auto (Daylight)" +msgstr "Tá»± động (Ãnh sáng ngày)" + +#: src/pentaxmn.cpp:429 +msgid "Auto (Shade)" +msgstr "Tá»± động (Bóng râm)" + +#: src/pentaxmn.cpp:430 +msgid "Auto (Flash)" +msgstr "Tá»± động (Äèn chá»›p)" + +#: src/pentaxmn.cpp:431 +#, fuzzy +msgid "Auto (Tungsten)" +msgstr "Tá»± động (Ãnh sáng ngày)" + +#: src/pentaxmn.cpp:432 +#, fuzzy +msgid "Auto (DaylightFluorescent)" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/pentaxmn.cpp:433 +#, fuzzy +msgid "Auto (DaywhiteFluorescent)" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/pentaxmn.cpp:434 +#, fuzzy +msgid "Auto (WhiteFluorescent)" +msgstr "4500K (Ãnh sáng huỳnh quang trắng tá»± nhiên)" + +#: src/pentaxmn.cpp:435 +msgid "Auto (Cloudy)" +msgstr "Tá»± động (Trá»i mây)" + +#: src/pentaxmn.cpp:437 +#, fuzzy +msgid "Preset (Fireworks?)" +msgstr "Pháo hoa" + +#: src/pentaxmn.cpp:445 src/pentaxmn.cpp:460 +#, fuzzy +msgid "Med Low" +msgstr "Rất thấp" + +#: src/pentaxmn.cpp:446 src/pentaxmn.cpp:461 +#, fuzzy +msgid "Med High" +msgstr "Cao" + +#: src/pentaxmn.cpp:449 src/pentaxmn.cpp:464 src/pentaxmn.cpp:477 +msgid "-4" +msgstr "-4" + +#: src/pentaxmn.cpp:450 src/pentaxmn.cpp:465 src/pentaxmn.cpp:478 +msgid "+4" +msgstr "+4" + +#: src/pentaxmn.cpp:473 +msgid "Med Soft" +msgstr "" + +#: src/pentaxmn.cpp:474 +msgid "Med Hard" +msgstr "" + +#: src/pentaxmn.cpp:475 +#, fuzzy +msgid "Very Soft" +msgstr "Rất thấp" + +#: src/pentaxmn.cpp:476 +msgid "Very Hard" +msgstr "" + +#: src/pentaxmn.cpp:483 src/pentaxmn.cpp:1240 +msgid "Home town" +msgstr "" + +#: src/pentaxmn.cpp:489 +msgid "Pago Pago" +msgstr "" + +#: src/pentaxmn.cpp:490 +msgid "Honolulu" +msgstr "" + +#: src/pentaxmn.cpp:491 +#, fuzzy +msgid "Anchorage" +msgstr "Trung bình" + +#: src/pentaxmn.cpp:492 +msgid "Vancouver" +msgstr "" + +#: src/pentaxmn.cpp:493 +msgid "San Fransisco" +msgstr "" + +#: src/pentaxmn.cpp:494 +msgid "Los Angeles" +msgstr "" + +#: src/pentaxmn.cpp:495 +msgid "Calgary" +msgstr "" + +#: src/pentaxmn.cpp:496 +msgid "Denver" +msgstr "" + +#: src/pentaxmn.cpp:497 +msgid "Mexico City" +msgstr "" + +#: src/pentaxmn.cpp:498 +msgid "Chicago" +msgstr "" + +#: src/pentaxmn.cpp:499 +msgid "Miami" +msgstr "" + +#: src/pentaxmn.cpp:500 +msgid "Toronto" +msgstr "" + +#: src/pentaxmn.cpp:501 +msgid "New York" +msgstr "" + +#: src/pentaxmn.cpp:502 +msgid "Santiago" +msgstr "" + +#: src/pentaxmn.cpp:503 +msgid "Caracus" +msgstr "" + +#: src/pentaxmn.cpp:504 +msgid "Halifax" +msgstr "" + +#: src/pentaxmn.cpp:505 +msgid "Buenos Aires" +msgstr "" + +#: src/pentaxmn.cpp:506 +msgid "Sao Paulo" +msgstr "" + +#: src/pentaxmn.cpp:507 +msgid "Rio de Janeiro" +msgstr "" + +#: src/pentaxmn.cpp:508 +msgid "Madrid" +msgstr "" + +#: src/pentaxmn.cpp:509 +msgid "London" +msgstr "" + +#: src/pentaxmn.cpp:510 +msgid "Paris" +msgstr "" + +#: src/pentaxmn.cpp:511 +msgid "Milan" +msgstr "" + +#: src/pentaxmn.cpp:512 +msgid "Rome" +msgstr "" + +#: src/pentaxmn.cpp:513 +msgid "Berlin" +msgstr "" + +#: src/pentaxmn.cpp:514 +msgid "Johannesburg" +msgstr "" + +#: src/pentaxmn.cpp:515 +msgid "Istanbul" +msgstr "" + +#: src/pentaxmn.cpp:516 +msgid "Cairo" +msgstr "" + +#: src/pentaxmn.cpp:517 +msgid "Jerusalem" +msgstr "" + +#: src/pentaxmn.cpp:518 +msgid "Moscow" +msgstr "" + +#: src/pentaxmn.cpp:519 +msgid "Jeddah" +msgstr "" + +#: src/pentaxmn.cpp:520 +msgid "Tehran" +msgstr "" + +#: src/pentaxmn.cpp:521 +msgid "Dubai" +msgstr "" + +#: src/pentaxmn.cpp:522 +msgid "Karachi" +msgstr "" + +#: src/pentaxmn.cpp:523 +msgid "Kabul" +msgstr "" + +#: src/pentaxmn.cpp:524 +msgid "Male" +msgstr "" + +#: src/pentaxmn.cpp:525 +msgid "Delhi" +msgstr "" + +#: src/pentaxmn.cpp:526 +#, fuzzy +msgid "Colombo" +msgstr "Chế độ màu" + +#: src/pentaxmn.cpp:527 +msgid "Kathmandu" +msgstr "" + +#: src/pentaxmn.cpp:528 +msgid "Dacca" +msgstr "" + +#: src/pentaxmn.cpp:529 +msgid "Yangon" +msgstr "" + +#: src/pentaxmn.cpp:530 +msgid "Bangkok" +msgstr "" + +#: src/pentaxmn.cpp:531 +msgid "Kuala Lumpur" +msgstr "" + +#: src/pentaxmn.cpp:532 +msgid "Vientiane" +msgstr "" + +#: src/pentaxmn.cpp:533 +#, fuzzy +msgid "Singapore" +msgstr "ÄÆ¡n" + +#: src/pentaxmn.cpp:534 +msgid "Phnom Penh" +msgstr "" + +#: src/pentaxmn.cpp:535 +msgid "Ho Chi Minh" +msgstr "" + +#: src/pentaxmn.cpp:536 +msgid "Jakarta" +msgstr "" + +#: src/pentaxmn.cpp:537 +msgid "Hong Kong" +msgstr "" + +#: src/pentaxmn.cpp:538 +msgid "Perth" +msgstr "" + +#: src/pentaxmn.cpp:539 +msgid "Beijing" +msgstr "" + +#: src/pentaxmn.cpp:540 +msgid "Shanghai" +msgstr "" + +#: src/pentaxmn.cpp:541 +msgid "Manila" +msgstr "" + +#: src/pentaxmn.cpp:542 +msgid "Taipei" +msgstr "" + +#: src/pentaxmn.cpp:543 +msgid "Seoul" +msgstr "" + +#: src/pentaxmn.cpp:544 +msgid "Adelaide" +msgstr "" + +#: src/pentaxmn.cpp:545 +msgid "Tokyo" +msgstr "" + +#: src/pentaxmn.cpp:546 +msgid "Guam" +msgstr "" + +#: src/pentaxmn.cpp:547 +msgid "Sydney" +msgstr "" + +#: src/pentaxmn.cpp:548 +msgid "Noumea" +msgstr "" + +#: src/pentaxmn.cpp:549 +msgid "Wellington" +msgstr "" + +#: src/pentaxmn.cpp:550 +msgid "Auckland" +msgstr "" + +#: src/pentaxmn.cpp:551 +msgid "Lima" +msgstr "" + +#: src/pentaxmn.cpp:552 +msgid "Dakar" +msgstr "" + +#: src/pentaxmn.cpp:553 +msgid "Algiers" +msgstr "" + +#: src/pentaxmn.cpp:554 +msgid "Helsinki" +msgstr "" + +#: src/pentaxmn.cpp:555 +msgid "Athens" +msgstr "" + +#: src/pentaxmn.cpp:556 +msgid "Nairobi" +msgstr "" + +#: src/pentaxmn.cpp:557 +msgid "Amsterdam" +msgstr "" + +#: src/pentaxmn.cpp:558 +msgid "Stockholm" +msgstr "" + +#: src/pentaxmn.cpp:559 +msgid "Lisbon" +msgstr "" + +#: src/pentaxmn.cpp:560 +msgid "Copenhagen" +msgstr "" + +#: src/pentaxmn.cpp:561 +msgid "Warsaw" +msgstr "" + +#: src/pentaxmn.cpp:562 +msgid "Prague" +msgstr "" + +#: src/pentaxmn.cpp:563 +msgid "Budapest" +msgstr "" + +#: src/pentaxmn.cpp:568 +msgid "Unprocessed" +msgstr "" + +#: src/pentaxmn.cpp:570 +#, fuzzy +msgid "Resized" +msgstr "Kích cỡ" + +#: src/pentaxmn.cpp:571 src/properties.cpp:1106 +msgid "Cropped" +msgstr "" + +#: src/pentaxmn.cpp:573 +#, fuzzy +msgid "Digital Filter 6" +msgstr "Lá»c Ä‘iện tá»­" + +#: src/pentaxmn.cpp:574 +msgid "Frame Synthesis?" +msgstr "" + +#: src/pentaxmn.cpp:580 src/pentaxmn.cpp:624 +msgid "Hi-speed Program" +msgstr "Tá»± động tốc độ cao" + +#: src/pentaxmn.cpp:581 src/pentaxmn.cpp:625 +msgid "DOF Program" +msgstr "Tá»± động vá» trưá»ng sâu cá»§a ảnh" + +#: src/pentaxmn.cpp:582 src/pentaxmn.cpp:626 +#, fuzzy +msgid "MTF Program" +msgstr "Tá»± động vá» trưá»ng sâu cá»§a ảnh" + +#: src/pentaxmn.cpp:588 +#, fuzzy +msgid "Night Scene Portrait" +msgstr "Chân dung ban đêm" + +#: src/pentaxmn.cpp:589 +msgid "No Flash" +msgstr "Không đèn chá»›p" + +#: src/pentaxmn.cpp:592 +#, fuzzy +msgid "Surf & Snow" +msgstr "Bãi biển và Tuyết" + +#: src/pentaxmn.cpp:595 +msgid "Kids" +msgstr "" + +#: src/pentaxmn.cpp:600 +#, fuzzy +msgid "Stage Lighting" +msgstr "Chiá»u cao hình ảnh" + +#: src/pentaxmn.cpp:601 +#, fuzzy +msgid "Night Snap" +msgstr "Cảnh đêm" + +#: src/pentaxmn.cpp:602 +#, fuzzy +msgid "Blue Sky" +msgstr "Xanh dương" + +#: src/pentaxmn.cpp:604 +#, fuzzy +msgid "Night Scene HDR" +msgstr "Cảnh đêm" + +#: src/pentaxmn.cpp:606 +#, fuzzy +msgid "Quick Macro" +msgstr "Siêu cận cảnh phóng to" + +#: src/pentaxmn.cpp:607 +msgid "Forest" +msgstr "" + +#: src/pentaxmn.cpp:608 +msgid "Backlight Silhouette" +msgstr "" + +#: src/pentaxmn.cpp:610 +#, fuzzy +msgid "Auto PICT (Standard)" +msgstr "Tá»± động (Bóng râm)" + +#: src/pentaxmn.cpp:611 +#, fuzzy +msgid "Auto PICT (Portrait)" +msgstr "Tương phản tá»± động" + +#: src/pentaxmn.cpp:612 +#, fuzzy +msgid "Auto PICT (Landscape)" +msgstr "Äã chỉnh sá»­a (Phong cảnh)" + +#: src/pentaxmn.cpp:613 +msgid "Auto PICT (Macro)" +msgstr "" + +#: src/pentaxmn.cpp:614 +#, fuzzy +msgid "Auto PICT (Sport)" +msgstr "Tương phản tá»± động" + +#: src/pentaxmn.cpp:617 src/pentaxmn.cpp:628 +#, fuzzy +msgid "Green Mode" +msgstr "Chế độ Ä‘o đạc" + +#: src/pentaxmn.cpp:618 src/pentaxmn.cpp:629 +#, fuzzy +msgid "Shutter Speed Priority" +msgstr "Ưu tiên tốc độ chụp" + +#: src/pentaxmn.cpp:619 src/pentaxmn.cpp:630 +msgid "Aperture Priority" +msgstr "Ưu tiên khẩu độ" + +#: src/pentaxmn.cpp:621 src/pentaxmn.cpp:634 +msgid "Bulb" +msgstr "" + +#: src/pentaxmn.cpp:627 +msgid "Shallow DOF" +msgstr "" + +#: src/pentaxmn.cpp:631 +#, fuzzy +msgid "Program Tv Shift" +msgstr "Chương trình" + +#: src/pentaxmn.cpp:632 +#, fuzzy +msgid "Program Av Shift" +msgstr "Chương trình" + +#: src/pentaxmn.cpp:635 +#, fuzzy +msgid "Aperture Priority (Off-Auto-Aperture)" +msgstr "Ưu tiên khẩu độ (Av)" + +#: src/pentaxmn.cpp:636 +#, fuzzy +msgid "Manual (Off-Auto-Aperture)" +msgstr "Khẩu độ tá»± động" + +#: src/pentaxmn.cpp:637 +#, fuzzy +msgid "Bulb (Off-Auto-Aperture)" +msgstr "Khẩu độ tá»± động" + +#: src/pentaxmn.cpp:639 +msgid "Shutter Priority" +msgstr "Ưu tiên tốc độ chụp" + +#: src/pentaxmn.cpp:640 +#, fuzzy +msgid "Shutter & Aperture Priority AE" +msgstr "Ưu tiên khẩu độ" + +#: src/pentaxmn.cpp:641 +#, fuzzy +msgid "Shutter & Aperture Priority AE (1)" +msgstr "Ưu tiên tốc độ chập (Tv)" + +#: src/pentaxmn.cpp:642 +#, fuzzy +msgid "Sensitivity Priority AE" +msgstr "Äiá»u chỉnh độ nhạy" + +#: src/pentaxmn.cpp:643 +msgid "Sensitivity Priority AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:644 +msgid "Flash X-Sync Speed AE" +msgstr "" + +#: src/pentaxmn.cpp:645 +msgid "Flash X-Sync Speed AE (1)" +msgstr "" + +#: src/pentaxmn.cpp:646 +#, fuzzy +msgid "Auto Program (Normal)" +msgstr "Chương trình (2)" + +#: src/pentaxmn.cpp:647 +msgid "Auto Program (Hi-Speed)" +msgstr "" + +#: src/pentaxmn.cpp:648 +#, fuzzy +msgid "Auto Program (DOF)" +msgstr "Chương trình (2)" + +#: src/pentaxmn.cpp:649 +#, fuzzy +msgid "Auto Program (MTF)" +msgstr "Chương trình (2)" + +#: src/pentaxmn.cpp:650 +msgid "Auto Program (Shallow DOF)" +msgstr "" + +#: src/pentaxmn.cpp:651 +#, fuzzy +msgid "Blur control" +msgstr "Äiá»u khiển màu" + +#: src/pentaxmn.cpp:654 +msgid "Video (30 fps)" +msgstr "" + +#: src/pentaxmn.cpp:655 +msgid "Video (24 fps)" +msgstr "" + +#: src/pentaxmn.cpp:662 +msgid "Continuous (Hi)" +msgstr "Liên tục (Hi)" + +#: src/pentaxmn.cpp:663 src/sonymn.cpp:272 +msgid "Burst" +msgstr "" + +#: src/pentaxmn.cpp:664 src/pentaxmn.cpp:668 src/pentaxmn.cpp:679 +#: src/properties.cpp:908 +msgid "Video" +msgstr "" + +#: src/pentaxmn.cpp:666 +msgid "Self-timer (12 sec)" +msgstr "" + +#: src/pentaxmn.cpp:667 +msgid "Self-timer (2 sec)" +msgstr "" + +#: src/pentaxmn.cpp:669 +msgid "Mirror Lock-up" +msgstr "" + +#: src/pentaxmn.cpp:670 +msgid "Remote Control (3 sec)" +msgstr "Äiá»u khiển từ xa" + +#: src/pentaxmn.cpp:671 +msgid "Remote Control" +msgstr "Äiá»u khiển Từ xa" + +#: src/pentaxmn.cpp:672 +#, fuzzy +msgid "Remote Continuous Shooting" +msgstr "Liên tục, cao" + +#: src/pentaxmn.cpp:675 +#, fuzzy +msgid "HDR Strong 1" +msgstr "Mạnh" + +#: src/pentaxmn.cpp:676 +#, fuzzy +msgid "HDR Strong 2" +msgstr "Mạnh" + +#: src/pentaxmn.cpp:677 +#, fuzzy +msgid "HDR Strong 3" +msgstr "Mạnh" + +#: src/pentaxmn.cpp:678 +#, fuzzy +msgid "HDR Auto" +msgstr "Tá»± động" + +#: src/pentaxmn.cpp:690 +msgid "M-42 or No Lens" +msgstr "M-42 hoặc Không có ống kính" + +#: src/pentaxmn.cpp:691 +#, fuzzy +msgid "K or M Lens" +msgstr "M-42 hoặc Không có ống kính" + +#: src/pentaxmn.cpp:692 +msgid "A Series Lens" +msgstr "" + +#: src/pentaxmn.cpp:970 +msgid "Bright" +msgstr "Sang1" + +#: src/pentaxmn.cpp:976 +msgid "Reversal film" +msgstr "" + +#: src/pentaxmn.cpp:977 +msgid "Bleach bypass" +msgstr "" + +#: src/pentaxmn.cpp:978 +msgid "Radiant" +msgstr "" + +#: src/pentaxmn.cpp:990 +msgid "Weakest" +msgstr "Yếu nhất" + +#: src/pentaxmn.cpp:991 +msgid "Weak" +msgstr "Yếu" + +#: src/pentaxmn.cpp:992 +msgid "Strong" +msgstr "Mạnh" + +#: src/pentaxmn.cpp:1112 +msgid "No extended bracketing" +msgstr "" + +#: src/pentaxmn.cpp:1118 +msgid "WB-BA" +msgstr "" + +#: src/pentaxmn.cpp:1121 +msgid "WB-GM" +msgstr "" + +#: src/pentaxmn.cpp:1133 +msgid "Unknown " +msgstr "Không biết " + +#: src/pentaxmn.cpp:1146 +msgid "Pentax Makernote version" +msgstr "" + +#: src/pentaxmn.cpp:1149 +msgid "Camera shooting mode" +msgstr "Chế độ chụp cá»§a máy ảnh" + +#: src/pentaxmn.cpp:1151 src/pentaxmn.cpp:1152 +msgid "Resolution of a preview image" +msgstr "Phân giải cá»§a ảnh xem trước" + +#: src/pentaxmn.cpp:1154 +msgid "Length of a preview image" +msgstr "Äá»™ dài cá»§a ảnh xem trước" + +#: src/pentaxmn.cpp:1155 +#, fuzzy +msgid "Size of an IFD containing a preview image" +msgstr "Kích cỡ hình ảnh xem trước" + +#: src/pentaxmn.cpp:1160 +#, fuzzy +msgid "Model identification" +msgstr "Nhận diện mẫu máy ảnh Pentax" + +#: src/pentaxmn.cpp:1161 +#, fuzzy +msgid "Pentax model identification" +msgstr "Nhận diện mẫu máy ảnh Pentax" + +#: src/pentaxmn.cpp:1163 src/pentaxmn.cpp:1164 src/properties.cpp:167 +msgid "Date" +msgstr "Ngày" + +#: src/pentaxmn.cpp:1166 src/pentaxmn.cpp:1167 +msgid "Time" +msgstr "Thá»i gian" + +#: src/pentaxmn.cpp:1170 +msgid "Image quality settings" +msgstr "Tùy chỉnh chất lượng hình ảnh" + +#: src/pentaxmn.cpp:1173 +msgid "Image size settings" +msgstr "Tùy chỉnh kích cỡ hình ảnh" + +#: src/pentaxmn.cpp:1177 +msgid "Flash mode settings" +msgstr "Tùy chỉnh chế độ đèn chá»›p" + +#: src/pentaxmn.cpp:1180 +msgid "Focus mode settings" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/pentaxmn.cpp:1183 +msgid "Selected AF point" +msgstr "Lá»±c chá»n Ä‘iểm lấy nét tá»± động" + +#: src/pentaxmn.cpp:1185 src/pentaxmn.cpp:1186 +#, fuzzy +msgid "AF point in focus" +msgstr "Äiểm lấy nét tá»± động đã sá»­ dụng" + +#: src/pentaxmn.cpp:1192 src/pentaxmn.cpp:1193 +#, fuzzy +msgid "F-Number" +msgstr "Số F" + +#: src/pentaxmn.cpp:1195 +msgid "ISO sensitivity" +msgstr "Äá»™ nhạy sáng" + +#: src/pentaxmn.cpp:1196 +msgid "ISO sensitivity settings" +msgstr "Tùy chỉnh độ nhạy sáng" + +#: src/pentaxmn.cpp:1203 src/pentaxmn.cpp:1204 +msgid "MeteringMode" +msgstr "Chếđộđođạc" + +#: src/pentaxmn.cpp:1206 src/pentaxmn.cpp:1207 +#, fuzzy +msgid "AutoBracketing" +msgstr "Tá»± động" + +#: src/pentaxmn.cpp:1216 +msgid "Blue color balance" +msgstr "Cân bằng màu xanh dương" + +#: src/pentaxmn.cpp:1219 +msgid "Red color balance" +msgstr "Cân bằng màu Ä‘á»" + +#: src/pentaxmn.cpp:1221 src/pentaxmn.cpp:1222 +msgid "FocalLength" +msgstr "DảiTiêucá»±" + +#: src/pentaxmn.cpp:1239 +msgid "Hometown" +msgstr "" + +#: src/pentaxmn.cpp:1245 +msgid "Hometown DST" +msgstr "" + +#: src/pentaxmn.cpp:1246 +msgid "Whether day saving time is active in home town" +msgstr "" + +#: src/pentaxmn.cpp:1248 +#, fuzzy +msgid "Destination DST" +msgstr "Äích đến" + +#: src/pentaxmn.cpp:1249 +msgid "Whether day saving time is active in destination" +msgstr "" + +#: src/pentaxmn.cpp:1251 src/pentaxmn.cpp:1252 +#, fuzzy +msgid "DSPFirmwareVersion" +msgstr "Phiên bản phần vững" + +#: src/pentaxmn.cpp:1254 src/pentaxmn.cpp:1255 +#, fuzzy +msgid "CPUFirmwareVersion" +msgstr "Phiên bản phần vững" + +#: src/pentaxmn.cpp:1261 +msgid "Light value" +msgstr "Gia1 trị sáng" + +#: src/pentaxmn.cpp:1262 +msgid "Camera calculated light value, includes exposure compensation" +msgstr "" + +#: src/pentaxmn.cpp:1278 src/pentaxmn.cpp:1279 +#, fuzzy +msgid "Image area offset" +msgstr "Kích cỡ dữ liệu hình ảnh" + +#: src/pentaxmn.cpp:1281 src/pentaxmn.cpp:1282 +msgid "Raw image size" +msgstr "Kích cỡ hình ảnh gốc" + +#: src/pentaxmn.cpp:1285 src/pentaxmn.cpp:1286 +msgid "Preview image borders" +msgstr "Khung viá»n cá»§a hình ảnh xem trước" + +#: src/pentaxmn.cpp:1291 src/pentaxmn.cpp:1292 +msgid "Sensitivity adjust" +msgstr "Äiá»u chỉnh độ nhạy" + +#: src/pentaxmn.cpp:1294 src/pentaxmn.cpp:1295 +msgid "Digital filter" +msgstr "Lá»c Ä‘iện tá»­" + +#: src/pentaxmn.cpp:1299 +#, fuzzy +msgid "Camera temperature" +msgstr "Nhiệt độ màu" + +#: src/pentaxmn.cpp:1312 src/pentaxmn.cpp:1313 +#, fuzzy +msgid "Image tone" +msgstr "Kiểu hình ảnh" + +#: src/pentaxmn.cpp:1319 +msgid "Shake reduction" +msgstr "Giảm rung" + +#: src/pentaxmn.cpp:1320 +#, fuzzy +msgid "Shake reduction information" +msgstr "Giảm rung" + +#: src/pentaxmn.cpp:1325 src/pentaxmn.cpp:1326 +msgid "Dynamic range expansion" +msgstr "" + +#: src/pentaxmn.cpp:1328 src/pentaxmn.cpp:1329 +msgid "High ISO noise reduction" +msgstr "Giảm nhiá»…u do độ nhạy sáng cao" + +#: src/pentaxmn.cpp:1331 src/pentaxmn.cpp:1332 +#, fuzzy +msgid "AF Adjustment" +msgstr "Thay đổi" + +#: src/pentaxmn.cpp:1335 src/pentaxmn.cpp:1336 +msgid "Black point" +msgstr "Äiểm Ä‘en" + +#: src/pentaxmn.cpp:1338 src/pentaxmn.cpp:1339 +msgid "White point" +msgstr "Äiểm trắng" + +#: src/pentaxmn.cpp:1342 src/pentaxmn.cpp:1343 +msgid "ShotInfo" +msgstr "Thôngtinảnhchụp" + +#: src/pentaxmn.cpp:1345 src/pentaxmn.cpp:1346 +#, fuzzy +msgid "AEInfo" +msgstr "Thông tin Lấy nét tá»± động" + +#: src/pentaxmn.cpp:1348 src/pentaxmn.cpp:1349 +msgid "LensInfo" +msgstr "Thôngtinốngkính" + +#: src/pentaxmn.cpp:1351 src/pentaxmn.cpp:1352 +msgid "FlashInfo" +msgstr "Thôngtinđènchá»›p" + +#: src/pentaxmn.cpp:1354 src/pentaxmn.cpp:1355 +#, fuzzy +msgid "AEMeteringSegments" +msgstr "Chế độ Ä‘o đạc" + +#: src/pentaxmn.cpp:1357 src/pentaxmn.cpp:1358 +#, fuzzy +msgid "FlashADump" +msgstr "Äèn chá»›p" + +#: src/pentaxmn.cpp:1360 src/pentaxmn.cpp:1361 +#, fuzzy +msgid "FlashBDump" +msgstr "Äèn chá»›p" + +#: src/pentaxmn.cpp:1364 src/pentaxmn.cpp:1365 +msgid "WB_RGGBLevelsDaylight" +msgstr "" + +#: src/pentaxmn.cpp:1367 src/pentaxmn.cpp:1368 +msgid "WB_RGGBLevelsShade" +msgstr "" + +#: src/pentaxmn.cpp:1370 src/pentaxmn.cpp:1371 +msgid "WB_RGGBLevelsCloudy" +msgstr "" + +#: src/pentaxmn.cpp:1373 src/pentaxmn.cpp:1374 +msgid "WB_RGGBLevelsTungsten" +msgstr "" + +#: src/pentaxmn.cpp:1376 src/pentaxmn.cpp:1377 +msgid "WB_RGGBLevelsFluorescentD" +msgstr "" + +#: src/pentaxmn.cpp:1379 src/pentaxmn.cpp:1380 +msgid "WB_RGGBLevelsFluorescentN" +msgstr "" + +#: src/pentaxmn.cpp:1382 src/pentaxmn.cpp:1383 +msgid "WB_RGGBLevelsFluorescentW" +msgstr "" + +#: src/pentaxmn.cpp:1385 src/pentaxmn.cpp:1386 +msgid "WB_RGGBLevelsFlash" +msgstr "" + +#: src/pentaxmn.cpp:1388 src/pentaxmn.cpp:1389 +msgid "CameraInfo" +msgstr "Thôngtinmáyảnh" + +#: src/pentaxmn.cpp:1391 src/pentaxmn.cpp:1392 +msgid "BatteryInfo" +msgstr "Thôngtinpin" + +#: src/pentaxmn.cpp:1394 src/pentaxmn.cpp:1395 +#, fuzzy +msgid "AFInfo" +msgstr "Thông tin Lấy nét tá»± động" + +#: src/pentaxmn.cpp:1397 src/pentaxmn.cpp:1398 +#, fuzzy +msgid "ColorInfo" +msgstr "Màu sắc" + +#: src/pentaxmn.cpp:1405 +#, fuzzy +msgid "Unknown PentaxMakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/properties.cpp:110 +msgid "Dublin Core schema" +msgstr "" + +#: src/properties.cpp:111 +msgid "digiKam Photo Management schema" +msgstr "" + +#: src/properties.cpp:112 +msgid "KDE Image Program Interface schema" +msgstr "" + +#: src/properties.cpp:113 +msgid "XMP Basic schema" +msgstr "" + +#: src/properties.cpp:114 +msgid "XMP Rights Management schema" +msgstr "" + +#: src/properties.cpp:115 +msgid "XMP Media Management schema" +msgstr "" + +#: src/properties.cpp:116 +msgid "XMP Basic Job Ticket schema" +msgstr "" + +#: src/properties.cpp:117 +msgid "XMP Paged-Text schema" +msgstr "" + +#: src/properties.cpp:118 +msgid "XMP Dynamic Media schema" +msgstr "" + +#: src/properties.cpp:119 +msgid "Microsoft Photo schema" +msgstr "" + +#: src/properties.cpp:120 +msgid "Adobe Lightroom schema" +msgstr "" + +#: src/properties.cpp:121 +#, fuzzy +msgid "Adobe PDF schema" +msgstr "Thẻ Adobe DNG" + +#: src/properties.cpp:122 +msgid "Adobe photoshop schema" +msgstr "" + +#: src/properties.cpp:123 +msgid "Camera Raw schema" +msgstr "" + +#: src/properties.cpp:124 +msgid "Exif Schema for TIFF Properties" +msgstr "" + +#: src/properties.cpp:125 +msgid "Exif schema for Exif-specific Properties" +msgstr "" + +#: src/properties.cpp:126 +msgid "Exif schema for Additional Exif Properties" +msgstr "" + +#: src/properties.cpp:127 src/properties.cpp:128 +msgid "IPTC Core schema" +msgstr "" + +#: src/properties.cpp:129 src/properties.cpp:130 +msgid "IPTC Extension schema" +msgstr "" + +#: src/properties.cpp:131 +msgid "PLUS License Data Format schema" +msgstr "" + +#: src/properties.cpp:132 +msgid "iView Media Pro schema" +msgstr "" + +#: src/properties.cpp:133 +msgid "Expression Media schema" +msgstr "" + +#: src/properties.cpp:134 +msgid "Microsoft Photo 1.2 schema" +msgstr "" + +#: src/properties.cpp:135 +msgid "Microsoft Photo RegionInfo schema" +msgstr "" + +#: src/properties.cpp:136 +msgid "Microsoft Photo Region schema" +msgstr "" + +#: src/properties.cpp:137 +msgid "Metadata Working Group Regions schema" +msgstr "" + +#: src/properties.cpp:138 +msgid "Metadata Working Group Keywords schema" +msgstr "" + +#: src/properties.cpp:139 +msgid "XMP Extended Video schema" +msgstr "" + +#: src/properties.cpp:140 +msgid "XMP Extended Audio schema" +msgstr "" + +#: src/properties.cpp:141 +msgid "XMP Darwin Core schema" +msgstr "" + +#: src/properties.cpp:142 +msgid "Qualified Dublin Core schema" +msgstr "" + +#: src/properties.cpp:143 +msgid "ACDSee XMP schema" +msgstr "" + +#: src/properties.cpp:144 +msgid "Google Photo Sphere XMP schema" +msgstr "" + +#: src/properties.cpp:148 +#, fuzzy +msgid "Colorant structure" +msgstr "Nhiệt độ màu sắc" + +#: src/properties.cpp:149 +#, fuzzy +msgid "Dimensions structure" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:150 +#, fuzzy +msgid "Font structure" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:151 +#, fuzzy +msgid "Thumbnail structure" +msgstr "Hình ảnh thu nhá»" + +#: src/properties.cpp:152 +#, fuzzy +msgid "Resource Event structure" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:153 +#, fuzzy +msgid "ResourceRef structure" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:154 +msgid "Version structure" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:155 +msgid "Basic Job/Workflow structure" +msgstr "" + +#: src/properties.cpp:156 +#, fuzzy +msgid "Area structure" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:159 +msgid "Qualifier for xmp:Identifier" +msgstr "" + +#: src/properties.cpp:163 +msgid "Contributor" +msgstr "Ngưá»i cá»™ng tác" + +#: src/properties.cpp:163 +msgid "Contributors to the resource (other than the authors)." +msgstr "" + +#: src/properties.cpp:164 +#, fuzzy +msgid "Coverage" +msgstr "Trung bình" + +#: src/properties.cpp:164 +msgid "" +"The spatial or temporal topic of the resource, the spatial applicability of " +"the resource, or the jurisdiction under which the resource is relevant." +msgstr "" + +#: src/properties.cpp:166 +msgid "Creator" +msgstr "Ngưá»i tạo" + +#: src/properties.cpp:166 +msgid "" +"The authors of the resource (listed in order of precedence, if significant)." +msgstr "" + +#: src/properties.cpp:167 +msgid "Date(s) that something interesting happened to the resource." +msgstr "" + +#: src/properties.cpp:168 +msgid "" +"A textual description of the content of the resource. Multiple values may be " +"present for different languages." +msgstr "" + +#: src/properties.cpp:170 src/properties.cpp:1160 +msgid "Format" +msgstr "Äịnh dạng" + +#: src/properties.cpp:170 +msgid "" +"The file format used when saving the resource. Tools and applications should " +"set this property to the save format of the data. It may include appropriate " +"qualifiers." +msgstr "" + +#: src/properties.cpp:172 src/properties.cpp:228 +msgid "Identifier" +msgstr "" + +#: src/properties.cpp:172 +msgid "" +"Unique identifier of the resource. Recommended best practice is to identify " +"the resource by means of a string conforming to a formal identification " +"system." +msgstr "" + +#: src/properties.cpp:174 +msgid "An unordered array specifying the languages used in the resource." +msgstr "" + +#: src/properties.cpp:175 +msgid "Publisher" +msgstr "Nhà xuất bản" + +#: src/properties.cpp:175 +msgid "" +"An entity responsible for making the resource available. Examples of a " +"Publisher include a person, an organization, or a service. Typically, the " +"name of a Publisher should be used to indicate the entity." +msgstr "" + +#: src/properties.cpp:178 +msgid "Relation" +msgstr "Mối liên hệ" + +#: src/properties.cpp:178 +msgid "" +"Relationships to other documents. Recommended best practice is to identify " +"the related resource by means of a string conforming to a formal " +"identification system." +msgstr "" + +#: src/properties.cpp:180 +msgid "Rights" +msgstr "Quyá»n lợi" + +#: src/properties.cpp:180 +msgid "" +"Informal rights statement, selected by language. Typically, rights " +"information includes a statement about various property rights associated " +"with the resource, including intellectual property rights." +msgstr "" + +#: src/properties.cpp:183 +#, fuzzy +msgid "Unique identifier of the work from which this resource was derived." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:184 +msgid "" +"An unordered array of descriptive phrases or keywords that specify the topic " +"of the content of the resource." +msgstr "" + +#: src/properties.cpp:186 +msgid "" +"The title of the document, or the name given to the resource. Typically, it " +"will be a name by which the resource is formally known." +msgstr "" + +#: src/properties.cpp:188 src/properties.cpp:1004 src/properties.cpp:1449 +msgid "Type" +msgstr "Kiểu" + +#: src/properties.cpp:188 +msgid "A document type; for example, novel, poem, or working paper." +msgstr "" + +#: src/properties.cpp:194 +msgid "Tags List" +msgstr "" + +#: src/properties.cpp:194 +msgid "" +"The list of complete tags path as string. The path hierarchy is separated by " +"'/' character (ex.: \"City/Paris/Monument/Eiffel Tower\"." +msgstr "" + +#: src/properties.cpp:195 +#, fuzzy +msgid "Captions Author Names" +msgstr "Äịa Ä‘iểm-Tên Quốc gia" + +#: src/properties.cpp:195 +msgid "" +"The list of all captions author names for each language alternative captions " +"set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:196 +#, fuzzy +msgid "Captions Date Time Stamps" +msgstr "Cập nhật nhãn thá»i g" + +#: src/properties.cpp:196 +msgid "" +"The list of all captions date time stamps for each language alternative " +"captions set in standard XMP tags." +msgstr "" + +#: src/properties.cpp:197 src/tags.cpp:844 +msgid "Image History" +msgstr "Lịch sá»­ hình ảnh" + +#: src/properties.cpp:197 +msgid "" +"An XML based content to list all action processed on this image with image " +"editor (as crop, rotate, color corrections, adjustments, etc.)." +msgstr "" + +#: src/properties.cpp:198 +#, fuzzy +msgid "Lens Correction Settings" +msgstr "Thiết lập độ tương phản" + +#: src/properties.cpp:198 +msgid "" +"The list of Lens Correction tools settings used to fix lens distortion. This " +"include Batch Queue Manager and Image editor tools based on LensFun library." +msgstr "" + +#: src/properties.cpp:199 +#, fuzzy +msgid "Color Label" +msgstr "Không gian Màu" + +#: src/properties.cpp:199 +msgid "" +"The color label assigned to this item. Possible values are \"0\": no label; " +"\"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": " +"Magenta; \"7\": Gray; \"8\": Black; \"9\": White." +msgstr "" + +#: src/properties.cpp:200 +#, fuzzy +msgid "Pick Label" +msgstr "Nhãn" + +#: src/properties.cpp:200 +msgid "" +"The pick label assigned to this item. Possible values are \"0\": no label; " +"\"1\": item rejected; \"2\": item in pending validation; \"3\": item " +"accepted." +msgstr "" + +#: src/properties.cpp:206 +#, fuzzy +msgid "Panorama Input Files" +msgstr "Khung hình toàn cảnh" + +#: src/properties.cpp:206 +msgid "The list of files processed with Hugin program through Panorama tool." +msgstr "" + +#: src/properties.cpp:207 +msgid "Enfuse Input Files" +msgstr "" + +#: src/properties.cpp:207 +msgid "" +"The list of files processed with Enfuse program through ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:208 +#, fuzzy +msgid "Enfuse Settings" +msgstr "Các cài đặt mặc định" + +#: src/properties.cpp:208 +msgid "" +"The list of Enfuse settings used to blend image stack with ExpoBlending tool." +msgstr "" + +#: src/properties.cpp:209 +msgid "PicasaWeb Item ID" +msgstr "" + +#: src/properties.cpp:209 +msgid "Item ID from PicasaWeb web service." +msgstr "" + +#: src/properties.cpp:210 +msgid "Yandex Fotki Item ID" +msgstr "" + +#: src/properties.cpp:210 +msgid "Item ID from Yandex Fotki web service." +msgstr "" + +#: src/properties.cpp:216 +msgid "Advisory" +msgstr "" + +#: src/properties.cpp:216 +msgid "" +"An unordered array specifying properties that were edited outside the " +"authoring application. Each item should contain a single namespace and XPath " +"separated by one ASCII space (U+0020)." +msgstr "" + +#: src/properties.cpp:219 src/properties.cpp:1066 +msgid "Base URL" +msgstr "" + +#: src/properties.cpp:219 +msgid "" +"The base URL for relative URLs in the document content. If this document " +"contains Internet links, and those links are relative, they are relative to " +"this base URL. This property provides a standard way for embedded relative " +"URLs to be interpreted by tools. Web authoring tools should set the value " +"based on their notion of where URLs will be interpreted." +msgstr "" + +#: src/properties.cpp:224 +msgid "Create Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:224 +#, fuzzy +msgid "The date and time the resource was originally created." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:225 +#, fuzzy +msgid "Creator Tool" +msgstr "Ngưá»i tạo" + +#: src/properties.cpp:225 +msgid "" +"The name of the first known tool used to create the resource. If history is " +"present in the metadata, this value should be equivalent to that of xmpMM:" +"History's softwareAgent property." +msgstr "" + +#: src/properties.cpp:228 +msgid "" +"An unordered array of text strings that unambiguously identify the resource " +"within a given context. An array item may be qualified with xmpidq:Scheme to " +"denote the formal identification system to which that identifier conforms. " +"Note: The dc:identifier property is not used because it lacks a defined " +"scheme qualifier and has been defined in the XMP Specification as a simple " +"(single-valued) property." +msgstr "" + +#: src/properties.cpp:233 +msgid "Label" +msgstr "Nhãn" + +#: src/properties.cpp:233 +msgid "" +"A word or short phrase that identifies a document as a member of a user-" +"defined collection. Used to organize documents in a file browser." +msgstr "" + +#: src/properties.cpp:235 +#, fuzzy +msgid "Metadata Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:235 +msgid "" +"The date and time that any metadata for this resource was last changed. It " +"should be the same as or more recent than xmp:ModifyDate." +msgstr "" + +#: src/properties.cpp:237 +msgid "Modify Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:237 +msgid "" +"The date and time the resource was last modified. Note: The value of this " +"property is not necessarily the same as the file's system modification date " +"because it is set before the file is saved." +msgstr "" + +#: src/properties.cpp:240 +msgid "Nickname" +msgstr "" + +#: src/properties.cpp:240 +msgid "A short informal name for the resource." +msgstr "" + +#: src/properties.cpp:241 src/properties.cpp:1288 src/properties.cpp:2104 +msgid "Rating" +msgstr "Äánh giá" + +#: src/properties.cpp:241 +msgid "" +"A number that indicates a document's status relative to other documents, " +"used to organize documents in a file browser. Values are user-defined within " +"an application-defined range." +msgstr "" + +#: src/properties.cpp:244 +#, fuzzy +msgid "Thumbnails" +msgstr "Ảnh thu nhá»" + +#: src/properties.cpp:244 +msgid "" +"An alternative array of thumbnail images for a file, which can differ in " +"characteristics such as size or image encoding." +msgstr "" + +#: src/properties.cpp:251 +msgid "Certificate" +msgstr "Chứng chỉ" + +#: src/properties.cpp:251 +msgid "Online rights management certificate." +msgstr "" + +#: src/properties.cpp:252 +msgid "Marked" +msgstr "Äánh dấu" + +#: src/properties.cpp:252 +msgid "Indicates that this is a rights-managed resource." +msgstr "" + +#: src/properties.cpp:253 +msgid "Owner" +msgstr "Chá»§ sở hữu" + +#: src/properties.cpp:253 +msgid "An unordered array specifying the legal owner(s) of a resource." +msgstr "" + +#: src/properties.cpp:254 +msgid "Usage Terms" +msgstr "" + +#: src/properties.cpp:254 +msgid "Text instructions on how a resource can be legally used." +msgstr "" + +#: src/properties.cpp:255 +msgid "Web Statement" +msgstr "" + +#: src/properties.cpp:255 +msgid "" +"The location of a web page describing the owner and/or rights statement for " +"this resource." +msgstr "" + +#: src/properties.cpp:261 +msgid "Derived From" +msgstr "" + +#: src/properties.cpp:261 +msgid "" +"A reference to the original document from which this one is derived. It is a " +"minimal reference; missing components can be assumed to be unchanged. For " +"example, a new version might only need to specify the instance ID and " +"version number of the previous version, or a rendition might only need to " +"specify the instance ID and rendition class of the original." +msgstr "" + +#: src/properties.cpp:266 +#, fuzzy +msgid "Document ID" +msgstr "Tài liệu" + +#: src/properties.cpp:266 +msgid "" +"The common identifier for all versions and renditions of a document. It " +"should be based on a UUID; see Document and Instance IDs below." +msgstr "" + +#: src/properties.cpp:268 +msgid "History" +msgstr "Lịch sá»­" + +#: src/properties.cpp:268 +msgid "" +"An ordered array of high-level user actions that resulted in this resource. " +"It is intended to give human readers a general indication of the steps taken " +"to make the changes from the previous version to this one. The list should " +"be at an abstract level; it is not intended to be an exhaustive keystroke or " +"other detailed history." +msgstr "" + +#: src/properties.cpp:272 +msgid "Instance ID" +msgstr "" + +#: src/properties.cpp:272 +msgid "" +"An identifier for a specific incarnation of a document, updated each time a " +"file is saved. It should be based on a UUID; see Document and Instance IDs " +"below." +msgstr "" + +#: src/properties.cpp:274 +#, fuzzy +msgid "Managed From" +msgstr "Ngưá»i quản lý" + +#: src/properties.cpp:274 +msgid "" +"A reference to the document as it was prior to becoming managed. It is set " +"when a managed document is introduced to an asset management system that " +"does not currently own it. It may or may not include references to different " +"management systems." +msgstr "" + +#: src/properties.cpp:277 +msgid "Manager" +msgstr "Ngưá»i quản lý" + +#: src/properties.cpp:277 +msgid "" +"The name of the asset management system that manages this resource. Along " +"with xmpMM: ManagerVariant, it tells applications which asset management " +"system to contact concerning this document." +msgstr "" + +#: src/properties.cpp:280 +#, fuzzy +msgid "Manage To" +msgstr "Ngưá»i quản lý" + +#: src/properties.cpp:280 +msgid "" +"A URI identifying the managed resource to the asset management system; the " +"presence of this property is the formal indication that this resource is " +"managed. The form and content of this URI is private to the asset management " +"system." +msgstr "" + +#: src/properties.cpp:283 +#, fuzzy +msgid "Manage UI" +msgstr "Ngưá»i quản lý" + +#: src/properties.cpp:283 +msgid "" +"A URI that can be used to access information about the managed resource " +"through a web browser. It might require a custom browser plug-in." +msgstr "" + +#: src/properties.cpp:285 +#, fuzzy +msgid "Manager Variant" +msgstr "Ngưá»i quản lý" + +#: src/properties.cpp:285 +msgid "" +"Specifies a particular variant of the asset management system. The format of " +"this property is private to the specific asset management system." +msgstr "" + +#: src/properties.cpp:287 +msgid "Rendition Class" +msgstr "" + +#: src/properties.cpp:287 +msgid "" +"The rendition class name for this resource. This property should be absent " +"or set to default for a document version that is not a derived rendition." +msgstr "" + +#: src/properties.cpp:289 +msgid "Rendition Params" +msgstr "" + +#: src/properties.cpp:289 +msgid "" +"Can be used to provide additional rendition parameters that are too complex " +"or verbose to encode in xmpMM: RenditionClass." +msgstr "" + +#: src/properties.cpp:291 +#, fuzzy +msgid "Version ID" +msgstr "Phiên bản" + +#: src/properties.cpp:291 +msgid "" +"The document version identifier for this resource. Each version of a " +"document gets a new identifier, usually simply by incrementing integers 1, " +"2, 3 . . . and so on. Media management systems can have other conventions or " +"support branching which requires a more complex scheme." +msgstr "" + +#: src/properties.cpp:295 +msgid "Versions" +msgstr "Phiên bản" + +#: src/properties.cpp:295 +msgid "" +"The version history associated with this resource. Entry [1] is the oldest " +"known version for this document, entry [last()] is the most recent version. " +"Typically, a media management system would fill in the version information " +"in the metadata on check-in. It is not guaranteed that a complete history " +"versions from the first to this one will be present in the xmpMM:Versions " +"property. Interior version information can be compressed or eliminated and " +"the version history can be truncated at some point." +msgstr "" + +#: src/properties.cpp:301 +msgid "Last URL" +msgstr "" + +#: src/properties.cpp:301 +msgid "Deprecated for privacy protection." +msgstr "" + +#: src/properties.cpp:302 +#, fuzzy +msgid "Rendition Of" +msgstr "Mối liên hệ" + +#: src/properties.cpp:302 +msgid "" +"Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of " +"which this is a rendition." +msgstr "" + +#: src/properties.cpp:304 +msgid "Save ID" +msgstr "" + +#: src/properties.cpp:304 +msgid "Deprecated. Previously used only to support the xmpMM:LastURL property." +msgstr "" + +#: src/properties.cpp:310 +#, fuzzy +msgid "Job Reference" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:310 +msgid "" +"References an external job management file for a job process in which the " +"document is being used. Use of job names is under user control. Typical use " +"would be to identify all documents that are part of a particular job or " +"contract. There are multiple values because there can be more than one job " +"using a particular document at any time, and it can also be useful to keep " +"historical information about what jobs a document was part of previously." +msgstr "" + +#: src/properties.cpp:319 +msgid "Maximum Page Size" +msgstr "Kích cỡ Trang Lá»›n nhất" + +#: src/properties.cpp:319 +msgid "" +"The size of the largest page in the document (including any in contained " +"documents)." +msgstr "" +"Kích cỡ cá»§a trang lá»›n nhất trong văn bản (bao gồm bất cứ những gì chứa trong " +"văn bản)" + +#: src/properties.cpp:320 +msgid "Number of Pages" +msgstr "Số trang" + +#: src/properties.cpp:320 +msgid "" +"The number of pages in the document (including any in contained documents)." +msgstr "" +"Số lượng các trang trong văn bản (bao gồm bất cứ những gì chứa trong văn bản)" + +#: src/properties.cpp:321 +msgid "Fonts" +msgstr "Phông chữ" + +#: src/properties.cpp:321 +msgid "" +"An unordered array of fonts that are used in the document (including any in " +"contained documents)." +msgstr "" +"Má»™t mảng không thứ tá»± các phông chữ được sá»­ dụng trong tài liệu (bao gồm tất " +"cả chứa trong tài liệu)." + +#: src/properties.cpp:322 +#, fuzzy +msgid "Colorants" +msgstr "Dữ liệu màu" + +#: src/properties.cpp:322 +#, fuzzy +msgid "" +"An ordered array of colorants (swatches) that are used in the document " +"(including any in contained documents)." +msgstr "" +"Má»™t mảng không thứ tá»± các phông chữ được sá»­ dụng trong tài liệu (bao gồm tất " +"cả chứa trong tài liệu)." + +#: src/properties.cpp:323 +#, fuzzy +msgid "Plate Names" +msgstr "Tên Thư mục" + +#: src/properties.cpp:323 +#, fuzzy +msgid "" +"An ordered array of plate names that are needed to print the document " +"(including any in contained documents)." +msgstr "" +"Má»™t mảng không thứ tá»± các phông chữ được sá»­ dụng trong tài liệu (bao gồm tất " +"cả chứa trong tài liệu)." + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "Project Reference" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:329 src/properties.cpp:1285 +msgid "A reference to the project that created this file." +msgstr "Má»™t liên kết đến dá»± án đã tạo tập tin này" + +#: src/properties.cpp:330 src/properties.cpp:1163 +msgid "Video Frame Rate" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:330 +msgid "The video frame rate. One of: 24, NTSC, PAL." +msgstr "Tỉ lệ khung hình phim. Má»™t trng: 24, NTSC, PAL." + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "Video Frame Size" +msgstr "Kích cỡ khung hình phim" + +#: src/properties.cpp:331 src/properties.cpp:1164 +msgid "The frame size. For example: w:720, h: 480, unit:pixels" +msgstr "Kích cỡ khung hình. Ví dụ: w:720, h: 480, unit:pixels" + +#: src/properties.cpp:332 +msgid "Video Pixel Aspect Ratio" +msgstr "" + +#: src/properties.cpp:332 +msgid "The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9" +msgstr "" + +#: src/properties.cpp:333 src/properties.cpp:1261 +#, fuzzy +msgid "Video Pixel Depth" +msgstr "Thứ tá»± trưá»ng ảnh" + +#: src/properties.cpp:333 src/properties.cpp:1261 +msgid "" +"The size in bits of each color component of a pixel. Standard Windows 32-bit " +"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "Video Color Space" +msgstr "Không gian màu phim" + +#: src/properties.cpp:335 src/properties.cpp:1081 +msgid "" +"The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " +"CCIR-709 (used for HD)." +msgstr "" +"Không gian màu phim. Má»™t trong: sRGB (dùng bởi Photoshop), CCIR-601 (dùng " +"cho NTSC), CCIR-709 (dùng cho HD)." + +#: src/properties.cpp:337 +#, fuzzy +msgid "Video Alpha Mode" +msgstr "Không gian màu phim" + +#: src/properties.cpp:337 +msgid "The alpha mode. One of: straight, pre-multiplied." +msgstr "" + +#: src/properties.cpp:338 +msgid "Video Alpha Premultiple Color" +msgstr "" + +#: src/properties.cpp:338 +msgid "" +"A color in CMYK or RGB to be used as the pre-multiple color when alpha mode " +"is pre-multiplied." +msgstr "" + +#: src/properties.cpp:340 +msgid "Video Alpha Unity Is Transparent" +msgstr "" + +#: src/properties.cpp:340 +msgid "When true, unity is clear, when false, it is opaque." +msgstr "" + +#: src/properties.cpp:341 +msgid "Video Compressor" +msgstr "Bá»™ nén ảnh" + +#: src/properties.cpp:341 +msgid "Video compression used. For example, jpeg." +msgstr "Bá»™ nén ảnh được dùng. Ví dụ, jped." + +#: src/properties.cpp:342 +msgid "Video Field Order" +msgstr "Thứ tá»± trưá»ng ảnh" + +#: src/properties.cpp:342 +msgid "The field order for video. One of: Upper, Lower, Progressive." +msgstr "Thứ tá»± trưá»ng ảnh. Ví dụ: Trên, dưới, tịnh tiến" + +#: src/properties.cpp:343 +msgid "Pull Down" +msgstr "" + +#: src/properties.cpp:343 +msgid "" +"The sampling phase of film to be converted to video (pull-down). One of: " +"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, " +"WWWSS_24p, WWSSW_24p." +msgstr "" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "Audio Sample Rate" +msgstr "Tỉ lệ mẫu âm thanh" + +#: src/properties.cpp:345 src/properties.cpp:1425 +msgid "" +"The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000." +msgstr "" +"Tỉ lệ mẫu âm thanh. Có thể là giá trị bất kì, thưá»ng là 32000, 41100, hay " +"48000." + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "Audio Sample Type" +msgstr "Kiểu mẫu âm thanh" + +#: src/properties.cpp:346 src/properties.cpp:1426 +msgid "The audio sample type. One of: 8Int, 16Int, 32Int, 32Float." +msgstr "Kiểu mẫu âm thanh. Má»™t trong: 8Int, 16Int, 32Int, 32Float." + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "Audio Channel Type" +msgstr "Kiểu kênh âm thanh" + +#: src/properties.cpp:347 src/properties.cpp:1400 +msgid "The audio channel type. One of: Mono, Stereo, 5.1, 7.1." +msgstr "Kiểu kênh âm thanh. Má»™t trong số: Mono, Streo, 5.1,7.1." + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "Audio Compressor" +msgstr "Bá»™ nén âm thanh" + +#: src/properties.cpp:348 src/properties.cpp:1407 +msgid "The audio compression used. For example, MP3." +msgstr "Bá»™ nén âm thanh được sá»­ dụng. Ví dụ, MP3." + +#: src/properties.cpp:349 +msgid "Speaker Placement" +msgstr "" + +#: src/properties.cpp:349 +msgid "" +"A description of the speaker angles from center front in degrees. For " +"example: \"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = " +"-110, Right Surround = 110\"" +msgstr "" + +#: src/properties.cpp:351 src/properties.cpp:1149 +#, fuzzy +msgid "File Data Rate" +msgstr "Tên tập tin" + +#: src/properties.cpp:351 src/properties.cpp:1149 +msgid "" +"The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/" +"sec" +msgstr "" + +#: src/properties.cpp:352 src/properties.cpp:1334 +#, fuzzy +msgid "Tape Name" +msgstr "Tên tập tin gốc" + +#: src/properties.cpp:352 +msgid "" +"The name of the tape from which the clip was captured, as set during the " +"capture process." +msgstr "" + +#: src/properties.cpp:353 +msgid "Alternative Tape Name" +msgstr "" + +#: src/properties.cpp:353 +msgid "" +"An alternative tape name, set via the project window or timecode dialog in " +"Premiere. If an alternative name has been set and has not been reverted, " +"that name is displayed." +msgstr "" + +#: src/properties.cpp:355 +msgid "Start Time Code" +msgstr "" + +#: src/properties.cpp:355 +msgid "" +"The timecode of the first frame of video in the file, as obtained from the " +"device control." +msgstr "" + +#: src/properties.cpp:356 +msgid "Alternative Time code" +msgstr "" + +#: src/properties.cpp:356 +msgid "" +"A timecode set by the user. When specified, it is used instead of the " +"startTimecode." +msgstr "" + +#: src/properties.cpp:357 src/properties.cpp:1124 +msgid "Duration" +msgstr "Thá»i lượng" + +#: src/properties.cpp:357 +msgid "The duration of the media file." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:358 +#, fuzzy +msgid "Scene" +msgstr "Cảnh đêm" + +#: src/properties.cpp:358 +#, fuzzy +msgid "The name of the scene." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:359 +msgid "Shot Name" +msgstr "Tên phim" + +#: src/properties.cpp:359 +msgid "The name of the shot or take." +msgstr "" + +#: src/properties.cpp:360 +msgid "Shot Date" +msgstr "Ngày quay" + +#: src/properties.cpp:360 +msgid "The date and time when the video was shot." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:361 +msgid "Shot Location" +msgstr "Äịa Ä‘iểm quay" + +#: src/properties.cpp:361 +msgid "" +"The name of the location where the video was shot. For example: " +"\"Oktoberfest, Munich Germany\" For more accurate positioning, use the EXIF " +"GPS values." +msgstr "" +"Tên cá»§a địa Ä‘iểm nÆ¡i phim được quay. Ví dụ:\"Oktoberfest, Munich Germany\" " +"Ä63 có được vị trí chính xác hÆ¡n, sá»­ dụng các giá trị EXIF GPS" + +#: src/properties.cpp:363 +msgid "Log Comment" +msgstr "Nhật kí bình luận" + +#: src/properties.cpp:363 +msgid "User's log comments." +msgstr "Nhật kí bình luận cá»§a ngưá»i dùng" + +#: src/properties.cpp:364 +#, fuzzy +msgid "Markers" +msgstr "Äánh dấu" + +#: src/properties.cpp:364 +msgid "An ordered list of markers" +msgstr "" + +#: src/properties.cpp:365 +#, fuzzy +msgid "Contributed Media" +msgstr "Ngưá»i cá»™ng tác" + +#: src/properties.cpp:365 +msgid "An unordered list of all media used to create this media." +msgstr "" + +#: src/properties.cpp:366 +msgid "Absolute Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:366 +msgid "" +"The absolute path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:367 +msgid "Relative Peak Audio File Path" +msgstr "" + +#: src/properties.cpp:367 +msgid "" +"The relative path to the file's peak audio file. If empty, no peak file " +"exists." +msgstr "" + +#: src/properties.cpp:368 +#, fuzzy +msgid "Video Modified Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:368 +#, fuzzy +msgid "The date and time when the video was last modified." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:369 +#, fuzzy +msgid "Audio Modified Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:369 +#, fuzzy +msgid "The date and time when the audio was last modified." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:370 +#, fuzzy +msgid "Metadata Modified Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:370 +#, fuzzy +msgid "The date and time when the metadata was last modified." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:371 src/properties.cpp:546 src/properties.cpp:1058 +#: src/tags.cpp:556 +msgid "Artist" +msgstr "Nghệ sÄ©" + +#: src/properties.cpp:371 src/properties.cpp:1058 +#, fuzzy +msgid "The name of the artist or artists." +msgstr "Tên cá»§a thành phố tại vị trí đó." + +#: src/properties.cpp:372 src/properties.cpp:1054 +msgid "Album" +msgstr "Anbom" + +#: src/properties.cpp:372 src/properties.cpp:1054 +#, fuzzy +msgid "The name of the album." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:373 src/properties.cpp:1366 +#, fuzzy +msgid "Track Number" +msgstr "Số Khung hình" + +#: src/properties.cpp:373 +msgid "" +"A numeric value indicating the order of the audio file within its original " +"recording." +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +msgid "Genre" +msgstr "" + +#: src/properties.cpp:374 src/properties.cpp:1166 +#, fuzzy +msgid "The name of the genre." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:375 +msgid "The copyright information." +msgstr "Thông tin bản quyá»n" + +#: src/properties.cpp:376 +#, fuzzy +msgid "The date the title was released." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:377 src/properties.cpp:1086 +msgid "Composer" +msgstr "Tác giả" + +#: src/properties.cpp:377 +#, fuzzy +msgid "The composer's name." +msgstr "Tên kÄ© sư" + +#: src/properties.cpp:378 src/properties.cpp:1143 +msgid "Engineer" +msgstr "KÄ© sư" + +#: src/properties.cpp:378 +msgid "The engineer's name." +msgstr "Tên kÄ© sư" + +#: src/properties.cpp:379 +msgid "Tempo" +msgstr "Nhịp Ä‘iệu" + +#: src/properties.cpp:379 +msgid "The audio's tempo." +msgstr "" + +#: src/properties.cpp:380 +msgid "Instrument" +msgstr "Dụng c" + +#: src/properties.cpp:380 +msgid "The musical instrument." +msgstr "Nhạc c" + +#: src/properties.cpp:381 +msgid "Intro Time" +msgstr "Thá»i gian mở" + +#: src/properties.cpp:381 +#, fuzzy +msgid "The duration of lead time for queuing music." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:382 +msgid "Out Cue" +msgstr "" + +#: src/properties.cpp:382 +msgid "The time at which to fade out." +msgstr "" + +#: src/properties.cpp:383 +#, fuzzy +msgid "Relative Timestamp" +msgstr "Cập nhật nhãn thá»i g" + +#: src/properties.cpp:383 +msgid "The start time of the media inside the audio project." +msgstr "" + +#: src/properties.cpp:384 +msgid "Loop" +msgstr "Vòng lặp" + +#: src/properties.cpp:384 +msgid "When true, the clip can be looped seamlessly." +msgstr "" + +#: src/properties.cpp:385 +#, fuzzy +msgid "Number Of Beats" +msgstr "Số trang" + +#: src/properties.cpp:385 +#, fuzzy +msgid "The number of beats." +msgstr "Số trang" + +#: src/properties.cpp:386 +msgid "Key" +msgstr "Khóa" + +#: src/properties.cpp:386 +msgid "" +"The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B." +msgstr "" + +#: src/properties.cpp:387 +#, fuzzy +msgid "Stretch Mode" +msgstr "Chế độ đặc biệt" + +#: src/properties.cpp:387 +msgid "" +"The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat " +"Splice, Hybrid." +msgstr "" + +#: src/properties.cpp:388 +msgid "Time Scale Parameters" +msgstr "" + +#: src/properties.cpp:388 +msgid "Additional parameters for Time-Scale stretch mode." +msgstr "" + +#: src/properties.cpp:389 +msgid "Resample Parameters" +msgstr "" + +#: src/properties.cpp:389 +msgid "Additional parameters for Resample stretch mode." +msgstr "" + +#: src/properties.cpp:390 +msgid "Beat Splice Parameters" +msgstr "" + +#: src/properties.cpp:390 +msgid "Additional parameters for Beat Splice stretch mode." +msgstr "" + +#: src/properties.cpp:391 +#, fuzzy +msgid "Time Signature" +msgstr "Thá»i gian gá»­i" + +#: src/properties.cpp:391 +msgid "" +"The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, " +"12/8, other." +msgstr "" + +#: src/properties.cpp:392 +#, fuzzy +msgid "Scale Type" +msgstr "Kiểu tập tin phụ" + +#: src/properties.cpp:392 +msgid "" +"The musical scale used in the music. One of: Major, Minor, Both, Neither. " +"Neither is most often used for instruments with no associated scale, such as " +"drums." +msgstr "" + +#: src/properties.cpp:399 src/tags.cpp:1078 +#, fuzzy +msgid "Camera Serial Number" +msgstr "Số thứ tá»± máy ảnh" + +#: src/properties.cpp:399 +#, fuzzy +msgid "Camera Serial Number." +msgstr "Số thứ tá»± máy ảnh" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired" +msgstr "Ngày tạo" + +#: src/properties.cpp:400 +#, fuzzy +msgid "Date Acquired." +msgstr "Ngày tạo" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer" +msgstr "Nhà sản xuất đèn chá»›p" + +#: src/properties.cpp:401 +msgid "Flash Manufacturer." +msgstr "Nhà sản xuất đèn chá»›p." + +#: src/properties.cpp:402 +msgid "Flash Model." +msgstr "Mẫu đèn chá»›p" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC" +msgstr "" + +#: src/properties.cpp:403 +msgid "Last Keyword IPTC." +msgstr "" + +#: src/properties.cpp:404 +msgid "Last Keyword XMP" +msgstr "" + +#: src/properties.cpp:404 +#, fuzzy +msgid "Last Keyword XMP." +msgstr "Từ khóa." + +#: src/properties.cpp:405 +msgid "Lens Manufacturer" +msgstr "Nhà sản xuất ống k" + +#: src/properties.cpp:405 +msgid "Lens Manufacturer." +msgstr "Nhà sản xuất ống kính." + +#: src/properties.cpp:406 src/properties.cpp:1199 +msgid "Lens Model." +msgstr "Kiểu ống kính." + +#: src/properties.cpp:407 +#, fuzzy +msgid "Rating Percent" +msgstr "Äánh giá" + +#: src/properties.cpp:407 +msgid "Rating Percent." +msgstr "" + +#: src/properties.cpp:413 +msgid "Hierarchical Subject" +msgstr "" + +#: src/properties.cpp:413 +msgid "Adobe Lightroom hierarchical keywords." +msgstr "" + +#: src/properties.cpp:414 +#, fuzzy +msgid "Private RTK Info" +msgstr "Thông tin hình ảnh" + +#: src/properties.cpp:414 +msgid "Adobe Lightroom private RTK info." +msgstr "" + +#: src/properties.cpp:420 +msgid "Keywords." +msgstr "Từ khóa." + +#: src/properties.cpp:421 +msgid "PDF Version" +msgstr "Phiên bản PDF" + +#: src/properties.cpp:421 +msgid "The PDF file version (for example: 1.0, 1.3, and so on)." +msgstr "Tập tin phiên bản PDF (ví dụ: 1.0, 1.3, và tiếp tục)." + +#: src/properties.cpp:422 src/properties.cpp:1278 +msgid "Producer" +msgstr "Nhà sản xuất" + +#: src/properties.cpp:422 +msgid "The name of the tool that created the PDF document." +msgstr "" + +#: src/properties.cpp:428 +#, fuzzy +msgid "Authors Position" +msgstr "Vị trí Lấy nét" + +#: src/properties.cpp:428 +msgid "By-line title." +msgstr "" + +#: src/properties.cpp:429 +#, fuzzy +msgid "Caption Writer" +msgstr "Optio WPi" + +#: src/properties.cpp:429 +msgid "Writer/editor." +msgstr "Tác giả/biên tập viên" + +#: src/properties.cpp:430 +msgid "Category. Limited to 3 7-bit ASCII characters." +msgstr "" + +#: src/properties.cpp:431 +msgid "City." +msgstr "Thành phố." + +#: src/properties.cpp:432 +msgid "Country/primary location." +msgstr "" + +#: src/properties.cpp:433 +msgid "Credit." +msgstr "" + +#: src/properties.cpp:434 +msgid "" +"The date the intellectual content of the document was created (rather than " +"the creation date of the physical representation), following IIM " +"conventions. For example, a photo taken during the American Civil War would " +"have a creation date during that epoch (1861-1865) rather than the date the " +"photo was digitized for archiving." +msgstr "" + +#: src/properties.cpp:438 +msgid "Headline." +msgstr "Tiêu Ä‘á»." + +#: src/properties.cpp:439 +msgid "Special instructions." +msgstr "Chỉ dẫn đặc biệt" + +#: src/properties.cpp:440 src/properties.cpp:1306 +msgid "Source." +msgstr "Nguồn." + +#: src/properties.cpp:441 +msgid "Province/state." +msgstr "Tỉnh/Bang" + +#: src/properties.cpp:442 +msgid "Supplemental category." +msgstr "" + +#: src/properties.cpp:443 +msgid "Original transmission reference." +msgstr "" + +#: src/properties.cpp:444 +msgid "Urgency. Valid range is 1-8." +msgstr "" + +#: src/properties.cpp:452 +#, fuzzy +msgid "inches" +msgstr "insÆ¡" + +#: src/properties.cpp:453 src/tags.cpp:246 +msgid "cm" +msgstr "" + +#: src/properties.cpp:457 +#, fuzzy +msgid "Auto Brightness" +msgstr "Äá»™ sáng" + +#: src/properties.cpp:457 +#, fuzzy +msgid "When true, \"Brightness\" is automatically adjusted." +msgstr "Khi đúng, \"Bóng\" sẽ được từ động Ä‘iá»u chỉnh" + +#: src/properties.cpp:458 +msgid "Auto Contrast" +msgstr "Tương phản tá»± động" + +#: src/properties.cpp:458 +#, fuzzy +msgid "When true, \"Contrast\" is automatically adjusted." +msgstr "Khi đúng, \"Bóng\" sẽ được từ động Ä‘iá»u chỉnh" + +#: src/properties.cpp:459 +msgid "Auto Exposure" +msgstr "PhÆ¡i sáng tá»± động" + +#: src/properties.cpp:459 +#, fuzzy +msgid "When true, \"Exposure\" is automatically adjusted." +msgstr "Khi đúng, \"Bóng\" sẽ được từ động Ä‘iá»u chỉnh" + +#: src/properties.cpp:460 +msgid "Auto Shadows" +msgstr "Äổ bóng tá»± động" + +#: src/properties.cpp:460 +msgid "When true,\"Shadows\" is automatically adjusted." +msgstr "Khi đúng, \"Bóng\" sẽ được từ động Ä‘iá»u chỉnh" + +#: src/properties.cpp:461 +#, fuzzy +msgid "Blue Hue" +msgstr "Xanh dương" + +#: src/properties.cpp:461 +#, fuzzy +msgid "\"Blue Hue\" setting. Range -100 to 100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:462 +#, fuzzy +msgid "Blue Saturation" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/properties.cpp:462 +#, fuzzy +msgid "\"Blue Saturation\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:463 +#, fuzzy +msgid "\"Brightness\" setting. Range 0 to +150." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:464 +#, fuzzy +msgid "Camera Profile" +msgstr "Kiểu Ca-me-ra" + +#: src/properties.cpp:464 +#, fuzzy +msgid "\"Camera Profile\" setting." +msgstr "Tùy chỉnh máy ảnh" + +#: src/properties.cpp:465 +msgid "Chromatic Aberration Blue" +msgstr "" + +#: src/properties.cpp:465 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:466 +msgid "Chromatic Aberration Red" +msgstr "" + +#: src/properties.cpp:466 +#, fuzzy +msgid "" +"\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:467 src/properties.cpp:1080 +msgid "Color Noise Reduction" +msgstr "Tiêu giảm độ nhiá»…u màu sác" + +#: src/properties.cpp:467 src/properties.cpp:1080 +#, fuzzy +msgid "\"Color Noise Reduction\" setting. Range 0 to +100." +msgstr "Tùy chỉnh \"TIêu giảm độ nhiá»…u màu sắc\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:468 +msgid "\"Contrast\" setting. Range -50 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:469 +msgid "When \"Has Crop\" is true, top of crop rectangle" +msgstr "" + +#: src/properties.cpp:470 +msgid "When \"Has Crop\" is true, left of crop rectangle." +msgstr "" + +#: src/properties.cpp:471 +#, fuzzy +msgid "Crop Bottom" +msgstr "Trên xuống dưới" + +#: src/properties.cpp:471 +msgid "When \"Has Crop\" is true, bottom of crop rectangle." +msgstr "" + +#: src/properties.cpp:472 +#, fuzzy +msgid "Crop Right" +msgstr "Bản quyá»n" + +#: src/properties.cpp:472 +msgid "When \"Has Crop\" is true, right of crop rectangle." +msgstr "" + +#: src/properties.cpp:473 +msgid "Crop Angle" +msgstr "" + +#: src/properties.cpp:473 +msgid "When \"Has Crop\" is true, angle of crop rectangle." +msgstr "" + +#: src/properties.cpp:474 +msgid "Width of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:475 +msgid "Height of resulting cropped image in CropUnits units." +msgstr "" + +#: src/properties.cpp:476 +#, fuzzy +msgid "Crop Units" +msgstr "ÄÆ¡n vị tiêu cá»±" + +#: src/properties.cpp:476 +msgid "Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm" +msgstr "" + +#: src/properties.cpp:477 +#, fuzzy +msgid "\"Exposure\" setting. Range -4.0 to +4.0." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:478 +#, fuzzy +msgid "Green Hue" +msgstr "Xanh lá" + +#: src/properties.cpp:478 +#, fuzzy +msgid "\"Green Hue\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:479 +#, fuzzy +msgid "Green Saturation" +msgstr "Chế độ ảnh bão hòa" + +#: src/properties.cpp:479 +#, fuzzy +msgid "\"Green Saturation\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:480 +msgid "Has Crop" +msgstr "" + +#: src/properties.cpp:480 +msgid "When true, image has a cropping rectangle." +msgstr "" + +#: src/properties.cpp:481 +#, fuzzy +msgid "Has Settings" +msgstr "Tùy chỉnh Äèn chá»›p" + +#: src/properties.cpp:481 +msgid "When true, non-default camera raw settings." +msgstr "" + +#: src/properties.cpp:482 +msgid "Luminance Smoothing" +msgstr "" + +#: src/properties.cpp:482 +#, fuzzy +msgid "\"Luminance Smoothing\" setting. Range 0 to +100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:483 +msgid "Raw File Name" +msgstr "Tên tập tin gốc" + +#: src/properties.cpp:483 +msgid "File name of raw file (not a complete path)." +msgstr "Tên tập tin cá»§a tập tin gốc (không phải đưá»ng dẫn hoàn toàn)" + +#: src/properties.cpp:484 +#, fuzzy +msgid "Red Hue" +msgstr "Mắt Ä‘á»" + +#: src/properties.cpp:484 +#, fuzzy +msgid "\"Red Hue\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:485 +#, fuzzy +msgid "Red Saturation" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/properties.cpp:485 +#, fuzzy +msgid "\"Red Saturation\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:486 +#, fuzzy +msgid "\"Saturation\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:487 +#, fuzzy +msgid "Shadows" +msgstr "Äổ bóng tá»± động" + +#: src/properties.cpp:487 +#, fuzzy +msgid "\"Shadows\" setting. Range 0 to +100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:488 +msgid "Shadow Tint" +msgstr "" + +#: src/properties.cpp:488 +#, fuzzy +msgid "\"Shadow Tint\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:489 src/properties.cpp:1301 +msgid "\"Sharpness\" setting. Range 0 to +100." +msgstr "Tùy chỉnh \"Äá»™ mịn\". Khoảng từ 0 tá»›i +100." + +#: src/properties.cpp:490 +msgid "\"Temperature\" setting. Range 2000 to 50000." +msgstr "Tùy chỉnh \"nhiệt độ\". Khoảng từ 2000 tá»›i 50000." + +#: src/properties.cpp:491 +msgid "Tint" +msgstr "" + +#: src/properties.cpp:491 +#, fuzzy +msgid "\"Tint\" setting. Range -150 to +150." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:492 +msgid "Tone Curve" +msgstr "" + +#: src/properties.cpp:492 +msgid "Array of points (Integer, Integer) defining a \"Tone Curve\"." +msgstr "" + +#: src/properties.cpp:493 +#, fuzzy +msgid "Tone Curve Name" +msgstr "Tên chá»§ sở hữu" + +#: src/properties.cpp:493 +msgid "" +"The name of the Tone Curve described by ToneCurve. One of: Linear, Medium " +"Contrast, Strong Contrast, Custom or a user-defined preset name." +msgstr "" + +#: src/properties.cpp:495 +msgid "Version of Camera Raw plugin." +msgstr "" + +#: src/properties.cpp:496 +msgid "Vignette Amount" +msgstr "" + +#: src/properties.cpp:496 +#, fuzzy +msgid "\"Vignetting Amount\" setting. Range -100 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:497 +#, fuzzy +msgid "Vignette Midpoint" +msgstr "Äiểm trắng" + +#: src/properties.cpp:497 +#, fuzzy +msgid "\"Vignetting Midpoint\" setting. Range 0 to +100." +msgstr "Tùy chỉnh \"Äá»™ tương phản\". Khoảng từ -50 tá»›i +100." + +#: src/properties.cpp:498 src/properties.cpp:1382 +msgid "" +"\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, " +"Tungsten, Fluorescent, Flash, Custom" +msgstr "" + +#: src/properties.cpp:505 +msgid "TIFF tag 256, 0x100. Image width in pixels." +msgstr "" + +#: src/properties.cpp:506 src/properties.cpp:1188 src/tags.cpp:424 +msgid "Image Length" +msgstr "Chiá»u dài hình ảnh" + +#: src/properties.cpp:506 +msgid "TIFF tag 257, 0x101. Image height in pixels." +msgstr "" + +#: src/properties.cpp:507 +#, fuzzy +msgid "Bits Per Sample" +msgstr "Bit trên mẫu" + +#: src/properties.cpp:507 +msgid "TIFF tag 258, 0x102. Number of bits per component in each channel." +msgstr "" + +#: src/properties.cpp:508 src/tags.cpp:434 +#, fuzzy +msgid "Compression" +msgstr "Tá»· lệ nén" + +#: src/properties.cpp:508 +msgid "TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG." +msgstr "" + +#: src/properties.cpp:509 src/tags.cpp:440 +msgid "Photometric Interpretation" +msgstr "" + +#: src/properties.cpp:509 +msgid "TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr." +msgstr "" + +#: src/properties.cpp:510 +msgid "" +"TIFF tag 274, 0x112. Orientation:1 = 0th row at top, 0th column at left 2 = " +"0th row at top, 0th column at right 3 = 0th row at bottom, 0th column at " +"right 4 = 0th row at bottom, 0th column at left 5 = 0th row at left, 0th " +"column at top 6 = 0th row at right, 0th column at top 7 = 0th row at right, " +"0th column at bottom 8 = 0th row at left, 0th column at bottom" +msgstr "" + +#: src/properties.cpp:519 +#, fuzzy +msgid "Samples Per Pixel" +msgstr "Mẫu trên má»—i Ä‘iểm ảnh" + +#: src/properties.cpp:519 +msgid "TIFF tag 277, 0x115. Number of components per pixel." +msgstr "" + +#: src/properties.cpp:520 src/tags.cpp:514 +#, fuzzy +msgid "Planar Configuration" +msgstr "Cấu hình ảnh" + +#: src/properties.cpp:520 +msgid "TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar." +msgstr "" + +#: src/properties.cpp:521 +msgid "YCbCr Sub Sampling" +msgstr "" + +#: src/properties.cpp:521 +msgid "" +"TIFF tag 530, 0x212. Sampling ratio of chrominance components: [2, 1] = " +"YCbCr4:2:2; [2, 2] = YCbCr4:2:0" +msgstr "" + +#: src/properties.cpp:523 src/tags.cpp:720 +msgid "YCbCr Positioning" +msgstr "" + +#: src/properties.cpp:523 +msgid "" +"TIFF tag 531, 0x213. Position of chrominance vs. luminance components: 1 = " +"centered; 2 = co-sited." +msgstr "" + +#: src/properties.cpp:525 src/properties.cpp:1390 +msgid "X Resolution" +msgstr "Äá»™ phân giải X" + +#: src/properties.cpp:525 +msgid "TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:526 src/properties.cpp:1392 +msgid "Y Resolution" +msgstr "Äá»™ phân giải Y" + +#: src/properties.cpp:526 +msgid "TIFF tag 283, 0x11B. Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:527 src/properties.cpp:1293 src/tags.cpp:532 +#, fuzzy +msgid "Resolution Unit" +msgstr "Äá»™ phân giải X" + +#: src/properties.cpp:527 +msgid "" +"TIFF tag 296, 0x128. Unit used for XResolution and YResolution. Value is one " +"of: 2 = inches; 3 = centimeters." +msgstr "" + +#: src/properties.cpp:529 src/tags.cpp:540 +#, fuzzy +msgid "Transfer Function" +msgstr "Hướng dẫn" + +#: src/properties.cpp:529 +msgid "" +"TIFF tag 301, 0x12D. Transfer function for image described in tabular style " +"with 3 * 256 entries." +msgstr "" + +#: src/properties.cpp:531 src/tags.cpp:572 +msgid "White Point" +msgstr "Äiểm trắng" + +#: src/properties.cpp:531 +msgid "TIFF tag 318, 0x13E. Chromaticity of white point." +msgstr "" + +#: src/properties.cpp:532 src/tags.cpp:577 +#, fuzzy +msgid "Primary Chromaticities" +msgstr "Ảnh chính" + +#: src/properties.cpp:532 +msgid "TIFF tag 319, 0x13F. Chromaticity of the three primary colors." +msgstr "" + +#: src/properties.cpp:533 +msgid "" +"TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation." +msgstr "" + +#: src/properties.cpp:534 +#, fuzzy +msgid "Reference Black White" +msgstr "Äen và trắng" + +#: src/properties.cpp:534 +msgid "TIFF tag 532, 0x214. Reference black and white point values." +msgstr "" + +#: src/properties.cpp:535 src/properties.cpp:2102 src/tags.cpp:552 +msgid "Date and Time" +msgstr "Ngày và Giá»" + +#: src/properties.cpp:535 +msgid "" +"TIFF tag 306, 0x132 (primary) and EXIF tag 37520, 0x9290 (subseconds). Date " +"and time of image creation (no time zone in EXIF), stored in ISO 8601 " +"format, not the original EXIF format. This property includes the value for " +"the EXIF SubSecTime attribute. NOTE: This property is stored in XMP as xmp:" +"ModifyDate." +msgstr "" + +#: src/properties.cpp:541 src/tags.cpp:462 +msgid "Image Description" +msgstr "Miêu tả hình ảnh" + +#: src/properties.cpp:541 +msgid "" +"TIFF tag 270, 0x10E. Description of the image. Note: This property is stored " +"in XMP as dc:description." +msgstr "" + +#: src/properties.cpp:542 +msgid "Make" +msgstr "" + +#: src/properties.cpp:542 +#, fuzzy +msgid "TIFF tag 271, 0x10F. Manufacturer of recording equipment." +msgstr "Nhà sản xuất cá»§a các thiết bị thu" + +#: src/properties.cpp:543 +msgid "TIFF tag 272, 0x110. Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:544 +msgid "" +"TIFF tag 305, 0x131. Software or firmware used to generate image. Note: This " +"property is stored in XMP as xmp:CreatorTool. " +msgstr "" + +#: src/properties.cpp:546 +msgid "" +"TIFF tag 315, 0x13B. Camera owner, photographer or image creator. Note: This " +"property is stored in XMP as the first item in the dc:creator array." +msgstr "" + +#: src/properties.cpp:548 +msgid "" +"TIFF tag 33432, 0x8298. Copyright information. Note: This property is stored " +"in XMP as dc:rights." +msgstr "" + +#: src/properties.cpp:555 src/tags.cpp:1605 +#, fuzzy +msgid "Exif Version" +msgstr "Phiên bản tập tin" + +#: src/properties.cpp:555 +msgid "EXIF tag 36864, 0x9000. EXIF version number." +msgstr "" + +#: src/properties.cpp:556 +#, fuzzy +msgid "Flashpix Version" +msgstr "Phiên bản tập tin" + +#: src/properties.cpp:556 +msgid "EXIF tag 40960, 0xA000. Version of FlashPix." +msgstr "" + +#: src/properties.cpp:557 +msgid "EXIF tag 40961, 0xA001. Color space information" +msgstr "" + +#: src/properties.cpp:558 src/tags.cpp:1616 +#, fuzzy +msgid "Components Configuration" +msgstr "Cấu hình ảnh" + +#: src/properties.cpp:558 +msgid "" +"EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB " +"compressed data), 1 2 3 0 (other cases)." +msgstr "" + +#: src/properties.cpp:560 src/tags.cpp:825 +#, fuzzy +msgid "Compressed Bits Per Pixel" +msgstr "Mẫu trên má»—i Ä‘iểm ảnh" + +#: src/properties.cpp:560 +msgid "" +"EXIF tag 37122, 0x9102. Compression mode used for a compressed image is " +"indicated in unit bits per pixel." +msgstr "" + +#: src/properties.cpp:562 src/tags.cpp:1700 +msgid "Pixel X Dimension" +msgstr "" + +#: src/properties.cpp:562 +msgid "EXIF tag 40962, 0xA002. Valid image width, in pixels." +msgstr "" + +#: src/properties.cpp:563 src/tags.cpp:1707 +msgid "Pixel Y Dimension" +msgstr "" + +#: src/properties.cpp:563 +msgid "EXIF tag 40963, 0xA003. Valid image height, in pixels." +msgstr "" + +#: src/properties.cpp:564 src/tags.cpp:1674 +msgid "User Comment" +msgstr "Chú thích cá»§a ngưá»i dùng" + +#: src/properties.cpp:564 +msgid "EXIF tag 37510, 0x9286. Comments from user." +msgstr "" + +#: src/properties.cpp:565 src/tags.cpp:1716 +msgid "Related Sound File" +msgstr "Tập tin âm thanh có liên quan" + +#: src/properties.cpp:565 +msgid "" +"EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file." +msgstr "" + +#: src/properties.cpp:566 src/properties.cpp:1110 +msgid "Date and Time Original" +msgstr "Ngày và giá» ban đầu" + +#: src/properties.cpp:566 +msgid "" +"EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). Date and " +"time when original image was generated, in ISO 8601 format. Includes the " +"EXIF SubSecTimeOriginal data." +msgstr "" + +#: src/properties.cpp:569 src/properties.cpp:1111 +#, fuzzy +msgid "Date and Time Digitized" +msgstr "Ngày và giá» ban đầu" + +#: src/properties.cpp:569 +msgid "" +"EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and " +"time when image was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format. Includes the EXIF SubSecTimeDigitized data." +msgstr "" + +#: src/properties.cpp:573 +msgid "EXIF tag 33434, 0x829A. Exposure time in seconds." +msgstr "" + +#: src/properties.cpp:574 src/properties.cpp:1157 +msgid "F Number" +msgstr "Số F" + +#: src/properties.cpp:574 +msgid "EXIF tag 33437, 0x829D. F number." +msgstr "" + +#: src/properties.cpp:575 +msgid "EXIF tag 34850, 0x8822. Class of program used for exposure." +msgstr "" + +#: src/properties.cpp:576 src/tags.cpp:807 src/tags.cpp:1559 +#, fuzzy +msgid "Spectral Sensitivity" +msgstr "Äá»™ nhạy sáng" + +#: src/properties.cpp:576 +msgid "EXIF tag 34852, 0x8824. Spectral sensitivity of each channel." +msgstr "" + +#: src/properties.cpp:577 +#, fuzzy +msgid "ISOSpeedRatings" +msgstr "Tùy chỉnh Äá»™ nhạy sáng" + +#: src/properties.cpp:577 +msgid "" +"EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " +"specified in ISO 12232." +msgstr "" + +#: src/properties.cpp:579 src/tags.cpp:814 +msgid "OECF" +msgstr "" + +#: src/properties.cpp:579 +msgid "" +"EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in " +"ISO 14524." +msgstr "" + +#: src/properties.cpp:580 +msgid "" +"EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF " +"specification." +msgstr "" + +#: src/properties.cpp:581 +msgid "EXIF tag 37378, 0x9202. Lens aperture, unit is APEX." +msgstr "" + +#: src/properties.cpp:582 src/tags.cpp:828 +msgid "Brightness Value" +msgstr "Giá trị sáng" + +#: src/properties.cpp:582 +msgid "EXIF tag 37379, 0x9203. Brightness, unit is APEX." +msgstr "" + +#: src/properties.cpp:583 +msgid "EXIF tag 37380, 0x9204. Exposure bias, unit is APEX." +msgstr "" + +#: src/properties.cpp:584 src/properties.cpp:1211 +msgid "Maximum Aperture Value" +msgstr "Giá trị khẩu độ tối Ä‘a" + +#: src/properties.cpp:584 +msgid "EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:585 +msgid "EXIF tag 37382, 0x9206. Distance to subject, in meters." +msgstr "" + +#: src/properties.cpp:586 +msgid "EXIF tag 37383, 0x9207. Metering mode." +msgstr "" + +#: src/properties.cpp:587 +msgid "EXIF tag 37384, 0x9208. Light source." +msgstr "" + +#: src/properties.cpp:588 +msgid "EXIF tag 37385, 0x9209. Strobe light (flash) source data." +msgstr "" + +#: src/properties.cpp:589 +msgid "EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:590 src/tags.cpp:1666 +#, fuzzy +msgid "Subject Area" +msgstr "Vật thể" + +#: src/properties.cpp:590 +msgid "" +"EXIF tag 37396, 0x9214. The location and area of the main subject in the " +"overall scene." +msgstr "" + +#: src/properties.cpp:591 src/tags.cpp:836 src/tags.cpp:1731 +msgid "Flash Energy" +msgstr "Năng lượng đèn chá»›p" + +#: src/properties.cpp:591 +msgid "EXIF tag 41483, 0xA20B. Strobe energy during image capture." +msgstr "" + +#: src/properties.cpp:592 src/tags.cpp:837 src/tags.cpp:1735 +msgid "Spatial Frequency Response" +msgstr "" + +#: src/properties.cpp:592 +msgid "" +"EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values " +"as specified in ISO 12233." +msgstr "" + +#: src/properties.cpp:594 src/tags.cpp:839 +#, fuzzy +msgid "Focal Plane X Resolution" +msgstr "Äá»™ phân giải X" + +#: src/properties.cpp:594 +msgid "" +"EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:595 src/tags.cpp:840 +#, fuzzy +msgid "Focal Plane Y Resolution" +msgstr "Äá»™ phân giải Y" + +#: src/properties.cpp:595 +msgid "" +"EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per " +"unit." +msgstr "" + +#: src/properties.cpp:596 src/tags.cpp:841 src/tags.cpp:1748 +msgid "Focal Plane Resolution Unit" +msgstr "" + +#: src/properties.cpp:596 +msgid "" +"EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and " +"FocalPlaneYResolution." +msgstr "" + +#: src/properties.cpp:597 src/tags.cpp:845 src/tags.cpp:1752 +#, fuzzy +msgid "Subject Location" +msgstr "Äịa Ä‘iểm quay" + +#: src/properties.cpp:597 +msgid "" +"EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first " +"value is the horizontal pixel and the second value is the vertical pixel at " +"which the main subject appears." +msgstr "" + +#: src/properties.cpp:600 src/tags.cpp:846 +#, fuzzy +msgid "Exposure Index" +msgstr "Chế độ phÆ¡i sáng" + +#: src/properties.cpp:600 +msgid "EXIF tag 41493, 0xA215. Exposure index of input device." +msgstr "" + +#: src/properties.cpp:601 src/tags.cpp:851 src/tags.cpp:1763 +#, fuzzy +msgid "Sensing Method" +msgstr "Äổi tên tập tin thành" + +#: src/properties.cpp:601 +msgid "EXIF tag 41495, 0xA217. Image sensor type on input device." +msgstr "" + +#: src/properties.cpp:602 +msgid "EXIF tag 41728, 0xA300. Indicates image source." +msgstr "" + +#: src/properties.cpp:603 src/tags.cpp:1771 +#, fuzzy +msgid "Scene Type" +msgstr "Kiểu á»ng kính" + +#: src/properties.cpp:603 +msgid "EXIF tag 41729, 0xA301. Indicates the type of scene." +msgstr "" + +#: src/properties.cpp:604 src/tags.cpp:761 +msgid "CFA Pattern" +msgstr "" + +#: src/properties.cpp:604 +msgid "" +"EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image " +"sense." +msgstr "" + +#: src/properties.cpp:605 src/tags.cpp:1781 +#, fuzzy +msgid "Custom Rendered" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:605 +msgid "" +"EXIF tag 41985, 0xA401. Indicates the use of special processing on image " +"data." +msgstr "" + +#: src/properties.cpp:606 +msgid "" +"EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:607 +msgid "" +"EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image " +"was shot." +msgstr "" + +#: src/properties.cpp:608 src/properties.cpp:1115 src/tags.cpp:1795 +#, fuzzy +msgid "Digital Zoom Ratio" +msgstr "Tỉ lệ thu/phóng Ä‘iện tá»­" + +#: src/properties.cpp:608 +msgid "" +"EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was " +"shot." +msgstr "" + +#: src/properties.cpp:609 src/tags.cpp:1800 +#, fuzzy +msgid "Focal Length In 35mm Film" +msgstr "Tiêu cá»±" + +#: src/properties.cpp:609 +msgid "" +"EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a " +"35mm film camera, in mm. A value of 0 means the focal length is unknown. " +"Note that this tag differs from the FocalLength tag." +msgstr "" + +#: src/properties.cpp:612 src/tags.cpp:1806 +msgid "Scene Capture Type" +msgstr "" + +#: src/properties.cpp:612 +msgid "EXIF tag 41990, 0xA406. Indicates the type of scene that was shot." +msgstr "" + +#: src/properties.cpp:613 src/tags.cpp:1811 +#, fuzzy +msgid "Gain Control" +msgstr "Äiá»u khiển hoàn toàn" + +#: src/properties.cpp:613 +msgid "" +"EXIF tag 41991, 0xA407. Indicates the degree of overall image gain " +"adjustment." +msgstr "" + +#: src/properties.cpp:614 +msgid "" +"EXIF tag 41992, 0xA408. Indicates the direction of contrast processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:615 +msgid "" +"EXIF tag 41993, 0xA409. Indicates the direction of saturation processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:616 +msgid "" +"EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing " +"applied by the camera." +msgstr "" + +#: src/properties.cpp:617 src/tags.cpp:1826 +#, fuzzy +msgid "Device Setting Description" +msgstr "Phiên bản thiết lập máy ảnh" + +#: src/properties.cpp:617 +msgid "" +"EXIF tag 41995, 0xA40B. Indicates information on the picture-taking " +"conditions of a particular camera model." +msgstr "" + +#: src/properties.cpp:618 src/tags.cpp:1831 +#, fuzzy +msgid "Subject Distance Range" +msgstr "Khoảng cách Vật thể" + +#: src/properties.cpp:618 +msgid "EXIF tag 41996, 0xA40C. Indicates the distance to the subject." +msgstr "" + +#: src/properties.cpp:619 src/tags.cpp:1834 +#, fuzzy +msgid "Image Unique ID" +msgstr "Số hiệu ảnh" + +#: src/properties.cpp:619 +msgid "" +"EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is " +"recorded as a 32 character ASCII string, equivalent to hexadecimal notation " +"and 128-bit fixed length." +msgstr "" + +#: src/properties.cpp:621 src/properties.cpp:1178 src/tags.cpp:1934 +#, fuzzy +msgid "GPS Version ID" +msgstr "Phiên bản PDF" + +#: src/properties.cpp:621 +msgid "" +"GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with " +"period separators. The current value is \"2.0.0.0\"." +msgstr "" + +#: src/properties.cpp:623 src/properties.cpp:1173 src/tags.cpp:1945 +msgid "GPS Latitude" +msgstr "GPS VÄ© độ" + +#: src/properties.cpp:623 +msgid "" +"GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:624 src/properties.cpp:1174 src/tags.cpp:1957 +msgid "GPS Longitude" +msgstr "GPS Kinh độ" + +#: src/properties.cpp:624 +msgid "" +"GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:625 src/properties.cpp:1168 src/tags.cpp:1965 +#, fuzzy +msgid "GPS Altitude Reference" +msgstr "GPS Cao đô" + +#: src/properties.cpp:625 src/properties.cpp:1168 +msgid "" +"GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level." +msgstr "" + +#: src/properties.cpp:626 src/properties.cpp:1167 src/tags.cpp:1973 +msgid "GPS Altitude" +msgstr "GPS Cao đô" + +#: src/properties.cpp:626 src/properties.cpp:1167 +msgid "GPS tag 6, 0x06. Indicates altitude in meters." +msgstr "" + +#: src/properties.cpp:627 src/properties.cpp:1170 src/properties.cpp:1177 +#: src/tags.cpp:1977 +#, fuzzy +msgid "GPS Time Stamp" +msgstr "Thá»i gian gá»­i" + +#: src/properties.cpp:627 +msgid "" +"GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS " +"data, in Coordinated Universal Time. Note: The GPSDateStamp tag is new in " +"EXIF 2.2. The GPS timestamp in EXIF 2.1 does not include a date. If not " +"present, the date component for the XMP should be taken from exif:" +"DateTimeOriginal, or if that is also lacking from exif:DateTimeDigitized. If " +"no date is available, do not write exif:GPSTimeStamp to XMP." +msgstr "" + +#: src/properties.cpp:633 src/properties.cpp:1176 src/tags.cpp:1982 +msgid "GPS Satellites" +msgstr "Vệ tinh GPS" + +#: src/properties.cpp:633 +msgid "GPS tag 8, 0x08. Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:634 src/tags.cpp:1989 +msgid "GPS Status" +msgstr "Tình trạng GPS" + +#: src/properties.cpp:634 +msgid "GPS tag 9, 0x09. Status of GPS receiver at image creation time." +msgstr "" + +#: src/properties.cpp:635 src/tags.cpp:1994 +msgid "GPS Measure Mode" +msgstr "GPS Chế độ Äo lưá»ng" + +#: src/properties.cpp:635 +msgid "GPS tag 10, 0x0A. GPS measurement mode, Text type." +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS DOP" +msgstr "" + +#: src/properties.cpp:636 +msgid "GPS tag 11, 0x0B. Degree of precision for GPS data." +msgstr "" + +#: src/properties.cpp:637 src/tags.cpp:2002 +#, fuzzy +msgid "GPS Speed Reference" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:637 +msgid "GPS tag 12, 0x0C. Units used to speed measurement." +msgstr "" + +#: src/properties.cpp:638 src/tags.cpp:2006 +msgid "GPS Speed" +msgstr "GPS Tốc độ" + +#: src/properties.cpp:638 +msgid "GPS tag 13, 0x0D. Speed of GPS receiver movement." +msgstr "" + +#: src/properties.cpp:639 +#, fuzzy +msgid "GPS Track Reference" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:639 +msgid "GPS tag 14, 0x0E. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:640 src/tags.cpp:2013 +msgid "GPS Track" +msgstr "" + +#: src/properties.cpp:640 +msgid "" +"GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:641 src/properties.cpp:1172 src/tags.cpp:2017 +#, fuzzy +msgid "GPS Image Direction Reference" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:641 +msgid "GPS tag 16, 0x10. Reference for image direction." +msgstr "" + +#: src/properties.cpp:642 src/properties.cpp:1171 src/tags.cpp:2021 +#, fuzzy +msgid "GPS Image Direction" +msgstr "Miêu tả hình ảnh" + +#: src/properties.cpp:642 +msgid "" +"GPS tag 17, 0x11. Direction of image when captured, values range from 0 to " +"359.99." +msgstr "" + +#: src/properties.cpp:643 src/properties.cpp:1175 src/tags.cpp:2025 +#, fuzzy +msgid "GPS Map Datum" +msgstr "Tình trạng GPS" + +#: src/properties.cpp:643 +msgid "GPS tag 18, 0x12. Geodetic survey data." +msgstr "" + +#: src/properties.cpp:644 src/tags.cpp:2033 +#, fuzzy +msgid "GPS Destination Latitude" +msgstr "GPS VÄ© độ" + +#: src/properties.cpp:644 +msgid "" +"GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates " +"destination latitude." +msgstr "" + +#: src/properties.cpp:645 src/tags.cpp:2045 +#, fuzzy +msgid "GPS Destination Longitude" +msgstr "GPS Kinh độ" + +#: src/properties.cpp:645 +msgid "" +"GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination " +"longitude." +msgstr "" + +#: src/properties.cpp:646 src/tags.cpp:2052 +msgid "GPS Destination Bearing Reference" +msgstr "" + +#: src/properties.cpp:646 +msgid "GPS tag 23, 0x17. Reference for movement direction." +msgstr "" + +#: src/properties.cpp:647 src/tags.cpp:2056 +#, fuzzy +msgid "GPS Destination Bearing" +msgstr "Äích đến" + +#: src/properties.cpp:647 +msgid "GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:648 src/tags.cpp:2060 +msgid "GPS Destination Distance Reference" +msgstr "" + +#: src/properties.cpp:648 +msgid "GPS tag 25, 0x19. Units used for speed measurement." +msgstr "" + +#: src/properties.cpp:649 src/tags.cpp:2064 +#, fuzzy +msgid "GPS Destination Distance" +msgstr "Äích đến" + +#: src/properties.cpp:649 +msgid "GPS tag 26, 0x1A. Distance to destination." +msgstr "" + +#: src/properties.cpp:650 src/tags.cpp:2067 +#, fuzzy +msgid "GPS Processing Method" +msgstr "Xá»­ lý Thông tin" + +#: src/properties.cpp:650 +msgid "" +"GPS tag 27, 0x1B. A character string recording the name of the method used " +"for location finding." +msgstr "" + +#: src/properties.cpp:651 src/tags.cpp:2072 +#, fuzzy +msgid "GPS Area Information" +msgstr "Thông tin GPS" + +#: src/properties.cpp:651 +msgid "" +"GPS tag 28, 0x1C. A character string recording the name of the GPS area." +msgstr "" + +#: src/properties.cpp:652 src/tags.cpp:2080 +msgid "GPS Differential" +msgstr "" + +#: src/properties.cpp:652 +msgid "" +"GPS tag 30, 0x1E. Indicates whether differential correction is applied to " +"the GPS receiver." +msgstr "" + +#: src/properties.cpp:658 +msgid "" +"A description of the lens used to take the photograph. For example, \"70-200 " +"mm f/2.8-4.0\"." +msgstr "" + +#: src/properties.cpp:659 +msgid "" +"The serial number of the camera or camera body used to take the photograph." +msgstr "" + +#: src/properties.cpp:665 +msgid "Creator's Contact Info" +msgstr "" + +#: src/properties.cpp:665 +msgid "" +"The creator's contact information provides all necessary information to get " +"in contact with the creator of this news object and comprises a set of sub-" +"properties for proper addressing." +msgstr "" + +#: src/properties.cpp:667 +msgid "Contact Info-Address" +msgstr "" + +#: src/properties.cpp:667 +#, fuzzy +msgid "" +"sub-key Creator Contact Info: address. Comprises an optional company name " +"and all required information to locate the building or postbox to which mail " +"should be sent." +msgstr "" +"Phần địa chỉ liên lạc. Bao gồm tên công ty và tất cả thông tin yêu cầu vá» " +"địa Ä‘iểm tòa nhà hoặc địa chỉ thư nÆ¡i các thư tín sẽ được gá»­i tá»›i." + +#: src/properties.cpp:669 +#, fuzzy +msgid "Contact Info-City" +msgstr "Vị trí-Thành phố" + +#: src/properties.cpp:669 +msgid "sub-key Creator Contact Info: city." +msgstr "" + +#: src/properties.cpp:670 +#, fuzzy +msgid "Contact Info-State/Province" +msgstr "Bang/Tỉnh" + +#: src/properties.cpp:670 +msgid "sub-key Creator Contact Info: state or province." +msgstr "" + +#: src/properties.cpp:671 +msgid "Contact Info-Postal Code" +msgstr "" + +#: src/properties.cpp:671 +msgid "sub-key Creator Contact Info: local postal code." +msgstr "" + +#: src/properties.cpp:672 +msgid "Contact Info-Country" +msgstr "" + +#: src/properties.cpp:672 +msgid "sub-key Creator Contact Info: country." +msgstr "" + +#: src/properties.cpp:673 +msgid "Contact Info-Email" +msgstr "" + +#: src/properties.cpp:673 +msgid "sub-key Creator Contact Info: email address." +msgstr "" + +#: src/properties.cpp:674 +msgid "Contact Info-Phone" +msgstr "" + +#: src/properties.cpp:674 +msgid "sub-key Creator Contact Info: phone number." +msgstr "" + +#: src/properties.cpp:675 +msgid "Contact Info-Web URL" +msgstr "" + +#: src/properties.cpp:675 +msgid "sub-key Creator Contact Info: web address." +msgstr "" + +#: src/properties.cpp:676 +msgid "Intellectual Genre" +msgstr "" + +#: src/properties.cpp:676 +msgid "" +"Describes the nature, intellectual or journalistic characteristic of a news " +"object, not specifically its content." +msgstr "" + +#: src/properties.cpp:678 +msgid "IPTC Scene" +msgstr "" + +#: src/properties.cpp:678 +msgid "" +"Describes the scene of a photo content. Specifies one or more terms from the " +"IPTC \"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits " +"in an unordered list." +msgstr "" + +#: src/properties.cpp:680 +#, fuzzy +msgid "IPTC Subject Code" +msgstr "Khoảng cách đến vật thể" + +#: src/properties.cpp:680 +msgid "" +"Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy " +"to categorize the content. Each Subject is represented as a string of 8 " +"digits in an unordered list." +msgstr "" + +#: src/properties.cpp:682 +msgid "" +"(legacy) Name of a location the content is focussing on -- either the " +"location shown in visual media or referenced by text or audio media. This " +"location name could either be the name of a sublocation to a city or the " +"name of a well known location or (natural) monument outside a city. In the " +"sense of a sublocation to a city this element is at the fourth level of a " +"top-down geographical hierarchy." +msgstr "" + +#: src/properties.cpp:687 +msgid "" +"(legacy) Code of the country the content is focussing on -- either the " +"country shown in visual media or referenced in text or audio media. This " +"element is at the top/first level of a top-down geographical hierarchy. The " +"code should be taken from ISO 3166 two or three letter code. The full name " +"of a country should go to the \"Country\" element." +msgstr "" + +#: src/properties.cpp:696 +msgid "Additional model info" +msgstr "" + +#: src/properties.cpp:696 +msgid "" +"Information about the ethnicity and other facts of the model(s) in a model-" +"released image." +msgstr "" + +#: src/properties.cpp:697 +msgid "Code of featured Organisation" +msgstr "" + +#: src/properties.cpp:697 +msgid "" +"Code from controlled vocabulary for identifying the organisation or company " +"which is featured in the image." +msgstr "" + +#: src/properties.cpp:698 +msgid "Controlled Vocabulary Term" +msgstr "" + +#: src/properties.cpp:698 +msgid "" +"A term to describe the content of the image by a value from a Controlled " +"Vocabulary." +msgstr "" + +#: src/properties.cpp:699 +#, fuzzy +msgid "Model age" +msgstr "Mẫu phiên bản" + +#: src/properties.cpp:699 +msgid "" +"Age of the human model(s) at the time this image was taken in a model " +"released image." +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of featured Organisation" +msgstr "" + +#: src/properties.cpp:700 +msgid "Name of the organisation or company which is featured in the image." +msgstr "" + +#: src/properties.cpp:701 +msgid "Person shown" +msgstr "" + +#: src/properties.cpp:701 +msgid "Name of a person shown in the image." +msgstr "" + +#: src/properties.cpp:702 +#, fuzzy +msgid "Digital Image Identifier" +msgstr "Lá»c Ä‘iện tá»­" + +#: src/properties.cpp:702 +msgid "" +"Globally unique identifier for this digital image. It is created and applied " +"by the creator of the digital image at the time of its creation. this value " +"shall not be changed after that time." +msgstr "" + +#: src/properties.cpp:703 +msgid "Physical type of original photo" +msgstr "" + +#: src/properties.cpp:703 +#, fuzzy +msgid "The type of the source digital file." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:704 src/properties.cpp:960 src/properties.cpp:969 +#: src/properties.cpp:1633 +msgid "Event" +msgstr "Sá»± kiện" + +#: src/properties.cpp:704 +msgid "Names or describes the specific event at which the photo was taken." +msgstr "" + +#: src/properties.cpp:705 +#, fuzzy +msgid "Maximum available height" +msgstr "Ãnh sáng có sẵn" + +#: src/properties.cpp:705 +msgid "" +"The maximum available height in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:706 +#, fuzzy +msgid "Maximum available width" +msgstr "Khoảng tiêu cá»± tối thiểu" + +#: src/properties.cpp:706 +msgid "" +"The maximum available width in pixels of the original photo from which this " +"photo has been derived by downsizing." +msgstr "" + +#: src/properties.cpp:707 +msgid "Registry Entry" +msgstr "" + +#: src/properties.cpp:707 +msgid "" +"Both a Registry Item Id and a Registry Organisation Id to record any " +"registration of this digital image with a registry." +msgstr "" + +#: src/properties.cpp:708 +msgid "Registry Entry-Item Identifier" +msgstr "" + +#: src/properties.cpp:708 +msgid "" +"A unique identifier created by a registry and applied by the creator of the " +"digital image. This value shall not be changed after being applied. This " +"identifier is linked to a corresponding Registry Organisation Identifier." +msgstr "" + +#: src/properties.cpp:709 +msgid "Registry Entry-Organisation Identifier" +msgstr "" + +#: src/properties.cpp:709 +msgid "" +"An identifier for the registry which issued the corresponding Registry Image " +"Id." +msgstr "" + +#: src/properties.cpp:710 +msgid "IPTC Fields Last Edited" +msgstr "" + +#: src/properties.cpp:710 +msgid "" +"The date and optionally time when any of the IPTC photo metadata fields has " +"been last edited." +msgstr "" + +#: src/properties.cpp:711 +#, fuzzy +msgid "Location shown" +msgstr "Mã vị trí" + +#: src/properties.cpp:711 +msgid "A location shown in the image." +msgstr "" + +#: src/properties.cpp:712 +#, fuzzy +msgid "Location Created" +msgstr "Mã vị trí" + +#: src/properties.cpp:712 +msgid "The location the photo was taken." +msgstr "" + +#: src/properties.cpp:713 +msgid "Location-City" +msgstr "Vị trí-Thành phố" + +#: src/properties.cpp:713 +msgid "Name of the city of a location." +msgstr "Tên cá»§a thành phố tại vị trí đó." + +#: src/properties.cpp:714 +#, fuzzy +msgid "Location-Country ISO-Code" +msgstr "Äịa Ä‘iểm-Tên Quốc gia" + +#: src/properties.cpp:714 +#, fuzzy +msgid "The ISO code of a country of a location." +msgstr "Tên cá»§a thành phố tại vị trí đó." + +#: src/properties.cpp:715 +msgid "Location-Country Name" +msgstr "Äịa Ä‘iểm-Tên Quốc gia" + +#: src/properties.cpp:715 +#, fuzzy +msgid "The name of a country of a location." +msgstr "Tên cá»§a thành phố tại vị trí đó." + +#: src/properties.cpp:716 +#, fuzzy +msgid "Location-Province/State" +msgstr "Tỉnh/Bang" + +#: src/properties.cpp:716 +msgid "" +"The name of a subregion of a country - a province or state - of a location." +msgstr "" + +#: src/properties.cpp:717 +#, fuzzy +msgid "Location-Sublocation" +msgstr "Vị trí-Thành phố" + +#: src/properties.cpp:717 +msgid "" +"Name of a sublocation. This sublocation name could either be the name of a " +"sublocation to a city or the name of a well known location or (natural) " +"monument outside a city." +msgstr "" + +#: src/properties.cpp:718 +#, fuzzy +msgid "Location-World Region" +msgstr "Mã vị trí" + +#: src/properties.cpp:718 +#, fuzzy +msgid "The name of a world region of a location." +msgstr "Tên cá»§a thành phố tại vị trí đó." + +#: src/properties.cpp:719 +msgid "Artwork or object in the image" +msgstr "" + +#: src/properties.cpp:719 +msgid "A set of metadata about artwork or an object in the image." +msgstr "" + +#: src/properties.cpp:720 +#, fuzzy +msgid "Artwork or object-Copyright notice" +msgstr "Lưu ý bản quyá»n" + +#: src/properties.cpp:720 +msgid "" +"Contains any necessary copyright notice for claiming the intellectual " +"property for artwork or an object in the image and should identify the " +"current owner of the copyright of this work with associated intellectual " +"property rights." +msgstr "" + +#: src/properties.cpp:721 +msgid "Artwork or object-Creator" +msgstr "" + +#: src/properties.cpp:721 +msgid "" +"Contains the name of the artist who has created artwork or an object in the " +"image. In cases where the artist could or should not be identified the name " +"of a company or organisation may be appropriate." +msgstr "" + +#: src/properties.cpp:722 +msgid "Artwork or object-Date Created" +msgstr "" + +#: src/properties.cpp:722 +msgid "" +"Designates the date and optionally the time the artwork or object in the " +"image was created. This relates to artwork or objects with associated " +"intellectual property rights." +msgstr "" + +#: src/properties.cpp:723 +msgid "Artwork or object-Source" +msgstr "" + +#: src/properties.cpp:723 +msgid "" +"The organisation or body holding and registering the artwork or object in " +"the image for inventory purposes." +msgstr "" + +#: src/properties.cpp:724 +msgid "Artwork or object-Source inventory number" +msgstr "" + +#: src/properties.cpp:724 +msgid "" +"The inventory number issued by the organisation or body holding and " +"registering the artwork or object in the image." +msgstr "" + +#: src/properties.cpp:725 +msgid "Artwork or object-Title" +msgstr "" + +#: src/properties.cpp:725 +#, fuzzy +msgid "A reference for the artwork or object in the image." +msgstr "Má»™t liên kết đến dá»± án đã tạo tập tin này" + +#: src/properties.cpp:732 +msgid "Scan from film" +msgstr "" + +#: src/properties.cpp:733 +msgid "Scan from transparency (including slide)" +msgstr "" + +#: src/properties.cpp:734 +msgid "Scan from print" +msgstr "" + +#: src/properties.cpp:735 +#, fuzzy +msgid "Camera RAW" +msgstr "Thông tin Máy ảnh" + +#: src/properties.cpp:736 +#, fuzzy +msgid "Camera TIFF" +msgstr "Kiểu Ca-me-ra" + +#: src/properties.cpp:737 +#, fuzzy +msgid "Camera JPEG" +msgstr "Thông tin Máy ảnh" + +#: src/properties.cpp:742 +#, fuzzy +msgid "PLUS Version" +msgstr "Phiên bản PDF" + +#: src/properties.cpp:742 +msgid "" +"The version number of the PLUS standards in place at the time of the " +"transaction." +msgstr "" + +#: src/properties.cpp:743 +msgid "Licensee" +msgstr "" + +#: src/properties.cpp:743 +msgid "" +"Party or parties to whom the license is granted by the Licensor/s under the " +"license transaction." +msgstr "" + +#: src/properties.cpp:744 +msgid "Licensee ID" +msgstr "" + +#: src/properties.cpp:744 +msgid "Optional PLUS-ID identifying each Licensee." +msgstr "" + +#: src/properties.cpp:745 +#, fuzzy +msgid "Licensee Name" +msgstr "Tên vị trí" + +#: src/properties.cpp:745 +msgid "Name of each Licensee." +msgstr "" + +#: src/properties.cpp:746 +msgid "End User" +msgstr "" + +#: src/properties.cpp:746 +msgid "Party or parties ultimately making use of the image under the license." +msgstr "" + +#: src/properties.cpp:747 +msgid "End User ID" +msgstr "" + +#: src/properties.cpp:747 +msgid "Optional PLUS-ID identifying each End User." +msgstr "" + +#: src/properties.cpp:748 +#, fuzzy +msgid "End User Name" +msgstr "Tên chá»§ sở hữu" + +#: src/properties.cpp:748 +msgid "Name of each End User." +msgstr "" + +#: src/properties.cpp:749 +msgid "Licensor" +msgstr "" + +#: src/properties.cpp:749 +msgid "Party or parties granting the license to the Licensee." +msgstr "" + +#: src/properties.cpp:750 +#, fuzzy +msgid "Licensor ID" +msgstr "Thông tin cảm biến" + +#: src/properties.cpp:750 +msgid "Optional PLUS-ID identifying each Licensor." +msgstr "" + +#: src/properties.cpp:751 +#, fuzzy +msgid "Licensor Name" +msgstr "Tên vị trí" + +#: src/properties.cpp:751 +msgid "Name of each Licensor." +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor Address" +msgstr "" + +#: src/properties.cpp:752 +msgid "Licensor street address." +msgstr "" + +#: src/properties.cpp:753 +msgid "Licensor Address Detail" +msgstr "" + +#: src/properties.cpp:753 +msgid "Additional Licensor mailing address details." +msgstr "" + +#: src/properties.cpp:754 +msgid "Licensor City" +msgstr "" + +#: src/properties.cpp:754 +msgid "Licensor City name." +msgstr "" + +#: src/properties.cpp:755 +#, fuzzy +msgid "Licensor State or Province" +msgstr "Bang/Tỉnh" + +#: src/properties.cpp:755 +msgid "Licensor State or Province name." +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code" +msgstr "" + +#: src/properties.cpp:756 +msgid "Licensor Postal Code or Zip Code." +msgstr "" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country" +msgstr "Quốc gia" + +#: src/properties.cpp:757 +#, fuzzy +msgid "Licensor Country name." +msgstr "Äịa Ä‘iểm-Tên Quốc gia" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1" +msgstr "" + +#: src/properties.cpp:758 +msgid "Licensor Telephone Type 1." +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone 1" +msgstr "" + +#: src/properties.cpp:759 +msgid "Licensor Telephone number 1." +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2" +msgstr "" + +#: src/properties.cpp:760 +msgid "Licensor Telephone Type 2." +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone 2" +msgstr "" + +#: src/properties.cpp:761 +msgid "Licensor Telephone number 2." +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email" +msgstr "" + +#: src/properties.cpp:762 +msgid "Licensor Email address." +msgstr "" + +#: src/properties.cpp:763 +msgid "Licensor URL" +msgstr "" + +#: src/properties.cpp:763 +msgid "Licensor world wide web address." +msgstr "" + +#: src/properties.cpp:764 +msgid "Licensor Notes" +msgstr "" + +#: src/properties.cpp:764 +msgid "" +"Supplemental information for use in identifying and contacting the Licensor/" +"s." +msgstr "" + +#: src/properties.cpp:765 +#, fuzzy +msgid "PLUS Media Summary Code" +msgstr "GPS Chế độ Äo lưá»ng" + +#: src/properties.cpp:765 +msgid "" +"A PLUS-standardized alphanumeric code string summarizing the media usages " +"included in the license." +msgstr "" + +#: src/properties.cpp:766 +msgid "License Start Date" +msgstr "" + +#: src/properties.cpp:766 +#, fuzzy +msgid "The date on which the license takes effect." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:767 +#, fuzzy +msgid "License End Date" +msgstr "Dữ liệu ống kính" + +#: src/properties.cpp:767 +#, fuzzy +msgid "The date on which the license expires." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:768 +msgid "Media Constraints" +msgstr "" + +#: src/properties.cpp:768 +msgid "" +"Constraints limiting the scope of PLUS Media Usage/s included in the license " +"to particular named media or to media not yet specifically defined in the " +"PLUS Media Matrix." +msgstr "" + +#: src/properties.cpp:769 +msgid "Region Constraints" +msgstr "" + +#: src/properties.cpp:769 +msgid "" +"Constraints limiting the scope of geographic distribution to specific " +"cities, states, provinces or other areas to be included in or excluded from " +"the PLUS Regions specified in the Media Usages specified in the license." +msgstr "" + +#: src/properties.cpp:770 +msgid "Product or Service Constraints" +msgstr "" + +#: src/properties.cpp:770 +msgid "" +"Constraints limiting usage of the image to promotion of/association with a " +"named product or service." +msgstr "" + +#: src/properties.cpp:771 +#, fuzzy +msgid "Image File Constraints" +msgstr "Tùy chỉnh kích cỡ hình ảnh" + +#: src/properties.cpp:771 +msgid "" +"Constraints on the changing of the image file name, metadata or file type." +msgstr "" + +#: src/properties.cpp:772 +msgid "Image Alteration Constraints" +msgstr "" + +#: src/properties.cpp:772 +msgid "" +"Constraints on alteration of the image by cropping, flipping, retouching, " +"colorization, de-colorization or merging." +msgstr "" + +#: src/properties.cpp:773 +#, fuzzy +msgid "Image Duplication Constraints" +msgstr "Tùy chỉnh chất lượng hình ảnh" + +#: src/properties.cpp:773 +msgid "Constraints on the creation of duplicates of the image." +msgstr "" + +#: src/properties.cpp:774 +#, fuzzy +msgid "Model Release Status" +msgstr "Ngày phát hành" + +#: src/properties.cpp:774 +msgid "" +"Summarizes the availability and scope of model releases authorizing usage of " +"the likenesses of persons appearing in the photograph." +msgstr "" + +#: src/properties.cpp:775 +#, fuzzy +msgid "Model Release ID" +msgstr "Ngày phát hành" + +#: src/properties.cpp:775 +msgid "Optional identifier associated with each Model Release." +msgstr "" + +#: src/properties.cpp:776 +msgid "Minor Model Age Disclosure" +msgstr "" + +#: src/properties.cpp:776 +msgid "" +"Age of the youngest model pictured in the image, at the time that the image " +"was made." +msgstr "" + +#: src/properties.cpp:777 +msgid "Property Release Status" +msgstr "" + +#: src/properties.cpp:777 +msgid "" +"Summarizes the availability and scope of property releases authorizing usage " +"of the properties appearing in the photograph." +msgstr "" + +#: src/properties.cpp:778 +msgid "Property Release ID" +msgstr "" + +#: src/properties.cpp:778 +msgid "Optional identifier associated with each Property Release." +msgstr "" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Other Constraints" +msgstr "Các Ä‘iá»u khoản vá» giấy phép khác" + +#: src/properties.cpp:779 +#, fuzzy +msgid "Additional constraints on the license." +msgstr "Äiá»u khoản và Ä‘iá»u kiện áp dụng vào giấy phép" + +#: src/properties.cpp:780 +msgid "Credit Line Required" +msgstr "" + +#: src/properties.cpp:780 +msgid "Attribution requirements, if any." +msgstr "" + +#: src/properties.cpp:781 +msgid "Adult Content Warning" +msgstr "" + +#: src/properties.cpp:781 +msgid "Warning indicating the presence of content not suitable for minors." +msgstr "" + +#: src/properties.cpp:782 +#, fuzzy +msgid "Other License Requirements" +msgstr "Các Ä‘iá»u khoản vá» giấy phép khác" + +#: src/properties.cpp:782 +msgid "Additional license requirements." +msgstr "" + +#: src/properties.cpp:783 +msgid "Terms and Conditions Text" +msgstr "Văn bản Ä‘iá»u khoản và Ä‘iá»u kiện" + +#: src/properties.cpp:783 +msgid "Terms and Conditions applying to the license." +msgstr "Äiá»u khoản và Ä‘iá»u kiện áp dụng vào giấy phép" + +#: src/properties.cpp:784 +#, fuzzy +msgid "Terms and Conditions URL" +msgstr "Văn bản Ä‘iá»u khoản và Ä‘iá»u kiện" + +#: src/properties.cpp:784 +#, fuzzy +msgid "URL for Terms and Conditions applying to the license." +msgstr "Äiá»u khoản và Ä‘iá»u kiện áp dụng vào giấy phép" + +#: src/properties.cpp:785 +msgid "Other License Conditions" +msgstr "Các Ä‘iá»u khoản vá» giấy phép khác" + +#: src/properties.cpp:785 +#, fuzzy +msgid "Additional license conditions." +msgstr "Các Ä‘iá»u khoản vá» giấy phép khác" + +#: src/properties.cpp:786 +msgid "Identifies the type of image delivered." +msgstr "" + +#: src/properties.cpp:787 +msgid "Licensor Image ID" +msgstr "" + +#: src/properties.cpp:787 +msgid "Optional identifier assigned by the Licensor to the image." +msgstr "" + +#: src/properties.cpp:788 +msgid "Image File Name As Delivered" +msgstr "" + +#: src/properties.cpp:788 +msgid "" +"Name of the image file delivered to the Licensee for use under the license." +msgstr "" + +#: src/properties.cpp:789 +#, fuzzy +msgid "Image File Format As Delivered" +msgstr "Äịnh dạng tập tin ảnh liên quan" + +#: src/properties.cpp:789 +msgid "" +"File format of the image file delivered to the Licensee for use under the " +"license." +msgstr "" + +#: src/properties.cpp:790 +msgid "Image File Size As Delivered" +msgstr "" + +#: src/properties.cpp:790 +msgid "Size of the image file delivered to the Licensee." +msgstr "" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright Status" +msgstr "Bản quyá»n" + +#: src/properties.cpp:791 +#, fuzzy +msgid "Copyright status of the image." +msgstr "Lưu ý bản quyá»n" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number" +msgstr "" + +#: src/properties.cpp:792 +msgid "Copyright Registration Number, if any, applying to the licensed image." +msgstr "" + +#: src/properties.cpp:793 +#, fuzzy +msgid "First Publication Date" +msgstr "Ngày hết hạn" + +#: src/properties.cpp:793 +#, fuzzy +msgid "The date on which the image was first published." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:794 +#, fuzzy +msgid "Copyright Owner" +msgstr "Bản quyá»n" + +#: src/properties.cpp:794 +msgid "Owner or owners of the copyright in the licensed image." +msgstr "" + +#: src/properties.cpp:795 +#, fuzzy +msgid "Copyright Owner ID" +msgstr "Bản quyá»n" + +#: src/properties.cpp:795 +msgid "Optional PLUS-ID identifying each Copyright Owner." +msgstr "" + +#: src/properties.cpp:796 +#, fuzzy +msgid "Copyright Owner Name" +msgstr "Tên chá»§ sở hữu" + +#: src/properties.cpp:796 +msgid "Name of Copyright Owner." +msgstr "" + +#: src/properties.cpp:797 +msgid "Copyright Owner Image ID" +msgstr "" + +#: src/properties.cpp:797 +msgid "Optional identifier assigned by the Copyright Owner to the image." +msgstr "" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Image Creator" +msgstr "Ngưá»i tạo" + +#: src/properties.cpp:798 +#, fuzzy +msgid "Creator/s of the image." +msgstr "Bù trừ hình ảnh xem trước" + +#: src/properties.cpp:799 +#, fuzzy +msgid "Image Creator ID" +msgstr "Lịch sá»­ hình ảnh" + +#: src/properties.cpp:799 +msgid "Optional PLUS-ID identifying each Image Creator." +msgstr "" + +#: src/properties.cpp:800 +#, fuzzy +msgid "Image Creator Name" +msgstr "Kích cỡ Dữ liệu Hình ảnh" + +#: src/properties.cpp:800 +msgid "Name of Image Creator." +msgstr "" + +#: src/properties.cpp:801 +msgid "Image Creator Image ID" +msgstr "" + +#: src/properties.cpp:801 +msgid "Optional identifier assigned by the Image Creator to the image." +msgstr "" + +#: src/properties.cpp:802 +#, fuzzy +msgid "Image Supplier ID" +msgstr "Kích cỡ hình ảnh" + +#: src/properties.cpp:802 +msgid "Optional PLUS-ID identifying the Image Supplier." +msgstr "" + +#: src/properties.cpp:803 +#, fuzzy +msgid "Image Supplier Name" +msgstr "Kích cỡ hình ảnh" + +#: src/properties.cpp:803 +msgid "Name of Image Supplier." +msgstr "" + +#: src/properties.cpp:804 +msgid "Image Supplier Image ID" +msgstr "" + +#: src/properties.cpp:804 +msgid "Optional identifier assigned by the Image Supplier to the image." +msgstr "" + +#: src/properties.cpp:805 +msgid "Licensee Image ID" +msgstr "" + +#: src/properties.cpp:805 +msgid "Optional identifier assigned by the Licensee to the image." +msgstr "" + +#: src/properties.cpp:806 +msgid "Licensee Image Notes" +msgstr "" + +#: src/properties.cpp:806 +msgid "Notes added by Licensee." +msgstr "" + +#: src/properties.cpp:807 +msgid "Other Image Info" +msgstr "" + +#: src/properties.cpp:807 +#, fuzzy +msgid "Additional image information." +msgstr "Hình ảnh và thông tin" + +#: src/properties.cpp:808 +msgid "License ID" +msgstr "" + +#: src/properties.cpp:808 +msgid "Optional PLUS-ID assigned by the Licensor to the License." +msgstr "" + +#: src/properties.cpp:809 +msgid "Licensor Transaction ID" +msgstr "" + +#: src/properties.cpp:809 +msgid "" +"Identifier assigned by Licensor for Licensor's reference and internal use." +msgstr "" + +#: src/properties.cpp:810 +msgid "Licensee Transaction ID" +msgstr "" + +#: src/properties.cpp:810 +msgid "" +"Identifier assigned by Licensee for Licensee's reference and internal use." +msgstr "" + +#: src/properties.cpp:811 +#, fuzzy +msgid "Licensee Project Reference" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:811 +msgid "Project reference name or description assigned by Licensee." +msgstr "" + +#: src/properties.cpp:812 +#, fuzzy +msgid "License Transaction Date" +msgstr "Ngày hết hạn" + +#: src/properties.cpp:812 +msgid "The date of the License Transaction." +msgstr "" + +#: src/properties.cpp:813 +msgid "Reuse" +msgstr "" + +#: src/properties.cpp:813 +msgid "" +"Indicates whether a license is a repeat or an initial license. Reuse may " +"require that licenses stored in files previously delivered to the customer " +"be updated." +msgstr "" + +#: src/properties.cpp:814 +#, fuzzy +msgid "Other License Documents" +msgstr "Các Ä‘iá»u khoản vá» giấy phép khác" + +#: src/properties.cpp:814 +msgid "" +"Reference information for additional documents associated with the license." +msgstr "" + +#: src/properties.cpp:815 +#, fuzzy +msgid "Other License Info" +msgstr "Các Ä‘iá»u khoản vá» giấy phép khác" + +#: src/properties.cpp:815 +msgid "Additional license information." +msgstr "" + +#: src/properties.cpp:816 src/properties.cpp:817 src/properties.cpp:818 +#: src/properties.cpp:819 src/properties.cpp:820 +msgid "Optional field for use at Licensor's discretion." +msgstr "" + +#: src/properties.cpp:819 +#, fuzzy +msgid "Custom 4" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:820 +#, fuzzy +msgid "Custom 5" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:821 +#, fuzzy +msgid "Custom 6" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:821 src/properties.cpp:822 src/properties.cpp:823 +#: src/properties.cpp:824 src/properties.cpp:825 +msgid "Optional field for use at Licensee's discretion." +msgstr "" + +#: src/properties.cpp:822 +#, fuzzy +msgid "Custom 7" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:823 +#, fuzzy +msgid "Custom 8" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:824 +#, fuzzy +msgid "Custom 9" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:825 +#, fuzzy +msgid "Custom 10" +msgstr "Tùy chỉnh 1" + +#: src/properties.cpp:832 +msgid "Adult Content Warning Required" +msgstr "" + +#: src/properties.cpp:833 +#, fuzzy +msgid "Not Required" +msgstr "chưa được sá»­ dụng" + +#: src/properties.cpp:839 +msgid "Protected" +msgstr "" + +#: src/properties.cpp:840 +msgid "Public Domain" +msgstr "" + +#: src/properties.cpp:846 +msgid "Credit Adjacent To Image" +msgstr "" + +#: src/properties.cpp:847 +msgid "Credit in Credits Area" +msgstr "" + +#: src/properties.cpp:848 +#, fuzzy +msgid "Credit on Image" +msgstr "Xem trước hình ảnh" + +#: src/properties.cpp:849 +#, fuzzy +msgid "Not Require" +msgstr "chưa được sá»­ dụng" + +#: src/properties.cpp:854 +#, fuzzy +msgid "No Colorization" +msgstr "Tông màu" + +#: src/properties.cpp:855 +msgid "No Cropping" +msgstr "" + +#: src/properties.cpp:856 +msgid "No De-Colorization" +msgstr "" + +#: src/properties.cpp:857 +msgid "No Flipping" +msgstr "" + +#: src/properties.cpp:858 +msgid "No Merging" +msgstr "" + +#: src/properties.cpp:859 +msgid "No Retouching" +msgstr "" + +#: src/properties.cpp:864 +msgid "Duplication Only as Necessary Under License" +msgstr "" + +#: src/properties.cpp:865 +msgid "No Duplication Constraints" +msgstr "" + +#: src/properties.cpp:866 +#, fuzzy +msgid "No Duplication" +msgstr "Vị trí" + +#: src/properties.cpp:871 +#, fuzzy +msgid "Maintain File Name" +msgstr "Tên tập tin gốc" + +#: src/properties.cpp:872 +msgid "Maintain File Type" +msgstr "" + +#: src/properties.cpp:873 +msgid "Maintain ID in File Name" +msgstr "" + +#: src/properties.cpp:874 +msgid "Maintain Metadata" +msgstr "" + +#: src/properties.cpp:879 +#, fuzzy +msgid "Windows Bitmap (BMP)" +msgstr "Tiêu đỠcá»­a sổ" + +#: src/properties.cpp:880 +msgid "Digital Negative (DNG)" +msgstr "" + +#: src/properties.cpp:881 +msgid "Encapsulated PostScript (EPS)" +msgstr "" + +#: src/properties.cpp:882 +msgid "Graphics Interchange Format (GIF)" +msgstr "" + +#: src/properties.cpp:883 +msgid "JPEG Interchange Formats (JPG, JIF, JFIF)" +msgstr "" + +#: src/properties.cpp:885 +msgid "Macintosh Picture (PICT)" +msgstr "" + +#: src/properties.cpp:886 +msgid "Portable Network Graphics (PNG)" +msgstr "" + +#: src/properties.cpp:887 +msgid "Photoshop Document (PSD)" +msgstr "" + +#: src/properties.cpp:888 +msgid "Proprietary RAW Image Format" +msgstr "" + +#: src/properties.cpp:889 +#, fuzzy +msgid "Tagged Image File Format (TIFF)" +msgstr "Äịnh dạng tập tin ảnh liên quan" + +#: src/properties.cpp:890 +msgid "Windows Media Photo (HD Photo)" +msgstr "" + +#: src/properties.cpp:895 +msgid "Greater than 50 MB" +msgstr "" + +#: src/properties.cpp:896 +msgid "Up to 1 MB" +msgstr "" + +#: src/properties.cpp:897 +msgid "Up to 10 MB" +msgstr "" + +#: src/properties.cpp:898 +#, fuzzy +msgid "Up to 30 MB" +msgstr "Optio 30" + +#: src/properties.cpp:899 +msgid "Up to 50 MB" +msgstr "" + +#: src/properties.cpp:904 +#, fuzzy +msgid "Illustrated Image" +msgstr "Chiá»u rá»™ng ảnh liên quan" + +#: src/properties.cpp:905 +msgid "Multimedia or Composited Image" +msgstr "" + +#: src/properties.cpp:907 +msgid "Photographic Image" +msgstr "" + +#: src/properties.cpp:913 +msgid "Cell" +msgstr "" + +#: src/properties.cpp:914 +msgid "FAX" +msgstr "" + +#: src/properties.cpp:916 +#, fuzzy +msgid "Pager" +msgstr "Ngưá»i quản lý" + +#: src/properties.cpp:917 +msgid "Work" +msgstr "" + +#: src/properties.cpp:922 +#, fuzzy +msgid "Age Unknown" +msgstr "Không biết" + +#: src/properties.cpp:923 +msgid "Age 25 or Over" +msgstr "" + +#: src/properties.cpp:924 +msgid "Age 24" +msgstr "" + +#: src/properties.cpp:925 +msgid "Age 23" +msgstr "" + +#: src/properties.cpp:926 +msgid "Age 22" +msgstr "" + +#: src/properties.cpp:927 +msgid "Age 21" +msgstr "" + +#: src/properties.cpp:928 +msgid "Age 20" +msgstr "" + +#: src/properties.cpp:929 +msgid "Age 19" +msgstr "" + +#: src/properties.cpp:930 +msgid "Age 18" +msgstr "" + +#: src/properties.cpp:931 +msgid "Age 17" +msgstr "" + +#: src/properties.cpp:932 +msgid "Age 16" +msgstr "" + +#: src/properties.cpp:933 +msgid "Age 15" +msgstr "" + +#: src/properties.cpp:934 +msgid "Age 14 or Under" +msgstr "" + +#: src/properties.cpp:940 src/properties.cpp:948 src/properties.cpp:955 +msgid "Not Applicable" +msgstr "" + +#: src/properties.cpp:941 +msgid "Unlimited Model Releases" +msgstr "" + +#: src/properties.cpp:942 +msgid "Limited or Incomplete Model Releases" +msgstr "" + +#: src/properties.cpp:949 +msgid "Unlimited Property Releases" +msgstr "" + +#: src/properties.cpp:950 +msgid "Limited or Incomplete Property Releases" +msgstr "" + +#: src/properties.cpp:956 +msgid "Repeat Use" +msgstr "" + +#: src/properties.cpp:960 src/properties.cpp:969 +#, fuzzy +msgid "Fixture Identification" +msgstr "Chế độ ảnh bão hòa" + +#: src/properties.cpp:961 src/properties.cpp:970 +#, fuzzy +msgid "Status" +msgstr "Tình trạng GPS" + +#: src/properties.cpp:961 src/properties.cpp:970 +msgid "A notation making the image unique" +msgstr "" + +#: src/properties.cpp:962 src/properties.cpp:971 +msgid "People" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 +msgid "Catalog Sets" +msgstr "" + +#: src/properties.cpp:963 src/properties.cpp:972 src/properties.cpp:1003 +#: src/properties.cpp:1007 +msgid "Descriptive markers of catalog items by content" +msgstr "" + +#: src/properties.cpp:978 +#, fuzzy +msgid "RegionInfo" +msgstr "Thôngtinốngkính" + +#: src/properties.cpp:978 +msgid "Microsoft Photo people-tagging metadata root" +msgstr "" + +#: src/properties.cpp:984 src/properties.cpp:1000 +#, fuzzy +msgid "Regions" +msgstr "Phiên bản" + +#: src/properties.cpp:984 +msgid "Contains Regions/person tags" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date Regions Valid" +msgstr "" + +#: src/properties.cpp:985 +msgid "Date the last region was created" +msgstr "" + +#: src/properties.cpp:991 +msgid "Person Display Name" +msgstr "" + +#: src/properties.cpp:991 +msgid "Name of the person (in the given rectangle)" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle" +msgstr "" + +#: src/properties.cpp:992 +msgid "Rectangle that identifies the person within the photo" +msgstr "" + +#: src/properties.cpp:993 +msgid "Person Email Digest" +msgstr "" + +#: src/properties.cpp:993 +msgid "" +"SHA-1 encrypted message hash of the person's Windows Live e-mail address" +msgstr "" + +#: src/properties.cpp:994 +msgid "Person LiveId CID" +msgstr "" + +#: src/properties.cpp:994 +msgid "Signed decimal representation of the person's Windows Live CID" +msgstr "" + +#: src/properties.cpp:1000 +msgid "Main structure containing region based information" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Applied To Dimensions" +msgstr "" + +#: src/properties.cpp:1001 +msgid "Width and height of image when storing region data" +msgstr "" + +#: src/properties.cpp:1002 +msgid "Region List" +msgstr "" + +#: src/properties.cpp:1002 +#, fuzzy +msgid "List of Region structures" +msgstr "Phiên bản cấu trúc" + +#: src/properties.cpp:1003 +#, fuzzy +msgid "Area" +msgstr "Vùng lấy nét tá»± động" + +#: src/properties.cpp:1004 +msgid "Type purpose of region (Face|Pet|Focus|BarCode)" +msgstr "" + +#: src/properties.cpp:1005 +msgid "Name/ short description of content in image region" +msgstr "" + +#: src/properties.cpp:1006 +msgid "" +"Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|" +"NotEvaluatedNotUsed)" +msgstr "" + +#: src/properties.cpp:1007 +#, fuzzy +msgid "Focus Usage" +msgstr "Vùng lấy nét" + +#: src/properties.cpp:1008 +#, fuzzy +msgid "Bar Code Value" +msgstr "Giá trị sáng" + +#: src/properties.cpp:1008 +msgid "Decoded BarCode value string" +msgstr "" + +#: src/properties.cpp:1009 +#, fuzzy +msgid "Extensions" +msgstr "Phiên bản" + +#: src/properties.cpp:1009 +msgid "Any top level XMP property to describe the region content" +msgstr "" + +#: src/properties.cpp:1015 +msgid "Main structure containing keyword based information" +msgstr "" + +#: src/properties.cpp:1016 +msgid "Hierarchy" +msgstr "" + +#: src/properties.cpp:1016 +msgid "List of root keyword structures" +msgstr "" + +#: src/properties.cpp:1017 +#, fuzzy +msgid "Keyword" +msgstr "Từ khóa" + +#: src/properties.cpp:1017 +msgid "Name of keyword (-node)" +msgstr "" + +#: src/properties.cpp:1018 +msgid "Applied" +msgstr "" + +#: src/properties.cpp:1018 +msgid "" +"True if this keyword has been applied, False otherwise. If missing, mwg-kw:" +"Applied is presumed True for leaf nodes and False for ancestor nodes" +msgstr "" + +#: src/properties.cpp:1019 +msgid "List of children keyword structures" +msgstr "" + +#: src/properties.cpp:1026 +#, fuzzy +msgid "Use Panorama Viewer" +msgstr "Chế độ toàn cảnh" + +#: src/properties.cpp:1026 +msgid "" +"Whether to show this image in a panorama viewer rather than as a normal flat " +"image. This may be specified based on user preferences or by the stitching " +"software. The application displaying or ingesting the image may choose to " +"ignore this." +msgstr "" + +#: src/properties.cpp:1027 +#, fuzzy +msgid "Capture Software" +msgstr "Dữ liệu thu được" + +#: src/properties.cpp:1027 +msgid "" +"If capture was done using an application on a mobile device, such as an " +"Android phone, the name of the application that was used (such as \"Photo " +"Sphere\"). This should be left blank if source images were captured " +"manually, such as by using a DSLR on a tripod." +msgstr "" + +#: src/properties.cpp:1028 +#, fuzzy +msgid "Stitching Software" +msgstr "Phần má»m xá»­ lý" + +#: src/properties.cpp:1028 +msgid "" +"The software that was used to create the final panorama. This may sometimes " +"be the same value as that of GPano:CaptureSoftware." +msgstr "" + +#: src/properties.cpp:1029 +#, fuzzy +msgid "Projection Type" +msgstr "Kiểu vật thể" + +#: src/properties.cpp:1029 +msgid "" +"Projection type used in the image file. Google products currently support " +"the value equirectangular." +msgstr "" + +#: src/properties.cpp:1030 +msgid "Pose Heading Degrees" +msgstr "" + +#: src/properties.cpp:1030 +msgid "" +"Compass heading, measured in degrees, for the center the image. Value must " +"be >= 0 and < 360." +msgstr "" + +#: src/properties.cpp:1031 +msgid "Pose Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1031 +msgid "" +"Pitch, measured in degrees, for the center in the image. Value must be >= " +"-90 and <= 90." +msgstr "" + +#: src/properties.cpp:1032 +msgid "Pose Roll Degrees" +msgstr "" + +#: src/properties.cpp:1032 +msgid "" +"Roll, measured in degrees, of the image where level with the horizon is 0. " +"Value must be > -180 and <= 180." +msgstr "" + +#: src/properties.cpp:1033 +msgid "Initial View Heading Degrees" +msgstr "" + +#: src/properties.cpp:1033 +msgid "The heading angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1034 +msgid "Initial View Pitch Degrees" +msgstr "" + +#: src/properties.cpp:1034 +msgid "The pitch angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1035 +msgid "Initial View Roll Degrees" +msgstr "" + +#: src/properties.cpp:1035 +msgid "The roll angle of the initial view in degrees." +msgstr "" + +#: src/properties.cpp:1036 +msgid "Initial Horizontal FOV Degrees" +msgstr "" + +#: src/properties.cpp:1036 +msgid "" +"The initial horizontal field of view that the viewer should display (in " +"degrees). This is similar to a zoom level." +msgstr "" + +#: src/properties.cpp:1037 +#, fuzzy +msgid "First Photo Date" +msgstr "Ngày quay" + +#: src/properties.cpp:1037 +msgid "Date and time for the first image created in the panorama." +msgstr "" + +#: src/properties.cpp:1038 +#, fuzzy +msgid "Last Photo Date" +msgstr "Ngày quay" + +#: src/properties.cpp:1038 +msgid "Date and time for the last image created in the panorama." +msgstr "" + +#: src/properties.cpp:1039 +msgid "Source Photos Count" +msgstr "" + +#: src/properties.cpp:1039 +msgid "Number of source images used to create the panorama" +msgstr "" + +#: src/properties.cpp:1040 +#, fuzzy +msgid "Exposure Lock Used" +msgstr "Chế độ phÆ¡i sáng" + +#: src/properties.cpp:1040 +msgid "" +"When individual source photographs were captured, whether or not the " +"camera's exposure setting was locked. " +msgstr "" + +#: src/properties.cpp:1041 +msgid "Cropped Area Image Width Pixels" +msgstr "" + +#: src/properties.cpp:1041 +msgid "" +"Original width in pixels of the image (equal to the actual image's width for " +"unedited images)." +msgstr "" + +#: src/properties.cpp:1042 +msgid "Cropped Area Image Height Pixels" +msgstr "" + +#: src/properties.cpp:1042 +msgid "" +"Original height in pixels of the image (equal to the actual image's height " +"for unedited images)." +msgstr "" + +#: src/properties.cpp:1043 +msgid "Full Pano Width Pixels" +msgstr "" + +#: src/properties.cpp:1043 +msgid "" +"Original full panorama width from which the image was cropped. Or, if only a " +"partial panorama was captured, this specifies the width of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1044 +msgid "Full Pano Height Pixels" +msgstr "" + +#: src/properties.cpp:1044 +msgid "" +"Original full panorama height from which the image was cropped. Or, if only " +"a partial panorama was captured, this specifies the height of what the full " +"panorama would have been." +msgstr "" + +#: src/properties.cpp:1045 +msgid "Cropped Area Left Pixels" +msgstr "" + +#: src/properties.cpp:1045 +msgid "" +"Column where the left edge of the image was cropped from the full sized " +"panorama." +msgstr "" + +#: src/properties.cpp:1046 +msgid "Cropped Area Top Pixels" +msgstr "" + +#: src/properties.cpp:1046 +msgid "" +"Row where the top edge of the image was cropped from the full sized panorama." +msgstr "" + +#: src/properties.cpp:1047 +msgid "Initial Camera Dolly" +msgstr "" + +#: src/properties.cpp:1047 +msgid "" +"This optional parameter moves the virtual camera position along the line of " +"sight, away from the center of the photo sphere. A rear surface position is " +"represented by the value -1.0, while a front surface position is represented " +"by 1.0. For normal viewing, this parameter should be set to 0." +msgstr "" + +#: src/properties.cpp:1055 +#, fuzzy +msgid "Archival Location" +msgstr "Äịa Ä‘iểm quay" + +#: src/properties.cpp:1055 +msgid "Information about the Archival Location." +msgstr "" + +#: src/properties.cpp:1056 +#, fuzzy +msgid "Arranger" +msgstr "Cam" + +#: src/properties.cpp:1056 +msgid "Information about the Arranger." +msgstr "" + +#: src/properties.cpp:1057 +#, fuzzy +msgid "Arranger Keywords" +msgstr "Từ khóa" + +#: src/properties.cpp:1057 +msgid "Information about the Arranger Keywords." +msgstr "" + +#: src/properties.cpp:1059 +#, fuzzy +msgid "Video Aspect Ratio" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1059 +msgid "" +"Ratio of Width:Height, helps to determine how a video would be displayed on " +"a screen" +msgstr "" + +#: src/properties.cpp:1060 +#, fuzzy +msgid "Video Aspect Ratio Type" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1060 +msgid "Aspect Ratio Type. Eg - Free-Resizing or Fixed" +msgstr "" + +#: src/properties.cpp:1061 +msgid "Attached File Data" +msgstr "" + +#: src/properties.cpp:1062 +#, fuzzy +msgid "Attached File Description" +msgstr "Miêu tả hình ảnh" + +#: src/properties.cpp:1063 +msgid "Attached File MIME Type" +msgstr "" + +#: src/properties.cpp:1064 +#, fuzzy +msgid "Attached File Name" +msgstr "Tên tập tin gốc" + +#: src/properties.cpp:1065 +msgid "Attached File UID" +msgstr "" + +#: src/properties.cpp:1065 +msgid "Attached File Universal ID" +msgstr "" + +#: src/properties.cpp:1066 +msgid "A C string that specifies a Base URL." +msgstr "" + +#: src/properties.cpp:1067 +msgid "Bit Depth" +msgstr "" + +#: src/properties.cpp:1067 +msgid "" +"A 16-bit integer that indicates the pixel depth of the compressed image. " +"Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images" +msgstr "" + +#: src/properties.cpp:1068 +#, fuzzy +msgid "Brightness setting." +msgstr "Tùy chinh độ mịn" + +#: src/properties.cpp:1069 +#, fuzzy +msgid "Camera Byte Order" +msgstr "Thứ tá»± byte" + +#: src/properties.cpp:1069 +msgid "Byte Order used by the Video Capturing device." +msgstr "" + +#: src/properties.cpp:1070 +msgid "Video Cinematographer" +msgstr "" + +#: src/properties.cpp:1070 +#, fuzzy +msgid "The video Cinematographer information." +msgstr "Thông tin bản quyá»n" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean Aperture Width" +msgstr "Khẩu Ä‘6á» tối thiểu" + +#: src/properties.cpp:1071 +#, fuzzy +msgid "Clean aperture width in pixels" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean Aperture Height" +msgstr "Giá trị khẩu độ tối Ä‘a" + +#: src/properties.cpp:1072 +#, fuzzy +msgid "Clean aperture height in pixels" +msgstr "Khẩu độ tối Ä‘a tại tiêu cá»± tối thiểu" + +#: src/properties.cpp:1073 +#, fuzzy +msgid "Video Codec" +msgstr "Bá»™ nén ảnh" + +#: src/properties.cpp:1073 +msgid "" +"The video codec information. Informs about the encoding algorithm of video. " +"Codec Info is required for video playback." +msgstr "" + +#: src/properties.cpp:1074 +msgid "Video Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1074 +msgid "Contains information the video Codec Decode All, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1075 +#, fuzzy +msgid "Video Codec Description" +msgstr "Miêu tả hình ảnh" + +#: src/properties.cpp:1075 src/properties.cpp:1403 +msgid "Contains description the codec." +msgstr "" + +#: src/properties.cpp:1076 +#, fuzzy +msgid "Video Codec Information" +msgstr "Hình ảnh và thông tin" + +#: src/properties.cpp:1076 +msgid "Contains information the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL" +msgstr "" + +#: src/properties.cpp:1077 +msgid "Video Codec Download URL." +msgstr "" + +#: src/properties.cpp:1078 +#, fuzzy +msgid "Video Codec Settings" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/properties.cpp:1078 src/properties.cpp:1325 src/properties.cpp:1406 +msgid "Contains settings the codec needs before decoding can be started." +msgstr "" + +#: src/properties.cpp:1083 +#, fuzzy +msgid "Comment" +msgstr "Nhật kí bình luận" + +#: src/properties.cpp:1083 +msgid "Information about the Comment." +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned" +msgstr "" + +#: src/properties.cpp:1084 +msgid "Commissioned." +msgstr "" + +#: src/properties.cpp:1085 +msgid "QTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1085 +msgid "Other QuickTime Compatible FileType Brand" +msgstr "" + +#: src/properties.cpp:1086 +msgid "Information about the Composer." +msgstr "" + +#: src/properties.cpp:1087 +#, fuzzy +msgid "Composer Keywords" +msgstr "Từ khóa" + +#: src/properties.cpp:1087 +msgid "Information about the Composer Keywords." +msgstr "" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Compressor" +msgstr "Bá»™ nén ảnh" + +#: src/properties.cpp:1088 +#, fuzzy +msgid "Video Compression Library Used" +msgstr "Bá»™ nén ảnh" + +#: src/properties.cpp:1089 +#, fuzzy +msgid "Video Compressor ID" +msgstr "Bá»™ nén ảnh" + +#: src/properties.cpp:1089 +msgid "Video Compression ID of Technology/Codec Used" +msgstr "" + +#: src/properties.cpp:1090 +#, fuzzy +msgid "Compressor Version" +msgstr "Tá»· lệ nén" + +#: src/properties.cpp:1090 +msgid "Information about the Compressor Version." +msgstr "" + +#: src/properties.cpp:1091 +#, fuzzy +msgid "Container Type" +msgstr "Kiểu Ca-me-ra" + +#: src/properties.cpp:1091 +msgid "Primary Metadata Container" +msgstr "" + +#: src/properties.cpp:1092 +#, fuzzy +msgid "Content Compression Algorithm" +msgstr "Tá»· lệ nén" + +#: src/properties.cpp:1092 +msgid "Content Compression Algorithm. Eg: zlib" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type" +msgstr "" + +#: src/properties.cpp:1093 +msgid "Content Encoding Type. Eg: Encryption or Compression" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm" +msgstr "" + +#: src/properties.cpp:1094 +msgid "Content Encryption Algorithm. Eg: Blowfish" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm" +msgstr "" + +#: src/properties.cpp:1095 +msgid "Content Signature Algorithm. Eg: RSA" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Sign Hash Algorithm" +msgstr "" + +#: src/properties.cpp:1096 +msgid "Content Signature Hash Algorithm. Eg: SHA1-160 or MD5" +msgstr "" + +#: src/properties.cpp:1097 +msgid "Indicates the direction of contrast processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1098 +msgid "Copyright, can be name of an organization or an individual." +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer" +msgstr "" + +#: src/properties.cpp:1099 +msgid "Costume Designer associated with the video." +msgstr "" + +#: src/properties.cpp:1100 +#, fuzzy +msgid "Name of the country where the video was created." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:1101 +#, fuzzy +msgid "Creation Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:1101 +msgid "" +"Specifies the date and time of the initial creation of the file. The value " +"is given as the number of 100-nanosecond intervals since January 1, 1601, " +"according to Coordinated Universal Time (Greenwich Mean Time)." +msgstr "" + +#: src/properties.cpp:1103 +msgid "Pixel Crop Bottom" +msgstr "" + +#: src/properties.cpp:1103 +msgid "Number of Pixels to be cropped from the bottom." +msgstr "" + +#: src/properties.cpp:1104 +msgid "Pixel Crop Left" +msgstr "" + +#: src/properties.cpp:1104 +msgid "Number of Pixels to be cropped from the left." +msgstr "" + +#: src/properties.cpp:1105 +msgid "Pixel Crop Right" +msgstr "" + +#: src/properties.cpp:1105 +msgid "Number of Pixels to be cropped from the right." +msgstr "" + +#: src/properties.cpp:1106 +msgid "Field that indicates if a video is cropped." +msgstr "" + +#: src/properties.cpp:1107 +msgid "Pixel Crop Top" +msgstr "" + +#: src/properties.cpp:1107 +msgid "Number of Pixels to be cropped from the top." +msgstr "" + +#: src/properties.cpp:1108 +#, fuzzy +msgid "Current Time" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/properties.cpp:1108 +msgid "The time value for current time position within the movie." +msgstr "" + +#: src/properties.cpp:1109 +msgid "Data Packets" +msgstr "" + +#: src/properties.cpp:1109 +msgid "" +"Specifies the number of Data Packet entries that exist within the Data " +"Object." +msgstr "" + +#: src/properties.cpp:1110 +msgid "Date and time when original video was generated, in ISO 8601 format. " +msgstr "" + +#: src/properties.cpp:1111 +msgid "" +"Date and time when video was stored as digital data, can be the same as " +"DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 " +"format." +msgstr "" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Date-Time Original" +msgstr "Ngày và giá» ban đầu" + +#: src/properties.cpp:1113 +#, fuzzy +msgid "Contains the production date" +msgstr "GIảm nhiá»…u" + +#: src/properties.cpp:1114 +msgid "Video Track Default On" +msgstr "" + +#: src/properties.cpp:1114 +msgid "Video Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1115 +#, fuzzy +msgid "Indicates the digital zoom ratio when the video was shot." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:1116 +#, fuzzy +msgid "Dimensions" +msgstr "Phiên bản" + +#: src/properties.cpp:1116 +msgid "Information about the Dimensions of the video frame." +msgstr "" + +#: src/properties.cpp:1117 +msgid "Director" +msgstr "" + +#: src/properties.cpp:1117 +msgid "Information about the Director." +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video Display Unit" +msgstr "" + +#: src/properties.cpp:1118 +msgid "Video display unit. Eg - cm, pixels, inch" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By" +msgstr "" + +#: src/properties.cpp:1119 +msgid "Distributed By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1120 +#, fuzzy +msgid "Doc Type" +msgstr "Kiểu lấy nét" + +#: src/properties.cpp:1120 +msgid "" +"Describes the contents of the file. In the case of a MATROSKA file, its " +"value is 'matroska'" +msgstr "" + +#: src/properties.cpp:1121 +msgid "Doc Type Read Version" +msgstr "" + +#: src/properties.cpp:1121 +msgid "" +"A Matroska video specific property, helps in determining the compatibility " +"of file with a particular version of a video player" +msgstr "" + +#: src/properties.cpp:1122 +#, fuzzy +msgid "Doc Type Version" +msgstr "Mẫu phiên bản" + +#: src/properties.cpp:1122 +msgid "" +"A Matroska video specific property, indicated the version of filetype, helps " +"in determining the compatibility" +msgstr "" + +#: src/properties.cpp:1123 +msgid "Dots Per Inch" +msgstr "" + +#: src/properties.cpp:1124 +#, fuzzy +msgid "The duration of the media file. Measured in milli-seconds." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:1125 +#, fuzzy +msgid "EBML Read Version" +msgstr "Mẫu phiên bản" + +#: src/properties.cpp:1125 +msgid "Extensible Binary Meta Language Read Version" +msgstr "" + +#: src/properties.cpp:1126 +#, fuzzy +msgid "EBML Version" +msgstr "Phiên bản" + +#: src/properties.cpp:1126 +msgid "Extensible Binary Meta Language Version" +msgstr "" + +#: src/properties.cpp:1127 +msgid "Edit Block 1 / Language" +msgstr "" + +#: src/properties.cpp:1127 src/properties.cpp:1128 src/properties.cpp:1129 +#: src/properties.cpp:1130 src/properties.cpp:1131 src/properties.cpp:1132 +#: src/properties.cpp:1133 src/properties.cpp:1134 src/properties.cpp:1135 +msgid "Information about the Edit / Language." +msgstr "" + +#: src/properties.cpp:1128 +msgid "Edit Block 2 / Language" +msgstr "" + +#: src/properties.cpp:1129 +msgid "Edit Block 3 / Language" +msgstr "" + +#: src/properties.cpp:1130 +msgid "Edit Block 4 / Language" +msgstr "" + +#: src/properties.cpp:1131 +msgid "Edit Block 5 / Language" +msgstr "" + +#: src/properties.cpp:1132 +msgid "Edit Block 6 / Language" +msgstr "" + +#: src/properties.cpp:1133 +msgid "Edit Block 7 / Language" +msgstr "" + +#: src/properties.cpp:1134 +msgid "Edit Block 8 / Language" +msgstr "" + +#: src/properties.cpp:1135 +msgid "Edit Block 9 / Language" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By" +msgstr "" + +#: src/properties.cpp:1136 +msgid "Edited By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1137 +#, fuzzy +msgid "Video Track Enabled" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1137 +msgid "Status of Video Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By" +msgstr "" + +#: src/properties.cpp:1138 +msgid "Encoded By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels Width" +msgstr "" + +#: src/properties.cpp:1139 +msgid "Encoded Pixels width in pixels" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels Height" +msgstr "" + +#: src/properties.cpp:1140 +msgid "Encoded Pixels height in pixels" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Encoder" +msgstr "" + +#: src/properties.cpp:1141 +msgid "Information about the Encoder." +msgstr "" + +#: src/properties.cpp:1142 +msgid "End Timecode" +msgstr "" + +#: src/properties.cpp:1143 +msgid "Engineer, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1144 +#, fuzzy +msgid "Equipment" +msgstr "Thông tin thiết bị" + +#: src/properties.cpp:1144 +msgid "Information about the Equipment used for recording Video." +msgstr "" + +#: src/properties.cpp:1145 +#, fuzzy +msgid "Exposure Compensation Information." +msgstr "Bù trừ phÆ¡i sáng" + +#: src/properties.cpp:1146 +#, fuzzy +msgid "Exposure Program Information." +msgstr "Tá»± động phÆ¡i sáng hoàn toàn" + +#: src/properties.cpp:1147 +#, fuzzy +msgid "Exposure time in seconds." +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/properties.cpp:1148 +msgid "Extended Content Description" +msgstr "" + +#: src/properties.cpp:1148 +msgid "Extended Content Description, usually found in ASF type files." +msgstr "" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID" +msgstr "Tập tin" + +#: src/properties.cpp:1150 +#, fuzzy +msgid "File ID." +msgstr "Tập tin" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File Length" +msgstr "Tiêu cá»±" + +#: src/properties.cpp:1151 +#, fuzzy +msgid "File length." +msgstr "Tiêu cá»±" + +#: src/properties.cpp:1152 +#, fuzzy +msgid "File Name" +msgstr "Tên tập tin" + +#: src/properties.cpp:1152 +msgid "File Name or Absolute File Path" +msgstr "" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size" +msgstr "Kích cỡ tập tin" + +#: src/properties.cpp:1153 +#, fuzzy +msgid "File Size, in MB" +msgstr "Kích cỡ tập tin" + +#: src/properties.cpp:1154 +#, fuzzy +msgid "File Type" +msgstr "Kiểu tập tin phụ" + +#: src/properties.cpp:1154 +msgid "Extension of File or Type of File" +msgstr "" + +#: src/properties.cpp:1155 +msgid "Filter Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1156 +msgid "Firmware Version of the Camera/Video device." +msgstr "" + +#: src/properties.cpp:1157 +msgid "F number. Camera Lens specific data." +msgstr "" + +#: src/properties.cpp:1158 +msgid "Focal length of the lens, in millimeters." +msgstr "" + +#: src/properties.cpp:1159 +msgid "Focus Mode of the Lens. Eg - AF for Auto Focus" +msgstr "" + +#: src/properties.cpp:1160 +msgid "Indication of movie format (computer-generated, digitized, and so on)." +msgstr "" + +#: src/properties.cpp:1161 +#, fuzzy +msgid "Frame Count" +msgstr "Tổng số Hình ảnh" + +#: src/properties.cpp:1161 src/properties.cpp:1351 +msgid "Total number of frames in a video" +msgstr "" + +#: src/properties.cpp:1162 +#, fuzzy +msgid "Frame Height" +msgstr "Chiá»u cao hình ảnh" + +#: src/properties.cpp:1162 +msgid "Height of frames in a video" +msgstr "" + +#: src/properties.cpp:1163 +msgid "" +"Rate at which frames are presented in a video (Expressed in fps(Frames per " +"Second))" +msgstr "" + +#: src/properties.cpp:1165 +#, fuzzy +msgid "Frame Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/properties.cpp:1165 +msgid "Width of frames in a video" +msgstr "" + +#: src/properties.cpp:1169 +msgid "GPS Coordinates" +msgstr "" + +#: src/properties.cpp:1169 +msgid "Information about the GPS Coordinates." +msgstr "" + +#: src/properties.cpp:1170 +msgid "Date stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1171 +msgid "Direction of image when captured, values range from 0 to 359.99." +msgstr "" + +#: src/properties.cpp:1172 +#, fuzzy +msgid "Reference for image direction." +msgstr "Chiá»u chụp toàn cảnh" + +#: src/properties.cpp:1173 +msgid "(North/South). Indicates latitude." +msgstr "" + +#: src/properties.cpp:1174 +msgid "(East/West). Indicates longitude." +msgstr "" + +#: src/properties.cpp:1175 +msgid "Geodetic survey data." +msgstr "" + +#: src/properties.cpp:1176 +msgid "Satellite information, format is unspecified." +msgstr "" + +#: src/properties.cpp:1177 +msgid "Time stamp of GPS data, " +msgstr "" + +#: src/properties.cpp:1178 +msgid "A decimal encoding with period separators. " +msgstr "" + +#: src/properties.cpp:1179 +#, fuzzy +msgid "Graphics Mode" +msgstr "Chế độ dá»… dàng" + +#: src/properties.cpp:1179 +msgid "" +"A 16-bit integer that specifies the transfer mode. The transfer mode " +"specifies which Booleanoperation QuickDraw should perform when drawing or " +"transferring an image from one location to another." +msgstr "" + +#: src/properties.cpp:1181 +msgid "Grouping" +msgstr "" + +#: src/properties.cpp:1181 +msgid "Information about the Grouping." +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "Handler Class" +msgstr "" + +#: src/properties.cpp:1182 src/properties.cpp:1413 +msgid "" +"A four-character code that identifies the type of the handler. Only two " +"values are valid for this field: 'mhlr' for media handlers and 'dhlr' for " +"data handlers." +msgstr "" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +#, fuzzy +msgid "Handler Description" +msgstr "Miêu tả hình ảnh" + +#: src/properties.cpp:1183 src/properties.cpp:1414 +msgid "" +"A (counted) string that specifies the name of the component-that is, the " +"media handler used when this media was created.." +msgstr "" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +#, fuzzy +msgid "Handler Type" +msgstr "Kiểu Ca-me-ra" + +#: src/properties.cpp:1184 src/properties.cpp:1415 +msgid "" +"A four-character code that identifies the type of the media handler or data " +"handler." +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +msgid "Handler Vendor ID" +msgstr "" + +#: src/properties.cpp:1185 src/properties.cpp:1416 +#, fuzzy +msgid "Component manufacturer." +msgstr "Nhà sản xuất ống kính." + +#: src/properties.cpp:1186 +#, fuzzy +msgid "Video Height" +msgstr "Chiá»u cao hình ảnh" + +#: src/properties.cpp:1186 src/properties.cpp:1309 +msgid "Video height in pixels" +msgstr "" + +#: src/properties.cpp:1187 +msgid "Hue Adjustment Settings Information." +msgstr "" + +#: src/properties.cpp:1188 +msgid "Image Length, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Info Banner Image" +msgstr "" + +#: src/properties.cpp:1189 +msgid "Information Banner Image." +msgstr "" + +#: src/properties.cpp:1190 +msgid "Info Banner URL" +msgstr "" + +#: src/properties.cpp:1190 +msgid "Information Banner URL." +msgstr "" + +#: src/properties.cpp:1191 +#, fuzzy +msgid "Information" +msgstr "Thông tin GPS" + +#: src/properties.cpp:1191 +msgid "Additional Movie Information." +msgstr "" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Info Text" +msgstr "Văn bản" + +#: src/properties.cpp:1192 +#, fuzzy +msgid "Information Text." +msgstr "Thông tin GPS" + +#: src/properties.cpp:1193 +msgid "Info URL" +msgstr "" + +#: src/properties.cpp:1193 +#, fuzzy +msgid "Information URL." +msgstr "Thông tin GPS" + +#: src/properties.cpp:1194 +msgid "Information about the ISO Setting." +msgstr "" + +#: src/properties.cpp:1195 +msgid "ISRC Code" +msgstr "" + +#: src/properties.cpp:1195 +msgid "Information about the ISRC Code." +msgstr "" + +#: src/properties.cpp:1196 +#, fuzzy +msgid "Junk Data" +msgstr "Dữ liệu ống kính" + +#: src/properties.cpp:1196 +msgid "Video Junk data" +msgstr "" + +#: src/properties.cpp:1197 +#, fuzzy +msgid "Language." +msgstr "Ngôn ngữ" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "Length" +msgstr "DảiTiêucá»±" + +#: src/properties.cpp:1198 +#, fuzzy +msgid "The length of the media file." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:1200 +#, fuzzy +msgid "Lens Type." +msgstr "Kiểu á»ng kính" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness" +msgstr "Äá»™ sáng" + +#: src/properties.cpp:1201 +#, fuzzy +msgid "Lightness." +msgstr "Äá»™ sáng" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information" +msgstr "Thông tin ảnh ch" + +#: src/properties.cpp:1202 +#, fuzzy +msgid "Location Information." +msgstr "Thông tin ảnh ch" + +#: src/properties.cpp:1203 +msgid "Logo Icon URL" +msgstr "" + +#: src/properties.cpp:1203 +msgid "A C string that specifies Logo Icon URL." +msgstr "" + +#: src/properties.cpp:1204 +msgid "Logo URL" +msgstr "" + +#: src/properties.cpp:1204 +msgid "A C string that specifies a Logo URL." +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics" +msgstr "" + +#: src/properties.cpp:1205 +msgid "Lyrics of a Song/Video." +msgstr "" + +#: src/properties.cpp:1206 +msgid "QTime Major FileType Brand" +msgstr "" + +#: src/properties.cpp:1206 +msgid "QuickTime Major File Type Brand" +msgstr "" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Equipment Make" +msgstr "Thông tin thiết bị" + +#: src/properties.cpp:1207 +#, fuzzy +msgid "Manufacturer of recording equipment" +msgstr "Nhà sản xuất cá»§a các thiết bị thu" + +#: src/properties.cpp:1208 +#, fuzzy +msgid "Camera Maker Note Type" +msgstr "Kiểu Ca-me-ra" + +#: src/properties.cpp:1208 +msgid "Maker Note Type of the camera." +msgstr "" + +#: src/properties.cpp:1209 +#, fuzzy +msgid "Camera Maker Note Version" +msgstr "Phiên bản thiết lập máy ảnh" + +#: src/properties.cpp:1209 +msgid "Maker Note Version of the camera." +msgstr "" + +#: src/properties.cpp:1210 +msgid "Maker URL" +msgstr "" + +#: src/properties.cpp:1210 +#, fuzzy +msgid "Camera Manufacturer's URL." +msgstr "Nhà sản xuất ống kính." + +#: src/properties.cpp:1211 +msgid "Smallest F number of lens, in APEX." +msgstr "" + +#: src/properties.cpp:1212 +#, fuzzy +msgid "Maximum Bit Rate" +msgstr "Giá trị khẩu độ tối Ä‘a" + +#: src/properties.cpp:1212 +msgid "" +"Specifies the maximum instantaneous bit rate in bits per second for the " +"entire file. This shall equal the sum of the bit rates of the individual " +"digital media streams." +msgstr "" + +#: src/properties.cpp:1213 +#, fuzzy +msgid "Maximum Data Rate" +msgstr "Kích cỡ Trang Lá»›n nhất" + +#: src/properties.cpp:1213 +msgid "" +"Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes " +"per Second))" +msgstr "" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +#, fuzzy +msgid "Media Track Create Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:1214 src/properties.cpp:1417 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was created." +msgstr "" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +#, fuzzy +msgid "Media Track Duration" +msgstr "Äá»™ bão hòa đã thay đổi" + +#: src/properties.cpp:1215 src/properties.cpp:1418 +msgid "" +"A time value that indicates the duration of this media (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +#, fuzzy +msgid "Media Header Version" +msgstr "Mẫu phiên bản" + +#: src/properties.cpp:1216 src/properties.cpp:1419 +msgid "A 1-byte specification of the version of this media header" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "Media Language Code" +msgstr "" + +#: src/properties.cpp:1217 src/properties.cpp:1420 +msgid "A 16-bit integer that specifies the language code for this media." +msgstr "" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +#, fuzzy +msgid "Media Track Modify Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:1218 src/properties.cpp:1421 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the media header was last modified." +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "Media Time Scale" +msgstr "" + +#: src/properties.cpp:1219 src/properties.cpp:1422 +msgid "" +"A time value that indicates the time scale for this media-that is, the " +"number of time units that pass per second in its time coordinate system." +msgstr "" + +#: src/properties.cpp:1220 +#, fuzzy +msgid "Medium." +msgstr "Trung bình" + +#: src/properties.cpp:1221 +msgid "Metadata" +msgstr "" + +#: src/properties.cpp:1221 +msgid "An array of Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1222 +msgid "Metadata Library" +msgstr "" + +#: src/properties.cpp:1222 +msgid "An array of Unregistered Metadata Library Tags and their values." +msgstr "" + +#: src/properties.cpp:1223 +#, fuzzy +msgid "Metering mode." +msgstr "Chế độ Ä‘o đạc" + +#: src/properties.cpp:1224 +msgid "Micro Seconds Per Frame" +msgstr "" + +#: src/properties.cpp:1224 +msgid "Number of micro seconds per frame, or frame rate" +msgstr "" + +#: src/properties.cpp:1225 +#, fuzzy +msgid "Mime Type" +msgstr "Kiểu hình ảnh" + +#: src/properties.cpp:1225 +msgid "Tells about the video format" +msgstr "" + +#: src/properties.cpp:1226 +#, fuzzy +msgid "QTime Minor FileType Version" +msgstr "Phiên bản tập tin" + +#: src/properties.cpp:1226 +msgid "QuickTime Minor File Type Version" +msgstr "" + +#: src/properties.cpp:1227 +#, fuzzy +msgid "Equipment Model" +msgstr "Thông tin thiết bị" + +#: src/properties.cpp:1227 +msgid "Model name or number of equipment." +msgstr "" + +#: src/properties.cpp:1228 +#, fuzzy +msgid "Modification Date-Time" +msgstr "Tên vị trí" + +#: src/properties.cpp:1228 +msgid "Contains the modification date of the video" +msgstr "" + +#: src/properties.cpp:1229 +#, fuzzy +msgid "Movie Header Version" +msgstr "Mẫu phiên bản" + +#: src/properties.cpp:1230 +msgid "Music By" +msgstr "" + +#: src/properties.cpp:1230 +msgid "Music By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1231 +msgid "Muxing App" +msgstr "" + +#: src/properties.cpp:1231 +msgid "" +"Contains the name of the library that has been used to create the file (like " +"\"libmatroska 0.7.0\")" +msgstr "" + +#: src/properties.cpp:1232 +msgid "Name of song or the event." +msgstr "" + +#: src/properties.cpp:1233 +msgid "Next Track ID" +msgstr "" + +#: src/properties.cpp:1233 +msgid "" +"A 32-bit integer that indicates a value to use for the track ID number of " +"the next track added to this movie. Note that 0 is not a valid track ID " +"value." +msgstr "" + +#: src/properties.cpp:1234 +#, fuzzy +msgid "Number Of Colours" +msgstr "Số trang" + +#: src/properties.cpp:1234 +msgid "Total number of colours used" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours" +msgstr "" + +#: src/properties.cpp:1235 +msgid "Number Of Important Colours, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1236 +#, fuzzy +msgid "Number Of Parts" +msgstr "Số trang" + +#: src/properties.cpp:1236 +msgid "Total number of parts in the video." +msgstr "" + +#: src/properties.cpp:1237 +msgid "Operation Colours" +msgstr "" + +#: src/properties.cpp:1237 +msgid "" +"Three 16-bit values that specify the red, green, and blue colors for the " +"transfer mode operation indicated in the graphics mode field." +msgstr "" + +#: src/properties.cpp:1238 +#, fuzzy +msgid "Organization" +msgstr "Thá»i lượng" + +#: src/properties.cpp:1238 +msgid "Name of organization associated with the video." +msgstr "" + +#: src/properties.cpp:1239 +msgid "" +"Video Orientation:1 = Horizontal (normal) 2 = Mirror horizontal 3 = Rotate " +"180 4 = Mirror vertical 5 = Mirror horizontal and rotate 270 CW 6 = Rotate " +"90 CW 7 = Mirror horizontal and rotate 90 CW 8 = Rotate 270 CW" +msgstr "" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part" +msgstr "Tiệc" + +#: src/properties.cpp:1248 +#, fuzzy +msgid "Part." +msgstr "Tiệc" + +#: src/properties.cpp:1249 +msgid "Performers" +msgstr "" + +#: src/properties.cpp:1249 +msgid "Performers involved in the video." +msgstr "" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords" +msgstr "Từ khóa" + +#: src/properties.cpp:1250 +#, fuzzy +msgid "Performer Keywords." +msgstr "Từ khóa." + +#: src/properties.cpp:1251 +msgid "Performer URL" +msgstr "" + +#: src/properties.cpp:1251 +msgid "Performer's dedicated URL." +msgstr "" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data" +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1252 +#, fuzzy +msgid "Picture Control Data." +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Version" +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1253 +#, fuzzy +msgid "Picture Control Data Version." +msgstr "Chế độ ảnh bão hòa" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name" +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1254 +#, fuzzy +msgid "Picture Control Name." +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Base" +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1255 +#, fuzzy +msgid "Picture Control Data Base." +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust" +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1256 +#, fuzzy +msgid "Picture Control Adjust Information." +msgstr "Chế độ ảnh bão hòa" + +#: src/properties.cpp:1257 +#, fuzzy +msgid "Picture Control Quick Adjust" +msgstr "Chế độ ảnh tương phản" + +#: src/properties.cpp:1257 +msgid "Picture Control Quick Adjustment Settings." +msgstr "" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection" +msgstr "Lá»±a chá»n" + +#: src/properties.cpp:1258 +#, fuzzy +msgid "Play Selection." +msgstr "Lá»±a chá»n" + +#: src/properties.cpp:1259 +#, fuzzy +msgid "Play Mode" +msgstr "Chế độ dá»… dàng" + +#: src/properties.cpp:1259 +msgid "Information about the Play Mode." +msgstr "" + +#: src/properties.cpp:1260 +msgid "Chapter Physical Equivalent" +msgstr "" + +#: src/properties.cpp:1260 +#, fuzzy +msgid "Contains the information of External media." +msgstr "Phần thông tin liên lạc cá»§a quốc gia." + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X" +msgstr "" + +#: src/properties.cpp:1263 +msgid "Pixels Per Meter X, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y" +msgstr "" + +#: src/properties.cpp:1264 +msgid "Pixels Per Meter Y, a property inherited from BitMap format" +msgstr "" + +#: src/properties.cpp:1265 +msgid "Planes" +msgstr "" + +#: src/properties.cpp:1265 +msgid "The number of Image Planes in the video" +msgstr "" + +#: src/properties.cpp:1266 +#, fuzzy +msgid "Poster Time" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/properties.cpp:1266 +msgid "The time value of the time of the movie poster." +msgstr "" + +#: src/properties.cpp:1267 +msgid "Preferred Rate" +msgstr "" + +#: src/properties.cpp:1267 +msgid "" +"A 32-bit fixed-point number that specifies the rate at which to play this " +"movie. A value of 1.0 indicates normal rate." +msgstr "" + +#: src/properties.cpp:1268 +msgid "Preferred Volume" +msgstr "" + +#: src/properties.cpp:1268 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this movie's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1269 +msgid "Preroll" +msgstr "" + +#: src/properties.cpp:1269 +msgid "" +"Specifies the amount of time to buffer data before starting to play the " +"file, in millisecond units. If this value is nonzero,the Play Duration field " +"and all of the payload Presentation Time fields have been offset by this " +"amount. Therefore, player software must subtract the value in the preroll " +"field from the play duration and presentation times to calculate their " +"actual values." +msgstr "" + +#: src/properties.cpp:1272 +#, fuzzy +msgid "Preview Atom Type" +msgstr "Xem trước hình ảnh" + +#: src/properties.cpp:1272 +msgid "Indicates the type of atom that contains the preview data" +msgstr "" + +#: src/properties.cpp:1273 +#, fuzzy +msgid "Preview Date" +msgstr "Xem trước hình ảnh" + +#: src/properties.cpp:1273 +msgid "The date of the movie preview in local time converted from UTC" +msgstr "" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "Preview Duration" +msgstr "Äịnh dạng xem trước" + +#: src/properties.cpp:1274 +#, fuzzy +msgid "The duration of the movie preview in movie time scale units" +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:1275 +#, fuzzy +msgid "Preview Time" +msgstr "Xem trước hình ảnh" + +#: src/properties.cpp:1275 +msgid "The time value in the movie at which the preview begins." +msgstr "" + +#: src/properties.cpp:1276 +#, fuzzy +msgid "The version of the movie preview " +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:1277 +#, fuzzy +msgid "Produced By" +msgstr "Nhà sản xuất" + +#: src/properties.cpp:1277 +msgid "Produced By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1278 +msgid "Producer involved with the video." +msgstr "" + +#: src/properties.cpp:1279 +#, fuzzy +msgid "Producer Keywords" +msgstr "Từ khóa" + +#: src/properties.cpp:1279 +msgid "Information about the Producer Keywords." +msgstr "" + +#: src/properties.cpp:1280 +#, fuzzy +msgid "Production Aperture Width" +msgstr "Khẩu độ tá»± động" + +#: src/properties.cpp:1280 +msgid "Production aperture width in pixels" +msgstr "" + +#: src/properties.cpp:1281 +#, fuzzy +msgid "Production Aperture Height" +msgstr "Khẩu độ tá»± động" + +#: src/properties.cpp:1281 +msgid "Production aperture height in pixels" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Production Designer" +msgstr "" + +#: src/properties.cpp:1282 +msgid "Information about the Production Designer." +msgstr "" + +#: src/properties.cpp:1283 +msgid "Production Studio" +msgstr "" + +#: src/properties.cpp:1283 +msgid "Information about the Production Studio." +msgstr "" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product" +msgstr "Nhà sản xuất" + +#: src/properties.cpp:1284 +#, fuzzy +msgid "Product." +msgstr "Nhà sản xuất" + +#: src/properties.cpp:1286 +msgid "Rate" +msgstr "" + +#: src/properties.cpp:1286 +msgid "Rate." +msgstr "" + +#: src/properties.cpp:1287 +msgid "Rated" +msgstr "" + +#: src/properties.cpp:1287 +msgid "The age circle required for viewing the video." +msgstr "" + +#: src/properties.cpp:1288 +msgid "Rating, eg. 7 or 8 (generally out of 10)." +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name" +msgstr "" + +#: src/properties.cpp:1289 +msgid "Record Label Name, or the name of the organization recording the video." +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL" +msgstr "" + +#: src/properties.cpp:1290 +msgid "Record Label URL." +msgstr "" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright" +msgstr "Bản quyá»n" + +#: src/properties.cpp:1291 +#, fuzzy +msgid "Recording Copyright." +msgstr "Bản quyá»n" + +#: src/properties.cpp:1292 +msgid "Requirements" +msgstr "" + +#: src/properties.cpp:1292 +msgid "Information about the Requirements." +msgstr "" + +#: src/properties.cpp:1293 +msgid "" +"Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = " +"centimeters." +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By" +msgstr "" + +#: src/properties.cpp:1294 +msgid "Ripped By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1295 +msgid "Indicates the direction of saturation processing applied by the camera." +msgstr "" + +#: src/properties.cpp:1296 +msgid "Secondary Genre" +msgstr "" + +#: src/properties.cpp:1296 +msgid "The name of the secondary genre.." +msgstr "" + +#: src/properties.cpp:1297 +#, fuzzy +msgid "Selection Time" +msgstr "Lá»±a chá»n" + +#: src/properties.cpp:1297 +msgid "The time value for the start time of the current selection." +msgstr "" + +#: src/properties.cpp:1298 +#, fuzzy +msgid "Selection Duration" +msgstr "Lá»±a chá»n" + +#: src/properties.cpp:1298 +msgid "The duration of the current selection in movie time scale units." +msgstr "" + +#: src/properties.cpp:1299 +#, fuzzy +msgid "Send Duration" +msgstr "Thá»i lượng" + +#: src/properties.cpp:1299 +msgid "" +"Specifies the time needed to send the file in 100-nanosecond units. This " +"value should include the duration of the last packet in the content." +msgstr "" + +#: src/properties.cpp:1302 +msgid "Software used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "Software Version" +msgstr "Phiên bản phần vững" + +#: src/properties.cpp:1303 +#, fuzzy +msgid "The Version of the software used." +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:1304 +#, fuzzy +msgid "Song Writer" +msgstr "Tác giả" + +#: src/properties.cpp:1304 +msgid "The name of the song writer." +msgstr "" + +#: src/properties.cpp:1305 +msgid "Song Writer Keywords" +msgstr "" + +#: src/properties.cpp:1305 +#, fuzzy +msgid "Song Writer Keywords." +msgstr "Từ khóa." + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits" +msgstr "Nguồn" + +#: src/properties.cpp:1307 +#, fuzzy +msgid "Source Credits." +msgstr "Nguồn." + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form" +msgstr "Nguồn" + +#: src/properties.cpp:1308 +#, fuzzy +msgid "Source Form." +msgstr "Nguồn." + +#: src/properties.cpp:1309 +#, fuzzy +msgid "Source Image Height" +msgstr "Chiá»u cao hình ảnh" + +#: src/properties.cpp:1310 +#, fuzzy +msgid "Source Image Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/properties.cpp:1310 src/properties.cpp:1385 +msgid "Video width in pixels" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring" +msgstr "" + +#: src/properties.cpp:1311 +msgid "Starring, name of famous people appearing in the video." +msgstr "" + +#: src/properties.cpp:1312 +msgid "Start Timecode" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics" +msgstr "" + +#: src/properties.cpp:1313 +msgid "Statistics." +msgstr "" + +#: src/properties.cpp:1314 +#, fuzzy +msgid "Stream Count" +msgstr "Số byte mảnh" + +#: src/properties.cpp:1314 +msgid "Total Number Of Streams" +msgstr "" + +#: src/properties.cpp:1315 +#, fuzzy +msgid "Stream Name" +msgstr "Tên phim" + +#: src/properties.cpp:1315 +msgid "Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100" +msgstr "" + +#: src/properties.cpp:1316 +#, fuzzy +msgid "Stream Quality" +msgstr "Chất lượng Hình ảnh" + +#: src/properties.cpp:1316 +msgid "General Stream Quality" +msgstr "" + +#: src/properties.cpp:1317 +#, fuzzy +msgid "Stream Sample Rate" +msgstr "Tỉ lệ mẫu âm thanh" + +#: src/properties.cpp:1318 +#, fuzzy +msgid "Stream Sample Count" +msgstr "Số byte mảnh" + +#: src/properties.cpp:1319 +msgid "Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1319 +msgid "General Stream Sample Size" +msgstr "" + +#: src/properties.cpp:1320 +#, fuzzy +msgid "Stream Type" +msgstr "Kiểu Ca-me-ra" + +#: src/properties.cpp:1320 +msgid "Describes the Stream Type. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles Codec" +msgstr "" + +#: src/properties.cpp:1321 +msgid "Subtitles stream codec, for general purpose" +msgstr "" + +#: src/properties.cpp:1322 +msgid "Subtitle Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1322 +msgid "" +"Contains information the Subtitles codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1323 +#, fuzzy +msgid "Subtitles Codec Information" +msgstr "Hình ảnh và thông tin" + +#: src/properties.cpp:1323 +msgid "Contains additional information about subtitles." +msgstr "" + +#: src/properties.cpp:1324 +msgid "Subtitle Codec Download URL" +msgstr "" + +#: src/properties.cpp:1324 +msgid "Video Subtitle Codec Download URL." +msgstr "" + +#: src/properties.cpp:1325 +#, fuzzy +msgid "Subtitle Codec Settings" +msgstr "Tùy chỉnh chế độ đèn chá»›p" + +#: src/properties.cpp:1326 +msgid "Subtitle Track Default On" +msgstr "" + +#: src/properties.cpp:1326 +msgid "Subtitles Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Subtitle Track Enabled" +msgstr "" + +#: src/properties.cpp:1327 +msgid "Status of Subtitles Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1328 +#, fuzzy +msgid "Subtitle" +msgstr "Tá»±a Ä‘á»" + +#: src/properties.cpp:1328 +msgid "Subtitle of the video." +msgstr "" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords" +msgstr "Từ khóa" + +#: src/properties.cpp:1329 +#, fuzzy +msgid "Subtitle Keywords." +msgstr "Từ khóa." + +#: src/properties.cpp:1330 +#, fuzzy +msgid "Subtitles Language" +msgstr "Ngôn ngữ" + +#: src/properties.cpp:1330 +msgid "The Language in which the subtitles is recorded in." +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitle Track Forced" +msgstr "" + +#: src/properties.cpp:1331 +msgid "Subtitles Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitle Track Lacing" +msgstr "" + +#: src/properties.cpp:1332 +msgid "Subtitles Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1333 +#, fuzzy +msgid "Subject. " +msgstr "Vật thể" + +#: src/properties.cpp:1334 +#, fuzzy +msgid "TapeName." +msgstr "Tên" + +#: src/properties.cpp:1335 +#, fuzzy +msgid "Tag Default Setting" +msgstr "Các cài đặt mặc định" + +#: src/properties.cpp:1335 +msgid "If Tag is Default enabled, this value is Yes, else No " +msgstr "" + +#: src/properties.cpp:1336 +#, fuzzy +msgid "Tag Language" +msgstr "Ngôn ngữ" + +#: src/properties.cpp:1336 +msgid "Language that has been used to define tags" +msgstr "" + +#: src/properties.cpp:1337 +#, fuzzy +msgid "Tag Name" +msgstr "Tên" + +#: src/properties.cpp:1337 +msgid "Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1338 +msgid "Tag String" +msgstr "" + +#: src/properties.cpp:1338 +msgid "Information contained in a Tags" +msgstr "" + +#: src/properties.cpp:1339 +#, fuzzy +msgid "Target Type" +msgstr "Kiểu hình ảnh" + +#: src/properties.cpp:1339 +msgid "" +"A string describing the logical level of the object the Tag is referring to." +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician" +msgstr "" + +#: src/properties.cpp:1340 +msgid "Technician, in most cases name of person." +msgstr "" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Thumbnail Height" +msgstr "Hình ảnh thu nhá»" + +#: src/properties.cpp:1341 +#, fuzzy +msgid "Preview Image Thumbnail Height." +msgstr "Äá»™ dài ảnh xem trước" + +#: src/properties.cpp:1342 +#, fuzzy +msgid "Preview Image Thumbnail Length." +msgstr "Äá»™ dài ảnh xem trước" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Thumbnail Width" +msgstr "Ảnh thu nhá»" + +#: src/properties.cpp:1343 +#, fuzzy +msgid "Preview Image Thumbnail Width." +msgstr "Kiểm tra ảnh xem trước" + +#: src/properties.cpp:1344 +#, fuzzy +msgid "Timecode Scale" +msgstr "Thá»i gian gá»­i" + +#: src/properties.cpp:1344 +msgid "" +"Multiplying factor which is helpful in calculation of a particular timecode" +msgstr "" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +#, fuzzy +msgid "Time Offset" +msgstr "Thá»i gian gá»­i" + +#: src/properties.cpp:1345 src/properties.cpp:1428 +msgid "" +"Specifies the presentation time offset of the stream in 100-nanosecond " +"units. This value shall be equal to the send time of the first interleaved " +"packet in the data section." +msgstr "" + +#: src/properties.cpp:1346 +#, fuzzy +msgid "Time Scale" +msgstr "Thá»i gian gá»­i" + +#: src/properties.cpp:1346 +msgid "" +"A time value that indicates the time scale for this movie-that is, the " +"number of time units thatpass per second in its time coordinate system. A " +"time coordinate system that measures timein sixtieths of a second, for " +"example, has a time scale of 60." +msgstr "" + +#: src/properties.cpp:1349 +msgid "" +"Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two " +"Towers', however, Tags could be used to define several titles for a segment." +msgstr "" + +#: src/properties.cpp:1350 +msgid "Toning Effect Settings Applied." +msgstr "" + +#: src/properties.cpp:1351 +msgid "Total Frame Count" +msgstr "" + +#: src/properties.cpp:1352 +#, fuzzy +msgid "Number Of Streams" +msgstr "Số trang" + +#: src/properties.cpp:1352 +msgid "" +"Total number of streams present in a video. Eg - Video, Audio or Subtitles" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Track" +msgstr "" + +#: src/properties.cpp:1353 +msgid "Information about the Track." +msgstr "" + +#: src/properties.cpp:1354 +#, fuzzy +msgid "Video Track Create Date" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1354 src/properties.cpp:1429 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was created." +msgstr "" + +#: src/properties.cpp:1355 +#, fuzzy +msgid "Video Track Duration" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1355 src/properties.cpp:1430 +msgid "" +"A time value that indicates the duration of this track (in the movie's time " +"coordinate system)." +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced" +msgstr "" + +#: src/properties.cpp:1356 +msgid "Video Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "Track ID" +msgstr "" + +#: src/properties.cpp:1357 src/properties.cpp:1432 +msgid "" +"A 32-bit integer that uniquely identifies the track. The value 0 cannot be " +"used." +msgstr "" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +#, fuzzy +msgid "Track Header Version" +msgstr "Phiên bản phần vững" + +#: src/properties.cpp:1358 src/properties.cpp:1433 +msgid "A 1-byte specification of the version of this track header" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing" +msgstr "" + +#: src/properties.cpp:1359 +msgid "Video Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +#, fuzzy +msgid "Track Language" +msgstr "Ngôn ngữ" + +#: src/properties.cpp:1360 src/properties.cpp:1435 +msgid "The Language in which a particular stream is recorded in." +msgstr "" + +#: src/properties.cpp:1361 +#, fuzzy +msgid "Video Track Layer" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1361 src/properties.cpp:1436 +msgid "" +"A 16-bit integer that indicates this track's spatial priority in its movie. " +"The QuickTime MovieToolbox uses this value to determine how tracks overlay " +"one another. Tracks with lower layervalues are displayed in front of tracks " +"with higher layer values." +msgstr "" + +#: src/properties.cpp:1364 +#, fuzzy +msgid "Video Track Modify Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:1364 src/properties.cpp:1439 +msgid "" +"A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) " +"when the track header was last modified." +msgstr "" + +#: src/properties.cpp:1365 +#, fuzzy +msgid "Track Name" +msgstr "Tên chá»§ sở hữu" + +#: src/properties.cpp:1365 +msgid "Track Name could be used to define titles for a segment." +msgstr "" + +#: src/properties.cpp:1366 +#, fuzzy +msgid "Track Number." +msgstr "Số Khung hình" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "Track Volume" +msgstr "" + +#: src/properties.cpp:1367 src/properties.cpp:1440 +msgid "" +"A 16-bit fixed-point number that specifies how loud to play this track's " +"sound. A value of 1.0 indicates full volume." +msgstr "" + +#: src/properties.cpp:1368 +msgid "Chapter Translate Codec" +msgstr "" + +#: src/properties.cpp:1368 +msgid "" +"Chapter Translate Codec information. Usually used in Matroska file type." +msgstr "" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +#, fuzzy +msgid "Unknown Information" +msgstr "Thông tin ảnh ch" + +#: src/properties.cpp:1369 src/properties.cpp:1370 +msgid "Unknown / Unregistered Metadata Tags and their values." +msgstr "" + +#: src/properties.cpp:1371 +msgid "Video URL" +msgstr "" + +#: src/properties.cpp:1371 src/properties.cpp:1441 +msgid "" +"A C string that specifies a URL. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1372 +msgid "Video URN" +msgstr "" + +#: src/properties.cpp:1372 src/properties.cpp:1442 +msgid "" +"A C string that specifies a URN. There may be additional data after the C " +"string." +msgstr "" + +#: src/properties.cpp:1373 +#, fuzzy +msgid "Vari Program" +msgstr "Chương trình" + +#: src/properties.cpp:1373 +msgid "Software settings used to generate / create Video data." +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major" +msgstr "" + +#: src/properties.cpp:1374 +msgid "Vegas Version Major." +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor" +msgstr "" + +#: src/properties.cpp:1375 +msgid "Vegas Version Minor." +msgstr "" + +#: src/properties.cpp:1376 +msgid "Vendor" +msgstr "" + +#: src/properties.cpp:1376 +msgid "The developer of the compressor that generated the compressed data." +msgstr "" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +#, fuzzy +msgid "Vendor ID" +msgstr "Thông tin cảm biến" + +#: src/properties.cpp:1377 src/properties.cpp:1443 +msgid "" +"A 32-bit integer that specifies the developer of the compressor that " +"generated the compressed data. Often this field contains 'appl' to indicate " +"Apple Computer, Inc." +msgstr "" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Quality" +msgstr "Chất lượng" + +#: src/properties.cpp:1378 +#, fuzzy +msgid "Video Stream Quality" +msgstr "Tỉ lệ khung hình phim" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Sample Size" +msgstr "Kích cỡ khung hình phim" + +#: src/properties.cpp:1379 +#, fuzzy +msgid "Video Stream Sample Size" +msgstr "Kích cỡ khung hình phim" + +#: src/properties.cpp:1380 +#, fuzzy +msgid "Video Scan Type" +msgstr "Kiểu mẫu âm thanh" + +#: src/properties.cpp:1380 +msgid "Video Scan Type, it can be Progressive or Interlaced" +msgstr "" + +#: src/properties.cpp:1381 +msgid "Watermark URL" +msgstr "" + +#: src/properties.cpp:1381 +msgid "A C string that specifies a Watermark URL." +msgstr "" + +#: src/properties.cpp:1384 +#, fuzzy +msgid "White Balance Fine Tune." +msgstr "Bảng cân bằng trắng" + +#: src/properties.cpp:1385 +#, fuzzy +msgid "Video Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/properties.cpp:1386 +#, fuzzy +msgid "Window Location" +msgstr "Äịa Ä‘iểm quay" + +#: src/properties.cpp:1386 +msgid "Information about the Window Location." +msgstr "" + +#: src/properties.cpp:1388 +#, fuzzy +msgid "Written By" +msgstr "Tác giả" + +#: src/properties.cpp:1388 +msgid "Written By, i.e. name of person or organization." +msgstr "" + +#: src/properties.cpp:1389 +#, fuzzy +msgid "Writing App" +msgstr "Viết bài duyệt trước" + +#: src/properties.cpp:1389 +msgid "" +"Contains the name of the application used to create the file (like " +"\"mkvmerge 0.8.1\")" +msgstr "" + +#: src/properties.cpp:1390 +msgid "Horizontal resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1391 src/properties.cpp:1667 +msgid "Year" +msgstr "" + +#: src/properties.cpp:1391 +#, fuzzy +msgid "Year in which the video was made." +msgstr "Ngày và giá» phim được quay" + +#: src/properties.cpp:1392 +msgid "Vertical resolution in pixels per unit." +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second" +msgstr "" + +#: src/properties.cpp:1397 +msgid "Average Bytes Per Second found in audio stream" +msgstr "" + +#: src/properties.cpp:1398 +#, fuzzy +msgid "Balance" +msgstr "Cân bằng Ä‘á»" + +#: src/properties.cpp:1398 +msgid "Indicates the left-right balance of the audio" +msgstr "" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits Per Sample/ Bit Rate" +msgstr "Bit trên mẫu" + +#: src/properties.cpp:1399 +#, fuzzy +msgid "Bits per test sample" +msgstr "Bit trên mẫu" + +#: src/properties.cpp:1401 +#, fuzzy +msgid "Audio Codec" +msgstr "Bá»™ nén âm thanh" + +#: src/properties.cpp:1401 +msgid "Codec used for Audio Encoding/Decoding" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Audio Codec Decode Info" +msgstr "" + +#: src/properties.cpp:1402 +msgid "Contains information the audio codec decode all, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1403 +#, fuzzy +msgid "Audio Codec Description" +msgstr "Miêu tả hình ảnh" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL" +msgstr "" + +#: src/properties.cpp:1404 +msgid "Audio Codec Download URL." +msgstr "" + +#: src/properties.cpp:1405 +#, fuzzy +msgid "Audio Codec Information" +msgstr "Thông tin cụ thể nhà cung cấp" + +#: src/properties.cpp:1405 +msgid "" +"Contains information the codec needs before decoding can be started. An " +"example is the Vorbis initialization packets for Vorbis audio." +msgstr "" + +#: src/properties.cpp:1406 +#, fuzzy +msgid "Audio Codec Settings" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/properties.cpp:1408 +#, fuzzy +msgid "Audio Default Duration" +msgstr "Äá»™ bão hòa tùy chỉnh" + +#: src/properties.cpp:1408 +msgid "The number of micro seconds an audio chunk plays." +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Default Stream" +msgstr "" + +#: src/properties.cpp:1409 +msgid "Audio Stream that would be played by default." +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On" +msgstr "" + +#: src/properties.cpp:1410 +msgid "Audio Track Default On , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Audio Track Enabled" +msgstr "" + +#: src/properties.cpp:1411 +msgid "Status of Audio Track, i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1412 +#, fuzzy +msgid "Audio Format" +msgstr "Äịnh dạng tập tin" + +#: src/properties.cpp:1412 +msgid "A four-character code that identifies the format of the audio." +msgstr "" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "Output Audio Sample Rate" +msgstr "Tỉ lệ mẫu âm thanh" + +#: src/properties.cpp:1423 +#, fuzzy +msgid "" +"The output audio sample rate. Can be any value, but commonly 32000, 41100, " +"or 48000." +msgstr "" +"Tỉ lệ mẫu âm thanh. Có thể là giá trị bất kì, thưá»ng là 32000, 41100, hay " +"48000." + +#: src/properties.cpp:1424 +#, fuzzy +msgid "Audio Sample Count" +msgstr "Tỉ lệ mẫu âm thanh" + +#: src/properties.cpp:1424 +msgid "Sample taken for Analyzing Audio Stream" +msgstr "" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title" +msgstr "tìm thấy trong tập tin" + +#: src/properties.cpp:1427 +#, fuzzy +msgid "Sound Scheme Title." +msgstr "tìm thấy trong tập tin" + +#: src/properties.cpp:1429 +#, fuzzy +msgid "Audio Track Create Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:1430 +msgid "Audio Track Duration" +msgstr "" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced" +msgstr "" + +#: src/properties.cpp:1431 +msgid "Audio Track Forced , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing" +msgstr "" + +#: src/properties.cpp:1434 +msgid "Audio Track Lacing , i.e. Enabled/Disabled" +msgstr "" + +#: src/properties.cpp:1436 +msgid "Audio Track Layer" +msgstr "" + +#: src/properties.cpp:1439 +#, fuzzy +msgid "Audio Track Modify Date" +msgstr "Ngày Ä‘iá»u chỉnh" + +#: src/properties.cpp:1441 +msgid "Audio URL" +msgstr "" + +#: src/properties.cpp:1442 +msgid "Audio URN" +msgstr "" + +#: src/properties.cpp:1449 +#, fuzzy +msgid "The nature or genre of the resource." +msgstr "Nhà sản xuất cá»§a các thiết bị thu" + +#: src/properties.cpp:1450 +#, fuzzy +msgid "Date Modified" +msgstr "Ngày và Giá»" + +#: src/properties.cpp:1450 +msgid "Date on which the resource was changed." +msgstr "" + +#: src/properties.cpp:1451 +msgid "A language of the resource." +msgstr "" + +#: src/properties.cpp:1452 +msgid "License" +msgstr "" + +#: src/properties.cpp:1452 +msgid "" +"A legal document giving official permission to do something with the " +"resource." +msgstr "" + +#: src/properties.cpp:1453 +#, fuzzy +msgid "Rights Holder" +msgstr "Vùng bên phải" + +#: src/properties.cpp:1453 +msgid "A person or organization owning or managing rights over the resource." +msgstr "" + +#: src/properties.cpp:1454 +#, fuzzy +msgid "Access Rights" +msgstr "Quyá»n lợi" + +#: src/properties.cpp:1454 +msgid "" +"Information about who can access the resource or an indication of its " +"security status." +msgstr "" + +#: src/properties.cpp:1455 +msgid "Bibliographic Citation" +msgstr "" + +#: src/properties.cpp:1455 +msgid "A bibliographic reference for the resource." +msgstr "" + +#: src/properties.cpp:1456 +#, fuzzy +msgid "References" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:1456 +msgid "" +"A related resource that is referenced, cited, or otherwise pointed to by the " +"described resource." +msgstr "" + +#: src/properties.cpp:1459 +msgid "*Main structure* containing Darwin Core location based information." +msgstr "" + +#: src/properties.cpp:1468 +msgid "Record" +msgstr "" + +#: src/properties.cpp:1469 +msgid "*Main structure* containing record based information." +msgstr "" + +#: src/properties.cpp:1472 +#, fuzzy +msgid "Institution ID" +msgstr "Hướng dẫn" + +#: src/properties.cpp:1473 +msgid "" +"An identifier for the institution having custody of the object(s) or " +"information referred to in the record." +msgstr "" + +#: src/properties.cpp:1475 +#, fuzzy +msgid "Collection ID" +msgstr "Lá»±a chá»n" + +#: src/properties.cpp:1476 +msgid "" +"An identifier for the collection or dataset from which the record was " +"derived. For physical specimens, the recommended best practice is to use the " +"identifier in a collections registry such as the Biodiversity Collections " +"Index (http://www.biodiversitycollectionsindex.org/)." +msgstr "" + +#: src/properties.cpp:1478 +#, fuzzy +msgid "Institution Code" +msgstr "Hướng dẫn" + +#: src/properties.cpp:1479 +msgid "" +"The name (or acronym) in use by the institution having custody of the object" +"(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1481 +msgid "Dataset ID" +msgstr "" + +#: src/properties.cpp:1482 +msgid "" +"An identifier for the set of data. May be a global unique identifier or an " +"identifier specific to a collection or institution." +msgstr "" + +#: src/properties.cpp:1484 +#, fuzzy +msgid "Collection Code" +msgstr "Mã vị trí" + +#: src/properties.cpp:1485 +msgid "" +"The name, acronym, coden, or initialism identifying the collection or data " +"set from which the record was derived." +msgstr "" + +#: src/properties.cpp:1487 +#, fuzzy +msgid "Dataset Name" +msgstr "Tên tài liệu" + +#: src/properties.cpp:1488 +#, fuzzy +msgid "The name identifying the data set from which the record was derived." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:1490 +msgid "Owner Institution Code" +msgstr "" + +#: src/properties.cpp:1491 +msgid "" +"The name (or acronym) in use by the institution having ownership of the " +"object(s) or information referred to in the record." +msgstr "" + +#: src/properties.cpp:1493 +msgid "Basis Of Record" +msgstr "" + +#: src/properties.cpp:1494 +msgid "" +"The specific nature of the data record - a subtype of the type. Recommended " +"best practice is to use a controlled vocabulary such as the Darwin Core Type " +"Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm)." +msgstr "" + +#: src/properties.cpp:1496 +msgid "Information Withheld" +msgstr "" + +#: src/properties.cpp:1497 +msgid "" +"Additional information that exists, but that has not been shared in the " +"given record." +msgstr "" + +#: src/properties.cpp:1499 +msgid "Data Generalizations" +msgstr "" + +#: src/properties.cpp:1500 +msgid "" +"Actions taken to make the shared data less specific or complete than in its " +"original form. Suggests that alternative data of higher quality may be " +"available on request." +msgstr "" + +#: src/properties.cpp:1502 +#, fuzzy +msgid "Dynamic Properties" +msgstr "Sặc sỡ (màu sắc)" + +#: src/properties.cpp:1503 +msgid "" +"A list (concatenated and separated) of additional measurements, facts, " +"characteristics, or assertions about the record. Meant to provide a " +"mechanism for structured content such as key-value pairs." +msgstr "" + +#: src/properties.cpp:1507 +msgid "Occurrence" +msgstr "" + +#: src/properties.cpp:1508 +msgid "*Main structure* containing occurrence based information." +msgstr "" + +#: src/properties.cpp:1511 +msgid "Occurrence ID" +msgstr "" + +#: src/properties.cpp:1512 +msgid "" +"An identifier for the Occurrence (as opposed to a particular digital record " +"of the occurrence). In the absence of a persistent global unique identifier, " +"construct one from a combination of identifiers in the record that will most " +"closely make the occurrenceID globally unique." +msgstr "" + +#: src/properties.cpp:1514 +#, fuzzy +msgid "Catalog Number" +msgstr "Số hình ảnh Cuối cùng" + +#: src/properties.cpp:1515 +msgid "" +"An identifier (preferably unique) for the record within the data set or " +"collection." +msgstr "" + +#: src/properties.cpp:1517 +msgid "Occurrence Details" +msgstr "" + +#: src/properties.cpp:1518 +msgid "Depreciated. Details about the Occurrence." +msgstr "" + +#: src/properties.cpp:1520 +msgid "Occurrence Remarks" +msgstr "" + +#: src/properties.cpp:1521 +msgid "Comments or notes about the Occurrence." +msgstr "" + +#: src/properties.cpp:1523 +#, fuzzy +msgid "Record Number" +msgstr "Số Thứ tá»±" + +#: src/properties.cpp:1524 +msgid "" +"An identifier given to the Occurrence at the time it was recorded. Often " +"serves as a link between field notes and an Occurrence record, such as a " +"specimen collector's number." +msgstr "" + +#: src/properties.cpp:1526 +msgid "Recorded By" +msgstr "" + +#: src/properties.cpp:1527 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations responsible for recording the original Occurrence. The primary " +"collector or observer, especially one who applies a personal identifier " +"(recordNumber), should be listed first." +msgstr "" + +#: src/properties.cpp:1529 +msgid "Individual ID" +msgstr "" + +#: src/properties.cpp:1530 +msgid "" +"Depreciated. An identifier for an individual or named group of individual " +"organisms represented in the Occurrence. Meant to accommodate resampling of " +"the same individual or group for monitoring purposes. May be a global unique " +"identifier or an identifier specific to a data set." +msgstr "" + +#: src/properties.cpp:1532 +msgid "Individual Count" +msgstr "" + +#: src/properties.cpp:1533 +msgid "" +"The number of individuals represented present at the time of the Occurrence." +msgstr "" + +#: src/properties.cpp:1535 +msgid "Organism Quantity" +msgstr "" + +#: src/properties.cpp:1536 +msgid "A number or enumeration value for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1538 +msgid "Organism Quantity Type" +msgstr "" + +#: src/properties.cpp:1539 +msgid "The type of quantification system used for the quantity of organisms." +msgstr "" + +#: src/properties.cpp:1541 +msgid "Sex" +msgstr "" + +#: src/properties.cpp:1542 +msgid "" +"The sex of the biological individual(s) represented in the Occurrence. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1544 +msgid "Life Stage" +msgstr "" + +#: src/properties.cpp:1545 +msgid "" +"The age class or life stage of the biological individual(s) at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1547 +#, fuzzy +msgid "Reproductive Condition" +msgstr "Äiá»u khiển Từ xa" + +#: src/properties.cpp:1548 +msgid "" +"The reproductive condition of the biological individual(s) represented in " +"the Occurrence. Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1550 +msgid "Behavior" +msgstr "" + +#: src/properties.cpp:1551 +msgid "" +"A description of the behavior shown by the subject at the time the " +"Occurrence was recorded. Recommended best practice is to use a controlled " +"vocabulary." +msgstr "" + +#: src/properties.cpp:1553 +msgid "Establishment Means" +msgstr "" + +#: src/properties.cpp:1554 +msgid "" +"The process by which the biological individual(s) represented in the " +"Occurrence became established at the location. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1556 +msgid "Occurrence Status" +msgstr "" + +#: src/properties.cpp:1557 +msgid "" +"A statement about the presence or absence of a Taxon at a Location. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1559 +#, fuzzy +msgid "Preparations" +msgstr "Thá»i lượng" + +#: src/properties.cpp:1560 +msgid "" +"A list (concatenated and separated) of preparations and preservation methods " +"for a specimen." +msgstr "" + +#: src/properties.cpp:1562 +#, fuzzy +msgid "Disposition" +msgstr "Vị trí lấy nét" + +#: src/properties.cpp:1563 +msgid "" +"The current state of a specimen with respect to the collection identified in " +"collectionCode or collectionID. Recommended best practice is to use a " +"controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1565 +#, fuzzy +msgid "Other Catalog Numbers" +msgstr "Chuá»—i số" + +#: src/properties.cpp:1566 +msgid "" +"A list (concatenated and separated) of previous or alternate fully qualified " +"catalog numbers or other human-used identifiers for the same Occurrence, " +"whether in the current or any other data set or collection." +msgstr "" + +#: src/properties.cpp:1568 src/properties.cpp:1607 +#, fuzzy +msgid "Previous Identifications" +msgstr "Nhận diện mẫu máy ảnh Pentax" + +#: src/properties.cpp:1569 +msgid "" +"Depreciated. A list (concatenated and separated) of previous assignments of " +"names to the Occurrence." +msgstr "" + +#: src/properties.cpp:1571 +msgid "Associated Media" +msgstr "" + +#: src/properties.cpp:1572 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of media associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1574 +#, fuzzy +msgid "Associated References" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:1575 +msgid "" +"A list (concatenated and separated) of identifiers (publication, " +"bibliographic reference, global unique identifier, URI) of literature " +"associated with the Occurrence." +msgstr "" + +#: src/properties.cpp:1577 +msgid "Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1578 +msgid "" +"Depreciated. A list (concatenated and separated) of identifiers of other " +"Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1580 +msgid "Associated Sequences" +msgstr "" + +#: src/properties.cpp:1581 +msgid "" +"A list (concatenated and separated) of identifiers (publication, global " +"unique identifier, URI) of genetic sequence information associated with the " +"Occurrence." +msgstr "" + +#: src/properties.cpp:1583 +msgid "Associated Taxa" +msgstr "" + +#: src/properties.cpp:1584 +msgid "" +"A list (concatenated and separated) of identifiers or names of taxa and " +"their associations with the Occurrence." +msgstr "" + +#: src/properties.cpp:1588 +msgid "Organism" +msgstr "" + +#: src/properties.cpp:1589 +msgid "*Main structure* containing organism based information." +msgstr "" + +#: src/properties.cpp:1592 +msgid "Organism ID" +msgstr "" + +#: src/properties.cpp:1593 +msgid "" +"An identifier for the Organism instance (as opposed to a particular digital " +"record of the Organism). May be a globally unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1595 +#, fuzzy +msgid "Organism Name" +msgstr "Tên chá»§ sở hữu" + +#: src/properties.cpp:1596 +msgid "A textual name or label assigned to an Organism instance." +msgstr "" + +#: src/properties.cpp:1598 +msgid "Organism Scope" +msgstr "" + +#: src/properties.cpp:1599 +msgid "" +"A description of the kind of Organism instance. Can be used to indicate " +"whether the Organism instance represents a discrete organism or if it " +"represents a particular type of aggregation. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1601 +msgid "Organism Associated Occurrences" +msgstr "" + +#: src/properties.cpp:1602 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ') of identifiers " +"of other Occurrence records and their associations to this Occurrence." +msgstr "" + +#: src/properties.cpp:1604 +msgid "Associated Organisms" +msgstr "" + +#: src/properties.cpp:1605 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of " +"identifiers of other Organisms and their associations to this Organism." +msgstr "" + +#: src/properties.cpp:1608 +msgid "" +"A list (concatenated and separated with a vertical bar ' | ' ) of previous " +"assignments of names to the Organism." +msgstr "" + +#: src/properties.cpp:1610 +msgid "Organism Remarks" +msgstr "" + +#: src/properties.cpp:1611 +msgid "Comments or notes about the Organism instance." +msgstr "" + +#: src/properties.cpp:1615 +#, fuzzy +msgid "Material Sample" +msgstr "Bit trên mẫu" + +#: src/properties.cpp:1616 +msgid "*Main structure* containing material sample based information." +msgstr "" + +#: src/properties.cpp:1618 +#, fuzzy +msgid "Living Specimen" +msgstr "Viết bài duyệt trước" + +#: src/properties.cpp:1619 +msgid "" +"*Main structure* containing living specimen based information. A specimen " +"that is alive." +msgstr "" + +#: src/properties.cpp:1621 +msgid "Preserved Specimen" +msgstr "" + +#: src/properties.cpp:1622 +msgid "" +"*Main structure* containing preserved specimen based information. A specimen " +"that has been preserved." +msgstr "" + +#: src/properties.cpp:1624 +msgid "Fossil Specimen" +msgstr "" + +#: src/properties.cpp:1625 +msgid "" +"*Main structure* containing fossil specimen based information. A preserved " +"specimen that is a fossil." +msgstr "" + +#: src/properties.cpp:1628 +#, fuzzy +msgid "Material Sample ID" +msgstr "Bit trên mẫu" + +#: src/properties.cpp:1629 +msgid "" +"An identifier for the MaterialSample (as opposed to a particular digital " +"record of the material sample). In the absence of a persistent global unique " +"identifier, construct one from a combination of identifiers in the record " +"that will most closely make the materialSampleID globally unique." +msgstr "" + +#: src/properties.cpp:1634 +msgid "*Main structure* containing event based information." +msgstr "" + +#: src/properties.cpp:1636 +msgid "Human Observation" +msgstr "" + +#: src/properties.cpp:1637 +msgid "*Main structure* containing human observation based information." +msgstr "" + +#: src/properties.cpp:1639 +msgid "Machine Observation" +msgstr "" + +#: src/properties.cpp:1640 +msgid "*Main structure* containing machine observation based information." +msgstr "" + +#: src/properties.cpp:1643 +#, fuzzy +msgid "Event ID" +msgstr "Sá»± kiện" + +#: src/properties.cpp:1644 +msgid "" +"An identifier for the set of information associated with an Event (something " +"that occurs at a place and time). May be a global unique identifier or an " +"identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1646 +msgid "Parent Event ID" +msgstr "" + +#: src/properties.cpp:1647 +msgid "" +"An identifier for the broader Event that groups this and potentially other " +"Events." +msgstr "" + +#: src/properties.cpp:1649 +#, fuzzy +msgid "Event Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:1650 +msgid "" +"The date-time or interval during which an Event occurred. For occurrences, " +"this is the date-time when the event was recorded. Not suitable for a time " +"in a geological context. Recommended best practice is to use an encoding " +"scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1652 +msgid "Event Earliest Date" +msgstr "" + +#: src/properties.cpp:1653 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event started. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1655 +#, fuzzy +msgid "Event Latest Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:1656 +msgid "" +"Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which " +"an Event ended. For occurrences, this is the date-time when the event was " +"recorded. Not suitable for a time in a geological context. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1658 +#, fuzzy +msgid "Event Time" +msgstr "Thá»i gian mở" + +#: src/properties.cpp:1659 +msgid "" +"The time or interval during which an Event occurred. Recommended best " +"practice is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1661 +msgid "Start Day Of Year" +msgstr "" + +#: src/properties.cpp:1662 +msgid "" +"The earliest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1664 +msgid "End Day Of Year" +msgstr "" + +#: src/properties.cpp:1665 +msgid "" +"The latest ordinal day of the year on which the Event occurred (1 for " +"January 1, 365 for December 31, except in a leap year, in which case it is " +"366)." +msgstr "" + +#: src/properties.cpp:1668 +msgid "" +"The four-digit year in which the Event occurred, according to the Common Era " +"Calendar." +msgstr "" + +#: src/properties.cpp:1670 +#, fuzzy +msgid "Month" +msgstr "Tháng" + +#: src/properties.cpp:1671 +msgid "The ordinal month in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1673 +#, fuzzy +msgid "Day" +msgstr "Ngày" + +#: src/properties.cpp:1674 +msgid "The integer day of the month on which the Event occurred." +msgstr "" + +#: src/properties.cpp:1676 +#, fuzzy +msgid "Verbatim Event Date" +msgstr "Ngày tạo" + +#: src/properties.cpp:1677 +msgid "" +"The verbatim original representation of the date and time information for an " +"Event." +msgstr "" + +#: src/properties.cpp:1679 +msgid "Habitat" +msgstr "" + +#: src/properties.cpp:1680 +msgid "A category or description of the habitat in which the Event occurred." +msgstr "" + +#: src/properties.cpp:1682 +msgid "Sampling Protocol" +msgstr "" + +#: src/properties.cpp:1683 +msgid "" +"The name of, reference to, or description of the method or protocol used " +"during an Event." +msgstr "" + +#: src/properties.cpp:1685 +msgid "Sampling Effort" +msgstr "" + +#: src/properties.cpp:1686 +msgid "The amount of effort expended during an Event." +msgstr "" + +#: src/properties.cpp:1688 +msgid "Sampling Size Value" +msgstr "" + +#: src/properties.cpp:1689 +msgid "" +"A numeric value for a measurement of the size (time duration, length, area, " +"or volume) of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1691 +msgid "Sampling Size Unit" +msgstr "" + +#: src/properties.cpp:1692 +msgid "" +"The unit of measurement of the size (time duration, length, area, or volume) " +"of a sample in a sampling event." +msgstr "" + +#: src/properties.cpp:1694 +#, fuzzy +msgid "Field Number" +msgstr "Tập tin số" + +#: src/properties.cpp:1695 +msgid "" +"An identifier given to the event in the field. Often serves as a link " +"between field notes and the Event." +msgstr "" + +#: src/properties.cpp:1697 +msgid "Field Notes" +msgstr "" + +#: src/properties.cpp:1698 +msgid "" +"One of (a) an indicator of the existence of, (b) a reference to " +"(publication, URI), or (c) the text of notes taken in the field about the " +"Event." +msgstr "" + +#: src/properties.cpp:1700 +msgid "Event Remarks" +msgstr "" + +#: src/properties.cpp:1701 +msgid "Comments or notes about the Event." +msgstr "" + +#: src/properties.cpp:1705 +#, fuzzy +msgid "Location Class" +msgstr "Mã vị trí" + +#: src/properties.cpp:1706 +msgid "" +"Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing " +"location based information." +msgstr "" + +#: src/properties.cpp:1709 +#, fuzzy +msgid "Location ID" +msgstr "Vị trí" + +#: src/properties.cpp:1710 +msgid "" +"An identifier for the set of location information (data associated with " +"Location). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1712 +msgid "Higher Geography ID" +msgstr "" + +#: src/properties.cpp:1713 +msgid "" +"An identifier for the geographic region within which the Location occurred. " +"Recommended best practice is to use an persistent identifier from a " +"controlled vocabulary such as the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1715 +msgid "Higher Geography" +msgstr "" + +#: src/properties.cpp:1716 +msgid "" +"A list (concatenated and separated) of geographic names less specific than " +"the information captured in the locality term." +msgstr "" + +#: src/properties.cpp:1718 +#, fuzzy +msgid "Continent" +msgstr "Liên tục" + +#: src/properties.cpp:1719 +msgid "" +"The name of the continent in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names or the ISO 3166 Continent code." +msgstr "" + +#: src/properties.cpp:1721 +msgid "Water Body" +msgstr "" + +#: src/properties.cpp:1722 +msgid "" +"The name of the water body in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1724 +msgid "Island Group" +msgstr "" + +#: src/properties.cpp:1725 +msgid "" +"The name of the island group in which the Location occurs. Recommended best " +"practice is to use a controlled vocabulary such as the Getty Thesaurus of " +"Geographic Names." +msgstr "" + +#: src/properties.cpp:1727 +msgid "Island" +msgstr "" + +#: src/properties.cpp:1728 +msgid "" +"The name of the island on or near which the Location occurs. Recommended " +"best practice is to use a controlled vocabulary such as the Getty Thesaurus " +"of Geographic Names." +msgstr "" + +#: src/properties.cpp:1731 +msgid "" +"The name of the country or major administrative unit in which the Location " +"occurs. Recommended best practice is to use a controlled vocabulary such as " +"the Getty Thesaurus of Geographic Names." +msgstr "" + +#: src/properties.cpp:1734 +msgid "" +"The standard code for the country in which the Location occurs. Recommended " +"best practice is to use ISO 3166-1-alpha-2 country codes." +msgstr "" + +#: src/properties.cpp:1736 +#, fuzzy +msgid "State Province" +msgstr "Bang/Tỉnh" + +#: src/properties.cpp:1737 +msgid "" +"The name of the next smaller administrative region than country (state, " +"province, canton, department, region, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1739 +#, fuzzy +msgid "County" +msgstr "Quốc gia" + +#: src/properties.cpp:1740 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"stateProvince (county, shire, department, etc.) in which the Location occurs." +msgstr "" + +#: src/properties.cpp:1742 +#, fuzzy +msgid "Municipality" +msgstr "Chất lượng" + +#: src/properties.cpp:1743 +msgid "" +"The full, unabbreviated name of the next smaller administrative region than " +"county (city, municipality, etc.) in which the Location occurs. Do not use " +"this term for a nearby named place that does not contain the actual location." +msgstr "" + +#: src/properties.cpp:1745 +#, fuzzy +msgid "Locality" +msgstr "Äịa phương" + +#: src/properties.cpp:1746 +msgid "" +"The specific description of the place. Less specific geographic information " +"can be provided in other geographic terms (higherGeography, continent, " +"country, stateProvince, county, municipality, waterBody, island, " +"islandGroup). This term may contain information modified from the original " +"to correct perceived errors or standardize the description." +msgstr "" + +#: src/properties.cpp:1748 +msgid "Verbatim Locality" +msgstr "" + +#: src/properties.cpp:1749 +msgid "The original textual description of the place." +msgstr "" + +#: src/properties.cpp:1751 +msgid "Verbatim Elevation" +msgstr "" + +#: src/properties.cpp:1752 +msgid "" +"The original description of the elevation (altitude, usually above sea " +"level) of the Location." +msgstr "" + +#: src/properties.cpp:1754 +msgid "Minimum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1755 +msgid "" +"The lower limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1757 +msgid "Maximum Elevation In Meters" +msgstr "" + +#: src/properties.cpp:1758 +msgid "" +"The upper limit of the range of elevation (altitude, usually above sea " +"level), in meters." +msgstr "" + +#: src/properties.cpp:1760 +msgid "Verbatim Depth" +msgstr "" + +#: src/properties.cpp:1761 +msgid "The original description of the depth below the local surface." +msgstr "" + +#: src/properties.cpp:1763 +msgid "Minimum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1764 +msgid "" +"The lesser depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1766 +msgid "Maximum Depth In Meters" +msgstr "" + +#: src/properties.cpp:1767 +msgid "" +"The greater depth of a range of depth below the local surface, in meters." +msgstr "" + +#: src/properties.cpp:1769 +msgid "Minimum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1770 +msgid "" +"The lesser distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1772 +msgid "Maximum Distance Above Surface In Meters" +msgstr "" + +#: src/properties.cpp:1773 +msgid "" +"The greater distance in a range of distance from a reference surface in the " +"vertical direction, in meters. Use positive values for locations above the " +"surface, negative values for locations below. If depth measures are given, " +"the reference surface is the location given by the depth, otherwise the " +"reference surface is the location given by the elevation." +msgstr "" + +#: src/properties.cpp:1775 +#, fuzzy +msgid "Location According To" +msgstr "Mã vị trí" + +#: src/properties.cpp:1776 +msgid "" +"Information about the source of this Location information. Could be a " +"publication (gazetteer), institution, or team of individuals." +msgstr "" + +#: src/properties.cpp:1778 +#, fuzzy +msgid "Location Remarks" +msgstr "Mã vị trí" + +#: src/properties.cpp:1779 +msgid "Comments or notes about the Location." +msgstr "" + +#: src/properties.cpp:1781 +msgid "Verbatim Coordinates" +msgstr "" + +#: src/properties.cpp:1782 +msgid "" +"The verbatim original spatial coordinates of the Location. The coordinate " +"ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these " +"coordinates should be stored in verbatimSRS and the coordinate system should " +"be stored in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1784 +#, fuzzy +msgid "Verbatim Latitude" +msgstr "GPS VÄ© độ" + +#: src/properties.cpp:1785 +msgid "" +"The verbatim original latitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1787 +#, fuzzy +msgid "Verbatim Longitude" +msgstr "GPS Kinh độ" + +#: src/properties.cpp:1788 +msgid "" +"The verbatim original longitude of the Location. The coordinate ellipsoid, " +"geodeticDatum, or full Spatial Reference System (SRS) for these coordinates " +"should be stored in verbatimSRS and the coordinate system should be stored " +"in verbatimCoordinateSystem." +msgstr "" + +#: src/properties.cpp:1790 +msgid "Verbatim Coordinate System" +msgstr "" + +#: src/properties.cpp:1791 +msgid "" +"The spatial coordinate system for the verbatimLatitude and verbatimLongitude " +"or the verbatimCoordinates of the Location. Recommended best practice is to " +"use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1793 +msgid "Verbatim SRS" +msgstr "" + +#: src/properties.cpp:1794 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"coordinates given in verbatimLatitude and verbatimLongitude, or " +"verbatimCoordinates are based. Recommended best practice is use the EPSG " +"code as a controlled vocabulary to provide an SRS, if known. Otherwise use a " +"controlled vocabulary for the name or code of the geodetic datum, if known. " +"Otherwise use a controlled vocabulary for the name or code of the ellipsoid, " +"if known. If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1796 +#, fuzzy +msgid "Decimal Latitude" +msgstr "GPS VÄ© độ" + +#: src/properties.cpp:1797 +msgid "" +"The geographic latitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are north of the Equator, negative values are south of it. " +"Legal values lie between -90 and 90, inclusive." +msgstr "" + +#: src/properties.cpp:1799 +#, fuzzy +msgid "Decimal Longitude" +msgstr "GPS Kinh độ" + +#: src/properties.cpp:1800 +msgid "" +"The geographic longitude (in decimal degrees, using the spatial reference " +"system given in geodeticDatum) of the geographic center of a Location. " +"Positive values are east of the Greenwich Meridian, negative values are west " +"of it. Legal values lie between -180 and 180, inclusive." +msgstr "" + +#: src/properties.cpp:1802 +msgid "Geodetic Datum" +msgstr "" + +#: src/properties.cpp:1803 +msgid "" +"The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which " +"the geographic coordinates given in decimalLatitude and decimalLongitude as " +"based. Recommended best practice is use the EPSG code as a controlled " +"vocabulary to provide an SRS, if known. Otherwise use a controlled " +"vocabulary for the name or code of the geodetic datum, if known. Otherwise " +"use a controlled vocabulary for the name or code of the ellipsoid, if known. " +"If none of these is known, use the value \"unknown\"." +msgstr "" + +#: src/properties.cpp:1805 +msgid "Coordinate Uncertainty In Meters" +msgstr "" + +#: src/properties.cpp:1806 +msgid "" +"The horizontal distance (in meters) from the given decimalLatitude and " +"decimalLongitude describing the smallest circle containing the whole of the " +"Location. Leave the value empty if the uncertainty is unknown, cannot be " +"estimated, or is not applicable (because there are no coordinates). Zero is " +"not a valid value for this term." +msgstr "" + +#: src/properties.cpp:1808 +msgid "Coordinate Precision" +msgstr "" + +#: src/properties.cpp:1809 +msgid "" +"A decimal representation of the precision of the coordinates given in the " +"decimalLatitude and decimalLongitude." +msgstr "" + +#: src/properties.cpp:1811 +msgid "Point Radius Spatial Fit" +msgstr "" + +#: src/properties.cpp:1812 +#, c-format +msgid "" +"The ratio of the area of the point-radius (decimalLatitude, " +"decimalLongitude, coordinateUncertaintyInMeters) to the area of the true " +"(original, or most specific) spatial representation of the Location. Legal " +"values are 0, greater than or equal to 1, or undefined. A value of 1 is an " +"exact match or 100% overlap. A value of 0 should be used if the given point-" +"radius does not completely contain the original representation. The " +"pointRadiusSpatialFit is undefined (and should be left blank) if the " +"original representation is a point without uncertainty and the given " +"georeference is not that same point (without uncertainty). If both the " +"original and the given georeference are the same point, the " +"pointRadiusSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1814 +msgid "Footprint WKT" +msgstr "" + +#: src/properties.cpp:1815 +msgid "" +"A Well-Known Text (WKT) representation of the shape (footprint, geometry) " +"that defines the Location. A Location may have both a point-radius " +"representation (see decimalLatitude) and a footprint representation, and " +"they may differ from each other." +msgstr "" + +#: src/properties.cpp:1817 +msgid "Footprint SRS" +msgstr "" + +#: src/properties.cpp:1818 +msgid "" +"A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) " +"for the footprintWKT of the Location. Do not use this term to describe the " +"SRS of the decimalLatitude and decimalLongitude, even if it is the same as " +"for the footprintWKT - use the geodeticDatum instead." +msgstr "" + +#: src/properties.cpp:1820 +msgid "Footprint Spatial Fit" +msgstr "" + +#: src/properties.cpp:1821 +#, c-format +msgid "" +"The ratio of the area of the footprint (footprintWKT) to the area of the " +"true (original, or most specific) spatial representation of the Location. " +"Legal values are 0, greater than or equal to 1, or undefined. A value of 1 " +"is an exact match or 100% overlap. A value of 0 should be used if the given " +"footprint does not completely contain the original representation. The " +"footprintSpatialFit is undefined (and should be left blank) if the original " +"representation is a point and the given georeference is not that same point. " +"If both the original and the given georeference are the same point, the " +"footprintSpatialFit is 1." +msgstr "" + +#: src/properties.cpp:1823 +msgid "Georeferenced By" +msgstr "" + +#: src/properties.cpp:1824 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the georeference (spatial representation) for " +"the Location." +msgstr "" + +#: src/properties.cpp:1826 +msgid "Georeferenced Date" +msgstr "" + +#: src/properties.cpp:1827 +msgid "" +"The date on which the Location was georeferenced. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:1829 +msgid "Georeference Protocol" +msgstr "" + +#: src/properties.cpp:1830 +msgid "" +"A description or reference to the methods used to determine the spatial " +"footprint, coordinates, and uncertainties." +msgstr "" + +#: src/properties.cpp:1832 +msgid "Georeference Sources" +msgstr "" + +#: src/properties.cpp:1833 +msgid "" +"A list (concatenated and separated) of maps, gazetteers, or other resources " +"used to georeference the Location, described specifically enough to allow " +"anyone in the future to use the same resources." +msgstr "" + +#: src/properties.cpp:1835 +msgid "Georeference Verification Status" +msgstr "" + +#: src/properties.cpp:1836 +msgid "" +"A categorical description of the extent to which the georeference has been " +"verified to represent the best possible spatial description. Recommended " +"best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:1838 +msgid "Georeference Remarks" +msgstr "" + +#: src/properties.cpp:1839 +msgid "" +"Notes or comments about the spatial description determination, explaining " +"assumptions made in addition or opposition to the those formalized in the " +"method referred to in georeferenceProtocol." +msgstr "" + +#: src/properties.cpp:1843 +msgid "Geological Context" +msgstr "" + +#: src/properties.cpp:1844 +msgid "*Main structure* containing geological context based information." +msgstr "" + +#: src/properties.cpp:1847 +msgid "Geological Context ID" +msgstr "" + +#: src/properties.cpp:1848 +msgid "" +"An identifier for the set of information associated with a GeologicalContext " +"(the location within a geological context, such as stratigraphy). May be a " +"global unique identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1850 +msgid "Earliest Eon Or Lowest Eonothem" +msgstr "" + +#: src/properties.cpp:1851 +msgid "" +"The full name of the earliest possible geochronologic eon or lowest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1853 +msgid "Latest Eon Or Highest Eonothem" +msgstr "" + +#: src/properties.cpp:1854 +msgid "" +"The full name of the latest possible geochronologic eon or highest chrono-" +"stratigraphic eonothem or the informal name (\"Precambrian\") attributable " +"to the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1856 +msgid "Earliest Era Or Lowest Erathem" +msgstr "" + +#: src/properties.cpp:1857 +msgid "" +"The full name of the earliest possible geochronologic era or lowest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1859 +msgid "Latest Era Or Highest Erathem" +msgstr "" + +#: src/properties.cpp:1860 +msgid "" +"The full name of the latest possible geochronologic era or highest " +"chronostratigraphic erathem attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1862 +msgid "Earliest Period Or Lowest System" +msgstr "" + +#: src/properties.cpp:1863 +msgid "" +"The full name of the earliest possible geochronologic period or lowest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1865 +msgid "Latest Period Or Highest System" +msgstr "" + +#: src/properties.cpp:1866 +msgid "" +"The full name of the latest possible geochronologic period or highest " +"chronostratigraphic system attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1868 +msgid "Earliest Epoch Or Lowest Series" +msgstr "" + +#: src/properties.cpp:1869 +msgid "" +"The full name of the earliest possible geochronologic epoch or lowest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1871 +msgid "Latest Epoch Or Highest Series" +msgstr "" + +#: src/properties.cpp:1872 +msgid "" +"The full name of the latest possible geochronologic epoch or highest " +"chronostratigraphic series attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1874 +msgid "Earliest Age Or Lowest Stage" +msgstr "" + +#: src/properties.cpp:1875 +msgid "" +"The full name of the earliest possible geochronologic age or lowest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1877 +msgid "Latest Age Or Highest Stage" +msgstr "" + +#: src/properties.cpp:1878 +msgid "" +"The full name of the latest possible geochronologic age or highest " +"chronostratigraphic stage attributable to the stratigraphic horizon from " +"which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1880 +msgid "Lowest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1881 +msgid "" +"The full name of the lowest possible geological biostratigraphic zone of the " +"stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1883 +msgid "Highest Biostratigraphic Zone" +msgstr "" + +#: src/properties.cpp:1884 +msgid "" +"The full name of the highest possible geological biostratigraphic zone of " +"the stratigraphic horizon from which the cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1886 +msgid "Lithostratigraphic Terms" +msgstr "" + +#: src/properties.cpp:1887 +msgid "" +"The combination of all litho-stratigraphic names for the rock from which the " +"cataloged item was collected." +msgstr "" + +#: src/properties.cpp:1889 +msgid "Group" +msgstr "" + +#: src/properties.cpp:1890 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic group from which the cataloged item " +"was collected." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:1892 +#, fuzzy +msgid "Formation" +msgstr "Äịnh dạng" + +#: src/properties.cpp:1893 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic formation from which the cataloged " +"item was collected." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:1895 +msgid "Member" +msgstr "" + +#: src/properties.cpp:1896 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic member from which the cataloged item " +"was collected." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:1898 +#, fuzzy +msgid "Bed" +msgstr "Äá»" + +#: src/properties.cpp:1899 +#, fuzzy +msgid "" +"The full name of the lithostratigraphic bed from which the cataloged item " +"was collected." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/properties.cpp:1903 +#, fuzzy +msgid "Identification" +msgstr "Chứng chỉ" + +#: src/properties.cpp:1904 +msgid "*Main structure* containing identification based information." +msgstr "" + +#: src/properties.cpp:1907 +msgid "Identification ID" +msgstr "" + +#: src/properties.cpp:1908 +msgid "" +"An identifier for the Identification (the body of information associated " +"with the assignment of a scientific name). May be a global unique identifier " +"or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:1910 +msgid "Identified By" +msgstr "" + +#: src/properties.cpp:1911 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who assigned the Taxon to the subject." +msgstr "" + +#: src/properties.cpp:1913 +#, fuzzy +msgid "Date Identified" +msgstr "Ngày gá»­i" + +#: src/properties.cpp:1914 +msgid "" +"The date on which the subject was identified as representing the Taxon. " +"Recommended best practice is to use an encoding scheme, such as ISO 8601:2004" +"(E)." +msgstr "" + +#: src/properties.cpp:1916 +#, fuzzy +msgid "Identification References" +msgstr "Liên kết dá»± án" + +#: src/properties.cpp:1917 +msgid "" +"A list (concatenated and separated) of references (publication, global " +"unique identifier, URI) used in the Identification." +msgstr "" + +#: src/properties.cpp:1919 +msgid "Identification Verification Status" +msgstr "" + +#: src/properties.cpp:1920 +msgid "" +"A categorical indicator of the extent to which the taxonomic identification " +"has been verified to be correct. Recommended best practice is to use a " +"controlled vocabulary such as that used in HISPID/ABCD." +msgstr "" + +#: src/properties.cpp:1922 +msgid "Identification Remarks" +msgstr "" + +#: src/properties.cpp:1923 +msgid "Comments or notes about the Identification." +msgstr "" + +#: src/properties.cpp:1925 +msgid "Identification Qualifier" +msgstr "" + +#: src/properties.cpp:1926 +msgid "" +"A brief phrase or a standard term (\"cf.\" \"aff.\") to express the " +"determiner's doubts about the Identification." +msgstr "" + +#: src/properties.cpp:1928 +#, fuzzy +msgid "Type Status" +msgstr "Tình trạng GPS" + +#: src/properties.cpp:1929 +msgid "" +"A list (concatenated and separated) of nomenclatural types (type status, " +"typified scientific name, publication) applied to the subject." +msgstr "" + +#: src/properties.cpp:1933 +msgid "Taxon" +msgstr "" + +#: src/properties.cpp:1934 +msgid "*Main structure* containing taxonomic based information." +msgstr "" + +#: src/properties.cpp:1937 +msgid "Taxon ID" +msgstr "" + +#: src/properties.cpp:1938 +msgid "" +"An identifier for the set of taxon information (data associated with the " +"Taxon class). May be a global unique identifier or an identifier specific to " +"the data set." +msgstr "" + +#: src/properties.cpp:1940 +msgid "Scientific Name ID" +msgstr "" + +#: src/properties.cpp:1941 +msgid "" +"An identifier for the nomenclatural (not taxonomic) details of a scientific " +"name." +msgstr "" + +#: src/properties.cpp:1943 +msgid "Accepted Name Usage ID" +msgstr "" + +#: src/properties.cpp:1944 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the currently valid (zoological) or accepted (botanical) " +"taxon." +msgstr "" + +#: src/properties.cpp:1946 +msgid "Parent Name Usage ID" +msgstr "" + +#: src/properties.cpp:1947 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) of the direct, most proximate higher-rank parent taxon (in a " +"classification) of the most specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1949 +msgid "Original Name Usage ID" +msgstr "" + +#: src/properties.cpp:1950 +msgid "" +"An identifier for the name usage (documented meaning of the name according " +"to a source) in which the terminal element of the scientificName was " +"originally established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1952 +msgid "Name According To ID" +msgstr "" + +#: src/properties.cpp:1953 +msgid "" +"An identifier for the source in which the specific taxon concept " +"circumscription is defined or implied. See nameAccordingTo." +msgstr "" + +#: src/properties.cpp:1955 +msgid "Name Published In ID" +msgstr "" + +#: src/properties.cpp:1956 +msgid "" +"An identifier for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1958 +msgid "Taxon Concept ID" +msgstr "" + +#: src/properties.cpp:1959 +msgid "" +"An identifier for the taxonomic concept to which the record refers - not for " +"the nomenclatural details of a taxon." +msgstr "" + +#: src/properties.cpp:1961 +#, fuzzy +msgid "Scientific Name" +msgstr "Tên tài liệu" + +#: src/properties.cpp:1962 +msgid "" +"The full scientific name, with authorship and date information if known. " +"When forming part of an Identification, this should be the name in lowest " +"level taxonomic rank that can be determined. This term should not contain " +"identification qualifications, which should instead be supplied in the " +"IdentificationQualifier term." +msgstr "" + +#: src/properties.cpp:1964 +msgid "Accepted Name Usage" +msgstr "" + +#: src/properties.cpp:1965 +msgid "" +"The full name, with authorship and date information if known, of the " +"currently valid (zoological) or accepted (botanical) taxon." +msgstr "" + +#: src/properties.cpp:1967 +msgid "Parent Name Usage" +msgstr "" + +#: src/properties.cpp:1968 +msgid "" +"The full name, with authorship and date information if known, of the direct, " +"most proximate higher-rank parent taxon (in a classification) of the most " +"specific element of the scientificName." +msgstr "" + +#: src/properties.cpp:1970 +msgid "Original Name Usage" +msgstr "" + +#: src/properties.cpp:1971 +msgid "" +"The taxon name, with authorship and date information if known, as it " +"originally appeared when first established under the rules of the associated " +"nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the " +"scientificName or the senior/earlier homonym for replaced names." +msgstr "" + +#: src/properties.cpp:1973 +msgid "Name According To" +msgstr "" + +#: src/properties.cpp:1974 +msgid "" +"The reference to the source in which the specific taxon concept " +"circumscription is defined or implied - traditionally signified by the Latin " +"\"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa " +"that result from identifications, a reference to the keys, monographs, " +"experts and other sources should be given." +msgstr "" + +#: src/properties.cpp:1976 +#, fuzzy +msgid "Name Published In" +msgstr "Nhà xuất bản" + +#: src/properties.cpp:1977 +msgid "" +"A reference for the publication in which the scientificName was originally " +"established under the rules of the associated nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:1979 +msgid "Name Published In Year" +msgstr "" + +#: src/properties.cpp:1980 +msgid "The four-digit year in which the scientificName was published." +msgstr "" + +#: src/properties.cpp:1982 +msgid "Higher Classification" +msgstr "" + +#: src/properties.cpp:1983 +msgid "" +"A list (concatenated and separated) of taxa names terminating at the rank " +"immediately superior to the taxon referenced in the taxon record. " +"Recommended best practice is to order the list starting with the highest " +"rank and separating the names for each rank with a semi-colon ;" +msgstr "" + +#: src/properties.cpp:1985 +msgid "Kingdom" +msgstr "" + +#: src/properties.cpp:1986 +msgid "" +"The full scientific name of the kingdom in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1988 +msgid "Phylum" +msgstr "" + +#: src/properties.cpp:1989 +msgid "" +"The full scientific name of the phylum or division in which the taxon is " +"classified." +msgstr "" + +#: src/properties.cpp:1991 +msgid "Class" +msgstr "" + +#: src/properties.cpp:1992 +msgid "The full scientific name of the class in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1994 +#, fuzzy +msgid "Order" +msgstr "Thứ tá»± tô đầy" + +#: src/properties.cpp:1995 +msgid "The full scientific name of the order in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:1997 +msgid "Family" +msgstr "" + +#: src/properties.cpp:1998 +msgid "" +"The full scientific name of the family in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2000 +msgid "Genus" +msgstr "" + +#: src/properties.cpp:2001 +msgid "The full scientific name of the genus in which the taxon is classified." +msgstr "" + +#: src/properties.cpp:2003 +msgid "Subgenus" +msgstr "" + +#: src/properties.cpp:2004 +msgid "" +"The full scientific name of the subgenus in which the taxon is classified. " +"Values should include the genus to avoid homonym confusion." +msgstr "" + +#: src/properties.cpp:2006 +msgid "Specific Epithet" +msgstr "" + +#: src/properties.cpp:2007 +msgid "The name of the first or species epithet of the scientificName." +msgstr "" + +#: src/properties.cpp:2009 +msgid "Infraspecific Epithet" +msgstr "" + +#: src/properties.cpp:2010 +msgid "" +"The name of the lowest or terminal infraspecific epithet of the " +"scientificName, excluding any rank designation." +msgstr "" + +#: src/properties.cpp:2012 +msgid "Taxon Rank" +msgstr "" + +#: src/properties.cpp:2013 +msgid "" +"The taxonomic rank of the most specific name in the scientificName. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2015 +msgid "Verbatim Taxon Rank" +msgstr "" + +#: src/properties.cpp:2016 +msgid "" +"The taxonomic rank of the most specific name in the scientificName as it " +"appears in the original record." +msgstr "" + +#: src/properties.cpp:2018 +msgid "Scientific Name Authorship" +msgstr "" + +#: src/properties.cpp:2019 +msgid "" +"The authorship information for the scientificName formatted according to the " +"conventions of the applicable nomenclaturalCode." +msgstr "" + +#: src/properties.cpp:2021 +msgid "Vernacular Name" +msgstr "" + +#: src/properties.cpp:2022 +msgid "A common or vernacular name." +msgstr "" + +#: src/properties.cpp:2024 +#, fuzzy +msgid "Nomenclatural Code" +msgstr "Màu sắc tá»± nhiên" + +#: src/properties.cpp:2025 +msgid "" +"The nomenclatural code (or codes in the case of an ambiregnal name) under " +"which the scientificName is constructed. Recommended best practice is to use " +"a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2027 +msgid "Taxonomic Status" +msgstr "" + +#: src/properties.cpp:2028 +msgid "" +"The status of the use of the scientificName as a label for a taxon. Requires " +"taxonomic opinion to define the scope of a taxon. Rules of priority then are " +"used to define the taxonomic status of the nomenclature contained in that " +"scope, combined with the experts opinion. It must be linked to a specific " +"taxonomic reference that defines the concept. Recommended best practice is " +"to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2030 +msgid "Nomenclatural Status" +msgstr "" + +#: src/properties.cpp:2031 +msgid "" +"The status related to the original publication of the name and its " +"conformance to the relevant rules of nomenclature. It is based essentially " +"on an algorithm according to the business rules of the code. It requires no " +"taxonomic opinion." +msgstr "" + +#: src/properties.cpp:2033 +msgid "Taxon Remarks" +msgstr "" + +#: src/properties.cpp:2034 +msgid "Comments or notes about the taxon or name." +msgstr "" + +#: src/properties.cpp:2038 +msgid "Resource Relationship" +msgstr "" + +#: src/properties.cpp:2039 +msgid "" +"*Main structure* containing relationships between resources based " +"information." +msgstr "" + +#: src/properties.cpp:2042 +msgid "Resource Relationship ID" +msgstr "" + +#: src/properties.cpp:2043 +msgid "" +"An identifier for an instance of relationship between one resource (the " +"subject) and another (relatedResource, the object)." +msgstr "" + +#: src/properties.cpp:2045 +#, fuzzy +msgid "Resource ID" +msgstr "Nguồn tập tin" + +#: src/properties.cpp:2046 +msgid "An identifier for the resource that is the subject of the relationship." +msgstr "" + +#: src/properties.cpp:2048 +#, fuzzy +msgid "Related Resource ID" +msgstr "Nguồn tập tin" + +#: src/properties.cpp:2049 +msgid "" +"An identifier for a related resource (the object, rather than the subject of " +"the relationship)." +msgstr "" + +#: src/properties.cpp:2051 +#, fuzzy +msgid "Relationship Of Resource" +msgstr "Nguồn đèn chá»›p" + +#: src/properties.cpp:2052 +msgid "" +"The relationship of the resource identified by relatedResourceID to the " +"subject (optionally identified by the resourceID). Recommended best practice " +"is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2054 +msgid "Relationship According To" +msgstr "" + +#: src/properties.cpp:2055 +msgid "" +"The source (person, organization, publication, reference) establishing the " +"relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2057 +msgid "Relationship Established Date" +msgstr "" + +#: src/properties.cpp:2058 +msgid "" +"The date-time on which the relationship between the two resources was " +"established. Recommended best practice is to use an encoding scheme, such as " +"ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2060 +msgid "Relationship Remarks" +msgstr "" + +#: src/properties.cpp:2061 +msgid "Comments or notes about the relationship between the two resources." +msgstr "" + +#: src/properties.cpp:2065 +msgid "Measurement Or Fact" +msgstr "" + +#: src/properties.cpp:2066 +msgid "*Main structure* containing measurement based information." +msgstr "" + +#: src/properties.cpp:2069 +msgid "Measurement ID" +msgstr "" + +#: src/properties.cpp:2070 +msgid "" +"An identifier for the MeasurementOrFact (information pertaining to " +"measurements, facts, characteristics, or assertions). May be a global unique " +"identifier or an identifier specific to the data set." +msgstr "" + +#: src/properties.cpp:2072 +msgid "Measurement Type" +msgstr "" + +#: src/properties.cpp:2073 +msgid "" +"The nature of the measurement, fact, characteristic, or assertion. " +"Recommended best practice is to use a controlled vocabulary." +msgstr "" + +#: src/properties.cpp:2075 +#, fuzzy +msgid "Measurement Value" +msgstr "Giá trị khẩu độ" + +#: src/properties.cpp:2076 +msgid "The value of the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2078 +msgid "Measurement Accuracy" +msgstr "" + +#: src/properties.cpp:2079 +msgid "" +"The description of the potential error associated with the measurementValue." +msgstr "" + +#: src/properties.cpp:2081 +msgid "Measurement Unit" +msgstr "" + +#: src/properties.cpp:2082 +msgid "" +"The units associated with the measurementValue. Recommended best practice is " +"to use the International System of Units (SI)." +msgstr "" + +#: src/properties.cpp:2084 +msgid "Measurement Determined Date" +msgstr "" + +#: src/properties.cpp:2085 +msgid "" +"The date on which the MeasurementOrFact was made. Recommended best practice " +"is to use an encoding scheme, such as ISO 8601:2004(E)." +msgstr "" + +#: src/properties.cpp:2087 +msgid "Measurement Determined By" +msgstr "" + +#: src/properties.cpp:2088 +msgid "" +"A list (concatenated and separated) of names of people, groups, or " +"organizations who determined the value of the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2090 +#, fuzzy +msgid "Measurement Method" +msgstr "GPS Chế độ Äo lưá»ng" + +#: src/properties.cpp:2091 +msgid "" +"A description of or reference to (publication, URI) the method or protocol " +"used to determine the measurement, fact, characteristic, or assertion." +msgstr "" + +#: src/properties.cpp:2093 +msgid "Measurement Remarks" +msgstr "" + +#: src/properties.cpp:2094 +msgid "Comments or notes accompanying the MeasurementOrFact." +msgstr "" + +#: src/properties.cpp:2101 +#, fuzzy +msgid "A brief description of the file" +msgstr "Äá»™ dài cá»§a tập tin phương tiện" + +#: src/properties.cpp:2102 +#, fuzzy +msgid "Date Time" +msgstr "Ngày và Giá»" + +#: src/properties.cpp:2103 +msgid "The name of the author or photographer" +msgstr "" + +#: src/properties.cpp:2104 +msgid "Numerical rating from 1 to 5" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Notes" +msgstr "" + +#: src/properties.cpp:2105 +msgid "Any descriptive or additional free-form text up to 4,095 characters" +msgstr "" + +#: src/properties.cpp:2106 +msgid "Tagged" +msgstr "" + +#: src/properties.cpp:2106 +msgid "True or False" +msgstr "" + +#: src/properties.cpp:2107 +#, fuzzy +msgid "Categories" +msgstr "Phân loại" + +#: src/properties.cpp:2107 +msgid "Catalog of hierarchical keywords and groups" +msgstr "" + +#: src/sigmamn.cpp:62 +#, fuzzy +msgid "Resolution Mode" +msgstr "Äá»™ phân giải X" + +#: src/sigmamn.cpp:63 +#, fuzzy +msgid "Resolution mode" +msgstr "Äá»™ phân giải X" + +#: src/sigmamn.cpp:65 +#, fuzzy +msgid "Autofocus Mode" +msgstr "Chế độ lấy nét" + +#: src/sigmamn.cpp:66 +#, fuzzy +msgid "Autofocus mode" +msgstr "Chế độ lấy nét" + +#: src/sigmamn.cpp:68 +#, fuzzy +msgid "Focus Setting" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/sigmamn.cpp:69 +#, fuzzy +msgid "Focus setting" +msgstr "Tùy chỉnh chế độ lấy nét" + +#: src/sigmamn.cpp:80 +#, fuzzy +msgid "Lens Range" +msgstr "Trong phạm vi" + +#: src/sigmamn.cpp:81 +#, fuzzy +msgid "Lens focal length range" +msgstr "Khoảng Tiêu cá»± tối thiểu" + +#: src/sigmamn.cpp:92 src/sigmamn.cpp:93 +#, fuzzy +msgid "Shadow" +msgstr "Bóng râm" + +#: src/sigmamn.cpp:95 src/sigmamn.cpp:96 +#, fuzzy +msgid "Highlight" +msgstr "Cao nhất" + +#: src/sigmamn.cpp:104 +#, fuzzy +msgid "Fill Light" +msgstr "Ãnh sáng có sẵn" + +#: src/sigmamn.cpp:105 +msgid "X3 Fill light" +msgstr "" + +#: src/sigmamn.cpp:107 +#, fuzzy +msgid "Color Adjustment" +msgstr "Dữ liệu màu" + +#: src/sigmamn.cpp:108 +#, fuzzy +msgid "Color adjustment" +msgstr "Dữ liệu màu" + +#: src/sigmamn.cpp:110 +msgid "Adjustment Mode" +msgstr "" + +#: src/sigmamn.cpp:111 +msgid "Adjustment mode" +msgstr "" + +#: src/sigmamn.cpp:122 +#, fuzzy +msgid "Auto Bracket" +msgstr "Tương phản tá»± động" + +#: src/sigmamn.cpp:123 src/tags.cpp:1497 +#, fuzzy +msgid "Auto bracket" +msgstr "Tương phản tá»± động" + +#: src/sigmamn.cpp:127 +#, fuzzy +msgid "Unknown SigmaMakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/sigmamn.cpp:170 +#, fuzzy +msgid "8-Segment" +msgstr "Äa phân vùng" + +#: src/sonymn.cpp:131 +msgid "Advanced Lv1" +msgstr "" + +#: src/sonymn.cpp:132 +msgid "Advanced Lv2" +msgstr "" + +#: src/sonymn.cpp:133 +msgid "Advanced Lv3" +msgstr "" + +#: src/sonymn.cpp:134 +msgid "Advanced Lv4" +msgstr "" + +#: src/sonymn.cpp:135 +msgid "Advanced Lv5" +msgstr "" + +#: src/sonymn.cpp:154 +#, fuzzy +msgid "Night Scene / Twilight" +msgstr "Cảnh đêm" + +#: src/sonymn.cpp:155 +msgid "Hi-Speed Shutter" +msgstr "" + +#: src/sonymn.cpp:156 +#, fuzzy +msgid "Twilight Portrait" +msgstr "Chân dung ban đêm" + +#: src/sonymn.cpp:157 +#, fuzzy +msgid "Soft Snap / Portrait" +msgstr "Chân dung" + +#: src/sonymn.cpp:159 +#, fuzzy +msgid "Smile Shutter" +msgstr "Thá»i gian chập chậm" + +#: src/sonymn.cpp:161 +#, fuzzy +msgid "High Sensitivity" +msgstr "Äá»™ nhạy sáng" + +#: src/sonymn.cpp:163 +msgid "Advanced Sports Shooting" +msgstr "" + +#: src/sonymn.cpp:166 +#, fuzzy +msgid "Sweep Panorama" +msgstr "Toàn cảnh" + +#: src/sonymn.cpp:168 +msgid "Anti Motion Blur" +msgstr "" + +#: src/sonymn.cpp:170 +msgid "Backlight Correction HDR" +msgstr "" + +#: src/sonymn.cpp:171 +msgid "Superior Auto" +msgstr "" + +#: src/sonymn.cpp:172 +msgid "Background Defocus" +msgstr "" + +#: src/sonymn.cpp:173 +msgid "Soft Skin" +msgstr "" + +#: src/sonymn.cpp:174 +msgid "3D Image" +msgstr "" + +#: src/sonymn.cpp:189 +#, fuzzy +msgid "On (Continuous)" +msgstr "Liên tục" + +#: src/sonymn.cpp:190 +#, fuzzy +msgid "On (Shooting)" +msgstr "Chế độ Chụp" + +#: src/sonymn.cpp:198 +msgid "Plus" +msgstr "" + +#: src/sonymn.cpp:214 +#, fuzzy +msgid "White Flourescent" +msgstr "Äiểm trắng" + +#: src/sonymn.cpp:215 +#, fuzzy +msgid "Cool White Flourescent" +msgstr "4000K (Ãnh sáng trắng lạnh)" + +#: src/sonymn.cpp:216 +#, fuzzy +msgid "Day White Flourescent" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/sonymn.cpp:217 +msgid "Incandescent2" +msgstr "" + +#: src/sonymn.cpp:218 +#, fuzzy +msgid "Warm White Fluorescent" +msgstr "4500K (Ãnh sáng huỳnh quang trắng tá»± nhiên)" + +#: src/sonymn.cpp:221 +msgid "Underwater 1 (Blue Water)" +msgstr "" + +#: src/sonymn.cpp:222 +msgid "Underwater 2 (Green Water)" +msgstr "" + +#: src/sonymn.cpp:229 +msgid "Permanent-AF" +msgstr "" + +#: src/sonymn.cpp:237 +#, fuzzy +msgid "Center AF" +msgstr "Trung tâm" + +#: src/sonymn.cpp:238 +#, fuzzy +msgid "Spot AF" +msgstr "Xác định" + +#: src/sonymn.cpp:239 +msgid "Flexible Spot AF" +msgstr "" + +#: src/sonymn.cpp:240 +msgid "Touch AF" +msgstr "" + +#: src/sonymn.cpp:241 +#, fuzzy +msgid "Manual Focus" +msgstr "Lấy nét tay" + +#: src/sonymn.cpp:242 +#, fuzzy +msgid "Face Detected" +msgstr "Lá»±a chá»n ngưá»i dùng" + +#: src/sonymn.cpp:257 +#, fuzzy +msgid "Close Focus" +msgstr "gần" + +#: src/sonymn.cpp:347 src/sonymn.cpp:348 +#, fuzzy +msgid "Multi Burst Mode" +msgstr "Äa chế độ phÆ¡i sáng" + +#: src/sonymn.cpp:350 src/sonymn.cpp:351 +#, fuzzy +msgid "Multi Burst Image Width" +msgstr "Chiá»u rá»™ng ảnh liên quan" + +#: src/sonymn.cpp:353 src/sonymn.cpp:354 +#, fuzzy +msgid "Multi Burst Image Height" +msgstr "Chiá»u cao hình ảnh" + +#: src/sonymn.cpp:364 +#, fuzzy +msgid "JPEG preview image" +msgstr "Xem trước hình ảnh" + +#: src/sonymn.cpp:390 +#, fuzzy +msgid "Auto HDR" +msgstr "Tá»± động" + +#: src/sonymn.cpp:391 +msgid "High Definition Range Mode" +msgstr "" + +#: src/sonymn.cpp:395 +#, fuzzy +msgid "Shot Information" +msgstr "Thông tin ảnh ch" + +#: src/sonymn.cpp:400 src/sonymn.cpp:401 +#, fuzzy +msgid "Sony Model ID" +msgstr "Chế độ Chụp" + +#: src/sonymn.cpp:403 src/sonymn.cpp:404 +#, fuzzy +msgid "Color Reproduction" +msgstr "Tiêu giảm độ nhiá»…u màu sác" + +#: src/sonymn.cpp:418 src/sonymn.cpp:419 src/sonymn.cpp:472 src/sonymn.cpp:473 +msgid "Dynamic Range Optimizer" +msgstr "" + +#: src/sonymn.cpp:427 src/sonymn.cpp:428 +msgid "Minolta MakerNote" +msgstr "" + +#: src/sonymn.cpp:433 src/sonymn.cpp:434 +#, fuzzy +msgid "Full Image Size" +msgstr "Kích cỡ hình ảnh" + +#: src/sonymn.cpp:436 +#, fuzzy +msgid "Preview Image Size" +msgstr "Xem trước hình ảnh" + +#: src/sonymn.cpp:437 +#, fuzzy +msgid "Preview image size" +msgstr "Xem trước hình ảnh" + +#: src/sonymn.cpp:451 src/sonymn.cpp:452 src/sonymn.cpp:662 src/sonymn.cpp:663 +msgid "AF Illuminator" +msgstr "" + +#: src/sonymn.cpp:454 src/sonymn.cpp:455 +#, fuzzy +msgid "JPEG Quality" +msgstr "Chất lượng" + +#: src/sonymn.cpp:460 src/sonymn.cpp:461 +#, fuzzy +msgid "Release Mode" +msgstr "Ngày phát hành" + +#: src/sonymn.cpp:464 +msgid "Shot number in continuous burst mode" +msgstr "" + +#: src/sonymn.cpp:466 src/sonymn.cpp:467 +#, fuzzy +msgid "Anti-Blur" +msgstr "Chống-má»" + +#: src/sonymn.cpp:469 src/sonymn.cpp:470 src/sonymn.cpp:670 src/sonymn.cpp:671 +#, fuzzy +msgid "Long Exposure Noise Reduction" +msgstr "Giảm nhiá»…u cá»§a sá»± phÆ¡i sáng lâu" + +#: src/sonymn.cpp:475 src/sonymn.cpp:476 +msgid "Intelligent Auto" +msgstr "" + +#: src/sonymn.cpp:483 +#, fuzzy +msgid "Unknown Sony1MakerNote tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/sonymn.cpp:497 +#, fuzzy +msgid "Continuous High" +msgstr "Liên tục, cao" + +#: src/sonymn.cpp:501 +#, fuzzy +msgid "Continuous Low" +msgstr "Liên tục, thấp" + +#: src/sonymn.cpp:503 src/sonymn.cpp:504 +msgid "D-Range Optimizer Bracketing Low" +msgstr "" + +#: src/sonymn.cpp:536 +#, fuzzy +msgid "Autumn" +msgstr "Lá Mùa thu" + +#: src/sonymn.cpp:542 +msgid "ADI" +msgstr "" + +#: src/sonymn.cpp:558 src/sonymn.cpp:559 src/sonymn.cpp:560 +msgid "StyleBox1" +msgstr "" + +#: src/sonymn.cpp:578 +#, fuzzy +msgid "Auto No Flash" +msgstr "Tá»± động (Äèn chá»›p)" + +#: src/sonymn.cpp:633 src/sonymn.cpp:634 src/sonymn.cpp:739 src/sonymn.cpp:740 +msgid "Dynamic Range Optimizer Level" +msgstr "" + +#: src/sonymn.cpp:636 src/sonymn.cpp:637 src/sonymn.cpp:742 src/sonymn.cpp:743 +#, fuzzy +msgid "Creative Style" +msgstr "Ngày tạo" + +#: src/sonymn.cpp:648 src/sonymn.cpp:649 +#, fuzzy +msgid "Zone Matching Value" +msgstr "Giá trị Tương phản" + +#: src/sonymn.cpp:666 src/sonymn.cpp:667 +#, fuzzy +msgid "AF With Shutter" +msgstr "Thá»i gian chập nhanh" + +#: src/sonymn.cpp:674 src/sonymn.cpp:675 +#, fuzzy +msgid "High ISO NoiseReduction" +msgstr "Giảm nhiá»…u do độ nhạy sáng cao" + +#: src/sonymn.cpp:678 src/sonymn.cpp:679 +msgid "Image Style" +msgstr "Kiểu ảnh" + +#: src/sonymn.cpp:704 +#, fuzzy +msgid "Unknown Sony1 Camera Settings tag" +msgstr "Tùy chỉnh máy ảnh" + +#: src/sonymn.cpp:768 +#, fuzzy +msgid "Unknown Sony1 Camera Settings 2 tag" +msgstr "Tùy chỉnh máy ảnh" + +#: src/tags.cpp:188 +#, fuzzy +msgid "Unknown section" +msgstr "Không biết " + +#: src/tags.cpp:189 +msgid "Image data structure" +msgstr "Cấu trúc dữ liệu ảnh" + +#: src/tags.cpp:190 +msgid "Recording offset" +msgstr "" + +#: src/tags.cpp:191 +#, fuzzy +msgid "Image data characteristics" +msgstr "Cấu trúc dữ liệu ảnh" + +#: src/tags.cpp:192 +msgid "Other data" +msgstr "Dữ liệu khác" + +#: src/tags.cpp:193 +msgid "Exif data structure" +msgstr "Cấu trúc dữ liệu Exif" + +#: src/tags.cpp:195 +msgid "Image configuration" +msgstr "Cấu hình ảnh" + +#: src/tags.cpp:196 +msgid "User information" +msgstr "Thông tin ngưá»i dùng" + +#: src/tags.cpp:197 +msgid "Related file" +msgstr "Tập tin liên quan" + +#: src/tags.cpp:198 +msgid "Date and time" +msgstr "Ngày và giá»" + +#: src/tags.cpp:199 +msgid "Picture taking conditions" +msgstr "Äiá»u kiện chụp ảnh" + +#: src/tags.cpp:200 +msgid "GPS information" +msgstr "Thông tin GPS" + +#: src/tags.cpp:201 +#, fuzzy +msgid "Interoperability information" +msgstr "Thông tin bản quyá»n" + +#: src/tags.cpp:202 +msgid "Vendor specific information" +msgstr "Thông tin cụ thể nhà cung cấp" + +#: src/tags.cpp:203 +msgid "Adobe DNG tags" +msgstr "Thẻ Adobe DNG" + +#: src/tags.cpp:204 +msgid "Panasonic RAW tags" +msgstr "Thẻ Panasonic RAW" + +#: src/tags.cpp:205 +msgid "TIFF/EP tags" +msgstr "Thẻ TIFF/EP" + +#: src/tags.cpp:206 +msgid "TIFF PageMaker 6.0 tags" +msgstr "Thẻ TIFF PageMaker 6.0" + +#: src/tags.cpp:207 +msgid "Adobe OPI tags" +msgstr "Thẻ Adobe OPI" + +#: src/tags.cpp:208 +msgid "Last section" +msgstr "Phần cuối" + +#: src/tags.cpp:224 +msgid "Primary image" +msgstr "Ảnh chính" + +#: src/tags.cpp:225 +msgid "Thumbnail/Preview image" +msgstr "Ảnh nhá»/xem trước" + +#: src/tags.cpp:226 +msgid "Primary image, Multi page file" +msgstr "Ảnh chính, tập tin nhiá»u trang" + +#: src/tags.cpp:227 +msgid "Thumbnail/Preview image, Multi page file" +msgstr "Ảnh nhá»/xem trước, tập tin nhiá»u trang" + +#: src/tags.cpp:228 +msgid "Primary image, Transparency mask" +msgstr "Ảnh chính, mặt nạ trong suốt" + +#: src/tags.cpp:229 +msgid "Thumbnail/Preview image, Transparency mask" +msgstr "Ảnh nhá»/xem trước, mặt nạ trong suốt" + +#: src/tags.cpp:230 +msgid "Primary image, Multi page file, Transparency mask" +msgstr "Ảnh chính, tập tin nhiá»u trang, mặt nạ trong suốt" + +#: src/tags.cpp:231 src/tags.cpp:232 +msgid "Thumbnail/Preview image, Multi page file, Transparency mask" +msgstr "Ảnh nhá»/xem trước, tập tin nhiá»u trang, mặt nạ trong suốt" + +#: src/tags.cpp:237 +msgid "Full-resolution image data" +msgstr "Dữ liệu ảnh độ phân giải đầy đủ" + +#: src/tags.cpp:238 +msgid "Reduced-resolution image data" +msgstr "Dữ liệu ảnh độ phân giải đã được giảm xuống" + +#: src/tags.cpp:239 +msgid "A single page of a multi-page image" +msgstr "Má»™t trang đơn cá»§a bức ảnh nhiá»u trang" + +#: src/tags.cpp:245 +msgid "inch" +msgstr "insÆ¡" + +#: src/tags.cpp:252 +msgid "CCITT RLE" +msgstr "CCITT RLE" + +#: src/tags.cpp:253 +msgid "T4/Group 3 Fax" +msgstr "Fax T4/Group 3" + +#: src/tags.cpp:254 +msgid "T6/Group 4 Fax" +msgstr "Fax T6/Group 4" + +#: src/tags.cpp:255 +msgid "LZW" +msgstr "LZW" + +#: src/tags.cpp:256 +msgid "JPEG (old-style)" +msgstr "JPEG (kiểu cÅ©)" + +#: src/tags.cpp:257 +msgid "JPEG" +msgstr "JPEG" + +#: src/tags.cpp:258 +msgid "Adobe Deflate" +msgstr "" + +#: src/tags.cpp:259 +msgid "JBIG B&W" +msgstr "JBIG B&W" + +#: src/tags.cpp:260 +msgid "JBIG Color" +msgstr "JBIG Màu" + +#: src/tags.cpp:261 +msgid "Next 2-bits RLE" +msgstr "" + +#: src/tags.cpp:262 +msgid "Epson ERF Compressed" +msgstr "Epson ERF đã nén" + +#: src/tags.cpp:263 +msgid "Samsung SRW Compressed" +msgstr "Samsung SRW đã nén" + +#: src/tags.cpp:264 +msgid "CCITT RLE 1-word" +msgstr "CCITT RLE 1 từ" + +#: src/tags.cpp:265 +msgid "PackBits (Macintosh RLE)" +msgstr "PackBits (Macintosh RLE)" + +#: src/tags.cpp:266 +msgid "Thunderscan RLE" +msgstr "Thunderscan RLE" + +#: src/tags.cpp:267 +msgid "IT8 CT Padding" +msgstr "" + +#: src/tags.cpp:268 +msgid "IT8 Linework RLE" +msgstr "" + +#: src/tags.cpp:269 +msgid "IT8 Monochrome Picture" +msgstr "" + +#: src/tags.cpp:270 +msgid "IT8 Binary Lineart" +msgstr "" + +#: src/tags.cpp:271 +msgid "Pixar Film (10-bits LZW)" +msgstr "" + +#: src/tags.cpp:272 +msgid "Pixar Log (11-bits ZIP)" +msgstr "" + +#: src/tags.cpp:273 +msgid "Pixar Deflate" +msgstr "" + +#: src/tags.cpp:274 +msgid "Kodak DCS Encoding" +msgstr "Kodak DCS mã hoá" + +#: src/tags.cpp:275 +msgid "ISO JBIG" +msgstr "ISO JBIG" + +#: src/tags.cpp:276 +msgid "SGI Log Luminance RLE" +msgstr "" + +#: src/tags.cpp:277 +msgid "SGI Log 24-bits packed" +msgstr "" + +#: src/tags.cpp:278 +msgid "Leadtools JPEG 2000" +msgstr "Leadtools JPEG 2000" + +#: src/tags.cpp:279 +msgid "Nikon NEF Compressed" +msgstr "Nikon NEF đã nén" + +#: src/tags.cpp:280 +msgid "Kodak DCR Compressed" +msgstr "Kodak DCR đã nén" + +#: src/tags.cpp:281 +msgid "Pentax PEF Compressed" +msgstr "Pentax PEF đã nén" + +#: src/tags.cpp:286 +msgid "White Is Zero" +msgstr "" + +#: src/tags.cpp:287 +#, fuzzy +msgid "Black Is Zero" +msgstr "Äen và trắng" + +#: src/tags.cpp:288 +msgid "RGB" +msgstr "RGB" + +#: src/tags.cpp:289 +msgid "RGB Palette" +msgstr "Bảng màu RGB" + +#: src/tags.cpp:290 +msgid "Transparency Mask" +msgstr "Mặt nạ trong suốt" + +#: src/tags.cpp:291 src/tags.cpp:330 +msgid "CMYK" +msgstr "CMYK" + +#: src/tags.cpp:292 +msgid "YCbCr" +msgstr "YCbCr" + +#: src/tags.cpp:293 +msgid "CIELab" +msgstr "CIELab" + +#: src/tags.cpp:294 +msgid "ICCLab" +msgstr "ICCLab" + +#: src/tags.cpp:295 +msgid "ITULab" +msgstr "ITULab" + +#: src/tags.cpp:296 +msgid "Color Filter Array" +msgstr "Mảng lá»c màu" + +#: src/tags.cpp:297 +msgid "Pixar LogL" +msgstr "Pixar LogL" + +#: src/tags.cpp:298 +msgid "Pixar LogLuv" +msgstr "Pixar LogLuv" + +#: src/tags.cpp:299 +msgid "Linear Raw" +msgstr "" + +#: src/tags.cpp:304 +msgid "No dithering or halftoning" +msgstr "" + +#: src/tags.cpp:305 +msgid "Ordered dither or halftone technique" +msgstr "" + +#: src/tags.cpp:306 +msgid "Randomized process" +msgstr "Tiến trình ngẫu nhiên" + +#: src/tags.cpp:311 +msgid "top, left" +msgstr "trên, trái" + +#: src/tags.cpp:312 +msgid "top, right" +msgstr "trên, phải" + +#: src/tags.cpp:313 +msgid "bottom, right" +msgstr "dưới, phải" + +#: src/tags.cpp:314 +msgid "bottom, left" +msgstr "dưới, trái" + +#: src/tags.cpp:315 +msgid "left, top" +msgstr "trái, trên" + +#: src/tags.cpp:316 +msgid "right, top" +msgstr "phải, trên" + +#: src/tags.cpp:317 +msgid "right, bottom" +msgstr "phải, dưới" + +#: src/tags.cpp:318 src/tags.cpp:319 +msgid "left, bottom" +msgstr "trái, dưới" + +#: src/tags.cpp:324 +msgid "No prediction scheme used" +msgstr "" + +#: src/tags.cpp:325 +msgid "Horizontal differencing" +msgstr "" + +#: src/tags.cpp:331 +msgid "not CMYK" +msgstr "không phải CMYK" + +#: src/tags.cpp:336 +msgid "Unsigned integer data" +msgstr "dữ liệu số nguyên không dấu" + +#: src/tags.cpp:337 +msgid "Two's complement signed integer data" +msgstr "Dữ liệu số nguyên có dấu bù 2" + +#: src/tags.cpp:338 +msgid "IEEE floating point data" +msgstr "dữ liệu dấu chấm động IEEE" + +#: src/tags.cpp:339 src/tags.cpp:340 +msgid "Undefined data format" +msgstr "định dạng dữ liệu không xác định" + +#: src/tags.cpp:345 +#, fuzzy +msgid "Not indexed" +msgstr "chưa được sá»­ dụng" + +#: src/tags.cpp:346 src/tags.cpp:655 +msgid "Indexed" +msgstr "" + +#: src/tags.cpp:351 +msgid "A" +msgstr "A" + +#: src/tags.cpp:352 +msgid "B" +msgstr "B" + +#: src/tags.cpp:353 +msgid "C" +msgstr "C" + +#: src/tags.cpp:354 +msgid "A+B-C" +msgstr "A+B-C" + +#: src/tags.cpp:355 +msgid "A+((B-C)/2)" +msgstr "A+((B-C)/2)" + +#: src/tags.cpp:356 +msgid "B+((A-C)/2)" +msgstr "B+((A-C)/2)" + +#: src/tags.cpp:357 +msgid "(A+B)/2" +msgstr "(A+B)/2" + +#: src/tags.cpp:362 +msgid "Centered" +msgstr "Canh giữa" + +#: src/tags.cpp:363 +msgid "Co-sited" +msgstr "" + +#: src/tags.cpp:368 +msgid "No flash" +msgstr "Không đèn chá»›p" + +#: src/tags.cpp:370 +#, fuzzy +msgid "Fired, return light not detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:371 +#, fuzzy +msgid "Fired, return light detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:372 +msgid "Yes, did not fire" +msgstr "" + +#: src/tags.cpp:373 +msgid "Yes, compulsory" +msgstr "" + +#: src/tags.cpp:374 +#, fuzzy +msgid "Yes, compulsory, return light not detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:375 +#, fuzzy +msgid "Yes, compulsory, return light detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:376 +msgid "No, compulsory" +msgstr "" + +#: src/tags.cpp:377 +#, fuzzy +msgid "No, did not fire, return light not detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:378 +msgid "No, auto" +msgstr "Không, tá»± động" + +#: src/tags.cpp:379 +msgid "Yes, auto" +msgstr "Có, tá»± động" + +#: src/tags.cpp:380 +msgid "Yes, auto, return light not detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:381 +msgid "Yes, auto, return light detected" +msgstr "Có, tá»± động, ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:382 +msgid "No flash function" +msgstr "Không có chức năng đèn chá»›p" + +#: src/tags.cpp:383 +msgid "No, no flash function" +msgstr "không, không có chức năng đèn chá»›p" + +#: src/tags.cpp:384 +msgid "Yes, red-eye reduction" +msgstr "Có, giảm mắt Ä‘á»" + +#: src/tags.cpp:385 +msgid "Yes, red-eye reduction, return light not detected" +msgstr "Có, giảm mắt Ä‘á», ánh sáng trở vá» không được phát hiện" + +#: src/tags.cpp:386 +msgid "Yes, red-eye reduction, return light detected" +msgstr "Có, giảm mắt Ä‘á», ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:387 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction" +msgstr "Có, tá»± động, giảm mắt Ä‘á»" + +#: src/tags.cpp:388 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction, return light not detected" +msgstr "Có, tá»± động, giảm mắt Ä‘á», ánh sáng trở vá» không được phát hiện" + +#: src/tags.cpp:389 +#, fuzzy +msgid "Yes, compulsory, red-eye reduction, return light detected" +msgstr "Có, tá»± động, giảm mắt Ä‘á», ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:390 +msgid "No, red-eye reduction" +msgstr "Không, giảm mắt Ä‘á»" + +#: src/tags.cpp:391 +msgid "No, auto, red-eye reduction" +msgstr "Không, tá»± động, giảm mắt Ä‘á»" + +#: src/tags.cpp:392 +msgid "Yes, auto, red-eye reduction" +msgstr "Có, tá»± động, giảm mắt Ä‘á»" + +#: src/tags.cpp:393 +msgid "Yes, auto, red-eye reduction, return light not detected" +msgstr "Có, tá»± động, giảm mắt Ä‘á», ánh sáng trở vá» không được phát hiện" + +#: src/tags.cpp:394 +msgid "Yes, auto, red-eye reduction, return light detected" +msgstr "Có, tá»± động, giảm mắt Ä‘á», ánh sáng trở vỠđược phát hiện" + +#: src/tags.cpp:399 +msgid "Rectangular (or square) layout" +msgstr "Bố trí hình chữ nhật (hoặc vuông)" + +#: src/tags.cpp:400 +msgid "Staggered layout A: even columns are offset down by 1/2 row" +msgstr "Bố trí so le A: cá»™t chẵn được dá»i xuống dưới 1/2 dòng" + +#: src/tags.cpp:401 +msgid "Staggered layout B: even columns are offset up by 1/2 row" +msgstr "Bố trí so le B: cá»™t chẵn được dá»i lên trên 1/2 dòng" + +#: src/tags.cpp:402 +msgid "Staggered layout C: even rows are offset right by 1/2 column" +msgstr "Bố trí so le C: dòng chẵn được dá»i sang phải 1/2 cá»™t" + +#: src/tags.cpp:403 +msgid "Staggered layout D: even rows are offset left by 1/2 column" +msgstr "Bố trí so le D: dòng chẵn được dá»i sang trái 1/2 cá»™t" + +#: src/tags.cpp:408 +msgid "Processing Software" +msgstr "Phần má»m xá»­ lý" + +#: src/tags.cpp:409 +msgid "The name and version of the software used to post-process the picture." +msgstr "Tên và phiên bản phần má»m đã dùng để xá»­ lý hậu kỳ ảnh" + +#: src/tags.cpp:412 +msgid "New Subfile Type" +msgstr "Kiểu tập tin con má»›i" + +#: src/tags.cpp:413 +msgid "A general indication of the kind of data contained in this subfile." +msgstr "Sá»± chỉ chung vá» kiểu dữ liệu được chứa trong tập tin phụ này." + +#: src/tags.cpp:415 +msgid "Subfile Type" +msgstr "Kiểu tập tin phụ" + +#: src/tags.cpp:416 +msgid "" +"A general indication of the kind of data contained in this subfile. This " +"field is deprecated. The NewSubfileType field should be used instead." +msgstr "" +"Sá»± chỉ chung vá» kiểu dữ liệu được chứa trong tập tin phụ này. Trưá»ng này thì " +"bị phản đối. Trưá»ng NewSubfileType nên được dùng để thay thế." + +#: src/tags.cpp:420 +msgid "" +"The number of columns of image data, equal to the number of pixels per row. " +"In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Số cá»™t dữ liệu ảnh, bằng số Ä‘iểm ảnh trong má»—i hàng. Trong dữ liệu đã nén " +"JPEG, má»™t dấu hiệu JPEG được dùng thay vào thẻ này." + +#: src/tags.cpp:425 +msgid "" +"The number of rows of image data. In JPEG compressed data a JPEG marker is " +"used instead of this tag." +msgstr "" +"Số hàng dữ liệu ảnh. Trong dữ liệu đã nén JPEG, má»™t dấu hiệu JPEG được dùng " +"thay vào thẻ này." + +#: src/tags.cpp:428 +msgid "Bits per Sample" +msgstr "Bit trên mẫu" + +#: src/tags.cpp:429 +msgid "" +"The number of bits per image component. In this standard each component of " +"the image is 8 bits, so the value for this tag is 8. See also " +". In JPEG compressed data a JPEG marker is used instead of " +"this tag." +msgstr "" +"Số bit trong má»—i thành phần ảnh. Äối vá»›i tiêu chuẩn này, má»—i thành phần cá»§a " +"ảnh chiếm 8 bit, thì giá trị cá»§a thẻ này là 8. Xem thêm " +"(mẫu trên Ä‘iểm ảnh). Trong dữ liệu đã nén JPEG, má»™t dấu hiệu JPEG được dùng " +"thay vào thẻ này." + +#: src/tags.cpp:435 +msgid "" +"The compression scheme used for the image data. When a primary image is JPEG " +"compressed, this designation is not necessary and is omitted. When " +"thumbnails use JPEG compression, this tag value is set to 6." +msgstr "" +"Lược đồ nén được dùng cho dữ liệu ảnh. Khi má»™t ảnh chính được nén dạng JPEG, " +"sá»± chỉ định này không cần thiết và bị bá» Ä‘i. Khi hình thu nhá» dùng JPEG nén, " +"giá trị thẻ này được đặt là 6." + +#: src/tags.cpp:441 +msgid "" +"The pixel composition. In JPEG compressed data a JPEG marker is used instead " +"of this tag." +msgstr "" +"Sá»± hợp thành Ä‘iểm ảnh. Trong dữ liệu đã nén JPEG, má»™t dấu hiệu JPEG được " +"dùng thay vào thẻ này." + +#: src/tags.cpp:444 +msgid "Thresholding" +msgstr "" + +#: src/tags.cpp:445 +msgid "" +"For black and white TIFF files that represent shades of gray, the technique " +"used to convert from gray to black and white pixels." +msgstr "" + +#: src/tags.cpp:448 +#, fuzzy +msgid "Cell Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/tags.cpp:449 +msgid "" +"The width of the dithering or halftoning matrix used to create a dithered or " +"halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:452 +#, fuzzy +msgid "Cell Length" +msgstr "Tiêu cá»±" + +#: src/tags.cpp:453 +msgid "" +"The length of the dithering or halftoning matrix used to create a dithered " +"or halftoned bilevel file." +msgstr "" + +#: src/tags.cpp:456 +msgid "Fill Order" +msgstr "Thứ tá»± tô đầy" + +#: src/tags.cpp:457 +msgid "The logical order of bits within a byte" +msgstr "Thứ tá»± luận lý cá»§a bit trong má»™t byte" + +#: src/tags.cpp:459 +msgid "Document Name" +msgstr "Tên tài liệu" + +#: src/tags.cpp:460 +msgid "The name of the document from which this image was scanned" +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/tags.cpp:463 +msgid "" +"A character string giving the title of the image. It may be a comment such " +"as \"1988 company picnic\" or the like. Two-bytes character codes cannot be " +"used. When a 2-bytes code is necessary, the Exif Private tag " +"is to be used." +msgstr "" +"Chuá»—i kí tá»± chỉ tên ảnh. Nó có thể là chú thích như \"Äi chÆ¡i vá»›i bạn bè\". " +"Không thể sá»­ dụng mã ký tá»± byte đôi. Khi mã byte đôi cần thiết, hãy dùng thẻ " +"Exif riêng ." + +#: src/tags.cpp:470 +msgid "" +"The manufacturer of the recording equipment. This is the manufacturer of the " +"DSC, scanner, video digitizer or other equipment that generated the image. " +"When the field is left blank, it is treated as unknown." +msgstr "" +"Hãng chế tạo thiết bị thu. Nó là hãng chế tạo DSC, máy quét, bá»™ số tá»± hóa " +"ảnh động hay thiết bị khác đã tạo ra ảnh. Khi trưá»ng trống, nó được xem là " +"không biết." + +#: src/tags.cpp:476 +msgid "" +"The model name or model number of the equipment. This is the model name or " +"number of the DSC, scanner, video digitizer or other equipment that " +"generated the image. When the field is left blank, it is treated as unknown." +msgstr "" +"Tên hay số mô hình cá»§a thiết bị. Giá trị này là tên hay số mô hình cá»§a DSC, " +"máy quét, bá»™ số tá»± hóa ảnh động hay thiết bị khác đã tạo ra ảnh. Khi trưá»ng " +"trống, nó được xem là không biết." + +#: src/tags.cpp:482 +msgid "" +"For each strip, the byte offset of that strip. It is recommended that this " +"be selected so the number of strip bytes does not exceed 64 Kbytes. With " +"JPEG compressed data this designation is not needed and is omitted. See also " +" and ." +msgstr "" +"Cho má»—i mảnh, hiệu số byte cá»§a mảnh đó. Khuyên chá»n nó để bảo đảm số byte " +"mảnh không phải hÆ¡n 64 Kb. Äối vá»›i dữ liệu đã nén JPEG, chỉ định này không " +"cần thiết và bị bá» Ä‘i. Xem thêm và ." + +#: src/tags.cpp:489 +msgid "The image orientation viewed in terms of rows and columns." +msgstr "Hướng cá»§a ảnh, được xem theo hàng và cá»™t." + +#: src/tags.cpp:491 +msgid "Samples per Pixel" +msgstr "Mẫu trên má»—i Ä‘iểm ảnh" + +#: src/tags.cpp:492 +msgid "" +"The number of components per pixel. Since this standard applies to RGB and " +"YCbCr images, the value set for this tag is 3. In JPEG compressed data a " +"JPEG marker is used instead of this tag." +msgstr "" +"Số thành phần trên má»—i Ä‘iểm ảnh. Vì tiêu chuẩn này áp dụng vào ảnh kiểu RGB " +"và YCbCr, giá trị được đặt cho thẻ này là 3. Trong dữ liệu đã nén JPEG, má»™t " +"dấu hiệu JPEG được dùng thay vào thẻ này." + +#: src/tags.cpp:496 +msgid "Rows per Strip" +msgstr "Hàng trên mảnh" + +#: src/tags.cpp:497 +msgid "" +"The number of rows per strip. This is the number of rows in the image of one " +"strip when an image is divided into strips. With JPEG compressed data this " +"designation is not needed and is omitted. See also and " +"." +msgstr "" +"Số hàng trên má»—i mảnh, số hàng trong ảnh cá»§a má»™t mãnh khi ảnh chia cho nhiá»u " +"mảnh. Äối vá»›i dữ liệu đã nén JPEG, không cần sá»± định này và nó bị bá» Ä‘i. Xem " +"them và ." + +#: src/tags.cpp:502 +msgid "Strip Byte Count" +msgstr "Số byte mảnh" + +#: src/tags.cpp:503 +msgid "" +"The total number of bytes in each strip. With JPEG compressed data this " +"designation is not needed and is omitted." +msgstr "" +"Tổng số byte trên má»—i mảnh. Trong dữ liệu đã nén JPEG không cần sá»± định này " +"và nó bị bá» Ä‘i." + +#: src/tags.cpp:506 +msgid "X-Resolution" +msgstr "Äá»™ phân giải X" + +#: src/tags.cpp:507 +msgid "" +"The number of pixels per in the direction. " +"When the image resolution is unknown, 72 [dpi] is designated." +msgstr "" +"Số Ä‘iểm ảnh trên má»—i đơn vị phân giải vá» chiá»u " +"rá»™ng. Khi không biết độ phân giải cá»§a ảnh, được chỉ định là 72 " +"[dpi]." + +#: src/tags.cpp:510 +msgid "Y-Resolution" +msgstr "Äá»™ phân giải Y" + +#: src/tags.cpp:511 +msgid "" +"The number of pixels per in the direction. " +"The same value as is designated." +msgstr "" +"Số Ä‘iểm ảnh trên má»—i đơn vị phân giải vá» chiá»u " +"cao. Khi không biết độ phân giải cá»§a ảnh, được chỉ định là 72 " +"[dpi]." + +#: src/tags.cpp:515 +msgid "" +"Indicates whether pixel components are recorded in a chunky or planar " +"format. In JPEG compressed files a JPEG marker is used instead of this tag. " +"If this field does not exist, the TIFF default of 1 (chunky) is assumed." +msgstr "" + +#: src/tags.cpp:520 +msgid "Gray Response Unit" +msgstr "" + +#: src/tags.cpp:521 +msgid "The precision of the information contained in the GrayResponseCurve." +msgstr "" + +#: src/tags.cpp:523 +msgid "Gray Response Curve" +msgstr "" + +#: src/tags.cpp:524 +msgid "For grayscale data, the optical density of each possible pixel value." +msgstr "" + +#: src/tags.cpp:526 +msgid "T4 Options" +msgstr "Tuỳ chá»n T4" + +#: src/tags.cpp:527 +msgid "T.4-encoding options." +msgstr "Tuỳ chá»n mã hoá T.4." + +#: src/tags.cpp:529 +msgid "T6 Options" +msgstr "Tuỳ chá»n T6" + +#: src/tags.cpp:530 +msgid "T.6-encoding options." +msgstr "Tuỳ chá»n mã hoá T.6." + +#: src/tags.cpp:533 +msgid "" +"The unit for measuring and . The same unit is " +"used for both and . If the image resolution is " +"unknown, 2 (inches) is designated." +msgstr "" +"ÄÆ¡n vị Ä‘o độ phân giải X và độ phân giải Y (cùng " +"má»™t đơn vị cho cả hai giá trị). Nếu không biết độ phân giải cá»§a ảnh, được " +"chỉ định là 2 (insÆ¡)." + +#: src/tags.cpp:537 +#, fuzzy +msgid "Page Number" +msgstr "Số hình ảnh" + +#: src/tags.cpp:538 +#, fuzzy +msgid "The page number of the page from which this image was scanned." +msgstr "Tên cá»§a tài liệu mà bức ảnh này được quét" + +#: src/tags.cpp:541 +msgid "" +"A transfer function for the image, described in tabular style. Normally this " +"tag is not necessary, since color space is specified in the color space " +"information tag ()." +msgstr "" +"Hàm truyá»n cho ảnh, được diá»…n tả trong kiểu dáng bảng. Bình thưá»ng, không " +"cần thẻ này, vì vùng màu được ghi rõ trong thẻ thông tin vùng màu " +"()." + +#: src/tags.cpp:546 +#, fuzzy +msgid "" +"This tag records the name and version of the software or firmware of the " +"camera or image input device used to generate the image. The detailed format " +"is not specified, but it is recommended that the example shown below be " +"followed. When the field is left blank, it is treated as unknown." +msgstr "" +"Thẻ này ghi tên cá»§a ngưá»i chá»§ sở hữu máy ảnh, nhà nhiếp ảnh hoặc ngưá»i tạo " +"ảnh. Äịnh dạng chi tiết không được chỉ rõ, nhưng có lá»i khuyên rằng thông " +"tin được viết theo ví dụ bên dưới để dá»… dàng cho khả năng cá»™ng tác. Khi " +"trưá»ng trống, nó được xem như không biết. Ví dụ.) \"Ngưá»i chá»§ máy ảnh, Vi " +"Khoa; Nhà nhiếp ảnh, Phạm Khắc; ngưá»i tạo ảnh, Phạm VÅ© Nguyên" + +#: src/tags.cpp:553 +msgid "" +"The date and time of image creation. In Exif standard, it is the date and " +"time the file was changed." +msgstr "" +"Ngày và giá» tạo ra ảnh. Trong chuẩn Exif, đó là ngày và giá» tập tin đã bị " +"thay đổi." + +#: src/tags.cpp:557 +msgid "" +"This tag records the name of the camera owner, photographer or image " +"creator. The detailed format is not specified, but it is recommended that " +"the information be written as in the example below for ease of " +"Interoperability. When the field is left blank, it is treated as unknown. " +"Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, " +"Ken James\"" +msgstr "" +"Thẻ này ghi tên cá»§a ngưá»i chá»§ sở hữu máy ảnh, nhà nhiếp ảnh hoặc ngưá»i tạo " +"ảnh. Äịnh dạng chi tiết không được chỉ rõ, nhưng có lá»i khuyên rằng thông " +"tin được viết theo ví dụ bên dưới để dá»… dàng cho khả năng cá»™ng tác. Khi " +"trưá»ng trống, nó được xem như không biết. Ví dụ.) \"Ngưá»i chá»§ máy ảnh, Vi " +"Khoa; Nhà nhiếp ảnh, Phạm Khắc; ngưá»i tạo ảnh, Phạm VÅ© Nguyên" + +#: src/tags.cpp:564 +msgid "Host Computer" +msgstr "" + +#: src/tags.cpp:565 +msgid "" +"This tag records information about the host computer used to generate the " +"image." +msgstr "" + +#: src/tags.cpp:568 +msgid "Predictor" +msgstr "" + +#: src/tags.cpp:569 +msgid "" +"A predictor is a mathematical operator that is applied to the image data " +"before an encoding scheme is applied." +msgstr "" + +#: src/tags.cpp:573 +msgid "" +"The chromaticity of the white point of the image. Normally this tag is not " +"necessary, since color space is specified in the colorspace information tag " +"()." +msgstr "" +"Sắc độ cá»§a Ä‘iểm trắng cá»§a ảnh. Bình thưá»ng, không cần thẻ này, vì vùng màu " +"được ghi rõ trong thẻ thông tin vùng màu ()." + +#: src/tags.cpp:578 +msgid "" +"The chromaticity of the three primary colors of the image. Normally this tag " +"is not necessary, since colorspace is specified in the colorspace " +"information tag ()." +msgstr "" +"Sắc độ cá»§a ba màu chính cá»§a ảnh. Bình thưá»ng, không cần thẻ này, vì vùng màu " +"được ghi rõ trong thẻ thông tin vùng màu ()." + +#: src/tags.cpp:582 +#, fuzzy +msgid "Color Map" +msgstr "Ma trận màu" + +#: src/tags.cpp:583 +msgid "" +"A color map for palette color images. This field defines a Red-Green-Blue " +"color map (often called a lookup table) for palette-color images. In a " +"palette-color image, a pixel value is used to index into an RGB lookup table." +msgstr "" + +#: src/tags.cpp:588 +msgid "Halftone Hints" +msgstr "" + +#: src/tags.cpp:589 +msgid "" +"The purpose of the HalftoneHints field is to convey to the halftone function " +"the range of gray levels within a colorimetrically-specified image that " +"should retain tonal detail." +msgstr "" + +#: src/tags.cpp:593 +#, fuzzy +msgid "Tile Width" +msgstr "Chiá»u rá»™ng hình ảnh" + +#: src/tags.cpp:594 +msgid "The tile width in pixels. This is the number of columns in each tile." +msgstr "" + +#: src/tags.cpp:596 +#, fuzzy +msgid "Tile Length" +msgstr "Chiá»u dài hình ảnh" + +#: src/tags.cpp:597 +msgid "" +"The tile length (height) in pixels. This is the number of rows in each tile." +msgstr "" + +#: src/tags.cpp:599 +msgid "Tile Offsets" +msgstr "" + +#: src/tags.cpp:600 +msgid "" +"For each tile, the byte offset of that tile, as compressed and stored on " +"disk. The offset is specified with respect to the beginning of the TIFF " +"file. Note that this implies that each tile has a location independent of " +"the locations of other tiles." +msgstr "" + +#: src/tags.cpp:605 +#, fuzzy +msgid "Tile Byte Counts" +msgstr "Số byte mảnh" + +#: src/tags.cpp:606 +msgid "" +"For each tile, the number of (compressed) bytes in that tile. See " +"TileOffsets for a description of how the byte counts are ordered." +msgstr "" + +#: src/tags.cpp:609 +msgid "SubIFD Offsets" +msgstr "" + +#: src/tags.cpp:610 +msgid "Defined by Adobe Corporation to enable TIFF Trees within a TIFF file." +msgstr "" + +#: src/tags.cpp:612 +msgid "Ink Set" +msgstr "" + +#: src/tags.cpp:613 +msgid "" +"The set of inks used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:615 +#, fuzzy +msgid "Ink Names" +msgstr "Tên chá»§ sở hữu" + +#: src/tags.cpp:616 +msgid "" +"The name of each ink used in a separated (PhotometricInterpretation=5) image." +msgstr "" + +#: src/tags.cpp:618 +#, fuzzy +msgid "Number Of Inks" +msgstr "Số trang" + +#: src/tags.cpp:619 +msgid "" +"The number of inks. Usually equal to SamplesPerPixel, unless there are extra " +"samples." +msgstr "" + +#: src/tags.cpp:621 +#, fuzzy +msgid "Dot Range" +msgstr "Trong phạm vi" + +#: src/tags.cpp:622 +#, c-format +msgid "The component values that correspond to a 0% dot and 100% dot." +msgstr "" + +#: src/tags.cpp:624 +msgid "Target Printer" +msgstr "" + +#: src/tags.cpp:625 +msgid "" +"A description of the printing environment for which this separation is " +"intended." +msgstr "" + +#: src/tags.cpp:627 +#, fuzzy +msgid "Extra Samples" +msgstr "Bit trên mẫu" + +#: src/tags.cpp:628 +msgid "" +"Specifies that each pixel has m extra components whose interpretation is " +"defined by one of the values listed below." +msgstr "" + +#: src/tags.cpp:631 +#, fuzzy +msgid "Sample Format" +msgstr "Äịnh dạng tập tin" + +#: src/tags.cpp:632 +msgid "This field specifies how to interpret each data sample in a pixel." +msgstr "" + +#: src/tags.cpp:634 +#, fuzzy +msgid "SMin Sample Value" +msgstr "Tỉ lệ mẫu âm thanh" + +#: src/tags.cpp:635 +msgid "This field specifies the minimum sample value." +msgstr "" + +#: src/tags.cpp:637 +#, fuzzy +msgid "SMax Sample Value" +msgstr "Giá trị khẩu độ tối Ä‘a" + +#: src/tags.cpp:638 +msgid "This field specifies the maximum sample value." +msgstr "" + +#: src/tags.cpp:640 +#, fuzzy +msgid "Transfer Range" +msgstr "Khoảng cách xa" + +#: src/tags.cpp:641 +msgid "Expands the range of the TransferFunction" +msgstr "" + +#: src/tags.cpp:643 +msgid "Clip Path" +msgstr "" + +#: src/tags.cpp:644 +msgid "" +"A TIFF ClipPath is intended to mirror the essentials of PostScript's path " +"creation functionality." +msgstr "" + +#: src/tags.cpp:647 +msgid "X Clip Path Units" +msgstr "" + +#: src/tags.cpp:648 +msgid "" +"The number of units that span the width of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:651 +msgid "Y Clip Path Units" +msgstr "" + +#: src/tags.cpp:652 +msgid "" +"The number of units that span the height of the image, in terms of integer " +"ClipPath coordinates." +msgstr "" + +#: src/tags.cpp:656 +msgid "" +"Indexed images are images where the 'pixels' do not represent color values, " +"but rather an index (usually 8-bit) into a separate color table, the " +"ColorMap." +msgstr "" + +#: src/tags.cpp:660 +msgid "JPEG tables" +msgstr "" + +#: src/tags.cpp:661 +msgid "" +"This optional tag may be used to encode the JPEG quantization and Huffman " +"tables for subsequent use by the JPEG decompression process." +msgstr "" + +#: src/tags.cpp:664 +msgid "OPI Proxy" +msgstr "" + +#: src/tags.cpp:665 +msgid "" +"OPIProxy gives information concerning whether this image is a low-resolution " +"proxy of a high-resolution image (Adobe OPI)." +msgstr "" + +#: src/tags.cpp:668 +#, fuzzy +msgid "JPEG Process" +msgstr "Tiến trình lấy nét" + +#: src/tags.cpp:669 +msgid "This field indicates the process used to produce the compressed data" +msgstr "" + +#: src/tags.cpp:671 +msgid "JPEG Interchange Format" +msgstr "" + +#: src/tags.cpp:672 +msgid "" +"The offset to the start byte (SOI) of JPEG compressed thumbnail data. This " +"is not used for primary image JPEG data." +msgstr "" + +#: src/tags.cpp:675 +msgid "JPEG Interchange Format Length" +msgstr "" + +#: src/tags.cpp:676 +msgid "" +"The number of bytes of JPEG compressed thumbnail data. This is not used for " +"primary image JPEG data. JPEG thumbnails are not divided but are recorded as " +"a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not " +"be recorded. Compressed thumbnails must be recorded in no more than 64 " +"Kbytes, including all other data to be recorded in APP1." +msgstr "" + +#: src/tags.cpp:683 +msgid "JPEG Restart Interval" +msgstr "" + +#: src/tags.cpp:684 +msgid "" +"This Field indicates the length of the restart interval used in the " +"compressed image data." +msgstr "" + +#: src/tags.cpp:687 +msgid "JPEG Lossless Predictors" +msgstr "" + +#: src/tags.cpp:688 +msgid "" +"This Field points to a list of lossless predictor-selection values, one per " +"component." +msgstr "" + +#: src/tags.cpp:691 +msgid "JPEG Point Transforms" +msgstr "" + +#: src/tags.cpp:692 +msgid "" +"This Field points to a list of point transform values, one per component." +msgstr "" + +#: src/tags.cpp:694 +msgid "JPEG Q-Tables" +msgstr "" + +#: src/tags.cpp:695 +msgid "" +"This Field points to a list of offsets to the quantization tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:698 +msgid "JPEG DC-Tables" +msgstr "" + +#: src/tags.cpp:699 +msgid "" +"This Field points to a list of offsets to the DC Huffman tables or the " +"lossless Huffman tables, one per component." +msgstr "" + +#: src/tags.cpp:702 +msgid "JPEG AC-Tables" +msgstr "" + +#: src/tags.cpp:703 +msgid "" +"This Field points to a list of offsets to the Huffman AC tables, one per " +"component." +msgstr "" + +#: src/tags.cpp:707 +msgid "" +"The matrix coefficients for transformation from RGB to YCbCr image data. No " +"default is given in TIFF; but here the value given in Appendix E, \"Color " +"Space Guidelines\", is used as the default. The color space is declared in a " +"color space information tag, with the default being the value that gives the " +"optimal image characteristics Interoperability this condition." +msgstr "" + +#: src/tags.cpp:715 +msgid "YCbCr Sub-Sampling" +msgstr "" + +#: src/tags.cpp:716 +#, fuzzy +msgid "" +"The sampling ratio of chrominance components in relation to the luminance " +"component. In JPEG compressed data a JPEG marker is used instead of this tag." +msgstr "" +"Sá»± hợp thành Ä‘iểm ảnh. Trong dữ liệu đã nén JPEG, má»™t dấu hiệu JPEG được " +"dùng thay vào thẻ này." + +#: src/tags.cpp:721 +msgid "" +"The position of chrominance components in relation to the luminance " +"component. This field is designated only for JPEG compressed data or " +"uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr " +"= 4:2:2 it is recommended in this standard that 2 (co-sited) be used to " +"record data, in order to improve the image quality when viewed on TV " +"systems. When this field does not exist, the reader shall assume the TIFF " +"default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is " +"recommended. If the reader does not have the capability of supporting both " +"kinds of , it shall follow the TIFF default regardless of " +"the value in this field. It is preferable that readers be able to support " +"both centered and co-sited positioning." +msgstr "" + +#: src/tags.cpp:735 +msgid "Reference Black/White" +msgstr "" + +#: src/tags.cpp:736 +msgid "" +"The reference black point value and reference white point value. No defaults " +"are given in TIFF, but the values below are given as defaults here. The " +"color space is declared in a color space information tag, with the default " +"being the value that gives the optimal image characteristics " +"Interoperability these conditions." +msgstr "" + +#: src/tags.cpp:743 +msgid "XML Packet" +msgstr "" + +#: src/tags.cpp:744 +msgid "XMP Metadata (Adobe technote 9-14-02)" +msgstr "" + +#: src/tags.cpp:746 +#, fuzzy +msgid "Windows Rating" +msgstr "Tiêu đỠcá»­a sổ" + +#: src/tags.cpp:747 +msgid "Rating tag used by Windows" +msgstr "" + +#: src/tags.cpp:749 +msgid "Windows Rating Percent" +msgstr "" + +#: src/tags.cpp:750 +msgid "Rating tag used by Windows, value in percent" +msgstr "" + +#: src/tags.cpp:752 +#, fuzzy +msgid "Image ID" +msgstr "Kích cỡ hình ảnh" + +#: src/tags.cpp:753 +msgid "" +"ImageID is the full pathname of the original, high-resolution image, or any " +"other identifying string that uniquely identifies the original image (Adobe " +"OPI)." +msgstr "" + +#: src/tags.cpp:757 +msgid "CFA Repeat Pattern Dimension" +msgstr "" + +#: src/tags.cpp:758 +msgid "" +"Contains two values representing the minimum rows and columns to define the " +"repeating patterns of the color filter array" +msgstr "" + +#: src/tags.cpp:762 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods" +msgstr "" + +#: src/tags.cpp:770 +msgid "" +"Copyright information. In this standard the tag is used to indicate both the " +"photographer and editor copyrights. It is the copyright notice of the person " +"or organization claiming rights to the image. The Interoperability copyright " +"statement including date and rights should be written in this field; e.g., " +"\"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the " +"field records both the photographer and editor copyrights, with each " +"recorded in a separate part of the statement. When there is a clear " +"distinction between the photographer and editor copyrights, these are to be " +"written in the order of photographer followed by editor copyright, separated " +"by NULL (in this case since the statement also ends with a NULL, there are " +"two NULL codes). When only the photographer copyright is given, it is " +"terminated by one NULL code. When only the editor copyright is given, the " +"photographer copyright part consists of one space followed by a terminating " +"NULL code, then the editor copyright is given. When the field is left blank, " +"it is treated as unknown." +msgstr "" + +#: src/tags.cpp:789 +msgid "Exposure time, given in seconds." +msgstr "" + +#: src/tags.cpp:790 src/tags.cpp:1553 +#, fuzzy +msgid "The F number." +msgstr "Tập tin số" + +#: src/tags.cpp:791 +msgid "IPTC/NAA" +msgstr "IPTC/NAA" + +#: src/tags.cpp:792 +msgid "Contains an IPTC/NAA record" +msgstr "" + +#: src/tags.cpp:794 +msgid "Image Resources Block" +msgstr "" + +#: src/tags.cpp:795 +msgid "Contains information embedded by the Adobe Photoshop application" +msgstr "" + +#: src/tags.cpp:798 +msgid "" +"A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure " +"as that of the IFD specified in TIFF. ordinarily, however, it does not " +"contain image data as in the case of TIFF." +msgstr "" + +#: src/tags.cpp:803 +#, fuzzy +msgid "Inter Color Profile" +msgstr "Lá»c màu" + +#: src/tags.cpp:804 +msgid "" +"Contains an InterColor Consortium (ICC) format color space characterization/" +"profile" +msgstr "" + +#: src/tags.cpp:806 src/tags.cpp:1556 +msgid "" +"The class of the program used by the camera to set exposure when the picture " +"is taken." +msgstr "" + +#: src/tags.cpp:807 +msgid "Indicates the spectral sensitivity of each channel of the camera used." +msgstr "" + +#: src/tags.cpp:809 +msgid "" +"A pointer to the GPS Info IFD. The Interoperability structure of the GPS " +"Info IFD, like that of Exif IFD, has no image data." +msgstr "" + +#: src/tags.cpp:813 src/tags.cpp:1564 +#, fuzzy +msgid "ISO Speed Ratings" +msgstr "Tuỳ chỉnh chế độ nhạy sáng" + +#: src/tags.cpp:813 src/tags.cpp:1565 +msgid "" +"Indicates the ISO Speed and ISO Latitude of the camera or input device as " +"specified in ISO 12232." +msgstr "" + +#: src/tags.cpp:814 +msgid "" +"Indicates the Opto-Electric Conversion Function (OECF) specified in ISO " +"14524." +msgstr "" + +#: src/tags.cpp:815 +#, fuzzy +msgid "Interlace" +msgstr "Äèn chá»›p trong máy" + +#: src/tags.cpp:815 +msgid "Indicates the field number of multifield images." +msgstr "" + +#: src/tags.cpp:816 +msgid "Time Zone Offset" +msgstr "" + +#: src/tags.cpp:817 +msgid "" +"This optional tag encodes the time zone of the camera clock (relativeto " +"Greenwich Mean Time) used to create the DataTimeOriginal tag-valuewhen the " +"picture was taken. It may also contain the time zone offsetof the clock used " +"to create the DateTime tag-value when the image wasmodified." +msgstr "" + +#: src/tags.cpp:823 +msgid "Self Timer Mode" +msgstr "" + +#: src/tags.cpp:823 +msgid "Number of seconds image capture was delayed from button press." +msgstr "" + +#: src/tags.cpp:824 +#, fuzzy +msgid "Date Time Original" +msgstr "Ngày và giá» ban đầu" + +#: src/tags.cpp:824 +#, fuzzy +msgid "The date and time when the original image data was generated." +msgstr "Ngày và giá» phim được quay" + +#: src/tags.cpp:825 +msgid "Specific to compressed data; states the compressed bits per pixel." +msgstr "" + +#: src/tags.cpp:826 +msgid "Shutter speed." +msgstr "Tốc độ chụp" + +#: src/tags.cpp:827 +msgid "The lens aperture." +msgstr "Khẩu độ ống kính" + +#: src/tags.cpp:828 +msgid "The value of brightness." +msgstr "" + +#: src/tags.cpp:829 +msgid "The exposure bias." +msgstr "Äá»™ bù trừ phÆ¡i sáng" + +#: src/tags.cpp:830 src/tags.cpp:1645 +msgid "Max Aperture Value" +msgstr "Giá trị khẩu độ tối Ä‘a" + +#: src/tags.cpp:830 +msgid "The smallest F number of the lens." +msgstr "" + +#: src/tags.cpp:831 src/tags.cpp:1651 +msgid "The distance to the subject, given in meters." +msgstr "" + +#: src/tags.cpp:832 src/tags.cpp:1654 +#, fuzzy +msgid "The metering mode." +msgstr "Chế độ Ä‘o đạc" + +#: src/tags.cpp:833 src/tags.cpp:1657 +msgid "The kind of light source." +msgstr "" + +#: src/tags.cpp:834 +#, fuzzy +msgid "Indicates the status of flash when the image was shot." +msgstr "Ngày và giá» phim được quay" + +#: src/tags.cpp:835 +msgid "The actual focal length of the lens, in mm." +msgstr "" + +#: src/tags.cpp:836 +msgid "Amount of flash energy (BCPS)." +msgstr "" + +#: src/tags.cpp:837 +msgid "SFR of the camera." +msgstr "" + +#: src/tags.cpp:838 +msgid "Noise" +msgstr "Nhiá»…u" + +#: src/tags.cpp:838 +msgid "Noise measurement values." +msgstr "" + +#: src/tags.cpp:839 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth " +"direction for main image." +msgstr "" +"Số Ä‘iểm ảnh trên má»—i đơn vị phân giải vá» chiá»u " +"cao. Khi không biết độ phân giải cá»§a ảnh, được chỉ định là 72 " +"[dpi]." + +#: src/tags.cpp:840 +#, fuzzy +msgid "" +"Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength " +"direction for main image." +msgstr "" +"Số Ä‘iểm ảnh trên má»—i đơn vị phân giải vá» chiá»u " +"cao. Khi không biết độ phân giải cá»§a ảnh, được chỉ định là 72 " +"[dpi]." + +#: src/tags.cpp:841 +msgid "" +"Unit of measurement for FocalPlaneXResolution(37390) and " +"FocalPlaneYResolution(37391)." +msgstr "" + +#: src/tags.cpp:842 +msgid "Number assigned to an image, e.g., in a chained image burst." +msgstr "" + +#: src/tags.cpp:843 +msgid "Security Classification" +msgstr "" + +#: src/tags.cpp:843 +msgid "Security classification assigned to the image." +msgstr "" + +#: src/tags.cpp:844 +msgid "Record of what has been done to the image." +msgstr "" + +#: src/tags.cpp:845 +msgid "" +"Indicates the location and area of the main subject in the overall scene." +msgstr "" + +#: src/tags.cpp:846 +msgid "Encodes the camera exposure index setting when image was captured." +msgstr "" + +#: src/tags.cpp:847 +#, fuzzy +msgid "TIFF/EP Standard ID" +msgstr "Thẻ TIFF/EP" + +#: src/tags.cpp:848 +msgid "" +"Contains four ASCII characters representing the TIFF/EP standard version of " +"a TIFF/EP file, eg '1', '0', '0', '0'" +msgstr "" + +#: src/tags.cpp:851 +msgid "Type of image sensor." +msgstr "" + +#: src/tags.cpp:852 +msgid "Windows Title" +msgstr "Tiêu đỠcá»­a sổ" + +#: src/tags.cpp:853 +msgid "Title tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:855 +#, fuzzy +msgid "Windows Comment" +msgstr "Nhật kí bình luận" + +#: src/tags.cpp:856 +msgid "Comment tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:858 +#, fuzzy +msgid "Windows Author" +msgstr "Tiêu đỠcá»­a sổ" + +#: src/tags.cpp:859 +msgid "Author tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:861 +#, fuzzy +msgid "Windows Keywords" +msgstr "Từ khóa" + +#: src/tags.cpp:862 +msgid "Keywords tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:864 +#, fuzzy +msgid "Windows Subject" +msgstr "Tiêu đỠcá»­a sổ" + +#: src/tags.cpp:865 +msgid "Subject tag used by Windows, encoded in UCS2" +msgstr "" + +#: src/tags.cpp:867 +msgid "Print Image Matching" +msgstr "" + +#: src/tags.cpp:868 +msgid "Print Image Matching, description needed." +msgstr "" + +#: src/tags.cpp:870 +#, fuzzy +msgid "DNG version" +msgstr "Phiên bản PDF" + +#: src/tags.cpp:871 +msgid "" +"This tag encodes the DNG four-tier version number. For files compliant with " +"version 1.1.0.0 of the DNG specification, this tag should contain the bytes: " +"1, 1, 0, 0." +msgstr "" + +#: src/tags.cpp:875 +#, fuzzy +msgid "DNG backward version" +msgstr "Firmware Version" + +#: src/tags.cpp:876 +msgid "" +"This tag specifies the oldest version of the Digital Negative specification " +"for which a file is compatible. Readers shouldnot attempt to read a file if " +"this tag specifies a version number that is higher than the version number " +"of the specification the reader was based on. In addition to checking the " +"version tags, readers should, for all tags, check the types, counts, and " +"values, to verify it is able to correctly read the file." +msgstr "" + +#: src/tags.cpp:884 +#, fuzzy +msgid "Unique Camera Model" +msgstr "Kiểu Ca-me-ra" + +#: src/tags.cpp:885 +msgid "" +"Defines a unique, non-localized name for the camera model that created the " +"image in the raw file. This name should include the manufacturer's name to " +"avoid conflicts, and should not be localized, even if the camera name itself " +"is localized for different markets (see LocalizedCameraModel). This string " +"may be used by reader software to index into per-model preferences and " +"replacement profiles." +msgstr "" + +#: src/tags.cpp:892 +#, fuzzy +msgid "Localized Camera Model" +msgstr "Kiểu Ca-me-ra" + +#: src/tags.cpp:893 +msgid "" +"Similar to the UniqueCameraModel field, except the name can be localized for " +"different markets to match the localization of the camera name." +msgstr "" + +#: src/tags.cpp:897 +msgid "CFA Plane Color" +msgstr "" + +#: src/tags.cpp:898 +msgid "" +"Provides a mapping between the values in the CFAPattern tag and the plane " +"numbers in LinearRaw space. This is a required tag for non-RGB CFA images." +msgstr "" + +#: src/tags.cpp:902 +msgid "CFA Layout" +msgstr "" + +#: src/tags.cpp:903 +msgid "Describes the spatial layout of the CFA." +msgstr "" + +#: src/tags.cpp:906 +msgid "" +"Describes a lookup table that maps stored values into linear values. This " +"tag is typically used to increase compression ratios by storing the raw data " +"in a non-linear, more visually uniform space with fewer total encoding " +"levels. If SamplesPerPixel is not equal to one, this single table applies to " +"all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:912 +msgid "Black Level Repeat Dim" +msgstr "" + +#: src/tags.cpp:913 +msgid "Specifies repeat pattern size for the BlackLevel tag." +msgstr "" + +#: src/tags.cpp:916 +msgid "" +"Specifies the zero light (a.k.a. thermal black or black current) encoding " +"level, as a repeating pattern. The origin of this pattern is the top-left " +"corner of the ActiveArea rectangle. The values are stored in row-column-" +"sample scan order." +msgstr "" + +#: src/tags.cpp:921 +msgid "Black Level Delta H" +msgstr "" + +#: src/tags.cpp:922 +msgid "" +"If the zero light encoding level is a function of the image column, " +"BlackLevelDeltaH specifies the difference between the zero light encoding " +"level for each column and the baseline zero light encoding level. If " +"SamplesPerPixel is not equal to one, this single table applies to all the " +"samples for each pixel." +msgstr "" + +#: src/tags.cpp:928 +msgid "Black Level Delta V" +msgstr "" + +#: src/tags.cpp:929 +msgid "" +"If the zero light encoding level is a function of the image row, this tag " +"specifies the difference between the zero light encoding level for each row " +"and the baseline zero light encoding level. If SamplesPerPixel is not equal " +"to one, this single table applies to all the samples for each pixel." +msgstr "" + +#: src/tags.cpp:935 +#, fuzzy +msgid "White Level" +msgstr "Mức Pin" + +#: src/tags.cpp:936 +msgid "" +"This tag specifies the fully saturated encoding level for the raw sample " +"values. Saturation is caused either by the sensor itself becoming highly non-" +"linear in response, or by the camera's analog to digital converter clipping." +msgstr "" + +#: src/tags.cpp:941 +#, fuzzy +msgid "Default Scale" +msgstr "Mặc định" + +#: src/tags.cpp:942 +msgid "" +"DefaultScale is required for cameras with non-square pixels. It specifies " +"the default scale factors for each direction to convert the image to square " +"pixels. Typically these factors are selected to approximately preserve total " +"pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such " +"as the Fujifilm SuperCCD, these two values should usually differ by a factor " +"of 2.0." +msgstr "" + +#: src/tags.cpp:949 +msgid "Default Crop Origin" +msgstr "" + +#: src/tags.cpp:950 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropOrigin specifies the origin of the final image " +"area, in raw image coordinates (i.e., before the DefaultScale has been " +"applied), relative to the top-left corner of the ActiveArea rectangle." +msgstr "" + +#: src/tags.cpp:957 +#, fuzzy +msgid "Default Crop Size" +msgstr "Các cài đặt mặc định" + +#: src/tags.cpp:958 +msgid "" +"Raw images often store extra pixels around the edges of the final image. " +"These extra pixels help prevent interpolation artifacts near the edges of " +"the final image. DefaultCropSize specifies the size of the final image area, " +"in raw image coordinates (i.e., before the DefaultScale has been applied)." +msgstr "" + +#: src/tags.cpp:964 +#, fuzzy +msgid "Color Matrix 1" +msgstr "Ma trận màu" + +#: src/tags.cpp:965 +msgid "" +"ColorMatrix1 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the first calibration " +"illuminant. The matrix values are stored in row scan order. The ColorMatrix1 " +"tag is required for all non-monochrome DNG files." +msgstr "" + +#: src/tags.cpp:971 +#, fuzzy +msgid "Color Matrix 2" +msgstr "Ma trận màu" + +#: src/tags.cpp:972 +msgid "" +"ColorMatrix2 defines a transformation matrix that converts XYZ values to " +"reference camera native color space values, under the second calibration " +"illuminant. The matrix values are stored in row scan order." +msgstr "" + +#: src/tags.cpp:977 +msgid "Camera Calibration 1" +msgstr "" + +#: src/tags.cpp:978 +msgid "" +"CameraCalibration1 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the first calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix1 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:987 +msgid "Camera Calibration 2" +msgstr "" + +#: src/tags.cpp:988 +msgid "" +"CameraCalibration2 defines a calibration matrix that transforms reference " +"camera native space values to individual camera native space values under " +"the second calibration illuminant. The matrix is stored in row scan order. " +"This matrix is stored separately from the matrix specified by the " +"ColorMatrix2 tag to allow raw converters to swap in replacement color " +"matrices based on UniqueCameraModel tag, while still taking advantage of any " +"per-individual camera calibration performed by the camera manufacturer." +msgstr "" + +#: src/tags.cpp:997 +msgid "Reduction Matrix 1" +msgstr "" + +#: src/tags.cpp:998 +msgid "" +"ReductionMatrix1 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the first calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1004 +msgid "Reduction Matrix 2" +msgstr "" + +#: src/tags.cpp:1005 +msgid "" +"ReductionMatrix2 defines a dimensionality reduction matrix for use as the " +"first stage in converting color camera native space values to XYZ values, " +"under the second calibration illuminant. This tag may only be used if " +"ColorPlanes is greater than 3. The matrix is stored in row scan order." +msgstr "" + +#: src/tags.cpp:1011 +#, fuzzy +msgid "Analog Balance" +msgstr "Cân bằng Màu sắc" + +#: src/tags.cpp:1012 +msgid "" +"Normally the stored raw values are not white balanced, since any digital " +"white balancing will reduce the dynamic range of the final image if the user " +"decides to later adjust the white balance; however, if camera hardware is " +"capable of white balancing the color channels before the signal is " +"digitized, it can improve the dynamic range of the final image. " +"AnalogBalance defines the gain, either analog (recommended) or digital (not " +"recommended) that has been applied the stored raw values." +msgstr "" + +#: src/tags.cpp:1021 +#, fuzzy +msgid "As Shot Neutral" +msgstr "Trung tính" + +#: src/tags.cpp:1022 +msgid "" +"Specifies the selected white balance at time of capture, encoded as the " +"coordinates of a perfectly neutral color in linear reference space values. " +"The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag." +msgstr "" + +#: src/tags.cpp:1027 +msgid "As Shot White XY" +msgstr "" + +#: src/tags.cpp:1028 +msgid "" +"Specifies the selected white balance at time of capture, encoded as x-y " +"chromaticity coordinates. The inclusion of this tag precludes the inclusion " +"of the AsShotNeutral tag." +msgstr "" + +#: src/tags.cpp:1032 +#, fuzzy +msgid "Baseline Exposure" +msgstr "PhÆ¡i sáng" + +#: src/tags.cpp:1033 +msgid "" +"Camera models vary in the trade-off they make between highlight headroom and " +"shadow noise. Some leave a significant amount of highlight headroom during a " +"normal exposure. This allows significant negative exposure compensation to " +"be applied during raw conversion, but also means normal exposures will " +"contain more shadow noise. Other models leave less headroom during normal " +"exposures. This allows for less negative exposure compensation, but results " +"in lower shadow noise for normal exposures. Because of these differences, a " +"raw converter needs to vary the zero point of its exposure compensation " +"control from model to model. BaselineExposure specifies by how much (in EV " +"units) to move the zero point. Positive values result in brighter default " +"results, while negative values result in darker default results." +msgstr "" + +#: src/tags.cpp:1047 +msgid "Baseline Noise" +msgstr "" + +#: src/tags.cpp:1048 +msgid "" +"Specifies the relative noise level of the camera model at a baseline ISO " +"value of 100, compared to a reference camera model. Since noise levels tend " +"to vary approximately with the square root of the ISO value, a raw converter " +"can use this value, combined with the current ISO, to estimate the relative " +"noise level of the current image." +msgstr "" + +#: src/tags.cpp:1054 +#, fuzzy +msgid "Baseline Sharpness" +msgstr "Äá»™ mịn" + +#: src/tags.cpp:1055 +msgid "" +"Specifies the relative amount of sharpening required for this camera model, " +"compared to a reference camera model. Camera models vary in the strengths of " +"their anti-aliasing filters. Cameras with weak or no filters require less " +"sharpening than cameras with strong anti-aliasing filters." +msgstr "" + +#: src/tags.cpp:1061 +msgid "Bayer Green Split" +msgstr "" + +#: src/tags.cpp:1062 +msgid "" +"Only applies to CFA images using a Bayer pattern filter array. This tag " +"specifies, in arbitrary units, how closely the values of the green pixels in " +"the blue/green rows track the values of the green pixels in the red/green " +"rows. A value of zero means the two kinds of green pixels track closely, " +"while a non-zero value means they sometimes diverge. The useful range for " +"this tag is from 0 (no divergence) to about 5000 (quite large divergence)." +msgstr "" + +#: src/tags.cpp:1070 +msgid "Linear Response Limit" +msgstr "" + +#: src/tags.cpp:1071 +msgid "" +"Some sensors have an unpredictable non-linearity in their response as they " +"near the upper limit of their encoding range. This non-linearity results in " +"color shifts in the highlight areas of the resulting image unless the raw " +"converter compensates for this effect. LinearResponseLimit specifies the " +"fraction of the encoding range above which the response may become " +"significantly non-linear." +msgstr "" + +#: src/tags.cpp:1079 +msgid "" +"CameraSerialNumber contains the serial number of the camera or camera body " +"that captured the image." +msgstr "" + +#: src/tags.cpp:1082 +msgid "Lens Info" +msgstr "Thông tin ống kính" + +#: src/tags.cpp:1083 +msgid "" +"Contains information about the lens that captured the image. If the minimum " +"f-stops are unknown, they should be encoded as 0/0." +msgstr "" + +#: src/tags.cpp:1086 +msgid "Chroma Blur Radius" +msgstr "" + +#: src/tags.cpp:1087 +msgid "" +"ChromaBlurRadius provides a hint to the DNG reader about how much chroma " +"blur should be applied to the image. If this tag is omitted, the reader will " +"use its default amount of chroma blurring. Normally this tag is only " +"included for non-CFA images, since the amount of chroma blur required for " +"mosaic images is highly dependent on the de-mosaic algorithm, in which case " +"the DNG reader's default value is likely optimized for its particular de-" +"mosaic algorithm." +msgstr "" + +#: src/tags.cpp:1095 +#, fuzzy +msgid "Anti Alias Strength" +msgstr "Äá»™ mạnh đèn chá»›p" + +#: src/tags.cpp:1096 +msgid "" +"Provides a hint to the DNG reader about how strong the camera's anti-alias " +"filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is " +"prone to aliasing artifacts with some subjects), while a value of 1.0 means " +"a strong anti-alias filter (i.e., the camera almost never has aliasing " +"artifacts)." +msgstr "" + +#: src/tags.cpp:1102 +msgid "Shadow Scale" +msgstr "" + +#: src/tags.cpp:1103 +msgid "" +"This tag is used by Adobe Camera Raw to control the sensitivity of its " +"'Shadows' slider." +msgstr "" + +#: src/tags.cpp:1106 +msgid "DNG Private Data" +msgstr "" + +#: src/tags.cpp:1107 +msgid "" +"Provides a way for camera manufacturers to store private data in the DNG " +"file for use by their own raw converters, and to have that data preserved by " +"programs that edit DNG files." +msgstr "" + +#: src/tags.cpp:1111 +msgid "MakerNote Safety" +msgstr "" + +#: src/tags.cpp:1112 +msgid "" +"MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is " +"safe to preserve along with the rest of the EXIF data. File browsers and " +"other image management software processing an image with a preserved " +"MakerNote should be aware that any thumbnail image embedded in the MakerNote " +"may be stale, and may not reflect the current state of the full size image." +msgstr "" + +#: src/tags.cpp:1119 +msgid "Calibration Illuminant 1" +msgstr "" + +#: src/tags.cpp:1120 +msgid "" +"The illuminant used for the first set of color calibration tags " +"(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for " +"this tag are the same as the legal values for the LightSource EXIF tag." +msgstr "" + +#: src/tags.cpp:1125 +msgid "Calibration Illuminant 2" +msgstr "" + +#: src/tags.cpp:1126 +msgid "" +"The illuminant used for an optional second set of color calibration tags " +"(ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for " +"this tag are the same as the legal values for the CalibrationIlluminant1 " +"tag; however, if both are included, neither is allowed to have a value of 0 " +"(unknown)." +msgstr "" + +#: src/tags.cpp:1132 +#, fuzzy +msgid "Best Quality Scale" +msgstr "Chất lượng hình ảnh 2" + +#: src/tags.cpp:1133 +msgid "" +"For some cameras, the best possible image quality is not achieved by " +"preserving the total pixel count during conversion. For example, Fujifilm " +"SuperCCD images have maximum detail when their total pixel count is doubled. " +"This tag specifies the amount by which the values of the DefaultScale tag " +"need to be multiplied to achieve the best quality image size." +msgstr "" + +#: src/tags.cpp:1140 +msgid "Raw Data Unique ID" +msgstr "" + +#: src/tags.cpp:1141 +msgid "" +"This tag contains a 16-byte unique identifier for the raw image data in the " +"DNG file. DNG readers can use this tag to recognize a particular raw image, " +"even if the file's name or the metadata contained in the file has been " +"changed. If a DNG writer creates such an identifier, it should do so using " +"an algorithm that will ensure that it is very unlikely two different images " +"will end up having the same identifier." +msgstr "" + +#: src/tags.cpp:1149 +#, fuzzy +msgid "Original Raw File Name" +msgstr "Tên tập tin gốc" + +#: src/tags.cpp:1150 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the file name of that original raw file." +msgstr "" + +#: src/tags.cpp:1153 +msgid "Original Raw File Data" +msgstr "" + +#: src/tags.cpp:1154 +msgid "" +"If the DNG file was converted from a non-DNG raw file, then this tag " +"contains the compressed contents of that original raw file. The contents of " +"this tag always use the big-endian byte order. The tag contains a sequence " +"of data blocks. Future versions of the DNG specification may define " +"additional data blocks, so DNG readers should ignore extra bytes when " +"parsing this tag. DNG readers should also detect the case where data blocks " +"are missing from the end of the sequence, and should assume a default value " +"for all the missing blocks. There are no padding or alignment bytes between " +"data blocks." +msgstr "" + +#: src/tags.cpp:1164 +#, fuzzy +msgid "Active Area" +msgstr "Vùng lấy nét tá»± động" + +#: src/tags.cpp:1165 +msgid "" +"This rectangle defines the active (non-masked) pixels of the sensor. The " +"order of the rectangle coordinates is: top, left, bottom, right." +msgstr "" + +#: src/tags.cpp:1168 +#, fuzzy +msgid "Masked Areas" +msgstr "Vùng lấy nét tá»± động" + +#: src/tags.cpp:1169 +msgid "" +"This tag contains a list of non-overlapping rectangle coordinates of fully " +"masked pixels, which can be optionally used by DNG readers to measure the " +"black encoding level. The order of each rectangle's coordinates is: top, " +"left, bottom, right. If the raw image data has already had its black " +"encoding level subtracted, then this tag should not be used, since the " +"masked pixels are no longer useful." +msgstr "" + +#: src/tags.cpp:1176 +msgid "As-Shot ICC Profile" +msgstr "" + +#: src/tags.cpp:1177 +msgid "" +"This tag contains an ICC profile that, in conjunction with the " +"AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to " +"specify a default color rendering from camera color space coordinates " +"(linear reference values) into the ICC profile connection space. The ICC " +"profile connection space is an output referred colorimetric space, whereas " +"the other color calibration tags in DNG specify a conversion into a scene " +"referred colorimetric space. This means that the rendering in this profile " +"should include any desired tone and gamut mapping needed to convert between " +"scene referred values and output referred values." +msgstr "" + +#: src/tags.cpp:1188 +msgid "As-Shot Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1189 +msgid "" +"This tag is used in conjunction with the AsShotICCProfile tag. It specifies " +"a matrix that should be applied to the camera color space coordinates before " +"processing the values through the ICC profile specified in the " +"AsShotICCProfile tag. The matrix is stored in the row scan order. If " +"ColorPlanes is greater than three, then this matrix can (but is not required " +"to) reduce the dimensionality of the color data down to three components, in " +"which case the AsShotICCProfile should have three rather than ColorPlanes " +"input components." +msgstr "" + +#: src/tags.cpp:1198 +msgid "Current ICC Profile" +msgstr "" + +#: src/tags.cpp:1199 +msgid "" +"This tag is used in conjunction with the CurrentPreProfileMatrix tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1205 +msgid "Current Pre-Profile Matrix" +msgstr "" + +#: src/tags.cpp:1206 +msgid "" +"This tag is used in conjunction with the CurrentICCProfile tag. The " +"CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and " +"usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except " +"they are for use by raw file editors rather than camera manufacturers." +msgstr "" + +#: src/tags.cpp:1212 +#, fuzzy +msgid "Colorimetric Reference" +msgstr "Liên kết dá»± án" + +#: src/tags.cpp:1213 +msgid "" +"The DNG color model documents a transform between camera colors and CIE XYZ " +"values. This tag describes the colorimetric reference for the CIE XYZ " +"values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-" +"referred, using the ICC profile perceptual dynamic range. This tag allows " +"output-referred data to be stored in DNG files and still processed correctly " +"by DNG readers." +msgstr "" + +#: src/tags.cpp:1220 +msgid "Camera Calibration Signature" +msgstr "" + +#: src/tags.cpp:1221 +msgid "" +"A UTF-8 encoded string associated with the CameraCalibration1 and " +"CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " +"should only be used in the DNG color transform if the string stored in the " +"CameraCalibrationSignature tag exactly matches the string stored in the " +"ProfileCalibrationSignature tag for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1227 +msgid "Profile Calibration Signature" +msgstr "" + +#: src/tags.cpp:1228 +msgid "" +"A UTF-8 encoded string associated with the camera profile tags. The " +"CameraCalibration1 and CameraCalibration2 tags should only be used in the " +"DNG color transfer if the string stored in the CameraCalibrationSignature " +"tag exactly matches the string stored in the ProfileCalibrationSignature tag " +"for the selected camera profile." +msgstr "" + +#: src/tags.cpp:1234 +#, fuzzy +msgid "As Shot Profile Name" +msgstr "Tên phim" + +#: src/tags.cpp:1235 +msgid "" +"A UTF-8 encoded string containing the name of the \"as shot\" camera " +"profile, if any." +msgstr "" + +#: src/tags.cpp:1238 +#, fuzzy +msgid "Noise Reduction Applied" +msgstr "Giảm nhiá»…u" + +#: src/tags.cpp:1239 +msgid "" +"This tag indicates how much noise reduction has been applied to the raw data " +"on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has " +"been applied. A 1.0 value indicates that the \"ideal\" amount of noise " +"reduction has been applied, i.e. that the DNG reader should not apply " +"additional noise reduction by default. A value of 0/0 indicates that this " +"parameter is unknown." +msgstr "" + +#: src/tags.cpp:1246 +#, fuzzy +msgid "Profile Name" +msgstr "Tên Thư mục" + +#: src/tags.cpp:1247 +msgid "" +"A UTF-8 encoded string containing the name of the camera profile. This tag " +"is optional if there is only a single camera profile stored in the file but " +"is required for all camera profiles if there is more than one camera profile " +"stored in the file." +msgstr "" + +#: src/tags.cpp:1252 +msgid "Profile Hue Sat Map Dims" +msgstr "" + +#: src/tags.cpp:1253 +msgid "" +"This tag specifies the number of input samples in each dimension of the hue/" +"saturation/value mapping tables. The data for these tables are stored in " +"ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case " +"has ValueDivisions equal to 1, so only hue and saturation are used as inputs " +"to the mapping table." +msgstr "" + +#: src/tags.cpp:1259 +msgid "Profile Hue Sat Map Data 1" +msgstr "" + +#: src/tags.cpp:1260 +msgid "" +"This tag contains the data for the first hue/saturation/value mapping table. " +"Each entry of the table contains three 32-bit IEEE floating-point values. " +"The first entry is hue shift in degrees; the second entry is saturation " +"scale factor; and the third entry is a value scale factor. The table entries " +"are stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1269 +msgid "Profile Hue Sat Map Data 2" +msgstr "" + +#: src/tags.cpp:1270 +msgid "" +"This tag contains the data for the second hue/saturation/value mapping " +"table. Each entry of the table contains three 32-bit IEEE floating-point " +"values. The first entry is hue shift in degrees; the second entry is a " +"saturation scale factor; and the third entry is a value scale factor. The " +"table entries are stored in the tag in nested loop order, with the value " +"divisions in the outer loop, the hue divisions in the middle loop, and the " +"saturation divisions in the inner loop. All zero input saturation entries " +"are required to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1279 +msgid "Profile Tone Curve" +msgstr "" + +#: src/tags.cpp:1280 +msgid "" +"This tag contains a default tone curve that can be applied while processing " +"the image as a starting point for user adjustments. The curve is specified " +"as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each " +"sample has an input value in the range of 0.0 to 1.0, and an output value in " +"the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and " +"the last sample is required to be (1.0, 1.0). Interpolated the curve using a " +"cubic spline." +msgstr "" + +#: src/tags.cpp:1288 +msgid "Profile Embed Policy" +msgstr "" + +#: src/tags.cpp:1289 +msgid "" +"This tag contains information about the usage rules for the associated " +"camera profile." +msgstr "" + +#: src/tags.cpp:1292 +#, fuzzy +msgid "Profile Copyright" +msgstr "Bản quyá»n" + +#: src/tags.cpp:1293 +msgid "" +"A UTF-8 encoded string containing the copyright information for the camera " +"profile. This string always should be preserved along with the other camera " +"profile tags." +msgstr "" + +#: src/tags.cpp:1297 +#, fuzzy +msgid "Forward Matrix 1" +msgstr "Ma trận màu" + +#: src/tags.cpp:1298 src/tags.cpp:1302 +msgid "" +"This tag defines a matrix that maps white balanced camera colors to XYZ D50 " +"colors." +msgstr "" + +#: src/tags.cpp:1301 +#, fuzzy +msgid "Forward Matrix 2" +msgstr "Ma trận màu" + +#: src/tags.cpp:1305 +msgid "Preview Application Name" +msgstr "" + +#: src/tags.cpp:1306 +msgid "" +"A UTF-8 encoded string containing the name of the application that created " +"the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1309 +msgid "Preview Application Version" +msgstr "" + +#: src/tags.cpp:1310 +msgid "" +"A UTF-8 encoded string containing the version number of the application that " +"created the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1313 +#, fuzzy +msgid "Preview Settings Name" +msgstr "Xem trước hình ảnh" + +#: src/tags.cpp:1314 +msgid "" +"A UTF-8 encoded string containing the name of the conversion settings (for " +"example, snapshot name) used for the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1317 +#, fuzzy +msgid "Preview Settings Digest" +msgstr "Bắt đầu ảnh xem trước" + +#: src/tags.cpp:1318 +msgid "" +"A unique ID of the conversion settings (for example, MD5 digest) used to " +"render the preview stored in the IFD." +msgstr "" + +#: src/tags.cpp:1321 +#, fuzzy +msgid "Preview Color Space" +msgstr "Không gian màu phim" + +#: src/tags.cpp:1322 +msgid "" +"This tag specifies the color space in which the rendered preview in this IFD " +"is stored. The default value for this tag is sRGB for color previews and " +"Gray Gamma 2.2 for monochrome previews." +msgstr "" + +#: src/tags.cpp:1326 +#, fuzzy +msgid "Preview Date Time" +msgstr "Xem trước hình ảnh" + +#: src/tags.cpp:1327 +msgid "" +"This tag is an ASCII string containing the name of the date/time at which " +"the preview stored in the IFD was rendered. The date/time is encoded using " +"ISO 8601 format." +msgstr "" + +#: src/tags.cpp:1331 +#, fuzzy +msgid "Raw Image Digest" +msgstr "Kích cỡ hình ảnh gốc" + +#: src/tags.cpp:1332 +msgid "" +"This tag is an MD5 digest of the raw image data. All pixels in the image are " +"processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep " +"(16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The " +"data for each pixel is processed in little-endian byte order." +msgstr "" + +#: src/tags.cpp:1337 +msgid "Original Raw File Digest" +msgstr "" + +#: src/tags.cpp:1338 +msgid "" +"This tag is an MD5 digest of the data stored in the OriginalRawFileData tag." +msgstr "" + +#: src/tags.cpp:1341 +msgid "Sub Tile Block Size" +msgstr "" + +#: src/tags.cpp:1342 +msgid "" +"Normally, the pixels within a tile are stored in simple row-scan order. This " +"tag specifies that the pixels within a tile should be grouped first into " +"rectangular blocks of the specified size. These blocks are stored in row-" +"scan order. Within each block, the pixels are stored in row-scan order. The " +"use of a non-default value for this tag requires setting the " +"DNGBackwardVersion tag to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1349 +msgid "Row Interleave Factor" +msgstr "" + +#: src/tags.cpp:1350 +msgid "" +"This tag specifies that rows of the image are stored in interleaved order. " +"The value of the tag specifies the number of interleaved fields. The use of " +"a non-default value for this tag requires setting the DNGBackwardVersion tag " +"to at least 1.2.0.0." +msgstr "" + +#: src/tags.cpp:1355 +msgid "Profile Look Table Dims" +msgstr "" + +#: src/tags.cpp:1356 +msgid "" +"This tag specifies the number of input samples in each dimension of a " +"default \"look\" table. The data for this table is stored in the " +"ProfileLookTableData tag." +msgstr "" + +#: src/tags.cpp:1360 +msgid "Profile Look Table Data" +msgstr "" + +#: src/tags.cpp:1361 +msgid "" +"This tag contains a default \"look\" table that can be applied while " +"processing the image as a starting point for user adjustment. This table " +"uses the same format as the tables stored in the ProfileHueSatMapData1 and " +"ProfileHueSatMapData2 tags, and is applied in the same color space. However, " +"it should be applied later in the processing pipe, after any exposure " +"compensation and/or fill light stages, but before any tone curve stage. Each " +"entry of the table contains three 32-bit IEEE floating-point values. The " +"first entry is hue shift in degrees, the second entry is a saturation scale " +"factor, and the third entry is a value scale factor. The table entries are " +"stored in the tag in nested loop order, with the value divisions in the " +"outer loop, the hue divisions in the middle loop, and the saturation " +"divisions in the inner loop. All zero input saturation entries are required " +"to have a value scale factor of 1.0." +msgstr "" + +#: src/tags.cpp:1375 +msgid "Opcode List 1" +msgstr "" + +#: src/tags.cpp:1376 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, as " +"read directly from the file." +msgstr "" + +#: src/tags.cpp:1379 +msgid "Opcode List 2" +msgstr "" + +#: src/tags.cpp:1380 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been mapped to linear reference values." +msgstr "" + +#: src/tags.cpp:1383 +msgid "Opcode List 3" +msgstr "" + +#: src/tags.cpp:1384 +msgid "" +"Specifies the list of opcodes that should be applied to the raw image, just " +"after it has been demosaiced." +msgstr "" + +#: src/tags.cpp:1387 +#, fuzzy +msgid "Noise Profile" +msgstr "Lá»c nhiá»…u" + +#: src/tags.cpp:1388 +msgid "" +"NoiseProfile describes the amount of noise in a raw image. Specifically, " +"this tag models the amount of signal-dependent photon (shot) noise and " +"signal-independent sensor readout noise, two common sources of noise in raw " +"images. The model assumes that the noise is white and spatially independent, " +"ignoring fixed pattern effects and other sources of noise (e.g., pixel " +"response non-uniformity, spatially-dependent thermal effects, etc.)." +msgstr "" + +#: src/tags.cpp:1396 src/tags.cpp:1397 +#, fuzzy +msgid "Unknown IFD tag" +msgstr "Không biết " + +#: src/tags.cpp:1408 src/tags.cpp:1466 +#, fuzzy +msgid "Not defined" +msgstr "chưa được sá»­ dụng" + +#: src/tags.cpp:1413 +#, fuzzy +msgid "Creative program" +msgstr "Ngưá»i tạo" + +#: src/tags.cpp:1414 +msgid "Action program" +msgstr "" + +#: src/tags.cpp:1415 +msgid "Portrait mode" +msgstr "Chế độ chân dung" + +#: src/tags.cpp:1416 +#, fuzzy +msgid "Landscape mode" +msgstr "Phong cảnh" + +#: src/tags.cpp:1425 +msgid "Multi-spot" +msgstr "" + +#: src/tags.cpp:1437 +msgid "Tungsten (incandescent light)" +msgstr "" + +#: src/tags.cpp:1439 +#, fuzzy +msgid "Fine weather" +msgstr "5300K (Thá»i tiết tốt)" + +#: src/tags.cpp:1440 +#, fuzzy +msgid "Cloudy weather" +msgstr "Trá»i mây" + +#: src/tags.cpp:1442 +#, fuzzy +msgid "Daylight fluorescent (D 5700 - 7100K)" +msgstr "6600K (Ãnh sáng huỳnh quang ban ngày)" + +#: src/tags.cpp:1443 +msgid "Day white fluorescent (N 4600 - 5400K)" +msgstr "" + +#: src/tags.cpp:1444 +#, fuzzy +msgid "Cool white fluorescent (W 3900 - 4500K)" +msgstr "4000K (Ãnh sáng trắng lạnh)" + +#: src/tags.cpp:1445 +msgid "White fluorescent (WW 3200 - 3700K)" +msgstr "" + +#: src/tags.cpp:1446 +#, fuzzy +msgid "Standard light A" +msgstr "Chất lượng tiêu chuẩn (SQ)" + +#: src/tags.cpp:1447 +#, fuzzy +msgid "Standard light B" +msgstr "Chất lượng tiêu chuẩn (SQ)" + +#: src/tags.cpp:1448 +#, fuzzy +msgid "Standard light C" +msgstr "Chất lượng tiêu chuẩn (SQ)" + +#: src/tags.cpp:1449 +msgid "D55" +msgstr "D55" + +#: src/tags.cpp:1450 +msgid "D65" +msgstr "D65" + +#: src/tags.cpp:1451 +msgid "D75" +msgstr "D75" + +#: src/tags.cpp:1452 +msgid "D50" +msgstr "D50" + +#: src/tags.cpp:1453 +#, fuzzy +msgid "ISO studio tungsten" +msgstr "Äá»™ nhạy sáng đã sá»­ dụng" + +#: src/tags.cpp:1454 +#, fuzzy +msgid "Other light source" +msgstr "Nguồn sáng" + +#: src/tags.cpp:1461 +msgid "Uncalibrated" +msgstr "" + +#: src/tags.cpp:1467 +msgid "One-chip color area" +msgstr "" + +#: src/tags.cpp:1468 +msgid "Two-chip color area" +msgstr "" + +#: src/tags.cpp:1469 +msgid "Three-chip color area" +msgstr "" + +#: src/tags.cpp:1470 +msgid "Color sequential area" +msgstr "" + +#: src/tags.cpp:1471 +msgid "Trilinear sensor" +msgstr "" + +#: src/tags.cpp:1472 +msgid "Color sequential linear" +msgstr "" + +#: src/tags.cpp:1477 +msgid "Film scanner" +msgstr "" + +#: src/tags.cpp:1478 +msgid "Reflexion print scanner" +msgstr "" + +#: src/tags.cpp:1479 +#, fuzzy +msgid "Digital still camera" +msgstr "Lá»c Ä‘iện tá»­" + +#: src/tags.cpp:1484 +msgid "Directly photographed" +msgstr "" + +#: src/tags.cpp:1489 +#, fuzzy +msgid "Normal process" +msgstr "Phim bình thưá»ng" + +#: src/tags.cpp:1490 +#, fuzzy +msgid "Custom process" +msgstr "Quá trình lấy nétTiến trình lấy nét" + +#: src/tags.cpp:1518 +msgid "Low gain up" +msgstr "" + +#: src/tags.cpp:1519 +msgid "High gain up" +msgstr "" + +#: src/tags.cpp:1520 +msgid "Low gain down" +msgstr "" + +#: src/tags.cpp:1521 +msgid "High gain down" +msgstr "" + +#: src/tags.cpp:1542 +#, fuzzy +msgid "Close view" +msgstr "gần" + +#: src/tags.cpp:1543 src/tags.cpp:1544 +msgid "Distant view" +msgstr "" + +#: src/tags.cpp:1550 +msgid "Exposure time, given in seconds (sec)." +msgstr "" + +#: src/tags.cpp:1560 +msgid "" +"Indicates the spectral sensitivity of each channel of the camera used. The " +"tag value is an ASCII string compatible with the standard developed by the " +"ASTM Technical Committee." +msgstr "" + +#: src/tags.cpp:1568 +msgid "Opto-Electoric Conversion Function" +msgstr "" + +#: src/tags.cpp:1569 +msgid "" +"Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO " +"14524. is the relationship between the camera optical input and the " +"image values." +msgstr "" + +#: src/tags.cpp:1573 +#, fuzzy +msgid "Sensitivity Type" +msgstr "Äá»™ nhạy sáng" + +#: src/tags.cpp:1574 +msgid "" +"The SensitivityType tag indicates which one of the parameters of ISO12232 is " +"the PhotographicSensitivity tag. Although it is an optional tag, it should " +"be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, " +"or 7 may be used in case that the values of plural parameters are the same." +msgstr "" + +#: src/tags.cpp:1580 +#, fuzzy +msgid "Standard Output Sensitivity" +msgstr "Äá»™ nhạy sáng" + +#: src/tags.cpp:1581 +msgid "" +"This tag indicates the standard output sensitivity value of a camera or " +"input device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1585 +msgid "Recommended Exposure Index" +msgstr "" + +#: src/tags.cpp:1586 +msgid "" +"This tag indicates the recommended exposure index value of a camera or input " +"device defined in ISO 12232. When recording this tag, the " +"PhotographicSensitivity and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1591 +msgid "" +"This tag indicates the ISO speed value of a camera or input device that is " +"defined in ISO 12232. When recording this tag, the PhotographicSensitivity " +"and SensitivityType tags shall also be recorded." +msgstr "" + +#: src/tags.cpp:1595 +#, fuzzy +msgid "ISO Speed Latitude yyy" +msgstr "Chế độ nhạy sáng" + +#: src/tags.cpp:1596 +msgid "" +"This tag indicates the ISO speed latitude yyy value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudezzz." +msgstr "" + +#: src/tags.cpp:1600 +#, fuzzy +msgid "ISO Speed Latitude zzz" +msgstr "Chế độ nhạy sáng" + +#: src/tags.cpp:1601 +msgid "" +"This tag indicates the ISO speed latitude zzz value of a camera or input " +"device that is defined in ISO 12232. However, this tag shall not be recorded " +"without ISOSpeed and ISOSpeedLatitudeyyy." +msgstr "" + +#: src/tags.cpp:1606 +msgid "" +"The version of this standard supported. Nonexistence of this field is taken " +"to mean nonconformance to the standard." +msgstr "" + +#: src/tags.cpp:1609 +#, fuzzy +msgid "Date and Time (original)" +msgstr "Ngày và giá» ban đầu" + +#: src/tags.cpp:1610 +#, fuzzy +msgid "" +"The date and time when the original image data was generated. For a digital " +"still camera the date and time the picture was taken are recorded." +msgstr "" +"Ngày và giá» tạo ra ảnh. Trong chuẩn Exif, đó là ngày và giá» tập tin đã bị " +"thay đổi." + +#: src/tags.cpp:1613 +#, fuzzy +msgid "Date and Time (digitized)" +msgstr "Ngày và giá» ban đầu" + +#: src/tags.cpp:1614 +#, fuzzy +msgid "The date and time when the image was stored as digital data." +msgstr "Ngày và giá» phim được quay" + +#: src/tags.cpp:1617 +msgid "" +"Information specific to compressed data. The channels of each component are " +"arranged in order from the 1st component to the 4th. For uncompressed data " +"the data arrangement is given in the tag. " +"However, since can only express the order of Y, " +"Cb and Cr, this tag is provided for cases when compressed data uses " +"components other than Y, Cb, and Cr and to enable support of other sequences." +msgstr "" + +#: src/tags.cpp:1626 +#, fuzzy +msgid "Compressed Bits per Pixel" +msgstr "Mẫu trên má»—i Ä‘iểm ảnh" + +#: src/tags.cpp:1627 +msgid "" +"Information specific to compressed data. The compression mode used for a " +"compressed image is indicated in unit bits per pixel." +msgstr "" + +#: src/tags.cpp:1631 +msgid "" +"Shutter speed. The unit is the APEX (Additive System of Photographic " +"Exposure) setting." +msgstr "" + +#: src/tags.cpp:1635 +msgid "The lens aperture. The unit is the APEX value." +msgstr "" + +#: src/tags.cpp:1638 +msgid "" +"The value of brightness. The unit is the APEX value. Ordinarily it is given " +"in the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1641 +#, fuzzy +msgid "Exposure Bias" +msgstr "Bù trừ ánh sáng" + +#: src/tags.cpp:1642 +msgid "" +"The exposure bias. The units is the APEX value. Ordinarily it is given in " +"the range of -99.99 to 99.99." +msgstr "" + +#: src/tags.cpp:1646 +msgid "" +"The smallest F number of the lens. The unit is the APEX value. Ordinarily it " +"is given in the range of 00.00 to 99.99, but it is not limited to this range." +msgstr "" + +#: src/tags.cpp:1660 +msgid "" +"This tag is recorded when an image is taken using a strobe light (flash)." +msgstr "" + +#: src/tags.cpp:1663 +msgid "" +"The actual focal length of the lens, in mm. Conversion is not made to the " +"focal length of a 35 mm film camera." +msgstr "" + +#: src/tags.cpp:1667 +msgid "" +"This tag indicates the location and area of the main subject in the overall " +"scene." +msgstr "" + +#: src/tags.cpp:1670 +msgid "Maker Note" +msgstr "" + +#: src/tags.cpp:1671 +msgid "" +"A tag for manufacturers of Exif writers to record any desired information. " +"The contents are up to the manufacturer." +msgstr "" + +#: src/tags.cpp:1675 +msgid "" +"A tag for Exif users to write keywords or comments on the image besides " +"those in , and without the character code limitations of " +"the tag." +msgstr "" + +#: src/tags.cpp:1679 +msgid "Sub-seconds Time" +msgstr "" + +#: src/tags.cpp:1680 +msgid "A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1682 +#, fuzzy +msgid "Sub-seconds Time Original" +msgstr "Ngày và giá» ban đầu" + +#: src/tags.cpp:1683 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1685 +msgid "Sub-seconds Time Digitized" +msgstr "" + +#: src/tags.cpp:1686 +msgid "" +"A tag used to record fractions of seconds for the tag." +msgstr "" + +#: src/tags.cpp:1688 +#, fuzzy +msgid "FlashPix Version" +msgstr "Phiên bản tập tin" + +#: src/tags.cpp:1689 +msgid "The FlashPix format version supported by a FPXR file." +msgstr "" + +#: src/tags.cpp:1692 +msgid "" +"The color space information tag is always recorded as the color space " +"specifier. Normally sRGB is used to define the color space based on the PC " +"monitor conditions and environment. If a color space other than sRGB is " +"used, Uncalibrated is set. Image data recorded as Uncalibrated can be " +"treated as sRGB when it is converted to FlashPix." +msgstr "" + +#: src/tags.cpp:1701 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid width of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file." +msgstr "" + +#: src/tags.cpp:1708 +msgid "" +"Information specific to compressed data. When a compressed file is recorded, " +"the valid height of the meaningful image must be recorded in this tag, " +"whether or not there is padding data or a restart marker. This tag should " +"not exist in an uncompressed file. Since data padding is unnecessary in the " +"vertical direction, the number of lines recorded in this valid image height " +"tag will in fact be the same as that recorded in the SOF." +msgstr "" + +#: src/tags.cpp:1717 +msgid "" +"This tag is used to record the name of an audio file related to the image " +"data. The only relational information recorded here is the Exif audio file " +"name and extension (an ASCII string consisting of 8 characters + '.' + 3 " +"characters). The path is not recorded." +msgstr "" + +#: src/tags.cpp:1723 +msgid "Interoperability IFD Pointer" +msgstr "" + +#: src/tags.cpp:1724 +msgid "" +"Interoperability IFD is composed of tags which stores the information to " +"ensure the Interoperability and pointed by the following tag located in Exif " +"IFD. The Interoperability structure of Interoperability IFD is the same as " +"TIFF defined IFD structure but does not contain the image data " +"characteristically compared with normal TIFF IFD." +msgstr "" + +#: src/tags.cpp:1732 +msgid "" +"Indicates the strobe energy at the time the image is captured, as measured " +"in Beam Candle Power Seconds (BCPS)." +msgstr "" + +#: src/tags.cpp:1736 +msgid "" +"This tag records the camera or input device spatial frequency table and SFR " +"values in the direction of image width, image height, and diagonal " +"direction, as specified in ISO 12233." +msgstr "" + +#: src/tags.cpp:1740 +#, fuzzy +msgid "Focal Plane X-Resolution" +msgstr "Äá»™ phân giải X" + +#: src/tags.cpp:1741 +msgid "" +"Indicates the number of pixels in the image width (X) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1744 +#, fuzzy +msgid "Focal Plane Y-Resolution" +msgstr "Äá»™ phân giải Y" + +#: src/tags.cpp:1745 +msgid "" +"Indicates the number of pixels in the image height (V) direction per " +" on the camera focal plane." +msgstr "" + +#: src/tags.cpp:1749 +msgid "" +"Indicates the unit for measuring and " +". This value is the same as the ." +msgstr "" + +#: src/tags.cpp:1753 +msgid "" +"Indicates the location of the main subject in the scene. The value of this " +"tag represents the pixel at the center of the main subject relative to the " +"left edge, prior to rotation processing as per the tag. The first " +"value indicates the X column number and second indicates the Y row number." +msgstr "" + +#: src/tags.cpp:1759 +#, fuzzy +msgid "Exposure index" +msgstr "Thá»i gian phÆ¡i sáng" + +#: src/tags.cpp:1760 +msgid "" +"Indicates the exposure index selected on the camera or input device at the " +"time the image is captured." +msgstr "" + +#: src/tags.cpp:1764 +msgid "Indicates the image sensor type on the camera or input device." +msgstr "" + +#: src/tags.cpp:1767 +msgid "" +"Indicates the image source. If a DSC recorded the image, this tag value of " +"this tag always be set to 3, indicating that the image was recorded on a DSC." +msgstr "" + +#: src/tags.cpp:1772 +msgid "" +"Indicates the type of scene. If a DSC recorded the image, this tag value " +"must always be set to 1, indicating that the image was directly photographed." +msgstr "" + +#: src/tags.cpp:1776 +#, fuzzy +msgid "Color Filter Array Pattern" +msgstr "Mảng lá»c màu" + +#: src/tags.cpp:1777 +msgid "" +"Indicates the color filter array (CFA) geometric pattern of the image sensor " +"when a one-chip color area sensor is used. It does not apply to all sensing " +"methods." +msgstr "" + +#: src/tags.cpp:1782 +msgid "" +"This tag indicates the use of special processing on image data, such as " +"rendering geared to output. When special processing is performed, the reader " +"is expected to disable or minimize any further processing." +msgstr "" + +#: src/tags.cpp:1788 +msgid "" +"This tag indicates the exposure mode set when the image was shot. In auto-" +"bracketing mode, the camera shoots a series of frames of the same scene at " +"different exposure settings." +msgstr "" + +#: src/tags.cpp:1793 +#, fuzzy +msgid "This tag indicates the white balance mode set when the image was shot." +msgstr "Ngày và giá» phim được quay" + +#: src/tags.cpp:1796 +msgid "" +"This tag indicates the digital zoom ratio when the image was shot. If the " +"numerator of the recorded value is 0, this indicates that digital zoom was " +"not used." +msgstr "" + +#: src/tags.cpp:1801 +msgid "" +"This tag indicates the equivalent focal length assuming a 35mm film camera, " +"in mm. A value of 0 means the focal length is unknown. Note that this tag " +"differs from the tag." +msgstr "" + +#: src/tags.cpp:1807 +msgid "" +"This tag indicates the type of scene that was shot. It can also be used to " +"record the mode in which the image was shot. Note that this differs from the " +" tag." +msgstr "" + +#: src/tags.cpp:1812 +msgid "This tag indicates the degree of overall image gain adjustment." +msgstr "" + +#: src/tags.cpp:1815 +msgid "" +"This tag indicates the direction of contrast processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1819 +msgid "" +"This tag indicates the direction of saturation processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1823 +msgid "" +"This tag indicates the direction of sharpness processing applied by the " +"camera when the image was shot." +msgstr "" + +#: src/tags.cpp:1827 +msgid "" +"This tag indicates information on the picture-taking conditions of a " +"particular camera model. The tag is used only to indicate the picture-taking " +"conditions in the reader." +msgstr "" + +#: src/tags.cpp:1832 +msgid "This tag indicates the distance to the subject." +msgstr "" + +#: src/tags.cpp:1835 +msgid "" +"This tag indicates an identifier assigned uniquely to each image. It is " +"recorded as an ASCII string equivalent to hexadecimal notation and 128-bit " +"fixed length." +msgstr "" + +#: src/tags.cpp:1839 +#, fuzzy +msgid "Camera Owner Name" +msgstr "Tên chá»§ sở hữu" + +#: src/tags.cpp:1840 +msgid "" +"This tag records the owner of a camera used in photography as an ASCII " +"string." +msgstr "" + +#: src/tags.cpp:1843 +#, fuzzy +msgid "Body Serial Number" +msgstr "Chuá»—i số" + +#: src/tags.cpp:1844 +msgid "" +"This tag records the serial number of the body of the camera that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1847 +#, fuzzy +msgid "Lens Specification" +msgstr "Thông tin cụ thể nhà cung cấp" + +#: src/tags.cpp:1848 +msgid "" +"This tag notes minimum focal length, maximum focal length, minimum F number " +"in the minimum focal length, and minimum F number in the maximum focal " +"length, which are specification information for the lens that was used in " +"photography. When the minimum F number is unknown, the notation is 0/0" +msgstr "" + +#: src/tags.cpp:1854 +#, fuzzy +msgid "Lens Make" +msgstr "Kiểu ống kính." + +#: src/tags.cpp:1855 +msgid "This tag records the lens manufactor as an ASCII string." +msgstr "" + +#: src/tags.cpp:1858 +msgid "" +"This tag records the lens's model name and model number as an ASCII string." +msgstr "" + +#: src/tags.cpp:1862 +msgid "" +"This tag records the serial number of the interchangeable lens that was used " +"in photography as an ASCII string." +msgstr "" + +#: src/tags.cpp:1866 src/tags.cpp:1867 +#, fuzzy +msgid "Unknown Exif tag" +msgstr "Không biết " + +#: src/tags.cpp:1878 +msgid "North" +msgstr "" + +#: src/tags.cpp:1879 +msgid "South" +msgstr "" + +#: src/tags.cpp:1884 +msgid "East" +msgstr "" + +#: src/tags.cpp:1885 +msgid "West" +msgstr "" + +#: src/tags.cpp:1890 +msgid "Above sea level" +msgstr "" + +#: src/tags.cpp:1891 +#, fuzzy +msgid "Below sea level" +msgstr "Cưá»ng độ đèn chá»›p" + +#: src/tags.cpp:1896 +msgid "Measurement in progress" +msgstr "" + +#: src/tags.cpp:1897 +msgid "Measurement Interoperability" +msgstr "" + +#: src/tags.cpp:1902 +msgid "Two-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1903 +msgid "Three-dimensional measurement" +msgstr "" + +#: src/tags.cpp:1908 +msgid "km/h" +msgstr "" + +#: src/tags.cpp:1909 +msgid "mph" +msgstr "" + +#: src/tags.cpp:1910 +msgid "knots" +msgstr "" + +#: src/tags.cpp:1915 +#, fuzzy +msgid "True direction" +msgstr "Chiá»u chụp toàn cảnh" + +#: src/tags.cpp:1916 +#, fuzzy +msgid "Magnetic direction" +msgstr "Chiá»u chụp toàn cảnh" + +#: src/tags.cpp:1921 +msgid "Kilometers" +msgstr "" + +#: src/tags.cpp:1922 +msgid "Miles" +msgstr "" + +#: src/tags.cpp:1923 +msgid "Knots" +msgstr "" + +#: src/tags.cpp:1928 +#, fuzzy +msgid "Without correction" +msgstr "Äịa Ä‘iểm quay" + +#: src/tags.cpp:1929 +msgid "Correction applied" +msgstr "" + +#: src/tags.cpp:1935 +msgid "" +"Indicates the version of . The version is given as 2.0.0.0. This " +"tag is mandatory when tag is present. (Note: The " +"tag is given in bytes, unlike the tag. When the version is " +"2.0.0.0, the tag value is 02000000.H)." +msgstr "" + +#: src/tags.cpp:1941 +#, fuzzy +msgid "GPS Latitude Reference" +msgstr "GPS VÄ© độ" + +#: src/tags.cpp:1942 +msgid "" +"Indicates whether the latitude is north or south latitude. The ASCII value " +"'N' indicates north latitude, and 'S' is south latitude." +msgstr "" + +#: src/tags.cpp:1946 +msgid "" +"Indicates the latitude. The latitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1953 +#, fuzzy +msgid "GPS Longitude Reference" +msgstr "GPS Kinh độ" + +#: src/tags.cpp:1954 +msgid "" +"Indicates whether the longitude is east or west longitude. ASCII 'E' " +"indicates east longitude, and 'W' is west longitude." +msgstr "" + +#: src/tags.cpp:1958 +msgid "" +"Indicates the longitude. The longitude is expressed as three RATIONAL values " +"giving the degrees, minutes, and seconds, respectively. When degrees, " +"minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When " +"degrees and minutes are used and, for example, fractions of minutes are " +"given up to two decimal places, the format is ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:1966 +msgid "" +"Indicates the altitude used as the reference altitude. If the reference is " +"sea level and the altitude is above sea level, 0 is given. If the altitude " +"is below sea level, a value of 1 is given and the altitude is indicated as " +"an absolute value in the GSPAltitude tag. The reference unit is meters. Note " +"that this tag is BYTE type, unlike other reference tags." +msgstr "" + +#: src/tags.cpp:1974 +msgid "" +"Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is " +"expressed as one RATIONAL value. The reference unit is meters." +msgstr "" + +#: src/tags.cpp:1978 +msgid "" +"Indicates the time as UTC (Coordinated Universal Time). is " +"expressed as three RATIONAL values giving the hour, minute, and second " +"(atomic clock)." +msgstr "" + +#: src/tags.cpp:1983 +msgid "" +"Indicates the GPS satellites used for measurements. This tag can be used to " +"describe the number of satellites, their ID number, angle of elevation, " +"azimuth, SNR and other information in ASCII notation. The format is not " +"specified. If the GPS receiver is incapable of taking measurements, value of " +"the tag is set to NULL." +msgstr "" + +#: src/tags.cpp:1990 +msgid "" +"Indicates the status of the GPS receiver when the image is recorded. \"A\" " +"means measurement is in progress, and \"V\" means the measurement is " +"Interoperability." +msgstr "" + +#: src/tags.cpp:1995 +msgid "" +"Indicates the GPS measurement mode. \"2\" means two-dimensional measurement " +"and \"3\" means three-dimensional measurement is in progress." +msgstr "" + +#: src/tags.cpp:1998 +msgid "GPS Data Degree of Precision" +msgstr "" + +#: src/tags.cpp:1999 +msgid "" +"Indicates the GPS DOP (data degree of precision). An HDOP value is written " +"during two-dimensional measurement, and PDOP during three-dimensional " +"measurement." +msgstr "" + +#: src/tags.cpp:2003 +msgid "" +"Indicates the unit used to express the GPS receiver speed of movement. \"K\" " +"\"M\" and \"N\" represents kilometers per hour, miles per hour, and knots." +msgstr "" + +#: src/tags.cpp:2007 +msgid "Indicates the speed of GPS receiver movement." +msgstr "" + +#: src/tags.cpp:2009 +msgid "GPS Track Ref" +msgstr "" + +#: src/tags.cpp:2010 +msgid "" +"Indicates the reference for giving the direction of GPS receiver movement. " +"\"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2014 +msgid "" +"Indicates the direction of GPS receiver movement. The range of values is " +"from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2018 +msgid "" +"Indicates the reference for giving the direction of the image when it is " +"captured. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2022 +msgid "" +"Indicates the direction of the image when it was captured. The range of " +"values is from 0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2026 +msgid "" +"Indicates the geodetic survey data used by the GPS receiver. If the survey " +"data is restricted to Japan, the value of this tag is \"TOKYO\" or " +"\"WGS-84\"." +msgstr "" + +#: src/tags.cpp:2029 +#, fuzzy +msgid "GPS Destination Latitude Reference" +msgstr "GPS VÄ© độ" + +#: src/tags.cpp:2030 +msgid "" +"Indicates whether the latitude of the destination point is north or south " +"latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south " +"latitude." +msgstr "" + +#: src/tags.cpp:2034 +msgid "" +"Indicates the latitude of the destination point. The latitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If latitude is expressed as degrees, minutes and seconds, a " +"typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be dd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2041 +msgid "GPS Destination Longitude Reference" +msgstr "" + +#: src/tags.cpp:2042 +msgid "" +"Indicates whether the longitude of the destination point is east or west " +"longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude." +msgstr "" + +#: src/tags.cpp:2046 +msgid "" +"Indicates the longitude of the destination point. The longitude is expressed " +"as three RATIONAL values giving the degrees, minutes, and seconds, " +"respectively. If longitude is expressed as degrees, minutes and seconds, a " +"typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used " +"and, for example, fractions of minutes are given up to two decimal places, " +"the format would be ddd/1,mmmm/100,0/1." +msgstr "" + +#: src/tags.cpp:2053 +msgid "" +"Indicates the reference used for giving the bearing to the destination " +"point. \"T\" denotes true direction and \"M\" is magnetic direction." +msgstr "" + +#: src/tags.cpp:2057 +msgid "" +"Indicates the bearing to the destination point. The range of values is from " +"0.00 to 359.99." +msgstr "" + +#: src/tags.cpp:2061 +msgid "" +"Indicates the unit used to express the distance to the destination point. \"K" +"\", \"M\" and \"N\" represent kilometers, miles and knots." +msgstr "" + +#: src/tags.cpp:2065 +msgid "Indicates the distance to the destination point." +msgstr "" + +#: src/tags.cpp:2068 +msgid "" +"A character string recording the name of the method used for location " +"finding. The first byte indicates the character code used, and this is " +"followed by the name of the method." +msgstr "" + +#: src/tags.cpp:2073 +msgid "" +"A character string recording the name of the GPS area. The first byte " +"indicates the character code used, and this is followed by the name of the " +"GPS area." +msgstr "" + +#: src/tags.cpp:2076 +#, fuzzy +msgid "GPS Date Stamp" +msgstr "Ngày gá»­i" + +#: src/tags.cpp:2077 +msgid "" +"A character string recording date and time information relative to UTC " +"(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"." +msgstr "" + +#: src/tags.cpp:2081 +msgid "" +"Indicates whether differential correction is applied to the GPS receiver." +msgstr "" + +#: src/tags.cpp:2084 src/tags.cpp:2085 +msgid "Unknown GPSInfo tag" +msgstr "" + +#: src/tags.cpp:2096 +msgid "Interoperability Index" +msgstr "" + +#: src/tags.cpp:2097 +msgid "" +"Indicates the identification of the Interoperability rule. Use \"R98\" for " +"stating ExifR98 Rules. Four bytes used including the termination code " +"(NULL). see the separate volume of Recommended Exif Interoperability Rules " +"(ExifR98) for other tags used for ExifR98." +msgstr "" + +#: src/tags.cpp:2103 +#, fuzzy +msgid "Interoperability Version" +msgstr "Phiên bản chương trình" + +#: src/tags.cpp:2104 +msgid "Interoperability version" +msgstr "" + +#: src/tags.cpp:2106 +msgid "Related Image File Format" +msgstr "Äịnh dạng tập tin ảnh liên quan" + +#: src/tags.cpp:2107 +msgid "File format of image file" +msgstr "Äịnh dạng tập tin cá»§a tập tin ảnh" + +#: src/tags.cpp:2109 +msgid "Related Image Width" +msgstr "Chiá»u rá»™ng ảnh liên quan" + +#: src/tags.cpp:2112 +msgid "Related Image Length" +msgstr "Chiá»u dài ảnh liên quan" + +#: src/tags.cpp:2116 src/tags.cpp:2117 +msgid "Unknown Exif Interoperability tag" +msgstr "" + +#: src/tags.cpp:2128 +msgid "Offset" +msgstr "" + +#: src/tags.cpp:2129 +msgid "Offset of the makernote from the start of the TIFF header." +msgstr "" + +#: src/tags.cpp:2131 +msgid "Byte Order" +msgstr "Thứ tá»± byte" + +#: src/tags.cpp:2132 +msgid "" +"Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-" +"endian)." +msgstr "" + +#: src/tags.cpp:2135 src/tags.cpp:2136 +#, fuzzy +msgid "Unknown Exiv2 Makernote info tag" +msgstr "Thẻ OlympusMakerNote lạ" + +#: src/tags.cpp:2146 src/tags.cpp:2147 +#, fuzzy +msgid "Unknown tag" +msgstr "Không biết " + +#: src/tags.cpp:2688 +#, fuzzy +msgid "Digital zoom not used" +msgstr "Tùy chỉnh thu/phóng Ä‘iện tá»­" + +#: src/tiffimage.cpp:2308 +msgid "TIFF header, offset" +msgstr "" + +#: src/tiffimage.cpp:2313 +msgid "little endian encoded" +msgstr "" + +#: src/tiffimage.cpp:2314 +msgid "big endian encoded" +msgstr "" diff --git a/vendor/exiv2-0.25/samples/CMakeLists.txt b/vendor/exiv2-0.25/samples/CMakeLists.txt new file mode 100644 index 0000000..aef2b25 --- /dev/null +++ b/vendor/exiv2-0.25/samples/CMakeLists.txt @@ -0,0 +1,86 @@ +# CMake build system for exiv2 library and executables +# Copyright 2012- Robin Mills +# Copyright 2010-2012 Gilles Caulier +# Copyright 2008 Patrick Spendrin +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if ( NOT MSVC ) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() + +if (MSVC) + include(../CMake_msvc.txt) + msvc_runtime_configure(${EXIV2_ENABLE_SHARED}) + # include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR}/../msvc64/include ) + + if ( NOT EXIV2_ENABLE_SHARED ) + # link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../zlib-1.2.7/$(ConfigurationName)) + endif() +endif() +include_directories("${CMAKE_SOURCE_DIR}/include" "${CMAKE_SOURCE_DIR}/src") + +SET( SAMPLES addmoddel.cpp + convert-test.cpp + easyaccess-test.cpp + exifcomment.cpp + exifdata-test.cpp + exifdata.cpp + exifprint.cpp + exifvalue.cpp + geotag.cpp + iotest.cpp + iptceasy.cpp + iptcprint.cpp + iptctest.cpp + key-test.cpp + largeiptc-test.cpp + mmap-test.cpp + prevtest.cpp + stringto-test.cpp + taglist.cpp + tiff-test.cpp + werror-test.cpp + write-test.cpp + write2-test.cpp + xmpparse.cpp + xmpparser-test.cpp + xmpsample.cpp + ) + +FOREACH(entry ${SAMPLES}) + STRING( REPLACE ".cpp" "" target ${entry}) + ADD_EXECUTABLE( ${target} ${target}.cpp ) + ADD_TEST( ${target}_test ${target} ) + TARGET_LINK_LIBRARIES( ${target} exiv2lib ) + #INSTALL( TARGETS ${target} ${INSTALL_TARGET_STANDARD_ARGS} ) +ENDFOREACH(entry ${SAMPLES}) + +################################### +# metacopy/path-test sample applications require utils.cpp support +IF( MSVC ) + SET( PATHTEST_SRC ${PATHTEST_SRC} ../src/getopt_win32.c ) + SET( MC_SRC ${MC_SRC} ../src/getopt_win32.c ) +ENDIF( MSVC ) + +SET( MC_SRC ${MC_SRC} metacopy.cpp ../src/utils.cpp ) +ADD_EXECUTABLE( metacopy ${MC_SRC} ) +TARGET_LINK_LIBRARIES( metacopy exiv2lib ) +INSTALL( TARGETS metacopy ${INSTALL_TARGET_STANDARD_ARGS} ) + +SET( PATHTEST_SRC ${PATHTEST_SRC} path-test.cpp ../src/utils.cpp ) +ADD_EXECUTABLE( pathtest ${PATHTEST_SRC} ) +SET_TARGET_PROPERTIES( pathtest PROPERTIES OUTPUT_NAME path-test ) +TARGET_LINK_LIBRARIES( pathtest exiv2lib ) +INSTALL( TARGETS pathtest ${INSTALL_TARGET_STANDARD_ARGS} ) + +SET( EXIV2JSON_SRC exiv2json.cpp Jzon.cpp ) +ADD_EXECUTABLE( exiv2json ${EXIV2JSON_SRC} ) +SET_TARGET_PROPERTIES( exiv2json PROPERTIES OUTPUT_NAME exiv2json ) +TARGET_LINK_LIBRARIES( exiv2json exiv2lib ) +INSTALL( TARGETS exiv2json ${INSTALL_TARGET_STANDARD_ARGS} ) + +# That's all Folks! +## + + diff --git a/vendor/exiv2-0.25/samples/Jzon.cpp b/vendor/exiv2-0.25/samples/Jzon.cpp new file mode 100644 index 0000000..4435f69 --- /dev/null +++ b/vendor/exiv2-0.25/samples/Jzon.cpp @@ -0,0 +1,1301 @@ +/* +Copyright (c) 2013 Johannes Häggqvist + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifdef _WINDLL +#define JzonAPI __declspec(dllexport) +#endif + +#include "Jzon.h" + +#include +#include +#include +#include + +namespace Jzon +{ + class FormatInterpreter + { + public: + FormatInterpreter() + { + SetFormat(NoFormat); + } + FormatInterpreter(const Format &format) + { + SetFormat(format); + } + + void SetFormat(const Format &format) + { + this->format = format; + indentationChar = (format.useTabs ? '\t' : ' '); + spacing = (format.spacing ? " " : ""); + newline = (format.newline ? "\n" : spacing); + } + + std::string GetIndentation(unsigned int level) const + { + if (!format.newline) + { + return ""; + } + else + { + return std::string(format.indentSize * level, indentationChar); + } + } + + inline const std::string &GetNewline() const + { + return newline; + } + inline const std::string &GetSpacing() const + { + return spacing; + } + + private: + Format format; + char indentationChar; + std::string newline; + std::string spacing; + }; + + inline bool IsWhitespace(char c) + { + return (c == '\n' || c == ' ' || c == '\t' || c == '\r' || c == '\f'); + } + inline bool IsNumber(char c) + { + return ((c >= '0' && c <= '9') || c == '.' || c == '-'); + } + + Node::Node() + { + } + Node::~Node() + { + } + + Object &Node::AsObject() + { + if (IsObject()) + return static_cast(*this); + else + throw TypeException(); + } + const Object &Node::AsObject() const + { + if (IsObject()) + return static_cast(*this); + else + throw TypeException(); + } + Array &Node::AsArray() + { + if (IsArray()) + return static_cast(*this); + else + throw TypeException(); + } + const Array &Node::AsArray() const + { + if (IsArray()) + return static_cast(*this); + else + throw TypeException(); + } + Value &Node::AsValue() + { + if (IsValue()) + return static_cast(*this); + else + throw TypeException(); + } + const Value &Node::AsValue() const + { + if (IsValue()) + return static_cast(*this); + else + throw TypeException(); + } + + Node::Type Node::DetermineType(const std::string &json) + { + std::string::const_iterator jsonIt = json.begin(); + + while (jsonIt != json.end() && IsWhitespace(*jsonIt)) + ++jsonIt; + + if (jsonIt == json.end()) + return T_VALUE; + + switch (*jsonIt) + { + case '{' : return T_OBJECT; + case '[' : return T_ARRAY; + default : return T_VALUE; + } + } + + + Value::Value() : Node() + { + SetNull(); + } + Value::Value(const Value &rhs) : Node() + { + Set(rhs); + } + Value::Value(const Node &rhs) : Node() + { + const Value &value = rhs.AsValue(); + Set(value); + } + Value::Value(ValueType type, const std::string &value) + { + Set(type, value); + } + Value::Value(const std::string &value) + { + Set(value); + } + Value::Value(const char *value) + { + Set(value); + } + Value::Value(const int value) + { + Set(value); + } + Value::Value(const float value) + { + Set(value); + } + Value::Value(const double value) + { + Set(value); + } + Value::Value(const bool value) + { + Set(value); + } + Value::~Value() + { + } + + Node::Type Value::GetType() const + { + return T_VALUE; + } + Value::ValueType Value::GetValueType() const + { + return type; + } + + std::string Value::ToString() const + { + if (IsNull()) + { + return "null"; + } + else + { + return valueStr; + } + } + int Value::ToInt() const + { + if (IsNumber()) + { + std::stringstream sstr(valueStr); + int val; + sstr >> val; + return val; + } + else + { + return 0; + } + } + float Value::ToFloat() const + { + if (IsNumber()) + { + std::stringstream sstr(valueStr); + float val; + sstr >> val; + return val; + } + else + { + return 0.f; + } + } + double Value::ToDouble() const + { + if (IsNumber()) + { + std::stringstream sstr(valueStr); + double val; + sstr >> val; + return val; + } + else + { + return 0.0; + } + } + bool Value::ToBool() const + { + if (IsBool()) + { + return (valueStr == "true"); + } + else + { + return false; + } + } + + void Value::SetNull() + { + valueStr = ""; + type = VT_NULL; + } + void Value::Set(const Value &value) + { + if (this != &value) + { + valueStr = value.valueStr; + type = value.type; + } + } + void Value::Set(ValueType type, const std::string &value) + { + valueStr = value; + this->type = type; + } + void Value::Set(const std::string &value) + { + valueStr = UnescapeString(value); + type = VT_STRING; + } + void Value::Set(const char *value) + { + valueStr = UnescapeString(std::string(value)); + type = VT_STRING; + } + void Value::Set(const int value) + { + std::stringstream sstr; + sstr << value; + valueStr = sstr.str(); + type = VT_NUMBER; + } + void Value::Set(const float value) + { + std::stringstream sstr; + sstr << value; + valueStr = sstr.str(); + type = VT_NUMBER; + } + void Value::Set(const double value) + { + std::stringstream sstr; + sstr << value; + valueStr = sstr.str(); + type = VT_NUMBER; + } + void Value::Set(const bool value) + { + if (value) + valueStr = "true"; + else + valueStr = "false"; + type = VT_BOOL; + } + + Value &Value::operator=(const Value &rhs) + { + if (this != &rhs) + Set(rhs); + return *this; + } + Value &Value::operator=(const Node &rhs) + { + if (this != &rhs) + Set(rhs.AsValue()); + return *this; + } + Value &Value::operator=(const std::string &rhs) + { + Set(rhs); + return *this; + } + Value &Value::operator=(const char *rhs) + { + Set(rhs); + return *this; + } + Value &Value::operator=(const int rhs) + { + Set(rhs); + return *this; + } + Value &Value::operator=(const float rhs) + { + Set(rhs); + return *this; + } + Value &Value::operator=(const double rhs) + { + Set(rhs); + return *this; + } + Value &Value::operator=(const bool rhs) + { + Set(rhs); + return *this; + } + + bool Value::operator==(const Value &other) const + { + return ((type == other.type)&&(valueStr == other.valueStr)); + } + bool Value::operator!=(const Value &other) const + { + return !(*this == other); + } + + Node *Value::GetCopy() const + { + return new Value(*this); + } + + // This is not the most beautiful place for these, but it'll do + static const char charsUnescaped[] = { '\\' , '/' , '\"' , '\n' , '\t' , '\b' , '\f' , '\r' }; + static const char *charsEscaped[] = { "\\\\", "\\/", "\\\"", "\\n", "\\t", "\\b", "\\f", "\\r" }; + static const unsigned int numEscapeChars = 8; + static const char nullUnescaped = '\0'; + static const char *nullEscaped = "\0\0"; + const char *&getEscaped(const char &c) + { + for (unsigned int i = 0; i < numEscapeChars; ++i) + { + const char &ue = charsUnescaped[i]; + + if (c == ue) + { + const char *&e = charsEscaped[i]; + return e; + } + } + return nullEscaped; + } + const char &getUnescaped(const char &c1, const char &c2) + { + for (unsigned int i = 0; i < numEscapeChars; ++i) + { + const char *&e = charsEscaped[i]; + + if (c1 == e[0] && c2 == e[1]) + { + const char &ue = charsUnescaped[i]; + return ue; + } + } + return nullUnescaped; + } + + std::string Value::EscapeString(const std::string &value) + { + std::string escaped; + + for (std::string::const_iterator it = value.begin(); it != value.end(); ++it) + { + const char &c = (*it); + + const char *&a = getEscaped(c); + if (a[0] != '\0') + { + escaped += a[0]; + escaped += a[1]; + } + else + { + escaped += c; + } + } + + return escaped; + } + std::string Value::UnescapeString(const std::string &value) + { + std::string unescaped; + + for (std::string::const_iterator it = value.begin(); it != value.end(); ++it) + { + const char &c = (*it); + char c2 = '\0'; + if (it+1 != value.end()) + c2 = *(it+1); + + const char &a = getUnescaped(c, c2); + if (a != '\0') + { + unescaped += a; + if (it+1 != value.end()) + ++it; + } + else + { + unescaped += c; + } + } + + return unescaped; + } + + + Object::Object() : Node() + { + } + Object::Object(const Object &other) : Node() + { + for (ChildList::const_iterator it = other.children.begin(); it != other.children.end(); ++it) + { + const std::string &name = (*it).first; + Node &value = *(*it).second; + + children.push_back(NamedNodePtr(name, value.GetCopy())); + } + } + Object::Object(const Node &other) : Node() + { + const Object &object = other.AsObject(); + + for (ChildList::const_iterator it = object.children.begin(); it != object.children.end(); ++it) + { + const std::string &name = (*it).first; + Node &value = *(*it).second; + + children.push_back(NamedNodePtr(name, value.GetCopy())); + } + } + Object::~Object() + { + Clear(); + } + + Node::Type Object::GetType() const + { + return T_OBJECT; + } + + void Object::Add(const std::string &name, Node &node) + { + children.push_back(NamedNodePtr(name, node.GetCopy())); + } + void Object::Add(const std::string &name, Value node) + { + children.push_back(NamedNodePtr(name, new Value(node))); + } + void Object::Remove(const std::string &name) + { + for (ChildList::iterator it = children.begin(); it != children.end(); ++it) + { + if ((*it).first == name) + { + delete (*it).second; + children.erase(it); + break; + } + } + } + void Object::Clear() + { + for (ChildList::iterator it = children.begin(); it != children.end(); ++it) + { + delete (*it).second; + (*it).second = NULL; + } + children.clear(); + } + + Object::iterator Object::begin() + { + if (!children.empty()) + return Object::iterator(&children.front()); + else + return Object::iterator(NULL); + } + Object::const_iterator Object::begin() const + { + if (!children.empty()) + return Object::const_iterator(&children.front()); + else + return Object::const_iterator(NULL); + } + Object::iterator Object::end() + { + if (!children.empty()) + return Object::iterator(&children.back()+1); + else + return Object::iterator(NULL); + } + Object::const_iterator Object::end() const + { + if (!children.empty()) + return Object::const_iterator(&children.back()+1); + else + return Object::const_iterator(NULL); + } + + bool Object::Has(const std::string &name) const + { + for (ChildList::const_iterator it = children.begin(); it != children.end(); ++it) + { + if ((*it).first == name) + { + return true; + } + } + return false; + } + size_t Object::GetCount() const + { + return children.size(); + } + Node &Object::Get(const std::string &name) const + { + for (ChildList::const_iterator it = children.begin(); it != children.end(); ++it) + { + if ((*it).first == name) + { + return *(*it).second; + } + } + + throw NotFoundException(); + } + + Node *Object::GetCopy() const + { + return new Object(*this); + } + + + Array::Array() : Node() + { + } + Array::Array(const Array &other) : Node() + { + for (ChildList::const_iterator it = other.children.begin(); it != other.children.end(); ++it) + { + const Node &value = *(*it); + + children.push_back(value.GetCopy()); + } + } + Array::Array(const Node &other) : Node() + { + const Array &array = other.AsArray(); + + for (ChildList::const_iterator it = array.children.begin(); it != array.children.end(); ++it) + { + const Node &value = *(*it); + + children.push_back(value.GetCopy()); + } + } + Array::~Array() + { + Clear(); + } + + Node::Type Array::GetType() const + { + return T_ARRAY; + } + + void Array::Add(Node &node) + { + children.push_back(node.GetCopy()); + } + void Array::Add(Value node) + { + children.push_back(new Value(node)); + } + void Array::Remove(size_t index) + { + if (index < children.size()) + { + ChildList::iterator it = children.begin()+index; + delete (*it); + children.erase(it); + } + } + void Array::Clear() + { + for (ChildList::iterator it = children.begin(); it != children.end(); ++it) + { + delete (*it); + (*it) = NULL; + } + children.clear(); + } + + Array::iterator Array::begin() + { + if (!children.empty()) + return Array::iterator(&children.front()); + else + return Array::iterator(NULL); + } + Array::const_iterator Array::begin() const + { + if (!children.empty()) + return Array::const_iterator(&children.front()); + else + return Array::const_iterator(NULL); + } + Array::iterator Array::end() + { + if (!children.empty()) + return Array::iterator(&children.back()+1); + else + return Array::iterator(NULL); + } + Array::const_iterator Array::end() const + { + if (!children.empty()) + return Array::const_iterator(&children.back()+1); + else + return Array::const_iterator(NULL); + } + + size_t Array::GetCount() const + { + return children.size(); + } + Node &Array::Get(size_t index) const + { + if (index < children.size()) + { + return *children.at(index); + } + + throw NotFoundException(); + } + + Node *Array::GetCopy() const + { + return new Array(*this); + } + + + FileWriter::FileWriter(const std::string &filename) : filename(filename) + { + } + FileWriter::~FileWriter() + { + } + + void FileWriter::WriteFile(const std::string &filename, const Node &root, const Format &format) + { + FileWriter writer(filename); + writer.Write(root, format); + } + + void FileWriter::Write(const Node &root, const Format &format) + { + Writer writer(root, format); + writer.Write(); + + std::fstream file(filename.c_str(), std::ios::out | std::ios::trunc); + file << writer.GetResult(); + file.close(); + } + + + FileReader::FileReader(const std::string &filename) + { + if (!loadFile(filename, json)) + { + error = "Failed to load file"; + } + } + FileReader::~FileReader() + { + } + + bool FileReader::ReadFile(const std::string &filename, Node &node) + { + FileReader reader(filename); + return reader.Read(node); + } + + bool FileReader::Read(Node &node) + { + if (!error.empty()) + return false; + + Parser parser(node, json); + if (!parser.Parse()) + { + error = parser.GetError(); + return false; + } + else + { + return true; + } + } + + Node::Type FileReader::DetermineType() + { + return Node::DetermineType(json); + } + + const std::string &FileReader::GetError() const + { + return error; + } + + bool FileReader::loadFile(const std::string &filename, std::string &json) + { + std::fstream file(filename.c_str(), std::ios::in | std::ios::binary); + + if (!file.is_open()) + { + return false; + } + + file.seekg(0, std::ios::end); + std::ios::pos_type size = file.tellg(); + file.seekg(0, std::ios::beg); + + json.resize(static_cast(size), '\0'); + file.read(&json[0], size); + + return true; + } + + + Writer::Writer(const Node &root, const Format &format) : fi(new FormatInterpreter), root(root) + { + SetFormat(format); + } + Writer::~Writer() + { + delete fi; + fi = NULL; + } + + void Writer::SetFormat(const Format &format) + { + fi->SetFormat(format); + } + const std::string &Writer::Write() + { + result.clear(); + writeNode(root, 0); + return result; + } + + const std::string &Writer::GetResult() const + { + return result; + } + + void Writer::writeNode(const Node &node, unsigned int level) + { + switch (node.GetType()) + { + case Node::T_OBJECT : writeObject(node.AsObject(), level); break; + case Node::T_ARRAY : writeArray(node.AsArray(), level); break; + case Node::T_VALUE : writeValue(node.AsValue()); break; + } + } + void Writer::writeObject(const Object &node, unsigned int level) + { + result += "{" + fi->GetNewline(); + + for (Object::const_iterator it = node.begin(); it != node.end(); ++it) + { + const std::string &name = (*it).first; + // const Node &value = (*it).second; + + if (it != node.begin()) + result += "," + fi->GetNewline(); + result += fi->GetIndentation(level+1) + "\""+name+"\"" + ":" + fi->GetSpacing(); + writeNode((*it).second, level+1); + } + + result += fi->GetNewline() + fi->GetIndentation(level) + "}"; + } + void Writer::writeArray(const Array &node, unsigned int level) + { + result += "[" + fi->GetNewline(); + + for (Array::const_iterator it = node.begin(); it != node.end(); ++it) + { + const Node &value = (*it); + + if (it != node.begin()) + result += "," + fi->GetNewline(); + result += fi->GetIndentation(level+1); + writeNode(value, level+1); + } + + result += fi->GetNewline() + fi->GetIndentation(level) + "]"; + } + void Writer::writeValue(const Value &node) + { + if (node.IsString()) + { + result += "\""+Value::EscapeString(node.ToString())+"\""; + } + else + { + result += node.ToString(); + } + } + + + Parser::Parser(Node &root) : jsonSize(0), cursor(0), root(root) + { + } + Parser::Parser(Node &root, const std::string &json) : jsonSize(0), cursor(0), root(root) + { + SetJson(json); + } + Parser::~Parser() + { + } + + void Parser::SetJson(const std::string &json) + { + this->json = json; + jsonSize = json.size(); + } + bool Parser::Parse() + { + cursor = 0; + + tokenize(); + bool success = assemble(); + + return success; + } + + const std::string &Parser::GetError() const + { + return error; + } + + void Parser::tokenize() + { + Token token; + std::string valueBuffer; + bool saveBuffer; + + char c = '\0'; + for (; cursor < jsonSize; ++cursor) + { + c = json.at(cursor); + + if (IsWhitespace(c)) + continue; + + saveBuffer = true; + + switch (c) + { + case '{' : + { + token = T_OBJ_BEGIN; + break; + } + case '}' : + { + token = T_OBJ_END; + break; + } + case '[' : + { + token = T_ARRAY_BEGIN; + break; + } + case ']' : + { + token = T_ARRAY_END; + break; + } + case ',' : + { + token = T_SEPARATOR_NODE; + break; + } + case ':' : + { + token = T_SEPARATOR_NAME; + break; + } + case '"' : + { + token = T_VALUE; + readString(); + break; + } + case '/' : + { + char p = peek(); + if (p == '*') + { + jumpToCommentEnd(); + } + else if (p == '/') + { + jumpToNext('\n'); + } + break; + } + default : + { + valueBuffer += c; + saveBuffer = false; + break; + } + } + + if ((saveBuffer || cursor == jsonSize-1) && (!valueBuffer.empty())) // Always save buffer on the last character + { + if (interpretValue(valueBuffer)) + { + tokens.push(T_VALUE); + } + else + { + // Store the unknown token, so we can show it to the user + data.push(MakePair(Value::VT_STRING, valueBuffer)); + tokens.push(T_UNKNOWN); + } + + valueBuffer.clear(); + } + + // Push the token last so that any + // value token will get pushed first + // from above. + // If saveBuffer is false, it means that + // we are in the middle of a value, so we + // don't want to push any tokens now. + if (saveBuffer) + { + tokens.push(token); + } + } + } + bool Parser::assemble() + { + std::stack > nodeStack; + + std::string name = ""; + + Token token; + while (!tokens.empty()) + { + token = tokens.front(); + tokens.pop(); + + switch (token) + { + case T_UNKNOWN : + { + const std::string &unknownToken = data.front().second; + error = "Unknown token: "+unknownToken; + data.pop(); + return false; + } + case T_OBJ_BEGIN : + { + Node *node = NULL; + if (nodeStack.empty()) + { + if (!root.IsObject()) + { + error = "The given root node is not an object"; + return false; + } + + node = &root; + } + else + { + node = new Object; + } + + nodeStack.push(MakePair(name, node)); + name.clear(); + break; + } + case T_ARRAY_BEGIN : + { + Node *node = NULL; + if (nodeStack.empty()) + { + if (!root.IsArray()) + { + error = "The given root node is not an array"; + return false; + } + + node = &root; + } + else + { + node = new Array; + } + + nodeStack.push(MakePair(name, node)); + name.clear(); + break; + } + case T_OBJ_END : + case T_ARRAY_END : + { + if (nodeStack.empty()) + { + error = "Found end of object or array without beginning"; + return false; + } + if (token == T_OBJ_END && !nodeStack.top().second->IsObject()) + { + error = "Mismatched end and beginning of object"; + return false; + } + if (token == T_ARRAY_END && !nodeStack.top().second->IsArray()) + { + error = "Mismatched end and beginning of array"; + return false; + } + + std::string name = nodeStack.top().first; + Node *node = nodeStack.top().second; + nodeStack.pop(); + + if (!nodeStack.empty()) + { + if (nodeStack.top().second->IsObject()) + { + nodeStack.top().second->AsObject().Add(name, *node); + } + else if (nodeStack.top().second->IsArray()) + { + nodeStack.top().second->AsArray().Add(*node); + } + else + { + error = "Can only add elements to objects and arrays"; + return false; + } + + delete node; + node = NULL; + } + break; + } + case T_VALUE : + { + if (!tokens.empty() && tokens.front() == T_SEPARATOR_NAME) + { + tokens.pop(); + if (data.front().first != Value::VT_STRING) + { + error = "A name has to be a string"; + return false; + } + else + { + name = data.front().second; + data.pop(); + } + } + else + { + Node *node = NULL; + if (nodeStack.empty()) + { + if (!root.IsValue()) + { + error = "The given root node is not a value"; + return false; + } + + node = &root; + } + else + { + node = new Value; + } + + if (data.front().first == Value::VT_STRING) + { + static_cast(node)->Set(data.front().second); // This method calls UnescapeString() + } + else + { + static_cast(node)->Set(data.front().first, data.front().second); + } + data.pop(); + + if (!nodeStack.empty()) + { + if (nodeStack.top().second->IsObject()) + nodeStack.top().second->AsObject().Add(name, *node); + else if (nodeStack.top().second->IsArray()) + nodeStack.top().second->AsArray().Add(*node); + + delete node; + node = NULL; + name.clear(); + } + else + { + nodeStack.push(MakePair(name, node)); + name.clear(); + } + } + break; + } + case T_SEPARATOR_NAME : + case T_SEPARATOR_NODE : break; + } + } + + return true; + } + + char Parser::peek() + { + if (cursor < jsonSize-1) + { + return json.at(cursor+1); + } + else + { + return '\0'; + } + } + void Parser::jumpToNext(char c) + { + ++cursor; + while (cursor < jsonSize && json.at(cursor) != c) + ++cursor; + } + void Parser::jumpToCommentEnd() + { + ++cursor; + char c1 = '\0', c2 = '\0'; + for (; cursor < jsonSize; ++cursor) + { + c2 = json.at(cursor); + + if (c1 == '*' && c2 == '/') + break; + + c1 = c2; + } + } + + void Parser::readString() + { + if (json.at(cursor) != '"') + return; + + std::string str; + + ++cursor; + + char c1 = '\0', c2 = '\0'; + for (; cursor < jsonSize; ++cursor) + { + c2 = json.at(cursor); + + if (c1 != '\\' && c2 == '"') + { + break; + } + + str += c2; + + c1 = c2; + } + + data.push(MakePair(Value::VT_STRING, str)); + } + bool Parser::interpretValue(const std::string &value) + { + std::string upperValue(value.size(), '\0'); + + std::transform(value.begin(), value.end(), upperValue.begin(), toupper); + + if (upperValue == "NULL") + { + data.push(MakePair(Value::VT_NULL, std::string(""))); + } + else if (upperValue == "TRUE") + { + data.push(MakePair(Value::VT_BOOL, std::string("true"))); + } + else if (upperValue == "FALSE") + { + data.push(MakePair(Value::VT_BOOL, std::string("false"))); + } + else + { + bool number = true; + for (std::string::const_iterator it = value.begin(); it != value.end(); ++it) + { + if (!IsNumber(*it)) + { + number = false; + break; + } + } + + if (number) + { + data.push(MakePair(Value::VT_NUMBER, value)); + } + else + { + return false; + } + } + + return true; + } +} diff --git a/vendor/exiv2-0.25/samples/Jzon.h b/vendor/exiv2-0.25/samples/Jzon.h new file mode 100644 index 0000000..21eb8ca --- /dev/null +++ b/vendor/exiv2-0.25/samples/Jzon.h @@ -0,0 +1,474 @@ +/* +Copyright (c) 2013 Johannes Häggqvist + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +#ifndef Jzon_h__ +#define Jzon_h__ + +#ifndef JzonAPI +# ifdef _WINDLL +# define JzonAPI __declspec(dllimport) +# elif defined(__GNUC__) && (__GNUC__ >= 4) +# define JzonAPI __attribute__ ((visibility("default"))) +# else +# define JzonAPI +# endif +#endif + +#include +#include +#include +#include +#include + +namespace Jzon +{ + #ifdef _MSC_VER + # pragma warning(disable : 4251) + #endif + + template + struct Pair + { + Pair(T1 first, T2 second) : first(first), second(second) + {} + + Pair &operator=(const Pair &rhs) + { + if (this != &rhs) + { + this->first = rhs.first; + this->second = rhs.second; + } + return *this; + } + + T1 first; + T2 second; + }; + template + static Pair MakePair(T1 first, T2 second) + { + return Pair(first, second); + } + + class Node; + class Value; + class Object; + class Array; + typedef Pair NamedNode; + typedef Pair NamedNodePtr; + + class TypeException : public std::logic_error + { + public: + TypeException() : std::logic_error("A Node was used as the wrong type") + {} + }; + class NotFoundException : public std::out_of_range + { + public: + NotFoundException() : std::out_of_range("The node could not be found") + {} + }; + + struct Format + { + bool newline; + bool spacing; + bool useTabs; + unsigned int indentSize; + }; + static const Format StandardFormat = { true, true, true, 1 }; + static const Format NoFormat = { false, false, false, 0 }; + + class JzonAPI Node + { + friend class Object; + friend class Array; + + public: + enum Type + { + T_OBJECT, + T_ARRAY, + T_VALUE + }; + + Node(); + virtual ~Node(); + + virtual Type GetType() const = 0; + + inline bool IsObject() const { return (GetType() == T_OBJECT); } + inline bool IsArray() const { return (GetType() == T_ARRAY); } + inline bool IsValue() const { return (GetType() == T_VALUE); } + + Object &AsObject(); + const Object &AsObject() const; + Array &AsArray(); + const Array &AsArray() const; + Value &AsValue(); + const Value &AsValue() const; + + virtual inline bool IsNull() const { return false; } + virtual inline bool IsString() const { return false; } + virtual inline bool IsNumber() const { return false; } + virtual inline bool IsBool() const { return false; } + + virtual std::string ToString() const { throw TypeException(); } + virtual int ToInt() const { throw TypeException(); } + virtual float ToFloat() const { throw TypeException(); } + virtual double ToDouble() const { throw TypeException(); } + virtual bool ToBool() const { throw TypeException(); } + + virtual bool Has(const std::string &/*name*/) const { throw TypeException(); } + virtual size_t GetCount() const { return 0; } + virtual Node &Get(const std::string &/*name*/) const { throw TypeException(); } + virtual Node &Get(size_t /*index*/) const { throw TypeException(); } + + static Type DetermineType(const std::string &json); + + protected: + virtual Node *GetCopy() const = 0; + }; + + class JzonAPI Value : public Node + { + public: + enum ValueType + { + VT_NULL, + VT_STRING, + VT_NUMBER, + VT_BOOL + }; + + Value(); + Value(const Value &rhs); + Value(const Node &rhs); + Value(ValueType type, const std::string &value); + Value(const std::string &value); + Value(const char *value); + Value(const int value); + Value(const float value); + Value(const double value); + Value(const bool value); + virtual ~Value(); + + virtual Type GetType() const; + ValueType GetValueType() const; + + virtual inline bool IsNull() const { return (type == VT_NULL); } + virtual inline bool IsString() const { return (type == VT_STRING); } + virtual inline bool IsNumber() const { return (type == VT_NUMBER); } + virtual inline bool IsBool() const { return (type == VT_BOOL); } + + virtual std::string ToString() const; + virtual int ToInt() const; + virtual float ToFloat() const; + virtual double ToDouble() const; + virtual bool ToBool() const; + + void SetNull(); + void Set(const Value &value); + void Set(ValueType type, const std::string &value); + void Set(const std::string &value); + void Set(const char *value); + void Set(const int value); + void Set(const float value); + void Set(const double value); + void Set(const bool value); + + Value &operator=(const Value &rhs); + Value &operator=(const Node &rhs); + Value &operator=(const std::string &rhs); + Value &operator=(const char *rhs); + Value &operator=(const int rhs); + Value &operator=(const float rhs); + Value &operator=(const double rhs); + Value &operator=(const bool rhs); + + bool operator==(const Value &other) const; + bool operator!=(const Value &other) const; + + static std::string EscapeString(const std::string &value); + static std::string UnescapeString(const std::string &value); + + protected: + virtual Node *GetCopy() const; + + private: + std::string valueStr; + ValueType type; + }; + + static const Value null; + + class JzonAPI Object : public Node + { + public: + class iterator : public std::iterator + { + public: + iterator(NamedNodePtr *o) : p(o) {} + iterator(const iterator &it) : p(it.p) {} + + iterator &operator++() { ++p; return *this; } + iterator operator++(int) { iterator tmp(*this); operator++(); return tmp; } + + bool operator==(const iterator &rhs) { return p == rhs.p; } + bool operator!=(const iterator &rhs) { return p != rhs.p; } + + NamedNode operator*() { return NamedNode(p->first, *p->second); } + + private: + NamedNodePtr *p; + }; + class const_iterator : public std::iterator + { + public: + const_iterator(const NamedNodePtr *o) : p(o) {} + const_iterator(const const_iterator &it) : p(it.p) {} + + const_iterator &operator++() { ++p; return *this; } + const_iterator operator++(int) { const_iterator tmp(*this); operator++(); return tmp; } + + bool operator==(const const_iterator &rhs) { return p == rhs.p; } + bool operator!=(const const_iterator &rhs) { return p != rhs.p; } + + const NamedNode operator*() { return NamedNode(p->first, *p->second); } + + private: + const NamedNodePtr *p; + }; + + Object(); + Object(const Object &other); + Object(const Node &other); + virtual ~Object(); + + virtual Type GetType() const; + + void Add(const std::string &name, Node &node); + void Add(const std::string &name, Value node); + void Remove(const std::string &name); + void Clear(); + + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + + virtual bool Has(const std::string &name) const; + virtual size_t GetCount() const; + virtual Node &Get(const std::string &name) const; + using Node::Get; + + protected: + virtual Node *GetCopy() const; + + private: + typedef std::vector ChildList; + ChildList children; + }; + + class JzonAPI Array : public Node + { + public: + class iterator : public std::iterator + { + public: + iterator(Node **o) : p(o) {} + iterator(const iterator &it) : p(it.p) {} + + iterator &operator++() { ++p; return *this; } + iterator operator++(int) { iterator tmp(*this); operator++(); return tmp; } + + bool operator==(const iterator &rhs) { return p == rhs.p; } + bool operator!=(const iterator &rhs) { return p != rhs.p; } + + Node &operator*() { return **p; } + + private: + Node **p; + }; + class const_iterator : public std::iterator + { + public: + const_iterator(const Node *const *o) : p(o) {} + const_iterator(const const_iterator &it) : p(it.p) {} + + const_iterator &operator++() { ++p; return *this; } + const_iterator operator++(int) { const_iterator tmp(*this); operator++(); return tmp; } + + bool operator==(const const_iterator &rhs) { return p == rhs.p; } + bool operator!=(const const_iterator &rhs) { return p != rhs.p; } + + const Node &operator*() { return **p; } + + private: + const Node *const *p; + }; + + Array(); + Array(const Array &other); + Array(const Node &other); + virtual ~Array(); + + virtual Type GetType() const; + + void Add(Node &node); + void Add(Value node); + void Remove(size_t index); + void Clear(); + + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + + virtual size_t GetCount() const; + virtual Node &Get(size_t index) const; + using Node::Get; + + protected: + virtual Node *GetCopy() const; + + private: + typedef std::vector ChildList; + ChildList children; + }; + + class JzonAPI FileWriter + { + public: + FileWriter(const std::string &filename); + ~FileWriter(); + + static void WriteFile(const std::string &filename, const Node &root, const Format &format = NoFormat); + + void Write(const Node &root, const Format &format = NoFormat); + + private: + std::string filename; + }; + + class JzonAPI FileReader + { + public: + FileReader(const std::string &filename); + ~FileReader(); + + static bool ReadFile(const std::string &filename, Node &node); + + bool Read(Node &node); + + Node::Type DetermineType(); + + const std::string &GetError() const; + + private: + bool loadFile(const std::string &filename, std::string &json); + std::string json; + std::string error; + }; + + class JzonAPI Writer + { + public: + Writer(const Node &root, const Format &format = NoFormat); + ~Writer(); + + void SetFormat(const Format &format); + const std::string &Write(); + + // Return result from last call to Write() + const std::string &GetResult() const; + + private: + void writeNode(const Node &node, unsigned int level); + void writeObject(const Object &node, unsigned int level); + void writeArray(const Array &node, unsigned int level); + void writeValue(const Value &node); + + std::string result; + + class FormatInterpreter *fi; + + const Node &root; + + // Disable assignment operator + Writer &operator=(const Writer&); + }; + + class JzonAPI Parser + { + public: + Parser(Node &root); + Parser(Node &root, const std::string &json); + ~Parser(); + + void SetJson(const std::string &json); + bool Parse(); + + const std::string &GetError() const; + + private: + enum Token + { + T_UNKNOWN, + T_OBJ_BEGIN, + T_OBJ_END, + T_ARRAY_BEGIN, + T_ARRAY_END, + T_SEPARATOR_NODE, + T_SEPARATOR_NAME, + T_VALUE + }; + + void tokenize(); + bool assemble(); + + char peek(); + void jumpToNext(char c); + void jumpToCommentEnd(); + + void readString(); + bool interpretValue(const std::string &value); + + std::string json; + std::size_t jsonSize; + + std::queue tokens; + std::queue > data; + + std::size_t cursor; + + Node &root; + + std::string error; + + // Disable assignment operator + Parser &operator=(const Parser&); + }; +} + +#endif // Jzon_h__ diff --git a/vendor/exiv2-0.25/samples/Makefile b/vendor/exiv2-0.25/samples/Makefile new file mode 100644 index 0000000..18a07d3 --- /dev/null +++ b/vendor/exiv2-0.25/samples/Makefile @@ -0,0 +1,205 @@ +# ************************************************************* -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile +# Version: $Rev: 3861 $ +# Author(s): Andreas Huggel (ahu) +# History: 08-Oct-07, ahu: created +# +# Description: +# Simple Makefile to build sample programs. Requires installed exiv2 library +# and headers. Adapted from the main Exiv2 src/Makefile. +# +# Restrictions: +# Requires GNU make. +# + +# Default make target +all: samples + +# Include system configuration +top_srcdir = .. +include $(top_srcdir)/config/config.mk + +# ****************************************************************************** +# Source files + +# Add source files of sample programs to this list +BINSRC = addmoddel.cpp \ + conntest.cpp \ + convert-test.cpp \ + easyaccess-test.cpp \ + exifcomment.cpp \ + exifdata-test.cpp \ + exifdata.cpp \ + exifprint.cpp \ + exifvalue.cpp \ + httptest.cpp \ + iotest.cpp \ + iptceasy.cpp \ + iptcprint.cpp \ + iptctest.cpp \ + key-test.cpp \ + largeiptc-test.cpp \ + mmap-test.cpp \ + prevtest.cpp \ + remotetest.cpp \ + stringto-test.cpp \ + taglist.cpp \ + tiff-test.cpp \ + werror-test.cpp \ + write-test.cpp \ + write2-test.cpp \ + xmpparse.cpp \ + xmpparser-test.cpp \ + xmpsample.cpp + +# Samples that need special treatment during compilation or linking +OTHERSRC = exiv2json.cpp \ + geotag.cpp \ + metacopy.cpp \ + path-test.cpp + +# ****************************************************************************** +# Initialisations +SHELL = /bin/sh + +PKGCONFIG=pkg-config +BAR='****************************************' + +.SUFFIXES: +.SUFFIXES: .c .cpp .o .so + +.PRECIOUS: %.cpp + +CPPFLAGS := `pkg-config exiv2 --cflags` +LDFLAGS := `pkg-config exiv2 --libs` + +BINOBJ = $(BINSRC:.cpp=.o) +BINARY = $(BINSRC:.cpp=) + +OTHEROBJ = $(OTHERSRC:.cpp=.o) Jzon.o +OTHERBIN = $(OTHERSRC:.cpp=) + +EXECUTABLE = $(BINSRC:%.cpp=../bin/%$(EXEEXT)) $(OTHERSRC:%.cpp=../bin/%$(EXEEXT)) + +ifdef DEP_TRACKING +DEP = $(BINSRC:%.cpp=$(DEPDIR)/%.d) $(OTHERSRC:%.cpp=$(DEPDIR)/%.d) $(DEPDIR)/Jzon.d +endif + +PREFIX = /usr/local/lib +LINK.cc += -rpath $(PREFIX) -L$(PREFIX) + +# TODO: This should really not be here. We should use the installed headers +# to build the samples. Some errors only show up in this scenario, e.g., errors +# due to missing headers which are not installed (depending on compile-time +# settings) but may be wrongly included from other headers. +COMPILE.cc += -I$(top_srcdir)/include/exiv2 + +# ****************************************************************************** +# Rules +samples: $(BINARY) $(OTHERBIN) + +$(BINOBJ): %.o: %.cpp + @if [ -z `which $(PKGCONFIG)` ]; then echo $(BAR) $'\\n***' utility $(PKGCONFIG) not available $'***\n'$(BAR) ; exit 42 ; fi + $(COMPILE.cc) -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +$(BINARY): %: %.o + mkdir -pv ../bin 2>&1 > /dev/null + $(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $@.o + +%.o: %.cpp + $(COMPILE.cc) -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +%.ii: %.cpp + set -e; \ + $(CXXCPP) -E $(CPPFLAGS) $< | sed '/^[ ]*$$/d' > $@ + +# ****************************************************************************** +# Targets +.PHONY: all relink binclean mostlyclean clean distclean maintainer-clean + +ifdef DEP_TRACKING +# Include targets from dependency files +-include $(DEP) +endif + +relink: binclean samples + +# link expat directly to geotag +geotag: %: %.cpp + $(COMPILE.cc) -o $@.o $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + $(LIBTOOL) --mode=link $(LINK.cc) -lexpat $@.o -o ../bin/$@ + +# link applications which require utils.cpp support +metacopy path-test: %: %.cpp ../src/utils.o + $(COMPILE.cc) -I../src -I../include/exiv2 -o $@.o $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + $(LIBTOOL) --mode=link $(LINK.cc) $@.o ../src/utils.o -o ../bin/$@ + +# exiv2json sample requires Jzon +exiv2json: %: %.cpp Jzon.o + $(COMPILE.cc) -o $@.o $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + $(LIBTOOL) --mode=link $(LINK.cc) Jzon.o $@.o -o ../bin/$@ + +# Remove binaries, e.g., to relink them +binclean: + $(RM) $(EXECUTABLE) + +mostlyclean: + $(RM) core + $(RM) $(BINSRC:.cpp=.ii) $(OTHERSRC:.cpp=.ii) Jzon.ii + $(RM) $(BINOBJ) $(OTHEROBJ) + +clean: binclean mostlyclean + +# Run `make distclean' from the top source directory to also remove +# files created by configuring the program. +distclean: clean +ifdef DEP_TRACKING + $(RM) $(DEP) + -rmdir $(DEPDIR) +endif + $(RM) *~ *.bak *# + +# This command is intended for maintainers to use; it deletes files +# that may need special tools to rebuild. +maintainer-clean: distclean diff --git a/vendor/exiv2-0.25/samples/addmoddel.cpp b/vendor/exiv2-0.25/samples/addmoddel.cpp new file mode 100644 index 0000000..df6cc57 --- /dev/null +++ b/vendor/exiv2-0.25/samples/addmoddel.cpp @@ -0,0 +1,109 @@ +// ***************************************************************** -*- C++ -*- +// addmoddel.cpp, $Rev: 3353 $ +// Sample program showing how to add, modify and delete Exif metadata. + +#include + +#include +#include +#include + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::string file(argv[1]); + + // Container for exif metadata. This is an example of creating + // exif metadata from scratch. If you want to add, modify, delete + // metadata that exists in an image, start with ImageFactory::open + Exiv2::ExifData exifData; + + // ************************************************************************* + // Add to the Exif data + + // This is the quickest way to add (simple) Exif data. If a metadatum for + // a given key already exists, its value is overwritten. Otherwise a new + // tag is added. + exifData["Exif.Image.Model"] = "Test 1"; // AsciiValue + exifData["Exif.Image.SamplesPerPixel"] = uint16_t(162); // UShortValue + exifData["Exif.Image.XResolution"] = int32_t(-2); // LongValue + exifData["Exif.Image.YResolution"] = Exiv2::Rational(-2, 3); // RationalValue + std::cout << "Added a few tags the quick way.\n"; + + // Create a ASCII string value (note the use of create) + Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString); + // Set the value to a string + v->read("1999:12:31 23:59:59"); + // Add the value together with its key to the Exif data container + Exiv2::ExifKey key("Exif.Photo.DateTimeOriginal"); + exifData.add(key, v.get()); + std::cout << "Added key \"" << key << "\", value \"" << *v << "\"\n"; + + // Now create a more interesting value (without using the create method) + Exiv2::URationalValue::AutoPtr rv(new Exiv2::URationalValue); + // Set two rational components from a string + rv->read("1/2 1/3"); + // Add more elements through the extended interface of rational value + rv->value_.push_back(std::make_pair(2,3)); + rv->value_.push_back(std::make_pair(3,4)); + // Add the key and value pair to the Exif data + key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities"); + exifData.add(key, rv.get()); + std::cout << "Added key \"" << key << "\", value \"" << *rv << "\"\n"; + + // ************************************************************************* + // Modify Exif data + + // Since we know that the metadatum exists (or we don't mind creating a new + // tag if it doesn't), we can simply do this: + Exiv2::Exifdatum& tag = exifData["Exif.Photo.DateTimeOriginal"]; + std::string date = tag.toString(); + date.replace(0, 4, "2000"); + tag.setValue(date); + std::cout << "Modified key \"" << tag.key() + << "\", new value \"" << tag.value() << "\"\n"; + + // Alternatively, we can use findKey() + key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities"); + Exiv2::ExifData::iterator pos = exifData.findKey(key); + if (pos == exifData.end()) throw Exiv2::Error(1, "Key not found"); + // Get a pointer to a copy of the value + v = pos->getValue(); + // Downcast the Value pointer to its actual type + Exiv2::URationalValue* prv = dynamic_cast(v.release()); + if (prv == 0) throw Exiv2::Error(1, "Downcast failed"); + rv = Exiv2::URationalValue::AutoPtr(prv); + // Modify the value directly through the interface of URationalValue + rv->value_[2] = std::make_pair(88,77); + // Copy the modified value back to the metadatum + pos->setValue(rv.get()); + std::cout << "Modified key \"" << key + << "\", new value \"" << pos->value() << "\"\n"; + + // ************************************************************************* + // Delete metadata from the Exif data container + + // Delete the metadatum at iterator position pos + key = Exiv2::ExifKey("Exif.Image.PrimaryChromaticities"); + pos = exifData.findKey(key); + if (pos == exifData.end()) throw Exiv2::Error(1, "Key not found"); + exifData.erase(pos); + std::cout << "Deleted key \"" << key << "\"\n"; + + // ************************************************************************* + // Finally, write the remaining Exif data to the image file + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + + image->setExifData(exifData); + image->writeMetadata(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/conntest.cpp b/vendor/exiv2-0.25/samples/conntest.cpp new file mode 100644 index 0000000..777f1da --- /dev/null +++ b/vendor/exiv2-0.25/samples/conntest.cpp @@ -0,0 +1,158 @@ +// ***************************************************************** -*- C++ -*- +// con-test.cpp +// Tester application for testing the http/https/ftp/ssh/sftp connection + +#include + +#include +#include +using namespace std; + +void httpcon(const std::string& url, bool useHttp1_0 = false) { + Exiv2::dict_t response; + Exiv2::dict_t request; + string errors; + + Exiv2::Uri uri = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(uri); + + request["server"] = uri.Host; + request["page"] = uri.Path; + request["port"] = uri.Port; + if (!useHttp1_0) request["version"] = "1.1"; + + int serverCode = Exiv2::http(request,response,errors); + if (serverCode < 0 || serverCode >= 400 || errors.compare("") != 0) { + throw Exiv2::Error(55, "Server", serverCode); + } +} + +#if EXV_USE_CURL == 1 +void curlcon(const std::string& url, bool useHttp1_0 = false) { + CURL* curl = curl_easy_init(); + if(!curl) { + throw Exiv2::Error(1, "Uable to init libcurl."); + } + + // get the timeout value + std::string timeoutStr = Exiv2::getEnv(Exiv2::envTIMEOUT); + long timeout = atol(timeoutStr.c_str()); + if (timeout == 0) { + throw Exiv2::Error(1, "Timeout Environmental Variable must be a positive integer."); + } + + string response; + curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Exiv2::curlWriter); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, timeout); + //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); // debug + if (useHttp1_0) curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); + else curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); + + /* Perform the request, res will get the return code */ + CURLcode res = curl_easy_perform(curl); + if(res != CURLE_OK) { // error happends + throw Exiv2::Error(1, curl_easy_strerror(res)); + } + + // get return code + long returnCode; + curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &returnCode); // get code + curl_easy_cleanup(curl); + + if (returnCode >= 400 || returnCode < 0) { + throw Exiv2::Error(55, "Server", returnCode); + } +} +#endif + +#if EXV_USE_SSH == 1 +void sshcon(const std::string& url) { + Exiv2::Uri uri = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(uri); + + string page = uri.Path; + // remove / at the beginning of the path + if (page[0] == '/') { + page = page.substr(1); + } + Exiv2::SSH ssh(uri.Host, uri.Username, uri.Password, uri.Port); + string response = ""; + string cmd = "declare -a x=($(ls -alt " + page + ")); echo ${x[4]}"; + if (ssh.runCommand(cmd, &response) != 0) { + throw Exiv2::Error(1, "Unable to get file length."); + } else { + long length = atol(response.c_str()); + if (length == 0) { + throw Exiv2::Error(1, "File is empty or not found."); + } + } +} + +void sftpcon(const std::string& url) { + Exiv2::Uri uri = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(uri); + + string page = uri.Path; + // remove / at the beginning of the path + if (page[0] == '/') { + page = page.substr(1); + } + Exiv2::SSH ssh(uri.Host, uri.Username, uri.Password, uri.Port); + sftp_file handle; + ssh.getFileSftp(page, handle); + if (handle == NULL) throw Exiv2::Error(1, "Unable to open the file"); + else sftp_close(handle); +} +#endif + +int main(int argc,const char** argv) +{ + if (argc < 2) { + cout << "Usage: " << argv[0] << " url {-http1_0}\n"; + return 1; + } + std::string url(argv[1]); + Exiv2::Protocol prot = Exiv2::fileProtocol(url); + + bool useHttp1_0 = false; + for ( int a = 1 ; a < argc ; a++ ) { + std::string arg(argv[a]); + if (arg == "-http1_0") useHttp1_0 = true; + } + + bool isOk = false; + try { + #if EXV_USE_SSH == 1 + if (prot == Exiv2::pSsh) { + sshcon(url); + isOk = true; + } else if (prot == Exiv2::pSftp){ + sftpcon(url); + isOk = true; + } + #endif + #if EXV_USE_CURL == 1 + if (prot == Exiv2::pHttp || prot == Exiv2::pHttps || prot == Exiv2::pFtp) { + curlcon(url, useHttp1_0); + isOk = true; + } + #endif + if (!isOk && prot == Exiv2::pHttp) { + httpcon(url, useHttp1_0); + isOk = true; + } + } catch (Exiv2::AnyError& e) { + std::cout << "Error: '" << e << "'\n"; + return -1; + } + + if (!isOk) cout << "The protocol is unsupported.\n"; + else cout << "OK.\n"; + return 0; +} + +// That's all Folks! diff --git a/vendor/exiv2-0.25/samples/convert-test.cpp b/vendor/exiv2-0.25/samples/convert-test.cpp new file mode 100644 index 0000000..98c51e9 --- /dev/null +++ b/vendor/exiv2-0.25/samples/convert-test.cpp @@ -0,0 +1,37 @@ +// ***************************************************************** -*- C++ -*- +// convert-test.cpp, $Rev: 3090 $ +// Conversion test driver - make sure you have a copy of the input file around! + +#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::XmpData xmpData; + Exiv2::copyExifToXmp(image->exifData(), xmpData); + + Exiv2::ExifData exifData; + Exiv2::copyXmpToExif(xmpData, exifData); + + image->setXmpData(xmpData); + image->setExifData(exifData); + image->writeMetadata(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/easyaccess-test.cpp b/vendor/exiv2-0.25/samples/easyaccess-test.cpp new file mode 100644 index 0000000..16d7c08 --- /dev/null +++ b/vendor/exiv2-0.25/samples/easyaccess-test.cpp @@ -0,0 +1,73 @@ +// ***************************************************************** -*- C++ -*- +// easyaccess-test.cpp, $Rev: 3090 $ +// Sample program using high-level metadata access functions + +// included header files +#include + +#include +#include +#include + +typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed); + +struct EasyAccess { + const char* label_; + EasyAccessFct findFct_; +}; + +static const EasyAccess easyAccess[] = { + { "Orientation", Exiv2::orientation }, + { "ISO speed", Exiv2::isoSpeed }, + { "Flash bias", Exiv2::flashBias }, + { "Exposure mode", Exiv2::exposureMode }, + { "Scene mode", Exiv2::sceneMode }, + { "Macro mode", Exiv2::macroMode }, + { "Image quality", Exiv2::imageQuality }, + { "White balance", Exiv2::whiteBalance }, + { "Lens name", Exiv2::lensName }, + { "Saturation", Exiv2::saturation }, + { "Sharpness", Exiv2::sharpness }, + { "Contrast", Exiv2::contrast }, + { "Scene capture type", Exiv2::sceneCaptureType }, + { "Metering mode", Exiv2::meteringMode }, + { "Camera make", Exiv2::make }, + { "Camera model", Exiv2::model }, + { "Exposure time", Exiv2::exposureTime }, + { "FNumber", Exiv2::fNumber }, + { "Subject distance", Exiv2::subjectDistance }, + { "Camera serial number", Exiv2::serialNumber }, + { "Focal length", Exiv2::focalLength }, + { "AF point", Exiv2::afPoint } +}; + +int main(int argc, char **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& ed = image->exifData(); + + for (unsigned int i = 0; i < EXV_COUNTOF(easyAccess); ++i) { + Exiv2::ExifData::const_iterator pos = easyAccess[i].findFct_(ed); + std::cout << std::setw(20) << std::left << easyAccess[i].label_; + if (pos != ed.end()) { + std::cout << " (" << std::setw(35) << pos->key() << ") : " + << pos->print(&ed) << "\n"; + } + else { + std::cout << " (" << std::setw(35) << " " << ") : \n"; + } + } + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/exifcomment.cpp b/vendor/exiv2-0.25/samples/exifcomment.cpp new file mode 100644 index 0000000..0f95a28 --- /dev/null +++ b/vendor/exiv2-0.25/samples/exifcomment.cpp @@ -0,0 +1,66 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract : Sample program showing how to set the Exif comment of an image, + Exif.Photo.UserComment + + File: exifcomment.cpp + Version : $Rev: 2286 $ + Author(s): Andreas Huggel (ahu) + History : 10-May-04, ahu: created + 16-Jan-05, ahu: updated using CommentValue and operator trickery + */ +// ***************************************************************************** +// included header files +#include + +#include +#include + +// ***************************************************************************** +// Main +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(); + + /* + Exiv2 uses a CommentValue for Exif user comments. The format of the + comment string includes an optional charset specification at the beginning: + + [charset=["]Ascii|Jis|Unicode|Undefined["] ]comment + + Undefined is used as a default if the comment doesn't start with a charset + definition. + + Following are a few examples of valid comments. The last one is written to + the file. + */ + exifData["Exif.Photo.UserComment"] + = "charset=\"Unicode\" An Unicode Exif comment added with Exiv2"; + exifData["Exif.Photo.UserComment"] + = "charset=\"Undefined\" An undefined Exif comment added with Exiv2"; + exifData["Exif.Photo.UserComment"] + = "Another undefined Exif comment added with Exiv2"; + exifData["Exif.Photo.UserComment"] + = "charset=Ascii An ASCII Exif comment added with Exiv2"; + + std::cout << "Writing user comment '" + << exifData["Exif.Photo.UserComment"] + << "' back to the image\n"; + + image->writeMetadata(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/exifdata-test.cpp b/vendor/exiv2-0.25/samples/exifdata-test.cpp new file mode 100644 index 0000000..c5d86c9 --- /dev/null +++ b/vendor/exiv2-0.25/samples/exifdata-test.cpp @@ -0,0 +1,136 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract : ExifData assignment and copy construction unit tests + + File : exifdata-test.cpp + Version : $Rev: 2286 $ + Author(s): Andreas Huggel (ahu) + History : 20-Feb-05, ahu: created + + */ +// ***************************************************************************** +// included header files +#include + +#include +#include +#include +#include + +void write(const std::string& file, Exiv2::ExifData& ed); +void print(const std::string& file); + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::string file(argv[1]); + + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert (image.get() != 0); + image->readMetadata(); + + Exiv2::ExifData &ed = image->exifData(); + if (ed.empty()) { + std::string error = file + ": No Exif data found in the file"; + throw Exiv2::Error(1, error); + } + + std::cout << "Copy construction, non-intrusive changes\n"; + Exiv2::ExifData ed1(ed); + ed1["Exif.Image.DateTime"] = "Sunday, 11am"; + ed1["Exif.Image.Orientation"] = uint16_t(2); + ed1["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am"; + ed1["Exif.Photo.MeteringMode"] = uint16_t(1); + ed1["Exif.Iop.InteroperabilityIndex"] = "123"; +// ed1["Exif.Thumbnail.Orientation"] = uint16_t(2); + write(file, ed1); + print(file); + std::cout << "----------------------------------------------\n"; + + std::cout << "Copy construction, intrusive changes\n"; + Exiv2::ExifData ed2(ed); + ed2["Exif.Image.DateTime"] = "Sunday, 11am and ten minutes"; + ed2["Exif.Image.Orientation"] = "2 3 4 5"; + ed2["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am and ten minutes"; + ed2["Exif.Photo.MeteringMode"] = "1 2 3 4 5 6"; + ed2["Exif.Iop.InteroperabilityIndex"] = "1234"; + ed2["Exif.Thumbnail.Orientation"] = "2 3 4 5 6"; + write(file, ed2); + print(file); + std::cout << "----------------------------------------------\n"; + + std::cout << "Assignment, non-intrusive changes\n"; + Exiv2::ExifData ed3; + ed3["Exif.Iop.InteroperabilityVersion"] = "Test 6 Iop tag"; + ed3["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; + ed3 = ed; + ed3["Exif.Image.DateTime"] = "Sunday, 11am"; + ed3["Exif.Image.Orientation"] = uint16_t(2); + ed3["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am"; + ed3["Exif.Photo.MeteringMode"] = uint16_t(1); + ed3["Exif.Iop.InteroperabilityIndex"] = "123"; + ed3["Exif.Thumbnail.Orientation"] = uint16_t(2); + write(file, ed3); + print(file); + std::cout << "----------------------------------------------\n"; + + std::cout << "Assignment, intrusive changes\n"; + Exiv2::ExifData ed4; + ed4["Exif.Iop.InteroperabilityVersion"] = "Test 6 Iop tag"; + ed4["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; + ed4 = ed; + ed4["Exif.Image.DateTime"] = "Sunday, 11am and ten minutes"; + ed4["Exif.Image.Orientation"] = "2 3 4 5"; + ed4["Exif.Photo.DateTimeOriginal"] = "Sunday, 11am and ten minutes"; + ed4["Exif.Photo.MeteringMode"] = uint16_t(1); + ed4["Exif.Iop.InteroperabilityIndex"] = "123"; + ed4["Exif.Thumbnail.Orientation"] = uint16_t(2); + write(file, ed4); + print(file); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} +} + +void write(const std::string& file, Exiv2::ExifData& ed) +{ + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert (image.get() != 0); + image->setExifData(ed); + image->writeMetadata(); +} + +void print(const std::string& file) +{ + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert (image.get() != 0); + image->readMetadata(); + + Exiv2::ExifData &ed = image->exifData(); + Exiv2::ExifData::const_iterator end = ed.end(); + for (Exiv2::ExifData::const_iterator i = ed.begin(); i != end; ++i) { + std::cout << std::setw(45) << std::setfill(' ') << std::left + << i->key() << " " + << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << i->tag() << " " + << std::setw(12) << std::setfill(' ') << std::left + << i->ifdName() << " " + << std::setw(9) << std::setfill(' ') << std::left + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + } +} diff --git a/vendor/exiv2-0.25/samples/exifdata.cpp b/vendor/exiv2-0.25/samples/exifdata.cpp new file mode 100644 index 0000000..5f13016 --- /dev/null +++ b/vendor/exiv2-0.25/samples/exifdata.cpp @@ -0,0 +1,201 @@ +// ***************************************************************** -*- C++ -*- +// exifdata.cpp, $Rev: 3090 $ +// Sample program to format exif data in various external formats + +#include + +#include +#include +#include +#include + +typedef std::map format_t; +typedef format_t::const_iterator format_i; +typedef enum { wolf , csv , json , xml } format_e; + +void syntax(const char* argv[],format_t& formats) +{ + std::cout << "Usage: " << argv[0] << " file format" << std::endl; + int count = 0; + std::cout << "formats: "; + for ( format_i i = formats.begin() ; i != formats.end() ; i++ ) { + std::cout << ( count++ ? " | " : "") << i->first ; + } + std::cout << std::endl; +} + +size_t formatInit(Exiv2::ExifData& exifData) +{ + size_t result = 0; + for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != exifData.end() ; ++i) { + result ++ ; + } + return result ; +} + +/////////////////////////////////////////////////////////////////////// +std::string escapeCSV(Exiv2::ExifData::const_iterator it,bool bValue) +{ + std::string result ; + + std::ostringstream os; + if ( bValue ) os << it->value() ; else os << it->key() ; + + std::string s = os.str(); + for ( size_t i = 0 ;i < s.length() ; i ++ ) { + if ( s[i] == ',' ) result += '\\'; + result += s[i]; + } + + return result ; +} + +std::string formatCSV(Exiv2::ExifData& exifData) +{ + size_t count = 0; + size_t length = formatInit(exifData); + std::ostringstream result; + + for (Exiv2::ExifData::const_iterator i = exifData.begin(); count++ < length; ++i) { + result << escapeCSV(i,false) << (count != length ? ", " : "" ) ; + } + result << std::endl; + + count = 0; + for (Exiv2::ExifData::const_iterator i = exifData.begin(); count++ < length ; ++i) { + result << escapeCSV(i,true) << (count != length ? ", " : "" ) ; + } + return result.str(); +} + +/////////////////////////////////////////////////////////////////////// +std::string formatWolf(Exiv2::ExifData& exifData) +{ + size_t count = 0; + size_t length = formatInit(exifData); + std::ostringstream result; + + result << "{ " << std::endl; + for (Exiv2::ExifData::const_iterator i = exifData.begin(); count++ < length ; ++i) { + result << " " << i->key() << " -> " << i->value() << (count != length ? "," : "" ) << std::endl ; + } + result << "}"; + return result.str(); +} + +/////////////////////////////////////////////////////////////////////// +std::string escapeJSON(Exiv2::ExifData::const_iterator it,bool bValue=true) +{ + std::string result ; + + std::ostringstream os; + if ( bValue ) os << it->value() ; else os << it->key() ; + + std::string s = os.str(); + for ( size_t i = 0 ;i < s.length() ; i ++ ) { + if ( s[i] == '"' ) result += "\\\""; + result += s[i]; + } + + std::string q = "\""; + return q + result + q ; +} + +std::string formatJSON(Exiv2::ExifData& exifData) +{ + size_t count = 0; + size_t length = formatInit(exifData); + std::ostringstream result; + + result << "{" << std::endl ; + for (Exiv2::ExifData::const_iterator i = exifData.begin(); count++ < length ; ++i) { + result << " " << escapeJSON(i,false) << ":" << escapeJSON(i,true) << ( count != length ? "," : "" ) << std::endl ; + } + result << "}"; + return result.str(); +} + +/////////////////////////////////////////////////////////////////////// +std::string escapeXML(Exiv2::ExifData::const_iterator it,bool bValue=true) +{ + std::string result ; + + std::ostringstream os; + if ( bValue ) os << it->value() ; else os << it->key() ; + + std::string s = os.str(); + for ( size_t i = 0 ;i < s.length() ; i ++ ) { + if ( s[i] == '<' ) result += "≶"; + if ( s[i] == '>' ) result += ">"; + result += s[i]; + } + + return result ; +} + +std::string formatXML(Exiv2::ExifData& exifData) +{ + size_t count = 0; + size_t length = formatInit(exifData); + std::ostringstream result; + + result << "" << std::endl; + for (Exiv2::ExifData::const_iterator i = exifData.begin(); count++ < length ; ++i) { + std::string key = escapeXML(i,false); + std::string value = escapeXML(i,true); + result << " <" << key << ">" << value << "<" << key << "/>" << std::endl ; + } + result << "" << std::endl; + return result.str(); +} + +/////////////////////////////////////////////////////////////////////// +int main(int argc,const char* argv[]) +{ + format_t formats; + formats["wolf"] = wolf; + formats["csv" ] = csv ; + formats["json"] = json; + formats["xml" ] = xml ; + + int result = 0 ; + if (argc != 3) { + syntax(argv,formats) ; + result = 1; + } + + const char* file = argv[1]; + const char* format = argv[2]; + + if ( !result && formats.find(format) == formats.end() ) { + std::cout << "Unrecognised format " << format << std::endl; + syntax(argv,formats); + result = 2; + } + + if ( !result ) try { + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData &exifData = image->exifData(); + + switch ( formats.find(format)->second ) { + case wolf : std::cout << formatWolf(exifData) << std::endl; break; + case csv : std::cout << formatCSV (exifData) << std::endl; break; + case json : std::cout << formatJSON(exifData) << std::endl; break; + case xml : std::cout << formatXML (exifData) << std::endl; break; + + default : std::cout << "*** error: format not implemented yet: " << format << " ***" << std::endl; + result = 3; + break; + } + } catch (Exiv2::AnyError& e) { + std::cerr << "*** error exiv2 exception '" << e << "' ***" << std::endl; + result = 4; + } catch ( ... ) { + std::cerr << "*** error exception" << std::endl; + result = 5; + } + + return result; +} diff --git a/vendor/exiv2-0.25/samples/exifprint.cpp b/vendor/exiv2-0.25/samples/exifprint.cpp new file mode 100644 index 0000000..3bf601e --- /dev/null +++ b/vendor/exiv2-0.25/samples/exifprint.cpp @@ -0,0 +1,52 @@ +// ***************************************************************** -*- C++ -*- +// exifprint.cpp, $Rev: 3090 $ +// Sample program to print the Exif metadata of an image + +#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; +} diff --git a/vendor/exiv2-0.25/samples/exifvalue.cpp b/vendor/exiv2-0.25/samples/exifvalue.cpp new file mode 100644 index 0000000..34b0e0d --- /dev/null +++ b/vendor/exiv2-0.25/samples/exifvalue.cpp @@ -0,0 +1,43 @@ +// ***************************************************************** -*- C++ -*- +// exifvalue.cpp, $Rev: 3090 $ +// Sample program to print value of an exif key in an image + +#include + +#include +#include +#include +#include + +int main(int argc, char* const argv[]) +{ + if (argc != 3) { + std::cerr << "Usage: " << argv[0] << " file key\n"; + return 1; + } + + const char* file = argv[1]; + const char* key = argv[2]; + + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData &exifData = image->exifData(); + + if ( exifData.empty()) { + std::cerr << "no metadata found in file " << file << std::endl; + exit(2); + } + + try { + std::cout << exifData[key] << std::endl; + } catch (Exiv2::AnyError& e) { + std::cerr << "Caught Exiv2 exception '" << e << "'" << std::endl; + exit(3); + } catch ( ... ) { + std::cerr << "Caught a cold!" << std::endl; + exit(4); + } + + return 0; +} diff --git a/vendor/exiv2-0.25/samples/exiv2json.cpp b/vendor/exiv2-0.25/samples/exiv2json.cpp new file mode 100644 index 0000000..63b7524 --- /dev/null +++ b/vendor/exiv2-0.25/samples/exiv2json.cpp @@ -0,0 +1,316 @@ +// ***************************************************************** -*- C++ -*- +// exiv2json.cpp, $Id: exiv2json.cpp 518 2013-05-10 23:53:00Z robinwmills@gmail.com $ +// Sample program to print metadata in JSON format + +#include +#include +#include "Jzon.h" + +#include +#include +#include +#include + +#if defined(__MINGW32__) || defined(__MINGW64__) +# ifndef __MINGW__ +# define __MINGW__ +# endif +#endif + +#include +#include +#include +#include + +#if defined(_MSC_VER) || defined(__MINGW__) +#include +#ifndef PATH_MAX +# define PATH_MAX 512 +#endif +const char* realpath(const char* file,char* path) +{ + GetFullPathName(file,PATH_MAX,path,NULL); + return path; +} +#else +#include +#endif + +struct Token { + std::string n; // the name eg "History" + bool a; // name is an array eg History[] + int i; // index (indexed from 1) eg History[1]/stEvt:action +}; +typedef std::vector Tokens ; + +// "XMP.xmp.MP.RegionInfo/MPRI:Regions[1]/MPReg:Rectangle" +bool getToken(std::string& in,Token& token) +{ + bool result = false; + + token.n = "" ; + token.a = false ; + token.i = 0 ; + + while ( !result && in.length() ) { + std::string c = in.substr(0,1); + char C = c[0]; + in = in.substr(1,std::string::npos); + if ( in.length() == 0 && C != ']' ) token.n += c; + if ( C == '/' || C == '[' || C == ':' || C == '.' || C == ']' || in.length() == 0 ) { + token.a = C == '['; + if ( C == ']' ) token.i = std::atoi(token.n.c_str()); // encoded string first index == 1 + result = token.n.length() > 0 ; + } else { + token.n += c; + } + } + return result; +} + +Jzon::Node& addToTree(Jzon::Node& r1,Token token) +{ + Jzon::Object object ; + Jzon::Array array ; + + std::string key = token.n ; + size_t index = token.i-1; // array Eg: "History[1]" indexed from 1. Jzon expects 0 based index. + Jzon::Node& empty = token.a ? (Jzon::Node&) array : (Jzon::Node&) object ; + + if ( r1.IsObject() ) { + Jzon::Object& o1 = r1.AsObject(); + if ( !o1.Has(key) ) o1.Add(key,empty); + return o1.Get(key); + } else if ( r1.IsArray() ) { + Jzon::Array& a1 = r1.AsArray(); + while ( a1.GetCount() <= index ) a1.Add(empty); + return a1.Get(index); + } + return r1; +} + +Jzon::Node& recursivelyBuildTree(Jzon::Node& root,Tokens& tokens,size_t k) +{ + return addToTree( k==0 ? root : recursivelyBuildTree(root,tokens,k-1), tokens[k] ); +} + +// build the json tree for this key. return location and discover the name +Jzon::Node& objectForKey(const std::string Key,Jzon::Object& root,std::string& name) +{ + // Parse the key + Tokens tokens ; + Token token ; + std::string input = Key ; // Example: "XMP.xmp.MP.RegionInfo/MPRI:Regions[1]/MPReg:Rectangle" + while ( getToken(input,token) ) tokens.push_back(token); + size_t l = tokens.size()-1; // leave leaf name to push() + name = tokens[l].n ; + return recursivelyBuildTree(root,tokens,l-1); + +#if 0 + // recursivelyBuildTree: + // Go to the root. Climb out adding objects or arrays to create the tree + // The leaf is pushed on the top by the caller of objectForKey() + // The recursion could be expressed by these if statements: + if ( l == 1 ) return addToTree(root,tokens[0]); + if ( l == 2 ) return addToTree(addToTree(root,tokens[0]),tokens[1]); + if ( l == 3 ) return addToTree(addToTree(addToTree(root,tokens[0]),tokens[1]),tokens[2]); + if ( l == 4 ) return addToTree(addToTree(addToTree(addToTree(root,tokens[0]),tokens[1]),tokens[2]),tokens[3]); + ... +#endif +} + +bool isObject(std::string& value) +{ + return !value.compare(std::string("type=\"Struct\"")); +} + +bool isArray(std::string& value) +{ + return !value.compare(std::string("type=\"Seq\"")) + || !value.compare(std::string("type=\"Bag\"")) + || !value.compare(std::string("type=\"Alt\"")) + ; +} + +#define STORE(node,key,value) \ + if (node.IsObject()) node.AsObject().Add(key,value);\ + else node.AsArray() .Add( value) + +template +void push(Jzon::Node& node,const std::string& key,T i) +{ + std::string value = i->value().toString(); + + switch ( i->typeId() ) { + case Exiv2::xmpText: + if ( ::isObject(value) ) { + Jzon::Object v; + STORE(node,key,v); + } else if ( ::isArray(value) ) { + Jzon::Array v; + STORE(node,key,v); + } else { + STORE(node,key,value); + } + break; + + case Exiv2::unsignedByte: + case Exiv2::unsignedShort: + case Exiv2::unsignedLong: + case Exiv2::signedByte: + case Exiv2::signedShort: + case Exiv2::signedLong: + STORE(node,key,std::atoi(value.c_str()) ); + break; + + case Exiv2::tiffFloat: + case Exiv2::tiffDouble: + STORE(node,key,std::atof(value.c_str()) ); + break; + + case Exiv2::unsignedRational: + case Exiv2::signedRational: { + Jzon::Array arr; + Exiv2::Rational rat = i->value().toRational(); + arr.Add(rat.first ); + arr.Add(rat.second); + STORE(node,key,arr); + } break; + + case Exiv2::langAlt: { + Jzon::Object l ; + const Exiv2::LangAltValue& langs = dynamic_cast(i->value()); + for ( Exiv2::LangAltValue::ValueType::const_iterator lang = langs.value_.begin() + ; lang != langs.value_.end() + ; lang++ + ) { + l.Add(lang->first,lang->second); + } + Jzon::Object o ; + o.Add("lang",l); + STORE(node,key,o); + } + break; + + default: + case Exiv2::date: + case Exiv2::time: + case Exiv2::asciiString : + case Exiv2::string: + case Exiv2::comment: + case Exiv2::undefined: + case Exiv2::tiffIfd: + case Exiv2::directory: + case Exiv2::xmpAlt: + case Exiv2::xmpBag: + case Exiv2::xmpSeq: + // http://dev.exiv2.org/boards/3/topics/1367#message-1373 + if ( key == "UserComment" ) { + size_t pos = value.find('\0') ; + if ( pos != std::string::npos ) + value = value.substr(0,pos); + } + if ( key == "MakerNote") return; + STORE(node,key,value); + break; + } +} + +void fileSystemPush(const char* path,Jzon::Node& nfs) +{ + Jzon::Object& fs = (Jzon::Object&) nfs; + fs.Add("path",path); + char resolved_path[2000]; // PATH_MAX]; + fs.Add("realpath",realpath(path,resolved_path)); + + struct stat buf; + memset(&buf,0,sizeof(buf)); + stat(path,&buf); + + fs.Add("st_dev" ,(int) buf.st_dev ); /* ID of device containing file */ + fs.Add("st_ino" ,(int) buf.st_ino ); /* inode number */ + fs.Add("st_mode" ,(int) buf.st_mode ); /* protection */ + fs.Add("st_nlink" ,(int) buf.st_nlink ); /* number of hard links */ + fs.Add("st_uid" ,(int) buf.st_uid ); /* user ID of owner */ + fs.Add("st_gid" ,(int) buf.st_gid ); /* group ID of owner */ + fs.Add("st_rdev" ,(int) buf.st_rdev ); /* device ID (if special file) */ + fs.Add("st_size" ,(int) buf.st_size ); /* total size, in bytes */ + fs.Add("st_atime" ,(int) buf.st_atime ); /* time of last access */ + fs.Add("st_mtime" ,(int) buf.st_mtime ); /* time of last modification */ + fs.Add("st_ctime" ,(int) buf.st_ctime ); /* time of last status change */ + +#if defined(_MSC_VER) || defined(__MINGW__) + size_t blksize = 1024; + size_t blocks = (buf.st_size+blksize-1)/blksize; +#else + size_t blksize = buf.st_blksize; + size_t blocks = buf.st_blocks ; +#endif + fs.Add("st_blksize",(int) blksize ); /* blocksize for file system I/O */ + fs.Add("st_blocks" ,(int) blocks ); /* number of 512B blocks allocated */ +} + +int main(int argc, char* const argv[]) +try { + if (argc < 2 || argc > 3) { + std::cout << "Usage: " << argv[0] << " [-option] file" << std::endl; + std::cout << "Option: all | exif | iptc | xmp | filesystem" << std::endl; + return 1; + } + const char* path = argv[argc-1]; + const char* opt = argc == 3 ? argv[1] : "-all" ; + while (opt[0] == '-') opt++ ; // skip past leading -'s + char option = opt[0]; + + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + + Jzon::Object root; + + if ( option == 'f' ) { // only report filesystem when requested + const char* FS="FS"; + Jzon::Object fs ; + root.Add(FS,fs) ; + fileSystemPush(path,root.Get(FS)); + } + + if ( option == 'a' || option == 'e' ) { + Exiv2::ExifData &exifData = image->exifData(); + for ( Exiv2::ExifData::const_iterator i = exifData.begin(); i != exifData.end() ; ++i ) { + std::string name ; + Jzon::Node& object = objectForKey(i->key(),root,name); + push(object,name,i); + } + } + + if ( option == 'a' || option == 'i' ) { + Exiv2::IptcData &iptcData = image->iptcData(); + for (Exiv2::IptcData::const_iterator i = iptcData.begin(); i != iptcData.end(); ++i) { + std::string name ; + Jzon::Node& object = objectForKey(i->key(),root,name); + push(object,name,i); + } + } + + if ( option == 'a' || option == 'x' ) { + Exiv2::XmpData &xmpData = image->xmpData(); + for (Exiv2::XmpData::const_iterator i = xmpData.begin(); i != xmpData.end(); ++i) { + std::string name ; + Jzon::Node& object = objectForKey(i->key(),root,name); + push(object,name,i); + } + } + + Jzon::Writer writer(root,Jzon::StandardFormat); + writer.Write(); + std::cout << writer.GetResult() << std::endl; + return 0; +} + +//catch (std::exception& e) { +//catch (Exiv2::AnyError& e) { +catch (Exiv2::Error& e) { + std::cout << "Caught Exiv2 exception '" << e.what() << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/geotag.cpp b/vendor/exiv2-0.25/samples/geotag.cpp new file mode 100644 index 0000000..df1107f --- /dev/null +++ b/vendor/exiv2-0.25/samples/geotag.cpp @@ -0,0 +1,960 @@ +// ***************************************************************** -*- C++ -*- +// geotag.cpp, $Rev: 2286 $ +// Sample program to read gpx files and update images with GPS tags + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#if defined(__MINGW32__) || defined(__MINGW64__) +# ifndef __MINGW__ +# define __MINGW__ +# endif +#endif + +using namespace std; + +#ifndef lengthof +#define lengthof(x) (sizeof(*x)/sizeof(x)) +#endif +#ifndef nil +#define nil NULL +#endif + +#if defined(_MSC_VER) || defined(__MINGW__) +#include +char* realpath(const char* file,char* path); +#define lstat _stat +#define stat _stat +#if _MSC_VER < 1400 +#define strcpy_s(d,l,s) strcpy(d,s) +#define strcat_s(d,l,s) strcat(d,s) +#endif +#endif + +#if ! defined(_MSC_VER) +#include +#include +#include +#define stricmp strcasecmp +#endif + +#ifndef _MAX_PATH +#define _MAX_PATH 1024 +#endif + +#define UNUSED(x) (void)(x) + +// prototypes +class Options; +int getFileType(const char* path ,Options& options); +int getFileType(std::string& path,Options& options); + +string getExifTime(const time_t t); +time_t parseTime(const char* ,bool bAdjust=false); +int timeZoneAdjust(); + +// platform specific code +#if defined(_MSC_VER) || defined(__MINGW__) +char* realpath(const char* file,char* path) +{ + char* result = (char*) malloc(_MAX_PATH); + if (result) GetFullPathName(file,_MAX_PATH,result,NULL); + return result ; + UNUSED(path); +} +#endif + +// Command-line parser +class Options { +public: + bool verbose; + bool help; + bool version; + bool dst; + bool dryrun; + + Options() + { + verbose = false; + help = false; + version = false; + dst = false; + dryrun = false; + } + + virtual ~Options() {} ; +} ; + +enum +{ resultOK=0 +, resultSyntaxError +, resultSelectFailed +}; + +enum // keyword indices +{ kwHELP = 0 +, kwVERSION +, kwDST +, kwDRYRUN +, kwVERBOSE +, kwADJUST +, kwTZ +, kwDELTA +, kwMAX // manages keyword array +, kwNEEDVALUE // bogus keywords for error reporting +, kwSYNTAX // -- ditto -- +, kwNOVALUE = -kwVERBOSE // keywords <= kwNOVALUE are flags (no value needed) +}; + +// file types supported +enum +{ typeUnknown = 0 +, typeDirectory = 1 +, typeImage = 2 +, typeXML = 3 +, typeFile = 4 +, typeDoc = 5 +, typeCode = 6 +, typeMax = 7 +}; + +// Position (from gpx file) +class Position +{ +public: + Position(time_t time,double lat,double lon,double ele) : time_(time),lon_(lon),lat_(lat),ele_(ele) {}; + Position() { time_=0 ; lon_=0.0 ; lat_=0.0 ; ele_=0.0 ; }; + virtual ~Position() {} ; +// copy constructor + Position(const Position& o) : time_(o.time_),lon_(o.lon_),lat_(o.lat_),ele_(o.ele_) {}; + +// instance methods + bool good() { return time_ || lon_ || lat_ || ele_ ; } + std::string getTimeString() { if ( times_.empty() ) times_ = getExifTime(time_) ; return times_; } + time_t getTime() { return time_ ; } + std::string toString(); + +// getters/setters + double lat() {return lat_ ;} + double lon() {return lon_ ;} + double ele() {return ele_ ;} + int delta() {return delta_ ;} + void delta(int delta) {delta_=delta ;} + +// data +private: + time_t time_; + double lon_ ; + double lat_ ; + double ele_ ; + std::string times_; + int delta_; + +// public static data +public: + static int adjust_ ; + static int tz_ ; + static int dst_ ; + static time_t deltaMax_; + +// public static member functions +public: + static int Adjust() {return Position::adjust_ + Position::tz_ + Position::dst_ ;} + static int tz() {return tz_ ;} + static int dst() {return dst_ ;} + static int adjust() {return adjust_;} + + static std::string toExifString(double d,bool bRational,bool bLat); + static std::string toExifString(double d); + static std::string toExifTimeStamp(std::string& t); +}; + +std::string Position::toExifTimeStamp(std::string& t) +{ + char result[200]; + const char* arg = t.c_str(); + int HH = 0 ; + int mm = 0 ; + int SS = 0 ; + if ( strstr(arg,":") || strstr(arg,"-") ) { + int YY,MM,DD ; + char a,b,c,d,e ; + sscanf(arg,"%d%c%d%c%d%c%d%c%d%c%d",&YY,&a,&MM,&b,&DD,&c,&HH,&d,&mm,&e,&SS); + } + sprintf(result,"%d/1 %d/1 %d/1",HH,mm,SS); + return std::string(result); +} + +std::string Position::toExifString(double d) +{ + char result[200]; + d *= 100; + sprintf(result,"%d/100",abs((int)d)); + return std::string(result); +} + +std::string Position::toExifString(double d,bool bRational,bool bLat) +{ + const char* NS = d>=0.0?"N":"S"; + const char* EW = d>=0.0?"E":"W"; + const char* NSEW = bLat ? NS: EW; + if ( d < 0 ) d = -d; + int deg = (int) d; + d -= deg; + d *= 60; + int min = (int) d ; + d -= min; + d *= 60; + int sec = (int)d; + char result[200]; + sprintf(result,bRational ? "%d/1 %d/1 %d/1%s" : "%03d.%02d'%02d\"%s" ,deg,min,sec,bRational?"":NSEW); + return std::string(result); +} + +std::string Position::toString() +{ + char result[200]; + std::string sLat = Position::toExifString(lat_,false,true ); + std::string sLon = Position::toExifString(lon_,false,false); + sprintf(result,"%s %s %-8.3f",sLon.c_str(),sLat.c_str(),ele_); + return std::string(result); +} + +int Position::adjust_ = 0; +int Position::tz_ = timeZoneAdjust(); +int Position::dst_ = 0; +time_t Position::deltaMax_ = 60 ; + +// globals +typedef std::map TimeDict_t; +typedef std::map::iterator TimeDict_i; +typedef std::vector strings_t; +TimeDict_t gTimeDict ; +strings_t gFiles; + +/////////////////////////////////////////////////////////// +// UserData - used by XML Parser +class UserData +{ +public: + UserData(Options& options) : indent(0),count(0),nTrkpt(0),bTime(false),bEle(false),options_(options) {}; + virtual ~UserData() {} ; + +// public data members + int indent; + size_t count ; + Position now ; + Position prev; + int nTrkpt; + bool bTime ; + bool bEle ; + double ele; + double lat; + double lon; + std::string xmlt; + std::string exift; + time_t time; + Options& options_; +// static public data memembers +}; + +// XML Parser Callbacks +static void startElement(void* userData, const char* name, const char** atts ) +{ + UserData* me = (UserData*) userData; + //for ( int i = 0 ; i < me->indent ; i++ ) printf(" "); + //printf("begin %s\n",name); + me->bTime = strcmp(name,"time")==0; + me->bEle = strcmp(name,"ele")==0; + + if ( strcmp(name,"trkpt")==0 ) { + me->nTrkpt++; + while ( *atts ) { + const char* a=atts[0]; + const char* v=atts[1]; + if ( !strcmp(a,"lat") ) me->lat = atof(v); + if ( !strcmp(a,"lon") ) me->lon = atof(v); + atts += 2 ; + } + } + me->count++ ; + me->indent++ ; +} + +static void endElement(void* userData, const char* name) +{ + UserData* me = (UserData*) userData; + me->indent-- ; + if ( strcmp(name,"trkpt")==0 ) { + + me->nTrkpt--; + me->now = Position(me->time,me->lat,me->lon,me->ele) ; + + if ( !me->prev.good() && me->options_.verbose ) { + printf("trkseg %s begin ",me->now.getTimeString().c_str()); + } + + // printf("lat,lon = %f,%f ele = %f xml = %s exif = %s\n",me->lat,me->lon,me->ele,me->xmlt.c_str(),me->exift.c_str()); + + // if we have a good previous position + // add missed entries to timedict + //if ( me->prev.good() && (me->now.getTime() - me->prev.getTime()) < Position::timeDiffMax ) { + // time_t missed = me->prev.getTime() ; + // while ( ++missed < me->now.getTime() ) + // gTimeDict[missed] = me->prev ; // Position(missed,me->lat,me->lon,me->ele) ; + //} + + // remember our location and put it in gTimeDict + gTimeDict[me->time] = me->now ; + me->prev = me->now ; + } + if ( strcmp(name,"trkseg")==0 && me->options_.verbose ) { + printf("%s end\n",me->now.getTimeString().c_str()); + } +} + +void charHandler(void* userData,const char* s,int len) +{ + UserData* me = (UserData*) userData; + + if ( me->nTrkpt == 1 ) { + char buffer[100]; + int l_max = 98 ; // lengthof(buffer) -2 ; + + if ( me->bTime && len > 5 ) { + if ( len < l_max ) { + memcpy(buffer,s,len); + buffer[len]=0; + char* b = buffer ; + while ( *b == ' ' && b < buffer+len ) b++ ; + me->xmlt = b ; + me->time = parseTime(me->xmlt.c_str()); + me->exift = getExifTime(me->time); + } + me->bTime=false; + } + if ( me->bEle && len > 5 ) { + if ( len < l_max ) { + memcpy(buffer,s,len); + buffer[len]=0; + char* b = buffer ; + while ( *b == ' ' && b < buffer+len ) b++ ; + me->ele = atof(b); + } + me->bEle=false; + } + } +} + +/////////////////////////////////////////////////////////// +// Time Functions +time_t parseTime(const char* arg,bool bAdjust) +{ + time_t result = 0 ; + try { + //559 rmills@rmills-imac:~/bin $ exiv2 -pa ~/R.jpg | grep -i date + //Exif.Image.DateTime Ascii 20 2009:08:03 08:58:57 + //Exif.Photo.DateTimeOriginal Ascii 20 2009:08:03 08:58:57 + //Exif.Photo.DateTimeDigitized Ascii 20 2009:08:03 08:58:57 + //Exif.GPSInfo.GPSDateStamp Ascii 21 2009-08-03T15:58:57Z + + // + + if ( strstr(arg,":") || strstr(arg,"-") ) { + int YY,MM,DD,HH,mm,SS ; + char a,b,c,d,e ; + sscanf(arg,"%d%c%d%c%d%c%d%c%d%c%d",&YY,&a,&MM,&b,&DD,&c,&HH,&d,&mm,&e,&SS); + + struct tm T; + #if 0 + int tm_sec; /* seconds (0 - 60) */ + int tm_min; /* minutes (0 - 59) */ + int tm_hour; /* hours (0 - 23) */ + int tm_mday; /* day of month (1 - 31) */ + int tm_mon; /* month of year (0 - 11) */ + int tm_year; /* year - 1900 */ + int tm_wday; /* day of week (Sunday = 0) */ + int tm_yday; /* day of year (0 - 365) */ + int tm_isdst; /* is summer time in effect? */ + char *tm_zone; /* abbreviation of timezone name */ + long tm_gmtoff; /* offset from UTC in seconds */ + #endif + memset(&T,0,sizeof(T)); + T.tm_min = mm ; + T.tm_hour = HH ; + T.tm_sec = SS ; + if ( bAdjust ) T.tm_sec -= Position::Adjust(); + T.tm_year = YY -1900 ; + T.tm_mon = MM -1 ; + T.tm_mday = DD ; + result = mktime(&T); + } + } catch ( ... ) {}; + return result ; +} + +// West of GMT is negative (PDT = Pacific Daylight = -07:00 == -25200 seconds +int timeZoneAdjust() +{ + time_t now = time(NULL); + int offset; + +#if defined(_MSC_VER) || defined(__MINGW__) + TIME_ZONE_INFORMATION TimeZoneInfo; + GetTimeZoneInformation( &TimeZoneInfo ); + offset = - (((int)TimeZoneInfo.Bias + (int)TimeZoneInfo.DaylightBias) * 60); + UNUSED(now); +#elif defined(__CYGWIN__) + struct tm lcopy = *localtime(&now); + time_t gmt = timegm(&lcopy) ; // timegm modifies lcopy + offset = (int) ( ((long signed int) gmt) - ((long signed int) now) ) ; +#elif defined(OS_SOLARIS) + struct tm local = *localtime(&now) ; + time_t local_tt = (int) mktime(&local); + time_t time_gmt = (int) mktime(gmtime(&now)); + offset = time_gmt - local_tt; +#else + struct tm local = *localtime(&now) ; + offset = local.tm_gmtoff ; +#endif + +#if 0 + // debugging code + struct tm utc = *gmtime(&now); + printf("utc : offset = %6d dst = %d time = %s", 0 ,utc .tm_isdst, asctime(&utc )); + printf("local: offset = %6d dst = %d time = %s", offset,local.tm_isdst, asctime(&local)); + printf("timeZoneAdjust = %6d\n",offset); +#endif + return offset ; +} + +string getExifTime(const time_t t) +{ + static char result[100]; + strftime(result,sizeof(result),"%Y-%m-%d %H:%M:%S",localtime(&t)); + return result ; +} + +std::string makePath(std::string dir,std::string file) +{ + return dir + std::string(EXV_SEPARATOR_STR) + file ; +} + +const char* makePath(const char* dir,const char* file) +{ + static char result[_MAX_PATH] ; + std::string r = makePath(std::string(dir),std::string(file)); + strcpy(result,r.c_str()); + return result; +} + +// file utilities +bool readDir(const char* path,Options& options) +{ + bool bResult = false; + +#ifdef _MSC_VER + DWORD attrs = GetFileAttributes(path); + bool bOKAttrs = attrs != INVALID_FILE_ATTRIBUTES; + bool bIsDir = (attrs & FILE_ATTRIBUTE_DIRECTORY) ? true : false ; + + if( bOKAttrs && bIsDir ) { + bResult = true ; + + char search[_MAX_PATH+10]; + strcpy_s(search,_MAX_PATH,path); + strcat_s(search,_MAX_PATH,"\\*"); + + WIN32_FIND_DATA ffd; + HANDLE hFind = FindFirstFile(search, &ffd); + BOOL bGo = hFind != INVALID_HANDLE_VALUE; + + if ( bGo ) { + while ( bGo ) { + if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + // _tprintf(TEXT(" %s \n"), ffd.cFileName); + } + else + { + std::string pathName = makePath(path,std::string(ffd.cFileName)); + if ( getFileType(pathName,options) == typeImage ) { + gFiles.push_back( pathName ); + } + } + bGo = FindNextFile(hFind, &ffd) != 0; + } + // CloseHandle(hFind); + } + } +#else + DIR* dir = opendir (path); + if (dir != NULL) + { + bResult = true; + struct dirent* ent; + + // print all the files and directories within directory + while ((ent = readdir (dir)) != NULL) + { + std::string pathName = makePath(path,ent->d_name); + struct stat buf ; + lstat(path, &buf ); + if ( ent->d_name[0] != '.' ) { + + // printf("reading %s => %s\n",ent->d_name,pathName.c_str()); + if ( getFileType(pathName,options) == typeImage ) { + gFiles.push_back( pathName ); + } + } + } + closedir (dir); + } +#endif + return bResult ; +} + +inline size_t sip(FILE* f,char* buffer,size_t max_len,size_t len) +{ + while ( !feof(f) && len < max_len && buffer[len-1] != '>') + buffer[len++] = fgetc(f); + return len; +} + +bool readXML(const char* path,Options& options) +{ + FILE* f = fopen(path,"r"); + XML_Parser parser = XML_ParserCreate(NULL); + bool bResult = f && parser ; + if ( bResult ) { + char buffer[8*1024]; + UserData me(options) ; + + XML_SetUserData (parser, &me); + XML_SetElementHandler (parser, startElement, endElement); + XML_SetCharacterDataHandler(parser,charHandler); + + // a little sip at the data + size_t len = fread(buffer,1,sizeof(buffer)-100,f); + const char* lead = "readMetadata(); + ExifData &exifData = image->exifData(); + bResult = !exifData.empty(); + } + } catch ( ... ) {}; + return bResult ; +} + +time_t readImageTime(std::string path,std::string* pS=NULL) +{ + using namespace Exiv2; + + time_t result = 0 ; + static std::map cache; + if ( cache.count(path) == 1 ) return cache[path]; + + const char* dateStrings[] = + { "Exif.Photo.DateTimeOriginal" + , "Exif.Photo.DateTimeDigitized" + , "Exif.Image.DateTime" + , NULL + }; + const char* ds = dateStrings[0] ; + + while ( !result && ds++ ) { + try { + Image::AutoPtr image = ImageFactory::open(path); + if ( image.get() ) { + image->readMetadata(); + ExifData &exifData = image->exifData(); + // printf("%s => %s\n",(ds-1), exifData[ds-1].toString().c_str()); + result = parseTime(exifData[ds-1].toString().c_str(),true); + if ( result && pS ) *pS = exifData[ds-1].toString(); + } + } catch ( ... ) {}; + } + if ( result ) cache[path] = result; + return result ; +} + +bool sina(const char* s,const char** a) +{ + bool bResult = false ; + int i = 0 ; + while ( *s == '-' ) s++; + while ( !bResult && a[i]) { + const char* A = a[i] ; + while ( *A == '-' ) A++ ; + bResult = stricmp(s,A)==0; + i++; + } + return bResult; +} + +int readFile(const char* path,Options /* options */) +{ + FILE* f = fopen(path,"r"); + int nResult = f ? typeFile : typeUnknown; + if ( f ) { + const char* docs[] = { ".doc",".txt", nil }; + const char* code[] = { ".cpp",".h" ,".pl" ,".py" ,".pyc", nil }; + const char* ext = strstr(path,"."); + if ( ext ) { + if ( sina(ext,docs) ) nResult = typeDoc; + if ( sina(ext,code) ) nResult = typeCode; + } + } + if ( f ) fclose(f) ; + + return nResult ; +} + +Position* searchTimeDict(TimeDict_t& td, const time_t& time,long long delta) +{ + Position* result = NULL; + for ( int t = 0 ; !result && t < delta ; t++ ) { + for ( int x = 0 ; !result && x < 2 ; x++ ) { + int T = t * ((x==0)?-1:1); + if ( td.count(time+T) ) { + result = &td[time+T]; + result->delta(T); + } + } + } + return result; +} + +int getFileType(std::string& path,Options& options) { return getFileType(path.c_str(),options); } +int getFileType(const char* path,Options& options) +{ + return readXML (path,options) ? typeXML + : readDir (path,options) ? typeDirectory + : readImage(path,options) ? typeImage + : readFile (path,options) + ; +} + +int version(const char* program) +{ + printf("%s: %s %s\n",program,__DATE__,__TIME__); + return 0; +} + +int help(const char* program,char const* words[],int nWords,bool /*bVerbose*/) +{ + printf("usage: %s ",program); + for ( int i = 0 ; i < nWords ; i++ ) { + if ( words[i] ) + printf("%c-%s%s",i?'|':'{',words[i],i>(-kwNOVALUE)?" value":""); + } + printf("} path+\n"); + return 0; +} + +int compare(const char* a,const char* b) +{ + int result=*a && *b; + while ( result && *a && *b) { + char A=*a++; + char B=*b++; + result=tolower(A)==tolower(B); + } + return result; +} + +int find(const char* arg,char const* words[],int nWords) +{ + if ( arg[0] != '-' ) return kwSYNTAX; + + int result=0; + int count =0; + + for ( int i = 0 ; i < nWords ; i++) { + int j = 0 ; + while ( arg[j] == '-' ) j++; + if ( ::compare(arg+j,words[i]) ) { + result = i ; + count++; + } + } + + return count==1?result:kwSYNTAX; +} + +int parseTZ(const char* adjust) +{ + int h=0; + int m=0; + char c ; + try { + sscanf(adjust,"%d%c%d",&h,&c,&m); + } catch ( ... ) {} ; + + return (3600*h)+(60*m); +} + +bool mySort(std::string a,std::string b) +{ + time_t A = readImageTime(a); + time_t B = readImageTime(b); + return (A shorts; + shorts["-?"] = "-help"; + shorts["-h"] = "-help"; + shorts["-v"] = "-verbose"; + shorts["-V"] = "-version"; + shorts["-d"] = "-dst"; + shorts["-a"] = "-adjust"; + shorts["-t"] = "-tz"; + shorts["-D"] = "-delta"; + shorts["-s"] = "-delta"; + shorts["-X"] = "-dryrun"; + + Options options ; + options.help = sina(keywords[kwHELP ],argv) || argc < 2; + options.verbose = sina(keywords[kwVERBOSE],argv); + options.dryrun = sina(keywords[kwDRYRUN ],argv); + options.version = sina(keywords[kwVERSION],argv); + options.dst = sina(keywords[kwDST ],argv); + options.dryrun = sina(keywords[kwDRYRUN ],argv); + + for ( int i = 1 ; !result && i < argc ; i++ ) { + const char* arg = argv[i++]; + if ( shorts.count(arg) ) arg = shorts[arg].c_str(); + + const char* value = argv[i ]; + int ivalue = ::atoi(value?value:"0"); + int key = ::find(arg,keywords,kwMAX); + int needv = key < kwMAX && key > (-kwNOVALUE); + + if (!needv ) i--; + if ( needv && !value) key = kwNEEDVALUE; + + switch ( key ) { + case kwDST : options.dst = true ; break; + case kwHELP : options.help = true ; break; + case kwVERSION : options.version = true ; break; + case kwDRYRUN : options.dryrun = true ; break; + case kwVERBOSE : options.verbose = true ; break; + case kwTZ : Position::tz_ = parseTZ(value);break; + case kwADJUST : Position::adjust_ = ivalue;break; + case kwDELTA : Position::deltaMax_= ivalue;break; + case kwNEEDVALUE: fprintf(stderr,"error: %s requires a value\n",arg); result = resultSyntaxError ; break ; + case kwSYNTAX : default: + { + int type = getFileType(arg,options) ; + if ( options.verbose ) printf("%s %s ",arg,types[type]) ; + if ( type == typeImage ) { + time_t t = readImageTime(std::string(arg)) ; + char* path = realpath(arg,NULL); + if ( t && path ) { + if ( options.verbose) printf("%s %ld %s",path,(long int)t,asctime(localtime(&t))); + gFiles.push_back(path); + } + if ( path ) :: free((void*) path); + } + if ( type == typeUnknown ) { + fprintf(stderr,"error: illegal syntax %s\n",arg); + result = resultSyntaxError ; + } + if ( options.verbose ) printf("\n") ; + }break; + } + } + + if ( options.help ) ::help(program,keywords,kwMAX,options.verbose); + if ( options.version ) ::version(program); + + if ( !result ) { + sort(gFiles.begin(),gFiles.end(),mySort); + if ( options.dst ) Position::dst_ = 3600; + if ( options.verbose ) { + int t = Position::tz(); + int d = Position::dst(); + int a = Position::adjust(); + int A = Position::Adjust(); + int s = A ; + int h = s/3600; + s-= h*3600; + s = abs(s); + int m = s/60 ; + s-= m*60 ; + printf("tz,dsl,adjust = %d,%d,%d total = %dsecs (= %d:%d:%d)\n",t,d,a,A,h,m,s); + } + for ( size_t p = 0 ; !options.dryrun && p < gFiles.size() ; p++ ) { + std::string arg = gFiles[p] ; + std::string stamp ; + try { + time_t t = readImageTime(arg,&stamp) ; + Position* pPos = searchTimeDict(gTimeDict,t,Position::deltaMax_); + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(gFiles[p]); + if ( image.get() ) { + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); +#if 0 + /* + char* keys[]={ "Exif.Image.GPSTag" + , "Exif.GPSInfo.GPSProcessingMethod" + , "Exif.GPSInfo.GPSAltitudeRef" + , "Exif.GPSInfo.GPSVersionID" + , "Exif.GPSInfo.GPSProcessingMethod" + , "Exif.GPSInfo.GPSVersionID" + , "Exif.GPSInfo.GPSMapDatum" + , "Exif.GPSInfo.GPSLatitude" + , "Exif.GPSInfo.GPSLongitude" + , "Exif.GPSInfo.GPSAltitude" + , "Exif.GPSInfo.GPSAltitudeRef" + , "Exif.GPSInfo.GPSLatitudeRef" + , "Exif.GPSInfo.GPSLongitudeRef" + , "Exif.GPSInfo.GPSDateStamp" + , "Exif.GPSInfo.GPSTimeStamp" + }; + static int bPrint = true ; + for ( int k = 0 ; k < 15 ; k++ ) { + try { + if ( bPrint ) printf("erasing %s\n",keys[k]); + Exiv2::ExifKey key = Exiv2::ExifKey(keys[k]); + Exiv2::ExifData::iterator kk = exifData.findKey(key); + if ( kk != exifData.end() ) exifData.erase(kk); + } catch (...) {}; + } + bPrint = false; + */ +#endif +#if 0 + Exiv2::ExifData::const_iterator end = exifData.end(); + for (Exiv2::ExifData::iterator i = exifData.begin(); i != end; ++i) { + char name[100]; + strcpy(name,i->key().c_str()); + // std::cout << "sniff " << i->key() << std::endl; + if ( strstr(name,"GPS") ) { + Exiv2::ExifData::iterator pos; + Exiv2::ExifKey exifKey = Exiv2::ExifKey(name); + pos = exifData.findKey(exifKey); + while( pos != exifData.end()) { + exifData.erase(pos); + } + } + } +#endif + if ( pPos ) { + /* + struct _stat buf; + int result; + char timebuf[26]; + char* filename = "crt_stat.c"; + errno_t err; + + // Get data associated with "crt_stat.c": + result = _stat( filename, &buf ); + + int _utime( + const char *filename, + struct _utimbuf *times +); + */ + + exifData["Exif.GPSInfo.GPSProcessingMethod" ] = "65 83 67 73 73 0 0 0 72 89 66 82 73 68 45 70 73 88"; // ASCII HYBRID-FIX + exifData["Exif.GPSInfo.GPSVersionID" ] = "2 2 0 0"; + exifData["Exif.GPSInfo.GPSMapDatum" ] = "WGS-84"; + + exifData["Exif.GPSInfo.GPSLatitude" ] = Position::toExifString(pPos->lat(),true,true); + exifData["Exif.GPSInfo.GPSLongitude" ] = Position::toExifString(pPos->lon(),true,false); + exifData["Exif.GPSInfo.GPSAltitude" ] = Position::toExifString(pPos->ele()); + + exifData["Exif.GPSInfo.GPSAltitudeRef" ] = pPos->ele()<0.0?"1":"0"; + exifData["Exif.GPSInfo.GPSLatitudeRef" ] = pPos->lat()>0?"N":"S"; + exifData["Exif.GPSInfo.GPSLongitudeRef" ] = pPos->lon()>0?"E":"W"; + + exifData["Exif.GPSInfo.GPSDateStamp" ] = stamp; + exifData["Exif.GPSInfo.GPSTimeStamp" ] = Position::toExifTimeStamp(stamp); + exifData["Exif.Image.GPSTag" ] = 4908; + + printf("%s %s % 2d\n",arg.c_str(),pPos->toString().c_str(),pPos->delta()); + } else { + printf("%s *** not in time dict ***\n",arg.c_str()); + } + image->writeMetadata(); + } + } catch ( ... ) {}; + } + } + + return result ; +} + +// That's all Folks! +//// diff --git a/vendor/exiv2-0.25/samples/httptest.cpp b/vendor/exiv2-0.25/samples/httptest.cpp new file mode 100644 index 0000000..defbc28 --- /dev/null +++ b/vendor/exiv2-0.25/samples/httptest.cpp @@ -0,0 +1,100 @@ +// ***************************************************************** -*- C++ -*- +/* + httptest.cpp + This application is to test http.cpp. It provides the function to GET|HEAD|PUT the file via http protocol. + */ + +#include + +#include +#include +using namespace std; + +static int testSyntax(const char* arg) +{ + if ( !arg ) { + cout << "insufficient input" << endl; + exit(0); + } + return 0; +} + +int main(int argc,const char** argv) +{ + if ( argc < 2 ) { + cout << "usage : " << argv[0] << " [key value]+" << endl; + cout << "example: " << argv[0] << " [[-url] url | -server clanmills.com -page /LargsPanorama.jpg] -header \"Range: bytes=0-200\"" << endl; + cout << "or : " << argv[0] << " http://clanmills.com/LargsPanorama.jpg" << endl; + cout << "useful keys: -verb {GET|HEAD|PUT} -page str -server str -port number -version [-header something]+ " << endl; + cout << "default keys: -verb GET -server clanmills.com -page robin.shtml -port 80 -version 1.0" << endl; + cout << "export http_proxy=url eg export http_proxy=http://64.62.247.244:80" << endl; + return 0; + } + + Exiv2::dict_t response; + Exiv2::dict_t request; + string errors; + + // convert the command-line arguments into the request dictionary + for ( int i = 1 ; i < argc ; i +=2 ) { + const char* arg = argv[i]; + // skip past the -'s on the key + while ( arg[0] == '-' ) arg++; + + if ( string(arg) == "header" ) { + testSyntax(argv[i+1]); + string header = argv[i+1]; + if ( ! strchr(argv[i+1],'\n') ) { + header += "\r\n"; + } + request[arg] += header; + } else if ( string(arg) == "uri" || string(arg) == "url" ) { + testSyntax(argv[i+1]); + Exiv2::Uri uri = Exiv2::Uri::Parse(argv[i+1]); + if ( uri.Protocol == "http" ) { + request["server"] = uri.Host; + request["page"] = uri.Path; + request["port"] = uri.Port; + } + } else if ( string(arg).substr(0,7) == "http://" ) { + Exiv2::Uri uri = Exiv2::Uri::Parse(argv[i--]); + if ( uri.Protocol == "http" ) { + request["server"] = uri.Host; + request["page"] = uri.Path; + request["port"] = uri.Port; + } + } else { + testSyntax(argv[i+1]); + request[arg]=argv[i+1]; + } + } + if ( !request.count("page" ) ) request["page" ] = "robin.shtml"; + if ( !request.count("server") ) request["server"] = "clanmills.com"; + + int result = Exiv2::http(request,response,errors); + cout << "result = " << result << endl; + cout << "errors = " << errors << endl; + cout << endl; + + for ( Exiv2::dict_i it = response.begin() ; it != response.end() ; it++ ) { + // don't show request header + if (it->first == "requestheaders") continue; + + cout << it->first << " -> "; + + if ( it->first == "body") { + string& value = it->second; + cout << "# " << value.length(); + if ( value.length() < 1000 ) cout << " = " << value ; + } else { + cout << it->second; + } + + cout << endl; + } + + return 0; +} + +// That's all Folks! +//// diff --git a/vendor/exiv2-0.25/samples/iotest.cpp b/vendor/exiv2-0.25/samples/iotest.cpp new file mode 100644 index 0000000..52cb364 --- /dev/null +++ b/vendor/exiv2-0.25/samples/iotest.cpp @@ -0,0 +1,225 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + Abstract : Tester application for BasicIo functions. Tests MemIo primarily + since FileIo just sits atop of FILE* streams. + + File : iotest.cpp + Version : $Rev: 3777 $ + Author(s): Brad Schick (brad) + History : 04-Dec-04, brad: created + */ +// ***************************************************************************** +// included header files +#include + +#include // for EOF +#include +#include + +using Exiv2::byte; +using Exiv2::BasicIo; +using Exiv2::MemIo; +using Exiv2::FileIo; +using Exiv2::IoCloser; +using Exiv2::Error; +using Exiv2::strError; + +int WriteReadSeek(BasicIo &io); + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ +try { + if (argc != 4) { + std::cout << "Usage: " << argv[0] << " filein fileout1 fileout2\n"; + std::cout << "fileouts are overwritten and should match filein exactly\n"; + return 1; + } + + FileIo fileIn(argv[1]); + if (fileIn.open() != 0) { + throw Error(9, fileIn.path(), strError()); + } + + FileIo fileOut1(argv[2]); + if (fileOut1.open("w+b") != 0) { + throw Error(10, argv[2], "w+b", strError()); + } + + MemIo memIo1; + + // Copy to output file through memIo + memIo1.write(fileIn); + memIo1.seek(0, BasicIo::beg); + fileOut1.write(memIo1); + + // Make sure they are all the same size + if(fileIn.size() != memIo1.size() || memIo1.size() != fileOut1.size()) { + std::cerr << argv[0] << + ": Sizes do not match\n"; + return 1; + } + + // Read writereadseek test on MemIo + MemIo memIo2; + int rc = WriteReadSeek(memIo2); + if (rc != 0) return rc; + + // Read writereadseek test on FileIo + // Create or overwrite the file, then close it + FileIo fileTest("iotest.txt"); + if (fileTest.open("w+b") != 0) { + throw Error(10, "iotest.txt", "w+b", strError()); + } + + fileTest.close(); + rc = WriteReadSeek(fileTest); + if (rc != 0) return rc; + + // Another test of reading and writing + fileOut1.seek(0, BasicIo::beg); + memIo2.seek(0, BasicIo::beg); + FileIo fileOut2(argv[3]); + if (fileOut2.open("w+b") != 0) { + throw Error(10, argv[3], "w+b", strError()); + } + + long readCount = 0; + byte buf[32]; + while ((readCount=fileOut1.read(buf, sizeof(buf)))) { + if (memIo2.write(buf, readCount) != readCount) { + std::cerr << argv[0] << + ": MemIo bad write 2\n"; + return 13; + } + if (fileOut2.write(buf, readCount) != readCount) { + std::cerr << argv[0] << + ": FileIo bad write 2\n"; + return 14; + } + } + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cerr << "Caught Exiv2 exception '" << e << "'\n"; + return 20; +} +} + + +int WriteReadSeek(BasicIo &io) +{ + byte buf[4096]; + const char tester1[] = "this is a little test of MemIo"; + const char tester2[] = "Appending this on the end"; + const char expect[] = "this is a little teAppending this on the end"; + const long insert = 19; + const long len1 = (long)std::strlen(tester1) + 1; + const long len2 = (long)std::strlen(tester2) + 1; + + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + IoCloser closer(io); + if (io.write((byte*)tester1, len1) != len1) { + std::cerr << ": WRS initial write failed\n"; + return 2; + } + + if (io.size() != len1) { + std::cerr << ": WRS size is not " << len1 << "\n"; + return 2; + } + + io.seek(-len1, BasicIo::cur); + + int c = EOF; + std::memset(buf, -1, sizeof(buf)); + for (int i = 0; (c=io.getb()) != EOF; ++i) { + buf[i] = (byte)c; + } + + // Make sure we got the null back + if(buf[len1-1] != 0) { + std::cerr << ": WRS missing null terminator 1\n"; + return 3; + } + + if (strcmp(tester1, (char*)buf) != 0 ) { + std::cerr << ": WRS strings don't match 1\n"; + return 4; + } + + io.seek(-2, BasicIo::end); + if (io.getb() != 'o') { + std::cerr << ": WRS bad getb o\n"; + return 5; + } + + io.seek(-2, BasicIo::cur); + if (io.getb() != 'I') { + std::cerr << ": WRS bad getb I\n"; + return 6; + } + + if (io.putb('O') != 'O') { + std::cerr << ": WRS bad putb\n"; + return 7; + } + + io.seek(-1, BasicIo::cur); + if (io.getb() != 'O') { + std::cerr << ": WRS bad getb O\n"; + return 8; + } + + io.seek(insert, BasicIo::beg); + if(io.write((byte*)tester2, len2) != len2) { + std::cerr << ": WRS bad write 1\n"; + return 9; + } + + // open should seek to beginning + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + std::memset(buf, -1, sizeof(buf)); + if (io.read(buf, sizeof(buf)) != insert + len2) { + std::cerr << ": WRS something went wrong\n"; + return 10; + } + + // Make sure we got the null back + if(buf[insert + len2 - 1] != 0) { + std::cerr << ": WRS missing null terminator 2\n"; + return 11; + } + + if (std::strcmp(expect, (char*)buf) != 0 ) { + std::cerr << ": WRS strings don't match 2\n"; + return 12; + } + + return 0; +} diff --git a/vendor/exiv2-0.25/samples/iptceasy.cpp b/vendor/exiv2-0.25/samples/iptceasy.cpp new file mode 100644 index 0000000..c62e3ef --- /dev/null +++ b/vendor/exiv2-0.25/samples/iptceasy.cpp @@ -0,0 +1,49 @@ +// ***************************************************************** -*- C++ -*- +// iptceasy.cpp, $Rev: 3090 $ +// The quickest way to access, set or modify IPTC metadata. + +#include + +#include +#include +#include + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::string file(argv[1]); + + Exiv2::IptcData iptcData; + + iptcData["Iptc.Application2.Headline"] = "The headline I am"; + iptcData["Iptc.Application2.Keywords"] = "Yet another keyword"; + iptcData["Iptc.Application2.DateCreated"] = "2004-8-3"; + iptcData["Iptc.Application2.Urgency"] = uint16_t(1); + iptcData["Iptc.Envelope.ModelVersion"] = 42; + iptcData["Iptc.Envelope.TimeSent"] = "14:41:0-05:00"; + iptcData["Iptc.Application2.RasterizedCaption"] = "230 42 34 2 90 84 23 146"; + iptcData["Iptc.0x0009.0x0001"] = "Who am I?"; + + Exiv2::StringValue value; + value.read("very!"); + iptcData["Iptc.Application2.Urgency"] = value; + + std::cout << "Time sent: " << iptcData["Iptc.Envelope.TimeSent"] << "\n"; + + // Open image file + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert (image.get() != 0); + + // Set IPTC data and write it to the file + image->setIptcData(iptcData); + image->writeMetadata(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/iptcprint.cpp b/vendor/exiv2-0.25/samples/iptcprint.cpp new file mode 100644 index 0000000..9f1fd71 --- /dev/null +++ b/vendor/exiv2-0.25/samples/iptcprint.cpp @@ -0,0 +1,50 @@ +// ***************************************************************** -*- C++ -*- +// iptcprint.cpp, $Rev: 3090 $ +// Sample program to print the IPTC metadata of an image + +#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::IptcData &iptcData = image->iptcData(); + if (iptcData.empty()) { + std::string error(argv[1]); + error += ": No IPTC data found in the file"; + throw Exiv2::Error(1, error); + } + + Exiv2::IptcData::iterator end = iptcData.end(); + for (Exiv2::IptcData::iterator md = iptcData.begin(); md != end; ++md) { + std::cout << std::setw(44) << std::setfill(' ') << std::left + << md->key() << " " + << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << md->tag() << " " + << std::setw(9) << std::setfill(' ') << std::left + << md->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << md->count() << " " + << std::dec << md->value() + << std::endl; + } + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/iptctest.cpp b/vendor/exiv2-0.25/samples/iptctest.cpp new file mode 100644 index 0000000..f0832e9 --- /dev/null +++ b/vendor/exiv2-0.25/samples/iptctest.cpp @@ -0,0 +1,174 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract : Sample program test the Iptc reading and writing. + This is not designed to be a robust application. + + File : iptctest.cpp + Version : $Rev: 2286 $ + Author(s): Brad Schick (brad) + History : 01-Aug-04, brad: created + */ +// ***************************************************************************** +// included header files +#include + +#include +#include +#include + +using namespace Exiv2; + +bool processLine(const std::string& line, int num, IptcData &iptcData); +void processAdd(const std::string& line, int num, IptcData &iptcData); +void processRemove(const std::string& line, int num, IptcData &iptcData); +void processModify(const std::string& line, int num, IptcData &iptcData); + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ + try { + + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " image\n"; + std::cout << "Commands read from stdin.\n"; + return 1; + } + + Image::AutoPtr image = ImageFactory::open(argv[1]); + assert (image.get() != 0); + image->readMetadata(); + + // Process commands + std::string line; + int num = 0; + std::getline(std::cin, line); + while (line.length() && processLine(line, ++num, image->iptcData())) { + std::getline(std::cin, line); + } + + // Save any changes + image->writeMetadata(); + + return 0; + } + catch (AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; + } +} + +bool processLine(const std::string& line, int num, IptcData &iptcData) +{ + switch (line.at(0)) { + case 'a': + case 'A': + processAdd(line, num, iptcData); + break; + case 'r': + case 'R': + processRemove(line, num, iptcData); + break; + case 'm': + case 'M': + processModify(line, num, iptcData); + break; + case 'q': + case 'Q': + return false; + default: + std::ostringstream os; + os << "Unknown command (" << line.at(0) << ") at line " << num; + throw Error(1, os.str()); + } + return true; +} + +void processAdd(const std::string& line, int num, IptcData &iptcData) +{ + std::string::size_type keyStart = line.find_first_not_of(" \t", 1); + std::string::size_type keyEnd = line.find_first_of(" \t", keyStart+1); + std::string::size_type dataStart = line.find_first_not_of(" \t", keyEnd+1); + + if (keyStart == std::string::npos || + keyEnd == std::string::npos || + dataStart == std::string::npos) { + std::ostringstream os; + os << "Invalid \'a\' command at line " << num; + throw Error(1, os.str()); + } + + std::string key(line.substr(keyStart, keyEnd-keyStart)); + IptcKey iptcKey(key); + + std::string data(line.substr(dataStart)); + // if data starts and ends with quotes, remove them + if (data.at(0) == '\"' && data.at(data.size()-1) == '\"') { + data = data.substr(1, data.size()-2); + } + TypeId type = IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); + Value::AutoPtr value = Value::create(type); + value->read(data); + + int rc = iptcData.add(iptcKey, value.get()); + if (rc) { + throw Error(1, "Iptc dataset already exists and is not repeatable"); + } +} + +void processRemove(const std::string& line, int num, IptcData &iptcData) +{ + std::string::size_type keyStart = line.find_first_not_of(" \t", 1); + + if (keyStart == std::string::npos) { + std::ostringstream os; + os << "Invalid \'r\' command at line " << num; + throw Error(1, os.str()); + } + + const std::string key( line.substr(keyStart) ); + IptcKey iptcKey(key); + + IptcData::iterator iter = iptcData.findKey(iptcKey); + if (iter != iptcData.end()) { + iptcData.erase(iter); + } +} + +void processModify(const std::string& line, int num, IptcData &iptcData) +{ + std::string::size_type keyStart = line.find_first_not_of(" \t", 1); + std::string::size_type keyEnd = line.find_first_of(" \t", keyStart+1); + std::string::size_type dataStart = line.find_first_not_of(" \t", keyEnd+1); + + if (keyStart == std::string::npos || + keyEnd == std::string::npos || + dataStart == std::string::npos) { + std::ostringstream os; + os << "Invalid \'m\' command at line " << num; + throw Error(1, os.str()); + } + + std::string key(line.substr(keyStart, keyEnd-keyStart)); + IptcKey iptcKey(key); + + std::string data(line.substr(dataStart)); + // if data starts and ends with quotes, remove them + if (data.at(0) == '\"' && data.at(data.size()-1) == '\"') { + data = data.substr(1, data.size()-2); + } + TypeId type = IptcDataSets::dataSetType(iptcKey.tag(), iptcKey.record()); + Value::AutoPtr value = Value::create(type); + value->read(data); + + IptcData::iterator iter = iptcData.findKey(iptcKey); + if (iter != iptcData.end()) { + iter->setValue(value.get()); + } + else { + int rc = iptcData.add(iptcKey, value.get()); + if (rc) { + throw Error(1, "Iptc dataset already exists and is not repeatable"); + } + } +} diff --git a/vendor/exiv2-0.25/samples/key-test.cpp b/vendor/exiv2-0.25/samples/key-test.cpp new file mode 100644 index 0000000..7c291a0 --- /dev/null +++ b/vendor/exiv2-0.25/samples/key-test.cpp @@ -0,0 +1,199 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract : Key unit tests + + File : key-test.cpp + Version : $Rev: 2348 $ + Author(s): Andreas Huggel (ahu) + History : 24-Aug-04, ahu: created + + */ +// ***************************************************************************** +// included header files +#include + +#include +#include +#include + +using namespace Exiv2; + +int main() +{ + int tc = 0; + int rc = 0; + + std::string key("Exif.Iop.InteroperabilityVersion"); + ExifKey ek(key); + + // operator<< + tc += 1; + std::ostringstream os; + os << ek; + if (os.str() != key) { + std::cout << "Testcase failed (operator<<)" << std::endl; + rc += 1; + } + // familyName + tc += 1; + if (std::string(ek.familyName()) != "Exif") { + std::cout << "Testcase failed (familyName)" << std::endl; + rc += 1; + } + // groupName + tc += 1; + if (ek.groupName() != "Iop") { + std::cout << "Testcase failed (groupName)" << std::endl; + rc += 1; + } + // tagName + tc += 1; + if (ek.tagName() != "InteroperabilityVersion") { + std::cout << "Testcase failed (tagName)" << std::endl; + rc += 1; + } + // tagName + tc += 1; + if (ek.tag() != 0x0002) { + std::cout << "Testcase failed (tag)" << std::endl; + rc += 1; + } + // ifdName + tc += 1; + if (std::string(ExifTags::ifdName(ek.groupName())) != "Iop") { + std::cout << "Testcase failed (ifdName: " << std::endl; + rc += 1; + } + // sectionName + tc += 1; + if (strcmp(ExifTags::sectionName(ek), "Interoperability") != 0) { + std::cout << "Testcase failed (sectionName)" << std::endl; + rc += 1; + } + + // ----- + + // Copy constructor + ExifKey ek2(ek); + + // operator<< + tc += 1; + std::ostringstream os2; + os2 << ek2; + if (os2.str() != key) { + std::cout << "Testcase failed (operator<<)" << std::endl; + rc += 1; + } + // familyName + tc += 1; + if (std::string(ek2.familyName()) != "Exif") { + std::cout << "Testcase failed (familyName)" << std::endl; + rc += 1; + } + // groupName + tc += 1; + if (ek2.groupName() != "Iop") { + std::cout << "Testcase failed (groupName)" << std::endl; + rc += 1; + } + // tagName + tc += 1; + if (ek2.tagName() != "InteroperabilityVersion") { + std::cout << "Testcase failed (tagName)" << std::endl; + rc += 1; + } + // tagName + tc += 1; + if (ek2.tag() != 0x0002) { + std::cout << "Testcase failed (tag)" << std::endl; + rc += 1; + } + // ifdName + tc += 1; + if (std::string(ExifTags::ifdName(ek2.groupName())) != "Iop") { + std::cout << "Testcase failed (ifdName: " << std::endl; + rc += 1; + } + // sectionName + tc += 1; + if (strcmp(ExifTags::sectionName(ek2), "Interoperability") != 0) { + std::cout << "Testcase failed (sectionName)" << std::endl; + rc += 1; + } + + // ----- + + ExifKey ek4("Exif.Image.0x0110"); + tc += 1; + if (ek4.key() != "Exif.Image.Model") { + std::cout << "Testcase failed (converted key)" << std::endl; + rc += 1; + } + tc += 1; + if (ek4.tagName() != "Model") { + std::cout << "Testcase failed (converted tagName)" << std::endl; + rc += 1; + } + + // ----- + + ExifKey ek5("Exif.Nikon3.0x0007"); + tc += 1; + if (ek5.key() != "Exif.Nikon3.Focus") { + std::cout << "Testcase failed (converted key)" << std::endl; + rc += 1; + } + tc += 1; + if (ek5.tagName() != "Focus") { + std::cout << "Testcase failed (converted tagName)" << std::endl; + rc += 1; + } + + // ----- + + IptcKey ik1("Iptc.Envelope.0x0005"); + tc += 1; + if (ik1.key() != "Iptc.Envelope.Destination") { + std::cout << "Testcase failed (converted Iptc key)" << std::endl; + rc += 1; + } + tc += 1; + if (ik1.tagName() != "Destination") { + std::cout << "Testcase failed (converted tagName)" << std::endl; + rc += 1; + } + tc += 1; + if (ik1.recordName() != "Envelope") { + std::cout << "Testcase failed (converted recordName)" << std::endl; + rc += 1; + } + + // ----- + + IptcKey ik2(0xabcd, 0x1234); + tc += 1; + if (ik2.key() != "Iptc.0x1234.0xabcd") { + std::cout << "Testcase failed (unknown Iptc key)" << std::endl; + rc += 1; + } + tc += 1; + if (ik2.tagName() != "0xabcd") { + std::cout << "Testcase failed (converted tagName)" << std::endl; + rc += 1; + } + tc += 1; + if (ik2.recordName() != "0x1234") { + std::cout << "Testcase failed (converted recordName)" << std::endl; + rc += 1; + } + + // ----- + + if (rc == 0) { + std::cout << "All " << tc << " testcases passed." << std::endl; + } + else { + std::cout << rc << " of " << tc << " testcases failed." << std::endl; + } +} + diff --git a/vendor/exiv2-0.25/samples/largeiptc-test.cpp b/vendor/exiv2-0.25/samples/largeiptc-test.cpp new file mode 100644 index 0000000..88ba80b --- /dev/null +++ b/vendor/exiv2-0.25/samples/largeiptc-test.cpp @@ -0,0 +1,69 @@ +// ***************************************************************** -*- C++ -*- +// Test for large (>65535 bytes) IPTC buffer + +#include + +#include +#include + +int main(int argc, char* const argv[]) +try { + if (argc != 3) { + std::cout << "Usage: " << argv[0] << " image datafile\n"; + return 1; + } + std::string file(argv[1]); + std::string data(argv[2]); + + // Read data file into data buffer + Exiv2::FileIo io(data); + if (io.open() != 0) { + throw Exiv2::Error(9, io.path(), Exiv2::strError()); + } + Exiv2::DataBuf buf(io.size()); + std::cout << "Reading " << buf.size_ << " bytes from " << data << "\n"; + io.read(buf.pData_, buf.size_); + if (io.error() || io.eof()) throw Exiv2::Error(14); + + // Read metadata from file + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + image->readMetadata(); + + // Set Preview field to the content of the data file + Exiv2::DataValue value; + value.read(buf.pData_, buf.size_); + Exiv2::IptcData& iptcData = image->iptcData(); + std::cout << "IPTC fields: " << iptcData.size() << "\n"; + iptcData["Iptc.Application2.Preview"] = value; + std::cout << "IPTC fields: " << iptcData.size() << "\n"; + + // Set IRB, compare with IPTC raw data + Exiv2::DataBuf irb = Exiv2::Photoshop::setIptcIrb(0, 0, iptcData); + std::cout << "IRB buffer : " << irb.size_ << "\n"; + const Exiv2::byte* record; + uint32_t sizeHdr; + uint32_t sizeData; + Exiv2::Photoshop::locateIptcIrb(irb.pData_, irb.size_, &record, &sizeHdr, &sizeData); + Exiv2::DataBuf rawIptc = Exiv2::IptcParser::encode(iptcData); + std::cout << "Comparing IPTC and IRB size... "; + if (static_cast(rawIptc.size_) != sizeData) { + std::cout << "not "; + } + std::cout << "ok\n"; + + std::cout << "Comparing IPTC and IRB data... "; + if (0 != memcmp(rawIptc.pData_, record + sizeHdr, sizeData)) { + std::cout << "not "; + } + std::cout << "ok\n"; + + // Set Iptc data and write it to the file + image->writeMetadata(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/metacopy.cpp b/vendor/exiv2-0.25/samples/metacopy.cpp new file mode 100644 index 0000000..41b39d2 --- /dev/null +++ b/vendor/exiv2-0.25/samples/metacopy.cpp @@ -0,0 +1,188 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + Abstract : Tester application for image file handling + + File : metacopy.cpp + Version : $Rev: 3777 $ + Author(s): Brad Schick (brad) + History : 13-Jul-04, brad: created + */ +// ***************************************************************************** +// included header files +#include + +#include +#include +#include + +#include "utils.hpp" +#include "metacopy.hpp" + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ +try { + // Handle command line arguments + Params params; + if (params.getopt(argc, argv)) { + params.usage(); + return 1; + } + if (params.help_) { + params.help(); + return 2; + } + + // Use MemIo to increase test coverage. + Exiv2::BasicIo::AutoPtr fileIo(new Exiv2::FileIo(params.read_)); + Exiv2::BasicIo::AutoPtr memIo(new Exiv2::MemIo); + memIo->transfer(*fileIo); + + Exiv2::Image::AutoPtr readImg = Exiv2::ImageFactory::open(memIo); + assert(readImg.get() != 0); + readImg->readMetadata(); + + Exiv2::Image::AutoPtr writeImg = Exiv2::ImageFactory::open(params.write_); + assert(writeImg.get() != 0); + if (params.preserve_) writeImg->readMetadata(); + if (params.iptc_) { + writeImg->setIptcData(readImg->iptcData()); + } + if (params.exif_) { + writeImg->setExifData(readImg->exifData()); + } + if (params.comment_) { + writeImg->setComment(readImg->comment()); + } + if (params.xmp_) { + writeImg->setXmpData(readImg->xmpData()); + } + + try { + writeImg->writeMetadata(); + } + catch (const Exiv2::AnyError&) { + std::cerr << params.progname() << + ": Could not write metadata to (" << params.write_ << ")\n"; + return 8; + } + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cerr << "Caught Exiv2 exception '" << e << "'\n"; + return 10; +} +} + +int Params::option(int opt, const std::string& /*optarg*/, int optopt) +{ + int rc = 0; + switch (opt) { + case 'h': help_ = true; break; + case 'i': iptc_ = true; break; + case 'e': exif_ = true; break; + case 'c': comment_ = true; break; + case 'x': xmp_ = true; break; + case 'p': preserve_ = true; break; + case 'a': + iptc_ =true; + exif_ =true; + comment_ =true; + xmp_ =true; + break; + case ':': + std::cerr << progname() << ": Option -" << static_cast(optopt) + << " requires an argument\n"; + rc = 1; + break; + case '?': + std::cerr << progname() << ": Unrecognized option -" + << static_cast(optopt) << "\n"; + rc = 1; + break; + default: + std::cerr << progname() + << ": getopt returned unexpected character code " + << std::hex << opt << "\n"; + rc = 1; + break; + } + + return rc; +} + +int Params::nonoption(const std::string& argv) +{ + if (!write_.empty()) { + std::cerr << progname() << ": Unexpected extra argument (" << argv << ")\n"; + return 1; + } + if (first_) read_ = argv; + else write_ = argv; + first_ = false; + return 0; +} + +int Params::getopt(int argc, char* const argv[]) +{ + int rc = Util::Getopt::getopt(argc, argv, optstring_); + // Further consistency checks + if (help_==false) { + if (rc==0 && read_.empty() ) { + std::cerr << progname() << ": Read and write files must be specified\n"; + rc = 1; + } + if (rc==0 && write_.empty() ) { + std::cerr << progname() << ": Write file must be specified\n"; + rc = 1; + } + if (preserve_ && iptc_ && exif_ && comment_ && xmp_ ) { + std::cerr << progname() << ": Option -p has no effect when all metadata types are specified.\n"; + rc = 1; + } + } + return rc; +} // Params::getopt + + +void Params::usage(std::ostream& os) const +{ + os << "\nReads and writes raw metadata. Use -h option for help.\n" + << "Usage: " << progname() + << " [-iecaph] readfile writefile\n"; +} + +void Params::help(std::ostream& os) const +{ + usage(os); + os << "\nOptions:\n" + << " -i Read Iptc data from readfile and write to writefile.\n" + << " -e Read Exif data from readfile and write to writefile.\n" + << " -c Read Jpeg comment from readfile and write to writefile.\n" + << " -x Read XMP data from readfile and write to writefile.\n" + << " -a Read all metadata from readfile and write to writefile.\n" + << " -p Preserve existing metadata in writefile if not replaced.\n" + << " -h Display this help and exit.\n\n"; +} // Params::help + diff --git a/vendor/exiv2-0.25/samples/metacopy.hpp b/vendor/exiv2-0.25/samples/metacopy.hpp new file mode 100644 index 0000000..171da69 --- /dev/null +++ b/vendor/exiv2-0.25/samples/metacopy.hpp @@ -0,0 +1,86 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file metacopy.hpp + @brief Defines class Params, used for the command line handling + @version $Rev: 3777 $ + @author Brad Schick (brad) + @date 13-Jul-04, brad: created + */ +#ifndef METACOPY_HPP_ +#define METACOPY_HPP_ + +class Params : public Util::Getopt { +private: + std::string optstring_; + bool first_; + +public: + bool help_; //!< Help option flag. + bool iptc_; //!< Iptc option flag. + bool exif_; //!< Exif option flag. + bool comment_; //!< JPEG comment option flag. + bool xmp_; //!< XMP option flag. + bool preserve_; //!< Preserve existing metadata option flag. + std::string read_; //!< Source file + std::string write_; //!< Destination file + +public: + /*! + @brief Default constructor. Note that optstring_ is initialized here. + */ + Params() : optstring_(":iecaph"), + first_(true), + help_(false), + iptc_(false), + exif_(false), + comment_(false), + xmp_(false), + preserve_(false) + {} + + /*! + @brief Call Getopt::getopt() with optstring, to initiate command line + argument parsing, perform consistency checks after all command line + arguments are parsed. + + @param argc Argument count as passed to main() on program invocation. + @param argv Argument array as passed to main() on program invocation. + + @return 0 if successful, >0 in case of errors. + */ + int getopt(int argc, char* const argv[]); + + //! Handle options and their arguments. + virtual int option(int opt, const std::string& optarg, int optopt); + + //! Handle non-option parameters. + virtual int nonoption(const std::string& argv); + + //! Print a minimal usage note to an output stream. + void usage(std::ostream& os =std::cout) const; + + //! Print further usage explanations to an output stream. + void help(std::ostream& os =std::cout) const; + +}; // class Params + +#endif // METACOPY_HPP_ diff --git a/vendor/exiv2-0.25/samples/mmap-test.cpp b/vendor/exiv2-0.25/samples/mmap-test.cpp new file mode 100644 index 0000000..938f0af --- /dev/null +++ b/vendor/exiv2-0.25/samples/mmap-test.cpp @@ -0,0 +1,41 @@ +// ***************************************************************** -*- C++ -*- +// mmap-test.cpp, $Rev: 3090 $ +// Simple mmap tests + +#include + +#include +#include + +using namespace Exiv2; + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + const char* path = argv[1]; + + FileIo file(path); + // Open the file in read mode + if (file.open("rb") != 0) { + throw Error(10, path, "rb", strError()); + } + // Map it to memory + const Exiv2::byte* pData = file.mmap(); + long size = file.size(); + DataBuf buf(size); + // Read from the memory mapped region + memcpy(buf.pData_, pData, buf.size_); + // Reopen file in write mode and write to it + file.write(buf.pData_, buf.size_); + // Read from the mapped region again + memcpy(buf.pData_, pData, buf.size_); + file.close(); + + return 0; +} +catch (const AnyError& e) { + std::cout << e << "\n"; +} diff --git a/vendor/exiv2-0.25/samples/path-test.cpp b/vendor/exiv2-0.25/samples/path-test.cpp new file mode 100644 index 0000000..c126307 --- /dev/null +++ b/vendor/exiv2-0.25/samples/path-test.cpp @@ -0,0 +1,39 @@ +// ***************************************************************** -*- C++ -*- +// path-test.cpp, $Rev: 3513 $ + +#include + +#include +#include +#include +#include + +#include "utils.hpp" + +int main(int argc, char* const argv[]) +{ + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::ifstream file(argv[1]); + if (!file) { + std::cerr << *argv[1] << ": Failed to open file for reading\n"; + return 1; + } + std::string line; + while (std::getline(file, line)) { + std::string path, dir, base; + std::istringstream is(line); + is >> path >> dir >> base; + std::string d = Util::dirname(path); + std::string b = Util::basename(path); + + if (d != dir || b != base) { + std::cout << path << "\t'" << d << "'\t '" << b + << "'\t ==> Testcase failed\n"; + } + } + + return 0; +} diff --git a/vendor/exiv2-0.25/samples/prevtest.cpp b/vendor/exiv2-0.25/samples/prevtest.cpp new file mode 100644 index 0000000..60fb3aa --- /dev/null +++ b/vendor/exiv2-0.25/samples/prevtest.cpp @@ -0,0 +1,46 @@ +// ***************************************************************** -*- C++ -*- +// prevtest.cpp, $Rev: 3090 $ +// Test access to preview images + +#include + +#include +#include +#include + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::string filename(argv[1]); + + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename); + assert(image.get() != 0); + image->readMetadata(); + + Exiv2::PreviewManager loader(*image); + Exiv2::PreviewPropertiesList list = loader.getPreviewProperties(); + for (Exiv2::PreviewPropertiesList::iterator pos = list.begin(); pos != list.end(); pos++) { + std::cout << pos->mimeType_ + << " preview, type " << pos->id_ << ", " + << pos->size_ << " bytes, " + << pos->width_ << 'x' << pos->height_ << " pixels" + << "\n"; + + Exiv2::PreviewImage preview = loader.getPreviewImage(*pos); + preview.writeFile(filename + "_" + + Exiv2::toString(pos->width_) + "x" + + Exiv2::toString(pos->height_)); + } + + // Cleanup + Exiv2::XmpParser::terminate(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/remotetest.cpp b/vendor/exiv2-0.25/samples/remotetest.cpp new file mode 100644 index 0000000..54a7cec --- /dev/null +++ b/vendor/exiv2-0.25/samples/remotetest.cpp @@ -0,0 +1,105 @@ +// ***************************************************************** -*- C++ -*- +// remotetest.cpp +// Tester application for testing remote i/o. +// It makes some modifications on the metadata of remote file, reads new metadata from that file +// and reset the metadata back to the original status. + +#include + +#include +#include +#include + +int main(int argc, char* const argv[]) +try { + if (argc < 2) { + std::cout << "Usage: " << argv[0] << " file {--nocurl | --curl}\n\n"; + return 1; + } + + bool useCurlFromExiv2TestApps = true; + for ( int a = 1 ; a < argc ; a++ ) { + std::string arg(argv[a]); + if (arg == "--nocurl") useCurlFromExiv2TestApps = false; + else if (arg == "--curl") useCurlFromExiv2TestApps = true; + } + + std::string file(argv[1]); + + // set/add metadata + std::cout << "Modify the metadata ...\n"; + Exiv2::ExifData exifData; + exifData["Exif.Photo.UserComment"] = "Hello World"; // AsciiValue + exifData["Exif.Image.Software"] = "Exiv2"; // AsciiValue + exifData["Exif.Image.Copyright"] = "Exiv2"; // AsciiValue + exifData["Exif.Image.Make"] = "Canon"; // AsciiValue + exifData["Exif.Canon.OwnerName"] = "Tuan"; // UShortValue + exifData["Exif.CanonCs.LensType"] = uint16_t(65535); // LongValue + Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::asciiString); + v->read("2013:06:09 14:30:30"); + Exiv2::ExifKey key("Exif.Image.DateTime"); + exifData.add(key, v.get()); + + Exiv2::Image::AutoPtr writeTest = Exiv2::ImageFactory::open(file, useCurlFromExiv2TestApps); + assert(writeTest.get() != 0); + writeTest->setExifData(exifData); + writeTest->writeMetadata(); + + // read the result to make sure everything fine + std::cout << "Print out the new metadata ...\n"; + Exiv2::Image::AutoPtr readTest = Exiv2::ImageFactory::open(file, useCurlFromExiv2TestApps); + assert(readTest.get() != 0); + readTest->readMetadata(); + Exiv2::ExifData &exifReadData = readTest->exifData(); + if (exifReadData.empty()) { + std::string error(argv[1]); + error += ": No Exif data found in the file"; + throw Exiv2::Error(1, error); + } + Exiv2::ExifData::const_iterator end = exifReadData.end(); + for (Exiv2::ExifData::const_iterator i = exifReadData.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"; + } + + + // del, reset the metadata + std::cout << "Reset ...\n"; + exifReadData["Exif.Photo.UserComment"] = "Have a nice day"; // AsciiValue + exifReadData["Exif.Image.Software"] = "Exiv2.org"; // AsciiValue + exifReadData["Exif.Image.Copyright"] = "Exiv2.org"; // AsciiValue + key = Exiv2::ExifKey("Exif.Image.Make"); + Exiv2::ExifData::iterator pos = exifReadData.findKey(key); + if (pos == exifReadData.end()) throw Exiv2::Error(1, "Exif.Image.Make not found"); + exifReadData.erase(pos); + key = Exiv2::ExifKey("Exif.Image.DateTime"); + pos = exifReadData.findKey(key); + if (pos == exifReadData.end()) throw Exiv2::Error(1, "Exif.Image.DateTime not found"); + exifReadData.erase(pos); + key = Exiv2::ExifKey("Exif.Canon.OwnerName"); + pos = exifReadData.findKey(key); + if (pos == exifReadData.end()) throw Exiv2::Error(1, "Exif.Canon.OwnerName not found"); + exifReadData.erase(pos); + key = Exiv2::ExifKey("Exif.CanonCs.LensType"); + pos = exifReadData.findKey(key); + if (pos == exifReadData.end()) throw Exiv2::Error(1, "Exif.CanonCs.LensType not found"); + exifReadData.erase(pos); + readTest->setExifData(exifReadData); + readTest->writeMetadata(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/stringto-test.cpp b/vendor/exiv2-0.25/samples/stringto-test.cpp new file mode 100644 index 0000000..fb8b1d7 --- /dev/null +++ b/vendor/exiv2-0.25/samples/stringto-test.cpp @@ -0,0 +1,77 @@ +// ***************************************************************** -*- C++ -*- +// stringto-test.cpp, $Rev: 3090 $ +// Test conversions from string to long, float and Rational types. + +#include + +#include +#include + +const char* testcases[] = { + // bool + "True", + "False", + "t", + "f", + // long + "-1", + "0", + "1", + // float + "0.0", + "0.1", + "0.01", + "0.001", + "-1.49999", + "-1.5", + "1.49999", + "1.5", + // Rational + "0/1", + "1/1", + "1/3", + "-1/3", + "4/3", + "-4/3", + "0/0", + // nok + "text" +}; + +int main() +{ + std::cout << std::setfill(' '); + + std::cout << std::setw(12) << std::left << "string"; + std::cout << std::setw(12) << std::left << "long"; + std::cout << std::setw(12) << std::left << "float"; + std::cout << std::setw(12) << std::left << "Rational"; + + std::cout << std::endl; + + for (unsigned int i = 0; i < EXV_COUNTOF(testcases); ++i) try { + std::string s(testcases[i]); + std::cout << std::setw(12) << std::left << s; + bool ok; + + long l = Exiv2::parseLong(s, ok); + std::cout << std::setw(12) << std::left; + if (ok) std::cout << l; else std::cout << "nok"; + + float f = Exiv2::parseFloat(s, ok); + std::cout << std::setw(12) << std::left; + if (ok) std::cout << f; else std::cout << "nok"; + + Exiv2::Rational r = Exiv2::parseRational(s, ok); + if (ok) std::cout << r.first << "/" << r.second; + else std::cout << "nok"; + + std::cout << std::endl; + } + catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; + } + + return 0; +} diff --git a/vendor/exiv2-0.25/samples/taglist.cpp b/vendor/exiv2-0.25/samples/taglist.cpp new file mode 100644 index 0000000..37dcd40 --- /dev/null +++ b/vendor/exiv2-0.25/samples/taglist.cpp @@ -0,0 +1,70 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract: Print a simple comma separated list of tags defined in Exiv2 + + File: taglist.cpp + Version: $Rev: 3189 $ + Author(s): Andreas Huggel (ahu) + History: 07-Jan-04, ahu: created + */ +// ***************************************************************************** + +#include + +#include +#include + +using namespace Exiv2; + +int main(int argc, char* argv[]) +try { + int rc = 0; + + switch (argc) { + case 2: + { + std::string item(argv[1]); + + if (item == "Exif") { + ExifTags::taglist(std::cout); + break; + } + + if (item == "Iptc") { + IptcDataSets::dataSetList(std::cout); + break; + } + + if (ExifTags::isExifGroup(item) || ExifTags::isMakerGroup(item)) { + ExifTags::taglist(std::cout, item); + break; + } + + try { + XmpProperties::printProperties(std::cout, item); + } + catch(const AnyError&) { + rc = 2; + } + + break; + } + case 1: + ExifTags::taglist(std::cout); + break; + default: + rc = 1; + break; + } + if (rc) { + std::cout << "Usage: " << argv[0] + << " [Exif|Canon|CanonCs|CanonSi|CanonCf|Fujifilm|Minolta|Nikon1|Nikon2|Nikon3|Olympus|Panasonic|Pentax|Sigma|Sony|Iptc" + << "|dc|xmp|xmpRights|xmpMM|xmpBJ|xmpTPg|xmpDM|pdf|photoshop|crs|tiff|exif|aux|iptc]\n" + << "Print Exif tags, MakerNote tags, or Iptc datasets\n"; + } + return rc; +} +catch (AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return 1; +} diff --git a/vendor/exiv2-0.25/samples/tiff-test.cpp b/vendor/exiv2-0.25/samples/tiff-test.cpp new file mode 100644 index 0000000..fc21cfb --- /dev/null +++ b/vendor/exiv2-0.25/samples/tiff-test.cpp @@ -0,0 +1,106 @@ +// ***************************************************************** -*- C++ -*- +// tiff-test.cpp, $Rev: 3090 $ +// First and very simple TIFF write test. + +#include + +#include +#include +#include +#include + +using namespace Exiv2; + +void print(const ExifData& exifData); + +void mini1(const char* path); +void mini9(const char* path); + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + + const char* path = argv[1]; + mini1(path); + mini9(path); + + return 0; +} +catch (const AnyError& e) { + std::cout << e << "\n"; +} + +void mini1(const char* path) +{ + ExifData exifData; + Blob blob; + WriteMethod wm; + + // Write nothing to a new structure, without a previous binary image + wm = ExifParser::encode(blob, 0, 0, bigEndian, exifData); + assert(wm == wmIntrusive); + assert(blob.size() == 0); + std::cout << "Test 1: Writing empty Exif data without original binary data: ok.\n"; + + // Write nothing, this time with a previous binary image + DataBuf buf = readFile(path); + wm = ExifParser::encode(blob, buf.pData_, buf.size_, bigEndian, exifData); + assert(wm == wmIntrusive); + assert(blob.size() == 0); + std::cout << "Test 2: Writing empty Exif data with original binary data: ok.\n"; + + // Write something to a new structure, without a previous binary image + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + wm = ExifParser::encode(blob, 0, 0, bigEndian, exifData); + assert(wm == wmIntrusive); + std::cout << "Test 3: Wrote non-empty Exif data without original binary data:\n"; + exifData.clear(); + ByteOrder bo = ExifParser::decode(exifData, &blob[0], (uint32_t) blob.size()); + assert(bo == bigEndian); + print(exifData); +} + +void mini9(const char* path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + tiffImage.readMetadata(); + + std::cout << "MIME type: " << tiffImage.mimeType() << "\n"; + std::cout << "Image size: " << tiffImage.pixelWidth() << " x " << tiffImage.pixelHeight() << "\n"; + + ExifData& exifData = tiffImage.exifData(); + std::cout << "Before\n"; + print(exifData); + std::cout << "======\n"; + + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + + std::cout << "After\n"; + print(exifData); + tiffImage.writeMetadata(); +} + +void print(const ExifData& exifData) +{ + if (exifData.empty()) { + std::string 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) { + 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 + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + } +} diff --git a/vendor/exiv2-0.25/samples/tiffaddpath-test.cpp b/vendor/exiv2-0.25/samples/tiffaddpath-test.cpp new file mode 100644 index 0000000..bd430ab --- /dev/null +++ b/vendor/exiv2-0.25/samples/tiffaddpath-test.cpp @@ -0,0 +1,139 @@ +// ***************************************************************** -*- C++ -*- +// tiffaddpath-test.cpp, $Rev: 3513 $ +// Test driver to test adding new tags to a TIFF composite structure + + +#include + +#include "tiffcomposite_int.hpp" +#include "makernote2_int.hpp" +#include "tiffimage_int.hpp" + +#include +#include +#include + +#include + +using namespace Exiv2; + +void addPath(TiffComponent* pRootDir, + uint16_t tag, + TiffPath& tiffPath); + +void printPath(TiffPath tiffPath, + uint32_t tag, + uint16_t grp); + +struct TiffTagInfo { + bool operator==(const uint32_t& tag) const; + + uint32_t tag_; + const char* name_; +}; + +extern const TiffTagInfo tiffTagInfo[] = { + { 0x10000, "none" }, + { 0x20000, "root" }, + { 0x30000, "next" }, + { 0x40000, "all" } +}; + +bool TiffTagInfo::operator==(const uint32_t& tag) const +{ + return tag_ == tag; +} + +std::string tiffTagName(uint32_t tag) +{ + const TiffTagInfo* gi = find(tiffTagInfo, tag); + std::string name; + if (gi != 0) { + name = gi->name_; + } + else { + std::ostringstream os; + os << "0x" << std::hex << std::setw(4) + << std::setfill('0') << std::right << tag; + name = os.str(); + } + return name; +} + +// ----------------------------------------------------------------------------- +// Main program +int main(int argc, char* const argv[]) +{ + if (argc != 3) { + std::cout << "Usage: " << argv[0] << " tag group\n" + << "Print the TIFF path for a tag and group (decimal numbers)\n"; + return 1; + } + + uint32_t tag = atol(argv[1]); + uint16_t grp = atol(argv[2]); + + TiffComponent* pRootDir = new TiffDirectory(0, 1); + + TiffPath tiffPath1; + TiffCreator::getPath(tiffPath1, tag, grp); + printPath(tiffPath1, tag, grp); + addPath(pRootDir, tag, tiffPath1); + + ++tag; + TiffPath tiffPath2; + TiffCreator::getPath(tiffPath2, tag, grp); + printPath(tiffPath2, tag, grp); + addPath(pRootDir, tag, tiffPath2); + + return 0; +} + +// ----------------------------------------------------------------------------- +void addPath(TiffComponent* pRootDir, + uint16_t tag, + TiffPath& tiffPath) +{ + TiffComponent* tc = pRootDir->addPath(tag, tiffPath); + + TiffPrinter tiffPrinter(std::cout); + pRootDir->accept(tiffPrinter); + + std::cout << std::endl; + if (tc) { + std::cout << "Added tag " << tiffTagName(tc->tag()) + << ", group " << tiffGroupName(tc->group()) << "\n"; + } + else { + std::cout << "No tag added\n"; + } + std::cout << std::endl; +} + +// ----------------------------------------------------------------------------- +void printPath(TiffPath tiffPath, + uint32_t tag, + uint16_t grp) +{ + std::cout << "\nTiff path for tag " + << std::setw(6) << std::setfill(' ') << std::left + << tiffTagName(tag) + << ", group " << tiffGroupName(grp) + << " (id = " << std::dec << grp << "):\n\n" + << "ext. tag group new group \n" + << "-------- ------------ ------------\n"; + + while (!tiffPath.empty()) + { + const TiffStructure* ts = tiffPath.top(); + tiffPath.pop(); + std::cout << std::setw(8) << std::setfill(' ') << std::left + << tiffTagName(ts->extendedTag_) + << " " << std::setw(12) << std::setfill(' ') << std::left + << tiffGroupName(ts->group_) + << " " << std::setw(12) << std::setfill(' ') << std::left + << tiffGroupName(ts->newGroup_) + << "\n"; + } + std::cout << std::endl; +} diff --git a/vendor/exiv2-0.25/samples/werror-test.cpp b/vendor/exiv2-0.25/samples/werror-test.cpp new file mode 100644 index 0000000..c61e795 --- /dev/null +++ b/vendor/exiv2-0.25/samples/werror-test.cpp @@ -0,0 +1,30 @@ +// ***************************************************************** -*- C++ -*- +// werror-test.cpp, $Rev: 3513 $ +// Simple tests for the wide-string error class WError + +#include + +#include + +int main() +{ + try { + throw Exiv2::Error(-1, "ARG1", "ARG2", "ARG3"); + } + catch (const Exiv2::Error& e) { + std::cout << "Caught Error '" << e.what() << "'\n"; + } + +#ifdef EXV_UNICODE_PATH + try { + throw Exiv2::WError(-1, L"WARG1", L"WARG2", L"WARG3"); + } + catch (const Exiv2::WError& e) { + std::wstring wmsg = e.wwhat(); + std::string msg(wmsg.begin(), wmsg.end()); + std::cout << "Caught WError '" << msg << "'\n"; + } +#endif + + return 0; +} diff --git a/vendor/exiv2-0.25/samples/write-test.cpp b/vendor/exiv2-0.25/samples/write-test.cpp new file mode 100644 index 0000000..fe82f88 --- /dev/null +++ b/vendor/exiv2-0.25/samples/write-test.cpp @@ -0,0 +1,218 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract : ExifData write unit tests + + Author(s): Andreas Huggel (ahu) + Version : $Rev: 2286 $ + + Test procedure: + $ rm -f test.jpg thumb.jpg iii ttt; + $ ./exifprint ../test/img_1771.jpg > iii; + $ cp ../test/img_1771.jpg ./test.jpg; + $ ./makernote-test2 ../test/img_1771.jpg > ttt; + $ diff iii ttt + + */ +// ***************************************************************************** +// included header files +#include + +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// local declarations + +using namespace Exiv2; + +void testCase(const std::string& file1, + const std::string& file2, + const std::string& thumb, + const std::string& key, + const std::string& value); +void exifPrint(const ExifData& exifData); + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ +try { + + if (argc != 3) { + std::cout << "Usage: write-test file case\n\n" + << "where case is an integer between 1 and 11\n"; + return 1; + } + + std::string testFile = argv[1]; + std::istringstream iss(argv[2]); + int testNo; + iss >> testNo; + + int rc = 0; + switch (testNo) { + case 1: + std::cerr << "Case 1: "; + std::cerr << "Non-intrusive change to the standard Exif metadata\n"; + testCase(testFile, "test1.jpg", "thumb1", + "Exif.Photo.DateTimeOriginal", + "1999:11:22 00:11:22"); + break; + case 2: + std::cerr << "Case 2: "; + std::cerr << "Non-intrusive change to the makernote metadata\n"; + testCase(testFile, "test2.jpg", "thumb2", + "Exif.Canon.OwnerName", + "Chan YeeSend"); + break; + case 3: + std::cerr << "Case 3: "; + std::cerr << "Non-intrusive change to the Exif metadata (w/o makernote)\n"; + testCase(testFile, "test3.jpg", "thumb3", + "Exif.Photo.DateTimeOriginal", + "1999:11:22 00:11:22"); + break; + case 4: + std::cerr << "Case 4: "; + std::cerr << "Intrusive change to the standard Exif metadata\n"; + testCase(testFile, "test4.jpg", "thumb4", + "Exif.Photo.DateTimeOriginal", + "1999:11:22 00:11:22 and twenty seconds"); + break; + case 5: + std::cerr << "Case 5: "; + std::cerr << "Intrusive change to the Canon makernote metadata\n"; + testCase(testFile, "test5.jpg", "thumb5", + "Exif.Canon.OwnerName", + "Frau Chan YeeSend und Herr Andreas Huggel"); + break; + case 6: + std::cerr << "Case 6: "; + std::cerr << "Intrusive change to the Exif metadata (w/o makernote)\n"; + testCase(testFile, "test6.jpg", "thumb6", + "Exif.Photo.DateTimeOriginal", + "1999:11:22 00:11:22 and twenty seconds"); + break; + case 7: + std::cerr << "Case 7: "; + std::cerr << "Intrusive change to the Fujifilm makernote metadata\n"; + testCase(testFile, "test7.jpg", "thumb7", + "Exif.Fujifilm.Quality", + "Typical Fujifilm Quality"); + break; + case 8: + std::cerr << "Case 8: "; + std::cerr << "Intrusive change to the Sigma makernote metadata\n"; + testCase(testFile, "test8.jpg", "thumb8", + "Exif.Sigma.ResolutionMode", + "Sigma HI resolution"); + break; + case 9: + std::cerr << "Case 9: "; + std::cerr << "Intrusive change to the Nikon1 makernote metadata\n"; + testCase(testFile, "test9.jpg", "thumb9", + "Exif.Nikon1.Quality", + "Typical Nikon1 Quality"); + break; + case 10: + std::cerr << "Case 10: "; + std::cerr << "Intrusive change to the Nikon2 makernote metadata\n"; + testCase(testFile, "test10.jpg", "thumb10", + "Exif.Nikon2.0x0002", + "Nikon2 Version 2"); + break; + case 11: + std::cerr << "Case 11: "; + std::cerr << "Intrusive change to the Nikon3 makernote metadata\n"; + testCase(testFile, "test11.jpg", "thumb11", + "Exif.Nikon3.Quality", + "Typical Nikon3 Quality"); + break; + + // ToDo: Erase Sigma thumbnail + + // ToDo: Write to a broken (truncated) IFD entry + + default: + std::cout << "Usage: exiftest file case\n\n" + << "where case is an integer between 1 and 11\n"; + rc = 1; + break; + } + + return rc; +} +catch (AnyError& e) { + std::cerr << "Caught Exiv2 exception '" << e << "'\n"; + return 1; +} +} + +// ***************************************************************************** +void testCase(const std::string& file1, + const std::string& file2, + const std::string& thumb, + const std::string& key, + const std::string& value) +{ + ExifKey ek(key); + + //Open first image + Image::AutoPtr image1 = ImageFactory::open(file1); + assert(image1.get() != 0); + + // Load existing metadata + std::cerr << "---> Reading file " << file1 << "\n"; + image1->readMetadata(); + + Exiv2::ExifData &ed1 = image1->exifData(); + std::cerr << "---> Modifying Exif data\n"; + Exiv2::ExifData::iterator pos = ed1.findKey(ek); + if (pos == ed1.end()) { + throw Error(1, "Metadatum with key = " + ek.key() + " not found"); + } + pos->setValue(value); + + // Open second image + Image::AutoPtr image2 = ImageFactory::open(file2); + assert(image2.get() != 0); + + image2->setExifData(image1->exifData()); + + std::cerr << "---> Writing Exif data to file " << file2 << "\n"; + image2->writeMetadata(); + + std::cerr << "---> Reading file " << file2 << "\n"; + image2->readMetadata(); + + Exiv2::ExifData &ed2 = image2->exifData(); + exifPrint(ed2); + + std::cerr << "---> Writing Exif thumbnail to file " << thumb << ".*\n"; + ExifThumbC et2(ed2); + et2.writeFile(thumb); +} + +// ***************************************************************************** + +void exifPrint(const ExifData& exifData) +{ + ExifData::const_iterator i = exifData.begin(); + for (; i != exifData.end(); ++i) { + 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 + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + } +} diff --git a/vendor/exiv2-0.25/samples/write2-test.cpp b/vendor/exiv2-0.25/samples/write2-test.cpp new file mode 100644 index 0000000..d2bee52 --- /dev/null +++ b/vendor/exiv2-0.25/samples/write2-test.cpp @@ -0,0 +1,240 @@ +// ***************************************************************** -*- C++ -*- +/* + Abstract : ExifData write unit tests for Exif data created from scratch + + File : write2-test.cpp + Version : $Rev: 2286 $ + Author(s): Andreas Huggel (ahu) + History : 26-Jun-04, ahu: created + + */ +// ***************************************************************************** +// included header files +#include + +#include +#include +#include +#include + +void write(const std::string& file, Exiv2::ExifData& ed); +void print(const std::string& file); + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::string file(argv[1]); + + std::cout <<"----- Some IFD0 tags\n"; + Exiv2::ExifData ed1; + ed1["Exif.Image.Model"] = "Test 1"; + + Exiv2::Value::AutoPtr v1 = Exiv2::Value::create(Exiv2::unsignedShort); + v1->read("160 161 162 163"); + ed1.add(Exiv2::ExifKey("Exif.Image.SamplesPerPixel"), v1.get()); + + Exiv2::Value::AutoPtr v2 = Exiv2::Value::create(Exiv2::signedLong); + v2->read("-2 -1 0 1"); + ed1.add(Exiv2::ExifKey("Exif.Image.XResolution"), v2.get()); + + Exiv2::Value::AutoPtr v3 = Exiv2::Value::create(Exiv2::signedRational); + v3->read("-2/3 -1/3 0/3 1/3"); + ed1.add(Exiv2::ExifKey("Exif.Image.YResolution"), v3.get()); + + Exiv2::Value::AutoPtr v4 = Exiv2::Value::create(Exiv2::undefined); + v4->read("255 254 253 252"); + ed1.add(Exiv2::ExifKey("Exif.Image.WhitePoint"), v4.get()); + + write(file, ed1); + print(file); + + std::cout <<"\n----- One Exif tag\n"; + Exiv2::ExifData ed2; + ed2["Exif.Photo.DateTimeOriginal"] = "Test 2"; + write(file, ed2); + print(file); + + std::cout <<"\n----- Canon MakerNote tags\n"; + Exiv2::ExifData edMn1; + edMn1["Exif.Image.Make"] = "Canon"; + edMn1["Exif.Image.Model"] = "Canon PowerShot S40"; + edMn1["Exif.Canon.0xabcd"] = "A Canon makernote tag"; + edMn1["Exif.CanonCs.0x0002"] = uint16_t(41); + edMn1["Exif.CanonSi.0x0005"] = uint16_t(42); + edMn1["Exif.CanonCf.0x0001"] = uint16_t(43); + edMn1["Exif.CanonPi.0x0001"] = uint16_t(44); + edMn1["Exif.CanonPa.0x0001"] = uint16_t(45); + write(file, edMn1); + print(file); + + std::cout <<"\n----- Non-intrusive writing of special Canon MakerNote tags\n"; + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + image->readMetadata(); + + Exiv2::ExifData& rEd = image->exifData(); + rEd["Exif.CanonCs.0x0001"] = uint16_t(88); + rEd["Exif.CanonSi.0x0004"] = uint16_t(99); + image->writeMetadata(); + print(file); + + std::cout <<"\n----- One Fujifilm MakerNote tag\n"; + Exiv2::ExifData edMn2; + edMn2["Exif.Image.Make"] = "FUJIFILM"; + edMn2["Exif.Image.Model"] = "FinePixS2Pro"; + edMn2["Exif.Fujifilm.0x1000"] = "A Fujifilm QUALITY tag"; + write(file, edMn2); + print(file); + + std::cout <<"\n----- One Sigma/Foveon MakerNote tag\n"; + Exiv2::ExifData edMn3; + edMn3["Exif.Image.Make"] = "SIGMA"; + edMn3["Exif.Image.Model"] = "SIGMA SD10"; + edMn3["Exif.Sigma.0x0018"] = "Software? Exiv2!"; + write(file, edMn3); + print(file); + + std::cout <<"\n----- One Nikon1 MakerNote tag\n"; + Exiv2::ExifData edMn4; + edMn4["Exif.Image.Make"] = "NIKON"; + edMn4["Exif.Image.Model"] = "E990"; + edMn4["Exif.Nikon1.0x0080"] = "ImageAdjustment by Exiv2"; + write(file, edMn4); + print(file); + + std::cout <<"\n----- One Nikon2 MakerNote tag\n"; + Exiv2::ExifData edMn5; + edMn5["Exif.Image.Make"] = "NIKON"; + edMn5["Exif.Image.Model"] = "E950"; + edMn5["Exif.Nikon2.0xffff"] = "An obscure Nikon2 tag"; + write(file, edMn5); + print(file); + + std::cout <<"\n----- One Nikon3 MakerNote tag\n"; + Exiv2::ExifData edMn6; + edMn6["Exif.Image.Make"] = "NIKON CORPORATION"; + edMn6["Exif.Image.Model"] = "NIKON D70"; + edMn6["Exif.Nikon3.0x0004"] = "A boring Nikon3 Quality tag"; + write(file, edMn6); + print(file); + + std::cout <<"\n----- One Olympus MakerNote tag\n"; + Exiv2::ExifData edMn7; + edMn7["Exif.Image.Make"] = "OLYMPUS CORPORATION"; + edMn7["Exif.Image.Model"] = "C8080WZ"; + edMn7["Exif.Olympus.0x0201"] = uint16_t(1); + write(file, edMn7); + print(file); + + std::cout <<"\n----- One Panasonic MakerNote tag\n"; + Exiv2::ExifData edMn8; + edMn8["Exif.Image.Make"] = "Panasonic"; + edMn8["Exif.Image.Model"] = "DMC-FZ5"; + edMn8["Exif.Panasonic.0x0001"] = uint16_t(1); + write(file, edMn8); + print(file); + + std::cout <<"\n----- One Sony1 MakerNote tag\n"; + Exiv2::ExifData edMn9; + edMn9["Exif.Image.Make"] = "SONY"; + edMn9["Exif.Image.Model"] = "DSC-W7"; + edMn9["Exif.Sony1.0x2000"] = "0 1 2 3 4 5"; + write(file, edMn9); + print(file); + + std::cout <<"\n----- Minolta MakerNote tags\n"; + Exiv2::ExifData edMn10; + edMn10["Exif.Image.Make"] = "Minolta"; + edMn10["Exif.Image.Model"] = "A fancy Minolta camera"; + edMn10["Exif.Minolta.ColorMode"] = uint32_t(1); + edMn10["Exif.MinoltaCsNew.WhiteBalance"] = uint32_t(2); + edMn10["Exif.MinoltaCs5D.WhiteBalance"] = uint16_t(3); + edMn10["Exif.MinoltaCs5D.ColorTemperature"] = int16_t(-1); + edMn10["Exif.MinoltaCs7D.WhiteBalance"] = uint16_t(4); + edMn10["Exif.MinoltaCs7D.ExposureCompensation"] = int16_t(-2); + edMn10["Exif.MinoltaCs7D.ColorTemperature"] = int16_t(-3); + write(file, edMn10); + print(file); + + std::cout <<"\n----- One IOP tag\n"; + Exiv2::ExifData ed3; + ed3["Exif.Iop.InteroperabilityIndex"] = "Test 3"; + write(file, ed3); + print(file); + + std::cout <<"\n----- One GPS tag\n"; + Exiv2::ExifData ed4; + ed4["Exif.GPSInfo.GPSVersionID"] = "19 20"; + write(file, ed4); + print(file); + + std::cout <<"\n----- One IFD1 tag\n"; + Exiv2::ExifData ed5; + ed5["Exif.Thumbnail.Artist"] = "Test 5"; + write(file, ed5); + print(file); + + std::cout <<"\n----- One IOP and one IFD1 tag\n"; + Exiv2::ExifData ed6; + ed6["Exif.Iop.InteroperabilityIndex"] = "Test 6 Iop tag"; + ed6["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag"; + write(file, ed6); + print(file); + + std::cout <<"\n----- One IFD0 and one IFD1 tag\n"; + Exiv2::ExifData ed7; + ed7["Exif.Thumbnail.Artist"] = "Test 7"; + Exiv2::Value::AutoPtr v5 = Exiv2::Value::create(Exiv2::unsignedShort); + v5->read("160 161 162 163"); + ed7.add(Exiv2::ExifKey("Exif.Image.SamplesPerPixel"), v5.get()); + write(file, ed7); + print(file); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} +} + +void write(const std::string& file, Exiv2::ExifData& ed) +{ + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + + image->setExifData(ed); + image->writeMetadata(); +} + +void print(const std::string& file) +{ + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(file); + assert(image.get() != 0); + image->readMetadata(); + + Exiv2::ExifData &ed = image->exifData(); + Exiv2::ExifData::const_iterator end = ed.end(); + for (Exiv2::ExifData::const_iterator i = ed.begin(); i != end; ++i) { + std::cout << std::setw(45) << std::setfill(' ') << std::left + << i->key() << " " + << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << i->tag() << " " + << std::setw(12) << std::setfill(' ') << std::left + << i->ifdName() << " " + << std::setw(9) << std::setfill(' ') << std::left + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + + } +} diff --git a/vendor/exiv2-0.25/samples/xmpparse.cpp b/vendor/exiv2-0.25/samples/xmpparse.cpp new file mode 100644 index 0000000..36b1410 --- /dev/null +++ b/vendor/exiv2-0.25/samples/xmpparse.cpp @@ -0,0 +1,50 @@ +// ***************************************************************** -*- C++ -*- +// xmpparse.cpp, $Rev: 2286 $ +// Read an XMP packet from a file, parse it and print all (known) properties. + +#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::DataBuf buf = Exiv2::readFile(argv[1]); + std::string xmpPacket; + xmpPacket.assign(reinterpret_cast(buf.pData_), buf.size_); + Exiv2::XmpData xmpData; + if (0 != Exiv2::XmpParser::decode(xmpData, xmpPacket)) { + std::string error(argv[1]); + error += ": Failed to parse file contents (XMP packet)"; + throw Exiv2::Error(1, error); + } + if (xmpData.empty()) { + std::string error(argv[1]); + error += ": No XMP properties found in the XMP packet"; + throw Exiv2::Error(1, error); + } + for (Exiv2::XmpData::const_iterator md = xmpData.begin(); + md != xmpData.end(); ++md) { + std::cout << std::setfill(' ') << std::left + << std::setw(44) + << md->key() << " " + << std::setw(9) << std::setfill(' ') << std::left + << md->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << md->count() << " " + << std::dec << md->value() + << std::endl; + } + Exiv2::XmpParser::terminate(); + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/xmpparser-test.cpp b/vendor/exiv2-0.25/samples/xmpparser-test.cpp new file mode 100644 index 0000000..2947809 --- /dev/null +++ b/vendor/exiv2-0.25/samples/xmpparser-test.cpp @@ -0,0 +1,66 @@ +// ***************************************************************** -*- C++ -*- +// xmpparser-test.cpp, $Rev: 3090 $ +// Read an XMP packet from a file, parse and re-serialize it. + +#include + +#include +#include +#include + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + std::string filename(argv[1]); + Exiv2::DataBuf buf = Exiv2::readFile(filename); + std::string xmpPacket; + xmpPacket.assign(reinterpret_cast(buf.pData_), buf.size_); + std::cerr << "-----> Decoding XMP data read from " << filename << " <-----\n"; + Exiv2::XmpData xmpData; + if (0 != Exiv2::XmpParser::decode(xmpData, xmpPacket)) { + std::string error(argv[1]); + error += ": Failed to parse file contents (XMP packet)"; + throw Exiv2::Error(1, error); + } + if (xmpData.empty()) { + std::string error(argv[1]); + error += ": No XMP properties found in the XMP packet"; + throw Exiv2::Error(1, error); + } + for (Exiv2::XmpData::const_iterator md = xmpData.begin(); + md != xmpData.end(); ++md) { + std::cout << std::setfill(' ') << std::left + << std::setw(44) + << md->key() << " " + << std::setw(9) << std::setfill(' ') << std::left + << md->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << md->count() << " " + << std::dec << md->value() + << std::endl; + } + filename += "-new"; + std::cerr << "-----> Encoding XMP data to write to " << filename << " <-----\n"; + if (0 != Exiv2::XmpParser::encode(xmpPacket, xmpData)) { + std::string error(argv[1]); + error += ": Failed to encode the XMP data"; + throw Exiv2::Error(1, error); + } + Exiv2::FileIo file(filename); + if (file.open("wb") != 0) { + throw Exiv2::Error(10, filename, "wb", Exiv2::strError()); + } + if (file.write(reinterpret_cast(xmpPacket.data()), static_cast(xmpPacket.size())) == 0) { + throw Exiv2::Error(2, filename, Exiv2::strError(), "FileIo::write"); + } + Exiv2::XmpParser::terminate(); + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/samples/xmpsample.cpp b/vendor/exiv2-0.25/samples/xmpsample.cpp new file mode 100644 index 0000000..887403d --- /dev/null +++ b/vendor/exiv2-0.25/samples/xmpsample.cpp @@ -0,0 +1,216 @@ +// ***************************************************************** -*- C++ -*- +// xmpsample.cpp, $Rev: 3090 $ +// Sample/test for high level XMP classes. See also addmoddel.cpp + +#include + +#include +#include +#include +#include +#include + +bool isEqual(float a, float b) +{ + double d = std::fabs(a - b); + return d < 0.00001; +} + +int main() +try { + // The XMP property container + Exiv2::XmpData xmpData; + + // ------------------------------------------------------------------------- + // Teaser: Setting XMP properties doesn't get much easier than this: + + xmpData["Xmp.dc.source"] = "xmpsample.cpp"; // a simple text value + xmpData["Xmp.dc.subject"] = "Palmtree"; // an array item + xmpData["Xmp.dc.subject"] = "Rubbertree"; // add a 2nd array item + // a language alternative with two entries and without default + xmpData["Xmp.dc.title"] = "lang=de-DE Sonnenuntergang am Strand"; + xmpData["Xmp.dc.title"] = "lang=en-US Sunset on the beach"; + + // ------------------------------------------------------------------------- + // Any properties can be set provided the namespace is known. Values of any + // type can be assigned to an Xmpdatum, if they have an output operator. The + // default XMP value type for unknown properties is a simple text value. + + xmpData["Xmp.dc.one"] = -1; + xmpData["Xmp.dc.two"] = 3.1415; + xmpData["Xmp.dc.three"] = Exiv2::Rational(5, 7); + xmpData["Xmp.dc.four"] = uint16_t(255); + xmpData["Xmp.dc.five"] = int32_t(256); + xmpData["Xmp.dc.six"] = false; + + // In addition, there is a dedicated assignment operator for Exiv2::Value + Exiv2::XmpTextValue val("Seven"); + xmpData["Xmp.dc.seven"] = val; + xmpData["Xmp.dc.eight"] = true; + + // Extracting values + assert(xmpData["Xmp.dc.one"].toLong() == -1); + assert(xmpData["Xmp.dc.one"].value().ok()); + + const Exiv2::Value &getv1 = xmpData["Xmp.dc.one"].value(); + assert(isEqual(getv1.toFloat(), -1)); + assert(getv1.ok()); + assert(getv1.toRational() == Exiv2::Rational(-1, 1)); + assert(getv1.ok()); + + const Exiv2::Value &getv2 = xmpData["Xmp.dc.two"].value(); + assert(isEqual(getv2.toFloat(), 3.1415f)); + assert(getv2.ok()); + assert(getv2.toLong() == 3); + assert(getv2.ok()); + Exiv2::Rational R = getv2.toRational(); + assert(getv2.ok()); + assert(isEqual(static_cast(R.first) / R.second, 3.1415f )); + + const Exiv2::Value &getv3 = xmpData["Xmp.dc.three"].value(); + assert(isEqual(getv3.toFloat(), 5.0f/7.0f)); + assert(getv3.ok()); + assert(getv3.toLong() == 0); // long(5.0 / 7.0) + assert(getv3.ok()); + assert(getv3.toRational() == Exiv2::Rational(5, 7)); + assert(getv3.ok()); + + const Exiv2::Value &getv6 = xmpData["Xmp.dc.six"].value(); + assert(getv6.toLong() == 0); + assert(getv6.ok()); + assert(getv6.toFloat() == 0.0); + assert(getv6.ok()); + assert(getv6.toRational() == Exiv2::Rational(0, 1)); + assert(getv6.ok()); + + const Exiv2::Value &getv7 = xmpData["Xmp.dc.seven"].value(); + getv7.toLong(); // this should fail + assert(!getv7.ok()); + + const Exiv2::Value &getv8 = xmpData["Xmp.dc.eight"].value(); + assert(getv8.toLong() == 1); + assert(getv8.ok()); + assert(getv8.toFloat() == 1.0); + assert(getv8.ok()); + assert(getv8.toRational() == Exiv2::Rational(1, 1)); + assert(getv8.ok()); + + // Deleting an XMP property + Exiv2::XmpData::iterator pos = xmpData.findKey(Exiv2::XmpKey("Xmp.dc.eight")); + if (pos == xmpData.end()) throw Exiv2::Error(1, "Key not found"); + xmpData.erase(pos); + + // ------------------------------------------------------------------------- + // Exiv2 has specialized values for simple XMP properties, arrays of simple + // properties and language alternatives. + + // Add a simple XMP property in a known namespace + Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText); + v->read("image/jpeg"); + xmpData.add(Exiv2::XmpKey("Xmp.dc.format"), v.get()); + + // Add an ordered array of text values. + v = Exiv2::Value::create(Exiv2::xmpSeq); // or xmpBag or xmpAlt. + v->read("1) The first creator"); // The sequence in which the array + v->read("2) The second creator"); // elements are added is their + v->read("3) And another one"); // order in the array. + xmpData.add(Exiv2::XmpKey("Xmp.dc.creator"), v.get()); + + // Add a language alternative property + v = Exiv2::Value::create(Exiv2::langAlt); + v->read("lang=de-DE Hallo, Welt"); // The default doesn't need a + v->read("Hello, World"); // qualifier + xmpData.add(Exiv2::XmpKey("Xmp.dc.description"), v.get()); + + // According to the XMP specification, Xmp.tiff.ImageDescription is an + // alias for Xmp.dc.description. Exiv2 treats an alias just like any + // other property and leaves it to the application to implement specific + // behaviour if desired. + xmpData["Xmp.tiff.ImageDescription"] = "TIFF image description"; + xmpData["Xmp.tiff.ImageDescription"] = "lang=de-DE TIFF Bildbeschreibung"; + + // ------------------------------------------------------------------------- + // Register a namespace which Exiv2 doesn't know yet. This is only needed + // when properties are added manually. If the XMP metadata is read from an + // image, namespaces are decoded and registered at the same time. + Exiv2::XmpProperties::registerNs("myNamespace/", "ns"); + + // ------------------------------------------------------------------------- + // Add a property in the new custom namespace. + xmpData["Xmp.ns.myProperty"] = "myValue"; + + // ------------------------------------------------------------------------- + // There are no specialized values for structures, qualifiers and nested + // types. However, these can be added by using an XmpTextValue and a path as + // the key. + + // Add a structure + Exiv2::XmpTextValue tv("16"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:w"), &tv); + tv.read("9"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:h"), &tv); + tv.read("inch"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpDM.videoFrameSize/stDim:unit"), &tv); + + // Add an element with a qualifier (using the namespace registered above) + xmpData["Xmp.dc.publisher"] = "James Bond"; // creates an unordered array + xmpData["Xmp.dc.publisher[1]/?ns:role"] = "secret agent"; + + // Add a qualifer to an array element of Xmp.dc.creator (added above) + tv.read("programmer"); + xmpData.add(Exiv2::XmpKey("Xmp.dc.creator[2]/?ns:role"), &tv); + + // Add an array of structures + tv.read(""); // Clear the value + tv.setXmpArrayType(Exiv2::XmpValue::xaBag); + xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef"), &tv); // Set the array type. + + tv.setXmpArrayType(Exiv2::XmpValue::xaNone); + tv.read("Birthday party"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:name"), &tv); + tv.read("Photographer"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[1]/stJob:role"), &tv); + + tv.read("Wedding ceremony"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[2]/stJob:name"), &tv); + tv.read("Best man"); + xmpData.add(Exiv2::XmpKey("Xmp.xmpBJ.JobRef[2]/stJob:role"), &tv); + + // Add a creator contact info structure + xmpData["Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity"] = "Kuala Lumpur"; + xmpData["Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry"] = "Malaysia"; + xmpData["Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork"] = "http://www.exiv2.org"; + + // ------------------------------------------------------------------------- + // Output XMP properties + for (Exiv2::XmpData::const_iterator md = xmpData.begin(); + md != xmpData.end(); ++md) { + std::cout << std::setfill(' ') << std::left + << std::setw(44) + << md->key() << " " + << std::setw(9) << std::setfill(' ') << std::left + << md->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << md->count() << " " + << std::dec << md->value() + << std::endl; + } + + // ------------------------------------------------------------------------- + // Serialize the XMP data and output the XMP packet + std::string xmpPacket; + if (0 != Exiv2::XmpParser::encode(xmpPacket, xmpData)) { + throw Exiv2::Error(1, "Failed to serialize XMP data"); + } + std::cout << xmpPacket << "\n"; + + // Cleanup + Exiv2::XmpParser::terminate(); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/src/CMakeLists.txt b/vendor/exiv2-0.25/src/CMakeLists.txt new file mode 100644 index 0000000..ac59361 --- /dev/null +++ b/vendor/exiv2-0.25/src/CMakeLists.txt @@ -0,0 +1,327 @@ +# CMake build system for exiv2 library and executables +# Copyright 2012- Robin Mills +# Copyright 2010-2012 Gilles Caulier +# Copyright 2008 Patrick Spendrin + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if ( NOT MSVC ) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() + +# Private headers which are only needed for the library itself +SET( LIBEXIV2_PRIVATE_HDR canonmn_int.hpp + casiomn_int.hpp + cr2image_int.hpp + crwimage_int.hpp + fujimn_int.hpp + makernote_int.hpp + minoltamn_int.hpp + nikonmn_int.hpp + olympusmn_int.hpp + orfimage_int.hpp + panasonicmn_int.hpp + pentaxmn_int.hpp + pngchunk_int.hpp + rcsid_int.hpp + rw2image_int.hpp + samsungmn_int.hpp + sigmamn_int.hpp + sonymn_int.hpp + tags_int.hpp + tiffcomposite_int.hpp + tifffwd_int.hpp + tiffimage_int.hpp + tiffvisitor_int.hpp + ) + +# Add standalone C++ header files to this list +SET( LIBEXIV2_HDR ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/asfvideo.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/basicio.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/bmpimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/config.h + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/convert.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/cr2image.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/crwimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/datasets.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/easyaccess.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/epsimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/error.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/exif.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/exiv2.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/futils.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/gifimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/http.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/image.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/iptc.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/jp2image.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/jpgimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/matroskavideo.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/metadatum.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/mrwimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/orfimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/pgfimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/preview.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/properties.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/psdimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/quicktimevideo.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/rafimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/riffvideo.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/rw2image.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/tags.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/tgaimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/tiffimage.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/types.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/utilsvideo.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/value.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/version.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/xmp.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/xmpsidecar.hpp + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/utilsvideo.hpp + ) + +# Add library C++ source files to this list +SET( LIBEXIV2_SRC asfvideo.cpp + basicio.cpp + bmpimage.cpp + canonmn.cpp + casiomn.cpp + convert.cpp + cr2image.cpp + crwedit.cpp + crwimage.cpp + datasets.cpp + easyaccess.cpp + epsimage.cpp + error.cpp + exif.cpp + futils.cpp + fujimn.cpp + gifimage.cpp + http.cpp + image.cpp + iptc.cpp + jp2image.cpp + jpgimage.cpp + makernote.cpp + matroskavideo.cpp + metadatum.cpp + minoltamn.cpp + mrwimage.cpp + nikonmn.cpp + olympusmn.cpp + orfimage.cpp + panasonicmn.cpp + pentaxmn.cpp + pgfimage.cpp + preview.cpp + properties.cpp + psdimage.cpp + quicktimevideo.cpp + rafimage.cpp + riffvideo.cpp + rw2image.cpp + samsungmn.cpp + sigmamn.cpp + sonymn.cpp + tags.cpp + tgaimage.cpp + tiffcomposite.cpp + tiffimage.cpp + tiffvisitor.cpp + types.cpp + utilsvideo.cpp + value.cpp + version.cpp + xmp.cpp + xmpsidecar.cpp + utilsvideo.cpp + ) + +IF( EXIV2_ENABLE_WEBREADY ) + ## + # add curl support + IF( EXIV2_ENABLE_CURL ) + IF( CURL_FOUND ) + SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} + easyaccess.cpp + ) + set( LIBEXIV2_HDR ${LIBEXIV2_HDR} + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/easyaccess.hpp + ) + ENDIF() + ENDIF() + + ## + # add ssh support + IF( EXIV2_ENABLE_SSH ) + IF( SSH_FOUND ) + SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} + ssh.cpp + ) + set( LIBEXIV2_HDR ${LIBEXIV2_HDR} + ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/ssh.hpp + ) + ENDIF() + ENDIF() +ENDIF( EXIV2_ENABLE_WEBREADY ) + +## +# add png*.cpp files if PNG support requested +IF( EXIV2_ENABLE_PNG ) + IF( ZLIB_FOUND ) + SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} + pngchunk.cpp + pngimage.cpp + ) + set( LIBEXIV2_HDR ${LIBEXIV2_HDR} ${CMAKE_CURRENT_LIST_DIR}/../include/exiv2/pngimage.hpp ) + ENDIF( ZLIB_FOUND ) +ENDIF( EXIV2_ENABLE_PNG ) + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) + +IF( MSVC ) # to support the old VS solution builds + ADD_DEFINITIONS("-DCMAKE_BUILD_SVN") +ENDIF() + +## +# add xmp source if xmp is requested and xmp library not built +IF( EXIV2_ENABLE_XMP ) + IF( NOT EXIV2_ENABLE_LIBXMP ) + SET( LIBEXIV2_SRC ${XMPSRC} ${LIBEXIV2_SRC} ) + ENDIF( NOT EXIV2_ENABLE_LIBXMP ) +ENDIF( EXIV2_ENABLE_XMP ) + +## +# Create source file lists for applications +# exiv2 application +SET( EXIV2_SRC exiv2.cpp + actions.cpp + utils.cpp +) + +# connection test application +SET( CONNTEST ../samples/conntest.cpp) +# exifprint application +SET( EXIFPRINT ../samples/exifprint.cpp) +# cmdfiletest application +SET( REMOTETEST ../samples/remotetest.cpp) + +## +# modify source lists to suit environment +IF(NOT HAVE_TIMEGM ) + SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} localtime.c ) + SET( EXIV2_SRC ${EXIV2_SRC} localtime.c ) + SET( PATHTEST_SRC ${PATHTEST_SRC} localtime.c ) +ENDIF( NOT HAVE_TIMEGM ) + +IF( MSVC ) + SET( EXIV2_SRC ${EXIV2_SRC} getopt_win32.c ) + SET( LIBEXIV2_SRC ${LIBEXIV2_SRC} getopt_win32.c ) +ENDIF( MSVC ) + +## +# msvn tuning +include(../CMake_msvc.txt) +msvc_runtime_configure(${EXIV2_ENABLE_SHARED}) + +# ****************************************************************************** +# exiv2lib library + +ADD_LIBRARY( exiv2lib ${STATIC_FLAG} ${LIBEXIV2_SRC} ${LIBEXIV2_HDR} ) + +SET_TARGET_PROPERTIES( exiv2lib PROPERTIES + VERSION ${GENERIC_LIB_VERSION} + SOVERSION ${GENERIC_LIB_SOVERSION} + DEFINE_SYMBOL EXV_BUILDING_LIB + OUTPUT_NAME exiv2 +) + +if ( MSVC ) + source_group("Header Files" FILES ${LIBEXIV2_HDR} ) + TARGET_LINK_LIBRARIES( exiv2lib ${EXPAT_LIBRARIES} ) + source_group("Header Files" FILES ${LIBCURL_HDR} ) + TARGET_LINK_LIBRARIES( exiv2lib ${CURL_LIBRARIES} ) + source_group("Header Files" FILES ${SSH_HDR} ) + TARGET_LINK_LIBRARIES( exiv2lib ${SSH_LIBRARIES} ) +else() + if ( NOT MINGW ) + TARGET_LINK_LIBRARIES( exiv2lib dl ${EXPAT_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib dl ${CURL_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib dl ${SSH_LIBRARIES} ) + else() + TARGET_LINK_LIBRARIES( exiv2lib ${EXPAT_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib ${CURL_LIBRARIES} ) + TARGET_LINK_LIBRARIES( exiv2lib ${SSH_LIBRARIES} ) + endif() +endif() + +if( EXIV2_ENABLE_LIBXMP ) + ADD_DEPENDENCIES( exiv2lib xmp ) + if ( MSVC ) + LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH}/$(ConfigurationName)) + endif(MSVC) + TARGET_LINK_LIBRARIES( exiv2lib xmp ) +ENDIF() + +IF( EXIV2_ENABLE_PNG ) + IF( ZLIB_FOUND ) + IF( MSVC ) + if ( EXIV2_ENABLE_SHARED ) + TARGET_LINK_LIBRARIES( exiv2lib optimized ${ZLIB_LIBRARIES} debug ${ZLIB_LIBRARIES}d ) + else() + TARGET_LINK_LIBRARIES( exiv2lib optimized zlibstatic.lib debug zlibstaticd.lib ) + endif() + ELSE() + TARGET_LINK_LIBRARIES( exiv2lib ${ZLIB_LIBRARIES} ) + ENDIF() + ENDIF() +ENDIF() + +IF( EXIV2_ENABLE_NLS ) + TARGET_LINK_LIBRARIES( exiv2lib ${LIBINTL_LIBRARIES} ) +ENDIF( EXIV2_ENABLE_NLS ) + +IF( ICONV_FOUND ) + TARGET_LINK_LIBRARIES( exiv2lib ${ICONV_LIBRARIES} ) +ENDIF( ICONV_FOUND ) + +IF (CYGWIN OR MINGW) + TARGET_LINK_LIBRARIES( exiv2lib psapi ) +ENDIF(CYGWIN OR MINGW) + + +INSTALL( TARGETS exiv2lib ${INSTALL_TARGET_STANDARD_ARGS} ) + +# ****************************************************************************** +# exiv2 application +ADD_EXECUTABLE( exiv2 ${EXIV2_SRC} ) +TARGET_LINK_LIBRARIES( exiv2 exiv2lib ) +INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} ) + +# ****************************************************************************** +# connection test application +ADD_EXECUTABLE( conntest ${CONNTEST} ) +TARGET_LINK_LIBRARIES( conntest exiv2lib ) + +# ****************************************************************************** +# exifprint application +# ADD_EXECUTABLE( exifprint ${EXIFPRINT} ) +# TARGET_LINK_LIBRARIES( exifprint exiv2lib ) + +# ****************************************************************************** +# remotetest application +ADD_EXECUTABLE( remotetest ${REMOTETEST} ) +TARGET_LINK_LIBRARIES( remotetest exiv2lib ) + +# ****************************************************************************** +# Headers +INSTALL( FILES ${LIBEXIV2_HDR} DESTINATION include/exiv2 ) + +# ****************************************************************************** +# Man page +INSTALL( FILES exiv2.1 DESTINATION man/man1 ) + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/src/Makefile b/vendor/exiv2-0.25/src/Makefile new file mode 100644 index 0000000..80012f8 --- /dev/null +++ b/vendor/exiv2-0.25/src/Makefile @@ -0,0 +1,343 @@ +# ************************************************************* -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile +# Version: $Rev: 3867 $ +# Author(s): Andreas Huggel (ahu) +# History: 10-Dec-03, ahu: created +# +# Description: +# Do NOT change this file! All system specific settings and configs +# go into config.mk. +# +# This makefile contains (supposedly) generic build rules to build the +# library and applications. It includes all system specific settings +# from config.mk. The idea is that configuring and porting the +# software to a new platform should only require changes in config.mk. +# +# Restrictions: +# Requires GNU make. +# + +# Default make target +all: bin + +# Include system configuration +top_srcdir = .. +include $(top_srcdir)/config/config.mk + +# ****************************************************************************** +# Source files + +# Add standalone C++ header files to this list +CCHDR = exiv2.hpp \ + config.h \ + exv_conf.h \ + exv_msvc.h \ + version.hpp + +# Add library C++ source files to this list +CCSRC = basicio.cpp \ + bmpimage.cpp \ + canonmn.cpp \ + casiomn.cpp \ + convert.cpp \ + cr2image.cpp \ + crwimage.cpp \ + datasets.cpp \ + easyaccess.cpp \ + epsimage.cpp \ + error.cpp \ + exif.cpp \ + futils.cpp \ + fujimn.cpp \ + gifimage.cpp \ + http.cpp \ + image.cpp \ + iptc.cpp \ + jp2image.cpp \ + jpgimage.cpp \ + makernote.cpp \ + metadatum.cpp \ + minoltamn.cpp \ + mrwimage.cpp \ + nikonmn.cpp \ + olympusmn.cpp \ + orfimage.cpp \ + panasonicmn.cpp \ + pentaxmn.cpp \ + pgfimage.cpp +ifdef HAVE_LIBZ +CCSRC += pngimage.cpp \ + pngchunk.cpp +endif +CCSRC += preview.cpp \ + properties.cpp \ + psdimage.cpp \ + rafimage.cpp \ + rw2image.cpp \ + samsungmn.cpp +ifdef USE_SSH +CCSRC += ssh.cpp +endif +CCSRC += sigmamn.cpp \ + sonymn.cpp \ + tags.cpp \ + tgaimage.cpp \ + tiffcomposite.cpp \ + tiffimage.cpp \ + tiffvisitor.cpp \ + types.cpp \ + value.cpp \ + version.cpp \ + xmp.cpp \ + xmpsidecar.cpp +ifdef ENABLE_VIDEO +CCSRC += asfvideo.cpp \ + matroskavideo.cpp \ + quicktimevideo.cpp \ + riffvideo.cpp \ + utilsvideo.cpp +endif + +# Add library C source files to this list +ifndef HAVE_TIMEGM +CSRC = localtime.c +endif + +# Source files for the Exiv2 application +EXIV2MAIN = exiv2.cpp +EXIV2SRC = actions.cpp \ + utils.cpp + +# C source files for the Exiv2 application +ifndef HAVE_TIMEGM +EXIVCSRC = localtime.c +endif + +# ****************************************************************************** +# Library +LIBRARY = libexiv2.la + +# ****************************************************************************** +# Initialisations +SHELL = /bin/bash + +.SUFFIXES: +.SUFFIXES: .c .cpp .o .so + +.PRECIOUS: %.cpp + +CPPFLAGS += $(SSH_CPPFLAGS) $(CURL_CPPFLAGS) $(XMPSDK_CPPFLAGS) +LDFLAGS += $(SSH_LDFLAGS) $(CURL_LDFLAGS) $(EXPAT_LDFLAGS) $(XMPSDK_LDFLAGS) +LIBS += $(SSH_LIBS) $(CURL_LIBS) $(EXPAT_LIBS) $(XMPSDK_LIBS) + +# Generic variables +CCHDR := $(CCHDR) $(CCSRC:.cpp=.hpp) +CCOBJ = $(CCSRC:.cpp=.o) +CCLOBJ = $(CCSRC:.cpp=.lo) + +COBJ = $(CSRC:.c=.o) +CLOBJ = $(CSRC:.c=.lo) + +SRC = $(CCSRC) $(CSRC) +HDR = $(CCHDR) +OBJ = $(CCOBJ) $(COBJ) +LOBJ = $(CCLOBJ) $(CLOBJ) + +EXIV2OBJ = $(EXIV2MAIN:.cpp=.o) $(EXIV2SRC:.cpp=.o) +EXIV2COBJ = $(EXIVCSRC:.c=.o) +EXIV2BIN = $(EXIV2MAIN:.cpp=) +EXIV2EXE = $(EXIV2MAIN:.cpp=$(EXEEXT)) + +ifdef DEP_TRACKING +DEP = $(CCSRC:%.cpp=$(DEPDIR)/%.d) \ + $(CSRC:%.c=$(DEPDIR)/%.d) \ + $(BINSRC:%.cpp=$(DEPDIR)/%.d) \ + $(EXIV2MAIN:%.cpp=$(DEPDIR)/%.d) \ + $(EXIV2SRC:%.cpp=$(DEPDIR)/%.d) \ + $(EXIVCSRC:%.c=$(DEPDIR)/%.d) + +endif + +# ****************************************************************************** +# Rules +$(CCOBJ): %.o: %.cpp + @$(LIBTOOL) --mode=compile $(COMPILE.cc) -DEXV_BUILDING_LIB=1 -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +$(COBJ): %.o: %.c + @$(LIBTOOL) --mode=compile $(COMPILE.c) -DEXV_BUILDING_LIB=1 -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +$(EXIV2OBJ): %.o: %.cpp + $(COMPILE.cc) -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +%.o: %.c + $(COMPILE.c) -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +%.ii: %.cpp + set -e; \ + $(CXXCPP) $(CPPFLAGS) -DEXV_BUILDING_LIB=1 $< | LC_ALL=C sed '/^[ ]*$$/d' > $@ + +# ****************************************************************************** +# Targets +.PHONY: all bin check ctags doc \ + clean mostlyclean distclean maintainer-clean \ + install install-header install-lib \ + uninstall uninstall-header uninstall-lib + +ifdef DEP_TRACKING +# Include targets from dependency files +-include $(DEP) +endif + +# Be sure to rewrite exv_conf.h and svn_version.h before compiling anything +$(SRC): ../include/exiv2/exv_conf.h svn_version.h + +../include/exiv2/exv_conf.h: $(top_srcdir)/config/config.h + LC_ALL=C sed 's/#define \([A-Z]\)/#define EXV_\1/; s/#undef \([A-Z]\)/#undef EXV_\1/' < $< > $@ + +# svn_version.h is only rewritten when the svn info | grep Revision has changed +svn_version.h: + ./svn_version.sh + +version.hpp : svn_version.h + +$(LIBTOOL): $(LIBTOOL_DEPS) + $(SHELL) $(top_srcdir)/config.status --recheck + +bin: lib $(EXIV2BIN) + +lib: $(OBJ) + $(LIBTOOL) --mode=link $(LINK.cc) -o $(LIBRARY) $(LOBJ) -rpath $(libdir) -version-info $(EXIV2_LTVERSION) $(LIBS) + @touch lib + +$(BINARY): %: %.o lib + @$(LIBTOOL) --mode=link $(LINK.cc) -o $@ $(LIBRARY) $@.o -rpath $(libdir) + +$(EXIV2BIN): lib $(EXIV2OBJ) $(EXIV2COBJ) + mkdir -pv ../bin 2>&1 > /dev/null + @$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir) + +install-header: + $(INSTALL_DIRS) $(DESTDIR)$(incdir) + @list='$(HDR)'; for p in $$list; do \ + if test -f ../include/exiv2/$$p; then \ + echo "$(INSTALL_DATA) ../include/exiv2/$$p $(DESTDIR)$(incdir)/$$p"; \ + $(INSTALL_DATA) ../include/exiv2/$$p $(DESTDIR)$(incdir)/$$p; \ + else :; fi; \ + done ; \ + if test -e svn_version.h; then \ + echo "$(INSTALL_DATA) svn_version.h $(DESTDIR)$(incdir)/svn_version.h"; \ + $(INSTALL_DATA) svn_version.h $(DESTDIR)$(incdir)/svn_version.h; \ + fi + +install-lib: lib install-header + $(INSTALL_DIRS) $(DESTDIR)$(libdir) + @$(LIBTOOL) --mode=install $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) + $(INSTALL_DIRS) $(DESTDIR)$(bindir) + $(INSTALL_DIRS) $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL_DATA) $(top_srcdir)/config/exiv2.pc $(DESTDIR)$(libdir)/pkgconfig/exiv2.pc + +install: $(EXIV2BIN) install-lib + $(INSTALL_DIRS) $(DESTDIR)$(bindir) + @$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ../bin/$(EXIV2EXE) $(DESTDIR)$(bindir)/$(EXIV2EXE) + $(INSTALL_DIRS) $(DESTDIR)$(mandir) + $(INSTALL_DIRS) $(DESTDIR)$(man1dir) + $(INSTALL_DATA) exiv2.1 $(DESTDIR)$(man1dir)/exiv2.1 + +uninstall-header: + @list='$(HDR)'; for p in $$list; do \ + echo "$(RM) $(DESTDIR)$(incdir)/$$p"; \ + $(RM) $(DESTDIR)$(incdir)/$$p; \ + done + $(RM) $(DESTDIR)$(incdir)/svn_version.h + -rmdir $(DESTDIR)$(incdir) + +uninstall-lib: uninstall-header + $(RM) $(DESTDIR)$(libdir)/pkgconfig/exiv2.pc + -rmdir $(DESTDIR)$(libdir)/pkgconfig + @$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY) + -rmdir $(DESTDIR)$(libdir) + +uninstall: uninstall-lib + $(RM) $(DESTDIR)$(man1dir)/exiv2.1 + -rmdir $(DESTDIR)$(man1dir) + -rmdir $(DESTDIR)$(mandir) + @$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(bindir)/$(EXIV2EXE) + -rmdir $(DESTDIR)$(bindir) + +ctags: + ebrowse $(HDR) $(SRC) +# ctags-exuberant --extra=+q -e * +# ctags-exuberant --extra=+q * + +check: + @echo "No checks available for this library - or $ make tests" + +mostlyclean: + $(RM) core + $(RM) $(CCSRC:.cpp=.ii) + $(RM) lib + $(RM) -rf $(CCSRC:%.cpp=.libs/%.d) $(CSRC:%.c=.libs/%.d) .libs/*.dSYM + @$(LIBTOOL) --mode=clean $(RM) $(LOBJ) $(sort $(EXIV2OBJ) $(EXIV2COBJ)) + +clean: mostlyclean + @$(LIBTOOL) --mode=clean $(RM) $(LIBRARY) + @$(LIBTOOL) --mode=clean $(RM) $(EXECUTABLE) $(EXIV2EXE) + +# Run `make distclean' from the top source directory to also remove +# files created by configuring the program. +distclean: clean + $(RM) doxygen.hpp +ifdef DEP_TRACKING + $(RM) $(DEP) + -rmdir $(DEPDIR) +endif + $(RM) tags TAGS + $(RM) *~ *.bak *# + +# This command is intended for maintainers to use; it deletes files +# that may need special tools to rebuild. +maintainer-clean: uninstall distclean + -$(RM) -r .deps + -$(RM) -r .libs + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/src/TODO b/vendor/exiv2-0.25/src/TODO new file mode 100644 index 0000000..6c6c7a9 --- /dev/null +++ b/vendor/exiv2-0.25/src/TODO @@ -0,0 +1,39 @@ +Library Features: ++ rename erase* methods that access a file to remove* ++ add ExifData::erase(tag) ++ Thumbnail support: set (re-calculate) ++ operator>> for Value, since we already have read()? ++ Use size_t where appropriate ++ Support TIFF type ids ++ Support for broken IFD makernotes (which have corrupted IFD offsets) ++ Support non-intrusive deletion of entries from an IFD. ++ Write an example using low level IFD classes to print summary Exif info ++ Extended JPEG support (actual resolution of the image) ++ Implement proper error handling ++ Complete support to create Exif data from scratch: + + set thumbnail, write thumbnail tags ++ Make it possible to force write from metadata (just an optional arg to write?) + ++ Make Image::doWriteMetadata do its work in a single pass + ++ Revise Image and IptcData+ExifData API (aka turn it inside out) ++ Add PSD images support (and TIFF, NEF, CRW...) ++ Add support for XML metadata files + +Exiv2 functionality ++ Add offset to value for hexdump (requires metadata to have an offset) + +Bugs: ++ Handle all Todo's ++ Cleanup and fix implementation of JpegImage (must be able to read any APP0/1), + should be able to insert exv into extracted thumbs (usually w/o APP0/1) ++ Review Image interface. Is it really necessary to have so many functions there? ++ Review the handling of type ids? What if we encounter type 27 in an IFD? ++ Rational and other output operators (see Josuttis, p653) ++ Through ExifData::iterator and Metadatum::operator= it is possible to have + multiple copies of one metadatum in the metadata container ++ Checks and non-intrusive updates must be atomic, i.e., not change anything + if the metadata is not compatible ++ Review: Exception safety ++ Review: Ifd1 only at Thumbnail, do we really need Thumbnail::update() ? ++ Should JpegImage differ between NO Jpeg comment and an empty Jpeg comment?? diff --git a/vendor/exiv2-0.25/src/actions.cpp b/vendor/exiv2-0.25/src/actions.cpp new file mode 100644 index 0000000..d91e842 --- /dev/null +++ b/vendor/exiv2-0.25/src/actions.cpp @@ -0,0 +1,2057 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: actions.cpp + Version: $Rev: 3815 $ + Author(s): Andreas Huggel (ahu) + History: 08-Dec-03, ahu: created + 30-Apr-06, Roger Larsson: Print filename if processing multiple files + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: actions.cpp 3815 2015-05-10 09:37:34Z ahuggel $") + +// included header files +#include "config.h" + +#ifndef EXV_HAVE_TIMEGM +# include "timegm.h" +#endif +#include "actions.hpp" +#include "exiv2app.hpp" +#include "image.hpp" +#include "jpgimage.hpp" +#include "xmpsidecar.hpp" +#include "utils.hpp" +#include "types.hpp" +#include "exif.hpp" +#include "easyaccess.hpp" +#include "iptc.hpp" +#include "xmp.hpp" +#include "preview.hpp" +#include "futils.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for stat() +#include // for stat() +#ifdef EXV_HAVE_UNISTD_H +# include // for stat() +#endif +#ifdef _MSC_VER +# include +#else +# include +#endif + +// ***************************************************************************** +// local declarations +namespace { + + //! Helper class to set the timestamp of a file to that of another file + class Timestamp { + public: + //! C'tor + Timestamp() : actime_(0), modtime_(0) {} + //! Read the timestamp of a file + int read(const std::string& path); + //! Read the timestamp from a broken-down time in buffer \em tm. + int read(struct tm* tm); + //! Set the timestamp of a file + int touch(const std::string& path); + + private: + time_t actime_; + time_t modtime_; + }; + + /*! + @brief Convert a string "YYYY:MM:DD HH:MI:SS" to a struct tm type, + returns 0 if successful + */ + int str2Tm(const std::string& timeStr, struct tm* tm); + + //! Convert a localtime to a string "YYYY:MM:DD HH:MI:SS", "" on error + std::string time2Str(time_t time); + + //! Convert a tm structure to a string "YYYY:MM:DD HH:MI:SS", "" on error + std::string tm2Str(const struct tm* tm); + + /*! + @brief Copy metadata from source to target according to Params::copyXyz + + @param source Source file path + @param target Target file path. An *.exv file is created if target doesn't + exist. + @param targetType Image type for the target image in case it needs to be + created. + @param preserve Indicates if existing metadata in the target file should + be kept. + @return 0 if successful, else an error code + */ + int metacopy(const std::string& source, + const std::string& target, + int targetType, + bool preserve); + + /*! + @brief Rename a file according to a timestamp value. + + @param path The original file path. Contains the new path on exit. + @param tm Pointer to a buffer with the broken-down time to rename + the file to. + @return 0 if successful, -1 if the file was skipped, 1 on error. + */ + int renameFile(std::string& path, const struct tm* tm); + + /*! + @brief Make a file path from the current file path, destination + directory (if any) and the filename extension passed in. + + @param path Path of the existing file + @param ext New filename extension (incl. the dot '.' if required) + @return 0 if successful, 1 if the new file exists and the user + chose not to overwrite it. + */ + std::string newFilePath(const std::string& path, const std::string& ext); + + /*! + @brief Check if file \em path exists and whether it should be + overwritten. Ask user if necessary. Return 1 if the file + exists and shouldn't be overwritten, else 0. + */ + int dontOverwrite(const std::string& path); + + /*! + @brief Output a text with a given minimum number of chars, honoring + multi-byte characters correctly. Replace code in the form + os << setw(width) << myString + with + os << make_pair( myString, width) + */ + std::ostream& operator<<( std::ostream& os, std::pair strAndWidth); +} + +// ***************************************************************************** +// class member definitions +namespace Action { + + Task::~Task() + { + } + + Task::AutoPtr Task::clone() const + { + return AutoPtr(clone_()); + } + + TaskFactory* TaskFactory::instance_ = 0; + + TaskFactory& TaskFactory::instance() + { + if (0 == instance_) { + instance_ = new TaskFactory; + } + return *instance_; + } // TaskFactory::instance + + void TaskFactory::cleanup() + { + if (instance_ != 0) { + Registry::iterator e = registry_.end(); + for (Registry::iterator i = registry_.begin(); i != e; ++i) { + delete i->second; + } + delete instance_; + instance_ = 0; + } + } //TaskFactory::cleanup + + void TaskFactory::registerTask(TaskType type, Task::AutoPtr task) + { + Registry::iterator i = registry_.find(type); + if (i != registry_.end()) { + delete i->second; + } + registry_[type] = task.release(); + } // TaskFactory::registerTask + + TaskFactory::TaskFactory() + { + // Register a prototype of each known task + registerTask(adjust, Task::AutoPtr(new Adjust)); + registerTask(print, Task::AutoPtr(new Print)); + registerTask(rename, Task::AutoPtr(new Rename)); + registerTask(erase, Task::AutoPtr(new Erase)); + registerTask(extract, Task::AutoPtr(new Extract)); + registerTask(insert, Task::AutoPtr(new Insert)); + registerTask(modify, Task::AutoPtr(new Modify)); + registerTask(fixiso, Task::AutoPtr(new FixIso)); + registerTask(fixcom, Task::AutoPtr(new FixCom)); + } // TaskFactory c'tor + + Task::AutoPtr TaskFactory::create(TaskType type) + { + Registry::const_iterator i = registry_.find(type); + if (i != registry_.end() && i->second != 0) { + Task* t = i->second; + return t->clone(); + } + return Task::AutoPtr(0); + } // TaskFactory::create + + Print::~Print() + { + } + + int Print::run(const std::string& path) + try { + path_ = path; + int rc = 0; + switch (Params::instance().printMode_) { + case Params::pmSummary: rc = printSummary(); break; + case Params::pmList: rc = printList(); break; + case Params::pmComment: rc = printComment(); break; + case Params::pmPreview: rc = printPreviewList(); break; + case Params::pmStructure: rc = printStructure(std::cout,Exiv2::kpsBasic); break; + case Params::pmXMP: rc = printStructure(std::cout,Exiv2::kpsXMP); break; + } + return rc; + } + catch(const Exiv2::AnyError& e) { + std::cerr << "Exiv2 exception in print action for file " + << path << ":\n" << e << "\n"; + return 1; + } // Print::run + + int Print::printStructure(std::ostream& out, Exiv2::PrintStructureOption option) + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ << ": " + << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->printStructure(out,option); + return 0; + } + + int Print::printSummary() + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ << ": " + << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + align_ = 16; + + // Filename + printLabel(_("File name")); + std::cout << path_ << std::endl; + + // Filesize + struct stat buf; + if (0 == stat(path_.c_str(), &buf)) { + printLabel(_("File size")); + std::cout << buf.st_size << " " << _("Bytes") << std::endl; + } + + // MIME type + printLabel(_("MIME type")); + std::cout << image->mimeType() << std::endl; + + // Image size + printLabel(_("Image size")); + std::cout << image->pixelWidth() << " x " << image->pixelHeight() << std::endl; + + if (exifData.empty()) { + std::cerr << path_ << ": " + << _("No Exif data found in the file\n"); + return -3; + } + + // Camera make + printTag(exifData, "Exif.Image.Make", _("Camera make")); + + // Camera model + printTag(exifData, "Exif.Image.Model", _("Camera model")); + + // Image Timestamp + printTag(exifData, "Exif.Photo.DateTimeOriginal", _("Image timestamp")); + + // Image number + // Todo: Image number for cameras other than Canon + printTag(exifData, "Exif.Canon.FileNumber", _("Image number")); + + // Exposure time + // From ExposureTime, failing that, try ShutterSpeedValue + bool done = false; + printLabel(_("Exposure time")); + if (!done) { + done = 0 != printTag(exifData, "Exif.Photo.ExposureTime"); + } + if (!done) { + done = 0 != printTag(exifData, "Exif.Photo.ShutterSpeedValue"); + } + std::cout << std::endl; + + // Aperture + // Get if from FNumber and, failing that, try ApertureValue + { + printLabel(_("Aperture")); + bool done = false; + if (!done) { + done = 0 != printTag(exifData, "Exif.Photo.FNumber"); + } + if (!done) { + done = 0 != printTag(exifData, "Exif.Photo.ApertureValue"); + } + std::cout << std::endl; + + // Exposure bias + printTag(exifData, "Exif.Photo.ExposureBiasValue", _("Exposure bias")); + + // Flash + printTag(exifData, "Exif.Photo.Flash", _("Flash")); + + // Flash bias + printTag(exifData, Exiv2::flashBias, _("Flash bias")); + + // Actual focal length and 35 mm equivalent + // Todo: Calculate 35 mm equivalent a la jhead + Exiv2::ExifData::const_iterator md; + printLabel(_("Focal length")); + if (1 == printTag(exifData, "Exif.Photo.FocalLength")) { + md = exifData.findKey( + Exiv2::ExifKey("Exif.Photo.FocalLengthIn35mmFilm")); + if (md != exifData.end()) { + std::cout << " ("<< _("35 mm equivalent") << ": " + << md->print(&exifData) << ")"; + } + } + else { + printTag(exifData, "Exif.Canon.FocalLength"); + } + std::cout << std::endl; + } + + // Subject distance + { + printLabel(_("Subject distance")); + bool done = false; + if (!done) { + done = 0 != printTag(exifData, "Exif.Photo.SubjectDistance"); + } + if (!done) { + done = 0 != printTag(exifData, "Exif.CanonSi.SubjectDistance"); + done = 0 != printTag(exifData, "Exif.CanonFi.FocusDistanceLower"); + done = 0 != printTag(exifData, "Exif.CanonFi.FocusDistanceUpper"); + } + std::cout << std::endl; + } + + // ISO speed + printTag(exifData, Exiv2::isoSpeed, _("ISO speed")); + + // Exposure mode + printTag(exifData, Exiv2::exposureMode, _("Exposure mode")); + + // Metering mode + printTag(exifData, "Exif.Photo.MeteringMode", _("Metering mode")); + + // Macro mode + printTag(exifData, Exiv2::macroMode, _("Macro mode")); + + // Image quality setting (compression) + printTag(exifData, Exiv2::imageQuality, _("Image quality")); + + // Exif Resolution + { + printLabel(_("Exif Resolution")); + long xdim = 0; + long ydim = 0; + if (image->mimeType() == "image/tiff") { + xdim = image->pixelWidth(); + ydim = image->pixelHeight(); + } + else { + Exiv2::ExifData::const_iterator md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth")); + if (md == exifData.end()) { + md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); + } + if (md != exifData.end() && md->count() > 0) { + xdim = md->toLong(); + } + md = exifData.findKey(Exiv2::ExifKey("Exif.Image.ImageLength")); + if (md == exifData.end()) { + md = exifData.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); + } + if (md != exifData.end() && md->count() > 0) { + ydim = md->toLong(); + } + } + if (xdim != 0 && ydim != 0) { + std::cout << xdim << " x " << ydim; + } + std::cout << std::endl; + } + + // White balance + printTag(exifData, Exiv2::whiteBalance, _("White balance")); + + // Thumbnail + printLabel(_("Thumbnail")); + Exiv2::ExifThumbC exifThumb(exifData); + std::string thumbExt = exifThumb.extension(); + if (thumbExt.empty()) { + std::cout << _("None"); + } + else { + Exiv2::DataBuf buf = exifThumb.copy(); + if (buf.size_ == 0) { + std::cout << _("None"); + } + else { + std::cout << exifThumb.mimeType() << ", " + << buf.size_ << " " << _("Bytes"); + } + } + std::cout << std::endl; + + // Copyright + printTag(exifData, "Exif.Image.Copyright", _("Copyright")); + + // Exif Comment + printTag(exifData, "Exif.Photo.UserComment", _("Exif comment")); + std::cout << std::endl; + + return 0; + } // Print::printSummary + + void Print::printLabel(const std::string& label) const + { + std::cout << std::setfill(' ') << std::left; + if (Params::instance().files_.size() > 1) { + std::cout << std::setw(20) << path_ << " "; + } + std::cout << std::make_pair( label, align_) + << ": "; + } + + int Print::printTag(const Exiv2::ExifData& exifData, + const std::string& key, + const std::string& label) const + { + int rc = 0; + if (!label.empty()) { + printLabel(label); + } + Exiv2::ExifKey ek(key); + Exiv2::ExifData::const_iterator md = exifData.findKey(ek); + if (md != exifData.end()) { + md->write(std::cout, &exifData); + rc = 1; + } + if (!label.empty()) std::cout << std::endl; + return rc; + } // Print::printTag + + int Print::printTag(const Exiv2::ExifData& exifData, + EasyAccessFct easyAccessFct, + const std::string& label) const + { + int rc = 0; + if (!label.empty()) { + printLabel(label); + } + Exiv2::ExifData::const_iterator md = easyAccessFct(exifData); + if (md != exifData.end()) { + md->write(std::cout, &exifData); + rc = 1; + } + if (!label.empty()) std::cout << std::endl; + return rc; + } // Print::printTag + + int Print::printList() + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + // Set defaults for metadata types and data columns + if (Params::instance().printTags_ == Exiv2::mdNone) { + Params::instance().printTags_ = Exiv2::mdExif | Exiv2::mdIptc | Exiv2::mdXmp; + } + if (Params::instance().printItems_ == 0) { + Params::instance().printItems_ = Params::prKey | Params::prType | Params::prCount | Params::prTrans; + } + return printMetadata(image.get()); + } // Print::printList + + int Print::printMetadata(const Exiv2::Image* image) + { + std::string sMissing; + if (Params::instance().printTags_ & Exiv2::mdExif) { + const Exiv2::ExifData& exifData = image->exifData(); + for (Exiv2::ExifData::const_iterator md = exifData.begin(); + md != exifData.end(); ++md) { + printMetadatum(*md, image); + } + if (exifData.empty()) sMissing = "Exif" ; + } + + if (Params::instance().printTags_ & Exiv2::mdIptc) { + const Exiv2::IptcData& iptcData = image->iptcData(); + for (Exiv2::IptcData::const_iterator md = iptcData.begin(); + md != iptcData.end(); ++md) { + printMetadatum(*md, image); + } + if (iptcData.empty()) sMissing = "IPTC" ; + } + + if (Params::instance().printTags_ & Exiv2::mdXmp) { + const Exiv2::XmpData& xmpData = image->xmpData(); + for (Exiv2::XmpData::const_iterator md = xmpData.begin(); + md != xmpData.end(); ++md) { + printMetadatum(*md, image); + } + if (xmpData.empty()) sMissing = "XMP" ; + } + + bool bTagFilterGiven = !Params::instance().greps_.empty(); // were tag filters given with -g? + int result = ( sMissing.empty() || bTagFilterGiven ) ? 0 : -3; + if ( result ) { + std::cerr << path_ << ": " << "(No " << sMissing << " data found in the file)\n"; + } + return result; + } // Print::printMetadata + + bool Print::grepTag(const std::string& key) + { + bool result=Params::instance().greps_.empty(); + for (Params::Greps::const_iterator g = Params::instance().greps_.begin(); + !result && g != Params::instance().greps_.end(); ++g) + { +#if EXV_HAVE_REGEX + result = regexec( &(*g), key.c_str(), 0, NULL, 0) == 0 ; +#else + result = key.find(*g) != std::string::npos; +#endif + } + return result ; + } + + bool Print::keyTag(const std::string& key) + { + bool result=Params::instance().keys_.empty(); + for (Params::Keys::const_iterator k = Params::instance().keys_.begin(); + !result && k != Params::instance().keys_.end(); ++k) + { + result = key.compare(*k) == 0; + } + return result ; + } + + void Print::printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* pImage) + { + if (!grepTag(md.key())) return; + if (!keyTag (md.key())) return; + + if ( Params::instance().unknown_ + && md.tagName().substr(0, 2) == "0x") { + return; + } + bool const manyFiles = Params::instance().files_.size() > 1; + if (manyFiles) { + std::cout << std::setfill(' ') << std::left << std::setw(20) + << path_ << " "; + } + bool first = true; + if (Params::instance().printItems_ & Params::prTag) { + if (!first) std::cout << " "; + first = false; + std::cout << "0x" << std::setw(4) << std::setfill('0') + << std::right << std::hex + << md.tag(); + } + if (Params::instance().printItems_ & Params::prGroup) { + if (!first) std::cout << " "; + first = false; + std::cout << std::setw(12) << std::setfill(' ') << std::left + << md.groupName(); + } + if (Params::instance().printItems_ & Params::prKey) { + if (!first) std::cout << " "; + first = false; + std::cout << std::setfill(' ') << std::left << std::setw(44) + << md.key(); + } + if (Params::instance().printItems_ & Params::prName) { + if (!first) std::cout << " "; + first = false; + std::cout << std::setw(27) << std::setfill(' ') << std::left + << md.tagName(); + } + if (Params::instance().printItems_ & Params::prLabel) { + if (!first) std::cout << " "; + first = false; + std::cout << std::setw(30) << std::setfill(' ') << std::left + << md.tagLabel(); + } + if (Params::instance().printItems_ & Params::prType) { + if (!first) std::cout << " "; + first = false; + std::cout << std::setw(9) << std::setfill(' ') << std::left; + const char* tn = md.typeName(); + if (tn) { + std::cout << tn; + } + else { + std::ostringstream os; + os << "0x" << std::setw(4) << std::setfill('0') << std::hex << md.typeId(); + std::cout << os.str(); + } + } + if (Params::instance().printItems_ & Params::prCount) { + if (!first) std::cout << " "; + first = false; + std::cout << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << md.count(); + } + if (Params::instance().printItems_ & Params::prSize) { + if (!first) std::cout << " "; + first = false; + std::cout << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << md.size(); + } + if (Params::instance().printItems_ & Params::prValue) { + if (!first) std::cout << " "; + first = false; + if ( Params::instance().binary_ + && ( md.typeId() == Exiv2::undefined + || md.typeId() == Exiv2::unsignedByte + || md.typeId() == Exiv2::signedByte) + && md.size() > 128) { + std::cout << _("(Binary value suppressed)") << std::endl; + return; + } + bool done = false; + if (0 == strcmp(md.key().c_str(), "Exif.Photo.UserComment")) { + const Exiv2::CommentValue* pcv = dynamic_cast(&md.value()); + if (pcv) { + Exiv2::CommentValue::CharsetId csId = pcv->charsetId(); + if (csId != Exiv2::CommentValue::undefined) { + std::cout << "charset=\"" << Exiv2::CommentValue::CharsetInfo::name(csId) << "\" "; + } + std::cout << pcv->comment(Params::instance().charset_.c_str()); + done = true; + } + } + if (!done) std::cout << std::dec << md.value(); + } + if (Params::instance().printItems_ & Params::prTrans) { + if (!first) std::cout << " "; + first = false; + if ( Params::instance().binary_ + && ( md.typeId() == Exiv2::undefined + || md.typeId() == Exiv2::unsignedByte + || md.typeId() == Exiv2::signedByte) + && md.size() > 128) { + std::cout << _("(Binary value suppressed)") << std::endl; + return; + } + bool done = false; + if (0 == strcmp(md.key().c_str(), "Exif.Photo.UserComment")) { + const Exiv2::CommentValue* pcv = dynamic_cast(&md.value()); + if (pcv) { + std::cout << pcv->comment(Params::instance().charset_.c_str()); + done = true; + } + } + if (!done) std::cout << std::dec << md.print(&pImage->exifData()); + } + if (Params::instance().printItems_ & Params::prHex) { + if (!first) std::cout << std::endl; + first = false; + if ( Params::instance().binary_ + && ( md.typeId() == Exiv2::undefined + || md.typeId() == Exiv2::unsignedByte + || md.typeId() == Exiv2::signedByte) + && md.size() > 128) { + std::cout << _("(Binary value suppressed)") << std::endl; + return; + } + Exiv2::DataBuf buf(md.size()); + md.copy(buf.pData_, pImage->byteOrder()); + Exiv2::hexdump(std::cout, buf.pData_, buf.size_); + } + std::cout << std::endl; + } // Print::printMetadatum + + int Print::printComment() + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + if (Params::instance().verbose_) { + std::cout << _("JPEG comment") << ": "; + } + std::cout << image->comment() << std::endl; + return 0; + } // Print::printComment + + int Print::printPreviewList() + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + bool const manyFiles = Params::instance().files_.size() > 1; + int cnt = 0; + Exiv2::PreviewManager pm(*image); + Exiv2::PreviewPropertiesList list = pm.getPreviewProperties(); + for (Exiv2::PreviewPropertiesList::const_iterator pos = list.begin(); pos != list.end(); ++pos) { + if (manyFiles) { + std::cout << std::setfill(' ') << std::left << std::setw(20) + << path_ << " "; + } + std::cout << _("Preview") << " " << ++cnt << ": " + << pos->mimeType_ << ", "; + if (pos->width_ != 0 && pos->height_ != 0) { + std::cout << pos->width_ << "x" << pos->height_ << " " + << _("pixels") << ", "; + } + std::cout << pos->size_ << " " << _("bytes") << "\n"; + } + return 0; + } // Print::printPreviewList + + Print::AutoPtr Print::clone() const + { + return AutoPtr(clone_()); + } + + Print* Print::clone_() const + { + return new Print(*this); + } + + Rename::~Rename() + { + } + + int Rename::run(const std::string& path) + { + try { + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " << _("Failed to open the file\n"); + return -1; + } + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + if (exifData.empty()) { + std::cerr << path + << ": " << _("No Exif data found in the file\n"); + return -3; + } + Exiv2::ExifKey key("Exif.Photo.DateTimeOriginal"); + Exiv2::ExifData::iterator md = exifData.findKey(key); + if (md == exifData.end()) { + key = Exiv2::ExifKey("Exif.Image.DateTime"); + md = exifData.findKey(key); + } + if (md == exifData.end()) { + std::cerr << _("Neither tag") << " `Exif.Photo.DateTimeOriginal' " + << _("nor") << " `Exif.Image.DateTime' " + << _("found in the file") << " " << path << "\n"; + return 1; + } + std::string v = md->toString(); + if (v.length() == 0 || v[0] == ' ') { + std::cerr << _("Image file creation timestamp not set in the file") + << " " << path << "\n"; + return 1; + } + struct tm tm; + if (str2Tm(v, &tm) != 0) { + std::cerr << _("Failed to parse timestamp") << " `" << v + << "' " << _("in the file") << " " << path << "\n"; + return 1; + } + if ( Params::instance().timestamp_ + || Params::instance().timestampOnly_) { + ts.read(&tm); + } + int rc = 0; + std::string newPath = path; + if (Params::instance().timestampOnly_) { + if (Params::instance().verbose_) { + std::cout << _("Updating timestamp to") << " " << v << std::endl; + } + } + else { + rc = renameFile(newPath, &tm); + if (rc == -1) return 0; // skip + } + if ( 0 == rc + && ( Params::instance().preserve_ + || Params::instance().timestamp_ + || Params::instance().timestampOnly_)) { + ts.touch(newPath); + } + return rc; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in rename action for file " << path + << ":\n" << e << "\n"; + return 1; + }} // Rename::run + + Rename::AutoPtr Rename::clone() const + { + return AutoPtr(clone_()); + } + + Rename* Rename::clone_() const + { + return new Rename(*this); + } + + Erase::~Erase() + { + } + + int Erase::run(const std::string& path) + try { + path_ = path; + + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ + << ": " << _("Failed to open the file\n"); + return -1; + } + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + // Thumbnail must be before Exif + int rc = 0; + if (Params::instance().target_ & Params::ctThumb) { + rc = eraseThumbnail(image.get()); + } + if (0 == rc && Params::instance().target_ & Params::ctExif) { + rc = eraseExifData(image.get()); + } + if (0 == rc && Params::instance().target_ & Params::ctIptc) { + rc = eraseIptcData(image.get()); + } + if (0 == rc && Params::instance().target_ & Params::ctComment) { + rc = eraseComment(image.get()); + } + if (0 == rc && Params::instance().target_ & Params::ctXmp) { + rc = eraseXmpData(image.get()); + } + if (0 == rc) { + image->writeMetadata(); + } + if (Params::instance().preserve_) { + ts.touch(path); + } + + return rc; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in erase action for file " << path + << ":\n" << e << "\n"; + return 1; + } // Erase::run + + int Erase::eraseThumbnail(Exiv2::Image* image) const + { + Exiv2::ExifThumb exifThumb(image->exifData()); + std::string thumbExt = exifThumb.extension(); + if (thumbExt.empty()) { + return 0; + } + exifThumb.erase(); + if (Params::instance().verbose_) { + std::cout << _("Erasing thumbnail data") << std::endl; + } + return 0; + } + + int Erase::eraseExifData(Exiv2::Image* image) const + { + if (Params::instance().verbose_ && image->exifData().count() > 0) { + std::cout << _("Erasing Exif data from the file") << std::endl; + } + image->clearExifData(); + return 0; + } + + int Erase::eraseIptcData(Exiv2::Image* image) const + { + if (Params::instance().verbose_ && image->iptcData().count() > 0) { + std::cout << _("Erasing IPTC data from the file") << std::endl; + } + image->clearIptcData(); + return 0; + } + + int Erase::eraseComment(Exiv2::Image* image) const + { + if (Params::instance().verbose_ && image->comment().size() > 0) { + std::cout << _("Erasing JPEG comment from the file") << std::endl; + } + image->clearComment(); + return 0; + } + + int Erase::eraseXmpData(Exiv2::Image* image) const + { + if (Params::instance().verbose_ && image->xmpData().count() > 0) { + std::cout << _("Erasing XMP data from the file") << std::endl; + } + image->clearXmpData(); // Quick fix for bug #612 + image->clearXmpPacket(); + return 0; + } + + Erase::AutoPtr Erase::clone() const + { + return AutoPtr(clone_()); + } + + Erase* Erase::clone_() const + { + return new Erase(*this); + } + + Extract::~Extract() + { + } + + int Extract::run(const std::string& path) + try { + path_ = path; + int rc = 0; + if (Params::instance().target_ & Params::ctThumb) { + rc = writeThumbnail(); + } + if (Params::instance().target_ & Params::ctXmpSidecar) { + std::string xmpPath = newFilePath(path_, ".xmp"); + if (dontOverwrite(xmpPath)) return 0; + rc = metacopy(path_, xmpPath, Exiv2::ImageType::xmp, false); + } + if (Params::instance().target_ & Params::ctPreview) { + rc = writePreviews(); + } + if ( !(Params::instance().target_ & Params::ctXmpSidecar) + && !(Params::instance().target_ & Params::ctThumb) + && !(Params::instance().target_ & Params::ctPreview)) { + std::string exvPath = newFilePath(path_, ".exv"); + if (dontOverwrite(exvPath)) return 0; + rc = metacopy(path_, exvPath, Exiv2::ImageType::exv, false); + } + return rc; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in extract action for file " << path + << ":\n" << e << "\n"; + return 1; + } // Extract::run + + int Extract::writeThumbnail() const + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + if (exifData.empty()) { + std::cerr << path_ + << ": " << _("No Exif data found in the file\n"); + return -3; + } + int rc = 0; + Exiv2::ExifThumb exifThumb(exifData); + std::string thumbExt = exifThumb.extension(); + if (thumbExt.empty()) { + std::cerr << path_ << ": " << _("Image does not contain an Exif thumbnail\n"); + } + else { + std::string thumb = newFilePath(path_, "-thumb"); + std::string thumbPath = thumb + thumbExt; + if (dontOverwrite(thumbPath)) return 0; + if (Params::instance().verbose_) { + Exiv2::DataBuf buf = exifThumb.copy(); + if (buf.size_ != 0) { + std::cout << _("Writing thumbnail") << " (" << exifThumb.mimeType() << ", " + << buf.size_ << " " << _("Bytes") << ") " << _("to file") << " " + << thumbPath << std::endl; + } + } + rc = exifThumb.writeFile(thumb); + if (rc == 0) { + std::cerr << path_ << ": " << _("Exif data doesn't contain a thumbnail\n"); + } + } + return rc; + } // Extract::writeThumbnail + + int Extract::writePreviews() const + { + if (!Exiv2::fileExists(path_, true)) { + std::cerr << path_ + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path_); + assert(image.get() != 0); + image->readMetadata(); + + Exiv2::PreviewManager pvMgr(*image); + Exiv2::PreviewPropertiesList pvList = pvMgr.getPreviewProperties(); + + const Params::PreviewNumbers& numbers = Params::instance().previewNumbers_; + for (Params::PreviewNumbers::const_iterator n = numbers.begin(); n != numbers.end(); ++n) { + if (*n == 0) { + // Write all previews + for (int num = 0; num < static_cast(pvList.size()); ++num) { + writePreviewFile(pvMgr.getPreviewImage(pvList[num]), num + 1); + } + break; + } + if (*n > static_cast(pvList.size())) { + std::cerr << path_ << ": " << _("Image does not have preview") + << " " << *n << "\n"; + continue; + } + writePreviewFile(pvMgr.getPreviewImage(pvList[*n - 1]), *n); + } + return 0; + } // Extract::writePreviews + + void Extract::writePreviewFile(const Exiv2::PreviewImage& pvImg, int num) const + { + std::string pvFile = newFilePath(path_, "-preview") + Exiv2::toString(num); + std::string pvPath = pvFile + pvImg.extension(); + if (dontOverwrite(pvPath)) return; + if (Params::instance().verbose_) { + std::cout << _("Writing preview") << " " << num << " (" + << pvImg.mimeType() << ", "; + if (pvImg.width() != 0 && pvImg.height() != 0) { + std::cout << pvImg.width() << "x" << pvImg.height() << " " + << _("pixels") << ", "; + } + std::cout << pvImg.size() << " " << _("bytes") << ") " + << _("to file") << " " << pvPath << std::endl; + } + long rc = pvImg.writeFile(pvFile); + if (rc == 0) { + std::cerr << path_ << ": " << _("Image does not have preview") + << " " << num << "\n"; + } + } // Extract::writePreviewFile + + Extract::AutoPtr Extract::clone() const + { + return AutoPtr(clone_()); + } + + Extract* Extract::clone_() const + { + return new Extract(*this); + } + + Insert::~Insert() + { + } + + int Insert::run(const std::string& path) + try { + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " << _("Failed to open the file\n"); + return -1; + } + int rc = 0; + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + if (Params::instance().target_ & Params::ctThumb) { + rc = insertThumbnail(path); + } + if ( rc == 0 + && ( Params::instance().target_ & Params::ctExif + || Params::instance().target_ & Params::ctIptc + || Params::instance().target_ & Params::ctComment + || Params::instance().target_ & Params::ctXmp)) { + std::string suffix = Params::instance().suffix_; + if (suffix.empty()) suffix = ".exv"; + if (Params::instance().target_ & Params::ctXmpSidecar) suffix = ".xmp"; + std::string exvPath = newFilePath(path, suffix); + rc = metacopy(exvPath, path, Exiv2::ImageType::none, true); + } + if (0 == rc && Params::instance().target_ & Params::ctXmpSidecar) { + rc = insertXmpPacket(path); + } + if (Params::instance().preserve_) { + ts.touch(path); + } + return rc; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in insert action for file " << path + << ":\n" << e << "\n"; + return 1; + } // Insert::run + + int Insert::insertXmpPacket(const std::string& path) const + { + std::string xmpPath = newFilePath(path, ".xmp"); + if (!Exiv2::fileExists(xmpPath, true)) { + std::cerr << xmpPath + << ": " << _("Failed to open the file\n"); + return -1; + } + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::DataBuf buf = Exiv2::readFile(xmpPath); + std::string xmpPacket; + xmpPacket.assign(reinterpret_cast(buf.pData_), buf.size_); + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + image->setXmpPacket(xmpPacket); + image->writeMetadata(); + + return 0; + } + + int Insert::insertThumbnail(const std::string& path) const + { + std::string thumbPath = newFilePath(path, "-thumb.jpg"); + if (!Exiv2::fileExists(thumbPath, true)) { + std::cerr << thumbPath + << ": " << _("Failed to open the file\n"); + return -1; + } + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifThumb exifThumb(image->exifData()); + exifThumb.setJpegThumbnail(thumbPath); + image->writeMetadata(); + + return 0; + } // Insert::insertThumbnail + + Insert::AutoPtr Insert::clone() const + { + return AutoPtr(clone_()); + } + + Insert* Insert::clone_() const + { + return new Insert(*this); + } + + Modify::~Modify() + { + } + + int Modify::run(const std::string& path) + { + try { + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " << _("Failed to open the file\n"); + return -1; + } + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + + int rc = applyCommands(image.get()); + + // Save both exif and iptc metadata + image->writeMetadata(); + + if (Params::instance().preserve_) { + ts.touch(path); + } + return rc; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in modify action for file " << path + << ":\n" << e << "\n"; + return 1; + } + } // Modify::run + + int Modify::applyCommands(Exiv2::Image* pImage) + { + if (!Params::instance().jpegComment_.empty()) { + if (Params::instance().verbose_) { + std::cout << _("Setting JPEG comment") << " '" + << Params::instance().jpegComment_ + << "'" + << std::endl; + } + pImage->setComment(Params::instance().jpegComment_); + } + + // loop through command table and apply each command + ModifyCmds& modifyCmds = Params::instance().modifyCmds_; + ModifyCmds::const_iterator i = modifyCmds.begin(); + ModifyCmds::const_iterator end = modifyCmds.end(); + int rc = 0; + int ret = 0; + for (; i != end; ++i) { + switch (i->cmdId_) { + case add: + ret = addMetadatum(pImage, *i); + if (rc == 0) rc = ret; + break; + case set: + ret = setMetadatum(pImage, *i); + if (rc == 0) rc = ret; + break; + case del: + delMetadatum(pImage, *i); + break; + case reg: + regNamespace(*i); + break; + case invalidCmdId: + assert(invalidCmdId == i->cmdId_); + break; + } + } + return rc; + } // Modify::applyCommands + + int Modify::addMetadatum(Exiv2::Image* pImage, const ModifyCmd& modifyCmd) + { + if (Params::instance().verbose_) { + std::cout << _("Add") << " " << modifyCmd.key_ << " \"" + << modifyCmd.value_ << "\" (" + << Exiv2::TypeInfo::typeName(modifyCmd.typeId_) + << ")" << std::endl; + } + Exiv2::ExifData& exifData = pImage->exifData(); + Exiv2::IptcData& iptcData = pImage->iptcData(); + Exiv2::XmpData& xmpData = pImage->xmpData(); + Exiv2::Value::AutoPtr value = Exiv2::Value::create(modifyCmd.typeId_); + int rc = value->read(modifyCmd.value_); + if (0 == rc) { + if (modifyCmd.metadataId_ == exif) { + exifData.add(Exiv2::ExifKey(modifyCmd.key_), value.get()); + } + if (modifyCmd.metadataId_ == iptc) { + iptcData.add(Exiv2::IptcKey(modifyCmd.key_), value.get()); + } + if (modifyCmd.metadataId_ == xmp) { + xmpData.add(Exiv2::XmpKey(modifyCmd.key_), value.get()); + } + } + else { + std::cerr << _("Warning") << ": " << modifyCmd.key_ << ": " + << _("Failed to read") << " " + << Exiv2::TypeInfo::typeName(value->typeId()) + << " " << _("value") + << " \"" << modifyCmd.value_ << "\"\n"; + } + return rc; + } + + // This function looks rather complex because we try to avoid adding an + // empty metadatum if reading the value fails + int Modify::setMetadatum(Exiv2::Image* pImage, const ModifyCmd& modifyCmd) + { + if (Params::instance().verbose_) { + std::cout << _("Set") << " " << modifyCmd.key_ << " \"" + << modifyCmd.value_ << "\" (" + << Exiv2::TypeInfo::typeName(modifyCmd.typeId_) + << ")" << std::endl; + } + Exiv2::ExifData& exifData = pImage->exifData(); + Exiv2::IptcData& iptcData = pImage->iptcData(); + Exiv2::XmpData& xmpData = pImage->xmpData(); + Exiv2::Metadatum* metadatum = 0; + if (modifyCmd.metadataId_ == exif) { + Exiv2::ExifData::iterator pos = + exifData.findKey(Exiv2::ExifKey(modifyCmd.key_)); + if (pos != exifData.end()) { + metadatum = &(*pos); + } + } + if (modifyCmd.metadataId_ == iptc) { + Exiv2::IptcData::iterator pos = + iptcData.findKey(Exiv2::IptcKey(modifyCmd.key_)); + if (pos != iptcData.end()) { + metadatum = &(*pos); + } + } + if (modifyCmd.metadataId_ == xmp) { + Exiv2::XmpData::iterator pos = + xmpData.findKey(Exiv2::XmpKey(modifyCmd.key_)); + if (pos != xmpData.end()) { + metadatum = &(*pos); + } + } + // If a type was explicitly requested, use it; else + // use the current type of the metadatum, if any; + // or the default type + Exiv2::Value::AutoPtr value; + if (metadatum) { + value = metadatum->getValue(); + } + if ( value.get() == 0 + || ( modifyCmd.explicitType_ + && modifyCmd.typeId_ != value->typeId())) { + value = Exiv2::Value::create(modifyCmd.typeId_); + } + int rc = value->read(modifyCmd.value_); + if (0 == rc) { + if (metadatum) { + metadatum->setValue(value.get()); + } + else { + if (modifyCmd.metadataId_ == exif) { + exifData.add(Exiv2::ExifKey(modifyCmd.key_), value.get()); + } + if (modifyCmd.metadataId_ == iptc) { + iptcData.add(Exiv2::IptcKey(modifyCmd.key_), value.get()); + } + if (modifyCmd.metadataId_ == xmp) { + xmpData.add(Exiv2::XmpKey(modifyCmd.key_), value.get()); + } + } + } + else { + std::cerr << _("Warning") << ": " << modifyCmd.key_ << ": " + << _("Failed to read") << " " + << Exiv2::TypeInfo::typeName(value->typeId()) + << " " << _("value") + << " \"" << modifyCmd.value_ << "\"\n"; + } + return rc; + } + + void Modify::delMetadatum(Exiv2::Image* pImage, const ModifyCmd& modifyCmd) + { + if (Params::instance().verbose_) { + std::cout << _("Del") << " " << modifyCmd.key_ << std::endl; + } + + Exiv2::ExifData& exifData = pImage->exifData(); + Exiv2::IptcData& iptcData = pImage->iptcData(); + Exiv2::XmpData& xmpData = pImage->xmpData(); + if (modifyCmd.metadataId_ == exif) { + Exiv2::ExifData::iterator pos; + Exiv2::ExifKey exifKey = Exiv2::ExifKey(modifyCmd.key_); + while((pos = exifData.findKey(exifKey)) != exifData.end()) { + exifData.erase(pos); + } + } + if (modifyCmd.metadataId_ == iptc) { + Exiv2::IptcData::iterator pos; + Exiv2::IptcKey iptcKey = Exiv2::IptcKey(modifyCmd.key_); + while((pos = iptcData.findKey(iptcKey)) != iptcData.end()) { + iptcData.erase(pos); + } + } + if (modifyCmd.metadataId_ == xmp) { + Exiv2::XmpData::iterator pos; + Exiv2::XmpKey xmpKey = Exiv2::XmpKey(modifyCmd.key_); + while((pos = xmpData.findKey(xmpKey)) != xmpData.end()) { + xmpData.erase(pos); + } + } + } + + void Modify::regNamespace(const ModifyCmd& modifyCmd) + { + if (Params::instance().verbose_) { + std::cout << _("Reg ") << modifyCmd.key_ << "=\"" + << modifyCmd.value_ << "\"" << std::endl; + } + Exiv2::XmpProperties::registerNs(modifyCmd.value_, modifyCmd.key_); + } + + Modify::AutoPtr Modify::clone() const + { + return AutoPtr(clone_()); + } + + Modify* Modify::clone_() const + { + return new Modify(*this); + } + + Adjust::~Adjust() + { + } + + int Adjust::run(const std::string& path) + try { + adjustment_ = Params::instance().adjustment_; + yearAdjustment_ = Params::instance().yodAdjust_[Params::yodYear].adjustment_; + monthAdjustment_ = Params::instance().yodAdjust_[Params::yodMonth].adjustment_; + dayAdjustment_ = Params::instance().yodAdjust_[Params::yodDay].adjustment_; + + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " << _("Failed to open the file\n"); + return -1; + } + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + if (exifData.empty()) { + std::cerr << path + << ": " << _("No Exif data found in the file\n"); + return -3; + } + int rc = adjustDateTime(exifData, "Exif.Image.DateTime", path); + rc += adjustDateTime(exifData, "Exif.Photo.DateTimeOriginal", path); + rc += adjustDateTime(exifData, "Exif.Photo.DateTimeDigitized", path); + if (rc) return 1; + image->writeMetadata(); + if (Params::instance().preserve_) { + ts.touch(path); + } + return rc; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in adjust action for file " << path + << ":\n" << e << "\n"; + return 1; + } // Adjust::run + + Adjust::AutoPtr Adjust::clone() const + { + return AutoPtr(clone_()); + } + + Adjust* Adjust::clone_() const + { + return new Adjust(*this); + } + + int Adjust::adjustDateTime(Exiv2::ExifData& exifData, + const std::string& key, + const std::string& path) const + { + Exiv2::ExifKey ek(key); + Exiv2::ExifData::iterator md = exifData.findKey(ek); + if (md == exifData.end()) { + // Key not found. That's ok, we do nothing. + return 0; + } + std::string timeStr = md->toString(); + if (timeStr == "" || timeStr[0] == ' ') { + std::cerr << path << ": " << _("Timestamp of metadatum with key") << " `" + << ek << "' " << _("not set\n"); + return 1; + } + if (Params::instance().verbose_) { + bool comma = false; + std::cout << _("Adjusting") << " `" << ek << "' " << _("by"); + if (yearAdjustment_ != 0) { + std::cout << (yearAdjustment_ < 0 ? " " : " +") << yearAdjustment_ << " "; + if (yearAdjustment_ < -1 || yearAdjustment_ > 1) { + std::cout << _("years"); + } + else { + std::cout << _("year"); + } + comma = true; + } + if (monthAdjustment_ != 0) { + if (comma) std::cout << ","; + std::cout << (monthAdjustment_ < 0 ? " " : " +") << monthAdjustment_ << " "; + if (monthAdjustment_ < -1 || monthAdjustment_ > 1) { + std::cout << _("months"); + } + else { + std::cout << _("month"); + } + comma = true; + } + if (dayAdjustment_ != 0) { + if (comma) std::cout << ","; + std::cout << (dayAdjustment_ < 0 ? " " : " +") << dayAdjustment_ << " "; + if (dayAdjustment_ < -1 || dayAdjustment_ > 1) { + std::cout << _("days"); + } + else { + std::cout << _("day"); + } + comma = true; + } + if (adjustment_ != 0) { + if (comma) std::cout << ","; + std::cout << " " << adjustment_ << _("s"); + } + } + struct tm tm; + if (str2Tm(timeStr, &tm) != 0) { + if (Params::instance().verbose_) std::cout << std::endl; + std::cerr << path << ": " << _("Failed to parse timestamp") << " `" + << timeStr << "'\n"; + return 1; + } + const long monOverflow = (tm.tm_mon + monthAdjustment_) / 12; + tm.tm_mon = (tm.tm_mon + monthAdjustment_) % 12; + tm.tm_year += yearAdjustment_ + monOverflow; + // Let's not create files with non-4-digit years, we can't read them. + if (tm.tm_year > 9999 - 1900 || tm.tm_year < 1000 - 1900) { + if (Params::instance().verbose_) std::cout << std::endl; + std::cerr << path << ": " << _("Can't adjust timestamp by") << " " + << yearAdjustment_ + monOverflow + << " " << _("years") << "\n"; + return 1; + } + time_t time = mktime(&tm); + time += adjustment_ + dayAdjustment_ * 86400; + timeStr = time2Str(time); + if (Params::instance().verbose_) { + std::cout << " " << _("to") << " " << timeStr << std::endl; + } + md->setValue(timeStr); + return 0; + } // Adjust::adjustDateTime + + FixIso::~FixIso() + { + } + + int FixIso::run(const std::string& path) + { + try { + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " <<_("Failed to open the file\n"); + return -1; + } + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + if (exifData.empty()) { + std::cerr << path + << ": " << _("No Exif data found in the file\n"); + return -3; + } + Exiv2::ExifData::const_iterator md = Exiv2::isoSpeed(exifData); + if (md != exifData.end()) { + if (strcmp(md->key().c_str(), "Exif.Photo.ISOSpeedRatings") == 0) { + if (Params::instance().verbose_) { + std::cout << _("Standard Exif ISO tag exists; not modified\n"); + } + return 0; + } + // Copy the proprietary tag to the standard place + std::ostringstream os; + md->write(os, &exifData); + if (Params::instance().verbose_) { + std::cout << _("Setting Exif ISO value to") << " " << os.str() << "\n"; + } + exifData["Exif.Photo.ISOSpeedRatings"] = os.str(); + } + image->writeMetadata(); + if (Params::instance().preserve_) { + ts.touch(path); + } + return 0; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in fixiso action for file " << path + << ":\n" << e << "\n"; + return 1; + } + } // FixIso::run + + FixIso::AutoPtr FixIso::clone() const + { + return AutoPtr(clone_()); + } + + FixIso* FixIso::clone_() const + { + return new FixIso(*this); + } + + FixCom::~FixCom() + { + } + + int FixCom::run(const std::string& path) + { + try { + if (!Exiv2::fileExists(path, true)) { + std::cerr << path + << ": " <<_("Failed to open the file\n"); + return -1; + } + Timestamp ts; + if (Params::instance().preserve_) { + ts.read(path); + } + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); + assert(image.get() != 0); + image->readMetadata(); + Exiv2::ExifData& exifData = image->exifData(); + if (exifData.empty()) { + std::cerr << path + << ": " << _("No Exif data found in the file\n"); + return -3; + } + Exiv2::ExifData::iterator pos = exifData.findKey(Exiv2::ExifKey("Exif.Photo.UserComment")); + if (pos == exifData.end()) { + if (Params::instance().verbose_) { + std::cout << _("No Exif user comment found") << "\n"; + } + return 0; + } + Exiv2::Value::AutoPtr v = pos->getValue(); + const Exiv2::CommentValue* pcv = dynamic_cast(v.get()); + if (!pcv) { + if (Params::instance().verbose_) { + std::cout << _("Found Exif user comment with unexpected value type") << "\n"; + } + return 0; + } + Exiv2::CommentValue::CharsetId csId = pcv->charsetId(); + if (csId != Exiv2::CommentValue::unicode) { + if (Params::instance().verbose_) { + std::cout << _("No Exif UNICODE user comment found") << "\n"; + } + return 0; + } + std::string comment = pcv->comment(Params::instance().charset_.c_str()); + if (Params::instance().verbose_) { + std::cout << _("Setting Exif UNICODE user comment to") << " \"" << comment << "\"\n"; + } + comment = std::string("charset=\"") + Exiv2::CommentValue::CharsetInfo::name(csId) + "\" " + comment; + // Remove BOM and convert value from source charset to UCS-2, but keep byte order + pos->setValue(comment); + image->writeMetadata(); + if (Params::instance().preserve_) { + ts.touch(path); + } + return 0; + } + catch(const Exiv2::AnyError& e) + { + std::cerr << "Exiv2 exception in fixcom action for file " << path + << ":\n" << e << "\n"; + return 1; + } + } // FixCom::run + + FixCom::AutoPtr FixCom::clone() const + { + return AutoPtr(clone_()); + } + + FixCom* FixCom::clone_() const + { + return new FixCom(*this); + } + +} // namespace Action + +// ***************************************************************************** +// local definitions +namespace { + + //! @cond IGNORE + int Timestamp::read(const std::string& path) + { + struct stat buf; + int rc = stat(path.c_str(), &buf); + if (0 == rc) { + actime_ = buf.st_atime; + modtime_ = buf.st_mtime; + } + return rc; + } + + int Timestamp::read(struct tm* tm) + { + int rc = 1; + time_t t = mktime(tm); // interpret tm according to current timezone settings + if (t != (time_t)-1) { + rc = 0; + actime_ = t; + modtime_ = t; + } + return rc; + } + + int Timestamp::touch(const std::string& path) + { + if (0 == actime_) return 1; + struct utimbuf buf; + buf.actime = actime_; + buf.modtime = modtime_; + return utime(path.c_str(), &buf); + } + //! @endcond + + int str2Tm(const std::string& timeStr, struct tm* tm) + { + if (timeStr.length() == 0 || timeStr[0] == ' ') return 1; + if (timeStr.length() < 19) return 2; + if ( timeStr[4] != ':' || timeStr[7] != ':' || timeStr[10] != ' ' + || timeStr[13] != ':' || timeStr[16] != ':') return 3; + if (0 == tm) return 4; + std::memset(tm, 0x0, sizeof(struct tm)); + tm->tm_isdst = -1; + + long tmp; + if (!Util::strtol(timeStr.substr(0,4).c_str(), tmp)) return 5; + tm->tm_year = tmp - 1900; + if (!Util::strtol(timeStr.substr(5,2).c_str(), tmp)) return 6; + tm->tm_mon = tmp - 1; + if (!Util::strtol(timeStr.substr(8,2).c_str(), tmp)) return 7; + tm->tm_mday = tmp; + if (!Util::strtol(timeStr.substr(11,2).c_str(), tmp)) return 8; + tm->tm_hour = tmp; + if (!Util::strtol(timeStr.substr(14,2).c_str(), tmp)) return 9; + tm->tm_min = tmp; + if (!Util::strtol(timeStr.substr(17,2).c_str(), tmp)) return 10; + tm->tm_sec = tmp; + + // Conversions to set remaining fields of the tm structure + if (mktime(tm) == (time_t)-1) return 11; + + return 0; + } // str2Tm + + std::string time2Str(time_t time) + { + struct tm* tm = localtime(&time); + return tm2Str(tm); + } // time2Str + + std::string tm2Str(const struct tm* tm) + { + if (0 == tm) return ""; + + std::ostringstream os; + os << std::setfill('0') + << tm->tm_year + 1900 << ":" + << std::setw(2) << tm->tm_mon + 1 << ":" + << std::setw(2) << tm->tm_mday << " " + << std::setw(2) << tm->tm_hour << ":" + << std::setw(2) << tm->tm_min << ":" + << std::setw(2) << tm->tm_sec; + + return os.str(); + } // tm2Str + + int metacopy(const std::string& source, + const std::string& target, + int targetType, + bool preserve) + { + if (!Exiv2::fileExists(source, true)) { + std::cerr << source + << ": " << _("Failed to open the file\n"); + return -1; + } + Exiv2::Image::AutoPtr sourceImage = Exiv2::ImageFactory::open(source); + assert(sourceImage.get() != 0); + sourceImage->readMetadata(); + + // Apply any modification commands to the source image on-the-fly + Action::Modify::applyCommands(sourceImage.get()); + + Exiv2::Image::AutoPtr targetImage; + if (Exiv2::fileExists(target)) { + targetImage = Exiv2::ImageFactory::open(target); + assert(targetImage.get() != 0); + if (preserve) targetImage->readMetadata(); + } + else { + targetImage = Exiv2::ImageFactory::create(targetType, target); + assert(targetImage.get() != 0); + } + if ( Params::instance().target_ & Params::ctExif + && !sourceImage->exifData().empty()) { + if (Params::instance().verbose_) { + std::cout << _("Writing Exif data from") << " " << source + << " " << _("to") << " " << target << std::endl; + } + targetImage->setExifData(sourceImage->exifData()); + } + if ( Params::instance().target_ & Params::ctIptc + && !sourceImage->iptcData().empty()) { + if (Params::instance().verbose_) { + std::cout << _("Writing IPTC data from") << " " << source + << " " << _("to") << " " << target << std::endl; + } + targetImage->setIptcData(sourceImage->iptcData()); + } + if ( Params::instance().target_ & Params::ctXmp + && !sourceImage->xmpData().empty()) { + if (Params::instance().verbose_) { + std::cout << _("Writing XMP data from") << " " << source + << " " << _("to") << " " << target << std::endl; + } + // Todo: Should use XMP packet if there are no XMP modification commands + targetImage->setXmpData(sourceImage->xmpData()); + } + if ( Params::instance().target_ & Params::ctComment + && !sourceImage->comment().empty()) { + if (Params::instance().verbose_) { + std::cout << _("Writing JPEG comment from") << " " << source + << " " << _("to") << " " << target << std::endl; + } + targetImage->setComment(sourceImage->comment()); + } + try { + targetImage->writeMetadata(); + } + catch (const Exiv2::AnyError& e) { + std::cerr << target << + ": " << _("Could not write metadata to file") << ": " << e << "\n"; + return 1; + } + + return 0; + } // metacopy + + // Defined outside of the function so that Exiv2::find() can see it + struct String { + const char* s_; + bool operator==(const char* s) const { + return 0 == strcmp(s_, s); + } + }; + + int renameFile(std::string& newPath, const struct tm* tm) + { + std::string path = newPath; + std::string format = Params::instance().format_; + Util::replace(format, ":basename:", Util::basename(path, true)); + Util::replace(format, ":dirname:", Util::basename(Util::dirname(path))); + Util::replace(format, ":parentname:", Util::basename(Util::dirname(Util::dirname(path)))); + + const size_t max = 1024; + char basename[max]; + std::memset(basename, 0x0, max); + if (strftime(basename, max, format.c_str(), tm) == 0) { + std::cerr << _("Filename format yields empty filename for the file") << " " + << path << "\n"; + return 1; + } + newPath = Util::dirname(path) + EXV_SEPARATOR_STR + + basename + Util::suffix(path); + if ( Util::dirname(newPath) == Util::dirname(path) + && Util::basename(newPath) == Util::basename(path)) { + if (Params::instance().verbose_) { + std::cout << _("This file already has the correct name") << std::endl; + } + return -1; + } + + bool go = true; + int seq = 1; + std::string s; + Params::FileExistsPolicy fileExistsPolicy + = Params::instance().fileExistsPolicy_; + while (go) { + if (Exiv2::fileExists(newPath)) { + switch (fileExistsPolicy) { + case Params::overwritePolicy: + go = false; + break; + case Params::renamePolicy: + newPath = Util::dirname(path) + + EXV_SEPARATOR_STR + basename + + "_" + Exiv2::toString(seq++) + + Util::suffix(path); + break; + case Params::askPolicy: + std::cout << Params::instance().progname() + << ": " << _("File") << " `" << newPath + << "' " << _("exists. [O]verwrite, [r]ename or [s]kip?") + << " "; + std::cin >> s; + switch (s[0]) { + case 'o': + case 'O': + go = false; + break; + case 'r': + case 'R': + fileExistsPolicy = Params::renamePolicy; + newPath = Util::dirname(path) + + EXV_SEPARATOR_STR + basename + + "_" + Exiv2::toString(seq++) + + Util::suffix(path); + break; + default: // skip + return -1; + break; + } + } + } + else { + go = false; + } + } + + if (Params::instance().verbose_) { + std::cout << _("Renaming file to") << " " << newPath; + if (Params::instance().timestamp_) { + std::cout << ", " << _("updating timestamp"); + } + std::cout << std::endl; + } + + // Workaround for MinGW rename which does not overwrite existing files + remove(newPath.c_str()); + if (std::rename(path.c_str(), newPath.c_str()) == -1) { + std::cerr << Params::instance().progname() + << ": " << _("Failed to rename") << " " + << path << " " << _("to") << " " << newPath << ": " + << Exiv2::strError() << "\n"; + return 1; + } + + return 0; + } // renameFile + + std::string newFilePath(const std::string& path, const std::string& ext) + { + std::string directory = Params::instance().directory_; + if (directory.empty()) directory = Util::dirname(path); + std::string newPath = directory + EXV_SEPARATOR_STR + + Util::basename(path, true) + ext; + return newPath; + } + + int dontOverwrite(const std::string& path) + { + if (!Params::instance().force_ && Exiv2::fileExists(path)) { + std::cout << Params::instance().progname() + << ": " << _("Overwrite") << " `" << path << "'? "; + std::string s; + std::cin >> s; + if (s[0] != 'y' && s[0] != 'Y') return 1; + } + return 0; + } + + std::ostream& operator<<( std::ostream& os, std::pair strAndWidth) + { + const std::string& str( strAndWidth.first); + size_t minChCount( strAndWidth.second); + size_t count = mbstowcs( NULL, str.c_str(), 0); // returns 0xFFFFFFFF on error + if( count < minChCount) + { + minChCount += str.size() - count; + } + return os << std::setw( minChCount) << str; + } + +} diff --git a/vendor/exiv2-0.25/src/actions.hpp b/vendor/exiv2-0.25/src/actions.hpp new file mode 100644 index 0000000..747d31e --- /dev/null +++ b/vendor/exiv2-0.25/src/actions.hpp @@ -0,0 +1,417 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file actions.hpp + @brief Implements base class Task, TaskFactory and the various supported + actions (derived from Task). + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 11-Dec-03, ahu: created + */ +#ifndef ACTIONS_HPP_ +#define ACTIONS_HPP_ + +// ***************************************************************************** +// included header files + +// + standard includes +#include +#include + +#include "exiv2app.hpp" +#include "image.hpp" +#include "exif.hpp" +#include "iptc.hpp" + +// ***************************************************************************** +// class declarations + +namespace Exiv2 { + class ExifData; + class Image; + class Metadatum; + class PreviewImage; +} + +// ***************************************************************************** +// namespace extensions +/*! + @brief Contains all action classes (task subclasses). + */ +namespace Action { + + //! Enumerates all tasks + enum TaskType { none, adjust, print, rename, erase, extract, insert, + modify, fixiso, fixcom }; + +// ***************************************************************************** +// class definitions + + /*! + @brief Abstract base class for all concrete actions. + + Task provides a simple interface that actions must implement and a few + commonly used helpers. + */ + class Task { + public: + //! Shortcut for an auto pointer. + typedef std::auto_ptr AutoPtr; + //! Virtual destructor. + virtual ~Task(); + //! Virtual copy construction. + AutoPtr clone() const; + /*! + @brief Application interface to perform a task. + + @param path Path of the file to process. + @return 0 if successful. + */ + virtual int run(const std::string& path) =0; + + private: + //! Internal virtual copy constructor. + virtual Task* clone_() const =0; + + }; // class Task + + /*! + @brief Task factory. + + Creates an instance of the task of the requested type. The factory is + implemented as a singleton, which can be accessed only through the static + member function instance(). + */ + class TaskFactory { + public: + /*! + @brief Get access to the task factory. + + Clients access the task factory exclusively through + this method. + */ + static TaskFactory& instance(); + //! Destructor + void cleanup(); + + /*! + @brief Create a task. + + @param type Identifies the type of task to create. + @return An auto pointer that owns a task of the requested type. If + the task type is not supported, the pointer is 0. + @remark The caller of the function should check the content of the + returned auto pointer and take appropriate action (e.g., throw + an exception) if it is 0. + */ + Task::AutoPtr create(TaskType type); + + /*! + @brief Register a task prototype together with its type. + + The task factory creates new tasks of a given type by cloning its + associated prototype. Additional tasks can be registered. If called + for a type which already exists in the list, the corresponding + prototype is replaced. + + @param type Task type. + @param task Pointer to the prototype. Ownership is transferred to the + task factory. That's what the auto pointer indicates. + */ + void registerTask(TaskType type, Task::AutoPtr task); + + private: + //! Prevent construction other than through instance(). + TaskFactory(); + //! Prevent copy construction: not implemented. + TaskFactory(const TaskFactory& rhs); + + //! Pointer to the one and only instance of this class. + static TaskFactory* instance_; + //! Type used to store Task prototype classes + typedef std::map Registry; + //! List of task types and corresponding prototypes. + Registry registry_; + + }; // class TaskFactory + + //! %Print the Exif (or other metadata) of a file to stdout + class Print : public Task { + public: + virtual ~Print(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + //! Print the Jpeg comment + int printComment(); + //! Print list of available preview images + int printPreviewList(); + //! Print Exif summary information + int printSummary(); + //! Print Exif, IPTC and XMP metadata in user defined format + int printList(); + //! Return true if key should be printed, else false + bool grepTag(const std::string& key); + //! Return true if key should be printed, else false + bool keyTag(const std::string& key); + //! Print all metadata in a user defined format + int printMetadata(const Exiv2::Image* image); + //! Print a metadatum in a user defined format + void printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* image); + //! Print the label for a summary line + void printLabel(const std::string& label) const; + //! Print image Structure information + int printStructure(std::ostream& out, Exiv2::PrintStructureOption option); + /*! + @brief Print one summary line with a label (if provided) and requested + data. A line break is printed only if a label is provided. + @return 1 if a line was written, 0 if the key was not found. + */ + int printTag(const Exiv2::ExifData& exifData, + const std::string& key, + const std::string& label ="") const; + //! Type for an Exiv2 Easy access function + typedef Exiv2::ExifData::const_iterator (*EasyAccessFct)(const Exiv2::ExifData& ed); + /*! + @brief Print one summary line with a label (if provided) and requested + data. A line break is printed only if a label is provided. + @return 1 if a line was written, 0 if the information was not found. + */ + int printTag(const Exiv2::ExifData& exifData, + EasyAccessFct easyAccessFct, + const std::string& label) const; + + private: + virtual Print* clone_() const; + + std::string path_; + int align_; // for the alignment of the summary output + }; // class Print + + /*! + @brief %Rename a file to its metadate creation timestamp, + in the specified format. + */ + class Rename : public Task { + public: + virtual ~Rename(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + private: + virtual Rename* clone_() const; + }; // class Rename + + //! %Adjust the Exif (or other metadata) timestamps + class Adjust : public Task { + public: + virtual ~Adjust(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + private: + virtual Adjust* clone_() const; + int adjustDateTime(Exiv2::ExifData& exifData, + const std::string& key, + const std::string& path) const; + + long adjustment_; + long yearAdjustment_; + long monthAdjustment_; + long dayAdjustment_; + + }; // class Adjust + + /*! + @brief %Erase the entire exif data or only the thumbnail section. + */ + class Erase : public Task { + public: + virtual ~Erase(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + /*! + @brief Delete the thumbnail image, incl IFD1 metadata from the file. + */ + int eraseThumbnail(Exiv2::Image* image) const; + /*! + @brief Erase the complete Exif data block from the file. + */ + int eraseExifData(Exiv2::Image* image) const; + /*! + @brief Erase all Iptc data from the file. + */ + int eraseIptcData(Exiv2::Image* image) const; + /*! + @brief Erase Jpeg comment from the file. + */ + int eraseComment(Exiv2::Image* image) const; + /*! + @brief Erase XMP packet from the file. + */ + int eraseXmpData(Exiv2::Image* image) const; + + private: + virtual Erase* clone_() const; + std::string path_; + + }; // class Erase + + /*! + @brief %Extract the entire exif data or only the thumbnail section. + */ + class Extract : public Task { + public: + virtual ~Extract(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + /*! + @brief Write the thumbnail image to a file. The filename is composed by + removing the suffix from the image filename and appending + "-thumb" and the appropriate suffix (".jpg" or ".tif"), depending + on the format of the Exif thumbnail image. + */ + int writeThumbnail() const; + /*! + @brief Write preview images to files. + */ + int writePreviews() const; + /*! + @brief Write one preview image to a file. The filename is composed by + removing the suffix from the image filename and appending + "-preview" and the appropriate suffix (".jpg" or ".tif"), + depending on the format of the Exif thumbnail image. + */ + void writePreviewFile(const Exiv2::PreviewImage& pvImg, int num) const; + + private: + virtual Extract* clone_() const; + std::string path_; + + }; // class Extract + + /*! + @brief %Insert the Exif data from corresponding *.exv files. + */ + class Insert : public Task { + public: + virtual ~Insert(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + /*! + @brief Insert a Jpeg thumbnail image from a file into file \em path. + The filename of the thumbnail is expected to be the image + filename (\em path) minus its suffix plus "-thumb.jpg". + */ + int insertThumbnail(const std::string& path) const; + /*! + @brief Insert an XMP packet from a file into file \em path. + The filename of the XMP packet is expected to be the image + filename (\em path) minus its suffix plus ".xmp". + */ + int insertXmpPacket(const std::string& path) const; + + private: + virtual Insert* clone_() const; + + }; // class Insert + + /*! + @brief %Modify the Exif data according to the commands in the + modification table. + */ + class Modify : public Task { + public: + virtual ~Modify(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + Modify() {} + //! Apply modification commands to the \em pImage, return 0 if successful. + static int applyCommands(Exiv2::Image* pImage); + + private: + virtual Modify* clone_() const; + //! Copy constructor needed because of AutoPtr member + Modify(const Modify& /*src*/) : Task() {} + + //! Add a metadatum to \em pImage according to \em modifyCmd + static int addMetadatum(Exiv2::Image* pImage, + const ModifyCmd& modifyCmd); + //! Set a metadatum in \em pImage according to \em modifyCmd + static int setMetadatum(Exiv2::Image* pImage, + const ModifyCmd& modifyCmd); + //! Delete a metadatum from \em pImage according to \em modifyCmd + static void delMetadatum(Exiv2::Image* pImage, + const ModifyCmd& modifyCmd); + //! Register an XMP namespace according to \em modifyCmd + static void regNamespace(const ModifyCmd& modifyCmd); + + }; // class Modify + + /*! + @brief %Copy ISO settings from any of the Nikon makernotes to the + regular Exif tag, Exif.Photo.ISOSpeedRatings. + */ + class FixIso : public Task { + public: + virtual ~FixIso(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + private: + virtual FixIso* clone_() const; + std::string path_; + + }; // class FixIso + + /*! + @brief Fix the character encoding of Exif UNICODE user comments. + Decodes the comment using the auto-detected or specified + character encoding and writes it back in UCS-2. + */ + class FixCom : public Task { + public: + virtual ~FixCom(); + virtual int run(const std::string& path); + typedef std::auto_ptr AutoPtr; + AutoPtr clone() const; + + private: + virtual FixCom* clone_() const; + std::string path_; + + }; // class FixCom + +} // namespace Action + +#endif // #ifndef ACTIONS_HPP_ diff --git a/vendor/exiv2-0.25/src/asfvideo.cpp b/vendor/exiv2-0.25/src/asfvideo.cpp new file mode 100644 index 0000000..4896b4c --- /dev/null +++ b/vendor/exiv2-0.25/src/asfvideo.cpp @@ -0,0 +1,821 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: asfvideo.cpp + Version: $Rev: 3845 $ + Author(s): Abhinav Badola for GSoC 2012 (AB) + History: 08-Aug-12, AB: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: asfvideo.cpp 3845 2015-06-07 16:29:06Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "config.h" + +#ifdef EXV_ENABLE_VIDEO +#include "asfvideo.hpp" +#include "futils.hpp" +#include "basicio.hpp" +#include "tags.hpp" +#include "tags_int.hpp" +#include "types.hpp" +#include "riffvideo.hpp" +#include "convert.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + /*! + Tag Look-up list for ASF Type Video Files + Associates the GUID of a Tag with its Tag Name(i.e. Human Readable Form) + Tags have been diferentiated into Various Categories. + The categories have been listed above the Tag Groups + + */ + extern const TagVocabulary GUIDReferenceTags[] = { + /// Top-level ASF object GUIDS + { "75B22630-668E-11CF-A6D9-00AA0062CE6C", "Header" }, + { "75B22636-668E-11CF-A6D9-00AA0062CE6C", "Data" }, + { "33000890-E5B1-11CF-89F4-00A0C90349CB", "Simple_Index" }, + { "D6E229D3-35DA-11D1-9034-00A0C90349BE", "Index" }, + { "FEB103F8-12AD-4C64-840F-2A1D2F7AD48C", "Media_Index" }, + { "3CB73FD0-0C4A-4803-953D-EDF7B6228F0C", "Timecode_Index" }, + + /// Header Object GUIDs + { "8CABDCA1-A947-11CF-8EE4-00C00C205365", "File_Properties" }, + { "B7DC0791-A9B7-11CF-8EE6-00C00C205365", "Stream_Properties" }, + { "5FBF03B5-A92E-11CF-8EE3-00C00C205365", "Header_Extension" }, + { "86D15240-311D-11D0-A3A4-00A0C90348F6", "Codec_List" }, + { "1EFB1A30-0B62-11D0-A39B-00A0C90348F6", "Script_Command" }, + { "F487CD01-A951-11CF-8EE6-00C00C205365", "Marker" }, + { "D6E229DC-35DA-11D1-9034-00A0C90349BE", "Bitrate_Mutual_Exclusion" }, + { "75B22635-668E-11CF-A6D9-00AA0062CE6C", "Error_Correction" }, + { "75B22633-668E-11CF-A6D9-00AA0062CE6C", "Content_Description" }, + { "D2D0A440-E307-11D2-97F0-00A0C95EA850", "Extended_Content_Description" }, + { "2211B3FA-BD23-11D2-B4B7-00A0C955FC6E", "Content_Branding" }, + { "7BF875CE-468D-11D1-8D82-006097C9A2B2", "Stream_Bitrate_Properties" }, + { "2211B3FB-BD23-11D2-B4B7-00A0C955FC6E", "Content_Encryption" }, + { "298AE614-2622-4C17-B935-DAE07EE9289C", "Extended_Content_Encryption" }, + { "2211B3FC-BD23-11D2-B4B7-00A0C955FC6E", "Digital_Signature" }, + { "1806D474-CADF-4509-A4BA-9AABCB96AAE8", "Padding" }, + + /// Header Extension Object GUIDs + { "14E6A5CB-C672-4332-8399-A96952065B5A", "Extended_Stream_Properties" }, + { "A08649CF-4775-4670-8A16-6E35357566CD", "Advanced_Mutual_Exclusion" }, + { "D1465A40-5A79-4338-B71B-E36B8FD6C249", "Group_Mutual_Exclusion" }, + { "D4FED15B-88D3-454F-81F0-ED5C45999E24", "Stream_Prioritization" }, + { "A69609E6-517B-11D2-B6AF-00C04FD908E9", "Bandwidth_Sharing" }, + { "7C4346A9-EFE0-4BFC-B229-393EDE415C85", "Language_List" }, + { "C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA", "Metadata" }, + { "44231C94-9498-49D1-A141-1D134E457054", "Metadata_Library" }, + { "D6E229DF-35DA-11D1-9034-00A0C90349BE", "Index_Parameters" }, + { "6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7", "Media_Index_Parameters" }, + { "F55E496D-9797-4B5D-8C8B-604DFE9BFB24", "Timecode_Index_Parameters" }, + { "26F18B5D-4584-47EC-9F5F-0E651F0452C9", "Compatibility" }, + { "43058533-6981-49E6-9B74-AD12CB86D58C", "Advanced_Content_Encryption" }, + + /// Stream Properties Object Stream Type GUIDs + { "F8699E40-5B4D-11CF-A8FD-00805F5C442B", "Audio_Media" }, + { "BC19EFC0-5B4D-11CF-A8FD-00805F5C442B", "Video_Media" }, + { "59DACFC0-59E6-11D0-A3AC-00A0C90348F6", "Command_Media" }, + { "B61BE100-5B4E-11CF-A8FD-00805F5C442B", "JFIF_Media" }, + { "35907DE0-E415-11CF-A917-00805F5C442B", "Degradable_JPEG_Media" }, + { "91BD222C-F21C-497A-8B6D-5AA86BFC0185", "File_Transfer_Media" }, + { "3AFB65E2-47EF-40F2-AC2C-70A90D71D343", "Binary_Media" }, + + /// Web stream Type-Specific Data GUIDs + { "776257D4-C627-41CB-8F81-7AC7FF1C40CC", "Web_Stream_Media_Subtype" }, + { "DA1E6B13-8359-4050-B398-388E965BF00C", "Web_Stream_Format" }, + + /// Stream Properties Object Error Correction Type GUIDs + { "20FB5700-5B55-11CF-A8FD-00805F5C442B", "No_Error_Correction" }, + { "BFC3CD50-618F-11CF-8BB2-00AA00B4E220", "Audio_Spread" }, + + /// Header Extension Object GUIDs + { "ABD3D211-A9BA-11cf-8EE6-00C00C205365", "Reserved_1" }, + + /// Advanced Content Encryption Object System ID GUIDs + { "7A079BB6-DAA4-4e12-A5CA-91D38DC11A8D", "Content_Encryption_System_Windows_Media_DRM_Network_Devices" }, + + /// Codec List Object GUIDs + { "86D15241-311D-11D0-A3A4-00A0C90348F6", "Reserved_2" }, + + /// Script Command Object GUIDs + { "4B1ACBE3-100B-11D0-A39B-00A0C90348F6", "Reserved_3" }, + + /// Marker Object GUIDs + { "4CFEDB20-75F6-11CF-9C0F-00A0C90349CB", "Reserved_4" }, + + /// Mutual Exclusion Object Exclusion Type GUIDs + { "D6E22A00-35DA-11D1-9034-00A0C90349BE", "Mutex_Language" }, + { "D6E22A01-35DA-11D1-9034-00A0C90349BE", "Mutex_Bitrate" }, + { "D6E22A02-35DA-11D1-9034-00A0C90349BE", "Mutex_Unknown" }, + + /// Bandwidth Sharing Object GUIDs + { "AF6060AA-5197-11D2-B6AF-00C04FD908E9", "Bandwidth_Sharing_Exclusive" }, + { "AF6060AB-5197-11D2-B6AF-00C04FD908E9", "Bandwidth_Sharing_Partial" }, + + /// Standard Payload Extension System GUIDs + { "399595EC-8667-4E2D-8FDB-98814CE76C1E", "Payload_Extension_System_Timecode" }, + { "E165EC0E-19ED-45D7-B4A7-25CBD1E28E9B", "Payload_Extension_System_File_Name" }, + { "D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC", "Payload_Extension_System_Content_Type" }, + { "1B1EE554-F9EA-4BC8-821A-376B74E4C4B8", "Payload_Extension_System_Pixel_Aspect_Ratio" }, + { "C6BD9450-867F-4907-83A3-C77921B733AD", "Payload_Extension_System_Sample_Duration" }, + { "6698B84E-0AFA-4330-AEB2-1C0A98D7A44D", "Payload_Extension_System_Encryption_Sample_ID" }, + { "00E1AF06-7BEC-11D1-A582-00C04FC29CFB", "Payload_Extension_System_Degradable_JPEG" } + }; + + //! Audio codec type-specific data in ASF + extern const TagDetails audioCodec[] = { + { 0x161, "Windows Media Audio (7, 8, and 9 Series)" }, + { 0x162, "Windows Media Audio 9 Professional" }, + { 0x163, "Windows Media Audio 9 Lossless" }, + { 0x7A21, "GSM-AMR (CBR, no SID)" }, + { 0x7A22, "GSM-AMR (VBR including SID)" } + }; + + extern const TagDetails filePropertiesTags[] = { + { 7, "Xmp.video.FileLength" }, + { 6, "Xmp.video.CreationDate" }, + { 5, "Xmp.video.DataPackets" }, + { 4, "Xmp.video.Duration" }, + { 3, "Xmp.video.SendDuration" }, + { 2, "Xmp.video.Preroll" }, + { 1, "Xmp.video.MaxBitRate" } + }; + + extern const TagDetails contentDescriptionTags[] = { + { 0, "Xmp.video.Title" }, + { 1, "Xmp.video.Author" }, + { 2, "Xmp.video.Copyright" }, + { 3, "Xmp.video.Description" }, + { 4, "Xmp.video.Rating" } + }; + + /*! + @brief Function used to read data from data buffer, reads 16-bit character + array and stores it in std::string object. + @param buf Exiv2 data buffer, which stores the information + @return Returns std::string object . + */ + std::string toString16(Exiv2::DataBuf& buf) + { + std::ostringstream os; char t; + + for(int i = 0; i <= buf.size_; i += 2 ) { + t = buf.pData_[i] + 16 * buf.pData_[i + 1]; + if(t == 0) { + if(i) + os << '\0'; + break; + } + os<< t; + } + return os.str(); + } + + /*! + @brief Function used to check equality of two Tags (ignores case). + @param str1 char* Pointer to First Tag + @param str2 char* Pointer to Second Tag + @return Returns true if both are equal. + */ + bool compareTag(const char* str1, const char* str2) { + if ( strlen(str1) != strlen(str2)) + return false; + + for ( uint64_t i = 0 ; i < strlen(str1); ++i ) + if (tolower(str1[i]) != tolower(str2[i])) + return false; + + return true; + } + + /*! + @brief Function used to convert a decimal number to its Hexadecimal + equivalent, then parsed into a character + @param n Integer which is to be parsed as Hexadecimal character + @return Return a Hexadecimal number, in character + */ + char returnHEX(int n) { + if(n >= 0 && n <= 9) + return (char)(n + 48); + else + return (char)(n + 55); + } + + /*! + @brief Function used to calulate GUID, Tags comprises of 16 bytes. + The Buffer contains the Tag in Binary Form. The information is then + parsed into a character array GUID. + */ + void getGUID (byte buf[], char GUID[]) { + int i; + for (i = 0; i < 4; ++i) { + GUID[(3 - i) * 2] = returnHEX(buf[i] / 0x10); + GUID[(3 - i) * 2 + 1] = returnHEX(buf[i] % 0x10); + } + for (i = 4; i < 6; ++i) { + GUID[(9 - i) * 2 + 1] = returnHEX(buf[i] / 0x10); + GUID[(9 - i) * 2 + 2] = returnHEX(buf[i] % 0x10); + } + for (i = 6; i < 8; ++i) { + GUID[(14 - i) * 2] = returnHEX(buf[i] / 0x10); + GUID[(14 - i) * 2 + 1] = returnHEX(buf[i] % 0x10); + } + for (i = 8; i < 10; ++i) { + GUID[ i * 2 + 3] = returnHEX(buf[i] / 0x10); + GUID[ i * 2 + 4] = returnHEX(buf[i] % 0x10); + } + for (i = 10; i < 16; ++i) { + GUID[ i * 2 + 4] = returnHEX(buf[i] / 0x10); + GUID[ i * 2 + 5] = returnHEX(buf[i] % 0x10); + } + GUID[36] = '\0'; GUID[8] = GUID[13] = GUID[18] = GUID[23] = '-'; + } + + /*! + @brief Function used to check if data stored in buf is equivalent to + ASF Header Tag's GUID. + @param buf Exiv2 byte buffer + @return Returns true if the buffer data is equivalent to Header GUID. + */ + bool isASFType (byte buf[]) { + + if(buf[0] == 0x30 && buf[1] == 0x26 && buf[2] == 0xb2 && buf[3] == 0x75 && + buf[4] == 0x8e && buf[5] == 0x66 && buf[6] == 0xcf && buf[7] == 0x11 && + buf[8] == 0xa6 && buf[9] == 0xd9 && buf[10] == 0x00 && buf[11] == 0xaa && + buf[12] == 0x00 && buf[13] == 0x62 && buf[14] == 0xce && buf[15] == 0x6c ) + return true; + + return false; + } + + //! Function used to convert buffer data into 64-bit Integer, information stored in littleEndian format + uint64_t getUint64_t(Exiv2::DataBuf& buf) { + uint64_t temp = 0; + + for(int i = 0; i < 8; ++i){ + temp = temp + static_cast(buf.pData_[i]*(pow(static_cast(256), i))); + } + return temp; + } + +}} // namespace Internal, Exiv2 + +namespace Exiv2 { + + using namespace Exiv2::Internal; + + AsfVideo::AsfVideo(BasicIo::AutoPtr io) + : Image(ImageType::asf, mdNone, io) + { + } // AsfVideo::AsfVideo + + std::string AsfVideo::mimeType() const + { + return "video/asf"; + } + + void AsfVideo::writeMetadata() + { + } + + void AsfVideo::readMetadata() + { + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + + // Ensure that this is the correct image type + if (!isAsfType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "ASF"); + } + + IoCloser closer(*io_); + clearMetadata(); + continueTraversing_ = true; + io_->seek(0, BasicIo::beg); + height_ = width_ = 1; + + xmpData_["Xmp.video.FileSize"] = (double)io_->size()/(double)1048576; + xmpData_["Xmp.video.FileName"] = io_->path(); + xmpData_["Xmp.video.MimeType"] = mimeType(); + + while (continueTraversing_) decodeBlock(); + + aspectRatio(); + } // AsfVideo::readMetadata + + void AsfVideo::decodeBlock() + { + const long bufMinSize = 9; + DataBuf buf(bufMinSize); + unsigned long size = 0; + buf.pData_[8] = '\0' ; + const TagVocabulary* tv; + uint64_t cur_pos = io_->tell(); + + byte guidBuf[16]; + io_->read(guidBuf, 16); + + if(io_->eof()) { + continueTraversing_ = false; + return; + } + + char GUID[37] = ""; //the getGUID function write the GUID[36], + + getGUID(guidBuf, GUID); + tv = find( GUIDReferenceTags, GUID); + + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 8); + size = static_cast(getUint64_t(buf)); + + if(tv) { + tagDecoder(tv,size-24); + } + else + io_->seek(cur_pos + size, BasicIo::beg); + + localPosition_ = io_->tell(); + } // AsfVideo::decodeBlock + + void AsfVideo::tagDecoder(const TagVocabulary *tv, uint64_t size) + { + uint64_t cur_pos = io_->tell(); + DataBuf buf(1000); + unsigned long count = 0, tempLength = 0; + buf.pData_[4] = '\0' ; + Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpSeq); + + if(compareTag( exvGettext(tv->label_), "Header")) { + localPosition_ = 0; + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 2); + + while(localPosition_ < cur_pos + size) decodeBlock(); + } + + else if(compareTag( exvGettext(tv->label_), "File_Properties")) + fileProperties(); + + else if(compareTag( exvGettext(tv->label_), "Stream_Properties")) + streamProperties(); + + else if(compareTag( exvGettext(tv->label_), "Metadata")) + metadataHandler(1); + + else if(compareTag( exvGettext(tv->label_), "Extended_Content_Description")) + metadataHandler(2); + + else if(compareTag( exvGettext(tv->label_), "Metadata_Library")) + metadataHandler(3); + + else if(compareTag( exvGettext(tv->label_), "Codec_List")) + codecList(); + + else if(compareTag( exvGettext(tv->label_), "Content_Description")) + contentDescription(size); + + else if(compareTag( exvGettext(tv->label_), "Extended_Stream_Properties")) + extendedStreamProperties(size); + + else if(compareTag( exvGettext(tv->label_), "Header_Extension")) { + localPosition_ = 0; + headerExtension(size); + } + + else if(compareTag( exvGettext(tv->label_), "Language_List")) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + count = Exiv2::getUShort(buf.pData_, littleEndian); + + while(count--) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 1); tempLength = (int)buf.pData_[0]; + + io_->read(buf.pData_, tempLength); + v->read(toString16(buf)); + } + xmpData_.add(Exiv2::XmpKey("Xmp.video.TrackLang"), v.get()); + } + + io_->seek(cur_pos + size, BasicIo::beg); + localPosition_ = io_->tell(); + } // AsfVideo::tagDecoder + + void AsfVideo::extendedStreamProperties(uint64_t size) + { + uint64_t cur_pos = io_->tell(), avgTimePerFrame = 0; + DataBuf buf(8); + static int previousStream; + io_->seek(cur_pos + 48, BasicIo::beg); + + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + streamNumber_ = Exiv2::getUShort(buf.pData_, littleEndian); + + io_->read(buf.pData_, 2); + io_->read(buf.pData_, 8); + avgTimePerFrame = getUint64_t(buf); + + if(previousStream < streamNumber_ && avgTimePerFrame != 0) + xmpData_["Xmp.video.FrameRate"] = (double)10000000/(double)avgTimePerFrame; + + previousStream = streamNumber_; + io_->seek(cur_pos + size, BasicIo::beg); + } // AsfVideo::extendedStreamProperties + + void AsfVideo::contentDescription(uint64_t size) + { + const long pos = io_->tell(); + if (pos == -1) throw Error(14); + long length[5]; + for (int i = 0 ; i < 5 ; ++i) { + byte buf[2]; + io_->read(buf, 2); + if (io_->error() || io_->eof()) throw Error(14); + length[i] = getUShort(buf, littleEndian); + } + for (int i = 0 ; i < 5 ; ++i) { + DataBuf buf(length[i]); + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, length[i]); + if (io_->error() || io_->eof()) throw Error(14); + const TagDetails* td = find(contentDescriptionTags, i); + assert(td); + std::string str((const char*)buf.pData_, length[i]); + if (convertStringCharset(str, "UCS-2LE", "UTF-8")) { + xmpData_[td->label_] = str; + } + else { + xmpData_[td->label_] = toString16(buf); + } + } + if (io_->seek(pos + size, BasicIo::beg)) throw Error(14); + } // AsfVideo::contentDescription + + void AsfVideo::streamProperties() + { + DataBuf buf(20); + buf.pData_[8] = '\0' ; + byte guidBuf[16]; int stream = 0; + io_->read(guidBuf, 16); + char streamType[37] = ""; + Exiv2::RiffVideo *test = NULL; + + getGUID(guidBuf, streamType); + const TagVocabulary* tv; + tv = find( GUIDReferenceTags, streamType); + io_->read(guidBuf, 16); + + if(compareTag( exvGettext(tv->label_), "Audio_Media")) + stream = 1; + else if(compareTag( exvGettext(tv->label_), "Video_Media")) + stream = 2; + + io_->read(buf.pData_, 8); + if(stream == 2) + xmpData_["Xmp.video.TimeOffset"] = getUint64_t(buf); + else if(stream == 1) + xmpData_["Xmp.audio.TimeOffset"] = getUint64_t(buf); + + io_->read(buf.pData_, 8); + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 1); + streamNumber_ = (int)buf.pData_[0] & 127; + + io_->read(buf.pData_, 5); + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + long temp = Exiv2::getUShort(buf.pData_, littleEndian); + + if(stream == 2) { + xmpData_["Xmp.video.Width"] = temp; + width_ = temp; + } + else if(stream == 1) { + xmpData_["Xmp.audio.Codec"] = test->printAudioEncoding(temp); + } + + io_->read(buf.pData_, 2); + temp = Exiv2::getUShort(buf.pData_, littleEndian); + if(stream == 1) + xmpData_["Xmp.audio.ChannelType"] = temp; + + io_->read(buf.pData_, 4); + temp = Exiv2::getULong(buf.pData_, littleEndian); + + if(stream == 2) { + xmpData_["Xmp.video.Height"] = temp; + height_ = temp; + } + else if(stream == 1) { + xmpData_["Xmp.audio.SampleRate"] = temp; + } + } // AsfVideo::streamProperties + + void AsfVideo::codecList() + { + DataBuf buf(200); + io_->read(buf.pData_, 16); + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 4); + int codecCount = Exiv2::getULong(buf.pData_, littleEndian), descLength = 0, codecType = 0; + + while(codecCount--) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + codecType = Exiv2::getUShort(buf.pData_, littleEndian); + + io_->read(buf.pData_, 2); + descLength = Exiv2::getUShort(buf.pData_, littleEndian) * 2; + + if (descLength < 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Description found in this ASF file is not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + } + else { + io_->read(buf.pData_, descLength); + if(codecType == 1) + xmpData_["Xmp.video.Codec"] = toString16(buf); + else if(codecType == 2) + xmpData_["Xmp.audio.Compressor"] = toString16(buf); + } + + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + descLength = Exiv2::getUShort(buf.pData_, littleEndian) * 2; + + if (descLength < 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Description found in this ASF file is not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + } + else { + io_->read(buf.pData_, descLength); + + if(codecType == 1) + xmpData_["Xmp.video.CodecDescription"] = toString16(buf); + else if(codecType == 2) + xmpData_["Xmp.audio.CodecDescription"] = toString16(buf); + } + + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + descLength = Exiv2::getUShort(buf.pData_, littleEndian); + + if (descLength < 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Description found in this ASF file is not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + } + else { + io_->read(buf.pData_, descLength); + } + } + } // AsfVideo::codecList + + void AsfVideo::headerExtension(uint64_t size) + { + uint64_t cur_pos = io_->tell(); + DataBuf buf(20); + io_->read(buf.pData_, 18); + buf.pData_[4] = '\0' ; + io_->read(buf.pData_, 4); + + while(localPosition_ < cur_pos + size) decodeBlock(); + + io_->seek(cur_pos + size, BasicIo::beg); + } // AsfVideo::headerExtension + + void AsfVideo::metadataHandler(int meta) + { + DataBuf buf(5000); + io_->read(buf.pData_, 2); + int recordCount = Exiv2::getUShort(buf.pData_, littleEndian), nameLength = 0, dataLength = 0, dataType = 0; + Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpSeq); + byte guidBuf[16]; char fileID[37] = ""; + + while(recordCount--) { + std::memset(buf.pData_, 0x0, buf.size_); + + if(meta == 1 || meta == 3) { + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 2); + nameLength = Exiv2::getUShort(buf.pData_, littleEndian); + io_->read(buf.pData_, 2); + dataType = Exiv2::getUShort(buf.pData_, littleEndian); + io_->read(buf.pData_, 4); + dataLength = Exiv2::getULong(buf.pData_, littleEndian); + + if (nameLength > 5000) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video.Metadata nameLength was found to be larger than 5000 " + << " entries considered invalid; not read.\n"; +#endif + io_->seek(io_->tell() + nameLength, BasicIo::beg); + } + else + io_->read(buf.pData_, nameLength); + + v->read(toString16(buf)); + if(dataType == 6) { + io_->read(guidBuf, 16); + getGUID(guidBuf, fileID); + } + else + // Sanity check with an "unreasonably" large number + if (dataLength > 5000) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video.Metadata dataLength was found to be larger than 5000 " + << " entries considered invalid; not read.\n"; +#endif + io_->seek(io_->tell() + dataLength, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength); + } + + else if(meta == 2) { + io_->read(buf.pData_, 2); + nameLength = Exiv2::getUShort(buf.pData_, littleEndian); + + if (nameLength > 5000) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video.Metadata nameLength was found to be larger than 5000 " + << " entries considered invalid; not read.\n"; +#endif + io_->seek(io_->tell() + nameLength, BasicIo::beg); + } + else + io_->read(buf.pData_, nameLength); + + v->read(toString16(buf)); + + io_->read(buf.pData_, 2); + dataType = Exiv2::getUShort(buf.pData_, littleEndian); + + io_->read(buf.pData_, 2); + dataLength = Exiv2::getUShort(buf.pData_, littleEndian); + + // Sanity check with an "unreasonably" large number + if (dataLength > 5000) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video.Metadata dataLength was found to be larger than 5000 " + << " entries considered invalid; not read.\n"; +#endif + io_->seek(io_->tell() + dataLength, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength); + } + + if(dataType == 0) { // Unicode String + v->read(toString16(buf)); + } + else if(dataType == 2 || dataType == 5) { // 16-bit Unsigned Integer + v->read( Exiv2::toString( Exiv2::getUShort(buf.pData_, littleEndian))); + } + else if(dataType == 3) { // 32-bit Unsigned Integer + v->read( Exiv2::toString( Exiv2::getULong( buf.pData_, littleEndian))); + } + else if(dataType == 4) { // 64-bit Unsigned Integer + v->read(Exiv2::toString(getUint64_t(buf))); + } + else if(dataType == 6) { // 128-bit GUID + v->read(Exiv2::toString(fileID)); + } + else { // Byte array + v->read( Exiv2::toString(buf.pData_)); + } + } + + if(meta == 1) { + xmpData_.add(Exiv2::XmpKey("Xmp.video.Metadata"), v.get()); + } + else if(meta == 2) { + xmpData_.add(Exiv2::XmpKey("Xmp.video.ExtendedContentDescription"), v.get()); + } + else { + xmpData_.add(Exiv2::XmpKey("Xmp.video.MetadataLibrary"), v.get()); + } + } // AsfVideo::metadataHandler + + void AsfVideo::fileProperties() + { + DataBuf buf(9); + buf.pData_[8] = '\0' ; + + byte guidBuf[16]; + io_->read(guidBuf, 16); + char fileID[37] = ""; int count = 7; + getGUID(guidBuf, fileID); + xmpData_["Xmp.video.FileID"] = fileID; + + const TagDetails* td; + + while(count--) { + td = find(filePropertiesTags , (count + 1)); + io_->read(buf.pData_, 8); + + if(count == 0) { + buf.pData_[4] = '\0' ; + io_->read(buf.pData_, 4); io_->read(buf.pData_, 4); + } + + if(count == 3 || count == 2) { + xmpData_[exvGettext(td->label_)] = getUint64_t(buf) / 10000; + } + else { + xmpData_[exvGettext(td->label_)] = getUint64_t(buf); + } + } + } // AsfVideo::fileProperties + + void AsfVideo::aspectRatio() + { + //TODO - Make a better unified method to handle all cases of Aspect Ratio + + double aspectRatio = (double)width_ / (double)height_; + aspectRatio = floor(aspectRatio*10) / 10; + xmpData_["Xmp.video.AspectRatio"] = aspectRatio; + + int aR = (int) ((aspectRatio*10.0)+0.1); + + switch (aR) { + case 13 : xmpData_["Xmp.video.AspectRatio"] = "4:3" ; break; + case 17 : xmpData_["Xmp.video.AspectRatio"] = "16:9" ; break; + case 10 : xmpData_["Xmp.video.AspectRatio"] = "1:1" ; break; + case 16 : xmpData_["Xmp.video.AspectRatio"] = "16:10" ; break; + case 22 : xmpData_["Xmp.video.AspectRatio"] = "2.21:1" ; break; + case 23 : xmpData_["Xmp.video.AspectRatio"] = "2.35:1" ; break; + case 12 : xmpData_["Xmp.video.AspectRatio"] = "5:4" ; break; + default : xmpData_["Xmp.video.AspectRatio"] = aspectRatio;break; + } + } // AsfVideo::aspectRatio + + + Image::AutoPtr newAsfInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new AsfVideo(io)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isAsfType(BasicIo& iIo, bool advance) + { + const int32_t len = 16; + byte buf[len]; + iIo.read(buf, len); + + if (iIo.error() || iIo.eof()) { + return false; + } + + bool matched = isASFType(buf); + if (!advance || !matched) { + iIo.seek(0, BasicIo::beg); + } + + return matched; + } + +} // namespace Exiv2 +#endif // EXV_ENABLE_VIDEO diff --git a/vendor/exiv2-0.25/src/basicio.cpp b/vendor/exiv2-0.25/src/basicio.cpp new file mode 100644 index 0000000..558e786 --- /dev/null +++ b/vendor/exiv2-0.25/src/basicio.cpp @@ -0,0 +1,2675 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: basicio.cpp + Version: $Rev: 3868 $ + Author(s): Brad Schick (brad) + History: 04-Dec-04, brad: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: basicio.cpp 3868 2015-06-21 14:21:21Z ahuggel $") + +// included header files +#include "config.h" + +#include "basicio.hpp" +#include "futils.hpp" +#include "types.hpp" +#include "error.hpp" +#include "http.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include // for remove, rename +#include // for alloc, realloc, free +#include // for stat, chmod +#include // for stat, chmod +#ifdef EXV_HAVE_SYS_MMAN_H +# include // for mmap and munmap +#endif +#ifdef EXV_HAVE_PROCESS_H +# include +#endif +#ifdef EXV_HAVE_UNISTD_H +# include // for getpid, stat +#endif +#if EXV_USE_CURL == 1 +#include +#endif +#if EXV_USE_SSH == 1 +#include "ssh.hpp" +#else +#define mode_t unsigned short +#endif + +// Platform specific headers for handling extended attributes (xattr) +#if defined(__APPLE__) +# include +#endif + +#if defined WIN32 && !defined __CYGWIN__ +// Windows doesn't provide nlink_t +typedef short nlink_t; + +# include +# include +#endif + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + BasicIo::~BasicIo() + { + } + + //! Internal Pimpl structure of class FileIo. + class FileIo::Impl { + public: + //! Constructor + Impl(const std::string& path); +#ifdef EXV_UNICODE_PATH + //! Constructor accepting a unicode path in an std::wstring + Impl(const std::wstring& wpath); +#endif + // Enumerations + //! Mode of operation + enum OpMode { opRead, opWrite, opSeek }; +#ifdef EXV_UNICODE_PATH + //! Used to indicate if the path is stored as a standard or unicode string + enum WpMode { wpStandard, wpUnicode }; +#endif + // DATA + std::string path_; //!< (Standard) path +#ifdef EXV_UNICODE_PATH + std::wstring wpath_; //!< Unicode path + WpMode wpMode_; //!< Indicates which path is in use +#endif + std::string openMode_; //!< File open mode + FILE *fp_; //!< File stream pointer + OpMode opMode_; //!< File open mode + +#if defined WIN32 && !defined __CYGWIN__ + HANDLE hFile_; //!< Duplicated fd + HANDLE hMap_; //!< Handle from CreateFileMapping +#endif + byte* pMappedArea_; //!< Pointer to the memory-mapped area + size_t mappedLength_; //!< Size of the memory-mapped area + bool isMalloced_; //!< Is the mapped area allocated? + bool isWriteable_; //!< Can the mapped area be written to? + // TYPES + //! Simple struct stat wrapper for internal use + struct StructStat { + StructStat() : st_mode(0), st_size(0), st_nlink(0) {} + mode_t st_mode; //!< Permissions + off_t st_size; //!< Size + nlink_t st_nlink; //!< Number of hard links (broken on Windows, see winNumberOfLinks()) + }; +// #endif + // METHODS + /*! + @brief Switch to a new access mode, reopening the file if needed. + Optimized to only reopen the file when it is really necessary. + @param opMode The mode to switch to. + @return 0 if successful + */ + int switchMode(OpMode opMode); + //! stat wrapper for internal use + int stat(StructStat& buf) const; + //! copy extended attributes (xattr) from another file + void copyXattrFrom(const FileIo& src); +#if defined WIN32 && !defined __CYGWIN__ + // Windows function to determine the number of hardlinks (on NTFS) + DWORD winNumberOfLinks() const; +#endif + + private: + // NOT IMPLEMENTED + Impl(const Impl& rhs); //!< Copy constructor + Impl& operator=(const Impl& rhs); //!< Assignment + + }; // class FileIo::Impl + + FileIo::Impl::Impl(const std::string& path) + : path_(path), +#ifdef EXV_UNICODE_PATH + wpMode_(wpStandard), +#endif + fp_(0), opMode_(opSeek), +#if defined WIN32 && !defined __CYGWIN__ + hFile_(0), hMap_(0), +#endif + pMappedArea_(0), mappedLength_(0), isMalloced_(false), isWriteable_(false) + { + } + +#ifdef EXV_UNICODE_PATH + FileIo::Impl::Impl(const std::wstring& wpath) + : wpath_(wpath), + wpMode_(wpUnicode), + fp_(0), opMode_(opSeek), +#if defined WIN32 && !defined __CYGWIN__ + hFile_(0), hMap_(0), +#endif + pMappedArea_(0), mappedLength_(0), isMalloced_(false), isWriteable_(false) + { + } + +#endif + int FileIo::Impl::switchMode(OpMode opMode) + { + assert(fp_ != 0); + if (opMode_ == opMode) return 0; + OpMode oldOpMode = opMode_; + opMode_ = opMode; + + bool reopen = true; + switch(opMode) { + case opRead: + // Flush if current mode allows reading, else reopen (in mode "r+b" + // as in this case we know that we can write to the file) + if (openMode_[0] == 'r' || openMode_[1] == '+') reopen = false; + break; + case opWrite: + // Flush if current mode allows writing, else reopen + if (openMode_[0] != 'r' || openMode_[1] == '+') reopen = false; + break; + case opSeek: + reopen = false; + break; + } + + if (!reopen) { + // Don't do anything when switching _from_ opSeek mode; we + // flush when switching _to_ opSeek. + if (oldOpMode == opSeek) return 0; + + // Flush. On msvcrt fflush does not do the job + std::fseek(fp_, 0, SEEK_CUR); + return 0; + } + + // Reopen the file + long offset = std::ftell(fp_); + if (offset == -1) return -1; + // 'Manual' open("r+b") to avoid munmap() + if (fp_ != 0) { + std::fclose(fp_); + fp_= 0; + } + openMode_ = "r+b"; + opMode_ = opSeek; +#ifdef EXV_UNICODE_PATH + if (wpMode_ == wpUnicode) { + fp_ = ::_wfopen(wpath_.c_str(), s2ws(openMode_).c_str()); + } + else +#endif + { + fp_ = std::fopen(path_.c_str(), openMode_.c_str()); + } + if (!fp_) return 1; + return std::fseek(fp_, offset, SEEK_SET); + } // FileIo::Impl::switchMode + + int FileIo::Impl::stat(StructStat& buf) const + { + int ret = 0; +#ifdef EXV_UNICODE_PATH + if (wpMode_ == wpUnicode) { + struct _stat st; + ret = ::_wstat(wpath_.c_str(), &st); + if (0 == ret) { + buf.st_size = st.st_size; + buf.st_mode = st.st_mode; + buf.st_nlink = st.st_nlink; + } + } + else +#endif + { + struct stat st; + ret = ::stat(path_.c_str(), &st); + if (0 == ret) { + buf.st_size = st.st_size; + buf.st_nlink = st.st_nlink; + buf.st_mode = st.st_mode; + } + } + return ret; + } // FileIo::Impl::stat + +#if defined(__APPLE__) + void FileIo::Impl::copyXattrFrom(const FileIo& src) +#else + void FileIo::Impl::copyXattrFrom(const FileIo&) +#endif + { +#if defined(__APPLE__) +# if defined(EXV_UNICODE_PATH) +# error No xattr API for MacOS X with unicode support +# endif + const ssize_t namebufSize = ::listxattr(src.p_->path_.c_str(), 0, 0, 0); + if (namebufSize < 0) { + throw Error(2, src.p_->path_, strError(), "listxattr"); + } + if (namebufSize == 0) { + // No extended attributes in source file + return; + } + char namebuf[namebufSize]; + if (::listxattr(src.p_->path_.c_str(), namebuf, sizeof(namebuf), 0) != namebufSize) { + throw Error(2, src.p_->path_, strError(), "listxattr"); + } + for (ssize_t namebufPos = 0; namebufPos < namebufSize;) { + const char *name = namebuf + namebufPos; + namebufPos += strlen(name) + 1; + const ssize_t valueSize = ::getxattr(src.p_->path_.c_str(), name, 0, 0, 0, 0); + if (valueSize < 0) { + throw Error(2, src.p_->path_, strError(), "getxattr"); + } + char value[valueSize]; + if (::getxattr(src.p_->path_.c_str(), name, value, sizeof(value), 0, 0) != valueSize) { + throw Error(2, src.p_->path_, strError(), "getxattr"); + } +// #906. Mountain Lion 'sandbox' terminates the app when we call setxattr +#ifndef __APPLE__ +#ifdef DEBUG + EXV_DEBUG << "Copying xattr \"" << name << "\" with value size " << valueSize << "\n"; +#endif + if (::setxattr(path_.c_str(), name, value, valueSize, 0, 0) != 0) { + throw Error(2, path_, strError(), "setxattr"); + } +#endif + } +#else + // No xattr support for this platform. +#endif + } // FileIo::Impl::copyXattrFrom + +#if defined WIN32 && !defined __CYGWIN__ + DWORD FileIo::Impl::winNumberOfLinks() const + { + DWORD nlink = 1; + + HANDLE hFd = (HANDLE)_get_osfhandle(fileno(fp_)); + if (hFd != INVALID_HANDLE_VALUE) { + typedef BOOL (WINAPI * GetFileInformationByHandle_t)(HANDLE, LPBY_HANDLE_FILE_INFORMATION); + HMODULE hKernel = LoadLibraryA("kernel32.dll"); + if (hKernel) { + GetFileInformationByHandle_t pfcn_GetFileInformationByHandle = (GetFileInformationByHandle_t)GetProcAddress(hKernel, "GetFileInformationByHandle"); + if (pfcn_GetFileInformationByHandle) { + BY_HANDLE_FILE_INFORMATION fi = {0}; + if (pfcn_GetFileInformationByHandle(hFd, &fi)) { + nlink = fi.nNumberOfLinks; + } +#ifdef DEBUG + else EXV_DEBUG << "GetFileInformationByHandle failed\n"; +#endif + } +#ifdef DEBUG + else EXV_DEBUG << "GetProcAddress(hKernel, \"GetFileInformationByHandle\") failed\n"; +#endif + FreeLibrary(hKernel); + } +#ifdef DEBUG + else EXV_DEBUG << "LoadLibraryA(\"kernel32.dll\") failed\n"; +#endif + } +#ifdef DEBUG + else EXV_DEBUG << "_get_osfhandle failed: INVALID_HANDLE_VALUE\n"; +#endif + + return nlink; + } // FileIo::Impl::winNumberOfLinks + +#endif // defined WIN32 && !defined __CYGWIN__ + + FileIo::FileIo(const std::string& path) + : p_(new Impl(path)) + { + } + +#ifdef EXV_UNICODE_PATH + FileIo::FileIo(const std::wstring& wpath) + : p_(new Impl(wpath)) + { + } + +#endif + FileIo::~FileIo() + { + close(); + delete p_; + } + + int FileIo::munmap() + { + int rc = 0; + if (p_->pMappedArea_ != 0) { +#if defined EXV_HAVE_MMAP && defined EXV_HAVE_MUNMAP + if (::munmap(p_->pMappedArea_, p_->mappedLength_) != 0) { + rc = 1; + } +#elif defined WIN32 && !defined __CYGWIN__ + UnmapViewOfFile(p_->pMappedArea_); + CloseHandle(p_->hMap_); + p_->hMap_ = 0; + CloseHandle(p_->hFile_); + p_->hFile_ = 0; +#else + if (p_->isWriteable_) { + seek(0, BasicIo::beg); + write(p_->pMappedArea_, p_->mappedLength_); + } + if (p_->isMalloced_) { + delete[] p_->pMappedArea_; + p_->isMalloced_ = false; + } +#endif + } + if (p_->isWriteable_) { + if (p_->fp_ != 0) p_->switchMode(Impl::opRead); + p_->isWriteable_ = false; + } + p_->pMappedArea_ = 0; + p_->mappedLength_ = 0; + return rc; + } + + byte* FileIo::mmap(bool isWriteable) + { + assert(p_->fp_ != 0); + if (munmap() != 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), strError().c_str(), "munmap"); + } + else +#endif + { + throw Error(2, path(), strError(), "munmap"); + } + } + p_->mappedLength_ = size(); + p_->isWriteable_ = isWriteable; + if (p_->isWriteable_ && p_->switchMode(Impl::opWrite) != 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(16, wpath(), strError().c_str()); + } + else +#endif + { + throw Error(16, path(), strError()); + } + } +#if defined EXV_HAVE_MMAP && defined EXV_HAVE_MUNMAP + int prot = PROT_READ; + if (p_->isWriteable_) { + prot |= PROT_WRITE; + } + void* rc = ::mmap(0, p_->mappedLength_, prot, MAP_SHARED, fileno(p_->fp_), 0); + if (MAP_FAILED == rc) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), strError().c_str(), "mmap"); + } + else +#endif + { + throw Error(2, path(), strError(), "mmap"); + } + } + p_->pMappedArea_ = static_cast(rc); + +#elif defined WIN32 && !defined __CYGWIN__ + // Windows implementation + + // TODO: An attempt to map a file with a length of 0 (zero) fails with + // an error code of ERROR_FILE_INVALID. + // Applications should test for files with a length of 0 (zero) and + // reject those files. + + DWORD dwAccess = FILE_MAP_READ; + DWORD flProtect = PAGE_READONLY; + if (isWriteable) { + dwAccess = FILE_MAP_WRITE; + flProtect = PAGE_READWRITE; + } + HANDLE hPh = GetCurrentProcess(); + HANDLE hFd = (HANDLE)_get_osfhandle(fileno(p_->fp_)); + if (hFd == INVALID_HANDLE_VALUE) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), "MSG1", "_get_osfhandle"); + } + else +#endif + { + throw Error(2, path(), "MSG1", "_get_osfhandle"); + } + } + if (!DuplicateHandle(hPh, hFd, hPh, &p_->hFile_, 0, false, DUPLICATE_SAME_ACCESS)) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), "MSG2", "DuplicateHandle"); + } + else +#endif + { + throw Error(2, path(), "MSG2", "DuplicateHandle"); + } + } + p_->hMap_ = CreateFileMapping(p_->hFile_, 0, flProtect, 0, (DWORD) p_->mappedLength_, 0); + if (p_->hMap_ == 0 ) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), "MSG3", "CreateFileMapping"); + } + else +#endif + { + throw Error(2, path(), "MSG3", "CreateFileMapping"); + } + } + void* rc = MapViewOfFile(p_->hMap_, dwAccess, 0, 0, 0); + if (rc == 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), "MSG4", "CreateFileMapping"); + } + else +#endif + { + throw Error(2, path(), "MSG4", "CreateFileMapping"); + } + } + p_->pMappedArea_ = static_cast(rc); +#else + // Workaround for platforms without mmap: Read the file into memory + DataBuf buf(static_cast(p_->mappedLength_)); + if (read(buf.pData_, buf.size_) != buf.size_) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), strError().c_str(), "FileIo::read"); + } + else +#endif + { + throw Error(2, path(), strError(), "FileIo::read"); + } + } + if (error() || eof()) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(2, wpath(), strError().c_str(), "FileIo::mmap"); + } + else +#endif + { + throw Error(2, path(), strError(), "FileIo::mmap"); + } + } + p_->pMappedArea_ = buf.release().first; + p_->isMalloced_ = true; +#endif + return p_->pMappedArea_; + } + + void FileIo::setPath(const std::string& path) { + close(); +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + std::wstring wpath; + wpath.assign(path.begin(), path.end()); + p_->wpath_ = wpath; + } + p_->path_ = path; +#else + p_->path_ = path; +#endif + } + +#ifdef EXV_UNICODE_PATH + void FileIo::setPath(const std::wstring& wpath) { + close(); + if (p_->wpMode_ == Impl::wpStandard) { + std::string path; + path.assign(wpath.begin(), wpath.end()); + p_->path_ = path; + } else { + p_->wpath_ = wpath; + } + } +#endif + + BasicIo::AutoPtr FileIo::temporary() const + { + BasicIo::AutoPtr basicIo; + + Impl::StructStat buf; + int ret = p_->stat(buf); +#if defined WIN32 && !defined __CYGWIN__ + DWORD nlink = p_->winNumberOfLinks(); +#else + nlink_t nlink = buf.st_nlink; +#endif + + // If file is > 1MB and doesn't have hard links then use a file, otherwise + // use a memory buffer. I.e., files with hard links always use a memory + // buffer, which is a workaround to ensure that the links don't get broken. + if (ret != 0 || (buf.st_size > 1048576 && nlink == 1)) { + pid_t pid = ::getpid(); + std::auto_ptr fileIo; +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + std::wstring tmpname = wpath() + s2ws(toString(pid)); + fileIo = std::auto_ptr(new FileIo(tmpname)); + } + else +#endif + { + std::string tmpname = path() + toString(pid); + fileIo = std::auto_ptr(new FileIo(tmpname)); + } + if (fileIo->open("w+b") != 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(10, wpath(), "w+b", strError().c_str()); + } + else +#endif + { + throw Error(10, path(), "w+b", strError()); + } + } + fileIo->p_->copyXattrFrom(*this); + basicIo = fileIo; + } + else { + basicIo.reset(new MemIo); + } + + return basicIo; + } + + long FileIo::write(const byte* data, long wcount) + { + assert(p_->fp_ != 0); + if (p_->switchMode(Impl::opWrite) != 0) return 0; + return (long)std::fwrite(data, 1, wcount, p_->fp_); + } + + long FileIo::write(BasicIo& src) + { + assert(p_->fp_ != 0); + if (static_cast(this) == &src) return 0; + if (!src.isopen()) return 0; + if (p_->switchMode(Impl::opWrite) != 0) return 0; + + byte buf[4096]; + long readCount = 0; + long writeCount = 0; + long writeTotal = 0; + while ((readCount = src.read(buf, sizeof(buf)))) { + writeTotal += writeCount = (long)std::fwrite(buf, 1, readCount, p_->fp_); + if (writeCount != readCount) { + // try to reset back to where write stopped + src.seek(writeCount-readCount, BasicIo::cur); + break; + } + } + + return writeTotal; + } + + void FileIo::transfer(BasicIo& src) + { + const bool wasOpen = (p_->fp_ != 0); + const std::string lastMode(p_->openMode_); + + FileIo *fileIo = dynamic_cast(&src); + if (fileIo) { + // Optimization if src is another instance of FileIo + fileIo->close(); + // Check if the file can be written to, if it already exists + if (open("a+b") != 0) { + // Remove the (temporary) file +#ifdef EXV_UNICODE_PATH + if (fileIo->p_->wpMode_ == Impl::wpUnicode) { + ::_wremove(fileIo->wpath().c_str()); + } + else +#endif + { + ::remove(fileIo->path().c_str()); + } +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(10, wpath(), "a+b", strError().c_str()); + } + else +#endif + { + throw Error(10, path(), "a+b", strError()); + } + } + close(); + + bool statOk = true; + mode_t origStMode = 0; + std::string spf; + char* pf = 0; +#ifdef EXV_UNICODE_PATH + std::wstring wspf; + wchar_t* wpf = 0; + if (p_->wpMode_ == Impl::wpUnicode) { + wspf = wpath(); + wpf = const_cast(wspf.c_str()); + } + else +#endif + { + spf = path(); + pf = const_cast(spf.c_str()); + } + + // Get the permissions of the file, or linked-to file, on platforms which have lstat +#ifdef EXV_HAVE_LSTAT + +# ifdef EXV_UNICODE_PATH +# error EXV_UNICODE_PATH and EXV_HAVE_LSTAT are not compatible. Stop. +# endif + struct stat buf1; + if (::lstat(pf, &buf1) == -1) { + statOk = false; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(2, pf, strError(), "::lstat") << "\n"; +#endif + } + origStMode = buf1.st_mode; + DataBuf lbuf; // So that the allocated memory is freed. Must have same scope as pf + // In case path() is a symlink, get the path of the linked-to file + if (statOk && S_ISLNK(buf1.st_mode)) { + lbuf.alloc(buf1.st_size + 1); + memset(lbuf.pData_, 0x0, lbuf.size_); + pf = reinterpret_cast(lbuf.pData_); + if (::readlink(path().c_str(), pf, lbuf.size_ - 1) == -1) { + throw Error(2, path(), strError(), "readlink"); + } + // We need the permissions of the file, not the symlink + if (::stat(pf, &buf1) == -1) { + statOk = false; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(2, pf, strError(), "::stat") << "\n"; +#endif + } + origStMode = buf1.st_mode; + } +#else // EXV_HAVE_LSTAT + Impl::StructStat buf1; + if (p_->stat(buf1) == -1) { + statOk = false; + } + origStMode = buf1.st_mode; +#endif // !EXV_HAVE_LSTAT + + // MSVCRT rename that does not overwrite existing files +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { +#if defined(WIN32) && defined(REPLACEFILE_IGNORE_MERGE_ERRORS) + // Windows implementation that deals with the fact that ::rename fails + // if the target filename still exists, which regularly happens when + // that file has been opened with FILE_SHARE_DELETE by another process, + // like a virus scanner or disk indexer + // (see also http://stackoverflow.com/a/11023068) + typedef BOOL (WINAPI * ReplaceFileW_t)(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); + HMODULE hKernel = LoadLibraryA("kernel32.dll"); + if (hKernel) { + ReplaceFileW_t pfcn_ReplaceFileW = (ReplaceFileW_t)GetProcAddress(hKernel, "ReplaceFileW"); + if (pfcn_ReplaceFileW) { + BOOL ret = pfcn_ReplaceFileW(wpf, fileIo->wpath().c_str(), NULL, REPLACEFILE_IGNORE_MERGE_ERRORS, NULL, NULL); + FreeLibrary(hKernel); + if (ret == 0) { + if (GetLastError() == ERROR_FILE_NOT_FOUND) { + if (::_wrename(fileIo->wpath().c_str(), wpf) == -1) { + throw WError(17, fileIo->wpath(), wpf, strError().c_str()); + } + ::_wremove(fileIo->wpath().c_str()); + } + else { + throw WError(17, fileIo->wpath(), wpf, strError().c_str()); + } + } + } + else { + FreeLibrary(hKernel); + if (fileExists(wpf) && ::_wremove(wpf) != 0) { + throw WError(2, wpf, strError().c_str(), "::_wremove"); + } + if (::_wrename(fileIo->wpath().c_str(), wpf) == -1) { + throw WError(17, fileIo->wpath(), wpf, strError().c_str()); + } + ::_wremove(fileIo->wpath().c_str()); + } + } +#else + if (fileExists(wpf) && ::_wremove(wpf) != 0) { + throw WError(2, wpf, strError().c_str(), "::_wremove"); + } + if (::_wrename(fileIo->wpath().c_str(), wpf) == -1) { + throw WError(17, fileIo->wpath(), wpf, strError().c_str()); + } + ::_wremove(fileIo->wpath().c_str()); +#endif + // Check permissions of new file + struct _stat buf2; + if (statOk && ::_wstat(wpf, &buf2) == -1) { + statOk = false; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(2, wpf, strError(), "::_wstat") << "\n"; +#endif + } + if (statOk && origStMode != buf2.st_mode) { + // Set original file permissions + if (::_wchmod(wpf, origStMode) == -1) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(2, wpf, strError(), "::_wchmod") << "\n"; +#endif + } + } + } // if (p_->wpMode_ == Impl::wpUnicode) + else +#endif // EXV_UNICODE_PATH + { +#if defined(WIN32) && defined(REPLACEFILE_IGNORE_MERGE_ERRORS) + // Windows implementation that deals with the fact that ::rename fails + // if the target filename still exists, which regularly happens when + // that file has been opened with FILE_SHARE_DELETE by another process, + // like a virus scanner or disk indexer + // (see also http://stackoverflow.com/a/11023068) + typedef BOOL (WINAPI * ReplaceFileA_t)(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); + HMODULE hKernel = LoadLibraryA("kernel32.dll"); + if (hKernel) { + ReplaceFileA_t pfcn_ReplaceFileA = (ReplaceFileA_t)GetProcAddress(hKernel, "ReplaceFileA"); + if (pfcn_ReplaceFileA) { + BOOL ret = pfcn_ReplaceFileA(pf, fileIo->path().c_str(), NULL, REPLACEFILE_IGNORE_MERGE_ERRORS, NULL, NULL); + FreeLibrary(hKernel); + if (ret == 0) { + if (GetLastError() == ERROR_FILE_NOT_FOUND) { + if (::rename(fileIo->path().c_str(), pf) == -1) { + throw Error(17, fileIo->path(), pf, strError()); + } + ::remove(fileIo->path().c_str()); + } + else { + throw Error(17, fileIo->path(), pf, strError()); + } + } + } + else { + FreeLibrary(hKernel); + if (fileExists(pf) && ::remove(pf) != 0) { + throw Error(2, pf, strError(), "::remove"); + } + if (::rename(fileIo->path().c_str(), pf) == -1) { + throw Error(17, fileIo->path(), pf, strError()); + } + ::remove(fileIo->path().c_str()); + } + } +#else + if (fileExists(pf) && ::remove(pf) != 0) { + throw Error(2, pf, strError(), "::remove"); + } + if (::rename(fileIo->path().c_str(), pf) == -1) { + throw Error(17, fileIo->path(), pf, strError()); + } + ::remove(fileIo->path().c_str()); +#endif + // Check permissions of new file + struct stat buf2; + if (statOk && ::stat(pf, &buf2) == -1) { + statOk = false; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(2, pf, strError(), "::stat") << "\n"; +#endif + } + if (statOk && origStMode != buf2.st_mode) { + // Set original file permissions + if (::chmod(pf, origStMode) == -1) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(2, pf, strError(), "::chmod") << "\n"; +#endif + } + } + } + } // if (fileIo) + else { + // Generic handling, reopen both to reset to start + if (open("w+b") != 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(10, wpath(), "w+b", strError().c_str()); + } + else +#endif + { + throw Error(10, path(), "w+b", strError()); + } + } + if (src.open() != 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(9, src.wpath(), strError().c_str()); + } + else +#endif + { + throw Error(9, src.path(), strError()); + } + } + write(src); + src.close(); + } + + if (wasOpen) { + if (open(lastMode) != 0) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(10, wpath(), lastMode.c_str(), strError().c_str()); + } + else +#endif + { + throw Error(10, path(), lastMode, strError()); + } + } + } + else close(); + + if (error() || src.error()) { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + throw WError(18, wpath(), strError().c_str()); + } + else +#endif + { + throw Error(18, path(), strError()); + } + } + } // FileIo::transfer + + int FileIo::putb(byte data) + { + assert(p_->fp_ != 0); + if (p_->switchMode(Impl::opWrite) != 0) return EOF; + return putc(data, p_->fp_); + } + +#if defined(_MSC_VER) + int FileIo::seek( int64_t offset, Position pos ) + { + assert(p_->fp_ != 0); + + int fileSeek = 0; + switch (pos) { + case BasicIo::cur: fileSeek = SEEK_CUR; break; + case BasicIo::beg: fileSeek = SEEK_SET; break; + case BasicIo::end: fileSeek = SEEK_END; break; + } + + if (p_->switchMode(Impl::opSeek) != 0) return 1; +#ifdef _WIN64 + return _fseeki64(p_->fp_, offset, fileSeek); +#else + return std::fseek(p_->fp_,static_cast(offset), fileSeek); +#endif + } +#else + int FileIo::seek(long offset, Position pos) + { + assert(p_->fp_ != 0); + + int fileSeek = 0; + switch (pos) { + case BasicIo::cur: fileSeek = SEEK_CUR; break; + case BasicIo::beg: fileSeek = SEEK_SET; break; + case BasicIo::end: fileSeek = SEEK_END; break; + } + + if (p_->switchMode(Impl::opSeek) != 0) return 1; + return std::fseek(p_->fp_, offset, fileSeek); + } +#endif + + long FileIo::tell() const + { + assert(p_->fp_ != 0); + return std::ftell(p_->fp_); + } + + long FileIo::size() const + { + // Flush and commit only if the file is open for writing + if (p_->fp_ != 0 && (p_->openMode_[0] != 'r' || p_->openMode_[1] == '+')) { + std::fflush(p_->fp_); +#if defined WIN32 && !defined __CYGWIN__ + // This is required on msvcrt before stat after writing to a file + _commit(_fileno(p_->fp_)); +#endif + } + + Impl::StructStat buf; + int ret = p_->stat(buf); + + if (ret != 0) return -1; + return buf.st_size; + } + + int FileIo::open() + { + // Default open is in read-only binary mode + return open("rb"); + } + + int FileIo::open(const std::string& mode) + { + close(); + p_->openMode_ = mode; + p_->opMode_ = Impl::opSeek; +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + p_->fp_ = ::_wfopen(wpath().c_str(), s2ws(mode).c_str()); + } + else +#endif + { + p_->fp_ = ::fopen(path().c_str(), mode.c_str()); + } + if (!p_->fp_) return 1; + return 0; + } + + bool FileIo::isopen() const + { + return p_->fp_ != 0; + } + + int FileIo::close() + { + int rc = 0; + if (munmap() != 0) rc = 2; + if (p_->fp_ != 0) { + if (std::fclose(p_->fp_) != 0) rc |= 1; + p_->fp_= 0; + } + return rc; + } + + DataBuf FileIo::read(long rcount) + { + assert(p_->fp_ != 0); + DataBuf buf(rcount); + long readCount = read(buf.pData_, buf.size_); + buf.size_ = readCount; + return buf; + } + + long FileIo::read(byte* buf, long rcount) + { + assert(p_->fp_ != 0); + if (p_->switchMode(Impl::opRead) != 0) return 0; + return (long)std::fread(buf, 1, rcount, p_->fp_); + } + + int FileIo::getb() + { + assert(p_->fp_ != 0); + if (p_->switchMode(Impl::opRead) != 0) return EOF; + return getc(p_->fp_); + } + + int FileIo::error() const + { + return p_->fp_ != 0 ? ferror(p_->fp_) : 0; + } + + bool FileIo::eof() const + { + assert(p_->fp_ != 0); + return feof(p_->fp_) != 0; + } + + std::string FileIo::path() const + { +#ifdef EXV_UNICODE_PATH + if (p_->wpMode_ == Impl::wpUnicode) { + return ws2s(p_->wpath_); + } +#endif + return p_->path_; + } + +#ifdef EXV_UNICODE_PATH + std::wstring FileIo::wpath() const + { + if (p_->wpMode_ == Impl::wpStandard) { + return s2ws(p_->path_); + } + return p_->wpath_; + } + +#endif + + void FileIo::populateFakeData() { + + } + + //! Internal Pimpl structure of class MemIo. + class MemIo::Impl { + public: + Impl(); //!< Default constructor + Impl(const byte* data, long size); //!< Constructor 2 + + // DATA + byte* data_; //!< Pointer to the start of the memory area + long idx_; //!< Index into the memory area + long size_; //!< Size of the memory area + long sizeAlloced_; //!< Size of the allocated buffer + bool isMalloced_; //!< Was the buffer allocated? + bool eof_; //!< EOF indicator + + // METHODS + void reserve(long wcount); //!< Reserve memory + + private: + // NOT IMPLEMENTED + Impl(const Impl& rhs); //!< Copy constructor + Impl& operator=(const Impl& rhs); //!< Assignment + + }; // class MemIo::Impl + + MemIo::Impl::Impl() + : data_(0), + idx_(0), + size_(0), + sizeAlloced_(0), + isMalloced_(false), + eof_(false) + { + } + + MemIo::Impl::Impl(const byte* data, long size) + : data_(const_cast(data)), + idx_(0), + size_(size), + sizeAlloced_(0), + isMalloced_(false), + eof_(false) + { + } + + void MemIo::Impl::reserve(long wcount) + { + long need = wcount + idx_; + + if (!isMalloced_) { + // Minimum size for 1st block is 32kB + long size = EXV_MAX(32768 * (1 + need / 32768), size_); + byte* data = (byte*)std::malloc(size); + std::memcpy(data, data_, size_); + data_ = data; + sizeAlloced_ = size; + isMalloced_ = true; + } + + if (need > size_) { + if (need > sizeAlloced_) { + // Allocate in blocks of 32kB + long want = 32768 * (1 + need / 32768); + data_ = (byte*)std::realloc(data_, want); + sizeAlloced_ = want; + isMalloced_ = true; + } + size_ = need; + } + } + + MemIo::MemIo() + : p_(new Impl()) + { + } + + MemIo::MemIo(const byte* data, long size) + : p_(new Impl(data, size)) + { + } + + MemIo::~MemIo() + { + if (p_->isMalloced_) { + msync(); + std::free(p_->data_); + } + delete p_; + } + + BasicIo::AutoPtr MemIo::temporary() const + { + return BasicIo::AutoPtr(new MemIo); + } + + long MemIo::write(const byte* data, long wcount) + { + p_->reserve(wcount); + assert(p_->isMalloced_); + std::memcpy(&p_->data_[p_->idx_], data, wcount); + p_->idx_ += wcount; + return wcount; + } + + void MemIo::transfer(BasicIo& src) + { + MemIo *memIo = dynamic_cast(&src); + if (memIo) { + // Optimization if src is another instance of MemIo + if (p_->isMalloced_) { + msync(); + std::free(p_->data_); + } + p_->idx_ = 0; + p_->data_ = memIo->p_->data_; + p_->size_ = memIo->p_->size_; + p_->isMalloced_ = memIo->p_->isMalloced_; + memIo->p_->idx_ = 0; + memIo->p_->data_ = 0; + memIo->p_->size_ = 0; + memIo->p_->isMalloced_ = false; + } + else { + // Generic reopen to reset position to start + if (src.open() != 0) { + throw Error(9, src.path(), strError()); + } + p_->idx_ = 0; + write(src); + src.close(); + } + if (error() || src.error()) throw Error(19, strError()); + } + + long MemIo::write(BasicIo& src) + { + if (static_cast(this) == &src) return 0; + if (!src.isopen()) return 0; + + byte buf[4096]; + long readCount = 0; + long writeTotal = 0; + while ((readCount = src.read(buf, sizeof(buf)))) { + write(buf, readCount); + writeTotal += readCount; + } + + return writeTotal; + } + + int MemIo::putb(byte data) + { + p_->reserve(1); + assert(p_->isMalloced_); + p_->data_[p_->idx_++] = data; + return data; + } + +#if defined(_MSC_VER) + int MemIo::seek( int64_t offset, Position pos ) + { + uint64_t newIdx = 0; + + switch (pos) { + case BasicIo::cur: newIdx = p_->idx_ + offset; break; + case BasicIo::beg: newIdx = offset; break; + case BasicIo::end: newIdx = p_->size_ + offset; break; + } + + p_->idx_ = static_cast(newIdx); //not very sure about this. need more test!! - note by Shawn fly2xj@gmail.com //TODO + p_->eof_ = false; + return 0; + } +#else + int MemIo::seek(long offset, Position pos) + { + long newIdx = 0; + + switch (pos) { + case BasicIo::cur: newIdx = p_->idx_ + offset; break; + case BasicIo::beg: newIdx = offset; break; + case BasicIo::end: newIdx = p_->size_ + offset; break; + } + + if (newIdx < 0) return 1; + p_->idx_ = newIdx; + p_->eof_ = false; + return 0; + } +#endif + + byte* MemIo::mmap(bool /*isWriteable*/) + { + return p_->data_; + } + + int MemIo::munmap() + { + return msync(); + } + + int MemIo::msync() + { +#ifdef MS_SYNC + return ::msync(p_, p_->size_, MS_SYNC); +#else + return 0; +#endif + } + + long MemIo::tell() const + { + return p_->idx_; + } + + long MemIo::size() const + { + return p_->size_; + } + + int MemIo::open() + { + p_->idx_ = 0; + p_->eof_ = false; + return 0; + } + + bool MemIo::isopen() const + { + return true; + } + + int MemIo::close() + { + return 0; + } + + DataBuf MemIo::read(long rcount) + { + DataBuf buf(rcount); + long readCount = read(buf.pData_, buf.size_); + buf.size_ = readCount; + return buf; + } + + long MemIo::read(byte* buf, long rcount) + { + long avail = EXV_MAX(p_->size_ - p_->idx_, 0); + long allow = EXV_MIN(rcount, avail); + std::memcpy(buf, &p_->data_[p_->idx_], allow); + p_->idx_ += allow; + if (rcount > avail) p_->eof_ = true; + return allow; + } + + int MemIo::getb() + { + if (p_->idx_ >= p_->size_) { + p_->eof_ = true; + return EOF; + } + return p_->data_[p_->idx_++]; + } + + int MemIo::error() const + { + return 0; + } + + bool MemIo::eof() const + { + return p_->eof_; + } + + std::string MemIo::path() const + { + return "MemIo"; + } + +#ifdef EXV_UNICODE_PATH + std::wstring MemIo::wpath() const + { + return EXV_WIDEN("MemIo"); + } + +#endif + void MemIo::populateFakeData() { + + } + +#if EXV_XPATH_MEMIO + XPathIo::XPathIo(const std::string& path) { + Protocol prot = fileProtocol(path); + + if (prot == pStdin) ReadStdin(); + else if (prot == pDataUri) ReadDataUri(path); + } +#ifdef EXV_UNICODE_PATH + XPathIo::XPathIo(const std::wstring& wpath) { + std::string path; + path.assign(wpath.begin(), wpath.end()); + Protocol prot = fileProtocol(path); + if (prot == pStdin) ReadStdin(); + else if (prot == pDataUri) ReadDataUri(path); + } +#endif + + void XPathIo::ReadStdin() { + if (isatty(fileno(stdin))) + throw Error(53); + +#ifdef _O_BINARY + // convert stdin to binary + if (_setmode(_fileno(stdin), _O_BINARY) == -1) + throw Error(54); +#endif + + char readBuf[100*1024]; + std::streamsize readBufSize = 0; + do { + std::cin.read(readBuf, sizeof(readBuf)); + readBufSize = std::cin.gcount(); + if (readBufSize > 0) { + write((byte*)readBuf, (long)readBufSize); + } + } while(readBufSize); + } + + void XPathIo::ReadDataUri(const std::string& path) { + size_t base64Pos = path.find("base64,"); + if (base64Pos == std::string::npos) + throw Error(1, "No base64 data"); + + std::string data = path.substr(base64Pos+7); + char* decodeData = new char[data.length()]; + long size = base64decode(data.c_str(), decodeData, data.length()); + if (size > 0) + write((byte*)decodeData, size); + else + throw Error(1, "Unable to decode base 64."); + delete[] decodeData; + } + +#else + const std::string XPathIo::TEMP_FILE_EXT = ".exiv2_temp"; + const std::string XPathIo::GEN_FILE_EXT = ".exiv2"; + + XPathIo::XPathIo(const std::string& orgPath) : FileIo(XPathIo::writeDataToFile(orgPath)) { + isTemp_ = true; + tempFilePath_ = path(); + } + +#ifdef EXV_UNICODE_PATH + XPathIo::XPathIo(const std::wstring& wOrgPathpath) : FileIo(XPathIo::writeDataToFile(wOrgPathpath)) { + isTemp_ = true; + tempFilePath_ = path(); + } +#endif + + XPathIo::~XPathIo() { + if (isTemp_ && remove(tempFilePath_.c_str()) != 0) { + // error when removing file + // printf ("Warning: Unable to remove the temp file %s.\n", tempFilePath_.c_str()); + } + } + + void XPathIo::transfer(BasicIo& src) { + if (isTemp_) { + // replace temp path to gent path. + std::string currentPath = path(); + setPath(ReplaceStringInPlace(currentPath, XPathIo::TEMP_FILE_EXT, XPathIo::GEN_FILE_EXT)); + // rename the file + tempFilePath_ = path(); + if (rename(currentPath.c_str(), tempFilePath_.c_str()) != 0) { + // printf("Warning: Failed to rename the temp file. \n"); + } + isTemp_ = false; + // call super class method + FileIo::transfer(src); + } + } + + std::string XPathIo::writeDataToFile(const std::string& orgPath) { + Protocol prot = fileProtocol(orgPath); + + // generating the name for temp file. + std::time_t timestamp = std::time(NULL); + std::stringstream ss; + ss << timestamp << XPathIo::TEMP_FILE_EXT; + std::string path = ss.str(); + std::ofstream fs(path.c_str(), std::ios::out | std::ios::binary | std::ios::trunc); + + if (prot == pStdin) { + if (isatty(fileno(stdin))) + throw Error(53); +#ifdef _MSC_VER + // convert stdin to binary + if (_setmode(_fileno(stdin), _O_BINARY) == -1) + throw Error(54); +#endif + // read stdin and write to the temp file. + char readBuf[100*1024]; + std::streamsize readBufSize = 0; + do { + std::cin.read(readBuf, sizeof(readBuf)); + readBufSize = std::cin.gcount(); + if (readBufSize > 0) { + fs.write (readBuf, readBufSize); + } + } while(readBufSize); + } else if (prot == pDataUri) { + // read data uri and write to the temp file. + size_t base64Pos = orgPath.find("base64,"); + if (base64Pos == std::string::npos) + throw Error(1, "No base64 data"); + + std::string data = orgPath.substr(base64Pos+7); + char* decodeData = new char[data.length()]; + long size = base64decode(data.c_str(), decodeData, data.length()); + if (size > 0) + fs.write(decodeData, size); + else + throw Error(1, "Unable to decode base 64."); + delete[] decodeData; + } + + fs.close(); + return path; + } + +#ifdef EXV_UNICODE_PATH + std::string XPathIo::writeDataToFile(const std::wstring& wOrgPath) { + std::string orgPath; + orgPath.assign(wOrgPath.begin(), wOrgPath.end()); + return XPathIo::writeDataToFile(orgPath); + } +#endif + +#endif + + //! Internal Pimpl abstract structure of class RemoteIo. + class RemoteIo::Impl { + public: + //! Constructor + Impl(const std::string& path, size_t blockSize); +#ifdef EXV_UNICODE_PATH + //! Constructor accepting a unicode path in an std::wstring + Impl(const std::wstring& wpath, size_t blockSize); +#endif + //! Destructor. Releases all managed memory. + virtual ~Impl(); + + // DATA + std::string path_; //!< (Standard) path +#ifdef EXV_UNICODE_PATH + std::wstring wpath_; //!< Unicode path +#endif + size_t blockSize_; //!< Size of the block memory. + BlockMap* blocksMap_; //!< An array contains all blocksMap + size_t size_; //!< The file size + long idx_; //!< Index into the memory area + bool isMalloced_; //!< Was the blocksMap_ allocated? + bool eof_; //!< EOF indicator + Protocol protocol_; //!< the protocol of url + + // METHODS + /*! + @brief Get the length (in bytes) of the remote file. + @return Return -1 if the size is unknown. Otherwise it returns the length of remote file (in bytes). + @throw Error if the server returns the error code. + */ + virtual long getFileLength() = 0; + /*! + @brief Get the data by range. + @param lowBlock The start block index. + @param highBlock The end block index. + @param response The data from the server. + @throw Error if the server returns the error code. + @note Set lowBlock = -1 and highBlock = -1 to get the whole file content. + */ + virtual void getDataByRange(long lowBlock, long highBlock, std::string& response) = 0; + /*! + @brief Submit the data to the remote machine. The data replace a part of the remote file. + The replaced part of remote file is indicated by from and to parameters. + @param data The data are submitted to the remote machine. + @param size The size of data. + @param from The start position in the remote file where the data replace. + @param to The end position in the remote file where the data replace. + @note The write access is available on some protocols. HTTP and HTTPS require the script file + on the remote machine to handle the data. SSH requires the permission to edit the file. + @throw Error if it fails. + */ + virtual void writeRemote(const byte* data, size_t size, long from, long to) = 0; + /*! + @brief Get the data from the remote machine and write them to the memory blocks. + @param lowBlock The start block index. + @param highBlock The end block index. + @return Number of bytes written to the memory block successfully + @throw Error if it fails. + */ + virtual size_t populateBlocks(size_t lowBlock, size_t highBlock); + + }; // class RemoteIo::Impl + + RemoteIo::Impl::Impl(const std::string& url, size_t blockSize) + : path_(url), blockSize_(blockSize), blocksMap_(0), size_(0), + idx_(0), isMalloced_(false), eof_(false), protocol_(fileProtocol(url)) + { + } +#ifdef EXV_UNICODE_PATH + RemoteIo::Impl::Impl(const std::wstring& wurl, size_t blockSize) + : wpath_(wurl), blockSize_(blockSize), blocksMap_(0), size_(0), + idx_(0), isMalloced_(false), eof_(false), protocol_(fileProtocol(wurl)) + { + } +#endif + + size_t RemoteIo::Impl::populateBlocks(size_t lowBlock, size_t highBlock) + { + assert(isMalloced_); + + // optimize: ignore all true blocks on left & right sides. + while(!blocksMap_[lowBlock].isNone() && lowBlock < highBlock) lowBlock++; + while(!blocksMap_[highBlock].isNone() && highBlock > lowBlock) highBlock--; + + size_t rcount = 0; + if (blocksMap_[highBlock].isNone()) + { + std::string data; + getDataByRange( (long) lowBlock, (long) highBlock, data); + rcount = (size_t)data.length(); + if (rcount == 0) { + throw Error(1, "Data By Range is empty. Please check the permission."); + } + byte* source = (byte*)data.c_str(); + size_t remain = rcount, totalRead = 0; + size_t iBlock = (rcount == size_) ? 0 : lowBlock; + + while (remain) { + size_t allow = EXV_MIN(remain, blockSize_); + blocksMap_[iBlock].populate(&source[totalRead], allow); + remain -= allow; + totalRead += allow; + iBlock++; + } + } + + return rcount; + } + + RemoteIo::Impl::~Impl() { + if (blocksMap_) delete[] blocksMap_; + } + + RemoteIo::~RemoteIo() + { + if (p_) { + close(); + delete p_; + } + } + + int RemoteIo::open() + { + close(); // reset the IO position + if (p_->isMalloced_ == false) { + long length = p_->getFileLength(); + if (length < 0) { // unable to get the length of remote file, get the whole file content. + std::string data; + p_->getDataByRange(-1, -1, data); + p_->size_ = (size_t) data.length(); + size_t nBlocks = (p_->size_ + p_->blockSize_ - 1) / p_->blockSize_; + p_->blocksMap_ = new BlockMap[nBlocks]; + p_->isMalloced_ = true; + byte* source = (byte*)data.c_str(); + size_t remain = p_->size_, iBlock = 0, totalRead = 0; + while (remain) { + size_t allow = EXV_MIN(remain, p_->blockSize_); + p_->blocksMap_[iBlock].populate(&source[totalRead], allow); + remain -= allow; + totalRead += allow; + iBlock++; + } + } else if (length == 0) { // file is empty + throw Error(1, "the file length is 0"); + } else { + p_->size_ = (size_t) length; + size_t nBlocks = (p_->size_ + p_->blockSize_ - 1) / p_->blockSize_; + p_->blocksMap_ = new BlockMap[nBlocks]; + p_->isMalloced_ = true; + } + } + return 0; // means OK + } + + int RemoteIo::close() + { + if (p_->isMalloced_) { + p_->eof_ = false; + p_->idx_ = 0; + } + return 0; + } + + long RemoteIo::write(const byte* /* unused data*/, long /* unused wcount*/) + { + return 0; // means failure + } + + long RemoteIo::write(BasicIo& src) + { + assert(p_->isMalloced_); + if (!src.isopen()) return 0; + + /* + * The idea is to compare the file content, find the different bytes and submit them to the remote machine. + * To simplify it, it: + * + goes from the left, find the first different position -> $left + * + goes from the right, find the first different position -> $right + * The different bytes are [$left-$right] part. + */ + long left = 0; + long right = 0; + long blockIndex = 0; + long i = 0; + long readCount = 0; + long blockSize = 0; + byte* buf = (byte*) std::malloc(p_->blockSize_); + long nBlocks = (long)((p_->size_ + p_->blockSize_ - 1) / p_->blockSize_); + + // find $left + src.seek(0, BasicIo::beg); + bool findDiff = false; + while (blockIndex < nBlocks && !src.eof() && !findDiff) { + blockSize = (long)p_->blocksMap_[blockIndex].getSize(); + bool isFakeData = p_->blocksMap_[blockIndex].isKnown(); // fake data + readCount = src.read(buf, blockSize); + byte* blockData = p_->blocksMap_[blockIndex].getData(); + for (i = 0; (i < readCount) && (i < blockSize) && !findDiff; i++) { + if ((!isFakeData && buf[i] != blockData[i]) || (isFakeData && buf[i] != 0)) { + findDiff = true; + } else { + left++; + } + } + blockIndex++; + } + + + // find $right + findDiff = false; + blockIndex = nBlocks - 1; + blockSize = (long)p_->blocksMap_[blockIndex].getSize(); + while ((blockIndex + 1 > 0) && right < src.size() && !findDiff) { + if(src.seek(-1 * (blockSize + right), BasicIo::end)) { + findDiff = true; + } else { + bool isFakeData = p_->blocksMap_[blockIndex].isKnown(); // fake data + readCount = src.read(buf, blockSize); + byte* blockData = p_->blocksMap_[blockIndex].getData(); + for (i = 0; (i < readCount) && (i < blockSize) && !findDiff; i++) { + if ((!isFakeData && buf[readCount - i - 1] != blockData[blockSize - i - 1]) || (isFakeData && buf[readCount - i - 1] != 0)) { + findDiff = true; + } else { + right++; + } + } + } + blockIndex--; + blockSize = (long)p_->blocksMap_[blockIndex].getSize(); + } + + // free buf + if (buf) std::free(buf); + + // submit to the remote machine. + long dataSize = src.size() - left - right; + if (dataSize > 0) { + byte* data = (byte*) std::malloc(dataSize); + src.seek(left, BasicIo::beg); + src.read(data, dataSize); + p_->writeRemote(data, (size_t)dataSize, left, (long) p_->size_ - right); + if (data) std::free(data); + } + return src.size(); + } + + int RemoteIo::putb(byte /*unused data*/) + { + return 0; + } + + DataBuf RemoteIo::read(long rcount) + { + DataBuf buf(rcount); + long readCount = read(buf.pData_, buf.size_); + buf.size_ = readCount; + return buf; + } + + long RemoteIo::read(byte* buf, long rcount) + { + assert(p_->isMalloced_); + if (p_->eof_) return 0; + + size_t allow = EXV_MIN(rcount, (long)( p_->size_ - p_->idx_)); + size_t lowBlock = p_->idx_ /p_->blockSize_; + size_t highBlock = (p_->idx_ + allow)/p_->blockSize_; + + // connect to the remote machine & populate the blocks just in time. + p_->populateBlocks(lowBlock, highBlock); + byte* fakeData = (byte*) std::calloc(p_->blockSize_, sizeof(byte)); + if (!fakeData) { + throw Error(1, "Unable to allocate data"); + } + + size_t iBlock = lowBlock; + size_t startPos = p_->idx_ - lowBlock*p_->blockSize_; + size_t totalRead = 0; + do { + byte* data = p_->blocksMap_[iBlock++].getData(); + if (data == NULL) data = fakeData; + size_t blockR = EXV_MIN(allow, p_->blockSize_ - startPos); + std::memcpy(&buf[totalRead], &data[startPos], blockR); + totalRead += blockR; + startPos = 0; + allow -= blockR; + } while(allow); + + if (fakeData) std::free(fakeData); + + p_->idx_ += (long) totalRead; + p_->eof_ = (p_->idx_ == (long) p_->size_); + + return (long) totalRead; + } + + int RemoteIo::getb() + { + assert(p_->isMalloced_); + if (p_->idx_ == (long)p_->size_) { + p_->eof_ = true; + return EOF; + } + + size_t expectedBlock = (p_->idx_ + 1)/p_->blockSize_; + // connect to the remote machine & populate the blocks just in time. + p_->populateBlocks(expectedBlock, expectedBlock); + + byte* data = p_->blocksMap_[expectedBlock].getData(); + return data[p_->idx_++ - expectedBlock*p_->blockSize_]; + } + + void RemoteIo::transfer(BasicIo& src) + { + if (src.open() != 0) { + throw Error(1, "unable to open src when transferring"); + } + write(src); + src.close(); + } + +#if defined(_MSC_VER) + int RemoteIo::seek( int64_t offset, Position pos ) + { + assert(p_->isMalloced_); + uint64_t newIdx = 0; + + switch (pos) { + case BasicIo::cur: newIdx = p_->idx_ + offset; break; + case BasicIo::beg: newIdx = offset; break; + case BasicIo::end: newIdx = p_->size_ + offset; break; + } + + if ( /*newIdx < 0 || */ newIdx > static_cast(p_->size_) ) return 1; + p_->idx_ = static_cast(newIdx); //not very sure about this. need more test!! - note by Shawn fly2xj@gmail.com //TODO + p_->eof_ = false; + return 0; + } +#else + int RemoteIo::seek(long offset, Position pos) + { + assert(p_->isMalloced_); + long newIdx = 0; + + switch (pos) { + case BasicIo::cur: newIdx = p_->idx_ + offset; break; + case BasicIo::beg: newIdx = offset; break; + case BasicIo::end: newIdx = p_->size_ + offset; break; + } + + if (newIdx < 0 || newIdx > (long) p_->size_) return 1; + p_->idx_ = newIdx; + p_->eof_ = false; + return 0; + } +#endif + + byte* RemoteIo::mmap(bool /*isWriteable*/) + { + return NULL; + } + + int RemoteIo::munmap() + { + return 0; + } + + long RemoteIo::tell() const + { + return p_->idx_; + } + + long RemoteIo::size() const + { + return (long) p_->size_; + } + + bool RemoteIo::isopen() const + { + return p_->isMalloced_; + } + + int RemoteIo::error() const + { + return 0; + } + + bool RemoteIo::eof() const + { + return p_->eof_; + } + + std::string RemoteIo::path() const + { + return p_->path_; + } + +#ifdef EXV_UNICODE_PATH + std::wstring RemoteIo::wpath() const + { + return p_->wpath_; + } +#endif + + BasicIo::AutoPtr RemoteIo::temporary() const + { + return BasicIo::AutoPtr(new MemIo); + } + + void RemoteIo::populateFakeData() + { + assert(p_->isMalloced_); + size_t nBlocks = (p_->size_ + p_->blockSize_ - 1) / p_->blockSize_; + for (size_t i = 0; i < nBlocks; i++) { + if (p_->blocksMap_[i].isNone()) + p_->blocksMap_[i].markKnown(p_->blockSize_); + } + } + + + //! Internal Pimpl structure of class HttpIo. + class HttpIo::HttpImpl : public Impl { + public: + //! Constructor + HttpImpl(const std::string& path, size_t blockSize); +#ifdef EXV_UNICODE_PATH + //! Constructor accepting a unicode path in an std::wstring + HttpImpl(const std::wstring& wpath, size_t blockSize); +#endif + Exiv2::Uri hostInfo_; //!< the host information extracted from the path + + // METHODS + /*! + @brief Get the length (in bytes) of the remote file. + @return Return -1 if the size is unknown. Otherwise it returns the length of remote file (in bytes). + @throw Error if the server returns the error code. + */ + long getFileLength(); + /*! + @brief Get the data by range. + @param lowBlock The start block index. + @param highBlock The end block index. + @param response The data from the server. + @throw Error if the server returns the error code. + @note Set lowBlock = -1 and highBlock = -1 to get the whole file content. + */ + void getDataByRange(long lowBlock, long highBlock, std::string& response); + /*! + @brief Submit the data to the remote machine. The data replace a part of the remote file. + The replaced part of remote file is indicated by from and to parameters. + @param data The data are submitted to the remote machine. + @param size The size of data. + @param from The start position in the remote file where the data replace. + @param to The end position in the remote file where the data replace. + @note The data are submitted to the remote machine via POST. This requires the script file + on the remote machine to receive the data and edit the remote file. The server-side + script may be specified with the environment string EXIV2_HTTP_POST. The default value is + "/exiv2.php". More info is available at http://dev.exiv2.org/wiki/exiv2 + @throw Error if it fails. + */ + void writeRemote(const byte* data, size_t size, long from, long to); + protected: + // NOT IMPLEMENTED + HttpImpl(const HttpImpl& rhs); //!< Copy constructor + HttpImpl& operator=(const HttpImpl& rhs); //!< Assignment + }; // class HttpIo::HttpImpl + + HttpIo::HttpImpl::HttpImpl(const std::string& url, size_t blockSize):Impl(url, blockSize) + { + hostInfo_ = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(hostInfo_); + } +#ifdef EXV_UNICODE_PATH + HttpIo::HttpImpl::HttpImpl(const std::wstring& wurl, size_t blockSize):Impl(wurl, blockSize) + { + std::string url; + url.assign(wurl.begin(), wurl.end()); + path_ = url; + + hostInfo_ = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(hostInfo_); + } +#endif + + long HttpIo::HttpImpl::getFileLength() + { + dict_t response; + dict_t request; + std::string errors; + request["server"] = hostInfo_.Host; + request["page" ] = hostInfo_.Path; + if (hostInfo_.Port != "") request["port"] = hostInfo_.Port; + request["verb"] = "HEAD"; + long serverCode = (long)http(request, response, errors); + if (serverCode < 0 || serverCode >= 400 || errors.compare("") != 0) { + throw Error(55, "Server", serverCode); + } + + dict_i lengthIter = response.find("Content-Length"); + return (lengthIter == response.end()) ? -1 : atol((lengthIter->second).c_str()); + } + + void HttpIo::HttpImpl::getDataByRange(long lowBlock, long highBlock, std::string& response) + { + dict_t responseDic; + dict_t request; + request["server"] = hostInfo_.Host; + request["page" ] = hostInfo_.Path; + if (hostInfo_.Port != "") request["port"] = hostInfo_.Port; + request["verb"] = "GET"; + std::string errors; + if (lowBlock > -1 && highBlock > -1) { + std::stringstream ss; + ss << "Range: bytes=" << lowBlock * blockSize_ << "-" << ((highBlock + 1) * blockSize_ - 1) << "\r\n"; + request["header"] = ss.str(); + } + + long serverCode = (long)http(request, responseDic, errors); + if (serverCode < 0 || serverCode >= 400 || errors.compare("") != 0) { + throw Error(55, "Server", serverCode); + } + response = responseDic["body"]; + } + + void HttpIo::HttpImpl::writeRemote(const byte* data, size_t size, long from, long to) + { + std::string scriptPath(getEnv(envHTTPPOST)); + if (scriptPath == "") { + throw Error(1, "Please set the path of the server script to handle http post data to EXIV2_HTTP_POST environmental variable."); + } + + // standadize the path without "/" at the beginning. + std::size_t protocolIndex = scriptPath.find("://"); + if (protocolIndex == std::string::npos && scriptPath[0] != '/') { + scriptPath = "/" + scriptPath; + } + + dict_t response; + dict_t request; + std::string errors; + + Uri scriptUri = Exiv2::Uri::Parse(scriptPath); + request["server"] = scriptUri.Host == "" ? hostInfo_.Host : scriptUri.Host; + if (scriptUri.Port != "") request["port"] = scriptUri.Port; + request["page"] = scriptUri.Path; + request["verb"] = "POST"; + + // encode base64 + size_t encodeLength = ((size + 2) / 3) * 4 + 1; + char* encodeData = new char[encodeLength]; + base64encode(data, size, encodeData, encodeLength); + // url encode + char* urlencodeData = urlencode(encodeData); + delete[] encodeData; + + std::stringstream ss; + ss << "path=" << hostInfo_.Path << "&" + << "from=" << from << "&" + << "to=" << to << "&" + << "data=" << urlencodeData; + std::string postData = ss.str(); + delete[] urlencodeData; + + // create the header + ss.str(""); + ss << "Content-Length: " << postData.length() << "\n" + << "Content-Type: application/x-www-form-urlencoded\n" + << "\n" << postData << "\r\n"; + request["header"] = ss.str(); + + int serverCode = http(request, response, errors); + if (serverCode < 0 || serverCode >= 400 || errors.compare("") != 0) { + throw Error(55, "Server", serverCode); + } + } + HttpIo::HttpIo(const std::string& url, size_t blockSize) + { + p_ = new HttpImpl(url, blockSize); + } +#ifdef EXV_UNICODE_PATH + HttpIo::HttpIo(const std::wstring& wurl, size_t blockSize) + { + p_ = new HttpImpl(wurl, blockSize); + } +#endif + +#if EXV_USE_CURL == 1 + //! Internal Pimpl structure of class RemoteIo. + class CurlIo::CurlImpl : public Impl { + public: + //! Constructor + CurlImpl(const std::string& path, size_t blockSize); +#ifdef EXV_UNICODE_PATH + //! Constructor accepting a unicode path in an std::wstring + CurlImpl(const std::wstring& wpath, size_t blockSize); +#endif + //! Destructor. Cleans up the curl pointer and releases all managed memory. + ~CurlImpl(); + + CURL* curl_; //!< libcurl pointer + + // METHODS + /*! + @brief Get the length (in bytes) of the remote file. + @return Return -1 if the size is unknown. Otherwise it returns the length of remote file (in bytes). + @throw Error if the server returns the error code. + */ + long getFileLength(); + /*! + @brief Get the data by range. + @param lowBlock The start block index. + @param highBlock The end block index. + @param response The data from the server. + @throw Error if the server returns the error code. + @note Set lowBlock = -1 and highBlock = -1 to get the whole file content. + */ + void getDataByRange(long lowBlock, long highBlock, std::string& response); + /*! + @brief Submit the data to the remote machine. The data replace a part of the remote file. + The replaced part of remote file is indicated by from and to parameters. + @param data The data are submitted to the remote machine. + @param size The size of data. + @param from The start position in the remote file where the data replace. + @param to The end position in the remote file where the data replace. + @throw Error if it fails. + @note The write access is only available on HTTP & HTTPS protocols. The data are submitted to server + via POST method. It requires the script file on the remote machine to receive the data + and edit the remote file. The server-side script may be specified with the environment + string EXIV2_HTTP_POST. The default value is "/exiv2.php". More info is available at + http://dev.exiv2.org/wiki/exiv2 + */ + void writeRemote(const byte* data, size_t size, long from, long to); + protected: + // NOT IMPLEMENTED + CurlImpl(const CurlImpl& rhs); //!< Copy constructor + CurlImpl& operator=(const CurlImpl& rhs); //!< Assignment + private: + long timeout_; //!< The number of seconds to wait while trying to connect. + }; // class RemoteIo::Impl + + CurlIo::CurlImpl::CurlImpl(const std::string& url, size_t blockSize):Impl(url, blockSize) + { + // init curl pointer + curl_ = curl_easy_init(); + if(!curl_) { + throw Error(1, "Uable to init libcurl."); + } + + // The default block size for FTP is much larger than other protocols + // the reason is that getDataByRange() in FTP always creates the new connection, + // so we need the large block size to reduce the overhead of creating the connection. + if (blockSize_ == 0) { + blockSize_ = protocol_ == pFtp ? 102400 : 1024; + } + + std::string timeout = getEnv(envTIMEOUT); + timeout_ = atol(timeout.c_str()); + if (timeout_ == 0) { + throw Error(1, "Timeout Environmental Variable must be a positive integer."); + } + } +#ifdef EXV_UNICODE_PATH + CurlIo::CurlImpl::CurlImpl(const std::wstring& wurl, size_t blockSize):Impl(wurl, blockSize) + { + std::string url; + url.assign(wurl.begin(), wurl.end()); + path_ = url; + + // init curl pointer + curl_ = curl_easy_init(); + if(!curl_) { + throw Error(1, "Uable to init libcurl."); + } + + // The default block size for FTP is much larger than other protocols + // the reason is that getDataByRange() in FTP always creates the new connection, + // so we need the large block size to reduce the overhead of creating the connection. + if (blockSize_ == 0) { + blockSize_ = protocol_ == pFtp ? 102400 : 1024; + } + } +#endif + + long CurlIo::CurlImpl::getFileLength() + { + curl_easy_reset(curl_); // reset all options + std::string response; + curl_easy_setopt(curl_, CURLOPT_URL, path_.c_str()); + curl_easy_setopt(curl_, CURLOPT_NOBODY, 1); // HEAD + curl_easy_setopt(curl_, CURLOPT_WRITEFUNCTION, curlWriter); + curl_easy_setopt(curl_, CURLOPT_WRITEDATA, &response); + curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYHOST, 0L); + curl_easy_setopt(curl_, CURLOPT_CONNECTTIMEOUT, timeout_); + //curl_easy_setopt(curl_, CURLOPT_VERBOSE, 1); // debugging mode + + /* Perform the request, res will get the return code */ + CURLcode res = curl_easy_perform(curl_); + if(res != CURLE_OK) { // error happends + throw Error(1, curl_easy_strerror(res)); + } + // get return code + long returnCode; + curl_easy_getinfo (curl_, CURLINFO_RESPONSE_CODE, &returnCode); // get code + if (returnCode >= 400 || returnCode < 0) { + throw Error(55, "Server", returnCode); + } + // get length + double temp; + curl_easy_getinfo(curl_, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &temp); // return -1 if unknown + return (long) temp; + } + + void CurlIo::CurlImpl::getDataByRange(long lowBlock, long highBlock, std::string& response) + { + curl_easy_reset(curl_); // reset all options + curl_easy_setopt(curl_, CURLOPT_URL, path_.c_str()); + curl_easy_setopt(curl_, CURLOPT_NOPROGRESS, 1L); // no progress meter please + curl_easy_setopt(curl_, CURLOPT_WRITEFUNCTION, curlWriter); + curl_easy_setopt(curl_, CURLOPT_WRITEDATA, &response); + curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl_, CURLOPT_CONNECTTIMEOUT, timeout_); + //curl_easy_setopt(curl_, CURLOPT_VERBOSE, 1); // debugging mode + + if (lowBlock > -1 && highBlock> -1) { + std::stringstream ss; + ss << lowBlock * blockSize_ << "-" << ((highBlock + 1) * blockSize_ - 1); + std::string range = ss.str(); + curl_easy_setopt(curl_, CURLOPT_RANGE, range.c_str()); + } + + /* Perform the request, res will get the return code */ + CURLcode res = curl_easy_perform(curl_); + + if(res != CURLE_OK) { + throw Error(1, curl_easy_strerror(res)); + } else { + long serverCode; + curl_easy_getinfo (curl_, CURLINFO_RESPONSE_CODE, &serverCode); // get code + if (serverCode >= 400 || serverCode < 0) { + throw Error(55, "Server", serverCode); + } + } + } + + void CurlIo::CurlImpl::writeRemote(const byte* data, size_t size, long from, long to) + { + std::string scriptPath(getEnv(envHTTPPOST)); + if (scriptPath == "") { + throw Error(1, "Please set the path of the server script to handle http post data to EXIV2_HTTP_POST environmental variable."); + } + + Exiv2::Uri hostInfo = Exiv2::Uri::Parse(path_); + + // add the protocol and host to the path + std::size_t protocolIndex = scriptPath.find("://"); + if (protocolIndex == std::string::npos) { + if (scriptPath[0] != '/') scriptPath = "/" + scriptPath; + scriptPath = hostInfo.Protocol + "://" + hostInfo.Host + scriptPath; + } + + curl_easy_reset(curl_); // reset all options + curl_easy_setopt(curl_, CURLOPT_NOPROGRESS, 1L); // no progress meter please + //curl_easy_setopt(curl_, CURLOPT_VERBOSE, 1); // debugging mode + curl_easy_setopt(curl_, CURLOPT_URL, scriptPath.c_str()); + curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, 0L); + + + // encode base64 + size_t encodeLength = ((size + 2) / 3) * 4 + 1; + char* encodeData = new char[encodeLength]; + base64encode(data, size, encodeData, encodeLength); + // url encode + char* urlencodeData = urlencode(encodeData); + delete[] encodeData; + std::stringstream ss; + ss << "path=" << hostInfo.Path << "&" + << "from=" << from << "&" + << "to=" << to << "&" + << "data=" << urlencodeData; + std::string postData = ss.str(); + delete[] urlencodeData; + + curl_easy_setopt(curl_, CURLOPT_POSTFIELDS, postData.c_str()); + // Perform the request, res will get the return code. + CURLcode res = curl_easy_perform(curl_); + + if(res != CURLE_OK) { + throw Error(1, curl_easy_strerror(res)); + } else { + long serverCode; + curl_easy_getinfo (curl_, CURLINFO_RESPONSE_CODE, &serverCode); + if (serverCode >= 400 || serverCode < 0) { + throw Error(55, "Server", serverCode); + } + } + } + + CurlIo::CurlImpl::~CurlImpl() { + curl_easy_cleanup(curl_); + } + + long CurlIo::write(const byte* data, long wcount) + { + if (p_->protocol_ == pHttp || p_->protocol_ == pHttps) { + return RemoteIo::write(data, wcount); + } else { + throw Error(1, "doesnt support write for this protocol."); + } + } + + long CurlIo::write(BasicIo& src) + { + if (p_->protocol_ == pHttp || p_->protocol_ == pHttps) { + return RemoteIo::write(src); + } else { + throw Error(1, "doesnt support write for this protocol."); + } + } + + CurlIo::CurlIo(const std::string& url, size_t blockSize) + { + p_ = new CurlImpl(url, blockSize); + } +#ifdef EXV_UNICODE_PATH + CurlIo::CurlIo(const std::wstring& wurl, size_t blockSize) + { + p_ = new CurlImpl(wurl, blockSize); + } +#endif + +#endif + +#if EXV_USE_SSH == 1 + //! Internal Pimpl structure of class RemoteIo. + class SshIo::SshImpl : public Impl { + public: + //! Constructor + SshImpl(const std::string& path, size_t blockSize); +#ifdef EXV_UNICODE_PATH + //! Constructor accepting a unicode path in an std::wstring + SshImpl(const std::wstring& wpath, size_t blockSize); +#endif + //! Destructor. Closes ssh session and releases all managed memory. + ~SshImpl(); + + Exiv2::Uri hostInfo_; //!< host information extracted from path + SSH* ssh_; //!< SSH pointer + sftp_file fileHandler_; //!< sftp file handler + + // METHODS + /*! + @brief Get the length (in bytes) of the remote file. + @return Return -1 if the size is unknown. Otherwise it returns the length of remote file (in bytes). + @throw Error if the server returns the error code. + */ + long getFileLength(); + /*! + @brief Get the data by range. + @param lowBlock The start block index. + @param highBlock The end block index. + @param response The data from the server. + @throw Error if the server returns the error code. + @note Set lowBlock = -1 and highBlock = -1 to get the whole file content. + */ + void getDataByRange(long lowBlock, long highBlock, std::string& response); + /*! + @brief Submit the data to the remote machine. The data replace a part of the remote file. + The replaced part of remote file is indicated by from and to parameters. + @param data The data are submitted to the remote machine. + @param size The size of data. + @param from The start position in the remote file where the data replace. + @param to The end position in the remote file where the data replace. + @note The write access is only available on the SSH protocol. It requires the write permission + to edit the remote file. + @throw Error if it fails. + */ + void writeRemote(const byte* data, size_t size, long from, long to); + + protected: + // NOT IMPLEMENTED + SshImpl(const SshImpl& rhs); //!< Copy constructor + SshImpl& operator=(const SshImpl& rhs); //!< Assignment + }; // class RemoteIo::Impl + + SshIo::SshImpl::SshImpl(const std::string& url, size_t blockSize):Impl(url, blockSize) + { + hostInfo_ = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(hostInfo_); + + // remove / at the beginning of the path + if (hostInfo_.Path[0] == '/') { + hostInfo_.Path = hostInfo_.Path.substr(1); + } + ssh_ = new SSH(hostInfo_.Host, hostInfo_.Username, hostInfo_.Password, hostInfo_.Port); + + if (protocol_ == pSftp) { + ssh_->getFileSftp(hostInfo_.Path, fileHandler_); + if (fileHandler_ == NULL) throw Error(1, "Unable to open the file"); + } else { + fileHandler_ = NULL; + } + } +#ifdef EXV_UNICODE_PATH + SshIo::SshImpl::SshImpl(const std::wstring& wurl, size_t blockSize):Impl(wurl, blockSize) + { + std::string url; + url.assign(wurl.begin(), wurl.end()); + path_ = url; + + hostInfo_ = Exiv2::Uri::Parse(url); + Exiv2::Uri::Decode(hostInfo_); + + // remove / at the beginning of the path + if (hostInfo_.Path[0] == '/') { + hostInfo_.Path = hostInfo_.Path.substr(1); + } + ssh_ = new SSH(hostInfo_.Host, hostInfo_.Username, hostInfo_.Password, hostInfo_.Port); + + if (protocol_ == pSftp) { + ssh_->getFileSftp(hostInfo_.Path, fileHandler_); + if (fileHandler_ == NULL) throw Error(1, "Unable to open the file"); + } else { + fileHandler_ = NULL; + } + } +#endif + + long SshIo::SshImpl::getFileLength() + { + long length = 0; + if (protocol_ == pSftp) { // sftp + sftp_attributes attributes = sftp_fstat(fileHandler_); + length = (long)attributes->size; + } else { // ssh + std::string response; + //std::string cmd = "stat -c %s " + hostInfo_.Path; + std::string cmd = "declare -a x=($(ls -alt " + hostInfo_.Path + ")); echo ${x[4]}"; + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "Unable to get file length."); + } else { + length = atol(response.c_str()); + if (length == 0) { + throw Error(1, "File is empty or not found."); + } + } + } + return length; + } + + void SshIo::SshImpl::getDataByRange(long lowBlock, long highBlock, std::string& response) + { + if (protocol_ == pSftp) { + if (sftp_seek(fileHandler_, (uint32_t) (lowBlock * blockSize_)) < 0) throw Error(1, "SFTP: unable to sftp_seek"); + size_t buffSize = (highBlock - lowBlock + 1) * blockSize_; + char* buffer = new char[buffSize]; + long nBytes = (long) sftp_read(fileHandler_, buffer, buffSize); + if (nBytes < 0) throw Error(1, "SFTP: unable to sftp_read"); + response.assign(buffer, buffSize); + delete[] buffer; + } else { + std::stringstream ss; + if (lowBlock > -1 && highBlock > -1) { + ss << "dd if=" << hostInfo_.Path + << " ibs=" << blockSize_ + << " skip=" << lowBlock + << " count=" << (highBlock - lowBlock) + 1<< " 2>/dev/null"; + } else { + ss << "dd if=" << hostInfo_.Path + << " ibs=" << blockSize_ + << " 2>/dev/null"; + } + std::string cmd = ss.str(); + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "Unable to get data by range."); + } + } + } + + void SshIo::SshImpl::writeRemote(const byte* data, size_t size, long from, long to) + { + if (protocol_ == pSftp) throw Error(1, "not support SFTP write access."); + + //printf("ssh update size=%ld from=%ld to=%ld\n", (long)size, from, to); + assert(isMalloced_); + + std::string tempFile = hostInfo_.Path + ".exiv2tmp"; + std::string response; + std::stringstream ss; + // copy the head (byte 0 to byte fromByte) of original file to filepath.exiv2tmp + ss << "head -c " << from + << " " << hostInfo_.Path + << " > " << tempFile; + std::string cmd = ss.str(); + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "SSH: Unable to cope the head of file to temp"); + } + + // upload the data (the byte ranges which are different between the original + // file and the new file) to filepath.exiv2datatemp + if (ssh_->scp(hostInfo_.Path + ".exiv2datatemp", data, size) != 0) { + throw Error(1, "SSH: Unable to copy file"); + } + + // concatenate the filepath.exiv2datatemp to filepath.exiv2tmp + cmd = "cat " + hostInfo_.Path + ".exiv2datatemp >> " + tempFile; + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "SSH: Unable to copy the rest"); + } + + // copy the tail (from byte toByte to the end of file) of original file to filepath.exiv2tmp + ss.str(""); + ss << "tail -c+" << (to + 1) + << " " << hostInfo_.Path + << " >> " << tempFile; + cmd = ss.str(); + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "SSH: Unable to copy the rest"); + } + + // replace the original file with filepath.exiv2tmp + cmd = "mv " + tempFile + " " + hostInfo_.Path; + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "SSH: Unable to copy the rest"); + } + + // remove filepath.exiv2datatemp + cmd = "rm " + hostInfo_.Path + ".exiv2datatemp"; + if (ssh_->runCommand(cmd, &response) != 0) { + throw Error(1, "SSH: Unable to copy the rest"); + } + } + + SshIo::SshImpl::~SshImpl() { + if (fileHandler_) sftp_close(fileHandler_); + if (ssh_) delete ssh_; + } + + SshIo::SshIo(const std::string& url, size_t blockSize) + { + p_ = new SshImpl(url, blockSize); + } +#ifdef EXV_UNICODE_PATH + SshIo::SshIo(const std::wstring& wurl, size_t blockSize) + { + p_ = new SshImpl(wurl, blockSize); + } +#endif + +#endif + + // ************************************************************************* + // free functions + + DataBuf readFile(const std::string& path) + { + FileIo file(path); + if (file.open("rb") != 0) { + throw Error(10, path, "rb", strError()); + } + struct stat st; + if (0 != ::stat(path.c_str(), &st)) { + throw Error(2, path, strError(), "::stat"); + } + DataBuf buf(st.st_size); + long len = file.read(buf.pData_, buf.size_); + if (len != buf.size_) { + throw Error(2, path, strError(), "FileIo::read"); + } + return buf; + } + +#ifdef EXV_UNICODE_PATH + DataBuf readFile(const std::wstring& wpath) + { + FileIo file(wpath); + if (file.open("rb") != 0) { + throw WError(10, wpath, "rb", strError().c_str()); + } + struct _stat st; + if (0 != ::_wstat(wpath.c_str(), &st)) { + throw WError(2, wpath, strError().c_str(), "::_wstat"); + } + DataBuf buf(st.st_size); + long len = file.read(buf.pData_, buf.size_); + if (len != buf.size_) { + throw WError(2, wpath, strError().c_str(), "FileIo::read"); + } + return buf; + } + +#endif + long writeFile(const DataBuf& buf, const std::string& path) + { + FileIo file(path); + if (file.open("wb") != 0) { + throw Error(10, path, "wb", strError()); + } + return file.write(buf.pData_, buf.size_); + } + +#ifdef EXV_UNICODE_PATH + long writeFile(const DataBuf& buf, const std::wstring& wpath) + { + FileIo file(wpath); + if (file.open("wb") != 0) { + throw WError(10, wpath, "wb", strError().c_str()); + } + return file.write(buf.pData_, buf.size_); + } + +#endif + std::string ReplaceStringInPlace(std::string subject, const std::string& search, + const std::string& replace) { + size_t pos = 0; + while((pos = subject.find(search, pos)) != std::string::npos) { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } + return subject; + } +#ifdef EXV_UNICODE_PATH + std::wstring ReplaceStringInPlace(std::wstring subject, const std::wstring& search, + const std::wstring& replace) { + std::wstring::size_type pos = 0; + while((pos = subject.find(search, pos)) != std::wstring::npos) { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } + return subject; + } +#endif +#if EXV_USE_CURL == 1 + size_t curlWriter(char* data, size_t size, size_t nmemb, + std::string* writerData) + { + if (writerData == NULL) return 0; + writerData->append(data, size*nmemb); + return size * nmemb; + } +#endif +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/bmpimage.cpp b/vendor/exiv2-0.25/src/bmpimage.cpp new file mode 100644 index 0000000..53868a9 --- /dev/null +++ b/vendor/exiv2-0.25/src/bmpimage.cpp @@ -0,0 +1,159 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: bmpimage.cpp + Version: $Rev: 3777 $ + Author(s): Marco Piovanelli, Ovolab (marco) + History: 05-Mar-2007, marco: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: bmpimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "bmpimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + BmpImage::BmpImage(BasicIo::AutoPtr io) + : Image(ImageType::bmp, mdNone, io) + { + } // BmpImage::BmpImage + + std::string BmpImage::mimeType() const + { + return "image/x-ms-bmp"; + } + + void BmpImage::setExifData(const ExifData& /*exifData*/) + { + // Todo: implement me! + throw(Error(32, "Exif metadata", "BMP")); + } + + void BmpImage::setIptcData(const IptcData& /*iptcData*/) + { + // Todo: implement me! + throw(Error(32, "IPTC metadata", "BMP")); + } + + void BmpImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "BMP")); + } + + void BmpImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::BmpImage::readMetadata: Reading Windows bitmap file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isBmpType(*io_, false)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "BMP"); + } + clearMetadata(); + + /* + The Windows bitmap header goes as follows -- all numbers are in little-endian byte order: + + offset length name description + ====== ======= ===================== ======= + 0 2 bytes signature always 'BM' + 2 4 bytes bitmap size + 6 4 bytes reserved + 10 4 bytes bitmap offset + 14 4 bytes header size + 18 4 bytes bitmap width + 22 4 bytes bitmap height + 26 2 bytes plane count + 28 2 bytes depth + 30 4 bytes compression 0 = none; 1 = RLE, 8 bits/pixel; 2 = RLE, 4 bits/pixel; 3 = bitfield; 4 = JPEG; 5 = PNG + 34 4 bytes image size size of the raw bitmap data, in bytes + 38 4 bytes horizontal resolution (in pixels per meter) + 42 4 bytes vertical resolution (in pixels per meter) + 46 4 bytes color count + 50 4 bytes important colors number of "important" colors + */ + byte buf[54]; + if (io_->read(buf, sizeof(buf)) == sizeof(buf)) + { + pixelWidth_ = getLong(buf + 18, littleEndian); + pixelHeight_ = getLong(buf + 22, littleEndian); + } + } // BmpImage::readMetadata + + void BmpImage::writeMetadata() + { + // Todo: implement me! + throw(Error(31, "BMP")); + } // BmpImage::writeMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newBmpInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new BmpImage(io)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isBmpType(BasicIo& iIo, bool advance) + { + const int32_t len = 2; + const unsigned char BmpImageId[2] = { 'B', 'M' }; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) + { + return false; + } + bool matched = (memcmp(buf, BmpImageId, len) == 0); + if (!advance || !matched) + { + iIo.seek(-len, BasicIo::cur); + } + return matched; + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/canonmn.cpp b/vendor/exiv2-0.25/src/canonmn.cpp new file mode 100644 index 0000000..50836ae --- /dev/null +++ b/vendor/exiv2-0.25/src/canonmn.cpp @@ -0,0 +1,1868 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: canonmn.cpp + Version: $Rev: 3835 $ + Author(s): Andreas Huggel (ahu) + David Cannings (dc) + Andi Clemens (ac) + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: canonmn.cpp 3835 2015-05-22 03:18:31Z nkbj $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "canonmn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "exif.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! OffOn, multiple tags + extern const TagDetails canonOffOn[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Special treatment pretty-print function for non-unique lens ids. + std::ostream& printCsLensByFocalLengthAndMaxAperture(std::ostream& os, + const Value& value, + const ExifData* metadata); + std::ostream& printCsLensByFocalLength(std::ostream& os, + const Value& value, + const ExifData* metadata); + + //! ModelId, tag 0x0010 + extern const TagDetails canonModelId[] = { + { (long int)0x1010000, "PowerShot A30" }, + { (long int)0x1040000, "PowerShot S300 / Digital IXUS 300 / IXY Digital 300" }, + { (long int)0x1060000, "PowerShot A20" }, + { (long int)0x1080000, "PowerShot A10" }, + { (long int)0x1090000, "PowerShot S110 / Digital IXUS v / IXY Digital 200" }, + { (long int)0x1100000, "PowerShot G2" }, + { (long int)0x1110000, "PowerShot S40" }, + { (long int)0x1120000, "PowerShot S30" }, + { (long int)0x1130000, "PowerShot A40" }, + { (long int)0x1140000, "EOS D30" }, + { (long int)0x1150000, "PowerShot A100" }, + { (long int)0x1160000, "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a" }, + { (long int)0x1170000, "PowerShot A200" }, + { (long int)0x1180000, "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a" }, + { (long int)0x1190000, "PowerShot G3" }, + { (long int)0x1210000, "PowerShot S45" }, + { (long int)0x1230000, "PowerShot SD100 / Digital IXUS II / IXY Digital 30" }, + { (long int)0x1240000, "PowerShot S230 / Digital IXUS v3 / IXY Digital 320" }, + { (long int)0x1250000, "PowerShot A70" }, + { (long int)0x1260000, "PowerShot A60" }, + { (long int)0x1270000, "PowerShot S400 / Digital IXUS 400 / IXY Digital 400" }, + { (long int)0x1290000, "PowerShot G5" }, + { (long int)0x1300000, "PowerShot A300" }, + { (long int)0x1310000, "PowerShot S50" }, + { (long int)0x1340000, "PowerShot A80" }, + { (long int)0x1350000, "PowerShot SD10 / Digital IXUS i / IXY Digital L" }, + { (long int)0x1360000, "PowerShot S1 IS" }, + { (long int)0x1370000, "PowerShot Pro1" }, + { (long int)0x1380000, "PowerShot S70" }, + { (long int)0x1390000, "PowerShot S60" }, + { (long int)0x1400000, "PowerShot G6" }, + { (long int)0x1410000, "PowerShot S500 / Digital IXUS 500 / IXY Digital 500" }, + { (long int)0x1420000, "PowerShot A75" }, + { (long int)0x1440000, "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a" }, + { (long int)0x1450000, "PowerShot A400" }, + { (long int)0x1470000, "PowerShot A310" }, + { (long int)0x1490000, "PowerShot A85" }, + { (long int)0x1520000, "PowerShot S410 / Digital IXUS 430 / IXY Digital 450" }, + { (long int)0x1530000, "PowerShot A95" }, + { (long int)0x1540000, "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50" }, + { (long int)0x1550000, "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40" }, + { (long int)0x1560000, "PowerShot A520" }, + { (long int)0x1570000, "PowerShot A510" }, + { (long int)0x1590000, "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2" }, + { (long int)0x1640000, "PowerShot S2 IS" }, + { (long int)0x1650000, "PowerShot SD430 / IXUS Wireless / IXY Wireless" }, + { (long int)0x1660000, "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600" }, + { (long int)0x1668000, "EOS D60" }, + { (long int)0x1700000, "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3" }, + { (long int)0x1740000, "PowerShot A430" }, + { (long int)0x1750000, "PowerShot A410" }, + { (long int)0x1760000, "PowerShot S80" }, + { (long int)0x1780000, "PowerShot A620" }, + { (long int)0x1790000, "PowerShot A610" }, + { (long int)0x1800000, "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80" }, + { (long int)0x1810000, "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60" }, + { (long int)0x1820000, "PowerShot TX1" }, + { (long int)0x1870000, "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55" }, + { (long int)0x1880000, "PowerShot A420" }, + { (long int)0x1890000, "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000" }, + { (long int)0x1900000, "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700" }, + { (long int)0x1920000, "PowerShot A700" }, + { (long int)0x1940000, "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS" }, + { (long int)0x1950000, "PowerShot S3 IS" }, + { (long int)0x1960000, "PowerShot A540" }, + { (long int)0x1970000, "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70" }, + { (long int)0x1980000, "PowerShot G7" }, + { (long int)0x1990000, "PowerShot A530" }, + { (long int)0x2000000, "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS" }, + { (long int)0x2010000, "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4" }, + { (long int)0x2020000, "PowerShot A710 IS" }, + { (long int)0x2030000, "PowerShot A640" }, + { (long int)0x2040000, "PowerShot A630" }, + { (long int)0x2090000, "PowerShot S5 IS" }, + { (long int)0x2100000, "PowerShot A460" }, + { (long int)0x2120000, "PowerShot SD850 IS / Digital IXUS 950 IS" }, + { (long int)0x2130000, "PowerShot A570 IS" }, + { (long int)0x2140000, "PowerShot A560" }, + { (long int)0x2150000, "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90" }, + { (long int)0x2160000, "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10" }, + { (long int)0x2180000, "PowerShot A550" }, + { (long int)0x2190000, "PowerShot A450" }, + { (long int)0x2230000, "PowerShot G9" }, + { (long int)0x2240000, "PowerShot A650 IS" }, + { (long int)0x2260000, "PowerShot A720 IS" }, + { (long int)0x2290000, "PowerShot SX100 IS" }, + { (long int)0x2300000, "PowerShot SD950 IS / Digital IXUS 960 IS / IXY Digital 2000 IS" }, + { (long int)0x2310000, "PowerShot SD870 IS / Digital IXUS 860 IS / IXY Digital 910 IS" }, + { (long int)0x2320000, "PowerShot SD890 IS / Digital IXUS 970 IS / IXY Digital 820 IS" }, + { (long int)0x2360000, "PowerShot SD790 IS / Digital IXUS 90 IS / IXY Digital 95 IS" }, + { (long int)0x2370000, "PowerShot SD770 IS / Digital IXUS 85 IS / IXY Digital 25 IS" }, + { (long int)0x2380000, "PowerShot A590 IS" }, + { (long int)0x2390000, "PowerShot A580" }, + { (long int)0x2420000, "PowerShot A470" }, + { (long int)0x2430000, "PowerShot SD1100 IS / Digital IXUS 80 IS / IXY Digital 20 IS" }, + { (long int)0x2460000, "PowerShot SX1 IS" }, + { (long int)0x2470000, "PowerShot SX10 IS" }, + { (long int)0x2480000, "PowerShot A1000 IS" }, + { (long int)0x2490000, "PowerShot G10" }, + { (long int)0x2510000, "PowerShot A2000 IS" }, + { (long int)0x2520000, "PowerShot SX110 IS" }, + { (long int)0x2530000, "PowerShot SD990 IS / Digital IXUS 980 IS / IXY Digital 3000 IS" }, + { (long int)0x2540000, "PowerShot SD880 IS / Digital IXUS 870 IS / IXY Digital 920 IS" }, + { (long int)0x2550000, "PowerShot E1" }, + { (long int)0x2560000, "PowerShot D10" }, + { (long int)0x2570000, "PowerShot SD960 IS / Digital IXUS 110 IS / IXY Digital 510 IS" }, + { (long int)0x2580000, "PowerShot A2100 IS" }, + { (long int)0x2590000, "PowerShot A480" }, + { (long int)0x2600000, "PowerShot SX200 IS" }, + { (long int)0x2610000, "PowerShot SD970 IS / Digital IXUS 990 IS / IXY Digital 830 IS" }, + { (long int)0x2620000, "PowerShot SD780 IS / Digital IXUS 100 IS / IXY Digital 210 IS" }, + { (long int)0x2630000, "PowerShot A1100 IS" }, + { (long int)0x2640000, "PowerShot SD1200 IS / Digital IXUS 95 IS / IXY Digital 110 IS" }, + { (long int)0x2700000, "PowerShot G11" }, + { (long int)0x2710000, "PowerShot SX120 IS" }, + { (long int)0x2720000, "PowerShot S90" }, + { (long int)0x2750000, "PowerShot SX20 IS" }, + { (long int)0x2760000, "PowerShot SD980 IS / Digital IXUS 200 IS / IXY Digital 930 IS" }, + { (long int)0x2770000, "PowerShot SD940 IS / Digital IXUS 120 IS / IXY Digital 220 IS" }, + { (long int)0x2800000, "PowerShot A495" }, + { (long int)0x2810000, "PowerShot A490" }, + { (long int)0x2820000, "PowerShot A3100 IS / A3150 IS" }, + { (long int)0x2830000, "PowerShot A3000 IS" }, + { (long int)0x2840000, "PowerShot SD1400 IS / IXUS 130 / IXY 400F" }, + { (long int)0x2850000, "PowerShot SD1300 IS / IXUS 105 / IXY 200F" }, + { (long int)0x2860000, "PowerShot SD3500 IS / IXUS 210 / IXY 10S" }, + { (long int)0x2870000, "PowerShot SX210 IS" }, + { (long int)0x2880000, "PowerShot SD4000 IS / IXUS 300 HS / IXY 30S" }, + { (long int)0x2890000, "PowerShot SD4500 IS / IXUS 1000 HS / IXY 50S" }, + { (long int)0x2920000, "PowerShot G12" }, + { (long int)0x2930000, "PowerShot SX30 IS" }, + { (long int)0x2940000, "PowerShot SX130 IS" }, + { (long int)0x2950000, "PowerShot S95" }, + { (long int)0x2980000, "PowerShot A3300 IS" }, + { (long int)0x2990000, "PowerShot A3200 IS" }, + { (long int)0x3000000, "PowerShot ELPH 500 HS / IXUS 310 HS / IXY 31S" }, + { (long int)0x3010000, "PowerShot Pro90 IS" }, + { (long int)0x3010001, "PowerShot A800" }, + { (long int)0x3020000, "PowerShot ELPH 100 HS / IXUS 115 HS / IXY 210F" }, + { (long int)0x3030000, "PowerShot SX230 HS" }, + { (long int)0x3040000, "PowerShot ELPH 300 HS / IXUS 220 HS / IXY 410F" }, + { (long int)0x3050000, "PowerShot A2200" }, + { (long int)0x3060000, "PowerShot A1200" }, + { (long int)0x3070000, "PowerShot SX220 HS" }, + { (long int)0x3080000, "PowerShot G1 X" }, + { (long int)0x3090000, "PowerShot SX150 IS" }, + { (long int)0x3100000, "PowerShot ELPH 510 HS / IXUS 1100 HS / IXY 51S" }, + { (long int)0x3110000, "PowerShot S100 (new)" }, + { (long int)0x3130000, "PowerShot SX40 HS" }, + { (long int)0x3120000, "PowerShot ELPH 310 HS / IXUS 230 HS / IXY 600F" }, + { (long int)0x3140000, "IXY 32S" }, + { (long int)0x3160000, "PowerShot A1300" }, + { (long int)0x3170000, "PowerShot A810" }, + { (long int)0x3180000, "PowerShot ELPH 320 HS / IXUS 240 HS / IXY 420F" }, + { (long int)0x3190000, "PowerShot ELPH 110 HS / IXUS 125 HS / IXY 220F" }, + { (long int)0x3200000, "PowerShot D20" }, + { (long int)0x3210000, "PowerShot A4000 IS" }, + { (long int)0x3220000, "PowerShot SX260 HS" }, + { (long int)0x3230000, "PowerShot SX240 HS" }, + { (long int)0x3240000, "PowerShot ELPH 530 HS / IXUS 510 HS / IXY 1" }, + { (long int)0x3250000, "PowerShot ELPH 520 HS / IXUS 500 HS / IXY 3" }, + { (long int)0x3260000, "PowerShot A3400 IS" }, + { (long int)0x3270000, "PowerShot A2400 IS" }, + { (long int)0x3280000, "PowerShot A2300" }, + { (long int)0x3330000, "PowerShot G15" }, + { (long int)0x3340000, "PowerShot SX50" }, + { (long int)0x3350000, "PowerShot SX160 IS" }, + { (long int)0x3360000, "PowerShot S110 (new)" }, + { (long int)0x3370000, "PowerShot SX500 IS" }, + { (long int)0x3380000, "PowerShot N" }, + { (long int)0x3390000, "IXUS 245 HS / IXY 430F" }, + { (long int)0x3400000, "PowerShot SX280 HS" }, + { (long int)0x3410000, "PowerShot SX270 HS" }, + { (long int)0x3420000, "PowerShot A3500 IS" }, + { (long int)0x3430000, "PowerShot A2600" }, + { (long int)0x3450000, "PowerShot A1400" }, + { (long int)0x3460000, "PowerShot ELPH 130 IS / IXUS 140 / IXY 110F" }, + { (long int)0x3470000, "PowerShot ELPH 115/120 IS / IXUS 132/135 / IXY 90F/100F" }, + { (long int)0x3490000, "PowerShot ELPH 330 HS / IXUS 255 HS / IXY 610F" }, + { (long int)0x3510000, "PowerShot A2500" }, + { (long int)0x3540000, "PowerShot G16" }, + { (long int)0x3550000, "PowerShot S120" }, + { (long int)0x3560000, "PowerShot SX170 IS" }, + { (long int)0x3580000, "PowerShot SX510 HS" }, + { (long int)0x3590000, "PowerShot S200 (new)" }, + { (long int)0x3600000, "IXY 620F" }, + { (long int)0x3610000, "PowerShot N100" }, + { (long int)0x3640000, "PowerShot G1 X Mark II" }, + { (long int)0x3650000, "PowerShot D30" }, + { (long int)0x3660000, "PowerShot SX700 HS" }, + { (long int)0x3670000, "PowerShot SX600 HS" }, + { (long int)0x3680000, "PowerShot ELPH 140 IS / IXUS 150 / IXY 130" }, + { (long int)0x3690000, "PowerShot ELPH 135 / IXUS 145 / IXY 120" }, + { (long int)0x3700000, "PowerShot ELPH 340 HS / IXUS 265 HS / IXY 630" }, + { (long int)0x3710000, "PowerShot ELPH 150 IS / IXUS 155 / IXY 140" }, + { (long int)0x3740000, "EOS M3" }, + { (long int)0x3750000, "PowerShot SX60 HS" }, + { (long int)0x3760000, "PowerShot SX520 HS" }, + { (long int)0x3770000, "PowerShot SX400 IS" }, + { (long int)0x3780000, "PowerShot G7 X" }, + { (long int)0x3790000, "PowerShot N2" }, + { (long int)0x3800000, "PowerShot SX530 HS" }, + { (long int)0x3820000, "PowerShot SX710 HS" }, + { (long int)0x3830000, "PowerShot SX610 HS" }, + { (long int)0x3870000, "PowerShot ELPH 160 / IXUS 160" }, + { (long int)0x3890000, "PowerShot ELPH 170 IS / IXUS 170" }, + { (long int)0x3910000, "PowerShot SX410 HS" }, + { (long int)0x4040000, "PowerShot G1" }, + { (long int)0x6040000, "PowerShot S100 / Digital IXUS / IXY Digital" }, + { (long int)0x4007d673, "DC19/DC21/DC22" }, + { (long int)0x4007d674, "XH A1" }, + { (long int)0x4007d675, "HV10" }, + { (long int)0x4007d676, "MD130/MD140/MD150/MD160/ZR850" }, + { (long int)0x4007d777, "DC50" }, + { (long int)0x4007d778, "HV20" }, + { (long int)0x4007d779, "DC211" }, + { (long int)0x4007d77a, "HG10" }, + { (long int)0x4007d77b, "HR10" }, + { (long int)0x4007d77c, "MD255/ZR950" }, + { (long int)0x4007d81c, "HF11" }, + { (long int)0x4007d878, "HV30" }, + { (long int)0x4007d87c, "XH A1S" }, + { (long int)0x4007d87e, "DC301/DC310/DC311/DC320/DC330" }, + { (long int)0x4007d87f, "FS100" }, + { (long int)0x4007d880, "HF10" }, + { (long int)0x4007d882, "HG20/HG21" }, + { (long int)0x4007d925, "HF21" }, + { (long int)0x4007d926, "HF S11" }, + { (long int)0x4007d978, "HV40" }, + { (long int)0x4007d987, "DC410/DC411/DC420" }, + { (long int)0x4007d988, "FS19/FS20/FS21/FS22/FS200" }, + { (long int)0x4007d989, "HF20/HF200" }, + { (long int)0x4007d98a, "HF S10/S100" }, + { (long int)0x4007da8e, "HF R10/R16/R17/R18/R100/R106" }, + { (long int)0x4007da8f, "HF M30/M31/M36/M300/M306" }, + { (long int)0x4007da90, "HF S20/S21/S200" }, + { (long int)0x4007da92, "FS31/FS36/FS37/FS300/FS305/FS306/FS307" }, + { (long int)0x4007dda9, "HF G25" }, + { (long int)0x80000001, "EOS-1D" }, + { (long int)0x80000167, "EOS-1DS" }, + { (long int)0x80000168, "EOS 10D" }, + { (long int)0x80000169, "EOS-1D Mark III" }, + { (long int)0x80000170, "EOS Digital Rebel / 300D / Kiss Digital" }, + { (long int)0x80000174, "EOS-1D Mark II" }, + { (long int)0x80000175, "EOS 20D" }, + { (long int)0x80000176, "EOS Digital Rebel XSi / 450D / Kiss X2" }, + { (long int)0x80000188, "EOS-1Ds Mark II" }, + { (long int)0x80000189, "EOS Digital Rebel XT / 350D / Kiss Digital N" }, + { (long int)0x80000190, "EOS 40D" }, + { (long int)0x80000213, "EOS 5D" }, + { (long int)0x80000215, "EOS-1Ds Mark III" }, + { (long int)0x80000218, "EOS 5D Mark II" }, + { (long int)0x80000219, "WFT-E1" }, + { (long int)0x80000232, "EOS-1D Mark II N" }, + { (long int)0x80000234, "EOS 30D" }, + { (long int)0x80000236, "EOS Digital Rebel XTi / 400D / Kiss Digital X" }, + { (long int)0x80000241, "WFT-E2" }, + { (long int)0x80000246, "WFT-E3" }, + { (long int)0x80000250, "EOS 7D" }, + { (long int)0x80000252, "EOS Rebel T1i / 500D / Kiss X3" }, + { (long int)0x80000254, "EOS Rebel XS / 1000D / Kiss F" }, + { (long int)0x80000261, "EOS 50D" }, + { (long int)0x80000269, "EOS-1D X" }, + { (long int)0x80000270, "EOS Rebel T2i / 550D / Kiss X4" }, + { (long int)0x80000271, "WFT-E4" }, + { (long int)0x80000273, "WFT-E5" }, + { (long int)0x80000281, "EOS-1D Mark IV" }, + { (long int)0x80000285, "EOS 5D Mark III" }, + { (long int)0x80000286, "EOS Rebel T3i / 600D / Kiss X5" }, + { (long int)0x80000287, "EOS 60D" }, + { (long int)0x80000288, "EOS Rebel T3 / 1100D / Kiss X50" }, + { (long int)0x80000289, "EOS 7D Mark II" }, + { (long int)0x80000297, "WFT-E2 II" }, + { (long int)0x80000298, "WFT-E4 II" }, + { (long int)0x80000301, "EOS Rebel T4i / 650D / Kiss X6i" }, + { (long int)0x80000302, "EOS 6D" }, + { (long int)0x80000324, "EOS-1D C" }, + { (long int)0x80000325, "EOS 70D" }, + { (long int)0x80000326, "EOS Rebel T5i / 700D / Kiss X7i" }, + { (long int)0x80000327, "EOS Rebel T5 / 1200D / Kiss X70" }, + { (long int)0x80000331, "EOS M" }, + { (long int)0x80000355, "EOS M2" }, + { (long int)0x80000346, "EOS Rebel SL1 / 100D / Kiss X7" }, + { (long int)0x80000347, "EOS Rebel T6s / 760D / 8000D" }, + { (long int)0x80000382, "EOS 5DS" }, + { (long int)0x80000393, "EOS Rebel T6i / 750D / Kiss X8i" }, + { (long int)0x80000401, "EOS 5DS R" } + }; + + //! SerialNumberFormat, tag 0x0015 + extern const TagDetails canonSerialNumberFormat[] = { + { (long int)0x90000000, N_("Format 1") }, + { (long int)0xa0000000, N_("Format 2") }, + }; + + //! SuperMacro, tag 0x001a + extern const TagDetails canonSuperMacro[] = { + { 0, N_("Off") }, + { 1, N_("On (1)") }, + { 2, N_("On (2)") } + }; + + //! ColorSpace, tag 0x00b4 + extern const TagDetails canonColorSpace[] = { + { 1, N_("sRGB") }, + { 2, N_("Adobe RGB") } + }; + + // Canon MakerNote Tag Info + const TagInfo CanonMakerNote::tagInfo_[] = { + TagInfo(0x0000, "0x0000", "0x0000", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0001, "CameraSettings", N_("Camera Settings"), N_("Various camera settings"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0002, "FocalLength", N_("Focal Length"), N_("Focal length"), canonId, makerTags, unsignedShort, -1, printFocalLength), + TagInfo(0x0003, "0x0003", "0x0003", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0004, "ShotInfo", N_("Shot Info"), N_("Shot information"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0005, "Panorama", N_("Panorama"), N_("Panorama"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0006, "ImageType", N_("Image Type"), N_("Image type"), canonId, makerTags, asciiString, -1, printValue), + TagInfo(0x0007, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), canonId, makerTags, asciiString, -1, printValue), + TagInfo(0x0008, "FileNumber", N_("File Number"), N_("File number"), canonId, makerTags, unsignedLong, -1, print0x0008), + TagInfo(0x0009, "OwnerName", N_("Owner Name"), N_("Owner Name"), canonId, makerTags, asciiString, -1, printValue), + TagInfo(0x000c, "SerialNumber", N_("Serial Number"), N_("Camera serial number"), canonId, makerTags, unsignedLong, -1, print0x000c), + TagInfo(0x000d, "CameraInfo", N_("Camera Info"), N_("Camera info"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x000f, "CustomFunctions", N_("Custom Functions"), N_("Custom Functions"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0010, "ModelID", N_("ModelID"), N_("Model ID"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonModelId)), + TagInfo(0x0012, "PictureInfo", N_("Picture Info"), N_("Picture info"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0013, "ThumbnailImageValidArea", N_("Thumbnail Image Valid Area"), N_("Thumbnail image valid area"), canonId, makerTags, signedShort, -1, printValue), + TagInfo(0x0015, "SerialNumberFormat", N_("Serial Number Format"), N_("Serial number format"), canonId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(canonSerialNumberFormat)), + TagInfo(0x001a, "SuperMacro", N_("Super Macro"), N_("Super macro"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonSuperMacro)), + TagInfo(0x0026, "AFInfo", N_("AF Info"), N_("AF info"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0083, "OriginalDecisionDataOffset", N_("Original Decision Data Offset"), N_("Original decision data offset"), canonId, makerTags, signedLong, -1, printValue), + TagInfo(0x00a4, "WhiteBalanceTable", N_("White Balance Table"), N_("White balance table"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0095, "LensModel", N_("Lens Model"), N_("Lens model"), canonId, makerTags, asciiString, -1, printValue), + TagInfo(0x0096, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), canonId, makerTags, asciiString, -1, printValue), + TagInfo(0x0097, "DustRemovalData", N_("Dust Removal Data"), N_("Dust removal data"), canonId, makerTags, asciiString, -1, printValue), + TagInfo(0x0099, "CustomFunctions", N_("Custom Functions"), N_("Custom functions"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00a0, "ProcessingInfo", N_("Processing Info"), N_("Processing info"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00aa, "MeasuredColor", N_("Measured Color"), N_("Measured color"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00b4, "ColorSpace", N_("ColorSpace"), N_("ColorSpace"), canonId, makerTags, signedShort, -1, EXV_PRINT_TAG(canonColorSpace)), + TagInfo(0x00b5, "0x00b5", "0x00b5", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00c0, "0x00c0", "0x00c0", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00c1, "0x00c1", "0x00c1", N_("Unknown"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00d0, "VRDOffset", N_("VRD Offset"), N_("VRD offset"), canonId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x00e0, "SensorInfo", N_("Sensor Info"), N_("Sensor info"), canonId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x4001, "ColorData", N_("Color Data"), N_("Color data"), canonId, makerTags, unsignedShort, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownCanonMakerNoteTag)", "(UnknownCanonMakerNoteTag)", N_("Unknown CanonMakerNote tag"), canonId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* CanonMakerNote::tagList() + { + return tagInfo_; + } + + //! Macro, tag 0x0001 + extern const TagDetails canonCsMacro[] = { + { 1, N_("On") }, + { 2, N_("Off") } + }; + + //! Quality, tag 0x0003 + extern const TagDetails canonCsQuality[] = { + { 1, N_("Economy") }, + { 2, N_("Normal") }, + { 3, N_("Fine") }, + { 4, N_("RAW") }, + { 5, N_("Superfine") }, + { 130, N_("Normal Movie") }, + { 131, N_("Movie (2)") } + }; + + //! FlashMode, tag 0x0004 + extern const TagDetails canonCsFlashMode[] = { + { 0, N_("Off") }, + { 1, N_("Auto") }, + { 2, N_("On") }, + { 3, N_("Red-eye") }, + { 4, N_("Slow sync") }, + { 5, N_("Auto + red-eye") }, + { 6, N_("On + red-eye") }, + { 16, N_("External") }, + { 16, N_("External") } // To silence compiler warning + }; + + //! DriveMode, tag 0x0005 + extern const TagDetails canonCsDriveMode[] = { + { 0, N_("Single / timer") }, + { 1, N_("Continuous") }, + { 2, N_("Movie") }, + { 3, N_("Continuous, speed priority") }, + { 4, N_("Continuous, low") }, + { 5, N_("Continuous, high") } + }; + + //! FocusMode, tag 0x0007 + extern const TagDetails canonCsFocusMode[] = { + { 0, N_("One shot AF") }, + { 1, N_("AI servo AF") }, + { 2, N_("AI focus AF") }, + { 3, N_("Manual focus") }, + { 4, N_("Single") }, + { 5, N_("Continuous") }, + { 6, N_("Manual focus") }, + { 16, N_("Pan focus") }, + { 16, N_("Pan focus") } // To silence compiler warning + }; + + //! ImageSize, tag 0x000a + extern const TagDetails canonCsImageSize[] = { + { 0, N_("Large") }, + { 1, N_("Medium") }, + { 2, N_("Small") }, + { 5, N_("Medium 1") }, + { 6, N_("Medium 2") }, + { 7, N_("Medium 3") } + }; + + //! EasyMode, tag 0x000b + extern const TagDetails canonCsEasyMode[] = { + { 0, N_("Full auto") }, + { 1, N_("Manual") }, + { 2, N_("Landscape") }, + { 3, N_("Fast shutter") }, + { 4, N_("Slow shutter") }, + { 5, N_("Night Scene") }, + { 6, N_("Gray scale") }, + { 7, N_("Sepia") }, + { 8, N_("Portrait") }, + { 9, N_("Sports") }, + { 10, N_("Macro / close-up") }, + { 11, N_("Black & white") }, + { 12, N_("Pan focus") }, + { 13, N_("Vivid") }, + { 14, N_("Neutral") }, + { 15, N_("Flash off") }, + { 16, N_("Long shutter") }, + { 17, N_("Super macro") }, + { 18, N_("Foliage") }, + { 19, N_("Indoor") }, + { 20, N_("Fireworks") }, + { 21, N_("Beach") }, + { 22, N_("Underwater") }, + { 23, N_("Snow") }, + { 24, N_("Kids & pets") }, + { 25, N_("Night SnapShot") }, + { 26, N_("Digital macro") }, + { 27, N_("My Colors") }, + { 28, N_("Still image") } + }; + + //! DigitalZoom, tag 0x000c + extern const TagDetails canonCsDigitalZoom[] = { + { 0, N_("None") }, + { 1, "2x" }, + { 2, "4x" }, + { 3, N_("Other") }, + { 3, N_("Other") } // To silence compiler warning + }; + + //! Contrast, Saturation Sharpness, tags 0x000d, 0x000e, 0x000f + extern const TagDetails canonCsLnh[] = { + { 0xffff, N_("Low") }, + { 0x0000, N_("Normal") }, + { 0x0001, N_("High") } + }; + + //! ISOSpeeds, tag 0x0010 + extern const TagDetails canonCsISOSpeed[] = { + { 0, N_("n/a") }, + { 14, N_("Auto High") }, + { 15, N_("Auto") }, + { 16, "50" }, + { 17, "100" }, + { 18, "200" }, + { 19, "400" }, + { 20, "800" }, + { 16464, "80" }, + { 16484, "100" }, + { 16584, "200" }, + { 16784, "400" }, + { 17184, "800" }, + { 17984, "1600" }, + { 19584, "3200" } + }; + + //! MeteringMode, tag 0x0011 + extern const TagDetails canonCsMeteringMode[] = { + { 0, N_("Default") }, + { 1, N_("Spot") }, + { 2, N_("Average") }, + { 3, N_("Evaluative") }, + { 4, N_("Partial") }, + { 5, N_("Center weighted") } + }; + + //! FocusType, tag 0x0012 + extern const TagDetails canonCsFocusType[] = { + { 0, N_("Manual") }, + { 1, N_("Auto") }, + { 2, N_("Not known") }, + { 3, N_("Macro") }, + { 4, N_("Very close") }, + { 5, N_("Close") }, + { 6, N_("Middle range") }, + { 7, N_("Far range") }, + { 8, N_("Pan focus") }, + { 9, N_("Super macro") }, + { 10, N_("Infinity") } + }; + + //! AFPoint, tag 0x0013 + extern const TagDetails canonCsAfPoint[] = { + { 0x2005, N_("Manual AF point selection") }, + { 0x3000, N_("None (MF)") }, + { 0x3001, N_("Auto-selected") }, + { 0x3002, N_("Right") }, + { 0x3003, N_("Center") }, + { 0x3004, N_("Left") }, + { 0x4001, N_("Auto AF point selection") } + }; + + //! ExposureProgram, tag 0x0014 + extern const TagDetails canonCsExposureProgram[] = { + { 0, N_("Easy shooting (Auto)") }, + { 1, N_("Program (P)") }, + { 2, N_("Shutter priority (Tv)") }, + { 3, N_("Aperture priority (Av)") }, + { 4, N_("Manual (M)") }, + { 5, N_("A-DEP") }, + { 6, N_("M-DEP") } + }; + + //! LensType, tag 0x0016 + extern const TagDetails canonCsLensType[] = { + { 1, "Canon EF 50mm f/1.8" }, + { 2, "Canon EF 28mm f/2.8" }, + { 3, "Canon EF 135mm f/2.8 Soft" }, + { 4, "Canon EF 35-105mm f/3.5-4.5" }, // 0 + { 4, "Sigma UC Zoom 35-135mm f/4-5.6" }, // 1 + { 5, "Canon EF 35-70mm f/3.5-4.5" }, + { 6, "Canon EF 28-70mm f/3.5-4.5" }, // 0 + { 6, "Sigma 18-50mm f/3.5-5.6 DC" }, // 1 + { 6, "Sigma 18-125mm f/3.5-5.6 DC IF ASP" }, // 2 + { 6, "Tokina AF193-2 19-35mm f/3.5-4.5" }, // 3 + { 6, "Sigma 28-80mm f/3.5-5.6 II Macro" }, // 4 + { 7, "Canon EF 100-300mm f/5.6L" }, + { 8, "Canon EF 100-300mm f/5.6" }, // 0 + { 8, "Sigma 70-300mm f/4-5.6 [APO] DG Macro" }, // 1 + { 8, "Tokina AT-X 242 AF 24-200mm f/3.5-5.6" }, // 2 + { 9, "Canon EF 70-210mm f/4" }, // 0 + { 9, "Sigma 55-200mm f/4-5.6 DC" }, // 1 + { 10, "Canon EF 50mm f/2.5 Macro" }, // 0 + { 10, "Sigma 50mm f/2.8 EX" }, // 1 + { 10, "Sigma 28mm f/1.8" }, // 2 + { 10, "Sigma 105mm f/2.8 Macro EX" }, // 3 + { 10, "Sigma 70mm f/2.8 EX DG Macro EF" }, // 4 + { 11, "Canon EF 35mm f/2" }, + { 13, "Canon EF 15mm f/2.8 Fisheye" }, + { 14, "Canon EF 50-200mm f/3.5-4.5L" }, + { 15, "Canon EF 50-200mm f/3.5-4.5" }, + { 16, "Canon EF 35-135mm f/3.5-4.5" }, + { 17, "Canon EF 35-70mm f/3.5-4.5A" }, + { 18, "Canon EF 28-70mm f/3.5-4.5" }, + { 20, "Canon EF 100-200mm f/4.5A" }, + { 21, "Canon EF 80-200mm f/2.8L" }, + { 22, "Canon EF 20-35mm f/2.8L" }, // 0 + { 22, "Tokina AT-X 280 AF PRO 28-80mm f/2.8 Aspherical" }, // 1 + { 23, "Canon EF 35-105mm f/3.5-4.5" }, + { 24, "Canon EF 35-80mm f/4-5.6 Power Zoom" }, + { 25, "Canon EF 35-80mm f/4-5.6 Power Zoom" }, + { 26, "Canon EF 100mm f/2.8 Macro" }, // 0 + { 26, "Cosina 100mm f/3.5 Macro AF" }, // 1 + { 26, "Tamron SP AF 90mm f/2.8 Di Macro" }, // 2 + { 26, "Tamron SP AF 180mm f/3.5 Di Macro" }, // 3 + { 26, "Carl Zeiss Planar T* 50mm f/1.4" }, // 4 + { 27, "Canon EF 35-80mm f/4-5.6" }, + { 28, "Canon EF 80-200mm f/4.5-5.6" }, // 0 + { 28, "Tamron SP AF 28-105mm f/2.8 LD Aspherical IF" }, // 1 + { 28, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro" }, // 2 + { 28, "Tamron AF 70-300mm f/4-5.6 Di LD 1:2 Macro" }, // 3 + { 28, "Tamron AF Aspherical 28-200mm f/3.8-5.6" }, // 4 + { 29, "Canon EF 50mm f/1.8 II" }, + { 30, "Canon EF 35-105mm f/4.5-5.6" }, + { 31, "Canon EF 75-300mm f/4-5.6" }, // 0 + { 31, "Tamron SP AF 300mm f/2.8 LD IF" }, // 1 + { 32, "Canon EF 24mm f/2.8" }, // 0 + { 32, "Sigma 15mm f/2.8 EX Fisheye" }, // 1 + { 33, "Voigtlander or Carl Zeiss Lens" }, // 0 + { 33, "Voigtlander Ultron 40mm f/2 SLII Aspherical" }, // 1 + { 33, "Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical" }, // 2 + { 33, "Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus" }, // 3 + { 33, "Carl Zeiss Distagon 15mm T* f/2.8 ZE" }, // 4 + { 33, "Carl Zeiss Distagon 18mm T* f/3.5 ZE" }, // 5 + { 33, "Carl Zeiss Distagon 21mm T* f/2.8 ZE" }, // 6 + { 33, "Carl Zeiss Distagon 25mm T* f/2 ZE" }, // 7 + { 33, "Carl Zeiss Distagon 28mm T* f/2 ZE" }, // 8 + { 33, "Carl Zeiss Distagon 35mm T* f/2 ZE" }, // 9 + { 33, "Carl Zeiss Distagon 35mm T* f/1.4 ZE" }, // 10 + { 33, "Carl Zeiss Planar 50mm T* f/1.4 ZE" }, // 11 + { 33, "Carl Zeiss Makro-Planar T* 50mm f/2 ZE" }, // 12 + { 33, "Carl Zeiss Makro-Planar T* 100mm f/2 ZE" }, // 13 + { 33, "Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE" }, // 14 + { 35, "Canon EF 35-80mm f/4-5.6" }, + { 36, "Canon EF 38-76mm f/4.5-5.6" }, + { 37, "Canon EF 35-80mm f/4-5.6" }, // 0 + { 37, "Tamron 70-200mm f/2.8 Di LD IF Macro" }, // 1 + { 37, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20" }, // 2 + { 37, "Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF] " }, // 3 + { 37, "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro" }, // 4 + { 38, "Canon EF 80-200mm f/4.5-5.6" }, + { 39, "Canon EF 75-300mm f/4-5.6" }, + { 40, "Canon EF 28-80mm f/3.5-5.6" }, + { 41, "Canon EF 28-90mm f/4-5.6" }, + { 42, "Canon EF 28-200mm f/3.5-5.6" }, // 0 + { 42, "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro Model A20" }, // 1 + { 43, "Canon EF 28-105mm f/4-5.6" }, + { 44, "Canon EF 90-300mm f/4.5-5.6" }, + { 45, "Canon EF-S 18-55mm f/3.5-5.6" }, + { 46, "Canon EF 28-90mm f/4-5.6" }, + { 48, "Canon EF-S 18-55mm f/3.5-5.6 IS" }, + { 49, "Canon EF-S 55-250mm f/4-5.6 IS" }, + { 50, "Canon EF-S 18-200mm f/3.5-5.6 IS" }, + { 51, "Canon EF-S 18-135mm f/3.5-5.6 IS" }, + { 52, "Canon EF-S 18-55mm f/3.5-5.6 IS II" }, + { 53, "Canon EF-S 18-55mm f/3.5-5.6 III" }, + { 54, "Canon EF-S 55-250mm f/4-5.6 IS II" }, + { 94, "Canon TS-E 17mm f/4L" }, + { 95, "Canon TS-E 24.0mm f/3.5 L II" }, + { 124, "Canon MP-E 65mm f/2.8 1-5x Macro Photo" }, + { 125, "Canon TS-E 24mm f/3.5L" }, + { 126, "Canon TS-E 45mm f/2.8" }, + { 127, "Canon TS-E 90mm f/2.8" }, + { 129, "Canon EF 300mm f/2.8L" }, + { 130, "Canon EF 50mm f/1.0L" }, + { 131, "Canon EF 28-80mm f/2.8-4L" }, // 0 + { 131, "Sigma 8mm f/3.5 EX DG Circular Fisheye" }, // 1 + { 131, "Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM" }, // 2 + { 131, "Sigma 17-70mm f/2.8-4.5 DC Macro" }, // 3 + { 131, "Sigma APO 50-150mm f/2.8 EX DC HSM" }, // 4 + { 131, "Sigma APO 120-300mm f/2.8 EX DG HSM" }, // 5 + { 131, "Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye" }, // 6 + { 131, "Sigma 70-200mm f/2.8 APO EX HSM" }, // 7 + { 132, "Canon EF 1200mm f/5.6L" }, + { 134, "Canon EF 600mm f/4L IS" }, + { 135, "Canon EF 200mm f/1.8L" }, + { 136, "Canon EF 300mm f/2.8L" }, + { 137, "Canon EF 85mm f/1.2L" }, // 0 + { 137, "Sigma 18-50mm f/2.8-4.5 DC OS HSM" }, // 1 + { 137, "Sigma 50-200mm f/4-5.6 DC OS HSM" }, // 2 + { 137, "Sigma 18-250mm f/3.5-6.3 DC OS HSM" }, // 3 + { 137, "Sigma 24-70mm f/2.8 IF EX DG HSM" }, // 4 + { 137, "Sigma 18-125mm f/3.8-5.6 DC OS HSM" }, // 5 + { 137, "Sigma 17-70mm f/2.8-4 DC Macro OS HSM" }, // 6 + { 137, "Sigma 17-50mm f/2.8 OS HSM" }, // 7 + { 137, "Sigma 18-200mm f/3.5-6.3 II DC OS HSM" }, // 8 + { 137, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD" }, // 9 + { 137, "Sigma 8-16mm f/4.5-5.6 DC HSM" }, // 10 + { 137, "Tamron SP 17-50mm f/2.8 XR Di II VC" }, // 11 + { 137, "Tamron SP 60mm f/2 Macro Di II" }, // 12 + { 137, "Sigma 10-20mm f/3.5 EX DC HSM" }, // 13 + { 137, "Tamron SP 24-70mm f/2.8 Di VC USD" }, // 14 + { 137, "Sigma 18-35mm f/1.8 DC HSM" }, // 15 + { 137, "Sigma 12-24mm f/4.5-5.6 DG HSM II" }, // 16 + { 138, "Canon EF 28-80mm f/2.8-4L" }, + { 139, "Canon EF 400mm f/2.8L" }, + { 140, "Canon EF 500mm f/4.5L" }, + { 141, "Canon EF 500mm f/4.5L" }, + { 142, "Canon EF 300mm f/2.8L IS" }, + { 143, "Canon EF 500mm f/4L IS" }, + { 144, "Canon EF 35-135mm f/4-5.6 USM" }, + { 145, "Canon EF 100-300mm f/4.5-5.6 USM" }, + { 146, "Canon EF 70-210mm f/3.5-4.5 USM" }, + { 147, "Canon EF 35-135mm f/4-5.6 USM" }, + { 148, "Canon EF 28-80mm f/3.5-5.6 USM" }, + { 149, "Canon EF 100mm f/2 USM" }, + { 150, "Canon EF 14mm f/2.8L" }, // 0 + { 150, "Sigma 20mm EX f/1.8" }, // 1 + { 150, "Sigma 30mm f/1.4 DC HSM" }, // 2 + { 150, "Sigma 24mm f/1.8 DG Macro EX" }, // 3 + { 150, "Sigma 28mm f/1.8 DG Macro EX" }, // 4 + { 151, "Canon EF 200mm f/2.8L" }, + { 152, "Canon EF 300mm f/4L IS" }, // 0 + { 152, "Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM" }, // 1 + { 152, "Sigma 14mm f/2.8 EX Aspherical HSM" }, // 2 + { 152, "Sigma 10-20mm f/4-5.6" }, // 3 + { 152, "Sigma 100-300mm f/4" }, // 4 + { 153, "Canon EF 35-350mm f/3.5-5.6L" }, // 0 + { 153, "Sigma 50-500mm f/4-6.3 APO HSM EX" }, // 1 + { 153, "Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro" }, // 2 + { 153, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro Model A14" }, // 3 + { 153, "Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro" }, // 4 + { 154, "Canon EF 20mm f/2.8 USM" }, + { 155, "Canon EF 85mm f/1.8 USM" }, + { 156, "Canon EF 28-105mm f/3.5-4.5 USM" }, // 0 + { 156, "Tamron SP 70-300mm f/4-5.6 Di VC USD" }, // 1 + { 160, "Canon EF 20-35mm f/3.5-4.5 USM" }, // 0 + { 160, "Tamron AF 19-35mm f/3.5-4.5" }, // 1 + { 160, "Tokina AT-X 124 AF 12-24mm f/4 DX" }, // 2 + { 160, "Tokina AT-X 107 AF DX Fish-eye 10-17mm f/3.5-4.5" }, // 3 + { 160, "Tokina AT-X 116 PRO DX AF 11-16mm f/2.8" }, // 4 + { 161, "Canon EF 28-70mm f/2.8L" }, // 0 + { 161, "Sigma 24-70mm EX f/2.8" }, // 1 + { 161, "Sigma 28-70mm f/2.8 EX" }, // 2 + { 161, "Sigma 24-60mm f/2.8 EX DG" }, // 3 + { 161, "Tamron AF 17-50mm f/2.8 Di-II LD Aspherical" }, // 4 + { 161, "Tamron 90mm f/2.8" }, // 5 + { 161, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF" }, // 6 + { 161, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro" }, // 7 + { 162, "Canon EF 200mm f/2.8L" }, + { 163, "Canon EF 300mm f/4L" }, + { 164, "Canon EF 400mm f/5.6L" }, + { 165, "Canon EF 70-200mm f/2.8 L" }, + { 166, "Canon EF 70-200mm f/2.8 L + 1.4x" }, + { 167, "Canon EF 70-200mm f/2.8 L + 2x" }, + { 168, "Canon EF 28mm f/1.8 USM" }, + { 169, "Canon EF 17-35mm f/2.8L" }, // 0 + { 169, "Sigma 18-200mm f/3.5-6.3 DC OS" }, // 1 + { 169, "Sigma 15-30mm f/3.5-4.5 EX DG Aspherical" }, // 2 + { 169, "Sigma 18-50mm f/2.8 Macro" }, // 3 + { 169, "Sigma 50mm f/1.4 EX DG HSM" }, // 4 + { 169, "Sigma 85mm f/1.4 EX DG HSM" }, // 5 + { 169, "Sigma 30mm f/1.4 EX DC HSM" }, // 6 + { 169, "Sigma 35mm f/1.4 DG HSM" }, // 7 + { 170, "Canon EF 200mm f/2.8L II" }, + { 171, "Canon EF 300mm f/4L" }, + { 172, "Canon EF 400mm f/5.6L" }, // 0 + { 172, "Sigma 150-600mm f/5-6.3 DG OS HSM | S" }, // 1 + { 173, "Canon EF 180mm Macro f/3.5L" }, // 0 + { 173, "Sigma 180mm EX HSM Macro f/3.5" }, // 1 + { 173, "Sigma APO Macro 150mm f/3.5 EX DG IF HSM" }, // 2 + { 174, "Canon EF 135mm f/2L" }, // 0 + { 174, "Sigma 70-200mm f/2.8 EX DG APO OS HSM" }, // 1 + { 174, "Sigma 50-500mm f/4.5-6.3 APO DG OS HSM" }, // 2 + { 174, "Sigma 150-500mm f/5-6.3 APO DG OS HSM" }, // 3 + { 175, "Canon EF 400mm f/2.8L" }, + { 176, "Canon EF 24-85mm f/3.5-4.5 USM" }, + { 177, "Canon EF 300mm f/4L IS" }, + { 178, "Canon EF 28-135mm f/3.5-5.6 IS" }, + { 179, "Canon EF 24mm f/1.4L" }, + { 180, "Canon EF 35mm f/1.4L" }, // 0 + { 180, "Sigma 50mm f/1.4 DG HSM | A" }, // 1 + { 180, "Sigma 24mm f/1.4 DG HSM | A" }, // 2 + { 181, "Canon EF 100-400mm f/4.5-5.6L IS + 1.4x" }, + { 182, "Canon EF 100-400mm f/4.5-5.6L IS + 2x" }, + { 183, "Canon EF 100-400mm f/4.5-5.6L IS" }, // 0 + { 183, "Sigma 150mm f/2.8 EX DG OS HSM APO Macro" }, // 1 + { 183, "Sigma 105mm f/2.8 EX DG OS HSM Macro" }, // 2 + { 183, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro" }, // 3 + { 183, "Sigma 150-600mm f/5-6.3 DG OS HSM | C" }, // 4 + { 184, "Canon EF 400mm f/2.8L + 2x" }, + { 185, "Canon EF 600mm f/4L IS" }, + { 186, "Canon EF 70-200mm f/4L" }, + { 187, "Canon EF 70-200mm f/4L + 1.4x" }, + { 188, "Canon EF 70-200mm f/4L + 2x" }, + { 189, "Canon EF 70-200mm f/4L + 2.8x" }, + { 190, "Canon EF 100mm f/2.8 Macro USM" }, + { 191, "Canon EF 400mm f/4 DO IS" }, + { 193, "Canon EF 35-80mm f/4-5.6 USM" }, + { 194, "Canon EF 80-200mm f/4.5-5.6 USM" }, + { 195, "Canon EF 35-105mm f/4.5-5.6 USM" }, + { 196, "Canon EF 75-300mm f/4-5.6 USM" }, + { 197, "Canon EF 75-300mm f/4-5.6 IS USM" }, + { 198, "Canon EF 50mm f/1.4 USM" }, // 0 + { 198, "Zeiss Otus 55mm f/1.4 ZE" }, // 1 + { 198, "Zeiss Otus 85mm f/1.4 ZE" }, // 2 + { 199, "Canon EF 28-80mm f/3.5-5.6 USM" }, + { 200, "Canon EF 75-300mm f/4-5.6 USM" }, + { 201, "Canon EF 28-80mm f/3.5-5.6 USM" }, + { 202, "Canon EF 28-80mm f/3.5-5.6 USM IV" }, + { 208, "Canon EF 22-55mm f/4-5.6 USM" }, + { 209, "Canon EF 55-200mm f/4.5-5.6" }, + { 210, "Canon EF 28-90mm f/4-5.6 USM" }, + { 211, "Canon EF 28-200mm f/3.5-5.6 USM" }, + { 212, "Canon EF 28-105mm f/4-5.6 USM" }, + { 213, "Canon EF 90-300mm f/4.5-5.6 USM" }, // 0 + { 213, "Tamron SP 150-600mm F/5-6.3 Di VC USD" }, // 1 + { 213, "Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro" }, // 2 + { 213, "Tamron SP 70-300mm f/4-5.6 Di VC USD" }, // 3 + { 214, "Canon EF-S 18-55mm f/3.5-5.6 USM" }, + { 215, "Canon EF 55-200mm f/4.5-5.6 II USM" }, + { 217, "Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD" }, + { 224, "Canon EF 70-200mm f/2.8L IS" }, + { 225, "Canon EF 70-200mm f/2.8L IS + 1.4x" }, + { 226, "Canon EF 70-200mm f/2.8L IS + 2x" }, + { 227, "Canon EF 70-200mm f/2.8L IS + 2.8x" }, + { 228, "Canon EF 28-105mm f/3.5-4.5 USM" }, + { 229, "Canon EF 16-35mm f/2.8L" }, + { 230, "Canon EF 24-70mm f/2.8L" }, + { 231, "Canon EF 17-40mm f/4L" }, + { 232, "Canon EF 70-300mm f/4.5-5.6 DO IS USM" }, + { 233, "Canon EF 28-300mm f/3.5-5.6L IS" }, + { 234, "Canon EF-S 17-85mm f4-5.6 IS USM" }, // 0 + { 234, "Tokina AT-X 12-28mm f/4 PRO DX" }, // 1 + { 235, "Canon EF-S 10-22mm f/3.5-4.5 USM" }, + { 236, "Canon EF-S 60mm f/2.8 Macro USM" }, + { 237, "Canon EF 24-105mm f/4L IS" }, + { 238, "Canon EF 70-300mm f/4-5.6 IS USM" }, + { 239, "Canon EF 85mm f/1.2L II" }, + { 240, "Canon EF-S 17-55mm f/2.8 IS USM" }, + { 241, "Canon EF 50mm f/1.2L" }, + { 242, "Canon EF 70-200mm f/4L IS" }, + { 243, "Canon EF 70-200mm f/4L IS + 1.4x" }, + { 244, "Canon EF 70-200mm f/4L IS + 2x" }, + { 245, "Canon EF 70-200mm f/4L IS + 2.8x" }, + { 246, "Canon EF 16-35mm f/2.8L II" }, + { 247, "Canon EF 14mm f/2.8L II USM" }, + { 248, "Canon EF 200mm f/2L IS" }, + { 249, "Canon EF 800mm f/5.6L IS" }, + { 250, "Canon EF 24 f/1.4L II" }, + { 251, "Canon EF 70-200mm f/2.8L IS II USM" }, + { 252, "Canon EF 70-200mm f/2.8L IS II USM + 1.4x" }, + { 253, "Canon EF 70-200mm f/2.8L IS II USM + 2x" }, + { 254, "Canon EF 100mm f/2.8L Macro IS USM" }, + { 255, "Sigma 24-105mm f/4 DG OS HSM | A" }, // 0 + { 255, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro" }, // 1 + { 488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM" }, + { 489, "Canon EF 70-300mm f/4-5.6L IS USM" }, + { 490, "Canon EF 8-15mm f/4L Fisheye USM" }, + { 491, "Canon EF 300mm f/2.8L IS II USM" }, + { 492, "Canon EF 400mm f/2.8L IS II USM" }, + { 493, "Canon EF 500mm f/4L IS II USM" }, // 0 + { 493, "Canon EF 24-105mm f/4L IS USM" }, // 1 + { 494, "Canon EF 600mm f/4.0L IS II USM" }, + { 495, "Canon EF 24-70mm f/2.8L II USM" }, + { 496, "Canon EF 200-400mm f/4L IS USM" }, + { 499, "Canon EF 200-400mm f/4L IS USM + 1.4x" }, + { 502, "Canon EF 28mm f/2.8 IS USM" }, + { 503, "Canon EF 24mm f/2.8 IS USM" }, + { 504, "Canon EF 24-70mm f/4L IS USM" }, + { 505, "Canon EF 35mm f/2 IS USM" }, + { 506, "Canon EF 400mm f/4 DO IS II USM" }, + { 507, "Canon EF 16-35mm f/4L IS USM" }, + { 508, "Canon EF 11-24mm f/4L USM" }, + { 4142,"Canon EF-S 18-135mm f/3.5-5.6 IS STM" }, + { 4143,"Canon EF-M 18-55mm f/3.5-5.6 IS STM" }, // 0 + { 4143,"Tamron 18-200mm F/3.5-6.3 Di III VC" }, // 1 + { 4144,"Canon EF 40mm f/2.8 STM" }, + { 4145,"Canon EF-M 22mm f/2 STM" }, + { 4146,"Canon EF-S 18-55mm f/3.5-5.6 IS STM" }, + { 4147,"Canon EF-M 11-22mm f/4-5.6 IS STM" }, + { 4148,"Canon EF-S 55-250mm f/4-5.6 IS STM" }, + { 4149,"Canon EF-M 55-200mm f/4.5-6.3 IS STM" }, + { 4150,"Canon EF-S 10-18mm f/4.5-5.6 IS STM" }, + { 4152,"Canon EF 24-105mm f/3.5-5.6 IS STM" }, + { 4154,"Canon EF-S 24mm f/2.8 STM" }, + { 4156,"Canon EF 50mm f/1.8 STM" } + }; + + //! A lens id and a pretty-print function for special treatment of the id. + struct LensIdFct { + long id_; //!< Lens id + PrintFct fct_; //!< Pretty-print function + //! Comparison operator for find template + bool operator==(long id) const { return id_ == id; } + }; + + //! List of lens ids which require special treatment with the medicine + const LensIdFct lensIdFct[] = { + { 4, printCsLensByFocalLength }, // not tested + { 6, printCsLensByFocalLength }, + { 8, printCsLensByFocalLength }, + { 9, printCsLensByFocalLength }, + { 10, printCsLensByFocalLengthAndMaxAperture }, // works partly + { 22, printCsLensByFocalLength }, + { 26, printCsLensByFocalLengthAndMaxAperture }, // works partly + { 28, printCsLensByFocalLength }, + { 31, printCsLensByFocalLength }, + { 32, printCsLensByFocalLength }, + { 33, printCsLensByFocalLengthAndMaxAperture }, // works partly + { 37, printCsLensByFocalLength }, + { 42, printCsLensByFocalLength }, + { 131, printCsLensByFocalLength }, + { 137, printCsLensByFocalLength }, // not tested + { 150, printCsLensByFocalLength }, + { 152, printCsLensByFocalLength }, + { 153, printCsLensByFocalLength }, + { 156, printCsLensByFocalLength }, + { 160, printCsLensByFocalLength }, + { 161, printCsLensByFocalLength }, + { 169, printCsLensByFocalLength }, + { 172, printCsLensByFocalLength }, // not tested + { 173, printCsLensByFocalLength }, // works partly + { 174, printCsLensByFocalLength }, // not tested + { 180, printCsLensByFocalLength }, + { 183, printCsLensByFocalLength }, // not tested + { 198, printCsLensByFocalLength }, // not tested + { 213, printCsLensByFocalLength }, // not tested + { 234, printCsLensByFocalLength }, // not tested + { 255, printCsLensByFocalLength }, // not tested + { 493, printCsLensByFocalLength }, // not tested + { 4143,printCsLensByFocalLength } // not tested + }; + + //! FlashActivity, tag 0x001c + extern const TagDetails canonCsFlashActivity[] = { + { 0, N_("Did not fire") }, + { 1, N_("Fired") } + }; + + //! FlashDetails, tag 0x001d + extern const TagDetailsBitmask canonCsFlashDetails[] = { + { 0x4000, N_("External flash") }, + { 0x2000, N_("Internal flash") }, + { 0x0001, N_("Manual") }, + { 0x0002, N_("TTL") }, + { 0x0004, N_("A-TTL") }, + { 0x0008, N_("E-TTL") }, + { 0x0010, N_("FP sync enabled") }, + { 0x0080, N_("2nd-curtain sync used") }, + { 0x0800, N_("FP sync used") } + }; + + //! FocusContinuous, tag 0x0020 + extern const TagDetails canonCsFocusContinuous[] = { + { 0, N_("Single") }, + { 1, N_("Continuous") } + }; + + //! AESetting, tag 0x0021 + extern const TagDetails canonCsAESetting[] = { + { 0, N_("Normal AE") }, + { 1, N_("Exposure compensation") }, + { 2, N_("AE lock") }, + { 3, N_("AE lock + exposure compensation") }, + { 4, N_("No AE") } + }; + + //! ImageStabilization, tag 0x0022 + extern const TagDetails canonCsImageStabilization[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("On, shot only") } + }; + + //! SpotMeteringMode, tag 0x0027 + extern const TagDetails canonCsSpotMeteringMode[] = { + { 0, N_("Center") }, + { 1, N_("AF Point") } + }; + + //! PhotoEffect, tag 0x0028 + extern const TagDetails canonCsPhotoEffect[] = { + { 0, N_("Off") }, + { 1, N_("Vivid") }, + { 2, N_("Neutral") }, + { 3, N_("Smooth") }, + { 4, N_("Sepia") }, + { 5, N_("B&W") }, + { 6, N_("Custom") }, + { 100, N_("My color data") }, + { 100, N_("My color data") } // To silence compiler warning + }; + + //! ManualFlashOutput, tag 0x0029 + extern const TagDetails canonCsManualFlashOutput[] = { + { 0x0000, N_("n/a") }, + { 0x0500, N_("Full") }, + { 0x0502, N_("Medium") }, + { 0x0504, N_("Low") }, + { 0x7fff, N_("n/a") } + }; + + //! SRAWQuality, tag 0x002e + extern const TagDetails canonCsSRAWQuality[] = { + { 0, N_("n/a") }, + { 1, N_("sRAW1 (mRAW)") }, + { 2, N_("sRAW2 (sRAW)") } + }; + + // Canon Camera Settings Tag Info + const TagInfo CanonMakerNote::tagInfoCs_[] = { + TagInfo(0x0001, "Macro", N_("Macro"), N_("Macro mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMacro)), + TagInfo(0x0002, "Selftimer", N_("Selftimer"), N_("Self timer"), canonCsId, makerTags, signedShort, 1, printCs0x0002), + TagInfo(0x0003, "Quality", N_("Quality"), N_("Quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)), + TagInfo(0x0004, "FlashMode", N_("Flash Mode"), N_("Flash mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashMode)), + TagInfo(0x0005, "DriveMode", N_("Drive Mode"), N_("Drive mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDriveMode)), + TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonCsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)), + TagInfo(0x0008, "0x0008", "0x0008", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0009, "0x0009", "0x0009", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x000a, "ImageSize", N_("Image Size"), N_("Image size"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageSize)), + TagInfo(0x000b, "EasyMode", N_("Easy Mode"), N_("Easy shooting mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsEasyMode)), + TagInfo(0x000c, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsDigitalZoom)), + TagInfo(0x000d, "Contrast", N_("Contrast"), N_("Contrast setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), + TagInfo(0x000e, "Saturation", N_("Saturation"), N_("Saturation setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), + TagInfo(0x000f, "Sharpness", N_("Sharpness"), N_("Sharpness setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsLnh)), + TagInfo(0x0010, "ISOSpeed", N_("ISO Speed Mode"), N_("ISO speed setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsISOSpeed)), + TagInfo(0x0011, "MeteringMode", N_("Metering Mode"), N_("Metering mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsMeteringMode)), + TagInfo(0x0012, "FocusType", N_("Focus Type"), N_("Focus type setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusType)), + TagInfo(0x0013, "AFPoint", N_("AF Point"), N_("AF point selected"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAfPoint)), + TagInfo(0x0014, "ExposureProgram", N_("Exposure Program"), N_("Exposure mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsExposureProgram)), + TagInfo(0x0015, "0x0015", "0x0015", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0016, "LensType", N_("Lens Type"), N_("Lens type"), canonCsId, makerTags, signedShort, 1, printCsLensType), + TagInfo(0x0017, "Lens", N_("Lens"), N_("'long' and 'short' focal length of lens (in 'focal units') and 'focal units' per mm"), canonCsId, makerTags, unsignedShort, 3, printCsLens), + TagInfo(0x0018, "ShortFocal", N_("Short Focal"), N_("Short focal"), canonCsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0019, "FocalUnits", N_("Focal Units"), N_("Focal units"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x001a, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015), + TagInfo(0x001b, "MinAperture", N_("Min Aperture"), N_("Min aperture"), canonCsId, makerTags, signedShort, 1, printSi0x0015), + TagInfo(0x001c, "FlashActivity", N_("Flash Activity"), N_("Flash activity"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFlashActivity)), + TagInfo(0x001d, "FlashDetails", N_("Flash Details"), N_("Flash details"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG_BITMASK(canonCsFlashDetails)), + TagInfo(0x001e, "0x001e", "0x001e", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x001f, "0x001f", "0x001f", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0020, "FocusContinuous", N_("Focus Continuous"), N_("Focus continuous setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusContinuous)), + TagInfo(0x0021, "AESetting", N_("AESetting"), N_("AE setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsAESetting)), + TagInfo(0x0022, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsImageStabilization)), + TagInfo(0x0023, "DisplayAperture", N_("Display Aperture"), N_("Display aperture"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0024, "ZoomSourceWidth", N_("Zoom Source Width"), N_("Zoom source width"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0025, "ZoomTargetWidth", N_("Zoom Target Width"), N_("Zoom target width"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0026, "0x0026", "0x0026", N_("Unknown"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0027, "SpotMeteringMode", N_("Spot Metering Mode"), N_("Spot metering mode"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSpotMeteringMode)), + TagInfo(0x0028, "PhotoEffect", N_("Photo Effect"), N_("Photo effect"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsPhotoEffect)), + TagInfo(0x0029, "ManualFlashOutput", N_("Manual Flash Output"), N_("Manual flash output"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)), + TagInfo(0x002a, "ColorTone", N_("Color Tone"), N_("Color tone"), canonCsId, makerTags, signedShort, 1, printValue), + TagInfo(0x002e, "SRAWQuality", N_("SRAW Quality Tone"), N_("SRAW quality"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsSRAWQuality)), + // End of list marker + TagInfo(0xffff, "(UnknownCanonCsTag)", "(UnknownCanonCsTag)", N_("Unknown Canon Camera Settings 1 tag"), canonCsId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListCs() + { + return tagInfoCs_; + } + + //! WhiteBalance, multiple tags + extern const TagDetails canonSiWhiteBalance[] = { + { 0, N_("Auto") }, + { 1, N_("Daylight") }, + { 2, N_("Cloudy") }, + { 3, N_("Tungsten") }, + { 4, N_("Fluorescent") }, + { 5, N_("Flash") }, + { 6, N_("Custom") }, + { 7, N_("Black & White") }, + { 8, N_("Shade") }, + { 9, N_("Manual Temperature (Kelvin)") }, + { 10, N_("PC Set 1") }, + { 11, N_("PC Set 2") }, + { 12, N_("PC Set 3") }, + { 14, N_("Daylight Fluorescent") }, + { 15, N_("Custom 1") }, + { 16, N_("Custom 2") }, + { 17, N_("Underwater") }, + { 18, N_("Custom 3") }, + { 19, N_("Custom 3") }, + { 20, N_("PC Set 4") }, + { 21, N_("PC Set 5") }, + { 23, N_("Auto (ambience priority)") } + }; + + //! AFPointUsed, tag 0x000e + extern const TagDetailsBitmask canonSiAFPointUsed[] = { + { 0x0004, N_("left") }, + { 0x0002, N_("center") }, + { 0x0001, N_("right") } + }; + + //! FlashBias, tag 0x000f + extern const TagDetails canonSiFlashBias[] = { + { 0xffc0, "-2 EV" }, + { 0xffcc, "-1.67 EV" }, + { 0xffd0, "-1.50 EV" }, + { 0xffd4, "-1.33 EV" }, + { 0xffe0, "-1 EV" }, + { 0xffec, "-0.67 EV" }, + { 0xfff0, "-0.50 EV" }, + { 0xfff4, "-0.33 EV" }, + { 0x0000, "0 EV" }, + { 0x000c, "0.33 EV" }, + { 0x0010, "0.50 EV" }, + { 0x0014, "0.67 EV" }, + { 0x0020, "1 EV" }, + { 0x002c, "1.33 EV" }, + { 0x0030, "1.50 EV" }, + { 0x0034, "1.67 EV" }, + { 0x0040, "2 EV" } + }; + + // Canon Shot Info Tag + const TagInfo CanonMakerNote::tagInfoSi_[] = { + TagInfo(0x0001, "0x0001", "0x0001", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiId, makerTags, unsignedShort, 1, printSi0x0002), + TagInfo(0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiId, makerTags, unsignedShort, 1, printSi0x0003), + TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015), + TagInfo(0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016), + TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0007, "WhiteBalance", N_("White Balance"), N_("White balance setting"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)), + TagInfo(0x0008, "0x0008", "0x0008", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0009, "Sequence", N_("Sequence"), N_("Sequence number (if in a continuous burst)"), canonSiId, makerTags, unsignedShort, 1, printSi0x0009), + TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000b, "0x000b", "0x000b", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000c, "0x000c", "0x000c", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000d, "0x000d", "0x000d", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000e, "AFPointUsed", N_("AF Point Used"), N_("AF point used"), canonSiId, makerTags, unsignedShort, 1, printSi0x000e), + TagInfo(0x000f, "FlashBias", N_("Flash Bias"), N_("Flash bias"), canonSiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonSiFlashBias)), + TagInfo(0x0010, "0x0010", "0x0010", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0011, "0x0011", "0x0011", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0012, "0x0012", "0x0012", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0013, "SubjectDistance", N_("Subject Distance"), N_("Subject distance (units are not clear)"), canonSiId, makerTags, unsignedShort, 1, printSi0x0013), + TagInfo(0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015), + TagInfo(0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiId, makerTags, unsignedShort, 1, printSi0x0016), + TagInfo(0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiId, makerTags, unsignedShort, 1, printSi0x0017), + TagInfo(0x0018, "0x0018", "0x0018", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001a, "0x001a", "0x001a", N_("Unknown"), canonSiId, makerTags, unsignedShort, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownCanonSiTag)", "(UnknownCanonSiTag)", N_("Unknown Canon Camera Settings 2 tag"), canonSiId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListSi() + { + return tagInfoSi_; + } + + //! PanoramaDirection, tag 0x0005 + extern const TagDetails canonPaDirection[] = { + { 0, N_("Left to right") }, + { 1, N_("Right to left") }, + { 2, N_("Bottom to top") }, + { 3, N_("Top to bottom") }, + { 4, N_("2x2 matrix (Clockwise)") } + }; + + // Canon Panorama Info + const TagInfo CanonMakerNote::tagInfoPa_[] = { + TagInfo(0x0002, "PanoramaFrame", N_("Panorama Frame"), N_("Panorama frame number"), canonPaId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0005, "PanoramaDirection", N_("Panorama Direction"), N_("Panorama direction"), canonPaId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(canonPaDirection)), + // End of list marker + TagInfo(0xffff, "(UnknownCanonCs2Tag)", "(UnknownCanonCs2Tag)", N_("Unknown Canon Panorama tag"), canonPaId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListPa() + { + return tagInfoPa_; + } + + // Canon Custom Function Tag Info + const TagInfo CanonMakerNote::tagInfoCf_[] = { + TagInfo(0x0001, "NoiseReduction", N_("Noise Reduction"), N_("Long exposure noise reduction"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0002, "ShutterAeLock", N_("Shutter Ae Lock"), N_("Shutter/AE lock buttons"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0003, "MirrorLockup", N_("Mirror Lockup"), N_("Mirror lockup"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0004, "ExposureLevelIncrements", N_("Exposure Level Increments"), N_("Tv/Av and exposure level"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0005, "AFAssist", N_("AF Assist"), N_("AF assist light"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0006, "FlashSyncSpeedAv", N_("Flash Sync Speed Av"), N_("Shutter speed in Av mode"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0007, "AEBSequence", N_("AEB Sequence"), N_("AEB sequence/auto cancellation"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0008, "ShutterCurtainSync", N_("Shutter Curtain Sync"), N_("Shutter curtain sync"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0009, "LensAFStopButton", N_("Lens AF Stop Button"), N_("Lens AF stop button Fn. Switch"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000a, "FillFlashAutoReduction", N_("Fill Flash Auto Reduction"), N_("Auto reduction of fill flash"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000b, "MenuButtonReturn", N_("Menu Button Return"), N_("Menu button return position"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000c, "SetButtonFunction", N_("Set Button Function"), N_("SET button func. when shooting"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000d, "SensorCleaning", N_("Sensor Cleaning"), N_("Sensor cleaning"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000e, "SuperimposedDisplay", N_("Superimposed Display"), N_("Superimposed display"), canonCfId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000f, "ShutterReleaseNoCFCard", N_("Shutter Release No CF Card"), N_("Shutter Release W/O CF Card"), canonCfId, makerTags, unsignedShort, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownCanonCfTag)", "(UnknownCanonCfTag)", N_("Unknown Canon Custom Function tag"), canonCfId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListCf() + { + return tagInfoCf_; + } + + //! AFPointsUsed, tag 0x0016 + extern const TagDetailsBitmask canonPiAFPointsUsed[] = { + { 0x01, N_("right") }, + { 0x02, N_("mid-right") }, + { 0x04, N_("bottom") }, + { 0x08, N_("center") }, + { 0x10, N_("top") }, + { 0x20, N_("mid-left") }, + { 0x40, N_("left") } + }; + + //! AFPointsUsed20D, tag 0x001a + extern const TagDetailsBitmask canonPiAFPointsUsed20D[] = { + { 0x001, N_("top") }, + { 0x002, N_("upper-left") }, + { 0x004, N_("upper-right") }, + { 0x008, N_("left") }, + { 0x010, N_("center") }, + { 0x020, N_("right") }, + { 0x040, N_("lower-left") }, + { 0x080, N_("lower-right") }, + { 0x100, N_("bottom") } + }; + + // Canon Picture Info Tag + const TagInfo CanonMakerNote::tagInfoPi_[] = { + TagInfo(0x0002, "ImageWidth", N_("Image Width"), N_("Image width"), canonPiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0003, "ImageHeight", N_("Image Height"), N_("Image height"), canonPiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0004, "ImageWidthAsShot", N_("Image Width As Shot"), N_("Image width (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0005, "ImageHeightAsShot", N_("Image Height As Shot"), N_("Image height (as shot)"), canonPiId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0016, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed)), + TagInfo(0x001a, "AFPointsUsed20D", N_("AF Points Used 20D"), N_("AF points used (20D)"), canonPiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG_BITMASK(canonPiAFPointsUsed20D)), + // End of list marker + TagInfo(0xffff, "(UnknownCanonPiTag)", "(UnknownCanonPiTag)", N_("Unknown Canon Picture Info tag"), canonPiId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListPi() + { + return tagInfoPi_; + } + + //! BracketMode, tag 0x0003 + extern const TagDetails canonBracketMode[] = { + { 0, N_("Off") }, + { 1, N_("AEB") }, + { 2, N_("FEB") }, + { 3, N_("ISO") }, + { 4, N_("WB") } + }; + + //! RawJpgSize, tag 0x0007 + extern const TagDetails canonRawJpgSize[] = { + { 0, N_("Large") }, + { 1, N_("Medium") }, + { 2, N_("Small") }, + { 5, N_("Medium 1") }, + { 6, N_("Medium 2") }, + { 7, N_("Medium 3") }, + { 8, N_("Postcard") }, + { 9, N_("Widescreen") }, + { 129, N_("Medium Movie") }, + { 130, N_("Small Movie") } + }; + + //! NoiseReduction, tag 0x0008 + extern const TagDetails canonNoiseReduction[] = { + { 0, N_("Off") }, + { 1, N_("On 1") }, + { 2, N_("On 2") }, + { 3, N_("On") }, + { 4, N_("Auto") } + }; + + //! WBBracketMode, tag 0x0009 + extern const TagDetails canonWBBracketMode[] = { + { 0, N_("Off") }, + { 1, N_("On (shift AB)") }, + { 2, N_("On (shift GM)") } + }; + + //! FilterEffect, tag 0x000e + extern const TagDetails canonFilterEffect[] = { + { 0, N_("None") }, + { 1, N_("Yellow") }, + { 2, N_("Orange") }, + { 3, N_("Red") }, + { 4, N_("Green") } + }; + + //! ToningEffect, tag 0x000e + extern const TagDetails canonToningEffect[] = { + { 0, N_("None") }, + { 1, N_("Sepia") }, + { 2, N_("Blue") }, + { 3, N_("Purple") }, + { 4, N_("Green") } + }; + + // Canon File Info Tag + const TagInfo CanonMakerNote::tagInfoFi_[] = { + TagInfo(0x0001, "FileNumber", N_("File Number"), N_("File Number"), canonFiId, makerTags, unsignedLong, 1, printFiFileNumber), + TagInfo(0x0003, "BracketMode", N_("Bracket Mode"), N_("Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonBracketMode)), + TagInfo(0x0004, "BracketValue", N_("Bracket Value"), N_("Bracket Value"), canonFiId, makerTags, signedShort, 1, printValue), + TagInfo(0x0005, "BracketShotNumber", N_("Bracket Shot Number"), N_("Bracket Shot Number"), canonFiId, makerTags, signedShort, 1, printValue), + TagInfo(0x0006, "RawJpgQuality", N_("Raw Jpg Quality"), N_("Raw Jpg Quality"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsQuality)), + TagInfo(0x0007, "RawJpgSize", N_("Raw Jpg Size"), N_("Raw Jpg Size"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonRawJpgSize)), + TagInfo(0x0008, "NoiseReduction", N_("Noise Reduction"), N_("Noise Reduction"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonNoiseReduction)), + TagInfo(0x0009, "WBBracketMode", N_("WB Bracket Mode"), N_("WB Bracket Mode"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonWBBracketMode)), + TagInfo(0x000c, "WBBracketValueAB", N_("WB Bracket Value AB"), N_("WB Bracket Value AB"), canonFiId, makerTags, signedShort, 1, printValue), + TagInfo(0x000d, "WBBracketValueGM", N_("WB Bracket Value GM"), N_("WB Bracket Value GM"), canonFiId, makerTags, signedShort, 1, printValue), + TagInfo(0x000e, "FilterEffect", N_("Filter Effect"), N_("Filter Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonFilterEffect)), + TagInfo(0x000f, "ToningEffect", N_("Toning Effect"), N_("Toning Effect"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToningEffect)), + TagInfo(0x0010, "MacroMagnification", N_("Macro Magnification"), N_("Macro magnification"), canonFiId, makerTags, signedShort, 1, printValue), + TagInfo(0x0013, "LiveViewShooting", N_("Live View Shooting"), N_("Live view shooting"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)), + TagInfo(0x0014, "FocusDistanceUpper", N_("Focus Distance Upper"), N_("Focus Distance Upper"), canonFiId, makerTags, signedShort, 1, printFiFocusDistance), + TagInfo(0x0015, "FocusDistanceLower", N_("Focus Distance Lower"), N_("Focus Distance Lower"), canonFiId, makerTags, signedShort, 1, printFiFocusDistance), + TagInfo(0x0019, "FlashExposureLock", N_("Flash Exposure Lock"), N_("Flash exposure lock"), canonFiId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonOffOn)), + // End of list marker + TagInfo(0xffff, "(UnknownCanonFiTag)", "(UnknownCanonFiTag)", N_("Unknown Canon File Info tag"), canonFiId, makerTags, signedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListFi() + { + return tagInfoFi_; + } + + //! Tone Curve Values + extern const TagDetails canonToneCurve[] = { + { 0, N_("Standard") }, + { 1, N_("Manual") }, + { 2, N_("Custom") } + }; + + //! Sharpness Frequency Values + extern const TagDetails canonSharpnessFrequency[] = { + { 0, N_("n/a") }, + { 1, N_("Lowest") }, + { 2, N_("Low") }, + { 3, N_("Standard") }, + { 4, N_("High") }, + { 5, N_("Highest") } + }; + + //! PictureStyle Values + extern const TagDetails canonPictureStyle[] = { + { 0x00, N_("None") }, + { 0x01, N_("Standard") }, + { 0x02, N_("Portrait") }, + { 0x03, N_("High Saturation") }, + { 0x04, N_("Adobe RGB") }, + { 0x05, N_("Low Saturation") }, + { 0x06, N_("CM Set 1") }, + { 0x07, N_("CM Set 2") }, + { 0x21, N_("User Def. 1") }, + { 0x22, N_("User Def. 2") }, + { 0x23, N_("User Def. 3") }, + { 0x41, N_("PC 1") }, + { 0x42, N_("PC 2") }, + { 0x43, N_("PC 3") }, + { 0x81, N_("Standard") }, + { 0x82, N_("Portrait") }, + { 0x83, N_("Landscape") }, + { 0x84, N_("Neutral") }, + { 0x85, N_("Faithful") }, + { 0x86, N_("Monochrome") }, + { 0x87, N_("Auto") }, + { 0x88, N_("Fine Detail") } + }; + + // Canon Processing Info Tag + const TagInfo CanonMakerNote::tagInfoPr_[] = { + TagInfo(0x0001, "ToneCurve", N_("ToneCurve"), N_("Tone curve"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonToneCurve)), + TagInfo(0x0002, "Sharpness", N_("Sharpness"), N_("Sharpness"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x0003, "SharpnessFrequency", N_("SharpnessFrequency"), N_("Sharpness frequency"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSharpnessFrequency)), + TagInfo(0x0004, "SensorRedLevel", N_("SensorRedLevel"), N_("Sensor red level"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x0005, "SensorBlueLevel", N_("SensorBlueLevel"), N_("Sensor blue level"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x0006, "WhiteBalanceRed", N_("WhiteBalanceRed"), N_("White balance red"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x0007, "WhiteBalanceBlue", N_("WhiteBalanceBlue"), N_("White balance blue"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x0008, "WhiteBalance", N_("WhiteBalance"), N_("White balance"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonSiWhiteBalance)), + TagInfo(0x0009, "ColorTemperature", N_("ColorTemperature"), N_("Color Temperature"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x000a, "PictureStyle", N_("PictureStyle"), N_("Picture style"), canonPrId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonPictureStyle)), + TagInfo(0x000b, "DigitalGain", N_("DigitalGain"), N_("Digital gain"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x000c, "WBShiftAB", N_("WBShiftAB"), N_("WBShift AB"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0x000d, "WBShiftGM", N_("WBShiftGM"), N_("WB Shift GM"), canonPrId, makerTags, signedShort, 1, printValue), + TagInfo(0xffff, "(UnknownCanonPrTag)", "(UnknownCanonPrTag)", N_("Unknown Canon Processing Info tag"), canonPrId, makerTags, signedShort, 1, printValue) + }; + + const TagInfo* CanonMakerNote::tagListPr() + { + return tagInfoPr_; + } + + std::ostream& CanonMakerNote::printFiFileNumber(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + std::ios::fmtflags f( os.flags() ); + if ( !metadata || value.typeId() != unsignedLong + || value.count() == 0) + { + os << "(" << value << ")"; + os.flags(f); + return os; + } + + ExifData::const_iterator pos = metadata->findKey(ExifKey("Exif.Image.Model")); + if (pos == metadata->end()) return os << "(" << value << ")"; + + // Ported from Exiftool + std::string model = pos->toString(); + if ( model.find("20D") != std::string::npos + || model.find("350D") != std::string::npos + || model.substr(model.size() - 8, 8) == "REBEL XT" + || model.find("Kiss Digital N") != std::string::npos) { + uint32_t val = value.toLong(); + uint32_t dn = (val & 0xffc0) >> 6; + uint32_t fn = ((val >> 16) & 0xff) + ((val & 0x3f) << 8); + os << std::dec << dn << "-" << std::setw(4) << std::setfill('0') << fn; + os.flags(f); + return os; + } + if ( model.find("30D") != std::string::npos + || model.find("400D") != std::string::npos + || model.find("REBEL XTi") != std::string::npos + || model.find("Kiss Digital X") != std::string::npos + || model.find("K236") != std::string::npos) { + uint32_t val = value.toLong(); + uint32_t dn = (val & 0xffc00) >> 10; + while (dn < 100) dn += 0x40; + uint32_t fn = ((val & 0x3ff) << 4) + ((val >> 20) & 0x0f); + os << std::dec << dn << "-" << std::setw(4) << std::setfill('0') << fn; + os.flags(f); + return os; + } + + os.flags(f); + return os << "(" << value << ")"; + } + + std::ostream& CanonMakerNote::printFocalLength(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + std::ios::fmtflags f( os.flags() ); + if ( !metadata + || value.count() < 4 + || value.typeId() != unsignedShort) { + os.flags(f); + return os << value; + } + + ExifKey key("Exif.CanonCs.Lens"); + ExifData::const_iterator pos = metadata->findKey(key); + if ( pos != metadata->end() + && pos->value().count() >= 3 + && pos->value().typeId() == unsignedShort) { + float fu = pos->value().toFloat(2); + if (fu != 0.0) { + float fl = value.toFloat(1) / fu; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1); + os << fl << " mm"; + os.copyfmt(oss); + os.flags(f); + return os; + } + } + + os.flags(f); + return os << value; + } + + std::ostream& CanonMakerNote::print0x0008(std::ostream& os, + const Value& value, + const ExifData*) + { + std::string n = value.toString(); + if (n.length() < 4) return os << "(" << n << ")"; + return os << n.substr(0, n.length() - 4) << "-" + << n.substr(n.length() - 4); + } + + std::ostream& CanonMakerNote::print0x000c(std::ostream& os, + const Value& value, + const ExifData*) + { + std::istringstream is(value.toString()); + uint32_t l; + is >> l; + return os << std::setw(4) << std::setfill('0') << std::hex + << ((l & 0xffff0000) >> 16) + << std::setw(5) << std::setfill('0') << std::dec + << (l & 0x0000ffff); + } + + std::ostream& CanonMakerNote::printCs0x0002(std::ostream& os, + const Value& value, + const ExifData*) + { + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + long l = value.toLong(); + if (l == 0) { + os << "Off"; + } + else { + os << l / 10.0 << " s"; + } + return os; + } + + //! Helper structure + struct LensTypeAndFocalLengthAndMaxAperture { + long lensType_; //!< Lens type + std::string focalLength_; //!< Focal length + std::string maxAperture_; //!< Aperture + }; + + //! Compare tag details with a lens entry + bool operator==(const TagDetails& td, const LensTypeAndFocalLengthAndMaxAperture& ltfl) { + return ( td.val_ == ltfl.lensType_ + && std::string(td.label_).find(ltfl.focalLength_) != std::string::npos + && std::string(td.label_).find(ltfl.maxAperture_) != std::string::npos); + } + + void extractLensFocalLength(LensTypeAndFocalLengthAndMaxAperture& ltfl, + const ExifData* metadata) + { + ExifKey key("Exif.CanonCs.Lens"); + ExifData::const_iterator pos = metadata->findKey(key); + if ( pos != metadata->end() + && pos->value().count() >= 3 + && pos->value().typeId() == unsignedShort) { + float fu = pos->value().toFloat(2); + if (fu != 0.0) { + float len1 = pos->value().toLong(0) / fu; + float len2 = pos->value().toLong(1) / fu; + std::ostringstream oss; + oss << std::fixed << std::setprecision(0); + if (len1 == len2) { + oss << len1 << "mm"; + } else { + oss << len2 << "-" << len1 << "mm"; + } + ltfl.focalLength_ = oss.str(); + } + } + } + + std::ostream& printCsLensByFocalLengthAndMaxAperture(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + if ( !metadata || value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + LensTypeAndFocalLengthAndMaxAperture ltfl; + ltfl.lensType_ = value.toLong(); + + extractLensFocalLength(ltfl, metadata); + if (ltfl.focalLength_.empty()) return os << value; + + ExifKey key("Exif.CanonCs.MaxAperture"); + ExifData::const_iterator pos = metadata->findKey(key); + if ( pos != metadata->end() + && pos->value().count() == 1 + && pos->value().typeId() == unsignedShort) { + + long val = static_cast(pos->value().toLong(0)); + if (val > 0) + { + std::ostringstream oss; + oss << std::setprecision(2); + oss << fnumber(canonEv(val)); + ltfl.maxAperture_ = oss.str(); + } + } + if (ltfl.maxAperture_.empty()) return os << value; + + const TagDetails* td = find(canonCsLensType, ltfl); + if (!td) return os << value; + return os << td->label_; + } + + std::ostream& printCsLensByFocalLength(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + if ( !metadata || value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + LensTypeAndFocalLengthAndMaxAperture ltfl; + ltfl.lensType_ = value.toLong(); + + extractLensFocalLength(ltfl, metadata); + if (ltfl.focalLength_.empty()) return os << value; + + const TagDetails* td = find(canonCsLensType, ltfl); + if (!td) return os << value; + return os << td->label_; + } + + std::ostream& CanonMakerNote::printCsLensType(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << "(" << value << ")"; + + const LensIdFct* lif = find(lensIdFct, value.toLong()); + if (!lif) { + return EXV_PRINT_TAG(canonCsLensType)(os, value, metadata); + } + if (metadata && lif->fct_) { + return lif->fct_(os, value, metadata); + } + return os << value; + } + + std::ostream& CanonMakerNote::printCsLens(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + + if ( value.count() < 3 + || value.typeId() != unsignedShort) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + + float fu = value.toFloat(2); + if (fu == 0.0) return os << value; + float len1 = value.toLong(0) / fu; + float len2 = value.toLong(1) / fu; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1); + if (len1 == len2) { + os << len1 << " mm"; + } else { + os << len2 << " - " << len1 << " mm"; + } + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& CanonMakerNote::printSi0x0002(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if ( value.typeId() == unsignedShort + && value.count() > 0) { + // Ported from Exiftool by Will Stokes + os << exp(canonEv(value.toLong()) * log(2.0)) * 100.0 / 32.0; + } + os.flags(f); + return os; + } + + std::ostream& CanonMakerNote::printSi0x0003(std::ostream& os, + const Value& value, + const ExifData*) + { + if ( value.typeId() == unsignedShort + && value.count() > 0) { + // The offset of '5' seems to be ok for most Canons (see Exiftool) + // It might be explained by the fakt, that most Canons have a longest + // exposure of 30s which is 5 EV below 1s + // see also printSi0x0017 + std::ostringstream oss; + oss.copyfmt(os); + int res = static_cast(100.0 * (static_cast(value.toLong()) / 32.0 + 5.0) + 0.5); + os << std::fixed << std::setprecision(2) << res / 100.0; + os.copyfmt(oss); + } + return os; + } + + std::ostream& CanonMakerNote::printSi0x0009(std::ostream& os, + const Value& value, + const ExifData*) + { + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + long l = value.toLong(); + os << l << ""; + // Todo: determine unit + return os; + } + + std::ostream& CanonMakerNote::printSi0x000e(std::ostream& os, + const Value& value, + const ExifData* pExifData) + { + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + long l = value.toLong(); + long num = (l & 0xf000) >> 12; + os << num << " focus points; "; + long used = l & 0x0fff; + if (used == 0) { + os << "none"; + } + else { + EXV_PRINT_TAG_BITMASK(canonSiAFPointUsed)(os, value, pExifData); + } + os << " used"; + return os; + } + + std::ostream& CanonMakerNote::printSi0x0013(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + long l = value.toLong(); + if (l == 0xffff) { + os << "Infinite"; + } + else { + os << l << ""; + } + os.flags(f); + return os; + } + + std::ostream& CanonMakerNote::printSi0x0015(std::ostream& os, + const Value& value, + const ExifData*) + { + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + std::ostringstream oss; + oss.copyfmt(os); + long val = static_cast(value.toLong()); + if (val < 0) return os << value; + os << std::setprecision(2) + << "F" << fnumber(canonEv(val)); + os.copyfmt(oss); + return os; + } + + std::ostream& CanonMakerNote::printSi0x0016(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + URational ur = exposureTime(canonEv(value.toLong())); + os << ur.first; + if (ur.second > 1) { + os << "/" << ur.second; + } + os.flags(f); + return os << " s"; + } + + std::ostream& CanonMakerNote::printSi0x0017(std::ostream& os, + const Value& value, + const ExifData*) + { + if ( value.typeId() != unsignedShort + || value.count() == 0) return os << value; + + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) + << value.toLong() / 8.0 - 6.0; + os.copyfmt(oss); + return os; + } + + std::ostream& CanonMakerNote::printFiFocusDistance(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if ( value.typeId() != signedShort + || value.count() == 0) return os << value; + + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2); + + long l = value.toLong(); + if (l == 0xffff) { + os << "Infinite"; + } + else { + os << value.toLong()/100.0 << " m"; + } + + os.copyfmt(oss); + os.flags(f); + return os; + } + +// ***************************************************************************** +// free functions + + float canonEv(long val) + { + // temporarily remove sign + int sign = 1; + if (val < 0) { + sign = -1; + val = -val; + } + // remove fraction + float frac = static_cast(val & 0x1f); + val -= long(frac); + // convert 1/3 (0x0c) and 2/3 (0x14) codes + if (frac == 0x0c) { + frac = 32.0f / 3; + } + else if (frac == 0x14) { + frac = 64.0f / 3; + } + return sign * (val + frac) / 32.0f; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/canonmn_int.hpp b/vendor/exiv2-0.25/src/canonmn_int.hpp new file mode 100644 index 0000000..8fabe28 --- /dev/null +++ b/vendor/exiv2-0.25/src/canonmn_int.hpp @@ -0,0 +1,150 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file canonmn_int.hpp + @brief Canon makernote tags.
References:
+ [1]
EXIF MakerNote of Canon by David Burren
+ [2] Canon makernote tags by Phil Harvey + @version $Rev: 3777 $ + @author Andreas Huggel (ahu)
+ David Cannings (dc) + Andi Clemens (ac) + @date 18-Feb-04, ahu: created
+ 07-Mar-04, ahu: isolated as a separate component
+ 12-Aug-06, dc: started updating all tags + */ +#ifndef CANONMN_INT_HPP_ +#define CANONMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + class Value; + + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Canon cameras + class CanonMakerNote { + public: + //! Return read-only list of built-in Canon tags + static const TagInfo* tagList(); + //! Return read-only list of built-in Canon Camera Settings tags + static const TagInfo* tagListCs(); + //! Return read-only list of built-in Canon Shot Info tags + static const TagInfo* tagListSi(); + //! Return read-only list of built-in Canon Panorama tags + static const TagInfo* tagListPa(); + //! Return read-only list of built-in Canon Custom Function tags + static const TagInfo* tagListCf(); + //! Return read-only list of built-in Canon Picture Info tags + static const TagInfo* tagListPi(); + //! Return read-only list of built-in Canon File Info tags + static const TagInfo* tagListFi(); + //! Return read-only list of built-in Canon Processing Info tags + static const TagInfo* tagListPr(); + + //! @name Print functions for Canon %MakerNote tags + //@{ + //! Print the FileInfo FileNumber + static std::ostream& printFiFileNumber(std::ostream& os, const Value& value, const ExifData* metadata); + //! Print the focal length + static std::ostream& printFocalLength(std::ostream& os, const Value& value, const ExifData*); + //! Print the image number + static std::ostream& print0x0008(std::ostream& os, const Value& value, const ExifData*); + //! Print the serial number of the camera + static std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*); + //! Self timer + static std::ostream& printCs0x0002(std::ostream& os, const Value& value, const ExifData*); + //! Camera lens type. For some values, the exact type can only be determined if \em metadata is provided. + static std::ostream& printCsLensType(std::ostream& os, const Value& value, const ExifData* metadata); + //! Camera lens information + static std::ostream& printCsLens(std::ostream& os, const Value& value, const ExifData*); + //! ISO speed used + static std::ostream& printSi0x0002(std::ostream& os, const Value& value, const ExifData*); + //! MeasuredEV + static std::ostream& printSi0x0003(std::ostream& os, const Value& value, const ExifData*); + //! Sequence number + static std::ostream& printSi0x0009(std::ostream& os, const Value& value, const ExifData*); + //! AF point used + static std::ostream& printSi0x000e(std::ostream& os, const Value& value, const ExifData* pExifData); + //! Subject distance + static std::ostream& printSi0x0013(std::ostream& os, const Value& value, const ExifData*); + //! Aperture + static std::ostream& printSi0x0015(std::ostream& os, const Value& value, const ExifData*); + //! Shutter speed + static std::ostream& printSi0x0016(std::ostream& os, const Value& value, const ExifData*); + //! MeasuredEV2 + static std::ostream& printSi0x0017(std::ostream& os, const Value& value, const ExifData*); + //! Focus Distance + static std::ostream& printFiFocusDistance(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + // DATA + + //! Tag information + static const TagInfo tagInfo_[]; + static const TagInfo tagInfoCs_[]; + static const TagInfo tagInfoSi_[]; + static const TagInfo tagInfoCf_[]; + static const TagInfo tagInfoPi_[]; + static const TagInfo tagInfoFi_[]; + static const TagInfo tagInfoPa_[]; + static const TagInfo tagInfoPr_[]; + + }; // class CanonMakerNote + +// ***************************************************************************** +// template, inline and free functions + + /*! + @brief Convert Canon hex-based EV (modulo 0x20) to real number + Ported from Phil Harvey's Image::ExifTool::Canon::CanonEv + by Will Stokes + + 0x00 -> 0 + 0x0c -> 0.33333 + 0x10 -> 0.5 + 0x14 -> 0.66666 + 0x20 -> 1 + .. + 160 -> 5 + 128 -> 4 + 143 -> 4.46875 + */ + float canonEv(long val); + +}} // namespace Internal, Exiv2 + +#endif // #ifndef CANONMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/casiomn.cpp b/vendor/exiv2-0.25/src/casiomn.cpp new file mode 100644 index 0000000..7027e55 --- /dev/null +++ b/vendor/exiv2-0.25/src/casiomn.cpp @@ -0,0 +1,603 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: Casiomn.cpp + Version: $Rev: 3091 $ + History: 30-Oct-13, ahu: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: Casiomn.cpp 3091 2013-07-24 05:15:04Z robinwmills $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "casiomn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! RecordingMode, tag 0x0001 + extern const TagDetails casioRecordingMode[] = { + { 1, N_("Single Shutter") }, + { 2, N_("Panorama") }, + { 3, N_("Night Scene") }, + { 4, N_("Portrait") }, + { 5, N_("Landscape") }, + { 7, N_("Panorama") }, + { 10, N_("Night Scene") }, + { 15, N_("Portrait") }, + { 16, N_("Landscape") } + }; + + //! Quality, tag 0x0002 + extern const TagDetails casioQuality[] = { + { 1, N_("Economy") }, + { 2, N_("Normal") }, + { 3, N_("Fine") } + }; + + //! Focus Mode, tag 0x0003 + extern const TagDetails casioFocusMode[] = { + { 2, N_("Macro") }, + { 3, N_("Auto") }, + { 4, N_("Manual") }, + { 5, N_("Infinity") }, + { 7, N_("Sport AF") } + }; + + //! FlashMode, tag 0x0004 + extern const TagDetails casioFlashMode[] = { + { 1, N_("Auto") }, + { 2, N_("On") }, + { 3, N_("Off") }, + { 4, N_("Off") }, + { 5, N_("Red-eye Reduction") } + }; + + //! Flash intensity, tag 0x0005 + extern const TagDetails casioFlashIntensity[] = { + { 11, N_("Weak") }, + { 12, N_("Low") }, + { 13, N_("Normal") }, + { 14, N_("High") }, + { 15, N_("Strong") } + }; + + //! white balance, tag 0x0007 + extern const TagDetails casioWhiteBalance[] = { + { 1, N_("Auto") }, + { 2, N_("Tungsten") }, + { 3, N_("Daylight") }, + { 4, N_("Fluorescent") }, + { 5, N_("Shade") }, + { 129, N_("Manual") } + }; + + //! Flash intensity, tag 0x0005 + extern const TagDetails casioDigitalZoom[] = { + { 0x10000, N_("Off") }, + { 0x10001, N_("2x") }, + { 0x13333, N_("1.2x") }, + { 0x13ae1, N_("1.23x") }, + { 0x19999, N_("1.6x") }, + { 0x20000, N_("2x") }, + { 0x33333, N_("3.2x") }, + { 0x40000, N_("4x") } + }; + + //! Sharpness, tag 0x000b + extern const TagDetails casioSharpness[] = { + { 0, N_("Normal") }, + { 1, N_("Soft") }, + { 2, N_("Hard") }, + { 16, N_("Normal") }, + { 17, N_("+1") }, + { 18, N_("-1") } + }; + + //! Contrast, tag 0x000c + extern const TagDetails casioContrast[] = { + { 0, N_("Normal") }, + { 1, N_("Low") }, + { 2, N_("High") }, + { 16, N_("Normal") }, + { 17, N_("+1") }, + { 18, N_("-1") } + }; + + //! Saturation, tag 0x000d + extern const TagDetails casioSaturation[] = { + { 0, N_("Normal") }, + { 1, N_("Low") }, + { 2, N_("High") }, + { 16, N_("Normal") }, + { 17, N_("+1") }, + { 18, N_("-1") } + }; + + //! Enhancement, tag 0x0016 + extern const TagDetails casioEnhancement[] = { + { 1, N_("Off") }, + { 2, N_("Red") }, + { 3, N_("Green") }, + { 4, N_("Blue") }, + { 5, N_("Flesh Tones") } + }; + + //! Color filter, tag 0x0017 + extern const TagDetails casioColorFilter[] = { + { 1, N_("Off") }, + { 2, N_("Black & White") }, + { 3, N_("Sepia") }, + { 4, N_("Red") }, + { 5, N_("Green") }, + { 6, N_("Blue") }, + { 7, N_("Yellow") }, + { 8, N_("Pink") }, + { 9, N_("Purple") } + }; + + //! flash intensity 2, tag 0x0019 + extern const TagDetails casioFlashIntensity2[] = { + { 1, N_("Normal") }, + { 2, N_("Weak") }, + { 3, N_("Strong") } + }; + + //! CCD Sensitivity intensity, tag 0x0020 + extern const TagDetails casioCCDSensitivity[] = { + { 64, N_("Normal") }, + { 125, N_("+1.0") }, + { 250, N_("+2.0") }, + { 244, N_("+3.0") }, + { 80, N_("Normal (ISO 80 equivalent)") }, + { 100, N_("High") } + }; + + // Casio MakerNote Tag Info + const TagInfo CasioMakerNote::tagInfo_[] = { + TagInfo(0x0001, "RecodingMode", N_("RecodingMode"), N_("Recording Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioRecordingMode)), + TagInfo(0x0002, "Quality", N_("Quality"), N_("Quality"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioQuality)), + TagInfo(0x0003, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFocusMode)), + TagInfo(0x0004, "FlashMode", N_("Flash Mode"), N_("Flash Mode"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashMode)), + TagInfo(0x0005, "FlashIntensity", N_("Flash Intensity"), N_("Flash Intensity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity)), + TagInfo(0x0006, "ObjectDistance", N_("Object Distance"), N_("Distance to object"), casioId, makerTags, unsignedLong, -1, print0x0006), + TagInfo(0x0007, "WhiteBalance", N_("White Balance"), N_("White balance settings"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioWhiteBalance)), + TagInfo(0x000a, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom"), casioId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(casioDigitalZoom)), + TagInfo(0x000b, "Sharpness", N_("Sharpness"), N_("Sharpness"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSharpness)), + TagInfo(0x000c, "Contrast", N_("Contrast"), N_("Contrast"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioContrast)), + TagInfo(0x000d, "Saturation", N_("Saturation"), N_("Saturation"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioSaturation)), + TagInfo(0x0014, "ISO", N_("ISO"), N_("ISO"), casioId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0015, "FirmwareDate", N_("Firmware date"), N_("Firmware date"), casioId, makerTags, asciiString, -1, print0x0015), + TagInfo(0x0016, "Enhancement", N_("Enhancement"), N_("Enhancement"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioEnhancement)), + TagInfo(0x0017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioColorFilter)), + TagInfo(0x0018, "AFPoint", N_("AF Point"), N_("AF Point"), casioId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0019, "FlashIntensity2", N_("Flash Intensity"), N_("Flash Intensity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioFlashIntensity2)), + TagInfo(0x0020, "CCDSensitivity", N_("CCDSensitivity"), N_("CCDSensitivity"), casioId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casioCCDSensitivity)), + TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), casioId, makerTags, undefined, -1, printValue), + TagInfo(0xffff, "(UnknownCasioMakerNoteTag)", "(UnknownCasioMakerNoteTag)", N_("Unknown CasioMakerNote tag"), casioId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* CasioMakerNote::tagList() + { + return tagInfo_; + } + + std::ostream& CasioMakerNote::print0x0006(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) << value.toLong() / 1000.0 << _(" m"); + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& CasioMakerNote::print0x0015(std::ostream& os, const Value& value, const ExifData*) + { + // format is: "YYMM#00#00DDHH#00#00MM#00#00#00#00" or "YYMM#00#00DDHH#00#00MMSS#00#00#00" + std::string s; + std::vector numbers; + for(long i=0; i=10) + { + //year + long l=(numbers[0]-48)*10+(numbers[1]-48); + if(l<70) + { + l+=2000; + } + else + { + l+=1900; + }; + os << l << ":"; + // month, day, hour, minutes + os << numbers[2] << numbers[3] << ":" << numbers[4] << numbers[5] << " " << numbers[6] << numbers[7] << ":" << numbers[8] << numbers[9]; + // optional seconds + if(numbers.size()==12) + { + os << ":" << numbers[10] << numbers[11]; + }; + } + else + { + os << value; + }; + return os; + } + + //Casio Makernotes, Type 2 + //! Quality Mode, tag 0x0004 + extern const TagDetails casio2QualityMode[] = { + { 0, N_("Economy") }, + { 1, N_("Normal") }, + { 2, N_("Fine") } + }; + + //! Image Size, tag 0x0009 + extern const TagDetails casio2ImageSize[] = { + { 0, "640x480" }, + { 4, "1600x1200" }, + { 5, "2048x1536" }, + { 20, "2288x1712" }, + { 21, "2592x1944" }, + { 22, "2304x1728" }, + { 36, "3008x2008" } + }; + + //! Focus Mode, tag 0x000d + extern const TagDetails casio2FocusMode[] = { + { 0, N_("Normal") }, + { 1, N_("Macro") } + }; + + //! ISO Speed, tag 0x0014 + extern const TagDetails casio2IsoSpeed[] = { + { 3, "50" }, + { 4, "64" }, + { 6, "100" }, + { 9, "200" } + }; + + //! White Balance, tag 0x0019 + extern const TagDetails casio2WhiteBalance[] = { + { 0, N_("Auto") }, + { 1, N_("Daylight") }, + { 2, N_("Shade") }, + { 3, N_("Tungsten") }, + { 4, N_("Fluorescent") }, + { 5, N_("Manual") } + }; + + //! Saturation, tag 0x001f + extern const TagDetails casio2Saturation[] = { + { 0, N_("Low") }, + { 1, N_("Normal") }, + { 2, N_("High") } + }; + + //! Contrast, tag 0x0020 + extern const TagDetails casio2Contrast[] = { + { 0, N_("Low") }, + { 1, N_("Normal") }, + { 2, N_("High") } + }; + + //! Sharpness, tag 0x0021 + extern const TagDetails casio2Sharpness[] = { + { 0, N_("Soft") }, + { 1, N_("Normal") }, + { 2, N_("Hard") } + }; + + //! White Balance2, tag 0x2012 + extern const TagDetails casio2WhiteBalance2[] = { + { 0, N_("Manual") }, + { 1, N_("Daylight") }, + { 2, N_("Cloudy") }, + { 3, N_("Shade") }, + { 4, N_("Flash") }, + { 6, N_("Fluorescent") }, + { 9, N_("Tungsten") }, + { 10, N_("Tungsten") }, + { 12, N_("Flash") } + }; + + //! Release Mode, tag 0x3001 + extern const TagDetails casio2ReleaseMode[] = { + { 1, N_("Normal") }, + { 3, N_("AE Bracketing") }, + { 11, N_("WB Bracketing") }, + { 13, N_("Contrast Bracketing") }, + { 19, N_("High Speed Burst") } + }; + + //! Quality, tag 0x3002 + extern const TagDetails casio2Quality[] = { + { 1, N_("Economy") }, + { 2, N_("Normal") }, + { 3, N_("Fine") } + }; + + //! Focus Mode 2, tag 0x3003 + extern const TagDetails casio2FocusMode2[] = { + { 0, N_("Manual") }, + { 1, N_("Focus Lock") }, + { 2, N_("Macro") }, + { 3, N_("Single-Area Auto Focus") }, + { 5, N_("Infinity") }, + { 6, N_("Multi-Area Auto Focus") }, + { 8, N_("Super Macro") } + }; + + //! AutoISO, tag 0x3008 + extern const TagDetails casio2AutoISO[] = { + { 1, N_("On") }, + { 2, N_("Off") }, + { 7, N_("On (high sensitiviy)") }, + { 8, N_("On (anti-shake)") }, + { 10, N_("High Speed") } + }; + + //! AFMode, tag 0x3009 + extern const TagDetails casio2AFMode[] = { + { 0, N_("Off") }, + { 1, N_("Spot") }, + { 2, N_("Multi") }, + { 3, N_("Face Detection") }, + { 4, N_("Tracking") }, + { 5, N_("Intelligent") } + }; + + //! ColorMode, tag 0x3015 + extern const TagDetails casio2ColorMode[] = { + { 0, N_("Off") }, + { 2, N_("Black & White") }, + { 3, N_("Sepia") } + }; + + //! Enhancement, tag 0x3016 + extern const TagDetails casio2Enhancement[] = { + { 0, N_("Off") }, + { 1, N_("Scenery") }, + { 3, N_("Green") }, + { 5, N_("Unterwater") }, + { 9, N_("Flesh Tones") } + + }; + + //! Color Filter, tag 0x3017 + extern const TagDetails casio2ColorFilter[] = { + { 0, N_("Off") }, + { 1, N_("Blue") }, + { 3, N_("Green") }, + { 4, N_("Yellow") }, + { 5, N_("Red") }, + { 6, N_("Purple") }, + { 7, N_("Pink") } + }; + + //! Art Mode, tag 0x301b + extern const TagDetails casio2ArtMode[] = { + { 0, N_("Normal") }, + { 8, N_("Silent Movie") }, + { 39, N_("HDR") }, + { 45, N_("Premium Auto") }, + { 47, N_("Painting") }, + { 49, N_("Crayon Drawing") }, + { 51, N_("Panorama") }, + { 52, N_("Art HDR") }, + { 62, N_("High Speed Night Shot") }, + { 64, N_("Monochrome") }, + { 67, N_("Toy Camera") }, + { 68, N_("Pop Art") }, + { 69, N_("Light Tone") } + }; + + //! Lighting Mode, tag 0x302a + extern const TagDetails casio2LightingMode[] = { + { 0, N_("Off") }, + { 1, N_("High Dynamic Range") }, + { 5, N_("Shadow Enhance Low") }, + { 6, N_("Shadow Enhance High") } + }; + + //! Portrait Refiner, tag 0x302b + extern const TagDetails casio2PortraitRefiner[] = { + { 0, N_("Off") }, + { 1, N_("+1") }, + { 2, N_("+2") } + }; + + //! Special Effect Setting, tag 0x3031 + extern const TagDetails casio2SpecialEffectSetting[] = { + { 0, N_("Off") }, + { 1, N_("Makeup") }, + { 2, N_("Mist Removal") }, + { 3, N_("Vivid Landscape") }, + { 16, N_("Art Shot") } + }; + + //! Drive Mode, tag 0x3103 + extern const TagDetails casio2DriveMode[] = { + { 0, N_("Single Shot") }, + { 1, N_("Continuous Shooting") }, + { 2, N_("Continuous (2 fps)") }, + { 3, N_("Continuous (3 fps)") }, + { 4, N_("Continuous (4 fps)") }, + { 5, N_("Continuous (5 fps)") }, + { 6, N_("Continuous (6 fps)") }, + { 7, N_("Continuous (7 fps)") }, + { 10, N_("Continuous (10 fps)") }, + { 12, N_("Continuous (12 fps)") }, + { 15, N_("Continuous (15 fps)") }, + { 20, N_("Continuous (20 fps)") }, + { 30, N_("Continuous (30 fps)") }, + { 40, N_("Continuous (40 fps)") }, + { 60, N_("Continuous (60 fps)") }, + { 240, N_("Auto-N") } + }; + + //! Video Quality, tag 0x4003 + extern const TagDetails casio2VideoQuality[] = { + { 1, N_("Standard") }, + { 3, N_("HD (720p)") }, + { 4, N_("Full HD (1080p)") }, + { 5, N_("Low") } + }; + + // Casio2 MakerNote Tag Info + const TagInfo Casio2MakerNote::tagInfo_[] = { + TagInfo(0x0002, "PreviewImageSize", N_("Preview Image Size"), N_("Preview Image Size"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0003, "PreviewImageLength", N_("Preview Image Length"), N_("Preview Image Length"), casio2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0004, "PreviewImageStart", N_("Preview Image Start"), N_("Preview Image Start"), casio2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0008, "QualityMode", N_("Quality Mode"), N_("Quality Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2QualityMode)), + TagInfo(0x0009, "ImageSize", N_("Image Size"), N_("Image Size"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ImageSize)), + TagInfo(0x000d, "FocusMode", N_("Focus Mode"), N_("Focus Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode)), + TagInfo(0x0014, "ISOSpeed", N_("ISO Speed"), N_("ISO Speed"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2IsoSpeed)), + TagInfo(0x0019, "WhiteBalance", N_("White Balance"), N_("White Balance Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance)), + TagInfo(0x001d, "FocalLength", N_("Focal Length"), N_("Focal Length"), casio2Id, makerTags, unsignedRational, -1, printValue), + TagInfo(0x001f, "Saturation", N_("Saturation"), N_("Saturation"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Saturation)), + TagInfo(0x0020, "Contrast", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Contrast)), + TagInfo(0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Sharpness)), + TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x2000, "PreviewImage", N_("Preview Image"), N_("Preview Image"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x2001, "FirmwareDate", N_("Firmware Date"), N_("Firmware Date"), casio2Id, makerTags, asciiString, -1, print0x2001), + TagInfo(0x2011, "WhiteBalanceBias", N_("White Balance Bias"), N_("White Balance Bias"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x2012, "WhiteBalance2", N_("White Balance"), N_("White Balance Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2WhiteBalance2)), + TagInfo(0x2021, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x2022, "ObjectDistance", N_("Object Distance"), N_("Object Distance"), casio2Id, makerTags, unsignedLong, -1, print0x2022), + TagInfo(0x2034, "FlashDistance", N_("Flash Distance"), N_("Flash Distance"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x2076, "SpecialEffectMode", N_("Special Effect Mode"), N_("Special Effect Mode"), casio2Id, makerTags, unsignedByte, -1, printValue), + TagInfo(0x2089, "FaceInfo", N_("Face Info"), N_("Face Info"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x211c, "FacesDetected", N_("Faces detected"), N_("Faces detected"), casio2Id, makerTags, unsignedByte, -1, printValue), + TagInfo(0x3000, "RecordMode", N_("Record Mode"), N_("Record Mode"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x3001, "ReleaseMode", N_("Release Mode"), N_("Release Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ReleaseMode)), + TagInfo(0x3002, "Quality", N_("Quality"), N_("Quality"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Quality)), + TagInfo(0x3003, "FocusMode2", N_("Focus Mode2"), N_("Focus Mode2"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2FocusMode2)), + TagInfo(0x3006, "HometownCity", N_("Home town city"), N_("Home town city"), casio2Id, makerTags, asciiString, -1, printValue), + TagInfo(0x3007, "BestShotMode", N_("Best Shot Mode"), N_("Best Shot Mode"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x3008, "AutoISO", N_("Auto ISO"), N_("Auto ISO"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AutoISO)), + TagInfo(0x3009, "AFMode", N_("AF Mode"), N_("AF Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2AFMode)), + TagInfo(0x3011, "Sharpness2", N_("Sharpness"), N_("Sharpness"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x3012, "Contrast2", N_("Contrast"), N_("Contrast"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x3013, "Saturation2", N_("Saturation"), N_("Saturation"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x3014, "ISO", N_("ISO"), N_("ISO"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x3015, "ColorMode", N_("Color Mode"), N_("Color Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ColorMode)), + TagInfo(0x3016, "Enhancement", N_("Enhancement"), N_("Enhancement"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2Enhancement)), + TagInfo(0x3017, "ColorFilter", N_("Color Filter"), N_("Color Filter"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ColorFilter)), + TagInfo(0x301b, "ArtMode", N_("Art Mode"), N_("Art Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2ArtMode)), + TagInfo(0x301c, "SequenceNumber", N_("Sequence Number"), N_("Sequence Number"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x3020, "ImageStabilization", N_("Image Stabilization"), N_("Image Stabilization"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x302a, "LightingMode", N_("Lighting Mode"), N_("Lighting Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2LightingMode)), + TagInfo(0x302b, "PortraitRefiner", N_("Portrait Refiner"), N_("Portrait Refiner settings"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2PortraitRefiner)), + TagInfo(0x3030, "SpecialEffectLevel", N_("Special Effect Level"), N_("Special Effect Level"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x3031, "SpecialEffectSetting", N_("Special Effect Setting"), N_("Special Effect Setting"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2SpecialEffectSetting)), + TagInfo(0x3103, "DriveMode", N_("Drive Mode"), N_("Drive Mode"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2DriveMode)), + TagInfo(0x310b, "ArtModeParameters", N_("Art Mode Parameters"), N_("Art Mode Parameters"), casio2Id, makerTags, undefined, -1, printValue), + TagInfo(0x4001, "CaptureFrameRate", N_("Capture Frame Rate"), N_("Capture Frame Rate"), casio2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x4003, "VideoQuality", N_("Video Quality"), N_("Video Quality"), casio2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(casio2VideoQuality)), + TagInfo(0xffff, "(UnknownCasio2MakerNoteTag)", "(UnknownCasio2MakerNoteTag)", N_("Unknown Casio2MakerNote tag"), casio2Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* Casio2MakerNote::tagList() + { + return tagInfo_; + } + + std::ostream& Casio2MakerNote::print0x2001(std::ostream& os, const Value& value, const ExifData*) + { + // format is: "YYMM#00#00DDHH#00#00MM#00#00#00#00" + std::string s; + std::vector numbers; + for(long i=0; i=10) + { + //year + long l=(numbers[0]-48)*10+(numbers[1]-48); + if(l<70) + { + l+=2000; + } + else + { + l+=1900; + }; + os << l << ":"; + // month, day, hour, minutes + os << numbers[2] << numbers[3] << ":" << numbers[4] << numbers[5] << " " << numbers[6] << numbers[7] << ":" << numbers[8] << numbers[9]; + } + else + { + os << value; + }; + return os; + } + + std::ostream& Casio2MakerNote::print0x2022(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if(value.toLong()>=0x20000000) + { + os << N_("Inf"); + os.flags(f); + return os; + }; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) << value.toLong() / 1000.0 << _(" m"); + os.copyfmt(oss); + os.flags(f); + return os; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/casiomn_int.hpp b/vendor/exiv2-0.25/src/casiomn_int.hpp new file mode 100644 index 0000000..e242cea --- /dev/null +++ b/vendor/exiv2-0.25/src/casiomn_int.hpp @@ -0,0 +1,84 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file casiomn_int.hpp + @brief Casio MakerNote implemented using the following references: + Casio MakerNote Information by GVsoft, + Casio.pm of ExifTool by Phil Harvey, + Casio Makernote Format Specification by Evan Hunter. + @version $Rev: 3091 $ + @date 30-Oct-13, ahu: created + */ +#ifndef CASIOMN_INT_HPP_ +#define CASIOMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Casio cameras + class CasioMakerNote { + public: + //! Return read-only list of built-in Casio tags + static const TagInfo* tagList(); + //! Print ObjectDistance + static std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*); + //! Print FirmwareDate + static std::ostream& print0x0015(std::ostream& os, const Value& value, const ExifData*); + + private: + //! Makernote tag list + static const TagInfo tagInfo_[]; + + }; // class CasioMakerNote + + //! MakerNote for Casio2 cameras + class Casio2MakerNote { + public: + //! Return read-only list of built-in Casio2 tags + static const TagInfo* tagList(); + //! Print FirmwareDate + static std::ostream& print0x2001(std::ostream& os, const Value& value, const ExifData*); + //! Print ObjectDistance + static std::ostream& print0x2022(std::ostream& os, const Value& value, const ExifData*); + + private: + //! Makernote tag list + static const TagInfo tagInfo_[]; + + }; // class Casio2MakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef CasioMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/convert.cpp b/vendor/exiv2-0.25/src/convert.cpp new file mode 100644 index 0000000..03ff6ac --- /dev/null +++ b/vendor/exiv2-0.25/src/convert.cpp @@ -0,0 +1,1596 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: convert.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + Vladimir Nadvornik (vn) + History: 17-Mar-08, ahu: created basic converter framework + 20-May-08, vn: added actual conversion logic + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: convert.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "exif.hpp" +#include "iptc.hpp" +#include "xmp.hpp" +#include "futils.hpp" +#include "convert.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include // for snprintf (C99) +#ifdef _MSC_VER +# define snprintf _snprintf +#endif +#include + +#if defined WIN32 && !defined __CYGWIN__ +# include +#endif + +#ifdef EXV_HAVE_ICONV +# include +# include +#endif + +// Adobe XMP Toolkit +#ifdef EXV_HAVE_XMP_TOOLKIT +# define TXMP_STRING_TYPE std::string +# include +# include +#endif // EXV_HAVE_XMP_TOOLKIT + +// ***************************************************************************** +// local declarations +namespace { +#if defined WIN32 && !defined __CYGWIN__ + // Convert string charset with Windows functions. + bool convertStringCharsetWindows(std::string& str, const char* from, const char* to); +#endif +#if defined EXV_HAVE_ICONV + // Convert string charset with iconv. + bool convertStringCharsetIconv(std::string& str, const char* from, const char* to); +#endif + /*! + @brief Get the text value of an XmpDatum \em pos. + + If \em pos refers to a LangAltValue, \em value is set to the default language + entry without the x-default qualifier. If there is no default but + exactly one entry, \em value is set to this entry, without the qualifier. + The return code indicates if the operation was successful. + */ + bool getTextValue(std::string& value, const Exiv2::XmpData::iterator& pos); +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + //! Metadata conversions. + class Converter { + public: + /*! + @brief Type for metadata converter functions, taking two key strings, + \em from and \em to. + + These functions have access to both the source and destination metadata + containers and store the result directly in the destination container. + */ + typedef void (Converter::*ConvertFct)(const char* from, const char* to); + //! Structure to define conversions between two keys. + struct Conversion { + MetadataId metadataId_; //!< Type of metadata for the first key. + const char* key1_; //!< First metadata key. + const char* key2_; //!< Second metadata key (always an XMP key for now). + ConvertFct key1ToKey2_; //!< Conversion from first to second key. + ConvertFct key2ToKey1_; //!< Conversion from second to first key. + }; + public: + //! @name Creators + //@{ + //! Constructor for Exif tags and XMP properties. + Converter(ExifData& exifData, XmpData& xmpData); + //! Constructor for Iptc tags and XMP properties. + Converter(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset = 0); + //@} + + //! @name Manipulators + //@{ + //! Convert Exif tags or IPTC datasets to XMP properties according to the conversion table. + void cnvToXmp(); + //! Convert XMP properties to Exif tags or IPTC datasets according to the conversion table. + void cnvFromXmp(); + /*! + @brief Set the erase flag. + + This flag indicates whether successfully converted source records are erased. + */ + void setErase(bool onoff =true) { erase_ = onoff; } + /*! + @brief Set the overwrite flag. + + This flag indicates whether existing target records are overwritten. + */ + void setOverwrite(bool onoff =true) { overwrite_ = onoff; } + //@} + + //! @name Conversion functions (manipulators) + //@{ + /*! + @brief Do nothing conversion function. + + Use when, for example, a one-way conversion is needed. + */ + void cnvNone(const char*, const char*); + /*! + @brief Simple Exif to XMP conversion function. + + Sets the XMP property to an XmpText value containing the Exif value string. + */ + void cnvExifValue(const char* from, const char* to); + /*! + @brief Convert the tag Exif.Photo.UserComment to XMP. + + Todo: Convert the Exif comment to UTF-8 if necessary. + */ + void cnvExifComment(const char* from, const char* to); + /*! + @brief Converts Exif tag with multiple components to XMP array. + + Converts Exif tag with multiple components to XMP array. This function is + used for ComponentsConfiguration tag. + */ + void cnvExifArray(const char* from, const char* to); + /*! + @brief Exif date to XMP conversion function. + + Sets the XMP property to an XmpText value containing date and time. This function + combines values from multiple Exif tags as described in XMP specification. It + is used for DateTime, DateTimeOriginal, DateTimeDigitized and GPSTimeStamp. + */ + void cnvExifDate(const char* from, const char* to); + /*! + @brief Exif version to XMP conversion function. + + Converts ExifVersion tag to XmpText value. + */ + void cnvExifVersion(const char* from, const char* to); + /*! + @brief Exif GPS version to XMP conversion function. + + Converts GPSVersionID tag to XmpText value. + */ + void cnvExifGPSVersion(const char* from, const char* to); + /*! + @brief Exif Flash to XMP conversion function. + + Converts Flash tag to XMP structure. + */ + void cnvExifFlash(const char* from, const char* to); + /*! + @brief Exif GPS coordinate to XMP conversion function. + + Converts GPS coordinates tag to XmpText value. It combines multiple Exif tags + as described in XMP specification. + */ + void cnvExifGPSCoord(const char* from, const char* to); + /*! + @brief Simple XMP to Exif conversion function. + + Sets the Exif tag according to the XMP property. + For LangAlt values, only the x-default entry is used. + + Todo: Escape non-ASCII characters in XMP text values + */ + void cnvXmpValue(const char* from, const char* to); + /*! + @brief Convert the tag Xmp.exif.UserComment to Exif. + */ + void cnvXmpComment(const char* from, const char* to); + /*! + @brief Converts XMP array to Exif tag with multiple components. + + Converts XMP array to Exif tag with multiple components. This function is + used for ComponentsConfiguration tag. + */ + void cnvXmpArray(const char* from, const char* to); + /*! + @brief XMP to Exif date conversion function. + + Converts the XmpText value to Exif date and time. This function + sets multiple Exif tags as described in XMP specification. It + is used for DateTime, DateTimeOriginal, DateTimeDigitized and GPSTimeStamp. + */ + void cnvXmpDate(const char* from, const char* to); + /*! + @brief XMP to Exif version conversion function. + + Converts XmpText value to ExifVersion tag. + */ + void cnvXmpVersion(const char* from, const char* to); + /*! + @brief XMP to Exif GPS version conversion function. + + Converts XmpText value to GPSVersionID tag. + */ + void cnvXmpGPSVersion(const char* from, const char* to); + /*! + @brief XMP to Exif Flash conversion function. + + Converts XMP structure to Flash tag. + */ + void cnvXmpFlash(const char* from, const char* to); + /*! + @brief XMP to Exif GPS coordinate conversion function. + + Converts XmpText value to GPS coordinates tags. It sets multiple Exif tags + as described in XMP specification. + */ + void cnvXmpGPSCoord(const char* from, const char* to); + /*! + @brief IPTC dataset to XMP conversion function. + + Multiple IPTC datasets with the same key are converted to an XMP array. + */ + void cnvIptcValue(const char* from, const char* to); + /*! + @brief XMP to IPTC dataset conversion function. + + Each array element of an XMP array value is added as one IPTC dataset. + */ + void cnvXmpValueToIptc(const char* from, const char* to); + /*! + @brief Write exif:NativeDigest and tiff:NativeDigest properties to XMP. + + Compute digests from Exif values and write them to exif:NativeDigest + and tiff:NativeDigest properties. This should be compatible with XMP SDK. + */ + void writeExifDigest(); + /*! + @brief Copies metadata in appropriate direction. + + From values of exif:NativeDigest and tiff:NativeDigest detects which of + XMP and Exif was updated more recently and copies metadata in appropriate direction. + */ + void syncExifWithXmp(); + //@} + + //! @name Accessors + //@{ + //! Get the value of the erase flag, see also setErase(bool on). + bool erase() const { return erase_; } + //! Get the value of the overwrite flag, see also setOverwrite(bool on). + bool overwrite() const { return overwrite_; } + //@} + + private: + bool prepareExifTarget(const char* to, bool force =false); + bool prepareIptcTarget(const char* to, bool force =false); + bool prepareXmpTarget(const char* to, bool force =false); + std::string computeExifDigest(bool tiff); + std::string computeIptcDigest(); + + // DATA + static const Conversion conversion_[]; //findKey(ExifKey(to)); + if (pos == exifData_->end()) return true; + if (!overwrite_ && !force) return false; + exifData_->erase(pos); + return true; + } + + bool Converter::prepareIptcTarget(const char* to, bool force) + { + Exiv2::IptcData::iterator pos = iptcData_->findKey(IptcKey(to)); + if (pos == iptcData_->end()) return true; + if (!overwrite_ && !force) return false; + while ((pos = iptcData_->findKey(IptcKey(to))) != iptcData_->end()) { + iptcData_->erase(pos); + } + return true; + } + + bool Converter::prepareXmpTarget(const char* to, bool force) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(to)); + if (pos == xmpData_->end()) return true; + if (!overwrite_ && !force) return false; + xmpData_->erase(pos); + return true; + } + + void Converter::cnvExifValue(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + std::string value = pos->toString(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + if (!prepareXmpTarget(to)) return; + (*xmpData_)[to] = value; + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifComment(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + if (!prepareXmpTarget(to)) return; + const CommentValue* cv = dynamic_cast(&pos->value()); + if (cv == 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + // Todo: Convert to UTF-8 if necessary + (*xmpData_)[to] = cv->comment(); + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifArray(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + if (!prepareXmpTarget(to)) return; + for (int i = 0; i < pos->count(); ++i) { + std::string value = pos->toString(i); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + (*xmpData_)[to] = value; + } + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifDate(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + if (!prepareXmpTarget(to)) return; + int year, month, day, hour, min, sec; + std::string subsec; + char buf[30]; + + if (std::string(from) != "Exif.GPSInfo.GPSTimeStamp") { + std::string value = pos->toString(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + if (sscanf(value.c_str(), "%d:%d:%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec) != 6) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to + << ", unable to parse '" << value << "'\n"; +#endif + return; + } + } + else { // "Exif.GPSInfo.GPSTimeStamp" + + bool ok = true; + if (pos->count() != 3) ok = false; + if (ok) { + for (int i = 0; i < 3; ++i) { + if (pos->toRational(i).second == 0) { + ok = false; + break; + } + } + } + if (!ok) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + + double dhour = pos->toFloat(0); + double dmin = pos->toFloat(1); + // Hack: Need Value::toDouble + Rational r = pos->toRational(2); + double dsec = static_cast(r.first)/r.second; + + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + + dsec = dhour * 3600.0 + dmin * 60.0 + dsec; + + hour = static_cast(dsec / 3600.0); + dsec -= hour * 3600; + min = static_cast(dsec / 60.0); + dsec -= min * 60; + sec = static_cast(dsec); + dsec -= sec; + + snprintf(buf, sizeof(buf), "%.9f", dsec); + buf[sizeof(buf) - 1] = 0; + buf[1] = '.'; // some locales use ',' + subsec = buf + 1; + + Exiv2::ExifData::iterator datePos = exifData_->findKey(ExifKey("Exif.GPSInfo.GPSDateStamp")); + if (datePos == exifData_->end()) { + datePos = exifData_->findKey(ExifKey("Exif.Photo.DateTimeOriginal")); + } + if (datePos == exifData_->end()) { + datePos = exifData_->findKey(ExifKey("Exif.Photo.DateTimeDigitized")); + } + if (datePos == exifData_->end()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + std::string value = datePos->toString(); + if (sscanf(value.c_str(), "%d:%d:%d", &year, &month, &day) != 3) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to + << ", unable to parse '" << value << "'\n"; +#endif + return; + } + } + + const char* subsecTag = 0; + if (std::string(from) == "Exif.Image.DateTime") { + subsecTag = "Exif.Photo.SubSecTime"; + } + else if (std::string(from) == "Exif.Photo.DateTimeOriginal") { + subsecTag = "Exif.Photo.SubSecTimeOriginal"; + } + else if (std::string(from) == "Exif.Photo.DateTimeDigitized") { + subsecTag = "Exif.Photo.SubSecTimeDigitized"; + } + + if (subsecTag) { + ExifData::iterator subsec_pos = exifData_->findKey(ExifKey(subsecTag)); + if ( subsec_pos != exifData_->end() + && subsec_pos->typeId() == asciiString) { + std::string ss = subsec_pos->toString(); + if (!ss.empty()) { + bool ok = false; + stringTo(ss, ok); + if (ok) subsec = std::string(".") + ss; + } + } + if (erase_) exifData_->erase(subsec_pos); + } + + if (subsec.size() > 10) subsec = subsec.substr(0, 10); + snprintf(buf, sizeof(buf), "%4d-%02d-%02dT%02d:%02d:%02d%s", + year, month, day, hour, min, sec, subsec.c_str()); + buf[sizeof(buf) - 1] = 0; + + (*xmpData_)[to] = buf; + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifVersion(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + if (!prepareXmpTarget(to)) return; + std::ostringstream value; + for (int i = 0; i < pos->count(); ++i) { + value << static_cast(pos->toLong(i)); + } + (*xmpData_)[to] = value.str(); + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifGPSVersion(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + if (!prepareXmpTarget(to)) return; + std::ostringstream value; + for (int i = 0; i < pos->count(); ++i) { + if (i > 0) value << '.'; + value << pos->toLong(i); + } + (*xmpData_)[to] = value.str(); + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifFlash(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end() || pos->count() == 0) return; + if (!prepareXmpTarget(to)) return; + int value = pos->toLong(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + + (*xmpData_)["Xmp.exif.Flash/exif:Fired"] = static_cast(value & 1); + (*xmpData_)["Xmp.exif.Flash/exif:Return"] = (value >> 1) & 3; + (*xmpData_)["Xmp.exif.Flash/exif:Mode"] = (value >> 3) & 3; + (*xmpData_)["Xmp.exif.Flash/exif:Function"] = static_cast((value >> 5) & 1); + (*xmpData_)["Xmp.exif.Flash/exif:RedEyeMode"] = static_cast((value >> 6) & 1); + + if (erase_) exifData_->erase(pos); + } + + void Converter::cnvExifGPSCoord(const char* from, const char* to) + { + Exiv2::ExifData::iterator pos = exifData_->findKey(ExifKey(from)); + if (pos == exifData_->end()) return; + if (!prepareXmpTarget(to)) return; + if (pos->count() != 3) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + Exiv2::ExifData::iterator refPos = exifData_->findKey(ExifKey(std::string(from) + "Ref")); + if (refPos == exifData_->end()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + double deg[3]; + for (int i = 0; i < 3; ++i) { + const int32_t z = pos->toRational(i).first; + const int32_t d = pos->toRational(i).second; + if (d == 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + // Hack: Need Value::toDouble + deg[i] = static_cast(z)/d; + } + double min = deg[0] * 60.0 + deg[1] + deg[2] / 60.0; + int ideg = static_cast(min / 60.0); + min -= ideg * 60; + std::ostringstream oss; + oss << ideg << "," + << std::fixed << std::setprecision(7) << min + << refPos->toString().c_str()[0]; + (*xmpData_)[to] = oss.str(); + + if (erase_) exifData_->erase(pos); + if (erase_) exifData_->erase(refPos); + } + + void Converter::cnvXmpValue(const char* from, const char* to) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + if (!prepareExifTarget(to)) return; + std::string value; + if (!getTextValue(value, pos)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + // Todo: Escape non-ASCII characters in XMP text values + ExifKey key(to); + Exifdatum ed(key); + if (0 == ed.setValue(value)) { + exifData_->add(ed); + } + if (erase_) xmpData_->erase(pos); + } + + void Converter::cnvXmpComment(const char* from, const char* to) + { + if (!prepareExifTarget(to)) return; + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + std::string value; + if (!getTextValue(value, pos)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + // Assumes the XMP value is encoded in UTF-8, as it should be + (*exifData_)[to] = "charset=Unicode " + value; + if (erase_) xmpData_->erase(pos); + } + + void Converter::cnvXmpArray(const char* from, const char* to) + { + if (!prepareExifTarget(to)) return; + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + std::ostringstream array; + for (int i = 0; i < pos->count(); ++i) { + std::string value = pos->toString(i); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + array << value; + if (i != pos->count() - 1) array << " "; + } + (*exifData_)[to] = array.str(); + if (erase_) xmpData_->erase(pos); + } + + void Converter::cnvXmpDate(const char* from, const char* to) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + if (!prepareExifTarget(to)) return; +#ifdef EXV_HAVE_XMP_TOOLKIT + std::string value = pos->toString(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + XMP_DateTime datetime; + try { + SXMPUtils::ConvertToDate(value, &datetime); + } +#ifndef SUPPRESS_WARNINGS + catch (const XMP_Error& e) { + EXV_WARNING << "Failed to convert " << from << " to " << to << " (" << e.GetErrMsg() << ")\n"; + return; + } +#else + catch (const XMP_Error&) { + return; + } +#endif // SUPPRESS_WARNINGS + char buf[30]; + if (std::string(to) != "Exif.GPSInfo.GPSTimeStamp") { + + SXMPUtils::ConvertToLocalTime(&datetime); + + snprintf(buf, sizeof(buf), "%4d:%02d:%02d %02d:%02d:%02d", + static_cast(datetime.year), + static_cast(datetime.month), + static_cast(datetime.day), + static_cast(datetime.hour), + static_cast(datetime.minute), + static_cast(datetime.second)); + buf[sizeof(buf) - 1] = 0; + (*exifData_)[to] = buf; + + if (datetime.nanoSecond) { + const char* subsecTag = 0; + if (std::string(to) == "Exif.Image.DateTime") { + subsecTag = "Exif.Photo.SubSecTime"; + } + else if (std::string(to) == "Exif.Photo.DateTimeOriginal") { + subsecTag = "Exif.Photo.SubSecTimeOriginal"; + } + else if (std::string(to) == "Exif.Photo.DateTimeDigitized") { + subsecTag = "Exif.Photo.SubSecTimeDigitized"; + } + if (subsecTag) { + prepareExifTarget(subsecTag, true); + (*exifData_)[subsecTag] = toString(datetime.nanoSecond); + } + } + } + else { // "Exif.GPSInfo.GPSTimeStamp" + + // Ignore the time zone, assuming the time is in UTC as it should be + + URational rhour(datetime.hour, 1); + URational rmin(datetime.minute, 1); + URational rsec(datetime.second, 1); + if (datetime.nanoSecond != 0) { + if (datetime.second != 0) { + // Add the seconds to rmin so that the ns fit into rsec + rmin.second = 60; + rmin.first *= 60; + rmin.first += datetime.second; + } + rsec.second = 1000000000; + rsec.first = datetime.nanoSecond; + } + + std::ostringstream array; + array << rhour << " " << rmin << " " << rsec; + (*exifData_)[to] = array.str(); + + prepareExifTarget("Exif.GPSInfo.GPSDateStamp", true); + snprintf(buf, sizeof(buf), "%4d:%02d:%02d", + static_cast(datetime.year), + static_cast(datetime.month), + static_cast(datetime.day)); + buf[sizeof(buf) - 1] = 0; + (*exifData_)["Exif.GPSInfo.GPSDateStamp"] = buf; + } + + if (erase_) xmpData_->erase(pos); +#else +# ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +# endif +#endif // !EXV_HAVE_XMP_TOOLKIT + } + + void Converter::cnvXmpVersion(const char* from, const char* to) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + if (!prepareExifTarget(to)) return; + std::string value = pos->toString(); + if (!pos->value().ok() || value.length() < 4) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + std::ostringstream array; + + array << static_cast(value[0]) << " " + << static_cast(value[1]) << " " + << static_cast(value[2]) << " " + << static_cast(value[3]); + + (*exifData_)[to] = array.str(); + if (erase_) xmpData_->erase(pos); + } + + void Converter::cnvXmpGPSVersion(const char* from, const char* to) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + if (!prepareExifTarget(to)) return; + std::string value = pos->toString(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + + for (unsigned i = 0; i < value.length(); ++i) { + if (value[i] == '.') value[i] = ' '; + } + (*exifData_)[to] = value; + if (erase_) xmpData_->erase(pos); + + } + + void Converter::cnvXmpFlash(const char* from, const char* to) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Fired")); + if (pos == xmpData_->end()) return; + if (!prepareExifTarget(to)) return; + unsigned short value = 0; + + if (pos != xmpData_->end() && pos->count() > 0) { + int fired = pos->toLong(); + if (pos->value().ok()) + value |= fired & 1; +#ifndef SUPPRESS_WARNINGS + else + EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Fired" << " to " << to << "\n"; +#endif + } + pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Return")); + if (pos != xmpData_->end() && pos->count() > 0) { + int ret = pos->toLong(); + if (pos->value().ok()) + value |= (ret & 3) << 1; +#ifndef SUPPRESS_WARNINGS + else + EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Return" << " to " << to << "\n"; +#endif + } + pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Mode")); + if (pos != xmpData_->end() && pos->count() > 0) { + int mode = pos->toLong(); + if (pos->value().ok()) + value |= (mode & 3) << 3; +#ifndef SUPPRESS_WARNINGS + else + EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Mode" << " to " << to << "\n"; +#endif + } + pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:Function")); + if (pos != xmpData_->end() && pos->count() > 0) { + int function = pos->toLong(); + if (pos->value().ok()) + value |= (function & 1) << 5; +#ifndef SUPPRESS_WARNINGS + else + EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:Function" << " to " << to << "\n"; +#endif + } + pos = xmpData_->findKey(XmpKey(std::string(from) + "/exif:RedEyeMode")); + if (pos != xmpData_->end() && pos->count() > 0) { + int red = pos->toLong(); + if (pos->value().ok()) + value |= (red & 1) << 6; +#ifndef SUPPRESS_WARNINGS + else + EXV_WARNING << "Failed to convert " << std::string(from) + "/exif:RedEyeMode" << " to " << to << "\n"; +#endif + } + + (*exifData_)[to] = value; + if (erase_) xmpData_->erase(pos); + } + + void Converter::cnvXmpGPSCoord(const char* from, const char* to) + { + Exiv2::XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + if (!prepareExifTarget(to)) return; + std::string value = pos->toString(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + if (value.empty()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << from << " is empty\n"; +#endif + return; + } + + double deg = 0.0; + double min = 0.0; + double sec = 0.0; + char ref = '\0'; + char sep1 = '\0'; + char sep2 = '\0'; + + ref = value[value.length() - 1]; + value.erase(value.length() - 1); + + std::istringstream in(value); + + in >> deg >> sep1 >> min >> sep2; + + if (sep2 == ',') { + in >> sec; + } + else { + sec = (min - static_cast(min)) * 60.0; + min = static_cast(static_cast(min)); + sep2 = ','; + } + + if ( in.bad() || !(ref == 'N' || ref == 'S' || ref == 'E' || ref == 'W') + || sep1 != ',' || sep2 != ',' || !in.eof()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + + Rational rdeg = floatToRationalCast(static_cast(deg)); + Rational rmin = floatToRationalCast(static_cast(min)); + Rational rsec = floatToRationalCast(static_cast(sec)); + + std::ostringstream array; + array << rdeg << " " << rmin << " " << rsec; + (*exifData_)[to] = array.str(); + + prepareExifTarget((std::string(to) + "Ref").c_str(), true); + char ref_str[2] = {ref, 0}; + (*exifData_)[std::string(to) + "Ref"] = ref_str; + + if (erase_) xmpData_->erase(pos); + } + + void Converter::cnvIptcValue(const char* from, const char* to) + { + Exiv2::IptcData::iterator pos = iptcData_->findKey(IptcKey(from)); + if (pos == iptcData_->end()) return; + if (!prepareXmpTarget(to)) return; + while (pos != iptcData_->end()) { + if (pos->key() == from) { + std::string value = pos->toString(); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + ++pos; + continue; + } + if (iptcCharset_) convertStringCharset(value, iptcCharset_, "UTF-8"); + (*xmpData_)[to] = value; + if (erase_) { + pos = iptcData_->erase(pos); + continue; + } + } + ++pos; + } + } + + void Converter::cnvXmpValueToIptc(const char* from, const char* to) + { + XmpData::iterator pos = xmpData_->findKey(XmpKey(from)); + if (pos == xmpData_->end()) return; + if (!prepareIptcTarget(to)) return; + + if (pos->typeId() == langAlt || pos->typeId() == xmpText) { + std::string value; + if (!getTextValue(value, pos)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + return; + } + (*iptcData_)[to] = value; + (*iptcData_)["Iptc.Envelope.CharacterSet"] = "\033%G"; // indicate UTF-8 encoding + if (erase_) xmpData_->erase(pos); + return; + } + + int count = pos->count(); + bool added = false; + for (int i = 0; i < count; ++i) { + std::string value = pos->toString(i); + if (!pos->value().ok()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to convert " << from << " to " << to << "\n"; +#endif + continue; + } + IptcKey key(to); + Iptcdatum id(key); + id.setValue(value); + iptcData_->add(id); + added = true; + } + if (added) (*iptcData_)["Iptc.Envelope.CharacterSet"] = "\033%G"; // indicate UTF-8 encoding + if (erase_) xmpData_->erase(pos); + } + + std::string Converter::computeExifDigest(bool tiff) + { +#ifdef EXV_HAVE_XMP_TOOLKIT + std::ostringstream res; + MD5_CTX context; + unsigned char digest[16]; + + MD5Init ( &context ); + for (unsigned int i = 0; i < EXV_COUNTOF(conversion_); ++i) { + const Conversion& c = conversion_[i]; + if (c.metadataId_ == mdExif) { + Exiv2::ExifKey key(c.key1_); + if (tiff && key.groupName() != "Image") continue; + if (!tiff && key.groupName() == "Image") continue; + + if (!res.str().empty()) res << ','; + res << key.tag(); + Exiv2::ExifData::iterator pos = exifData_->findKey(key); + if (pos == exifData_->end()) continue; + DataBuf data(pos->size()); + pos->copy(data.pData_, littleEndian /* FIXME ? */); + MD5Update ( &context, data.pData_, data.size_); + } + } + MD5Final(digest, &context); + res << ';'; + res << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; + for (int i = 0; i < 16; ++i) { + res << static_cast(digest[i]); + } + return res.str(); +#else + return std::string(""); +#endif + } + + void Converter::writeExifDigest() + { +#ifdef EXV_HAVE_XMP_TOOLKIT + (*xmpData_)["Xmp.tiff.NativeDigest"] = computeExifDigest(true); + (*xmpData_)["Xmp.exif.NativeDigest"] = computeExifDigest(false); +#endif + } + + void Converter::syncExifWithXmp() + { + Exiv2::XmpData::iterator td = xmpData_->findKey(XmpKey("Xmp.tiff.NativeDigest")); + Exiv2::XmpData::iterator ed = xmpData_->findKey(XmpKey("Xmp.exif.NativeDigest")); + if (td != xmpData_->end() && ed != xmpData_->end()) { + if (td->value().toString() == computeExifDigest(true) && + ed->value().toString() == computeExifDigest(false)) { + // We have both digests and the values match + // XMP is up-to-date, we should update Exif + setOverwrite(true); + setErase(false); + + cnvFromXmp(); + writeExifDigest(); + return; + } + else { + // We have both digests and the values do not match + // Exif was modified after XMP, we should update XMP + setOverwrite(true); + setErase(false); + + cnvToXmp(); + writeExifDigest(); + return; + } + } + else { + // We don't have both digests, it is probably the first conversion to XMP + setOverwrite(false); // to be safe + setErase(false); + + cnvToXmp(); + writeExifDigest(); + return; + } + } + + std::string Converter::computeIptcDigest() + { +#ifdef EXV_HAVE_XMP_TOOLKIT + std::ostringstream res; + MD5_CTX context; + unsigned char digest[16]; + + MD5Init(&context); + + DataBuf data = IptcParser::encode(*iptcData_); + MD5Update(&context, data.pData_, data.size_); + MD5Final(digest, &context); + res << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; + for (int i = 0; i < 16; ++i) { + res << static_cast(digest[i]); + } + return res.str(); +#else + return std::string(""); +#endif + } + + + // ************************************************************************* + // free functions + void copyExifToXmp(const ExifData& exifData, XmpData& xmpData) + { + Converter converter(const_cast(exifData), xmpData); + converter.cnvToXmp(); + } + + void moveExifToXmp(ExifData& exifData, XmpData& xmpData) + { + Converter converter(const_cast(exifData), xmpData); + converter.setErase(); + converter.cnvToXmp(); + } + + void copyXmpToExif(const XmpData& xmpData, ExifData& exifData) + { + Converter converter(exifData, const_cast(xmpData)); + converter.cnvFromXmp(); + } + + void moveXmpToExif(XmpData& xmpData, ExifData& exifData) + { + Converter converter(exifData, const_cast(xmpData)); + converter.setErase(); + converter.cnvFromXmp(); + } + + void syncExifWithXmp(ExifData& exifData, XmpData& xmpData) + { + Converter converter(exifData, const_cast(xmpData)); + converter.syncExifWithXmp(); + } + + void copyIptcToXmp(const IptcData& iptcData, XmpData& xmpData, const char *iptcCharset) + { + if (!iptcCharset) iptcCharset = iptcData.detectCharset(); + if (!iptcCharset) iptcCharset = "ISO-8859-1"; + + Converter converter(const_cast(iptcData), xmpData, iptcCharset); + converter.cnvToXmp(); + } + + void moveIptcToXmp(IptcData& iptcData, XmpData& xmpData, const char *iptcCharset) + { + if (!iptcCharset) iptcCharset = iptcData.detectCharset(); + if (!iptcCharset) iptcCharset = "ISO-8859-1"; + Converter converter(const_cast(iptcData), xmpData, iptcCharset); + converter.setErase(); + converter.cnvToXmp(); + } + + void copyXmpToIptc(const XmpData& xmpData, IptcData& iptcData) + { + Converter converter(iptcData, const_cast(xmpData)); + converter.cnvFromXmp(); + } + + void moveXmpToIptc(XmpData& xmpData, IptcData& iptcData) + { + Converter converter(iptcData, const_cast(xmpData)); + converter.setErase(); + converter.cnvFromXmp(); + } + + bool convertStringCharset(std::string &str, const char* from, const char* to) + { + if (0 == strcmp(from, to)) return true; // nothing to do + bool ret = false; +#if defined EXV_HAVE_ICONV + ret = convertStringCharsetIconv(str, from, to); +#elif defined WIN32 && !defined __CYGWIN__ + ret = convertStringCharsetWindows(str, from, to); +#else +# ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Charset conversion required but no character mapping functionality available.\n"; +# endif +#endif + return ret; + } +} // namespace Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + + using namespace Exiv2; + +#if defined WIN32 && !defined __CYGWIN__ + bool swapBytes(std::string& str) + { + // Naive byte-swapping, I'm sure this can be done more efficiently + if (str.size() & 1) { +#ifdef DEBUG + EXV_DEBUG << "swapBytes: Size " << str.size() << " of input string is not even.\n"; +#endif + return false; + } + for (unsigned int i = 0; i < str.size() / 2; ++i) { + char t = str[2 * i]; + str[2 * i] = str[2 * i + 1]; + str[2 * i + 1] = t; + } + return true; + } + + bool mb2wc(UINT cp, std::string& str) + { + if (str.empty()) return true; + int len = MultiByteToWideChar(cp, 0, str.c_str(), (int)str.size(), 0, 0); + if (len == 0) { +#ifdef DEBUG + EXV_DEBUG << "mb2wc: Failed to determine required size of output buffer.\n"; +#endif + return false; + } + std::vector out; + out.resize(len * 2); + int ret = MultiByteToWideChar(cp, 0, str.c_str(), (int)str.size(), (LPWSTR)&out[0], len * 2); + if (ret == 0) { +#ifdef DEBUG + EXV_DEBUG << "mb2wc: Failed to convert the input string to a wide character string.\n"; +#endif + return false; + } + str.assign(out.begin(), out.end()); + return true; + } + + bool wc2mb(UINT cp, std::string& str) + { + if (str.empty()) return true; + if (str.size() & 1) { +#ifdef DEBUG + EXV_DEBUG << "wc2mb: Size " << str.size() << " of input string is not even.\n"; +#endif + return false; + } + int len = WideCharToMultiByte(cp, 0, (LPCWSTR)str.data(), (int)str.size() / 2, 0, 0, 0, 0); + if (len == 0) { +#ifdef DEBUG + EXV_DEBUG << "wc2mb: Failed to determine required size of output buffer.\n"; +#endif + return false; + } + std::vector out; + out.resize(len); + int ret = WideCharToMultiByte(cp, 0, (LPCWSTR)str.data(), (int)str.size() / 2, (LPSTR)&out[0], len, 0, 0); + if (ret == 0) { +#ifdef DEBUG + EXV_DEBUG << "wc2mb: Failed to convert the input string to a multi byte string.\n"; +#endif + return false; + } + str.assign(out.begin(), out.end()); + return true; + } + + bool utf8ToUcs2be(std::string& str) + { + bool ret = mb2wc(CP_UTF8, str); + if (ret) ret = swapBytes(str); + return ret; + } + + bool utf8ToUcs2le(std::string& str) + { + return mb2wc(CP_UTF8, str); + } + + bool ucs2beToUtf8(std::string& str) + { + bool ret = swapBytes(str); + if (ret) ret = wc2mb(CP_UTF8, str); + return ret; + } + + bool ucs2beToUcs2le(std::string& str) + { + return swapBytes(str); + } + + bool ucs2leToUtf8(std::string& str) + { + return wc2mb(CP_UTF8, str); + } + + bool ucs2leToUcs2be(std::string& str) + { + return swapBytes(str); + } + + bool iso88591ToUtf8(std::string& str) + { + bool ret = mb2wc(28591, str); + if (ret) ret = wc2mb(CP_UTF8, str); + return ret; + } + + bool asciiToUtf8(std::string& /*str*/) + { + // nothing to do + return true; + } + + typedef bool (*ConvFct)(std::string& str); + + struct ConvFctList { + bool operator==(std::pair fromTo) const + { return 0 == strcmp(from_, fromTo.first) && 0 == strcmp(to_, fromTo.second); } + const char* from_; + const char* to_; + ConvFct convFct_; + }; + + const ConvFctList convFctList[] = { + { "UTF-8", "UCS-2BE", utf8ToUcs2be }, + { "UTF-8", "UCS-2LE", utf8ToUcs2le }, + { "UCS-2BE", "UTF-8", ucs2beToUtf8 }, + { "UCS-2BE", "UCS-2LE", ucs2beToUcs2le }, + { "UCS-2LE", "UTF-8", ucs2leToUtf8 }, + { "UCS-2LE", "UCS-2BE", ucs2leToUcs2be }, + { "ISO-8859-1", "UTF-8", iso88591ToUtf8 }, + { "ASCII", "UTF-8", asciiToUtf8 } + // Update the convertStringCharset() documentation if you add more here! + }; + + bool convertStringCharsetWindows(std::string& str, const char* from, const char* to) + { + bool ret = false; + const ConvFctList* p = find(convFctList, std::make_pair(from, to)); + std::string tmpstr = str; + if (p) ret = p->convFct_(tmpstr); +#ifndef SUPPRESS_WARNINGS + else { + EXV_WARNING << "No Windows function to map character string from " << from << " to " << to << " available.\n"; + } +#endif + if (ret) str = tmpstr; + return ret; + } + +#endif // defined WIN32 && !defined __CYGWIN__ +#if defined EXV_HAVE_ICONV + bool convertStringCharsetIconv(std::string& str, const char* from, const char* to) + { + if (0 == strcmp(from, to)) return true; // nothing to do + + bool ret = true; + iconv_t cd; + cd = iconv_open(to, from); + if (cd == (iconv_t)(-1)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "iconv_open: " << strError() << "\n"; +#endif + return false; + } + std::string outstr; + EXV_ICONV_CONST char* inptr = const_cast(str.c_str()); + size_t inbytesleft = str.length(); + while (inbytesleft) { + char outbuf[256]; + char* outptr = outbuf; + size_t outbytesleft = sizeof(outbuf); + size_t rc = iconv(cd, + &inptr, + &inbytesleft, + &outptr, + &outbytesleft); + int outbytesProduced = sizeof(outbuf) - outbytesleft; + if (rc == size_t(-1) && errno != E2BIG) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "iconv: " << strError() + << " inbytesleft = " << inbytesleft << "\n"; +#endif + ret = false; + break; + } + outstr.append(std::string(outbuf, outbytesProduced)); + } + if (cd != (iconv_t)(-1)) { + iconv_close(cd); + } + + if (ret) str = outstr; + return ret; + } + +#endif // EXV_HAVE_ICONV + bool getTextValue(std::string& value, const XmpData::iterator& pos) + { + if (pos->typeId() == langAlt) { + // get the default language entry without x-default qualifier + value = pos->toString(0); + if (!pos->value().ok() && pos->count() == 1) { + // If there is no default but exactly one entry, take that + // without the qualifier + value = pos->toString(); + if ( pos->value().ok() + && value.length() > 5 && value.substr(0, 5) == "lang=") { + std::string::size_type pos = value.find_first_of(' '); + if (pos != std::string::npos) { + value = value.substr(pos + 1); + } + else { + value.clear(); + } + } + } + } + else { + value = pos->toString(); + } + return pos->value().ok(); + } + +} diff --git a/vendor/exiv2-0.25/src/cr2image.cpp b/vendor/exiv2-0.25/src/cr2image.cpp new file mode 100644 index 0000000..aaf06d4 --- /dev/null +++ b/vendor/exiv2-0.25/src/cr2image.cpp @@ -0,0 +1,298 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: cr2image.cpp + Version: $Rev: 3846 $ + Author(s): Andreas Huggel (ahu) + History: 22-Apr-06, ahu: created + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: cr2image.cpp 3846 2015-06-08 14:39:59Z ahuggel $") + +// included header files +#include "config.h" + +#include "cr2image.hpp" +#include "cr2image_int.hpp" +#include "tiffcomposite_int.hpp" +#include "tiffimage_int.hpp" +#include "image.hpp" +#include "error.hpp" +#include "futils.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + Cr2Image::Cr2Image(BasicIo::AutoPtr io, bool /*create*/) + : Image(ImageType::cr2, mdExif | mdIptc | mdXmp, io) + { + } // Cr2Image::Cr2Image + + std::string Cr2Image::mimeType() const + { + return "image/x-canon-cr2"; + } + + int Cr2Image::pixelWidth() const + { + ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); + if (imageWidth != exifData_.end() && imageWidth->count() > 0) { + return imageWidth->toLong(); + } + return 0; + } + + int Cr2Image::pixelHeight() const + { + ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); + if (imageHeight != exifData_.end() && imageHeight->count() > 0) { + return imageHeight->toLong(); + } + return 0; + } + + void Cr2Image::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "CR2")); + } + + void Cr2Image::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading CR2 file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isCr2Type(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "CR2"); + } + clearMetadata(); + ByteOrder bo = Cr2Parser::decode(exifData_, + iptcData_, + xmpData_, + io_->mmap(), + io_->size()); + setByteOrder(bo); + } // Cr2Image::readMetadata + + void Cr2Image::writeMetadata() + { +#ifdef DEBUG + std::cerr << "Writing CR2 file " << io_->path() << "\n"; +#endif + ByteOrder bo = byteOrder(); + byte* pData = 0; + long size = 0; + IoCloser closer(*io_); + if (io_->open() == 0) { + // Ensure that this is the correct image type + if (isCr2Type(*io_, false)) { + pData = io_->mmap(true); + size = io_->size(); + Cr2Header cr2Header; + if (0 == cr2Header.read(pData, 16)) { + bo = cr2Header.byteOrder(); + } + } + } + if (bo == invalidByteOrder) { + bo = littleEndian; + } + setByteOrder(bo); + Cr2Parser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw + } // Cr2Image::writeMetadata + + ByteOrder Cr2Parser::decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ) + { + Cr2Header cr2Header; + return TiffParserWorker::decode(exifData, + iptcData, + xmpData, + pData, + size, + Tag::root, + TiffMapping::findDecoder, + &cr2Header); + } + + WriteMethod Cr2Parser::encode( + BasicIo& io, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData + ) + { + // Copy to be able to modify the Exif data + ExifData ed = exifData; + + // Delete IFDs which do not occur in TIFF images + static const IfdId filteredIfds[] = { + panaRawId + }; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { +#ifdef DEBUG + std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; +#endif + ed.erase(std::remove_if(ed.begin(), + ed.end(), + FindExifdatum(filteredIfds[i])), + ed.end()); + } + + std::auto_ptr header(new Cr2Header(byteOrder)); + OffsetWriter offsetWriter; + offsetWriter.setOrigin(OffsetWriter::cr2RawIfdOffset, Cr2Header::offset2addr(), byteOrder); + return TiffParserWorker::encode(io, + pData, + size, + ed, + iptcData, + xmpData, + Tag::root, + TiffMapping::findEncoder, + header.get(), + &offsetWriter); + } + + // ************************************************************************* + // free functions + Image::AutoPtr newCr2Instance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new Cr2Image(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isCr2Type(BasicIo& iIo, bool advance) + { + const int32_t len = 16; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + Cr2Header header; + bool rc = header.read(buf, len); + if (!advance || !rc) { + iIo.seek(-len, BasicIo::cur); + } + return rc; + } + +} // namespace Exiv2 + +namespace Exiv2 { + namespace Internal { + + const char* Cr2Header::cr2sig_ = "CR\2\0"; + + Cr2Header::Cr2Header(ByteOrder byteOrder) + : TiffHeaderBase(42, 16, byteOrder, 0x00000010), + offset2_(0x00000000) + { + } + + Cr2Header::~Cr2Header() + { + } + + bool Cr2Header::read(const byte* pData, uint32_t size) + { + if (size < 16) return false; + + if (pData[0] == 0x49 && pData[1] == 0x49) { + setByteOrder(littleEndian); + } + else if (pData[0] == 0x4d && pData[1] == 0x4d) { + setByteOrder(bigEndian); + } + else { + return false; + } + if (tag() != getUShort(pData + 2, byteOrder())) return false; + setOffset(getULong(pData + 4, byteOrder())); + if (0 != memcmp(pData + 8, cr2sig_, 4)) return false; + offset2_ = getULong(pData + 12, byteOrder()); + + return true; + } // Cr2Header::read + + DataBuf Cr2Header::write() const + { + DataBuf buf(16); + switch (byteOrder()) { + case littleEndian: + buf.pData_[0] = 0x49; + buf.pData_[1] = 0x49; + break; + case bigEndian: + buf.pData_[0] = 0x4d; + buf.pData_[1] = 0x4d; + break; + case invalidByteOrder: + assert(false); + break; + } + us2Data(buf.pData_ + 2, tag(), byteOrder()); + ul2Data(buf.pData_ + 4, 0x00000010, byteOrder()); + memcpy(buf.pData_ + 8, cr2sig_, 4); + // Write a dummy value for the RAW IFD offset. The offset-writer is used to set this offset in a second pass. + ul2Data(buf.pData_ + 12, 0x00000000, byteOrder()); + return buf; + } // Cr2Header::write + + bool Cr2Header::isImageTag(uint16_t tag, IfdId group, const PrimaryGroups* /*pPrimaryGroups*/) const + { + // CR2 image tags are all IFD2 and IFD3 tags + if (group == ifd2Id || group == ifd3Id) return true; + // ...and any (IFD0) tag that is in the TIFF image tags list + return isTiffImageTag(tag, group); + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/cr2image_int.hpp b/vendor/exiv2-0.25/src/cr2image_int.hpp new file mode 100644 index 0000000..950a08d --- /dev/null +++ b/vendor/exiv2-0.25/src/cr2image_int.hpp @@ -0,0 +1,85 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file cr2image_int.hpp + @brief Internal classes to support CR2 image format + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 23-Apr-08, ahu: created + */ +#ifndef CR2IMAGE_INT_HPP_ +#define CR2IMAGE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tiffimage_int.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief Canon CR2 header structure. + */ + class Cr2Header : public TiffHeaderBase { + public: + //! @name Creators + //@{ + //! Default constructor + Cr2Header(ByteOrder byteOrder =littleEndian); + //! Destructor. + ~Cr2Header(); + //@} + + //! @name Manipulators + //@{ + bool read(const byte* pData, uint32_t size); + //@} + + //! @name Accessors + //@{ + DataBuf write() const; + bool isImageTag( uint16_t tag, + IfdId group, + const PrimaryGroups* pPrimaryGroups) const; + //@} + + //! Return the address of offset2 from the start of the header + static uint32_t offset2addr() { return 12; } + + private: + // DATA + uint32_t offset2_; //!< Bytes 12-15 from the header + static const char* cr2sig_; //!< Signature for CR2 type TIFF + }; // class Cr2Header + +}} // namespace Internal, Exiv2 + +#endif // #ifndef CR2IMAGE_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/crwedit.cpp b/vendor/exiv2-0.25/src/crwedit.cpp new file mode 100644 index 0000000..15813f4 --- /dev/null +++ b/vendor/exiv2-0.25/src/crwedit.cpp @@ -0,0 +1,133 @@ +// ***************************************************************** -*- C++ -*- +// crwedit.cpp, $Rev: 2746 $ +// Print the CIFF structure of a CRW file + +#include "crwimage.hpp" +#include "crwimage_int.hpp" +#include "futils.hpp" + +#include +#include +#include + +void remove(Exiv2::Internal::CiffHeader* pHead); +void add(Exiv2::Internal::CiffHeader* pHead); +void help(); +void write(const std::string& filename, const Exiv2::Internal::CiffHeader* pHead); + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + std::cout << "Edit the CIFF structure of a CRW file\n"; + return 1; + } + + std::string filename(argv[1]); + Exiv2::FileIo io(filename); + if(io.open() != 0) { + throw Exiv2::Error(9, io.path(), Exiv2::strError()); + } + Exiv2::IoCloser closer(io); + + // Ensure that this is a CRW image + if (!Exiv2::isCrwType(io, false)) { + if (io.error() || io.eof()) throw Exiv2::Error(14); + throw Exiv2::Error(33); + } + + // Read the image into a memory buffer + long len = io.size(); + Exiv2::DataBuf buf(len); + io.read(buf.pData_, len); + if (io.error() || io.eof()) throw Exiv2::Error(14); + + // Parse the image, starting with a CIFF header component + Exiv2::Internal::CiffHeader::AutoPtr parseTree(new Exiv2::Internal::CiffHeader); + parseTree->read(buf.pData_, buf.size_); + + // Allow user to make changes + bool go = true; + while (go) { + char cmd; + std::cout << "command> "; + std::cin >> cmd; + switch (cmd) { + case 'q': go = false; break; + case 'p': parseTree->print(std::cout); break; + case 'a': add(parseTree.get()); break; + case 'd': remove(parseTree.get()); break; + case 'w': write(filename, parseTree.get()); break; + case 'h': help(); break; + } + } + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cerr << e << "\n"; + return -1; +} + +void write(const std::string& filename, const Exiv2::Internal::CiffHeader* pHead) +{ + Exiv2::Blob blob; + pHead->write(blob); + + Exiv2::FileIo io(filename); + if(io.open("wb") != 0) { + throw Exiv2::Error(9, io.path(), Exiv2::strError()); + } + Exiv2::IoCloser closer(io); + long ret = io.write(&blob[0], (long) blob.size()); + if (static_cast(ret) != blob.size()) throw Exiv2::Error(21); + io.close(); +} + +void remove(Exiv2::Internal::CiffHeader* pHead) +{ + uint16_t crwTag, crwDir; + std::cout << "crwTag> 0x"; + std::cin >> std::hex >> crwTag; + std::cout << "crwDir> 0x"; + std::cin >> std::hex >> crwDir; + std::cout << "Deleting tag 0x" << std::hex << crwTag + << " in dir 0x" << crwDir << ", ok? "; + char cmd; + std::cin >> cmd; + if (cmd != 'n' && cmd != 'N') { + pHead->remove(crwTag, crwDir); + } + else { + std::cout << "Canceled.\n"; + } +} + +void add(Exiv2::Internal::CiffHeader* pHead) +{ + uint16_t crwTag, crwDir; + uint32_t size; + std::cout << "crwTag> 0x"; + std::cin >> std::hex >> crwTag; + std::cout << "crwDir> 0x"; + std::cin >> std::hex >> crwDir; + std::cout << "size> "; + std::cin >> std::dec >> size; + std::cout << "Adding tag 0x" << std::hex << crwTag + << " in dir 0x" << crwDir << ", " << size << " bytes, ok? "; + char cmd; + std::cin >> cmd; + if (cmd != 'n' && cmd != 'N') { + Exiv2::DataBuf buf(size); + std::memset(buf.pData_, 0xaa, size); + pHead->add(crwTag, crwDir, buf); + } + else { + std::cout << "Canceled.\n"; + } +} + +void help() +{ + std::cout << "a: add tag, d: delete tag, p: print tags, w: write file, q: quit\n"; +} diff --git a/vendor/exiv2-0.25/src/crwimage.cpp b/vendor/exiv2-0.25/src/crwimage.cpp new file mode 100644 index 0000000..f3e7520 --- /dev/null +++ b/vendor/exiv2-0.25/src/crwimage.cpp @@ -0,0 +1,1421 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: crwimage.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 28-Aug-05, ahu: created + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: crwimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "crwimage.hpp" +#include "crwimage_int.hpp" +#include "error.hpp" +#include "futils.hpp" +#include "value.hpp" +#include "tags.hpp" +#include "tags_int.hpp" +#include "canonmn_int.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef EXV_HAVE_TIMEGM +# include "timegm.h" +#endif + +// ***************************************************************************** +// local declarations +namespace { + //! Helper class to map Exif orientation values to CRW rotation degrees + class RotationMap { + public: + //! Get the orientation number for a degree value + static uint16_t orientation(int32_t degrees); + //! Get the degree value for an orientation number + static int32_t degrees(uint16_t orientation); + private: + //! Helper structure for the mapping list + struct OmList { + uint16_t orientation; //!< Exif orientation value + int32_t degrees; //!< CRW Rotation degrees + }; + // DATA + static const OmList omList_[]; + }; // class RotationMap +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + CrwImage::CrwImage(BasicIo::AutoPtr io, bool /*create*/) + : Image(ImageType::crw, mdExif | mdComment, io) + { + } // CrwImage::CrwImage + + std::string CrwImage::mimeType() const + { + return "image/x-canon-crw"; + } + + int CrwImage::pixelWidth() const + { + Exiv2::ExifData::const_iterator widthIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); + if (widthIter != exifData_.end() && widthIter->count() > 0) { + return widthIter->toLong(); + } + return 0; + } + + int CrwImage::pixelHeight() const + { + Exiv2::ExifData::const_iterator heightIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); + if (heightIter != exifData_.end() && heightIter->count() > 0) { + return heightIter->toLong(); + } + return 0; + } + + void CrwImage::setIptcData(const IptcData& /*iptcData*/) + { + // not supported + throw(Error(32, "IPTC metadata", "CRW")); + } + + void CrwImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading CRW file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isCrwType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(33); + } + clearMetadata(); + CrwParser::decode(this, io_->mmap(), io_->size()); + + } // CrwImage::readMetadata + + void CrwImage::writeMetadata() + { +#ifdef DEBUG + std::cerr << "Writing CRW file " << io_->path() << "\n"; +#endif + // Read existing image + DataBuf buf; + if (io_->open() == 0) { + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (isCrwType(*io_, false)) { + // Read the image into a memory buffer + buf.alloc(io_->size()); + io_->read(buf.pData_, buf.size_); + if (io_->error() || io_->eof()) { + buf.reset(); + } + } + } + + Blob blob; + CrwParser::encode(blob, buf.pData_, buf.size_, this); + + // Write new buffer to file + BasicIo::AutoPtr tempIo(io_->temporary()); // may throw + assert(tempIo.get() != 0); + tempIo->write((blob.size() > 0 ? &blob[0] : 0), static_cast(blob.size())); + io_->close(); + io_->transfer(*tempIo); // may throw + + } // CrwImage::writeMetadata + + void CrwParser::decode(CrwImage* pCrwImage, const byte* pData, uint32_t size) + { + assert(pCrwImage != 0); + assert(pData != 0); + + // Parse the image, starting with a CIFF header component + CiffHeader::AutoPtr head(new CiffHeader); + head->read(pData, size); +#ifdef DEBUG + head->print(std::cerr); +#endif + head->decode(*pCrwImage); + + // a hack to get absolute offset of preview image inside CRW structure + CiffComponent* preview = head->findComponent(0x2007, 0x0000); + if (preview) { + (pCrwImage->exifData())["Exif.Image2.JPEGInterchangeFormat"] = uint32_t(preview->pData() - pData); + (pCrwImage->exifData())["Exif.Image2.JPEGInterchangeFormatLength"] = preview->size(); + } + } // CrwParser::decode + + void CrwParser::encode( + Blob& blob, + const byte* pData, + uint32_t size, + const CrwImage* pCrwImage + ) + { + // Parse image, starting with a CIFF header component + CiffHeader::AutoPtr head(new CiffHeader); + if (size != 0) { + head->read(pData, size); + } + + // Encode Exif tags from image into the CRW parse tree and write the + // structure to the binary image blob + CrwMap::encode(head.get(), *pCrwImage); + head->write(blob); + + } // CrwParser::encode + + // ************************************************************************* + // free functions + Image::AutoPtr newCrwInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new CrwImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isCrwType(BasicIo& iIo, bool advance) + { + bool result = true; + byte tmpBuf[14]; + iIo.read(tmpBuf, 14); + if (iIo.error() || iIo.eof()) { + return false; + } + if (!( ('I' == tmpBuf[0] && 'I' == tmpBuf[1]) + || ('M' == tmpBuf[0] && 'M' == tmpBuf[1]))) { + result = false; + } + if ( true == result + && std::memcmp(tmpBuf + 6, CiffHeader::signature(), 8) != 0) { + result = false; + } + if (!advance || !result) iIo.seek(-14, BasicIo::cur); + return result; + } + +} // namespace Exiv2 + +namespace Exiv2 { + namespace Internal { + + /* + Mapping table used to decode and encode CIFF tags to/from Exif tags. Only + a subset of the Exif tags can be mapped to known tags found in CRW files + and not all CIFF tags in the CRW files have a corresponding Exif tag. Tags + which are not mapped in the table below are ignored. + + When decoding, each CIFF tag/directory pair in the CRW image is looked up + in the table and if it has an entry, the corresponding decode function is + called (CrwMap::decode). This function may or may not make use of the + other parameters in the structure (such as the Exif tag and Ifd id). + + Encoding is done in a loop over the mapping table (CrwMap::encode). For + each entry, the encode function is called, which looks up the (Exif) + metadata to encode in the image. This function may or may not make use of + the other parameters in the mapping structure. + */ + const CrwMapping CrwMap::crwMapping_[] = { + // CrwTag CrwDir Size ExifTag IfdId decodeFct encodeFct + // ------ ------ ---- ------- ----- --------- --------- + CrwMapping(0x0805, 0x300a, 0, 0, canonId, decode0x0805, encode0x0805), + CrwMapping(0x080a, 0x2807, 0, 0, canonId, decode0x080a, encode0x080a), + CrwMapping(0x080b, 0x3004, 0, 0x0007, canonId, decodeBasic, encodeBasic), + CrwMapping(0x0810, 0x2807, 0, 0x0009, canonId, decodeBasic, encodeBasic), + CrwMapping(0x0815, 0x2804, 0, 0x0006, canonId, decodeBasic, encodeBasic), + CrwMapping(0x1029, 0x300b, 0, 0x0002, canonId, decodeBasic, encodeBasic), + CrwMapping(0x102a, 0x300b, 0, 0x0004, canonId, decodeArray, encodeArray), + CrwMapping(0x102d, 0x300b, 0, 0x0001, canonId, decodeArray, encodeArray), + CrwMapping(0x1033, 0x300b, 0, 0x000f, canonId, decodeArray, encodeArray), + CrwMapping(0x1038, 0x300b, 0, 0x0012, canonId, decodeArray, encodeArray), + CrwMapping(0x10a9, 0x300b, 0, 0x00a9, canonId, decodeBasic, encodeBasic), + // Mapped to Exif.Photo.ColorSpace instead (see below) + //CrwMapping(0x10b4, 0x300b, 0, 0x00b4, canonId, decodeBasic, encodeBasic), + CrwMapping(0x10b4, 0x300b, 0, 0xa001, exifId, decodeBasic, encodeBasic), + CrwMapping(0x10b5, 0x300b, 0, 0x00b5, canonId, decodeBasic, encodeBasic), + CrwMapping(0x10c0, 0x300b, 0, 0x00c0, canonId, decodeBasic, encodeBasic), + CrwMapping(0x10c1, 0x300b, 0, 0x00c1, canonId, decodeBasic, encodeBasic), + CrwMapping(0x1807, 0x3002, 0, 0x9206, exifId, decodeBasic, encodeBasic), + CrwMapping(0x180b, 0x3004, 0, 0x000c, canonId, decodeBasic, encodeBasic), + CrwMapping(0x180e, 0x300a, 0, 0x9003, exifId, decode0x180e, encode0x180e), + CrwMapping(0x1810, 0x300a, 0, 0xa002, exifId, decode0x1810, encode0x1810), + CrwMapping(0x1817, 0x300a, 4, 0x0008, canonId, decodeBasic, encodeBasic), + //CrwMapping(0x1818, 0x3002, 0, 0x9204, exifId, decodeBasic, encodeBasic), + CrwMapping(0x183b, 0x300b, 0, 0x0015, canonId, decodeBasic, encodeBasic), + CrwMapping(0x2008, 0x0000, 0, 0, ifd1Id, decode0x2008, encode0x2008), + // End of list marker + CrwMapping(0x0000, 0x0000, 0, 0x0000, ifdIdNotSet, 0, 0) + }; // CrwMap::crwMapping_[] + + /* + CIFF directory hierarchy + + root + | + 300a + | + +----+----+----+----+ + | | | | | + 2804 2807 3002 3003 300b + | + 3004 + + The array is arranged bottom-up so that starting with a directory at the + bottom, the (unique) path to root can be determined in a single loop. + */ + const CrwSubDir CrwMap::crwSubDir_[] = { + // dir, parent + { 0x3004, 0x2807 }, + { 0x300b, 0x300a }, + { 0x3003, 0x300a }, + { 0x3002, 0x300a }, + { 0x2807, 0x300a }, + { 0x2804, 0x300a }, + { 0x300a, 0x0000 }, + { 0x0000, 0xffff }, + // End of list marker + { 0xffff, 0xffff } + }; + + const char CiffHeader::signature_[] = "HEAPCCDR"; + + CiffHeader::~CiffHeader() + { + delete pRootDir_; + delete[] pPadding_; + } + + CiffComponent::~CiffComponent() + { + if (isAllocated_) delete[] pData_; + } + + CiffEntry::~CiffEntry() + { + } + + CiffDirectory::~CiffDirectory() + { + Components::iterator b = components_.begin(); + Components::iterator e = components_.end(); + for (Components::iterator i = b; i != e; ++i) { + delete *i; + } + } + + void CiffComponent::add(AutoPtr component) + { + doAdd(component); + } + + void CiffEntry::doAdd(AutoPtr /*component*/) + { + throw Error(34, "CiffEntry::add"); + } // CiffEntry::doAdd + + void CiffDirectory::doAdd(AutoPtr component) + { + components_.push_back(component.release()); + } // CiffDirectory::doAdd + + void CiffHeader::read(const byte* pData, uint32_t size) + { + if (size < 14) throw Error(33); + + if (pData[0] == 0x49 && pData[1] == 0x49) { + byteOrder_ = littleEndian; + } + else if (pData[0] == 0x4d && pData[1] == 0x4d) { + byteOrder_ = bigEndian; + } + else { + throw Error(33); + } + offset_ = getULong(pData + 2, byteOrder_); + if (offset_ < 14 || offset_ > size) throw Error(33); + if (std::memcmp(pData + 6, signature(), 8) != 0) { + throw Error(33); + } + + delete pPadding_; + pPadding_ = new byte[offset_ - 14]; + padded_ = offset_ - 14; + std::memcpy(pPadding_, pData + 14, padded_); + + pRootDir_ = new CiffDirectory; + pRootDir_->readDirectory(pData + offset_, size - offset_, byteOrder_); + } // CiffHeader::read + + void CiffComponent::read(const byte* pData, + uint32_t size, + uint32_t start, + ByteOrder byteOrder) + { + doRead(pData, size, start, byteOrder); + } + + void CiffComponent::doRead(const byte* pData, + uint32_t size, + uint32_t start, + ByteOrder byteOrder) + { + if (size < 10) throw Error(33); + tag_ = getUShort(pData + start, byteOrder); + + DataLocId dl = dataLocation(); + assert(dl == directoryData || dl == valueData); + + if (dl == valueData) { + size_ = getULong(pData + start + 2, byteOrder); + offset_ = getULong(pData + start + 6, byteOrder); + } + if (dl == directoryData) { + size_ = 8; + offset_ = start + 2; + } + pData_ = pData + offset_; +#ifdef DEBUG + std::cout << " Entry for tag 0x" + << std::hex << tagId() << " (0x" << tag() + << "), " << std::dec << size_ + << " Bytes, Offset is " << offset_ << "\n"; +#endif + + } // CiffComponent::doRead + + void CiffDirectory::doRead(const byte* pData, + uint32_t size, + uint32_t start, + ByteOrder byteOrder) + { + CiffComponent::doRead(pData, size, start, byteOrder); +#ifdef DEBUG + std::cout << "Reading directory 0x" << std::hex << tag() << "\n"; +#endif + readDirectory(pData + offset(), this->size(), byteOrder); +#ifdef DEBUG + std::cout << "<---- 0x" << std::hex << tag() << "\n"; +#endif + } // CiffDirectory::doRead + + void CiffDirectory::readDirectory(const byte* pData, + uint32_t size, + ByteOrder byteOrder) + { + uint32_t o = getULong(pData + size - 4, byteOrder); + if (o + 2 > size) throw Error(33); + uint16_t count = getUShort(pData + o, byteOrder); +#ifdef DEBUG + std::cout << "Directory at offset " << std::dec << o + <<", " << count << " entries \n"; +#endif + o += 2; + for (uint16_t i = 0; i < count; ++i) { + if (o + 10 > size) throw Error(33); + uint16_t tag = getUShort(pData + o, byteOrder); + CiffComponent::AutoPtr m; + switch (CiffComponent::typeId(tag)) { + case directory: m = CiffComponent::AutoPtr(new CiffDirectory); break; + default: m = CiffComponent::AutoPtr(new CiffEntry); break; + } + m->setDir(this->tag()); + m->read(pData, size, o, byteOrder); + add(m); + o += 10; + } + } // CiffDirectory::readDirectory + + void CiffHeader::decode(Image& image) const + { + // Nothing to decode from the header itself, just add correct byte order + if (pRootDir_) pRootDir_->decode(image, byteOrder_); + } // CiffHeader::decode + + void CiffComponent::decode(Image& image, ByteOrder byteOrder) const + { + doDecode(image, byteOrder); + } + + void CiffEntry::doDecode(Image& image, ByteOrder byteOrder) const + { + CrwMap::decode(*this, image, byteOrder); + } // CiffEntry::doDecode + + void CiffDirectory::doDecode(Image& image, ByteOrder byteOrder) const + { + Components::const_iterator b = components_.begin(); + Components::const_iterator e = components_.end(); + for (Components::const_iterator i = b; i != e; ++i) { + (*i)->decode(image, byteOrder); + } + } // CiffDirectory::doDecode + + void CiffHeader::write(Blob& blob) const + { + assert( byteOrder_ == littleEndian + || byteOrder_ == bigEndian); + if (byteOrder_ == littleEndian) { + blob.push_back(0x49); + blob.push_back(0x49); + } + else { + blob.push_back(0x4d); + blob.push_back(0x4d); + } + uint32_t o = 2; + byte buf[4]; + ul2Data(buf, offset_, byteOrder_); + append(blob, buf, 4); + o += 4; + append(blob, reinterpret_cast(signature_), 8); + o += 8; + // Pad as needed + if (pPadding_) { + assert(padded_ == offset_ - o); + append(blob, pPadding_, padded_); + } + else { + for (uint32_t i = o; i < offset_; ++i) { + blob.push_back(0); + ++o; + } + } + if (pRootDir_) { + pRootDir_->write(blob, byteOrder_, offset_); + } + } + + uint32_t CiffComponent::write(Blob& blob, + ByteOrder byteOrder, + uint32_t offset) + { + return doWrite(blob, byteOrder, offset); + } + + uint32_t CiffEntry::doWrite(Blob& blob, + ByteOrder /*byteOrder*/, + uint32_t offset) + { + return writeValueData(blob, offset); + } // CiffEntry::doWrite + + uint32_t CiffComponent::writeValueData(Blob& blob, uint32_t offset) + { + if (dataLocation() == valueData) { +#ifdef DEBUG + std::cout << " Data for tag 0x" << std::hex << tagId() + << ", " << std::dec << size_ << " Bytes\n"; +#endif + offset_ = offset; + append(blob, pData_, size_); + offset += size_; + // Pad the value to an even number of bytes + if (size_ % 2 == 1) { + blob.push_back(0); + ++offset; + } + } + return offset; + } // CiffComponent::writeValueData + + uint32_t CiffDirectory::doWrite(Blob& blob, + ByteOrder byteOrder, + uint32_t offset) + { +#ifdef DEBUG + std::cout << "Writing directory 0x" << std::hex << tag() << "---->\n"; +#endif + // Ciff offsets are relative to the start of the directory + uint32_t dirOffset = 0; + + // Value data + const Components::iterator b = components_.begin(); + const Components::iterator e = components_.end(); + for (Components::iterator i = b; i != e; ++i) { + dirOffset = (*i)->write(blob, byteOrder, dirOffset); + } + const uint32_t dirStart = dirOffset; + + // Number of directory entries + byte buf[4]; + us2Data(buf, static_cast(components_.size()), byteOrder); + append(blob, buf, 2); + dirOffset += 2; + + // Directory entries + for (Components::iterator i = b; i != e; ++i) { + (*i)->writeDirEntry(blob, byteOrder); + dirOffset += 10; + } + + // Offset of directory + ul2Data(buf, dirStart, byteOrder); + append(blob, buf, 4); + dirOffset += 4; + + // Update directory entry + setOffset(offset); + setSize(dirOffset); + +#ifdef DEBUG + std::cout << "Directory is at offset " << std::dec << dirStart + << ", " << components_.size() << " entries\n" + << "<---- 0x" << std::hex << tag() << "\n"; +#endif + return offset + dirOffset; + } // CiffDirectory::doWrite + + void CiffComponent::writeDirEntry(Blob& blob, ByteOrder byteOrder) const + { +#ifdef DEBUG + std::cout << " Directory entry for tag 0x" + << std::hex << tagId() << " (0x" << tag() + << "), " << std::dec << size_ + << " Bytes, Offset is " << offset_ << "\n"; +#endif + byte buf[4]; + + DataLocId dl = dataLocation(); + assert(dl == directoryData || dl == valueData); + + if (dl == valueData) { + us2Data(buf, tag_, byteOrder); + append(blob, buf, 2); + + ul2Data(buf, size_, byteOrder); + append(blob, buf, 4); + + ul2Data(buf, offset_, byteOrder); + append(blob, buf, 4); + } + + if (dl == directoryData) { + // Only 8 bytes fit in the directory entry + assert(size_ <= 8); + + us2Data(buf, tag_, byteOrder); + append(blob, buf, 2); + // Copy value instead of size and offset + append(blob, pData_, size_); + // Pad with 0s + for (uint32_t i = size_; i < 8; ++i) { + blob.push_back(0); + } + } + } // CiffComponent::writeDirEntry + + void CiffHeader::print(std::ostream& os, const std::string& prefix) const + { + std::ios::fmtflags f( os.flags() ); + os << prefix + << _("Header, offset") << " = 0x" << std::setw(8) << std::setfill('0') + << std::hex << std::right << offset_ << "\n"; + if (pRootDir_) pRootDir_->print(os, byteOrder_, prefix); + os.flags(f); + } // CiffHeader::print + + void CiffComponent::print(std::ostream& os, + ByteOrder byteOrder, + const std::string& prefix) const + { + doPrint(os, byteOrder, prefix); + } + + void CiffComponent::doPrint(std::ostream& os, + ByteOrder byteOrder, + const std::string& prefix) const + { + os << prefix + << _("tag") << " = 0x" << std::setw(4) << std::setfill('0') + << std::hex << std::right << tagId() + << ", " << _("dir") << " = 0x" << std::setw(4) << std::setfill('0') + << std::hex << std::right << dir() + << ", " << _("type") << " = " << TypeInfo::typeName(typeId()) + << ", " << _("size") << " = " << std::dec << size_ + << ", " << _("offset") << " = " << offset_ << "\n"; + + Value::AutoPtr value; + if (typeId() != directory) { + value = Value::create(typeId()); + value->read(pData_, size_, byteOrder); + if (value->size() < 100) { + os << prefix << *value << "\n"; + } + } + } // CiffComponent::doPrint + + void CiffDirectory::doPrint(std::ostream& os, + ByteOrder byteOrder, + const std::string& prefix) const + { + CiffComponent::doPrint(os, byteOrder, prefix); + Components::const_iterator b = components_.begin(); + Components::const_iterator e = components_.end(); + for (Components::const_iterator i = b; i != e; ++i) { + (*i)->print(os, byteOrder, prefix + " "); + } + } // CiffDirectory::doPrint + + void CiffComponent::setValue(DataBuf buf) + { + if (isAllocated_) { + delete pData_; + pData_ = 0; + size_ = 0; + } + isAllocated_ = true; + std::pair p = buf.release(); + pData_ = p.first; + size_ = p.second; + if (size_ > 8 && dataLocation() == directoryData) { + tag_ &= 0x3fff; + } + } // CiffComponent::setValue + + TypeId CiffComponent::typeId(uint16_t tag) + { + TypeId ti = invalidTypeId; + switch (tag & 0x3800) { + case 0x0000: ti = unsignedByte; break; + case 0x0800: ti = asciiString; break; + case 0x1000: ti = unsignedShort; break; + case 0x1800: ti = unsignedLong; break; + case 0x2000: ti = undefined; break; + case 0x2800: // fallthrough + case 0x3000: ti = directory; break; + } + return ti; + } // CiffComponent::typeId + + DataLocId CiffComponent::dataLocation(uint16_t tag) + { + DataLocId di = invalidDataLocId; + switch (tag & 0xc000) { + case 0x0000: di = valueData; break; + case 0x4000: di = directoryData; break; + } + return di; + } // CiffComponent::dataLocation + + /*! + @brief Finds \em crwTagId in directory \em crwDir, returning a pointer to + the component or 0 if not found. + + */ + CiffComponent* CiffHeader::findComponent(uint16_t crwTagId, + uint16_t crwDir) const + { + if (pRootDir_ == 0) return 0; + return pRootDir_->findComponent(crwTagId, crwDir); + } // CiffHeader::findComponent + + CiffComponent* CiffComponent::findComponent(uint16_t crwTagId, + uint16_t crwDir) const + { + return doFindComponent(crwTagId, crwDir); + } // CiffComponent::findComponent + + CiffComponent* CiffComponent::doFindComponent(uint16_t crwTagId, + uint16_t crwDir) const + { + if (tagId() == crwTagId && dir() == crwDir) { + return const_cast(this); + } + return 0; + } // CiffComponent::doFindComponent + + CiffComponent* CiffDirectory::doFindComponent(uint16_t crwTagId, + uint16_t crwDir) const + { + CiffComponent* cc = NULL; + const Components::const_iterator b = components_.begin(); + const Components::const_iterator e = components_.end(); + for (Components::const_iterator i = b; i != e; ++i) { + cc = (*i)->findComponent(crwTagId, crwDir); + if (cc) return cc; + } + return 0; + } // CiffDirectory::doFindComponent + + void CiffHeader::add(uint16_t crwTagId, uint16_t crwDir, DataBuf buf) + { + CrwDirs crwDirs; + CrwMap::loadStack(crwDirs, crwDir); + uint16_t rootDirectory = crwDirs.top().crwDir_; + assert(rootDirectory == 0x0000); + crwDirs.pop(); + if (!pRootDir_) pRootDir_ = new CiffDirectory; + if ( pRootDir_) pRootDir_->add(crwDirs, crwTagId)->setValue(buf); + } // CiffHeader::add + + CiffComponent* CiffComponent::add(CrwDirs& crwDirs, uint16_t crwTagId) + { + return doAdd(crwDirs, crwTagId); + } // CiffComponent::add + + CiffComponent* CiffComponent::doAdd(CrwDirs& /*crwDirs*/, uint16_t /*crwTagId*/) + { + return 0; + } // CiffComponent::doAdd + + CiffComponent* CiffDirectory::doAdd(CrwDirs& crwDirs, uint16_t crwTagId) + { + /* + add() + if stack not empty + pop from stack + find dir among components + if not found, create it + add() + else + find tag among components + if not found, create it + set value + */ + const Components::iterator b = components_.begin(); + const Components::iterator e = components_.end(); + + if (!crwDirs.empty()) { + CrwSubDir csd = crwDirs.top(); + crwDirs.pop(); + // Find the directory + for (Components::iterator i = b; i != e; ++i) { + if ((*i)->tag() == csd.crwDir_) { + cc_ = *i; + break; + } + } + if (cc_ == 0) { + // Directory doesn't exist yet, add it + m_ = AutoPtr(new CiffDirectory(csd.crwDir_, csd.parent_)); + cc_ = m_.get(); + add(m_); + } + // Recursive call to next lower level directory + cc_ = cc_->add(crwDirs, crwTagId); + } + else { + // Find the tag + for (Components::iterator i = b; i != e; ++i) { + if ((*i)->tagId() == crwTagId) { + cc_ = *i; + break; + } + } + if (cc_ == 0) { + // Tag doesn't exist yet, add it + m_ = AutoPtr(new CiffEntry(crwTagId, tag())); + cc_ = m_.get(); + add(m_); + } + } + return cc_; + } // CiffDirectory::doAdd + + void CiffHeader::remove(uint16_t crwTagId, uint16_t crwDir) + { + if (pRootDir_) { + CrwDirs crwDirs; + CrwMap::loadStack(crwDirs, crwDir); + uint16_t rootDirectory = crwDirs.top().crwDir_; + assert(rootDirectory == 0x0000); + crwDirs.pop(); + pRootDir_->remove(crwDirs, crwTagId); + } + } // CiffHeader::remove + + void CiffComponent::remove(CrwDirs& crwDirs, uint16_t crwTagId) + { + return doRemove(crwDirs, crwTagId); + } // CiffComponent::remove + + void CiffComponent::doRemove(CrwDirs& /*crwDirs*/, uint16_t /*crwTagId*/) + { + // do nothing + } // CiffComponent::doRemove + + void CiffDirectory::doRemove(CrwDirs& crwDirs, uint16_t crwTagId) + { + const Components::iterator b = components_.begin(); + const Components::iterator e = components_.end(); + Components::iterator i; + + if (!crwDirs.empty()) { + CrwSubDir csd = crwDirs.top(); + crwDirs.pop(); + // Find the directory + for (i = b; i != e; ++i) { + if ((*i)->tag() == csd.crwDir_) { + // Recursive call to next lower level directory + (*i)->remove(crwDirs, crwTagId); + if ((*i)->empty()) components_.erase(i); + break; + } + } + } + else { + // Find the tag + for (i = b; i != e; ++i) { + if ((*i)->tagId() == crwTagId) { + // Remove the entry and abort the loop + delete *i; + components_.erase(i); + break; + } + } + } + } // CiffDirectory::doRemove + + bool CiffComponent::empty() const + { + return doEmpty(); + } + + bool CiffComponent::doEmpty() const + { + return size_ == 0; + } + + bool CiffDirectory::doEmpty() const + { + return components_.empty(); + } + + void CrwMap::decode(const CiffComponent& ciffComponent, + Image& image, + ByteOrder byteOrder) + { + const CrwMapping* cmi = crwMapping(ciffComponent.dir(), + ciffComponent.tagId()); + if (cmi && cmi->toExif_) { + cmi->toExif_(ciffComponent, cmi, image, byteOrder); + } + } // CrwMap::decode + + const CrwMapping* CrwMap::crwMapping(uint16_t crwDir, uint16_t crwTagId) + { + for (int i = 0; crwMapping_[i].ifdId_ != ifdIdNotSet; ++i) { + if ( crwMapping_[i].crwDir_ == crwDir + && crwMapping_[i].crwTagId_ == crwTagId) { + return &(crwMapping_[i]); + } + } + return 0; + } // CrwMap::crwMapping + + void CrwMap::decode0x0805(const CiffComponent& ciffComponent, + const CrwMapping* /*pCrwMapping*/, + Image& image, + ByteOrder /*byteOrder*/) + { + std::string s(reinterpret_cast(ciffComponent.pData())); + image.setComment(s); + } // CrwMap::decode0x0805 + + void CrwMap::decode0x080a(const CiffComponent& ciffComponent, + const CrwMapping* /*pCrwMapping*/, + Image& image, + ByteOrder byteOrder) + { + if (ciffComponent.typeId() != asciiString) return; + + // Make + ExifKey key1("Exif.Image.Make"); + Value::AutoPtr value1 = Value::create(ciffComponent.typeId()); + uint32_t i = 0; + for (; i < ciffComponent.size() + && ciffComponent.pData()[i] != '\0'; ++i) { + // empty + } + value1->read(ciffComponent.pData(), ++i, byteOrder); + image.exifData().add(key1, value1.get()); + + // Model + ExifKey key2("Exif.Image.Model"); + Value::AutoPtr value2 = Value::create(ciffComponent.typeId()); + uint32_t j = i; + for (; i < ciffComponent.size() + && ciffComponent.pData()[i] != '\0'; ++i) { + // empty + } + value2->read(ciffComponent.pData() + j, i - j + 1, byteOrder); + image.exifData().add(key2, value2.get()); + } // CrwMap::decode0x080a + + void CrwMap::decodeArray(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder) + { + if (ciffComponent.typeId() != unsignedShort) { + return decodeBasic(ciffComponent, pCrwMapping, image, byteOrder); + } + + long aperture = 0; + long shutterSpeed = 0; + + IfdId ifdId = ifdIdNotSet; + switch (pCrwMapping->tag_) { + case 0x0001: ifdId = canonCsId; break; + case 0x0004: ifdId = canonSiId; break; + case 0x000f: ifdId = canonCfId; break; + case 0x0012: ifdId = canonPiId; break; + } + assert(ifdId != ifdIdNotSet); + + std::string groupName(Internal::groupName(ifdId)); + uint16_t c = 1; + while (uint32_t(c)*2 < ciffComponent.size()) { + uint16_t n = 1; + ExifKey key(c, groupName); + UShortValue value; + if (ifdId == canonCsId && c == 23 && ciffComponent.size() > 50) n = 3; + value.read(ciffComponent.pData() + c*2, n*2, byteOrder); + image.exifData().add(key, &value); + if (ifdId == canonSiId && c == 21) aperture = value.toLong(); + if (ifdId == canonSiId && c == 22) shutterSpeed = value.toLong(); + c += n; + } + + if (ifdId == canonSiId) { + // Exif.Photo.FNumber + float f = fnumber(canonEv(aperture)); + Rational r = floatToRationalCast(f); + URational ur(r.first, r.second); + URationalValue fn; + fn.value_.push_back(ur); + image.exifData().add(ExifKey("Exif.Photo.FNumber"), &fn); + + // Exif.Photo.ExposureTime + ur = exposureTime(canonEv(shutterSpeed)); + URationalValue et; + et.value_.push_back(ur); + image.exifData().add(ExifKey("Exif.Photo.ExposureTime"), &et); + } + } // CrwMap::decodeArray + + void CrwMap::decode0x180e(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder) + { + if (ciffComponent.size() < 8 || ciffComponent.typeId() != unsignedLong) { + return decodeBasic(ciffComponent, pCrwMapping, image, byteOrder); + } + assert(pCrwMapping != 0); + ULongValue v; + v.read(ciffComponent.pData(), 8, byteOrder); + time_t t = v.value_[0]; +#ifdef EXV_HAVE_GMTIME_R + struct tm tms; + struct tm* tm = &tms; + tm = gmtime_r(&t, tm); +#else + struct tm* tm = std::gmtime(&t); +#endif + if (tm) { + const size_t m = 20; + char s[m]; + std::strftime(s, m, "%Y:%m:%d %H:%M:%S", tm); + + ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); + AsciiValue value; + value.read(std::string(s)); + image.exifData().add(key, &value); + } + } // CrwMap::decode0x180e + + void CrwMap::decode0x1810(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder) + { + if (ciffComponent.typeId() != unsignedLong || ciffComponent.size() < 28) { + return decodeBasic(ciffComponent, pCrwMapping, image, byteOrder); + } + + ExifKey key1("Exif.Photo.PixelXDimension"); + ULongValue value1; + value1.read(ciffComponent.pData(), 4, byteOrder); + image.exifData().add(key1, &value1); + + ExifKey key2("Exif.Photo.PixelYDimension"); + ULongValue value2; + value2.read(ciffComponent.pData() + 4, 4, byteOrder); + image.exifData().add(key2, &value2); + + int32_t r = getLong(ciffComponent.pData() + 12, byteOrder); + uint16_t o = RotationMap::orientation(r); + image.exifData()["Exif.Image.Orientation"] = o; + + } // CrwMap::decode0x1810 + + void CrwMap::decode0x2008(const CiffComponent& ciffComponent, + const CrwMapping* /*pCrwMapping*/, + Image& image, + ByteOrder /*byteOrder*/) + { + ExifThumb exifThumb(image.exifData()); + exifThumb.setJpegThumbnail(ciffComponent.pData(), ciffComponent.size()); + } // CrwMap::decode0x2008 + + void CrwMap::decodeBasic(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder) + { + assert(pCrwMapping != 0); + // create a key and value pair + ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); + Value::AutoPtr value; + if (ciffComponent.typeId() != directory) { + value = Value::create(ciffComponent.typeId()); + uint32_t size = 0; + if (pCrwMapping->size_ != 0) { + // size in the mapping table overrides all + size = pCrwMapping->size_; + } + else if (ciffComponent.typeId() == asciiString) { + // determine size from the data, by looking for the first 0 + uint32_t i = 0; + for (; i < ciffComponent.size() + && ciffComponent.pData()[i] != '\0'; ++i) { + // empty + } + size = ++i; + } + else { + // by default, use the size from the directory entry + size = ciffComponent.size(); + } + value->read(ciffComponent.pData(), size, byteOrder); + } + // Add metadatum to exif data + image.exifData().add(key, value.get()); + } // CrwMap::decodeBasic + + void CrwMap::loadStack(CrwDirs& crwDirs, uint16_t crwDir) + { + for (int i = 0; crwSubDir_[i].crwDir_ != 0xffff; ++i) { + if (crwSubDir_[i].crwDir_ == crwDir) { + crwDirs.push(crwSubDir_[i]); + crwDir = crwSubDir_[i].parent_; + } + } + } // CrwMap::loadStack + + void CrwMap::encode(CiffHeader* pHead, const Image& image) + { + for (const CrwMapping* cmi = crwMapping_; cmi->ifdId_ != ifdIdNotSet; ++cmi) { + if (cmi->fromExif_ != 0) { + cmi->fromExif_(image, cmi, pHead); + } + } + } // CrwMap::encode + + void CrwMap::encodeBasic(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + // Determine the source Exif metadatum + ExifKey ek(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); + ExifData::const_iterator ed = image.exifData().findKey(ek); + + // Set the new value or remove the entry + if (ed != image.exifData().end()) { + DataBuf buf(ed->size()); + ed->copy(buf.pData_, pHead->byteOrder()); + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); + } + } // CrwMap::encodeBasic + + void CrwMap::encode0x0805(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + std::string comment = image.comment(); + + CiffComponent* cc = pHead->findComponent(pCrwMapping->crwTagId_, + pCrwMapping->crwDir_); + if (!comment.empty()) { + uint32_t size = static_cast(comment.size()); + if (cc && cc->size() > size) size = cc->size(); + DataBuf buf(size); + std::memset(buf.pData_, 0x0, buf.size_); + std::memcpy(buf.pData_, comment.data(), comment.size()); + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + if (cc) { + // Just delete the value, do not remove the tag + DataBuf buf(cc->size()); + std::memset(buf.pData_, 0x0, buf.size_); + cc->setValue(buf); + } + } + } // CrwMap::encode0x0805 + + void CrwMap::encode0x080a(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + const ExifKey k1("Exif.Image.Make"); + const ExifKey k2("Exif.Image.Model"); + const ExifData::const_iterator ed1 = image.exifData().findKey(k1); + const ExifData::const_iterator ed2 = image.exifData().findKey(k2); + const ExifData::const_iterator edEnd = image.exifData().end(); + + long size = 0; + if (ed1 != edEnd) size += ed1->size(); + if (ed2 != edEnd) size += ed2->size(); + if (size != 0) { + DataBuf buf(size); + if (ed1 != edEnd) ed1->copy(buf.pData_, pHead->byteOrder()); + if (ed2 != edEnd) ed2->copy(buf.pData_ + ed1->size(), pHead->byteOrder()); + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); + } + } // CrwMap::encode0x080a + + void CrwMap::encodeArray(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + IfdId ifdId = ifdIdNotSet; + switch (pCrwMapping->tag_) { + case 0x0001: ifdId = canonCsId; break; + case 0x0004: ifdId = canonSiId; break; + case 0x000f: ifdId = canonCfId; break; + case 0x0012: ifdId = canonPiId; break; + } + assert(ifdId != ifdIdNotSet); + DataBuf buf = packIfdId(image.exifData(), ifdId, pHead->byteOrder()); + if (buf.size_ == 0) { + // Try the undecoded tag + encodeBasic(image, pCrwMapping, pHead); + } + if (buf.size_ > 0) { + // Write the number of shorts to the beginning of buf + us2Data(buf.pData_, static_cast(buf.size_), pHead->byteOrder()); + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); + } + } // CrwMap::encodeArray + + void CrwMap::encode0x180e(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + time_t t = 0; + const ExifKey key(pCrwMapping->tag_, Internal::groupName(pCrwMapping->ifdId_)); + const ExifData::const_iterator ed = image.exifData().findKey(key); + if (ed != image.exifData().end()) { + struct tm tm; + std::memset(&tm, 0x0, sizeof(tm)); + int rc = exifTime(ed->toString().c_str(), &tm); + if (rc == 0) t = timegm(&tm); + } + if (t != 0) { + DataBuf buf(12); + std::memset(buf.pData_, 0x0, 12); + ul2Data(buf.pData_, static_cast(t), pHead->byteOrder()); + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); + } + } // CrwMap::encode0x180e + + void CrwMap::encode0x1810(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + const ExifKey kX("Exif.Photo.PixelXDimension"); + const ExifKey kY("Exif.Photo.PixelYDimension"); + const ExifKey kO("Exif.Image.Orientation"); + const ExifData::const_iterator edX = image.exifData().findKey(kX); + const ExifData::const_iterator edY = image.exifData().findKey(kY); + const ExifData::const_iterator edO = image.exifData().findKey(kO); + const ExifData::const_iterator edEnd = image.exifData().end(); + + CiffComponent* cc = pHead->findComponent(pCrwMapping->crwTagId_, + pCrwMapping->crwDir_); + if (edX != edEnd || edY != edEnd || edO != edEnd) { + uint32_t size = 28; + if (cc && cc->size() > size) size = cc->size(); + DataBuf buf(size); + std::memset(buf.pData_, 0x0, buf.size_); + if (cc) std::memcpy(buf.pData_ + 8, cc->pData() + 8, cc->size() - 8); + if (edX != edEnd && edX->size() == 4) { + edX->copy(buf.pData_, pHead->byteOrder()); + } + if (edY != edEnd && edY->size() == 4) { + edY->copy(buf.pData_ + 4, pHead->byteOrder()); + } + int32_t d = 0; + if (edO != edEnd && edO->count() > 0 && edO->typeId() == unsignedShort) { + d = RotationMap::degrees(static_cast(edO->toLong())); + } + l2Data(buf.pData_ + 12, d, pHead->byteOrder()); + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); + } + } // CrwMap::encode0x1810 + + void CrwMap::encode0x2008(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead) + { + assert(pCrwMapping != 0); + assert(pHead != 0); + + ExifThumbC exifThumb(image.exifData()); + DataBuf buf = exifThumb.copy(); + if (buf.size_ != 0) { + pHead->add(pCrwMapping->crwTagId_, pCrwMapping->crwDir_, buf); + } + else { + pHead->remove(pCrwMapping->crwTagId_, pCrwMapping->crwDir_); + } + } // CrwMap::encode0x2008 + + // ************************************************************************* + // free functions + DataBuf packIfdId(const ExifData& exifData, + IfdId ifdId, + ByteOrder byteOrder) + { + const uint16_t size = 1024; + DataBuf buf(size); + std::memset(buf.pData_, 0x0, buf.size_); + + uint16_t len = 0; + const ExifData::const_iterator b = exifData.begin(); + const ExifData::const_iterator e = exifData.end(); + for (ExifData::const_iterator i = b; i != e; ++i) { + if (i->ifdId() != ifdId) continue; + const uint16_t s = i->tag()*2 + static_cast(i->size()); + assert(s <= size); + if (len < s) len = s; + i->copy(buf.pData_ + i->tag()*2, byteOrder); + } + // Round the size to make it even. + buf.size_ = len + len%2; + return buf; + } + +}} // namespace Internal, Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + //! @cond IGNORE + const RotationMap::OmList RotationMap::omList_[] = { + { 1, 0 }, + { 3, 180 }, + { 3, -180 }, + { 6, 90 }, + { 6, -270 }, + { 8, 270 }, + { 8, -90 }, + // last entry + { 0, 0 } + }; + + uint16_t RotationMap::orientation(int32_t degrees) + { + uint16_t o = 1; + for (int i = 0; omList_[i].orientation != 0; ++i) { + if (omList_[i].degrees == degrees) { + o = omList_[i].orientation; + break; + } + } + return o; + } + + int32_t RotationMap::degrees(uint16_t orientation) + { + int32_t d = 0; + for (int i = 0; omList_[i].orientation != 0; ++i) { + if (omList_[i].orientation == orientation) { + d = omList_[i].degrees; + break; + } + } + return d; + } + //! @endcond +} diff --git a/vendor/exiv2-0.25/src/crwimage_int.hpp b/vendor/exiv2-0.25/src/crwimage_int.hpp new file mode 100644 index 0000000..5588ae5 --- /dev/null +++ b/vendor/exiv2-0.25/src/crwimage_int.hpp @@ -0,0 +1,752 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file crwimage_int.hpp + @brief Internal classes to support CRW/CIFF format. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 28-Aug-05, ahu: created + */ +#ifndef CRWIMAGE_INT_HPP_ +#define CRWIMAGE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "tags_int.hpp" +#include "image.hpp" +#include "basicio.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class ExifData; + + namespace Internal { + +// ***************************************************************************** +// class declarations + class CiffHeader; + class CiffComponent; + struct CrwMapping; + struct CrwSubDir; + +// ***************************************************************************** +// type definitions + + //! Function pointer for functions to decode Exif tags from a CRW entry + typedef void (*CrwDecodeFct)(const CiffComponent&, + const CrwMapping*, + Image&, + ByteOrder); + + //! Function pointer for functions to encode CRW entries from Exif tags + typedef void (*CrwEncodeFct)(const Image&, + const CrwMapping*, + CiffHeader*); + + //! Stack to hold a path of CRW directories + typedef std::stack CrwDirs; + + //! Type to identify where the data is stored in a directory + enum DataLocId { + invalidDataLocId, + valueData, + directoryData, + lastDataLocId + }; + +// ***************************************************************************** +// class definitions + + /*! + @brief Interface class for components of the CIFF directory hierarchy of a + CRW (Canon Raw data) image. Both CIFF directories as well as + entries implement this interface. This class is implemented as NVI + (non-virtual interface). + */ + class CiffComponent { + public: + //! CiffComponent auto_ptr type + typedef std::auto_ptr AutoPtr; + //! Container type to hold all metadata + typedef std::vector Components; + + //! @name Creators + //@{ + //! Default constructor + CiffComponent() + : dir_(0), tag_(0), size_(0), offset_(0), pData_(0), + isAllocated_(false) {} + //! Constructor taking a tag and directory + CiffComponent(uint16_t tag, uint16_t dir) + : dir_(dir), tag_(tag), size_(0), offset_(0), pData_(0), + isAllocated_(false) {} + //! Virtual destructor. + virtual ~CiffComponent(); + //@} + + //! @name Manipulators + //@{ + // Default assignment operator is fine + + //! Add a component to the composition + void add(AutoPtr component); + /*! + @brief Add \em crwTagId to the parse tree, if it doesn't exist + yet. \em crwDirs contains the path of subdirectories, starting + with the root directory, leading to \em crwTagId. Directories + that don't exist yet are added along the way. Returns a pointer + to the newly added component. + + @param crwDirs Subdirectory path from root to the subdirectory + containing the tag to be added. + @param crwTagId Tag to be added. + + @return A pointer to the newly added component. + */ + CiffComponent* add(CrwDirs& crwDirs, uint16_t crwTagId); + /*! + @brief Remove \em crwTagId from the parse tree, if it exists yet. \em + crwDirs contains the path of subdirectories, starting with the + root directory, leading to \em crwTagId. + + @param crwDirs Subdirectory path from root to the subdirectory + containing the tag to be removed. + @param crwTagId Tag to be removed. + */ + void remove(CrwDirs& crwDirs, uint16_t crwTagId); + /*! + @brief Read a component from a data buffer + + @param pData Pointer to the data buffer. + @param size Number of bytes in the data buffer. + @param start Component starts at \em pData + \em start. + @param byteOrder Applicable byte order (little or big endian). + + @throw Error If the component cannot be parsed. + */ + void read(const byte* pData, + uint32_t size, + uint32_t start, + ByteOrder byteOrder); + /*! + @brief Write the metadata from the raw metadata component to the + binary image \em blob. This method may append to the blob. + + @param blob Binary image to add metadata to + @param byteOrder Byte order + @param offset Current offset + + @return New offset + */ + uint32_t write(Blob& blob, ByteOrder byteOrder, uint32_t offset); + /*! + @brief Writes the entry's value if size is larger than eight bytes. If + needed, the value is padded with one 0 byte to make the number + of bytes written to the blob even. The offset of the component + is set to the offset passed in. + @param blob The binary image to write to. + @param offset Offset from the start of the directory for this entry. + + @return New offset. + */ + uint32_t writeValueData(Blob& blob, uint32_t offset); + //! Set the directory tag for this component. + void setDir(uint16_t dir) { dir_ = dir; } + //! Set the data value of the entry. + void setValue(DataBuf buf); + //@} + + //! Return the type id for a tag + static TypeId typeId(uint16_t tag); + //! Return the data location id for a tag + static DataLocId dataLocation(uint16_t tag); + + //! @name Accessors + //@{ + /*! + @brief Decode metadata from the component and add it to + \em image. + + @param image Image to add metadata to + @param byteOrder Byte order + */ + void decode(Image& image, ByteOrder byteOrder) const; + /*! + @brief Print debug info about a component to \em os. + + @param os Output stream to write to + @param byteOrder Byte order + @param prefix Prefix to be written before each line of output + */ + void print(std::ostream& os, + ByteOrder byteOrder, + const std::string& prefix ="") const; + /*! + @brief Write a directory entry for the component to the \em blob. + If the size of the data is not larger than 8 bytes, the + data is written to the directory entry. + */ + void writeDirEntry(Blob& blob, ByteOrder byteOrder) const; + //! Return the tag of the directory containing this component + uint16_t dir() const { return dir_; } + + //! Return the tag of this component + uint16_t tag() const { return tag_; } + + //! Return true if the component is empty, else false + bool empty() const; + + /*! + @brief Return the data size of this component + + @note If the data is contained in the directory entry itself, + this method returns 8, which is the maximum number + of data bytes this component can have. The actual size, + i.e., used data bytes, may be less than 8. + */ + uint32_t size() const { return size_; } + + //! Return the offset to the data from the start of the directory + uint32_t offset() const { return offset_; } + + //! Return a pointer to the data area of this component + const byte* pData() const { return pData_; } + + //! Return the tag id of this component + uint16_t tagId() const { return tag_ & 0x3fff; } + + //! Return the type id of thi component + TypeId typeId() const { return typeId(tag_); } + + //! Return the data location for this component + DataLocId dataLocation() const { return dataLocation(tag_); } + + /*! + @brief Finds \em crwTagId in directory \em crwDir, returning a pointer to + the component or 0 if not found. + */ + CiffComponent* findComponent(uint16_t crwTagId, uint16_t crwDir) const; + //@} + + protected: + //! @name Manipulators + //@{ + //! Implements add() + virtual void doAdd(AutoPtr component) =0; + //! Implements add(). The default implementation does nothing. + virtual CiffComponent* doAdd(CrwDirs& crwDirs, uint16_t crwTagId); + //! Implements remove(). The default implementation does nothing. + virtual void doRemove(CrwDirs& crwDirs, uint16_t crwTagId); + //! Implements read(). The default implementation reads a directory entry. + virtual void doRead(const byte* pData, + uint32_t size, + uint32_t start, + ByteOrder byteOrder); + //! Implements write() + virtual uint32_t doWrite(Blob& blob, + ByteOrder byteOrder, + uint32_t offset) =0; + //! Set the size of the data area. + void setSize(uint32_t size) { size_ = size; } + //! Set the offset for this component. + void setOffset(uint32_t offset) { offset_ = offset; } + //@} + + //! @name Accessors + //@{ + //! Implements decode() + virtual void doDecode(Image& image, + ByteOrder byteOrder) const =0; + //! Implements print(). The default implementation prints the entry. + virtual void doPrint(std::ostream& os, + ByteOrder byteOrder, + const std::string& prefix) const; + //! Implements empty(). Default implementation returns true if size is 0. + virtual bool doEmpty() const; + //! Implements findComponent(). The default implementation checks the entry. + virtual CiffComponent* doFindComponent(uint16_t crwTagId, + uint16_t crwDir) const; + //@} + + private: + // DATA + uint16_t dir_; //!< Tag of the directory containing this component + uint16_t tag_; //!< Tag of the entry + uint32_t size_; //!< Size of the data area + uint32_t offset_; //!< Offset to the data area from start of dir + const byte* pData_; //!< Pointer to the data area + bool isAllocated_; //!< True if this entry owns the value data + + }; // class CiffComponent + + /*! + @brief This class models one directory entry of a CIFF directory of + a CRW (Canon Raw data) image. + */ + class CiffEntry : public CiffComponent { + public: + //! @name Creators + //@{ + //! Default constructor + CiffEntry() {} + //! Constructor taking a tag and directory + CiffEntry(uint16_t tag, uint16_t dir) : CiffComponent(tag, dir) {} + + //! Virtual destructor. + virtual ~CiffEntry(); + //@} + + // Default assignment operator is fine + + private: + //! @name Manipulators + //@{ + using CiffComponent::doAdd; + // See base class comment + virtual void doAdd(AutoPtr component); + /*! + @brief Implements write(). Writes only the value data of the entry, + using writeValueData(). + */ + virtual uint32_t doWrite(Blob& blob, + ByteOrder byteOrder, + uint32_t offset); + //@} + + //! @name Accessors + //@{ + // See base class comment + virtual void doDecode(Image& image, ByteOrder byteOrder) const; + //@} + + }; // class CiffEntry + + //! This class models a CIFF directory of a CRW (Canon Raw data) image. + class CiffDirectory : public CiffComponent { + public: + //! @name Creators + //@{ + //! Default constructor + CiffDirectory() : cc_(NULL) {} + //! Constructor taking a tag and directory + CiffDirectory(uint16_t tag, uint16_t dir) : CiffComponent(tag, dir), cc_(NULL) {} + + //! Virtual destructor + virtual ~CiffDirectory(); + //@} + + //! @name Manipulators + //@{ + // Default assignment operator is fine + + /*! + @brief Parse a CIFF directory from a memory buffer + + @param pData Pointer to the memory buffer containing the directory + @param size Size of the memory buffer + @param byteOrder Applicable byte order (little or big endian) + */ + void readDirectory(const byte* pData, + uint32_t size, + ByteOrder byteOrder); + //@} + + private: + //! @name Manipulators + //@{ + // See base class comment + virtual void doAdd(AutoPtr component); + // See base class comment + virtual CiffComponent* doAdd(CrwDirs& crwDirs, uint16_t crwTagId); + // See base class comment + virtual void doRemove(CrwDirs& crwDirs, uint16_t crwTagId); + /*! + @brief Implements write(). Writes the complete Ciff directory to + the blob. + */ + virtual uint32_t doWrite(Blob& blob, + ByteOrder byteOrder, + uint32_t offset); + // See base class comment + virtual void doRead(const byte* pData, + uint32_t size, + uint32_t start, + ByteOrder byteOrder); + //@} + + //! @name Accessors + //@{ + // See base class comment + virtual void doDecode(Image& image, + ByteOrder byteOrder) const; + + // See base class comment + virtual void doPrint(std::ostream& os, + ByteOrder byteOrder, + const std::string& prefix) const; + + //! See base class comment. A directory is empty if it has no components. + virtual bool doEmpty() const; + + // See base class comment + virtual CiffComponent* doFindComponent(uint16_t crwTagId, + uint16_t crwDir) const; + //@} + + private: + // DATA + Components components_; //!< List of components in this dir + AutoPtr m_; // used by recursive doAdd + CiffComponent* cc_; + + }; // class CiffDirectory + + /*! + @brief This class models the header of a CRW (Canon Raw data) image. It + is the head of a CIFF parse tree, consisting of CiffDirectory and + CiffEntry objects. Most of its methods will walk the parse tree to + perform the requested action. + */ + class CiffHeader { + public: + //! CiffHeader auto_ptr type + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Default constructor + CiffHeader() + : pRootDir_ (0), + byteOrder_ (littleEndian), + offset_ (0x0000001a), + pPadding_ (0), + padded_ (0) + {} + //! Virtual destructor + virtual ~CiffHeader(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Read the CRW image from a data buffer, starting with the Ciff + header. + + @param pData Pointer to the data buffer. + @param size Number of bytes in the data buffer. + + @throw Error If the image cannot be parsed. + */ + void read(const byte* pData, uint32_t size); + /*! + @brief Set the value of entry \em crwTagId in directory \em crwDir to + \em buf. If this tag doesn't exist, it is added along with all + directories needed. + + @param crwTagId Tag to be added. + @param crwDir Parent directory of the tag. + @param buf Value to be set. + */ + void add(uint16_t crwTagId, uint16_t crwDir, DataBuf buf); + /*! + @brief Remove entry \em crwTagId in directory \em crwDir from the parse + tree. If it's the last entry in the directory, the directory is + removed as well, etc. + + @param crwTagId Tag id to be removed. + @param crwDir Parent directory of the tag. + */ + void remove(uint16_t crwTagId, uint16_t crwDir); + //@} + + //! Return a pointer to the Canon CRW signature. + static const char* signature() { return signature_; } + + //! @name Accessors + //@{ + /*! + @brief Write the CRW image to the binary image \em blob, starting with + the Ciff header. This method appends to the blob. + + @param blob Binary image to add to. + + @throw Error If the image cannot be written. + */ + void write(Blob& blob) const; + /*! + @brief Decode the CRW image and add it to \em image. + + Walk the parse tree and convert CIFF entries to metadata + entries which are added to \em image. + + @param image Image to add metadata to + */ + void decode(Image& image) const; + /*! + @brief Print debug info for the CRW image to \em os. + + @param os Output stream to write to. + @param prefix Prefix to be written before each line of output. + */ + void print(std::ostream& os, const std::string& prefix ="") const; + //! Return the byte order (little or big endian). + ByteOrder byteOrder() const { return byteOrder_; } + /*! + @brief Finds \em crwTagId in directory \em crwDir in the parse tree, + returning a pointer to the component or 0 if not found. + */ + CiffComponent* findComponent(uint16_t crwTagId, uint16_t crwDir) const; + //@} + + private: + // DATA + static const char signature_[]; //!< Canon CRW signature "HEAPCCDR" + + CiffDirectory* pRootDir_; //!< Pointer to the root directory + ByteOrder byteOrder_; //!< Applicable byte order + uint32_t offset_; //!< Offset to the start of the root dir + byte* pPadding_; //!< Pointer to the (unknown) remainder + uint32_t padded_; //!< Number of padding-bytes + + }; // class CiffHeader + + //! Structure for the CIFF directory hierarchy + struct CrwSubDir { + uint16_t crwDir_; //!< Directory tag + uint16_t parent_; //!< Parent directory tag + }; // struct CrwSubDir + + /*! + @brief Structure for a mapping table for conversion of CIFF entries to + image metadata and vice versa. + */ + struct CrwMapping { + //! @name Creators + //@{ + //! Default constructor + CrwMapping( + uint16_t crwTagId, + uint16_t crwDir, + uint32_t size, + uint16_t tag, + Internal::IfdId ifdId, + CrwDecodeFct toExif, + CrwEncodeFct fromExif) + : crwTagId_ (crwTagId), + crwDir_ (crwDir), + size_ (size), + tag_ (tag), + ifdId_ (ifdId), + toExif_ (toExif), + fromExif_ (fromExif) + {} + //@} + + // DATA + uint16_t crwTagId_; //!< CRW tag id + uint16_t crwDir_; //!< CRW directory tag + uint32_t size_; //!< Data size (overwrites the size from the entry) + uint16_t tag_; //!< Exif tag to map to + IfdId ifdId_; //!< Exif Ifd id to map to + CrwDecodeFct toExif_; //!< Conversion function + CrwEncodeFct fromExif_; //!< Reverse conversion function + + }; // struct CrwMapping + + /*! + @brief Static class providing mapping functionality from CRW entries + to image metadata and vice versa + */ + class CrwMap { + //! @name Not implemented + //@{ + //! Default constructor + CrwMap(); + //@} + + public: + /*! + @brief Decode image metadata from a CRW entry, convert and add it + to the image metadata. This function converts only one CRW + component. + + @param ciffComponent Source CIFF entry + @param image Destination image for the metadata + @param byteOrder Byte order in which the data of the entry + is encoded + */ + static void decode(const CiffComponent& ciffComponent, + Image& image, + ByteOrder byteOrder); + /*! + @brief Encode image metadata from \em image into the CRW parse tree. + This function converts all Exif metadata that %Exiv2 can + convert to CRW format, in a loop through the entries of the + mapping table. + + @param pHead Destination parse tree. + @param image Source image containing the metadata. + */ + static void encode(CiffHeader* pHead, const Image& image); + + /*! + @brief Load the stack: loop through the CRW subdirs hierarchy and push + all directories on the path from \em crwDir to root onto the + stack \em crwDirs. Requires the subdirs array to be arranged in + bottom-up order to be able to finish in only one pass. + */ + static void loadStack(CrwDirs& crwDirs, uint16_t crwDir); + + private: + //! Return conversion information for one \em crwDir and \em crwTagId + static const CrwMapping* crwMapping(uint16_t crwDir, uint16_t crwTagId); + + /*! + @brief Standard decode function to convert CRW entries to + Exif metadata. + + Uses the mapping defined in the conversion structure \em pCrwMapping + to convert the data. If the \em size field in the conversion structure + is not 0, then it is used instead of the \em size provided by the + entry itself. + */ + static void decodeBasic(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + //! Decode the user comment + static void decode0x0805(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + //! Decode camera Make and Model information + static void decode0x080a(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + //! Decode Canon Camera Settings 1, 2 and Custom Function arrays + static void decodeArray(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + //! Decode the date when the picture was taken + static void decode0x180e(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + //! Decode image width and height + static void decode0x1810(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + //! Decode the thumbnail image + static void decode0x2008(const CiffComponent& ciffComponent, + const CrwMapping* pCrwMapping, + Image& image, + ByteOrder byteOrder); + + /*! + @brief Standard encode function to convert Exif metadata to Crw + entries. + + This is the basic encode function taking one Exif key and converting + it to one Ciff entry. Both are available in the \em pCrwMapping passed + in. + + @param image Image with the metadata to encode + @param pCrwMapping Pointer to an entry into the \em crwMapping_ table + with information on the source and target metadata entries. + @param pHead Pointer to the head of the CIFF parse tree into which + the metadata from \em image is encoded. + */ + static void encodeBasic(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + + //! Encode the user comment + static void encode0x0805(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + + //! Encode camera Make and Model information + static void encode0x080a(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + + //! Encode Canon Camera Settings 1, 2 and Custom Function arrays + static void encodeArray(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + + //! Encode the date when the picture was taken + static void encode0x180e(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + + //! Encode image width and height + static void encode0x1810(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + + //! Encode the thumbnail image + static void encode0x2008(const Image& image, + const CrwMapping* pCrwMapping, + CiffHeader* pHead); + private: + // DATA + static const CrwMapping crwMapping_[]; //!< Metadata conversion table + static const CrwSubDir crwSubDir_[]; //!< Ciff directory hierarchy + + }; // class CrwMap + +// ***************************************************************************** +// template, inline and free functions + + /*! + @brief Pack the tag values of all \em ifdId tags in \em exifData into a + data buffer. This function is used to pack Canon Camera Settings1,2 + and Custom Function tags. + */ + DataBuf packIfdId(const ExifData& exifData, + IfdId ifdId, + ByteOrder byteOrder); + +}} // namespace Internal, Exiv2 + +#endif // #ifndef CRWIMAGE_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/crwparse.cpp b/vendor/exiv2-0.25/src/crwparse.cpp new file mode 100644 index 0000000..8d719e1 --- /dev/null +++ b/vendor/exiv2-0.25/src/crwparse.cpp @@ -0,0 +1,47 @@ +// ***************************************************************** -*- C++ -*- +// crwparse.cpp, $Rev: 1560 $ +// Print the CIFF structure of a CRW file + +#include "crwimage.hpp" +#include "crwimage_int.hpp" +#include "futils.hpp" + +#include + +int main(int argc, char* const argv[]) +try { + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + std::cout << "Print the CIFF structure of a CRW file\n"; + return 1; + } + + Exiv2::FileIo io(argv[1]); + if(io.open() != 0) { + throw Exiv2::Error(9, io.path(), Exiv2::strError()); + } + Exiv2::IoCloser closer(io); + + // Ensure that this is a CRW image + if (!Exiv2::isCrwType(io, false)) { + if (io.error() || io.eof()) throw Exiv2::Error(14); + throw Exiv2::Error(33); + } + + // Read the image into a memory buffer + long len = io.size(); + Exiv2::DataBuf buf(len); + io.read(buf.pData_, len); + if (io.error() || io.eof()) throw Exiv2::Error(14); + + // Parse the image, starting with a CIFF header component + Exiv2::Internal::CiffHeader::AutoPtr parseTree(new Exiv2::Internal::CiffHeader); + parseTree->read(buf.pData_, buf.size_); + parseTree->print(std::cout); + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cerr << e << "\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/src/datasets.cpp b/vendor/exiv2-0.25/src/datasets.cpp new file mode 100644 index 0000000..af82425 --- /dev/null +++ b/vendor/exiv2-0.25/src/datasets.cpp @@ -0,0 +1,737 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: datasets.cpp + Version: $Rev: 3777 $ + Author(s): Brad Schick (brad) + Gilles Caulier (gc) + History: 24-Jul-04, brad: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: datasets.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "datasets.hpp" +#include "error.hpp" +#include "types.hpp" +#include "value.hpp" +#include "metadatum.hpp" +#include "i18n.h" // NLS support. + +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + DataSet::DataSet( + uint16_t number, + const char* name, + const char* title, + const char* desc, + bool mandatory, + bool repeatable, + uint32_t minbytes, + uint32_t maxbytes, + TypeId type, + uint16_t recordId, + const char* photoshop + ) + : number_(number), name_(name), title_(title), desc_(desc), + mandatory_(mandatory), repeatable_(repeatable), minbytes_(minbytes), + maxbytes_(maxbytes), type_(type), recordId_(recordId), + photoshop_(photoshop) + { + } + + RecordInfo::RecordInfo( + uint16_t recordId, + const char* name, + const char* desc + ) + : recordId_(recordId), name_(name), desc_(desc) + { + } + + const RecordInfo IptcDataSets::recordInfo_[] = { + RecordInfo(IptcDataSets::invalidRecord, "(invalid)", N_("(invalid)")), + RecordInfo(IptcDataSets::envelope, "Envelope", N_("IIM envelope record")), + RecordInfo(IptcDataSets::application2, "Application2", N_("IIM application record 2")), + }; + + static const DataSet envelopeRecord[] = { + DataSet(IptcDataSets::ModelVersion, "ModelVersion", N_("Model Version"), + N_("A binary number identifying the version of the Information " + "Interchange Model, Part I, utilised by the provider. Version " + "numbers are assigned by IPTC and NAA organizations."), + true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::Destination, "Destination", N_("Destination"), + N_("This DataSet is to accommodate some providers who require " + "routing information above the appropriate OSI layers."), + false, true, 0, 1024, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::FileFormat, "FileFormat", N_("File Format"), + N_("A binary number representing the file format. The file format " + "must be registered with IPTC or NAA with a unique number " + "assigned to it. The information is used to route " + "the data to the appropriate system and to allow the receiving " + "system to perform the appropriate actions there to."), + true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::FileVersion, "FileVersion", N_("File Version"), + N_("A binary number representing the particular version of the File " + "Format specified by tag."), + true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::ServiceId, "ServiceId", N_("Service Id"), + N_("Identifies the provider and product"), + true, false, 0, 10, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::EnvelopeNumber, "EnvelopeNumber", N_("Envelope Number"), + N_("The characters form a number that will be unique for the date " + "specified in tag and for the Service Identifier " + "specified by tag. " + "If identical envelope numbers appear with the same date and " + "with the same Service Identifier, records 2-9 must be unchanged " + "from the original. This is not intended to be a sequential serial " + "number reception check."), + true, false, 8, 8, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::ProductId, "ProductId", N_("Product Id"), + N_("Allows a provider to identify subsets of its overall service. Used " + "to provide receiving organisation data on which to select, route, " + "or otherwise handle data."), + false, true, 0, 32, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::EnvelopePriority, "EnvelopePriority", N_("Envelope Priority"), + N_("Specifies the envelope handling priority and not the editorial " + "urgency (see tag). \"1\" indicates the most urgent, \"5\" " + "the normal urgency, and \"8\" the least urgent copy. The numeral " + "\"9\" indicates a User Defined Priority. The numeral \"0\" is reserved " + "for future use."), + false, false, 1, 1, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::DateSent, "DateSent", N_("Date Sent"), + N_("Uses the format CCYYMMDD (century, year, month, day) as de-fined " + "in ISO 8601 to indicate year, month and day the service sent the material."), + true, false, 8, 8, Exiv2::date, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::TimeSent, "TimeSent", N_("Time Sent"), + N_("Uses the format HHMMSS:HHMM where HHMMSS refers to " + "local hour, minute and seconds and HHMM refers to hours and " + "minutes ahead (+) or behind (-) Universal Coordinated Time as " + "described in ISO 8601. This is the time the service sent the material."), + false, false, 11, 11, Exiv2::time, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::CharacterSet, "CharacterSet", N_("Character Set"), + N_("This tag consisting of one or more control functions used for the announcement, " + "invocation or designation of coded character sets. The control functions follow " + "the ISO 2022 standard and may consist of the escape control " + "character and one or more graphic characters."), + false, false, 0, 32, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::UNO, "UNO", N_("Unique Name Object"), + N_("This tag provide a globally unique " + "identification for objects as specified in the IIM, independent of " + "provider and for any media form. The provider must ensure the " + "UNO is unique. Objects with the same UNO are identical."), + false, false, 14, 80, Exiv2::string, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::ARMId, "ARMId", N_("ARM Identifier"), + N_("The DataSet identifies the Abstract Relationship Method identifier (ARM) " + "which is described in a document registered by the originator of " + "the ARM with the IPTC and NAA organizations."), + false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), + DataSet(IptcDataSets::ARMVersion, "ARMVersion", N_("ARM Version"), + N_("This tag consisting of a binary number representing the particular " + "version of the ARM specified by tag ."), + false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::envelope, ""), + DataSet(0xffff, "(Invalid)", "(Invalid)", + "(Invalid)", false, false, 0, 0, Exiv2::unsignedShort, IptcDataSets::envelope, "") + }; + + const DataSet* IptcDataSets::envelopeRecordList() + { + return envelopeRecord; + } + + static const DataSet application2Record[] = { + DataSet(IptcDataSets::RecordVersion, "RecordVersion", N_("Record Version"), + N_("A binary number identifying the version of the Information " + "Interchange Model, Part II, utilised by the provider. " + "Version numbers are assigned by IPTC and NAA organizations."), + true, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ObjectType, "ObjectType", N_("Object Type"), + N_("The Object Type is used to distinguish between different types " + "of objects within the IIM. The first part is a number representing " + "a language independent international reference to an Object Type " + "followed by a colon separator. The second part, if used, is a text " + "representation of the Object Type Number consisting of graphic " + "characters plus spaces either in English or in the language of the " + "service as indicated in tag "), + false, false, 3, 67, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ObjectAttribute, "ObjectAttribute", N_("Object Attribute"), + N_("The Object Attribute defines the nature of the object " + "independent of the Subject. The first part is a number representing " + "a language independent international reference to an Object Attribute " + "followed by a colon separator. The second part, if used, is a text " + "representation of the Object Attribute Number consisting of graphic " + "characters plus spaces either in English, or in the language of the " + "service as indicated in tag "), + false, true, 4, 68, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ObjectName, "ObjectName", N_("Object Name"), + N_("Used as a shorthand reference for the object. Changes to exist-ing " + "data, such as updated stories or new crops on photos, should be " + "identified in tag ."), + false, false, 0, 64, Exiv2::string, IptcDataSets::application2, + N_("Document Title")), + DataSet(IptcDataSets::EditStatus, "EditStatus", N_("Edit Status"), + N_("Status of the object data, according to the practice of the provider."), + false, false, 0, 64, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::EditorialUpdate, "EditorialUpdate", N_("Editorial Update"), + N_("Indicates the type of update that this object provides to a " + "previous object. The link to the previous object is made using " + "the tags and , according to the practices of the provider."), + false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Urgency, "Urgency", N_("Urgency"), + N_("Specifies the editorial urgency of content and not necessarily the " + "envelope handling priority (see tag ). The \"1\" " + "is most urgent, \"5\" normal and \"8\" denotes the least-urgent copy."), + false, false, 1, 1, Exiv2::string, IptcDataSets::application2, + N_("Urgency")), + DataSet(IptcDataSets::Subject, "Subject", N_("Subject"), + N_("The Subject Reference is a structured definition of the subject matter."), + false, true, 13, 236, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Category, "Category", N_("Category"), + N_("Identifies the subject of the object data in the opinion of the provider. " + "A list of categories will be maintained by a regional registry, " + "where available, otherwise by the provider."), + false, false, 0, 3, Exiv2::string, IptcDataSets::application2, + N_("Category")), + DataSet(IptcDataSets::SuppCategory, "SuppCategory", N_("Supplemental Category"), + N_("Supplemental categories further refine the subject of an " + "object data. A supplemental category may include " + "any of the recognised categories as used in tag . Otherwise, " + "selection of supplemental categories are left to the provider."), + false, true, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("Supplemental Categories")), + DataSet(IptcDataSets::FixtureId, "FixtureId", N_("Fixture Id"), + N_("Identifies object data that recurs often and predictably. Enables " + "users to immediately find or recall such an object."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Keywords, "Keywords", N_("Keywords"), + N_("Used to indicate specific information retrieval words. " + "It is expected that a provider of various types of data that are related " + "in subject matter uses the same keyword, enabling the receiving system " + "or subsystems to search across all types of data for related material."), + false, true, 0, 64, Exiv2::string, IptcDataSets::application2, + N_("Keywords")), + DataSet(IptcDataSets::LocationCode, "LocationCode", N_("Location Code"), + N_("Indicates the code of a country/geographical location referenced " + "by the content of the object. Where ISO has established an appropriate " + "country code under ISO 3166, that code will be used. When ISO 3166 does not " + "adequately provide for identification of a location or a country, " + "e.g. ships at sea, space, IPTC will assign an appropriate three-character " + "code under the provisions of ISO 3166 to avoid conflicts."), + false, true, 3, 3, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::LocationName, "LocationName", N_("Location Name"), + N_("Provides a full, publishable name of a country/geographical " + "location referenced by the content of the object, according to " + "guidelines of the provider."), + false, true, 0, 64, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ReleaseDate, "ReleaseDate", N_("Release Date"), + N_("Designates in the form CCYYMMDD the earliest date the " + "provider intends the object to be used. Follows ISO 8601 standard."), + false, false, 8, 8, Exiv2::date, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ReleaseTime, "ReleaseTime", N_("Release Time"), + N_("Designates in the form HHMMSS:HHMM the earliest time the " + "provider intends the object to be used. Follows ISO 8601 standard."), + false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ExpirationDate, "ExpirationDate", N_("Expiration Date"), + N_("Designates in the form CCYYMMDD the latest date the provider " + "or owner intends the object data to be used. Follows ISO 8601 standard."), + false, false, 8, 8, Exiv2::date, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ExpirationTime, "ExpirationTime", N_("ExpirationTime"), + N_("Designates in the form HHMMSS:HHMM the latest time the " + "provider or owner intends the object data to be used. Follows ISO 8601 standard."), + false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), + DataSet(IptcDataSets::SpecialInstructions, "SpecialInstructions", N_("Special Instructions"), + N_("Other editorial instructions concerning the use of the object data, " + "such as embargoes and warnings."), + false, false, 0, 256, Exiv2::string, IptcDataSets::application2, + N_("Instructions")), + DataSet(IptcDataSets::ActionAdvised, "ActionAdvised", N_("Action Advised"), + N_("Indicates the type of action that this object provides to a " + "previous object. The link to the previous object is made using " + "tags and , according to the practices of the provider."), + false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ReferenceService, "ReferenceService", N_("Reference Service"), + N_("Identifies the Service Identifier of a prior envelope to which the " + "current object refers."), + false, true, 0, 10, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ReferenceDate, "ReferenceDate", N_("Reference Date"), + N_("Identifies the date of a prior envelope to which the current object refers."), + false, true, 8, 8, Exiv2::date, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ReferenceNumber, "ReferenceNumber", N_("Reference Number"), + N_("Identifies the Envelope Number of a prior envelope to which the current object refers."), + false, true, 8, 8, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::DateCreated, "DateCreated", N_("Date Created"), + N_("Represented in the form CCYYMMDD to designate the date the " + "intellectual content of the object data was created rather than the " + "date of the creation of the physical representation. Follows ISO 8601 standard."), + false, false, 8, 8, Exiv2::date, IptcDataSets::application2, + N_("Date Created")), + DataSet(IptcDataSets::TimeCreated, "TimeCreated", N_("Time Created"), + N_("Represented in the form HHMMSS:HHMM to designate the " + "time the intellectual content of the object data current source " + "material was created rather than the creation of the physical " + "representation. Follows ISO 8601 standard."), + false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), + DataSet(IptcDataSets::DigitizationDate, "DigitizationDate", N_("Digitization Date"), + N_("Represented in the form CCYYMMDD to designate the date the " + "digital representation of the object data was created. Follows ISO 8601 standard."), + false, false, 8, 8, Exiv2::date, IptcDataSets::application2, ""), + DataSet(IptcDataSets::DigitizationTime, "DigitizationTime", N_("Digitization Time"), + N_("Represented in the form HHMMSS:HHMM to designate the " + "time the digital representation of the object data was created. " + "Follows ISO 8601 standard."), + false, false, 11, 11, Exiv2::time, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Program, "Program", N_("Program"), + N_("Identifies the type of program used to originate the object data."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ProgramVersion, "ProgramVersion", N_("Program Version"), + N_("Used to identify the version of the program mentioned in tag ."), + false, false, 0, 10, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ObjectCycle, "ObjectCycle", N_("Object Cycle"), + N_("Used to identify the editorial cycle of object data."), + false, false, 1, 1, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Byline, "Byline", N_("By-line"), + N_("Contains name of the creator of the object data, e.g. writer, photographer " + "or graphic artist."), + false, true, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("Author")), + DataSet(IptcDataSets::BylineTitle, "BylineTitle", N_("By-line Title"), + N_("A by-line title is the title of the creator or creators of an " + "object data. Where used, a by-line title should follow the by-line it modifies."), + false, true, 0, 32, Exiv2::string, IptcDataSets::application2, "Authors Position"), + DataSet(IptcDataSets::City, "City", N_("City"), + N_("Identifies city of object data origin according to guidelines established " + "by the provider."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("City")), + DataSet(IptcDataSets::SubLocation, "SubLocation", N_("Sub Location"), + N_("Identifies the location within a city from which the object data " + "originates, according to guidelines established by the provider."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ProvinceState, "ProvinceState", N_("Province State"), + N_("Identifies Province/State of origin according to guidelines " + "established by the provider."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("State/Province")), + DataSet(IptcDataSets::CountryCode, "CountryCode", N_("Country Code"), + N_("Indicates the code of the country/primary location where the " + "intellectual property of the object data was created, e.g. a photo " + "was taken, an event occurred. Where ISO has established an appropriate " + "country code under ISO 3166, that code will be used. When ISO 3166 does not " + "adequately provide for identification of a location or a new " + "country, e.g. ships at sea, space, IPTC will assign an " + "appropriate three-character code under the provisions of " + "ISO 3166 to avoid conflicts."), + false, false, 3, 3, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::CountryName, "CountryName", N_("Country Name"), + N_("Provides full, publishable, name of the country/primary location " + "where the intellectual property of the object data was created, " + "according to guidelines of the provider."), + false, false, 0, 64, Exiv2::string, IptcDataSets::application2, + N_("Country")), + DataSet(IptcDataSets::TransmissionReference, "TransmissionReference", N_("Transmission Reference"), + N_("A code representing the location of original transmission according " + "to practices of the provider."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("Transmission Reference")), + DataSet(IptcDataSets::Headline, "Headline", N_("Headline"), + N_("A publishable entry providing a synopsis of the contents of the object data."), + false, false, 0, 256, Exiv2::string, IptcDataSets::application2, + N_("Headline")), + DataSet(IptcDataSets::Credit, "Credit", N_("Credit"), + N_("Identifies the provider of the object data, not necessarily the owner/creator."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("Credit")), + DataSet(IptcDataSets::Source, "Source", N_("Source"), + N_("Identifies the original owner of the intellectual content of the " + "object data. This could be an agency, a member of an agency or an individual."), + false, false, 0, 32, Exiv2::string, IptcDataSets::application2, + N_("Source")), + DataSet(IptcDataSets::Copyright, "Copyright", N_("Copyright"), + N_("Contains any necessary copyright notice."), + false, false, 0, 128, Exiv2::string, IptcDataSets::application2, + N_("Copyright Notice")), + DataSet(IptcDataSets::Contact, "Contact", N_("Contact"), + N_("Identifies the person or organisation which can provide further " + "background information on the object data."), + false, true, 0, 128, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Caption, "Caption", N_("Caption"), + N_("A textual description of the object data."), + false, false, 0, 2000, Exiv2::string, IptcDataSets::application2, + N_("Description")), + DataSet(IptcDataSets::Writer, "Writer", N_("Writer"), + N_("Identification of the name of the person involved in the writing, " + "editing or correcting the object data or caption/abstract."), + false, true, 0, 32, Exiv2::string, IptcDataSets::application2, "Description writer"), + DataSet(IptcDataSets::RasterizedCaption, "RasterizedCaption", N_("Rasterized Caption"), + N_("Contains the rasterized object data description and is used " + "where characters that have not been coded are required for the caption."), + false, false, 7360, 7360, Exiv2::undefined, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ImageType, "ImageType", N_("Image Type"), + N_("Indicates the color components of an image."), + false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::ImageOrientation, "ImageOrientation", N_("Image Orientation"), + N_("Indicates the layout of an image."), + false, false, 1, 1, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Language, "Language", N_("Language"), + N_("Describes the major national language of the object, according " + "to the 2-letter codes of ISO 639:1988. Does not define or imply " + "any coded character set, but is used for internal routing, e.g. to " + "various editorial desks."), + false, false, 2, 3, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::AudioType, "AudioType", N_("Audio Type"), + N_("Indicates the type of an audio content."), + false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::AudioRate, "AudioRate", N_("Audio Rate"), + N_("Indicates the sampling rate in Hertz of an audio content."), + false, false, 6, 6, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::AudioResolution, "AudioResolution", N_("Audio Resolution"), + N_("Indicates the sampling resolution of an audio content."), + false, false, 2, 2, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::AudioDuration, "AudioDuration", N_("Audio Duration"), + N_("Indicates the duration of an audio content."), + false, false, 6, 6, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::AudioOutcue, "AudioOutcue", N_("Audio Outcue"), + N_("Identifies the content of the end of an audio object data, " + "according to guidelines established by the provider."), + false, false, 0, 64, Exiv2::string, IptcDataSets::application2, ""), + DataSet(IptcDataSets::PreviewFormat, "PreviewFormat", N_("Preview Format"), + N_("A binary number representing the file format of the object data " + "preview. The file format must be registered with IPTC or NAA organizations " + "with a unique number assigned to it."), + false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::application2, ""), + DataSet(IptcDataSets::PreviewVersion, "PreviewVersion", N_("Preview Version"), + N_("A binary number representing the particular version of the " + "object data preview file format specified in tag ."), + false, false, 2, 2, Exiv2::unsignedShort, IptcDataSets::application2, ""), + DataSet(IptcDataSets::Preview, "Preview", N_("Preview Data"), + N_("Binary image preview data."), + false, false, 0, 256000, Exiv2::undefined, IptcDataSets::application2, ""), + DataSet(0xffff, "(Invalid)", N_("(Invalid)"), + N_("(Invalid)"), + false, false, 0, 0, Exiv2::unsignedShort, IptcDataSets::application2, "") + }; + + const DataSet* IptcDataSets::application2RecordList() + { + return application2Record; + } + + static const DataSet unknownDataSet(0xffff, "Unknown dataset", N_("Unknown dataset"), + N_("Unknown dataset"), + false, true, 0, 0xffffffff, Exiv2::string, + IptcDataSets::invalidRecord, + N_("Unknown dataset")); + + // Dataset lookup lists.This is an array with pointers to one list per IIM4 Record. + // The record id is used as the index into the array. + const DataSet* IptcDataSets::records_[] = { + 0, + envelopeRecord, application2Record, + 0 + }; + + int IptcDataSets::dataSetIdx(uint16_t number, uint16_t recordId) + { + if( recordId != envelope && recordId != application2 ) return -1; + const DataSet* dataSet = records_[recordId]; + if (dataSet == 0) return -1; + int idx; + for (idx = 0; dataSet[idx].number_ != number; ++idx) { + if (dataSet[idx].number_ == 0xffff) return -1; + } + return idx; + } + + int IptcDataSets::dataSetIdx(const std::string& dataSetName, uint16_t recordId) + { + if( recordId != envelope && recordId != application2 ) return -1; + const DataSet* dataSet = records_[recordId]; + if (dataSet == 0) return -1; + int idx; + for (idx = 0; dataSet[idx].name_ != dataSetName; ++idx) { + if (dataSet[idx].number_ == 0xffff) return -1; + } + return idx; + } + + TypeId IptcDataSets::dataSetType(uint16_t number, uint16_t recordId) + { + int idx = dataSetIdx(number, recordId); + if (idx == -1) return unknownDataSet.type_; + return records_[recordId][idx].type_; + } + + std::string IptcDataSets::dataSetName(uint16_t number, uint16_t recordId) + { + int idx = dataSetIdx(number, recordId); + if (idx != -1) return records_[recordId][idx].name_; + + std::ostringstream os; + os << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << number; + return os.str(); + } + + const char* IptcDataSets::dataSetTitle(uint16_t number, uint16_t recordId) + { + int idx = dataSetIdx(number, recordId); + if (idx == -1) return unknownDataSet.title_; + return records_[recordId][idx].title_; + } + + const char* IptcDataSets::dataSetDesc(uint16_t number, uint16_t recordId) + { + int idx = dataSetIdx(number, recordId); + if (idx == -1) return unknownDataSet.desc_; + return records_[recordId][idx].desc_; + } + + const char* IptcDataSets::dataSetPsName(uint16_t number, uint16_t recordId) + { + int idx = dataSetIdx(number, recordId); + if (idx == -1) return unknownDataSet.photoshop_; + return records_[recordId][idx].photoshop_; + } + + bool IptcDataSets::dataSetRepeatable(uint16_t number, uint16_t recordId) + { + int idx = dataSetIdx(number, recordId); + if (idx == -1) return unknownDataSet.repeatable_; + return records_[recordId][idx].repeatable_; + } + + uint16_t IptcDataSets::dataSet(const std::string& dataSetName, + uint16_t recordId) + { + uint16_t dataSet; + int idx = dataSetIdx(dataSetName, recordId); + if (idx != -1) { + // dataSetIdx checks the range of recordId + dataSet = records_[recordId][idx].number_; + } + else { + if (!isHex(dataSetName, 4, "0x")) throw Error(4, dataSetName); + std::istringstream is(dataSetName); + is >> std::hex >> dataSet; + } + return dataSet; + } + + std::string IptcDataSets::recordName(uint16_t recordId) + { + if (recordId == envelope || recordId == application2) { + return recordInfo_[recordId].name_; + } + + std::ostringstream os; + os << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << recordId; + return os.str(); + } + + const char* IptcDataSets::recordDesc(uint16_t recordId) + { + if (recordId != envelope && recordId != application2) { + return unknownDataSet.desc_; + } + return recordInfo_[recordId].desc_; + } + + uint16_t IptcDataSets::recordId(const std::string& recordName) + { + uint16_t i; + for (i = application2; i > 0; --i) { + if (recordInfo_[i].name_ == recordName) break; + } + if (i == 0) { + if (!isHex(recordName, 4, "0x")) throw Error(5, recordName); + std::istringstream is(recordName); + is >> std::hex >> i; + } + return i; + } + + void IptcDataSets::dataSetList(std::ostream& os) + { + const int count = sizeof(records_)/sizeof(records_[0]); + for (int i=0; i < count; ++i) { + const DataSet *record = records_[i]; + for (int j=0; record != 0 && record[j].number_ != 0xffff; ++j) { + os << record[j] << "\n"; + } + } + } // IptcDataSets::dataSetList + + const char* IptcKey::familyName_ = "Iptc"; + + IptcKey::IptcKey(const std::string& key) + : key_(key) + { + decomposeKey(); + } + + IptcKey::IptcKey(uint16_t tag, uint16_t record) + : tag_(tag), record_(record) + { + makeKey(); + } + + IptcKey::IptcKey(const IptcKey& rhs) + : Key(rhs), tag_(rhs.tag_), record_(rhs.record_), key_(rhs.key_) + { + } + + IptcKey::~IptcKey() + { + } + + IptcKey& IptcKey::operator=(const IptcKey& rhs) + { + if (this == &rhs) return *this; + Key::operator=(rhs); + tag_ = rhs.tag_; + record_ = rhs.record_; + key_ = rhs.key_; + return *this; + } + + std::string IptcKey::key() const + { + return key_; + } + + const char* IptcKey::familyName() const + { + return familyName_; + } + + std::string IptcKey::groupName() const + { + return recordName(); + } + + std::string IptcKey::tagName() const + { + return IptcDataSets::dataSetName(tag_, record_); + } + + std::string IptcKey::tagLabel() const + { + return IptcDataSets::dataSetTitle(tag_, record_); + } + + uint16_t IptcKey::tag() const + { + return tag_; + } + + std::string IptcKey::recordName() const + { + return IptcDataSets::recordName(record_); + } + + uint16_t IptcKey::record() const + { + return record_; + } + + IptcKey::AutoPtr IptcKey::clone() const + { + return AutoPtr(clone_()); + } + + IptcKey* IptcKey::clone_() const + { + return new IptcKey(*this); + } + + void IptcKey::decomposeKey() + { + // Get the family name, record name and dataSet name parts of the key + std::string::size_type pos1 = key_.find('.'); + if (pos1 == std::string::npos) throw Error(6, key_); + std::string familyName = key_.substr(0, pos1); + if (0 != strcmp(familyName.c_str(), familyName_)) { + throw Error(6, key_); + } + std::string::size_type pos0 = pos1 + 1; + pos1 = key_.find('.', pos0); + if (pos1 == std::string::npos) throw Error(6, key_); + std::string recordName = key_.substr(pos0, pos1 - pos0); + if (recordName == "") throw Error(6, key_); + std::string dataSetName = key_.substr(pos1 + 1); + if (dataSetName == "") throw Error(6, key_); + + // Use the parts of the key to find dataSet and recordId + uint16_t recId = IptcDataSets::recordId(recordName); + uint16_t dataSet = IptcDataSets::dataSet(dataSetName, recId); + + // Possibly translate hex name parts (0xabcd) to real names + recordName = IptcDataSets::recordName(recId); + dataSetName = IptcDataSets::dataSetName(dataSet, recId); + + tag_ = dataSet; + record_ = recId; + key_ = familyName + "." + recordName + "." + dataSetName; + } // IptcKey::decomposeKey + + void IptcKey::makeKey() + { + key_ = std::string(familyName_) + + "." + IptcDataSets::recordName(record_) + + "." + IptcDataSets::dataSetName(tag_, record_); + } + + // ************************************************************************* + // free functions + + std::ostream& operator<<(std::ostream& os, const DataSet& dataSet) + { + std::ios::fmtflags f( os.flags() ); + IptcKey iptcKey(dataSet.number_, dataSet.recordId_); + os << dataSet.name_ << ", " + << std::dec << dataSet.number_ << ", " + << "0x" << std::setw(4) << std::setfill('0') + << std::right << std::hex << dataSet.number_ << ", " + << IptcDataSets::recordName(dataSet.recordId_) << ", " + << std::boolalpha << dataSet.mandatory_ << ", " + << dataSet.repeatable_ << ", " + << std::dec << dataSet.minbytes_ << ", " + << dataSet.maxbytes_ << ", " + << iptcKey.key() << ", " + << TypeInfo::typeName( + IptcDataSets::dataSetType(dataSet.number_, + dataSet.recordId_)) << ", " + << dataSet.desc_; + os.flags(f); + return os; + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/doxygen.hpp.in b/vendor/exiv2-0.25/src/doxygen.hpp.in new file mode 100644 index 0000000..c1706cb --- /dev/null +++ b/vendor/exiv2-0.25/src/doxygen.hpp.in @@ -0,0 +1,145 @@ +// ***************************************************************** -*- C++ -*- +/*! + @file doxygen.hpp + @brief Additional documentation, this file contains no source code + @version $Rev: 3860 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 07-Feb-04, ahu: created + */ +// ***************************************************************************** +// *** NOTE: doxygen.hpp is a generated file! Only edit doxygen.hpp.in *** +// ***************************************************************************** +/*! + @mainpage Image metadata library and tools v@PACKAGE_VERSION@ + + @section overview Exiv2 Overview + + %Exiv2 comprises of a C++ library and a command line utility to access image + metadata. %Exiv2 is free software. The homepage of %Exiv2 is at + http://www.exiv2.org/. + + The %Exiv2 library provides + - fast read and write access to the Exif, IPTC and XMP metadata of an image + through %Exiv2 keys and standard C++ iterators + - conversion of Exif and IPTC metadata to and from XMP + - a smart IPTC implementation that does not affect data that programs like + Photoshop store in the same image segment + - Exif MakerNote support: + - %MakerNote tags can be accessed just like any other Exif metadata + - a sophisticated write algorithm avoids corrupting the %MakerNote + - extract and delete methods for Exif thumbnails (both, JPEG and TIFF thumbnails) + - set methods for Exif thumbnails (JPEG only, TIFF thumbnails can be set from + individual tags) + - an easy to use and well documented API + + @section getting-started Getting started + + A few pointers to get you started with + the %Exiv2 library without delay. + + @section metadata Metadata reference tables + + Exif and MakerNote tags + - Standard Exif tags + - Canon MakerNote tags + - Fujifilm MakerNote tags + - Minolta MakerNote tags + - Nikon MakerNote tags + - Olympus MakerNote tags + - Panasonic MakerNote tags + - Pentax MakerNote tags + - Samsung MakerNote tags + - Sigma/Foveon MakerNote tags + - Sony MakerNote tags + + IPTC datasets + - IPTC datasets + + XMP properties + - dc schema + - DwC schema + - xmp schema + - xmpRights schema + - xmpMM schema + - xmpBJ schema + - xmpTPg schema + - xmpDM schema + - pdf schema + - photoshop schema + - crs schema + - tiff schema + - exif schema + - aux schema + - Iptc4xmpCore schema + - Iptc4xmpExt schema + - PLUS schema + - digiKam schema + - KDE Image Program Interface schema + - MicrosoftPhoto schema + - iView Media Pro schema + - Microsoft Expression Media schema + - Microsoft Photo 1.2 schema + - Microsoft Photo RegionInfo schema + - Microsoft Photo Region schema + - Metadata Working Group Regions schema + + @section formats File Formats + +

See the list of supported image formats + in the Wiki and the Canon CRW mapping.

+ + @section supp Support + +

All project resources are accessible from the + project website.

+ +

Please send feedback or queries to the %Exiv2 forum. For new bug reports + and feature requests, please open an issue.

+ + @section license License + +

Copyright (C) 2004-2015 Andreas Huggel

+ +

%Exiv2 is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version.

+ +

Alternatively, %Exiv2 is also available with a commercial license, which + allows it to be used in closed-source projects. + Contact me for more information.

+ +

%Exiv2 is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more + details.

+ +

You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.

+*/ +/*! + @example addmoddel.cpp + Sample usage of high-level metadata operations. + */ +/*! + @example exifprint.cpp + Sample program to print Exif data from an image. + */ +/*! + @example exifcomment.cpp + Sample program showing how to set the Exif comment of an image. + */ +/*! + @example iptcprint.cpp + Sample program to print the IPTC metadata of an image + */ +/*! + @example iptceasy.cpp + The quickest way to access, set or modify IPTC metadata + */ +/*! + @example xmpsample.cpp + Sample usage of high-level XMP classes. + */ diff --git a/vendor/exiv2-0.25/src/easyaccess.cpp b/vendor/exiv2-0.25/src/easyaccess.cpp new file mode 100644 index 0000000..f6f9ade --- /dev/null +++ b/vendor/exiv2-0.25/src/easyaccess.cpp @@ -0,0 +1,491 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: easyaccess.cpp + Version: $Rev: 3777 $ + Author(s): Carsten Pfeiffer + Andreas Huggel (ahu) + History: 28-Feb-09, gis: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: easyaccess.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "easyaccess.hpp" + +// ***************************************************************************** +namespace { + + using namespace Exiv2; + + /*! + @brief Search \em ed for a Metadatum specified by the \em keys. + The \em keys are searched in the order of their appearance, the + first available Metadatum is returned. + + @param ed The %Exif metadata container to search + @param keys Array of keys to look for + @param count Number of elements in the array + */ + ExifData::const_iterator findMetadatum(const ExifData& ed, + const char* keys[], + int count) + { + for (int i = 0; i < count; ++i) { + ExifData::const_iterator pos = ed.findKey(ExifKey(keys[i])); + if (pos != ed.end()) return pos; + } + return ed.end(); + } // findMetadatum + +} // anonymous namespace + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + ExifData::const_iterator orientation(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Image.Orientation", + "Exif.Panasonic.Rotation", + "Exif.MinoltaCs5D.Rotation", + "Exif.MinoltaCs5D.Rotation2", + "Exif.MinoltaCs7D.Rotation", + "Exif.Sony1MltCsA100.Rotation", + "Exif.Sony1Cs.Rotation", + "Exif.Sony2Cs.Rotation", + "Exif.Sony1Cs2.Rotation", + "Exif.Sony2Cs2.Rotation", + "Exif.Sony1MltCsA100.Rotation" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator isoSpeed(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.ISOSpeedRatings", + "Exif.Image.ISOSpeedRatings", + "Exif.CanonSi.ISOSpeed", + "Exif.CanonCs.ISOSpeed", + "Exif.Nikon1.ISOSpeed", + "Exif.Nikon2.ISOSpeed", + "Exif.Nikon3.ISOSpeed", + "Exif.NikonIi.ISO", + "Exif.NikonIi.ISO2", + "Exif.MinoltaCsNew.ISOSetting", + "Exif.MinoltaCsOld.ISOSetting", + "Exif.MinoltaCs5D.ISOSpeed", + "Exif.MinoltaCs7D.ISOSpeed", + "Exif.Sony1Cs.ISOSetting", + "Exif.Sony2Cs.ISOSetting", + "Exif.Sony1Cs2.ISOSetting", + "Exif.Sony2Cs2.ISOSetting", + "Exif.Sony1MltCsA100.ISOSetting", + "Exif.Pentax.ISO", + "Exif.PentaxDng.ISO", + "Exif.Olympus.ISOSpeed", + "Exif.Samsung2.ISO", + "Exif.Casio.ISO", + "Exif.Casio2.ISO", + "Exif.Casio2.ISOSpeed" + }; + + // Find the first ISO value which is not "0" + const int cnt = EXV_COUNTOF(keys); + ExifData::const_iterator md = ed.end(); + for (int idx = 0; idx < cnt; ) { + md = findMetadatum(ed, keys + idx, cnt - idx); + if (md == ed.end()) break; + std::ostringstream os; + md->write(os, &ed); + bool ok = false; + long v = parseLong(os.str(), ok); + if (ok && v != 0) break; + while (strcmp(keys[idx++], md->key().c_str()) != 0 && idx < cnt) {} + md = ed.end(); + } + + return md; + } + + ExifData::const_iterator flashBias(const ExifData& ed) + { + static const char* keys[] = { + "Exif.CanonSi.FlashBias", + "Exif.Panasonic.FlashBias", + "Exif.Olympus.FlashBias", + "Exif.OlympusCs.FlashExposureComp", + "Exif.Minolta.FlashExposureComp", + "Exif.SonyMinolta.FlashExposureComp", + "Exif.Sony1.FlashExposureComp", + "Exif.Sony2.FlashExposureComp" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator exposureMode(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.ExposureProgram", + "Exif.Image.ExposureProgram", + "Exif.CanonCs.ExposureProgram", + "Exif.MinoltaCs7D.ExposureMode", + "Exif.MinoltaCs5D.ExposureMode", + "Exif.MinoltaCsNew.ExposureMode", + "Exif.MinoltaCsOld.ExposureMode", + "Exif.Sony1MltCsA100.ExposureMode", + "Exif.Sony1Cs.ExposureProgram", + "Exif.Sony2Cs.ExposureProgram", + "Exif.Sigma.ExposureMode" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator sceneMode(const ExifData& ed) + { + static const char* keys[] = { + "Exif.CanonCs.EasyMode", + "Exif.Fujifilm.PictureMode", + "Exif.MinoltaCsNew.SubjectProgram", + "Exif.MinoltaCsOld.SubjectProgram", + "Exif.Minolta.SceneMode", + "Exif.SonyMinolta.SceneMode", + "Exif.Sony1.SceneMode", + "Exif.Sony2.SceneMode", + "Exif.OlympusCs.SceneMode", + "Exif.Panasonic.ShootingMode", + "Exif.Panasonic.SceneMode", + "Exif.Pentax.PictureMode", + "Exif.PentaxDng.PictureMode", + "Exif.Photo.SceneCaptureType" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator macroMode(const ExifData& ed) + { + static const char* keys[] = { + "Exif.CanonCs.Macro", + "Exif.Fujifilm.Macro", + "Exif.Olympus.Macro", + "Exif.OlympusCs.MacroMode", + "Exif.Panasonic.Macro", + "Exif.MinoltaCsNew.MacroMode", + "Exif.MinoltaCsOld.MacroMode", + "Exif.Sony1.Macro", + "Exif.Sony2.Macro" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator imageQuality(const ExifData& ed) + { + static const char* keys[] = { + "Exif.CanonCs.Quality", + "Exif.Fujifilm.Quality", + "Exif.Sigma.Quality", + "Exif.Nikon1.Quality", + "Exif.Nikon2.Quality", + "Exif.Nikon3.Quality", + "Exif.Olympus.Quality", + "Exif.OlympusCs.Quality", + "Exif.Panasonic.Quality", + "Exif.Minolta.Quality", + "Exif.MinoltaCsNew.Quality", + "Exif.MinoltaCsOld.Quality", + "Exif.MinoltaCs5D.Quality", + "Exif.MinoltaCs7D.Quality", + "Exif.Sony1MltCsA100.Quality", + "Exif.Sony1.JPEGQuality", + "Exif.Sony1.Quality", + "Exif.Sony1Cs.Quality", + "Exif.Sony2.JPEGQuality", + "Exif.Sony2.Quality", + "Exif.Sony2Cs.Quality", + "Exif.Casio.Quality", + "Exif.Casio2.QualityMode", + "Exif.Casio2.Quality" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator whiteBalance(const ExifData& ed) + { + static const char* keys[] = { + "Exif.CanonSi.WhiteBalance", + "Exif.Fujifilm.WhiteBalance", + "Exif.Sigma.WhiteBalance", + "Exif.Nikon1.WhiteBalance", + "Exif.Nikon2.WhiteBalance", + "Exif.Nikon3.WhiteBalance", + "Exif.Olympus.WhiteBalance", + "Exif.OlympusCs.WhiteBalance", + "Exif.Panasonic.WhiteBalance", + "Exif.MinoltaCs5D.WhiteBalance", + "Exif.MinoltaCs7D.WhiteBalance", + "Exif.MinoltaCsNew.WhiteBalance", + "Exif.MinoltaCsOld.WhiteBalance", + "Exif.Minolta.WhiteBalance", + "Exif.Sony1MltCsA100.WhiteBalance", + "Exif.SonyMinolta.WhiteBalance", + "Exif.Sony1.WhiteBalance", + "Exif.Sony2.WhiteBalance", + "Exif.Sony1.WhiteBalance2", + "Exif.Sony2.WhiteBalance2", + "Exif.Casio.WhiteBalance", + "Exif.Casio2.WhiteBalance", + "Exif.Casio2.WhiteBalance2", + "Exif.Photo.WhiteBalance" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator lensName(const ExifData& ed) + { + static const char* keys[] = { + // Exif.Canon.LensModel only reports focal length. + // Try Exif.CanonCs.LensType first. + "Exif.CanonCs.LensType", + "Exif.Photo.LensModel", + "Exif.NikonLd1.LensIDNumber", + "Exif.NikonLd2.LensIDNumber", + "Exif.NikonLd3.LensIDNumber", + "Exif.Pentax.LensType", + "Exif.PentaxDng.LensType", + "Exif.Minolta.LensID", + "Exif.SonyMinolta.LensID", + "Exif.Sony1.LensID", + "Exif.Sony2.LensID", + "Exif.OlympusEq.LensType", + "Exif.Panasonic.LensType", + "Exif.Samsung2.LensType" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator saturation(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.Saturation", + "Exif.CanonCs.Saturation", + "Exif.MinoltaCsNew.Saturation", + "Exif.MinoltaCsOld.Saturation", + "Exif.MinoltaCs7D.Saturation", + "Exif.MinoltaCs5D.Saturation", + "Exif.Fujifilm.Color", + "Exif.Nikon3.Saturation", + "Exif.Panasonic.Saturation", + "Exif.Pentax.Saturation", + "Exif.PentaxDng.Saturation", + "Exif.Sigma.Saturation", + "Exif.Casio.Saturation", + "Exif.Casio2.Saturation", + "Exif.Casio2.Saturation2" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator sharpness(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.Sharpness", + "Exif.CanonCs.Sharpness", + "Exif.Fujifilm.Sharpness", + "Exif.MinoltaCsNew.Sharpness", + "Exif.MinoltaCsOld.Sharpness", + "Exif.MinoltaCs7D.Sharpness", + "Exif.MinoltaCs5D.Sharpness", + "Exif.Olympus.SharpnessFactor", + "Exif.Panasonic.Sharpness", + "Exif.Pentax.Sharpness", + "Exif.PentaxDng.Sharpness", + "Exif.Sigma.Sharpness", + "Exif.Casio.Sharpness", + "Exif.Casio2.Sharpness", + "Exif.Casio2.Sharpness2" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator contrast(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.Contrast", + "Exif.CanonCs.Contrast", + "Exif.Fujifilm.Tone", + "Exif.MinoltaCsNew.Contrast", + "Exif.MinoltaCsOld.Contrast", + "Exif.MinoltaCs7D.Contrast", + "Exif.MinoltaCs5D.Contrast", + "Exif.Olympus.Contrast", + "Exif.Panasonic.Contrast", + "Exif.Pentax.Contrast", + "Exif.PentaxDng.Contrast", + "Exif.Sigma.Contrast", + "Exif.Casio.Contrast", + "Exif.Casio2.Contrast", + "Exif.Casio2.Contrast2" + + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator sceneCaptureType(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.SceneCaptureType", + "Exif.Olympus.SpecialMode" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator meteringMode(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.MeteringMode", + "Exif.Image.MeteringMode", + "Exif.CanonCs.MeteringMode", + "Exif.Sony1MltCsA100.MeteringMode" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator make(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Image.Make" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator model(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Image.Model" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator exposureTime(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.ExposureTime", + "Exif.Image.ExposureTime", + "Exif.Samsung2.ExposureTime" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator fNumber(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.FNumber", + "Exif.Image.FNumber", + "Exif.Samsung2.FNumber" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator subjectDistance(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.SubjectDistance", + "Exif.Image.SubjectDistance", + "Exif.CanonSi.SubjectDistance", + "Exif.CanonFi.FocusDistanceUpper", + "Exif.CanonFi.FocusDistanceLower", + "Exif.MinoltaCsNew.FocusDistance", + "Exif.Nikon1.FocusDistance", + "Exif.Nikon3.FocusDistance", + "Exif.NikonLd2.FocusDistance", + "Exif.NikonLd3.FocusDistance", + "Exif.Olympus.FocusDistance", + "Exif.OlympusFi.FocusDistance", + "Exif.Casio.ObjectDistance", + "Exif.Casio2.ObjectDistance" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator serialNumber(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Image.CameraSerialNumber", + "Exif.Canon.SerialNumber", + "Exif.Nikon3.SerialNumber", + "Exif.Nikon3.SerialNO", + "Exif.Fujifilm.SerialNumber", + "Exif.Olympus.SerialNumber2", + "Exif.Sigma.SerialNumber" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator focalLength(const ExifData& ed) + { + static const char* keys[] = { + "Exif.Photo.FocalLength", + "Exif.Image.FocalLength", + "Exif.Canon.FocalLength", + "Exif.NikonLd2.FocalLength", + "Exif.NikonLd3.FocalLength", + "Exif.MinoltaCsNew.FocalLength", + "Exif.Pentax.FocalLength", + "Exif.PentaxDng.FocalLength", + "Exif.Casio2.FocalLength" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + + ExifData::const_iterator afPoint(const ExifData& ed) + { + static const char* keys[] = { + "Exif.CanonPi.AFPointsUsed", + "Exif.CanonPi.AFPointsUsed20D", + "Exif.CanonSi.AFPointUsed", + "Exif.CanonCs.AFPoint", + "Exif.MinoltaCs7D.AFPoints", + "Exif.Nikon1.AFFocusPos", + "Exif.NikonAf.AFPoint", + "Exif.NikonAf.AFPointsInFocus", + "Exif.NikonAf2.AFPointsUsed", + "Exif.NikonAf2.PrimaryAFPoint", + "Exif.OlympusFi.AFPoint", + "Exif.Pentax.AFPoint", + "Exif.Pentax.AFPointInFocus", + "Exif.PentaxDng.AFPoint", + "Exif.PentaxDng.AFPointInFocus", + "Exif.Sony1Cs.LocalAFAreaPoint", + "Exif.Sony2Cs.LocalAFAreaPoint", + "Exif.Sony1Cs2.LocalAFAreaPoint", + "Exif.Sony2Cs2.LocalAFAreaPoint", + "Exif.Sony1MltCsA100.LocalAFAreaPoint", + "Exif.Casio.AFPoint", + "Exif.Casio2.AFPointPosition" + }; + return findMetadatum(ed, keys, EXV_COUNTOF(keys)); + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/epsimage.cpp b/vendor/exiv2-0.25/src/epsimage.cpp new file mode 100644 index 0000000..4e4a468 --- /dev/null +++ b/vendor/exiv2-0.25/src/epsimage.cpp @@ -0,0 +1,1191 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: epsimage.cpp + Version: $Rev: 2455 $ + Author(s): Michael Ulbrich (mul) + Volker Grabsch (vog) + History: 7-Mar-2011, vog: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: epsimage.cpp $") + +// included header files +#include "config.h" + +#include "epsimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +namespace { + + using namespace Exiv2; + + // signature of DOS EPS + const std::string dosEpsSignature = "\xC5\xD0\xD3\xC6"; + + // first line of EPS + const std::string epsFirstLine[] = { + "%!PS-Adobe-3.0 EPSF-3.0", + "%!PS-Adobe-3.0 EPSF-3.0 ", // OpenOffice + "%!PS-Adobe-3.1 EPSF-3.0", // Illustrator + }; + + // blank EPS file + const std::string epsBlank = "%!PS-Adobe-3.0 EPSF-3.0\n" + "%%BoundingBox: 0 0 0 0\n"; + + // list of all valid XMP headers + const std::string xmpHeaders[] = { + + // We do not enforce the trailing "?>" here, because the XMP specification + // permits additional attributes after begin="..." and id="...". + + // normal headers + "" here, because the XMP specification + // permits additional attributes after end="...". + + {""; + + //! Write data into temp file, taking care of errors + void writeTemp(BasicIo& tempIo, const byte* data, size_t size) + { + if (size == 0) return; + if (tempIo.write(data, static_cast(size)) != static_cast(size)) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to write to temporary file.\n"; + #endif + throw Error(21); + } + } + + //! Write data into temp file, taking care of errors + void writeTemp(BasicIo& tempIo, const std::string &data) + { + writeTemp(tempIo, reinterpret_cast(data.data()), data.size()); + } + + //! Get the current write position of temp file, taking care of errors + uint32_t posTemp(BasicIo& tempIo) + { + const long pos = tempIo.tell(); + if (pos == -1) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Internal error while determining current write position in temporary file.\n"; + #endif + throw Error(21); + } + return static_cast(pos); + } + + //! Check whether a string has a certain beginning + bool startsWith(const std::string& s, const std::string& start) + { + return s.size() >= start.size() && memcmp(s.data(), start.data(), start.size()) == 0; + } + + //! Check whether a string contains only white space characters + bool onlyWhitespaces(const std::string& s) + { + // According to the DSC 3.0 specification, 4.4 Parsing Rules, + // only spaces and tabs are considered to be white space characters. + return s.find_first_not_of(" \t") == std::string::npos; + } + + //! Read the next line of a buffer, allow for changing line ending style + size_t readLine(std::string& line, const byte* data, size_t startPos, size_t size) + { + line.clear(); + size_t pos = startPos; + // step through line + while (pos < size && data[pos] != '\r' && data[pos] != '\n') { + line += data[pos]; + pos++; + } + // skip line ending, if present + if (pos >= size) return pos; + pos++; + if (pos >= size) return pos; + if (data[pos - 1] == '\r' && data[pos] == '\n') pos++; + return pos; + } + + //! Read the previous line of a buffer, allow for changing line ending style + size_t readPrevLine(std::string& line, const byte* data, size_t startPos, size_t size) + { + line.clear(); + size_t pos = startPos; + if (pos > size) return pos; + // skip line ending of previous line, if present + if (pos <= 0) return pos; + if (data[pos - 1] == '\r' || data[pos - 1] == '\n') { + pos--; + if (pos <= 0) return pos; + if (data[pos - 1] == '\r' && data[pos] == '\n') { + pos--; + if (pos <= 0) return pos; + } + } + // step through previous line + while (pos >= 1 && data[pos - 1] != '\r' && data[pos - 1] != '\n') { + pos--; + line += data[pos]; + } + std::reverse(line.begin(), line.end()); + return pos; + } + + //! Find an XMP block + void findXmp(size_t& xmpPos, size_t& xmpSize, const byte* data, size_t startPos, size_t size, bool write) + { + // search for valid XMP header + xmpSize = 0; + for (xmpPos = startPos; xmpPos < size; xmpPos++) { + if (data[xmpPos] != '\x00' && data[xmpPos] != '<') continue; + for (size_t i = 0; i < (sizeof xmpHeaders) / (sizeof *xmpHeaders); i++) { + const std::string &header = xmpHeaders[i]; + if (xmpPos + header.size() > size) continue; + if (memcmp(data + xmpPos, header.data(), header.size()) != 0) continue; + #ifdef DEBUG + EXV_DEBUG << "findXmp: Found XMP header at position: " << xmpPos << "\n"; + #endif + + // search for valid XMP trailer + for (size_t trailerPos = xmpPos + header.size(); trailerPos < size; trailerPos++) { + if (data[xmpPos] != '\x00' && data[xmpPos] != '<') continue; + for (size_t j = 0; j < (sizeof xmpTrailers) / (sizeof *xmpTrailers); j++) { + const std::string &trailer = xmpTrailers[j].trailer; + const bool readOnly = xmpTrailers[j].readOnly; + + if (trailerPos + trailer.size() > size) continue; + if (memcmp(data + trailerPos, trailer.data(), trailer.size()) != 0) continue; + #ifdef DEBUG + EXV_DEBUG << "findXmp: Found XMP trailer at position: " << trailerPos << "\n"; + #endif + + if (readOnly) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to handle read-only XMP metadata yet. Please provide your " + "sample EPS file to the Exiv2 project: http://dev.exiv2.org/projects/exiv2\n"; + #endif + throw Error(write ? 21 : 14); + } + + // search for end of XMP trailer + for (size_t trailerEndPos = trailerPos + trailer.size(); trailerEndPos + xmpTrailerEnd.size() <= size; trailerEndPos++) { + if (memcmp(data + trailerEndPos, xmpTrailerEnd.data(), xmpTrailerEnd.size()) == 0) { + xmpSize = (trailerEndPos + xmpTrailerEnd.size()) - xmpPos; + return; + } + } + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Found XMP header but incomplete XMP trailer.\n"; + #endif + throw Error(write ? 21 : 14); + } + } + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Found XMP header but no XMP trailer.\n"; + #endif + throw Error(write ? 21 : 14); + } + } + } + + //! Unified implementation of reading and writing EPS metadata + void readWriteEpsMetadata(BasicIo& io, std::string& xmpPacket, NativePreviewList& nativePreviews, bool write) + { + // open input file + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + IoCloser closer(io); + + // read from input file via memory map + const byte *data = io.mmap(); + + // default positions and sizes + const size_t size = static_cast(io.size()); + size_t posEps = 0; + size_t posEndEps = size; + uint32_t posWmf = 0; + uint32_t sizeWmf = 0; + uint32_t posTiff = 0; + uint32_t sizeTiff = 0; + + // check for DOS EPS + const bool dosEps = (size >= dosEpsSignature.size() && memcmp(data, dosEpsSignature.data(), dosEpsSignature.size()) == 0); + if (dosEps) { + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found DOS EPS signature\n"; + #endif + if (size < 30) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Premature end of file after DOS EPS signature.\n"; + #endif + throw Error(write ? 21 : 14); + } + posEps = getULong(data + 4, littleEndian); + posEndEps = getULong(data + 8, littleEndian) + posEps; + posWmf = getULong(data + 12, littleEndian); + sizeWmf = getULong(data + 16, littleEndian); + posTiff = getULong(data + 20, littleEndian); + sizeTiff = getULong(data + 24, littleEndian); + const uint16_t checksum = getUShort(data + 28, littleEndian); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: EPS section at position " << posEps << ", size " << (posEndEps - posEps) << "\n"; + EXV_DEBUG << "readWriteEpsMetadata: WMF section at position " << posWmf << ", size " << sizeWmf << "\n"; + EXV_DEBUG << "readWriteEpsMetadata: TIFF section at position " << posTiff << ", size " << sizeTiff << "\n"; + #endif + if (checksum != 0xFFFF) { + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: DOS EPS checksum is not FFFF\n"; + #endif + } + if (!((posWmf == 0 && sizeWmf == 0) || (posTiff == 0 && sizeTiff == 0))) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has both WMF and TIFF section. Only one of those is allowed.\n"; + #endif + if (write) throw Error(21); + } + if (sizeWmf == 0 && sizeTiff == 0) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has neither WMF nor TIFF section. Exactly one of those is required.\n"; + #endif + if (write) throw Error(21); + } + if (posEps < 30 || posEndEps > size) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has invalid position (" << posEps << ") or size (" << (posEndEps - posEps) << ") for EPS section.\n"; + #endif + throw Error(write ? 21 : 14); + } + if (sizeWmf != 0 && (posWmf < 30 || posWmf + sizeWmf > size)) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has invalid position (" << posWmf << ") or size (" << sizeWmf << ") for WMF section.\n"; + #endif + if (write) throw Error(21); + } + if (sizeTiff != 0 && (posTiff < 30 || posTiff + sizeTiff > size)) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "DOS EPS file has invalid position (" << posTiff << ") or size (" << sizeTiff << ") for TIFF section.\n"; + #endif + if (write) throw Error(21); + } + } + + // check first line + std::string firstLine; + const size_t posSecondLine = readLine(firstLine, data, posEps, posEndEps); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: First line: " << firstLine << "\n"; + #endif + bool matched = false; + for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { + matched = (firstLine == epsFirstLine[i]); + } + if (!matched) { + throw Error(3, "EPS"); + } + + // determine line ending style of the first line + if (posSecondLine >= posEndEps) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Premature end of file after first line.\n"; + #endif + throw Error(write ? 21 : 14); + } + const std::string lineEnding(reinterpret_cast(data + posEps + firstLine.size()), posSecondLine - (posEps + firstLine.size())); + #ifdef DEBUG + if (lineEnding == "\n") { + EXV_DEBUG << "readWriteEpsMetadata: Line ending style: Unix (LF)\n"; + } else if (lineEnding == "\r") { + EXV_DEBUG << "readWriteEpsMetadata: Line ending style: Mac (CR)\n"; + } else if (lineEnding == "\r\n") { + EXV_DEBUG << "readWriteEpsMetadata: Line ending style: DOS (CR LF)\n"; + } else { + EXV_DEBUG << "readWriteEpsMetadata: Line ending style: (unknown)\n"; + } + #endif + + // scan comments + size_t posLanguageLevel = posEndEps; + size_t posContainsXmp = posEndEps; + size_t posPages = posEndEps; + size_t posExiv2Version = posEndEps; + size_t posExiv2Website = posEndEps; + size_t posEndComments = posEndEps; + size_t posAi7Thumbnail = posEndEps; + size_t posAi7ThumbnailEndData = posEndEps; + size_t posBeginPhotoshop = posEndEps; + size_t posEndPhotoshop = posEndEps; + size_t posPage = posEndEps; + size_t posBeginPageSetup = posEndEps; + size_t posEndPageSetup = posEndEps; + size_t posPageTrailer = posEndEps; + size_t posEof = posEndEps; + std::vector > removableEmbeddings; + unsigned int depth = 0; + const unsigned int maxDepth = UINT_MAX; + bool illustrator8 = false; + bool corelDraw = false; + bool implicitPage = false; + bool implicitPageSetup = false; + bool implicitPageTrailer = false; + bool inDefaultsPreviewPrologSetup = false; + bool inRemovableEmbedding = false; + std::string removableEmbeddingEndLine; + unsigned int removableEmbeddingsWithUnmarkedTrailer = 0; + for (size_t pos = posEps; pos < posEof;) { + const size_t startPos = pos; + std::string line; + pos = readLine(line, data, startPos, posEndEps); + #ifdef DEBUG + bool significantLine = true; + #endif + // nested documents + if (posPage == posEndEps && (startsWith(line, "%%IncludeDocument:") || startsWith(line, "%%BeginDocument:"))) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Nested document at invalid position: " << startPos << "\n"; + #endif + throw Error(write ? 21 : 14); + } else if (startsWith(line, "%%BeginDocument:")) { + if (depth == maxDepth) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Document too deeply nested at position: " << startPos << "\n"; + #endif + throw Error(write ? 21 : 14); + } + depth++; + } else if (startsWith(line, "%%EndDocument")) { + if (depth == 0) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unmatched EndDocument at position: " << startPos << "\n"; + #endif + throw Error(write ? 21 : 14); + } + depth--; + } else { + #ifdef DEBUG + significantLine = false; + #endif + } + #ifdef DEBUG + if (significantLine) { + EXV_DEBUG << "readWriteEpsMetadata: Found significant line \"" << line << "\" at position: " << startPos << "\n"; + } + significantLine = true; + #endif + if (depth != 0) continue; + // explicit "Begin" comments + if (startsWith(line, "%%BeginPreview:")) { + inDefaultsPreviewPrologSetup = true; + } else if (line == "%%BeginDefaults") { + inDefaultsPreviewPrologSetup = true; + } else if (line == "%%BeginProlog") { + inDefaultsPreviewPrologSetup = true; + } else if (line == "%%BeginSetup") { + inDefaultsPreviewPrologSetup = true; + } else if (posPage == posEndEps && startsWith(line, "%%Page:")) { + posPage = startPos; + } else if (posPage != posEndEps && startsWith(line, "%%Page:")) { + if (implicitPage) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Page at position " << startPos << " conflicts with implicit page at position: " << posPage << "\n"; + #endif + throw Error(write ? 21 : 14); + } + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to handle multiple PostScript pages. Found second page at position: " << startPos << "\n"; + #endif + throw Error(write ? 21 : 14); + } else if (line == "%%BeginPageSetup") { + posBeginPageSetup = startPos; + } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: Before %%EndPageSetup") { + inRemovableEmbedding = true; + removableEmbeddings.push_back(std::make_pair(startPos, startPos)); + removableEmbeddingEndLine = "%Exiv2EndXMP"; + } else if (!inRemovableEmbedding && line == "%Exiv2BeginXMP: After %%PageTrailer") { + inRemovableEmbedding = true; + removableEmbeddings.push_back(std::make_pair(startPos, startPos)); + removableEmbeddingEndLine = "%Exiv2EndXMP"; + } else if (!inRemovableEmbedding && line == "%ADOBeginClientInjection: PageSetup End \"AI11EPS\"") { + inRemovableEmbedding = true; + removableEmbeddings.push_back(std::make_pair(startPos, startPos)); + removableEmbeddingEndLine = "%ADOEndClientInjection: PageSetup End \"AI11EPS\""; + } else if (!inRemovableEmbedding && line == "%ADOBeginClientInjection: PageTrailer Start \"AI11EPS\"") { + inRemovableEmbedding = true; + removableEmbeddings.push_back(std::make_pair(startPos, startPos)); + removableEmbeddingEndLine = "%ADOEndClientInjection: PageTrailer Start \"AI11EPS\""; + } else if (!inRemovableEmbedding && line == "%begin_xml_code") { + inRemovableEmbedding = true; + removableEmbeddings.push_back(std::make_pair(startPos, startPos)); + removableEmbeddingEndLine = "%end_xml_code"; + removableEmbeddingsWithUnmarkedTrailer++; + } else { + #ifdef DEBUG + significantLine = false; + #endif + } + #ifdef DEBUG + if (significantLine) { + EXV_DEBUG << "readWriteEpsMetadata: Found significant line \"" << line << "\" at position: " << startPos << "\n"; + } + significantLine = true; + #endif + // implicit comments + if (line == "%%EOF" || line == "%begin_xml_code" || !(line.size() >= 2 && line[0] == '%' && '\x21' <= line[1] && line[1] <= '\x7e')) { + if (posEndComments == posEndEps) { + posEndComments = startPos; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndComments at position: " << startPos << "\n"; + #endif + } + } + if (posPage == posEndEps && posEndComments != posEndEps && !inDefaultsPreviewPrologSetup && !inRemovableEmbedding && !onlyWhitespaces(line)) { + posPage = startPos; + implicitPage = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit Page at position: " << startPos << "\n"; + #endif + } + if (posBeginPageSetup == posEndEps && (implicitPage || (posPage != posEndEps && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%'))) { + posBeginPageSetup = startPos; + implicitPageSetup = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup at position: " << startPos << "\n"; + #endif + } + if (posEndPageSetup == posEndEps && implicitPageSetup && !inRemovableEmbedding && line.size() >= 1 && line[0] != '%') { + posEndPageSetup = startPos; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; + #endif + } + if (line.size() >= 1 && line[0] != '%') continue; // performance optimization + if (line == "%%EOF" || line == "%%Trailer" || line == "%%PageTrailer") { + if (posBeginPageSetup == posEndEps) { + posBeginPageSetup = startPos; + implicitPageSetup = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit BeginPageSetup at position: " << startPos << "\n"; + #endif + } + if (posEndPageSetup == posEndEps) { + posEndPageSetup = startPos; + implicitPageSetup = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit EndPageSetup at position: " << startPos << "\n"; + #endif + } + } + if (line == "%%EOF" || line == "%%Trailer") { + if (posPageTrailer == posEndEps) { + posPageTrailer = startPos; + implicitPageTrailer = true; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Found implicit PageTrailer at position: " << startPos << "\n"; + #endif + } + } + // remaining explicit comments + if (posEndComments == posEndEps && posLanguageLevel == posEndEps && startsWith(line, "%%LanguageLevel:")) { + posLanguageLevel = startPos; + } else if (posEndComments == posEndEps && posContainsXmp == posEndEps && startsWith(line, "%ADO_ContainsXMP:")) { + posContainsXmp = startPos; + } else if (posEndComments == posEndEps && posPages == posEndEps && startsWith(line, "%%Pages:")) { + posPages = startPos; + } else if (posEndComments == posEndEps && posExiv2Version == posEndEps && startsWith(line, "%Exiv2Version:")) { + posExiv2Version = startPos; + } else if (posEndComments == posEndEps && posExiv2Website == posEndEps && startsWith(line, "%Exiv2Website:")) { + posExiv2Website = startPos; + } else if (posEndComments == posEndEps && startsWith(line, "%%Creator: Adobe Illustrator") && firstLine == "%!PS-Adobe-3.0 EPSF-3.0") { + illustrator8 = true; + } else if (posEndComments == posEndEps && startsWith(line, "%AI7_Thumbnail:")) { + posAi7Thumbnail = startPos; + } else if (posEndComments == posEndEps && posAi7Thumbnail != posEndEps && posAi7ThumbnailEndData == posEndEps && line == "%%EndData") { + posAi7ThumbnailEndData = startPos; + } else if (posEndComments == posEndEps && line == "%%EndComments") { + posEndComments = startPos; + } else if (inDefaultsPreviewPrologSetup && startsWith(line, "%%BeginResource: procset wCorel")) { + corelDraw = true; + } else if (line == "%%EndPreview") { + inDefaultsPreviewPrologSetup = false; + } else if (line == "%%EndDefaults") { + inDefaultsPreviewPrologSetup = false; + } else if (line == "%%EndProlog") { + inDefaultsPreviewPrologSetup = false; + } else if (line == "%%EndSetup") { + inDefaultsPreviewPrologSetup = false; + } else if (posEndPageSetup == posEndEps && line == "%%EndPageSetup") { + posEndPageSetup = startPos; + } else if (posPageTrailer == posEndEps && line == "%%PageTrailer") { + posPageTrailer = startPos; + } else if (posBeginPhotoshop == posEndEps && startsWith(line, "%BeginPhotoshop:")) { + posBeginPhotoshop = pos; + } else if (posBeginPhotoshop != posEndEps && posEndPhotoshop == posEndEps && line == "%EndPhotoshop") { + posEndPhotoshop = startPos; + } else if (inRemovableEmbedding && line == removableEmbeddingEndLine) { + inRemovableEmbedding = false; + removableEmbeddings.back().second = pos; + } else if (line == "%%EOF") { + posEof = startPos; + } else { + #ifdef DEBUG + significantLine = false; + #endif + } + #ifdef DEBUG + if (significantLine) { + EXV_DEBUG << "readWriteEpsMetadata: Found significant line \"" << line << "\" at position: " << startPos << "\n"; + } + #endif + } + + // check for unfinished nested documents + if (depth != 0) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unmatched BeginDocument (" << depth << "x)\n"; + #endif + throw Error(write ? 21 : 14); + } + + // look for the unmarked trailers of some removable XMP embeddings + size_t posXmpTrailerEnd = posEof; + for (size_t i = 0; i < removableEmbeddingsWithUnmarkedTrailer; i++) { + std::string line1; + const size_t posLine1 = readPrevLine(line1, data, posXmpTrailerEnd, posEndEps); + std::string line2; + const size_t posLine2 = readPrevLine(line2, data, posLine1, posEndEps); + size_t posXmpTrailer; + if (line1 == "[/EMC pdfmark") { // Exiftool style + posXmpTrailer = posLine1; + } else if (line1 == "[/NamespacePop pdfmark" && + line2 == "[{nextImage} 1 dict begin /Metadata {photoshop_metadata_stream} def currentdict end /PUT pdfmark") { // Photoshop style + posXmpTrailer = posLine2; + } else { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to find XMP embedding trailer ending at position: " << posXmpTrailerEnd << "\n"; + #endif + if (write) throw Error(21); + break; + } + removableEmbeddings.push_back(std::make_pair(posXmpTrailer, posXmpTrailerEnd)); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Recognized unmarked trailer of removable XMP embedding at " + "[" << removableEmbeddings.back().first << "," << removableEmbeddings.back().second << ")" + "\n"; + #endif + posXmpTrailerEnd = posXmpTrailer; + } + + // interpret comment "%ADO_ContainsXMP:" + std::string line; + readLine(line, data, posContainsXmp, posEndEps); + bool containsXmp; + if (line == "%ADO_ContainsXMP: MainFirst" || line == "%ADO_ContainsXMP:MainFirst") { + containsXmp = true; + } else if (line == "" || line == "%ADO_ContainsXMP: NoMain" || line == "%ADO_ContainsXMP:NoMain") { + containsXmp = false; + } else { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Invalid line \"" << line << "\" at position: " << posContainsXmp << "\n"; + #endif + throw Error(write ? 21 : 14); + } + + const bool deleteXmp = (write && xmpPacket.size() == 0); + bool fixBeginXmlPacket = false; + bool useFlexibleEmbedding = false; + size_t xmpPos = posEndEps; + size_t xmpSize = 0; + if (containsXmp) { + // search for XMP metadata + findXmp(xmpPos, xmpSize, data, posEps, posEndEps, write); + if (xmpPos == posEndEps) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to find XMP metadata as announced at position: " << posContainsXmp << "\n"; + #endif + } + // check embedding of XMP metadata + const size_t posLineAfterXmp = readLine(line, data, xmpPos + xmpSize, posEndEps); + if (line != "") { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unexpected " << line.size() << " bytes of data after XMP at position: " << (xmpPos + xmpSize) << "\n"; + #endif + } else if (!deleteXmp) { + readLine(line, data, posLineAfterXmp, posEndEps); + if (line == "% &&end XMP packet marker&&" || line == "% &&end XMP packet marker&&") { + useFlexibleEmbedding = true; + } + } + } + if (useFlexibleEmbedding) { + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Using flexible XMP embedding\n"; + #endif + const size_t posBeginXmlPacket = readPrevLine(line, data, xmpPos, posEndEps); + if (startsWith(line, "%begin_xml_packet:")) { + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: XMP embedding contains %begin_xml_packet\n"; + #endif + if (write) { + fixBeginXmlPacket = true; + xmpSize += (xmpPos - posBeginXmlPacket); + xmpPos = posBeginXmlPacket; + } + } else if (posBeginPhotoshop != posEndEps) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Missing %begin_xml_packet in Photoshop EPS at position: " << xmpPos << "\n"; + #endif + if (write) throw Error(21); + } + } + if (!useFlexibleEmbedding) { + // check if there are irremovable XMP metadata blocks before EndPageSetup + size_t posOtherXmp = containsXmp ? xmpPos : posEps; + size_t sizeOtherXmp = 0; + for (;;) { + findXmp(posOtherXmp, sizeOtherXmp, data, posOtherXmp + sizeOtherXmp, posEndPageSetup, write); + if (posOtherXmp >= posEndPageSetup) break; + bool isRemovableEmbedding = false; + for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { + if (e->first <= posOtherXmp && posOtherXmp < e->second) { + isRemovableEmbedding = true; + break; + } + } + if (!isRemovableEmbedding) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "XMP metadata block is not removable at position: " << posOtherXmp << "\n"; + #endif + if (write) throw Error(21); + break; + } + } + } + + if (!write) { + // copy XMP metadata + xmpPacket.assign(reinterpret_cast(data + xmpPos), xmpSize); + + // native previews + nativePreviews.clear(); + if (posAi7ThumbnailEndData != posEndEps) { + NativePreview nativePreview; + std::string dummy; + std::string lineAi7Thumbnail; + const size_t posBeginData = readLine(lineAi7Thumbnail, data, posAi7Thumbnail, posEndEps); + std::istringstream lineStreamAi7Thumbnail(lineAi7Thumbnail); + lineStreamAi7Thumbnail >> dummy; + lineStreamAi7Thumbnail >> nativePreview.width_; + lineStreamAi7Thumbnail >> nativePreview.height_; + std::string depth; + lineStreamAi7Thumbnail >> depth; + std::string lineBeginData; + const size_t posAfterBeginData = readLine(lineBeginData, data, posBeginData, posEndEps); + std::istringstream lineStreamBeginData(lineBeginData); + std::string beginData; + lineStreamBeginData >> beginData; + lineStreamBeginData >> dummy; + std::string type; + lineStreamBeginData >> type; + nativePreview.position_ = static_cast(posAfterBeginData); + nativePreview.size_ = static_cast(posAi7ThumbnailEndData - posAfterBeginData); + nativePreview.filter_ = "hex-ai7thumbnail-pnm"; + nativePreview.mimeType_ = "image/x-portable-anymap"; + if (depth != "8") { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to handle Illustrator thumbnail depth: " << depth << "\n"; + #endif + } else if (beginData != "%%BeginData:") { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to handle Illustrator thumbnail data section: " << lineBeginData << "\n"; + #endif + } else if (type != "Hex") { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to handle Illustrator thumbnail data type: " << type << "\n"; + #endif + } else { + nativePreviews.push_back(nativePreview); + } + } + if (posEndPhotoshop != posEndEps) { + NativePreview nativePreview; + nativePreview.position_ = static_cast(posBeginPhotoshop); + nativePreview.size_ = static_cast(posEndPhotoshop - posBeginPhotoshop); + nativePreview.width_ = 0; + nativePreview.height_ = 0; + nativePreview.filter_ = "hex-irb"; + nativePreview.mimeType_ = "image/jpeg"; + nativePreviews.push_back(nativePreview); + } + if (sizeWmf != 0) { + NativePreview nativePreview; + nativePreview.position_ = static_cast(posWmf); + nativePreview.size_ = sizeWmf; + nativePreview.width_ = 0; + nativePreview.height_ = 0; + nativePreview.filter_ = ""; + nativePreview.mimeType_ = "image/x-wmf"; + nativePreviews.push_back(nativePreview); + } + if (sizeTiff != 0) { + NativePreview nativePreview; + nativePreview.position_ = static_cast(posTiff); + nativePreview.size_ = sizeTiff; + nativePreview.width_ = 0; + nativePreview.height_ = 0; + nativePreview.filter_ = ""; + nativePreview.mimeType_ = "image/tiff"; + nativePreviews.push_back(nativePreview); + } + } else { + // check for Adobe Illustrator 8.0 or older + if (illustrator8) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to write to EPS files created by Adobe Illustrator 8.0 or older.\n"; + #endif + throw Error(21); + } + + // create temporary output file + BasicIo::AutoPtr tempIo(io.temporary()); + assert (tempIo.get() != 0); + if (!tempIo->isopen()) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unable to create temporary file for writing.\n"; + #endif + throw Error(21); + } + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Created temporary file " << tempIo->path() << "\n"; + #endif + + // sort all positions + std::vector positions; + positions.push_back(posLanguageLevel); + positions.push_back(posContainsXmp); + positions.push_back(posPages); + positions.push_back(posExiv2Version); + positions.push_back(posExiv2Website); + positions.push_back(posEndComments); + positions.push_back(posPage); + positions.push_back(posBeginPageSetup); + positions.push_back(posEndPageSetup); + positions.push_back(posPageTrailer); + positions.push_back(posEof); + positions.push_back(posEndEps); + if (useFlexibleEmbedding) { + positions.push_back(xmpPos); + } + for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { + positions.push_back(e->first); + } + std::sort(positions.begin(), positions.end()); + + // assemble result EPS document + if (dosEps) { + // DOS EPS header will be written afterwards + writeTemp(*tempIo, std::string(30, '\x00')); + } + const std::string containsXmpLine = deleteXmp ? "%ADO_ContainsXMP: NoMain" : "%ADO_ContainsXMP: MainFirst"; + const uint32_t posEpsNew = posTemp(*tempIo); + size_t prevPos = posEps; + size_t prevSkipPos = prevPos; + for (std::vector::const_iterator i = positions.begin(); i != positions.end(); i++) { + const size_t pos = *i; + if (pos == prevPos) continue; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Writing at " << pos << "\n"; + #endif + if (pos < prevSkipPos) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Internal error while assembling the result EPS document: " + "Unable to continue at position " << pos << " after skipping to position " << prevSkipPos << "\n"; + #endif + throw Error(21); + } + writeTemp(*tempIo, data + prevSkipPos, pos - prevSkipPos); + const size_t posLineEnd = readLine(line, data, pos, posEndEps); + size_t skipPos = pos; + // add last line ending if necessary + if (pos == posEndEps && pos >= 1 && data[pos - 1] != '\r' && data[pos - 1] != '\n') { + writeTemp(*tempIo, lineEnding); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Added missing line ending of last line\n"; + #endif + } + // update and complement DSC comments + if (pos == posLanguageLevel && posLanguageLevel != posEndEps && !deleteXmp && !useFlexibleEmbedding) { + if (line == "%%LanguageLevel:1" || line == "%%LanguageLevel: 1") { + writeTemp(*tempIo, "%%LanguageLevel: 2" + lineEnding); + skipPos = posLineEnd; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } + } + if (pos == posContainsXmp && posContainsXmp != posEndEps) { + if (line != containsXmpLine) { + writeTemp(*tempIo, containsXmpLine + lineEnding); + skipPos = posLineEnd; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } + } + if (pos == posExiv2Version && posExiv2Version != posEndEps) { + writeTemp(*tempIo, "%Exiv2Version: " + versionNumberHexString() + lineEnding); + skipPos = posLineEnd; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } + if (pos == posExiv2Website && posExiv2Website != posEndEps) { + writeTemp(*tempIo, "%Exiv2Website: http://www.exiv2.org/" + lineEnding); + skipPos = posLineEnd; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } + if (pos == posEndComments) { + if (posLanguageLevel == posEndEps && !deleteXmp && !useFlexibleEmbedding) { + writeTemp(*tempIo, "%%LanguageLevel: 2" + lineEnding); + } + if (posContainsXmp == posEndEps) { + writeTemp(*tempIo, containsXmpLine + lineEnding); + } + if (posPages == posEndEps) { + writeTemp(*tempIo, "%%Pages: 1" + lineEnding); + } + if (posExiv2Version == posEndEps) { + writeTemp(*tempIo, "%Exiv2Version: " + versionNumberHexString() + lineEnding); + } + if (posExiv2Website == posEndEps) { + writeTemp(*tempIo, "%Exiv2Website: http://www.exiv2.org/" + lineEnding); + } + readLine(line, data, posEndComments, posEndEps); + if (line != "%%EndComments") { + writeTemp(*tempIo, "%%EndComments" + lineEnding); + } + } + if (pos == posPage) { + if (!startsWith(line, "%%Page:")) { + writeTemp(*tempIo, "%%Page: 1 1" + lineEnding); + writeTemp(*tempIo, "%%EndPageComments" + lineEnding); + } + } + if (pos == posBeginPageSetup) { + if (line != "%%BeginPageSetup") { + writeTemp(*tempIo, "%%BeginPageSetup" + lineEnding); + } + } + if (useFlexibleEmbedding) { + // insert XMP metadata into existing flexible embedding + if (pos == xmpPos) { + if (fixBeginXmlPacket) { + writeTemp(*tempIo, "%begin_xml_packet: " + toString(xmpPacket.size()) + lineEnding); + } + writeTemp(*tempIo, xmpPacket); + skipPos += xmpSize; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } + } + if (!useFlexibleEmbedding) { + // remove preceding embedding(s) + for (std::vector >::const_iterator e = removableEmbeddings.begin(); e != removableEmbeddings.end(); e++) { + if (pos == e->first) { + skipPos = e->second; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + break; + } + } + // insert XMP metadata with new flexible embedding, if necessary + if (pos == posEndPageSetup && !deleteXmp) { + writeTemp(*tempIo, "%Exiv2BeginXMP: Before %%EndPageSetup" + lineEnding); + if (corelDraw) { + writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by CorelDRAW." + lineEnding); + writeTemp(*tempIo, "@rs" + lineEnding); + } + if (posBeginPhotoshop != posEndEps) { + writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by Photoshop." + lineEnding); + writeTemp(*tempIo, "%begin_xml_code" + lineEnding); + } + writeTemp(*tempIo, "/currentdistillerparams where" + lineEnding); + writeTemp(*tempIo, "{pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse" + lineEnding); + writeTemp(*tempIo, "{userdict /Exiv2_pdfmark /cleartomark load put" + lineEnding); + writeTemp(*tempIo, " userdict /Exiv2_metafile_pdfmark {flushfile cleartomark} bind put}" + lineEnding); + writeTemp(*tempIo, "{userdict /Exiv2_pdfmark /pdfmark load put" + lineEnding); + writeTemp(*tempIo, " userdict /Exiv2_metafile_pdfmark {/PUT pdfmark} bind put} ifelse" + lineEnding); + writeTemp(*tempIo, "[/NamespacePush Exiv2_pdfmark" + lineEnding); + writeTemp(*tempIo, "[/_objdef {Exiv2_metadata_stream} /type /stream /OBJ Exiv2_pdfmark" + lineEnding); + writeTemp(*tempIo, "[{Exiv2_metadata_stream} 2 dict begin" + lineEnding); + writeTemp(*tempIo, " /Type /Metadata def /Subtype /XML def currentdict end /PUT Exiv2_pdfmark" + lineEnding); + writeTemp(*tempIo, "[{Exiv2_metadata_stream}" + lineEnding); + writeTemp(*tempIo, " currentfile 0 (% &&end XMP packet marker&&)" + lineEnding); + writeTemp(*tempIo, " /SubFileDecode filter Exiv2_metafile_pdfmark" + lineEnding); + if (posBeginPhotoshop != posEndEps) { + writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by Photoshop. " + "Parameter must be exact size of XMP metadata." + lineEnding); + writeTemp(*tempIo, "%begin_xml_packet: " + toString(xmpPacket.size()) + lineEnding); + } + writeTemp(*tempIo, xmpPacket); + writeTemp(*tempIo, lineEnding); + writeTemp(*tempIo, "% &&end XMP packet marker&&" + lineEnding); + writeTemp(*tempIo, "[/Document 1 dict begin" + lineEnding); + writeTemp(*tempIo, " /Metadata {Exiv2_metadata_stream} def currentdict end /BDC Exiv2_pdfmark" + lineEnding); + if (posBeginPhotoshop != posEndEps) { + writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by Photoshop." + lineEnding); + writeTemp(*tempIo, "%end_xml_code" + lineEnding); + } + if (corelDraw) { + writeTemp(*tempIo, "%Exiv2Notice: The following line is needed by CorelDRAW." + lineEnding); + writeTemp(*tempIo, "@sv" + lineEnding); + } + writeTemp(*tempIo, "%Exiv2EndXMP" + lineEnding); + } + } + if (pos == posEndPageSetup) { + if (line != "%%EndPageSetup") { + writeTemp(*tempIo, "%%EndPageSetup" + lineEnding); + } + } + if (!useFlexibleEmbedding) { + if (pos == posPageTrailer && !deleteXmp) { + if (!implicitPageTrailer) { + skipPos = posLineEnd; + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: Skipping to " << skipPos << " at " << __FILE__ << ":" << __LINE__ << "\n"; + #endif + } + writeTemp(*tempIo, "%%PageTrailer" + lineEnding); + writeTemp(*tempIo, "%Exiv2BeginXMP: After %%PageTrailer" + lineEnding); + writeTemp(*tempIo, "[/EMC Exiv2_pdfmark" + lineEnding); + writeTemp(*tempIo, "[/NamespacePop Exiv2_pdfmark" + lineEnding); + writeTemp(*tempIo, "%Exiv2EndXMP" + lineEnding); + } + } + // add EOF comment if necessary + if (pos == posEndEps && posEof == posEndEps) { + writeTemp(*tempIo, "%%EOF" + lineEnding); + } + prevPos = pos; + prevSkipPos = skipPos; + } + const uint32_t posEndEpsNew = posTemp(*tempIo); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: New EPS size: " << (posEndEpsNew - posEpsNew) << "\n"; + #endif + if (dosEps) { + // write WMF and/or TIFF section if present + writeTemp(*tempIo, data + posWmf, sizeWmf); + writeTemp(*tempIo, data + posTiff, sizeTiff); + #ifdef DEBUG + EXV_DEBUG << "readWriteEpsMetadata: New DOS EPS total size: " << posTemp(*tempIo) << "\n"; + #endif + // write DOS EPS header + if (tempIo->seek(0, BasicIo::beg) != 0) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Internal error while seeking in temporary file.\n"; + #endif + throw Error(21); + } + byte dosEpsHeader[30]; + dosEpsSignature.copy(reinterpret_cast(dosEpsHeader), dosEpsSignature.size()); + ul2Data(dosEpsHeader + 4, posEpsNew, littleEndian); + ul2Data(dosEpsHeader + 8, posEndEpsNew - posEpsNew, littleEndian); + ul2Data(dosEpsHeader + 12, sizeWmf == 0 ? 0 : posEndEpsNew, littleEndian); + ul2Data(dosEpsHeader + 16, sizeWmf, littleEndian); + ul2Data(dosEpsHeader + 20, sizeTiff == 0 ? 0 : posEndEpsNew + sizeWmf, littleEndian); + ul2Data(dosEpsHeader + 24, sizeTiff, littleEndian); + us2Data(dosEpsHeader + 28, 0xFFFF, littleEndian); + writeTemp(*tempIo, dosEpsHeader, sizeof(dosEpsHeader)); + } + + // copy temporary file to real output file + io.close(); + io.transfer(*tempIo); + } + } + +} // namespace + +// ***************************************************************************** +// class member definitions +namespace Exiv2 +{ + + EpsImage::EpsImage(BasicIo::AutoPtr io, bool create) + : Image(ImageType::eps, mdXmp, io) + { + //LogMsg::setLevel(LogMsg::debug); + if (create) { + if (io_->open() == 0) { + #ifdef DEBUG + EXV_DEBUG << "Exiv2::EpsImage:: Creating blank EPS image\n"; + #endif + IoCloser closer(*io_); + if (io_->write(reinterpret_cast(epsBlank.data()), static_cast(epsBlank.size())) != static_cast(epsBlank.size())) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to write blank EPS image.\n"; + #endif + throw Error(21); + } + } + } + } + + std::string EpsImage::mimeType() const + { + return "application/postscript"; + } + + void EpsImage::setComment(const std::string& /*comment*/) + { + throw Error(32, "Image comment", "EPS"); + } + + void EpsImage::readMetadata() + { + #ifdef DEBUG + EXV_DEBUG << "Exiv2::EpsImage::readMetadata: Reading EPS file " << io_->path() << "\n"; + #endif + + // read metadata + readWriteEpsMetadata(*io_, xmpPacket_, nativePreviews_, /* write = */ false); + + // decode XMP metadata + if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_) > 1) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; + #endif + throw Error(14); + } + + #ifdef DEBUG + EXV_DEBUG << "Exiv2::EpsImage::readMetadata: Finished reading EPS file " << io_->path() << "\n"; + #endif + } + + void EpsImage::writeMetadata() + { + #ifdef DEBUG + EXV_DEBUG << "Exiv2::EpsImage::writeMetadata: Writing EPS file " << io_->path() << "\n"; + #endif + + // encode XMP metadata if necessary + if (!writeXmpFromPacket() && XmpParser::encode(xmpPacket_, xmpData_) > 1) { + #ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to encode XMP metadata.\n"; + #endif + throw Error(21); + } + + // write metadata + readWriteEpsMetadata(*io_, xmpPacket_, nativePreviews_, /* write = */ true); + + #ifdef DEBUG + EXV_DEBUG << "Exiv2::EpsImage::writeMetadata: Finished writing EPS file " << io_->path() << "\n"; + #endif + } + + // ************************************************************************* + // free functions + Image::AutoPtr newEpsInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new EpsImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isEpsType(BasicIo& iIo, bool advance) + { + // read as many bytes as needed for the longest (DOS) EPS signature + long bufSize = static_cast(dosEpsSignature.size()); + for (size_t i = 0; i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { + if (bufSize < static_cast(epsFirstLine[i].size())) { + bufSize = static_cast(epsFirstLine[i].size()); + } + } + DataBuf buf = iIo.read(bufSize); + if (iIo.error() || buf.size_ != bufSize) { + return false; + } + // check for all possible (DOS) EPS signatures + bool matched = (memcmp(buf.pData_, dosEpsSignature.data(), dosEpsSignature.size()) == 0); + for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { + matched = (memcmp(buf.pData_, epsFirstLine[i].data(), epsFirstLine[i].size()) == 0); + } + // seek back if possible and requested + if (!advance || !matched) { + iIo.seek(-buf.size_, BasicIo::cur); + } + return matched; + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/error.cpp b/vendor/exiv2-0.25/src/error.cpp new file mode 100644 index 0000000..edbb0c0 --- /dev/null +++ b/vendor/exiv2-0.25/src/error.cpp @@ -0,0 +1,211 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: error.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 02-Apr-05, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: error.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "error.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +namespace { + + //! Helper structure defining an error message. + struct ErrMsg { + //! Comparison operator + bool operator==(int code) const { return code_ == code; } + + int code_; //!< Error code + const char* message_; //!< Error message + }; + + //! Complete list of Exiv2 exception error messages + const ErrMsg errList[] = { + { -1, N_("Error %0: arg2=%2, arg3=%3, arg1=%1.") }, + { 0, N_("Success") }, + { 1, "%1" }, // %1=error message + { 2, "%1: Call to `%3' failed: %2" }, // %1=path, %2=strerror, %3=function that failed + { 3, N_("This does not look like a %1 image") }, // %1=Image type + { 4, N_("Invalid dataset name `%1'") }, // %1=dataset name + { 5, N_("Invalid record name `%1'") }, // %1=record name + { 6, N_("Invalid key `%1'") }, // %1=key + { 7, N_("Invalid tag name or ifdId `%1', ifdId %2") }, // %1=tag name, %2=ifdId + { 8, N_("Value not set") }, + { 9, N_("%1: Failed to open the data source: %2") }, // %1=path, %2=strerror + { 10, N_("%1: Failed to open file (%2): %3") }, // %1=path, %2=mode, %3=strerror + { 11, N_("%1: The file contains data of an unknown image type") }, // %1=path + { 12, N_("The memory contains data of an unknown image type") }, + { 13, N_("Image type %1 is not supported") }, // %1=image type + { 14, N_("Failed to read image data") }, + { 15, N_("This does not look like a JPEG image") }, + { 16, N_("%1: Failed to map file for reading and writing: %2") }, // %1=path, %2=strerror + { 17, N_("%1: Failed to rename file to %2: %3") }, // %1=old path, %2=new path, %3=strerror + { 18, N_("%1: Transfer failed: %2") }, // %1=path, %2=strerror + { 19, N_("Memory transfer failed: %1") }, // %1=strerror + { 20, N_("Failed to read input data") }, + { 21, N_("Failed to write image") }, + { 22, N_("Input data does not contain a valid image") }, + { 23, N_("Invalid ifdId %1") }, // %1=ifdId + { 24, N_("Entry::setValue: Value too large (tag=%1, size=%2, requested=%3)") }, // %1=tag, %2=dataSize, %3=required size + { 25, N_("Entry::setDataArea: Value too large (tag=%1, size=%2, requested=%3)") }, // %1=tag, %2=dataAreaSize, %3=required size + { 26, N_("Offset out of range") }, + { 27, N_("Unsupported data area offset type") }, + { 28, N_("Invalid charset: `%1'") }, // %1=charset name + { 29, N_("Unsupported date format") }, + { 30, N_("Unsupported time format") }, + { 31, N_("Writing to %1 images is not supported") }, // %1=image format + { 32, N_("Setting %1 in %2 images is not supported") }, // %1=metadata type, %2=image format + { 33, N_("This does not look like a CRW image") }, + { 34, N_("%1: Not supported") }, // %1=function + { 35, N_("No namespace info available for XMP prefix `%1'") }, // %1=prefix + { 36, N_("No prefix registered for namespace `%2', needed for property path `%1'") }, // %1=namespace + { 37, N_("Size of %1 JPEG segment is larger than 65535 bytes") }, // %1=type of metadata (Exif, IPTC, JPEG comment) + { 38, N_("Unhandled Xmpdatum %1 of type %2") }, // %1=key, %2=value type + { 39, N_("Unhandled XMP node %1 with opt=%2") }, // %1=key, %2=XMP Toolkit option flags + { 40, N_("XMP Toolkit error %1: %2") }, // %1=XMP_Error::GetID(), %2=XMP_Error::GetErrMsg() + { 41, N_("Failed to decode Lang Alt property %1 with opt=%2") }, // %1=property path, %3=XMP Toolkit option flags + { 42, N_("Failed to decode Lang Alt qualifier %1 with opt=%2") }, // %1=qualifier path, %3=XMP Toolkit option flags + { 43, N_("Failed to encode Lang Alt property %1") }, // %1=key + { 44, N_("Failed to determine property name from path %1, namespace %2") }, // %1=property path, %2=namespace + { 45, N_("Schema namespace %1 is not registered with the XMP Toolkit") }, // %1=namespace + { 46, N_("No namespace registered for prefix `%1'") }, // %1=prefix + { 47, N_("Aliases are not supported. Please send this XMP packet to ahuggel@gmx.net `%1', `%2', `%3'") }, // %1=namespace, %2=property path, %3=value + { 48, N_("Invalid XmpText type `%1'") }, // %1=type + { 49, N_("TIFF directory %1 has too many entries") }, // %1=TIFF directory name + { 50, N_("Multiple TIFF array element tags %1 in one directory") }, // %1=tag number + { 51, N_("TIFF array element tag %1 has wrong type") }, // %1=tag number + { 52, N_("%1 has invalid XMP value type `%2'") } // %1=key, %2=value type + }; + +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + LogMsg::Level LogMsg::level_ = LogMsg::warn; // Default output level + LogMsg::Handler LogMsg::handler_ = LogMsg::defaultHandler; + + void LogMsg::defaultHandler(int level, const char* s) + { + switch (static_cast(level)) { + case LogMsg::debug: std::cerr << "Debug: "; break; + case LogMsg::info: std::cerr << "Info: "; break; + case LogMsg::warn: std::cerr << "Warning: "; break; + case LogMsg::error: std::cerr << "Error: "; break; + case LogMsg::mute: assert(false); + } + std::cerr << s; + } + + AnyError::~AnyError() throw() + { + } + + //! @cond IGNORE + template<> + void BasicError::setMsg() + { + std::string msg = _(errMsg(code_)); + std::string::size_type pos; + pos = msg.find("%0"); + if (pos != std::string::npos) { + msg.replace(pos, 2, toString(code_)); + } + if (count_ > 0) { + pos = msg.find("%1"); + if (pos != std::string::npos) { + msg.replace(pos, 2, arg1_); + } + } + if (count_ > 1) { + pos = msg.find("%2"); + if (pos != std::string::npos) { + msg.replace(pos, 2, arg2_); + } + } + if (count_ > 2) { + pos = msg.find("%3"); + if (pos != std::string::npos) { + msg.replace(pos, 2, arg3_); + } + } + msg_ = msg; +#ifdef EXV_UNICODE_PATH + wmsg_ = s2ws(msg); +#endif + } + //! @endcond + +#ifdef EXV_UNICODE_PATH + template<> + void BasicError::setMsg() + { + std::string s = _(errMsg(code_)); + std::wstring wmsg(s.begin(), s.end()); + std::wstring::size_type pos; + pos = wmsg.find(L"%0"); + if (pos != std::wstring::npos) { + wmsg.replace(pos, 2, toBasicString(code_)); + } + if (count_ > 0) { + pos = wmsg.find(L"%1"); + if (pos != std::wstring::npos) { + wmsg.replace(pos, 2, arg1_); + } + } + if (count_ > 1) { + pos = wmsg.find(L"%2"); + if (pos != std::wstring::npos) { + wmsg.replace(pos, 2, arg2_); + } + } + if (count_ > 2) { + pos = wmsg.find(L"%3"); + if (pos != std::wstring::npos) { + wmsg.replace(pos, 2, arg3_); + } + } + wmsg_ = wmsg; + msg_ = ws2s(wmsg); + } +#endif + + const char* errMsg(int code) + { + const ErrMsg* em = find(errList, code); + return em ? em->message_ : ""; + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/exif.cpp b/vendor/exiv2-0.25/src/exif.cpp new file mode 100644 index 0000000..7982ed1 --- /dev/null +++ b/vendor/exiv2-0.25/src/exif.cpp @@ -0,0 +1,945 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: exif.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 26-Jan-04, ahu: created + 11-Feb-04, ahu: isolated as a component + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: exif.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "exif.hpp" +#include "metadatum.hpp" +#include "tags.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "types.hpp" +#include "error.hpp" +#include "basicio.hpp" +#include "tiffimage.hpp" +#include "tiffimage_int.hpp" +#include "tiffcomposite_int.hpp" // for Tag::root + +// + standard includes +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +namespace { + + //! Unary predicate that matches a Exifdatum with a given key + class FindExifdatumByKey { + public: + //! Constructor, initializes the object with the key to look for + FindExifdatumByKey(const std::string& key) : key_(key) {} + /*! + @brief Returns true if the key of \em exifdatum is equal + to that of the object. + */ + bool operator()(const Exiv2::Exifdatum& exifdatum) const + { + return key_ == exifdatum.key(); + } + + private: + const std::string& key_; + + }; // class FindExifdatumByKey + + /*! + @brief Exif %Thumbnail image. This abstract base class provides the + interface for the thumbnail image that is optionally embedded in + the Exif data. This class is used internally by ExifData, it is + probably not useful for a client as a standalone class. Instead, + use an instance of ExifData to access the Exif thumbnail image. + */ + class Thumbnail { + public: + //! Shortcut for a %Thumbnail auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Creators + //@{ + //! Virtual destructor + virtual ~Thumbnail() {} + //@} + + //! Factory function to create a thumbnail for the Exif metadata provided. + static AutoPtr create(const Exiv2::ExifData& exifData); + + //! @name Accessors + //@{ + /*! + @brief Return the thumbnail image in a %DataBuf. The caller owns the + data buffer and %DataBuf ensures that it will be deleted. + */ + virtual Exiv2::DataBuf copy(const Exiv2::ExifData& exifData) const =0; + /*! + @brief Return the MIME type of the thumbnail ("image/tiff" or + "image/jpeg"). + */ + virtual const char* mimeType() const =0; + /*! + @brief Return the file extension for the format of the thumbnail + (".tif", ".jpg"). + */ + virtual const char* extension() const =0; +#ifdef EXV_UNICODE_PATH + /*! + @brief Like extension() but returns the extension in a wchar_t. + @note This function is only available on Windows. + */ + virtual const wchar_t* wextension() const =0; +#endif + //@} + + }; // class Thumbnail + + //! Exif thumbnail image in TIFF format + class TiffThumbnail : public Thumbnail { + public: + //! Shortcut for a %TiffThumbnail auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Manipulators + //@{ + //! Assignment operator. + TiffThumbnail& operator=(const TiffThumbnail& rhs); + //@} + + //! @name Accessors + //@{ + Exiv2::DataBuf copy(const Exiv2::ExifData& exifData) const; + const char* mimeType() const; + const char* extension() const; +#ifdef EXV_UNICODE_PATH + const wchar_t* wextension() const; +#endif + //@} + + }; // class TiffThumbnail + + //! Exif thumbnail image in JPEG format + class JpegThumbnail : public Thumbnail { + public: + //! Shortcut for a %JpegThumbnail auto pointer. + typedef std::auto_ptr AutoPtr; + + //! @name Manipulators + //@{ + //! Assignment operator. + JpegThumbnail& operator=(const JpegThumbnail& rhs); + //@} + + //! @name Accessors + //@{ + Exiv2::DataBuf copy(const Exiv2::ExifData& exifData) const; + const char* mimeType() const; + const char* extension() const; +#ifdef EXV_UNICODE_PATH + const wchar_t* wextension() const; +#endif + //@} + + }; // class JpegThumbnail + + //! Helper function to sum all components of the value of a metadatum + long sumToLong(const Exiv2::Exifdatum& md); + + //! Helper function to delete all tags of a specific IFD from the metadata. + void eraseIfd(Exiv2::ExifData& ed, Exiv2::Internal::IfdId ifdId); + +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + /*! + @brief Set the value of \em exifDatum to \em value. If the object already + has a value, it is replaced. Otherwise a new ValueType\ value + is created and set to \em value. + + This is a helper function, called from Exifdatum members. It is meant to + be used with T = (u)int16_t, (u)int32_t or (U)Rational. Do not use directly. + */ + template + Exiv2::Exifdatum& setValue(Exiv2::Exifdatum& exifDatum, const T& value) + { + std::auto_ptr > v + = std::auto_ptr >(new Exiv2::ValueType); + v->value_.push_back(value); + exifDatum.value_ = v; + return exifDatum; + } + + Exifdatum::Exifdatum(const ExifKey& key, const Value* pValue) + : key_(key.clone()) + { + if (pValue) value_ = pValue->clone(); + } + + Exifdatum::~Exifdatum() + { + } + + Exifdatum::Exifdatum(const Exifdatum& rhs) + : Metadatum(rhs) + { + if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy + if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy + } + + std::ostream& Exifdatum::write(std::ostream& os, const ExifData* pMetadata) const + { + if (value().count() == 0) return os; + PrintFct fct = printValue; + const TagInfo* ti = Internal::tagInfo(tag(), static_cast(ifdId())); + if (ti != 0) fct = ti->printFct_; + return fct(os, value(), pMetadata); + } + + const Value& Exifdatum::value() const + { + if (value_.get() == 0) throw Error(8); + return *value_; + } + + Exifdatum& Exifdatum::operator=(const Exifdatum& rhs) + { + if (this == &rhs) return *this; + Metadatum::operator=(rhs); + + key_.reset(); + if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy + + value_.reset(); + if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy + + return *this; + } // Exifdatum::operator= + + Exifdatum& Exifdatum::operator=(const std::string& value) + { + setValue(value); + return *this; + } + + Exifdatum& Exifdatum::operator=(const uint16_t& value) + { + return Exiv2::setValue(*this, value); + } + + Exifdatum& Exifdatum::operator=(const uint32_t& value) + { + return Exiv2::setValue(*this, value); + } + + Exifdatum& Exifdatum::operator=(const URational& value) + { + return Exiv2::setValue(*this, value); + } + + Exifdatum& Exifdatum::operator=(const int16_t& value) + { + return Exiv2::setValue(*this, value); + } + + Exifdatum& Exifdatum::operator=(const int32_t& value) + { + return Exiv2::setValue(*this, value); + } + + Exifdatum& Exifdatum::operator=(const Rational& value) + { + return Exiv2::setValue(*this, value); + } + + Exifdatum& Exifdatum::operator=(const Value& value) + { + setValue(&value); + return *this; + } + + void Exifdatum::setValue(const Value* pValue) + { + value_.reset(); + if (pValue) value_ = pValue->clone(); + } + + int Exifdatum::setValue(const std::string& value) + { + if (value_.get() == 0) { + TypeId type = key_->defaultTypeId(); + value_ = Value::create(type); + } + return value_->read(value); + } + + int Exifdatum::setDataArea(const byte* buf, long len) + { + return value_.get() == 0 ? -1 : value_->setDataArea(buf, len); + } + + std::string Exifdatum::key() const + { + return key_.get() == 0 ? "" : key_->key(); + } + + const char* Exifdatum::familyName() const + { + return key_.get() == 0 ? "" : key_->familyName(); + } + + std::string Exifdatum::groupName() const + { + return key_.get() == 0 ? "" : key_->groupName(); + } + + std::string Exifdatum::tagName() const + { + return key_.get() == 0 ? "" : key_->tagName(); + } + + std::string Exifdatum::tagLabel() const + { + return key_.get() == 0 ? "" : key_->tagLabel(); + } + + uint16_t Exifdatum::tag() const + { + return key_.get() == 0 ? 0xffff : key_->tag(); + } + + int Exifdatum::ifdId() const + { + return key_.get() == 0 ? ifdIdNotSet : key_->ifdId(); + } + + const char* Exifdatum::ifdName() const + { + return key_.get() == 0 ? "" : Internal::ifdName(static_cast(key_->ifdId())); + } + + int Exifdatum::idx() const + { + return key_.get() == 0 ? 0 : key_->idx(); + } + + long Exifdatum::copy(byte* buf, ByteOrder byteOrder) const + { + return value_.get() == 0 ? 0 : value_->copy(buf, byteOrder); + } + + TypeId Exifdatum::typeId() const + { + return value_.get() == 0 ? invalidTypeId : value_->typeId(); + } + + const char* Exifdatum::typeName() const + { + return TypeInfo::typeName(typeId()); + } + + long Exifdatum::typeSize() const + { + return TypeInfo::typeSize(typeId()); + } + + long Exifdatum::count() const + { + return value_.get() == 0 ? 0 : value_->count(); + } + + long Exifdatum::size() const + { + return value_.get() == 0 ? 0 : value_->size(); + } + + std::string Exifdatum::toString() const + { + return value_.get() == 0 ? "" : value_->toString(); + } + + std::string Exifdatum::toString(long n) const + { + return value_.get() == 0 ? "" : value_->toString(n); + } + + long Exifdatum::toLong(long n) const + { + return value_.get() == 0 ? -1 : value_->toLong(n); + } + + float Exifdatum::toFloat(long n) const + { + return value_.get() == 0 ? -1 : value_->toFloat(n); + } + + Rational Exifdatum::toRational(long n) const + { + return value_.get() == 0 ? Rational(-1, 1) : value_->toRational(n); + } + + Value::AutoPtr Exifdatum::getValue() const + { + return value_.get() == 0 ? Value::AutoPtr(0) : value_->clone(); + } + + long Exifdatum::sizeDataArea() const + { + return value_.get() == 0 ? 0 : value_->sizeDataArea(); + } + + DataBuf Exifdatum::dataArea() const + { + return value_.get() == 0 ? DataBuf(0, 0) : value_->dataArea(); + } + + ExifThumbC::ExifThumbC(const ExifData& exifData) + : exifData_(exifData) + { + } + + DataBuf ExifThumbC::copy() const + { + Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); + if (thumbnail.get() == 0) return DataBuf(); + return thumbnail->copy(exifData_); + } + + long ExifThumbC::writeFile(const std::string& path) const + { + Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); + if (thumbnail.get() == 0) return 0; + std::string name = path + thumbnail->extension(); + DataBuf buf(thumbnail->copy(exifData_)); + if (buf.size_ == 0) return 0; + return Exiv2::writeFile(buf, name); + } + +#ifdef EXV_UNICODE_PATH + long ExifThumbC::writeFile(const std::wstring& wpath) const + { + Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); + if (thumbnail.get() == 0) return 0; + std::wstring name = wpath + thumbnail->wextension(); + DataBuf buf(thumbnail->copy(exifData_)); + if (buf.size_ == 0) return 0; + return Exiv2::writeFile(buf, name); + } + +#endif + const char* ExifThumbC::mimeType() const + { + Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); + if (thumbnail.get() == 0) return ""; + return thumbnail->mimeType(); + } + + const char* ExifThumbC::extension() const + { + Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); + if (thumbnail.get() == 0) return ""; + return thumbnail->extension(); + } + +#ifdef EXV_UNICODE_PATH + const wchar_t* ExifThumbC::wextension() const + { + Thumbnail::AutoPtr thumbnail = Thumbnail::create(exifData_); + if (thumbnail.get() == 0) return EXV_WIDEN(""); + return thumbnail->wextension(); + } + +#endif + ExifThumb::ExifThumb(ExifData& exifData) + : ExifThumbC(exifData), exifData_(exifData) + { + } + + void ExifThumb::setJpegThumbnail( + const std::string& path, + URational xres, + URational yres, + uint16_t unit + ) + { + DataBuf thumb = readFile(path); // may throw + setJpegThumbnail(thumb.pData_, thumb.size_, xres, yres, unit); + } + +#ifdef EXV_UNICODE_PATH + void ExifThumb::setJpegThumbnail( + const std::wstring& wpath, + URational xres, + URational yres, + uint16_t unit + ) + { + DataBuf thumb = readFile(wpath); // may throw + setJpegThumbnail(thumb.pData_, thumb.size_, xres, yres, unit); + } + +#endif + void ExifThumb::setJpegThumbnail( + const byte* buf, + long size, + URational xres, + URational yres, + uint16_t unit + ) + { + setJpegThumbnail(buf, size); + exifData_["Exif.Thumbnail.XResolution"] = xres; + exifData_["Exif.Thumbnail.YResolution"] = yres; + exifData_["Exif.Thumbnail.ResolutionUnit"] = unit; + } + + void ExifThumb::setJpegThumbnail(const std::string& path) + { + DataBuf thumb = readFile(path); // may throw + setJpegThumbnail(thumb.pData_, thumb.size_); + } + +#ifdef EXV_UNICODE_PATH + void ExifThumb::setJpegThumbnail(const std::wstring& wpath) + { + DataBuf thumb = readFile(wpath); // may throw + setJpegThumbnail(thumb.pData_, thumb.size_); + } + +#endif + void ExifThumb::setJpegThumbnail(const byte* buf, long size) + { + exifData_["Exif.Thumbnail.Compression"] = uint16_t(6); + Exifdatum& format = exifData_["Exif.Thumbnail.JPEGInterchangeFormat"]; + format = uint32_t(0); + format.setDataArea(buf, size); + exifData_["Exif.Thumbnail.JPEGInterchangeFormatLength"] = uint32_t(size); + } + + void ExifThumb::erase() + { + eraseIfd(exifData_, ifd1Id); + } + + Exifdatum& ExifData::operator[](const std::string& key) + { + ExifKey exifKey(key); + iterator pos = findKey(exifKey); + if (pos == end()) { + add(Exifdatum(exifKey)); + pos = findKey(exifKey); + } + return *pos; + } + + void ExifData::add(const ExifKey& key, const Value* pValue) + { + add(Exifdatum(key, pValue)); + } + + void ExifData::add(const Exifdatum& exifdatum) + { + // allow duplicates + exifMetadata_.push_back(exifdatum); + } + + ExifData::const_iterator ExifData::findKey(const ExifKey& key) const + { + return std::find_if(exifMetadata_.begin(), exifMetadata_.end(), + FindExifdatumByKey(key.key())); + } + + ExifData::iterator ExifData::findKey(const ExifKey& key) + { + return std::find_if(exifMetadata_.begin(), exifMetadata_.end(), + FindExifdatumByKey(key.key())); + } + + void ExifData::clear() + { + exifMetadata_.clear(); + } + + void ExifData::sortByKey() + { + exifMetadata_.sort(cmpMetadataByKey); + } + + void ExifData::sortByTag() + { + exifMetadata_.sort(cmpMetadataByTag); + } + + ExifData::iterator ExifData::erase(ExifData::iterator beg, ExifData::iterator end) + { + return exifMetadata_.erase(beg, end); + } + + ExifData::iterator ExifData::erase(ExifData::iterator pos) + { + return exifMetadata_.erase(pos); + } + + ByteOrder ExifParser::decode( + ExifData& exifData, + const byte* pData, + uint32_t size + ) + { + IptcData iptcData; + XmpData xmpData; + ByteOrder bo = TiffParser::decode(exifData, + iptcData, + xmpData, + pData, + size); +#ifndef SUPPRESS_WARNINGS + if (!iptcData.empty()) { + EXV_WARNING << "Ignoring IPTC information encoded in the Exif data.\n"; + } + if (!xmpData.empty()) { + EXV_WARNING << "Ignoring XMP information encoded in the Exif data.\n"; + } +#endif + return bo; + } // ExifParser::decode + + //! @cond IGNORE + enum Ptt { pttLen, pttTag, pttIfd }; + struct PreviewTags { + Ptt ptt_; + const char* key_; + }; + //! @endcond + + WriteMethod ExifParser::encode( + Blob& blob, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData + ) + { + ExifData ed = exifData; + + // Delete IFD0 tags that are "not recorded" in compressed images + // Reference: Exif 2.2 specs, 4.6.8 Tag Support Levels, section A + static const char* filteredIfd0Tags[] = { + "Exif.Image.PhotometricInterpretation", + "Exif.Image.StripOffsets", + "Exif.Image.RowsPerStrip", + "Exif.Image.StripByteCounts", + "Exif.Image.JPEGInterchangeFormat", + "Exif.Image.JPEGInterchangeFormatLength", + "Exif.Image.SubIFDs" + }; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfd0Tags); ++i) { + ExifData::iterator pos = ed.findKey(ExifKey(filteredIfd0Tags[i])); + if (pos != ed.end()) { +#ifdef DEBUG + std::cerr << "Warning: Exif tag " << pos->key() << " not encoded\n"; +#endif + ed.erase(pos); + } + } + + // Delete IFDs which do not occur in JPEGs + static const IfdId filteredIfds[] = { + subImage1Id, + subImage2Id, + subImage3Id, + subImage4Id, + subImage5Id, + subImage6Id, + subImage7Id, + subImage8Id, + subImage9Id, + subThumb1Id, + panaRawId, + ifd2Id, + ifd3Id + }; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { +#ifdef DEBUG + std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; +#endif + eraseIfd(ed, filteredIfds[i]); + } + + // IPTC and XMP are stored elsewhere, not in the Exif APP1 segment. + IptcData emptyIptc; + XmpData emptyXmp; + + // Encode and check if the result fits into a JPEG Exif APP1 segment + MemIo mio1; + std::auto_ptr header(new TiffHeader(byteOrder, 0x00000008, false)); + WriteMethod wm = TiffParserWorker::encode(mio1, + pData, + size, + ed, + emptyIptc, + emptyXmp, + Tag::root, + TiffMapping::findEncoder, + header.get(), + 0); + if (mio1.size() <= 65527) { + append(blob, mio1.mmap(), mio1.size()); + return wm; + } + + // If it doesn't fit, remove additional tags + + // Delete preview tags if the preview is larger than 32kB. + // Todo: Enhance preview classes to be able to write and delete previews and use that instead. + // Table must be sorted by preview, the first tag in each group is the size + static const PreviewTags filteredPvTags[] = { + { pttLen, "Exif.Minolta.ThumbnailLength" }, + { pttTag, "Exif.Minolta.ThumbnailOffset" }, + { pttLen, "Exif.Minolta.Thumbnail" }, + { pttLen, "Exif.NikonPreview.JPEGInterchangeFormatLength" }, + { pttIfd, "NikonPreview" }, + { pttLen, "Exif.Olympus.ThumbnailLength" }, + { pttTag, "Exif.Olympus.ThumbnailOffset" }, + { pttLen, "Exif.Olympus.ThumbnailImage" }, + { pttLen, "Exif.Olympus.Thumbnail" }, + { pttLen, "Exif.Olympus2.ThumbnailLength" }, + { pttTag, "Exif.Olympus2.ThumbnailOffset" }, + { pttLen, "Exif.Olympus2.ThumbnailImage" }, + { pttLen, "Exif.Olympus2.Thumbnail" }, + { pttLen, "Exif.OlympusCs.PreviewImageLength" }, + { pttTag, "Exif.OlympusCs.PreviewImageStart" }, + { pttTag, "Exif.OlympusCs.PreviewImageValid" }, + { pttLen, "Exif.Pentax.PreviewLength" }, + { pttTag, "Exif.Pentax.PreviewOffset" }, + { pttTag, "Exif.Pentax.PreviewResolution" }, + { pttLen, "Exif.PentaxDng.PreviewLength" }, + { pttTag, "Exif.PentaxDng.PreviewOffset" }, + { pttTag, "Exif.PentaxDng.PreviewResolution" }, + { pttLen, "Exif.SamsungPreview.JPEGInterchangeFormatLength" }, + { pttIfd, "SamsungPreview" }, + { pttLen, "Exif.Thumbnail.StripByteCounts" }, + { pttIfd, "Thumbnail" }, + { pttLen, "Exif.Thumbnail.JPEGInterchangeFormatLength" }, + { pttIfd, "Thumbnail" } + }; + bool delTags = false; + ExifData::iterator pos; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredPvTags); ++i) { + switch (filteredPvTags[i].ptt_) { + case pttLen: + delTags = false; + pos = ed.findKey(ExifKey(filteredPvTags[i].key_)); + if (pos != ed.end() && sumToLong(*pos) > 32768) { + delTags = true; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Exif tag " << pos->key() << " not encoded\n"; +#endif + ed.erase(pos); + } + break; + case pttTag: + if (delTags) { + pos = ed.findKey(ExifKey(filteredPvTags[i].key_)); + if (pos != ed.end()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Exif tag " << pos->key() << " not encoded\n"; +#endif + ed.erase(pos); + } + } + break; + case pttIfd: + if (delTags) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Exif IFD " << filteredPvTags[i].key_ << " not encoded\n"; +#endif + eraseIfd(ed, Internal::groupId(filteredPvTags[i].key_)); + } + break; + } + } + + // Delete unknown tags larger than 4kB and known tags larger than 40kB. + for (ExifData::iterator pos = ed.begin(); pos != ed.end(); ) { + if ( (pos->size() > 4096 && pos->tagName().substr(0, 2) == "0x") + || pos->size() > 40960) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Exif tag " << pos->key() << " not encoded\n"; +#endif + pos = ed.erase(pos); + } + else { + ++pos; + } + } + + // Encode the remaining Exif tags again, don't care if it fits this time + MemIo mio2; + wm = TiffParserWorker::encode(mio2, + pData, + size, + ed, + emptyIptc, + emptyXmp, + Tag::root, + TiffMapping::findEncoder, + header.get(), + 0); + append(blob, mio2.mmap(), mio2.size()); +#ifdef DEBUG + if (wm == wmIntrusive) { + std::cerr << "SIZE OF EXIF DATA IS " << std::dec << mio2.size() << " BYTES\n"; + } + else { + std::cerr << "SIZE DOESN'T MATTER, NON-INTRUSIVE WRITING USED\n"; + } +#endif + return wm; + + } // ExifParser::encode + +} // namespace Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + + //! @cond IGNORE + Thumbnail::AutoPtr Thumbnail::create(const Exiv2::ExifData& exifData) + { + Thumbnail::AutoPtr thumbnail; + const Exiv2::ExifKey k1("Exif.Thumbnail.Compression"); + Exiv2::ExifData::const_iterator pos = exifData.findKey(k1); + if (pos != exifData.end()) { + if (pos->count() == 0) return thumbnail; + long compression = pos->toLong(); + if (compression == 6) { + thumbnail = Thumbnail::AutoPtr(new JpegThumbnail); + } + else { + thumbnail = Thumbnail::AutoPtr(new TiffThumbnail); + } + } + else { + const Exiv2::ExifKey k2("Exif.Thumbnail.JPEGInterchangeFormat"); + pos = exifData.findKey(k2); + if (pos != exifData.end()) { + thumbnail = Thumbnail::AutoPtr(new JpegThumbnail); + } + } + return thumbnail; + } + + const char* TiffThumbnail::mimeType() const + { + return "image/tiff"; + } + + const char* TiffThumbnail::extension() const + { + return ".tif"; + } + +#ifdef EXV_UNICODE_PATH + const wchar_t* TiffThumbnail::wextension() const + { + return EXV_WIDEN(".tif"); + } + +#endif + Exiv2::DataBuf TiffThumbnail::copy(const Exiv2::ExifData& exifData) const + { + Exiv2::ExifData thumb; + // Copy all Thumbnail (IFD1) tags from exifData to Image (IFD0) tags in thumb + for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != exifData.end(); ++i) { + if (i->groupName() == "Thumbnail") { + std::string key = "Exif.Image." + i->tagName(); + thumb.add(Exiv2::ExifKey(key), &i->value()); + } + } + + Exiv2::MemIo io; + Exiv2::IptcData emptyIptc; + Exiv2::XmpData emptyXmp; + Exiv2::TiffParser::encode(io, 0, 0, Exiv2::littleEndian, thumb, emptyIptc, emptyXmp); + return io.read(io.size()); + } + + const char* JpegThumbnail::mimeType() const + { + return "image/jpeg"; + } + + const char* JpegThumbnail::extension() const + { + return ".jpg"; + } + +#ifdef EXV_UNICODE_PATH + const wchar_t* JpegThumbnail::wextension() const + { + return EXV_WIDEN(".jpg"); + } + +#endif + Exiv2::DataBuf JpegThumbnail::copy(const Exiv2::ExifData& exifData) const + { + Exiv2::ExifKey key("Exif.Thumbnail.JPEGInterchangeFormat"); + Exiv2::ExifData::const_iterator format = exifData.findKey(key); + if (format == exifData.end()) return Exiv2::DataBuf(); + return format->dataArea(); + } + + long sumToLong(const Exiv2::Exifdatum& md) + { + long sum = 0; + for (int i = 0; i < md.count(); ++i) { + sum += md.toLong(i); + } + return sum; + } + + void eraseIfd(Exiv2::ExifData& ed, Exiv2::IfdId ifdId) + { + ed.erase(std::remove_if(ed.begin(), + ed.end(), + Exiv2::FindExifdatum(ifdId)), + ed.end()); + } + //! @endcond +} diff --git a/vendor/exiv2-0.25/src/exiv2.1 b/vendor/exiv2-0.25/src/exiv2.1 new file mode 100644 index 0000000..97844ea --- /dev/null +++ b/vendor/exiv2-0.25/src/exiv2.1 @@ -0,0 +1,651 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" @(#) $Id: exiv2.1 3801 2015-05-09 08:07:08Z robinwmills $ +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH EXIV2 1 "May 9, 2015" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +exiv2 \- Image metadata manipulation tool +.SH SYNOPSIS +.B exiv2 +[\fIoptions\fP] [\fIaction\fP] \fIfile\fP ... +.br +.SH DESCRIPTION +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +.B exiv2 +is a program to read and write Exif, IPTC, XMP metadata and +image comments and can read many vendor makernote tags. The program +optionally converts between Exif tags, XMP properties and IPTC +datasets as recommended by the Exif Standard, the IPTC Standard, +the XMP specification and Metadata Working Group guidelines. +.br +The following image formats are supported: +.TS +lB lB lB lB lB +_ _ _ _ _ +l l l l l. +Type Exif IPTC XMP Image comments +JPEG Read/Write Read/Write Read/Write Read/Write +EXV Read/Write Read/Write Read/Write Read/Write +CR2 Read/Write Read/Write Read/Write - +CRW Read/Write - - Read/Write +MRW Read Read Read - +TIFF Read/Write Read/Write Read/Write - +DNG Read/Write Read/Write Read/Write - +NEF Read/Write Read/Write Read/Write - +PEF Read/Write Read/Write Read/Write - +ARW Read Read Read - +RW2 Read Read Read - +SR2 Read Read Read - +SRW Read/Write Read/Write Read/Write - +ORF Read/Write Read/Write Read/Write - +PNG Read/Write Read/Write Read/Write Read/Write +PGF Read/Write Read/Write Read/Write Read/Write +RAF Read Read Read - +EPS - - Read/Write - +XMP - - Read/Write - +GIF - - - - +PSD Read/Write Read/Write Read/Write - +TGA - - - - +BMP - - - - +JP2 Read/Write Read/Write Read/Write - +.TE +.IP \(bu 2 +Support for GIF, TGA and BMP images is minimal: the image format is +recognized, a MIME type assigned to it and the height and width of the +image are determined. +.IP \(bu 2 +Reading other TIFF-like RAW image formats, which are not listed in the +table, may also work. +.SH ACTIONS +The \fIaction\fP argument is only required if it is not clear from the +\fIoptions\fP which action is implied. +.TP +.B pr | print +Print image metadata. This is the default action, i.e., the command +\fIexiv2 image.jpg\fP will print a summary of the image Exif metadata. +.TP +.B ex | extract +Extract metadata to *.exv, XMP sidecar (*.xmp) and thumbnail image files. +Modification commands can be applied on-the-fly. +.TP +.B in | insert +Insert metadata from corresponding *.exv, XMP sidecar (*.xmp) and +thumbnail files. Use option \fB\-S\fP \fI.suf\fP to change the suffix +of the input files. Since files of any supported format can be used as +input files, this command can be used to copy the metadata between +files of different formats. Modification commands can be applied +on-the-fly. +.TP +.B rm | delete +Delete image metadata from the files. +.TP +.B ad | adjust +Adjust Exif timestamps by the given time. Requires at least one of the +options \fB\-a\fP \fItime\fP, \fB\-Y\fP \fIyrs\fP, \fB\-O\fP +\fImon\fP or \fB\-D\fP \fIday\fP. +.TP +.B mo | modify +Apply commands to modify (add, set, delete) the Exif, IPTC and XMP +metadata of image files. Requires option \fB\-c\fP, \fB\-m\fP or +\fB\-M\fP. +.TP +.B mv | rename +Rename files and/or set file timestamps according to the Exif create +timestamp. Uses the value of tag Exif.Photo.DateTimeOriginal or, if +not present, Exif.Image.DateTime to determine the timestamp. The +filename format can be set with \fB\-r\fP \fIfmt\fP, timestamp options +are \fB\-t\fP and \fB\-T\fP. +.TP +.B fi | fixiso +Copy the ISO setting from one of the proprietary Nikon or Canon +makernote ISO tags to the regular Exif ISO tag, +Exif.Photo.ISOSpeedRatings. Does not overwrite an existing standard +Exif ISO tag. +.TP +.B fc | fixcom +Fix the character encoding of Exif Unicode user comments. Decodes the +comment using the auto-detected or specified character encoding and +writes it back in UCS-2. Use option \fB\-n\fP to specify the current +encoding of the comment if necessary. +.br +.ne 40 +.SH COMMAND SUMMARY +.sp 1 +.nf +exiv2 [ opt [arg] ]+ [ act ] file ... +.sp 1 +option [arg] long option description +-a tim --adjust Modify time stamps. [+|-]HH[:MM[:SS[.mmm]]] +-b --binary Show large binary values (default is to suppress them). +-c txt --comment JPEG comment string to set in the image ('modify' action). ... +-d tgt --delete Delete target(s) for the 'delete' action. ... +-D +-n --days Time adjustment by a positive or negative number of days ... +-e tgt --extract Extract target(s) for the 'extract' action. +-f --force Do not prompt before overwriting existing files ... +-F --Force Do not prompt before renaming files (Force rename) ... +-g key --grep Only output info for this Exiv2 key (grep). +-h --help Display help and exit. +-i tgt --insert Insert target(s) for the 'insert' action. ... +-k --keep Preserve file timestamps when updating files (keep) +-K Key --key Report key. Similar to -g (grep) however key must match exactly. +-l dir --location Location (directory) for files to be inserted or extracted. +-m file --modify read commands from cmd-file +-M cmd --Modify Command line for the 'modify' action. ... +-n enc --encode Charset to decode Exif Unicode user comments. See: man 3 iconv_open +-O +-n --months Time adjustment by a positive or negative number of months, ... +-p mod --print Print report (common reports) +-P flg --Print Print report (fine grained control) +-q --quiet Silence warnings and error messages from the Exiv2 library ... +-Q lvl --log Set the log-level to 'd'(ebug), 'i'(nfo), 'w'(arning), 'e'(rror) +-r fmt --rename Filename format for the 'rename' action. ... +-S suf --suffix Use suffix .suf for source files for insert command. +-t --timestamp Set the file timestamp according to the Exif create timestamp ... +-T --Timestamp Only set the file timestamp according to Exif create timestamp ... +-u --unknown Show unknown tags ... +-v --verbose verbose +-V --version Show the program version and exit. +-Y +-n --years Time adjustment by a positive or negative number of years ... +.sp 1 +act pr | ex | in | rm | ad | mo | mv | fi | fc + print, extract, insert, delete, adjust, modify, rename, fixiso,fixcom + +cmd See "Commands" below. + +flg E | I | X | x | g | k | l | n | y | c | s | v | t | h + Exif , IPTC, XMP, num, grp, key, label, name , type, count, size, vanilla, translated, hex + +fmt Default format is %Y%m%d_%H%M%S. + +lvl d | i | i | w | e + debug, info, warning, error + +mod s | a | t | v | h | i | x | c | p | i | S | X : + summary, add, translated, vanilla, hex ... + iptc ,xmp, comment, preview, Structure,XMP raw + +tgt a | c | e | i | t | x + all, comment, exif, iptc, thumb, xmp + +.br +.fi +.ne 40 +.SH OPTIONS +.TP +.B \-h +Display help and exit. +.TP +.B \-V +Show the program version and exit. +.br +When \fB\-V\fP is combined with \fB\-v\fP (Verbose version), build information +is printed to standard output along with a list of shared libraries which +have been loaded into memory. Verbose version is supported on Windows +(MSVC, Cygwin and MinGW builds), MacOSX and Linux and is provided +for test and debugging. +.TP +.B \-v +Be verbose during the program run. +.TP +.B \-q +Silence warnings and error messages from the Exiv2 library during the +program run (quiet). Note that options \fB\-v\fP and \fB\-q\fP can be +used at the same time. +.TP +.B \-Q \fIlvl\fP +Set the log-level to 'd'(ebug), 'i'(nfo), 'w'(arning), 'e'(rror) +or 'm'(ute). The default log-level is 'w'. \fB\-Qm\fP is equivalent +to \fB\-q\fP. All log messages are written to standard error. +.TP +.B \-b +Show large binary values (default is to suppress them). +.TP +.B \-u +Show unknown tags (default is to suppress tags which don't have a name). +.TP +.B \-g \fIkey\fP +Only keys which match the given key (grep). +.br +Multiple \fB\-g\fP options +can be used to grep info for several keys. This option uses the system +regular expression engine: see man 3 regex. Platforms which do not support +regex use key for a substring match. You can determine the availability of regex +using the command: exiv2 -v -V -g have_regex + +.nf +exiv2 \-g Date \-pt R.jpg +Exif.Image.DateTime Ascii 20 2012:08:07 16:01:05 +Exif.Photo.DateTimeOriginal Ascii 20 2011:09:18 16:25:48 +Exif.Photo.DateTimeDigitized Ascii 20 2011:09:18 16:25:48 +.fi +.TP +.B \-K \fIkey\fP +Only report data for given key. +.br +Multiple \fB\-K\fP options can be used to report more than a single key. + +.nf +exiv2 \-K Exif.Photo.DateTimeDigitized -K Exif.Photo.DateTimeOriginal \-pt R.jpg +Exif.Photo.DateTimeOriginal Ascii 20 2011:09:18 16:25:48 +Exif.Photo.DateTimeDigitized Ascii 20 2011:09:18 16:25:48 +.fi +.TP +.B \-n \fIenc\fP +Charset to use to decode Exif Unicode user comments. \fIenc\fP is +a name understood by \fBiconv_open\fP(3), e.g., 'UTF-8'. +.TP +.B \-k +Preserve file timestamps when updating files (keep). Can be used with +all options which update files. The flag is ignored by read-only +options. +.TP +.B \-t +Set the file timestamp according to the Exif create timestamp in +addition to renaming the file (overrides \fB\-k\fP). This option is +only used with the 'rename' action. +.TP +.B \-T +Only set the file timestamp according to the Exif create timestamp, do +not rename the file (overrides \fB\-k\fP). This option is only used +with the 'rename' action. Note: On Windows you may have to set the TZ +environment variable for this option to work correctly. +.TP +.B \-f +Do not prompt before overwriting existing files (force overwrite). +.TP +.B \-F +Do not prompt before renaming files (Force rename). Appends '_1' +('_2', ...) to the name of the new file. +.TP +.B \-a \fItime\fP +Time adjustment in the format [\-]HH[:MM[:SS]]. This option is only +used with the 'adjust' action. Examples: 1 adds one hour, 1:01 +adds one hour and one minute, \-0:00:30 subtracts 30 seconds. +.TP +.B \-Y \fIyrs\fP +Time adjustment by a positive or negative number of years, for +the 'adjust' action. +.TP +.B \-O \fImon\fP +Time adjustment by a positive or negative number of months, for +the 'adjust' action. +.TP +.B \-D \fIday\fP +Time adjustment by a positive or negative number of days, for +the 'adjust' action. +.TP +.B \-p \fImode\fP +Print mode for the 'print' action. Possible modes are: +.br +s : print a summary of the Exif metadata (the default) +.br +a : print Exif, IPTC and XMP metadata (shortcut for \-Pkyct) +.br +t : interpreted (translated) Exif tags (\-PEkyct) +.br +v : plain Exif tag values (\-PExgnycv) +.br +h : hexdump of the Exif data (\-PExgnycsh) +.br +i : IPTC datasets (\-PIkyct) +.br +x : XMP properties (\-PXkyct) +.br +c : JPEG comment +.br +p : list available image previews, sorted by preview image size in pixels +.br +S : print image structure information (jpg, png and tiff only) +.br +X : print "raw" XMP (jpg, png and tiff only) +.TP +.B \-P \fIflgs\fP +Print flags for fine control of the tag list ('print' action). Allows +control of the type of metadata as well as data columns included in +the print output. Valid flags are: +.br +E : include Exif tags in the list +.br +I : IPTC datasets +.br +X : XMP properties +.br +x : print a column with the tag number +.br +g : group name +.br +k : key +.br +l : tag label +.br +n : tag name +.br +y : type +.br +c : number of components (count) +.br +s : size in bytes +.br +v : plain data value +.br +t : interpreted (translated) data +.br +h : hexdump of the data +.TP +.B \-d \fItgt\fP +Delete target(s) for the 'delete' action. Possible targets are: +.br +a : all supported metadata (the default) +.br +e : Exif section +.br +t : Exif thumbnail only +.br +i : IPTC data +.br +x : XMP packet +.br +c : JPEG comment +.TP +.B \-i \fItgt\fP +Insert target(s) for the 'insert' action. Possible targets are the +same as those for the \fB\-d\fP option, plus an optional modifier: +.sp 1 +X : Insert metadata from an XMP sidecar file .xmp. The remaining +insert targets determine what metadata to insert from the sidecar +file. Possible are Exif, IPTC and XMP and the default is all of +these. Note that the inserted XMP properties include those converted +to Exif and IPTC. +.br +This is option is intended for "filter" operations on the XMP such as: +.br +$ exiv2 -e{tgt}- \fIfilename\fP | xmllint .... | exiv2 -i{tgt}- \fIfilename\fP +.sp 1 +Only JPEG thumbnails can be inserted (not TIFF thumbnails), they need to +be named \fIfile\fP\-thumb.jpg. +.TP +.B \-e \fItgt\fP +Extract target(s) for the 'extract' action. Possible targets are the same +as those for the \fB\-d\fP option, plus a target to extract preview +images and a modifier to generate an XMP sidecar file: +.br +p[[, ...]] : Extract preview images. The optional comma separated +list of preview image numbers is used to determine which preview images +to extract. The available preview images and their numbers are displayed +with the 'print' option \fB\-pp\fP. +.sp 1 +X : Extract metadata to an XMP sidecar file .xmp. The remaining +extract targets determine what metadata to extract to the sidecar +file. Possible are Exif, IPTC and XMP and the default is all of these. +.sp 1 +- : Output sidecar file to stdout (see -i tgt for example) +.sp 1 +.TP +.B \-r \fIfmt\fP +Filename format for the 'rename' action. The format string follows +\fBstrftime\fP(3) and supports the following keywords: +.br +:basename: - original filename without extension +.br +:dirname: - name of the directory holding the original file +.br +:parentname: - name of parent directory +.br +Default filename format is %Y%m%d_%H%M%S. +.TP +.B \-c \fItxt\fP +JPEG comment string to set in the image ('modify' action). This option +can also be used with the 'extract' and 'insert' actions to modify +metadata on-the-fly. +.TP +.B \-m \fIfile\fP +Command file for the 'modify' action. This option can also be used +with the 'extract' and 'insert' actions to modify metadata on-the-fly. +.TP +.B \-M \fIcmd\fP +Command line for the 'modify' action. This option can also be used +with the 'extract' and 'insert' actions to modify metadata on-the-fly. +The format for the commands is the same as that of the lines of a +command file. +.TP +.B \-l \fIdir\fP +Location (directory) for files to be inserted or extracted. +.TP +.B \-S \fI.suf\fP +Use suffix \fI.suf\fP for source files in 'insert' action. +.SH COMMANDS +Commands for the 'modify' action can be read from a command file, e.g., +.sp 1 +.nf + exiv2 \-m cmd.txt image.jpg +.fi +.sp 1 +or given on the command line, as in +.sp 1 +.nf + exiv2 \-M"add Iptc.Application2.Credit String Mr. Smith" image.jpg +.fi +.sp 1 +Note the quotes. Multiple \fB\-m\fP and \fB\-M\fP options can be combined, +and a non-standard XMP namespace registered. +.sp 1 +.nf + exiv2 \-M"reg myprefix http://ns.myprefix.me/" \-M"add Xmp.myprefix.Whom Mr. Smith" \-M"set Exif.Image.Artist Mr. Smith" image.jpg +.fi +.sp 1 +When writing Exif, IPTC and XMP metadata, +.B exiv2 +enforces only a correct +metadata structure. It is possible to write tags with types and values +different from those specified in the standards, duplicate Exif tags, +undefined tags, or incomplete metadata. While +.B exiv2 +is able to read +all metadata that it can write, other programs may have difficulties +with images that contain non standard-conforming metadata. +.SS Command format +The format of a command is +.sp 1 +.nf +\fBset | add | del\fP \fIkey\fP [[\fItype\fP] \fIvalue\fP] +.fi +.TP +.B set +Set the \fIvalue\fP of an existing tag with a matching \fIkey\fP or +add the tag. +.TP +.B add +Add a tag (unless \fIkey\fP is a non\-repeatable IPTC key; nothing +prevents you from adding duplicate Exif tags). +.TP +.B del +Delete all occurrences of a tag (requires only a \fIkey\fP). +.TP +.I key +Exiv2 Exif, IPTC or XMP key. +.TP +.I type +.B Byte | Ascii | Short | Long | Rational | Undefined | SShort | SLong | SRational | Comment +for Exif keys, +.br +.B String | Date | Time | Short | Undefined +for IPTC keys, and +.br +.B XmpText | XmpAlt | XmpBag | XmpSeq | LangAlt +for XMP keys. +.sp 1 +A default \fItype\fP is used if none is explicitly given. The default +is determined based on \fIkey\fP. +.TP +.I value +The remaining text on the line is the value. It can optionally be +enclosed in single quotes ('\fIvalue\fP') or double quotes ("\fIvalue\fP"). +.sp 1 +The value is optional. Not providing any value is equivalent to an +empty value ("") and is mainly useful to create an XMP array property, +e.g., a bag. +.sp 1 +The format of Exif \fBComment\fP values includes an optional charset +specification at the beginning: +.br +.B [charset=Ascii|Jis|Unicode|Undefined ]\fIcomment\fP +.sp 1 +.B Undefined +is used by default if the value doesn't start with a charset +definition. +.sp 1 +The format for an IPTC \fBDate\fP value is: +.br + YYYY\-MM\-DD (year, month, day) +.sp 1 +The format for an IPTC \fBTime\fP value is: +.br + HH:MM:SS (hours, minutes, seconds) +.br +and may optionally be followed by: +.br + \-HH:MM or +HH:MM (hours, minutes ahead/behind UTC) +.sp 1 +The format of \fBRational\fP (and \fBSRational\fP) is one of: +.br + integer +.br + integer-numerator/integer-denominator +.br + Fnumber +.br + fnumber +.sp 1 +Rational Examples: +.br + exiv2 "-Mset Exif.Photo.MaxApertureValue 557429/62500" X.jpg +.br + exiv2 "-Mset Exif.Photo.MaxApertureValue F5.6" X.jpg +.sp 1 +The Rational format Fnumber (or fnumber) is for the convenience of setting aperture values. Aperture values +are stored in Exif is an \fBAPEX\fP value which can be evaluated by the expression: +.sp 1 + apex-value = log(Fnumber) * 2.0 / log(2.0) +.br + Fnumber = exp(apex-value * log(2.0) / 2.0) +.sp 1 +The Rational format Fnumber is valid for any \fBRational\fP, even when the key is not an Aperture. +More information about \fBAPEX\fP value is available from: http://en.wikipedia.org/wiki/APEX_system +.sp 1 +The format of XMP \fBLangAlt\fP values includes an optional language qualifier: +.br +.B lang="\fIlanguage-code\fP\fI" text\fP +.sp +lang="x-default" is used if the value doesn't start with a language qualifier. +.sp 1 + exiv2 -M'set Xmp.dc.title lang="de-DE" Euros' X.jpg +.br + exiv2 -M'set Xmp.dc.title lang="en-GB" Pounds' X.jpg +.br + exiv2 -M'set Xmp.dc.title lang="en-US" In God We Trust' X.jpg +.br + exiv2 -M'set Xmp.dc.title All others pay cash' X.jpg +.sp 1 +To remove a language specification, set the value to '' (empty string) +.br + exiv2 -M'set Xmp.dc.title lang="en-US"' X.jpg +.sp 1 +To remove all language specifications, delete the key: +.br + exiv2 -M'del Xmp.dc.title' X.jpg +.TP +To register additional XMP namespaces, combine the command with: +.TP +.nf +\fBreg\fP \fIprefix\fP \fInamespace\fP +.fi +.SS Command file format +Empty lines and lines starting with \fB#\fP in a command file are +ignored (comments). Remaining lines are commands as described above. +.SH EXAMPLES +.TP +exiv2 *.jpg +Prints a summary of the Exif information for all JPEG files in the directory. +.TP +exiv2 \-pi image.jpg +Prints the IPTC metadata of the image. +.TP +exiv2 rename img_1234.jpg +Renames img_1234.jpg (taken on 13\-Nov\-05 at 22:58:31) to 20051113_225831.jpg +.TP +exiv2 \-r':basename:_%Y%m' rename img_1234.jpg +Renames img_1234.jpg to img_1234_200511.jpg +.TP +exiv2 \-et img1.jpg img2.jpg +Extracts the Exif thumbnails from the two files into img1\-thumb.jpg +and img2\-thumb.jpg. +.TP +exiv2 \-it img1.jpg img2.jpg +Inserts (copies) metadata from img1.exv to img1.jpg and from img2.exv +to img2.jpg. +.TP +exiv2 \-ep1,2 image.jpg +Extracts previews 1 and 2 from the image to the files image\-preview1.jpg +and image\-preview2.jpg. +.TP +exiv2 \-eiX image.jpg +Extracts IPTC datasets into an XMP sidecar file image.xmp and in the +process converts them to "IPTC Core" XMP schema. +.TP +exiv2 \-iixX image.jpg +Inserts IPTC and XMP metadata from an XMP sidecar file image.xmp into +image.jpg. The resulting IPTC datasets are converted from the "IPTC +Core" XMP schema properties in the sidecar file to the older IPTC IIM4 +format. The inserted XMP properties include those in the "IPTC Core" +XMP schema. +.TP +.nf +exiv2 \-M"set Exif.Photo.UserComment charset=Ascii New Exif comment" image.jpg +.fi +Sets the Exif comment to an ASCII string. +.TP +.nf +exiv2 \-M"set Exif.GPSInfo.GPSLatitude 4/1 15/1 33/1" \\ +\-M"set Exif.GPSInfo.GPSLatitudeRef N" image.jpg +.fi +Sets the latitude to 4 degrees, 15 minutes and 33 seconds north. The +Exif standard stipulates that the GPSLatitude tag consists of three +Rational numbers for the degrees, minutes and seconds of the latitude +and GPSLatitudeRef contains either 'N' or 'S' for north or south +latitude respectively. +.TP +.nf +exiv2 insert \-l/tmp -S.CRW /data/*.JPG +.fi +Copy all metadata from CRW files in the /tmp directory to JPG files +with corresponding basenames in the /data directory. Note that this +copies metadata as is, without any modifications to adapt it to the +requirements of the target format. Some tags copied like this may not +make sense in the target image. +.SH SEE ALSO +.TP +.I http://www.exiv2.org/sample.html#modify +Sample command files. +.TP +.I http://www.exiv2.org/metadata.html +Taglists with \fIkey\fP and default \fItype\fP values. +.SH AUTHORS +.B exiv2 +was written by Andreas Huggel and others. The Exiv2 project web site is http://exiv2.org +.PP +This manual page was originally created for the Debian project by KELEMEN Peter . diff --git a/vendor/exiv2-0.25/src/exiv2.cpp b/vendor/exiv2-0.25/src/exiv2.cpp new file mode 100644 index 0000000..92f1b78 --- /dev/null +++ b/vendor/exiv2-0.25/src/exiv2.cpp @@ -0,0 +1,1369 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + Abstract: Command line program to display and manipulate image metadata. + + File: exiv2.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 10-Dec-03, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: exiv2.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "exiv2app.hpp" +#include "actions.hpp" +#include "utils.hpp" +#include "convert.hpp" +#include "i18n.h" // NLS support. +#include "xmp.hpp" + +#include +#include +#include +#include +#include +#include +#include + +#if EXV_HAVE_REGEX +#include +#endif + + +// ***************************************************************************** +// local declarations +namespace { + + //! List of all command identifiers and corresponding strings + static const CmdIdAndString cmdIdAndString[] = { + { add, "add" }, + { set, "set" }, + { del, "del" }, + { reg, "reg" }, + { invalidCmdId, "invalidCmd" } // End of list marker + }; + + // Return a command Id for a command string + CmdId commandId(const std::string& cmdString); + + // Evaluate [-]HH[:MM[:SS]], returns true and sets time to the value + // in seconds if successful, else returns false. + bool parseTime(const std::string& ts, long& time); + + /*! + @brief Parse the oparg string into a bitmap of common targets. + @param optarg Option arguments + @param action Action being processed + @return A bitmap of common targets or -1 in case of a parse error + */ + int parseCommonTargets(const std::string& optarg, + const std::string& action); + + /*! + @brief Parse numbers separated by commas into container + @param previewNumbers Container for the numbers + @param optarg Option arguments + @param j Starting index into optarg + @return Number of characters processed + */ + int parsePreviewNumbers(Params::PreviewNumbers& previewNumbers, + const std::string& optarg, + int j); + + /*! + @brief Parse metadata modification commands from multiple files + @param modifyCmds Reference to a structure to store the parsed commands + @param cmdFiles Container with the file names + */ + bool parseCmdFiles(ModifyCmds& modifyCmds, + const Params::CmdFiles& cmdFiles); + + /*! + @brief Parse metadata modification commands from a container of commands + @param modifyCmds Reference to a structure to store the parsed commands + @param cmdLines Container with the commands + */ + bool parseCmdLines(ModifyCmds& modifyCmds, + const Params::CmdLines& cmdLines); + + /*! + @brief Parse one line of the command file + @param modifyCmd Reference to a command structure to store the parsed + command + @param line Input line + @param num Line number (used for error output) + */ + bool parseLine(ModifyCmd& modifyCmd, + const std::string& line, int num); + + /*! + @brief Parses a string containing backslash-escapes + @param input Input string, assumed to be UTF-8 + */ + std::string parseEscapes(const std::string& input); +} + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ +#ifdef EXV_ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain(EXV_PACKAGE, EXV_LOCALEDIR); + textdomain(EXV_PACKAGE); +#endif + + // Handle command line arguments + Params& params = Params::instance(); + if (params.getopt(argc, argv)) { + params.usage(); + return 1; + } + if (params.help_) { + params.help(); + return 0; + } + if (params.version_) { + params.version(params.verbose_); + return 0; + } + + // Create the required action class + Action::TaskFactory& taskFactory = Action::TaskFactory::instance(); + Action::Task::AutoPtr task + = taskFactory.create(Action::TaskType(params.action_)); + assert(task.get()); + + // Process all files + int rc = 0; + int n = 1; + int s = static_cast(params.files_.size()); + int w = s > 9 ? s > 99 ? 3 : 2 : 1; + for (Params::Files::const_iterator i = params.files_.begin(); + i != params.files_.end(); ++i) { + if (params.verbose_) { + std::cout << _("File") << " " << std::setw(w) << std::right << n++ << "/" << s << ": " + << *i << std::endl; + } + int ret = task->run(*i); + if (rc == 0) rc = ret; + } + + taskFactory.cleanup(); + params.cleanup(); + Exiv2::XmpParser::terminate(); + + // Return a positive one byte code for better consistency across platforms + return static_cast(rc) % 256; +} // main + +// ***************************************************************************** +// class Params +Params* Params::instance_ = 0; + +const Params::YodAdjust Params::emptyYodAdjust_[] = { + { false, "-Y", 0 }, + { false, "-O", 0 }, + { false, "-D", 0 }, +}; + +Params& Params::instance() +{ + if (0 == instance_) { + instance_ = new Params; + } + return *instance_; +} + +void Params::cleanup() +{ + delete instance_; + instance_ = 0; +} + +void Params::version(bool verbose,std::ostream& os) const +{ + bool b64 = sizeof(void*)==8; + const char* sBuild = b64 ? "(64 bit build)" : "(32 bit build)" ; + os << EXV_PACKAGE_STRING << " " << Exiv2::versionNumberHexString() << " " << sBuild << "\n"; + if ( Params::instance().greps_.empty() ) { + os << _("Copyright (C) 2004-2015 Andreas Huggel.\n") + << "\n" + << _("This program is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU General Public License\n" + "as published by the Free Software Foundation; either version 2\n" + "of the License, or (at your option) any later version.\n") + << "\n" + << _("This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n") + << "\n" + << _("You should have received a copy of the GNU General Public\n" + "License along with this program; if not, write to the Free\n" + "Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n" + "Boston, MA 02110-1301 USA\n"); + } + + if ( verbose ) Exiv2::dumpLibraryInfo(os,Params::instance().greps_); +} + +void Params::usage(std::ostream& os) const +{ + os << _("Usage:") << " " << progname() + << " " << _("[ options ] [ action ] file ...\n\n") + << _("Manipulate the Exif metadata of images.\n"); +} + +void Params::help(std::ostream& os) const +{ + usage(os); + os << _("\nActions:\n") + << _(" ad | adjust Adjust Exif timestamps by the given time. This action\n" + " requires at least one of the -a, -Y, -O or -D options.\n") + << _(" pr | print Print image metadata.\n") + << _(" rm | delete Delete image metadata from the files.\n") + << _(" in | insert Insert metadata from corresponding *.exv files.\n" + " Use option -S to change the suffix of the input files.\n") + << _(" ex | extract Extract metadata to *.exv, *.xmp and thumbnail image files.\n") + << _(" mv | rename Rename files and/or set file timestamps according to the\n" + " Exif create timestamp. The filename format can be set with\n" + " -r format, timestamp options are controlled with -t and -T.\n") + << _(" mo | modify Apply commands to modify (add, set, delete) the Exif and\n" + " IPTC metadata of image files or set the JPEG comment.\n" + " Requires option -c, -m or -M.\n") + << _(" fi | fixiso Copy ISO setting from the Nikon Makernote to the regular\n" + " Exif tag.\n") + << _(" fc | fixcom Convert the UNICODE Exif user comment to UCS-2. Its current\n" + " character encoding can be specified with the -n option.\n") + << _("\nOptions:\n") + << _(" -h Display this help and exit.\n") + << _(" -V Show the program version and exit.\n") + << _(" -v Be verbose during the program run.\n") + << _(" -q Silence warnings and error messages during the program run (quiet).\n") + << _(" -Q lvl Set log-level to d(ebug), i(nfo), w(arning), e(rror) or m(ute).\n") + << _(" -b Show large binary values.\n") + << _(" -u Show unknown tags.\n") + << _(" -g key Only output info for this key (grep).\n") + << _(" -K key Only output info for this key (exact match).\n") + << _(" -n enc Charset to use to decode UNICODE Exif user comments.\n") + << _(" -k Preserve file timestamps (keep).\n") + << _(" -t Also set the file timestamp in 'rename' action (overrides -k).\n") + << _(" -T Only set the file timestamp in 'rename' action, do not rename\n" + " the file (overrides -k).\n") + << _(" -f Do not prompt before overwriting existing files (force).\n") + << _(" -F Do not prompt before renaming files (Force).\n") + << _(" -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option\n" + " is only used with the 'adjust' action.\n") + << _(" -Y yrs Year adjustment with the 'adjust' action.\n") + << _(" -O mon Month adjustment with the 'adjust' action.\n") + << _(" -D day Day adjustment with the 'adjust' action.\n") + << _(" -p mode Print mode for the 'print' action. Possible modes are:\n") + << _(" s : print a summary of the Exif metadata (the default)\n") + << _(" a : print Exif, IPTC and XMP metadata (shortcut for -Pkyct)\n") + << _(" t : interpreted (translated) Exif data (-PEkyct)\n") + << _(" v : plain Exif data values (-PExgnycv)\n") + << _(" h : hexdump of the Exif data (-PExgnycsh)\n") + << _(" i : IPTC data values (-PIkyct)\n") + << _(" x : XMP properties (-PXkyct)\n") + << _(" c : JPEG comment\n") + << _(" p : list available previews\n") + << _(" S : print structure of image\n") + << _(" X : extract XMP from image\n") + << _(" -P flgs Print flags for fine control of tag lists ('print' action):\n") + << _(" E : include Exif tags in the list\n") + << _(" I : IPTC datasets\n") + << _(" X : XMP properties\n") + << _(" x : print a column with the tag number\n") + << _(" g : group name\n") + << _(" k : key\n") + << _(" l : tag label\n") + << _(" n : tag name\n") + << _(" y : type\n") + << _(" c : number of components (count)\n") + << _(" s : size in bytes\n") + << _(" v : plain data value\n") + << _(" t : interpreted (translated) data\n") + << _(" h : hexdump of the data\n") + << _(" -d tgt Delete target(s) for the 'delete' action. Possible targets are:\n") + << _(" a : all supported metadata (the default)\n") + << _(" e : Exif section\n") + << _(" t : Exif thumbnail only\n") + << _(" i : IPTC data\n") + << _(" x : XMP packet\n") + << _(" c : JPEG comment\n") + << _(" -i tgt Insert target(s) for the 'insert' action. Possible targets are\n" + " the same as those for the -d option, plus a modifier:\n" + " X : Insert metadata from an XMP sidecar file .xmp\n" + " Only JPEG thumbnails can be inserted, they need to be named\n" + " -thumb.jpg\n") + << _(" -e tgt Extract target(s) for the 'extract' action. Possible targets\n" + " are the same as those for the -d option, plus a target to extract\n" + " preview images and a modifier to generate an XMP sidecar file:\n" + " p[[, ...]] : Extract preview images.\n" + " X : Extract metadata to an XMP sidecar file .xmp\n") + << _(" -r fmt Filename format for the 'rename' action. The format string\n" + " follows strftime(3). The following keywords are supported:\n") + << _(" :basename: - original filename without extension\n") + << _(" :dirname: - name of the directory holding the original file\n") + << _(" :parentname: - name of parent directory\n") + << _(" Default filename format is ") + << format_ << ".\n" + << _(" -c txt JPEG comment string to set in the image.\n") + << _(" -m file Command file for the modify action. The format for commands is\n" + " set|add|del [[] ].\n") + << _(" -M cmd Command line for the modify action. The format for the\n" + " commands is the same as that of the lines of a command file.\n") + << _(" -l dir Location (directory) for files to be inserted from or extracted to.\n") + << _(" -S .suf Use suffix .suf for source files for insert command.\n\n"); +} // Params::help + +int Params::option(int opt, const std::string& optarg, int optopt) +{ + int rc = 0; + switch (opt) { + case 'h': help_ = true; break; + case 'V': version_ = true; break; + case 'v': verbose_ = true; break; + case 'q': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute); break; + case 'Q': rc = setLogLevel(optarg); break; + case 'k': preserve_ = true; break; + case 'b': binary_ = false; break; + case 'u': unknown_ = false; break; + case 'f': force_ = true; fileExistsPolicy_ = overwritePolicy; break; + case 'F': force_ = true; fileExistsPolicy_ = renamePolicy; break; + case 'g': rc = evalGrep(optarg); printMode_ = pmList; break; + case 'K': rc = evalKey(optarg); printMode_ = pmList; break; + case 'n': charset_ = optarg; break; + case 'r': rc = evalRename(opt, optarg); break; + case 't': rc = evalRename(opt, optarg); break; + case 'T': rc = evalRename(opt, optarg); break; + case 'a': rc = evalAdjust(optarg); break; + case 'Y': rc = evalYodAdjust(yodYear, optarg); break; + case 'O': rc = evalYodAdjust(yodMonth, optarg); break; + case 'D': rc = evalYodAdjust(yodDay, optarg); break; + case 'p': rc = evalPrint(optarg); break; + case 'P': rc = evalPrintFlags(optarg); break; + case 'd': rc = evalDelete(optarg); break; + case 'e': rc = evalExtract(optarg); break; + case 'i': rc = evalInsert(optarg); break; + case 'c': rc = evalModify(opt, optarg); break; + case 'm': rc = evalModify(opt, optarg); break; + case 'M': rc = evalModify(opt, optarg); break; + case 'l': directory_ = optarg; break; + case 'S': suffix_ = optarg; break; + case ':': + std::cerr << progname() << ": " << _("Option") << " -" << static_cast(optopt) + << " " << _("requires an argument\n"); + rc = 1; + break; + case '?': + std::cerr << progname() << ": " << _("Unrecognized option") << " -" + << static_cast(optopt) << "\n"; + rc = 1; + break; + default: + std::cerr << progname() + << ": " << _("getopt returned unexpected character code") << " " + << std::hex << opt << "\n"; + rc = 1; + break; + } + return rc; +} // Params::option + +int Params::setLogLevel(const std::string& optarg) +{ + int rc = 0; + const char logLevel = tolower(optarg[0]); + switch (logLevel) { + case 'd': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::debug); break; + case 'i': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::info); break; + case 'w': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::warn); break; + case 'e': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::error); break; + case 'm': Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute); break; + default: + std::cerr << progname() << ": " << _("Option") << " -Q: " + << _("Invalid argument") << " \"" << optarg << "\"\n"; + rc = 1; + break; + } + return rc; +} // Params::setLogLevel + +int Params::evalGrep( const std::string& optarg) +{ + int result=0; +#if EXV_HAVE_REGEX + // try to compile a reg-exp from the input argument and store it in the vector + const size_t i = greps_.size(); + greps_.resize(i + 1); + regex_t *pRegex = &greps_[i]; + int errcode = regcomp( pRegex, optarg.c_str(), REG_NOSUB); + + // there was an error compiling the regexp + if( errcode ) { + size_t length = regerror (errcode, pRegex, NULL, 0); + char *buffer = new char[ length]; + regerror (errcode, pRegex, buffer, length); + std::cerr << progname() + << ": " << _("Option") << " -g: " + << _("Invalid regexp") << " \"" << optarg << "\": " << buffer << "\n"; + + // free the memory and drop the regexp + delete[] buffer; + regfree( pRegex); + greps_.resize(i); + result=1; + } +#else + greps_.push_back(optarg); +#endif + return result; +} // Params::evalGrep + +int Params::evalKey( const std::string& optarg) +{ + int result=0; + keys_.push_back(optarg); + return result; +} // Params::evalKey + +int Params::evalRename(int opt, const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + action_ = Action::rename; + switch (opt) { + case 'r': + format_ = optarg; + formatSet_ = true; + break; + case 't': timestamp_ = true; break; + case 'T': timestampOnly_ = true; break; + } + break; + case Action::rename: + if (opt == 'r' && (formatSet_ || timestampOnly_)) { + std::cerr << progname() + << ": " << _("Ignoring surplus option") << " -r \"" << optarg << "\"\n"; + } + else { + format_ = optarg; + formatSet_ = true; + } + break; + default: + std::cerr << progname() + << ": " << _("Option") << " -" << (char)opt + << " " << _("is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalRename + +int Params::evalAdjust(const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + case Action::adjust: + if (adjust_) { + std::cerr << progname() + << ": " << _("Ignoring surplus option -a") << " " << optarg << "\n"; + break; + } + action_ = Action::adjust; + adjust_ = parseTime(optarg, adjustment_); + if (!adjust_) { + std::cerr << progname() << ": " << _("Error parsing -a option argument") << " `" + << optarg << "'\n"; + rc = 1; + } + break; + default: + std::cerr << progname() + << ": " << _("Option -a is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalAdjust + +int Params::evalYodAdjust(const Yod& yod, const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: // fall-through + case Action::adjust: + if (yodAdjust_[yod].flag_) { + std::cerr << progname() + << ": " << _("Ignoring surplus option") << " " + << yodAdjust_[yod].option_ << " " << optarg << "\n"; + break; + } + action_ = Action::adjust; + yodAdjust_[yod].flag_ = true; + if (!Util::strtol(optarg.c_str(), yodAdjust_[yod].adjustment_)) { + std::cerr << progname() << ": " << _("Error parsing") << " " + << yodAdjust_[yod].option_ << " " + << _("option argument") << " `" << optarg << "'\n"; + rc = 1; + } + break; + default: + std::cerr << progname() + << ": " << _("Option") << " " + << yodAdjust_[yod].option_ << " " + << _("is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalYodAdjust + +int Params::evalPrint(const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + switch (optarg[0]) { + case 's': action_ = Action::print; printMode_ = pmSummary; break; + case 'a': rc = evalPrintFlags("kyct"); break; + case 't': rc = evalPrintFlags("Ekyct"); break; + case 'v': rc = evalPrintFlags("Exgnycv"); break; + case 'h': rc = evalPrintFlags("Exgnycsh"); break; + case 'i': rc = evalPrintFlags("Ikyct"); break; + case 'x': rc = evalPrintFlags("Xkyct"); break; + case 'c': action_ = Action::print; printMode_ = pmComment ; break; + case 'p': action_ = Action::print; printMode_ = pmPreview ; break; + case 'S': action_ = Action::print; printMode_ = pmStructure; break; + case 'X': action_ = Action::print; printMode_ = pmXMP ; break; + default: + std::cerr << progname() << ": " << _("Unrecognized print mode") << " `" + << optarg << "'\n"; + rc = 1; + break; + } + break; + case Action::print: + std::cerr << progname() << ": " + << _("Ignoring surplus option -p") << optarg << "\n"; + break; + default: + std::cerr << progname() << ": " + << _("Option -p is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalPrint + +int Params::evalPrintFlags(const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + action_ = Action::print; + printMode_ = pmList; + for (std::size_t i = 0; i < optarg.length(); ++i) { + switch (optarg[i]) { + case 'E': printTags_ |= Exiv2::mdExif; break; + case 'I': printTags_ |= Exiv2::mdIptc; break; + case 'X': printTags_ |= Exiv2::mdXmp; break; + case 'x': printItems_ |= prTag; break; + case 'g': printItems_ |= prGroup; break; + case 'k': printItems_ |= prKey; break; + case 'l': printItems_ |= prLabel; break; + case 'n': printItems_ |= prName; break; + case 'y': printItems_ |= prType; break; + case 'c': printItems_ |= prCount; break; + case 's': printItems_ |= prSize; break; + case 'v': printItems_ |= prValue; break; + case 't': printItems_ |= prTrans; break; + case 'h': printItems_ |= prHex; break; + default: + std::cerr << progname() << ": " << _("Unrecognized print item") << " `" + << optarg[i] << "'\n"; + rc = 1; + break; + } + } + break; + case Action::print: + std::cerr << progname() << ": " + << _("Ignoring surplus option -P") << optarg << "\n"; + break; + default: + std::cerr << progname() << ": " + << _("Option -P is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalPrintFlags + +int Params::evalDelete(const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + action_ = Action::erase; + target_ = 0; + // fallthrough + case Action::erase: + rc = parseCommonTargets(optarg, "erase"); + if (rc > 0) { + target_ |= rc; + rc = 0; + } + else { + rc = 1; + } + break; + default: + std::cerr << progname() << ": " + << _("Option -d is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalDelete + +int Params::evalExtract(const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + case Action::modify: + action_ = Action::extract; + target_ = 0; + // fallthrough + case Action::extract: + rc = parseCommonTargets(optarg, "extract"); + if (rc > 0) { + target_ |= rc; + rc = 0; + } + else { + rc = 1; + } + break; + default: + std::cerr << progname() << ": " + << _("Option -e is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalExtract + +int Params::evalInsert(const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + case Action::modify: + action_ = Action::insert; + target_ = 0; + // fallthrough + case Action::insert: + rc = parseCommonTargets(optarg, "insert"); + if (rc > 0) { + target_ |= rc; + rc = 0; + } + else { + rc = 1; + } + break; + default: + std::cerr << progname() << ": " + << _("Option -i is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalInsert + +int Params::evalModify(int opt, const std::string& optarg) +{ + int rc = 0; + switch (action_) { + case Action::none: + action_ = Action::modify; + // fallthrough + case Action::modify: + case Action::extract: + case Action::insert: + if (opt == 'c') jpegComment_ = parseEscapes(optarg); + if (opt == 'm') cmdFiles_.push_back(optarg); // parse the files later + if (opt == 'M') cmdLines_.push_back(optarg); // parse the commands later + break; + default: + std::cerr << progname() << ": " + << _("Option") << " -" << (char)opt << " " + << _("is not compatible with a previous option\n"); + rc = 1; + break; + } + return rc; +} // Params::evalModify + +int Params::nonoption(const std::string& argv) +{ + int rc = 0; + bool action = false; + if (first_) { + // The first non-option argument must be the action + first_ = false; + if (argv == "ad" || argv == "adjust") { + if (action_ != Action::none && action_ != Action::adjust) { + std::cerr << progname() << ": " + << _("Action adjust is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::adjust; + } + if (argv == "pr" || argv == "print") { + if (action_ != Action::none && action_ != Action::print) { + std::cerr << progname() << ": " + << _("Action print is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::print; + } + if (argv == "rm" || argv == "delete") { + if (action_ != Action::none && action_ != Action::erase) { + std::cerr << progname() << ": " + << _("Action delete is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::erase; + } + if (argv == "ex" || argv == "extract") { + if ( action_ != Action::none + && action_ != Action::extract + && action_ != Action::modify) { + std::cerr << progname() << ": " + << _("Action extract is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::extract; + } + if (argv == "in" || argv == "insert") { + if ( action_ != Action::none + && action_ != Action::insert + && action_ != Action::modify) { + std::cerr << progname() << ": " + << _("Action insert is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::insert; + } + if (argv == "mv" || argv == "rename") { + if (action_ != Action::none && action_ != Action::rename) { + std::cerr << progname() << ": " + << _("Action rename is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::rename; + } + if (argv == "mo" || argv == "modify") { + if (action_ != Action::none && action_ != Action::modify) { + std::cerr << progname() << ": " + << _("Action modify is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::modify; + } + if (argv == "fi" || argv == "fixiso") { + if (action_ != Action::none && action_ != Action::fixiso) { + std::cerr << progname() << ": " + << _("Action fixiso is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::fixiso; + } + if (argv == "fc" || argv == "fixcom" || argv == "fixcomment") { + if (action_ != Action::none && action_ != Action::fixcom) { + std::cerr << progname() << ": " + << _("Action fixcom is not compatible with the given options\n"); + rc = 1; + } + action = true; + action_ = Action::fixcom; + } + if (action_ == Action::none) { + // if everything else fails, assume print as the default action + action_ = Action::print; + } + } + if (!action) { + files_.push_back(argv); + } + return rc; +} // Params::nonoption + +typedef std::map long_t; + +int Params::getopt(int argc, char* const Argv[]) +{ + char** argv = new char* [argc+1]; + argv[argc] = NULL; + long_t longs; + + longs["--adjust" ] = "-a"; + longs["--binary" ] = "-b"; + longs["--comment" ] = "-c"; + longs["--delete" ] = "-d"; + longs["--days" ] = "-D"; + longs["--force" ] = "-f"; + longs["--Force" ] = "-F"; + longs["--grep" ] = "-g"; + longs["--help" ] = "-h"; + longs["--insert" ] = "-i"; + longs["--keep" ] = "-k"; + longs["--key" ] = "-K"; + longs["--location" ] = "-l"; + longs["--modify" ] = "-m"; + longs["--Modify" ] = "-M"; + longs["--encode" ] = "-n"; + longs["--months" ] = "-O"; + longs["--print" ] = "-p"; + longs["--Print" ] = "-P"; + longs["--quiet" ] = "-q"; + longs["--log" ] = "-Q"; + longs["--rename" ] = "-r"; + longs["--suffix" ] = "-S"; + longs["--timestamp"] = "-t"; + longs["--Timestamp"] = "-T"; + longs["--unknown" ] = "-u"; + longs["--verbose" ] = "-v"; + longs["--Version" ] = "-V"; + longs["--version" ] = "-V"; + longs["--years" ] = "-Y"; + + for ( int i = 0 ; i < argc ; i++ ) { + std::string* arg = new std::string(Argv[i]); + if (longs.find(*arg) != longs.end() ) { + argv[i] = ::strdup(longs[*arg].c_str()); + } else { + argv[i] = ::strdup(Argv[i]); + } + delete arg; + } + + int rc = Util::Getopt::getopt(argc, argv, optstring_); + // Further consistency checks + if (help_ || version_) return 0; + if (action_ == Action::none) { + // This shouldn't happen since print is taken as default action + std::cerr << progname() << ": " << _("An action must be specified\n"); + rc = 1; + } + if ( action_ == Action::adjust + && !adjust_ + && !yodAdjust_[yodYear].flag_ + && !yodAdjust_[yodMonth].flag_ + && !yodAdjust_[yodDay].flag_) { + std::cerr << progname() << ": " + << _("Adjust action requires at least one -a, -Y, -O or -D option\n"); + rc = 1; + } + if ( action_ == Action::modify + && cmdFiles_.empty() && cmdLines_.empty() && jpegComment_.empty()) { + std::cerr << progname() << ": " + << _("Modify action requires at least one -c, -m or -M option\n"); + rc = 1; + } + if (0 == files_.size()) { + std::cerr << progname() << ": " << _("At least one file is required\n"); + rc = 1; + } + if (rc == 0 && !cmdFiles_.empty()) { + // Parse command files + if (!parseCmdFiles(modifyCmds_, cmdFiles_)) { + std::cerr << progname() << ": " << _("Error parsing -m option arguments\n"); + rc = 1; + } + } + if (rc == 0 && !cmdLines_.empty()) { + // Parse command lines + if (!parseCmdLines(modifyCmds_, cmdLines_)) { + std::cerr << progname() << ": " << _("Error parsing -M option arguments\n"); + rc = 1; + } + } + if (rc == 0 && (!cmdFiles_.empty() || !cmdLines_.empty())) { + // We'll set them again, after reading the file + Exiv2::XmpProperties::unregisterNs(); + } + if ( !directory_.empty() + && !(action_ == Action::insert || action_ == Action::extract)) { + std::cerr << progname() << ": " + << _("-l option can only be used with extract or insert actions\n"); + rc = 1; + } + if (!suffix_.empty() && !(action_ == Action::insert)) { + std::cerr << progname() << ": " + << _("-S option can only be used with insert action\n"); + rc = 1; + } + if (timestamp_ && !(action_ == Action::rename)) { + std::cerr << progname() << ": " + << _("-t option can only be used with rename action\n"); + rc = 1; + } + if (timestampOnly_ && !(action_ == Action::rename)) { + std::cerr << progname() << ": " + << _("-T option can only be used with rename action\n"); + rc = 1; + } + + // cleanup the argument vector + for ( int i = 0 ; i < argc ; i++ ) ::free((void*)argv[i]); + delete [] argv; + + return rc; +} // Params::getopt + +// ***************************************************************************** +// local implementations +namespace { + + bool parseTime(const std::string& ts, long& time) + { + std::string hstr, mstr, sstr; + char *cts = new char[ts.length() + 1]; + strcpy(cts, ts.c_str()); + char *tmp = ::strtok(cts, ":"); + if (tmp) hstr = tmp; + tmp = ::strtok(0, ":"); + if (tmp) mstr = tmp; + tmp = ::strtok(0, ":"); + if (tmp) sstr = tmp; + delete[] cts; + + int sign = 1; + long hh(0), mm(0), ss(0); + // [-]HH part + if (!Util::strtol(hstr.c_str(), hh)) return false; + if (hh < 0) { + sign = -1; + hh *= -1; + } + // check for the -0 special case + if (hh == 0 && hstr.find('-') != std::string::npos) sign = -1; + // MM part, if there is one + if (mstr != "") { + if (!Util::strtol(mstr.c_str(), mm)) return false; + if (mm > 59) return false; + if (mm < 0) return false; + } + // SS part, if there is one + if (sstr != "") { + if (!Util::strtol(sstr.c_str(), ss)) return false; + if (ss > 59) return false; + if (ss < 0) return false; + } + + time = sign * (hh * 3600 + mm * 60 + ss); + return true; + } // parseTime + + int parseCommonTargets(const std::string& optarg, + const std::string& action) + { + int rc = 0; + int target = 0; + for (size_t i = 0; rc == 0 && i < optarg.size(); ++i) { + switch (optarg[i]) { + case 'e': target |= Params::ctExif; break; + case 'i': target |= Params::ctIptc; break; + case 'x': target |= Params::ctXmp; break; + case 'c': target |= Params::ctComment; break; + case 't': target |= Params::ctThumb; break; + case 'a': target |= Params::ctExif + | Params::ctIptc + | Params::ctComment + | Params::ctXmp; break; + case 'X': + target |= Params::ctXmpSidecar; + if (optarg == "X") target |= Params::ctExif | Params::ctIptc | Params::ctXmp; + break; + case 'p': + { + if (strcmp(action.c_str(), "extract") == 0) { + i += (size_t) parsePreviewNumbers(Params::instance().previewNumbers_, optarg, (int) i + 1); + target |= Params::ctPreview; + break; + } + // fallthrough + } + default: + std::cerr << Params::instance().progname() << ": " << _("Unrecognized ") + << action << " " << _("target") << " `" << optarg[i] << "'\n"; + rc = -1; + break; + } + } + return rc ? rc : target; + } // parseCommonTargets + + int parsePreviewNumbers(Params::PreviewNumbers& previewNumbers, + const std::string& optarg, + int j) + { + size_t k = j; + for (size_t i = j; i < optarg.size(); ++i) { + std::ostringstream os; + for (k = i; k < optarg.size() && isdigit(optarg[k]); ++k) { + os << optarg[k]; + } + if (k > i) { + bool ok = false; + int num = Exiv2::stringTo(os.str(), ok); + if (ok && num >= 0) { + previewNumbers.insert(num); + } + else { + std::cerr << Params::instance().progname() << ": " + << _("Invalid preview number") << ": " << num << "\n"; + } + i = k; + } + if (!(k < optarg.size() && optarg[i] == ',')) break; + } + int ret = static_cast(k - j); + if (ret == 0) { + previewNumbers.insert(0); + } +#ifdef DEBUG + std::cout << "\nThe set now contains: "; + for (Params::PreviewNumbers::const_iterator i = previewNumbers.begin(); + i != previewNumbers.end(); + ++i) { + std::cout << *i << ", "; + } + std::cout << std::endl; +#endif + return (int) (k - j); + } // parsePreviewNumbers + + bool parseCmdFiles(ModifyCmds& modifyCmds, + const Params::CmdFiles& cmdFiles) + { + Params::CmdFiles::const_iterator end = cmdFiles.end(); + Params::CmdFiles::const_iterator filename = cmdFiles.begin(); + for ( ; filename != end; ++filename) { + try { + std::ifstream file(filename->c_str()); + if (!file) { + std::cerr << *filename << ": " + << _("Failed to open command file for reading\n"); + return false; + } + int num = 0; + std::string line; + while (std::getline(file, line)) { + ModifyCmd modifyCmd; + if (parseLine(modifyCmd, line, ++num)) { + modifyCmds.push_back(modifyCmd); + } + } + } + catch (const Exiv2::AnyError& error) { + std::cerr << *filename << ", " << _("line") << " " << error << "\n"; + return false; + } + } + return true; + } // parseCmdFile + + bool parseCmdLines(ModifyCmds& modifyCmds, + const Params::CmdLines& cmdLines) + { + try { + int num = 0; + Params::CmdLines::const_iterator end = cmdLines.end(); + Params::CmdLines::const_iterator line = cmdLines.begin(); + for ( ; line != end; ++line) { + ModifyCmd modifyCmd; + if (parseLine(modifyCmd, *line, ++num)) { + modifyCmds.push_back(modifyCmd); + } + } + return true; + } + catch (const Exiv2::AnyError& error) { + std::cerr << _("-M option") << " " << error << "\n"; + return false; + } + } // parseCmdLines + +#if defined(_MSC_VER) || defined(__MINGW__) + static std::string formatArg(const char* arg) + { + std::string result = ""; + char b = ' ' ; + char e = '\\'; std::string E = std::string("\\"); + char q = '\''; std::string Q = std::string("'" ); + bool qt = false; + char* a = (char*) arg; + while ( *a ) { + if ( *a == b || *a == e || *a == q ) qt = true; + if ( *a == q ) result += E; + if ( *a == e ) result += E; + result += std::string(a,1); + a++ ; + } + if (qt) result = Q + result + Q; + + return result; + } +#endif + + bool parseLine(ModifyCmd& modifyCmd, const std::string& line, int num) + { + const std::string delim = " \t"; + + // Skip empty lines and comments + std::string::size_type cmdStart = line.find_first_not_of(delim); + if (cmdStart == std::string::npos || line[cmdStart] == '#') return false; + + // Get command and key + std::string::size_type cmdEnd = line.find_first_of(delim, cmdStart+1); + std::string::size_type keyStart = line.find_first_not_of(delim, cmdEnd+1); + std::string::size_type keyEnd = line.find_first_of(delim, keyStart+1); + if ( cmdStart == std::string::npos + || cmdEnd == std::string::npos + || keyStart == std::string::npos) { + std::string cmdLine ; +#if defined(_MSC_VER) || defined(__MINGW__) + for ( int i = 1 ; i < __argc ; i++ ) { cmdLine += std::string(" ") + formatArg(__argv[i]) ; } +#endif + throw Exiv2::Error(1, Exiv2::toString(num) + + ": " + _("Invalid command line:") + cmdLine); + } + + std::string cmd(line.substr(cmdStart, cmdEnd-cmdStart)); + CmdId cmdId = commandId(cmd); + if (cmdId == invalidCmdId) { + throw Exiv2::Error(1, Exiv2::toString(num) + + ": " + _("Invalid command") + " `" + cmd + "'"); + } + + Exiv2::TypeId defaultType = Exiv2::invalidTypeId; + std::string key(line.substr(keyStart, keyEnd-keyStart)); + MetadataId metadataId = invalidMetadataId; + if (cmdId != reg) { + try { + Exiv2::IptcKey iptcKey(key); + metadataId = iptc; + defaultType = Exiv2::IptcDataSets::dataSetType(iptcKey.tag(), + iptcKey.record()); + } + catch (const Exiv2::AnyError&) {} + if (metadataId == invalidMetadataId) { + try { + Exiv2::ExifKey exifKey(key); + metadataId = exif; + defaultType = exifKey.defaultTypeId(); + } + catch (const Exiv2::AnyError&) {} + } + if (metadataId == invalidMetadataId) { + try { + Exiv2::XmpKey xmpKey(key); + metadataId = xmp; + defaultType = Exiv2::XmpProperties::propertyType(xmpKey); + } + catch (const Exiv2::AnyError&) {} + } + if (metadataId == invalidMetadataId) { + throw Exiv2::Error(1, Exiv2::toString(num) + + ": " + _("Invalid key") + " `" + key + "'"); + } + } + std::string value; + Exiv2::TypeId type = defaultType; + bool explicitType = false; + if (cmdId != del) { + // Get type and value + std::string::size_type typeStart = std::string::npos; + if (keyEnd != std::string::npos) typeStart = line.find_first_not_of(delim, keyEnd+1); + std::string::size_type typeEnd = std::string::npos; + if (typeStart != std::string::npos) typeEnd = line.find_first_of(delim, typeStart+1); + std::string::size_type valStart = typeStart; + std::string::size_type valEnd = std::string::npos; + if (valStart != std::string::npos) valEnd = line.find_last_not_of(delim); + + if ( cmdId == reg + && ( keyEnd == std::string::npos + || valStart == std::string::npos)) { + throw Exiv2::Error(1, Exiv2::toString(num) + + ": " + _("Invalid command line") + " " ); + } + + if ( cmdId != reg + && typeStart != std::string::npos + && typeEnd != std::string::npos) { + std::string typeStr(line.substr(typeStart, typeEnd-typeStart)); + Exiv2::TypeId tmpType = Exiv2::TypeInfo::typeId(typeStr); + if (tmpType != Exiv2::invalidTypeId) { + valStart = line.find_first_not_of(delim, typeEnd+1); + if (valStart == std::string::npos) { + throw Exiv2::Error(1, Exiv2::toString(num) + + ": " + _("Invalid command line") + " " ); + } + type = tmpType; + explicitType = true; + } + } + + if (valStart != std::string::npos) { + value = parseEscapes(line.substr(valStart, valEnd+1-valStart)); + std::string::size_type last = value.length()-1; + if ( (value[0] == '"' && value[last] == '"') + || (value[0] == '\'' && value[last] == '\'')) { + value = value.substr(1, value.length()-2); + } + } + } + + modifyCmd.cmdId_ = cmdId; + modifyCmd.key_ = key; + modifyCmd.metadataId_ = metadataId; + modifyCmd.typeId_ = type; + modifyCmd.explicitType_ = explicitType; + modifyCmd.value_ = value; + + if (cmdId == reg) { + // Registration needs to be done immediately as the new namespaces are + // looked up during parsing of subsequent lines (to validate XMP keys). + Exiv2::XmpProperties::registerNs(modifyCmd.value_, modifyCmd.key_); + } + + return true; + } // parseLine + + CmdId commandId(const std::string& cmdString) + { + int i = 0; + for (; cmdIdAndString[i].cmdId_ != invalidCmdId + && cmdIdAndString[i].cmdString_ != cmdString; ++i) {} + return cmdIdAndString[i].cmdId_; + } + + std::string parseEscapes(const std::string& input) + { + std::string result = ""; + for (unsigned int i = 0; i < input.length(); ++i) { + char ch = input[i]; + if (ch != '\\') { + result.push_back(ch); + continue; + } + int escapeStart = i; + if (!(input.length() - 1 > i)) { + result.push_back(ch); + continue; + } + ++i; + ch = input[i]; + switch (ch) { + case '\\': // Escaping of backslash + result.push_back('\\'); + break; + case 'r': // Escaping of carriage return + result.push_back('\r'); + break; + case 'n': // Escaping of newline + result.push_back('\n'); + break; + case 't': // Escaping of tab + result.push_back('\t'); + break; + case 'u': // Escaping of unicode + if (input.length() - 4 > i) { + int acc = 0; + for (int j = 0; j < 4; ++j) { + ++i; + acc <<= 4; + if (input[i] >= '0' && input[i] <= '9') { + acc |= input[i] - '0'; + } + else if (input[i] >= 'a' && input[i] <= 'f') { + acc |= input[i] - 'a' + 10; + } + else if (input[i] >= 'A' && input[i] <= 'F') { + acc |= input[i] - 'A' + 10; + } + else { + acc = -1; + break; + } + } + if (acc == -1) { + result.push_back('\\'); + i = escapeStart; + break; + } + + std::string ucs2toUtf8 = ""; + ucs2toUtf8.push_back((char) ((acc & 0xff00) >> 8)); + ucs2toUtf8.push_back((char) (acc & 0x00ff)); + + if (Exiv2::convertStringCharset (ucs2toUtf8, "UCS-2BE", "UTF-8")) { + result.append (ucs2toUtf8); + } + } + else { + result.push_back('\\'); + result.push_back(ch); + } + break; + default: + result.push_back('\\'); + result.push_back(ch); + } + } + return result; + } + +} + diff --git a/vendor/exiv2-0.25/src/exiv2app.hpp b/vendor/exiv2-0.25/src/exiv2app.hpp new file mode 100644 index 0000000..980ecbd --- /dev/null +++ b/vendor/exiv2-0.25/src/exiv2app.hpp @@ -0,0 +1,315 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file exiv2app.hpp + @brief Defines class Params, used for the command line handling of exiv2 + @version $Rev: 3091 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 08-Dec-03, ahu: created + */ +#ifndef EXIV2APP_HPP_ +#define EXIV2APP_HPP_ + +// ***************************************************************************** +// included header files +#include "utils.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include +#include + +#if EXV_HAVE_REGEX +#include +#endif + +// ***************************************************************************** +// class definitions + +//! Command identifiers +enum CmdId { invalidCmdId, add, set, del, reg }; +//! Metadata identifiers +// enum MetadataId { invalidMetadataId, iptc, exif, xmp }; +//! Metadata identifiers +// mdNone=0, mdExif=1, mdIptc=2, mdComment=4, mdXmp=8 +enum MetadataId { invalidMetadataId = Exiv2::mdNone + , iptc = Exiv2::mdIptc + , exif = Exiv2::mdExif + , xmp = Exiv2::mdXmp + } ; + +//! Structure for one parsed modification command +struct ModifyCmd { + //! C'tor + ModifyCmd() : + cmdId_(invalidCmdId), metadataId_(invalidMetadataId), + typeId_(Exiv2::invalidTypeId), explicitType_(false) {} + CmdId cmdId_; //!< Command identifier + std::string key_; //!< Exiv2 key string + MetadataId metadataId_; //!< Metadata identifier + Exiv2::TypeId typeId_; //!< Exiv2 type identifier + //! Flag to indicate if the type was explicitly specified (true) + bool explicitType_; + std::string value_; //!< Data +}; +//! Container for modification commands +typedef std::vector ModifyCmds; +//! Structure to link command identifiers to strings +struct CmdIdAndString { + CmdId cmdId_; //!< Commands identifier + std::string cmdString_; //!< Command string +}; + +/*! + @brief Implements the command line handling for the program. + + Derives from Util::Getopt to use the command line argument parsing + functionality provided there. This class is implemented as a singleton, + i.e., there is only one global instance of it, which can be accessed + from everywhere. + + Usage example:
+ @code + #include "params.h" + + int main(int argc, char* const argv[]) + { + Params& params = Params::instance(); + if (params.getopt(argc, argv)) { + params.usage(); + return 1; + } + if (params.help_) { + params.help(); + return 0; + } + if (params.version_) { + params.version(); + return 0; + } + + // do something useful here... + + return 0; + } + @endcode + */ +class Params : public Util::Getopt { +private: + std::string optstring_; + +public: + //! Container for command files + typedef std::vector CmdFiles; + //! Container for commands from the command line + typedef std::vector CmdLines; + //! Container to store filenames. + typedef std::vector Files; + //! Container for preview image numbers + typedef std::set PreviewNumbers; + //! Container for greps + typedef exv_grep_keys_t Greps; + //! Container for keys + typedef std::vector Keys; + + /*! + @brief Controls all access to the global Params instance. + @return Reference to the global Params instance. + */ + static Params& instance(); + //! Destructor + void cleanup(); + + //! Enumerates print modes + enum PrintMode { + pmSummary, + pmList, + pmComment, + pmPreview, + pmStructure, + pmXMP + }; + + //! Individual items to print, bitmap + enum PrintItem { + prTag = 1, + prGroup = 2, + prKey = 4, + prName = 8, + prLabel = 16, + prType = 32, + prCount = 64, + prSize = 128, + prValue = 256, + prTrans = 512, + prHex = 1024 + }; + + //! Enumerates common targets, bitmap + enum CommonTarget { + ctExif = 1, + ctIptc = 2, + ctComment = 4, + ctThumb = 8, + ctXmp = 16, + ctXmpSidecar = 32, + ctPreview = 64 + }; + + //! Enumerates the policies to handle existing files in rename action + enum FileExistsPolicy { overwritePolicy, renamePolicy, askPolicy }; + + //! Enumerates year, month and day adjustments. + enum Yod { yodYear, yodMonth, yodDay }; + + //! Structure for year, month and day adjustment command line arguments. + struct YodAdjust { + bool flag_; //!< Adjustment flag. + const char* option_; //!< Adjustment option string. + long adjustment_; //!< Adjustment value. + }; + + bool help_; //!< Help option flag. + bool version_; //!< Version option flag. + bool verbose_; //!< Verbose (talkative) option flag. + bool force_; //!< Force overwrites flag. + bool binary_; //!< Suppress long binary values. + bool unknown_; //!< Suppress unknown tags. + bool preserve_; //!< Preserve timestamps flag. + bool timestamp_; //!< Rename also sets the file timestamp. + bool timestampOnly_; //!< Rename only sets the file timestamp. + FileExistsPolicy fileExistsPolicy_; //!< What to do if file to rename exists. + bool adjust_; //!< Adjustment flag. + PrintMode printMode_; //!< Print mode. + unsigned long printItems_; //!< Print items. + unsigned long printTags_; //!< Print tags (bitmap of MetadataId flags). + //! %Action (integer rather than TaskType to avoid dependency). + int action_; + int target_; //!< What common target to process. + + long adjustment_; //!< Adjustment in seconds. + YodAdjust yodAdjust_[3]; //!< Year, month and day adjustment info. + std::string format_; //!< Filename format (-r option arg). + bool formatSet_; //!< Whether the format is set with -r + CmdFiles cmdFiles_; //!< Names of the modification command files + CmdLines cmdLines_; //!< Commands from the command line + ModifyCmds modifyCmds_; //!< Parsed modification commands + std::string jpegComment_; //!< Jpeg comment to set in the image + std::string directory_; //!< Location for files to extract/insert + std::string suffix_; //!< File extension of the file to insert + Files files_; //!< List of non-option arguments. + PreviewNumbers previewNumbers_; //!< List of preview numbers + Greps greps_; //!< List of keys to 'grep' from the metadata + Keys keys_; //!< List of keys to match from the metadata + std::string charset_; //!< Charset to use for UNICODE Exif user comment + +private: + //! Pointer to the global Params object. + static Params* instance_; + //! Initializer for year, month and day adjustment info. + static const YodAdjust emptyYodAdjust_[]; + + bool first_; + +private: + /*! + @brief Default constructor. Note that optstring_ is initialized here. + The c'tor is private to force instantiation through instance(). + */ + Params() : optstring_(":hVvqfbuktTFa:Y:O:D:r:p:P:d:e:i:c:m:M:l:S:g:K:n:Q:"), + help_(false), + version_(false), + verbose_(false), + force_(false), + binary_(true), + unknown_(true), + preserve_(false), + timestamp_(false), + timestampOnly_(false), + fileExistsPolicy_(askPolicy), + adjust_(false), + printMode_(pmSummary), + printItems_(0), + printTags_(Exiv2::mdNone), + action_(0), + target_(ctExif|ctIptc|ctComment|ctXmp), + adjustment_(0), + format_("%Y%m%d_%H%M%S"), + formatSet_(false), + first_(true) + { + yodAdjust_[yodYear] = emptyYodAdjust_[yodYear]; + yodAdjust_[yodMonth] = emptyYodAdjust_[yodMonth]; + yodAdjust_[yodDay] = emptyYodAdjust_[yodDay]; + } + + //! Prevent copy-construction: not implemented. + Params(const Params& rhs); + + //! @name Helpers + //@{ + int setLogLevel(const std::string& optarg); + int evalGrep( const std::string& optarg); + int evalKey( const std::string& optarg); + int evalRename(int opt, const std::string& optarg); + int evalAdjust(const std::string& optarg); + int evalYodAdjust(const Yod& yod, const std::string& optarg); + int evalPrint(const std::string& optarg); + int evalPrintFlags(const std::string& optarg); + int evalDelete(const std::string& optarg); + int evalExtract(const std::string& optarg); + int evalInsert(const std::string& optarg); + int evalModify(int opt, const std::string& optarg); + //@} + +public: + /*! + @brief Call Getopt::getopt() with optstring, to inititate command line + argument parsing, perform consistency checks after all command line + arguments are parsed. + + @param argc Argument count as passed to main() on program invocation. + @param argv Argument array as passed to main() on program invocation. + + @return 0 if successful, >0 in case of errors. + */ + int getopt(int argc, char* const argv[]); + + //! Handle options and their arguments. + virtual int option(int opt, const std::string& optarg, int optopt); + + //! Handle non-option parameters. + virtual int nonoption(const std::string& argv); + + //! Print a minimal usage note to an output stream. + void usage(std::ostream& os =std::cout) const; + + //! Print further usage explanations to an output stream. + void help(std::ostream& os =std::cout) const; + + //! Print version information to an output stream. + void version(bool verbose =false, std::ostream& os =std::cout) const; +}; // class Params + +#endif // #ifndef EXIV2APP_HPP_ diff --git a/vendor/exiv2-0.25/src/fujimn.cpp b/vendor/exiv2-0.25/src/fujimn.cpp new file mode 100644 index 0000000..31532ac --- /dev/null +++ b/vendor/exiv2-0.25/src/fujimn.cpp @@ -0,0 +1,290 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: fujimn.cpp + Version: $Rev: 3831 $ + Author(s): Andreas Huggel (ahu) + Gilles Caulier (gc) + History: 18-Feb-04, ahu: created + 07-Mar-04, ahu: isolated as a separate component + Credits: See header file. + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: fujimn.cpp 3831 2015-05-20 01:27:32Z asp $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "fujimn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! OffOn, multiple tags + extern const TagDetails fujiOffOn[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Sharpness, tag 0x1001 + extern const TagDetails fujiSharpness[] = { + { 1, N_("Soft mode 1") }, + { 2, N_("Soft mode 2") }, + { 3, N_("Normal") }, + { 4, N_("Hard mode 1") }, + { 5, N_("Hard mode 2") } + }; + + //! WhiteBalance, tag 0x1002 + extern const TagDetails fujiWhiteBalance[] = { + { 0, N_("Auto") }, + { 256, N_("Daylight") }, + { 512, N_("Cloudy") }, + { 768, N_("Fluorescent (daylight)") }, + { 769, N_("Fluorescent (warm white)") }, + { 770, N_("Fluorescent (cool white)") }, + { 1024, N_("Incandescent") }, + { 3480, N_("Custom") }, + { 3480, N_("Custom") } // To silence compiler warning + }; + + //! Color, tag 0x1003 + extern const TagDetails fujiColor[] = { + { 0, N_("Normal") }, + { 256, N_("High") }, + { 512, N_("Low") }, + { 768, N_("None (black & white)") }, + { 768, N_("None (black & white)") } // To silence compiler warning + }; + + //! Tone, tag 0x1004 + extern const TagDetails fujiTone[] = { + { 0, N_("Normal") }, + { 256, N_("High") }, + { 512, N_("Low") } + }; + + //! FlashMode, tag 0x1010 + extern const TagDetails fujiFlashMode[] = { + { 0, N_("Auto") }, + { 1, N_("On") }, + { 2, N_("Off") }, + { 3, N_("Red-eye reduction") }, + { 3, N_("Red-eye reduction") } // To silence compiler warning + }; + + //! FocusMode, tag 0x1021 + extern const TagDetails fujiFocusMode[] = { + { 0, N_("Auto") }, + { 1, N_("Manual") } + }; + + //! PictureMode, tag 0x1031 + extern const TagDetails fujiPictureMode[] = { + { 0, N_("Auto") }, + { 1, N_("Portrait") }, + { 2, N_("Landscape") }, + { 4, N_("Sports") }, + { 5, N_("Night scene") }, + { 6, N_("Program AE") }, + { 7, N_("Natural light") }, + { 8, N_("Anti-blur") }, + { 10, N_("Sunset") }, + { 11, N_("Museum") }, + { 12, N_("Party") }, + { 13, N_("Flower") }, + { 14, N_("Text") }, + { 15, N_("Natural light & flash") }, + { 16, N_("Beach") }, + { 17, N_("Snow") }, + { 18, N_("Fireworks") }, + { 19, N_("Underwater") }, + { 256, N_("Aperture-priority AE") }, + { 512, N_("Shutter speed priority AE") }, + { 768, N_("Manual") } + }; + + //! Continuous, tag 0x1100 + extern const TagDetails fujiContinuous[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("No flash & flash") } + }; + + //! FinePixColor, tag 0x1210 + extern const TagDetails fujiFinePixColor[] = { + { 0, N_("Standard") }, + { 16, N_("Chrome") }, + { 48, N_("Black & white") } + }; + + //! DynamicRange, tag 0x1400 + extern const TagDetails fujiDynamicRange[] = { + { 1, N_("Standard") }, + { 3, N_("Wide") } + }; + + //! FilmMode, tag 0x1401 + extern const TagDetails fujiFilmMode[] = { + { 0, N_("F0/Standard") }, + { 256, N_("F1/Studio portrait") }, + { 512, N_("F2/Fujichrome") }, + { 768, N_("F3/Studio portrait Ex") }, + { 1024, N_("F4/Velvia") } + }; + + //! DynamicRange, tag 0x1402 + extern const TagDetails fujiDynamicRangeSetting[] = { + { 0, N_("Auto (100-400%)") }, + { 1, N_("Raw") }, + { 256, N_("Standard (100%)") }, + { 512, N_("Wide mode 1 (230%)") }, + { 513, N_("Wide mode 2 (400%)") }, + { 32768, N_("Film simulation mode") } + }; + + // Fujifilm MakerNote Tag Info + const TagInfo FujiMakerNote::tagInfo_[] = { + TagInfo(0x0000, "Version", N_("Version"), + N_("Fujifilm Makernote version"), + fujiId, makerTags, undefined, -1, printValue), + TagInfo(0x0010, "SerialNumber", N_("Serial Number"), + N_("This number is unique, and contains the date of manufacture, " + "but is not the same as the number printed on the camera body."), + fujiId, makerTags, asciiString, -1, printValue), + TagInfo(0x1000, "Quality", N_("Quality"), + N_("Image quality setting"), + fujiId, makerTags, asciiString, -1, printValue), + TagInfo(0x1001, N_("Sharpness"), N_("Sharpness"), + N_("Sharpness setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiSharpness)), + TagInfo(0x1002, "WhiteBalance", N_("White Balance"), + N_("White balance setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiWhiteBalance)), + TagInfo(0x1003, "Color", N_("Color"), + N_("Chroma saturation setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiColor)), + TagInfo(0x1004, "Tone", N_("Tone"), + N_("Contrast setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiTone)), + TagInfo(0x1010, "FlashMode", N_("Flash Mode"), + N_("Flash firing mode setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFlashMode)), + TagInfo(0x1011, "FlashStrength", N_("Flash Strength"), + N_("Flash firing strength compensation setting"), + fujiId, makerTags, signedRational, -1, printValue), + TagInfo(0x1020, "Macro", N_("Macro"), + N_("Macro mode setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), + TagInfo(0x1021, "FocusMode", N_("Focus Mode"), + N_("Focusing mode setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFocusMode)), + TagInfo(0x1022, "0x1022", "0x1022", + N_("Unknown"), + fujiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1030, "SlowSync", N_("Slow Sync"), + N_("Slow synchro mode setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), + TagInfo(0x1031, "PictureMode", N_("Picture Mode"), + N_("Picture mode setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiPictureMode)), + TagInfo(0x1032, "0x1032", "0x1032", + N_("Unknown"), + fujiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1100, "Continuous", N_("Continuous"), + N_("Continuous shooting or auto bracketing setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiContinuous)), + TagInfo(0x1101, "SequenceNumber", N_("Sequence Number"), + N_("Sequence number"), + fujiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1200, "0x1200", "0x1200", + N_("Unknown"), + fujiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1210, "FinePixColor", N_("FinePix Color"), + N_("Fuji FinePix color setting"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFinePixColor)), + TagInfo(0x1300, "BlurWarning", N_("Blur Warning"), + N_("Blur warning status"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), + TagInfo(0x1301, "FocusWarning", N_("Focus Warning"), + N_("Auto Focus warning status"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), + TagInfo(0x1302, "ExposureWarning", N_("Exposure Warning"), + N_("Auto exposure warning status"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)), + TagInfo(0x1400, "DynamicRange", N_("Dynamic Range"), + N_("Dynamic range"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRange)), + TagInfo(0x1401, "FilmMode", N_("Film Mode"), + N_("Film mode"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFilmMode)), + TagInfo(0x1402, "DynamicRangeSetting", N_("Dynamic Range Setting"), + N_("Dynamic range settings"), + fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRangeSetting)), + TagInfo(0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"), + N_("Development dynamic range"), + fujiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1404, "MinFocalLength", N_("Minimum Focal Length"), + N_("Minimum focal length"), + fujiId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x1405, "MaxFocalLength", N_("Maximum Focal Length"), + N_("Maximum focal length"), + fujiId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x1406, "MaxApertureAtMinFocal", N_("Maximum Aperture at Minimum Focal"), + N_("Maximum aperture at minimum focal"), + fujiId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x1407, "MaxApertureAtMaxFocal", N_("Maximum Aperture at Maximum Focal"), + N_("Maximum aperture at maximum focal"), + fujiId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x8000, "FileSource", N_("File Source"), + N_("File source"), + fujiId, makerTags, asciiString, -1, printValue), + TagInfo(0x8002, "OrderNumber", N_("Order Number"), + N_("Order number"), + fujiId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x8003, "FrameNumber", N_("Frame Number"), + N_("Frame number"), + fujiId, makerTags, unsignedShort, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)", + N_("Unknown FujiMakerNote tag"), + fujiId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* FujiMakerNote::tagList() + { + return tagInfo_; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/fujimn_int.hpp b/vendor/exiv2-0.25/src/fujimn_int.hpp new file mode 100644 index 0000000..6021b06 --- /dev/null +++ b/vendor/exiv2-0.25/src/fujimn_int.hpp @@ -0,0 +1,65 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file fujimn_int.hpp + @brief Fujifilm MakerNote implemented according to the specification + in Appendix 4: Makernote of Fujifilm of the document + + Exif file format by TsuruZoh Tachibanaya
+ Fuji Makernote list by Phil Harvey
+ @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (gc) + caulier dot gilles at gmail dot com + @date 11-Feb-04, ahu: created + */ +#ifndef FUJIMN_INT_HPP_ +#define FUJIMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Fujifilm cameras + class FujiMakerNote { + public: + //! Return read-only list of built-in Fujifilm tags + static const TagInfo* tagList(); + + private: + //! Tag information + static const TagInfo tagInfo_[]; + + }; // class FujiMakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef FUJIMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/futils.cpp b/vendor/exiv2-0.25/src/futils.cpp new file mode 100644 index 0000000..2fbd5eb --- /dev/null +++ b/vendor/exiv2-0.25/src/futils.cpp @@ -0,0 +1,444 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: futils.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 08-Dec-03, ahu: created + 02-Apr-05, ahu: moved to Exiv2 namespace + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: futils.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "futils.hpp" + +// + standard includes +#include +#include +#ifdef _MSC_VER +# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifdef EXV_HAVE_UNISTD_H +# include // for stat() +#endif + +#include +#include +#include +#include + +#if defined EXV_HAVE_STRERROR_R && !defined EXV_HAVE_DECL_STRERROR_R +# ifdef EXV_STRERROR_R_CHAR_P +extern char *strerror_r(int errnum, char *buf, size_t n); +# else +extern int strerror_r(int errnum, char *buf, size_t n); +# endif +#endif + +namespace Exiv2 { + const char* ENVARDEF[] = {"/exiv2.php", "40"}; + const char* ENVARKEY[] = {"EXIV2_HTTP_POST", "EXIV2_TIMEOUT"}; +// ***************************************************************************** +// free functions + std::string getEnv(EnVar var) { + return getenv(ENVARKEY[var]) ? getenv(ENVARKEY[var]) : ENVARDEF[var]; + } // getEnv + + char to_hex(char code) { + static char hex[] = "0123456789abcdef"; + return hex[code & 15]; + } // to_hex + + char from_hex(char ch) { + return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10; + } // from_hex + + char* urlencode(char* str) { + char* pstr = str; + char* buf = (char*)malloc(strlen(str) * 3 + 1); + char* pbuf = buf; + while (*pstr) { + if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') + *pbuf++ = *pstr; + else if (*pstr == ' ') + *pbuf++ = '+'; + else + *pbuf++ = '%', *pbuf++ = to_hex(*pstr >> 4), *pbuf++ = to_hex(*pstr & 15); + pstr++; + } + *pbuf = '\0'; + return buf; + } // urlencode + + char* urldecode(const char* str) { + const char* pstr = str; + char* buf = (char*)malloc(strlen(str) + 1); + char* pbuf = buf; + while (*pstr) { + if (*pstr == '%') { + if (pstr[1] && pstr[2]) { + *pbuf++ = from_hex(pstr[1]) << 4 | from_hex(pstr[2]); + pstr += 2; + } + } else if (*pstr == '+') { + *pbuf++ = ' '; + } else { + *pbuf++ = *pstr; + } + pstr++; + } + *pbuf = '\0'; + return buf; + } // urldecode + + void urldecode(std::string& str) { + char* decodeStr = Exiv2::urldecode(str.c_str()); + str = std::string(decodeStr); + free(decodeStr); + } // urldecode(const std::string& str) + + int base64encode(const void* data_buf, size_t dataLength, char* result, size_t resultSize) { + const char base64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + const uint8_t* data = (const uint8_t*)data_buf; + size_t resultIndex = 0; + size_t x; + uint32_t n = 0; + size_t padCount = dataLength % 3; + uint8_t n0, n1, n2, n3; + + /* increment over the length of the string, three characters at a time */ + for (x = 0; x < dataLength; x += 3) + { + /* these three 8-bit (ASCII) characters become one 24-bit number */ + n = data[x] << 16; + + if((x+1) < dataLength) + n += data[x+1] << 8; + + if((x+2) < dataLength) + n += data[x+2]; + + /* this 24-bit number gets separated into four 6-bit numbers */ + n0 = (uint8_t)(n >> 18) & 63; + n1 = (uint8_t)(n >> 12) & 63; + n2 = (uint8_t)(n >> 6) & 63; + n3 = (uint8_t)n & 63; + + /* + * if we have one byte available, then its encoding is spread + * out over two characters + */ + if(resultIndex >= resultSize) return 0; /* indicate failure: buffer too small */ + result[resultIndex++] = base64chars[n0]; + if(resultIndex >= resultSize) return 0; /* indicate failure: buffer too small */ + result[resultIndex++] = base64chars[n1]; + + /* + * if we have only two bytes available, then their encoding is + * spread out over three chars + */ + if((x+1) < dataLength) + { + if(resultIndex >= resultSize) return 0; /* indicate failure: buffer too small */ + result[resultIndex++] = base64chars[n2]; + } + + /* + * if we have all three bytes available, then their encoding is spread + * out over four characters + */ + if((x+2) < dataLength) + { + if(resultIndex >= resultSize) return 0; /* indicate failure: buffer too small */ + result[resultIndex++] = base64chars[n3]; + } + } + + /* + * create and add padding that is required if we did not have a multiple of 3 + * number of characters available + */ + if (padCount > 0) + { + for (; padCount < 3; padCount++) + { + if(resultIndex >= resultSize) return 0; /* indicate failure: buffer too small */ + result[resultIndex++] = '='; + } + } + if(resultIndex >= resultSize) return 0; /* indicate failure: buffer too small */ + result[resultIndex] = 0; + return 1; /* indicate success */ + } // base64encode + + long base64decode(const char *in, char *out, size_t out_size) { + static const char decode[] = "|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW" + "$$$$$$XYZ[\\]^_`abcdefghijklmnopq"; + long len; + long i; + long done = 0; + unsigned char v; + unsigned char quad[4]; + + while (*in) { + len = 0; + for (i = 0; i < 4 && *in; i++) { + v = 0; + while (*in && !v) { + v = *in++; + v = (v < 43 || v > 122) ? 0 : decode[v - 43]; + if (v) + v = (v == '$') ? 0 : v - 61; + if (*in) { + len++; + if (v) + quad[i] = v - 1; + } else + quad[i] = 0; + } + } + if (!len) + continue; + if (out_size < (size_t) (done + len - 1)) + /* out buffer is too small */ + return -1; + if (len >= 2) + *out++ = quad[0] << 2 | quad[1] >> 4; + if (len >= 3) + *out++ = quad[1] << 4 | quad[2] >> 2; + if (len >= 4) + *out++ = ((quad[2] << 6) & 0xc0) | quad[3]; + done += len - 1; + } + if ((size_t)(done + 1) >= out_size) + return -1; + *out++ = '\0'; + return done; + } // base64decode + + Protocol fileProtocol(const std::string& path) { + Protocol result = pFile ; + struct { + std::string name ; + Protocol prot ; + } prots[] = + { { "http://" ,pHttp } + , { "https://" ,pHttps } + , { "ftp://" ,pFtp } + , { "sftp://" ,pSftp } + , { "ssh://" ,pSsh } + , { "file://" ,pFileUri } + , { "data://" ,pDataUri } + , { "-" ,pStdin } + }; + for ( size_t i = 0 ; result == pFile && i < sizeof(prots)/sizeof(prots[0]) ; i ++ ) + if ( path.find(prots[i].name) == 0 ) + result = prots[i].prot; + + return result; + } // fileProtocol +#ifdef EXV_UNICODE_PATH + Protocol fileProtocol(const std::wstring& wpath) { + Protocol result = pFile ; + struct { + std::wstring wname ; + Protocol prot ; + } prots[] = + { { L"http://" ,pHttp } + , { L"https://" ,pHttps } + , { L"ftp://" ,pFtp } + , { L"sftp://" ,pSftp } + , { L"ssh://" ,pSsh } + , { L"file://" ,pFileUri } + , { L"data://" ,pDataUri } + , { L"-" ,pStdin } + }; + for ( size_t i = 0 ; result == pFile && i < sizeof(prots)/sizeof(prots[0]) ; i ++ ) + if ( wpath.find(prots[i].wname) == 0 ) + result = prots[i].prot; + + return result; + } // fileProtocol +#endif + bool fileExists(const std::string& path, bool ct) + { + // special case: accept "-" (means stdin) + if (path.compare("-") == 0 || fileProtocol(path)) { + return true; + } + + struct stat buf; + int ret = ::stat(path.c_str(), &buf); + if (0 != ret) return false; + if (ct && !S_ISREG(buf.st_mode)) return false; + return true; + } // fileExists + +#ifdef EXV_UNICODE_PATH + bool fileExists(const std::wstring& wpath, bool ct) + { + // special case: accept "-" (means stdin) + if (wpath.compare(L"-") == 0 || fileProtocol(wpath)) { + return true; + } + + struct _stat buf; + int ret = _wstat(wpath.c_str(), &buf); + if (0 != ret) return false; + if (ct && !S_ISREG(buf.st_mode)) return false; + return true; + } // fileExists + +#endif + std::string pathOfFileUrl(const std::string& url) { + std::string path = url.substr(7); + size_t found = path.find('/'); + if (found == std::string::npos) return path; + else return path.substr(found); + } +#ifdef EXV_UNICODE_PATH + std::wstring pathOfFileUrl(const std::wstring& wurl) { + std::wstring path = wurl.substr(7); + size_t found = path.find('/'); + if (found == std::wstring::npos) return path; + else return path.substr(found); + } +#endif + std::string strError() + { + int error = errno; + std::ostringstream os; +#ifdef EXV_HAVE_STRERROR_R + const size_t n = 1024; +// _GNU_SOURCE: See Debian bug #485135 +# if defined EXV_STRERROR_R_CHAR_P && defined _GNU_SOURCE + char *buf = 0; + char buf2[n]; + std::memset(buf2, 0x0, n); + buf = strerror_r(error, buf2, n); +# else + char buf[n]; + std::memset(buf, 0x0, n); + strerror_r(error, buf, n); +# endif + os << buf; + // Issue# 908. + // report strerror() if strerror_r() returns empty + if ( !buf[0] ) os << strerror(error); +#else + os << std::strerror(error); +#endif + os << " (errno = " << error << ")"; + return os.str(); + } // strError + + void Uri::Decode(Uri& uri) + { + urldecode(uri.QueryString); + urldecode(uri.Path); + urldecode(uri.Host); + urldecode(uri.Username); + urldecode(uri.Password); + } + + Uri Uri::Parse(const std::string &uri) + { + Uri result; + + typedef std::string::const_iterator iterator_t; + + if ( !uri.length() ) return result; + + iterator_t uriEnd = uri.end(); + + // get query start + iterator_t queryStart = std::find(uri.begin(), uriEnd, '?'); + + // protocol + iterator_t protocolStart = uri.begin(); + iterator_t protocolEnd = std::find(protocolStart, uriEnd, ':'); //"://"); + + if (protocolEnd != uriEnd) + { + std::string prot = &*(protocolEnd); + if ((prot.length() > 3) && (prot.substr(0, 3) == "://")) + { + result.Protocol = std::string(protocolStart, protocolEnd); + protocolEnd += 3; // :// + } + else + protocolEnd = uri.begin(); // no protocol + } + else + protocolEnd = uri.begin(); // no protocol + + //username & password + iterator_t authStart = protocolEnd; + iterator_t authEnd = std::find(protocolEnd, uriEnd, '@'); + if (authEnd != uriEnd) { + iterator_t userStart = authStart; + iterator_t userEnd = std::find(authStart, authEnd, ':'); + if (userEnd != authEnd) { + result.Username = std::string(userStart, userEnd); + userEnd++; + result.Password = std::string(userEnd, authEnd); + } else { + result.Username = std::string(authStart, authEnd); + } + authEnd++; + } else { + authEnd = protocolEnd; + } + + // host + iterator_t hostStart = authEnd; + iterator_t pathStart = std::find(hostStart, uriEnd, '/'); // get pathStart + + iterator_t hostEnd = std::find(authEnd, + (pathStart != uriEnd) ? pathStart : queryStart, + ':'); // check for port + + result.Host = std::string(hostStart, hostEnd); + + // port + if ((hostEnd != uriEnd) && ((&*(hostEnd))[0] == ':')) // we have a port + { + hostEnd++; + iterator_t portEnd = (pathStart != uriEnd) ? pathStart : queryStart; + result.Port = std::string(hostEnd, portEnd); + } + if ( !result.Port.length() && result.Protocol == "http" ) result.Port = "80"; + + // path + if (pathStart != uriEnd) + result.Path = std::string(pathStart, queryStart); + + // query + if (queryStart != uriEnd) + result.QueryString = std::string(queryStart, uri.end()); + + return result; + } // Uri::Parse +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/getopt_win32.c b/vendor/exiv2-0.25/src/getopt_win32.c new file mode 100644 index 0000000..fca2992 --- /dev/null +++ b/vendor/exiv2-0.25/src/getopt_win32.c @@ -0,0 +1,512 @@ +/* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ + +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#if _MSC_VER >= 1400 +# pragma warning(disable : 4996) +#endif + +// included header files +#include +#include +#include +#include +#include "getopt_win32.h" +#include +#include + +#define REPLACE_GETOPT + +#define _DIAGASSERT(x) do {} while (0) + +#ifdef REPLACE_GETOPT +#ifdef __weak_alias +__weak_alias(getopt,_getopt) +#endif +int opterr = 1; /* if error message should be printed */ +int optind = 1; /* index into parent argv vector */ +int optopt = '?'; /* character checked for validity */ +int optreset; /* reset getopt */ +char *optarg; /* argument associated with option */ +#endif + +#ifdef __weak_alias +__weak_alias(getopt_long,_getopt_long) +#endif + +#ifndef __CYGWIN__ +#define __progname __argv[0] +#else +extern char __declspec(dllimport) *__progname; +#endif + +#define IGNORE_FIRST (*options == '-' || *options == '+') +#define PRINT_ERROR ((opterr) && ((*options != ':') \ + || (IGNORE_FIRST && options[1] != ':'))) + +/* This differs from the cygwin implementation, which effectively defaults to + PC, but is consistent with the NetBSD implementation and doc's. */ +#ifndef IS_POSIXLY_CORRECT +#define IS_POSIXLY_CORRECT (getenv("POSIXLY_CORRECT") != NULL) +#endif + +#define PERMUTE (!IS_POSIXLY_CORRECT && !IGNORE_FIRST) +/* XXX: GNU ignores PC if *options == '-' */ +#define IN_ORDER (!IS_POSIXLY_CORRECT && *options == '-') + +/* return values */ +#define BADCH (int)'?' +#define BADARG ((IGNORE_FIRST && options[1] == ':') \ + || (*options == ':') ? (int)':' : (int)'?') +#define INORDER (int)1 + +static char EMSG[1]; + +static int getopt_internal (int, char * const *, const char *); +static int gcd (int, int); +static void permute_args (int, int, int, char * const *); + +static char *place = EMSG; /* option letter processing */ + +/* XXX: set optreset to 1 rather than these two */ +static int nonopt_start = -1; /* first non option argument (for permute) */ +static int nonopt_end = -1; /* first option after non options (for permute) */ + +/* Error messages */ +static const char recargchar[] = "option requires an argument -- %c"; +static const char recargstring[] = "option requires an argument -- %s"; +static const char ambig[] = "ambiguous option -- %.*s"; +static const char noarg[] = "option doesn't take an argument -- %.*s"; +static const char illoptchar[] = "unknown option -- %c"; +static const char illoptstring[] = "unknown option -- %s"; + +static void +_vwarnx(const char *fmt, va_list ap) +{ + (void)fprintf(stderr, "%s: ", __progname); + if (fmt != NULL) + (void)vfprintf(stderr, fmt, ap); + (void)fprintf(stderr, "\n"); +} + +static void +warnx(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + _vwarnx(fmt, ap); + va_end(ap); +} + +/* + * Compute the greatest common divisor of a and b. + */ +static int +gcd(a, b) + int a; + int b; +{ + int c; + + c = a % b; + while (c != 0) { + a = b; + b = c; + c = a % b; + } + + return b; +} + +/* + * Exchange the block from nonopt_start to nonopt_end with the block + * from nonopt_end to opt_end (keeping the same order of arguments + * in each block). + */ +static void +permute_args(panonopt_start, panonopt_end, opt_end, nargv) + int panonopt_start; + int panonopt_end; + int opt_end; + char * const *nargv; +{ + int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; + char *swap; + + _DIAGASSERT(nargv != NULL); + + /* + * compute lengths of blocks and number and size of cycles + */ + nnonopts = panonopt_end - panonopt_start; + nopts = opt_end - panonopt_end; + ncycle = gcd(nnonopts, nopts); + cyclelen = (opt_end - panonopt_start) / ncycle; + + for (i = 0; i < ncycle; i++) { + cstart = panonopt_end+i; + pos = cstart; + for (j = 0; j < cyclelen; j++) { + if (pos >= panonopt_end) + pos -= nnonopts; + else + pos += nopts; + swap = nargv[pos]; + /* LINTED const cast */ + ((char **) nargv)[pos] = nargv[cstart]; + /* LINTED const cast */ + ((char **)nargv)[cstart] = swap; + } + } +} + +/* + * getopt_internal -- + * Parse argc/argv argument vector. Called by user level routines. + * Returns -2 if -- is found (can be long option or end of options marker). + */ +static int +getopt_internal(nargc, nargv, options) + int nargc; + char * const *nargv; + const char *options; +{ + char *oli; /* option letter list index */ + int optchar; + + _DIAGASSERT(nargv != NULL); + _DIAGASSERT(options != NULL); + + optarg = NULL; + + /* + * XXX Some programs (like rsyncd) expect to be able to + * XXX re-initialize optind to 0 and have getopt_long(3) + * XXX properly function again. Work around this braindamage. + */ + if (optind == 0) + optind = 1; + + if (optreset) + nonopt_start = nonopt_end = -1; +start: + if (optreset || !*place) { /* update scanning pointer */ + optreset = 0; + if (optind >= nargc) { /* end of argument vector */ + place = EMSG; + if (nonopt_end != -1) { + /* do permutation, if we have to */ + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + else if (nonopt_start != -1) { + /* + * If we skipped non-options, set optind + * to the first of them. + */ + optind = nonopt_start; + } + nonopt_start = nonopt_end = -1; + return -1; + } + if ((*(place = nargv[optind]) != '-') + || (place[1] == '\0')) { /* found non-option */ + place = EMSG; + if (IN_ORDER) { + /* + * GNU extension: + * return non-option as argument to option 1 + */ + optarg = nargv[optind++]; + return INORDER; + } + if (!PERMUTE) { + /* + * if no permutation wanted, stop parsing + * at first non-option + */ + return -1; + } + /* do permutation */ + if (nonopt_start == -1) + nonopt_start = optind; + else if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + nonopt_start = optind - + (nonopt_end - nonopt_start); + nonopt_end = -1; + } + optind++; + /* process next argument */ + goto start; + } + if (nonopt_start != -1 && nonopt_end == -1) + nonopt_end = optind; + if (place[1] && *++place == '-') { /* found "--" */ + place++; + return -2; + } + } + if ((optchar = (int)*place++) == (int)':' || + (oli = strchr(options + (IGNORE_FIRST ? 1 : 0), optchar)) == NULL) { + /* option letter unknown or ':' */ + if (!*place) + ++optind; + if (PRINT_ERROR) + warnx(illoptchar, optchar); + optopt = optchar; + return BADCH; + } + if (optchar == 'W' && oli[1] == ';') { /* -W long-option */ + /* XXX: what if no long options provided (called by getopt)? */ + if (*place) + return -2; + + if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + warnx(recargchar, optchar); + optopt = optchar; + return BADARG; + } else /* white space */ + place = nargv[optind]; + /* + * Handle -W arg the same as --arg (which causes getopt to + * stop parsing). + */ + return -2; + } + if (*++oli != ':') { /* doesn't take argument */ + if (!*place) + ++optind; + } else { /* takes (optional) argument */ + optarg = NULL; + if (*place) /* no white space */ + optarg = place; + /* XXX: disable test for :: if PC? (GNU doesn't) */ + else if (oli[1] != ':') { /* arg not optional */ + if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + warnx(recargchar, optchar); + optopt = optchar; + return BADARG; + } else + optarg = nargv[optind]; + } + place = EMSG; + ++optind; + } + /* dump back option letter */ + return optchar; +} + +#ifdef REPLACE_GETOPT +/* + * getopt -- + * Parse argc/argv argument vector. + * + * [eventually this will replace the real getopt] + */ +int +getopt(nargc, nargv, options) + int nargc; + char * const *nargv; + const char *options; +{ + int retval; + + _DIAGASSERT(nargv != NULL); + _DIAGASSERT(options != NULL); + + if ((retval = getopt_internal(nargc, nargv, options)) == -2) { + ++optind; + /* + * We found an option (--), so if we skipped non-options, + * we have to permute. + */ + if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, optind, + nargv); + optind -= nonopt_end - nonopt_start; + } + nonopt_start = nonopt_end = -1; + retval = -1; + } + return retval; +} +#endif + +/* + * getopt_long -- + * Parse argc/argv argument vector. + */ +int +getopt_long(nargc, nargv, options, long_options, idx) + int nargc; + char * const *nargv; + const char *options; + const struct option *long_options; + int *idx; +{ + int retval; + + _DIAGASSERT(nargv != NULL); + _DIAGASSERT(options != NULL); + _DIAGASSERT(long_options != NULL); + /* idx may be NULL */ + + if ((retval = getopt_internal(nargc, nargv, options)) == -2) { + char *current_argv, *has_equal; + size_t current_argv_len; + int i, match; + + current_argv = place; + match = -1; + + optind++; + place = EMSG; + + if (*current_argv == '\0') { /* found "--" */ + /* + * We found an option (--), so if we skipped + * non-options, we have to permute. + */ + if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + nonopt_start = nonopt_end = -1; + return -1; + } + if ((has_equal = strchr(current_argv, '=')) != NULL) { + /* argument found (--option=arg) */ + current_argv_len = has_equal - current_argv; + has_equal++; + } else + current_argv_len = strlen(current_argv); + + for (i = 0; long_options[i].name; i++) { + /* find matching long option */ + if (strncmp(current_argv, long_options[i].name, + current_argv_len)) + continue; + + if (strlen(long_options[i].name) == + (unsigned)current_argv_len) { + /* exact match */ + match = i; + break; + } + if (match == -1) /* partial match */ + match = i; + else { + /* ambiguous abbreviation */ + if (PRINT_ERROR) + warnx(ambig, (int)current_argv_len, + current_argv); + optopt = 0; + return BADCH; + } + } + if (match != -1) { /* option found */ + if (long_options[match].has_arg == no_argument + && has_equal) { + if (PRINT_ERROR) + warnx(noarg, (int)current_argv_len, + current_argv); + /* + * XXX: GNU sets optopt to val regardless of + * flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + return BADARG; + } + if (long_options[match].has_arg == required_argument || + long_options[match].has_arg == optional_argument) { + if (has_equal) + optarg = has_equal; + else if (long_options[match].has_arg == + required_argument) { + /* + * optional argument doesn't use + * next nargv + */ + optarg = nargv[optind++]; + } + } + if ((long_options[match].has_arg == required_argument) + && (optarg == NULL)) { + /* + * Missing argument; leading ':' + * indicates no error should be generated + */ + if (PRINT_ERROR) + warnx(recargstring, current_argv); + /* + * XXX: GNU sets optopt to val regardless + * of flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + --optind; + return BADARG; + } + } else { /* unknown option */ + if (PRINT_ERROR) + warnx(illoptstring, current_argv); + optopt = 0; + return BADCH; + } + if (long_options[match].flag) { + *long_options[match].flag = long_options[match].val; + retval = 0; + } else + retval = long_options[match].val; + if (idx) + *idx = match; + } + return retval; +} diff --git a/vendor/exiv2-0.25/src/getopt_win32.h b/vendor/exiv2-0.25/src/getopt_win32.h new file mode 100644 index 0000000..6b6f643 --- /dev/null +++ b/vendor/exiv2-0.25/src/getopt_win32.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 1987, 1993, 1994, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef __GETOPT_H__ +#define __GETOPT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +extern int opterr; /* if error message should be printed */ +extern int optind; /* index into parent argv vector */ +extern int optopt; /* character checked for validity */ +extern int optreset; /* reset getopt */ +extern char *optarg; /* argument associated with option */ + +int getopt (int, char * const *, const char *); + +#ifdef __cplusplus +} +#endif + +#endif /* __GETOPT_H__ */ + +#ifndef __UNISTD_GETOPT__ +#ifndef __GETOPT_LONG_H__ +#define __GETOPT_LONG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +struct option { + const char *name; + int has_arg; + int *flag; + int val; +}; + +int getopt_long (int, char *const *, const char *, const struct option *, int *); +#ifndef HAVE_DECL_GETOPT +#define HAVE_DECL_GETOPT 1 +#endif + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#ifdef __cplusplus +} +#endif + +#endif /* __GETOPT_LONG_H__ */ +#endif /* __UNISTD_GETOPT__ */ diff --git a/vendor/exiv2-0.25/src/gifimage.cpp b/vendor/exiv2-0.25/src/gifimage.cpp new file mode 100644 index 0000000..4cdd8fc --- /dev/null +++ b/vendor/exiv2-0.25/src/gifimage.cpp @@ -0,0 +1,141 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: gifimage.cpp + Version: $Rev: 3777 $ + Author(s): Marco Piovanelli, Ovolab (marco) + History: 26-Feb-2007, marco: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: gifimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "config.h" + +#include "gifimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + GifImage::GifImage(BasicIo::AutoPtr io) + : Image(ImageType::gif, mdNone, io) + { + } // GifImage::GifImage + + std::string GifImage::mimeType() const + { + return "image/gif"; + } + + void GifImage::setExifData(const ExifData& /*exifData*/) + { + // Todo: implement me! + throw(Error(32, "Exif metadata", "GIF")); + } + + void GifImage::setIptcData(const IptcData& /*iptcData*/) + { + // Todo: implement me! + throw(Error(32, "IPTC metadata", "GIF")); + } + + void GifImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "GIF")); + } + + void GifImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::GifImage::readMetadata: Reading GIF file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isGifType(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "GIF"); + } + clearMetadata(); + + byte buf[4]; + if (io_->read(buf, sizeof(buf)) == sizeof(buf)) + { + pixelWidth_ = getShort(buf, littleEndian); + pixelHeight_ = getShort(buf + 2, littleEndian); + } + } // GifImage::readMetadata + + void GifImage::writeMetadata() + { + // Todo: implement me! + throw(Error(31, "GIF")); + } // GifImage::writeMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newGifInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new GifImage(io)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isGifType(BasicIo& iIo, bool advance) + { + const int32_t len = 6; + const unsigned char Gif87aId[8] = { 'G', 'I', 'F', '8', '7', 'a' }; + const unsigned char Gif89aId[8] = { 'G', 'I', 'F', '8', '9', 'a' }; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) + { + return false; + } + bool matched = (memcmp(buf, Gif87aId, len) == 0) + || (memcmp(buf, Gif89aId, len) == 0); + if (!advance || !matched) + { + iIo.seek(-len, BasicIo::cur); + } + return matched; + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/http.cpp b/vendor/exiv2-0.25/src/http.cpp new file mode 100644 index 0000000..b8a429b --- /dev/null +++ b/vendor/exiv2-0.25/src/http.cpp @@ -0,0 +1,424 @@ +// ********************************************************* -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ + +/* + * http.cpp + */ + +// included header files +#include "config.h" + +#include "http.hpp" +#include "futils.hpp" + +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#pragma message("Using exiv2 http support") +#endif + +#define SLEEP 1000 +#define SNOOZE 0 + +#if defined(__MINGW32__) || defined(__MINGW64__) +#define fopen_S(f,n,a) f=fopen(n,a) +#endif + +//////////////////////////////////////// +// platform specific code +#if defined(WIN32) || defined(_MSC_VER) +#include +#include +#include +#ifndef __MINGW__ +#define snprintf sprintf_s +#define write _write +#define read _read +#define close _close +#define strdup _strdup +#define stat _stat +#define fopen_S(f,n,a) fopen_s(&f,n,a) +#endif +#else +//////////////////////////////////////// +// Unix or Mac + +#define closesocket close + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define fopen_S(f,n,o) f=fopen(n,o) +#define WINAPI +typedef unsigned long DWORD ; + +#define SOCKET_ERROR -1 +#define WSAEWOULDBLOCK EINPROGRESS +#define WSAENOTCONN EAGAIN + +static int WSAGetLastError() +{ + return errno ; +} + +static void Sleep(int millisecs) +{ + const struct timespec rqtp = { 0 , millisecs*1000000 } ; + struct timespec rmtp ; + nanosleep(&rqtp,&rmtp); +} + +#endif + +//////////////////////////////////////// +// code +const char* httpTemplate = +"%s %s HTTP/%s\r\n" // $verb $page $version +"User-Agent: exiv2http/1.0.0\r\n" +"Accept: */*\r\n" +"Host: %s\r\n" // $servername +"%s" // $header +"\r\n" +; + +#ifndef lengthof +#define lengthof(x) (sizeof(x)/sizeof((x)[0])) +#endif + +#define white(c) ((c == ' ') || (c == '\t')) + +#define FINISH -999 +#define OK(s) (200 <= s && s < 300) + +const char* blankLines[] = +{ "\r\n\r\n" // this is the standard +, "\n\n" // this is commonly sent by CGI scripts +} ; + +int snooze = SNOOZE ; +int sleep_ = SLEEP ; + +static void report(const char* msg,std::string& errors) +{ + errors += std::string(msg) + '\n'; +} + +static int forgive(int n,int& err) +{ + err = WSAGetLastError() ; + if ( !n && !err ) return FINISH ; +#ifndef WIN32 + if ( n == 0 ) return FINISH ; // server hungup +#endif + bool bForgive = err == WSAEWOULDBLOCK || err == WSAENOTCONN ; + bool bError = n == SOCKET_ERROR ; + if ( bError && bForgive ) return 0 ; + return n ; +} + +static int error(std::string errors,const char* msg,const char* x=NULL,const char* y=NULL,int z=0); +static int error(std::string errors,const char* msg,const char* x ,const char* y ,int z ) +{ + char buffer[512] ; +#ifdef MSDEV_2003 + sprintf(buffer,msg,x,y,z); +#else + snprintf(buffer,sizeof buffer,msg,x,y,z) ; +#endif + if ( errno ) { + perror(buffer) ; + } else { + fprintf(stderr,"%s\n",buffer); + } + report(buffer,errors) ; + return -1 ; +} + +static void flushBuffer(const char* buffer,size_t start,int& end,std::string& file) +{ + file += std::string(buffer+start,end-start) ; + end = 0 ; +} + +static Exiv2::dict_t stringToDict(const std::string& s) +{ + Exiv2::dict_t result; + std::string token; + + size_t i = 0; + while (i < s.length() ) + { + if ( s[i] != ',' ) { + if ( s[i] != ' ' ) + token += s[i]; + } else { + result[token]=token; + token=""; + } + i++; + } + result[token]=token; + return result; +} + +static int makeNonBlocking(int sockfd) +{ +#ifdef WIN32 + ULONG ioctl_opt = 1; + return ioctlsocket(sockfd, FIONBIO, &ioctl_opt); +#else + int result = fcntl(sockfd, F_SETFL, O_NONBLOCK); + return result >= 0 ? result : SOCKET_ERROR ; +#endif +} + +int Exiv2::http(dict_t& request,dict_t& response,std::string& errors) +{ + if ( !request.count("verb") ) request["verb" ] = "GET"; + if ( !request.count("header") ) request["header" ] = "" ; + if ( !request.count("version")) request["version"] = "1.0"; + if ( !request.count("port") ) request["port" ] = "" ; + + std::string file; + errors = ""; + int result = 0; + + //////////////////////////////////// + // Windows specific code +#ifdef WIN32 + WSADATA wsaData; + WSAStartup(MAKEWORD(2,2), &wsaData); +#endif + + const char* servername = request["server" ].c_str(); + const char* page = request["page" ].c_str(); + const char* verb = request["verb" ].c_str(); + const char* header = request["header" ].c_str(); + const char* version = request["version"].c_str(); + const char* port = request["port" ].c_str(); + + const char* servername_p = servername; + const char* port_p = port ; + std::string url = std::string("http://") + request["server"] + request["page"]; + + // parse and change server if using a proxy + const char* PROXI = "HTTP_PROXY"; + const char* proxi = "http_proxy"; + const char* PROXY = getenv(PROXI); + const char* proxy = getenv(proxi); + bool bProx = PROXY || proxy; + const char* prox = bProx ? (proxy?proxy:PROXY):""; + Exiv2::Uri Proxy = Exiv2::Uri::Parse(prox); + + // find the dictionary of no_proxy servers + const char* NO_PROXI = "NO_PROXY"; + const char* no_proxi = "no_proxy"; + const char* NO_PROXY = getenv(NO_PROXI); + const char* no_proxy = getenv(no_proxi); + bool bNoProxy = NO_PROXY||no_proxy; + std::string no_prox = std::string(bNoProxy?(no_proxy?no_proxy:NO_PROXY):""); + Exiv2::dict_t noProxy= stringToDict(no_prox + ",localhost,127.0.0.1"); + + // if the server is on the no_proxy list ... ignore the proxy! + if ( noProxy.count(servername) ) bProx = false; + + if ( bProx ) { + servername_p = Proxy.Host.c_str(); + port_p = Proxy.Port.c_str(); + page = url.c_str(); + std::string p(proxy?proxi:PROXI); + // std::cerr << p << '=' << prox << " page = " << page << std::endl; + } + if ( !port [0] ) port = "80"; + if ( !port_p[0] ) port_p = "80"; + + //////////////////////////////////// + // open the socket + int sockfd = (int) socket(AF_INET , SOCK_STREAM,IPPROTO_TCP) ; + if ( sockfd < 0 ) return error("unable to create socket\n",NULL,NULL,0) ; + + // connect the socket to the server + int server = -1 ; + + // fill in the address + struct sockaddr_in serv_addr ; + int serv_len = sizeof(serv_addr); + memset((char *)&serv_addr,0,serv_len); + + serv_addr.sin_addr.s_addr = inet_addr(servername_p); + serv_addr.sin_family = AF_INET ; + serv_addr.sin_port = htons(atoi(port_p)); + + // convert unknown servername into IP address + // http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzab6/rzab6uafinet.htm + if (serv_addr.sin_addr.s_addr == (unsigned long)INADDR_NONE) + { + struct hostent* host = gethostbyname(servername_p); + if ( !host ) return error("no such host",servername_p,NULL,0); + memcpy(&serv_addr.sin_addr,host->h_addr,sizeof(serv_addr.sin_addr)); + } + + makeNonBlocking(sockfd) ; + + //////////////////////////////////// + // and connect + server = connect(sockfd, (const struct sockaddr *) &serv_addr, serv_len) ; + if ( server == SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK ) + return error(errors,"error - unable to connect to server = %s port = %s wsa_error = %d",servername_p,port_p,WSAGetLastError()); + + char buffer[32*1024+1]; + size_t buff_l= sizeof buffer - 1 ; + + //////////////////////////////////// + // format the request +#ifdef MSDEV_2003 + int n = sprintf(buffer,httpTemplate,verb,page,version,servername,header) ; +#else + int n = snprintf(buffer,buff_l,httpTemplate,verb,page,version,servername,header) ; +#endif + buffer[n] = 0 ; + response["requestheaders"]=std::string(buffer,n); + + + //////////////////////////////////// + // send the header (we'll have to wait for the connection by the non-blocking socket) + while ( sleep_ >= 0 && send(sockfd,buffer,n,0) == SOCKET_ERROR /* && WSAGetLastError() == WSAENOTCONN */ ) { + Sleep(snooze) ; + sleep_ -= snooze ; + } + + if ( sleep_ < 0 ) + return error(errors,"error - timeout connecting to server = %s port = %s wsa_error = %d",servername,port,WSAGetLastError()); + + int end = 0 ; // write position in buffer + bool bSearching = true ; // looking for headers in the response + int status= 200 ; // assume happiness + + //////////////////////////////////// + // read and process the response + int err ; + n=forgive(recv(sockfd,buffer,(int)buff_l,0),err) ; + while ( n >= 0 && OK(status) ) { + if ( n ) { + end += n ; + buffer[end] = 0 ; + + size_t body = 0 ; // start of body + if ( bSearching ) { + + // search for the body + for ( size_t b = 0 ; bSearching && b < lengthof(blankLines) ; b++ ) { + if ( strstr(buffer,blankLines[b]) ) { + bSearching = false ; + body = (int) ( strstr(buffer,blankLines[b]) - buffer ) + strlen(blankLines[b]) ; + status = atoi(strchr(buffer,' ')) ; + } + } + + // parse response headers + char* h = buffer; + char C = ':' ; + char N = '\n'; + int i = 0 ; // initial byte in buffer + while(buffer[i] == N ) i++; + h = strchr(h+i,N)+1; + response[""]=std::string(buffer+i).substr(0,h-buffer-2); + result = atoi(strchr(buffer,' ')); + char* c = strchr(h,C); + char* n = strchr(h,N); + while ( c && n && c < n && h < buffer+body ) { + std::string key(h); + std::string value(c+1); + key = key.substr(0,c-h); + value = value.substr(0,n-c-1); + response[key]=value; + h = n+1; + c = strchr(h,C); + n = strchr(h,N); + } + } + + // if the bufffer's full and we're still searching - give up! + // this handles the possibility that there are no headers + if ( bSearching && buff_l-end < 10 ) { + bSearching = false ; + body = 0 ; + } + if ( !bSearching && OK(status) ) { + flushBuffer(buffer,body,end,file); + } + } + n=forgive(recv(sockfd,buffer+end,(int)(buff_l-end),0),err) ; + if ( !n ) { + Sleep(snooze) ; + sleep_ -= snooze ; + if ( sleep_ < 0 ) n = FINISH ; + } + } + + if ( n != FINISH || !OK(status) ) { +#ifdef MSDEV_2003 + sprintf(buffer,"wsa_error = %d,n = %d,sleep_ = %d status = %d" + , WSAGetLastError() + , n + , sleep_ + , status + ) ; +#else + snprintf(buffer,sizeof buffer,"wsa_error = %d,n = %d,sleep_ = %d status = %d" + , WSAGetLastError() + , n + , sleep_ + , status + ) ; +#endif + error(errors,buffer,NULL,NULL,0) ; + } else if ( bSearching && OK(status) ) { + if ( end ) { + // we finished OK without finding headers, flush the buffer + flushBuffer(buffer,0,end,file) ; + } else { + return error(errors,"error - no response from server = %s port = %s wsa_error = %d",servername,port,WSAGetLastError()); + } + } + + //////////////////////////////////// + // close sockets + closesocket(server) ; + closesocket(sockfd) ; + response["body"]=file; + return result; +} + +// That's all Folks diff --git a/vendor/exiv2-0.25/src/i18n.h b/vendor/exiv2-0.25/src/i18n.h new file mode 100644 index 0000000..66d9830 --- /dev/null +++ b/vendor/exiv2-0.25/src/i18n.h @@ -0,0 +1,50 @@ +/* **************************************************************** -*- C -*- */ +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: i18n.h + Brief: i18n definitions. Do not use. This is an Exiv2 internal header. + Version: $Rev: 2681 $ + Author(s): Gilles Caulier (gc) + History: 01-Nov-06, gc: created + */ +#ifndef I18N_H_ +#define I18N_H_ + +#include "config.h" + +/* NLS can be disabled through the configure --disable-nls option. */ +#ifdef EXV_ENABLE_NLS +# include + +// Definition is in types.cpp +EXIV2API const char* _exvGettext(const char* str); + +# define _(String) _exvGettext(String) +# define N_(String) String + +#else /* NLS is disabled */ + +# define _(String) (String) +# define N_(String) String + +#endif /* EXV_ENABLE_NLS */ + +#endif /* I18N_H_ */ diff --git a/vendor/exiv2-0.25/src/image.cpp b/vendor/exiv2-0.25/src/image.cpp new file mode 100644 index 0000000..d90bbf3 --- /dev/null +++ b/vendor/exiv2-0.25/src/image.cpp @@ -0,0 +1,628 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: image.cpp + Version: $Rev: 3846 $ + Author(s): Andreas Huggel (ahu) + Brad Schick (brad) + History: 26-Jan-04, ahu: created + 11-Feb-04, ahu: isolated as a component + 19-Jul-04, brad: revamped to be more flexible and support Iptc + 15-Jan-05, brad: inside-out design changes + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: image.cpp 3846 2015-06-08 14:39:59Z ahuggel $") + +// included header files +#include "config.h" + +#include "image.hpp" +#include "image_int.hpp" +#include "error.hpp" +#include "futils.hpp" + +#include "cr2image.hpp" +#include "crwimage.hpp" +#include "epsimage.hpp" +#include "jpgimage.hpp" +#include "mrwimage.hpp" +#ifdef EXV_HAVE_LIBZ +# include "pngimage.hpp" +#endif // EXV_HAVE_LIBZ +#include "rafimage.hpp" +#include "tiffimage.hpp" +#include "orfimage.hpp" +#include "gifimage.hpp" +#include "psdimage.hpp" +#include "tgaimage.hpp" +#include "bmpimage.hpp" +#include "jp2image.hpp" +#ifdef EXV_ENABLE_VIDEO +#include "matroskavideo.hpp" +#include "quicktimevideo.hpp" +#include "riffvideo.hpp" +#include "asfvideo.hpp" +#endif // EXV_ENABLE_VIDEO +#include "rw2image.hpp" +#include "pgfimage.hpp" +#include "xmpsidecar.hpp" + +// + standard includes +#include +#include +#include +#include +#include + +#include +#include +#include +#ifdef _MSC_VER +# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifdef EXV_HAVE_UNISTD_H +# include // stat +#endif + +// ***************************************************************************** +namespace { + + using namespace Exiv2; + + //! Struct for storing image types and function pointers. + struct Registry { + //! Comparison operator to compare a Registry structure with an image type + bool operator==(const int& imageType) const { return imageType == imageType_; } + + // DATA + int imageType_; + NewInstanceFct newInstance_; + IsThisTypeFct isThisType_; + AccessMode exifSupport_; + AccessMode iptcSupport_; + AccessMode xmpSupport_; + AccessMode commentSupport_; + }; + + const Registry registry[] = { + //image type creation fct type check Exif mode IPTC mode XMP mode Comment mode + //--------------- --------------- ---------- ----------- ----------- ----------- ------------ + { ImageType::jpeg, newJpegInstance, isJpegType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, + { ImageType::exv, newExvInstance, isExvType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, + { ImageType::cr2, newCr2Instance, isCr2Type, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::crw, newCrwInstance, isCrwType, amReadWrite, amNone, amNone, amReadWrite }, + { ImageType::mrw, newMrwInstance, isMrwType, amRead, amRead, amRead, amNone }, + { ImageType::tiff, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::dng, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::nef, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::pef, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::arw, newTiffInstance, isTiffType, amRead, amRead, amRead, amNone }, + { ImageType::rw2, newRw2Instance, isRw2Type, amRead, amRead, amRead, amNone }, + { ImageType::sr2, newTiffInstance, isTiffType, amRead, amRead, amRead, amNone }, + { ImageType::srw, newTiffInstance, isTiffType, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::orf, newOrfInstance, isOrfType, amReadWrite, amReadWrite, amReadWrite, amNone }, +#ifdef EXV_HAVE_LIBZ + { ImageType::png, newPngInstance, isPngType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, +#endif // EXV_HAVE_LIBZ + { ImageType::pgf, newPgfInstance, isPgfType, amReadWrite, amReadWrite, amReadWrite, amReadWrite }, + { ImageType::raf, newRafInstance, isRafType, amRead, amRead, amRead, amNone }, + { ImageType::eps, newEpsInstance, isEpsType, amNone, amNone, amReadWrite, amNone }, + { ImageType::xmp, newXmpInstance, isXmpType, amReadWrite, amReadWrite, amReadWrite, amNone }, + { ImageType::gif, newGifInstance, isGifType, amNone, amNone, amNone, amNone }, + { ImageType::psd, newPsdInstance, isPsdType, amRead, amRead, amRead, amNone }, + { ImageType::tga, newTgaInstance, isTgaType, amNone, amNone, amNone, amNone }, + { ImageType::bmp, newBmpInstance, isBmpType, amNone, amNone, amNone, amNone }, + { ImageType::jp2, newJp2Instance, isJp2Type, amReadWrite, amReadWrite, amReadWrite, amNone }, +#ifdef EXV_ENABLE_VIDEO + { ImageType::qtime,newQTimeInstance,isQTimeType,amRead, amNone, amRead, amNone }, + { ImageType::riff, newRiffInstance, isRiffType, amRead, amNone, amRead, amNone }, + { ImageType::asf, newAsfInstance, isAsfType, amNone, amNone, amRead, amNone }, + { ImageType::mkv, newMkvInstance, isMkvType, amNone, amNone, amRead, amNone }, +#endif // EXV_ENABLE_VIDEO + // End of list marker + { ImageType::none, 0, 0, amNone, amNone, amNone, amNone } + }; + +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + Image::Image(int imageType, + uint16_t supportedMetadata, + BasicIo::AutoPtr io) + : io_(io), + pixelWidth_(0), + pixelHeight_(0), + imageType_(imageType), + supportedMetadata_(supportedMetadata), +#ifdef EXV_HAVE_XMP_TOOLKIT + writeXmpFromPacket_(false), +#else + writeXmpFromPacket_(true), +#endif + byteOrder_(invalidByteOrder) + { + } + + Image::~Image() + { + } + + void Image::printStructure(std::ostream&, PrintStructureOption) + { + throw Error(13, io_->path()); + } + + void Image::clearMetadata() + { + clearExifData(); + clearIptcData(); + clearXmpPacket(); + clearXmpData(); + clearComment(); + } + + ExifData& Image::exifData() + { + return exifData_; + } + + IptcData& Image::iptcData() + { + return iptcData_; + } + + XmpData& Image::xmpData() + { + return xmpData_; + } + + std::string& Image::xmpPacket() + { + return xmpPacket_; + } + + void Image::setMetadata(const Image& image) + { + if (checkMode(mdExif) & amWrite) { + setExifData(image.exifData()); + } + if (checkMode(mdIptc) & amWrite) { + setIptcData(image.iptcData()); + } + if (checkMode(mdXmp) & amWrite) { + setXmpPacket(image.xmpPacket()); + setXmpData(image.xmpData()); + } + if (checkMode(mdComment) & amWrite) { + setComment(image.comment()); + } + } + + void Image::clearExifData() + { + exifData_.clear(); + } + + void Image::setExifData(const ExifData& exifData) + { + exifData_ = exifData; + } + + void Image::clearIptcData() + { + iptcData_.clear(); + } + + void Image::setIptcData(const IptcData& iptcData) + { + iptcData_ = iptcData; + } + + void Image::clearXmpPacket() + { + xmpPacket_.clear(); + writeXmpFromPacket(true); + } + + void Image::setXmpPacket(const std::string& xmpPacket) + { + xmpPacket_ = xmpPacket; + writeXmpFromPacket(true); + } + + void Image::clearXmpData() + { + xmpData_.clear(); + writeXmpFromPacket(false); + } + + void Image::setXmpData(const XmpData& xmpData) + { + xmpData_ = xmpData; + writeXmpFromPacket(false); + } + + void Image::writeXmpFromPacket(bool flag) + { +#ifdef EXV_HAVE_XMP_TOOLKIT + writeXmpFromPacket_ = flag; +#endif + } + + void Image::clearComment() + { + comment_.erase(); + } + + void Image::setComment(const std::string& comment) + { + comment_ = comment; + } + + void Image::setByteOrder(ByteOrder byteOrder) + { + byteOrder_ = byteOrder; + } + + ByteOrder Image::byteOrder() const + { + return byteOrder_; + } + + int Image::pixelWidth() const + { + return pixelWidth_; + } + + int Image::pixelHeight() const + { + return pixelHeight_; + } + + const ExifData& Image::exifData() const + { + return exifData_; + } + + const IptcData& Image::iptcData() const + { + return iptcData_; + } + + const XmpData& Image::xmpData() const + { + return xmpData_; + } + + std::string Image::comment() const + { + return comment_; + } + + const std::string& Image::xmpPacket() const + { + return xmpPacket_; + } + + BasicIo& Image::io() const + { + return *io_; + } + + bool Image::writeXmpFromPacket() const + { + return writeXmpFromPacket_; + } + + const NativePreviewList& Image::nativePreviews() const + { + return nativePreviews_; + } + + bool Image::good() const + { + if (io_->open() != 0) return false; + IoCloser closer(*io_); + return ImageFactory::checkType(imageType_, *io_, false); + } + + bool Image::supportsMetadata(MetadataId metadataId) const + { + return (supportedMetadata_ & metadataId) != 0; + } + + AccessMode Image::checkMode(MetadataId metadataId) const + { + return ImageFactory::checkMode(imageType_, metadataId); + } + + AccessMode ImageFactory::checkMode(int type, MetadataId metadataId) + { + const Registry* r = find(registry, type); + if (!r) throw Error(13, type); + AccessMode am = amNone; + switch (metadataId) { + case mdNone: + break; + case mdExif: + am = r->exifSupport_; + break; + case mdIptc: + am = r->iptcSupport_; + break; + case mdXmp: + am = r->xmpSupport_; + break; + case mdComment: + am = r->commentSupport_; + break; + // no default: let the compiler complain + } + return am; + } + + bool ImageFactory::checkType(int type, BasicIo& io, bool advance) + { + const Registry* r = find(registry, type); + if (0 != r) { + return r->isThisType_(io, advance); + } + return false; + } // ImageFactory::checkType + + int ImageFactory::getType(const std::string& path) + { + FileIo fileIo(path); + return getType(fileIo); + } + +#ifdef EXV_UNICODE_PATH + int ImageFactory::getType(const std::wstring& wpath) + { + FileIo fileIo(wpath); + return getType(fileIo); + } + +#endif + int ImageFactory::getType(const byte* data, long size) + { + MemIo memIo(data, size); + return getType(memIo); + } + + int ImageFactory::getType(BasicIo& io) + { + if (io.open() != 0) return ImageType::none; + IoCloser closer(io); + for (unsigned int i = 0; registry[i].imageType_ != ImageType::none; ++i) { + if (registry[i].isThisType_(io, false)) { + return registry[i].imageType_; + } + } + return ImageType::none; + } // ImageFactory::getType + + BasicIo::AutoPtr ImageFactory::createIo(const std::string& path, bool useCurl) + { + Protocol fProt = fileProtocol(path); +#if EXV_USE_SSH == 1 + if (fProt == pSsh || fProt == pSftp) { + return BasicIo::AutoPtr(new SshIo(path)); // may throw + } +#endif +#if EXV_USE_CURL == 1 + if (useCurl && (fProt == pHttp || fProt == pHttps || fProt == pFtp)) { + return BasicIo::AutoPtr(new CurlIo(path)); // may throw + } +#endif + if (fProt == pHttp) + return BasicIo::AutoPtr(new HttpIo(path)); // may throw + if (fProt == pFileUri) + return BasicIo::AutoPtr(new FileIo(pathOfFileUrl(path))); + if (fProt == pStdin || fProt == pDataUri) + return BasicIo::AutoPtr(new XPathIo(path)); // may throw + + return BasicIo::AutoPtr(new FileIo(path)); + + (void)(useCurl); + } // ImageFactory::createIo + +#ifdef EXV_UNICODE_PATH + BasicIo::AutoPtr ImageFactory::createIo(const std::wstring& wpath, bool useCurl) + { + Protocol fProt = fileProtocol(wpath); +#if EXV_USE_SSH == 1 + if (fProt == pSsh || fProt == pSftp) { + return BasicIo::AutoPtr(new SshIo(wpath)); + } +#endif +#if EXV_USE_CURL == 1 + if (useCurl && (fProt == pHttp || fProt == pHttps || fProt == pFtp)) { + return BasicIo::AutoPtr(new CurlIo(wpath)); + } +#endif + if (fProt == pHttp) + return BasicIo::AutoPtr(new HttpIo(wpath)); + if (fProt == pFileUri) + return BasicIo::AutoPtr(new FileIo(pathOfFileUrl(wpath))); + if (fProt == pStdin || fProt == pDataUri) + return BasicIo::AutoPtr(new XPathIo(wpath)); // may throw + return BasicIo::AutoPtr(new FileIo(wpath)); + } // ImageFactory::createIo +#endif + Image::AutoPtr ImageFactory::open(const std::string& path, bool useCurl) + { + Image::AutoPtr image = open(ImageFactory::createIo(path, useCurl)); // may throw + if (image.get() == 0) throw Error(11, path); + return image; + } + +#ifdef EXV_UNICODE_PATH + Image::AutoPtr ImageFactory::open(const std::wstring& wpath, bool useCurl) + { + Image::AutoPtr image = open(ImageFactory::createIo(wpath, useCurl)); // may throw + if (image.get() == 0) throw WError(11, wpath); + return image; + } + +#endif + Image::AutoPtr ImageFactory::open(const byte* data, long size) + { + BasicIo::AutoPtr io(new MemIo(data, size)); + Image::AutoPtr image = open(io); // may throw + if (image.get() == 0) throw Error(12); + return image; + } + + Image::AutoPtr ImageFactory::open(BasicIo::AutoPtr io) + { + if (io->open() != 0) { + throw Error(9, io->path(), strError()); + } + for (unsigned int i = 0; registry[i].imageType_ != ImageType::none; ++i) { + if (registry[i].isThisType_(*io, false)) { + return registry[i].newInstance_(io, false); + } + } + return Image::AutoPtr(); + } // ImageFactory::open + + Image::AutoPtr ImageFactory::create(int type, + const std::string& path) + { + std::auto_ptr fileIo(new FileIo(path)); + // Create or overwrite the file, then close it + if (fileIo->open("w+b") != 0) { + throw Error(10, path, "w+b", strError()); + } + fileIo->close(); + BasicIo::AutoPtr io(fileIo); + Image::AutoPtr image = create(type, io); + if (image.get() == 0) throw Error(13, type); + return image; + } + +#ifdef EXV_UNICODE_PATH + Image::AutoPtr ImageFactory::create(int type, + const std::wstring& wpath) + { + std::auto_ptr fileIo(new FileIo(wpath)); + // Create or overwrite the file, then close it + if (fileIo->open("w+b") != 0) { + throw WError(10, wpath, "w+b", strError().c_str()); + } + fileIo->close(); + BasicIo::AutoPtr io(fileIo); + Image::AutoPtr image = create(type, io); + if (image.get() == 0) throw Error(13, type); + return image; + } + +#endif + Image::AutoPtr ImageFactory::create(int type) + { + BasicIo::AutoPtr io(new MemIo); + Image::AutoPtr image = create(type, io); + if (image.get() == 0) throw Error(13, type); + return image; + } + + Image::AutoPtr ImageFactory::create(int type, + BasicIo::AutoPtr io) + { + // BasicIo instance does not need to be open + const Registry* r = find(registry, type); + if (0 != r) { + return r->newInstance_(io, true); + } + return Image::AutoPtr(); + } // ImageFactory::create + +// ***************************************************************************** +// template, inline and free functions + + void append(Blob& blob, const byte* buf, uint32_t len) + { + if (len != 0) { + assert(buf != 0); + Blob::size_type size = blob.size(); + if (blob.capacity() - size < len) { + blob.reserve(size + 65536); + } + blob.resize(size + len); + std::memcpy(&blob[size], buf, len); + } + } // append + +} // namespace Exiv2 + +namespace Exiv2 { + namespace Internal { + + std::string stringFormat(const char* format, ...) + { + std::string result; + + int need = (int) std::strlen(format)*2; // initial guess + char* buffer = NULL; + int again = 4; + int rc = -1; + + while (rc < 0 && again--) { + if ( buffer ) delete[] buffer; + need *= 2 ; + buffer = new char[need]; + if ( buffer ) { + va_list args; // variable arg list + va_start(args, format); // args start after format + rc=vsnprintf(buffer,(unsigned int)need, format, args); + va_end(args); // free the args + } + } + + if ( rc > 0 ) result = std::string(buffer) ; + if ( buffer ) delete[] buffer; // free buffer + return result; + } + + std::string binaryToString(DataBuf& buf, size_t size, size_t start /*=0*/) + { + std::string result = ""; + byte* buff = buf.pData_; + + size += start; + + while (start < size) { + int c = (int) buff[start++] ; + bool bTrailingNull = c == 0 && start == size; + if ( !bTrailingNull ) { + if (c < ' ' || c > 127) c = '.' ; + result += (char) c ; + } + } + return result; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/image_int.hpp b/vendor/exiv2-0.25/src/image_int.hpp new file mode 100644 index 0000000..fbc54b8 --- /dev/null +++ b/vendor/exiv2-0.25/src/image_int.hpp @@ -0,0 +1,59 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file image_int.hpp + @brief Internal image helpers + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 10-May-15, ahu: created + */ +#ifndef IMAGE_INT_HPP_ +#define IMAGE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief format a string in the pattern of \em sprintf \em . + */ + std::string stringFormat(const char* format, ...); + + /*! + @brief format binary for display in \em printStructure() \em . + */ + std::string binaryToString(DataBuf& buf, size_t size, size_t start =0); + +}} // namespace Internal, Exiv2 + +#endif // #ifndef IMAGE_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/iptc.cpp b/vendor/exiv2-0.25/src/iptc.cpp new file mode 100644 index 0000000..ce1eef0 --- /dev/null +++ b/vendor/exiv2-0.25/src/iptc.cpp @@ -0,0 +1,556 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: iptc.cpp + Version: $Rev: 3777 $ + Author(s): Brad Schick (brad) + History: 31-July-04, brad: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: iptc.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "iptc.hpp" +#include "types.hpp" +#include "error.hpp" +#include "value.hpp" +#include "datasets.hpp" +#include "jpgimage.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +namespace { + /*! + @brief Read a single dataset payload and create a new metadata entry. + + @param iptcData IPTC metadata container to add the dataset to + @param dataSet DataSet number + @param record Record Id + @param data Pointer to the first byte of dataset payload + @param sizeData Length in bytes of dataset payload + @return 0 if successful. + */ + int readData( + Exiv2::IptcData& iptcData, + uint16_t dataSet, + uint16_t record, + const Exiv2::byte* data, + uint32_t sizeData + ); + + //! Unary predicate that matches an Iptcdatum with given record and dataset + class FindIptcdatum { + public: + //! Constructor, initializes the object with the record and dataset id + FindIptcdatum(uint16_t dataset, uint16_t record) + : dataset_(dataset), record_(record) {} + /*! + @brief Returns true if the record and dataset id of the argument + Iptcdatum is equal to that of the object. + */ + bool operator()(const Exiv2::Iptcdatum& iptcdatum) const + { + return dataset_ == iptcdatum.tag() && record_ == iptcdatum.record(); + } + + private: + // DATA + uint16_t dataset_; + uint16_t record_; + + }; // class FindIptcdatum +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + Iptcdatum::Iptcdatum(const IptcKey& key, + const Value* pValue) + : key_(key.clone()) + { + if (pValue) value_ = pValue->clone(); + } + + Iptcdatum::Iptcdatum(const Iptcdatum& rhs) + : Metadatum(rhs) + { + if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy + if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy + } + + Iptcdatum::~Iptcdatum() + { + } + + long Iptcdatum::copy(byte* buf, ByteOrder byteOrder) const + { + return value_.get() == 0 ? 0 : value_->copy(buf, byteOrder); + } + + std::ostream& Iptcdatum::write(std::ostream& os, const ExifData*) const + { + return os << value(); + } + + std::string Iptcdatum::key() const + { + return key_.get() == 0 ? "" : key_->key(); + } + + std::string Iptcdatum::recordName() const + { + return key_.get() == 0 ? "" : key_->recordName(); + } + + uint16_t Iptcdatum::record() const + { + return key_.get() == 0 ? 0 : key_->record(); + } + + const char* Iptcdatum::familyName() const + { + return key_.get() == 0 ? "" : key_->familyName(); + } + + std::string Iptcdatum::groupName() const + { + return key_.get() == 0 ? "" : key_->groupName(); + } + + std::string Iptcdatum::tagName() const + { + return key_.get() == 0 ? "" : key_->tagName(); + } + + std::string Iptcdatum::tagLabel() const + { + return key_.get() == 0 ? "" : key_->tagLabel(); + } + + uint16_t Iptcdatum::tag() const + { + return key_.get() == 0 ? 0 : key_->tag(); + } + + TypeId Iptcdatum::typeId() const + { + return value_.get() == 0 ? invalidTypeId : value_->typeId(); + } + + const char* Iptcdatum::typeName() const + { + return TypeInfo::typeName(typeId()); + } + + long Iptcdatum::typeSize() const + { + return TypeInfo::typeSize(typeId()); + } + + long Iptcdatum::count() const + { + return value_.get() == 0 ? 0 : value_->count(); + } + + long Iptcdatum::size() const + { + return value_.get() == 0 ? 0 : value_->size(); + } + + std::string Iptcdatum::toString() const + { + return value_.get() == 0 ? "" : value_->toString(); + } + + std::string Iptcdatum::toString(long n) const + { + return value_.get() == 0 ? "" : value_->toString(n); + } + + long Iptcdatum::toLong(long n) const + { + return value_.get() == 0 ? -1 : value_->toLong(n); + } + + float Iptcdatum::toFloat(long n) const + { + return value_.get() == 0 ? -1 : value_->toFloat(n); + } + + Rational Iptcdatum::toRational(long n) const + { + return value_.get() == 0 ? Rational(-1, 1) : value_->toRational(n); + } + + Value::AutoPtr Iptcdatum::getValue() const + { + return value_.get() == 0 ? Value::AutoPtr(0) : value_->clone(); + } + + const Value& Iptcdatum::value() const + { + if (value_.get() == 0) throw Error(8); + return *value_; + } + + Iptcdatum& Iptcdatum::operator=(const Iptcdatum& rhs) + { + if (this == &rhs) return *this; + Metadatum::operator=(rhs); + + key_.reset(); + if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy + + value_.reset(); + if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy + + return *this; + } // Iptcdatum::operator= + + Iptcdatum& Iptcdatum::operator=(const uint16_t& value) + { + UShortValue::AutoPtr v(new UShortValue); + v->value_.push_back(value); + value_ = v; + return *this; + } + + Iptcdatum& Iptcdatum::operator=(const std::string& value) + { + setValue(value); + return *this; + } + + Iptcdatum& Iptcdatum::operator=(const Value& value) + { + setValue(&value); + return *this; + } + + void Iptcdatum::setValue(const Value* pValue) + { + value_.reset(); + if (pValue) value_ = pValue->clone(); + } + + int Iptcdatum::setValue(const std::string& value) + { + if (value_.get() == 0) { + TypeId type = IptcDataSets::dataSetType(tag(), record()); + value_ = Value::create(type); + } + return value_->read(value); + } + + Iptcdatum& IptcData::operator[](const std::string& key) + { + IptcKey iptcKey(key); + iterator pos = findKey(iptcKey); + if (pos == end()) { + add(Iptcdatum(iptcKey)); + pos = findKey(iptcKey); + } + return *pos; + } + + long IptcData::size() const + { + long newSize = 0; + const_iterator iter = iptcMetadata_.begin(); + const_iterator end = iptcMetadata_.end(); + for ( ; iter != end; ++iter) { + // marker, record Id, dataset num, first 2 bytes of size + newSize += 5; + long dataSize = iter->size(); + newSize += dataSize; + if (dataSize > 32767) { + // extended dataset (we always use 4 bytes) + newSize += 4; + } + } + return newSize; + } // IptcData::size + + int IptcData::add(const IptcKey& key, Value* value) + { + return add(Iptcdatum(key, value)); + } + + int IptcData::add(const Iptcdatum& iptcDatum) + { + if (!IptcDataSets::dataSetRepeatable( + iptcDatum.tag(), iptcDatum.record()) && + findId(iptcDatum.tag(), iptcDatum.record()) != end()) { + return 6; + } + // allow duplicates + iptcMetadata_.push_back(iptcDatum); + return 0; + } + + IptcData::const_iterator IptcData::findKey(const IptcKey& key) const + { + return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), + FindIptcdatum(key.tag(), key.record())); + } + + IptcData::iterator IptcData::findKey(const IptcKey& key) + { + return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), + FindIptcdatum(key.tag(), key.record())); + } + + IptcData::const_iterator IptcData::findId(uint16_t dataset, uint16_t record) const + { + return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), + FindIptcdatum(dataset, record)); + } + + IptcData::iterator IptcData::findId(uint16_t dataset, uint16_t record) + { + return std::find_if(iptcMetadata_.begin(), iptcMetadata_.end(), + FindIptcdatum(dataset, record)); + } + + void IptcData::sortByKey() + { + std::sort(iptcMetadata_.begin(), iptcMetadata_.end(), cmpMetadataByKey); + } + + void IptcData::sortByTag() + { + std::sort(iptcMetadata_.begin(), iptcMetadata_.end(), cmpMetadataByTag); + } + + IptcData::iterator IptcData::erase(IptcData::iterator pos) + { + return iptcMetadata_.erase(pos); + } + + const char *IptcData::detectCharset() const + { + const_iterator pos = findKey(IptcKey("Iptc.Envelope.CharacterSet")); + if (pos != end()) { + const std::string value = pos->toString(); + if (pos->value().ok()) { + if (value == "\033%G") return "UTF-8"; + // other values are probably not practically relevant + } + } + + bool ascii = true; + bool utf8 = true; + + for (pos = begin(); pos != end(); ++pos) { + std::string value = pos->toString(); + if (pos->value().ok()) { + int seqCount = 0; + std::string::iterator i; + for (i = value.begin(); i != value.end(); ++i) { + char c = *i; + if (seqCount) { + if ((c & 0xc0) != 0x80) { + utf8 = false; + break; + } + --seqCount; + } + else { + if (c & 0x80) ascii = false; + else continue; // ascii character + + if ((c & 0xe0) == 0xc0) seqCount = 1; + else if ((c & 0xf0) == 0xe0) seqCount = 2; + else if ((c & 0xf8) == 0xf0) seqCount = 3; + else if ((c & 0xfc) == 0xf8) seqCount = 4; + else if ((c & 0xfe) == 0xfc) seqCount = 5; + else { + utf8 = false; + break; + } + } + } + if (seqCount) utf8 = false; // unterminated seq + if (!utf8) break; + } + } + + if (ascii) return "ASCII"; + if (utf8) return "UTF-8"; + return NULL; + } + + const byte IptcParser::marker_ = 0x1C; // Dataset marker + + int IptcParser::decode( + IptcData& iptcData, + const byte* pData, + uint32_t size + ) + { +#ifdef DEBUG + std::cerr << "IptcParser::decode, size = " << size << "\n"; +#endif + const byte* pRead = pData; + iptcData.clear(); + + uint16_t record = 0; + uint16_t dataSet = 0; + uint32_t sizeData = 0; + byte extTest = 0; + + while (pRead + 3 < pData + size) { + // First byte should be a marker. If it isn't, scan forward and skip + // the chunk bytes present in some images. This deviates from the + // standard, which advises to treat such cases as errors. + if (*pRead++ != marker_) continue; + record = *pRead++; + dataSet = *pRead++; + + extTest = *pRead; + if (extTest & 0x80) { + // extended dataset + uint16_t sizeOfSize = (getUShort(pRead, bigEndian) & 0x7FFF); + if (sizeOfSize > 4) return 5; + pRead += 2; + sizeData = 0; + for (; sizeOfSize > 0; --sizeOfSize) { + sizeData |= *pRead++ << (8 *(sizeOfSize-1)); + } + } + else { + // standard dataset + sizeData = getUShort(pRead, bigEndian); + pRead += 2; + } + if (pRead + sizeData <= pData + size) { + int rc = 0; + if ((rc = readData(iptcData, dataSet, record, pRead, sizeData)) != 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to read IPTC dataset " + << IptcKey(dataSet, record) + << " (rc = " << rc << "); skipped.\n"; +#endif + } + } +#ifndef SUPPRESS_WARNINGS + else { + EXV_WARNING << "IPTC dataset " << IptcKey(dataSet, record) + << " has invalid size " << sizeData << "; skipped.\n"; + } +#endif + pRead += sizeData; + } + + return 0; + } // IptcParser::decode + + /*! + @brief Compare two iptc items by record. Return true if the record of + lhs is less than that of rhs. + + This is a helper function for IptcParser::encode(). + */ + bool cmpIptcdataByRecord(const Iptcdatum& lhs, const Iptcdatum& rhs) + { + return lhs.record() < rhs.record(); + } + + DataBuf IptcParser::encode(const IptcData& iptcData) + { + DataBuf buf(iptcData.size()); + byte *pWrite = buf.pData_; + + // Copy the iptc data sets and sort them by record but preserve the order of datasets + IptcMetadata sortedIptcData; + std::copy(iptcData.begin(), iptcData.end(), std::back_inserter(sortedIptcData)); + std::stable_sort(sortedIptcData.begin(), sortedIptcData.end(), cmpIptcdataByRecord); + + IptcData::const_iterator iter = sortedIptcData.begin(); + IptcData::const_iterator end = sortedIptcData.end(); + for ( ; iter != end; ++iter) { + // marker, record Id, dataset num + *pWrite++ = marker_; + *pWrite++ = static_cast(iter->record()); + *pWrite++ = static_cast(iter->tag()); + + // extended or standard dataset? + long dataSize = iter->size(); + if (dataSize > 32767) { + // always use 4 bytes for extended length + uint16_t sizeOfSize = 4 | 0x8000; + us2Data(pWrite, sizeOfSize, bigEndian); + pWrite += 2; + ul2Data(pWrite, dataSize, bigEndian); + pWrite += 4; + } + else { + us2Data(pWrite, static_cast(dataSize), bigEndian); + pWrite += 2; + } + pWrite += iter->value().copy(pWrite, bigEndian); + } + + return buf; + } // IptcParser::encode + +} // namespace Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + + int readData( + Exiv2::IptcData& iptcData, + uint16_t dataSet, + uint16_t record, + const Exiv2::byte* data, + uint32_t sizeData + ) + { + Exiv2::Value::AutoPtr value; + Exiv2::TypeId type = Exiv2::IptcDataSets::dataSetType(dataSet, record); + value = Exiv2::Value::create(type); + int rc = value->read(data, sizeData, Exiv2::bigEndian); + if (0 == rc) { + Exiv2::IptcKey key(dataSet, record); + iptcData.add(key, value.get()); + } + else if (1 == rc) { + // If the first attempt failed, try with a string value + value = Exiv2::Value::create(Exiv2::string); + rc = value->read(data, sizeData, Exiv2::bigEndian); + if (0 == rc) { + Exiv2::IptcKey key(dataSet, record); + iptcData.add(key, value.get()); + } + } + return rc; + } + +} diff --git a/vendor/exiv2-0.25/src/jp2image.cpp b/vendor/exiv2-0.25/src/jp2image.cpp new file mode 100644 index 0000000..5056bb6 --- /dev/null +++ b/vendor/exiv2-0.25/src/jp2image.cpp @@ -0,0 +1,629 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: jp2image.cpp + Version: $Rev: 3777 $ + Author(s): Marco Piovanelli, Ovolab (marco) + Author(s): Gilles Caulier (cgilles) + History: 12-Mar-2007, marco: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: jp2image.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "jp2image.hpp" +#include "tiffimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include + +// JPEG-2000 box types +const uint32_t kJp2BoxTypeJp2Header = 0x6a703268; // 'jp2h' +const uint32_t kJp2BoxTypeImageHeader = 0x69686472; // 'ihdr' +const uint32_t kJp2BoxTypeUuid = 0x75756964; // 'uuid' + +// JPEG-2000 UUIDs for embedded metadata +// +// See http://www.jpeg.org/public/wg1n2600.doc for information about embedding IPTC-NAA data in JPEG-2000 files +// See http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf for information about embedding XMP data in JPEG-2000 files +const unsigned char kJp2UuidExif[] = "JpgTiffExif->JP2"; +const unsigned char kJp2UuidIptc[] = "\x33\xc7\xa4\xd2\xb8\x1d\x47\x23\xa0\xba\xf1\xa3\xe0\x97\xad\x38"; +const unsigned char kJp2UuidXmp[] = "\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac"; + +// See section B.1.1 (JPEG 2000 Signature box) of JPEG-2000 specification +const unsigned char Jp2Signature[12] = { 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a }; + +const unsigned char Jp2Blank[] = { 0x00,0x00,0x00,0x0c,0x6a,0x50,0x20,0x20,0x0d,0x0a,0x87,0x0a,0x00,0x00,0x00,0x14, + 0x66,0x74,0x79,0x70,0x6a,0x70,0x32,0x20,0x00,0x00,0x00,0x00,0x6a,0x70,0x32,0x20, + 0x00,0x00,0x00,0x2d,0x6a,0x70,0x32,0x68,0x00,0x00,0x00,0x16,0x69,0x68,0x64,0x72, + 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x07,0x07,0x00,0x00,0x00,0x00, + 0x00,0x0f,0x63,0x6f,0x6c,0x72,0x01,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00, + 0x00,0x6a,0x70,0x32,0x63,0xff,0x4f,0xff,0x51,0x00,0x29,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07, + 0x01,0x01,0xff,0x64,0x00,0x23,0x00,0x01,0x43,0x72,0x65,0x61,0x74,0x6f,0x72,0x3a, + 0x20,0x4a,0x61,0x73,0x50,0x65,0x72,0x20,0x56,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20, + 0x31,0x2e,0x39,0x30,0x30,0x2e,0x31,0xff,0x52,0x00,0x0c,0x00,0x00,0x00,0x01,0x00, + 0x05,0x04,0x04,0x00,0x01,0xff,0x5c,0x00,0x13,0x40,0x40,0x48,0x48,0x50,0x48,0x48, + 0x50,0x48,0x48,0x50,0x48,0x48,0x50,0x48,0x48,0x50,0xff,0x90,0x00,0x0a,0x00,0x00, + 0x00,0x00,0x00,0x2d,0x00,0x01,0xff,0x5d,0x00,0x14,0x00,0x40,0x40,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x93,0xcf,0xb4, + 0x04,0x00,0x80,0x80,0x80,0x80,0x80,0xff,0xd9 + }; + +//! @cond IGNORE +struct Jp2BoxHeader +{ + uint32_t boxLength; + uint32_t boxType; +}; + +struct Jp2ImageHeaderBox +{ + uint32_t imageHeight; + uint32_t imageWidth; + uint16_t componentCount; + uint8_t bitsPerComponent; + uint8_t compressionType; + uint8_t colorspaceIsUnknown; + uint8_t intellectualPropertyFlag; + uint16_t compressionTypeProfile; +}; + +struct Jp2UuidBox +{ + uint8_t uuid[16]; +}; +//! @endcond + +// ***************************************************************************** +// class member definitions +namespace Exiv2 +{ + + Jp2Image::Jp2Image(BasicIo::AutoPtr io, bool create) + : Image(ImageType::jp2, mdExif | mdIptc | mdXmp, io) + { + if (create) + { + if (io_->open() == 0) + { +#ifdef DEBUG + std::cerr << "Exiv2::Jp2Image:: Creating JPEG2000 image to memory\n"; +#endif + IoCloser closer(*io_); + if (io_->write(Jp2Blank, sizeof(Jp2Blank)) != sizeof(Jp2Blank)) + { +#ifdef DEBUG + std::cerr << "Exiv2::Jp2Image:: Failed to create JPEG2000 image on memory\n"; +#endif + } + } + } + } // Jp2Image::Jp2Image + + std::string Jp2Image::mimeType() const + { + return "image/jp2"; + } + + void Jp2Image::setComment(const std::string& /*comment*/) + { + // Todo: implement me! + throw(Error(32, "Image comment", "JP2")); + } // Jp2Image::setComment + + void Jp2Image::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::Jp2Image::readMetadata: Reading JPEG-2000 file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isJp2Type(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "JPEG-2000"); + } + + long position = 0; + Jp2BoxHeader box = {0,0}; + Jp2BoxHeader subBox = {0,0}; + Jp2ImageHeaderBox ihdr = {0,0,0,0,0,0,0,0}; + Jp2UuidBox uuid = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; + + while (io_->read((byte*)&box, sizeof(box)) == sizeof(box)) + { + position = io_->tell(); + box.boxLength = getLong((byte*)&box.boxLength, bigEndian); +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Position: " << position << "\n"; + std::cout << "Exiv2::Jp2Image::readMetadata: Find box type: " << std::string((const char*)&box.boxType) + << " length: " << box.boxLength << "\n"; +#endif + box.boxType = getLong((byte*)&box.boxType, bigEndian); + + if (box.boxLength == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Null Box size has been found. " + "This is the last box of file.\n"; +#endif + return; + } + if (box.boxLength == 1) + { + // FIXME. Special case. the real box size is given in another place. + } + + switch(box.boxType) + { + case kJp2BoxTypeJp2Header: + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: JP2Header box found\n"; +#endif + + if (io_->read((byte*)&subBox, sizeof(subBox)) == sizeof(subBox)) + { + subBox.boxLength = getLong((byte*)&subBox.boxLength, bigEndian); + subBox.boxType = getLong((byte*)&subBox.boxType, bigEndian); + + if((subBox.boxType == kJp2BoxTypeImageHeader) && + (io_->read((byte*)&ihdr, sizeof(ihdr)) == sizeof(ihdr))) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Ihdr data found\n"; +#endif + + ihdr.imageHeight = getLong((byte*)&ihdr.imageHeight, bigEndian); + ihdr.imageWidth = getLong((byte*)&ihdr.imageWidth, bigEndian); + ihdr.componentCount = getShort((byte*)&ihdr.componentCount, bigEndian); + ihdr.compressionTypeProfile = getShort((byte*)&ihdr.compressionTypeProfile, bigEndian); + + pixelWidth_ = ihdr.imageWidth; + pixelHeight_ = ihdr.imageHeight; + } + } + break; + } + + case kJp2BoxTypeUuid: + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: UUID box found\n"; +#endif + + if (io_->read((byte*)&uuid, sizeof(uuid)) == sizeof(uuid)) + { + DataBuf rawData; + long bufRead; + + if(memcmp(uuid.uuid, kJp2UuidExif, sizeof(uuid)) == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Exif data found\n"; +#endif + + // we've hit an embedded Exif block + rawData.alloc(box.boxLength - (sizeof(box) + sizeof(uuid))); + bufRead = io_->read(rawData.pData_, rawData.size_); + if (io_->error()) throw Error(14); + if (bufRead != rawData.size_) throw Error(20); + + if (rawData.size_ > 0) + { + // Find the position of Exif header in bytes array. + + const byte exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 }; + long pos = -1; + + for (long i=0 ; i < rawData.size_-(long)sizeof(exifHeader) ; i++) + { + if (memcmp(exifHeader, &rawData.pData_[i], sizeof(exifHeader)) == 0) + { + pos = i; + break; + } + } + + // If found it, store only these data at from this place. + + if (pos !=-1) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Exif header found at position " << pos << "\n"; +#endif + pos = pos + sizeof(exifHeader); + ByteOrder bo = TiffParser::decode(exifData(), + iptcData(), + xmpData(), + rawData.pData_ + pos, + rawData.size_ - pos); + setByteOrder(bo); + } + } + else + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode Exif metadata.\n"; +#endif + exifData_.clear(); + } + } + else if(memcmp(uuid.uuid, kJp2UuidIptc, sizeof(uuid)) == 0) + { + // we've hit an embedded IPTC block +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Iptc data found\n"; +#endif + rawData.alloc(box.boxLength - (sizeof(box) + sizeof(uuid))); + bufRead = io_->read(rawData.pData_, rawData.size_); + if (io_->error()) throw Error(14); + if (bufRead != rawData.size_) throw Error(20); + + if (IptcParser::decode(iptcData_, rawData.pData_, rawData.size_)) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode IPTC metadata.\n"; +#endif + iptcData_.clear(); + } + } + else if(memcmp(uuid.uuid, kJp2UuidXmp, sizeof(uuid)) == 0) + { + // we've hit an embedded XMP block +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::readMetadata: Xmp data found\n"; +#endif + + rawData.alloc(box.boxLength - (uint32_t)(sizeof(box) + sizeof(uuid))); + bufRead = io_->read(rawData.pData_, rawData.size_); + if (io_->error()) throw Error(14); + if (bufRead != rawData.size_) throw Error(20); + xmpPacket_.assign(reinterpret_cast(rawData.pData_), rawData.size_); + + std::string::size_type idx = xmpPacket_.find_first_of('<'); + if (idx != std::string::npos && idx > 0) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Removing " << static_cast(idx) + << " characters from the beginning of the XMP packet\n"; +#endif + xmpPacket_ = xmpPacket_.substr(idx); + } + + if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + } + } + break; + } + + default: + { + break; + } + } + + // Move to the next box. + + io_->seek(static_cast(position - sizeof(box) + box.boxLength), BasicIo::beg); + if (io_->error() || io_->eof()) throw Error(14); + } + + } // Jp2Image::readMetadata + + void Jp2Image::writeMetadata() + { + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + BasicIo::AutoPtr tempIo(io_->temporary()); // may throw + assert (tempIo.get() != 0); + + doWriteMetadata(*tempIo); // may throw + io_->close(); + io_->transfer(*tempIo); // may throw + + } // Jp2Image::writeMetadata + + void Jp2Image::doWriteMetadata(BasicIo& outIo) + { + if (!io_->isopen()) throw Error(20); + if (!outIo.isopen()) throw Error(21); + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Writing JPEG-2000 file " << io_->path() << "\n"; + std::cout << "Exiv2::Jp2Image::doWriteMetadata: tmp file created " << outIo.path() << "\n"; +#endif + + // Ensure that this is the correct image type + if (!isJp2Type(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(20); + throw Error(22); + } + + // Write JPEG2000 Signature. + if (outIo.write(Jp2Signature, 12) != 12) throw Error(21); + + Jp2BoxHeader box = {0,0}; + + byte boxDataSize[4]; + byte boxUUIDtype[4]; + DataBuf bheaderBuf(8); // Box header : 4 bytes (data size) + 4 bytes (box type). + + // FIXME: Andreas, why the loop do not stop when EOF is taken from _io. The loop go out by an exception + // generated by a zero size data read. + + while(io_->tell() < io_->size()) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Position: " << io_->tell() << " / " << io_->size() << "\n"; +#endif + + // Read chunk header. + + std::memset(bheaderBuf.pData_, 0x00, bheaderBuf.size_); + long bufRead = io_->read(bheaderBuf.pData_, bheaderBuf.size_); + if (io_->error()) throw Error(14); + if (bufRead != bheaderBuf.size_) throw Error(20); + + // Decode box header. + + box.boxLength = getLong(bheaderBuf.pData_, bigEndian); + box.boxType = getLong(bheaderBuf.pData_ + 4, bigEndian); + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Find box type: " << bheaderBuf.pData_ + 4 + << " length: " << box.boxLength << "\n"; +#endif + + if (box.boxLength == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Null Box size has been found. " + "This is the last box of file.\n"; +#endif + box.boxLength = io_->size() - io_->tell() + 8; + } + if (box.boxLength == 1) + { + // FIXME. Special case. the real box size is given in another place. + } + + // Read whole box : Box header + Box data (not fixed size - can be null). + + DataBuf boxBuf(box.boxLength); // Box header (8 bytes) + box data. + memcpy(boxBuf.pData_, bheaderBuf.pData_, 8); // Copy header. + bufRead = io_->read(boxBuf.pData_ + 8, box.boxLength - 8); // Extract box data. + if (io_->error()) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Error reading source file\n"; +#endif + + throw Error(14); + } + + if (bufRead != (long)(box.boxLength - 8)) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Cannot read source file data\n"; +#endif + throw Error(20); + } + + switch(box.boxType) + { + case kJp2BoxTypeJp2Header: + { + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write JP2Header box (length: " << box.boxLength << ")\n"; +#endif + if (outIo.write(boxBuf.pData_, boxBuf.size_) != boxBuf.size_) throw Error(21); + + // Write all updated metadata here, just after JP2Header. + + if (exifData_.count() > 0) + { + // Update Exif data to a new UUID box + + Blob blob; + ExifParser::encode(blob, littleEndian, exifData_); + if (blob.size()) + { + const unsigned char ExifHeader[] = {0x45, 0x78, 0x69, 0x66, 0x00, 0x00}; + + DataBuf rawExif(static_cast(sizeof(ExifHeader) + blob.size())); + memcpy(rawExif.pData_, ExifHeader, sizeof(ExifHeader)); + memcpy(rawExif.pData_ + sizeof(ExifHeader), &blob[0], blob.size()); + + DataBuf boxData(8 + 16 + rawExif.size_); + ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian); + ul2Data(boxUUIDtype, kJp2BoxTypeUuid, Exiv2::bigEndian); + memcpy(boxData.pData_, boxDataSize, 4); + memcpy(boxData.pData_ + 4, boxUUIDtype, 4); + memcpy(boxData.pData_ + 8, kJp2UuidExif, 16); + memcpy(boxData.pData_ + 8 + 16, rawExif.pData_, rawExif.size_); + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Exif metadata (length: " + << boxData.size_ << ")\n"; +#endif + if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21); + } + } + + if (iptcData_.count() > 0) + { + // Update Iptc data to a new UUID box + + DataBuf rawIptc = IptcParser::encode(iptcData_); + if (rawIptc.size_ > 0) + { + DataBuf boxData(8 + 16 + rawIptc.size_); + ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian); + ul2Data(boxUUIDtype, kJp2BoxTypeUuid, Exiv2::bigEndian); + memcpy(boxData.pData_, boxDataSize, 4); + memcpy(boxData.pData_ + 4, boxUUIDtype, 4); + memcpy(boxData.pData_ + 8, kJp2UuidIptc, 16); + memcpy(boxData.pData_ + 8 + 16, rawIptc.pData_, rawIptc.size_); + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with Iptc metadata (length: " + << boxData.size_ << ")\n"; +#endif + if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21); + } + } + + if (writeXmpFromPacket() == false) + { + if (XmpParser::encode(xmpPacket_, xmpData_) > 1) + { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to encode XMP metadata.\n"; +#endif + } + } + if (xmpPacket_.size() > 0) + { + // Update Xmp data to a new UUID box + + DataBuf xmp(reinterpret_cast(xmpPacket_.data()), static_cast(xmpPacket_.size())); + DataBuf boxData(8 + 16 + xmp.size_); + ul2Data(boxDataSize, boxData.size_, Exiv2::bigEndian); + ul2Data(boxUUIDtype, kJp2BoxTypeUuid, Exiv2::bigEndian); + memcpy(boxData.pData_, boxDataSize, 4); + memcpy(boxData.pData_ + 4, boxUUIDtype, 4); + memcpy(boxData.pData_ + 8, kJp2UuidXmp, 16); + memcpy(boxData.pData_ + 8 + 16, xmp.pData_, xmp.size_); + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: Write box with XMP metadata (length: " + << boxData.size_ << ")\n"; +#endif + if (outIo.write(boxData.pData_, boxData.size_) != boxData.size_) throw Error(21); + } + + break; + } + + case kJp2BoxTypeUuid: + { + if(memcmp(boxBuf.pData_ + 8, kJp2UuidExif, 16) == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: strip Exif Uuid box\n"; +#endif + } + else if(memcmp(boxBuf.pData_ + 8, kJp2UuidIptc, 16) == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: strip Iptc Uuid box\n"; +#endif + } + else if(memcmp(boxBuf.pData_ + 8, kJp2UuidXmp, 16) == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: strip Xmp Uuid box\n"; +#endif + } + else + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: write Uuid box (length: " << box.boxLength << ")\n"; +#endif + if (outIo.write(boxBuf.pData_, boxBuf.size_) != boxBuf.size_) throw Error(21); + } + break; + } + + default: + { +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: write box (length: " << box.boxLength << ")\n"; +#endif + if (outIo.write(boxBuf.pData_, boxBuf.size_) != boxBuf.size_) throw Error(21); + + break; + } + } + } + +#ifdef DEBUG + std::cout << "Exiv2::Jp2Image::doWriteMetadata: EOF\n"; +#endif + + } // Jp2Image::doWriteMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newJp2Instance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new Jp2Image(io, create)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isJp2Type(BasicIo& iIo, bool advance) + { + const int32_t len = 12; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) + { + return false; + } + bool matched = (memcmp(buf, Jp2Signature, len) == 0); + if (!advance || !matched) + { + iIo.seek(-len, BasicIo::cur); + } + return matched; + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/jpgimage.cpp b/vendor/exiv2-0.25/src/jpgimage.cpp new file mode 100644 index 0000000..c6430c3 --- /dev/null +++ b/vendor/exiv2-0.25/src/jpgimage.cpp @@ -0,0 +1,1105 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: jpgimage.cpp + Version: $Rev: 3815 $ + Author(s): Andreas Huggel (ahu) + Brad Schick (brad) + Volker Grabsch (vog) + Michael Ulbrich (mul) + History: 15-Jan-05, brad: split out from image.cpp + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: jpgimage.cpp 3815 2015-05-10 09:37:34Z ahuggel $") + +// included header files +#include "config.h" + +#include "jpgimage.hpp" +#include "image_int.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include // for EOF +#include +#include + +// ***************************************************************************** +// class member definitions + +namespace Exiv2 { + + const byte JpegBase::dht_ = 0xc4; + const byte JpegBase::dqt_ = 0xdb; + const byte JpegBase::dri_ = 0xdd; + const byte JpegBase::sos_ = 0xda; + const byte JpegBase::eoi_ = 0xd9; + const byte JpegBase::app0_ = 0xe0; + const byte JpegBase::app1_ = 0xe1; + const byte JpegBase::app13_ = 0xed; + const byte JpegBase::com_ = 0xfe; + +// Start of Frame markers, nondifferential Huffman-coding frames + const byte JpegBase::sof0_ = 0xc0; // start of frame 0, baseline DCT + const byte JpegBase::sof1_ = 0xc1; // start of frame 1, extended sequential DCT, Huffman coding + const byte JpegBase::sof2_ = 0xc2; // start of frame 2, progressive DCT, Huffman coding + const byte JpegBase::sof3_ = 0xc3; // start of frame 3, lossless sequential, Huffman coding + +// Start of Frame markers, differential Huffman-coding frames + const byte JpegBase::sof5_ = 0xc5; // start of frame 5, differential sequential DCT, Huffman coding + const byte JpegBase::sof6_ = 0xc6; // start of frame 6, differential progressive DCT, Huffman coding + const byte JpegBase::sof7_ = 0xc7; // start of frame 7, differential lossless, Huffman coding + +// Start of Frame markers, nondifferential arithmetic-coding frames + const byte JpegBase::sof9_ = 0xc9; // start of frame 9, extended sequential DCT, arithmetic coding + const byte JpegBase::sof10_ = 0xca; // start of frame 10, progressive DCT, arithmetic coding + const byte JpegBase::sof11_ = 0xcb; // start of frame 11, lossless sequential, arithmetic coding + +// Start of Frame markers, differential arithmetic-coding frames + const byte JpegBase::sof13_ = 0xcd; // start of frame 13, differential sequential DCT, arithmetic coding + const byte JpegBase::sof14_ = 0xce; // start of frame 14, progressive DCT, arithmetic coding + const byte JpegBase::sof15_ = 0xcf; // start of frame 15, differential lossless, arithmetic coding + + const char JpegBase::exifId_[] = "Exif\0\0"; + const char JpegBase::jfifId_[] = "JFIF\0"; + const char JpegBase::xmpId_[] = "http://ns.adobe.com/xap/1.0/\0"; + + const char Photoshop::ps3Id_[] = "Photoshop 3.0\0"; + const char* Photoshop::irbId_[] = {"8BIM", "AgHg", "DCSR", "PHUT"}; + const char Photoshop::bimId_[] = "8BIM"; // deprecated + const uint16_t Photoshop::iptc_ = 0x0404; + const uint16_t Photoshop::preview_ = 0x040c; + + bool Photoshop::isIrb(const byte* pPsData, + long sizePsData) + { + if (sizePsData < 4) return false; + for (size_t i = 0; i < (sizeof irbId_) / (sizeof *irbId_); i++) { + assert(strlen(irbId_[i]) == 4); + if (memcmp(pPsData, irbId_[i], 4) == 0) return true; + } + return false; + } + + bool Photoshop::valid(const byte* pPsData, + long sizePsData) + { + const byte *record = 0; + uint32_t sizeIptc = 0; + uint32_t sizeHdr = 0; + const byte* pCur = pPsData; + const byte* pEnd = pPsData + sizePsData; + int ret = 0; + while (pCur < pEnd + && 0 == (ret = Photoshop::locateIptcIrb(pCur, static_cast(pEnd - pCur), + &record, &sizeHdr, &sizeIptc))) { + pCur = record + sizeHdr + sizeIptc + (sizeIptc & 1); + } + return ret >= 0; + } + + // Todo: Generalised from JpegBase::locateIptcData without really understanding + // the format (in particular the header). So it remains to be confirmed + // if this also makes sense for psTag != Photoshop::iptc + int Photoshop::locateIrb(const byte* pPsData, + long sizePsData, + uint16_t psTag, + const byte** record, + uint32_t *const sizeHdr, + uint32_t *const sizeData) + { + assert(record); + assert(sizeHdr); + assert(sizeData); + // Used for error checking + long position = 0; +#ifdef DEBUG + std::cerr << "Photoshop::locateIrb: "; +#endif + // Data should follow Photoshop format, if not exit + while (position <= sizePsData - 12 && isIrb(pPsData + position, 4)) { + const byte *hrd = pPsData + position; + position += 4; + uint16_t type = getUShort(pPsData + position, bigEndian); + position += 2; +#ifdef DEBUG + std::cerr << "0x" << std::hex << type << std::dec << " "; +#endif + // Pascal string is padded to have an even size (including size byte) + byte psSize = pPsData[position] + 1; + psSize += (psSize & 1); + position += psSize; + if (position + 4 > sizePsData) { +#ifdef DEBUG + std::cerr << "Warning: " + << "Invalid or extended Photoshop IRB\n"; +#endif + return -2; + } + uint32_t dataSize = getULong(pPsData + position, bigEndian); + position += 4; + if (dataSize > static_cast(sizePsData - position)) { +#ifdef DEBUG + std::cerr << "Warning: " + << "Invalid Photoshop IRB data size " + << dataSize << " or extended Photoshop IRB\n"; +#endif + return -2; + } +#ifndef DEBUG + if ( (dataSize & 1) + && position + dataSize == static_cast(sizePsData)) { + std::cerr << "Warning: " + << "Photoshop IRB data is not padded to even size\n"; + } +#endif + if (type == psTag) { +#ifdef DEBUG + std::cerr << "ok\n"; +#endif + *sizeData = dataSize; + *sizeHdr = psSize + 10; + *record = hrd; + return 0; + } + // Data size is also padded to be even + position += dataSize + (dataSize & 1); + } +#ifdef DEBUG + std::cerr << "pPsData doesn't start with '8BIM'\n"; +#endif + if (position < sizePsData) { +#ifdef DEBUG + std::cerr << "Warning: " + << "Invalid or extended Photoshop IRB\n"; +#endif + return -2; + } + return 3; + } // Photoshop::locateIrb + + int Photoshop::locateIptcIrb(const byte* pPsData, + long sizePsData, + const byte** record, + uint32_t *const sizeHdr, + uint32_t *const sizeData) + { + return locateIrb(pPsData, sizePsData, iptc_, + record, sizeHdr, sizeData); + } + + int Photoshop::locatePreviewIrb(const byte* pPsData, + long sizePsData, + const byte** record, + uint32_t *const sizeHdr, + uint32_t *const sizeData) + { + return locateIrb(pPsData, sizePsData, preview_, + record, sizeHdr, sizeData); + } + + DataBuf Photoshop::setIptcIrb(const byte* pPsData, + long sizePsData, + const IptcData& iptcData) + { + if (sizePsData > 0) assert(pPsData); +#ifdef DEBUG + std::cerr << "IRB block at the beginning of Photoshop::setIptcIrb\n"; + if (sizePsData == 0) std::cerr << " None.\n"; + else hexdump(std::cerr, pPsData, sizePsData); +#endif + const byte* record = pPsData; + uint32_t sizeIptc = 0; + uint32_t sizeHdr = 0; + DataBuf rc; + // Safe to call with zero psData.size_ + if (0 > Photoshop::locateIptcIrb(pPsData, sizePsData, + &record, &sizeHdr, &sizeIptc)) { + return rc; + } + Blob psBlob; + const uint32_t sizeFront = static_cast(record - pPsData); + // Write data before old record. + if (sizePsData > 0 && sizeFront > 0) { + append(psBlob, pPsData, sizeFront); + } + // Write new iptc record if we have it + DataBuf rawIptc = IptcParser::encode(iptcData); + if (rawIptc.size_ > 0) { + byte tmpBuf[12]; + std::memcpy(tmpBuf, Photoshop::irbId_[0], 4); + us2Data(tmpBuf + 4, iptc_, bigEndian); + tmpBuf[6] = 0; + tmpBuf[7] = 0; + ul2Data(tmpBuf + 8, rawIptc.size_, bigEndian); + append(psBlob, tmpBuf, 12); + append(psBlob, rawIptc.pData_, rawIptc.size_); + // Data is padded to be even (but not included in size) + if (rawIptc.size_ & 1) psBlob.push_back(0x00); + } + // Write existing stuff after record, + // skip the current and all remaining IPTC blocks + long pos = sizeFront; + while (0 == Photoshop::locateIptcIrb(pPsData + pos, sizePsData - pos, + &record, &sizeHdr, &sizeIptc)) { + const long newPos = static_cast(record - pPsData); + // Copy data up to the IPTC IRB + if (newPos > pos) { + append(psBlob, pPsData + pos, newPos - pos); + } + // Skip the IPTC IRB + pos = newPos + sizeHdr + sizeIptc + (sizeIptc & 1); + } + if (pos < sizePsData) { + append(psBlob, pPsData + pos, sizePsData - pos); + } + // Data is rounded to be even + if (psBlob.size() > 0) rc = DataBuf(&psBlob[0], static_cast(psBlob.size())); +#ifdef DEBUG + std::cerr << "IRB block at the end of Photoshop::setIptcIrb\n"; + if (rc.size_ == 0) std::cerr << " None.\n"; + else hexdump(std::cerr, rc.pData_, rc.size_); +#endif + return rc; + + } // Photoshop::setIptcIrb + + JpegBase::JpegBase(int type, BasicIo::AutoPtr io, bool create, + const byte initData[], long dataSize) + : Image(type, mdExif | mdIptc | mdXmp | mdComment, io) + { + if (create) { + initImage(initData, dataSize); + } + } + + int JpegBase::initImage(const byte initData[], long dataSize) + { + if (io_->open() != 0) { + return 4; + } + IoCloser closer(*io_); + if (io_->write(initData, dataSize) != dataSize) { + return 4; + } + return 0; + } + + int JpegBase::advanceToMarker() const + { + int c = -1; + // Skips potential padding between markers + while ((c=io_->getb()) != 0xff) { + if (c == EOF) return -1; + } + + // Markers can start with any number of 0xff + while ((c=io_->getb()) == 0xff) { + if (c == EOF) return -2; + } + return c; + } + + void JpegBase::readMetadata() + { + int rc = 0; // Todo: this should be the return value + + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isThisType(*io_, true)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(15); + } + clearMetadata(); + int search = 5; + const long bufMinSize = 36; + long bufRead = 0; + DataBuf buf(bufMinSize); + Blob psBlob; + bool foundCompletePsData = false; + bool foundExifData = false; + bool foundXmpData = false; + + // Read section marker + int marker = advanceToMarker(); + if (marker < 0) throw Error(15); + + while (marker != sos_ && marker != eoi_ && search > 0) { + // Read size and signature (ok if this hits EOF) + std::memset(buf.pData_, 0x0, buf.size_); + bufRead = io_->read(buf.pData_, bufMinSize); + if (io_->error()) throw Error(14); + if (bufRead < 2) throw Error(15); + uint16_t size = getUShort(buf.pData_, bigEndian); + + if ( !foundExifData + && marker == app1_ && memcmp(buf.pData_ + 2, exifId_, 6) == 0) { + if (size < 8) { + rc = 1; + break; + } + // Seek to beginning and read the Exif data + io_->seek(8 - bufRead, BasicIo::cur); + DataBuf rawExif(size - 8); + io_->read(rawExif.pData_, rawExif.size_); + if (io_->error() || io_->eof()) throw Error(14); + ByteOrder bo = ExifParser::decode(exifData_, rawExif.pData_, rawExif.size_); + setByteOrder(bo); + if (rawExif.size_ > 0 && byteOrder() == invalidByteOrder) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode Exif metadata.\n"; +#endif + exifData_.clear(); + } + --search; + foundExifData = true; + } + else if ( !foundXmpData + && marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) { + if (size < 31) { + rc = 6; + break; + } + // Seek to beginning and read the XMP packet + io_->seek(31 - bufRead, BasicIo::cur); + DataBuf xmpPacket(size - 31); + io_->read(xmpPacket.pData_, xmpPacket.size_); + if (io_->error() || io_->eof()) throw Error(14); + xmpPacket_.assign(reinterpret_cast(xmpPacket.pData_), xmpPacket.size_); + if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + --search; + foundXmpData = true; + } + else if ( !foundCompletePsData + && marker == app13_ && memcmp(buf.pData_ + 2, Photoshop::ps3Id_, 14) == 0) { + if (size < 16) { + rc = 2; + break; + } + // Read the rest of the APP13 segment + io_->seek(16 - bufRead, BasicIo::cur); + DataBuf psData(size - 16); + io_->read(psData.pData_, psData.size_); + if (io_->error() || io_->eof()) throw Error(14); +#ifdef DEBUG + std::cerr << "Found app13 segment, size = " << size << "\n"; + //hexdump(std::cerr, psData.pData_, psData.size_); +#endif + // Append to psBlob + append(psBlob, psData.pData_, psData.size_); + // Check whether psBlob is complete + if (psBlob.size() > 0 && Photoshop::valid(&psBlob[0], (long) psBlob.size())) { + --search; + foundCompletePsData = true; + } + } + else if (marker == com_ && comment_.empty()) + { + if (size < 2) { + rc = 3; + break; + } + // JPEGs can have multiple comments, but for now only read + // the first one (most jpegs only have one anyway). Comments + // are simple single byte ISO-8859-1 strings. + io_->seek(2 - bufRead, BasicIo::cur); + DataBuf comment(size - 2); + io_->read(comment.pData_, comment.size_); + if (io_->error() || io_->eof()) throw Error(14); + comment_.assign(reinterpret_cast(comment.pData_), comment.size_); + while ( comment_.length() + && comment_.at(comment_.length()-1) == '\0') { + comment_.erase(comment_.length()-1); + } + --search; + } + else if ( pixelHeight_ == 0 + && ( marker == sof0_ || marker == sof1_ || marker == sof2_ + || marker == sof3_ || marker == sof5_ || marker == sof6_ + || marker == sof7_ || marker == sof9_ || marker == sof10_ + || marker == sof11_ || marker == sof13_ || marker == sof14_ + || marker == sof15_)) { + // We hit a SOFn (start-of-frame) marker + if (size < 8) { + rc = 7; + break; + } + pixelHeight_ = getUShort(buf.pData_ + 3, bigEndian); + pixelWidth_ = getUShort(buf.pData_ + 5, bigEndian); + if (pixelHeight_ != 0) --search; + // Skip the remainder of the segment + io_->seek(size-bufRead, BasicIo::cur); + } + else { + if (size < 2) { + rc = 4; + break; + } + // Skip the remainder of the unknown segment + if (io_->seek(size - bufRead, BasicIo::cur)) throw Error(14); + } + // Read the beginning of the next segment + marker = advanceToMarker(); + if (marker < 0) { + rc = 5; + break; + } + } // while there are segments to process + + if (psBlob.size() > 0) { + // Find actual IPTC data within the psBlob + Blob iptcBlob; + const byte *record = 0; + uint32_t sizeIptc = 0; + uint32_t sizeHdr = 0; + const byte* pCur = &psBlob[0]; + const byte* pEnd = pCur + psBlob.size(); + while ( pCur < pEnd + && 0 == Photoshop::locateIptcIrb(pCur, static_cast(pEnd - pCur), + &record, &sizeHdr, &sizeIptc)) { +#ifdef DEBUG + std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n"; +#endif + if (sizeIptc) { + append(iptcBlob, record + sizeHdr, sizeIptc); + } + pCur = record + sizeHdr + sizeIptc + (sizeIptc & 1); + } + if ( iptcBlob.size() > 0 + && IptcParser::decode(iptcData_, + &iptcBlob[0], + static_cast(iptcBlob.size()))) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode IPTC metadata.\n"; +#endif + iptcData_.clear(); + } + } // psBlob.size() > 0 + + if (rc != 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "JPEG format error, rc = " << rc << "\n"; +#endif + } + } // JpegBase::readMetadata + + bool isBlank(std::string& s) + { + for ( std::size_t i = 0 ; i < s.length() ; i++ ) + if ( s[i] != ' ' ) + return false ; + return true ; + } + +#define REPORT_MARKER if ( option == kpsBasic ) out << Internal::stringFormat("%8ld | %#02x %-5s",io_->tell(), marker,nm[marker].c_str()) + + void JpegBase::printStructure(std::ostream& out, PrintStructureOption option) + { + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + // Ensure that this is the correct image type + if (!isThisType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(15); + } + + if ( option == kpsBasic || option == kpsXMP ) { + + // nmonic for markers + std::string nm[256] ; + nm[0xd8]="SOI" ; + nm[0xd9]="EOI" ; + nm[0xda]="SOS" ; + nm[0xdb]="DQT" ; + nm[0xdd]="DRI" ; + nm[0xfe]="COM" ; + + // 0xe0 .. 0xef are APPn + // 0xc0 .. 0xcf are SOFn (except 4) + nm[0xc4]="DHT" ; + for ( int i = 0 ; i <= 15 ; i++ ) { + char MN[10]; + sprintf(MN,"APP%d",i); + nm[0xe0+i] = MN; + if ( i != 4 ) { + sprintf(MN,"SOF%d",i); + nm[0xc0+i] = MN; + } + } + + // Container for the signature + bool bExtXMP = false; + long bufRead = 0; + const long bufMinSize = 36; + DataBuf buf(bufMinSize); + + // Read section marker + int marker = advanceToMarker(); + if (marker < 0) throw Error(15); + + bool done = false; + bool first= true; + while (!done) { + // print marker bytes + if ( first && option == kpsBasic ) { + out << "STRUCTURE OF JPEG FILE: " << io_->path() << std::endl; + out << " address | marker | length | data" << std::endl ; + REPORT_MARKER; + } + first = false; + + // Read size and signature + std::memset(buf.pData_, 0x0, buf.size_); + bufRead = io_->read(buf.pData_, bufMinSize); + if (io_->error()) throw Error(14); + if (bufRead < 2) throw Error(15); + uint16_t size = 0; + + // not all markers have size field. + if( ( marker >= sof0_ && marker <= sof15_) + || ( marker >= app0_ && marker <= (app0_ | 0x0F)) + || marker == dht_ + || marker == dqt_ + || marker == dri_ + || marker == com_ + || marker == sos_ + ){ + size = getUShort(buf.pData_, bigEndian); + } + if ( option == kpsBasic ) out << Internal::stringFormat(" | %7d ", size); + + // only print the signature for appn + if (marker >= app0_ && marker <= (app0_ | 0x0F)) { + char http[5]; + http[4]=0; + memcpy(http,buf.pData_+2,4); + if ( option == kpsXMP && std::strcmp(http,"http") == 0 ) { + // http://ns.adobe.com/xap/1.0/ + if ( size > 0 ) { + io_->seek(-bufRead , BasicIo::cur); + byte* xmp = new byte[size+1]; + io_->read(xmp,size); + int start = 0 ; + + // http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart3.pdf + // if we find HasExtendedXMP, set the flag and ignore this block + // the first extended block is a copy of the Standard block. + // a robust implementation enables extended blocks to be out of sequence + if ( ! bExtXMP ) { + while (xmp[start]) start++; start++; + if ( ::strstr((char*)xmp+start,"HasExtendedXMP") ) { + start = size ; // ignore this packet, we'll get on the next time around + bExtXMP = true; + } + } else { + start = 2+35+32+4+4; // Adobe Spec, p19 + } + xmp[size]=0; + + out << xmp + start; // this is all we need to output without the blank line dance. + delete [] xmp; + bufRead = size; + } + } else if ( option == kpsBasic ) { + out << "| " << Internal::binaryToString(buf,32,size>0?2:0); + } + } + + // Skip the segment if the size is known + if (io_->seek(size - bufRead, BasicIo::cur)) throw Error(14); + + if ( option == kpsBasic ) out << std::endl; + + if (marker == sos_) + // sos_ is immediately followed by entropy-coded data & eoi_ + done = true; + else { + // Read the beginning of the next segment + marker = advanceToMarker(); + REPORT_MARKER; + if ( marker == eoi_ ) { + if ( option == kpsBasic ) out << std::endl; + done = true; + } + } + } + } + } + + void JpegBase::writeMetadata() + { + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + BasicIo::AutoPtr tempIo(io_->temporary()); // may throw + assert (tempIo.get() != 0); + + doWriteMetadata(*tempIo); // may throw + io_->close(); + io_->transfer(*tempIo); // may throw + } // JpegBase::writeMetadata + + void JpegBase::doWriteMetadata(BasicIo& outIo) + { + if (!io_->isopen()) throw Error(20); + if (!outIo.isopen()) throw Error(21); + + // Ensure that this is the correct image type + if (!isThisType(*io_, true)) { + if (io_->error() || io_->eof()) throw Error(20); + throw Error(22); + } + + const long bufMinSize = 36; + long bufRead = 0; + DataBuf buf(bufMinSize); + const long seek = io_->tell(); + int count = 0; + int search = 0; + int insertPos = 0; + int comPos = 0; + int skipApp1Exif = -1; + int skipApp1Xmp = -1; + bool foundCompletePsData = false; + std::vector skipApp13Ps3; + int skipCom = -1; + Blob psBlob; + DataBuf rawExif; + + // Write image header + if (writeHeader(outIo)) throw Error(21); + + // Read section marker + int marker = advanceToMarker(); + if (marker < 0) throw Error(22); + + // First find segments of interest. Normally app0 is first and we want + // to insert after it. But if app0 comes after com, app1 and app13 then + // don't bother. + while (marker != sos_ && marker != eoi_ && search < 5) { + // Read size and signature (ok if this hits EOF) + bufRead = io_->read(buf.pData_, bufMinSize); + if (io_->error()) throw Error(20); + uint16_t size = getUShort(buf.pData_, bigEndian); + + if (marker == app0_) { + if (size < 2) throw Error(22); + insertPos = count + 1; + if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); + } + else if ( skipApp1Exif == -1 + && marker == app1_ && memcmp(buf.pData_ + 2, exifId_, 6) == 0) { + if (size < 8) throw Error(22); + skipApp1Exif = count; + ++search; + // Seek to beginning and read the current Exif data + io_->seek(8 - bufRead, BasicIo::cur); + rawExif.alloc(size - 8); + io_->read(rawExif.pData_, rawExif.size_); + if (io_->error() || io_->eof()) throw Error(22); + } + else if ( skipApp1Xmp == -1 + && marker == app1_ && memcmp(buf.pData_ + 2, xmpId_, 29) == 0) { + if (size < 31) throw Error(22); + skipApp1Xmp = count; + ++search; + if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); + } + else if ( !foundCompletePsData + && marker == app13_ && memcmp(buf.pData_ + 2, Photoshop::ps3Id_, 14) == 0) { +#ifdef DEBUG + std::cerr << "Found APP13 Photoshop PS3 segment\n"; +#endif + if (size < 16) throw Error(22); + skipApp13Ps3.push_back(count); + io_->seek(16 - bufRead, BasicIo::cur); + // Load PS data now to allow reinsertion at any point + DataBuf psData(size - 16); + io_->read(psData.pData_, size - 16); + if (io_->error() || io_->eof()) throw Error(20); + // Append to psBlob + append(psBlob, psData.pData_, psData.size_); + // Check whether psBlob is complete + if (psBlob.size() > 0 && Photoshop::valid(&psBlob[0],(long) psBlob.size())) { + foundCompletePsData = true; + } + } + else if (marker == com_ && skipCom == -1) { + if (size < 2) throw Error(22); + // Jpegs can have multiple comments, but for now only handle + // the first one (most jpegs only have one anyway). + skipCom = count; + ++search; + if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); + } + else { + if (size < 2) throw Error(22); + if (io_->seek(size-bufRead, BasicIo::cur)) throw Error(22); + } + // As in jpeg-6b/wrjpgcom.c: + // We will insert the new comment marker just before SOFn. + // This (a) causes the new comment to appear after, rather than before, + // existing comments; and (b) ensures that comments come after any JFIF + // or JFXX markers, as required by the JFIF specification. + if ( comPos == 0 + && ( marker == sof0_ + || marker == sof1_ + || marker == sof2_ + || marker == sof3_ + || marker == sof5_ + || marker == sof6_ + || marker == sof7_ + || marker == sof9_ + || marker == sof10_ + || marker == sof11_ + || marker == sof13_ + || marker == sof14_ + || marker == sof15_)) { + comPos = count; + ++search; + } + marker = advanceToMarker(); + if (marker < 0) throw Error(22); + ++count; + } + + if (!foundCompletePsData && psBlob.size() > 0) throw Error(22); + search += (int) skipApp13Ps3.size(); + + if (comPos == 0) { + if (marker == eoi_) comPos = count; + else comPos = insertPos; + ++search; + } + if (exifData_.count() > 0) ++search; + if (writeXmpFromPacket() == false && xmpData_.count() > 0) ++search; + if (writeXmpFromPacket() == true && xmpPacket_.size() > 0) ++search; + if (foundCompletePsData || iptcData_.count() > 0) ++search; + if (!comment_.empty()) ++search; + + io_->seek(seek, BasicIo::beg); + count = 0; + marker = advanceToMarker(); + if (marker < 0) throw Error(22); + + // To simplify this a bit, new segments are inserts at either the start + // or right after app0. This is standard in most jpegs, but has the + // potential to change segment ordering (which is allowed). + // Segments are erased if there is no assigned metadata. + while (marker != sos_ && search > 0) { + // Read size and signature (ok if this hits EOF) + bufRead = io_->read(buf.pData_, bufMinSize); + if (io_->error()) throw Error(20); + // Careful, this can be a meaningless number for empty + // images with only an eoi_ marker + uint16_t size = getUShort(buf.pData_, bigEndian); + + if (insertPos == count) { + byte tmpBuf[64]; + // Write Exif data first so that - if there is no app0 - we + // create "Exif images" according to the Exif standard. + if (exifData_.count() > 0) { + Blob blob; + ByteOrder bo = byteOrder(); + if (bo == invalidByteOrder) { + bo = littleEndian; + setByteOrder(bo); + } + WriteMethod wm = ExifParser::encode(blob, + rawExif.pData_, + rawExif.size_, + bo, + exifData_); + const byte* pExifData = rawExif.pData_; + uint32_t exifSize = rawExif.size_; + if (wm == wmIntrusive) { + pExifData = blob.size() > 0 ? &blob[0] : 0; + exifSize = static_cast(blob.size()); + } + if (exifSize > 0) { + // Write APP1 marker, size of APP1 field, Exif id and Exif data + tmpBuf[0] = 0xff; + tmpBuf[1] = app1_; + + if (exifSize + 8 > 0xffff) throw Error(37, "Exif"); + us2Data(tmpBuf + 2, static_cast(exifSize + 8), bigEndian); + std::memcpy(tmpBuf + 4, exifId_, 6); + if (outIo.write(tmpBuf, 10) != 10) throw Error(21); + + // Write new Exif data buffer + if ( outIo.write(pExifData, exifSize) + != static_cast(exifSize)) throw Error(21); + if (outIo.error()) throw Error(21); + --search; + } + } + if (writeXmpFromPacket() == false) { + if (XmpParser::encode(xmpPacket_, xmpData_, XmpParser::useCompactFormat | XmpParser::omitAllFormatting) > 1) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to encode XMP metadata.\n"; +#endif + } + } + if (xmpPacket_.size() > 0) { + // Write APP1 marker, size of APP1 field, XMP id and XMP packet + tmpBuf[0] = 0xff; + tmpBuf[1] = app1_; + + if (xmpPacket_.size() + 31 > 0xffff) throw Error(37, "XMP"); + us2Data(tmpBuf + 2, static_cast(xmpPacket_.size() + 31), bigEndian); + std::memcpy(tmpBuf + 4, xmpId_, 29); + if (outIo.write(tmpBuf, 33) != 33) throw Error(21); + + // Write new XMP packet + if ( outIo.write(reinterpret_cast(xmpPacket_.data()), static_cast(xmpPacket_.size())) + != static_cast(xmpPacket_.size())) throw Error(21); + if (outIo.error()) throw Error(21); + --search; + } + if (foundCompletePsData || iptcData_.count() > 0) { + // Set the new IPTC IRB, keeps existing IRBs but removes the + // IPTC block if there is no new IPTC data to write + DataBuf newPsData = Photoshop::setIptcIrb(psBlob.size() > 0 ? &psBlob[0] : 0, + (long) psBlob.size(), + iptcData_); + const long maxChunkSize = 0xffff - 16; + const byte* chunkStart = newPsData.pData_; + const byte* chunkEnd = chunkStart + newPsData.size_; + while (chunkStart < chunkEnd) { + // Determine size of next chunk + long chunkSize = static_cast(chunkEnd - chunkStart); + if (chunkSize > maxChunkSize) { + chunkSize = maxChunkSize; + // Don't break at a valid IRB boundary + const long writtenSize = static_cast(chunkStart - newPsData.pData_); + if (Photoshop::valid(newPsData.pData_, writtenSize + chunkSize)) { + // Since an IRB has minimum size 12, + // (chunkSize - 8) can't be also a IRB boundary + chunkSize -= 8; + } + } + + // Write APP13 marker, chunk size, and ps3Id + tmpBuf[0] = 0xff; + tmpBuf[1] = app13_; + us2Data(tmpBuf + 2, static_cast(chunkSize + 16), bigEndian); + std::memcpy(tmpBuf + 4, Photoshop::ps3Id_, 14); + if (outIo.write(tmpBuf, 18) != 18) throw Error(21); + if (outIo.error()) throw Error(21); + + // Write next chunk of the Photoshop IRB data buffer + if (outIo.write(chunkStart, chunkSize) != chunkSize) throw Error(21); + if (outIo.error()) throw Error(21); + + chunkStart += chunkSize; + } + --search; + } + } + if (comPos == count) { + if (!comment_.empty()) { + byte tmpBuf[4]; + // Write COM marker, size of comment, and string + tmpBuf[0] = 0xff; + tmpBuf[1] = com_; + + if (comment_.length() + 3 > 0xffff) throw Error(37, "JPEG comment"); + us2Data(tmpBuf + 2, static_cast(comment_.length() + 3), bigEndian); + + if (outIo.write(tmpBuf, 4) != 4) throw Error(21); + if (outIo.write((byte*)comment_.data(), (long)comment_.length()) + != (long)comment_.length()) throw Error(21); + if (outIo.putb(0)==EOF) throw Error(21); + if (outIo.error()) throw Error(21); + --search; + } + --search; + } + if (marker == eoi_) { + break; + } + else if ( skipApp1Exif == count + || skipApp1Xmp == count + || std::find(skipApp13Ps3.begin(), skipApp13Ps3.end(), count) != skipApp13Ps3.end() + || skipCom == count) { + --search; + io_->seek(size-bufRead, BasicIo::cur); + } + else { + if (size < 2) throw Error(22); + buf.alloc(size+2); + io_->seek(-bufRead-2, BasicIo::cur); + io_->read(buf.pData_, size+2); + if (io_->error() || io_->eof()) throw Error(20); + if (outIo.write(buf.pData_, size+2) != size+2) throw Error(21); + if (outIo.error()) throw Error(21); + } + + // Next marker + marker = advanceToMarker(); + if (marker < 0) throw Error(22); + ++count; + } + + // Populate the fake data, only make sense for remoteio, httpio and sshio. + // it avoids allocating memory for parts of the file that contain image-date. + io_->populateFakeData(); + + // Copy rest of the Io + io_->seek(-2, BasicIo::cur); + buf.alloc(4096); + long readSize = 0; + while ((readSize=io_->read(buf.pData_, buf.size_))) { + if (outIo.write(buf.pData_, readSize) != readSize) throw Error(21); + } + if (outIo.error()) throw Error(21); + + } // JpegBase::doWriteMetadata + + const byte JpegImage::soi_ = 0xd8; + const byte JpegImage::blank_[] = { + 0xFF,0xD8,0xFF,0xDB,0x00,0x84,0x00,0x10,0x0B,0x0B,0x0B,0x0C,0x0B,0x10,0x0C,0x0C, + 0x10,0x17,0x0F,0x0D,0x0F,0x17,0x1B,0x14,0x10,0x10,0x14,0x1B,0x1F,0x17,0x17,0x17, + 0x17,0x17,0x1F,0x1E,0x17,0x1A,0x1A,0x1A,0x1A,0x17,0x1E,0x1E,0x23,0x25,0x27,0x25, + 0x23,0x1E,0x2F,0x2F,0x33,0x33,0x2F,0x2F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x01,0x11,0x0F,0x0F,0x11,0x13,0x11,0x15,0x12, + 0x12,0x15,0x14,0x11,0x14,0x11,0x14,0x1A,0x14,0x16,0x16,0x14,0x1A,0x26,0x1A,0x1A, + 0x1C,0x1A,0x1A,0x26,0x30,0x23,0x1E,0x1E,0x1E,0x1E,0x23,0x30,0x2B,0x2E,0x27,0x27, + 0x27,0x2E,0x2B,0x35,0x35,0x30,0x30,0x35,0x35,0x40,0x40,0x3F,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0xC0,0x00,0x11,0x08,0x00,0x01,0x00, + 0x01,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,0x01,0xFF,0xC4,0x00,0x4B,0x00, + 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x07,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xDA,0x00,0x0C,0x03,0x01,0x00,0x02, + 0x11,0x03,0x11,0x00,0x3F,0x00,0xA0,0x00,0x0F,0xFF,0xD9 }; + + JpegImage::JpegImage(BasicIo::AutoPtr io, bool create) + : JpegBase(ImageType::jpeg, io, create, blank_, sizeof(blank_)) + { + } + + std::string JpegImage::mimeType() const + { + return "image/jpeg"; + } + + int JpegImage::writeHeader(BasicIo& outIo) const + { + // Jpeg header + byte tmpBuf[2]; + tmpBuf[0] = 0xff; + tmpBuf[1] = soi_; + if (outIo.write(tmpBuf, 2) != 2) return 4; + if (outIo.error()) return 4; + return 0; + } + + bool JpegImage::isThisType(BasicIo& iIo, bool advance) const + { + return isJpegType(iIo, advance); + } + + Image::AutoPtr newJpegInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new JpegImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isJpegType(BasicIo& iIo, bool advance) + { + bool result = true; + byte tmpBuf[2]; + iIo.read(tmpBuf, 2); + if (iIo.error() || iIo.eof()) return false; + + if (0xff != tmpBuf[0] || JpegImage::soi_ != tmpBuf[1]) { + result = false; + } + if (!advance || !result ) iIo.seek(-2, BasicIo::cur); + return result; + } + + const char ExvImage::exiv2Id_[] = "Exiv2"; + const byte ExvImage::blank_[] = { 0xff,0x01,'E','x','i','v','2',0xff,0xd9 }; + + ExvImage::ExvImage(BasicIo::AutoPtr io, bool create) + : JpegBase(ImageType::exv, io, create, blank_, sizeof(blank_)) + { + } + + std::string ExvImage::mimeType() const + { + return "image/x-exv"; + } + + int ExvImage::writeHeader(BasicIo& outIo) const + { + // Exv header + byte tmpBuf[7]; + tmpBuf[0] = 0xff; + tmpBuf[1] = 0x01; + std::memcpy(tmpBuf + 2, exiv2Id_, 5); + if (outIo.write(tmpBuf, 7) != 7) return 4; + if (outIo.error()) return 4; + return 0; + } + + bool ExvImage::isThisType(BasicIo& iIo, bool advance) const + { + return isExvType(iIo, advance); + } + + Image::AutoPtr newExvInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image; + image = Image::AutoPtr(new ExvImage(io, create)); + if (!image->good()) image.reset(); + return image; + } + + bool isExvType(BasicIo& iIo, bool advance) + { + bool result = true; + byte tmpBuf[7]; + iIo.read(tmpBuf, 7); + if (iIo.error() || iIo.eof()) return false; + + if ( 0xff != tmpBuf[0] || 0x01 != tmpBuf[1] + || memcmp(tmpBuf + 2, ExvImage::exiv2Id_, 5) != 0) { + result = false; + } + if (!advance || !result) iIo.seek(-7, BasicIo::cur); + return result; + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/localtime.c b/vendor/exiv2-0.25/src/localtime.c new file mode 100644 index 0000000..d6533c7 --- /dev/null +++ b/vendor/exiv2-0.25/src/localtime.c @@ -0,0 +1,1444 @@ +/*! + @file localtime.c + @brief This file is from the tz distribution at ftp://elsie.nci.nih.gov/pub/ + @version $Rev: 3479 $ +*/ + + +#include "config.h" +#include "timegm.h" + +/* +** This file is in the public domain, so clarified as of +** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). +*/ + +#ifndef lint +#ifndef NOID +static char elsieid[] = "@(#)localtime.c 7.78"; +#endif /* !defined NOID */ +#endif /* !defined lint */ + +/* +** Leap second handling from Bradley White (bww@k.gp.cs.cmu.edu). +** POSIX-style TZ environment variable handling from Guy Harris +** (guy@auspex.com). +*/ + +/*LINTLIBRARY*/ + +#include "private.h" +#include "tzfile.h" +#include "fcntl.h" + +/* +** SunOS 4.1.1 headers lack O_BINARY. +*/ + +#ifdef O_BINARY +#define OPEN_MODE (O_RDONLY | O_BINARY) +#endif /* defined O_BINARY */ +#ifndef O_BINARY +#define OPEN_MODE O_RDONLY +#endif /* !defined O_BINARY */ + +#ifndef WILDABBR +/* +** Someone might make incorrect use of a time zone abbreviation: +** 1. They might reference tzname[0] before calling tzset (explicitly +** or implicitly). +** 2. They might reference tzname[1] before calling tzset (explicitly +** or implicitly). +** 3. They might reference tzname[1] after setting to a time zone +** in which Daylight Saving Time is never observed. +** 4. They might reference tzname[0] after setting to a time zone +** in which Standard Time is never observed. +** 5. They might reference tm.TM_ZONE after calling offtime. +** What's best to do in the above cases is open to debate; +** for now, we just set things up so that in any of the five cases +** WILDABBR is used. Another possibility: initialize tzname[0] to the +** string "tzname[0] used before set", and similarly for the other cases. +** And another: initialize tzname[0] to "ERA", with an explanation in the +** manual page of what this "time zone abbreviation" means (doing this so +** that tzname[0] has the "normal" length of three characters). +*/ +#define WILDABBR " " +#endif /* !defined WILDABBR */ + +/* ahu: added conditional */ +#ifdef TM_ZONE +static char wildabbr[] = "WILDABBR"; +#endif /* TM_ZONE */ + +static const char gmt[] = "GMT"; + +/* +** The DST rules to use if TZ has no rules and we can't load TZDEFRULES. +** We default to US rules as of 1999-08-17. +** POSIX 1003.1 section 8.1.1 says that the default DST rules are +** implementation dependent; for historical reasons, US rules are a +** common default. +*/ +#ifndef TZDEFRULESTRING +#define TZDEFRULESTRING ",M4.1.0,M10.5.0" +#endif /* !defined TZDEFDST */ + +struct ttinfo { /* time type information */ + long tt_gmtoff; /* UTC offset in seconds */ + int tt_isdst; /* used to set tm_isdst */ + size_t tt_abbrind; /* abbreviation list index */ + int tt_ttisstd; /* TRUE if transition is std time */ + int tt_ttisgmt; /* TRUE if transition is UTC */ +}; + +struct lsinfo { /* leap second information */ + time_t ls_trans; /* transition time */ + long ls_corr; /* correction to apply */ +}; + +#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b)) + +#ifdef TZNAME_MAX +#define MY_TZNAME_MAX TZNAME_MAX +#endif /* defined TZNAME_MAX */ +#ifndef TZNAME_MAX +#define MY_TZNAME_MAX 255 +#endif /* !defined TZNAME_MAX */ + +struct state { + int leapcnt; + int timecnt; + int typecnt; + size_t charcnt; + time_t ats[TZ_MAX_TIMES]; + unsigned char types[TZ_MAX_TIMES]; + struct ttinfo ttis[TZ_MAX_TYPES]; + char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, sizeof gmt), + (2 * (MY_TZNAME_MAX + 1)))]; + struct lsinfo lsis[TZ_MAX_LEAPS]; +}; + +struct rule { + int r_type; /* type of rule--see below */ + int r_day; /* day number of rule */ + int r_week; /* week number of rule */ + int r_mon; /* month number of rule */ + long r_time; /* transition time of rule */ +}; + +#define JULIAN_DAY 0 /* Jn - Julian day */ +#define DAY_OF_YEAR 1 /* n - day of year */ +#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */ + +/* +** Prototypes for static functions. +*/ + +/* ahu: deleted declaration of detzcode */ +static const char * getzname P((const char * strp)); +static const char * getnum P((const char * strp, int * nump, int min, + int max)); +static const char * getsecs P((const char * strp, long * secsp)); +static const char * getoffset P((const char * strp, long * offsetp)); +static const char * getrule P((const char * strp, struct rule * rulep)); +static void gmtload P((struct state * sp)); +static void gmtsub P((const time_t * timep, long offset, + struct tm * tmp)); +static void localsub P((const time_t * timep, long offset, + struct tm * tmp)); +static int increment_overflow P((int * number, int delta)); +static int normalize_overflow P((int * tensptr, int * unitsptr, + int base)); +/* ahu: deleted declaration of settzname */ +static time_t time1 P((struct tm * tmp, + void(*funcp) P((const time_t *, + long, struct tm *)), + long offset)); +static time_t time2 P((struct tm *tmp, + void(*funcp) P((const time_t *, + long, struct tm*)), + long offset, int * okayp)); +static time_t time2sub P((struct tm *tmp, + void(*funcp) P((const time_t *, + long, struct tm*)), + long offset, int * okayp, int do_norm_secs)); +static void timesub P((const time_t * timep, long offset, + const struct state * sp, struct tm * tmp)); +static int tmcomp P((const struct tm * atmp, + const struct tm * btmp)); +static time_t transtime P((time_t janfirst, int year, + const struct rule * rulep, long offset)); +static int tzload P((const char * name, struct state * sp)); +static int tzparse P((const char * name, struct state * sp, + int lastditch)); + +#ifdef ALL_STATE +static struct state * lclptr; +static struct state * gmtptr; +#endif /* defined ALL_STATE */ + +#ifndef ALL_STATE +static struct state lclmem; +static struct state gmtmem; +#define lclptr (&lclmem) +#define gmtptr (&gmtmem) +#endif /* State Farm */ + +#ifndef TZ_STRLEN_MAX +#define TZ_STRLEN_MAX 255 +#endif /* !defined TZ_STRLEN_MAX */ + +/* ahu: deleted definition of lcl_TZname[] and lcl_is_set */ +static int gmt_is_set; + +/* ahu: deleted definition of tzname[] */ + +/* +** Section 4.12.3 of X3.159-1989 requires that +** Except for the strftime function, these functions [asctime, +** ctime, gmtime, localtime] return values in one of two static +** objects: a broken-down time structure and an array of char. +** Thanks to Paul Eggert (eggert@twinsun.com) for noting this. +*/ + +/* deleted definition of tm */ + +#ifdef USG_COMPAT +time_t timezone = 0; +int daylight = 0; +#endif /* defined USG_COMPAT */ + +#ifdef ALTZONE +time_t altzone = 0; +#endif /* defined ALTZONE */ + +static long +detzcode(codep) +const char * const codep; +{ + register long result; + register int i; + + result = (codep[0] & 0x80) ? ~0L : 0L; + for (i = 0; i < 4; ++i) + result = (result << 8) | (codep[i] & 0xff); + return result; +} + +/* ahu: deleted definition of settzname */ + +static int +tzload(name, sp) +register const char * name; +register struct state * const sp; +{ + register const char * p; + register int i; + register int fid; + + if (name == NULL && (name = TZDEFAULT) == NULL) + return -1; + { + register int doaccess; + /* + ** Section 4.9.1 of the C standard says that + ** "FILENAME_MAX expands to an integral constant expression + ** that is the size needed for an array of char large enough + ** to hold the longest file name string that the implementation + ** guarantees can be opened." + */ + char fullname[FILENAME_MAX + 1]; + + if (name[0] == ':') + ++name; + doaccess = name[0] == '/'; + if (!doaccess) { + if ((p = TZDIR) == NULL) + return -1; + if ((strlen(p) + strlen(name) + 1) >= sizeof fullname) + return -1; + (void) strcpy(fullname, p); + (void) strcat(fullname, "/"); + (void) strcat(fullname, name); + /* + ** Set doaccess if '.' (as in "../") shows up in name. + */ + if (strchr(name, '.') != NULL) + doaccess = TRUE; + name = fullname; + } + if (doaccess && access(name, R_OK) != 0) + return -1; + if ((fid = open(name, OPEN_MODE)) == -1) + return -1; + } + { + struct tzhead * tzhp; + union { + struct tzhead tzhead; + char buf[sizeof *sp + sizeof *tzhp]; + } u; + int ttisstdcnt; + int ttisgmtcnt; + + i = read(fid, u.buf, sizeof u.buf); + if (close(fid) != 0) + return -1; + ttisstdcnt = (int) detzcode(u.tzhead.tzh_ttisstdcnt); + ttisgmtcnt = (int) detzcode(u.tzhead.tzh_ttisgmtcnt); + sp->leapcnt = (int) detzcode(u.tzhead.tzh_leapcnt); + sp->timecnt = (int) detzcode(u.tzhead.tzh_timecnt); + sp->typecnt = (int) detzcode(u.tzhead.tzh_typecnt); + sp->charcnt = detzcode(u.tzhead.tzh_charcnt); + p = u.tzhead.tzh_charcnt + sizeof u.tzhead.tzh_charcnt; + if (sp->leapcnt < 0 || sp->leapcnt > TZ_MAX_LEAPS || + sp->typecnt <= 0 || sp->typecnt > TZ_MAX_TYPES || + sp->timecnt < 0 || sp->timecnt > TZ_MAX_TIMES || + sp->charcnt < 0 || sp->charcnt > TZ_MAX_CHARS || + (ttisstdcnt != sp->typecnt && ttisstdcnt != 0) || + (ttisgmtcnt != sp->typecnt && ttisgmtcnt != 0)) + return -1; + if (i - (p - u.buf) < sp->timecnt * 4 + /* ats */ + sp->timecnt + /* types */ + sp->typecnt * (4 + 2) + /* ttinfos */ + (int)sp->charcnt + /* chars */ + sp->leapcnt * (4 + 4) + /* lsinfos */ + ttisstdcnt + /* ttisstds */ + ttisgmtcnt) /* ttisgmts */ + return -1; + for (i = 0; i < sp->timecnt; ++i) { + sp->ats[i] = detzcode(p); + p += 4; + } + for (i = 0; i < sp->timecnt; ++i) { + sp->types[i] = (unsigned char) *p++; + if (sp->types[i] >= sp->typecnt) + return -1; + } + for (i = 0; i < sp->typecnt; ++i) { + register struct ttinfo * ttisp; + + ttisp = &sp->ttis[i]; + ttisp->tt_gmtoff = detzcode(p); + p += 4; + ttisp->tt_isdst = (unsigned char) *p++; + if (ttisp->tt_isdst != 0 && ttisp->tt_isdst != 1) + return -1; + ttisp->tt_abbrind = (unsigned char) *p++; + if (ttisp->tt_abbrind < 0 || + ttisp->tt_abbrind > sp->charcnt) + return -1; + } + for (i = 0; i < (int)sp->charcnt; ++i) + sp->chars[i] = *p++; + sp->chars[i] = '\0'; /* ensure '\0' at end */ + for (i = 0; i < sp->leapcnt; ++i) { + register struct lsinfo * lsisp; + + lsisp = &sp->lsis[i]; + lsisp->ls_trans = detzcode(p); + p += 4; + lsisp->ls_corr = detzcode(p); + p += 4; + } + for (i = 0; i < sp->typecnt; ++i) { + register struct ttinfo * ttisp; + + ttisp = &sp->ttis[i]; + if (ttisstdcnt == 0) + ttisp->tt_ttisstd = FALSE; + else { + ttisp->tt_ttisstd = *p++; + if (ttisp->tt_ttisstd != TRUE && + ttisp->tt_ttisstd != FALSE) + return -1; + } + } + for (i = 0; i < sp->typecnt; ++i) { + register struct ttinfo * ttisp; + + ttisp = &sp->ttis[i]; + if (ttisgmtcnt == 0) + ttisp->tt_ttisgmt = FALSE; + else { + ttisp->tt_ttisgmt = *p++; + if (ttisp->tt_ttisgmt != TRUE && + ttisp->tt_ttisgmt != FALSE) + return -1; + } + } + } + return 0; +} + +static const int mon_lengths[2][MONSPERYEAR] = { + { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, + { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } +}; + +static const int year_lengths[2] = { + DAYSPERNYEAR, DAYSPERLYEAR +}; + +/* +** Given a pointer into a time zone string, scan until a character that is not +** a valid character in a zone name is found. Return a pointer to that +** character. +*/ + +static const char * +getzname(strp) +register const char * strp; +{ + register char c; + + while ((c = *strp) != '\0' && !is_digit(c) && c != ',' && c != '-' && + c != '+') + ++strp; + return strp; +} + +/* +** Given a pointer into a time zone string, extract a number from that string. +** Check that the number is within a specified range; if it is not, return +** NULL. +** Otherwise, return a pointer to the first character not part of the number. +*/ + +static const char * +getnum(strp, nump, min, max) +register const char * strp; +int * const nump; +const int min; +const int max; +{ + register char c; + register int num; + + if (strp == NULL || !is_digit(c = *strp)) + return NULL; + num = 0; + do { + num = num * 10 + (c - '0'); + if (num > max) + return NULL; /* illegal value */ + c = *++strp; + } while (is_digit(c)); + if (num < min) + return NULL; /* illegal value */ + *nump = num; + return strp; +} + +/* +** Given a pointer into a time zone string, extract a number of seconds, +** in hh[:mm[:ss]] form, from the string. +** If any error occurs, return NULL. +** Otherwise, return a pointer to the first character not part of the number +** of seconds. +*/ + +static const char * +getsecs(strp, secsp) +register const char * strp; +long * const secsp; +{ + int num; + + /* + ** `HOURSPERDAY * DAYSPERWEEK - 1' allows quasi-Posix rules like + ** "M10.4.6/26", which does not conform to Posix, + ** but which specifies the equivalent of + ** ``02:00 on the first Sunday on or after 23 Oct''. + */ + strp = getnum(strp, &num, 0, HOURSPERDAY * DAYSPERWEEK - 1); + if (strp == NULL) + return NULL; + *secsp = num * (long) SECSPERHOUR; + if (*strp == ':') { + ++strp; + strp = getnum(strp, &num, 0, MINSPERHOUR - 1); + if (strp == NULL) + return NULL; + *secsp += num * SECSPERMIN; + if (*strp == ':') { + ++strp; + /* `SECSPERMIN' allows for leap seconds. */ + strp = getnum(strp, &num, 0, SECSPERMIN); + if (strp == NULL) + return NULL; + *secsp += num; + } + } + return strp; +} + +/* +** Given a pointer into a time zone string, extract an offset, in +** [+-]hh[:mm[:ss]] form, from the string. +** If any error occurs, return NULL. +** Otherwise, return a pointer to the first character not part of the time. +*/ + +static const char * +getoffset(strp, offsetp) +register const char * strp; +long * const offsetp; +{ + register int neg = 0; + + if (*strp == '-') { + neg = 1; + ++strp; + } else if (*strp == '+') + ++strp; + strp = getsecs(strp, offsetp); + if (strp == NULL) + return NULL; /* illegal time */ + if (neg) + *offsetp = -*offsetp; + return strp; +} + +/* +** Given a pointer into a time zone string, extract a rule in the form +** date[/time]. See POSIX section 8 for the format of "date" and "time". +** If a valid rule is not found, return NULL. +** Otherwise, return a pointer to the first character not part of the rule. +*/ + +static const char * +getrule(strp, rulep) +const char * strp; +register struct rule * const rulep; +{ + if (*strp == 'J') { + /* + ** Julian day. + */ + rulep->r_type = JULIAN_DAY; + ++strp; + strp = getnum(strp, &rulep->r_day, 1, DAYSPERNYEAR); + } else if (*strp == 'M') { + /* + ** Month, week, day. + */ + rulep->r_type = MONTH_NTH_DAY_OF_WEEK; + ++strp; + strp = getnum(strp, &rulep->r_mon, 1, MONSPERYEAR); + if (strp == NULL) + return NULL; + if (*strp++ != '.') + return NULL; + strp = getnum(strp, &rulep->r_week, 1, 5); + if (strp == NULL) + return NULL; + if (*strp++ != '.') + return NULL; + strp = getnum(strp, &rulep->r_day, 0, DAYSPERWEEK - 1); + } else if (is_digit(*strp)) { + /* + ** Day of year. + */ + rulep->r_type = DAY_OF_YEAR; + strp = getnum(strp, &rulep->r_day, 0, DAYSPERLYEAR - 1); + } else return NULL; /* invalid format */ + if (strp == NULL) + return NULL; + if (*strp == '/') { + /* + ** Time specified. + */ + ++strp; + strp = getsecs(strp, &rulep->r_time); + } else rulep->r_time = 2 * SECSPERHOUR; /* default = 2:00:00 */ + return strp; +} + +/* +** Given the Epoch-relative time of January 1, 00:00:00 UTC, in a year, the +** year, a rule, and the offset from UTC at the time that rule takes effect, +** calculate the Epoch-relative time that rule takes effect. +*/ + +static time_t +transtime(janfirst, year, rulep, offset) +const time_t janfirst; +const int year; +register const struct rule * const rulep; +const long offset; +{ + register int leapyear; + register time_t value; + register int i; + int d, m1, yy0, yy1, yy2, dow; + + INITIALIZE(value); + leapyear = isleap(year); + switch (rulep->r_type) { + + case JULIAN_DAY: + /* + ** Jn - Julian day, 1 == January 1, 60 == March 1 even in leap + ** years. + ** In non-leap years, or if the day number is 59 or less, just + ** add SECSPERDAY times the day number-1 to the time of + ** January 1, midnight, to get the day. + */ + value = janfirst + (rulep->r_day - 1) * SECSPERDAY; + if (leapyear && rulep->r_day >= 60) + value += SECSPERDAY; + break; + + case DAY_OF_YEAR: + /* + ** n - day of year. + ** Just add SECSPERDAY times the day number to the time of + ** January 1, midnight, to get the day. + */ + value = janfirst + rulep->r_day * SECSPERDAY; + break; + + case MONTH_NTH_DAY_OF_WEEK: + /* + ** Mm.n.d - nth "dth day" of month m. + */ + value = janfirst; + for (i = 0; i < rulep->r_mon - 1; ++i) + value += mon_lengths[leapyear][i] * SECSPERDAY; + + /* + ** Use Zeller's Congruence to get day-of-week of first day of + ** month. + */ + m1 = (rulep->r_mon + 9) % 12 + 1; + yy0 = (rulep->r_mon <= 2) ? (year - 1) : year; + yy1 = yy0 / 100; + yy2 = yy0 % 100; + dow = ((26 * m1 - 2) / 10 + + 1 + yy2 + yy2 / 4 + yy1 / 4 - 2 * yy1) % 7; + if (dow < 0) + dow += DAYSPERWEEK; + + /* + ** "dow" is the day-of-week of the first day of the month. Get + ** the day-of-month (zero-origin) of the first "dow" day of the + ** month. + */ + d = rulep->r_day - dow; + if (d < 0) + d += DAYSPERWEEK; + for (i = 1; i < rulep->r_week; ++i) { + if (d + DAYSPERWEEK >= + mon_lengths[leapyear][rulep->r_mon - 1]) + break; + d += DAYSPERWEEK; + } + + /* + ** "d" is the day-of-month (zero-origin) of the day we want. + */ + value += d * SECSPERDAY; + break; + } + + /* + ** "value" is the Epoch-relative time of 00:00:00 UTC on the day in + ** question. To get the Epoch-relative time of the specified local + ** time on that day, add the transition time and the current offset + ** from UTC. + */ + return value + rulep->r_time + offset; +} + +/* +** Given a POSIX section 8-style TZ string, fill in the rule tables as +** appropriate. +*/ + +static int +tzparse(name, sp, lastditch) +const char * name; +register struct state * const sp; +const int lastditch; +{ + const char * stdname; + const char * dstname; + size_t stdlen; + size_t dstlen; + long stdoffset; + long dstoffset; + register time_t * atp; + register unsigned char * typep; + register char * cp; + register int load_result; + + INITIALIZE(dstname); + stdname = name; + if (lastditch) { + stdlen = strlen(name); /* length of standard zone name */ + name += stdlen; + if (stdlen >= sizeof sp->chars) + stdlen = (sizeof sp->chars) - 1; + stdoffset = 0; + } else { + name = getzname(name); + stdlen = name - stdname; + if (stdlen < 3) + return -1; + if (*name == '\0') + return -1; + name = getoffset(name, &stdoffset); + if (name == NULL) + return -1; + } + load_result = tzload(TZDEFRULES, sp); + if (load_result != 0) + sp->leapcnt = 0; /* so, we're off a little */ + if (*name != '\0') { + dstname = name; + name = getzname(name); + dstlen = name - dstname; /* length of DST zone name */ + if (dstlen < 3) + return -1; + if (*name != '\0' && *name != ',' && *name != ';') { + name = getoffset(name, &dstoffset); + if (name == NULL) + return -1; + } else dstoffset = stdoffset - SECSPERHOUR; + if (*name == '\0' && load_result != 0) + name = TZDEFRULESTRING; + if (*name == ',' || *name == ';') { + struct rule start; + struct rule end; + register int year; + register time_t janfirst; + time_t starttime; + time_t endtime; + + ++name; + if ((name = getrule(name, &start)) == NULL) + return -1; + if (*name++ != ',') + return -1; + if ((name = getrule(name, &end)) == NULL) + return -1; + if (*name != '\0') + return -1; + sp->typecnt = 2; /* standard time and DST */ + /* + ** Two transitions per year, from EPOCH_YEAR to 2037. + */ + sp->timecnt = 2 * (2037 - EPOCH_YEAR + 1); + if (sp->timecnt > TZ_MAX_TIMES) + return -1; + sp->ttis[0].tt_gmtoff = -dstoffset; + sp->ttis[0].tt_isdst = 1; + sp->ttis[0].tt_abbrind = stdlen + 1; + sp->ttis[1].tt_gmtoff = -stdoffset; + sp->ttis[1].tt_isdst = 0; + sp->ttis[1].tt_abbrind = 0; + atp = sp->ats; + typep = sp->types; + janfirst = 0; + for (year = EPOCH_YEAR; year <= 2037; ++year) { + starttime = transtime(janfirst, year, &start, + stdoffset); + endtime = transtime(janfirst, year, &end, + dstoffset); + if (starttime > endtime) { + *atp++ = endtime; + *typep++ = 1; /* DST ends */ + *atp++ = starttime; + *typep++ = 0; /* DST begins */ + } else { + *atp++ = starttime; + *typep++ = 0; /* DST begins */ + *atp++ = endtime; + *typep++ = 1; /* DST ends */ + } + janfirst += year_lengths[isleap(year)] * + SECSPERDAY; + } + } else { + register long theirstdoffset; + register long theirdstoffset; + register long theiroffset; + register int isdst; + register int i; + register int j; + + if (*name != '\0') + return -1; + /* + ** Initial values of theirstdoffset and theirdstoffset. + */ + theirstdoffset = 0; + for (i = 0; i < sp->timecnt; ++i) { + j = sp->types[i]; + if (!sp->ttis[j].tt_isdst) { + theirstdoffset = + -sp->ttis[j].tt_gmtoff; + break; + } + } + theirdstoffset = 0; + for (i = 0; i < sp->timecnt; ++i) { + j = sp->types[i]; + if (sp->ttis[j].tt_isdst) { + theirdstoffset = + -sp->ttis[j].tt_gmtoff; + break; + } + } + /* + ** Initially we're assumed to be in standard time. + */ + isdst = FALSE; + theiroffset = theirstdoffset; + /* + ** Now juggle transition times and types + ** tracking offsets as you do. + */ + for (i = 0; i < sp->timecnt; ++i) { + j = sp->types[i]; + sp->types[i] = sp->ttis[j].tt_isdst; + if (sp->ttis[j].tt_ttisgmt) { + /* No adjustment to transition time */ + } else { + /* + ** If summer time is in effect, and the + ** transition time was not specified as + ** standard time, add the summer time + ** offset to the transition time; + ** otherwise, add the standard time + ** offset to the transition time. + */ + /* + ** Transitions from DST to DDST + ** will effectively disappear since + ** POSIX provides for only one DST + ** offset. + */ + if (isdst && !sp->ttis[j].tt_ttisstd) { + sp->ats[i] += dstoffset - + theirdstoffset; + } else { + sp->ats[i] += stdoffset - + theirstdoffset; + } + } + theiroffset = -sp->ttis[j].tt_gmtoff; + if (sp->ttis[j].tt_isdst) + theirdstoffset = theiroffset; + else theirstdoffset = theiroffset; + } + /* + ** Finally, fill in ttis. + ** ttisstd and ttisgmt need not be handled. + */ + sp->ttis[0].tt_gmtoff = -stdoffset; + sp->ttis[0].tt_isdst = FALSE; + sp->ttis[0].tt_abbrind = 0; + sp->ttis[1].tt_gmtoff = -dstoffset; + sp->ttis[1].tt_isdst = TRUE; + sp->ttis[1].tt_abbrind = stdlen + 1; + sp->typecnt = 2; + } + } else { + dstlen = 0; + sp->typecnt = 1; /* only standard time */ + sp->timecnt = 0; + sp->ttis[0].tt_gmtoff = -stdoffset; + sp->ttis[0].tt_isdst = 0; + sp->ttis[0].tt_abbrind = 0; + } + sp->charcnt = stdlen + 1; + if (dstlen != 0) + sp->charcnt += dstlen + 1; + if ((size_t) sp->charcnt > sizeof sp->chars) + return -1; + cp = sp->chars; + (void) strncpy(cp, stdname, stdlen); + cp += stdlen; + *cp++ = '\0'; + if (dstlen != 0) { + (void) strncpy(cp, dstname, dstlen); + *(cp + dstlen) = '\0'; + } + return 0; +} + +static void +gmtload(sp) +struct state * const sp; +{ + if (tzload(gmt, sp) != 0) + (void) tzparse(gmt, sp, TRUE); +} + +/* ahu: deleted definition of tzsetwall */ + +/* ahu: deleted definition of tzset */ + +/* +** The easy way to behave "as if no library function calls" localtime +** is to not call it--so we drop its guts into "localsub", which can be +** freely called. (And no, the PANS doesn't require the above behavior-- +** but it *is* desirable.) +** +** The unused offset argument is for the benefit of mktime variants. +*/ + +/*ARGSUSED*/ +static void +localsub(timep, offset, tmp) +const time_t * const timep; +const long offset; +struct tm * const tmp; +{ + register struct state * sp; + register const struct ttinfo * ttisp; + register int i; + const time_t t = *timep; + + sp = lclptr; +#ifdef ALL_STATE + if (sp == NULL) { + gmtsub(timep, offset, tmp); + return; + } +#endif /* defined ALL_STATE */ + if (sp->timecnt == 0 || t < sp->ats[0]) { + i = 0; + while (sp->ttis[i].tt_isdst) + if (++i >= sp->typecnt) { + i = 0; + break; + } + } else { + for (i = 1; i < sp->timecnt; ++i) + if (t < sp->ats[i]) + break; + i = sp->types[i - 1]; + } + ttisp = &sp->ttis[i]; + /* + ** To get (wrong) behavior that's compatible with System V Release 2.0 + ** you'd replace the statement below with + ** t += ttisp->tt_gmtoff; + ** timesub(&t, 0L, sp, tmp); + */ + timesub(&t, ttisp->tt_gmtoff, sp, tmp); + tmp->tm_isdst = ttisp->tt_isdst; + tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind]; +#ifdef TM_ZONE + tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind]; +#endif /* defined TM_ZONE */ +} + +/* ahu: deleted definition of localtime */ + +/* ahu: deleted definition of localtime_r */ + +/* +** gmtsub is to gmtime as localsub is to localtime. +*/ + +static void +gmtsub(timep, offset, tmp) +const time_t * const timep; +const long offset; +struct tm * const tmp; +{ + if (!gmt_is_set) { + gmt_is_set = TRUE; +#ifdef ALL_STATE + gmtptr = (struct state *) malloc(sizeof *gmtptr); + if (gmtptr != NULL) +#endif /* defined ALL_STATE */ + gmtload(gmtptr); + } + timesub(timep, offset, gmtptr, tmp); +#ifdef TM_ZONE + /* + ** Could get fancy here and deliver something such as + ** "UTC+xxxx" or "UTC-xxxx" if offset is non-zero, + ** but this is no time for a treasure hunt. + */ + if (offset != 0) + tmp->TM_ZONE = wildabbr; + else { +#ifdef ALL_STATE + if (gmtptr == NULL) + tmp->TM_ZONE = gmt; + else tmp->TM_ZONE = gmtptr->chars; +#endif /* defined ALL_STATE */ +#ifndef ALL_STATE + tmp->TM_ZONE = gmtptr->chars; +#endif /* State Farm */ + } +#endif /* defined TM_ZONE */ +} + +/* ahu: deleted definition of gmtime */ + +/* ahu: deleted definition of gmtime_r */ + +/* ahu: deleted definition of offtime */ + +static void +timesub(timep, offset, sp, tmp) +const time_t * const timep; +const long offset; +register const struct state * const sp; +register struct tm * const tmp; +{ + register const struct lsinfo * lp; + register long days; + register long rem; + register int y; + register int yleap; + register const int * ip; + register long corr; + register int hit; + register int i; + + corr = 0; + hit = 0; +#ifdef ALL_STATE + i = (sp == NULL) ? 0 : sp->leapcnt; +#endif /* defined ALL_STATE */ +#ifndef ALL_STATE + i = sp->leapcnt; +#endif /* State Farm */ + while (--i >= 0) { + lp = &sp->lsis[i]; + if (*timep >= lp->ls_trans) { + if (*timep == lp->ls_trans) { + hit = ((i == 0 && lp->ls_corr > 0) || + lp->ls_corr > sp->lsis[i - 1].ls_corr); + if (hit) + while (i > 0 && + sp->lsis[i].ls_trans == + sp->lsis[i - 1].ls_trans + 1 && + sp->lsis[i].ls_corr == + sp->lsis[i - 1].ls_corr + 1) { + ++hit; + --i; + } + } + corr = lp->ls_corr; + break; + } + } + days = (int)*timep / SECSPERDAY; + rem = (int)*timep % SECSPERDAY; +#ifdef mc68k + if (*timep == 0x80000000) { + /* + ** A 3B1 muffs the division on the most negative number. + */ + days = -24855; + rem = -11648; + } +#endif /* defined mc68k */ + rem += (offset - corr); + while (rem < 0) { + rem += SECSPERDAY; + --days; + } + while (rem >= SECSPERDAY) { + rem -= SECSPERDAY; + ++days; + } + tmp->tm_hour = (int) (rem / SECSPERHOUR); + rem = rem % SECSPERHOUR; + tmp->tm_min = (int) (rem / SECSPERMIN); + /* + ** A positive leap second requires a special + ** representation. This uses "... ??:59:60" et seq. + */ + tmp->tm_sec = (int) (rem % SECSPERMIN) + hit; + tmp->tm_wday = (int) ((EPOCH_WDAY + days) % DAYSPERWEEK); + if (tmp->tm_wday < 0) + tmp->tm_wday += DAYSPERWEEK; + y = EPOCH_YEAR; +#define LEAPS_THRU_END_OF(y) ((y) / 4 - (y) / 100 + (y) / 400) + while (days < 0 || days >= (long) year_lengths[yleap = isleap(y)]) { + register int newy; + + newy = y + days / DAYSPERNYEAR; + if (days < 0) + --newy; + days -= (newy - y) * DAYSPERNYEAR + + LEAPS_THRU_END_OF(newy - 1) - + LEAPS_THRU_END_OF(y - 1); + y = newy; + } + tmp->tm_year = y - TM_YEAR_BASE; + tmp->tm_yday = (int) days; + ip = mon_lengths[yleap]; + for (tmp->tm_mon = 0; days >= (long) ip[tmp->tm_mon]; ++(tmp->tm_mon)) + days = days - (long) ip[tmp->tm_mon]; + tmp->tm_mday = (int) (days + 1); + tmp->tm_isdst = 0; +#ifdef TM_GMTOFF + tmp->TM_GMTOFF = offset; +#endif /* defined TM_GMTOFF */ +} + +/* ahu: deleted definition of ctime */ + +/* ahu: deleted definition of ctime_r */ + +/* +** Adapted from code provided by Robert Elz, who writes: +** The "best" way to do mktime I think is based on an idea of Bob +** Kridle's (so its said...) from a long time ago. +** [kridle@xinet.com as of 1996-01-16.] +** It does a binary search of the time_t space. Since time_t's are +** just 32 bits, its a max of 32 iterations (even at 64 bits it +** would still be very reasonable). +*/ + +#ifndef WRONG +#define WRONG (-1) +#endif /* !defined WRONG */ + +/* +** Simplified normalize logic courtesy Paul Eggert (eggert@twinsun.com). +*/ + +static int +increment_overflow(number, delta) +int * number; +int delta; +{ + int i = *number; + /* + ** Copied from: https://www.ietf.org/timezones/code/localtime.c + ** If i >= 0 there can only be overflow if i + delta > INT_MAX + ** or if delta > INT_MAX - i; given i >= 0, INT_MAX - i cannot overflow. + ** If i < 0 there can only be overflow if i + delta < INT_MIN + ** or if delta < INT_MIN - i; given i < 0, INT_MIN - i cannot overflow. + */ + if ((i >= 0) ? (delta > INT_MAX - i) : (delta < INT_MIN - i)) + return TRUE; + *number += delta; + return FALSE; +} + +static int +normalize_overflow(tensptr, unitsptr, base) +int * const tensptr; +int * const unitsptr; +const int base; +{ + register int tensdelta; + + tensdelta = (*unitsptr >= 0) ? + (*unitsptr / base) : + (-1 - (-1 - *unitsptr) / base); + *unitsptr -= tensdelta * base; + return increment_overflow(tensptr, tensdelta); +} + +static int +tmcomp(atmp, btmp) +register const struct tm * const atmp; +register const struct tm * const btmp; +{ + register int result; + + if ((result = (atmp->tm_year - btmp->tm_year)) == 0 && + (result = (atmp->tm_mon - btmp->tm_mon)) == 0 && + (result = (atmp->tm_mday - btmp->tm_mday)) == 0 && + (result = (atmp->tm_hour - btmp->tm_hour)) == 0 && + (result = (atmp->tm_min - btmp->tm_min)) == 0) + result = atmp->tm_sec - btmp->tm_sec; + return result; +} + +static time_t +time2sub(tmp, funcp, offset, okayp, do_norm_secs) +struct tm * const tmp; +void (* const funcp) P((const time_t*, long, struct tm*)); +const long offset; +int * const okayp; +const int do_norm_secs; +{ + register const struct state * sp; + register int dir; + register int bits; + register int i, j ; + register int saved_seconds; + time_t newt; + time_t t; + struct tm yourtm, mytm; + + *okayp = FALSE; + yourtm = *tmp; + if (do_norm_secs) { + if (normalize_overflow(&yourtm.tm_min, &yourtm.tm_sec, + SECSPERMIN)) + return WRONG; + } + if (normalize_overflow(&yourtm.tm_hour, &yourtm.tm_min, MINSPERHOUR)) + return WRONG; + if (normalize_overflow(&yourtm.tm_mday, &yourtm.tm_hour, HOURSPERDAY)) + return WRONG; + if (normalize_overflow(&yourtm.tm_year, &yourtm.tm_mon, MONSPERYEAR)) + return WRONG; + /* + ** Turn yourtm.tm_year into an actual year number for now. + ** It is converted back to an offset from TM_YEAR_BASE later. + */ + if (increment_overflow(&yourtm.tm_year, TM_YEAR_BASE)) + return WRONG; + while (yourtm.tm_mday <= 0) { + if (increment_overflow(&yourtm.tm_year, -1)) + return WRONG; + i = yourtm.tm_year + (1 < yourtm.tm_mon); + yourtm.tm_mday += year_lengths[isleap(i)]; + } + while (yourtm.tm_mday > DAYSPERLYEAR) { + i = yourtm.tm_year + (1 < yourtm.tm_mon); + yourtm.tm_mday -= year_lengths[isleap(i)]; + if (increment_overflow(&yourtm.tm_year, 1)) + return WRONG; + } + for ( ; ; ) { + i = mon_lengths[isleap(yourtm.tm_year)][yourtm.tm_mon]; + if (yourtm.tm_mday <= i) + break; + yourtm.tm_mday -= i; + if (++yourtm.tm_mon >= MONSPERYEAR) { + yourtm.tm_mon = 0; + if (increment_overflow(&yourtm.tm_year, 1)) + return WRONG; + } + } + if (increment_overflow(&yourtm.tm_year, -TM_YEAR_BASE)) + return WRONG; + if (yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN) + saved_seconds = 0; + else if (yourtm.tm_year + TM_YEAR_BASE < EPOCH_YEAR) { + /* + ** We can't set tm_sec to 0, because that might push the + ** time below the minimum representable time. + ** Set tm_sec to 59 instead. + ** This assumes that the minimum representable time is + ** not in the same minute that a leap second was deleted from, + ** which is a safer assumption than using 58 would be. + */ + if (increment_overflow(&yourtm.tm_sec, 1 - SECSPERMIN)) + return WRONG; + saved_seconds = yourtm.tm_sec; + yourtm.tm_sec = SECSPERMIN - 1; + } else { + saved_seconds = yourtm.tm_sec; + yourtm.tm_sec = 0; + } + /* + ** Divide the search space in half + ** (this works whether time_t is signed or unsigned). + */ + bits = TYPE_BIT(time_t) - 1; + /* + ** If time_t is signed, then 0 is just above the median, + ** assuming two's complement arithmetic. + ** If time_t is unsigned, then (1 << bits) is just above the median. + */ + t = TYPE_SIGNED(time_t) ? 0 : (((time_t) 1) << bits); + for ( ; ; ) { + (*funcp)(&t, offset, &mytm); + dir = tmcomp(&mytm, &yourtm); + if (dir != 0) { + if (bits-- < 0) + return WRONG; + if (bits < 0) + --t; /* may be needed if new t is minimal */ + else if (dir > 0) + t -= ((time_t) 1) << bits; + else t += ((time_t) 1) << bits; + continue; + } + if (yourtm.tm_isdst < 0 || mytm.tm_isdst == yourtm.tm_isdst) + break; + /* + ** Right time, wrong type. + ** Hunt for right time, right type. + ** It's okay to guess wrong since the guess + ** gets checked. + */ + /* + ** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's. + */ + sp = (const struct state *) + (((void *) funcp == (void *) localsub) ? + lclptr : gmtptr); +#ifdef ALL_STATE + if (sp == NULL) + return WRONG; +#endif /* defined ALL_STATE */ + for (i = sp->typecnt - 1; i >= 0; --i) { + if (sp->ttis[i].tt_isdst != yourtm.tm_isdst) + continue; + for (j = sp->typecnt - 1; j >= 0; --j) { + if (sp->ttis[j].tt_isdst == yourtm.tm_isdst) + continue; + newt = t + sp->ttis[j].tt_gmtoff - + sp->ttis[i].tt_gmtoff; + (*funcp)(&newt, offset, &mytm); + if (tmcomp(&mytm, &yourtm) != 0) + continue; + if (mytm.tm_isdst != yourtm.tm_isdst) + continue; + /* + ** We have a match. + */ + t = newt; + goto label; + } + } + return WRONG; + } +label: + newt = t + saved_seconds; + if ((newt < t) != (saved_seconds < 0)) + return WRONG; + t = newt; + (*funcp)(&t, offset, tmp); + *okayp = TRUE; + return t; +} + +static time_t +time2(tmp, funcp, offset, okayp) +struct tm * const tmp; +void (* const funcp) P((const time_t*, long, struct tm*)); +const long offset; +int * const okayp; +{ + time_t t; + + /* + ** First try without normalization of seconds + ** (in case tm_sec contains a value associated with a leap second). + ** If that fails, try with normalization of seconds. + */ + t = time2sub(tmp, funcp, offset, okayp, FALSE); + return *okayp ? t : time2sub(tmp, funcp, offset, okayp, TRUE); +} + +static time_t +time1(tmp, funcp, offset) +struct tm * const tmp; +void (* const funcp) P((const time_t *, long, struct tm *)); +const long offset; +{ + register time_t t; + register const struct state * sp; + register int samei, otheri; + register int sameind, otherind; + register int i; + register int nseen; + int seen[TZ_MAX_TYPES]; + int types[TZ_MAX_TYPES]; + int okay; + + if (tmp->tm_isdst > 1) + tmp->tm_isdst = 1; + t = time2(tmp, funcp, offset, &okay); +#ifdef PCTS + /* + ** PCTS code courtesy Grant Sullivan (grant@osf.org). + */ + if (okay) + return t; + if (tmp->tm_isdst < 0) + tmp->tm_isdst = 0; /* reset to std and try again */ +#endif /* defined PCTS */ +#ifndef PCTS + if (okay || tmp->tm_isdst < 0) + return t; +#endif /* !defined PCTS */ + /* + ** We're supposed to assume that somebody took a time of one type + ** and did some math on it that yielded a "struct tm" that's bad. + ** We try to divine the type they started from and adjust to the + ** type they need. + */ + /* + ** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's. + */ + sp = (const struct state *) (((void *) funcp == (void *) localsub) ? + lclptr : gmtptr); +#ifdef ALL_STATE + if (sp == NULL) + return WRONG; +#endif /* defined ALL_STATE */ + for (i = 0; i < sp->typecnt; ++i) + seen[i] = FALSE; + nseen = 0; + for (i = sp->timecnt - 1; i >= 0; --i) + if (!seen[sp->types[i]]) { + seen[sp->types[i]] = TRUE; + types[nseen++] = sp->types[i]; + } + for (sameind = 0; sameind < nseen; ++sameind) { + samei = types[sameind]; + if (sp->ttis[samei].tt_isdst != tmp->tm_isdst) + continue; + for (otherind = 0; otherind < nseen; ++otherind) { + otheri = types[otherind]; + if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst) + continue; + tmp->tm_sec += sp->ttis[otheri].tt_gmtoff - + sp->ttis[samei].tt_gmtoff; + tmp->tm_isdst = !tmp->tm_isdst; + t = time2(tmp, funcp, offset, &okay); + if (okay) + return t; + tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff - + sp->ttis[samei].tt_gmtoff; + tmp->tm_isdst = !tmp->tm_isdst; + } + } + return WRONG; +} + +/* ahu: deleted definition of mktime */ + +#ifdef STD_INSPIRED + +/* ahu: deleted definition of timelocal */ + +/* rmills - timegm is replaced with _mkgmtime on VC 2005 and up */ +/* - see timegm.h */ +#if !defined(_MSC_VER) || (_MSC_VER < 1400) +time_t +timegm(tmp) +struct tm * const tmp; +{ + tmp->tm_isdst = 0; + return time1(tmp, gmtsub, 0L); +} +#endif + + + + + +/* ahu: deleted definition of timeoff */ + +#endif /* defined STD_INSPIRED */ + +/* ahu: deleted definition of gtime */ + +/* ahu: deleted definition of leapcorr */ + +/* ahu: deleted definition of time2posix */ + +/* ahu: deleted definition of posix2time */ diff --git a/vendor/exiv2-0.25/src/makernote.cpp b/vendor/exiv2-0.25/src/makernote.cpp new file mode 100644 index 0000000..7bfef86 --- /dev/null +++ b/vendor/exiv2-0.25/src/makernote.cpp @@ -0,0 +1,1235 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: makernote.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 11-Apr-06, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: makernote.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "makernote_int.hpp" +#include "tiffcomposite_int.hpp" +#include "tiffvisitor_int.hpp" +#include "tiffimage.hpp" +#include "tiffimage_int.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +namespace { + // Todo: Can be generalized further - get any tag as a string/long/... + //! Get the model name from tag Exif.Image.Model + std::string getExifModel(Exiv2::Internal::TiffComponent* const pRoot); + //! Nikon en/decryption function + void ncrypt(Exiv2::byte* pData, uint32_t size, uint32_t count, uint32_t serial); +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + const TiffMnRegistry TiffMnCreator::registry_[] = { + { "Canon", canonId, newIfdMn, newIfdMn2 }, + { "FOVEON", sigmaId, newSigmaMn, newSigmaMn2 }, + { "FUJI", fujiId, newFujiMn, newFujiMn2 }, + { "KONICA MINOLTA", minoltaId, newIfdMn, newIfdMn2 }, + { "Minolta", minoltaId, newIfdMn, newIfdMn2 }, + { "NIKON", ifdIdNotSet, newNikonMn, 0 }, // mnGroup_ is not used + { "OLYMPUS", ifdIdNotSet, newOlympusMn, 0 }, // mnGroup_ is not used + { "Panasonic", panasonicId, newPanasonicMn, newPanasonicMn2 }, + { "PENTAX", ifdIdNotSet, newPentaxMn, 0 }, // mnGroup_ is not used + { "RICOH", ifdIdNotSet, newPentaxMn, 0 }, // mnGroup_ is not used + { "SAMSUNG", samsung2Id, newSamsungMn, newSamsungMn2 }, + { "SIGMA", sigmaId, newSigmaMn, newSigmaMn2 }, + { "SONY", ifdIdNotSet, newSonyMn, 0 }, // mnGroup_ is not used + { "CASIO", ifdIdNotSet, newCasioMn, 0 }, // mnGroup_ is not used + // Entries below are only used for lookup by group + { "-", nikon1Id, 0, newIfdMn2 }, + { "-", nikon2Id, 0, newNikon2Mn2 }, + { "-", nikon3Id, 0, newNikon3Mn2 }, + { "-", sony1Id, 0, newSony1Mn2 }, + { "-", sony2Id, 0, newSony2Mn2 }, + { "-", olympusId, 0, newOlympusMn2 }, + { "-", olympus2Id, 0, newOlympus2Mn2 }, + { "-", pentaxId, 0, newPentaxMn2 }, + { "-", pentaxDngId, 0, newPentaxDngMn2 } + }; + + bool TiffMnRegistry::operator==(const std::string& key) const + { + std::string make(make_); + if (key.size() > 0 && key[0] == '-') return false; + return make == key.substr(0, make.length()); + } + + bool TiffMnRegistry::operator==(IfdId key) const + { + return mnGroup_ == key; + } + + TiffComponent* TiffMnCreator::create(uint16_t tag, + IfdId group, + const std::string& make, + const byte* pData, + uint32_t size, + ByteOrder byteOrder) + { + TiffComponent* tc = 0; + const TiffMnRegistry* tmr = find(registry_, make); + if (tmr) { + assert(tmr->newMnFct_); + tc = tmr->newMnFct_(tag, + group, + tmr->mnGroup_, + pData, + size, + byteOrder); + } + return tc; + } // TiffMnCreator::create + + TiffComponent* TiffMnCreator::create(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + TiffComponent* tc = 0; + const TiffMnRegistry* tmr = find(registry_, mnGroup); + if (tmr) { + + if (tmr->newMnFct2_ == 0) { + + std::cout << "mnGroup = " << mnGroup << "\n"; + + } + + assert(tmr->newMnFct2_); + tc = tmr->newMnFct2_(tag, group, mnGroup); + } + return tc; + } // TiffMnCreator::create + + MnHeader::~MnHeader() + { + } + + void MnHeader::setByteOrder(ByteOrder /*byteOrder*/) + { + } + + uint32_t MnHeader::ifdOffset() const + { + return 0; + } + + ByteOrder MnHeader::byteOrder() const + { + return invalidByteOrder; + } + + uint32_t MnHeader::baseOffset(uint32_t /*mnOffset*/) const + { + return 0; + } + + const byte OlympusMnHeader::signature_[] = { + 'O', 'L', 'Y', 'M', 'P', 0x00, 0x01, 0x00 + }; + + uint32_t OlympusMnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + OlympusMnHeader::OlympusMnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + OlympusMnHeader::~OlympusMnHeader() + { + } + + uint32_t OlympusMnHeader::size() const + { + return header_.size_; + } + + uint32_t OlympusMnHeader::ifdOffset() const + { + return sizeOfSignature(); + } + + bool OlympusMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + header_.alloc(sizeOfSignature()); + std::memcpy(header_.pData_, pData, header_.size_); + if ( static_cast(header_.size_) < sizeOfSignature() + || 0 != memcmp(header_.pData_, signature_, 6)) { + return false; + } + return true; + } // OlympusMnHeader::read + + uint32_t OlympusMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // OlympusMnHeader::write + + const byte Olympus2MnHeader::signature_[] = { + 'O', 'L', 'Y', 'M', 'P', 'U', 'S', 0x00, 'I', 'I', 0x03, 0x00 + }; + + uint32_t Olympus2MnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + Olympus2MnHeader::Olympus2MnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + Olympus2MnHeader::~Olympus2MnHeader() + { + } + + uint32_t Olympus2MnHeader::size() const + { + return header_.size_; + } + + uint32_t Olympus2MnHeader::ifdOffset() const + { + return sizeOfSignature(); + } + + uint32_t Olympus2MnHeader::baseOffset(uint32_t mnOffset) const + { + return mnOffset; + } + + bool Olympus2MnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + header_.alloc(sizeOfSignature()); + std::memcpy(header_.pData_, pData, header_.size_); + if ( static_cast(header_.size_) < sizeOfSignature() + || 0 != memcmp(header_.pData_, signature_, 10)) { + return false; + } + return true; + } // Olympus2MnHeader::read + + uint32_t Olympus2MnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // Olympus2MnHeader::write + + const byte FujiMnHeader::signature_[] = { + 'F', 'U', 'J', 'I', 'F', 'I', 'L', 'M', 0x0c, 0x00, 0x00, 0x00 + }; + const ByteOrder FujiMnHeader::byteOrder_ = littleEndian; + + uint32_t FujiMnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + FujiMnHeader::FujiMnHeader() + { + read(signature_, sizeOfSignature(), byteOrder_); + } + + FujiMnHeader::~FujiMnHeader() + { + } + + uint32_t FujiMnHeader::size() const + { + return header_.size_; + } + + uint32_t FujiMnHeader::ifdOffset() const + { + return start_; + } + + ByteOrder FujiMnHeader::byteOrder() const + { + return byteOrder_; + } + + uint32_t FujiMnHeader::baseOffset(uint32_t mnOffset) const + { + return mnOffset; + } + + bool FujiMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + header_.alloc(sizeOfSignature()); + std::memcpy(header_.pData_, pData, header_.size_); + // Read offset to the IFD relative to the start of the makernote + // from the header. Note that we ignore the byteOrder argument + start_ = getULong(header_.pData_ + 8, byteOrder_); + if ( static_cast(header_.size_) < sizeOfSignature() + || 0 != memcmp(header_.pData_, signature_, 8)) { + return false; + } + return true; + } // FujiMnHeader::read + + uint32_t FujiMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // FujiMnHeader::write + + const byte Nikon2MnHeader::signature_[] = { + 'N', 'i', 'k', 'o', 'n', '\0', 0x01, 0x00 + }; + + uint32_t Nikon2MnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + Nikon2MnHeader::Nikon2MnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + Nikon2MnHeader::~Nikon2MnHeader() + { + } + + uint32_t Nikon2MnHeader::size() const + { + return sizeOfSignature(); + } + + uint32_t Nikon2MnHeader::ifdOffset() const + { + return start_; + } + + bool Nikon2MnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + if (0 != memcmp(pData, signature_, 6)) return false; + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, pData, buf_.size_); + start_ = sizeOfSignature(); + return true; + } // Nikon2MnHeader::read + + uint32_t Nikon2MnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // Nikon2MnHeader::write + + const byte Nikon3MnHeader::signature_[] = { + 'N', 'i', 'k', 'o', 'n', '\0', 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + uint32_t Nikon3MnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + Nikon3MnHeader::Nikon3MnHeader() + { + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, signature_, buf_.size_); + byteOrder_ = invalidByteOrder; + start_ = sizeOfSignature(); + } + + Nikon3MnHeader::~Nikon3MnHeader() + { + } + + uint32_t Nikon3MnHeader::size() const + { + return sizeOfSignature(); + } + + uint32_t Nikon3MnHeader::ifdOffset() const + { + return start_; + } + + ByteOrder Nikon3MnHeader::byteOrder() const + { + return byteOrder_; + } + + uint32_t Nikon3MnHeader::baseOffset(uint32_t mnOffset) const + { + return mnOffset + 10; + } + + bool Nikon3MnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + if (0 != memcmp(pData, signature_, 6)) return false; + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, pData, buf_.size_); + TiffHeader th; + if (!th.read(buf_.pData_ + 10, 8)) return false; + byteOrder_ = th.byteOrder(); + start_ = 10 + th.offset(); + return true; + } // Nikon3MnHeader::read + + uint32_t Nikon3MnHeader::write(IoWrapper& ioWrapper, + ByteOrder byteOrder) const + { + assert(buf_.size_ >= 10); + + ioWrapper.write(buf_.pData_, 10); + // Todo: This removes any gap between the header and + // makernote IFD. The gap should be copied too. + TiffHeader th(byteOrder); + DataBuf buf = th.write(); + ioWrapper.write(buf.pData_, buf.size_); + return 10 + buf.size_; + } // Nikon3MnHeader::write + + void Nikon3MnHeader::setByteOrder(ByteOrder byteOrder) + { + byteOrder_ = byteOrder; + } + + const byte PanasonicMnHeader::signature_[] = { + 'P', 'a', 'n', 'a', 's', 'o', 'n', 'i', 'c', 0x00, 0x00, 0x00 + }; + + uint32_t PanasonicMnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + PanasonicMnHeader::PanasonicMnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + PanasonicMnHeader::~PanasonicMnHeader() + { + } + + uint32_t PanasonicMnHeader::size() const + { + return sizeOfSignature(); + } + + uint32_t PanasonicMnHeader::ifdOffset() const + { + return start_; + } + + bool PanasonicMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + if (0 != memcmp(pData, signature_, 9)) return false; + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, pData, buf_.size_); + start_ = sizeOfSignature(); + return true; + } // PanasonicMnHeader::read + + uint32_t PanasonicMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // PanasonicMnHeader::write + + const byte PentaxDngMnHeader::signature_[] = { + 'P', 'E', 'N', 'T', 'A', 'X', ' ', 0x00, 'M', 'M' + }; + + uint32_t PentaxDngMnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + PentaxDngMnHeader::PentaxDngMnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + PentaxDngMnHeader::~PentaxDngMnHeader() + { + } + + uint32_t PentaxDngMnHeader::size() const + { + return header_.size_; + } + + uint32_t PentaxDngMnHeader::baseOffset(uint32_t mnOffset) const + { + return mnOffset; + } + + uint32_t PentaxDngMnHeader::ifdOffset() const + { + return sizeOfSignature(); + } + + bool PentaxDngMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + header_.alloc(sizeOfSignature()); + std::memcpy(header_.pData_, pData, header_.size_); + if ( static_cast(header_.size_) < sizeOfSignature() + || 0 != memcmp(header_.pData_, signature_, 7)) { + return false; + } + return true; + } // PentaxDngMnHeader::read + + uint32_t PentaxDngMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // PentaxDngMnHeader::write + + const byte PentaxMnHeader::signature_[] = { + 'A', 'O', 'C', 0x00, 'M', 'M' + }; + + uint32_t PentaxMnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + PentaxMnHeader::PentaxMnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + PentaxMnHeader::~PentaxMnHeader() + { + } + + uint32_t PentaxMnHeader::size() const + { + return header_.size_; + } + + uint32_t PentaxMnHeader::ifdOffset() const + { + return sizeOfSignature(); + } + + bool PentaxMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + header_.alloc(sizeOfSignature()); + std::memcpy(header_.pData_, pData, header_.size_); + if ( static_cast(header_.size_) < sizeOfSignature() + || 0 != memcmp(header_.pData_, signature_, 3)) { + return false; + } + return true; + } // PentaxMnHeader::read + + uint32_t PentaxMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // PentaxMnHeader::write + + SamsungMnHeader::SamsungMnHeader() + { + read(0, 0, invalidByteOrder); + } + + uint32_t SamsungMnHeader::size() const + { + return 0; + } + + uint32_t SamsungMnHeader::baseOffset(uint32_t mnOffset) const + { + return mnOffset; + } + + bool SamsungMnHeader::read(const byte* /*pData*/, + uint32_t /*size*/, + ByteOrder /*byteOrder*/) + { + return true; + } // SamsungMnHeader::read + + uint32_t SamsungMnHeader::write(IoWrapper& /*ioWrapper*/, + ByteOrder /*byteOrder*/) const + { + return 0; + } // SamsungMnHeader::write + + const byte SigmaMnHeader::signature1_[] = { + 'S', 'I', 'G', 'M', 'A', '\0', '\0', '\0', 0x01, 0x00 + }; + const byte SigmaMnHeader::signature2_[] = { + 'F', 'O', 'V', 'E', 'O', 'N', '\0', '\0', 0x01, 0x00 + }; + + uint32_t SigmaMnHeader::sizeOfSignature() + { + assert(sizeof(signature1_) == sizeof(signature2_)); + return sizeof(signature1_); + } + + SigmaMnHeader::SigmaMnHeader() + { + read(signature1_, sizeOfSignature(), invalidByteOrder); + } + + SigmaMnHeader::~SigmaMnHeader() + { + } + + uint32_t SigmaMnHeader::size() const + { + return sizeOfSignature(); + } + + uint32_t SigmaMnHeader::ifdOffset() const + { + return start_; + } + + bool SigmaMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + if ( 0 != memcmp(pData, signature1_, 8) + && 0 != memcmp(pData, signature2_, 8)) return false; + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, pData, buf_.size_); + start_ = sizeOfSignature(); + return true; + } // SigmaMnHeader::read + + uint32_t SigmaMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature1_, sizeOfSignature()); + return sizeOfSignature(); + } // SigmaMnHeader::write + + const byte SonyMnHeader::signature_[] = { + 'S', 'O', 'N', 'Y', ' ', 'D', 'S', 'C', ' ', '\0', '\0', '\0' + }; + + uint32_t SonyMnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + SonyMnHeader::SonyMnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder); + } + + SonyMnHeader::~SonyMnHeader() + { + } + + uint32_t SonyMnHeader::size() const + { + return sizeOfSignature(); + } + + uint32_t SonyMnHeader::ifdOffset() const + { + return start_; + } + + bool SonyMnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + if (0 != memcmp(pData, signature_, sizeOfSignature())) return false; + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, pData, buf_.size_); + start_ = sizeOfSignature(); + return true; + } // SonyMnHeader::read + + uint32_t SonyMnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // SonyMnHeader::write + + const byte Casio2MnHeader::signature_[] = { + 'Q', 'V', 'C', '\0', '\0', '\0' + }; + const ByteOrder Casio2MnHeader::byteOrder_ = bigEndian; + + uint32_t Casio2MnHeader::sizeOfSignature() + { + return sizeof(signature_); + } + + Casio2MnHeader::Casio2MnHeader() + { + read(signature_, sizeOfSignature(), invalidByteOrder ); + } + + Casio2MnHeader::~Casio2MnHeader() + { + } + + uint32_t Casio2MnHeader::size() const + { + return sizeOfSignature(); + } + + uint32_t Casio2MnHeader::ifdOffset() const + { + return start_; + } + + ByteOrder Casio2MnHeader::byteOrder() const + { + return byteOrder_; + } + + bool Casio2MnHeader::read(const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (!pData || size < sizeOfSignature()) return false; + if (0 != memcmp(pData, signature_, sizeOfSignature())) return false; + buf_.alloc(sizeOfSignature()); + std::memcpy(buf_.pData_, pData, buf_.size_); + start_ = sizeOfSignature(); + return true; + } // Casio2MnHeader::read + + uint32_t Casio2MnHeader::write(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + ioWrapper.write(signature_, sizeOfSignature()); + return sizeOfSignature(); + } // Casio2MnHeader::write + + // ************************************************************************* + // free functions + + TiffComponent* newIfdMn(uint16_t tag, + IfdId group, + IfdId mnGroup, + const byte* /*pData*/, + uint32_t size, + ByteOrder /*byteOrder*/) + { + // Require at least an IFD with 1 entry, but not necessarily a next pointer + if (size < 14) return 0; + return newIfdMn2(tag, group, mnGroup); + } + + TiffComponent* newIfdMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, 0); + } + + TiffComponent* newOlympusMn(uint16_t tag, + IfdId group, + IfdId /*mnGroup*/, + const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if (size < 10 || std::string(reinterpret_cast(pData), 10) + != std::string("OLYMPUS\0II", 10)) { + // Require at least the header and an IFD with 1 entry + if (size < OlympusMnHeader::sizeOfSignature() + 18) return 0; + return newOlympusMn2(tag, group, olympusId); + } + // Require at least the header and an IFD with 1 entry + if (size < Olympus2MnHeader::sizeOfSignature() + 18) return 0; + return newOlympus2Mn2(tag, group, olympus2Id); + } + + TiffComponent* newOlympusMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new OlympusMnHeader); + } + + TiffComponent* newOlympus2Mn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new Olympus2MnHeader); + } + + TiffComponent* newFujiMn(uint16_t tag, + IfdId group, + IfdId mnGroup, + const byte* /*pData*/, + uint32_t size, + ByteOrder /*byteOrder*/) + { + // Require at least the header and an IFD with 1 entry + if (size < FujiMnHeader::sizeOfSignature() + 18) return 0; + return newFujiMn2(tag, group, mnGroup); + } + + TiffComponent* newFujiMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new FujiMnHeader); + } + + TiffComponent* newNikonMn(uint16_t tag, + IfdId group, + IfdId /*mnGroup*/, + const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + // If there is no "Nikon" string it must be Nikon1 format + if (size < 6 || std::string(reinterpret_cast(pData), 6) + != std::string("Nikon\0", 6)) { + // Require at least an IFD with 1 entry + if (size < 18) return 0; + return newIfdMn2(tag, group, nikon1Id); + } + // If the "Nikon" string is not followed by a TIFF header, we assume + // Nikon2 format + TiffHeader tiffHeader; + if ( size < 18 + || !tiffHeader.read(pData + 10, size - 10) + || tiffHeader.tag() != 0x002a) { + // Require at least the header and an IFD with 1 entry + if (size < Nikon2MnHeader::sizeOfSignature() + 18) return 0; + return newNikon2Mn2(tag, group, nikon2Id); + } + // Else we have a Nikon3 makernote + // Require at least the header and an IFD with 1 entry + if (size < Nikon3MnHeader::sizeOfSignature() + 18) return 0; + return newNikon3Mn2(tag, group, nikon3Id); + } + + TiffComponent* newNikon2Mn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new Nikon2MnHeader); + } + + TiffComponent* newNikon3Mn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new Nikon3MnHeader); + } + + TiffComponent* newPanasonicMn(uint16_t tag, + IfdId group, + IfdId mnGroup, + const byte* /*pData*/, + uint32_t size, + ByteOrder /*byteOrder*/) + { + // Require at least the header and an IFD with 1 entry, but without a next pointer + if (size < PanasonicMnHeader::sizeOfSignature() + 14) return 0; + return newPanasonicMn2(tag, group, mnGroup); + } + + TiffComponent* newPanasonicMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new PanasonicMnHeader, false); + } + + TiffComponent* newPentaxMn(uint16_t tag, + IfdId group, + IfdId /*mnGroup*/, + const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if ( size > 8 + && std::string(reinterpret_cast(pData), 8) == std::string("PENTAX \0", 8)) { + // Require at least the header and an IFD with 1 entry + if (size < PentaxDngMnHeader::sizeOfSignature() + 18) return 0; + return newPentaxDngMn2(tag, group, pentaxDngId); + } + else if ( size > 4 + && std::string(reinterpret_cast(pData), 4) == std::string("AOC\0", 4)) { + // Require at least the header and an IFD with 1 entry + if (size < PentaxMnHeader::sizeOfSignature() + 18) return 0; + return newPentaxMn2(tag, group, pentaxId); + } else + return 0; + } + + TiffComponent* newPentaxMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new PentaxMnHeader); + } + + TiffComponent* newPentaxDngMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new PentaxDngMnHeader); + } + + TiffComponent* newSamsungMn(uint16_t tag, + IfdId group, + IfdId mnGroup, + const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + if ( size > 4 + && std::string(reinterpret_cast(pData), 4) == std::string("AOC\0", 4)) { + // Samsung branded Pentax camera: + // Require at least the header and an IFD with 1 entry + if (size < PentaxMnHeader::sizeOfSignature() + 18) return 0; + return newPentaxMn2(tag, group, pentaxId); + } + else { + // Genuine Samsung camera: + // Require at least an IFD with 1 entry + if (size < 18) return 0; + return newSamsungMn2(tag, group, mnGroup); + } + } + + TiffComponent* newSamsungMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new SamsungMnHeader); + } + + TiffComponent* newSigmaMn(uint16_t tag, + IfdId group, + IfdId mnGroup, + const byte* /*pData*/, + uint32_t size, + ByteOrder /*byteOrder*/) + { + // Require at least the header and an IFD with 1 entry + if (size < SigmaMnHeader::sizeOfSignature() + 18) return 0; + return newSigmaMn2(tag, group, mnGroup); + } + + TiffComponent* newSigmaMn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new SigmaMnHeader); + } + + TiffComponent* newSonyMn(uint16_t tag, + IfdId group, + IfdId /*mnGroup*/, + const byte* pData, + uint32_t size, + ByteOrder /*byteOrder*/) + { + // If there is no "SONY DSC " string we assume it's a simple IFD Makernote + if (size < 12 || std::string(reinterpret_cast(pData), 12) + != std::string("SONY DSC \0\0\0", 12)) { + // Require at least an IFD with 1 entry + if (size < 18) return 0; + return newSony2Mn2(tag, group, sony2Id); + } + // Require at least the header and an IFD with 1 entry, but without a next pointer + if (size < SonyMnHeader::sizeOfSignature() + 14) return 0; + return newSony1Mn2(tag, group, sony1Id); + } + + TiffComponent* newSony1Mn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new SonyMnHeader, false); + } + + TiffComponent* newSony2Mn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, 0, true); + } + + TiffComponent* newCasioMn(uint16_t tag, + IfdId group, + IfdId /* mnGroup*/, + const byte* pData, + uint32_t size, + ByteOrder/* byteOrder */ ) + { + if (size > 6 && std::string(reinterpret_cast(pData), 6) + == std::string("QVC\0\0\0", 6)) { + return newCasio2Mn2(tag, group, casio2Id); + }; + // Require at least an IFD with 1 entry, but not necessarily a next pointer + if (size < 14) return 0; + return newIfdMn2(tag, group, casioId); + } + + TiffComponent* newCasio2Mn2(uint16_t tag, + IfdId group, + IfdId mnGroup) + { + return new TiffIfdMakernote(tag, group, mnGroup, new Casio2MnHeader); + } + + //! Structure for an index into the array set of complex binary arrays. + struct NikonArrayIdx { + //! Key for comparisons + struct Key { + //! Constructor + Key(uint16_t tag, const char* ver, uint32_t size) : tag_(tag), ver_(ver), size_(size) {} + uint16_t tag_; //!< Tag number + const char* ver_; //!< Version string + uint32_t size_; //!< Size of the data (not the version string) + }; + //! Comparison operator for a key + bool operator==(const Key& key) const + { + return key.tag_ == tag_ + && 0 == strncmp(key.ver_, ver_, strlen(ver_)) + && (size_ == 0 || key.size_ == size_); + } + + uint16_t tag_; //!< Tag number of the binary array + const char* ver_; //!< Version string + uint32_t size_; //!< Size of the data + int idx_; //!< Index into the array set + uint32_t start_; //!< Start of the encrypted data + }; + +#define NA ((uint32_t)-1) + + //! Nikon binary array version lookup table + extern const NikonArrayIdx nikonArrayIdx[] = { + // NikonSi + { 0x0091, "0208", 0, 0, 4 }, // D80 + { 0x0091, "0209", 0, 1, 4 }, // D40 + { 0x0091, "0210", 5291, 2, 4 }, // D300 + { 0x0091, "0210", 5303, 3, 4 }, // D300, firmware version 1.10 + { 0x0091, "02", 0, 4, 4 }, // Other v2.* (encrypted) + { 0x0091, "01", 0, 5, NA }, // Other v1.* (not encrypted) + // NikonCb + { 0x0097, "0100", 0, 0, NA }, + { 0x0097, "0102", 0, 1, NA }, + { 0x0097, "0103", 0, 4, NA }, + { 0x0097, "0204", 0, 3, 284 }, + { 0x0097, "0205", 0, 2, 4 }, + { 0x0097, "0206", 0, 3, 284 }, + { 0x0097, "0207", 0, 3, 284 }, + { 0x0097, "0208", 0, 3, 284 }, + { 0x0097, "0209", 0, 5, 284 }, + { 0x0097, "02", 0, 3, 284 }, + // NikonLd + { 0x0098, "0100", 0, 0, NA }, + { 0x0098, "0101", 0, 1, NA }, + { 0x0098, "0201", 0, 1, 4 }, + { 0x0098, "0202", 0, 1, 4 }, + { 0x0098, "0203", 0, 1, 4 }, + { 0x0098, "0204", 0, 2, 4 }, + // NikonFl + { 0x00a8, "0100", 0, 0, NA }, + { 0x00a8, "0101", 0, 0, NA }, + { 0x00a8, "0102", 0, 1, NA }, + { 0x00a8, "0103", 0, 2, NA }, + }; + + int nikonSelector(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const /*pRoot*/) + { + if (size < 4) return -1; + const NikonArrayIdx* aix = find(nikonArrayIdx, NikonArrayIdx::Key(tag, reinterpret_cast(pData), size)); + return aix == 0 ? -1 : aix->idx_; + } + + DataBuf nikonCrypt(uint16_t tag, const byte* pData, uint32_t size, TiffComponent* const pRoot) + { + DataBuf buf; + + if (size < 4) return buf; + const NikonArrayIdx* nci = find(nikonArrayIdx, NikonArrayIdx::Key(tag, reinterpret_cast(pData), size)); + if (nci == 0 || nci->start_ == NA || size <= nci->start_) return buf; + + // Find Exif.Nikon3.ShutterCount + TiffFinder finder(0x00a7, nikon3Id); + pRoot->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + if (!te || !te->pValue() || te->pValue()->count() == 0) return buf; + uint32_t count = static_cast(te->pValue()->toLong()); + + // Find Exif.Nikon3.SerialNumber + finder.init(0x001d, nikon3Id); + pRoot->accept(finder); + te = dynamic_cast(finder.result()); + if (!te || !te->pValue() || te->pValue()->count() == 0) return buf; + bool ok(false); + uint32_t serial = stringTo(te->pValue()->toString(), ok); + if (!ok) { + std::string model = getExifModel(pRoot); + if (model.empty()) return buf; + if (model.find("D50") != std::string::npos) { + serial = 0x22; + } + else { + serial = 0x60; + } + } + buf.alloc(size); + memcpy(buf.pData_, pData, buf.size_); + ncrypt(buf.pData_ + nci->start_, buf.size_ - nci->start_, count, serial); + return buf; + } + + int sonyCsSelector(uint16_t /*tag*/, const byte* /*pData*/, uint32_t /*size*/, TiffComponent* const pRoot) + { + std::string model = getExifModel(pRoot); + if (model.empty()) return -1; + int idx = 0; + if ( model.find("DSLR-A330") != std::string::npos + || model.find("DSLR-A380") != std::string::npos) { + idx = 1; + } + return idx; + } +}} // namespace Internal, Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + std::string getExifModel(Exiv2::Internal::TiffComponent* const pRoot) + { + Exiv2::Internal::TiffFinder finder(0x0110, Exiv2::Internal::ifd0Id); // Exif.Image.Model + pRoot->accept(finder); + Exiv2::Internal::TiffEntryBase* te = dynamic_cast(finder.result()); + if (!te || !te->pValue() || te->pValue()->count() == 0) return std::string(); + return te->pValue()->toString(); + } + + void ncrypt(Exiv2::byte* pData, uint32_t size, uint32_t count, uint32_t serial) + { + static const Exiv2::byte xlat[2][256] = { + { 0xc1,0xbf,0x6d,0x0d,0x59,0xc5,0x13,0x9d,0x83,0x61,0x6b,0x4f,0xc7,0x7f,0x3d,0x3d, + 0x53,0x59,0xe3,0xc7,0xe9,0x2f,0x95,0xa7,0x95,0x1f,0xdf,0x7f,0x2b,0x29,0xc7,0x0d, + 0xdf,0x07,0xef,0x71,0x89,0x3d,0x13,0x3d,0x3b,0x13,0xfb,0x0d,0x89,0xc1,0x65,0x1f, + 0xb3,0x0d,0x6b,0x29,0xe3,0xfb,0xef,0xa3,0x6b,0x47,0x7f,0x95,0x35,0xa7,0x47,0x4f, + 0xc7,0xf1,0x59,0x95,0x35,0x11,0x29,0x61,0xf1,0x3d,0xb3,0x2b,0x0d,0x43,0x89,0xc1, + 0x9d,0x9d,0x89,0x65,0xf1,0xe9,0xdf,0xbf,0x3d,0x7f,0x53,0x97,0xe5,0xe9,0x95,0x17, + 0x1d,0x3d,0x8b,0xfb,0xc7,0xe3,0x67,0xa7,0x07,0xf1,0x71,0xa7,0x53,0xb5,0x29,0x89, + 0xe5,0x2b,0xa7,0x17,0x29,0xe9,0x4f,0xc5,0x65,0x6d,0x6b,0xef,0x0d,0x89,0x49,0x2f, + 0xb3,0x43,0x53,0x65,0x1d,0x49,0xa3,0x13,0x89,0x59,0xef,0x6b,0xef,0x65,0x1d,0x0b, + 0x59,0x13,0xe3,0x4f,0x9d,0xb3,0x29,0x43,0x2b,0x07,0x1d,0x95,0x59,0x59,0x47,0xfb, + 0xe5,0xe9,0x61,0x47,0x2f,0x35,0x7f,0x17,0x7f,0xef,0x7f,0x95,0x95,0x71,0xd3,0xa3, + 0x0b,0x71,0xa3,0xad,0x0b,0x3b,0xb5,0xfb,0xa3,0xbf,0x4f,0x83,0x1d,0xad,0xe9,0x2f, + 0x71,0x65,0xa3,0xe5,0x07,0x35,0x3d,0x0d,0xb5,0xe9,0xe5,0x47,0x3b,0x9d,0xef,0x35, + 0xa3,0xbf,0xb3,0xdf,0x53,0xd3,0x97,0x53,0x49,0x71,0x07,0x35,0x61,0x71,0x2f,0x43, + 0x2f,0x11,0xdf,0x17,0x97,0xfb,0x95,0x3b,0x7f,0x6b,0xd3,0x25,0xbf,0xad,0xc7,0xc5, + 0xc5,0xb5,0x8b,0xef,0x2f,0xd3,0x07,0x6b,0x25,0x49,0x95,0x25,0x49,0x6d,0x71,0xc7 }, + { 0xa7,0xbc,0xc9,0xad,0x91,0xdf,0x85,0xe5,0xd4,0x78,0xd5,0x17,0x46,0x7c,0x29,0x4c, + 0x4d,0x03,0xe9,0x25,0x68,0x11,0x86,0xb3,0xbd,0xf7,0x6f,0x61,0x22,0xa2,0x26,0x34, + 0x2a,0xbe,0x1e,0x46,0x14,0x68,0x9d,0x44,0x18,0xc2,0x40,0xf4,0x7e,0x5f,0x1b,0xad, + 0x0b,0x94,0xb6,0x67,0xb4,0x0b,0xe1,0xea,0x95,0x9c,0x66,0xdc,0xe7,0x5d,0x6c,0x05, + 0xda,0xd5,0xdf,0x7a,0xef,0xf6,0xdb,0x1f,0x82,0x4c,0xc0,0x68,0x47,0xa1,0xbd,0xee, + 0x39,0x50,0x56,0x4a,0xdd,0xdf,0xa5,0xf8,0xc6,0xda,0xca,0x90,0xca,0x01,0x42,0x9d, + 0x8b,0x0c,0x73,0x43,0x75,0x05,0x94,0xde,0x24,0xb3,0x80,0x34,0xe5,0x2c,0xdc,0x9b, + 0x3f,0xca,0x33,0x45,0xd0,0xdb,0x5f,0xf5,0x52,0xc3,0x21,0xda,0xe2,0x22,0x72,0x6b, + 0x3e,0xd0,0x5b,0xa8,0x87,0x8c,0x06,0x5d,0x0f,0xdd,0x09,0x19,0x93,0xd0,0xb9,0xfc, + 0x8b,0x0f,0x84,0x60,0x33,0x1c,0x9b,0x45,0xf1,0xf0,0xa3,0x94,0x3a,0x12,0x77,0x33, + 0x4d,0x44,0x78,0x28,0x3c,0x9e,0xfd,0x65,0x57,0x16,0x94,0x6b,0xfb,0x59,0xd0,0xc8, + 0x22,0x36,0xdb,0xd2,0x63,0x98,0x43,0xa1,0x04,0x87,0x86,0xf7,0xa6,0x26,0xbb,0xd6, + 0x59,0x4d,0xbf,0x6a,0x2e,0xaa,0x2b,0xef,0xe6,0x78,0xb6,0x4e,0xe0,0x2f,0xdc,0x7c, + 0xbe,0x57,0x19,0x32,0x7e,0x2a,0xd0,0xb8,0xba,0x29,0x00,0x3c,0x52,0x7d,0xa8,0x49, + 0x3b,0x2d,0xeb,0x25,0x49,0xfa,0xa3,0xaa,0x39,0xa7,0xc5,0xa7,0x50,0x11,0x36,0xfb, + 0xc6,0x67,0x4a,0xf5,0xa5,0x12,0x65,0x7e,0xb0,0xdf,0xaf,0x4e,0xb3,0x61,0x7f,0x2f } + }; + Exiv2::byte key = 0; + for (int i = 0; i < 4; ++i) { + key ^= (count >> (i*8)) & 0xff; + } + Exiv2::byte ci = xlat[0][serial & 0xff]; + Exiv2::byte cj = xlat[1][key]; + Exiv2::byte ck = 0x60; + for (uint32_t i = 0; i < size; ++i) { + cj += ci * ck++; + pData[i] ^= cj; + } + } +} diff --git a/vendor/exiv2-0.25/src/makernote_int.hpp b/vendor/exiv2-0.25/src/makernote_int.hpp new file mode 100644 index 0000000..c76d955 --- /dev/null +++ b/vendor/exiv2-0.25/src/makernote_int.hpp @@ -0,0 +1,753 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file makernote_int.hpp + @brief Makernote factory and registry, IFD makernote header, and camera + vendor specific makernote implementations.
References:
+ [1] ExifTool by Phil Harvey
+ [2] Decoding raw digital photos in Linux by Dave Coffin + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 11-Apr-06, ahu: created + */ +#ifndef MAKERNOTE_INT_HPP_ +#define MAKERNOTE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tifffwd_int.hpp" +#include "tags_int.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! Type for a pointer to a function creating a makernote (image) + typedef TiffComponent* (*NewMnFct)(uint16_t tag, + IfdId group, + IfdId mnGroup, + const byte* pData, + uint32_t size, + ByteOrder byteOrder); + + //! Type for a pointer to a function creating a makernote (group) + typedef TiffComponent* (*NewMnFct2)(uint16_t tag, + IfdId group, + IfdId mnGroup); + + //! Makernote registry structure + struct TiffMnRegistry { + struct MakeKey; + /*! + @brief Compare a TiffMnRegistry structure with a key being the make + string from the image. The two are equal if + TiffMnRegistry::make_ equals a substring of the key of the + same size. E.g., registry = "OLYMPUS", + key = "OLYMPUS OPTICAL CO.,LTD" (found in the image) match. + */ + bool operator==(const std::string& key) const; + + //! Compare a TiffMnRegistry structure with a makernote group + bool operator==(IfdId key) const; + + // DATA + const char* make_; //!< Camera make + IfdId mnGroup_; //!< Group identifier + NewMnFct newMnFct_; //!< Makernote create function (image) + NewMnFct2 newMnFct2_; //!< Makernote create function (group) + }; + + /*! + @brief TIFF makernote factory for concrete TIFF makernotes. + */ + class TiffMnCreator { + public: + /*! + @brief Create the Makernote for camera \em make and details from + the makernote entry itself if needed. Return a pointer to + the newly created TIFF component. Set tag and group of the + new component to \em tag and \em group. This method is used + when a makernote is parsed from the Exif block. + @note Ownership for the component is transferred to the caller, + who is responsible to delete the component. No smart pointer + is used to indicate this transfer here in order to reduce + file dependencies. + */ + static TiffComponent* create(uint16_t tag, + IfdId group, + const std::string& make, + const byte* pData, + uint32_t size, + ByteOrder byteOrder); + /*! + @brief Create the Makernote for a given group. This method is used + when a makernote is written back from Exif tags. + */ + static TiffComponent* create(uint16_t tag, + IfdId group, + IfdId mnGroup); + + protected: + //! Prevent destruction (needed if used as a policy class) + ~TiffMnCreator() {} + private: + static const TiffMnRegistry registry_[]; // + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: matroskavideo.cpp + Version: $Rev: 3845 $ + Author(s): Abhinav Badola for GSoC 2012 (AB) + History: 18-Jun-12, AB: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: matroskavideo.cpp 3845 2015-06-07 16:29:06Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "config.h" + +#ifdef EXV_ENABLE_VIDEO +#include "matroskavideo.hpp" +#include "futils.hpp" +#include "basicio.hpp" +#include "tags.hpp" +#include "tags_int.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! List of composite tags. They are skipped and the child tags are read immediately + uint64_t compositeTagsList[] = { + 0x0000, 0x000e, 0x000f, 0x0020, 0x0026, 0x002e, 0x0036, + 0x0037, 0x003b, 0x005b, 0x0060, 0x0061, 0x0068, 0x05b9, + 0x0dbb, 0x1034, 0x1035, 0x1854, 0x21a7, 0x2240, 0x23c0, + 0x2624, 0x27c8, 0x2911, 0x2924, 0x2944, 0x2d80, 0x3373, + 0x35a1, 0x3e5b, 0x3e7b, + 0x14d9b74, 0x254c367, 0x549a966, 0x654ae6b, 0x8538067, + 0x941a469, 0xa45dfa3, 0xb538667, 0xc53bb6b, 0xf43b675 + }; + + //! List of tags which are ignored, i.e., tag and value won't be read + uint64_t ignoredTagsList[] = { + 0x0021, 0x0023, 0x0033, 0x0071, 0x0077, 0x006c, 0x0067, 0x007b, 0x02f2, 0x02f3, + 0x1031, 0x1032, 0x13ab, 0x13ac, 0x15ee, 0x23a2, 0x23c6, 0x2e67, 0x33a4, 0x33c5, + 0x3446, 0x2de7, 0x2df8, 0x26bf, 0x28ca, 0x3384, 0x13b8, 0x037e, 0x0485, 0x18d7, + 0x0005, 0x0009, 0x0011, 0x0012, 0x0016, 0x0017, 0x0018, 0x0022, 0x0024, 0x0025, + 0x0027, 0x002b, 0x002f, 0x003f, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x006a, + 0x006b, 0x006e, 0x007a, 0x007d, 0x0255, 0x3eb5, 0x3ea5, 0x3d7b, 0x33c4, 0x2fab, + 0x2ebc, 0x29fc, 0x29a5, 0x2955, 0x2933, 0x135f, 0x2922, 0x26a5, 0x26fc, 0x2532, + 0x23c9, 0x23c4, 0x23c5, 0x137f, 0x1378, 0x07e2, 0x07e3, 0x07e4, 0x0675, 0x05bc, + 0x05bd, 0x05db, 0x05dd, 0x0598, 0x050d, 0x0444, 0x037c, + + 0x3314f, 0x43a770, 0x1eb923, 0x1cb923, 0xeb524, 0x1c83ab, 0x1e83bb + }; + + /*! + Tag Look-up list for Matroska Type Video Files + The Tags have been categorized in 4 categories. Which are + mentioned as a comment in front of them. + s -- Tag to be Skipped + sd -- Tag to be Skipped along with its data + u -- Tag used directly for storing metadata + ui -- Tag used only internally + */ + extern const MatroskaTags matroskaTags[] = { + { 0x0000, "ChapterDisplay" }, //s + { 0x0003, "TrackType" }, //ui + { 0x0005, "ChapterString" }, //sd + { 0x0006, "VideoCodecID/AudioCodecID/CodecID" }, //ui + { 0x0008, "TrackDefault" }, //ui + { 0x0009, "ChapterTrackNumber" }, //sd + { 0x000e, "Slices" }, //s + { 0x000f, "ChapterTrack" }, //s + { 0x0011, "ChapterTimeStart" }, //sd + { 0x0012, "ChapterTimeEnd" }, //sd + { 0x0016, "CueRefTime" }, //sd + { 0x0017, "CueRefCluster" }, //sd + { 0x0018, "ChapterFlagHidden" }, //sd + { 0x001a, "Xmp.video.VideoScanTpye" }, //u + { 0x001b, "BlockDuration" }, //s + { 0x001c, "TrackLacing" }, //ui + { 0x001f, "Xmp.audio.ChannelType" }, //u + { 0x0020, "BlockGroup" }, //s + { 0x0021, "Block" }, //sd + { 0x0022, "BlockVirtual" }, //sd + { 0x0023, "SimpleBlock" }, //sd + { 0x0024, "CodecState" }, //sd + { 0x0025, "BlockAdditional" }, //sd + { 0x0026, "BlockMore" }, //s + { 0x0027, "Position" }, //sd + { 0x002a, "CodecDecodeAll" }, //ui + { 0x002b, "PrevSize" }, //sd + { 0x002e, "TrackEntry" }, //s + { 0x002f, "EncryptedBlock" }, //sd + { 0x0030, "Xmp.video.Width" }, //u + { 0x0033, "CueTime" }, //sd + { 0x0035, "Xmp.audio.SampleRate" }, //u + { 0x0036, "ChapterAtom" }, //s + { 0x0037, "CueTrackPositions" }, //s + { 0x0039, "TrackUsed" }, //ui + { 0x003a, "Xmp.video.Height" }, //u + { 0x003b, "CuePoint" }, //s + { 0x003f, "CRC-32" }, //sd + { 0x004b, "BlockAdditionalID" }, //sd + { 0x004c, "LaceNumber" }, //sd + { 0x004d, "FrameNumber" }, //sd + { 0x004e, "Delay" }, //sd + { 0x004f, "ClusterDuration" }, //sd + { 0x0057, "TrackNumber" }, //ui + { 0x005b, "CueReference" }, //s + { 0x0060, "Video" }, //s + { 0x0061, "Audio" }, //s + { 0x0067, "Timecode" }, //sd + { 0x0068, "TimeSlice" }, //s + { 0x006a, "CueCodecState" }, //sd + { 0x006b, "CueRefCodecState" }, //sd + { 0x006c, "Void" }, //sd + { 0x006e, "BlockAddID" }, //sd + { 0x0071, "CueClusterPosition" }, //sd + { 0x0077, "CueTrack" }, //sd + { 0x007a, "ReferencePriority" }, //sd + { 0x007b, "ReferenceBlock" }, //sd + { 0x007d, "ReferenceVirtual" }, //sd + { 0x0254, "Xmp.video.ContentCompressAlgo" }, //u + { 0x0255, "ContentCompressionSettings" }, //sd + { 0x0282, "Xmp.video.DocType" }, //u + { 0x0285, "Xmp.video.DocTypeReadVersion" }, //u + { 0x0286, "Xmp.video.EBMLVersion" }, //u + { 0x0287, "Xmp.video.DocTypeVersion" }, //u + { 0x02f2, "EBMLMaxIDLength" }, //sd + { 0x02f3, "EBMLMaxSizeLength" }, //sd + { 0x02f7, "Xmp.video.EBMLReadVersion" }, //u + { 0x037c, "ChapterLanguage" }, //sd + { 0x037e, "ChapterCountry" }, //sd + { 0x0444, "SegmentFamily" }, //sd + { 0x0461, "Xmp.video.DateUTC" }, //Date Time Original - measured in seconds relatively to Jan 01, 2001, 0:00:00 GMT+0h + { 0x047a, "Xmp.video.TagLanguage" }, //u + { 0x0484, "Xmp.video.TagDefault" }, //u + { 0x0485, "TagBinary" }, //sd + { 0x0487, "Xmp.video.TagString" }, //u + { 0x0489, "Xmp.video.Duration" }, //u + { 0x050d, "ChapterProcessPrivate" }, //sd + { 0x0598, "ChapterFlagEnabled" }, //sd + { 0x05a3, "Xmp.video.TagName" }, //u + { 0x05b9, "EditionEntry" }, //s + { 0x05bc, "EditionUID" }, //sd + { 0x05bd, "EditionFlagHidden" }, //sd + { 0x05db, "EditionFlagDefault" }, //sd + { 0x05dd, "EditionFlagOrdered" }, //sd + { 0x065c, "Xmp.video.AttachFileData" }, //u + { 0x0660, "Xmp.video.AttachFileMIME" }, //u + { 0x066e, "Xmp.video.AttachFileName" }, //u + { 0x0675, "AttachedFileReferral" }, //sd + { 0x067e, "Xmp.video.AttachFileDesc" }, //u + { 0x06ae, "Xmp.video.AttachFileUID" }, //u + { 0x07e1, "Xmp.video.ContentEncryptAlgo" }, //u + { 0x07e2, "ContentEncryptionKeyID" }, //sd + { 0x07e3, "ContentSignature" }, //sd + { 0x07e4, "ContentSignatureKeyID" }, //sd + { 0x07e5, "Xmp.video.ContentSignAlgo" }, //u + { 0x07e6, "Xmp.video.ContentSignHashAlgo" }, //u + { 0x0d80, "Xmp.video.MuxingApp" }, //u + { 0x0dbb, "Seek" }, //s + { 0x1031, "ContentEncodingOrder" }, //sd + { 0x1032, "ContentEncodingScope" }, //sd + { 0x1033, "Xmp.video.ContentEncodingType" }, //u + { 0x1034, "ContentCompression" }, //s + { 0x1035, "ContentEncryption" }, //s + { 0x135f, "CueRefNumber" }, //sd + { 0x136e, "Xmp.video.TrackName" }, //u + { 0x1378, "CueBlockNumber" }, //sd + { 0x137f, "TrackOffset" }, //sd + { 0x13ab, "SeekID" }, //sd + { 0x13ac, "SeekPosition" }, //sd + { 0x13b8, "Stereo3DMode" }, //sd + { 0x14aa, "Xmp.video.CropBottom" }, //ui + { 0x14b0, "Xmp.video.Width" }, //u + { 0x14b2, "Xmp.video.DisplayUnit" }, //u + { 0x14b3, "Xmp.video.AspectRatioType" }, //u + { 0x14ba, "Xmp.video.Height" }, //u + { 0x14bb, "Xmp.video.CropTop" }, //ui + { 0x14cc, "Xmp.video.CropLeft" }, //ui + { 0x14dd, "Xmp.video.CropRight" }, //ui + { 0x15aa, "TrackForced" }, //ui + { 0x15ee, "MaxBlockAdditionID" }, //sd + { 0x1741, "Xmp.video.WritingApp" }, //u + { 0x1854, "SilentTracks" }, //s + { 0x18d7, "SilentTrackNumber" }, //sd + { 0x21a7, "AttachedFile" }, //s + { 0x2240, "ContentEncoding" }, //s + { 0x2264, "Xmp.audio.BitsPerSample" }, //u + { 0x23a2, "CodecPrivate" }, //sd + { 0x23c0, "Targets" }, //s + { 0x23c3, "Xmp.video.PhysicalEquivalent" }, //u + { 0x23c4, "TagChapterUID" }, //sd + { 0x23c5, "TagTrackUID" }, //sd + { 0x23c6, "TagAttachmentUID" }, //sd + { 0x23c9, "TagEditionUID" }, //sd + { 0x23ca, "Xmp.video.TargetType" }, //u + { 0x2532, "SignedElement" }, //sd + { 0x2624, "TrackTranslate" }, //s + { 0x26a5, "TrackTranslateTrackID" }, //sd + { 0x26bf, "TrackTranslateCodec" }, //sd + { 0x26fc, "TrackTranslateEditionUID" }, //sd + { 0x27c8, "SimpleTag" }, //s + { 0x28ca, "TargetTypeValue" }, //sd + { 0x2911, "ChapterProcessCommand" }, //s + { 0x2922, "ChapterProcessTime" }, //sd + { 0x2924, "ChapterTranslate" }, //s + { 0x2933, "ChapterProcessData" }, //sd + { 0x2944, "ChapterProcess" }, //s + { 0x2955, "ChapterProcessCodecID" }, //sd + { 0x29a5, "ChapterTranslateID" }, //sd + { 0x29bf, "Xmp.video.TranslateCodec" }, //u + { 0x29fc, "ChapterTranslateEditionUID" }, //sd + { 0x2d80, "ContentEncodings" }, //s + { 0x2de7, "MinCache" }, //sd + { 0x2df8, "MaxCache" }, //sd + { 0x2e67, "ChapterSegmentUID" }, //sd + { 0x2ebc, "ChapterSegmentEditionUID" }, //sd + { 0x2fab, "TrackOverlay" }, //sd + { 0x3373, "Tag" }, //s + { 0x3384, "SegmentFileName" }, //sd + { 0x33a4, "SegmentUID" }, //sd + { 0x33c4, "ChapterUID" }, //sd + { 0x33c5, "TrackUID" }, //sd + { 0x3446, "TrackAttachmentUID" }, //sd + { 0x35a1, "BlockAdditions" }, //s + { 0x38b5, "Xmp.audio.OutputSampleRate" }, //u + { 0x3ba9, "Xmp.video.Title" }, //u + { 0x3d7b, "ChannelPositions" }, //sd + { 0x3e5b, "SignatureElements" }, //s + { 0x3e7b, "SignatureElementList" }, //s + { 0x3e8a, "Xmp.video.ContentSignAlgo" }, //u + { 0x3e9a, "Xmp.video.ContentSignHashAlgo" }, //u + { 0x3ea5, "SignaturePublicKey" }, //sd + { 0x3eb5, "Signature" }, //sd + { 0x2b59c, "TrackLanguage" }, //ui + { 0x3314f, "TrackTimecodeScale" }, //sd + { 0x383e3, "Xmp.video.FrameRate" }, //u + { 0x3e383, "VideoFrameRate/DefaultDuration" }, //ui + { 0x58688, "VideoCodecName/AudioCodecName/CodecName" }, //ui + { 0x6b240, "CodecDownloadURL" }, //ui + { 0xad7b1, "TimecodeScale" }, //ui + { 0xeb524, "ColorSpace" }, //sd + { 0xfb523, "Xmp.video.OpColor" }, //u + { 0x1a9697, "CodecSettings" }, //ui + { 0x1b4040, "CodecInfoURL" }, //ui + { 0x1c83ab, "PrevFileName" }, //sd + { 0x1cb923, "PrevUID" }, //sd + { 0x1e83bb, "NextFileName" }, //sd + { 0x1eb923, "NextUID" }, //sd + { 0x43a770, "Chapters" }, //sd + { 0x14d9b74, "SeekHead" }, //s + { 0x254c367, "Tags" }, //s + { 0x549a966, "Info" }, //s + { 0x654ae6b, "Tracks" }, //s + { 0x8538067, "SegmentHeader" }, //s + { 0x941a469, "Attachments" }, //s + { 0xa45dfa3, "EBMLHeader" }, //s + { 0xb538667, "SignatureSlot" }, //s + { 0xc53bb6b, "Cues" }, //s + { 0xf43b675, "Cluster" }, //s + }; + + extern const MatroskaTags matroskaTrackType[] = { + { 0x1, "Video" }, + { 0x2, "Audio" }, + { 0x3, "Complex" }, + { 0x10, "Logo" }, + { 0x11, "Subtitle" }, + { 0x12, "Buttons" }, + { 0x20, "Control" } + }; + + extern const MatroskaTags compressionAlgorithm[] = { + { 0, "zlib " }, + { 1, "bzlib" }, + { 2, "lzo1x" }, + { 3, "Header Stripping" } + }; + + extern const MatroskaTags audioChannels[] = { + { 1, "Mono" }, + { 2, "Stereo" }, + { 5, "5.1 Surround Sound" }, + { 7, "7.1 Surround Sound" } + }; + + extern const MatroskaTags displayUnit[] = { + { 0x0, "Pixels" }, + { 0x1, "cm" }, + { 0x2, "inches" } + }; + + extern const MatroskaTags encryptionAlgorithm[] = { + { 0, "Not Encrypted" }, + { 1, "DES" }, + { 2, "3DES" }, + { 3, "Twofish" }, + { 4, "Blowfish" }, + { 5, "AES" } + }; + + extern const MatroskaTags chapterPhysicalEquivalent[] = { + { 10, "Index" }, + { 20, "Track" }, + { 30, "Session" }, + { 40, "Layer" }, + { 50, "Side" }, + { 60, "CD / DVD" }, + { 70, "Set / Package" }, + }; + + extern const MatroskaTags encodingType[] = { + { 0, "Compression" }, + { 1, "Encryption" } + }; + + extern const MatroskaTags videoScanType[] = { + { 0, "Progressive" }, + { 1, "Interlaced" } + }; + + extern const MatroskaTags chapterTranslateCodec[] = { + { 0, "Matroska Script" }, + { 1, "DVD Menu" } + }; + + extern const MatroskaTags aspectRatioType[] = { + { 0, "Free Resizing" }, + { 1, "Keep Aspect Ratio" }, + { 2, "Fixed" } + }; + + extern const MatroskaTags contentSignatureAlgorithm[] = { + { 0, "Not Signed" }, + { 1, "RSA" } + }; + + extern const MatroskaTags contentSignatureHashAlgorithm[] = { + { 0, "Not Signed" }, + { 1, "SHA1-160" }, + { 2, "MD5" } + }; + + extern const MatroskaTags trackEnable[] = { + { 0x1, "Xmp.video.Enabled" }, + { 0x2, "Xmp.audio.Enabled" }, + { 0x11, "Xmp.video.SubTEnabled" } + }; + + extern const MatroskaTags defaultOn[] = { + { 0x1, "Xmp.video.DefaultOn" }, + { 0x2, "Xmp.audio.DefaultOn" }, + { 0x11, "Xmp.video.SubTDefaultOn" } + }; + + extern const MatroskaTags trackForced[] = { + { 0x1, "Xmp.video.TrackForced" }, + { 0x2, "Xmp.audio.TrackForced" }, + { 0x11, "Xmp.video.SubTTrackForced" } + }; + + extern const MatroskaTags trackLacing[] = { + { 0x1, "Xmp.video.TrackLacing" }, + { 0x2, "Xmp.audio.TrackLacing" }, + { 0x11, "Xmp.video.SubTTrackLacing" } + }; + + extern const MatroskaTags codecDecodeAll[] = { + { 0x1, "Xmp.video.CodecDecodeAll" }, + { 0x2, "Xmp.audio.CodecDecodeAll" }, + { 0x11, "Xmp.video.SubTCodecDecodeAll" } + }; + + extern const MatroskaTags codecDownloadUrl[] = { + { 0x1, "Xmp.video.CodecDownloadUrl" }, + { 0x2, "Xmp.audio.CodecDownloadUrl" }, + { 0x11, "Xmp.video.SubTCodecDownloadUrl" } + }; + + extern const MatroskaTags codecSettings[] = { + { 0x1, "Xmp.video.CodecSettings" }, + { 0x2, "Xmp.audio.CodecSettings" }, + { 0x11, "Xmp.video.SubTCodecSettings" } + }; + + extern const MatroskaTags trackCodec[] = { + { 0x1, "Xmp.video.Codec" }, + { 0x2, "Xmp.audio.Compressor" }, + { 0x11, "Xmp.video.SubTCodec" } + }; + + extern const MatroskaTags trackLanguage[] = { + { 0x1, "Xmp.video.TrackLang" }, + { 0x2, "Xmp.audio.TrackLang" }, + { 0x11, "Xmp.video.SubTLang" } + }; + + extern const MatroskaTags codecInfo[] = { + { 0x1, "Xmp.video.CodecInfo" }, + { 0x2, "Xmp.audio.CodecInfo" }, + { 0x11, "Xmp.video.SubTCodecInfo" } + }; + + extern const MatroskaTags streamRate[] = { + { 0x1, "Xmp.video.FrameRate" }, + { 0x2, "Xmp.audio.DefaultDuration" } + }; + + /*! + @brief Function used to calculate Tags, Tags may comprise of more than + one byte. The first byte calculates size of the Tag and the remaining + bytes are used to calculate the rest of the Tag. + Returns Tag Value. + */ + uint64_t returnTagValue(const byte* buf, long size) + { + assert(size > 0 && size <= 8); + + uint64_t b0 = buf[0] & (0xff >> size); + uint64_t tag = b0 << ((size - 1) * 8); + for (long i = 1; i < size; ++i) { + tag |= static_cast(buf[i]) << ((size - i - 1) * 8); + } + + return tag; + } + + /*! + @brief Function used to convert buffer data into numerical information, + information stored in BigEndian format + */ + int64_t returnValue(const byte* buf, long size) + { + + int64_t temp = 0; + + for(int i = size-1; i >= 0; i--) { + temp = temp + static_cast(buf[i]*(pow(256.0, (double)size-i-1))); + } +// Todo: remove debug output +// std::cerr << "size = " << size << ", val = " << temp << std::hex << " (0x" << temp << std::dec << ")"; + + uint64_t ret = 0; + for (long i = 0; i < size; ++i) { + ret |= static_cast(buf[i]) << ((size - i - 1) * 8); + } + +// Todo: remove debug output +// std::cerr << ", ret = " << ret << std::hex << " (0x" << ret << std::dec << ")\n"; + + return ret; + } + +}} // namespace Internal, Exiv2 + +namespace Exiv2 { + + using namespace Exiv2::Internal; + + MatroskaVideo::MatroskaVideo(BasicIo::AutoPtr io) + : Image(ImageType::mkv, mdNone, io) + { + } // MatroskaVideo::MatroskaVideo + + std::string MatroskaVideo::mimeType() const + { + return "video/matroska"; + } + + void MatroskaVideo::writeMetadata() + { + } + + void MatroskaVideo::readMetadata() + { + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + + // Ensure that this is the correct image type + if (!isMkvType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "Matroska"); + } + + IoCloser closer(*io_); + clearMetadata(); + continueTraversing_ = true; + height_ = width_ = 1; + + xmpData_["Xmp.video.FileName"] = io_->path(); + xmpData_["Xmp.video.FileSize"] = (double)io_->size()/(double)1048576; + xmpData_["Xmp.video.MimeType"] = mimeType(); + + while (continueTraversing_) decodeBlock(); + + aspectRatio(); + } // MatroskaVideo::readMetadata + + void MatroskaVideo::decodeBlock() + { + byte buf[8]; + io_->read(buf, 1); + + if(io_->eof()) { + continueTraversing_ = false; + return; + } + + uint32_t sz = findBlockSize(buf[0]); // 0-8 + if (sz > 0) io_->read(buf + 1, sz - 1); + + const MatroskaTags* mt = find(matroskaTags, returnTagValue(buf, sz)); + if ( !mt ) { + continueTraversing_ = false; + return; + } + + if(mt->val_ == 0xc53bb6b || mt->val_ == 0xf43b675) { + continueTraversing_ = false; + return; + } + + bool skip = find(compositeTagsList, mt->val_) != 0; + bool ignore = find(ignoredTagsList, mt->val_) != 0; + + io_->read(buf, 1); + sz = findBlockSize(buf[0]); // 0-8 + + if (sz > 0) io_->read(buf + 1, sz - 1); + uint64_t size = returnTagValue(buf, sz); + + if (skip && !ignore) return; + + const uint64_t bufMinSize = 200; + +#ifndef SUPPRESS_WARNINGS + if (!ignore && size > bufMinSize) { + EXV_WARNING << "Size " << size << " of Matroska tag 0x" + << std::hex << mt->val_ << std::dec + << " is greater than " << bufMinSize << ": ignoring it.\n"; + } +#endif + if (ignore || size > bufMinSize) { + io_->seek(size, BasicIo::cur); + return; + } + + DataBuf buf2(bufMinSize+1); + std::memset(buf2.pData_, 0x0, buf2.size_); + long s = static_cast(size) ; + io_->read(buf2.pData_,s); + contentManagement(mt, buf2.pData_,s); + } // MatroskaVideo::decodeBlock + + void MatroskaVideo::contentManagement(const MatroskaTags* mt, const byte* buf, long size) + { + int64_t duration_in_ms = 0; + static double time_code_scale = 1.0, temp = 0; + static long stream = 0, track_count = 0; + char str[4] = "No"; + const MatroskaTags* internalMt = 0; + + switch (mt->val_) { + + case 0x0282: case 0x0d80: case 0x1741: case 0x3ba9: case 0x066e: case 0x0660: + case 0x065c: case 0x067e: case 0x047a: case 0x0487: case 0x05a3: case 0x136e: + case 0x23ca: case 0xeb524: + xmpData_[mt->label_] = buf; + break; + + case 0x0030: case 0x003a: case 0x0287: case 0x14b0: case 0x14ba: case 0x285: + case 0x06ae: case 0x0286: case 0x02f7: case 0x2264: case 0x14aa: case 0x14bb: + case 0x14cc: case 0x14dd: + xmpData_[mt->label_] = returnValue(buf, size); + + if (mt->val_ == 0x0030 || mt->val_ == 0x14b0) { + width_ = returnValue(buf, size); + } + else if (mt->val_ == 0x003a || mt->val_ == 0x14ba) { + height_ = returnValue(buf, size); + } + break; + + case 0x001a: case 0x001f: case 0x0254: case 0x07e1: case 0x07e5: case 0x07e6: + case 0x1033: case 0x14b2: case 0x14b3: case 0x23c3: case 0x29bf: case 0x3e8a: + case 0x3e9a: + switch (mt->val_) { + case 0x001a: internalMt = find(videoScanType, returnValue(buf, size)); break; + case 0x001f: internalMt = find(audioChannels, returnValue(buf, size)); break; + case 0x0254: internalMt = find(compressionAlgorithm, returnValue(buf, size)); break; + case 0x07e1: internalMt = find(encryptionAlgorithm, returnValue(buf, size)); break; + case 0x1033: internalMt = find(encodingType, returnValue(buf, size)); break; + case 0x3e8a: + case 0x07e5: internalMt = find(contentSignatureAlgorithm, returnValue(buf, size)); break; + case 0x3e9a: + case 0x07e6: internalMt = find(contentSignatureHashAlgorithm, returnValue(buf, size)); break; + case 0x14b2: internalMt = find(displayUnit, returnValue(buf, size)); break; + case 0x14b3: internalMt = find(aspectRatioType, returnValue(buf, size)); break; + case 0x23c3: internalMt = find(chapterPhysicalEquivalent, returnValue(buf, size)); break; + case 0x29bf: internalMt = find(chapterTranslateCodec, returnValue(buf, size)); break; + } + if (internalMt) xmpData_[mt->label_] = internalMt->label_; + break; + + case 0x0035: case 0x38b5: + xmpData_[mt->label_] = getFloat(buf, bigEndian); + break; + + case 0x0039: case 0x0008: case 0x15aa: case 0x001c: case 0x002a: case 0x1a9697: + case 0x0484: + if (returnValue(buf, size)) strcpy(str, "Yes"); + switch (mt->val_) { + case 0x0039: internalMt = find(trackEnable, stream); break; + case 0x0008: internalMt = find(defaultOn, stream); break; + case 0x15aa: internalMt = find(trackForced, stream); break; + case 0x001c: internalMt = find(trackLacing, stream); break; + case 0x002a: internalMt = find(codecDecodeAll, stream); break; + case 0x1a9697: internalMt = find(codecSettings, stream); break; + case 0x0484: internalMt = mt; break; + } + if (internalMt) xmpData_[internalMt->label_] = str; + break; + + case 0x0006: case 0x2b59c: case 0x58688: case 0x6b240: case 0x1b4040: + switch (mt->val_) { + case 0x0006: internalMt = find(trackCodec, stream); break; + case 0x2b59c: internalMt = find(trackLanguage, stream); break; + case 0x58688: internalMt = find(codecInfo, stream); break; + case 0x6b240: + case 0x1b4040: internalMt = find(codecDownloadUrl, stream); break; + } + if (internalMt) xmpData_[internalMt->label_] = buf; + break; + + case 0x0489: case 0x0461: + switch (mt->val_) { + case 0x0489: + if(size <= 4) { + duration_in_ms = static_cast(getFloat(buf, bigEndian) * time_code_scale * 1000); + } + else { + duration_in_ms = static_cast(getDouble(buf, bigEndian) * time_code_scale * 1000); + } + break; + case 0x0461: { + duration_in_ms = returnValue(buf, size)/1000000000; break; + } + } + xmpData_[mt->label_] = duration_in_ms; + break; + + case 0x0057: + track_count++; + xmpData_["Xmp.video.TotalStream"] = track_count; + break; + + case 0xad7b1: + time_code_scale = (double)returnValue(buf, size)/(double)1000000000; + xmpData_["Xmp.video.TimecodeScale"] = time_code_scale; + break; + + case 0x0003: + internalMt = find(matroskaTrackType, returnValue(buf, size)); + stream = static_cast(internalMt->val_); + break; + + case 0x3e383: case 0x383e3: + internalMt = find(streamRate, stream); + if (returnValue(buf, size)) { + switch (stream) { + case 1: temp = (double)1000000000/(double)returnValue(buf, size); break; + case 2: temp = static_cast(returnValue(buf, size) / 1000); break; + } + if (internalMt) xmpData_[internalMt->label_] = temp; + } + else + if (internalMt) xmpData_[internalMt->label_] = "Variable Bit Rate"; + break; + + default: + break; + } + } // MatroskaVideo::contentManagement + + void MatroskaVideo::aspectRatio() + { + //TODO - Make a better unified method to handle all cases of Aspect Ratio + + double aspectRatio = (double)width_ / (double)height_; + aspectRatio = floor(aspectRatio*10) / 10; + xmpData_["Xmp.video.AspectRatio"] = aspectRatio; + + int aR = (int) ((aspectRatio*10.0)+0.1); + + switch (aR) { + case 13 : xmpData_["Xmp.video.AspectRatio"] = "4:3" ; break; + case 17 : xmpData_["Xmp.video.AspectRatio"] = "16:9" ; break; + case 10 : xmpData_["Xmp.video.AspectRatio"] = "1:1" ; break; + case 16 : xmpData_["Xmp.video.AspectRatio"] = "16:10" ; break; + case 22 : xmpData_["Xmp.video.AspectRatio"] = "2.21:1" ; break; + case 23 : xmpData_["Xmp.video.AspectRatio"] = "2.35:1" ; break; + case 12 : xmpData_["Xmp.video.AspectRatio"] = "5:4" ; break; + default : xmpData_["Xmp.video.AspectRatio"] = aspectRatio;break; + } + } // MatroskaVideo::aspectRatio + + uint32_t MatroskaVideo::findBlockSize(byte b) + { + if (b & 128) return 1; + else if (b & 64) return 2; + else if (b & 32) return 3; + else if (b & 16) return 4; + else if (b & 8) return 5; + else if (b & 4) return 6; + else if (b & 2) return 7; + else if (b & 1) return 8; + else return 0; + } // MatroskaVideo::findBlockSize + + Image::AutoPtr newMkvInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new MatroskaVideo(io)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isMkvType(BasicIo& iIo, bool advance) + { + bool result = true; + byte tmpBuf[4]; + iIo.read(tmpBuf, 4); + + if (iIo.error() || iIo.eof()) return false; + + if (0x1a != tmpBuf[0] || 0x45 != tmpBuf[1] || 0xdf != tmpBuf[2] || 0xa3 != tmpBuf[3]) { + result = false; + } + + if (!advance || !result ) iIo.seek(0, BasicIo::beg); + return result; + } + +} // namespace Exiv2 +#endif // EXV_ENABLE_VIDEO diff --git a/vendor/exiv2-0.25/src/metadatum.cpp b/vendor/exiv2-0.25/src/metadatum.cpp new file mode 100644 index 0000000..3ac54ec --- /dev/null +++ b/vendor/exiv2-0.25/src/metadatum.cpp @@ -0,0 +1,96 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: metadatum.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + Brad Schick (brad) + History: 26-Jan-04, ahu: created + 31-Jul-04, brad: isolated as a component + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: metadatum.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "metadatum.hpp" + +// + standard includes +#include +#include + + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + Key::~Key() + { + } + + Key::AutoPtr Key::clone() const + { + return AutoPtr(clone_()); + } + + Key& Key::operator=(const Key& /*rhs*/) + { + return *this; + } + + Metadatum::Metadatum() + { + } + + Metadatum::Metadatum(const Metadatum& /*rhs*/) + { + } + + Metadatum::~Metadatum() + { + } + + Metadatum& Metadatum::operator=(const Metadatum& /*rhs*/) + { + return *this; + } + + std::string Metadatum::print(const ExifData* pMetadata) const + { + std::ostringstream os; + write(os, pMetadata); + return os.str(); + } + + bool cmpMetadataByTag(const Metadatum& lhs, const Metadatum& rhs) + { + return lhs.tag() < rhs.tag(); + } + + + bool cmpMetadataByKey(const Metadatum& lhs, const Metadatum& rhs) + { + return lhs.key() < rhs.key(); + } + +} // namespace Exiv2 + diff --git a/vendor/exiv2-0.25/src/minoltamn.cpp b/vendor/exiv2-0.25/src/minoltamn.cpp new file mode 100644 index 0000000..4b0072c --- /dev/null +++ b/vendor/exiv2-0.25/src/minoltamn.cpp @@ -0,0 +1,2184 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: minoltamn.cpp + Version: $Rev: 3835 $ + Author(s): Gilles Caulier (cgilles) + Andreas Huggel (ahu) + History: 06-May-06, gc: submitted + Credits: See header file. + */ + +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: minoltamn.cpp 3835 2015-05-22 03:18:31Z nkbj $") + +// ***************************************************************************** +// included header files +#include "minoltamn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + // -- Standard Minolta Makernotes tags --------------------------------------------------------------- + + //! Lookup table to translate Minolta color mode values to readable labels + extern const TagDetails minoltaColorMode[] = { + { 0, N_("Natural Color") }, + { 1, N_("Black & White") }, + { 2, N_("Vivid Color") }, + { 3, N_("Solarization") }, + { 4, N_("AdobeRGB") }, + { 5, N_("Sepia") }, + { 9, N_("Natural") }, + { 12, N_("Portrait") }, + { 13, N_("Natural sRGB") }, + { 14, N_("Natural+ sRGB") }, + { 15, N_("Landscape") }, + { 16, N_("Evening") }, + { 17, N_("Night Scene") }, + { 18, N_("Night Portrait") } + }; + + //! Lookup table to translate Minolta image quality values to readable labels + extern const TagDetails minoltaImageQuality[] = { + { 0, N_("Raw") }, + { 1, N_("Super Fine") }, + { 2, N_("Fine") }, + { 3, N_("Standard") }, + { 4, N_("Economy") }, + { 5, N_("Extra Fine") } + }; + + //! Lookup table to translate Minolta image stabilization values + extern const TagDetails minoltaImageStabilization[] = { + { 1, N_("Off") }, + { 5, N_("On") } + }; + + // Minolta Tag Info + const TagInfo MinoltaMakerNote::tagInfo_[] = { + TagInfo(0x0000, "Version", N_("Makernote Version"), + N_("String 'MLT0' (not null terminated)"), + minoltaId, makerTags, undefined, -1, printValue), + TagInfo(0x0001, "CameraSettingsStdOld", N_("Camera Settings (Std Old)"), + N_("Standard Camera settings (Old Camera models like D5, D7, S304, and S404)"), + minoltaId, makerTags, undefined, -1, printValue), + TagInfo(0x0003, "CameraSettingsStdNew", N_("Camera Settings (Std New)"), + N_("Standard Camera settings (New Camera Models like D7u, D7i, and D7hi)"), + minoltaId, makerTags, undefined, -1, printValue), + TagInfo(0x0004, "CameraSettings7D", N_("Camera Settings (7D)"), + N_("Camera Settings (for Dynax 7D model)"), + minoltaId, makerTags, undefined, -1, printValue), + TagInfo(0x0018, "ImageStabilizationData", N_("Image Stabilization Data"), + N_("Image stabilization data"), + minoltaId, makerTags, undefined, -1, printValue), + + // TODO: Implement WB Info A100 tags decoding. + TagInfo(0x0020, "WBInfoA100", N_("WB Info A100"), + N_("White balance information for the Sony DSLR-A100"), + minoltaId, makerTags, undefined, -1, printValue), + + TagInfo(0x0040, "CompressedImageSize", N_("Compressed Image Size"), + N_("Compressed image size"), + minoltaId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0081, "Thumbnail", N_("Thumbnail"), + N_("Jpeg thumbnail 640x480 pixels"), + minoltaId, makerTags, undefined, -1, printValue), + TagInfo(0x0088, "ThumbnailOffset", N_("Thumbnail Offset"), + N_("Offset of the thumbnail"), + minoltaId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0089, "ThumbnailLength", N_("Thumbnail Length"), + N_("Size of the thumbnail"), + minoltaId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0100, "SceneMode", N_("Scene Mode"), + N_("Scene Mode"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonySceneMode), + + // TODO: for A100, use Sony table from printMinoltaSonyColorMode(). + TagInfo(0x0101, "ColorMode", N_("Color Mode"), + N_("Color mode"), + minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaColorMode)), + + TagInfo(0x0102, "Quality", N_("Image Quality"), + N_("Image quality"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality), + + // TODO: Tag 0x0103 : quality or image size (see ExifTool doc). + TagInfo(0x0103, "0x0103", N_("0x0103"), + N_("0x0103"), + minoltaId, makerTags, unsignedLong, -1, printValue), + + TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), + N_("Flash exposure compensation in EV"), + minoltaId, makerTags, signedRational, -1, print0x9204), + TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"), + N_("Teleconverter Model"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel), + TagInfo(0x0107, "ImageStabilization", N_("Image Stabilization"), + N_("Image stabilization"), + minoltaId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(minoltaImageStabilization)), + TagInfo(0x0109, "RawAndJpgRecording", N_("RAW+JPG Recording"), + N_("RAW and JPG files recording"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), + TagInfo(0x010a, "ZoneMatching", N_("Zone Matching"), + N_("Zone matching"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching), + TagInfo(0x010b, "ColorTemperature", N_("Color Temperature"), + N_("Color temperature"), + minoltaId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x010c, "LensID", N_("Lens ID"), + N_("Lens identifier"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyLensID), + TagInfo(0x0111, "ColorCompensationFilter", N_("Color Compensation Filter"), + N_("Color Compensation Filter: negative is green, positive is magenta"), + minoltaId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + N_("White Balance Fine Tune Value"), + minoltaId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0113, "ImageStabilizationA100", N_("Image Stabilization A100"), + N_("Image Stabilization for the Sony DSLR-A100"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), + + // TODO: implement CameraSettingsA100 tags decoding. + TagInfo(0x0114, "CameraSettings5D", N_("Camera Settings (5D)"), + N_("Camera Settings (for Dynax 5D model)"), + minoltaId, makerTags, undefined, -1, printValue), + + TagInfo(0x0115, "WhiteBalance", N_("White Balance"), + N_("White balance"), + minoltaId, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd), + TagInfo(0x0e00, "PrintIM", N_("Print IM"), + N_("PrintIM information"), + minoltaId, makerTags, undefined, -1, printValue), + TagInfo(0x0f00, "CameraSettingsZ1", N_("Camera Settings (Z1)"), + N_("Camera Settings (for Z1, DImage X, and F100 models)"), + minoltaId, makerTags, undefined, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownMinoltaMakerNoteTag)", "(UnknownMinoltaMakerNoteTag)", + N_("Unknown Minolta MakerNote tag"), + minoltaId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* MinoltaMakerNote::tagList() + { + return tagInfo_; + } + + // -- Standard Minolta camera settings --------------------------------------------------------------- + + //! Lookup table to translate Minolta Std camera settings exposure mode values to readable labels + extern const TagDetails minoltaExposureModeStd[] = { + { 0, N_("Program") }, + { 1, N_("Aperture priority") }, + { 2, N_("Shutter priority") }, + { 3, N_("Manual") } + }; + + //! Lookup table to translate Minolta Std camera settings flash mode values to readable labels + extern const TagDetails minoltaFlashModeStd[] = { + { 0, N_("Fill flash") }, + { 1, N_("Red-eye reduction") }, + { 2, N_("Rear flash sync") }, + { 3, N_("Wireless") }, + { 4, N_("Off") } + }; + + //! Lookup table to translate Minolta Std camera settings white balance values to readable labels + extern const TagDetails minoltaWhiteBalanceStd[] = { + { 0, N_("Auto") }, + { 1, N_("Daylight") }, + { 2, N_("Cloudy") }, + { 3, N_("Tungsten") }, + { 5, N_("Custom") }, + { 7, N_("Fluorescent") }, + { 8, N_("Fluorescent 2") }, + { 11, N_("Custom 2") }, + { 12, N_("Custom 3") } + }; + + //! Lookup table to translate Minolta Std camera settings image size values to readable labels + extern const TagDetails minoltaImageSizeStd[] = { + { 0, N_("Full size") }, + { 1, "1600x1200" }, + { 2, "1280x960" }, + { 3, "640x480" }, + { 6, "2080x1560" }, + { 7, "2560x1920" }, + { 8, "3264x2176" } + }; + + //! Lookup table to translate Minolta Std camera settings image quality values to readable labels + extern const TagDetails minoltaImageQualityStd[] = { + { 0, N_("Raw") }, + { 1, N_("Super fine") }, + { 2, N_("Fine") }, + { 3, N_("Standard") }, + { 4, N_("Economy") }, + { 5, N_("Extra fine") } + }; + + //! Lookup table to translate Minolta Std camera settings drive mode values to readable labels + extern const TagDetails minoltaDriveModeStd[] = { + { 0, N_("Single Frame") }, + { 1, N_("Continuous") }, + { 2, N_("Self-timer") }, + { 4, N_("Bracketing") }, + { 5, N_("Interval") }, + { 6, N_("UHS continuous") }, + { 7, N_("HS continuous") } + }; + + //! Lookup table to translate Minolta Std camera settings metering mode values to readable labels + extern const TagDetails minoltaMeteringModeStd[] = { + { 0, N_("Multi-segment") }, + { 1, N_("Center weighted average") }, + { 2, N_("Spot") } + }; + + //! Lookup table to translate Minolta Std camera settings digital zoom values to readable labels + extern const TagDetails minoltaDigitalZoomStd[] = { + { 0, N_("Off") }, + { 1, N_("Electronic magnification") }, + { 2, "2x" } + }; + + //! Lookup table to translate Minolta Std camera bracket step mode values to readable labels + extern const TagDetails minoltaBracketStepStd[] = { + { 0, "1/3 EV" }, + { 1, "2/3 EV" }, + { 2, "1 EV" } + }; + + //! Lookup table to translate Minolta Std camera settings AF points values to readable labels + extern const TagDetails minoltaAFPointsStd[] = { + { 0, N_("Center") }, + { 1, N_("Top") }, + { 2, N_("Top-right") }, + { 3, N_("Right") }, + { 4, N_("Bottom-right") }, + { 5, N_("Bottom") }, + { 6, N_("Bottom-left") }, + { 7, N_("Left") }, + { 8, N_("Top-left") } + }; + + //! Lookup table to translate Minolta Std camera settings flash fired values to readable labels + extern const TagDetails minoltaFlashFired[] = { + { 0, N_("Did not fire") }, + { 1, N_("Fired") } + }; + + //! Lookup table to translate Minolta Std camera settings sharpness values to readable labels + extern const TagDetails minoltaSharpnessStd[] = { + { 0, N_("Hard") }, + { 1, N_("Normal") }, + { 2, N_("Soft") } + }; + + //! Lookup table to translate Minolta Std camera settings subject program values to readable labels + extern const TagDetails minoltaSubjectProgramStd[] = { + { 0, N_("None") }, + { 1, N_("Portrait") }, + { 2, N_("Text") }, + { 3, N_("Night portrait") }, + { 4, N_("Sunset") }, + { 5, N_("Sports action") } + }; + + //! Lookup table to translate Minolta Std camera settings ISO settings values to readable labels + extern const TagDetails minoltaISOSettingStd[] = { + { 0, "100" }, + { 1, "200" }, + { 2, "400" }, + { 3, "800" }, + { 4, N_("Auto") }, + { 5, "64" } + }; + + //! Lookup table to translate Minolta Std camera settings model values to readable labels + extern const TagDetails minoltaModelStd[] = { + { 0, "DiMAGE 7 | X1 | X21 | X31" }, + { 1, "DiMAGE 5" }, + { 2, "DiMAGE S304" }, + { 3, "DiMAGE S404" }, + { 4, "DiMAGE 7i" }, + { 5, "DiMAGE 7Hi" }, + { 6, "DiMAGE A1" }, + { 7, "DiMAGE A2 | S414" }, + { 7, "DiMAGE A2 | S414" } // To silence compiler warning + }; + + //! Lookup table to translate Minolta Std camera settings interval mode values to readable labels + extern const TagDetails minoltaIntervalModeStd[] = { + { 0, N_("Still image") }, + { 1, N_("Time-lapse movie") } + }; + + //! Lookup table to translate Minolta Std camera settings folder name values to readable labels + extern const TagDetails minoltaFolderNameStd[] = { + { 0, N_("Standard form") }, + { 1, N_("Data form") } + }; + + //! Lookup table to translate Minolta Std camera settings color mode values to readable labels + extern const TagDetails minoltaColorModeStd[] = { + { 0, N_("Natural color") }, + { 1, N_("Black and white") }, + { 2, N_("Vivid color") }, + { 3, N_("Solarization") }, + { 4, N_("Adobe RGB") } + }; + + //! Lookup table to translate Minolta Std camera settings wide focus zone values to readable labels + extern const TagDetails minoltaWideFocusZoneStd[] = { + { 0, N_("No zone") }, + { 1, N_("Center zone (horizontal orientation)") }, + { 1, N_("Center zone (vertical orientation)") }, + { 1, N_("Left zone") }, + { 4, N_("Right zone") } + }; + + //! Lookup table to translate Minolta Std camera settings focus mode values to readable labels + extern const TagDetails minoltaFocusModeStd[] = { + { 0, N_("Auto focus") }, + { 1, N_("Manual focus") } + }; + + //! Lookup table to translate Minolta Std camera settings focus area values to readable labels + extern const TagDetails minoltaFocusAreaStd[] = { + { 0, N_("Wide focus (normal)") }, + { 1, N_("Spot focus") } + }; + + //! Lookup table to translate Minolta Std camera settings DEC switch position values to readable labels + extern const TagDetails minoltaDECPositionStd[] = { + { 0, N_("Exposure") }, + { 1, N_("Contrast") }, + { 2, N_("Saturation") }, + { 3, N_("Filter") } + }; + + //! Lookup table to translate Minolta Std camera settings color profile values to readable labels + extern const TagDetails minoltaColorProfileStd[] = { + { 0, N_("Not embedded") }, + { 1, N_("Embedded") } + }; + + //! Lookup table to translate Minolta Std camera settings data Imprint values to readable labels + extern const TagDetails minoltaDataImprintStd[] = { + { 0, N_("None") }, + { 1, "YYYY/MM/DD" }, + { 2, "MM/DD/HH:MM" }, + { 3, N_("Text") }, + { 4, N_("Text + ID#") } + }; + + //! Lookup table to translate Minolta Std camera settings flash metering values to readable labels + extern const TagDetails minoltaFlashMeteringStd[] = { + { 0, N_("ADI (Advanced Distance Integration)") }, + { 1, N_("Pre-flash TTl") }, + { 2, N_("Manual flash control") } + }; + + std::ostream& MinoltaMakerNote::printMinoltaExposureSpeedStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << (value.toLong()/8)-1; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaExposureTimeStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << (value.toLong()/8)-6; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaFNumberStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << (value.toLong()/8)-1; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaExposureCompensationStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << value.toLong()/256; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaFocalLengthStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << (value.toLong()/3)-2; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaDateStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << value.toLong() / 65536 << ":" << std::right << std::setw(2) << std::setfill('0') + << (value.toLong() - value.toLong() / 65536 * 65536) / 256 << ":" + << std::right << std::setw(2) << std::setfill('0') << value.toLong() % 256; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaTimeStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << std::right << std::setw(2) << std::setfill('0') << value.toLong() / 65536 + << ":" << std::right << std::setw(2) << std::setfill('0') + << (value.toLong() - value.toLong() / 65536 * 65536) / 256 << ":" + << std::right << std::setw(2) << std::setfill('0') << value.toLong() % 256; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaFlashExposureCompStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << (value.toLong()-6)/3; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << value.toLong()/256; + return os; + } + + std::ostream& MinoltaMakerNote::printMinoltaBrightnessStd(std::ostream& os, const Value& value, const ExifData*) + { + // From the PHP JPEG Metadata Toolkit + os << (value.toLong()/8)-6; + return os; + } + + // Minolta Standard Camera Settings Tag Info (Old and New) + const TagInfo MinoltaMakerNote::tagInfoCsStd_[] = { + TagInfo(0x0001, "ExposureMode", N_("Exposure Mode"), + N_("Exposure mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaExposureModeStd)), + TagInfo(0x0002, "FlashMode", N_("Flash Mode"), + N_("Flash mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashModeStd)), + TagInfo(0x0003, "WhiteBalance", N_("White Balance"), + N_("White balance"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWhiteBalanceStd)), + TagInfo(0x0004, "ImageSize", N_("Image Size"), + N_("Image size"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageSizeStd)), + TagInfo(0x0005, "Quality", N_("Image Quality"), + N_("Image quality"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaImageQualityStd)), + TagInfo(0x0006, "DriveMode", N_("Drive Mode"), + N_("Drive mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDriveModeStd)), + TagInfo(0x0007, "MeteringMode", N_("Metering Mode"), + N_("Metering mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaMeteringModeStd)), + TagInfo(0x0008, "ISO", N_("ISO"), + N_("ISO Value"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureSpeedStd), + TagInfo(0x0009, "ExposureTime", N_("Exposure Time"), + N_("Exposure time"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureTimeStd), + TagInfo(0x000A, "FNumber", N_("FNumber"), + N_("The F-Number"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFNumberStd), + TagInfo(0x000B, "MacroMode", N_("Macro Mode"), + N_("Macro mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue), + TagInfo(0x000C, "DigitalZoom", N_("Digital Zoom"), + N_("Digital zoom"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDigitalZoomStd)), + TagInfo(0x000D, "ExposureCompensation", N_("Exposure Compensation"), + N_("Exposure compensation"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaExposureCompensationStd), + TagInfo(0x000E, "BracketStep", N_("Bracket Step"), + N_("Bracket step"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaBracketStepStd)), + TagInfo(0x0010, "IntervalLength", N_("Interval Length"), + N_("Interval length"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0011, "IntervalNumber", N_("Interval Number"), + N_("Interval number"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0012, "FocalLength", N_("Focal Length"), + N_("Focal length"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFocalLengthStd), + TagInfo(0x0013, "FocusDistance", N_("Focus Distance"), + N_("Focus distance"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0014, "FlashFired", N_("Flash Fired"), + N_("Flash fired"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), + TagInfo(0x0015, "MinoltaDate", N_("Minolta Date"), + N_("Minolta date"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaDateStd), + TagInfo(0x0016, "MinoltaTime", N_("Minolta Time"), + N_("Minolta time"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaTimeStd), + TagInfo(0x0017, "MaxAperture", N_("Max Aperture"), + N_("Max aperture"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x001A, "FileNumberMemory", N_("File Number Memory"), + N_("File number memory"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaSonyBoolValue), + TagInfo(0x001B, "LastFileNumber", N_("Last Image Number"), + N_("Last image number"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x001C, "ColorBalanceRed", N_("Color Balance Red"), + N_("Color balance red"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), + TagInfo(0x001D, "ColorBalanceGreen", N_("Color Balance Green"), + N_("Color balance green"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), + TagInfo(0x001E, "ColorBalanceBlue", N_("Color Balance Blue"), + N_("Color balance blue"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaWhiteBalanceStd), + TagInfo(0x001F, "Saturation", N_("Saturation"), + N_("Saturation"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0020, "Contrast", N_("Contrast"), + N_("Contrast"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0021, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSharpnessStd)), + TagInfo(0x0022, "SubjectProgram", N_("Subject Program"), + N_("Subject program"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaSubjectProgramStd)), + TagInfo(0x0023, "FlashExposureComp", N_("Flash Exposure Compensation"), + N_("Flash exposure compensation in EV"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaFlashExposureCompStd), + TagInfo(0x0024, "ISOSetting", N_("ISO Settings"), + N_("ISO setting"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaISOSettingStd)), + TagInfo(0x0025, "MinoltaModel", N_("Minolta Model"), + N_("Minolta model"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaModelStd)), + TagInfo(0x0026, "IntervalMode", N_("Interval Mode"), + N_("Interval mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaIntervalModeStd)), + TagInfo(0x0027, "FolderName", N_("Folder Name"), + N_("Folder name"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFolderNameStd)), + TagInfo(0x0028, "ColorMode", N_("ColorMode"), + N_("ColorMode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorModeStd)), + TagInfo(0x0029, "ColorFilter", N_("Color Filter"), + N_("Color filter"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x002A, "BWFilter", N_("Black and White Filter"), + N_("Black and white filter"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x002B, "Internal Flash", N_("Internal Flash"), + N_("Internal Flash"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), + TagInfo(0x002C, "Brightness", N_("Brightness"), + N_("Brightness"), + minoltaCsNewId, makerTags, unsignedLong, 1, printMinoltaBrightnessStd), + TagInfo(0x002D, "SpotFocusPointX", N_("Spot Focus Point X"), + N_("Spot focus point X"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x002E, "SpotFocusPointY", N_("Spot Focus Point Y"), + N_("Spot focus point Y"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x002F, "WideFocusZone", N_("Wide Focus Zone"), + N_("Wide focus zone"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaWideFocusZoneStd)), + TagInfo(0x0030, "FocusMode", N_("Focus Mode"), + N_("Focus mode"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusModeStd)), + TagInfo(0x0031, "FocusArea", N_("Focus area"), + N_("Focus area"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFocusAreaStd)), + TagInfo(0x0032, "DECPosition", N_("DEC Switch Position"), + N_("DEC switch position"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDECPositionStd)), + TagInfo(0x0033, "ColorProfile", N_("Color Profile"), + N_("Color profile"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaColorProfileStd)), + TagInfo(0x0034, "DataImprint", N_("Data Imprint"), + N_("Data Imprint"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaDataImprintStd)), + TagInfo(0x003F, "FlashMetering", N_("Flash Metering"), + N_("Flash metering"), + minoltaCsNewId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)), + // End of list marker + TagInfo(0xffff, "(UnknownMinoltaCsStdTag)", "(UnknownMinoltaCsStdTag)", + N_("Unknown Minolta Camera Settings tag"), + minoltaCsNewId, makerTags, unsignedLong, 1, printValue) + }; + + const TagInfo* MinoltaMakerNote::tagListCsStd() + { + return tagInfoCsStd_; + } + + // -- Minolta Dynax 7D camera settings --------------------------------------------------------------- + + //! Lookup table to translate Minolta Dynax 7D camera settings exposure mode values to readable labels + extern const TagDetails minoltaExposureMode7D[] = { + { 0, N_("Program") }, + { 1, N_("Aperture priority") }, + { 2, N_("Shutter priority") }, + { 3, N_("Manual") }, + { 4, N_("Auto") }, + { 5, N_("Program-shift A") }, + { 6, N_("Program-shift S") } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings image size values to readable labels + extern const TagDetails minoltaImageSize7D[] = { + { 0, N_("Large") }, + { 1, N_("Medium") }, + { 2, N_("Small") } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings image quality values to readable labels + extern const TagDetails minoltaImageQuality7D[] = { + { 0, N_("Raw") }, + { 16, N_("Fine") }, + { 32, N_("Normal") }, + { 34, N_("Raw+Jpeg") }, + { 48, N_("Economy") } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings white balance values to readable labels + extern const TagDetails minoltaWhiteBalance7D[] = { + { 0, N_("Auto") }, + { 1, N_("Daylight") }, + { 2, N_("Shade") }, + { 3, N_("Cloudy") }, + { 4, N_("Tungsten") }, + { 5, N_("Fluorescent") }, + { 256, N_("Kelvin") }, + { 512, N_("Manual") }, + { 512, N_("Manual") } // To silence compiler warning + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings focus mode values to readable labels + extern const TagDetails minoltaFocusMode7D[] = { + { 0, N_("Single-shot AF") }, + { 1, N_("Continuous AF") }, + { 3, N_("Manual") }, + { 4, N_("Automatic AF") } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings AF points values to readable labels + extern const TagDetails minoltaAFPoints7D[] = { + { 1, N_("Center") }, + { 2, N_("Top") }, + { 4, N_("Top-right") }, + { 8, N_("Right") }, + { 16, N_("Bottom-right") }, + { 32, N_("Bottom") }, + { 64, N_("Bottom-left") }, + { 128, N_("Left") }, + { 256, N_("Top-left") } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings ISO settings values to readable labels + extern const TagDetails minoltaISOSetting7D[] = { + { 0, N_("Auto") }, + { 1, "100" }, + { 3, "200" }, + { 4, "400" }, + { 5, "800" }, + { 6, "1600" }, + { 7, "3200" } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings color space values to readable labels + extern const TagDetails minoltaColorSpace7D[] = { + { 0, N_("sRGB (Natural)") }, + { 1, N_("sRGB (Natural+)") }, + { 4, N_("Adobe RGB") } + }; + + //! Lookup table to translate Minolta Dynax 7D camera settings rotation values to readable labels + extern const TagDetails minoltaRotation7D[] = { + { 72, N_("Horizontal (normal)") }, + { 76, N_("Rotate 90 CW") }, + { 82, N_("Rotate 270 CW") } + }; + + // Minolta Dynax 7D Camera Settings Tag Info + const TagInfo MinoltaMakerNote::tagInfoCs7D_[] = { + TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"), + N_("Exposure mode"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode7D)), + TagInfo(0x0002, "ImageSize", N_("Image Size"), + N_("Image size"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageSize7D)), + TagInfo(0x0003, "Quality", N_("Image Quality"), + N_("Image quality"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaImageQuality7D)), + TagInfo(0x0004, "WhiteBalance", N_("White Balance"), + N_("White balance"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance7D)), + TagInfo(0x000E, "FocusMode", N_("Focus Mode"), + N_("Focus mode"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFocusMode7D)), + TagInfo(0x0010, "AFPoints", N_("AF Points"), + N_("AF points"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaAFPoints7D)), + TagInfo(0x0015, "FlashFired", N_("Flash Fired"), + N_("Flash fired"), + minoltaCs7DId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(minoltaFlashFired)), + TagInfo(0x0016, "FlashMode", N_("Flash Mode"), + N_("Flash mode"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001C, "ISOSpeed", N_("ISO Speed Mode"), + N_("ISO speed setting"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaISOSetting7D)), + TagInfo(0x001E, "ExposureCompensation", N_("Exposure Compensation"), + N_("Exposure compensation"), + minoltaCs7DId, makerTags, signedShort, 1, printValue), + TagInfo(0x0025, "ColorSpace", N_("Color Space"), + N_("Color space"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaColorSpace7D)), + TagInfo(0x0026, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0027, "Contrast", N_("Contrast"), + N_("Contrast"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0028, "Saturation", N_("Saturation"), + N_("Saturation"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x002D, "FreeMemoryCardImages", N_("Free Memory Card Images"), + N_("Free memory card images"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x003F, "ColorTemperature", N_("Color Temperature"), + N_("Color temperature"), + minoltaCs7DId, makerTags, signedShort, 1, printValue), + TagInfo(0x0040, "Hue", N_("Hue"), N_("Hue"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0046, "Rotation", N_("Rotation"), + N_("Rotation"), + minoltaCs7DId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaRotation7D)), + TagInfo(0x0047, "FNumber", N_("FNumber"), + N_("The F-Number"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0048, "ExposureTime", N_("Exposure Time"), + N_("Exposure time"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + // 0x004A is a dupplicate than 0x002D. + TagInfo(0x004A, "FreeMemoryCardImages", N_("Free Memory Card Images"), + N_("Free memory card images"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x005E, "ImageNumber", N_("Image Number"), + N_("Image number"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0060, "NoiseReduction", N_("Noise Reduction"), + N_("Noise reduction"), + minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + // 0x0062 is a dupplicate than 0x005E. + TagInfo(0x0062, "ImageNumber", N_("Image Number"), + N_("Image number"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0071, "ImageStabilization", N_("Image Stabilization"), + N_("Image stabilization"), + minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x0075, "ZoneMatchingOn", N_("Zone Matching On"), + N_("Zone matching on"), + minoltaCs7DId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + // End of list marker + TagInfo(0xffff, "(UnknownMinoltaCs7DTag)", "(UnknownMinoltaCs7DTag)", + N_("Unknown Minolta Camera Settings 7D tag"), + minoltaCs7DId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* MinoltaMakerNote::tagListCs7D() + { + return tagInfoCs7D_; + } + + // -- Minolta Dynax 5D camera settings --------------------------------------------------------------- + + //! Lookup table to translate Minolta Dynax 5D camera settings exposure mode values to readable labels + extern const TagDetails minoltaExposureMode5D[] = { + { 0, N_("Program") }, + { 1, N_("Aperture priority") }, + { 2, N_("Shutter priority") }, + { 3, N_("Manual") }, + { 4, N_("Auto") }, + { 5, N_("Program Shift A") }, + { 6, N_("Program Shift S") }, + { 0x1013, N_("Portrait") }, + { 0x1023, N_("Sports") }, + { 0x1033, N_("Sunset") }, + { 0x1043, N_("Night View/Portrait") }, + { 0x1053, N_("Landscape") }, + { 0x1083, N_("Macro") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings image size values to readable labels + extern const TagDetails minoltaImageSize5D[] = { + { 0, N_("Large") }, + { 1, N_("Medium") }, + { 2, N_("Small") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings image quality values to readable labels + extern const TagDetails minoltaImageQuality5D[] = { + { 0, N_("Raw") }, + { 16, N_("Fine") }, + { 32, N_("Normal") }, + { 34, N_("Raw+Jpeg") }, + { 48, N_("Economy") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings white balance values to readable labels + extern const TagDetails minoltaWhiteBalance5D[] = { + { 0, N_("Auto") }, + { 1, N_("Daylight") }, + { 2, N_("Cloudy") }, + { 3, N_("Shade") }, + { 4, N_("Tungsten") }, + { 5, N_("Fluorescent") }, + { 6, N_("Flash") }, + { 256, N_("Kelvin") }, + { 512, N_("Manual") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings metering mode values to readable labels + extern const TagDetails minoltaMeteringMode5D[] = { + { 0, N_("Multi-segment") }, + { 1, N_("Center weighted") }, + { 2, N_("Spot") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings ISO settings values to readable labels + extern const TagDetails minoltaISOSetting5D[] = { + { 0, N_("Auto") }, + { 1, "100" }, + { 3, "200" }, + { 4, "400" }, + { 5, "800" }, + { 6, "1600" }, + { 7, "3200" }, + { 8, N_("200 (Zone Matching High)") }, + { 10, N_("80 (Zone Matching Low)") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings color space values to readable labels + extern const TagDetails minoltaColorSpace5D[] = { + { 0, N_("sRGB (Natural)") }, + { 1, N_("sRGB (Natural+)") }, + { 2, N_("Monochrome") }, + { 3, N_("Adobe RGB (ICC)") }, + { 4, N_("Adobe RGB") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings rotation values to readable labels + extern const TagDetails minoltaRotation5D[] = { + { 72, N_("Horizontal (normal)") }, + { 76, N_("Rotate 90 CW") }, + { 82, N_("Rotate 270 CW") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings focus position values to readable labels + extern const TagDetails minoltaFocusPosition5D[] = { + { 0, N_("Wide") }, + { 1, N_("Central") }, + { 2, N_("Up") }, + { 3, N_("Up right") }, + { 4, N_("Right") }, + { 5, N_("Down right") }, + { 6, N_("Down") }, + { 7, N_("Down left") }, + { 8, N_("Left") }, + { 9, N_("Up left") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings focus area values to readable labels + extern const TagDetails minoltaFocusArea5D[] = { + { 0, N_("Wide") }, + { 1, N_("Selection") }, + { 2, N_("Spot") } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings focus mode values to readable labels + extern const TagDetails minoltaAFMode5D[] = { + { 0, "AF-A" }, + { 1, "AF-S" }, + { 2, "AF-D" }, + { 3, "DMF" } + }; + + //! Lookup table to translate Minolta Dynax 5D camera settings picture finish values to readable labels + extern const TagDetails minoltaPictureFinish5D[] = { + { 0, N_("Natural") }, + { 1, N_("Natural+") }, + { 2, N_("Portrait") }, + { 3, N_("Wind Scene") }, + { 4, N_("Evening Scene") }, + { 5, N_("Night Scene") }, + { 6, N_("Night Portrait") }, + { 7, N_("Monochrome") }, + { 8, N_("Adobe RGB") }, + { 9, N_("Adobe RGB (ICC)") } + }; + + //! Method to convert Minolta Dynax 5D exposure manual bias values. + std::ostream& MinoltaMakerNote::printMinoltaExposureManualBias5D(std::ostream& os, const Value& value, const ExifData*) + { + // From Xavier Raynaud: the value is converted from 0:256 to -5.33:5.33 + + std::ios::fmtflags f( os.flags() ); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) + << (float (value.toLong()-128)/24); + os.copyfmt(oss); + os.flags(f); + return os; + } + + //! Method to convert Minolta Dynax 5D exposure compensation values. + std::ostream& MinoltaMakerNote::printMinoltaExposureCompensation5D(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) + << (float (value.toLong()-300)/100); + os.copyfmt(oss); + os.flags(f); + return os; + } + + // Minolta Dynax 5D Camera Settings Tag Info + const TagInfo MinoltaMakerNote::tagInfoCs5D_[] = { + TagInfo(0x000A, "ExposureMode", N_("Exposure Mode"), + N_("Exposure mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaExposureMode5D)), + TagInfo(0x000C, "ImageSize", N_("Image Size"), + N_("Image size"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageSize5D)), + TagInfo(0x000D, "Quality", N_("Image Quality"), + N_("Image quality"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaImageQuality5D)), + TagInfo(0x000E, "WhiteBalance", N_("White Balance"), + N_("White balance"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaWhiteBalance5D)), + TagInfo(0x001A, "FocusPosition", N_("Focus Position"), + N_("Focus position"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusPosition5D)), + TagInfo(0x001B, "FocusArea", N_("Focus Area"), + N_("Focus area"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusArea5D)), + TagInfo(0x001F, "FlashFired", N_("Flash Fired"), + N_("Flash fired"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFlashFired)), + TagInfo(0x0025, "MeteringMode", N_("Metering Mode"), + N_("Metering mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaMeteringMode5D)), + TagInfo(0x0026, "ISOSpeed", N_("ISO Speed Mode"), + N_("ISO speed setting"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaISOSetting5D)), + TagInfo(0x002F, "ColorSpace", N_("Color Space"), + N_("Color space"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaColorSpace5D)), + TagInfo(0x0030, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0031, "Contrast", N_("Contrast"), + N_("Contrast"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0032, "Saturation", N_("Saturation"), + N_("Saturation"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0035, "ExposureTime", N_("Exposure Time"), + N_("Exposure time"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0036, "FNumber", N_("FNumber"), + N_("The F-Number"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0037, "FreeMemoryCardImages", N_("Free Memory Card Images"), + N_("Free memory card images"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0038, "ExposureRevision", N_("Exposure Revision"), + N_("Exposure revision"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0048, "FocusMode", N_("Focus Mode"), + N_("Focus mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaFocusModeStd)), + TagInfo(0x0049, "ColorTemperature", N_("Color Temperature"), + N_("Color temperature"), + minoltaCs5DId, makerTags, signedShort, -1, printValue), + TagInfo(0x0050, "Rotation", N_("Rotation"), + N_("Rotation"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaRotation5D)), + TagInfo(0x0053, "ExposureCompensation", N_("Exposure Compensation"), + N_("Exposure compensation"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureCompensation5D), + TagInfo(0x0054, "FreeMemoryCardImages", N_("Free Memory Card Images"), + N_("Free memory card images"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0065, "Rotation2", N_("Rotation2"), + N_("Rotation2"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyRotation), + TagInfo(0x006E, "Color Temperature", N_("Color Temperature"), + N_("Color Temperature"), + minoltaCs5DId, makerTags, signedShort, -1, printValue), + TagInfo(0x0071, "PictureFinish", N_("Picture Finish"), + N_("Picture Finish"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaPictureFinish5D)), + TagInfo(0x0091, "ExposureManualBias", N_("Exposure Manual Bias"), + N_("Exposure manual bias"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaExposureManualBias5D), + TagInfo(0x009E, "AFMode", N_("AF Mode"), + N_("AF mode"), + minoltaCs5DId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(minoltaAFMode5D)), + TagInfo(0x00AE, "ImageNumber", N_("Image Number"), + N_("Image number"), + minoltaCs5DId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x00B0, "NoiseReduction", N_("Noise Reduction"), + N_("Noise reduction"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue), + TagInfo(0x00BD, "ImageStabilization", N_("Image Stabilization"), + N_("Image stabilization"), + minoltaCs5DId, makerTags, unsignedShort, -1, printMinoltaSonyBoolValue), + + // From Xavier Raynaud: some notes on missing tags. + // 0x0051 seems to be identical to FNumber (0x0036). An approx. relation between Tag value + // and Fstop is exp(-0.335+value*0.043) + // 0x0052 seems to be identical to ExposureTime (0x0035). An approx. relation between Tag + // value and Exposure time is exp(-4+value*0.085) + + // End of list marker + TagInfo(0xFFFF, "(UnknownMinoltaCs5DTag)", "(UnknownMinoltaCs5DTag)", + N_("Unknown Minolta Camera Settings 5D tag"), + minoltaCs5DId, makerTags, invalidTypeId, -1, printValue) + }; + + const TagInfo* MinoltaMakerNote::tagListCs5D() + { + return tagInfoCs5D_; + } + + // -- Sony A100 camera settings --------------------------------------------------------------- + + //! Lookup table to translate Sony A100 camera settings drive mode 2 values to readable labels + extern const TagDetails sonyDriveMode2A100[] = { + { 0, N_("Self-timer 10 sec") }, + { 1, N_("Continuous") }, + { 4, N_("Self-timer 2 sec") }, + { 5, N_("Single Frame") }, + { 8, N_("White Balance Bracketing Low") }, + { 9, N_("White Balance Bracketing High") }, + { 770, N_("Single-frame Bracketing Low") }, + { 771, N_("Continuous Bracketing Low") }, + { 1794, N_("Single-frame Bracketing High") }, + { 1795, N_("Continuous Bracketing High") } + }; + + //! Lookup table to translate Sony A100 camera settings focus mode values to readable labels + extern const TagDetails sonyFocusModeA100[] = { + { 0, "AF-S" }, + { 1, "AF-C" }, + { 4, "AF-A" }, + { 5, "Manual" }, + { 6, "DMF" } + }; + + //! Lookup table to translate Sony A100 camera settings flash mode values to readable labels + extern const TagDetails sonyFlashModeA100[] = { + { 0, N_("Auto") }, + { 2, N_("Rear flash sync") }, + { 3, N_("Wireless") }, + { 4, N_("Fill flash") } + }; + + //! Lookup table to translate Sony A100 camera settings metering mode values to readable labels + extern const TagDetails sonyMeteringModeA100[] = { + { 0, N_("Multi-segment") }, + { 1, N_("Center weighted average") }, + { 2, N_("Spot") } + }; + + //! Lookup table to translate Sony A100 camera settings zone matching mode values to readable labels + extern const TagDetails sonyZoneMatchingModeA100[] = { + { 0, N_("Off") }, + { 1, N_("Standard") }, + { 2, N_("Advanced") } + }; + + //! Lookup table to translate Sony A100 camera settings color space values to readable labels + + extern const TagDetails sonyColorSpaceA100[] = { + { 0, N_("sRGB") }, + { 5, N_("Adobe RGB") } + }; + + //! Lookup table to translate Sony A100 camera settings drive mode values to readable labels + extern const TagDetails sonyDriveModeA100[] = { + { 0, N_("Single Frame") }, + { 1, N_("Continuous") }, + { 2, N_("Self-timer") }, + { 3, N_("Continuous Bracketing") }, + { 4, N_("Single-Frame Bracketing") }, + { 5, N_("White Balance Bracketing") } + }; + + //! Lookup table to translate Sony A100 camera settings self timer time values to readable labels + extern const TagDetails sonySelfTimerTimeA100[] = { + { 0, "10s" }, + { 4, "2s" } + }; + + //! Lookup table to translate Sony A100 camera settings continuous bracketing values to readable labels + extern const TagDetails sonyContinuousBracketingA100[] = { + { 0x303, N_("Low") }, + { 0x703, N_("High") } + }; + + //! Lookup table to translate Sony A100 camera settings single frame bracketing values to readable labels + extern const TagDetails sonySingleFrameBracketingA100[] = { + { 0x302, N_("Low") }, + { 0x702, N_("High") } + }; + + //! Lookup table to translate Sony A100 camera settings white balance bracketing values to readable labels + extern const TagDetails sonyWhiteBalanceBracketingA100[] = { + { 0x8, N_("Low") }, + { 0x9, N_("High") } + }; + + //! Lookup table to translate Sony A100 camera settings white balance setting values to readable labels + extern const TagDetails sonyWhiteBalanceSettingA100[] = { + { 0x0000, N_("Auto") }, + { 0x0001, N_("Preset") }, + { 0x0002, N_("Custom") }, + { 0x0003, N_("Color Temperature/Color Filter") }, + { 0x8001, N_("Preset") }, + { 0x8002, N_("Custom") }, + { 0x8003, N_("Color Temperature/Color Filter") } + }; + + //! Lookup table to translate Sony A100 camera settings preset white balance values to readable labels + extern const TagDetails sonyPresetWhiteBalanceA100[] = { + { 1, N_("Daylight") }, + { 2, N_("Cloudy") }, + { 3, N_("Shade") }, + { 4, N_("Tungsten") }, + { 5, N_("Fluorescent") }, + { 6, N_("Flash") } + }; + + //! Lookup table to translate Sony A100 camera settings color temperature setting values to readable labels + extern const TagDetails sonyColorTemperatureSettingA100[] = { + { 0, N_("Temperature") }, + { 2, N_("Color Filter") } + }; + + //! Lookup table to translate Sony A100 camera settings custom WB setting values to readable labels + extern const TagDetails sonyCustomWBSettingA100[] = { + { 0, N_("Setup") }, + { 2, N_("Recall") } + }; + + //! Lookup table to translate Sony A100 camera settings custom WB error values to readable labels + extern const TagDetails sonyCustomWBErrorA100[] = { + { 0, N_("Ok") }, + { 2, N_("Error") } + }; + + //! Lookup table to translate Sony A100 camera settings image size values to readable labels + extern const TagDetails sonyImageSizeA100[] = { + { 0, N_("Standard") }, + { 1, N_("Medium") }, + { 2, N_("Small") } + }; + + //! Lookup table to translate Sony A100 camera settings instant playback setup values to readable labels + extern const TagDetails sonyInstantPlaybackSetupA100[] = { + { 0, N_("Image and Information") }, + { 1, N_("Image Only") }, + { 3, N_("Image and Histogram") } + }; + + //! Lookup table to translate Sony A100 camera settings flash default setup values to readable labels + extern const TagDetails sonyFlashDefaultA100[] = { + { 0, N_("Auto") }, + { 1, N_("Fill Flash") } + }; + + //! Lookup table to translate Sony A100 camera settings auto bracket order values to readable labels + extern const TagDetails sonyAutoBracketOrderA100[] = { + { 0, "0-+" }, + { 1, "-0+" } + }; + + //! Lookup table to translate Sony A100 camera settings focus hold button values to readable labels + extern const TagDetails sonyFocusHoldButtonA100[] = { + { 0, N_("Focus Hold") }, + { 1, N_("DOF Preview") } + }; + + //! Lookup table to translate Sony A100 camera settings AEL button values to readable labels + extern const TagDetails sonyAELButtonA100[] = { + { 0, N_("Hold") }, + { 1, N_("Toggle") }, + { 2, N_("Spot Hold") }, + { 3, N_("Spot Toggle") } + }; + + //! Lookup table to translate Sony A100 camera settings control dial set values to readable labels + extern const TagDetails sonyControlDialSetA100[] = { + { 0, N_("Shutter Speed") }, + { 1, N_("Aperture") } + }; + + //! Lookup table to translate Sony A100 camera settings exposure compensation mode values to readable labels + extern const TagDetails sonyExposureCompensationModeA100[] = { + { 0, N_("Ambient and Flash") }, + { 1, N_("Ambient Only") } + }; + + //! Lookup table to translate Sony A100 camera settings sony AF area illumination values to readable labels + extern const TagDetails sonyAFAreaIlluminationA100[] = { + { 0, N_("0.3 seconds") }, + { 1, N_("0.6 seconds") }, + { 2, N_("Off") } + }; + + //! Lookup table to translate Sony A100 camera settings monitor display off values to readable labels + extern const TagDetails sonyMonitorDisplayOffA100[] = { + { 0, N_("Automatic") }, + { 1, N_("Manual") } + }; + + //! Lookup table to translate Sony A100 camera settings record display values to readable labels + extern const TagDetails sonyRecordDisplayA100[] = { + { 0, N_("Auto-rotate") }, + { 1, N_("Horizontal") } + }; + + //! Lookup table to translate Sony A100 camera settings play display values to readable labels + extern const TagDetails sonyPlayDisplayA100[] = { + { 0, N_("Auto-rotate") }, + { 1, N_("Manual Rotate") } + }; + + //! Lookup table to translate Sony A100 camera settings metering off scale indicator values to readable labels + extern const TagDetails sonyMeteringOffScaleIndicatorA100[] = { + { 0, N_("Within Range") }, + { 1, N_("Under/Over Range") }, + { 255, N_("Out of Range") } + }; + + //! Lookup table to translate Sony A100 camera settings exposure indicator values to readable labels + extern const TagDetails sonyExposureIndicatorA100[] = { + { 0, N_("Not Indicated") }, + { 1, N_("Under Scale") }, + { 119, N_("Bottom of Scale") }, + { 120, "-2.0" }, + { 121, "-1.7" }, + { 122, "-1.5" }, + { 123, "-1.3" }, + { 124, "-1.0" }, + { 125, "-0.7" }, + { 126, "-0.5" }, + { 127, "-0.3" }, + { 128, "-0.0" }, + { 129, "+0.3" }, + { 130, "+0.5" }, + { 131, "+0.7" }, + { 132, "+1.0" }, + { 133, "+1.3" }, + { 134, "+1.5" }, + { 135, "+1.7" }, + { 136, "+2.0" }, + { 253, N_("Top of Scale") }, + { 254, N_("Over Scale") } + }; + + //! Lookup table to translate Sony A100 camera settings focus mode switch values to readable labels + extern const TagDetails sonyFocusModeSwitchA100[] = { + { 0, N_("AM") }, + { 1, N_("MF") } + }; + + //! Lookup table to translate Sony A100 camera settings flash type switch values to readable labels + extern const TagDetails sonyFlashTypeA100[] = { + { 0, N_("Off") }, + { 1, N_("Built-in") }, + { 2, N_("External") } + }; + + //! Lookup table to translate Sony A100 camera settings battery level switch values to readable labels + extern const TagDetails sonyBatteryLevelA100[] = { + { 3, N_("Very Low") }, + { 4, N_("Low") }, + { 5, N_("Half Full") }, + { 6, N_("Sufficient Power Remaining") } + }; + + // Sony A100 Camera Settings Tag Info + const TagInfo MinoltaMakerNote::tagInfoCsA100_[] = { + TagInfo(0x0000, "ExposureMode", N_("Exposure Mode"), + N_("Exposure mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaExposureMode5D)), + TagInfo(0x0001, "ExposureCompensationSetting", N_("Exposure Compensation Setting"), + N_("Exposure compensation setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0005, "HighSpeedSync", N_("High Speed Sync"), + N_("High speed sync"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x0006, "ManualExposureTime", N_("Manual Exposure Time"), + N_("Manual exposure time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0007, "ManualFNumber", N_("Manual FNumber"), + N_("Manual FNumber"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0008, "ExposureTime", N_("Exposure Time"), + N_("Exposure time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0009, "FNumber", N_("FNumber"), + N_("FNumber"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x000A, "DriveMode2", N_("Drive Mode 2"), + N_("Drive mode 2"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveMode2A100)), + TagInfo(0x000B, "WhiteBalance", N_("White Balance"), + N_("White balance"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaWhiteBalance5D)), + TagInfo(0x000C, "FocusMode", N_("Focus Mode"), + N_("Focus mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeA100)), + TagInfo(0x000D, "LocalAFAreaPoint", N_("Local AF Area Point"), + N_("Local AF Area Point"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), + TagInfo(0x000E, "AFAreaMode", N_("AF Area Mode"), + N_("AF Area Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), + TagInfo(0x000F, "FlashMode", N_("FlashMode"), + N_("FlashMode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashModeA100)), + TagInfo(0x0010, "FlashExposureCompSetting", N_("Flash Exposure Comp Setting"), + N_("Flash exposure compensation setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0012, "MeteringMode", N_("Metering Mode"), + N_("Metering mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringModeA100)), + TagInfo(0x0013, "ISOSetting", N_("ISO Setting"), + N_("ISO setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0014, "ZoneMatchingMode", N_("Zone Matching Mode"), + N_("Zone Matching Mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyZoneMatchingModeA100)), + TagInfo(0x0015, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), + N_("Dynamic range optimizer mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), + TagInfo(0x0016, "ColorMode", N_("Color Mode"), + N_("Color mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyColorMode), + TagInfo(0x0017, "ColorSpace", N_("Color Space"), + N_("Color space"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorSpaceA100)), + TagInfo(0x0018, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0019, "Contrast", N_("Contrast"), + N_("Contrast"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001A, "Saturation", N_("Saturation"), + N_("Saturation"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001C, "FlashMetering", N_("Flash Metering"), + N_("Flash metering"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(minoltaFlashMeteringStd)), + TagInfo(0x001D, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), + N_("Priority Setup Shutter Release"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease), + TagInfo(0x001E, "DriveMode", N_("Drive Mode"), + N_("Drive mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeA100)), + TagInfo(0x001F, "SelfTimerTime", N_("Self Timer Time"), + N_("Self timer time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySelfTimerTimeA100)), + TagInfo(0x0020, "ContinuousBracketing", N_("Continuous Bracketing"), + N_("Continuous bracketing"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyContinuousBracketingA100)), + TagInfo(0x0021, "SingleFrameBracketing", N_("Single Frame Bracketing"), + N_("Single frame bracketing"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonySingleFrameBracketingA100)), + TagInfo(0x0022, "WhiteBalanceBracketing", N_("White Balance Bracketing"), + N_("White balance bracketing"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceBracketingA100)), + TagInfo(0x0023, "WhiteBalanceSetting", N_("White Balance Setting"), + N_("White balance setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyWhiteBalanceSettingA100)), + TagInfo(0x0024, "PresetWhiteBalance", N_("Preset White Balance"), + N_("Preset white balance"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPresetWhiteBalanceA100)), + TagInfo(0x0025, "ColorTemperatureSetting", N_("Color Temperature Setting"), + N_("Color temperature setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyColorTemperatureSettingA100)), + TagInfo(0x0026, "CustomWBSetting", N_("Custom WB Setting"), + N_("Custom WB setting"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBSettingA100)), + TagInfo(0x0027, "DynamicRangeOptimizerSettings", N_("Dynamic Range Optimizer Settings"), + N_("Dynamic Range Optimizer Settings"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), + TagInfo(0x0032, "FreeMemoryCardImages", N_("Free Memory Card Images"), + N_("Free memory card images"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0034, "CustomWBRedLevel", N_("Custom WB Red Level"), + N_("Custom WB red level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0035, "CustomWBGreenLevel", N_("Custom WB Green Level"), + N_("Custom WB green level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0036, "CustomWBBlueLevel", N_("Custom WB Blue Level"), + N_("CustomWB blue level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0037, "CustomWBError", N_("Custom WB Error"), + N_("Custom WB Error"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCustomWBErrorA100)), + TagInfo(0x0038, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + N_("White balance fine tune"), + sony1MltCsA100Id, makerTags, signedShort, 1, printValue), + TagInfo(0x0039, "ColorTemperature", N_("Color Temperature"), + N_("Color temperature"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x003A, "ColorCompensationFilter", N_("Color Compensation Filter"), + N_("Color compensation filter"), + sony1MltCsA100Id, makerTags, signedShort, 1, printValue), + TagInfo(0x003B, "SonyImageSize", N_("Sony Image Size"), + N_("Sony Image Size"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSizeA100)), + TagInfo(0x003C, "Quality", N_("Quality"), + N_("Quality"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs), + TagInfo(0x003D, "InstantPlaybackTime", N_("Instant Playback Time"), + N_("Instant playback time"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x003E, "InstantPlaybackSetup", N_("Instant Playback Setup"), + N_("Instant playback setup"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyInstantPlaybackSetupA100)), + TagInfo(0x003F, "NoiseReduction", N_("Noise Reduction"), + N_("Noise reduction"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x0040, "EyeStartAF", N_("Eye Start AF"), + N_("Eye start AF"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), + TagInfo(0x0041, "RedEyeReduction", N_("Red Eye Reduction"), + N_("Red eye reduction"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x0042, "FlashDefault", N_("Flash Default"), + N_("Flash default"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashDefaultA100)), + TagInfo(0x0043, "AutoBracketOrder", N_("Auto Bracket Order"), + N_("Auto bracket order"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAutoBracketOrderA100)), + TagInfo(0x0044, "FocusHoldButton", N_("Focus Hold Button"), + N_("Focus hold button"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusHoldButtonA100)), + TagInfo(0x0045, "AELButton", N_("AEL Button"), + N_("AEL button"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAELButtonA100)), + TagInfo(0x0046, "ControlDialSet", N_("Control Dial Set"), + N_("Control dial set"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyControlDialSetA100)), + TagInfo(0x0047, "ExposureCompensationMode", N_("Exposure Compensation Mode"), + N_("Exposure compensation mode"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureCompensationModeA100)), + TagInfo(0x0048, "AFAssist", N_("AF Assist"), + N_("AF assist"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), + TagInfo(0x0049, "CardShutterLock", N_("Card Shutter Lock"), + N_("Card shutter lock"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), + TagInfo(0x004A, "LensShutterLock", N_("Lens Shutter Lock"), + N_("Lens shutter lock"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), + TagInfo(0x004B, "AFAreaIllumination", N_("AF Area Illumination"), + N_("AF area illumination"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFAreaIlluminationA100)), + TagInfo(0x004C, "MonitorDisplayOff", N_("Monitor Display Off"), + N_("Monitor display off"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMonitorDisplayOffA100)), + TagInfo(0x004D, "RecordDisplay", N_("Record Display"), + N_("Record display"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyRecordDisplayA100)), + TagInfo(0x004E, "PlayDisplay", N_("Play Display"), + N_("Play display"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyPlayDisplayA100)), + TagInfo(0x0050, "ExposureIndicator", N_("Exposure Indicator"), + N_("Exposure indicator"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), + TagInfo(0x0051, "AELExposureIndicator", N_("AEL Exposure Indicator"), + N_("AEL exposure indicator (also indicates exposure for next shot when bracketing)"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), + TagInfo(0x0052, "ExposureBracketingIndicatorLast", N_("Exposure Bracketing Indicator Last"), + N_("Exposure bracketing indicator last (indicator for last shot when bracketing)"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), + TagInfo(0x0053, "MeteringOffScaleIndicator", N_("Metering Off Scale Indicator"), + N_("Metering off scale indicator (two flashing triangles when under or over metering scale)"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringOffScaleIndicatorA100)), + TagInfo(0x0054, "FlashExposureIndicator", N_("Flash Exposure Indicator"), + N_("Flash exposure indicator"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), + TagInfo(0x0055, "FlashExposureIndicatorNext", N_("Flash Exposure Indicator Next"), + N_("Flash exposure indicator next (indicator for next shot when bracketing)"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), + TagInfo(0x0056, "FlashExposureIndicatorLast", N_("Flash Exposure Indicator Last"), + N_("Flash exposure indicator last (indicator for last shot when bracketing)"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureIndicatorA100)), + TagInfo(0x0057, "ImageStabilization", N_("Image Stabilization"), + N_("Image stabilization"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x0058, "FocusModeSwitch", N_("Focus Mode Switch"), + N_("Focus mode switch"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFocusModeSwitchA100)), + TagInfo(0x0059, "FlashType", N_("Flash Type"), + N_("Flash type"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashTypeA100)), + TagInfo(0x005A, "Rotation", N_("Rotation"), + N_("Rotation"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation), + TagInfo(0x004B, "AELock", N_("AE Lock"), + N_("AE lock"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x005E, "ColorTemperature", N_("Color Temperature"), + N_("Color temperature"), + sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue), + TagInfo(0x005F, "ColorCompensationFilter", N_("Color Compensation Filter"), + N_("Color compensation filter: negative is green, positive is magenta"), + sony1MltCsA100Id, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0060, "BatteryLevel", N_("Battery Level"), + N_("Battery level"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyBatteryLevelA100)), + // End of list marker + TagInfo(0xffff, "(UnknownSonyCsA100Tag)", "(UnknownSonyCsA100Tag)", + N_("Unknown Sony Camera Settings A100 tag"), + sony1MltCsA100Id, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* MinoltaMakerNote::tagListCsA100() + { + return tagInfoCsA100_; + } + + // TODO : Add camera settings tags info "New2"... + + // -- Minolta and Sony MakerNote Common Values --------------------------------------- + + //! Lookup table to translate Minolta/Sony Lens id values to readable labels + /* NOTE: + - duplicate tags value are: + 0/25520, 4/25920, 13/25610, 19/25910, 22/26050/26070, + 25500/25501/26130, 25540/25541/25850, 25580/25581, 2564025641, + 25720/25721, 25790/25791, 25960/25961, 25980/25981, 26150/26151 + - No need to i18n these string. + */ + extern TagDetails const minoltaSonyLensID[] = { + { 0, "Minolta AF 28-85mm F3.5-4.5 New" }, + { 1, "Minolta AF 80-200mm F2.8 HS-APO G" }, + { 2, "Minolta AF 28-70mm F2.8 G" }, + { 3, "Minolta AF 28-80mm F4-5.6" }, + { 4, "Minolta AF 85mm F1.4G" }, + { 5, "Minolta AF 35-70mm F3.5-4.5 [II]" }, + { 6, "Minolta AF 24-85mm F3.5-4.5 [New]" }, + { 7, "Minolta AF 100-300mm F4.5-5.6 (D) APO [New] | " + "Minolta AF 100-400mm F4.5-6.7 (D) | " + "Sigma AF 100-300mm F4 EX DG IF" }, + { 8, "Minolta AF 70-210mm F4.5-5.6 [II]" }, + { 9, "Minolta AF 50mm F3.5 Macro" }, + { 10, "Minolta AF 28-105mm F3.5-4.5 [New]" }, + { 11, "Minolta AF 300mm F4 HS-APO G" }, + { 12, "Minolta AF 100mm F2.8 Soft Focus" }, + { 13, "Minolta AF 75-300mm F4.5-5.6 (New or II)" }, + { 14, "Minolta AF 100-400mm F4.5-6.7 APO" }, + { 15, "Minolta AF 400mm F4.5 HS-APO G" }, + { 16, "Minolta AF 17-35mm F3.5 G" }, + { 17, "Minolta AF 20-35mm F3.5-4.5" }, + { 18, "Minolta AF 28-80mm F3.5-5.6 II" }, + { 19, "Minolta AF 35mm F1.4 G" }, + { 20, "Minolta/Sony 135mm F2.8 [T4.5] STF" }, + { 22, "Minolta AF 35-80mm F4-5.6 II" }, + { 23, "Minolta AF 200mm F4 Macro APO G" }, + { 24, "Minolta/Sony AF 24-105mm F3.5-4.5 (D) | " + "Sigma 18-50mm F2.8 | " + "Sigma 17-70mm F2.8-4.5 (D) | " + "Sigma 20-40mm F2.8 EX DG Aspherical IF | " + "Sigma 18-200mm F3.5-6.3 DC | " + "Sigma DC 18-125mm F4-5,6 D | " + "Tamron SP AF 28-75mm F2.8 XR Di LD Aspherical [IF] Macro" }, + { 25, "Minolta AF 100-300mm F4.5-5.6 APO (D) | " + "Sigma 100-300mm F4 EX (APO (D) or D IF) | " + "Sigma 70mm F2.8 EX DG Macro | " + "Sigma 20mm F1.8 EX DG Aspherical RF | " + "Sigma 30mm F1.4 DG EX | " + "Sigma 24mm F1.8 EX DG ASP Macro" }, + { 27, "Minolta AF 85mm F1.4 G (D)" }, + { 28, "Minolta/Sony AF 100mm F2.8 Macro (D) | " + "Tamron SP AF 90mm F2.8 Di Macro | " + "Tamron SP AF 180mm F3.5 SP Di LD [IF] Macro" }, + { 29, "Minolta/Sony AF 75-300mm F4.5-5.6 (D) " }, + { 30, "Minolta AF 28-80mm F3.5-5.6 (D) | " + "Sigma AF 10-20mm F4-5.6 EX DC | " + "Sigma AF 12-24mm F4.5-5.6 EX DG | " + "Sigma 28-70mm EX DG F2.8 | " + "Sigma 55-200mm F4-5.6 DC" }, + { 31, "Minolta/Sony AF 50mm F2.8 Macro (D) | " + "Minolta/Sony AF 50mm F3.5 Macro" }, + { 32, "Minolta AF 100-400mm F4.5-6.7 (D) | " + "Minolta/Sony AF 300mm F2.8G APO (D) SSM" }, + { 33, "Minolta/Sony AF 70-200mm F2.8 G" }, + { 35, "Minolta AF 85mm F1.4 G (D) Limited" }, + { 36, "Minolta AF 28-100mm F3.5-5.6 (D)" }, + { 38, "Minolta AF 17-35mm F2.8-4 (D)" }, + { 39, "Minolta AF 28-75mm F2.8 (D)" }, + { 40, "Minolta/Sony AF DT 18-70mm F3.5-5.6 (D) | " + "Sony AF DT 18-200mm F3.5-6.3" }, + { 41, "Minolta/Sony AF DT 11-18mm F4.5-5.6 (D) | " + "Tamron SP AF 11-18mm F4.5-5.6 Di II LD Aspherical IF" }, + { 42, "Minolta/Sony AF DT 18-200mm F3.5-6.3 (D)" }, + { 43, "Sony 35mm F1.4 G (SAL35F14G)" }, + { 44, "Sony 50mm F1.4 (SAL50F14)" }, + { 45, "Carl Zeiss Planar T* 85mm F1.4 ZA (SAL85F14Z)" }, + { 46, "Carl Zeiss Vario-Sonnar T* DT 16-80mm F3.5-4.5 ZA (SAL1680Z)" }, + { 47, "Carl Zeiss Sonnar T* 135mm F1.8 ZA (SAL135F18Z)" }, + { 48, "Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM (SAL2470Z) | " + "Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM II (SAL2470Z2)" }, + { 49, "Sony AF DT 55-200mm F4-5.6 (SAL55200)" }, + { 50, "Sony AF DT 18-250mm F3.5-6.3 (SAL18250)" }, + { 51, "Sony AF DT 16-105mm F3.5-5.6 (SAL16105)" }, +// { 51, "Sony AF DT 55-200mm F4-5.5" }, // Anomaly? - unconfirmed. + { 52, "Sony 70-300mm F4.5-5.6 G SSM (SAL70300G) | " + "Sony 70-300mm F4.5-5.6 G SSM II (SAL70300G2) | " + "Tamron SP 70-300mm F4-5.6 Di USD" }, + { 53, "Sony AF 70-400mm F4.5-5.6 G SSM (SAL70400G)" }, + { 54, "Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM (SAL1635Z) | " + "Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM II (SAL1635Z2)" }, + { 55, "Sony DT 18-55mm F3.5-5.6 SAM (SAL1855) | " + "Sony DT 18-55mm F3.5-5.6 SAM II (SAL18552)" }, + { 56, "Sony AF DT 55-200mm F4-5.6 SAM (SAL55200-2)" }, + { 57, "Sony DT 50mm F1.8 SAM (SAL50F18) | " + "Tamron SP AF 60mm F2 Di II LD [IF] Macro 1:1 | " + "Tamron 18-270mm F3.5-6.3 Di II PZD" }, + { 58, "Sony AF DT 30mm F2.8 SAM Macro (SAL30M28)" }, + { 59, "Sony 28-75mm F2.8 SAM (SAL2875)" }, + { 60, "Carl Zeiss Distagon T* 24mm F2 ZA SSM (SAL24F20Z)" }, + { 61, "Sony 85mm F2.8 SAM (SAL85F28)" }, + { 62, "Sony DT 35mm F1.8 SAM (SAL35F18)" }, + { 63, "Sony DT 16-50mm F2.8 SSM (SAL1650)" }, + { 64, "Sony 500mm F4.0 G SSM (SAL500F40G)" }, + { 65, "Sony DT 18-135mm F3.5-5.6 SAM (SAL18135)" }, + { 66, "Sony 300mm F2.8 G SSM II (SAL300F28G2)" }, + { 67, "Sony 70-200mm F2.8 G SSM II (SAL70200G2)" }, + { 68, "Sony DT 55-300mm F4.5-5.6 SAM (SAL55300)" }, + { 69, "Sony 70-400mm F4-5.6 G SSM II (SAL70400G2)" }, + { 70, "Sony Carl Zeiss Planar T* 50mm F1.4 ZA SSM (SALF0F14Z)" }, + { 128, "Sigma 70-200mm F2.8 APO EX DG MACRO | " + "Tamron AF 18-200mm F3.5-6.3 XR Di II LD Aspherical [IF] Macro | " + "Tamron AF 28-300mm F3.5-6.3 XR Di LD Aspherical [IF] Macro | " + "Tamron 80-300mm F3.5-6.3 | " + "Tamron AF 28-200mm F3.8-5.6 XR Di Aspherical [IF] MACRO | " + "Tamron SP AF 17-35mm F2.8-4 Di LD Aspherical IF | " + "Sigma AF 50-150mm F2.8 EX DC APO HSM II | " + "Sigma 10-20mm F3.5 EX DC HSM | " + "Sigma 70-200mm F2.8 II EX DG APO MACRO HSM | " + "Sigma 10mm F2.8 EX DC HSM Fisheye | " + "Sigma 50mm F1.4 EX DG HSM | " + "Sigma 85mm F1.4 EX DG HSM | " + "Sigma 24-70mm F2.8 IF EX DG HSM | " + "Sigma 18-250mm F3.5-6.3 DC OS HSM | " + "Sigma 17-50mm F2.8 EX DC HSM | " + "Sigma 17-70mm F2.8-4 DC Macro HSM | " + "Sigma 150mm F2.8 EX DG OS HSM APO Macro | " + "Sigma 150-500mm F5-6.3 APO DG OS HSM | " + "Tamron AF 28-105mm F4-5.6 [IF] | " + "Sigma 35mm F1.4 DG HSM | " + "Sigma 18-35mm F1.8 DC HSM" }, + { 129, "Tamron 200-400mm F5.6 LD | " + "Tamron 70-300mm F4-5.6 LD" }, + { 131, "Tamron 20-40mm F2.7-3.5 SP Aspherical IF" }, + { 135, "Vivitar 28-210mm F3.5-5.6" }, + { 136, "Tokina EMZ M100 AF 100mm F3.5" }, + { 137, "Cosina 70-210mm F2.8-4 AF" }, + { 138, "Soligor 19-35mm F3.5-4.5" }, + { 139, "Tokina AF 28-300mm F4-6.3" }, + { 142, "Voigtlander 70-300mm F4.5-5.6" }, + { 146, "Voigtlander Macro APO-Lanthar 125mm F2.5 SL" }, + { 193, "Minolta AF 1.4x APO II" }, + { 194, "Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical [IF]" }, + { 203, "Tamron SP 70-200mm F2.8 Di USD" }, + { 204, "Tamron SP 24-70mm F2.8 Di USD" }, + { 213, "Tamron 16-300mm F3.5-6.3 Di II PZD" }, + { 214, "Tamron Tamron SP 150-600mm F5-6.3 Di USD" }, + { 224, "Tamron SP 90mm F2.8 Di Macro 1:1 USD" }, + { 255, "Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical | " + "Tamron AF 18-250mm F3.5-6.3 XR Di II LD | " + "Tamron AF 55-200mm F4-5.6 Di II LD Macro | " + "Tamron AF 70-300mm F4-5.6 Di LD Macro 1:2 | " + "Tamron SP AF 200-500mm F5.0-6.3 Di LD IF | " + "Tamron SP AF 10-24mm F3.5-4.5 Di II LD Aspherical IF | " + "Tamron SP AF 70-200mm F2.8 Di LD IF Macro | " + "Tamron SP AF 28-75mm F2.8 XR Di LD Aspherical IF | " + "Tamron AF 90-300mm F4.5-5.6 Telemacro" }, + { 25500, "Minolta AF 50mm F1.7" }, + { 25501, "Minolta AF 50mm F1.7" }, + { 25510, "Minolta AF 35-70mm F4" }, + { 25511, "Minolta AF 35-70mm F4 | " + "Sigma UC AF 28-70mm F3.5-4.5 | " + "Sigma AF 28-70mm F2.8 | " + "Sigma M-AF 70-200mm F2.8 EX Aspherical | " + "Quantaray M-AF 35-80mm F4-5.6 | " + "Tokina 28-70mm F2.8-4.5 AF" }, + { 25520, "Minolta AF 28-85mm F3.5-4.5" }, + { 25521, "Minolta AF 28-85mm F3.5-4.5 | " + "Tokina 19-35mm F3.5-4.5 | " + "Tokina 28-70mm F2.8 AT-X | " + "Tokina 80-400mm F4.5-5.6 AT-X AF II 840 | " + "Tokina AF PRO 28-80mm F2.8 AT-X 280 | " + "Tokina AT-X PRO [II] AF 28-70mm F2.6-2.8 270 | " + "Tamron AF 19-35mm F3.5-4.5 | " + "Angenieux AF 28-70mm F2.6 | " + "Tokina AT-X 17 AF 17mm F3.5 | " + "Tokina 20-35mm F3.5-4.5 II AF" }, + { 25530, "Minolta AF 28-135mm F4-4.5" }, + { 25531, "Minolta AF 28-135mm F4-4.5 | " + "Sigma ZOOM-alpha 35-135mm F3.5-4.5 | " + "Sigma 28-105mm F2.8-4 Aspherical | " + "Sigma 28-105mm F4-5.6 UC" }, + { 25540, "Minolta AF 35-105mm F3.5-4.5" }, + { 25541, "Minolta AF 35-105mm F3.5-4.5" }, + { 25550, "Minolta AF 70-210mm F4" }, + { 25551, "Minolta AF 70-210mm F4 Macro | " + "Sigma 70-210mm F4-5.6 APO | " + "Sigma M-AF 70-200mm F2.8 EX APO | " + "Sigma 75-200mm F2.8-3.5" }, + { 25560, "Minolta AF 135mm F2.8" }, + { 25561, "Minolta AF 135mm F2.8" }, + { 25570, "Minolta AF 28mm F2.8" }, + { 25571, "Minolta/Sony AF 28mm F2.8" }, + { 25580, "Minolta AF 24-50mm F4" }, + { 25581, "Minolta AF 24-50mm F4" }, + { 25600, "Minolta AF 100-200mm F4.5" }, + { 25601, "Minolta AF 100-200mm F4.5" }, + { 25610, "Minolta AF 75-300mm F4.5-5.6" }, + { 25611, "Minolta AF 75-300mm F4.5-5.6 | " + "Sigma 70-300mm F4-5.6 DL Macro | " + "Sigma 300mm F4 APO Macro | " + "Sigma AF 500mm F4.5 APO | " + "Sigma AF 170-500mm F5-6.3 APO Aspherical | " + "Tokina AT-X AF 300mm F4 | " + "Tokina AT-X AF 400mm F5.6 SD | " + "Tokina AF 730 II 75-300mm F4.5-5.6 | " + "Sigma 800mm F5.6 APO | " + "Sigma AF 400mm F5.6 APO Macro" }, + { 25620, "Minolta AF 50mm F1.4" }, + { 25621, "Minolta AF 50mm F1.4 [New]" }, + { 25630, "Minolta AF 300mm F2.8G APO" }, + { 25631, "Minolta AF 300mm F2.8 APO | " + "Sigma AF 50-500mm F4-6.3 EX DG APO | " + "Sigma AF 170-500mm F5-6.3 APO Aspherical | " + "Sigma AF 500mm F4.5 EX DG APO | " + "Sigma 400mm F5.6 APO" }, + { 25640, "Minolta AF 50mm F2.8 Macro" }, + { 25641, "Minolta AF 50mm F2.8 Macro | " + "Sigma 50mm F2.8 EX Macro" }, + { 25650, "Minolta AF 600mm F4 APO" }, + { 25651, "Minolta AF 600mm F4 APO" }, + { 25660, "Minolta AF 24mm F2.8" }, + { 25661, "Minolta AF 24mm F2.8 | " + "Sigma 17-35mm F2.8-4.0 EX-D" }, + { 25720, "Minolta AF 500mm F8 Reflex" }, + { 25721, "Minolta/Sony AF 500mm F8 Reflex" }, + { 25780, "Minolta/Sony AF 16mm F2.8 Fisheye" }, + { 25781, "Minolta/Sony AF 16mm F2.8 Fisheye | " + "Sigma 8mm F4 EX [DG] Fisheye | " + "Sigma 14mm F3.5 | " + "Sigma 15mm F2.8 Fisheye" }, + { 25790, "Minolta AF 20mm F2.8" }, + { 25791, "Minolta/Sony AF 20mm F2.8 | " + "Tokina AT-X 116 PRO DX AF 11-16mm F2.8" }, + { 25810, "Minolta AF 100mm F2.8 Macro" }, + { 25811, "Minolta AF 100mm F2.8 Macro [New] | " + "Sigma AF 90mm F2.8 Macro | " + "Sigma AF 105mm F2.8 EX [DG] Macro | " + "Sigma 180mm F5.6 Macro | " + "Sigma 180mm F3.5 EX DG Macro | " + "Tamron 90mm F2.8 Macro" }, + { 25850, "Minolta AF 35-105mm F3.5-4.5" }, + { 25851, "Beroflex 35-135mm F3.5-4.5" }, + { 25858, "Minolta AF 35-105mm F3.5-4.5 New | " + "Tamron 24-135mm F3.5-5.6" }, + { 25880, "Minolta AF 70-210mm F3.5-4.5" }, + { 25881, "Minolta AF 70-210mm F3.5-4.5" }, + { 25890, "Minolta AF 80-200mm F2.8 APO" }, + { 25891, "Minolta AF 80-200mm F2.8 APO | " + "Tokina 80-200mm F2.8" }, + { 25900, "Minolta AF 200mm F2.8 G APO + Minolta AF 1.4x APO" }, + { 25901, "Minolta AF 200mm F2.8 G APO + Minolta AF 1.4x APO | " + "Minolta AF 600mm F4 HS-APO G + Minolta AF 1.4x APO" }, + { 25910, "Minolta AF 35mm F1.4G" }, + { 25911, "Minolta AF 35mm F1.4" }, + { 25920, "Minolta AF 85mm F1.4G" }, + { 25921, "Minolta AF 85mm F1.4G (D)" }, + { 25930, "Minolta AF 200mm F2.8 APO" }, + { 25931, "Minolta AF 200mm F2.8 G APO" }, + { 25940, "Minolta AF 3X-1X F1.7-2.8 Macro" }, + { 25941, "Minolta AF 3x-1x F1.7-2.8 Macro" }, + { 25960, "Minolta AF 28mm F2" }, + { 25961, "Minolta AF 28mm F2" }, + { 25970, "Minolta AF 35mm F2" }, + { 25971, "Minolta AF 35mm F2 [New]" }, + { 25980, "Minolta AF 100mm F2" }, + { 25981, "Minolta AF 100mm F2" }, + { 26010, "Minolta AF 200mm F2.8 G APO + Minolta AF 2x APO" }, + { 26011, "Minolta AF 200mm F2.8 G APO + Minolta AF 2x APO | " + "Minolta AF 600mm F4 HS-APO G + Minolta AF 2x APO" }, + { 26040, "Minolta AF 80-200mm F4.5-5.6" }, + { 26041, "Minolta AF 80-200mm F4.5-5.6" }, + { 26050, "Minolta AF 35-80mm F4-5.6" }, + { 26051, "Minolta AF 35-80mm F4-5.6" }, + { 26060, "Minolta AF 100-300mm F4.5-5.6" }, + { 26061, "Minolta AF 100-300mm F4.5-5.6 (D) | " + "Sigma 105mm F2.8 Macro EX DG" }, + { 26070, "Minolta AF 35-80mm F4-5.6" }, + { 26071, "Minolta AF 35-80mm F4-5.6" }, + { 26080, "Minolta AF 300mm F2.8 G" }, + { 26081, "Minolta AF 300mm F2.8 G APO High Speed" }, + { 26090, "Minolta AF 600mm F4 G" }, + { 26091, "Minolta AF 600mm F4 G APO High Speed" }, + { 26120, "Minolta AF 200mm F2.8 G" }, + { 26121, "Minolta AF 200mm F2.8 G APO High Speed" }, + { 26130, "Minolta AF 50mm F1.7" }, + { 26131, "Minolta AF 50mm F1.7 New" }, + { 26150, "Minolta AF 28-105mm F3.5-4.5 Xi" }, + { 26151, "Minolta AF 28-105mm F3.5-4.5 xi" }, + { 26160, "Minolta AF 35-200mm F4.5-5.6 Xi" }, + { 26161, "Minolta AF 35-200mm F4.5-5.6 Xi" }, + { 26180, "Minolta AF 28-80mm F4-5.6 Xi" }, + { 26181, "Minolta AF 28-80mm F4-5.6 xi" }, + { 26190, "Minolta AF 80-200mm F4.5-5.6 Xi" }, + { 26191, "Minolta AF 80-200mm F4.5-5.6 Xi" }, + { 26201, "Minolta AF 28-70mm F2.8 G" }, + { 26210, "Minolta AF 100-300mm F4.5-5.6 Xi" }, + { 26211, "Minolta AF 100-300mm F4.5-5.6 xi" }, + { 26240, "Minolta AF 35-80mm F4-5.6 Power Zoom" }, + { 26241, "Minolta AF 35-80mm F4-5.6 Power Zoom" }, + { 26281, "Minolta AF 80-200mm F2.8 G" }, + { 26291, "Minolta AF 85mm F1.4 New" }, + { 26311, "Minolta/Sony AF 100-300mm F4.5-5.6 APO" }, + { 26321, "Minolta AF 24-50mm F4 New" }, + { 26381, "Minolta AF 50mm F2.8 Macro New" }, + { 26391, "Minolta AF 100mm F2.8 Macro" }, + { 26411, "Minolta/Sony AF 20mm F2.8 New" }, + { 26421, "Minolta AF 24mm F2.8 New" }, + { 26441, "Minolta AF 100-400mm F4.5-6.7 APO" }, + { 26621, "Minolta AF 50mm F1.4 New" }, + { 26671, "Minolta AF 35mm F2 New" }, + { 26681, "Minolta AF 28mm F2 New" }, + { 26721, "Minolta AF 24-105mm F3.5-4.5 (D)" }, + { 45671, "Tokina 70-210mm F4-5.6" }, + { 45711, "Vivitar 70-210mm F4.5-5.6" }, + { 45741, "Minolta AF200mm F2.8G x2 | " + "Tokina 300mm F2.8 x2 | " + "Tokina RF 500mm F8.0 x2 | " + "Tamron SP AF 90mm F2.5"}, + { 45751, "1.4x Teleconverter " }, + { 45851, "Tamron SP AF 300mm F2.8 LD IF" }, + { 45861, "Tamron SP AF 35-105mm F2.8 LD Aspherical IF" }, + { 45871, "Tamron AF 70-210mm F2.8 SP LD" }, + { 65535, "Manual lens" } + }; + + std::ostream& printMinoltaSonyLensID(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyLensID)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Minolta A100 and all other Sony Alpha camera color mode values to readable labels + extern const TagDetails minoltaSonyColorMode[] = { + { 0, N_("Standard") }, + { 1, N_("Vivid Color") }, + { 2, N_("Portrait") }, + { 3, N_("Landscape") }, + { 4, N_("Sunset") }, + { 5, N_("Night View/Portrait") }, + { 6, N_("Black & White") }, + { 7, N_("AdobeRGB") }, + { 12, N_("Neutral") }, + { 100, N_("Neutral") }, + { 101, N_("Clear") }, + { 102, N_("Deep") }, + { 103, N_("Light") }, + { 104, N_("Night View") }, + { 105, N_("Autumn Leaves") } + }; + + std::ostream& printMinoltaSonyColorMode(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyColorMode)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Minolta/Sony bool function values to readable labels + extern const TagDetails minoltaSonyBoolFunction[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + std::ostream& printMinoltaSonyBoolValue(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyBoolFunction)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Minolta/Sony bool inverse function values to readable labels + extern const TagDetails minoltaSonyBoolInverseFunction[] = { + { 0, N_("On") }, + { 1, N_("Off") } + }; + + std::ostream& printMinoltaSonyBoolInverseValue(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyBoolInverseFunction)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings focus mode values to readable labels + extern const TagDetails minoltaSonyAFAreaMode[] = { + { 0, N_("Wide") }, + { 1, N_("Local") }, + { 2, N_("Spot") } + }; + + std::ostream& printMinoltaSonyAFAreaMode(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyAFAreaMode)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings Local AF Area Point values to readable labels + extern const TagDetails minoltaSonyLocalAFAreaPoint[] = { + { 1, N_("Center") }, + { 2, N_("Top") }, + { 3, N_("Top-Right") }, + { 4, N_("Right") }, + { 5, N_("Bottom-Right") }, + { 6, N_("Bottom") }, + { 7, N_("Bottom-Left") }, + { 8, N_("Left") }, + { 9, N_("Top-Left") }, + { 10, N_("Far-Right") }, + { 11, N_("Far-Left") } + }; + + std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyLocalAFAreaPoint)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings dynamic range optimizer mode values to readable labels + extern const TagDetails minoltaSonyDynamicRangeOptimizerMode[] = { + { 0, N_("Off") }, + { 1, N_("Standard") }, + { 2, N_("Advanced Auto") }, + { 3, N_("Advanced Level") }, + { 4097, N_("Auto") } + }; + + std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyDynamicRangeOptimizerMode)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings priority setup shutter release values to readable labels + extern const TagDetails minoltaSonyPrioritySetupShutterRelease[] = { + { 0, N_("AF") }, + { 1, N_("Release") } + }; + + std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyPrioritySetupShutterRelease)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings quality values to readable labels + extern const TagDetails minoltaSonyQualityCs[] = { + { 0, N_("RAW ") }, + { 2, N_("CRAW ") }, + { 16, N_("Extra Fine") }, + { 32, N_("Fine") }, + { 34, N_("RAW+JPEG") }, + { 35, N_("CRAW+JPEG") }, + { 48, N_("Standard") } + }; + + std::ostream& printMinoltaSonyQualityCs(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyQualityCs)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings rotation values to readable labels + extern const TagDetails minoltaSonyRotation[] = { + { 0, N_("Horizontal (normal)") }, + { 1, N_("Rotate 90 CW") }, + { 2, N_("Rotate 270 CW") } + }; + + std::ostream& printMinoltaSonyRotation(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyRotation)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Minolta/Sony scene mode values to readable labels + extern const TagDetails minoltaSonySceneMode[] = { + { 0, N_("Standard") }, + { 1, N_("Portrait") }, + { 2, N_("Text") }, + { 3, N_("Night Scene") }, + { 4, N_("Sunset") }, + { 5, N_("Sports") }, + { 6, N_("Landscape") }, + { 7, N_("Night Portrait") }, + { 8, N_("Macro") }, + { 9, N_("Super Macro") }, + { 16, N_("Auto") }, + { 17, N_("Night View/Portrait") } + }; + + std::ostream& printMinoltaSonySceneMode(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonySceneMode)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony/Minolta image quality values to readable labels + extern const TagDetails minoltaSonyImageQuality[] = { + { 0, N_("Raw") }, + { 1, N_("Super Fine") }, + { 2, N_("Fine") }, + { 3, N_("Standard") }, + { 4, N_("Economy") }, + { 5, N_("Extra Fine") }, + { 6, N_("Raw + JPEG") }, + { 7, N_("Compressed Raw") }, + { 8, N_("Compressed Raw + JPEG") } + }; + + std::ostream& printMinoltaSonyImageQuality(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyImageQuality)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony/Minolta teleconverter model values to readable labels + extern const TagDetails minoltaSonyTeleconverterModel[] = { + { 0x00, N_("None") }, + { 0x48, N_("Minolta AF 2x APO (D)") }, + { 0x50, N_("Minolta AF 2x APO II") }, + { 0x88, N_("Minolta AF 1.4x APO (D)") }, + { 0x90, N_("Minolta AF 1.4x APO II") } + }; + + std::ostream& printMinoltaSonyTeleconverterModel(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyTeleconverterModel)(os, value, metadata); + } + + // ---------------------------------------------------------------------------------------------------- + + //! Lookup table to translate Sony/Minolta Std camera settings white balance values to readable labels + extern const TagDetails minoltaSonyWhiteBalanceStd[] = { + { 0x00, N_("Auto") }, + { 0x01, N_("Color Temperature/Color Filter") }, + { 0x10, N_("Daylight") }, + { 0x20, N_("Cloudy") }, + { 0x30, N_("Shade") }, + { 0x40, N_("Tungsten") }, + { 0x50, N_("Flash") }, + { 0x60, N_("Fluorescent") }, + { 0x70, N_("Custom") } + }; + + std::ostream& printMinoltaSonyWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyWhiteBalanceStd)(os, value, metadata); + } + + //! Lookup table to translate Sony/Minolta zone matching values to readable labels + extern const TagDetails minoltaSonyZoneMatching[] = { + { 0, N_("ISO Setting Used") }, + { 1, N_("High Key") }, + { 2, N_("Low Key") } + }; + + std::ostream& printMinoltaSonyZoneMatching(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(minoltaSonyZoneMatching)(os, value, metadata); + } + + std::ostream& printMinoltaSonyFlashExposureComp(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != signedRational) { + return os << "(" << value << ")"; + } + os << std::fixed << std::setprecision(2) << value.toFloat(0) << " EV"; + os.flags(f); + return os; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/minoltamn_int.hpp b/vendor/exiv2-0.25/src/minoltamn_int.hpp new file mode 100644 index 0000000..d78107e --- /dev/null +++ b/vendor/exiv2-0.25/src/minoltamn_int.hpp @@ -0,0 +1,162 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file minoltamn_int.hpp + @brief Minolta MakerNote implemented using the following references:
+ Minolta Makernote Format Specification by Dalibor Jelinek,
+ Minolta Makernote list by Phil Harvey
+ Minolta Makernote list from PHP JPEG Metadata Toolkit
+ Email communication with caulier dot gilles at gmail dot com
+ Some Minolta camera settings have been decoded by Xavier Raynaud from digiKam project and added by Gilles Caulier. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @date 06-May-06, gc: submitted + */ +#ifndef MINOLTAMN_INT_HPP_ +#define MINOLTAMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Minolta cameras + class MinoltaMakerNote { + public: + //! Return read-only list of built-in Minolta tags + static const TagInfo* tagList(); + //! Return read-only list of built-in Minolta Standard Camera Settings tags + static const TagInfo* tagListCsStd(); + //! Return read-only list of built-in Minolta 7D Camera Settings tags + static const TagInfo* tagListCs7D(); + //! Return read-only list of built-in Minolta 5D Camera Settings tags + static const TagInfo* tagListCs5D(); + //! Return read-only list of built-in Sony A100 Camera Settings tags + static const TagInfo* tagListCsA100(); + + //! @name Print functions for Minolta %MakerNote tags + //@{ + //! Print Exposure Speed setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaExposureSpeedStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Exposure Time setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaExposureTimeStd(std::ostream& os, const Value& value, const ExifData*); + //! Print F Number setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaFNumberStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Exposure Compensation setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaExposureCompensationStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Focal Length setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaFocalLengthStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Minolta Date from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaDateStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Minolta Time from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaTimeStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Flash Exposure Compensation setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaFlashExposureCompStd(std::ostream& os, const Value& value, const ExifData*); + //! Print White Balance setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaWhiteBalanceStd(std::ostream& os, const Value& value, const ExifData*); + //! Print Brightness setting from standard Minolta Camera Settings makernote + static std::ostream& printMinoltaBrightnessStd(std::ostream& os, const Value& value, const ExifData*); + + //! Print Exposure Manual Bias setting from 5D Minolta Camera Settings makernote + static std::ostream& printMinoltaExposureManualBias5D(std::ostream& os, const Value& value, const ExifData*); + //! Print Exposure Compensation setting from 5D Minolta Camera Settings makernote + static std::ostream& printMinoltaExposureCompensation5D(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Tag information + static const TagInfo tagInfo_[]; + static const TagInfo tagInfoCsA100_[]; + static const TagInfo tagInfoCs5D_[]; + static const TagInfo tagInfoCs7D_[]; + static const TagInfo tagInfoCsStd_[]; + + }; // class MinoltaMakerNote + + // -- Minolta and Sony MakerNote Common Values --------------------------------------- + + //! Print Minolta/Sony Lens id values to readable labels. + std::ostream& printMinoltaSonyLensID(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Color Mode values to readable labels. + std::ostream& printMinoltaSonyColorMode(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony bool function values to readable labels. + std::ostream& printMinoltaSonyBoolValue(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony bool inverse function values to readable labels. + std::ostream& printMinoltaSonyBoolInverseValue(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony AF Area Mode values to readable labels. + std::ostream& printMinoltaSonyAFAreaMode(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Local AF Area Point values to readable labels. + std::ostream& printMinoltaSonyLocalAFAreaPoint(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony dynamic range optimizer mode values to readable labels. + std::ostream& printMinoltaSonyDynamicRangeOptimizerMode(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony priority setup shutter release values to readable labels. + std::ostream& printMinoltaSonyPrioritySetupShutterRelease(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Quality values to readable labels. + std::ostream& printMinoltaSonyQualityCs(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Rotation values to readable labels. + std::ostream& printMinoltaSonyRotation(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Scene Mode values to readable labels. + std::ostream& printMinoltaSonySceneMode(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Image Quality values to readable labels. + std::ostream& printMinoltaSonyImageQuality(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony Teleconverter Model values to readable labels. + std::ostream& printMinoltaSonyTeleconverterModel(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony White Balance Std values to readable labels. + std::ostream& printMinoltaSonyWhiteBalanceStd(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony ZoneMatching values to readable labels. + std::ostream& printMinoltaSonyZoneMatching(std::ostream&, const Value&, const ExifData*); + + //! Print Minolta/Sony FlashExposureComp values to readable labels. + std::ostream& printMinoltaSonyFlashExposureComp(std::ostream&, const Value&, const ExifData*); + + // TODO: Added shared methods here. + +}} // namespace Internal, Exiv2 + +#endif // #ifndef MINOLTAMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/mrwimage.cpp b/vendor/exiv2-0.25/src/mrwimage.cpp new file mode 100644 index 0000000..45fca05 --- /dev/null +++ b/vendor/exiv2-0.25/src/mrwimage.cpp @@ -0,0 +1,183 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: mrwimage.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 13-May-06, ahu: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: mrwimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "mrwimage.hpp" +#include "tiffimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + MrwImage::MrwImage(BasicIo::AutoPtr io, bool /*create*/) + : Image(ImageType::mrw, mdExif | mdIptc | mdXmp, io) + { + } // MrwImage::MrwImage + + std::string MrwImage::mimeType() const + { + return "image/x-minolta-mrw"; + } + + int MrwImage::pixelWidth() const + { + ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth")); + if (imageWidth != exifData_.end() && imageWidth->count() > 0) { + return imageWidth->toLong(); + } + return 0; + } + + int MrwImage::pixelHeight() const + { + ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageLength")); + if (imageHeight != exifData_.end() && imageHeight->count() > 0) { + return imageHeight->toLong(); + } + return 0; + } + + void MrwImage::setExifData(const ExifData& /*exifData*/) + { + // Todo: implement me! + throw(Error(32, "Exif metadata", "MRW")); + } + + void MrwImage::setIptcData(const IptcData& /*iptcData*/) + { + // Todo: implement me! + throw(Error(32, "IPTC metadata", "MRW")); + } + + void MrwImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "MRW")); + } + + void MrwImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading MRW file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isMrwType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "MRW"); + } + clearMetadata(); + + // Find the TTW block and read it into a buffer + uint32_t const len = 8; + byte tmp[len]; + io_->read(tmp, len); + uint32_t pos = len; + uint32_t const end = getULong(tmp + 4, bigEndian); + + pos += len; + if (pos > end) throw Error(14); + io_->read(tmp, len); + if (io_->error() || io_->eof()) throw Error(14); + + while (memcmp(tmp + 1, "TTW", 3) != 0) { + uint32_t const siz = getULong(tmp + 4, bigEndian); + pos += siz; + if (pos > end) throw Error(14); + io_->seek(siz, BasicIo::cur); + if (io_->error() || io_->eof()) throw Error(14); + + pos += len; + if (pos > end) throw Error(14); + io_->read(tmp, len); + if (io_->error() || io_->eof()) throw Error(14); + } + + DataBuf buf(getULong(tmp + 4, bigEndian)); + io_->read(buf.pData_, buf.size_); + if (io_->error() || io_->eof()) throw Error(14); + + ByteOrder bo = TiffParser::decode(exifData_, + iptcData_, + xmpData_, + buf.pData_, + buf.size_); + setByteOrder(bo); + } // MrwImage::readMetadata + + void MrwImage::writeMetadata() + { + // Todo: implement me! + throw(Error(31, "MRW")); + } // MrwImage::writeMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newMrwInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new MrwImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isMrwType(BasicIo& iIo, bool advance) + { + const int32_t len = 4; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + int rc = memcmp(buf, "\0MRM", 4); + if (!advance || rc != 0) { + iIo.seek(-len, BasicIo::cur); + } + return rc == 0; + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/mrwthumb.cpp b/vendor/exiv2-0.25/src/mrwthumb.cpp new file mode 100644 index 0000000..25d7416 --- /dev/null +++ b/vendor/exiv2-0.25/src/mrwthumb.cpp @@ -0,0 +1,49 @@ +// ***************************************************************** -*- C++ -*- +// mrwthumb.cpp, $Rev: 1532 $ +// Sample program to extract a Minolta thumbnail from the makernote + +#include "image.hpp" +#include "exif.hpp" +#include "error.hpp" +#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::ExifKey key("Exif.Minolta.ThumbnailOffset"); + Exiv2::ExifData::const_iterator format = exifData.findKey(key); + + if (format != exifData.end()) { + Exiv2::DataBuf buf = format->dataArea(); + + // The first byte of the buffer needs to be patched + buf.pData_[0] = 0xff; + + Exiv2::FileIo file("img_thumb.jpg"); + + file.open("wb"); + file.write(buf.pData_, buf.size_); + file.close(); + } + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/src/nikonmn.cpp b/vendor/exiv2-0.25/src/nikonmn.cpp new file mode 100644 index 0000000..affba5b --- /dev/null +++ b/vendor/exiv2-0.25/src/nikonmn.cpp @@ -0,0 +1,2682 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * Lens database for the conversion of Nikon lens data to readable lens names + * Copyright (C) 2005-2014 Robert Rottmerhusen + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: nikonmn.cpp + Version: $Rev: 3829 $ + Author(s): Andreas Huggel (ahu) + Gilles Caulier (gc) + Jens Mueller (jm) + History: 17-May-04, ahu: created + 25-May-04, ahu: combined all Nikon formats in one component + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: nikonmn.cpp 3829 2015-05-15 01:38:49Z nkbj $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "nikonmn_int.hpp" +#include "value.hpp" +#include "image.hpp" +#include "tags_int.hpp" +#include "error.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include +#include //for log, pow, abs + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! OffOn, multiple tags + extern const TagDetails nikonOffOn[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Off, Low, Normal, High, multiple tags + extern const TagDetails nikonOlnh[] = { + { 0, N_("Off") }, + { 1, N_("Low") }, + { 3, N_("Normal") }, + { 5, N_("High") } + }; + + //! Off, Low, Normal, High, multiple tags + extern const TagDetails nikonActiveDLighning[] = { + { 0, N_("Off") }, + { 1, N_("Low") }, + { 3, N_("Normal") }, + { 5, N_("High") }, + { 7, N_("Extra High") }, + { 65535, N_("Auto") } + }; + + //! Focus area for Nikon cameras. + extern const char * const nikonFocusarea[] = { + N_("Single area"), + N_("Dynamic area"), + N_("Dynamic area, closest subject"), + N_("Group dynamic"), + N_("Single area (wide)"), + N_("Dynamic area (wide)") + }; + + // Roger Larsson: My guess is that focuspoints will follow autofocus sensor + // module. Note that relative size and position will vary depending on if + // "wide" or not + //! Focus points for Nikon cameras, used for Nikon 1 and Nikon 3 makernotes. + extern const char * const nikonFocuspoints[] = { + N_("Center"), + N_("Top"), + N_("Bottom"), + N_("Left"), + N_("Right"), + N_("Upper-left"), + N_("Upper-right"), + N_("Lower-left"), + N_("Lower-right"), + N_("Left-most"), + N_("Right-most") + }; + + //! FlashComp, tag 0x0012 + extern const TagDetails nikonFlashComp[] = { + // From the PHP JPEG Metadata Toolkit + { 0x06, "+1.0 EV" }, + { 0x04, "+0.7 EV" }, + { 0x03, "+0.5 EV" }, + { 0x02, "+0.3 EV" }, + { 0x00, "0.0 EV" }, + { 0xfe, "-0.3 EV" }, + { 0xfd, "-0.5 EV" }, + { 0xfc, "-0.7 EV" }, + { 0xfa, "-1.0 EV" }, + { 0xf8, "-1.3 EV" }, + { 0xf7, "-1.5 EV" }, + { 0xf6, "-1.7 EV" }, + { 0xf4, "-2.0 EV" }, + { 0xf2, "-2.3 EV" }, + { 0xf1, "-2.5 EV" }, + { 0xf0, "-2.7 EV" }, + { 0xee, "-3.0 EV" } + }; + + //! ColorSpace, tag 0x001e + extern const TagDetails nikonColorSpace[] = { + { 1, N_("sRGB") }, + { 2, N_("Adobe RGB") } + }; + + //! FlashMode, tag 0x0087 + extern const TagDetails nikonFlashMode[] = { + { 0, N_("Did not fire") }, + { 1, N_("Fire, manual") }, + { 7, N_("Fire, external") }, + { 8, N_("Fire, commander mode") }, + { 9, N_("Fire, TTL mode") } + }; + + //! ShootingMode, tag 0x0089 + extern const TagDetailsBitmask nikonShootingMode[] = { + { 0x0001, N_("Continuous") }, + { 0x0002, N_("Delay") }, + { 0x0004, N_("PC Control") }, + { 0x0008, N_("Self-timer") }, + { 0x0010, N_("Exposure Bracketing") }, + { 0x0020, N_("Auto ISO") }, + { 0x0040, N_("White-Balance Bracketing") }, + { 0x0080, N_("IR Control") }, + { 0x0100, N_("D-Lighting Bracketing") } + }; + + //! ShootingMode D70, tag 0x0089 + extern const TagDetailsBitmask nikonShootingModeD70[] = { + { 0x0001, N_("Continuous") }, + { 0x0002, N_("Delay") }, + { 0x0004, N_("PC control") }, + { 0x0010, N_("Exposure bracketing") }, + { 0x0020, N_("Unused LE-NR slowdown") }, + { 0x0040, N_("White balance bracketing") }, + { 0x0080, N_("IR control") } + }; + + //! AutoBracketRelease, tag 0x008a + extern const TagDetails nikonAutoBracketRelease[] = { + { 0, N_("None") }, + { 1, N_("Auto release") }, + { 2, N_("Manual release") } + }; + + //! NEFCompression, tag 0x0093 + extern const TagDetails nikonNefCompression[] = { + { 1, N_("Lossy (type 1)") }, + { 2, N_("Uncompressed") }, + { 3, N_("Lossless") }, + { 4, N_("Lossy (type 2)") } + }; + + //! RetouchHistory, tag 0x009e + extern const TagDetails nikonRetouchHistory[] = { + { 0, N_("None") }, + { 3, N_("B & W") }, + { 4, N_("Sepia") }, + { 5, N_("Trim") }, + { 6, N_("Small picture") }, + { 7, N_("D-Lighting") }, + { 8, N_("Red eye") }, + { 9, N_("Cyanotype") }, + { 10, N_("Sky light") }, + { 11, N_("Warm tone") }, + { 12, N_("Color custom") }, + { 13, N_("Image overlay") } + }; + + //! HighISONoiseReduction, tag 0x00b1 + extern const TagDetails nikonHighISONoiseReduction[] = { + { 0, N_("Off") }, + { 1, N_("Minimal") }, + { 2, N_("Low") }, + { 4, N_("Normal") }, + { 6, N_("High") } + }; + + // Nikon1 MakerNote Tag Info + const TagInfo Nikon1MakerNote::tagInfo_[] = { + TagInfo(0x0001, "Version", N_("Version"), + N_("Nikon Makernote version"), + nikon1Id, makerTags, undefined, -1, printValue), + TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), + N_("ISO speed setting"), + nikon1Id, makerTags, unsignedShort, -1, print0x0002), + TagInfo(0x0003, "ColorMode", N_("Color Mode"), + N_("Color mode"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0004, "Quality", N_("Quality"), + N_("Image quality setting"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0005, "WhiteBalance", N_("White Balance"), + N_("White balance"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0006, "Sharpening", N_("Sharpening"), + N_("Image sharpening setting"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0007, "Focus", N_("Focus"), + N_("Focus mode"), + nikon1Id, makerTags, asciiString, -1, print0x0007), + TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), + N_("Flash setting"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x000a, "0x000a", "0x000a", + N_("Unknown"), + nikon1Id, makerTags, unsignedRational, -1, printValue), + TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), + N_("ISO selection"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0010, "DataDump", N_("Data Dump"), + N_("Data dump"), + nikon1Id, makerTags, undefined, -1, printValue), + TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), + N_("Image adjustment setting"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), + N_("Auxiliary lens (adapter)"), + nikon1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), + N_("Manual focus distance"), + nikon1Id, makerTags, unsignedRational, -1, print0x0085), + TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), + N_("Digital zoom setting"), + nikon1Id, makerTags, unsignedRational, -1, print0x0086), + TagInfo(0x0088, "AFFocusPos", N_("AF Focus Position"), + N_("AF focus position information"), + nikon1Id, makerTags, undefined, -1, print0x0088), + // End of list marker + TagInfo(0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", + N_("Unknown Nikon1MakerNote tag"), + nikon1Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* Nikon1MakerNote::tagList() + { + return tagInfo_; + } + + std::ostream& Nikon1MakerNote::print0x0002(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() > 1) { + os << value.toLong(1); + } + else { + os << "(" << value << ")"; + } + return os; + } + + std::ostream& Nikon1MakerNote::print0x0007(std::ostream& os, + const Value& value, + const ExifData*) + { + std::string focus = value.toString(); + if (focus == "AF-C ") os << _("Continuous autofocus"); + else if (focus == "AF-S ") os << _("Single autofocus"); + else if (focus == "AF-A ") os << _("Automatic"); + else os << "(" << value << ")"; + return os; + } + + std::ostream& Nikon1MakerNote::print0x0085(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational distance = value.toRational(); + if (distance.first == 0) { + os << _("Unknown"); + } + else if (distance.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) + << (float)distance.first / distance.second + << " m"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& Nikon1MakerNote::print0x0086(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational zoom = value.toRational(); + if (zoom.first == 0) { + os << _("Not used"); + } + else if (zoom.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) + << (float)zoom.first / zoom.second + << "x"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& Nikon1MakerNote::print0x0088(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() >= 1) { + unsigned long focusArea = value.toLong(0); + os << nikonFocusarea[focusArea] ; + } + if (value.count() >= 2) { + os << "; "; + unsigned long focusPoint = value.toLong(1); + + switch (focusPoint) { + // Could use array nikonFokuspoints + case 0: + case 1: + case 2: + case 3: + case 4: + os << nikonFocuspoints[focusPoint]; + break; + default: + os << value; + if (focusPoint < sizeof(nikonFocuspoints)/sizeof(nikonFocuspoints[0])) + os << " " << _("guess") << " " << nikonFocuspoints[focusPoint]; + break; + } + } + if (value.count() >= 3) { + unsigned long focusPointsUsed1 = value.toLong(2); + unsigned long focusPointsUsed2 = value.toLong(3); + + if (focusPointsUsed1 != 0 && focusPointsUsed2 != 0) + { + os << "; ["; + + if (focusPointsUsed1 & 1) + os << nikonFocuspoints[0] << " "; + if (focusPointsUsed1 & 2) + os << nikonFocuspoints[1] << " "; + if (focusPointsUsed1 & 4) + os << nikonFocuspoints[2] << " "; + if (focusPointsUsed1 & 8) + os << nikonFocuspoints[3] << " "; + if (focusPointsUsed1 & 16) + os << nikonFocuspoints[4] << " "; + if (focusPointsUsed1 & 32) + os << nikonFocuspoints[5] << " "; + if (focusPointsUsed1 & 64) + os << nikonFocuspoints[6] << " "; + if (focusPointsUsed1 & 128) + os << nikonFocuspoints[7] << " "; + + if (focusPointsUsed2 & 1) + os << nikonFocuspoints[8] << " "; + if (focusPointsUsed2 & 2) + os << nikonFocuspoints[9] << " "; + if (focusPointsUsed2 & 4) + os << nikonFocuspoints[10] << " "; + + os << "]"; + } + } + else { + os << "(" << value << ")"; + } + return os; + } + + //! Quality, tag 0x0003 + extern const TagDetails nikon2Quality[] = { + { 1, N_("VGA Basic") }, + { 2, N_("VGA Normal") }, + { 3, N_("VGA Fine") }, + { 4, N_("SXGA Basic") }, + { 5, N_("SXGA Normal") }, + { 6, N_("SXGA Fine") } + }; + + //! ColorMode, tag 0x0004 + extern const TagDetails nikon2ColorMode[] = { + { 1, N_("Color") }, + { 2, N_("Monochrome") } + }; + + //! ImageAdjustment, tag 0x0005 + extern const TagDetails nikon2ImageAdjustment[] = { + { 0, N_("Normal") }, + { 1, N_("Bright+") }, + { 2, N_("Bright-") }, + { 3, N_("Contrast+") }, + { 4, N_("Contrast-") } + }; + + //! ISOSpeed, tag 0x0006 + extern const TagDetails nikon2IsoSpeed[] = { + { 0, "80" }, + { 2, "160" }, + { 4, "320" }, + { 5, "100" } + }; + + //! WhiteBalance, tag 0x0007 + extern const TagDetails nikon2WhiteBalance[] = { + { 0, N_("Auto") }, + { 1, N_("Preset") }, + { 2, N_("Daylight") }, + { 3, N_("Incandescent") }, + { 4, N_("Fluorescent") }, + { 5, N_("Cloudy") }, + { 6, N_("Speedlight") } + }; + + // Nikon2 MakerNote Tag Info + const TagInfo Nikon2MakerNote::tagInfo_[] = { + TagInfo(0x0002, "0x0002", "0x0002", + N_("Unknown"), + nikon2Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0003, "Quality", N_("Quality"), + N_("Image quality setting"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2Quality)), + TagInfo(0x0004, "ColorMode", N_("Color Mode"), + N_("Color mode"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ColorMode)), + TagInfo(0x0005, "ImageAdjustment", N_("Image Adjustment"), + N_("Image adjustment setting"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ImageAdjustment)), + TagInfo(0x0006, "ISOSpeed", N_("ISO Speed"), + N_("ISO speed setting"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2IsoSpeed)), + TagInfo(0x0007, "WhiteBalance", N_("White Balance"), + N_("White balance"), + nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2WhiteBalance)), + TagInfo(0x0008, "Focus", N_("Focus Mode"), + N_("Focus mode"), + nikon2Id, makerTags, unsignedRational, -1, printValue), + TagInfo(0x0009, "0x0009", "0x0009", + N_("Unknown"), + nikon2Id, makerTags, asciiString, -1, printValue), + TagInfo(0x000a, "DigitalZoom", N_("Digital Zoom"), + N_("Digital zoom setting"), + nikon2Id, makerTags, unsignedRational, -1, print0x000a), + TagInfo(0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), + N_("Auxiliary lens (adapter)"), + nikon2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0f00, "0x0f00", "0x0f00", + N_("Unknown"), + nikon2Id, makerTags, unsignedLong, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", + N_("Unknown Nikon2MakerNote tag"), + nikon2Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* Nikon2MakerNote::tagList() + { + return tagInfo_; + } + + std::ostream& Nikon2MakerNote::print0x000a(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational zoom = value.toRational(); + if (zoom.first == 0) { + os << _("Not used"); + } + else if (zoom.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) + << (float)zoom.first / zoom.second + << "x"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + // Nikon3 MakerNote Tag Info + const TagInfo Nikon3MakerNote::tagInfo_[] = { + TagInfo(0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), nikon3Id, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), + TagInfo(0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0004, "Quality", N_("Quality"), N_("Image quality setting"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0007, "Focus", N_("Focus"), N_("Focus mode"), nikon3Id, makerTags, asciiString, -1, print0x0007), + TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0009, "FlashDevice", N_("Flash Device"), N_("Flash device"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), nikon3Id, makerTags, unsignedRational, -1, printValue), + TagInfo(0x000b, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), nikon3Id, makerTags, signedShort, -1, printValue), + TagInfo(0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), nikon3Id, makerTags, unsignedRational, -1, printValue), + TagInfo(0x000d, "ProgramShift", N_("Program Shift"), N_("Program shift"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), + TagInfo(0x000e, "ExposureDiff", N_("Exposure Difference"), N_("Exposure difference"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), + TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0011, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), + TagInfo(0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), // use 0x0002 print fct + TagInfo(0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), nikon3Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), + TagInfo(0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), // use 0x0012 print fct + TagInfo(0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), nikon3Id, makerTags, signedRational, -1, printValue), + TagInfo(0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonColorSpace)), + TagInfo(0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)), + TagInfo(0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighning)), + TagInfo(0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0024, "WorldTime", N_("World Time"), N_("World time"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x002a, "VignetteControl", N_("Vignette Control"), N_("Vignette control"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonOlnh)), + TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0081, "ToneComp", N_("Tone Compensation"), N_("Tone compensation"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0083, "LensType", N_("Lens Type"), N_("Lens type"), nikon3Id, makerTags, unsignedByte, -1, print0x0083), + TagInfo(0x0084, "Lens", N_("Lens"), N_("Lens"), nikon3Id, makerTags, unsignedRational, -1, print0x0084), + TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), nikon3Id, makerTags, unsignedRational, -1, print0x0085), + TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon3Id, makerTags, unsignedRational, -1, print0x0086), + TagInfo(0x0087, "FlashMode", N_("Flash Mode"), N_("Mode of flash used"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonFlashMode)), + TagInfo(0x0088, "AFInfo", N_("AF Info"), N_("AF info"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0089, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), nikon3Id, makerTags, unsignedShort, -1, print0x0089), + TagInfo(0x008a, "AutoBracketRelease", N_("Auto Bracket Release"), N_("Auto bracket release"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonAutoBracketRelease)), + TagInfo(0x008b, "LensFStops", N_("Lens FStops"), N_("Lens FStops"), nikon3Id, makerTags, undefined, -1, print0x008b), + TagInfo(0x008c, "ContrastCurve", N_("Contrast Curve"), N_("Contrast curve"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x008d, "ColorHue", N_("Color Hue"), N_("Color hue"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x008f, "SceneMode", N_("Scene Mode"), N_("Scene mode"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0090, "LightSource", N_("Light Source"), N_("Light source"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0091, "ShotInfo", "Shot Info", N_("Shot info"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0092, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikon3Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0093, "NEFCompression", N_("NEF Compression"), N_("NEF compression"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonNefCompression)), + TagInfo(0x0094, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0095, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0097, "ColorBalance", N_("Color Balance"), N_("Color balance"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0098, "LensData", N_("Lens Data"), N_("Lens data settings"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0099, "RawImageCenter", N_("Raw Image Center"), N_("Raw image center"), nikon3Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x009a, "SensorPixelSize", N_("Sensor Pixel Size"), N_("Sensor pixel size"), nikon3Id, makerTags, unsignedRational, -1, print0x009a), + TagInfo(0x009b, "0x009b", "0x009b", N_("Unknown"), nikon3Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x009c, "SceneAssist", N_("Scene Assist"), N_("Scene assist"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x009e, "RetouchHistory", N_("Retouch History"), N_("Retouch history"), nikon3Id, makerTags, unsignedShort, -1, print0x009e), + TagInfo(0x009f, "0x009f", "0x009f", N_("Unknown"), nikon3Id, makerTags, signedShort, -1, printValue), + TagInfo(0x00a0, "SerialNO", N_("Serial NO"), N_("Camera serial number, usually starts with \"NO= \""), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00a2, "ImageDataSize", N_("Image Data Size"), N_("Image data size"), nikon3Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x00a3, "0x00a3", "0x00a3", N_("Unknown"), nikon3Id, makerTags, unsignedByte, -1, printValue), + TagInfo(0x00a5, "ImageCount", N_("Image Count"), N_("Image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x00a6, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x00a7, "ShutterCount", N_("Shutter Count"), N_("Number of shots taken by camera"), nikon3Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x00a8, "FlashInfo", "Flash Info", N_("Flash info"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x00a9, "ImageOptimization", N_("Image Optimization"), N_("Image optimization"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00aa, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00ab, "VariProgram", N_("Program Variation"), N_("Program variation"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00ac, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00ad, "AFResponse", N_("AF Response"), N_("AF response"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00b0, "MultiExposure", "Multi Exposure", N_("Multi exposure"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x00b1, "HighISONoiseReduction", N_("High ISO Noise Reduction"), N_("High ISO Noise Reduction"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonHighISONoiseReduction)), + TagInfo(0x00b3, "ToningEffect", "Toning Effect", N_("Toning effect"), nikon3Id, makerTags, asciiString, -1, printValue), + TagInfo(0x00b7, "AFInfo2", "AF Info 2", N_("AF info 2"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x00b8, "FileInfo", "File Info", N_("File info"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x00b9, "AFTune", "AF Tune", N_("AF tune"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), nikon3Id, makerTags, undefined, -1, printValue), + // TODO: Add Capture Data decoding implementation. + TagInfo(0x0e01, "CaptureData", N_("Capture Data"), N_("Capture data"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0e09, "CaptureVersion", N_("Capture Version"), N_("Capture version"), nikon3Id, makerTags, asciiString, -1, printValue), + // TODO: Add Capture Offsets decoding implementation. + TagInfo(0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0e10, "ScanIFD", "Scan IFD", N_("Scan IFD"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0e1d, "ICCProfile", "ICC Profile", N_("ICC profile"), nikon3Id, makerTags, undefined, -1, printValue), + TagInfo(0x0e1e, "CaptureOutput", "Capture Output", N_("Capture output"), nikon3Id, makerTags, undefined, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), nikon3Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagList() + { + return tagInfo_; + } + + //! YesNo, used for DaylightSavings, tag index 2 + extern const TagDetails nikonYesNo[] = { + { 0, N_("No") }, + { 1, N_("Yes") } + }; + + //! DateDisplayFormat, tag index 3 + extern const TagDetails nikonDateDisplayFormat[] = { + { 0, N_("Y/M/D") }, + { 1, N_("M/D/Y") }, + { 2, N_("D/M/Y") } + }; + + //! OnOff + extern const TagDetails nikonOnOff[] = { + { 1, N_("On") }, + { 2, N_("Off") } + }; + + // Nikon3 Vibration Reduction Tag Info + const TagInfo Nikon3MakerNote::tagInfoVr_[] = { + TagInfo(0, "Version", N_("Version"), N_("Version"), nikonVrId, makerTags, undefined, 4, printExifVersion), + TagInfo(4, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonVrId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOnOff)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), nikonVrId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListVr() + { + return tagInfoVr_; + } + + //! Adjust + extern const TagDetails nikonAdjust[] = { + { 0, N_("Default Settings") }, + { 1, N_("Quick Adjust") }, + { 2, N_("Full Control") } + }; + + //! FilterEffect + extern const TagDetails nikonFilterEffect[] = { + { 0x80, N_("Off") }, + { 0x81, N_("Yellow") }, + { 0x82, N_("Orange") }, + { 0x83, N_("Red") }, + { 0x84, N_("Green") }, + { 0xff, N_("n/a") } + }; + + //! ToningEffect + extern const TagDetails nikonToningEffect[] = { + { 0x80, N_("B&W") }, + { 0x81, N_("Sepia") }, + { 0x82, N_("Cyanotype") }, + { 0x83, N_("Red") }, + { 0x84, N_("Yellow") }, + { 0x85, N_("Green") }, + { 0x86, N_("Blue-green") }, + { 0x87, N_("Blue") }, + { 0x88, N_("Purple-blue") }, + { 0x89, N_("Red-purple") }, + { 0xff, N_("n/a") } + }; + + // Nikon3 Picture Control Tag Info + const TagInfo Nikon3MakerNote::tagInfoPc_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonPcId, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "Name", N_("Name"), N_("Name"), nikonPcId, makerTags, asciiString, 20, printValue), + TagInfo(24, "Base", N_("Base"), N_("Base"), nikonPcId, makerTags, asciiString, 20, printValue), + TagInfo(48, "Adjust", N_("Adjust"), N_("Adjust"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAdjust)), + TagInfo(49, "QuickAdjust", N_("Quick Adjust"), N_("Quick adjust"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + TagInfo(50, "Sharpness", N_("Sharpness"), N_("Sharpness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + TagInfo(51, "Contrast", N_("Contrast"), N_("Contrast"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + TagInfo(52, "Brightness", N_("Brightness"), N_("Brightness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + TagInfo(53, "Saturation", N_("Saturation"), N_("Saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + TagInfo(54, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + TagInfo(55, "FilterEffect", N_("Filter Effect"), N_("Filter effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFilterEffect)), + TagInfo(56, "ToningEffect", N_("Toning Effect"), N_("Toning effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonToningEffect)), + TagInfo(57, "ToningSaturation", N_("Toning Saturation"), N_("Toning saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), + // End of list marker + TagInfo(0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), nikonPcId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListPc() + { + return tagInfoPc_; + } + + //! OnOff + extern const TagDetails aftOnOff[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("On") } + }; + + // Nikon3 AF Fine Tune + const TagInfo Nikon3MakerNote::tagInfoAFT_[] = { + TagInfo(0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), nikonAFTId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(aftOnOff)), + TagInfo(1, "AFFineTuneIndex", N_("AF Fine Tune Index"), N_("AF fine tune index"), nikonAFTId, makerTags, unsignedByte, 1, printValue), + TagInfo(2, "AFFineTuneAdj", N_("AF Fine Tune Adjustment"), N_("AF fine tune adjustment"), nikonAFTId, makerTags, signedByte, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonAFTTag)", "(UnknownNikonAFTTag)", N_("Unknown Nikon AF Fine Tune Tag"), nikonAFTId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListAFT() + { + return tagInfoAFT_; + } + + // Nikon3 World Time Tag Info + const TagInfo Nikon3MakerNote::tagInfoWt_[] = { + TagInfo(0, "Timezone", N_("Timezone"), N_("Timezone"), nikonWtId, makerTags, signedShort, 1, printTimeZone), + TagInfo(2, "DaylightSavings", N_("Daylight Savings"), N_("Daylight savings"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)), + TagInfo(3, "DateDisplayFormat", N_("Date Display Format"), N_("Date display format"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonDateDisplayFormat)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), nikonWtId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListWt() + { + return tagInfoWt_; + } + + //! ISOExpansion, tag index 4 and 10 + extern const TagDetails nikonIsoExpansion[] = { + { 0x000, N_("Off") }, + { 0x101, N_("Hi 0.3") }, + { 0x102, N_("Hi 0.5") }, + { 0x103, N_("Hi 0.7") }, + { 0x104, N_("Hi 1.0") }, + { 0x105, N_("Hi 1.3") }, + { 0x106, N_("Hi 1.5") }, + { 0x107, N_("Hi 1.7") }, + { 0x108, N_("Hi 2.0") }, + { 0x109, N_("Hi 2.3") }, + { 0x10a, N_("Hi 2.5") }, + { 0x10b, N_("Hi 2.7") }, + { 0x10c, N_("Hi 3.0") }, + { 0x10d, N_("Hi 3.3") }, + { 0x10e, N_("Hi 3.5") }, + { 0x10f, N_("Hi 3.7") }, + { 0x110, N_("Hi 4.0") }, + { 0x201, N_("Lo 0.3") }, + { 0x202, N_("Lo 0.5") }, + { 0x203, N_("Lo 0.7") }, + { 0x204, N_("Lo 1.0") } + }; + + // Nikon3 ISO Info Tag Info + const TagInfo Nikon3MakerNote::tagInfoIi_[] = { + TagInfo( 0, "ISO", N_("ISO"), N_("ISO"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), + TagInfo( 4, "ISOExpansion", N_("ISO Expansion"), N_("ISO expansion"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), + TagInfo( 6, "ISO2", N_("ISO 2"), N_("ISO 2"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), + TagInfo(10, "ISOExpansion2", N_("ISO Expansion 2"), N_("ISO expansion 2"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), nikonIiId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListIi() + { + return tagInfoIi_; + } + + //! AfAreaMode + extern const TagDetails nikonAfAreaMode[] = { + { 0, N_("Single Area") }, + { 1, N_("Dynamic Area") }, + { 2, N_("Dynamic Area, Closest Subject") }, + { 3, N_("Group Dynamic") }, + { 4, N_("Single Area (wide)") }, + { 5, N_("Dynamic Area (wide)") } + }; + + //! AfPoint + extern const TagDetails nikonAfPoint[] = { + { 0, N_("Center") }, + { 1, N_("Top") }, + { 2, N_("Bottom") }, + { 3, N_("Mid-left") }, + { 4, N_("Mid-right") }, + { 5, N_("Upper-left") }, + { 6, N_("Upper-right") }, + { 7, N_("Lower-left") }, + { 8, N_("Lower-right") }, + { 9, N_("Far Left") }, + { 10, N_("Far Right") } + }; + + //! AfPointsInFocus + extern const TagDetailsBitmask nikonAfPointsInFocus[] = { + { 0x0001, N_("Center") }, + { 0x0002, N_("Top") }, + { 0x0004, N_("Bottom") }, + { 0x0008, N_("Mid-left") }, + { 0x0010, N_("Mid-right") }, + { 0x0020, N_("Upper-left") }, + { 0x0040, N_("Upper-right") }, + { 0x0080, N_("Lower-left") }, + { 0x0100, N_("Lower-right") }, + { 0x0200, N_("Far Left") }, + { 0x0400, N_("Far Right") } + }; + + // Nikon3 Auto Focus Tag Info + const TagInfo Nikon3MakerNote::tagInfoAf_[] = { + TagInfo( 0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfAreaMode)), + TagInfo( 1, "AFPoint", N_("AF Point"), N_("AF point"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfPoint)), + TagInfo( 2, "AFPointsInFocus", N_("AF Points In Focus"), N_("AF points in focus"), nikonAfId, makerTags, unsignedShort, 1, printAfPointsInFocus), + // End of list marker + TagInfo(0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), nikonAfId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListAf() + { + return tagInfoAf_; + } + + //! PhaseDetectAF + extern const TagDetails nikonPhaseDetectAF[] = { + { 0, N_("Off") }, + { 1, N_("On (51-point)") }, + { 2, N_("On (11-point)") }, + { 3, N_("On (39-point)") }, + { 4, N_("On (73-point)") }, + { 5, N_("On (73-point, new)") }, + { 6, N_("On (105-point)") } + }; + + // Nikon3 Auto Focus Tag Info + const TagInfo Nikon3MakerNote::tagInfoAf2_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonAf2Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), + TagInfo( 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf2Id, makerTags, unsignedByte, 1, printValue), + TagInfo( 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)), + TagInfo( 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf2Id, makerTags, unsignedByte, 1, printValue), + TagInfo( 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf2Id, makerTags, unsignedByte, 7, printValue), + TagInfo( 16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + TagInfo( 18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + TagInfo( 20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + TagInfo( 22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + TagInfo( 24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + TagInfo( 26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + TagInfo( 28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf2Id, makerTags, unsignedShort, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf2Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListAf2() + { + return tagInfoAf2_; + } + + // Nikon3 File Info Tag Info + const TagInfo Nikon3MakerNote::tagInfoFi_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFiId, makerTags, undefined, 4, printExifVersion), + TagInfo( 6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), nikonFiId, makerTags, unsignedShort, 1, printValue), + TagInfo( 8, "FileNumber", N_("File Number"), N_("File number"), nikonFiId, makerTags, unsignedShort, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListFi() + { + return tagInfoFi_; + } + + //! MultiExposureMode + extern const TagDetails nikonMultiExposureMode[] = { + { 0, N_("Off") }, + { 1, N_("Multiple Exposure") }, + { 2, N_("Image Overlay") } + }; + + // Nikon3 Multi Exposure Tag Info + const TagInfo Nikon3MakerNote::tagInfoMe_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonMeId, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonMultiExposureMode)), + TagInfo( 8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), nikonMeId, makerTags, unsignedLong, 1, printValue), + TagInfo( 12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonOffOn)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeId, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListMe() + { + return tagInfoMe_; + } + + //! FlashSource + extern const TagDetails nikonFlashSource[] = { + { 0, N_("None") }, + { 1, N_("External") }, + { 2, N_("Internal") } + }; + + //! FlashFirmware + extern const TagDetails nikonFlashFirmware[] = { + { 0x0000, N_("n/a") }, + { 0x0101, N_("1.01 (SB-800 or Metz 58 AF-1)") }, + { 0x0103, "1.03 (SB-800)" }, + { 0x0201, "2.01 (SB-800)" }, + { 0x0204, "2.04 (SB-600)" }, + { 0x0205, "2.05 (SB-600)" }, + { 0x0301, "3.01 (SU-800 Remote Commander)" }, + { 0x0401, "4.01 (SB-400)" }, + { 0x0402, "4.02 (SB-400)" }, + { 0x0404, "4.04 (SB-400)" }, + { 0x0501, "5.01 (SB-900)" }, + { 0x0502, "5.02 (SB-900)" }, + { 0x0601, "6.01 (SB-700)" }, + { 0x0701, "7.01 (SB-910)" } + }; + + //! FlashGNDistance + extern const TagDetails nikonFlashGNDistance[] = { + { 0, N_("None") }, + { 1, "0.1 m" }, + { 2, "0.2 m" }, + { 3, "0.3 m" }, + { 4, "0.4 m" }, + { 5, "0.5 m" }, + { 6, "0.6 m" }, + { 7, "0.7 m" }, + { 8, "0.8 m" }, + { 9, "0.9 m" }, + { 10, "1.0 m" }, + { 11, "1.1 m" }, + { 12, "1.3 m" }, + { 13, "1.4 m" }, + { 14, "1.6 m" }, + { 15, "1.8 m" }, + { 16, "2.0 m" }, + { 17, "2.2 m" }, + { 18, "2.5 m" }, + { 19, "2.8 m" }, + { 20, "3.2 m" }, + { 21, "3.6 m" }, + { 22, "4.0 m" }, + { 23, "4.5 m" }, + { 24, "5.0 m" }, + { 25, "5.6 m" }, + { 26, "6.3 m" }, + { 27, "7.1 m" }, + { 28, "8.0 m" }, + { 29, "9.0 m" }, + { 30, "10.0 m" }, + { 31, "11.0 m" }, + { 32, "13.0 m" }, + { 33, "14.0 m" }, + { 34, "16.0 m" }, + { 35, "18.0 m" }, + { 36, "20.0 m" }, + { 255, N_("n/a") } + }; + + //! FlashControlMode + extern const TagDetails nikonFlashControlMode[] = { + { 0, N_("Off") }, + { 1, N_("iTTL-BL") }, + { 2, N_("iTTL") }, + { 3, N_("Auto Aperture") }, + { 4, N_("Automatic") }, + { 5, N_("GN (distance priority)") }, + { 6, N_("Manual") }, + { 7, N_("Repeating Flash") }, + { 7, N_("Repeating Flash") } // To silence compiler warning + }; + + //! ExternalFlashFlags + extern const TagDetails nikonExternalFlashFlags[] = { + { 0, N_("Fired") }, + { 2, N_("Bounce Flash") }, + { 4, N_("Wide Flash Adapter") } + }; + + //! FlashColorFilter + extern const TagDetails nikonFlashColorFilter[] = { + { 0, N_("None") }, + { 1, N_("FL-GL1") }, + { 2, N_("FL-GL2") }, + { 9, N_("TN-A1") }, + { 10, N_("TN-A2") }, + { 65, N_("Red") }, + { 66, N_("Blue") }, + { 67, N_("Yellow") }, + { 68, N_("Amber") } + }; + + // Nikon3 Flash Info 1 Tag Info + const TagInfo Nikon3MakerNote::tagInfoFl1_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl1Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), + TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl1Id, makerTags, unsignedByte, 1, printValue), + TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl1Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), + TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), + TagInfo( 11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl1Id, makerTags, unsignedByte, 1, printFlashFocalLength), + TagInfo( 12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), + TagInfo( 13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), + TagInfo( 14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), + TagInfo( 15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), + TagInfo( 16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListFl1() + { + return tagInfoFl1_; + } + + // Nikon3 Flash Info 2 Tag Info + const TagInfo Nikon3MakerNote::tagInfoFl2_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl2Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), + TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl2Id, makerTags, unsignedByte, 1, printValue), + TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), + TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), + TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl2Id, makerTags, unsignedByte, 1, printFlashFocalLength), + TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), + TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), + TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListFl2() + { + return tagInfoFl2_; + } + + // Nikon3 Flash Info 3 Tag Info + const TagInfo Nikon3MakerNote::tagInfoFl3_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl3Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), + TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), + TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), + TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl3Id, makerTags, unsignedByte, 1, printFlashFocalLength), + TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), + TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), + TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), + TagInfo( 16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashColorFilter)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListFl3() + { + return tagInfoFl3_; + } + + // Nikon3 Shot Info D80 Tag Info + const TagInfo Nikon3MakerNote::tagInfoSi1_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi1Id, makerTags, unsignedByte, 4, printExifVersion), + TagInfo( 586, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi1Id, makerTags, unsignedLong, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonSi1Tag)", "(UnknownNikonSi1Tag)", N_("Unknown Nikon Shot Info D80 Tag"), nikonSi1Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListSi1() + { + return tagInfoSi1_; + } + + // Nikon3 Shot Info D40 Tag Info + const TagInfo Nikon3MakerNote::tagInfoSi2_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi2Id, makerTags, unsignedByte, 4, printExifVersion), + TagInfo( 582, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi2Id, makerTags, unsignedLong, 1, printValue), + TagInfo( 738, "FlashLevel", N_("Flash Level"), N_("Flash level"), nikonSi2Id, makerTags, unsignedByte, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonSi2Tag)", "(UnknownNikonSi2Tag)", N_("Unknown Nikon Shot Info D40 Tag"), nikonSi2Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListSi2() + { + return tagInfoSi2_; + } + + //! AfFineTuneAdj D300 (a) + extern const TagDetails nikonAfFineTuneAdj1[] = { + { 0x0000, "0" }, + { 0x003a, "+1" }, + { 0x003b, "+2" }, + { 0x003c, "+4" }, + { 0x003d, "+8" }, + { 0x003e, "+16" }, + { 0x00c2, "-16" }, + { 0x00c3, "-8" }, + { 0x00c4, "-4" }, + { 0x00c5, "-2" }, + { 0x00c6, "-1" }, + { 0x103e, "+17" }, + { 0x10c2, "-17" }, + { 0x203d, "+9" }, + { 0x203e, "+18" }, + { 0x20c2, "-18" }, + { 0x20c3, "-9" }, + { 0x303e, "+19" }, + { 0x30c2, "-19" }, + { 0x403c, "+5" }, + { 0x403d, "+10" }, + { 0x403e, "+20" }, + { 0x40c2, "-20" }, + { 0x40c3, "-10" }, + { 0x40c4, "-5" }, + { 0x603d, "+11" }, + { 0x60c3, "-11" }, + { 0x803b, "+3" }, + { 0x803c, "+6" }, + { 0x803d, "+12" }, + { 0x80c3, "-12" }, + { 0x80c4, "-6" }, + { 0x80c5, "-3" }, + { 0xa03d, "+13" }, + { 0xa0c3, "-13" }, + { 0xc03c, "+7" }, + { 0xc03d, "+14" }, + { 0xc0c3, "-14" }, + { 0xc0c4, "-7" }, + { 0xe03d, "+15" }, + { 0xe0c3, "-15" } + }; + + // Nikon3 Shot Info D300 (a) Tag Info + const TagInfo Nikon3MakerNote::tagInfoSi3_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi3Id, makerTags, unsignedByte, 4, printExifVersion), + TagInfo( 604, "ISO", N_("ISO"), N_("ISO"), nikonSi3Id, makerTags, unsignedByte, 1, printIiIso), + TagInfo( 633, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi3Id, makerTags, unsignedLong, 1, printValue), + TagInfo( 721, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj1)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonSi3Tag)", "(UnknownNikonSi3Tag)", N_("Unknown Nikon Shot Info D300 (a) Tag"), nikonSi3Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListSi3() + { + return tagInfoSi3_; + } + + //! AfFineTuneAdj D300 (b) + extern const TagDetails nikonAfFineTuneAdj2[] = { + { 0x0000, "0" }, + { 0x043e, "+13" }, + { 0x04c2, "-13" }, + { 0x183d, "+7" }, + { 0x183e, "+14" }, + { 0x18c2, "-14" }, + { 0x18c3, "-7" }, + { 0x2c3e, "+15" }, + { 0x2cc2, "-15" }, + { 0x403a, "+1" }, + { 0x403b, "+2" }, + { 0x403c, "+4" }, + { 0x403d, "+8" }, + { 0x403e, "+16" }, + { 0x40c2, "-16" }, + { 0x40c3, "-8" }, + { 0x40c4, "-4" }, + { 0x40c5, "-2" }, + { 0x40c6, "-1" }, + { 0x543e, "+17" }, + { 0x54c2, "-17" }, + { 0x683d, "+9" }, + { 0x683e, "+18" }, + { 0x68c2, "-18" }, + { 0x68c3, "-9" }, + { 0x7c3e, "+19" }, + { 0x7cc2, "-19" }, + { 0x903c, "+5" }, + { 0x903d, "+10" }, + { 0x903e, "+20" }, + { 0x90c2, "-20" }, + { 0x90c3, "-10" }, + { 0x90c4, "-5" }, + { 0xb83d, "+11" }, + { 0xb8c3, "-11" }, + { 0xe03b, "+3" }, + { 0xe03c, "+6" }, + { 0xe03d, "+12" }, + { 0xe0c3, "-12" }, + { 0xe0c4, "-6" }, + { 0xe0c5, "-3" } + }; + + // Nikon3 Shot Info D300 (b) Tag Info + const TagInfo Nikon3MakerNote::tagInfoSi4_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi4Id, makerTags, unsignedByte, 4, printExifVersion), + TagInfo( 613, "ISO", N_("ISO"), N_("ISO"), nikonSi4Id, makerTags, unsignedByte, 1, printIiIso), + TagInfo( 644, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi4Id, makerTags, unsignedLong, 1, printValue), + TagInfo( 732, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi4Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj2)), + // End of list marker + TagInfo(0xffff, "(UnknownNikonSi4Tag)", "(UnknownNikonSi4Tag)", N_("Unknown Nikon Shot Info D300 (b) Tag"), nikonSi4Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListSi4() + { + return tagInfoSi4_; + } + + //! VibrationReduction + extern const TagDetails nikonOffOn2[] = { + { 0, N_("Off") }, + { 1, N_("On (1)") }, + { 2, N_("On (2)") }, + { 3, N_("On (3)") } + }; + + //! VibrationReduction2 + extern const TagDetails nikonOffOn3[] = { + { 0x0, N_("n/a") }, + { 0xc, N_("Off") }, + { 0xf, N_("On") } + }; + + // Nikon3 Shot Info Tag Info + const TagInfo Nikon3MakerNote::tagInfoSi5_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi5Id, makerTags, unsignedByte, 4, printExifVersion), + TagInfo( 106, "ShutterCount1", N_("Shutter Count 1"), N_("Shutter count 1"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), + TagInfo( 110, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), + TagInfo( 117, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn2)), + TagInfo( 130, "VibrationReduction1", N_("Vibration Reduction 1"), N_("Vibration reduction 1"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), + TagInfo( 343, "ShutterCount2", N_("Shutter Count 2"), N_("Shutter count 2"), nikonSi5Id, makerTags, undefined, 2, printValue), + TagInfo( 430, "VibrationReduction2", N_("Vibration Reduction 2"), N_("Vibration reduction 2"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn3)), + TagInfo( 598, "ISO", N_("ISO"), N_("ISO"), nikonSi5Id, makerTags, unsignedByte, 1, printIiIso), + TagInfo( 630, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), nikonSi5Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListSi5() + { + return tagInfoSi5_; + } + + // Nikon3 Color Balance 1 Tag Info + const TagInfo Nikon3MakerNote::tagInfoCb1_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb1Id, makerTags, undefined, 4, printExifVersion), + TagInfo(36, "WB_RBGGLevels", N_("WB RBGG Levels"), N_("WB RBGG levels"), nikonCb1Id, makerTags, unsignedShort, 4, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonCb1Tag)", "(UnknownNikonCb1Tag)", N_("Unknown Nikon Color Balance 1 Tag"), nikonCb1Id, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListCb1() + { + return tagInfoCb1_; + } + + // Nikon3 Color Balance 2 Tag Info + const TagInfo Nikon3MakerNote::tagInfoCb2_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 5, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2Id, makerTags, unsignedShort, 4, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonCb2Tag)", "(UnknownNikonCb2Tag)", N_("Unknown Nikon Color Balance 2 Tag"), nikonCb2Id, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListCb2() + { + return tagInfoCb2_; + } + + // Nikon3 Color Balance 2a Tag Info + const TagInfo Nikon3MakerNote::tagInfoCb2a_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2aId, makerTags, undefined, 4, printExifVersion), + TagInfo( 9, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2aId, makerTags, unsignedShort, 4, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonCb2aTag)", "(UnknownNikonCb2aTag)", N_("Unknown Nikon Color Balance 2a Tag"), nikonCb2aId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListCb2a() + { + return tagInfoCb2a_; + } + + // Nikon3 Color Balance 2b Tag Info + const TagInfo Nikon3MakerNote::tagInfoCb2b_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2bId, makerTags, undefined, 4, printExifVersion), + TagInfo(145, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2bId, makerTags, unsignedShort, 4, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonCb2bTag)", "(UnknownNikonCb2bTag)", N_("Unknown Nikon Color Balance 2b Tag"), nikonCb2bId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListCb2b() + { + return tagInfoCb2b_; + } + + // Nikon3 Color Balance 3 Tag Info + const TagInfo Nikon3MakerNote::tagInfoCb3_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb3Id, makerTags, undefined, 4, printExifVersion), + TagInfo(10, "WB_RGBGLevels", N_("WB RGBG Levels"), N_("WB RGBG levels"), nikonCb3Id, makerTags, unsignedShort, 4, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonCb3Tag)", "(UnknownNikonCb3Tag)", N_("Unknown Nikon Color Balance 3 Tag"), nikonCb3Id, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListCb3() + { + return tagInfoCb3_; + } + + // Nikon3 Color Balance 4 Tag Info + const TagInfo Nikon3MakerNote::tagInfoCb4_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb4Id, makerTags, undefined, 4, printExifVersion), + TagInfo(147, "WB_GRBGLevels", N_("WB GRBG Levels"), N_("WB GRBG levels"), nikonCb4Id, makerTags, unsignedShort, 4, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonCb4Tag)", "(UnknownNikonCb4Tag)", N_("Unknown Nikon Color Balance 4 Tag"), nikonCb4Id, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListCb4() + { + return tagInfoCb4_; + } + + // Nikon3 Lens Data 1 Tag Info + const TagInfo Nikon3MakerNote::tagInfoLd1_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd1Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 6, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd1Id, makerTags, unsignedByte, 1, printLensId1), + TagInfo( 7, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd1Id, makerTags, unsignedByte, 1, printFStops), + TagInfo( 8, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), + TagInfo( 9, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(10, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), + TagInfo(11, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), + TagInfo(12, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd1Id, makerTags, unsignedByte, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownNikonLd1Tag)", "(UnknownNikonLd1Tag)", N_("Unknown Nikon Lens Data 1 Tag"), nikonLd1Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListLd1() + { + return tagInfoLd1_; + } + + // Nikon3 Lens Data 2 Tag Info + const TagInfo Nikon3MakerNote::tagInfoLd2_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd2Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd2Id, makerTags, unsignedByte, 1, printExitPupilPosition), + TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), + TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), + TagInfo( 9, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd2Id, makerTags, unsignedByte, 1, printFocusDistance), + TagInfo(10, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(11, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd2Id, makerTags, unsignedByte, 1, printLensId2), + TagInfo(12, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd2Id, makerTags, unsignedByte, 1, printFStops), + TagInfo(13, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(14, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(15, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), + TagInfo(16, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), + TagInfo(17, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), + TagInfo(18, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), + // End of list marker + TagInfo(0xffff, "(UnknownNikonLd2Tag)", "(UnknownNikonLd2Tag)", N_("Unknown Nikon Lens Data 2 Tag"), nikonLd2Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListLd2() + { + return tagInfoLd2_; + } + + // Nikon3 Lens Data 3 Tag Info + const TagInfo Nikon3MakerNote::tagInfoLd3_[] = { + TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd3Id, makerTags, undefined, 4, printExifVersion), + TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd3Id, makerTags, unsignedByte, 1, printExitPupilPosition), + TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), + TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), + TagInfo(10, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd3Id, makerTags, unsignedByte, 1, printFocusDistance), + TagInfo(11, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(12, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd3Id, makerTags, unsignedByte, 1, printLensId3), + TagInfo(13, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd3Id, makerTags, unsignedByte, 1, printFStops), + TagInfo(14, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(15, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), + TagInfo(16, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), + TagInfo(17, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), + TagInfo(18, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), + TagInfo(19, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), + // End of list marker + TagInfo(0xffff, "(UnknownNikonLd3Tag)", "(UnknownNikonLd3Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd3Id, makerTags, unsignedByte, 1, printValue) + }; + + const TagInfo* Nikon3MakerNote::tagListLd3() + { + return tagInfoLd3_; + } + + std::ostream& Nikon3MakerNote::printIiIso(std::ostream& os, + const Value& value, + const ExifData*) + { + double v = 100 * exp((value.toLong() / 12.0 - 5) * log(2.0)); + return os << static_cast(v + 0.5); + } + + std::ostream& Nikon3MakerNote::print0x0002(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() > 1) { + os << value.toLong(1); + } + else { + os << "(" << value << ")"; + } + return os; + } + + std::ostream& Nikon3MakerNote::print0x0007(std::ostream& os, + const Value& value, + const ExifData*) + { + std::string focus = value.toString(); + if (focus == "AF-C ") os << _("Continuous autofocus"); + else if (focus == "AF-S ") os << _("Single autofocus"); + else if (focus == "AF-A ") os << _("Automatic"); + else os << "(" << value << ")"; + return os; + } + + std::ostream& Nikon3MakerNote::print0x0083(std::ostream& os, + const Value& value, + const ExifData*) + { + long lensType = value.toLong(); + + bool valid=false; + if (lensType & 1) + { + os << "MF "; + valid=true; + } + if (lensType & 2) + { + os << "D "; + valid=true; + } + if (lensType & 4) + { + os << "G "; + valid=true; + } + if (lensType & 8) + { + os << "VR"; + valid=true; + } + + if (!valid) + os << "(" << lensType << ")"; + + return os; + } + + std::ostream& Nikon3MakerNote::print0x0084(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if ( value.count() != 4 + || value.toRational(0).second == 0 + || value.toRational(1).second == 0) { + os << "(" << value << ")"; + return os; + } + long len1 = value.toLong(0); + long len2 = value.toLong(1); + + Rational fno1 = value.toRational(2); + Rational fno2 = value.toRational(3); + os << len1; + if (len2 != len1) { + os << "-" << len2; + } + os << "mm "; + std::ostringstream oss; + oss.copyfmt(os); + os << "F" << std::setprecision(2) + << static_cast(fno1.first) / fno1.second; + if (fno2 != fno1) { + os << "-" << std::setprecision(2) + << static_cast(fno2.first) / fno2.second; + } + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::print0x0085(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational distance = value.toRational(); + if (distance.first == 0) { + os << _("Unknown"); + } + else if (distance.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) + << (float)distance.first / distance.second + << " m"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::print0x0086(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational zoom = value.toRational(); + if (zoom.first == 0) { + os << _("Not used"); + } + else if (zoom.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) + << (float)zoom.first / zoom.second + << "x"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::print0x0088(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.size() != 4) { // Size is 4 even for those who map this way... + os << "(" << value << ")"; + } + else { + // Mapping by Roger Larsson + unsigned focusmetering = value.toLong(0); + unsigned focuspoint = value.toLong(1); + unsigned focusused = (value.toLong(2) << 8) + value.toLong(3); + // TODO: enum {standard, wide} combination = standard; + const unsigned focuspoints = sizeof(nikonFocuspoints) + / sizeof(nikonFocuspoints[0]); + + if (focusmetering == 0 && focuspoint == 0 && focusused == 0) { + // Special case, in Manual focus and with Nikon compacts + // this indicates that the field has no meaning. + // But when acually in "Single area, Center" this can mean + // that focus was not found (try this in AF-C mode) + // TODO: handle the meaningful case (interacts with other fields) + os << "N/A"; + return os; + } + + switch (focusmetering) { + case 0x00: os << _("Single area"); break; // D70, D200 + case 0x01: os << _("Dynamic area"); break; // D70, D200 + case 0x02: os << _("Closest subject"); break; // D70, D200 + case 0x03: os << _("Group dynamic-AF"); break; // D200 + case 0x04: os << _("Single area (wide)"); /* TODO: combination = wide; */ break; // D200 + case 0x05: os << _("Dynamic area (wide)"); /* TODO: combination = wide; */ break; // D200 + default: os << "(" << focusmetering << ")"; break; + } + + char sep = ';'; + if (focusmetering != 0x02) { // No user selected point for Closest subject + os << sep << ' '; + + // What focuspoint did the user select? + if (focuspoint < focuspoints) { + os << nikonFocuspoints[focuspoint]; + // TODO: os << position[fokuspoint][combination] + } + else + os << "(" << focuspoint << ")"; + + sep = ','; + } + + // What fokuspoints(!) did the camera use? add if differs + if (focusused == 0) + os << sep << " " << _("none"); + else if (focusused != 1U<findKey(ExifKey("Exif.Image.Model")); + if (pos != metadata->end() && pos->count() != 0) { + std::string model = pos->toString(); + if (model.find("NIKON D") != std::string::npos) { + dModel = true; + } + } + } + + uint16_t val = static_cast(value.toLong()); + if (dModel) val = (val >> 8) | ((val & 0x00ff) << 8); + + if (val == 0x07ff) return os << _("All 11 Points"); + + UShortValue v; + v.value_.push_back(val); + return EXV_PRINT_TAG_BITMASK(nikonAfPointsInFocus)(os, v, 0); + } + + std::ostream& Nikon3MakerNote::print0x0089(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + if (value.count() != 1 || value.typeId() != unsignedShort) { + return os << "(" << value << ")"; + } + long l = value.toLong(0); + if (l == 0) return os << _("Single-frame"); + if (!(l & 0x87)) os << _("Single-frame") << ", "; + bool d70 = false; + if (metadata) { + ExifKey key("Exif.Image.Model"); + ExifData::const_iterator pos = metadata->findKey(key); + if (pos != metadata->end() && pos->count() != 0) { + std::string model = pos->toString(); + if (model.find("D70") != std::string::npos) { + d70 = true; + } + } + } + if (d70) { + EXV_PRINT_TAG_BITMASK(nikonShootingModeD70)(os, value, 0); + } + else { + EXV_PRINT_TAG_BITMASK(nikonShootingMode)(os, value, 0); + } + return os; + } + + std::ostream& Nikon3MakerNote::print0x008b(std::ostream& os, + const Value& value, + const ExifData*) + { + // Decoded by Robert Rottmerhusen + if ( value.size() != 4 + || value.typeId() != undefined) { + return os << "(" << value << ")"; + } + float a = value.toFloat(0); + long b = value.toLong(1); + long c = value.toLong(2); + if (c == 0) return os << "(" << value << ")"; + return os << a * b / c; + } + + std::ostream& Nikon3MakerNote::printLensId1(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + return printLensId(os, value, metadata, "NikonLd1"); + } + + std::ostream& Nikon3MakerNote::printLensId2(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + return printLensId(os, value, metadata, "NikonLd2"); + } + + std::ostream& Nikon3MakerNote::printLensId3(std::ostream& os, + const Value& value, + const ExifData* metadata) + { + return printLensId(os, value, metadata, "NikonLd3"); + } + + std::ostream& Nikon3MakerNote::printLensId(std::ostream& os, + const Value& value, + const ExifData* metadata, + const std::string& group) + { +#ifdef EXV_HAVE_LENSDATA +// 8< - - - 8< do not remove this line >8 - - - >8 +//------------------------------------------------------------------------------ +#ifndef FMOUNTLH +#define FMOUNTLH +//------------------------------------------------------------------------------ +// List of AF F-Mount lenses - Version 4.4.482.01 2015-04-26 +//------------------------------------------------------------------------------ +#define FMLVERSION "4.4.482.01" +#define FMLDATE "2015-04-26" +//------------------------------------------------------------------------------ +// +// +// Created by Robert Rottmerhusen 2005 - 2015 +// http://www.rottmerhusen.com (lens_id@rottmerhusen.com) +// +// For contributor info and more visit my online list: +// http://www.rottmerhusen.com/objektives/lensid/thirdparty.html +// +// +// Seven misidentified lenses due to double LensIDs: +// +// 2F 48 30 44 24 24 29 02.1: Nikon AF Zoom-Nikkor 20-35mm f/2.8D IF +// 2F 48 30 44 24 24 29 02.2: Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8) +// +// 32 54 6A 6A 24 24 35 02.1: Nikon AF Micro-Nikkor 105mm f/2.8D +// 32 54 6A 6A 24 24 35 02.2: Sigma Macro 105mm F2.8 EX DG +// +// 7A 3C 1F 37 30 30 7E 06.1: Nikon AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED +// 7A 3C 1F 37 30 30 7E 06.2: Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4) +// +// 8B 40 2D 80 2C 3C FD 0E.1: Nikon AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED +// 8B 40 2D 80 2C 3C FD 0E.2: Nikon AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED II +// +// 32 53 64 64 24 24 35 02.1: Tamron SP AF 90mm F/2.8 Macro 1:1 (172E) +// 32 53 64 64 24 24 35 02.2: Tamron SP AF 90mm F/2.8 Di Macro 1:1 (272E) +// +// 2F 40 30 44 2C 34 29 02.1: Tokina AF 235 II (AF 20-35mm f/3.5-4.5) +// 2F 40 30 44 2C 34 29 02.2: Tokina AF 193 (AF 19-35mm f/3.5-4.5) +// +// 25 48 3C 5C 24 24 1B 02.1: Tokina AT-X 287 AF PRO SV (AF 28-70mm f/2.8) +// 25 48 3C 5C 24 24 1B 02.2: Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8) +// +// +// product number/order code not complete +// +// Free use in non-commercial, GPL or open source software only! +// Please contact me for adding lenses or use in commercial software. +// +//"data from TAG 0x98" "ltyp" " "TC" "MID" "maker" "PN" "lens name from manuf"; +// +//------------------------------------------------------------------------------ +// Nikkor lenses by their LensID +//------------------------------------------------------------------------------ +// +static const struct {unsigned char lid,stps,focs,focl,aps,apl,lfw, ltype, tcinfo, dblid, mid; const char *manuf, *lnumber, *lensname;} +fmountlens[] = { +{0x01,0x58,0x50,0x50,0x14,0x14,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA00901", "AF Nikkor 50mm f/1.8"}, +{0x01,0x58,0x50,0x50,0x14,0x14,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA00901", "AF Nikkor 50mm f/1.8"}, +{0x02,0x42,0x44,0x5C,0x2A,0x34,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA72701", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, +{0x02,0x42,0x44,0x5C,0x2A,0x34,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA72701", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, +{0x03,0x48,0x5C,0x81,0x30,0x30,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA72801", "AF Zoom-Nikkor 70-210mm f/4"}, +{0x04,0x48,0x3C,0x3C,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA12001", "AF Nikkor 28mm f/2.8"}, +{0x05,0x54,0x50,0x50,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA01001", "AF Nikkor 50mm f/1.4"}, +{0x06,0x54,0x53,0x53,0x24,0x24,0x06,0x00,0x40,0x00,0x00, "Nikon", "JAA62101", "AF Micro-Nikkor 55mm f/2.8"}, +{0x07,0x40,0x3C,0x62,0x2C,0x34,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA72901", "AF Zoom-Nikkor 28-85mm f/3.5-4.5"}, +{0x08,0x40,0x44,0x6A,0x2C,0x34,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA73001", "AF Zoom-Nikkor 35-105mm f/3.5-4.5"}, +{0x09,0x48,0x37,0x37,0x24,0x24,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA12101", "AF Nikkor 24mm f/2.8"}, +{0x0A,0x48,0x8E,0x8E,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA322AA", "AF Nikkor 300mm f/2.8 IF-ED"}, +{0x0A,0x48,0x8E,0x8E,0x24,0x24,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA322AB", "AF Nikkor 300mm f/2.8 IF-ED"}, +{0x0B,0x48,0x7C,0x7C,0x24,0x24,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA32101", "AF Nikkor 180mm f/2.8 IF-ED"}, +//0C +{0x0D,0x40,0x44,0x72,0x2C,0x34,0x07,0x00,0x00,0x00,0x00, "Nikon", "JAA73101", "AF Zoom-Nikkor 35-135mm f/3.5-4.5"}, +{0x0E,0x48,0x5C,0x81,0x30,0x30,0x05,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 70-210mm f/4"}, +{0x0F,0x58,0x50,0x50,0x14,0x14,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA009AD", "AF Nikkor 50mm f/1.8 N"}, +{0x10,0x48,0x8E,0x8E,0x30,0x30,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA32301", "AF Nikkor 300mm f/4 IF-ED"}, +{0x11,0x48,0x44,0x5C,0x24,0x24,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA73301", "AF Zoom-Nikkor 35-70mm f/2.8"}, +{0x12,0x48,0x5C,0x81,0x30,0x3C,0x09,0x00,0x00,0x00,0x00, "Nikon", "JAA73201", "AF Nikkor 70-210mm f/4-5.6"}, +{0x13,0x42,0x37,0x50,0x2A,0x34,0x0B,0x00,0x00,0x00,0x00, "Nikon", "JAA73401", "AF Zoom-Nikkor 24-50mm f/3.3-4.5"}, +{0x14,0x48,0x60,0x80,0x24,0x24,0x0B,0x00,0x00,0x00,0x00, "Nikon", "JAA73501", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, +{0x15,0x4C,0x62,0x62,0x14,0x14,0x0C,0x00,0x00,0x00,0x00, "Nikon", "JAA32401", "AF Nikkor 85mm f/1.8"}, +//16 +{0x17,0x3C,0xA0,0xA0,0x30,0x30,0x0F,0x00,0x00,0x00,0x00, "Nikon", "JAA518AA", "Nikkor 500mm f/4 P ED IF"}, +{0x17,0x3C,0xA0,0xA0,0x30,0x30,0x11,0x00,0x00,0x00,0x00, "Nikon", "JAA518AA", "Nikkor 500mm f/4 P ED IF"}, +{0x18,0x40,0x44,0x72,0x2C,0x34,0x0E,0x00,0x00,0x00,0x00, "Nikon", "JAA736AA", "AF Zoom-Nikkor 35-135mm f/3.5-4.5 N"}, +//19 +{0x1A,0x54,0x44,0x44,0x18,0x18,0x11,0x00,0x00,0x00,0x00, "Nikon", "JAA12201", "AF Nikkor 35mm f/2"}, +{0x1B,0x44,0x5E,0x8E,0x34,0x3C,0x10,0x00,0x00,0x00,0x00, "Nikon", "JAA738AA", "AF Zoom-Nikkor 75-300mm f/4.5-5.6"}, +{0x1C,0x48,0x30,0x30,0x24,0x24,0x12,0x00,0x00,0x00,0x00, "Nikon", "JAA12301", "AF Nikkor 20mm f/2.8"}, +{0x1D,0x42,0x44,0x5C,0x2A,0x34,0x12,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-70mm f/3.3-4.5 N"}, +{0x1E,0x54,0x56,0x56,0x24,0x24,0x13,0x00,0x40,0x00,0x00, "Nikon", "JAA62201", "AF Micro-Nikkor 60mm f/2.8"}, +{0x1F,0x54,0x6A,0x6A,0x24,0x24,0x14,0x00,0x40,0x00,0x00, "Nikon", "JAA62301", "AF Micro-Nikkor 105mm f/2.8"}, +{0x20,0x48,0x60,0x80,0x24,0x24,0x15,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, +{0x21,0x40,0x3C,0x5C,0x2C,0x34,0x16,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 28-70mm f/3.5-4.5"}, +{0x22,0x48,0x72,0x72,0x18,0x18,0x16,0x00,0x00,0x00,0x00, "Nikon", "JAA32501", "AF DC-Nikkor 135mm f/2"}, +{0x23,0x30,0xBE,0xCA,0x3C,0x48,0x17,0x00,0x00,0x00,0x00, "Nikon", "", "Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF"}, +// - D - lenses from here +{0x24,0x48,0x60,0x80,0x24,0x24,0x1A,0x02,0x00,0x00,0x00, "Nikon", "JAA742DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, +{0x25,0x48,0x44,0x5c,0x24,0x24,0x1B,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, +{0x25,0x48,0x44,0x5C,0x24,0x24,0x3A,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, +{0x25,0x48,0x44,0x5c,0x24,0x24,0x52,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, +{0x26,0x40,0x3C,0x5C,0x2C,0x34,0x1C,0x02,0x00,0x00,0x00, "Nikon", "JAA744DA", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, +// ^- not yet verified +{0x27,0x48,0x8E,0x8E,0x24,0x24,0x1D,0x02,0x07,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED"}, +{0x27,0x48,0x8E,0x8E,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E"}, +{0x27,0x48,0x8E,0x8E,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E"}, +{0x27,0x48,0x8E,0x8E,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E"}, +{0x28,0x3C,0xA6,0xA6,0x30,0x30,0x1D,0x02,0x07,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED"}, +{0x28,0x3C,0xA6,0xA6,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-14E"}, +{0x28,0x3C,0xA6,0xA6,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-17E"}, +{0x28,0x3C,0xA6,0xA6,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-20E"}, +//29 +{0x2A,0x54,0x3C,0x3C,0x0C,0x0C,0x26,0x02,0x00,0x00,0x00, "Nikon", "JAA124DA", "AF Nikkor 28mm f/1.4D"}, +{0x2B,0x3C,0x44,0x60,0x30,0x3C,0x1F,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, +{0x2C,0x48,0x6A,0x6A,0x18,0x18,0x27,0x02,0x00,0x00,0x00, "Nikon", "JAA327DA", "AF DC-Nikkor 105mm f/2D"}, +{0x2D,0x48,0x80,0x80,0x30,0x30,0x21,0x02,0x40,0x00,0x00, "Nikon", "JAA624DA", "AF Micro-Nikkor 200mm f/4D IF-ED"}, +{0x2E,0x48,0x5C,0x82,0x30,0x3C,0x22,0x02,0x00,0x00,0x00, "Nikon", "JAA747DA", "AF Nikkor 70-210mm f/4-5.6D"}, +{0x2E,0x48,0x5C,0x82,0x30,0x3C,0x28,0x02,0x00,0x00,0x00, "Nikon", "JAA747DA", "AF Nikkor 70-210mm f/4-5.6D"}, +{0x2F,0x48,0x30,0x44,0x24,0x24,0x29,0x02,0x00,0x01,0x00, "Nikon", "JAA746DA", "AF Zoom-Nikkor 20-35mm f/2.8D IF"}, +{0x30,0x48,0x98,0x98,0x24,0x24,0x24,0x02,0x07,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED"}, +{0x30,0x48,0x98,0x98,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E"}, +{0x30,0x48,0x98,0x98,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E"}, +{0x30,0x48,0x98,0x98,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E"}, +{0x31,0x54,0x56,0x56,0x24,0x24,0x25,0x02,0x40,0x00,0x00, "Nikon", "JAA625DA", "AF Micro-Nikkor 60mm f/2.8D"}, +{0x32,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x40,0x01,0x00, "Nikon", "JAA627DA", "AF Micro-Nikkor 105mm f/2.8D"}, +{0x33,0x48,0x2D,0x2D,0x24,0x24,0x31,0x02,0x00,0x00,0x00, "Nikon", "JAA126DA", "AF Nikkor 18mm f/2.8D"}, +{0x34,0x48,0x29,0x29,0x24,0x24,0x32,0x02,0x00,0x00,0x00, "Nikon", "JAA626DA", "AF Fisheye Nikkor 16mm f/2.8D"}, +{0x35,0x3C,0xA0,0xA0,0x30,0x30,0x33,0x02,0x07,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED"}, +{0x35,0x3C,0xA0,0xA0,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-14E"}, +{0x35,0x3C,0xA0,0xA0,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-17E"}, +{0x35,0x3C,0xA0,0xA0,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-20E"}, +{0x36,0x48,0x37,0x37,0x24,0x24,0x34,0x02,0x00,0x00,0x00, "Nikon", "JAA125DA", "AF Nikkor 24mm f/2.8D"}, +{0x37,0x48,0x30,0x30,0x24,0x24,0x36,0x02,0x00,0x00,0x00, "Nikon", "JAA127DA", "AF Nikkor 20mm f/2.8D"}, +{0x38,0x4C,0x62,0x62,0x14,0x14,0x37,0x02,0x00,0x00,0x00, "Nikon", "JAA328DA", "AF Nikkor 85mm f/1.8D"}, +//39 38 +{0x3A,0x40,0x3C,0x5C,0x2C,0x34,0x39,0x02,0x00,0x00,0x00, "Nikon", "JAA744DA", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, +{0x3B,0x48,0x44,0x5C,0x24,0x24,0x3A,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D N"}, +{0x3C,0x48,0x60,0x80,0x24,0x24,0x3B,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, +{0x3D,0x3C,0x44,0x60,0x30,0x3C,0x3E,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, +{0x3E,0x48,0x3C,0x3C,0x24,0x24,0x3D,0x02,0x00,0x00,0x00, "Nikon", "JAA128DA", "AF Nikkor 28mm f/2.8D"}, +{0x3F,0x40,0x44,0x6A,0x2C,0x34,0x45,0x02,0x00,0x00,0x00, "Nikon", "JAA748DA", "AF Zoom-Nikkor 35-105mm f/3.5-4.5D"}, +//40 +{0x41,0x48,0x7c,0x7c,0x24,0x24,0x43,0x02,0x00,0x00,0x00, "Nikon", "JAA330DA", "AF Nikkor 180mm f/2.8D IF-ED"}, +{0x42,0x54,0x44,0x44,0x18,0x18,0x44,0x02,0x00,0x00,0x00, "Nikon", "JAA129DA", "AF Nikkor 35mm f/2D"}, +{0x43,0x54,0x50,0x50,0x0C,0x0C,0x46,0x02,0x00,0x00,0x00, "Nikon", "JAA011DB", "AF Nikkor 50mm f/1.4D"}, +{0x44,0x44,0x60,0x80,0x34,0x3C,0x47,0x02,0x00,0x00,0x00, "Nikon", "JAA753DB", "AF Zoom-Nikkor 80-200mm f/4.5-5.6D"}, +{0x45,0x40,0x3C,0x60,0x2C,0x3C,0x48,0x02,0x00,0x00,0x00, "Nikon", "JAA752DA", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, +{0x46,0x3C,0x44,0x60,0x30,0x3C,0x49,0x02,0x00,0x00,0x00, "Nikon", "JAA754DA", "AF Zoom-Nikkor 35-80mm f/4-5.6D N"}, +{0x47,0x42,0x37,0x50,0x2A,0x34,0x4A,0x02,0x00,0x00,0x00, "Nikon", "JAA756DA", "AF Zoom-Nikkor 24-50mm f/3.3-4.5D"}, +{0x48,0x48,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x07,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED"}, +{0x48,0x48,0x8E,0x8E,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E"}, +{0x48,0x48,0x8E,0x8E,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E"}, +{0x48,0x48,0x8E,0x8E,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E"}, +{0x49,0x3C,0xA6,0xA6,0x30,0x30,0x4C,0x02,0x07,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED"}, +{0x49,0x3C,0xA6,0xA6,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-14E"}, +{0x49,0x3C,0xA6,0xA6,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-17E"}, +{0x49,0x3C,0xA6,0xA6,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"}, +{0x4A,0x54,0x62,0x62,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Nikon", "JAA332DA", "AF Nikkor 85mm f/1.4D IF"}, +{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0x4E,0x02,0x07,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED"}, +{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-14E"}, +{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-17E"}, +{0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-20E"}, +{0x4C,0x40,0x37,0x6E,0x2C,0x3C,0x4F,0x02,0x00,0x00,0x00, "Nikon", "JAA757DA", "AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF"}, +{0x4D,0x40,0x3C,0x80,0x2C,0x3C,0x62,0x02,0x00,0x00,0x00, "Nikon", "JAA758DA", "AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF"}, +{0x4E,0x48,0x72,0x72,0x18,0x18,0x51,0x02,0x00,0x00,0x00, "Nikon", "JAA329DA", "AF DC-Nikkor 135mm f/2D"}, +{0x4F,0x40,0x37,0x5C,0x2C,0x3C,0x53,0x06,0x00,0x00,0x00, "Nikon", "JBA701AA", "IX-Nikkor 24-70mm f/3.5-5.6"}, +{0x50,0x48,0x56,0x7C,0x30,0x3C,0x54,0x06,0x00,0x00,0x00, "Nikon", "JBA702AA", "IX-Nikkor 60-180mm f/4-5.6"}, +// "JBA703AC" "IX-Nikkor 20-60 mm f/3.5-5.6"; +//51 +//52 +{0x53,0x48,0x60,0x80,0x24,0x24,0x57,0x02,0x00,0x00,0x00, "Nikon", "JAA762DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, +{0x53,0x48,0x60,0x80,0x24,0x24,0x60,0x02,0x00,0x00,0x00, "Nikon", "JAA762DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, +{0x54,0x44,0x5C,0x7C,0x34,0x3C,0x58,0x02,0x00,0x00,0x00, "Nikon", "JAA763DA", "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"}, +{0x54,0x44,0x5C,0x7C,0x34,0x3C,0x61,0x02,0x00,0x00,0x00, "Nikon", "JAA763DA", "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED"}, +//55 +{0x56,0x48,0x5C,0x8E,0x30,0x3C,0x5A,0x02,0x00,0x00,0x00, "Nikon", "JAA764DA", "AF Zoom-Nikkor 70-300mm f/4-5.6D ED"}, +//57 +//58 +{0x59,0x48,0x98,0x98,0x24,0x24,0x5D,0x02,0x07,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED"}, +{0x59,0x48,0x98,0x98,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E"}, +{0x59,0x48,0x98,0x98,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E"}, +{0x59,0x48,0x98,0x98,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E"}, +{0x5A,0x3C,0x3E,0x56,0x30,0x3C,0x5E,0x06,0x00,0x00,0x00, "Nikon", "JBA704AA", "IX-Nikkor 30-60mm f/4-5.6"}, +{0x5B,0x44,0x56,0x7C,0x34,0x3C,0x5F,0x06,0x00,0x00,0x00, "Nikon", "JBA705AA", "IX-Nikkor 60-180mm f/4.5-5.6"}, +// "JBA706AC" "IX-Nikkor 20-60 mm f/3.5-5.6N"; +//5C +{0x5D,0x48,0x3C,0x5C,0x24,0x24,0x63,0x02,0x01,0x00,0x00, "Nikon", "JAA767DA", "AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED"}, +{0x5E,0x48,0x60,0x80,0x24,0x24,0x64,0x02,0x03,0x00,0x00, "Nikon", "JAA765DA", "AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED"}, +{0x5F,0x40,0x3C,0x6A,0x2C,0x34,0x65,0x02,0x00,0x00,0x00, "Nikon", "JAA766DA", "AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF"}, +{0x60,0x40,0x3C,0x60,0x2C,0x3C,0x66,0x02,0x00,0x00,0x00, "Nikon", "JAA769DA", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, +{0x61,0x44,0x5E,0x86,0x34,0x3C,0x67,0x02,0x00,0x00,0x00, "Nikon", "JAA768DA", "AF Zoom-Nikkor 75-240mm f/4.5-5.6D"}, +//62 69 +{0x63,0x48,0x2B,0x44,0x24,0x24,0x68,0x02,0x01,0x00,0x00, "Nikon", "JAA770DA", "AF-S Nikkor 17-35mm f/2.8D IF-ED"}, +{0x64,0x00,0x62,0x62,0x24,0x24,0x6A,0x02,0x40,0x00,0x00, "Nikon", "JAA628DA", "PC Micro-Nikkor 85mm f/2.8D"}, +{0x65,0x44,0x60,0x98,0x34,0x3C,0x6B,0x0A,0x00,0x00,0x00, "Nikon", "JAA771DA", "AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED"}, +{0x66,0x40,0x2D,0x44,0x2C,0x34,0x6C,0x02,0x00,0x00,0x00, "Nikon", "JAA772DA", "AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED"}, +{0x67,0x48,0x37,0x62,0x24,0x30,0x6D,0x02,0x00,0x00,0x00, "Nikon", "JAA774DA", "AF Zoom-Nikkor 24-85mm f/2.8-4D IF"}, +{0x68,0x42,0x3C,0x60,0x2A,0x3C,0x6E,0x06,0x00,0x00,0x00, "Nikon", "JAA777DA", "AF Zoom-Nikkor 28-80mm f/3.3-5.6G"}, +{0x69,0x48,0x5C,0x8E,0x30,0x3C,0x6F,0x06,0x00,0x00,0x00, "Nikon", "JAA776DA", "AF Zoom-Nikkor 70-300mm f/4-5.6G"}, +{0x6A,0x48,0x8E,0x8E,0x30,0x30,0x70,0x02,0x03,0x00,0x00, "Nikon", "JAA334DA", "AF-S Nikkor 300mm f/4D IF-ED"}, +{0x6B,0x48,0x24,0x24,0x24,0x24,0x71,0x02,0x00,0x00,0x00, "Nikon", "JAA130DA", "AF Nikkor ED 14mm f/2.8D"}, +//6C 72 +{0x6D,0x48,0x8E,0x8E,0x24,0x24,0x73,0x02,0x03,0x00,0x00, "Nikon", "JAA335DA", "AF-S Nikkor 300mm f/2.8D IF-ED II"}, +{0x6E,0x48,0x98,0x98,0x24,0x24,0x74,0x02,0x03,0x00,0x00, "Nikon", "JAA525DA", "AF-S Nikkor 400mm f/2.8D IF-ED II"}, +{0x6F,0x3C,0xA0,0xA0,0x30,0x30,0x75,0x02,0x03,0x00,0x00, "Nikon", "JAA526DA", "AF-S Nikkor 500mm f/4D IF-ED II"}, +{0x70,0x3C,0xA6,0xA6,0x30,0x30,0x76,0x02,0x03,0x00,0x00, "Nikon", "JAA527DA", "AF-S Nikkor 600mm f/4D IF-ED II"}, +//71 +{0x72,0x48,0x4C,0x4C,0x24,0x24,0x77,0x00,0x00,0x00,0x00, "Nikon", "JAA012AA", "Nikkor 45mm f/2.8 P"}, +//73 +{0x74,0x40,0x37,0x62,0x2C,0x34,0x78,0x06,0x01,0x00,0x00, "Nikon", "JAA780DA", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, +{0x75,0x40,0x3C,0x68,0x2C,0x3C,0x79,0x06,0x00,0x00,0x00, "Nikon", "JAA778DA", "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"}, +{0x76,0x58,0x50,0x50,0x14,0x14,0x7A,0x02,0x00,0x00,0x00, "Nikon", "JAA013DA", "AF Nikkor 50mm f/1.8D"}, +{0x77,0x48,0x5C,0x80,0x24,0x24,0x7B,0x0E,0x03,0x00,0x00, "Nikon", "JAA781DA", "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED"}, +{0x78,0x40,0x37,0x6E,0x2C,0x3C,0x7C,0x0E,0x01,0x00,0x00, "Nikon", "JAA782DA", "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED"}, +{0x79,0x40,0x3C,0x80,0x2C,0x3C,0x7F,0x06,0x00,0x00,0x00, "Nikon", "JAA783DA", "AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED"}, +{0x7A,0x3C,0x1F,0x37,0x30,0x30,0x7E,0x06,0x01,0x01,0x00, "Nikon", "JAA784DA", "AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED"}, +{0x7B,0x48,0x80,0x98,0x30,0x30,0x80,0x0E,0x03,0x00,0x00, "Nikon", "JAA787DA", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED"}, +//7C 81 +{0x7D,0x48,0x2B,0x53,0x24,0x24,0x82,0x06,0x01,0x00,0x00, "Nikon", "JAA788DA", "AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED"}, +//7E 83 +{0x7F,0x40,0x2D,0x5C,0x2C,0x34,0x84,0x06,0x11,0x00,0x00, "Nikon", "JAA790DA", "AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED"}, +{0x80,0x48,0x1A,0x1A,0x24,0x24,0x85,0x06,0x00,0x00,0x00, "Nikon", "JAA629DA", "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED"}, +{0x81,0x54,0x80,0x80,0x18,0x18,0x86,0x0E,0x03,0x00,0x00, "Nikon", "JAA336DA", "AF-S VR Nikkor 200mm f/2G IF-ED"}, +{0x82,0x48,0x8E,0x8E,0x24,0x24,0x87,0x0E,0x13,0x00,0x00, "Nikon", "JAA337DA", "AF-S VR Nikkor 300mm f/2.8G IF-ED"}, +{0x83,0x00,0xB0,0xB0,0x5A,0x5A,0x88,0x04,0x00,0x00,0x00, "Nikon", "", "FSA-L2, EDG 65, 800mm F13 G"}, +//84 +//85 +//86 +//87 +//88 +{0x89,0x3C,0x53,0x80,0x30,0x3C,0x8B,0x06,0x01,0x00,0x00, "Nikon", "JAA793DA", "AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED"}, +{0x8A,0x54,0x6A,0x6A,0x24,0x24,0x8C,0x0E,0x53,0x00,0x00, "Nikon", "JAA630DA", "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED"}, +{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0x8D,0x0E,0x01,0x00,0x00, "Nikon", "JAA794DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"}, +//{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0xFD,0x0E,0x01,0x01,0x00, "Nikon", "JAA794DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"}, // Fix bug #1026. +{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0xFD,0x0E,0x01,0x02,0x00, "Nikon", "JAA813DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED II"}, +{0x8C,0x40,0x2D,0x53,0x2C,0x3C,0x8E,0x06,0x01,0x00,0x00, "Nikon", "JAA792DA", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED"}, +{0x8D,0x44,0x5C,0x8E,0x34,0x3C,0x8F,0x0E,0x31,0x00,0x00, "Nikon", "JAA795DA", "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED"}, +//8E 90 +{0x8F,0x40,0x2D,0x72,0x2C,0x3C,0x91,0x06,0x01,0x00,0x00, "Nikon", "JAA796DA", "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED"}, +{0x90,0x3B,0x53,0x80,0x30,0x3C,0x92,0x0E,0x01,0x00,0x00, "Nikon", "JAA798DA", "AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED"}, +//91 93 +{0x92,0x48,0x24,0x37,0x24,0x24,0x94,0x06,0x01,0x00,0x00, "Nikon", "JAA801DA", "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"}, +{0x93,0x48,0x37,0x5C,0x24,0x24,0x95,0x06,0x01,0x00,0x00, "Nikon", "JAA802DA", "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"}, +{0x94,0x40,0x2D,0x53,0x2C,0x3C,0x96,0x06,0x01,0x00,0x00, "Nikon", "JAA797DA", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II"}, +{0x95,0x4C,0x37,0x37,0x2C,0x2C,0x97,0x02,0x00,0x00,0x00, "Nikon", "JAA631DA", "PC-E Nikkor 24mm f/3.5D ED"}, +{0x95,0x00,0x37,0x37,0x2C,0x2C,0x97,0x06,0x00,0x00,0x00, "Nikon", "JAA631DA", "PC-E Nikkor 24mm f/3.5D ED"}, +{0x96,0x48,0x98,0x98,0x24,0x24,0x98,0x0E,0x13,0x00,0x00, "Nikon", "JAA528DA", "AF-S VR Nikkor 400mm f/2.8G ED"}, +{0x97,0x3C,0xA0,0xA0,0x30,0x30,0x99,0x0E,0x13,0x00,0x00, "Nikon", "JAA529DA", "AF-S VR Nikkor 500mm f/4G ED"}, +{0x98,0x3C,0xA6,0xA6,0x30,0x30,0x9A,0x0E,0x13,0x00,0x00, "Nikon", "JAA530DA", "AF-S VR Nikkor 600mm f/4G ED"}, +{0x99,0x40,0x29,0x62,0x2C,0x3C,0x9B,0x0E,0x01,0x00,0x00, "Nikon", "JAA800DA", "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED"}, +{0x9A,0x40,0x2D,0x53,0x2C,0x3C,0x9C,0x0E,0x01,0x00,0x00, "Nikon", "JAA803DA", "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G"}, +{0x9B,0x54,0x4C,0x4C,0x24,0x24,0x9D,0x02,0x00,0x00,0x00, "Nikon", "JAA633DA", "PC-E Micro Nikkor 45mm f/2.8D ED"}, +{0x9B,0x00,0x4C,0x4C,0x24,0x24,0x9D,0x06,0x00,0x00,0x00, "Nikon", "JAA633DA", "PC-E Micro Nikkor 45mm f/2.8D ED"}, +{0x9C,0x54,0x56,0x56,0x24,0x24,0x9E,0x06,0x41,0x00,0x00, "Nikon", "JAA632DA", "AF-S Micro Nikkor 60mm f/2.8G ED"}, +{0x9D,0x54,0x62,0x62,0x24,0x24,0x9F,0x02,0x40,0x00,0x00, "Nikon", "JAA634DA", "PC-E Micro Nikkor 85mm f/2.8D"}, +{0x9D,0x00,0x62,0x62,0x24,0x24,0x9F,0x06,0x40,0x00,0x00, "Nikon", "JAA634DA", "PC-E Micro Nikkor 85mm f/2.8D"}, +{0x9E,0x40,0x2D,0x6A,0x2C,0x3C,0xA0,0x0E,0x01,0x00,0x00, "Nikon", "JAA805DA", "AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED"}, +{0x9F,0x58,0x44,0x44,0x14,0x14,0xA1,0x06,0x01,0x00,0x00, "Nikon", "JAA132DA", "AF-S DX Nikkor 35mm f/1.8G"}, +{0xA0,0x54,0x50,0x50,0x0C,0x0C,0xA2,0x06,0x01,0x00,0x00, "Nikon", "JAA014DA", "AF-S Nikkor 50mm f/1.4G"}, +{0xA1,0x40,0x18,0x37,0x2C,0x34,0xA3,0x06,0x01,0x00,0x00, "Nikon", "JAA804DA", "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED"}, +{0xA2,0x48,0x5C,0x80,0x24,0x24,0xA4,0x0E,0x13,0x00,0x00, "Nikon", "JAA807DA", "AF-S Nikkor 70-200mm f/2.8G ED VR II"}, +{0xA3,0x3C,0x29,0x44,0x30,0x30,0xA5,0x0E,0x01,0x00,0x00, "Nikon", "JAA806DA", "AF-S Nikkor 16-35mm f/4G ED VR"}, +{0xA4,0x54,0x37,0x37,0x0C,0x0C,0xA6,0x06,0x01,0x00,0x00, "Nikon", "JAA131DA", "AF-S Nikkor 24mm f/1.4G ED"}, +{0xA5,0x40,0x3C,0x8E,0x2C,0x3C,0xA7,0x0E,0x01,0x00,0x00, "Nikon", "JAA808DA", "AF-S Nikkor 28-300mm f/3.5-5.6G ED VR"}, +{0xA6,0x48,0x8E,0x8E,0x24,0x24,0xA8,0x0E,0x13,0x00,0x00, "Nikon", "JAA339DA", "AF-S Nikkor 300mm f/2.8G IF-ED VR II"}, +{0xA7,0x4B,0x62,0x62,0x2C,0x2C,0xA9,0x0E,0x41,0x00,0x00, "Nikon", "JAA637DA", "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"}, +{0xA8,0x48,0x80,0x98,0x30,0x30,0xAA,0x0E,0x03,0x00,0x00, "Nikon", "JAA809DA", "AF-S Zoom-Nikkor 200-400mm f/4G IF-ED VR II"}, +{0xA9,0x54,0x80,0x80,0x18,0x18,0xAB,0x0E,0x13,0x00,0x00, "Nikon", "JAA340DA", "AF-S Nikkor 200mm f/2G ED VR II"}, +{0xAA,0x3C,0x37,0x6E,0x30,0x30,0xAC,0x0E,0x01,0x00,0x00, "Nikon", "JAA811DA", "AF-S Nikkor 24-120mm f/4G ED VR"}, +//AB AD -- no lens -- +{0xAC,0x38,0x53,0x8E,0x34,0x3C,0xAE,0x0E,0x01,0x00,0x00, "Nikon", "JAA814DA", "AF-S DX Nikkor 55-300mm f/4.5-5.6G ED VR"}, +{0xAD,0x3C,0x2D,0x8E,0x2C,0x3C,0xAF,0x0E,0x01,0x00,0x00, "Nikon", "JAA812DA", "AF-S DX Nikkor 18-300mm f/3.5-5.6G ED VR"}, +{0xAE,0x54,0x62,0x62,0x0C,0x0C,0xB0,0x06,0x01,0x00,0x00, "Nikon", "JAA338DA", "AF-S Nikkor 85mm f/1.4G"}, +{0xAF,0x54,0x44,0x44,0x0C,0x0C,0xB1,0x06,0x01,0x00,0x00, "Nikon", "JAA134DA", "AF-S Nikkor 35mm f/1.4G"}, +{0xB0,0x4C,0x50,0x50,0x14,0x14,0xB2,0x06,0x01,0x00,0x00, "Nikon", "JAA015DA", "AF-S Nikkor 50mm f/1.8G"}, +{0xB1,0x48,0x48,0x48,0x24,0x24,0xB3,0x06,0x01,0x00,0x00, "Nikon", "JAA638DA", "AF-S DX Micro Nikkor 40mm f/2.8G"}, +{0xB2,0x48,0x5C,0x80,0x30,0x30,0xB4,0x0E,0x01,0x00,0x00, "Nikon", "JAA815DA", "AF-S Nikkor 70-200mm f/4G ED VR"}, +{0xB3,0x4C,0x62,0x62,0x14,0x14,0xB5,0x06,0x01,0x00,0x00, "Nikon", "JAA341DA", "AF-S Nikkor 85mm f/1.8G"}, +{0xB4,0x40,0x37,0x62,0x2C,0x34,0xB6,0x0E,0x01,0x00,0x00, "Nikon", "JAA816DA", "AF-S Nikkor 24-85mm f/3.5-4.5G ED VR"}, +{0xB5,0x4C,0x3C,0x3C,0x14,0x14,0xB7,0x06,0x01,0x00,0x00, "Nikon", "JAA135DA", "AF-S Nikkor 28mm f/1.8G"}, +//B6 B8 +{0xB7,0x44,0x60,0x98,0x34,0x3C,0xB9,0x0E,0x01,0x00,0x00, "Nikon", "JAA817DA", "AF-S Nikkor 80-400mm f/4.5-5.6G ED VR"}, +{0xB8,0x40,0x2D,0x44,0x2C,0x34,0xBA,0x06,0x01,0x00,0x00, "Nikon", "JAA818DA", "AF-S Nikkor 18-35mm f/3.5-4.5G ED"}, +{0xA0,0x40,0x2D,0x74,0x2C,0x3C,0xBB,0x0E,0x01,0x00,0x01, "Nikon", "JAA819DA", "AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR"}, +{0xA1,0x54,0x55,0x55,0x0C,0x0C,0xBC,0x06,0x01,0x00,0x01, "Nikon", "JAA136DA", "AF-S Nikkor 58mm f/1.4G"}, +{0xA2,0x40,0x2D,0x53,0x2C,0x3C,0xBD,0x0E,0x01,0x00,0x01, "Nikon", "JAA820DA", "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"}, +{0xA4,0x40,0x2D,0x8E,0x2C,0x40,0xBF,0x0E,0x01,0x00,0x01, "Nikon", "JAA821DA", "AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR"}, +{0xA5,0x4C,0x44,0x44,0x14,0x14,0xC0,0x06,0x01,0x00,0x01, "Nikon", "JAA137DA", "AF-S Nikkor 35mm f/1.8G ED"}, +//A6 C1 +{0xA7,0x3C,0x53,0x80,0x30,0x3C,0xC2,0x0E,0x01,0x00,0x01, "Nikon", "JAA823DA", "AF-S DX Nikkor 55-200mm f/4-5.6G ED VR II"}, +{0xA8,0x48,0x8E,0x8E,0x30,0x30,0xC3,0x4E,0x01,0x00,0x01, "Nikon", "JAA342DA", "AF-S Nikkor 300mm f/4E PF ED VR"}, +{0xA8,0x48,0x8E,0x8E,0x30,0x30,0xC3,0x0E,0x01,0x00,0x01, "Nikon", "JAA342DA", "AF-S Nikkor 300mm f/4E PF ED VR"}, +{0xA9,0x4C,0x31,0x31,0x14,0x14,0xC4,0x06,0x01,0x00,0x01, "Nikon", "JAA138DA", "AF-S Nikkor 20mm f/1.8G ED"}, +// +// +{0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA90701", "TC-16A"}, +{0x01,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA90701", "TC-16A"}, +// +//------------------------------------------------------------------------------ +// Sigma lenses by focal length, first fixed then zoom lenses +//------------------------------------------------------------------------------ +// +{0xFE,0x47,0x00,0x00,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "486556", "4.5mm F2.8 EX DC HSM Circular Fisheye"}, +{0x26,0x48,0x11,0x11,0x30,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "483", "8mm F4 EX Circular Fisheye"}, +{0x79,0x40,0x11,0x11,0x2C,0x2C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "485597", "8mm F3.5 EX Circular Fisheye"}, +{0xDC,0x48,0x19,0x19,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "477554", "10mm F2.8 EX DC HSM Fisheye"}, +{0x02,0x3F,0x24,0x24,0x2C,0x2C,0x02,0x00,0x00,0x00,0x00, "Sigma", "468", "14mm F3.5"}, +{0x48,0x48,0x24,0x24,0x24,0x24,0x4B,0x02,0x01,0x00,0x00, "Sigma", "", "14mm F2.8 EX Aspherical HSM"}, +{0x26,0x48,0x27,0x27,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "476441", "15mm F2.8 EX Diagonal Fisheye"}, +{0xEA,0x48,0x27,0x27,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "15mm F2.8 EX Diagonal Fisheye"}, +//M "Sigma" "410" "18mm F3.5"; +{0x26,0x58,0x31,0x31,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "411442", "20mm F1.8 EX DG Aspherical RF"}, +{0x26,0x58,0x37,0x37,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "432447", "24mm F1.8 EX DG Aspherical Macro"}, +{0xE1,0x58,0x37,0x37,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "432447", "24mm F1.8 EX DG Aspherical Macro"}, +{0x02,0x46,0x37,0x37,0x25,0x25,0x02,0x00,0x00,0x00,0x00, "Sigma", "438", "24mm F2.8 Super Wide II Macro"}, +{0x26,0x58,0x3C,0x3C,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "440442", "28mm F1.8 EX DG Aspherical Macro"}, +{0x48,0x54,0x3E,0x3E,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "477554", "30mm F1.4 EX DC HSM"}, +{0xF8,0x54,0x3E,0x3E,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "477554", "30mm F1.4 EX DC HSM"}, +{0x91,0x54,0x44,0x44,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "35mm F1.4 DG HSM"}, +{0xDE,0x54,0x50,0x50,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "310554", "50mm F1.4 EX DG HSM"}, +{0x88,0x54,0x50,0x50,0x0C,0x0C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "Art 50mm F1.4 DG HSM"}, +{0x02,0x48,0x50,0x50,0x24,0x24,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "Macro 50mm F2.8"}, +{0x32,0x54,0x50,0x50,0x24,0x24,0x35,0x02,0x00,0x00,0x00, "Sigma", "346447", "Macro 50mm F2.8 EX DG"}, +{0xE3,0x54,0x50,0x50,0x24,0x24,0x35,0x02,0x00,0x00,0x00, "Sigma", "", "Macro 50mm F2.8 EX DG"}, +{0x79,0x48,0x5C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "270599", "Macro 70mm F2.8 EX DG"}, +{0x9B,0x54,0x62,0x62,0x0C,0x0C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "85mm F1.4 EX DG HSM"}, +{0x02,0x48,0x65,0x65,0x24,0x24,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "Macro 90mm F2.8"}, +{0x32,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x00,0x02,0x00, "Sigma", "256", "Macro 105mm F2.8 EX DG"}, +{0xE5,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x40,0x00,0x00, "Sigma", "257446", "Macro 105mm F2.8 EX DG"}, +{0x97,0x48,0x6A,0x6A,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "Macro 105mm F2.8 EX DG OS HSM"}, +{0x48,0x48,0x76,0x76,0x24,0x24,0x4B,0x06,0x43,0x00,0x00, "Sigma", "104559", "APO Macro 150mm F2.8 EX DG HSM"}, +{0xF5,0x48,0x76,0x76,0x24,0x24,0x4B,0x06,0x43,0x00,0x00, "Sigma", "104559", "APO Macro 150mm F2.8 EX DG HSM"}, +{0x99,0x48,0x76,0x76,0x24,0x24,0x4B,0x0E,0x43,0x00,0x00, "Sigma", "", "APO Macro 150mm F2.8 EX DG OS HSM"}, +{0x48,0x4C,0x7C,0x7C,0x2C,0x2C,0x4B,0x02,0x43,0x00,0x00, "Sigma", "", "APO Macro 180mm F3.5 EX DG HSM"}, +{0x48,0x4C,0x7D,0x7D,0x2C,0x2C,0x4B,0x02,0x43,0x00,0x00, "Sigma", "105556", "APO Macro 180mm F3.5 EX DG HSM"}, +//M "Sigma" "" "APO 300mm F2.8"; +{0x48,0x54,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 300mm F2.8 EX DG HSM"}, +{0xFB,0x54,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x13,0x00,0x00, "Sigma", "195557", "APO 300mm F2.8 EX DG HSM"}, +{0x26,0x48,0x8E,0x8E,0x30,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "APO Tele Macro 300mm F4"}, +{0x02,0x2F,0x98,0x98,0x3D,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 400mm F5.6"}, +{0x26,0x3C,0x98,0x98,0x3C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "APO Tele Macro 400mm F5.6"}, +{0x02,0x37,0xA0,0xA0,0x34,0x34,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 500mm F4.5"}, +{0x48,0x44,0xA0,0xA0,0x34,0x34,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 500mm F4.5 EX HSM"}, +{0xF1,0x44,0xA0,0xA0,0x34,0x34,0x4B,0x02,0x03,0x00,0x00, "Sigma", "184551", "APO 500mm F4.5 EX DG HSM"}, +{0x02,0x34,0xA0,0xA0,0x44,0x44,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 500mm F7.2"}, +{0x02,0x3C,0xB0,0xB0,0x3C,0x3C,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 800mm F5.6"}, +{0x48,0x3C,0xB0,0xB0,0x3C,0x3C,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 800mm F5.6 EX HSM"}, +//M "Sigma" "152550" "APO 800mm F5.6 EX DG HSM"; +//M2 B8 B8 49 49 02" "00" "00" "00" "00" "Sigma" "" "APO 1000mm F8.0"; +// +{0x9E,0x38,0x11,0x29,0x34,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "8-16mm F4.5-5.6 DC HSM"}, +{0xA1,0x41,0x19,0x31,0x2C,0x2C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "10-20mm F3.5 EX DC HSM"}, +{0x48,0x3C,0x19,0x31,0x30,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "201555", "10-20mm F4-5.6 EX DC HSM"}, +{0xF9,0x3C,0x19,0x31,0x30,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "201555", "10-20mm F4-5.6 EX DC HSM"}, +{0x48,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "200558", "12-24mm F4.5-5.6 EX DG Aspherical HSM"}, +{0xF0,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "200558", "12-24mm F4.5-5.6 EX DG Aspherical HSM"}, +{0x96,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "12-24mm F4.5-5.6 II DG HSM"}, +{0x26,0x40,0x27,0x3F,0x2C,0x34,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "15-30mm F3.5-4.5 EX DG Aspherical DF"}, +{0x48,0x48,0x2B,0x44,0x24,0x30,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "17-35mm F2.8-4 EX DG Aspherical HSM"}, +{0x26,0x54,0x2B,0x44,0x24,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "17-35mm F2.8-4 EX Aspherical"}, +{0x9D,0x48,0x2B,0x50,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "17-50mm F2.8 EX DC OS HSM"}, +{0x8F,0x48,0x2B,0x50,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "17-50mm F2.8 EX DC OS HSM"}, +{0x7A,0x47,0x2B,0x5C,0x24,0x34,0x4B,0x06,0x00,0x00,0x00, "Sigma", "689599", "17-70mm F2.8-4.5 DC Macro Asp. IF HSM"}, +{0x7A,0x48,0x2B,0x5C,0x24,0x34,0x4B,0x06,0x00,0x00,0x00, "Sigma", "689599", "17-70mm F2.8-4.5 DC Macro Asp. IF HSM"}, +{0x7F,0x48,0x2B,0x5C,0x24,0x34,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "17-70mm F2.8-4.5 DC Macro Asp. IF"}, +{0x8E,0x3C,0x2B,0x5C,0x24,0x30,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "17-70mm F2.8-4 DC MACRO OS HSM Contemporary"}, +{0xA0,0x48,0x2A,0x5C,0x24,0x30,0x4B,0x0E,0x00,0x00,0xFE, "Sigma", "", "17-70mm F2.8-4 DC Macro OS HSM"}, +{0x8B,0x4C,0x2D,0x44,0x14,0x14,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "18-35mm F1.8 DC HSM"}, +{0x26,0x40,0x2D,0x44,0x2B,0x34,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "18-35mm F3.5-4.5 Aspherical"}, +{0x26,0x48,0x2D,0x50,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-50mm F2.8 EX DC"}, +{0x7F,0x48,0x2D,0x50,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-50mm F2.8 EX DC Macro"}, +{0x7A,0x48,0x2D,0x50,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "582593", "18-50mm F2.8 EX DC Macro"}, +{0xF6,0x48,0x2D,0x50,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "582593", "18-50mm F2.8 EX DC Macro"}, +{0xA4,0x47,0x2D,0x50,0x24,0x34,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-50mm F2.8-4.5 DC OS HSM"}, +{0x26,0x40,0x2D,0x50,0x2C,0x3C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-50mm F3.5-5.6 DC"}, +{0x7A,0x40,0x2D,0x50,0x2C,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "551551", "18-50mm F3.5-5.6 DC HSM"}, +{0x26,0x40,0x2D,0x70,0x2B,0x3C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-125mm F3.5-5.6 DC"}, +{0xCD,0x3D,0x2D,0x70,0x2E,0x3C,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "853556", "18-125mm F3.8-5.6 DC OS HSM"}, +{0x26,0x40,0x2D,0x80,0x2C,0x40,0x1C,0x06,0x00,0x00,0x00, "Sigma", "777555", "18-200mm F3.5-6.3 DC"}, +{0xFF,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "18-200mm F3.5-6.3 DC"}, +{0x7A,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "888558", "18-200mm F3.5-6.3 DC OS HSM"}, +{0xED,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "888558", "18-200mm F3.5-6.3 DC OS HSM"}, +{0x90,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x05, "Sigma", "882955", "18-200mm F3.5-6.3 II DC OS HSM"}, +{0xA5,0x40,0x2D,0x88,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-250mm F3.5-6.3 DC OS HSM"}, +{0x92,0x39,0x2D,0x88,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-250mm F3.5-6.3 DC OS Macro HSM"}, +{0x26,0x48,0x31,0x49,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "20-40mm F2.8"}, +{0x02,0x3A,0x37,0x50,0x31,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "24-50mm F4-5.6 UC"}, +{0x26,0x48,0x37,0x56,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "547448", "24-60mm F2.8 EX DG"}, +{0xB6,0x48,0x37,0x56,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "547448", "24-60mm F2.8 EX DG"}, +{0xA6,0x48,0x37,0x5C,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "571559", "24-70mm F2.8 IF EX DG HSM"}, +{0x26,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "24-70mm F2.8 EX DG Macro"}, +{0x67,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "548445", "24-70mm F2.8 EX DG Macro"}, +{0xE9,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "548445", "24-70mm F2.8 EX DG Macro"}, +{0x26,0x40,0x37,0x5C,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "24-70mm F3.5-5.6 Aspherical HF"}, +{0x8A,0x3C,0x37,0x6A,0x30,0x30,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "24-105mm F4 DG OS HSM"}, +{0x26,0x54,0x37,0x73,0x24,0x34,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "24-135mm F2.8-4.5"}, +{0x02,0x46,0x3C,0x5C,0x25,0x25,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "28-70mm F2.8"}, +{0x26,0x54,0x3C,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-70mm F2.8 EX"}, +{0x26,0x48,0x3C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "549442", "28-70mm F2.8 EX DG"}, +{0x79,0x48,0x3C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "28-70mm F2.8 EX DG"}, +{0x26,0x48,0x3C,0x5C,0x24,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "634445", "28-70mm F2.8-4 DG"}, +{0x02,0x3F,0x3C,0x5C,0x2D,0x35,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "28-70mm F3.5-4.5 UC"}, +{0x26,0x40,0x3C,0x60,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-80mm F3.5-5.6 Mini Zoom Macro II Aspherical"}, +{0x26,0x40,0x3C,0x65,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-90mm F3.5-5.6 Macro"}, +{0x26,0x48,0x3C,0x6A,0x24,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-105mm F2.8-4 Aspherical"}, +{0x26,0x3E,0x3C,0x6A,0x2E,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-105mm F3.8-5.6 UC-III Aspherical IF"}, +{0x26,0x40,0x3C,0x80,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro"}, +{0x26,0x40,0x3C,0x80,0x2B,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro"}, +{0x26,0x3D,0x3C,0x80,0x2F,0x3D,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-300mm F3.8-5.6 Aspherical"}, +{0x26,0x41,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "795443", "28-300mm F3.5-6.3 DG Macro"}, +{0xE6,0x41,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-300mm F3.5-6.3 DG Macro"}, +{0x26,0x40,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-300mm F3.5-6.3 Macro"}, +{0x02,0x3B,0x44,0x61,0x30,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "35-80mm F4-5.6"}, +{0x02,0x40,0x44,0x73,0x2B,0x36,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "35-135mm F3.5-4.5 a"}, +{0x7A,0x47,0x50,0x76,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "", "50-150mm F2.8 EX APO DC HSM"}, +{0xFD,0x47,0x50,0x76,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "691554", "50-150mm F2.8 EX APO DC HSM II"}, +{0x98,0x48,0x50,0x76,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "50-150 f/2.8 EX DC APO OS HSM"}, +{0x48,0x3C,0x50,0xA0,0x30,0x40,0x4B,0x02,0x03,0x00,0x00, "Sigma", "736552", "APO 50-500mm F4-6.3 EX HSM"}, +{0x9F,0x37,0x50,0xA0,0x34,0x40,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "50-500mm F4.5-6.3 APO DG OS HSM"}, +//M "Sigma" "686550" "50-200mm F4-5.6 DC OS HSM"; +{0x26,0x3C,0x54,0x80,0x30,0x3C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "55-200mm F4-5.6 DC"}, +{0x7A,0x3B,0x53,0x80,0x30,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "55-200mm F4-5.6 DC HSM"}, +{0x48,0x54,0x5C,0x80,0x24,0x24,0x4B,0x02,0x00,0x00,0x00, "Sigma", "", "70-200mm F2.8 EX APO IF HSM"}, +{0x7A,0x48,0x5C,0x80,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "", "70-200mm F2.8 EX APO DG Macro HSM II"}, +{0xEE,0x48,0x5C,0x80,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "579555", "70-200mm F2.8 EX APO DG Macro HSM II"}, +{0x9C,0x48,0x5C,0x80,0x24,0x24,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "70-200mm F2.8 EX DG OS HSM"}, +{0x02,0x46,0x5C,0x82,0x25,0x25,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "70-210mm F2.8 APO"}, +{0x02,0x40,0x5C,0x82,0x2C,0x35,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 70-210mm F3.5-4.5"}, +{0x26,0x3C,0x5C,0x82,0x30,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "70-210mm F4-5.6 UC-II"}, +{0x26,0x3C,0x5C,0x8E,0x30,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "70-300mm F4-5.6 DG Macro"}, +{0x56,0x3C,0x5C,0x8E,0x30,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "70-300mm F4-5.6 APO Macro Super II"}, +{0xE0,0x3C,0x5C,0x8E,0x30,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "508555", "APO 70-300mm F4-5.6 DG Macro"}, +{0xA3,0x3C,0x5C,0x8E,0x30,0x3C,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "572556", "70-300mm F4-5.6 DG OS"}, +{0x02,0x37,0x5E,0x8E,0x35,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "75-300mm F4.5-5.6 APO"}, +{0x02,0x3A,0x5E,0x8E,0x32,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "75-300mm F4.0-5.6"}, +{0x77,0x44,0x61,0x98,0x34,0x3C,0x7B,0x0E,0x03,0x00,0x00, "Sigma", "", "80-400mm f4.5-5.6 EX OS"}, +{0x48,0x48,0x68,0x8E,0x30,0x30,0x4B,0x02,0x03,0x00,0x00, "Sigma", "134556", "APO 100-300mm F4 EX IF HSM"}, +{0xF3,0x48,0x68,0x8E,0x30,0x30,0x4B,0x02,0x13,0x00,0x00, "Sigma", "134556", "APO 100-300mm F4 EX IF HSM"}, +{0x48,0x54,0x6F,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 120-300mm F2.8 EX DG HSM"}, +{0x7A,0x54,0x6E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "135553", "APO 120-300mm F2.8 EX DG HSM"}, +{0xFA,0x54,0x6E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "135553", "APO 120-300mm F2.8 EX DG HSM"}, +{0xCF,0x38,0x6E,0x98,0x34,0x3C,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "728557", "APO 120-400mm F4.5-5.6 DG OS HSM"}, +{0x26,0x44,0x73,0x98,0x34,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "135-400mm F4.5-5.6 APO Aspherical"}, +{0xCE,0x34,0x76,0xA0,0x38,0x40,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "737559", "APO 150-500mm F5-6.3 DG OS HSM"}, +{0x26,0x40,0x7B,0xA0,0x34,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "APO 170-500mm F5-6.3 Aspherical RF"}, +{0xA7,0x49,0x80,0xA0,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "", "APO 200-500mm F2.8 EX DG"}, +{0x48,0x3C,0x8E,0xB0,0x3C,0x3C,0x4B,0x02,0x03,0x00,0x00, "Sigma", "595555", "APO 300-800mm F5.6 EX DG HSM"}, +// +{0x00,0x00,0x00,0x00,0x00,0x00,0xF1,0x0C,0x00,0x00,0x00, "Sigma", "", "APO Tele Converter 1.4x EX DG"}, +{0x00,0x00,0x00,0x00,0x00,0x00,0xF2,0x18,0x00,0x00,0x00, "Sigma", "", "APO Tele Converter 2x EX DG"}, +// +//------------------------------------------------------------------------------ +// Tamron lenses by focal length, first fixed then zoom lenses +//------------------------------------------------------------------------------ +// +{0x00,0x47,0x25,0x25,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tamron", "69E", "SP AF 14mm F/2.8 Aspherical (IF)"}, +{0xF4,0x54,0x56,0x56,0x18,0x18,0x84,0x06,0x01,0x00,0x00, "Tamron", "G005", "SP AF 60mm F/2 Di II LD (IF) Macro 1:1"}, +{0x1E,0x5D,0x64,0x64,0x20,0x20,0x13,0x00,0x40,0x00,0x00, "Tamron", "52E", "SP AF 90mm F/2.5"}, +{0x20,0x5A,0x64,0x64,0x20,0x20,0x14,0x00,0x40,0x00,0x00, "Tamron", "152E", "SP AF 90mm F/2.5 Macro"}, +{0x22,0x53,0x64,0x64,0x24,0x24,0xE0,0x02,0x40,0x00,0x00, "Tamron", "72E", "SP AF 90mm F/2.8 Macro 1:1"}, +{0x32,0x53,0x64,0x64,0x24,0x24,0x35,0x02,0x40,0x01,0x00, "Tamron", "172E", "SP AF 90mm F/2.8 Macro 1:1"}, +{0x32,0x53,0x64,0x64,0x24,0x24,0x35,0x02,0x40,0x02,0x00, "Tamron", "272E", "SP AF 90mm F/2.8 Di Macro 1:1"}, +{0xF8,0x55,0x64,0x64,0x24,0x24,0x84,0x06,0x41,0x00,0x00, "Tamron", "272NII", "SP AF 90mm F/2.8 Di Macro 1:1"}, +{0xF8,0x54,0x64,0x64,0x24,0x24,0xDF,0x06,0x41,0x00,0x00, "Tamron", "272NII", "SP AF 90mm F/2.8 Di Macro 1:1"}, +{0xFE,0x54,0x64,0x64,0x24,0x24,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "F004", "SP 90mm F/2.8 Di VC USD MACRO 1:1"}, +{0x00,0x4C,0x7C,0x7C,0x2C,0x2C,0x00,0x02,0x00,0x00,0x00, "Tamron", "B01", "SP AF 180mm F/3.5 Di Model"}, +{0x21,0x56,0x8E,0x8E,0x24,0x24,0x14,0x00,0x00,0x00,0x00, "Tamron", "60E", "SP AF 300mm F/2.8 LD-IF"}, +{0x27,0x54,0x8E,0x8E,0x24,0x24,0x1D,0x02,0x00,0x00,0x00, "Tamron", "360E", "SP AF 300mm F/2.8 LD-IF"}, +// +{0xF6,0x3F,0x18,0x37,0x2C,0x34,0x84,0x06,0x01,0x00,0x00, "Tamron", "B001", "SP AF 10-24mm F/3.5-4.5 Di II LD Aspherical (IF)"}, +{0xF6,0x3F,0x18,0x37,0x2C,0x34,0xDF,0x06,0x01,0x00,0x00, "Tamron", "B001", "SP AF 10-24mm F/3.5-4.5 Di II LD Aspherical (IF)"}, +{0x00,0x36,0x1C,0x2D,0x34,0x3C,0x00,0x06,0x00,0x00,0x00, "Tamron", "A13", "SP AF 11-18mm F/4.5-5.6 Di II LD Aspherical (IF)"}, +{0xE9,0x48,0x27,0x3E,0x24,0x24,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A012", "SP 15-30mm F/2.8 Di VC USD"}, +{0xEA,0x40,0x29,0x8E,0x2C,0x40,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "B016", "AF 16-300mm F/3.5-6.3 Di II VC PZD"}, +{0x07,0x46,0x2B,0x44,0x24,0x30,0x03,0x02,0x00,0x00,0x00, "Tamron", "A05", "SP AF 17-35mm F/2.8-4 Di LD Aspherical (IF)"}, +{0x00,0x53,0x2B,0x50,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tamron", "A16", "SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF)"}, +{0x00,0x54,0x2B,0x50,0x24,0x24,0x00,0x06,0x01,0x00,0x00, "Tamron", "A16NII", "SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF)"}, +{0xFB,0x54,0x2B,0x50,0x24,0x24,0x84,0x06,0x01,0x00,0x00, "Tamron", "A16NII", "SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF)"}, +{0xF3,0x54,0x2B,0x50,0x24,0x24,0x84,0x0E,0x01,0x00,0x00, "Tamron", "B005", "SP AF 17-50mm F/2.8 XR Di II VC LD Aspherical (IF)"}, +{0x00,0x3F,0x2D,0x80,0x2B,0x40,0x00,0x06,0x00,0x00,0x00, "Tamron", "A14", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF)"}, +{0x00,0x3F,0x2D,0x80,0x2C,0x40,0x00,0x06,0x00,0x00,0x00, "Tamron", "A14", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro"}, +{0x00,0x40,0x2D,0x80,0x2C,0x40,0x00,0x06,0x01,0x00,0x00, "Tamron", "A14NII", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro"}, +{0xFC,0x40,0x2D,0x80,0x2C,0x40,0xDF,0x06,0x01,0x00,0x00, "Tamron", "A14NII", "AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro"}, +{0x00,0x40,0x2D,0x88,0x2C,0x40,0x62,0x06,0x00,0x00,0x00, "Tamron", "A18", "AF 18-250mm F/3.5-6.3 Di II LD Aspherical (IF) Macro"}, +{0x00,0x40,0x2D,0x88,0x2C,0x40,0x00,0x06,0x01,0x00,0x00, "Tamron", "A18NII", "AF 18-250mm F/3.5-6.3 Di II LD Aspherical (IF) Macro "}, +{0xF5,0x40,0x2C,0x8A,0x2C,0x40,0x40,0x0E,0x01,0x00,0x00, "Tamron", "B003", "AF 18-270mm F/3.5-6.3 Di II VC LD Aspherical (IF) Macro"}, +{0xF0,0x3F,0x2D,0x8A,0x2C,0x40,0xDF,0x0E,0x01,0x00,0x00, "Tamron", "B008", "AF 18-270mm F/3.5-6.3 Di II VC PZD"}, +{0x07,0x40,0x2F,0x44,0x2C,0x34,0x03,0x02,0x00,0x00,0x00, "Tamron", "A10", "AF 19-35mm F/3.5-4.5"}, +{0x07,0x40,0x30,0x45,0x2D,0x35,0x03,0x02,0x00,0x00,0x00, "Tamron", "A10", "AF 19-35mm F/3.5-4.5"}, +{0x00,0x49,0x30,0x48,0x22,0x2B,0x00,0x02,0x00,0x00,0x00, "Tamron", "166D", "SP AF 20-40mm F/2.7-3.5"}, +{0x0E,0x4A,0x31,0x48,0x23,0x2D,0x0E,0x02,0x00,0x00,0x00, "Tamron", "166D", "SP AF 20-40mm F/2.7-3.5"}, +//M "Tamron" "266D" "SP AF 20-40mm F/2.7-3.5 Aspherical-IF"; +{0xFE,0x48,0x37,0x5C,0x24,0x24,0xDF,0x0E,0x01,0x00,0x00, "Tamron", "A007", "SP 24-70mm F/2.8 Di VC USD"}, +//M "Tamron" "73D" "AF 24-70mm F/3.3-5.6 Aspherical"; +{0x45,0x41,0x37,0x72,0x2C,0x3C,0x48,0x02,0x00,0x00,0x00, "Tamron", "190D", "SP AF 24-135mm F/3.5-5.6 AD Aspherical (IF) Macro"}, +//M "Tamron" "159D" "AF 28-70mm F/3.5-4.5"; +//M "Tamron" "259D" "AF 28-70mm F/3.5-4.5"; +{0x33,0x54,0x3C,0x5E,0x24,0x24,0x62,0x02,0x00,0x00,0x00, "Tamron", "A09", "SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro"}, +{0xFA,0x54,0x3C,0x5E,0x24,0x24,0x84,0x06,0x01,0x00,0x00, "Tamron", "A09NII", "SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro"}, +{0xFA,0x54,0x3C,0x5E,0x24,0x24,0xDF,0x06,0x01,0x00,0x00, "Tamron", "A09NII", "SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro"}, +{0x10,0x3D,0x3C,0x60,0x2C,0x3C,0xD2,0x02,0x00,0x00,0x00, "Tamron", "177D", "AF 28-80mm F/3.5-5.6 Aspherical"}, +{0x45,0x3D,0x3C,0x60,0x2C,0x3C,0x48,0x02,0x00,0x00,0x00, "Tamron", "177D", "AF 28-80mm F/3.5-5.6 Aspherical"}, +{0x00,0x48,0x3C,0x6A,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tamron", "176D", "SP AF 28-105mm F/2.8 LD Aspherical IF"}, +//M "Tamron" "276D" "SP AF 28-105mm F/2.8 LD Aspherical IF"; +//M "Tamron" "179D" "AF 28-105mm F4.0-5.6 IF"; +//M "Tamron" "471D" "AF 28-200mm F/3.8-5.6 Aspherical IF Super2 Silver"; +{0x0B,0x3E,0x3D,0x7F,0x2F,0x3D,0x0E,0x00,0x00,0x00,0x00, "Tamron", "71D", "AF 28-200mm F/3.8-5.6"}, +{0x0B,0x3E,0x3D,0x7F,0x2F,0x3D,0x0E,0x02,0x00,0x00,0x00, "Tamron", "171D", "AF 28-200mm F/3.8-5.6D"}, +{0x12,0x3D,0x3C,0x80,0x2E,0x3C,0xDF,0x02,0x00,0x00,0x00, "Tamron", "271D", "AF 28-200mm F/3.8-5.6 LD Aspherical (IF)"}, +{0x4D,0x41,0x3C,0x8E,0x2B,0x40,0x62,0x02,0x00,0x00,0x00, "Tamron", "A061", "AF 28-300mm F/3.5-6.3 XR Di LD Aspherical (IF)"}, +{0x4D,0x41,0x3C,0x8E,0x2C,0x40,0x62,0x02,0x00,0x00,0x00, "Tamron", "185D", "AF 28-300mm F/3.5-6.3 XR LD Aspherical (IF)"}, +//M "Tamron" "285D" "AF 28-300mm F/3.8-6.3 LD Aspherical IF Silver"; +{0xF9,0x40,0x3C,0x8E,0x2C,0x40,0x40,0x0E,0x01,0x00,0x00, "Tamron", "A20", "AF 28-300mm F/3.5-6.3 XR Di VC LD Aspherical (IF) Macro"}, +//M "Tamron" "63D" "AF 35-90mm F/4-5.6"; +//M "Tamron" "65D" "SP AF 35-105mm F/2.8 Aspherical"; +//M "Tamron" "" "AF 35-135mm F/3.5-4.5"; +{0x00,0x47,0x53,0x80,0x30,0x3C,0x00,0x06,0x00,0x00,0x00, "Tamron", "A15", "AF 55-200mm F/4-5.6 Di II LD"}, +{0xF7,0x53,0x5C,0x80,0x24,0x24,0x84,0x06,0x01,0x00,0x00, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, +{0xFE,0x53,0x5C,0x80,0x24,0x24,0x84,0x06,0x01,0x00,0x00, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, +{0xF7,0x53,0x5C,0x80,0x24,0x24,0x40,0x06,0x01,0x00,0x00, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, +{0xFE,0x54,0x5C,0x80,0x24,0x24,0xDF,0x0E,0x01,0x00,0x00, "Tamron", "A009", "SP AF 70-200mm F/2.8 Di VC USD"}, +//M "Tamron" "67D" "SP AF 70-210mm f/2.8 LD"; +//M "Tamron" "" "AF 70-210mm F/3.5-4.5"; +//M "Tamron" "158D" "AF 70-210mm F/4-5.6"; +//M "Tamron" "258D" "AF 70-210mm F/4-5.6"; +//M "Tamron" "172D" "AF 70-300mm F/4-5.6"; +//M "Tamron" "472D" "AF 70-300mm F/4-5.6 LD"; +{0x69,0x48,0x5C,0x8E,0x30,0x3C,0x6F,0x02,0x00,0x00,0x00, "Tamron", "572D/772D", "AF 70-300mm F/4-5.6 LD Macro 1:2"}, +{0x69,0x47,0x5C,0x8E,0x30,0x3C,0x00,0x02,0x00,0x00,0x00, "Tamron", "A17N", "AF 70-300mm F/4-5.6 Di LD Macro 1:2"}, +{0x00,0x48,0x5C,0x8E,0x30,0x3C,0x00,0x06,0x01,0x00,0x00, "Tamron", "A17NII", "AF 70-300mm F/4-5.6 Di LD Macro 1:2"}, +{0xF1,0x47,0x5C,0x8E,0x30,0x3C,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A005", "SP 70-300mm F4-5.6 Di VC USD"}, +//M "Tamron" "872D" "AF 75-300mm F/4-5.6 LD"; +//M "Tamron" "278D" "AF 80-210mm F/4.5-5.6"; +//M "Tamron" "62D" "AF 90-300mm F/4.5-5.6"; +//M "Tamron" "186D" "AF 100-300mm F/5-6.3"; +{0xEB,0x40,0x76,0xA6,0x38,0x40,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A011", "SP AF 150-600mm F/5-6.3 VC USD"}, +{0x20,0x3C,0x80,0x98,0x3D,0x3D,0x1E,0x02,0x00,0x00,0x00, "Tamron", "75D", "AF 200-400mm F/5.6 LD IF"}, +{0x00,0x3E,0x80,0xA0,0x38,0x3F,0x00,0x02,0x00,0x00,0x00, "Tamron", "A08", "SP AF 200-500mm F/5-6.3 Di LD (IF)"}, +{0x00,0x3F,0x80,0xA0,0x38,0x3F,0x00,0x02,0x00,0x00,0x00, "Tamron", "A08", "SP AF 200-500mm F/5-6.3 Di"}, +// +//------------------------------------------------------------------------------ +// Tokina Lenses by focal length, first fixed then zoom lenses +//------------------------------------------------------------------------------ +// +{0x00,0x40,0x2B,0x2B,0x2C,0x2C,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 17 AF PRO (17mm f/3.5)"}, +{0x00,0x47,0x44,0x44,0x24,0x24,0x00,0x06,0x40,0x00,0x00, "Tokina", "T303503", "AT-X M35 PRO DX (35mm f/2.8 Macro)"}, +{0x00,0x54,0x68,0x68,0x24,0x24,0x00,0x02,0x40,0x00,0x00, "Tokina", "T310003N", "AT-X M100 AF PRO D (100mm f/2.8 Macro)"}, +{0x27,0x48,0x8E,0x8E,0x30,0x30,0x1D,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 304 AF (300mm f/4.0)"}, +{0x00,0x54,0x8E,0x8E,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 300 AF PRO (300mm f/2.8)"}, +{0x12,0x3B,0x98,0x98,0x3D,0x3D,0x09,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 400 AF SD (400mm f/5.6)"}, +// +{0x00,0x40,0x18,0x2B,0x2C,0x34,0x00,0x06,0x00,0x00,0x00, "Tokina", "T4101703", "AT-X 107 AF DX Fisheye (10-17mm f/3.5-4.5)"}, +{0x00,0x48,0x1C,0x29,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "T4111603", "AT-X 116 PRO DX (11-16mm f/2.8)"}, +{0x7A,0x48,0x1C,0x29,0x24,0x24,0x7E,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 116 PRO DX II (11-16mm f/2.8)"}, +{0x00,0x3C,0x1F,0x37,0x30,0x30,0x00,0x06,0x00,0x00,0x00, "Tokina", "T4122403", "AT-X 124 AF PRO DX (12-24mm f/4)"}, +{0x7A,0x3C,0x1F,0x37,0x30,0x30,0x7E,0x06,0x01,0x02,0x00, "Tokina", "T4122423", "AT-X 124 AF PRO DX II (12-24mm f/4)"}, +{0x7A,0x3C,0x1F,0x3C,0x30,0x30,0x7E,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 12-28 PRO DX (12-28mm F/4)"}, +{0x00,0x48,0x29,0x3C,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 16-28 AF PRO FX (16-28mm f/2.8)"}, +{0x00,0x48,0x29,0x50,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 165 PRO DX (16-50mm f/2.8)"}, +{0x00,0x40,0x2A,0x72,0x2C,0x3C,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 16.5-135 DX (16.5-135mm F3.5-5.6)"}, +{0x2F,0x40,0x30,0x44,0x2C,0x34,0x29,0x02,0x00,0x02,0x00, "Tokina", "", "AF 193 (19-35mm f/3.5-4.5)"}, +{0x2F,0x48,0x30,0x44,0x24,0x24,0x29,0x02,0x00,0x02,0x00, "Tokina", "", "AT-X 235 AF PRO (20-35mm f/2.8)"}, +//M "Tokina" "" "AF 235 (AF 20-35mm f/3.5-4.5)" +{0x2F,0x40,0x30,0x44,0x2C,0x34,0x29,0x02,0x00,0x01,0x00, "Tokina", "", "AF 235 II (20-35mm f/3.5-4.5)"}, +//M "Tokina" "" "AT-X 240 AF (AF 24-40mm f/2.8)" +{0x00,0x40,0x37,0x80,0x2C,0x3C,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 242 AF (24-200mm f/3.5-5.6)"}, +{0x25,0x48,0x3C,0x5C,0x24,0x24,0x1B,0x02,0x00,0x02,0x00, "Tokina", "", "AT-X 270 AF PRO II (28-70mm f/2.6-2.8)"}, +{0x25,0x48,0x3C,0x5C,0x24,0x24,0x1B,0x02,0x00,0x01,0x00, "Tokina", "", "AT-X 287 AF PRO SV (28-70mm f/2.8)"}, +{0x07,0x48,0x3C,0x5C,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 287 AF (28-70mm f/2.8)"}, +{0x07,0x47,0x3C,0x5C,0x25,0x35,0x03,0x00,0x00,0x00,0x00, "Tokina", "", "AF 287 SD (28-70mm f/2.8-4.5)"}, +{0x07,0x40,0x3C,0x5C,0x2C,0x35,0x03,0x00,0x00,0x00,0x00, "Tokina", "", "AF 270 II (28-70mm f/3.5-4.5)"}, +{0x00,0x48,0x3C,0x60,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 280 AF PRO (28-80mm f/2.8)"}, +//M "Tokina" "" "AF 280 II EMZ (AF 28-80mm f/3.5-5.6)" +//M "Tokina" "" "AF 205 (AF 28-105mm f/3.5-4.5)" +//M "Tokina" "" "AF 282 (AF 28-200mm 3.5-5.6)" +//M "Tokina" "" "AF 282 EMZ II (AF 28-210mm f/4.2-6.5)" +//M "Tokina" "" "AF 370 (AF 35-70mm f/3.5-4.6)" +//M "Tokina" "" "AF 370 II (AF 35-70mm f/3.5-4.6)" +{0x25,0x44,0x44,0x8E,0x34,0x42,0x1B,0x02,0x00,0x00,0x00, "Tokina", "", "AF 353 (35-300mm f/4.5-6.7)"}, +{0x00,0x48,0x50,0x72,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 535 PRO DX (50-135mm f/2.8)"}, +//M "Tokina" "" "AF 745 (AF 70-210mm f/4.5)" +//M "Tokina" "" "AF 210 (AF 70-210mm f/4.0-5.6)" +//M "Tokina" "" "AF 210 II SD (AF 70-210mm f/4.0-5.6)" +{0x12,0x44,0x5E,0x8E,0x34,0x3C,0x09,0x00,0x00,0x00,0x00, "Tokina", "", "AF 730 (75-300mm F4.5-5.6)"}, +//M "Tokina" "" "AF 730 II (AF 75-300mm f/4.5-5.6)" +{0x14,0x54,0x60,0x80,0x24,0x24,0x0B,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 828 AF (80-200mm f/2.8)"}, +{0x24,0x54,0x60,0x80,0x24,0x24,0x1A,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 828 AF PRO (80-200mm f/2.8)"}, +//M "Tokina" "" "AT-X 840 AF (AF 80-400mm f/4.5-5.6)" +{0x24,0x44,0x60,0x98,0x34,0x3C,0x1A,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 840 AF-II (80-400mm f/4.5-5.6)"}, +{0x00,0x44,0x60,0x98,0x34,0x3C,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 840 D (80-400mm f/4.5-5.6)"}, +{0x14,0x48,0x68,0x8E,0x30,0x30,0x0B,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 340 AF (100-300mm f/4)"}, +//M "Tokina" "" "AT-X 340 AF-II (AF 100-300mm f/4)" +//M "Tokina" "" "AF 130 EMZ II (AF 100-300mm f/5.6-6.7)" +//M "Tokina" "" "AF 140 EMZ (AF 100-400mm f/4.5-6.3)" +// +{0x00,0x00,0x00,0x00,0x00,0x00,0xF1,0x0C,0x00,0x00,0x00, "Kenko", "", "Teleplus PRO 300 DG 1.4x"}, +{0x00,0x00,0x00,0x00,0x00,0x00,0xF2,0x18,0x00,0x00,0x00, "Kenko", "", "Teleplus PRO 300 DG 2.0x"}, +// +//------------------------------------------------------------------------------ +// Lenses from various other brands +//------------------------------------------------------------------------------ +// +{0x06,0x3F,0x68,0x68,0x2C,0x2C,0x06,0x00,0x00,0x00,0x00, "Cosina", "", "AF 100mm F3.5 Macro"}, +{0x07,0x36,0x3D,0x5F,0x2C,0x3C,0x03,0x00,0x00,0x00,0x00, "Cosina", "", "AF Zoom 28-80mm F3.5-5.6 MC Macro"}, +{0x07,0x46,0x3D,0x6A,0x25,0x2F,0x03,0x00,0x00,0x00,0x00, "Cosina", "", "AF Zoom 28-105mm F2.8-3.8 MC"}, +//M "Cosina" "" "AF Zoom 28-210mm F3.5-5.6"; +//M "Cosina" "" "AF Zoom 28-210mm F4.2-6.5 Aspherical IF"; +//M "Cosina" "" "AF Zoom 28-300mm F4.0-6.3"; +//M "Cosina" "" "AF Zoom 70-210mm F2.8-4.0"; +{0x12,0x36,0x5C,0x81,0x35,0x3D,0x09,0x00,0x00,0x00,0x00, "Cosina", "", "AF Zoom 70-210mm F4.5-5.6 MC Macro"}, +{0x12,0x39,0x5C,0x8E,0x34,0x3D,0x08,0x02,0x00,0x00,0x00, "Cosina", "", "AF Zoom 70-300mm F4.5-5.6 MC Macro"}, +{0x12,0x3B,0x68,0x8D,0x3D,0x43,0x09,0x02,0x00,0x00,0x00, "Cosina", "", "AF Zoom 100-300mm F5.6-6.7 MC Macro"}, +//M "Cosina" "" "AF Zoom 100-400mm F5.6-6.7 MC"; +// +{0x12,0x38,0x69,0x97,0x35,0x42,0x09,0x02,0x00,0x00,0x00, "Promaster", "", "Spectrum 7 100-400mm 1:4.5-6.7"}, +// +{0x00,0x40,0x31,0x31,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "BA295AN", "Color Skopar 20mm F3.5 SLII Aspherical"}, +{0x00,0x54,0x48,0x48,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "BA229DN", "Ultron 40mm F2 SLII Aspherical"}, +{0x00,0x54,0x55,0x55,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "BA239BN", "Nokton 58mm F1.4 SLII"}, +{0x00,0x40,0x64,0x64,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "", "APO-Lanthar 90mm F3.5 SLII Close Focus"}, +// +{0x00,0x40,0x2D,0x2D,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 3,5/18 ZF.2"}, +{0x00,0x48,0x32,0x32,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2,8/21 ZF.2"}, +{0x00,0x54,0x3C,0x3C,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2/28 ZF.2"}, +{0x00,0x54,0x44,0x44,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2/35 ZF.2"}, +{0x00,0x54,0x50,0x50,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Planar T* 1,4/50 ZF.2"}, +{0x00,0x54,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Makro-Planar T* 2/50 ZF.2"}, +{0x00,0x54,0x62,0x62,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Planar T* 1,4/85 ZF.2"}, +{0x00,0x54,0x68,0x68,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Makro-Planar T* 2/100 ZF.2"}, +{0x00,0x54,0x53,0x53,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Otus 1.4/55"}, +// +{0x00,0x54,0x56,0x56,0x30,0x30,0x00,0x00,0x00,0x00,0x00, "Coastal Optical Systems", "", "60mm 1:4 UV-VIS-IR Macro Apo"}, +// +{0x4A,0x40,0x11,0x11,0x2C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "8mm f/3.5 Fish-Eye CS"}, +{0x4A,0x48,0x1E,0x1E,0x24,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "12mm f/2.8 ED AS NCS Fish-eye"}, +{0x4A,0x48,0x24,0x24,0x24,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "AE 14mm f/2.8 ED AS IF UMC"}, +{0x4A,0x54,0x29,0x29,0x18,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "16mm F2.0 ED AS UMC CS"}, +{0x4A,0x60,0x44,0x44,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "35mm f/1.4 AS UMC"}, +{0x4A,0x60,0x62,0x62,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "AE 85mm f/1.4 AS IF UMC"}, +// +{0x02,0x40,0x44,0x5C,0x2C,0x34,0x02,0x00,0x00,0x00,0x00, "Exakta", "", "AF 35-70mm 1:3.5-4.5 MC"}, +{0x07,0x3E,0x30,0x43,0x2D,0x35,0x03,0x00,0x00,0x00,0x00, "Soligor", "", "AF Zoom 19-35mm 1:3.5-4.5 MC"}, +{0x03,0x43,0x5C,0x81,0x35,0x35,0x02,0x00,0x00,0x00,0x00, "Soligor", "", "AF C/D Zoom UMCS 70-210mm 1:4.5"}, +{0x12,0x4A,0x5C,0x81,0x31,0x3D,0x09,0x00,0x00,0x00,0x00, "Soligor", "", "AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS"}, +{0x12,0x36,0x69,0x97,0x35,0x42,0x09,0x00,0x00,0x00,0x00, "Soligor", "", "AF Zoom 100-400mm 1:4.5-6.7 MC"}, +// +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, "Manual Lens", "", "No CPU"}, +{0x00,0x00,0x48,0x48,0x53,0x53,0x00,0x01,0x00,0x00,0x00, "Loreo", "", "40mm F11-22 3D Lens in a Cap 9005"}, +// +//------------------------------------------------------------------------------ +// +// Lenses, that were upgraded with custom CPU +// +{0x00,0x47,0x10,0x10,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA604AC", "Fisheye Nikkor 8mm f/2.8 AiS"}, +{0x00,0x47,0x3C,0x3C,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor 28mm f/2.8 AiS"}, +{0x00,0x54,0x44,0x44,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA115AD", "Nikkor 35mm f/1.4 AiS"}, +{0x00,0x57,0x50,0x50,0x14,0x14,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor 50mm f/1.8 AI"}, +{0x00,0x48,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor H 50mm f/2"}, +{0x00,0x48,0x68,0x68,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA304AA", "Series E 100mm f/2.8"}, +{0x00,0x4C,0x6A,0x6A,0x20,0x20,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA305AA", "Nikkor 105mm f/2.5 AiS"}, +{0x00,0x48,0x80,0x80,0x30,0x30,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA313AA", "Nikkor 200mm f/4 AiS"}, +{0x00,0x40,0x11,0x11,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Samyang", "", "8mm f/3.5 Fish-Eye"}, +{0x00,0x58,0x64,0x64,0x20,0x20,0x00,0x00,0x00,0x00,0x00, "Soligor", "", "C/D Macro MC 90mm f/2.5"}, +// +{0,0,0,0,0,0,0,0,0,0,0, NULL, NULL, NULL} +}; +//------------------------------------------------------------------------------ +#endif +// 8< - - - 8< do not remove this line >8 - - - >8 + + if (metadata == 0) return os << value; + + byte raw[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; + + static const char* tags[] = { + "LensIDNumber", + "LensFStops", + "MinFocalLength", + "MaxFocalLength", + "MaxApertureAtMinFocal", + "MaxApertureAtMaxFocal", + "MCUVersion" + }; + + const std::string pre = std::string("Exif.") + group + std::string("."); + for (unsigned int i = 0; i < 7; ++i) { + ExifKey key(pre + std::string(tags[i])); + ExifData::const_iterator md = metadata->findKey(key); + if (md == metadata->end() || md->typeId() != unsignedByte || md->count() == 0) { + return os << value; + } + raw[i] = static_cast(md->toLong()); + } + + ExifData::const_iterator md = metadata->findKey(ExifKey("Exif.Nikon3.LensType")); + if (md == metadata->end() || md->typeId() != unsignedByte || md->count() == 0) { + return os << value; + } + raw[7] = static_cast(md->toLong()); + + for (int i = 0; fmountlens[i].lensname != NULL; ++i) { + if ( raw[0] == fmountlens[i].lid + // stps varies with focal length for some Sigma zoom lenses. + &&(raw[1] == fmountlens[i].stps || strcmp(fmountlens[i].manuf, "Sigma") == 0) + && raw[2] == fmountlens[i].focs + && raw[3] == fmountlens[i].focl + && raw[4] == fmountlens[i].aps + && raw[5] == fmountlens[i].apl + && raw[6] == fmountlens[i].lfw + && raw[7] == fmountlens[i].ltype) { + // Lens found in database + return os << fmountlens[i].manuf << " " << fmountlens[i].lensname; + } + } + // Lens not found in database + return os << value; +#else + return os << value; +#endif // EXV_HAVE_LENSDATA + } + + std::ostream& Nikon3MakerNote::printFocusDistance(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + double dist = 0.01 * pow(10.0, value.toLong()/40.0); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) << dist << " m"; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printAperture(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + double aperture = pow(2.0, value.toLong()/24.0); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << "F" << aperture; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printFocal(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() != 1 || value.typeId() != unsignedByte) { + return os << "(" << value << ")"; + } + double focal = 5.0 * pow(2.0, value.toLong()/24.0); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << focal << " mm"; + os.copyfmt(oss); + return os; + } + + std::ostream& Nikon3MakerNote::printFStops(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + double fstops = value.toLong()/12.0; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << "F" << fstops; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printExitPupilPosition(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + double epp = 2048.0/value.toLong(); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << epp << " mm"; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printFlashFocalLength(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << value.toLong() << " mm"; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printRepeatingFlashRate(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { + return os << "(" << value << ")"; + } + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) << value.toLong() << " Hz"; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printRepeatingFlashCount(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { + return os << "(" << value << ")"; + } + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) << value.toLong(); + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printTimeZone(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != signedShort) { + os << "(" << value << ")"; + os.flags(f); + return os; + } + std::ostringstream oss; + oss.copyfmt(os); + char sign = value.toLong() < 0 ? '-' : '+'; + long h = long(std::abs( (int) (value.toFloat()/60.0) ))%24; + long min = long(std::abs( (int) (value.toFloat()-h*60) ))%60; + os << std::fixed << "UTC " << sign << std::setw(2) << std::setfill('0') << h << ":" + << std::setw(2) << std::setfill('0') << min; + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& Nikon3MakerNote::printPictureControl(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() != 1 || value.typeId() != unsignedByte) { + return os << "(" << value << ")"; + } + long pcval = value.toLong() - 0x80; + std::ostringstream oss; + oss.copyfmt(os); + switch(pcval) + { + case 0: + os << "Normal"; + break; + case 127: + os << "n/a"; + break; + case -127: + os << "User"; + break; + case -128: + os << "Auto"; + break; + default: + os << pcval; + break; + } + os.copyfmt(oss); + return os; + } + + std::ostream& Nikon3MakerNote::print0x009a(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() != 2 || value.typeId() != unsignedRational) { + return os << value; + } + float f1 = value.toFloat(0); + float f2 = value.toFloat(1); + return os << f1 << " x " << f2 << " um"; + } + + std::ostream& Nikon3MakerNote::print0x009e(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() != 10 || value.typeId() != unsignedShort) { + return os << value; + } + std::string s; + bool trim = true; + for (int i = 9; i >= 0; --i) { + long l = value.toLong(i); + if (i > 0 && l == 0 && trim) continue; + if (l != 0) trim = false; + std::string d = s.empty() ? "" : "; "; + const TagDetails* td = find(nikonRetouchHistory, l); + if (td) { + s = std::string(exvGettext(td->label_)) + d + s; + } + else { + s = std::string(_("Unknown")) + std::string(" (") + toString(l) + std::string(")") + d + s; + } + } + return os << s; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/nikonmn_int.hpp b/vendor/exiv2-0.25/src/nikonmn_int.hpp new file mode 100644 index 0000000..89cf1b9 --- /dev/null +++ b/vendor/exiv2-0.25/src/nikonmn_int.hpp @@ -0,0 +1,284 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file nikonmn_int.hpp + @brief Nikon makernote tags.
References:
+ [1] MakerNote EXIF Tag of the Nikon 990 by Max Lyons
+ [2] Exif file format by TsuruZoh Tachibanaya
+ [3] "EXIFutils Field Reference Guide"
+ [3] Nikon Type 3 Makernote Tags Definition of the PHP JPEG Metadata Toolkit by Evan Hunter
+ [4] ExifTool by Phil Harvey
+ [5] Email communication with Robert Rottmerhusen
+ [6] Email communication with Roger Larsson
+ [7] Decoding raw digital photos in Linux by Dave Coffin
+ + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (gc) + caulier dot gilles at gmail dot com + @author Jens Mueller (jm) + tschensinger at web dot de + @date 17-May-04, ahu: created
+ 25-May-04, ahu: combined all Nikon formats in one component + */ +#ifndef NIKONMN_INT_HPP_ +#define NIKONMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! A MakerNote format used by Nikon cameras, such as the E990 and D1. + class Nikon1MakerNote { + public: + //! Return read-only list of built-in Nikon1 tags + static const TagInfo* tagList(); + + //! @name Print functions for Nikon1 %MakerNote tags + //@{ + //! Print ISO setting + static std::ostream& print0x0002(std::ostream& os, const Value& value, const ExifData*); + //! Print autofocus mode + static std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*); + //! Print manual focus distance + static std::ostream& print0x0085(std::ostream& os, const Value& value, const ExifData*); + //! Print digital zoom setting + static std::ostream& print0x0086(std::ostream& os, const Value& value, const ExifData*); + //! Print AF focus position + static std::ostream& print0x0088(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Tag information + static const TagInfo tagInfo_[]; + + }; // class Nikon1MakerNote + + /*! + @brief A second MakerNote format used by Nikon cameras, including the + E700, E800, E900, E900S, E910, E950 + */ + class Nikon2MakerNote { + public: + //! Return read-only list of built-in Nikon2 tags + static const TagInfo* tagList(); + + //! @name Print functions for Nikon2 %MakerNote tags + //@{ + //! Print digital zoom setting + static std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Tag information + static const TagInfo tagInfo_[]; + + }; // class Nikon2MakerNote + + //! A third MakerNote format used by Nikon cameras, e.g., E5400, SQ, D2H, D70 + class Nikon3MakerNote { + public: + //! Return read-only list of built-in Nikon3 tags + static const TagInfo* tagList(); + //! Return read-only list of built-in Vibration Reduction tags + static const TagInfo* tagListVr(); + //! Return read-only list of built-in Picture Control tags + static const TagInfo* tagListPc(); + //! Return read-only list of built-in World time tags + static const TagInfo* tagListWt(); + //! Return read-only list of built-in ISO info tags + static const TagInfo* tagListIi(); + //! Return read-only list of built-in Auto Focus tags + static const TagInfo* tagListAf(); + //! Return read-only list of built-in Auto Focus 2 tags + static const TagInfo* tagListAf2(); + //! Return read-only list of built-in AF Fine Tune tags + static const TagInfo* tagListAFT(); + //! Return read-only list of built-in File Info tags + static const TagInfo* tagListFi(); + //! Return read-only list of built-in Multi Exposure tags + static const TagInfo* tagListMe(); + //! Return read-only list of built-in Flash Info 1 tags + static const TagInfo* tagListFl1(); + //! Return read-only list of built-in Flash Info 2 tags + static const TagInfo* tagListFl2(); + //! Return read-only list of built-in Flash Info 3 tags + static const TagInfo* tagListFl3(); + //! Return read-only list of built-in Shot Info D80 tags + static const TagInfo* tagListSi1(); + //! Return read-only list of built-in Shot Info D40 tags + static const TagInfo* tagListSi2(); + //! Return read-only list of built-in Shot Info D300 (a) tags + static const TagInfo* tagListSi3(); + //! Return read-only list of built-in Shot Info D300 (b) tags + static const TagInfo* tagListSi4(); + //! Return read-only list of built-in Shot Info tags + static const TagInfo* tagListSi5(); + //! Return read-only list of built-in Color Balance 1 tags + static const TagInfo* tagListCb1(); + //! Return read-only list of built-in Color Balance 2 tags + static const TagInfo* tagListCb2(); + //! Return read-only list of built-in Color Balance 2a tags + static const TagInfo* tagListCb2a(); + //! Return read-only list of built-in Color Balance 2b tags + static const TagInfo* tagListCb2b(); + //! Return read-only list of built-in Color Balance 3 tags + static const TagInfo* tagListCb3(); + //! Return read-only list of built-in Color Balance 4 tags + static const TagInfo* tagListCb4(); + //! Return read-only list of built-in Lens Data 1 tags + static const TagInfo* tagListLd1(); + //! Return read-only list of built-in Lens Data 2 tags + static const TagInfo* tagListLd2(); + //! Return read-only list of built-in Lens Data 3 tags + static const TagInfo* tagListLd3(); + + //! @name Print functions for Nikon3 %MakerNote tags + //@{ + //! Print ISO setting + static std::ostream& print0x0002(std::ostream& os, const Value& value, const ExifData*); + //! Print autofocus mode + static std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*); + //! Print lens type + static std::ostream& print0x0083(std::ostream& os, const Value& value, const ExifData*); + //! Print lens information + static std::ostream& print0x0084(std::ostream& os, const Value& value, const ExifData*); + //! Print manual focus distance + static std::ostream& print0x0085(std::ostream& os, const Value& value, const ExifData*); + //! Print digital zoom setting + static std::ostream& print0x0086(std::ostream& os, const Value& value, const ExifData*); + //! Print AF point + static std::ostream& print0x0088(std::ostream& os, const Value& value, const ExifData*); + //! Print shooting mode + static std::ostream& print0x0089(std::ostream& os, const Value& value, const ExifData* metadata); + //! Print number of lens stops + static std::ostream& print0x008b(std::ostream& os, const Value& value, const ExifData*); + //! Print AF Points In Focus + static std::ostream& printAfPointsInFocus(std::ostream& os, const Value& value, const ExifData* metadata); + //! Print lens name + static std::ostream& printLensId(std::ostream& os, const Value& value, const ExifData* metadata, const std::string& group); + static std::ostream& printLensId1(std::ostream& os, const Value& value, const ExifData* metadata); + static std::ostream& printLensId2(std::ostream& os, const Value& value, const ExifData* metadata); + static std::ostream& printLensId3(std::ostream& os, const Value& value, const ExifData* metadata); + //! Print focus distance + static std::ostream& printFocusDistance(std::ostream& os, const Value& value, const ExifData*); + //! Print lens aperture value + static std::ostream& printAperture(std::ostream& os, const Value& value, const ExifData*); + //! Print lens focal length + static std::ostream& printFocal(std::ostream& os, const Value& value, const ExifData*); + //! Print lens f-stops + static std::ostream& printFStops(std::ostream& os, const Value& value, const ExifData*); + //! Print exit pupil position + static std::ostream& printExitPupilPosition(std::ostream& os, const Value& value, const ExifData*); + //! Print sensor pixel size + static std::ostream& print0x009a(std::ostream& os, const Value& value, const ExifData*); + //! Print retouch history + static std::ostream& print0x009e(std::ostream& os, const Value& value, const ExifData*); + //! Print Exif.NikonIi.ISO(2) + static std::ostream& printIiIso(std::ostream& os, const Value& value, const ExifData*); + //! Print flash focal length + static std::ostream& printFlashFocalLength(std::ostream& os, const Value& value, const ExifData*); + //! Print repeating flash rate + static std::ostream& printRepeatingFlashRate(std::ostream& os, const Value& value, const ExifData*); + //! Print repeating flash count + static std::ostream& printRepeatingFlashCount(std::ostream& os, const Value& value, const ExifData*); + //! Print time zone + static std::ostream& printTimeZone(std::ostream& os, const Value& value, const ExifData*); + //! Print picture control value + static std::ostream& printPictureControl(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Tag information + static const TagInfo tagInfo_[]; + //! Vibration Reduction tag information + static const TagInfo tagInfoVr_[]; + //! Picture Control tag information + static const TagInfo tagInfoPc_[]; + //! World Time tag information + static const TagInfo tagInfoWt_[]; + //! ISO info tag information + static const TagInfo tagInfoIi_[]; + //! Auto Focus tag information + static const TagInfo tagInfoAf_[]; + //! Auto Focus tag 2 information + static const TagInfo tagInfoAf2_[]; + //! AF Fine Tune tag information + static const TagInfo tagInfoAFT_[]; + //! File Info tag information + static const TagInfo tagInfoFi_[]; + //! Multi Exposure tag information + static const TagInfo tagInfoMe_[]; + //! Flash Info 1 tag information + static const TagInfo tagInfoFl1_[]; + //! Flash Info 2 tag information + static const TagInfo tagInfoFl2_[]; + //! Flash Info 3 tag information + static const TagInfo tagInfoFl3_[]; + //! Shot Info D80 tag information + static const TagInfo tagInfoSi1_[]; + //! Shot Info D40 tag information + static const TagInfo tagInfoSi2_[]; + //! Shot Info D300 (a) tag information + static const TagInfo tagInfoSi3_[]; + //! Shot Info D300 (b) tag information + static const TagInfo tagInfoSi4_[]; + //! Shot Info tag information + static const TagInfo tagInfoSi5_[]; + //! Color Balance 1 tag information + static const TagInfo tagInfoCb1_[]; + //! Color Balance 2 tag information + static const TagInfo tagInfoCb2_[]; + //! Color Balance 2a tag information + static const TagInfo tagInfoCb2a_[]; + //! Color Balance 2b tag information + static const TagInfo tagInfoCb2b_[]; + //! Color Balance 3 tag information + static const TagInfo tagInfoCb3_[]; + //! Color Balance 4 tag information + static const TagInfo tagInfoCb4_[]; + //! Lens Data 1 tag information + static const TagInfo tagInfoLd1_[]; + //! Lens Data 2 tag information + static const TagInfo tagInfoLd2_[]; + //! Lens Data 3 tag information + static const TagInfo tagInfoLd3_[]; + + }; // class Nikon3MakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef NIKONMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/olympusmn.cpp b/vendor/exiv2-0.25/src/olympusmn.cpp new file mode 100644 index 0000000..ee786c8 --- /dev/null +++ b/vendor/exiv2-0.25/src/olympusmn.cpp @@ -0,0 +1,1689 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: olympusmn.cpp + Version: $Rev: 3831 $ + Author(s): Will Stokes (wuz) + Andreas Huggel (ahu) + Gilles Caulier (gc) + Greg Mansfield + History: 10-Mar-05, wuz: created + Credits: See header file. + */ + +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: olympusmn.cpp 3831 2015-05-20 01:27:32Z asp $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "olympusmn_int.hpp" +#include "value.hpp" +#include "image.hpp" +#include "tags_int.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! OffOn, multiple tags + extern const TagDetails olympusOffOn[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! NoYes, multiple tags + extern const TagDetails olympusNoYes[] = { + { 0, N_("No") }, + { 1, N_("Yes") } + }; + + //! Quality, tag 0x0201 + extern const TagDetails olympusQuality[] = { + { 1, N_("Standard Quality (SQ)") }, + { 2, N_("High Quality (HQ)") }, + { 3, N_("Super High Quality (SHQ)") }, + { 6, N_("Raw") } + }; + + //! Macro, tag 0x0202 + extern const TagDetails olympusMacro[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("Super macro") } + }; + + //! OneTouchWB, tag 0x0302 + extern const TagDetails olympusOneTouchWb[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("On (preset)") } + }; + + //! SceneMode, tag 0x403 and CameraSettings tag 0x509 + extern const TagDetails olympusSceneMode[] = { + { 0, N_("Standard") }, + { 6, N_("Auto") }, + { 7, N_("Sport") }, + { 8, N_("Portrait") }, + { 9, N_("Landscape+Portrait") }, + { 10, N_("Landscape") }, + { 11, N_("Night Scene") }, + { 12, N_("Self Portrait") }, + { 13, N_("Panorama") }, + { 14, N_("2 in 1") }, + { 15, N_("Movie") }, + { 16, N_("Landscape+Portrait") }, + { 17, N_("Night+Portrait") }, + { 18, N_("Indoor") }, + { 19, N_("Fireworks") }, + { 20, N_("Sunset") }, + { 22, N_("Macro") }, + { 23, N_("Super Macro") }, + { 24, N_("Food") }, + { 25, N_("Documents") }, + { 26, N_("Museum") }, + { 27, N_("Shoot & Select") }, + { 28, N_("Beach & Snow") }, + { 29, N_("Self Portrait+Timer") }, + { 30, N_("Candle") }, + { 31, N_("Available Light") }, + { 32, N_("Behind Glass") }, + { 33, N_("My Mode") }, + { 34, N_("Pet") }, + { 35, N_("Underwater Wide1") }, + { 36, N_("Underwater Macro") }, + { 37, N_("Shoot & Select1") }, + { 38, N_("Shoot & Select2") }, + { 39, N_("High Key") }, + { 40, N_("Digital Image Stabilization") }, + { 41, N_("Auction") }, + { 42, N_("Beach") }, + { 43, N_("Snow") }, + { 44, N_("Underwater Wide2") }, + { 45, N_("Low Key") }, + { 46, N_("Children") }, + { 47, N_("Vivid") }, + { 48, N_("Nature Macro") }, + { 49, N_("Underwater Snapshot") }, + { 50, N_("Shooting Guide") } + }; + + //! FlashDevice, tag 0x1005 + extern const TagDetails olympusFlashDevice[] = { + { 0, N_("None") }, + { 1, N_("Internal") }, + { 4, N_("External") }, + { 5, N_("Internal + External") } + }; + + //! FocusRange, tag 0x100a + extern const TagDetails olympusFocusRange[] = { + { 0, N_("Normal") }, + { 1, N_("Macro") } + }; + + //! FocusMode, tag 0x100b + extern const TagDetails olympusFocusMode[] = { + { 0, N_("Auto") }, + { 1, N_("Manual") } + }; + + //! Sharpness, tag 0x100f + extern const TagDetails olympusSharpness[] = { + { 0, N_("Normal") }, + { 1, N_("Hard") }, + { 2, N_("Soft") } + }; + + //! Contrast, tag 0x1029 + extern const TagDetails olympusContrast[] = { + { 0, N_("High") }, + { 1, N_("Normal") }, + { 2, N_("Low") } + }; + + //! CCDScanMode, tag 0x1039 + extern const TagDetails olympusCCDScanMode[] = { + { 0, N_("Interlaced") }, + { 1, N_("Progressive") } + }; + + // Olympus Tag Info + const TagInfo OlympusMakerNote::tagInfo_[] = { + + /* TODO: + add Minolta makenotes tags here (0x0000-0x0103). See Exiftool database.*/ + TagInfo(0x0000, "0x0000", "0x0000", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0100, "ThumbnailImage", N_("Thumbnail Image"), + N_("Thumbnail image"), + olympusId, makerTags, undefined, -1, printValue), + + TagInfo(0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), + N_("Body firmware version"), + olympusId, makerTags, asciiString, -1, printValue), + TagInfo(0x0200, "SpecialMode", N_("Special Mode"), + N_("Picture taking mode"), + olympusId, makerTags, unsignedLong, -1, print0x0200), + TagInfo(0x0201, "Quality", N_("Quality"), + N_("Image quality setting"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusQuality)), + TagInfo(0x0202, "Macro", N_("Macro"), + N_("Macro mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacro)), + TagInfo(0x0203, "BWMode", N_("Black & White Mode"), + N_("Black and white mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x0204, "DigitalZoom", N_("Digital Zoom"), + N_("Digital zoom ratio"), + olympusId, makerTags, unsignedRational, -1, print0x0204), + TagInfo(0x0205, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), + N_("Focal plane diagonal"), + olympusId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x0206, "LensDistortionParams", N_("Lens Distortion Parameters"), + N_("Lens distortion parameters"), + olympusId, makerTags, signedShort, -1, printValue), + TagInfo(0x0207, "CameraType", N_("Camera Type"), + N_("Camera type"), + olympusId, makerTags, asciiString, -1, printValue), + TagInfo(0x0208, "PictureInfo", N_("Picture Info"), + N_("ASCII format data such as [PictureInfo]"), + olympusId, makerTags, asciiString, -1, printValue), + TagInfo(0x0209, "CameraID", N_("Camera ID"), + N_("Camera ID data"), + olympusId, makerTags, asciiString, -1, print0x0209), + TagInfo(0x020b, "ImageWidth", N_("Image Width"), + N_("Image width"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x020c, "ImageHeight", N_("Image Height"), + N_("Image height"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x020d, "Software", N_("Software"), + N_("Software"), + olympusId, makerTags, asciiString, -1, printValue), + TagInfo(0x0280, "PreviewImage", N_("Preview Image"), + N_("Preview image"), + olympusId, makerTags, unsignedByte, -1, printValue), + TagInfo(0x0300, "PreCaptureFrames", N_("Pre Capture Frames"), + N_("Pre-capture frames"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0301, "WhiteBoard", N_("White Board"), + N_("White board"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0302, "OneTouchWB", N_("One Touch WB"), + N_("One touch white balance"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOneTouchWb)), + TagInfo(0x0303, "WhiteBalanceBracket", N_("White Balance Bracket"), + N_("White balance bracket"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0304, "WhiteBalanceBias", N_("White Balance Bias"), + N_("White balance bias"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0403, "SceneMode", N_("Scene Mode"), + N_("Scene mode"), + olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)), + TagInfo(0x0404, "Firmware", N_("Firmware"), + N_("Firmware"), + olympusId, makerTags, asciiString, -1, printValue), + TagInfo(0x0e00, "PrintIM", N_("Print IM"), + N_("PrintIM information"), + olympusId, makerTags, undefined, -1, printValue), + TagInfo(0x0f00, "DataDump1", N_("Data Dump 1"), + N_("Various camera settings 1"), + olympusId, makerTags, undefined, -1, printValue), + TagInfo(0x0f01, "DataDump2", N_("Data Dump 2"), + N_("Various camera settings 2"), + olympusId, makerTags, undefined, -1, printValue), + TagInfo(0x1000, "ShutterSpeed", N_("Shutter Speed"), + N_("Shutter speed value"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1001, "ISOSpeed", N_("ISO Speed"), + N_("ISO speed value"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1002, "ApertureValue", N_("Aperture Value"), + N_("Aperture value"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1003, "Brightness", N_("Brightness"), + N_("Brightness value"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1004, "FlashMode", N_("Flash Mode"), + N_("Flash mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1005, "FlashDevice", N_("Flash Device"), + N_("Flash device"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashDevice)), + TagInfo(0x1006, "Bracket", N_("Bracket"), + N_("Exposure compensation value"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1007, "SensorTemperature", N_("Sensor Temperature"), + N_("Sensor temperature"), + olympusId, makerTags, signedShort, -1, printValue), + TagInfo(0x1008, "LensTemperature", N_("Lens Temperature"), + N_("Lens temperature"), + olympusId, makerTags, signedShort, -1, printValue), + TagInfo(0x1009, "LightCondition", N_("Light Condition"), + N_("Light condition"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x100a, "FocusRange", N_("Focus Range"), + N_("Focus range"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusRange)), + TagInfo(0x100b, "FocusMode", N_("Focus Mode"), + N_("Focus mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusMode)), + TagInfo(0x100c, "FocusDistance", N_("Focus Distance"), + N_("Manual focus distance"), + olympusId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x100d, "Zoom", N_("Zoom"), + N_("Zoom step count"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x100e, "MacroFocus", N_("Macro Focus"), + N_("Macro focus step count"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x100f, "SharpnessFactor", N_("Sharpness Factor"), + N_("Sharpness factor"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSharpness)), + TagInfo(0x1010, "FlashChargeLevel", N_("Flash Charge Level"), + N_("Flash charge level"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1011, "ColorMatrix", N_("Color Matrix"), + N_("Color matrix"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1012, "BlackLevel", N_("BlackLevel"), + N_("Black level"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1013, "0x1013", "0x1013", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1014, "0x1014", "0x1014", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1015, "WhiteBalance", N_("White Balance"), + N_("White balance mode"), + olympusId, makerTags, unsignedShort, -1, print0x1015), + TagInfo(0x1016, "0x1016", "0x1016", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1017, "RedBalance", N_("Red Balance"), + N_("Red balance"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1018, "BlueBalance", N_("Blue Balance"), + N_("Blue balance"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1019, "ColorMatrixNumber", N_("Color Matrix Number"), + N_("Color matrix number"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x101a, "SerialNumber2", N_("Serial Number 2"), + N_("Serial number 2"), + olympusId, makerTags, asciiString, -1, printValue), + TagInfo(0x101b, "0x101b", "0x101b", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x101c, "0x101c", "0x101c", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x101d, "0x101d", "0x101d", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x101e, "0x101e", "0x101e", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x101f, "0x101f", "0x101f", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1020, "0x1020", "0x1020", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1021, "0x1021", "0x1021", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1022, "0x1022", "0x1022", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1023, "FlashBias", N_("Flash Bias"), + N_("Flash exposure compensation"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1024, "0x1024", "0x1024", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1025, "0x1025", "0x1025", + N_("Unknown"), + olympusId, makerTags, signedRational, -1, printValue), + TagInfo(0x1026, "ExternalFlashBounce", N_("External Flash Bounce"), + N_("External flash bounce"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1027, "ExternalFlashZoom", N_("External Flash Zoom"), + N_("External flash zoom"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1028, "ExternalFlashMode", N_("External Flash Mode"), + N_("External flash mode"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1029, "Contrast", N_("Contrast"), + N_("Contrast setting"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusContrast)), + TagInfo(0x102a, "SharpnessFactor", N_("Sharpness Factor"), + N_("Sharpness factor"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x102b, "ColorControl", N_("Color Control"), + N_("Color control"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x102c, "ValidBits", N_("ValidBits"), + N_("Valid bits"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x102d, "CoringFilter", N_("CoringFilter"), + N_("Coring filter"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x102e, "ImageWidth", N_("Image Width"), + N_("Image width"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x102f, "ImageHeight", N_("Image Height"), + N_("Image height"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1030, "0x1030", "0x1030", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1031, "0x1031", "0x1031", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1032, "0x1032", "0x1032", + N_("Unknown"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1033, "0x1033", "0x1033", + N_("Unknown"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1034, "CompressionRatio", N_("Compression Ratio"), + N_("Compression ratio"), + olympusId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x1035, "Thumbnail", N_("Thumbnail"), + N_("Preview image embedded"), + olympusId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1036, "ThumbnailOffset", N_("Thumbnail Offset"), + N_("Offset of the preview image"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1037, "ThumbnailLength", N_("Thumbnail Length"), + N_("Size of the preview image"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1039, "CCDScanMode", N_("CCD Scan Mode"), + N_("CCD scan mode"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCCDScanMode)), + TagInfo(0x103a, "NoiseReduction", N_("Noise Reduction"), + N_("Noise reduction"), + olympusId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x103b, "InfinityLensStep", N_("Infinity Lens Step"), + N_("Infinity lens step"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x103c, "NearLensStep", N_("Near Lens Step"), + N_("Near lens step"), + olympusId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x2010, "Equipment", N_("Equipment Info"), + N_("Camera equipment sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x2020, "CameraSettings", N_("Camera Settings"), + N_("Camera Settings sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x2030, "RawDevelopment", N_("Raw Development"), + N_("Raw development sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x2031, "RawDevelopment2", N_("Raw Development 2"), + N_("Raw development 2 sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x2040, "ImageProcessing", N_("Image Processing"), + N_("Image processing sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x2050, "FocusInfo", N_("Focus Info"), + N_("Focus sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x3000, "RawInfo", N_("Raw Info"), + N_("Raw sub-IFD"), + olympusId, makerTags, unsignedLong, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusMakerNoteTag)", "(UnknownOlympusMakerNoteTag)", + N_("Unknown OlympusMakerNote tag"), + olympusId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagList() + { + return tagInfo_; + } + +// Olympus CameraSettings Tags + //! ExposureMode, tag 0x0200 + extern const TagDetails olympusExposureMode[] = { + { 1, N_("Manual") }, + { 2, N_("Program") }, + { 3, N_("Aperture-priority AE") }, + { 4, N_("Shutter speed priority AE") }, + { 5, N_("Program-shift") } + }; + + //! MeteringMode, tag 0x0202 + extern const TagDetails olympusMeteringMode[] = { + { 2, N_("Center-weighted average") }, + { 3, N_("Spot") }, + { 5, N_("ESP") }, + { 261, N_("Pattern+AF") }, + { 515, N_("Spot+Highlight control") }, + { 1027, N_("Spot+Shadow control") } + }; + + //! MacroMode, tag 0x0300 + extern const TagDetails olympusMacroMode[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("Super Macro") } + }; + + //! FocusMode, tag 0x0301 + extern const TagDetails olympusCsFocusMode[] = { + { 0, N_("Single AF") }, + { 1, N_("Sequential shooting AF") }, + { 2, N_("Continuous AF") }, + { 3, N_("Multi AF") }, + { 10, N_("MF") } + }; + + //! FocusProcess, tag 0x0302 + extern const TagDetails olympusFocusProcess[] = { + { 0, N_("AF Not Used") }, + { 1, N_("AF Used") } + }; + + //! AFSearch, tag 0x0303 + extern const TagDetails olympusAFSearch[] = { + { 0, N_("Not Ready") }, + { 1, N_("Ready") } + }; + + //! FlashMode, tag 0x0400 + extern const TagDetailsBitmask olympusFlashMode[] = { + { 0x0000, N_("Off") }, + { 0x0001, N_("On") }, + { 0x0002, N_("Fill-in") }, + { 0x0004, N_("Red-eye") }, + { 0x0008, N_("Slow-sync") }, + { 0x0010, N_("Forced On") }, + { 0x0020, N_("2nd Curtain") } + }; + + //! FlashRemoteControl, tag 0x0403 + extern const TagDetails olympusFlashRemoteControl[] = { + { 0x0, N_("Off") }, + { 0x1, N_("Channel 1, Low") }, + { 0x2, N_("Channel 2, Low") }, + { 0x3, N_("Channel 3, Low") }, + { 0x4, N_("Channel 4, Low") }, + { 0x9, N_("Channel 1, Mid") }, + { 0xa, N_("Channel 2, Mid") }, + { 0xb, N_("Channel 3, Mid") }, + { 0xc, N_("Channel 4, Mid") }, + { 0x11, N_("Channel 1, High") }, + { 0x12, N_("Channel 2, High") }, + { 0x13, N_("Channel 3, High") }, + { 0x14, N_("Channel 4, High") } + }; + + //! FlashControlMode, tag 0x0404 + extern const TagDetails olympusFlashControlMode[] = { + { 0, N_("Off") }, + { 3, N_("TTL") }, + { 4, N_("Auto") }, + { 5, N_("Manual") } + }; + + //! WhiteBalance, tag 0x0500 + extern const TagDetails olympusWhiteBalance[] = { + { 0, N_("Auto") }, + { 1, N_("Auto (Keep Warm Color Off") }, + { 16, N_("7500K (Fine Weather with Shade)") }, + { 17, N_("6000K (Cloudy)") }, + { 18, N_("5300K (Fine Weather)") }, + { 20, N_("3000K (Tungsten light)") }, + { 21, N_("3600K (Tungsten light-like)") }, + { 22, N_("Auto Setup") }, + { 23, N_("5500K (Flash)") }, + { 33, N_("6600K (Daylight fluorescent)") }, + { 34, N_("4500K (Neutral white fluorescent)") }, + { 35, N_("4000K (Cool white fluorescent)") }, + { 36, N_("White Fluorescent") }, + { 48, N_("3600K (Tungsten light-like)") }, + { 67, N_("Underwater") }, + { 256, N_("One Touch WB 1") }, + { 257, N_("One Touch WB 2") }, + { 258, N_("One Touch WB 3") }, + { 259, N_("One Touch WB 4") }, + { 512, N_("Custom WB 1") }, + { 513, N_("Custom WB 2") }, + { 514, N_("Custom WB 3") }, + { 515, N_("Custom WB 4") } + }; + + //! ModifiedSaturation, tag 0x0504 + extern const TagDetails olympusModifiedSaturation[] = { + { 0, N_("Off") }, + { 1, N_("CM1 (Red Enhance)") }, + { 2, N_("CM2 (Green Enhance)") }, + { 3, N_("CM3 (Blue Enhance)") }, + { 4, N_("CM4 (Skin Tones)") } + }; + + //! ColorSpace, tag 0x0507 + extern const TagDetails olympusColorSpace[] = { + { 0, N_("sRGB") }, + { 1, N_("Adobe RGB") }, + { 2, N_("Pro Photo RGB") } + }; + + //! NoiseReduction, tag 0x050a + extern const TagDetailsBitmask olympusNoiseReduction[] = { + { 0x0001, N_("Noise Reduction") }, + { 0x0002, N_("Noise Filter") }, + { 0x0004, N_("Noise Filter (ISO Boost)") }, + { 0x0008, N_("Auto") } + }; + + //! PictureMode, tag 0x0520 + extern const TagDetails olympusPictureMode[] = { + { 1, N_("Vivid") }, + { 2, N_("Natural") }, + { 3, N_("Muted") }, + { 4, N_("Portrait") }, + { 256, N_("Monotone") }, + { 512, N_("Sepia") } + }; + + //! PictureModeBWFilter, tag 0x0525 + extern const TagDetails olympusPictureModeBWFilter[] = { + { 0, N_("n/a") }, + { 1, N_("Neutral") }, + { 2, N_("Yellow") }, + { 3, N_("Orange") }, + { 4, N_("Red") }, + { 5, N_("Green") } + }; + + //! PictureModeTone, tag 0x0526 + extern const TagDetails olympusPictureModeTone[] = { + { 0, N_("n/a") }, + { 1, N_("Neutral") }, + { 2, N_("Sepia") }, + { 3, N_("Blue") }, + { 4, N_("Purple") }, + { 5, N_("Green") } + }; + + //! OlympusCs Quality, tag 0x0603 + extern const TagDetails olympusCsQuality[] = { + { 1, N_("SQ") }, + { 2, N_("HQ") }, + { 3, N_("SHQ") }, + { 4, N_("RAW") } + }; + + //! Olympus ImageStabilization, tag 0x0604 + extern const TagDetails olympusImageStabilization[] = { + { 0, N_("Off") }, + { 1, N_("On, Mode 1") }, + { 2, N_("On, Mode 2") }, + { 3, N_("On, Mode 3") } + }; + + const TagInfo OlympusMakerNote::tagInfoCs_[] = { + TagInfo(0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), olympusCsId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), olympusCsId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusNoYes)), + TagInfo(0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), olympusCsId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), olympusCsId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusExposureMode)), + TagInfo(0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x0202, "MeteringMode", N_("Metering Mode"), N_("Metering mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMeteringMode)), + TagInfo(0x0203, "ExposureShift", N_("Exposure Shift"), N_("Exposure shift"), olympusCsId, makerTags, signedRational, -1, printValue), + TagInfo(0x0300, "MacroMode", N_("Macro Mode"), N_("Macro mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusMacroMode)), + TagInfo(0x0301, "FocusMode", N_("Focus Mode"), N_("Focus mode"), olympusCsId, makerTags, unsignedShort, -1, printCs0x0301), + TagInfo(0x0302, "FocusProcess", N_("Focus Process"), N_("Focus process"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFocusProcess)), + TagInfo(0x0303, "AFSearch", N_("AF Search"), N_("AF search"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusAFSearch)), + TagInfo(0x0304, "AFAreas", N_("AF Areas"), N_("AF areas"), olympusCsId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0305, "AFPointSelected", N_("AFPointSelected"), N_("AFPointSelected"), olympusCsId, makerTags, signedRational, -1, printValue), + TagInfo(0x0307, "AFFineTuneAdj", N_("AF Fine Tune Adjust"), N_("AF fine tune adjust"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0400, "FlashMode", N_("Flash Mode"), N_("Flash mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusFlashMode)), + TagInfo(0x0401, "FlashExposureComp", N_("Flash Exposure Compensation"), N_("Flash exposure compensation"), olympusCsId, makerTags, signedRational, -1, printValue), + TagInfo(0x0403, "FlashRemoteControl", N_("Flash Remote Control"), N_("Flash remote control"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashRemoteControl)), + TagInfo(0x0404, "FlashControlMode", N_("Flash Control Mode"), N_("Flash control mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFlashControlMode)), + TagInfo(0x0405, "FlashIntensity", N_("Flash Intensity"), N_("Flash intensity"), olympusCsId, makerTags, signedRational, -1, printValue), + TagInfo(0x0406, "ManualFlashStrength", N_("Manual Flash Strength"), N_("Manual flash strength"), olympusCsId, makerTags, signedRational, -1, printValue), + TagInfo(0x0500, "WhiteBalance", N_("White Balance 2"), N_("White balance 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusWhiteBalance)), + TagInfo(0x0501, "WhiteBalanceTemperature", N_("White Balance Temperature"), N_("White balance temperature"), olympusCsId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0502, "WhiteBalanceBracket", N_("White Balance Bracket"), N_("White balance bracket"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0503, "CustomSaturation", N_("Custom Saturation"), N_("Custom saturation"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0504, "ModifiedSaturation", N_("Modified Saturation"), N_("Modified saturation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusModifiedSaturation)), + TagInfo(0x0505, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0506, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0507, "ColorSpace", N_("Color Space"), N_("Color space"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusColorSpace)), + TagInfo(0x0509, "SceneMode", N_("Scene Mode"), N_("Scene mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusSceneMode)), + TagInfo(0x050a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), + TagInfo(0x050b, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x050c, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x050d, "CompressionFactor", N_("Compression Factor"), N_("Compression factor"), olympusCsId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x050f, "Gradation", N_("Gradation"), N_("Gradation"), olympusCsId, makerTags, signedShort, -1, print0x050f), + TagInfo(0x0520, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusPictureMode)), + TagInfo(0x0521, "PictureModeSaturation", N_("Picture Mode Saturation"), N_("Picture mode saturation"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0522, "PictureModeHue", N_("Picture Mode Hue"), N_("Picture mode hue"), olympusCsId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0523, "PictureModeContrast", N_("Picture Mode Contrast"), N_("Picture mode contrast"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0524, "PictureModeSharpness", N_("Picture Mode Sharpness"), N_("Picture mode sharpness"), olympusCsId, makerTags, signedShort, -1, printValue), + TagInfo(0x0525, "PictureModeBWFilter", N_("Picture Mode BW Filter"), N_("Picture mode BW filter"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeBWFilter)), + TagInfo(0x0526, "PictureModeTone", N_("Picture Mode Tone"), N_("Picture mode tone"), olympusCsId, makerTags, signedShort, -1, EXV_PRINT_TAG(olympusPictureModeTone)), + TagInfo(0x0527, "NoiseFilter", N_("Noise Filter"), N_("Noise filter"), olympusCsId, makerTags, signedShort, -1, print0x0527), + TagInfo(0x0529, "ArtFilter", N_("Art Filter"), N_("Art filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529), + TagInfo(0x052c, "MagicFilter", N_("Magic Filter"), N_("Magic filter"), olympusCsId, makerTags, unsignedShort, -1, print0x0529), + TagInfo(0x0600, "DriveMode", N_("Drive Mode"), N_("Drive mode"), olympusCsId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0601, "PanoramaMode", N_("Panorama Mode"), N_("Panorama mode"), olympusCsId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0603, "Quality", N_("Image Quality 2"), N_("Image quality 2"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusCsQuality)), + TagInfo(0x0604, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusImageStabilization)), + TagInfo(0x0900, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), olympusCsId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0901, "ManometerReading", N_("Manometer Reading"), N_("Manometer reading"), olympusCsId, makerTags, signedLong, -1, printValue), + TagInfo(0x0902, "ExtendedWBDetect", N_("Extended WB Detect"), N_("Extended WB detect"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x0903, "LevelGaugeRoll", N_("Level Gauge Roll"), N_("Level gauge roll"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x0904, "LevelGaugePitch", N_("Level Gauge Pitch"), N_("Level gauge pitch"), olympusCsId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)", N_("Unknown OlympusCs tag"), olympusCsId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListCs() + { + return tagInfoCs_; + } + + //! OlympusEq FlashType, tag 0x1000 + extern const TagDetails olympusEqFlashType[] = { + { 0, N_("None") }, + { 2, N_("Simple E-System") }, + { 3, N_("E-System") } + }; + + //! OlympusEq FlashModel, tag 0x1001 + extern const TagDetails olympusEqFlashModel[] = { + { 0, N_("None") }, + { 1, "FL-20" }, + { 2, "FL-50" }, + { 3, "RF-11" }, + { 4, "TF-22" }, + { 5, "FL-36" }, + { 6, "FL-50R" }, + { 7, "FL-36R" }, + { 7, "FL-36R" } // To silence compiler warning + }; + + const TagInfo OlympusMakerNote::tagInfoEq_[] = { + TagInfo(0x0000, "EquipmentVersion", N_("Equipment Version"), N_("Equipment version"), olympusEqId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0100, "CameraType", N_("Camera Type"), N_("Camera type"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0101, "SerialNumber", N_("Serial Number"), N_("Serial number"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0102, "InternalSerialNumber", N_("Internal Serial Number"), N_("Internal serial number"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0103, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), N_("Focal plane diagonal"), olympusEqId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x0104, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0201, "LensType", N_("Lens Type"), N_("Lens type"), olympusEqId, makerTags, unsignedByte, -1, print0x0201), + TagInfo(0x0202, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0203, "LensModel", N_("Lens Model"), N_("Lens model"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0204, "LensFirmwareVersion", N_("Lens Firmware Version"), N_("Lens firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0205, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0206, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0207, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0208, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), olympusEqId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x020a, "MaxApertureAtCurrentFocal", N_("Max Aperture At Current Focal"), N_("Max aperture at current focal"), olympusEqId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x020b, "LensProperties", N_("Lens Properties"), N_("Lens properties"), olympusEqId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0301, "Extender", N_("Extender"), N_("Extender"), olympusEqId, makerTags, unsignedByte, -1, printEq0x0301), + TagInfo(0x0302, "ExtenderSerialNumber", N_("Extender Serial Number"), N_("Extender serial number"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0303, "ExtenderModel", N_("Extender Model"), N_("Extender model"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x0304, "ExtenderFirmwareVersion", N_("Extender Firmware Version"), N_("Extender firmwareversion"), olympusEqId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0403, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), olympusEqId, makerTags, asciiString, -1, printValue), + TagInfo(0x1000, "FlashType", N_("Flash Type"), N_("Flash type"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashType)), + TagInfo(0x1001, "FlashModel", N_("Flash Model"), N_("Flash model"), olympusEqId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusEqFlashModel)), + TagInfo(0x1002, "FlashFirmwareVersion", N_("Flash Firmware Version"), N_("Flash firmware version"), olympusEqId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1003, "FlashSerialNumber", N_("FlashSerialNumber"), N_("FlashSerialNumber"), olympusEqId, makerTags, asciiString, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusEqTag)", "(UnknownOlympusEqTag)", N_("Unknown OlympusEq tag"), olympusEqId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListEq() + { + return tagInfoEq_; + } + + //! OlympusRd ColorSpace, tag 0x0108 + extern const TagDetails olympusRdColorSpace[] = { + { 0, N_("sRGB") }, + { 1, N_("Adobe RGB") }, + { 2, N_("Pro Photo RGB") } + }; + + //! OlympusRd Engine, tag 0x0109 + extern const TagDetails olympusRdEngine[] = { + { 0, N_("High Speed") }, + { 1, N_("High Function") }, + { 2, N_("Advanced High Speed") }, + { 3, N_("Advanced High Function") } + }; + + //! OlympusRd EditStatus, tag 0x010b + extern const TagDetails olympusRdEditStatus[] = { + { 0, N_("Original") }, + { 1, N_("Edited (Landscape)") }, + { 6, N_("Edited (Portrait)") }, + { 8, N_("Edited (Portrait)") } + }; + + //! OlympusRd Settings, tag 0x010c + extern const TagDetailsBitmask olympusRdSettings[] = { + { 0x0001, N_("WB Color Temp") }, + { 0x0004, N_("WB Gray Point") }, + { 0x0008, N_("Saturation") }, + { 0x0010, N_("Contrast") }, + { 0x0020, N_("Sharpness") }, + { 0x0040, N_("Color Space") }, + { 0x0080, N_("High Function") }, + { 0x0100, N_("Noise Reduction") } + }; + + const TagInfo OlympusMakerNote::tagInfoRd_[] = { + TagInfo(0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), olympusRdId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRdId, makerTags, signedRational, -1, printValue), + TagInfo(0x0101, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRdId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0102, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("WB fine adjustment"), olympusRdId, makerTags, signedShort, -1, printValue), + TagInfo(0x0103, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRdId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0104, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRdId, makerTags, signedShort, -1, printValue), + TagInfo(0x0105, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRdId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0106, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRdId, makerTags, signedShort, -1, printValue), + TagInfo(0x0107, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRdId, makerTags, signedShort, -1, printValue), + TagInfo(0x0108, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdColorSpace)), + TagInfo(0x0109, "Engine", N_("Engine"), N_("Engine"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEngine)), + TagInfo(0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), + TagInfo(0x010b, "EditStatus", N_("Edit Status"), N_("Edit status"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRdEditStatus)), + TagInfo(0x010c, "Settings", N_("Settings"), N_("Settings"), olympusRdId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusRdSettings)), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), olympusRdId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListRd() + { + return tagInfoRd_; + } + + //! OlympusRd2 WhiteBalance, tag 0x0101 + extern const TagDetails olympusRd2WhiteBalance[] = { + { 1, N_("Color Temperature") }, + { 2, N_("Gray Point") } + }; + + //! OlympusRd2 ColorSpace, tag 0x0109 + extern const TagDetails olympusRd2ColorSpace[] = { + { 0, N_("sRGB") }, + { 1, N_("Adobe RGB") }, + { 2, N_("Pro Photo RGB") } + }; + + //! OlympusRd2 Engine, tag 0x010b + extern const TagDetails olympusRd2Engine[] = { + { 0, N_("High Speed") }, + { 1, N_("High Function") } + }; + + //! OlympusRd2 PictureMode, tag 0x010c + extern const TagDetails olympusRd2PictureMode[] = { + { 1, N_("Vivid") }, + { 2, N_("Natural") }, + { 3, N_("Muted") }, + { 256, N_("Monotone") }, + { 512, N_("Sepia") } + }; + + //! OlympusRd2 PM_BWFilter, tag 0x0110 + extern const TagDetails olympusRd2PM_BWFilter[] = { + { 1, N_("Neutral") }, + { 2, N_("Yellow") }, + { 3, N_("Orange") }, + { 4, N_("Red") }, + { 5, N_("Green") } + }; + + //! OlympusRd2 PMPictureTone, tag 0x0111 + extern const TagDetails olympusRd2PMPictureTone[] = { + { 1, N_("Neutral") }, + { 2, N_("Sepia") }, + { 3, N_("Blue") }, + { 4, N_("Purple") }, + { 5, N_("Green") } + }; + + const TagInfo OlympusMakerNote::tagInfoRd2_[] = { + TagInfo(0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), olympusRd2Id, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0100, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), olympusRd2Id, makerTags, signedRational, -1, printValue), + TagInfo(0x0101, "WhiteBalance", N_("White Balance"), N_("White balance"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2WhiteBalance)), + TagInfo(0x0102, "WhiteBalanceValue", N_("White Balance Value"), N_("White balance value"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0103, "WBFineAdjustment", N_("WB Fine Adjustment"), N_("White balance fine adjustment"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0104, "GrayPoint", N_("Gray Point"), N_("Gray point"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0105, "ContrastValue", N_("Contrast Value"), N_("Contrast value"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0106, "SharpnessValue", N_("Sharpness Value"), N_("Sharpness value"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0107, "SaturationEmphasis", N_("Saturation Emphasis"), N_("Saturation emphasis"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0108, "MemoryColorEmphasis", N_("Memory Color Emphasis"), N_("Memory color emphasis"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0109, "ColorSpace", N_("Color Space"), N_("Color space"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2ColorSpace)), + TagInfo(0x010a, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), + TagInfo(0x010b, "Engine", N_("Engine"), N_("Engine"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2Engine)), + TagInfo(0x010c, "PictureMode", N_("Picture Mode"), N_("Picture mode"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PictureMode)), + TagInfo(0x010d, "PMSaturation", N_("PM Saturation"), N_("Picture mode saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x010e, "PMContrast", N_("PM Contrast"), N_("Picture mode contrast"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x010f, "PMSharpness", N_("PM Sharpness"), N_("Picture mode sharpness"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0110, "PM_BWFilter", N_("PM BW Filter"), N_("PM BW filter"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PM_BWFilter)), + TagInfo(0x0111, "PMPictureTone", N_("PM Picture Tone"), N_("PM picture tone"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRd2PMPictureTone)), + TagInfo(0x0112, "Gradation", N_("Gradation"), N_("Gradation"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0113, "Saturation", N_("Saturation"), N_("Saturation"), olympusRd2Id, makerTags, signedShort, -1, printValue), + TagInfo(0x0119, "AutoGradation", N_("Auto Gradation"), N_("Auto gradation"), olympusRd2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x0120, "PMNoiseFilter", N_("PM Noise Filter"), N_("Picture mode noise filter"), olympusRd2Id, makerTags, unsignedShort, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), olympusRd2Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListRd2() + { + return tagInfoRd2_; + } + + //! OlympusIp MultipleExposureMode, tag 0x101c + extern const TagDetails olympusIpMultipleExposureMode[] = { + { 0, N_("Off") }, + { 2, N_("On (2 frames)") }, + { 3, N_("On (3 frames)") } + }; + + //! OlympusIp olympusIpAspectRatio, tag 0x101c + extern const TagDetails olympusIpAspectRatio[] = { + { 1, "4:3" }, + { 2, "3:2" }, + { 3, "16:9" }, + { 4, "6:6" }, + { 5, "5:4" }, + { 6, "7:6" }, + { 7, "6:5" }, + { 8, "7:5" }, + { 9, "3:4" } + }; + + const TagInfo OlympusMakerNote::tagInfoIp_[] = { + TagInfo(0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), olympusIpId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0100, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0102, "WB_RBLevels3000K", N_("WB RB Levels 3000K"), N_("WB RB levels 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0103, "WB_RBLevels3300K", N_("WB RB Levels 3300K"), N_("WB RB levels 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0104, "WB_RBLevels3600K", N_("WB RB Levels 3600K"), N_("WB RB levels 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0105, "WB_RBLevels3900K", N_("WB RB Levels 3900K"), N_("WB RB levels 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0106, "WB_RBLevels4000K", N_("WB RB Levels 4000K"), N_("WB RB levels 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0107, "WB_RBLevels4300K", N_("WB RB Levels 4300K"), N_("WB RB levels 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0108, "WB_RBLevels4500K", N_("WB RB Levels 4500K"), N_("WB RB levels 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0109, "WB_RBLevels4800K", N_("WB RB Levels 4800K"), N_("WB RB levels 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x010a, "WB_RBLevels5300K", N_("WB RB Levels 5300K"), N_("WB RB levels 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x010b, "WB_RBLevels6000K", N_("WB RB Levels 6000K"), N_("WB RB levels 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x010c, "WB_RBLevels6600K", N_("WB RB Levels 6600K"), N_("WB RB levels 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x010d, "WB_RBLevels7500K", N_("WB RB Levels 7500K"), N_("WB RB levels 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x010e, "WB_RBLevelsCWB1", N_("WB RB Levels CWB1"), N_("WB RB levels CWB1"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x010f, "WB_RBLevelsCWB2", N_("WB RB Levels CWB2"), N_("WB RB levels CWB2"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0110, "WB_RBLevelsCWB3", N_("WB RB Levels CWB3"), N_("WB RB levels CWB3"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0111, "WB_RBLevelsCWB4", N_("WB RB Levels CWB4"), N_("WB RB levels CWB4"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0113, "WB_GLevel3000K", N_("WB G Level 3000K"), N_("WB G level 3000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0114, "WB_GLevel3300K", N_("WB G Level 3300K"), N_("WB G level 3300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0115, "WB_GLevel3600K", N_("WB G Level 3600K"), N_("WB G level 3600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0116, "WB_GLevel3900K", N_("WB G Level 3900K"), N_("WB G level 3900K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0117, "WB_GLevel4000K", N_("WB G Level 4000K"), N_("WB G level 4000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0118, "WB_GLevel4300K", N_("WB G Level 4300K"), N_("WB G level 4300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0119, "WB_GLevel4500K", N_("WB G Level 4500K"), N_("WB G level 4500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x011a, "WB_GLevel4800K", N_("WB G Level 4800K"), N_("WB G level 4800K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x011b, "WB_GLevel5300K", N_("WB G Level 5300K"), N_("WB G level 5300K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x011c, "WB_GLevel6000K", N_("WB G Level 6000K"), N_("WB G level 6000K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x011d, "WB_GLevel6600K", N_("WB G Level 6600K"), N_("WB G level 6600K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x011e, "WB_GLevel7500K", N_("WB G Level 7500K"), N_("WB G level 7500K"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x011f, "WB_GLevel", N_("WB G Level"), N_("WB G level"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0200, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0300, "Enhancer", N_("Enhancer"), N_("Enhancer"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0301, "EnhancerValues", N_("Enhancer Values"), N_("Enhancer values"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0600, "BlackLevel", N_("Black Level"), N_("Black level"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0610, "GainBase", N_("Gain Base"), N_("Gain base"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0611, "ValidBits", N_("Valid Bits"), N_("Valid bits"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusIpId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusIpId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1010, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG_BITMASK(olympusNoiseReduction)), + TagInfo(0x1011, "DistortionCorrection", N_("Distortion Correction"), N_("Distortion correction"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1012, "ShadingCompensation", N_("Shading Compensation"), N_("Shading compensation"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x101c, "MultipleExposureMode", N_("Multiple Exposure Mode"), N_("Multiple exposure mode"), olympusIpId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusIpMultipleExposureMode)), + TagInfo(0x1112, "AspectRatio", N_("Aspect Ratio"), N_("Aspect ratio"), olympusIpId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(olympusIpAspectRatio)), + TagInfo(0x1113, "AspectFrame", N_("Aspect Frame"), N_("Aspect frame"), olympusIpId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1200, "FaceDetect", N_("Face Detect"), N_("Face detect"), olympusIpId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1201, "FaceDetectArea", N_("Face Detect Area"), N_("Face detect area"), olympusIpId, makerTags, signedShort, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), olympusIpId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListIp() + { + return tagInfoIp_; + } + + //! OlympusFi ExternalFlashBounce, tag 0x1204 + extern const TagDetails olympusFiExternalFlashBounce[] = { + { 0, N_("Bounce or Off") }, + { 1, N_("Direct") } + }; + + const TagInfo OlympusMakerNote::tagInfoFi_[] = { + TagInfo(0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), olympusFiId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0209, "AutoFocus", N_("Auto Focus"), N_("Auto focus"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x0210, "SceneDetect", N_("Scene Detect"), N_("Scene detect"), olympusFiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0211, "SceneArea", N_("Scene Area"), N_("Scene area"), olympusFiId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0212, "SceneDetectData", N_("Scene Detect Data"), N_("Scene detect data"), olympusFiId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0300, "ZoomStepCount", N_("Zoom Step Count"), N_("Zoom step count"), olympusFiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0301, "FocusStepCount", N_("Focus Step Count"), N_("Focus step count"), olympusFiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0303, "FocusStepInfinity", N_("Focus Step Infinity"), N_("Focus step infinity"), olympusFiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0304, "FocusStepNear", N_("Focus Step Near"), N_("Focus step near"), olympusFiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0305, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), olympusFiId, makerTags, unsignedRational, -1, print0x0305), + TagInfo(0x0308, "AFPoint", N_("AF Point"), N_("AF point"), olympusFiId, makerTags, unsignedShort, -1, print0x0308), + TagInfo(0x1201, "ExternalFlash", N_("External Flash"), N_("External flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1203, "ExternalFlashGuideNumber", N_("External Flash Guide Number"), N_("External flash guide number"), olympusFiId, makerTags, signedRational, -1, printValue), + TagInfo(0x1204, "ExternalFlashBounce", N_("External Flash Bounce"), N_("External flash bounce"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusFiExternalFlashBounce)), + TagInfo(0x1205, "ExternalFlashZoom", N_("External Flash Zoom"), N_("External flash zoom"), olympusFiId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x1208, "InternalFlash", N_("Internal Flash"), N_("Internal flash"), olympusFiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusOffOn)), + TagInfo(0x1209, "ManualFlash", N_("Manual Flash"), N_("Manual flash"), olympusFiId, makerTags, unsignedShort, -1, print0x1209), + TagInfo(0x1500, "SensorTemperature", N_("Sensor Temperature"), N_("Sensor temperature"), olympusFiId, makerTags, signedShort, -1, printValue), + TagInfo(0x1600, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), olympusFiId, makerTags, unsignedLong, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), olympusFiId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListFi() + { + return tagInfoFi_; + } + + const TagInfo OlympusMakerNote::tagInfoFe_[] = { + TagInfo(0x0100, "BodyFirmwareVersion", N_("Body Firmware Version"), N_("Body firmware version"), olympusFe1Id, makerTags, asciiString, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusFeTag)", "(UnknownOlympusFeTag)", N_("Unknown OlympusFe tag"), olympusFe1Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListFe() + { + return tagInfoFe_; + } + + //! OlympusRi LightSource, tag 0x1000 + extern const TagDetails olympusRiLightSource[] = { + { 0, N_("Unknown") }, + { 16, N_("Shade") }, + { 17, N_("Cloudy") }, + { 18, N_("Fine Weather") }, + { 20, N_("Tungsten (incandescent)") }, + { 22, N_("Evening Sunlight") }, + { 33, N_("Daylight Fluorescent (D 5700 - 7100K)") }, + { 34, N_("Day White Fluorescent (N 4600 - 5400K)") }, + { 35, N_("Cool White Fluorescent (W 3900 - 4500K)") }, + { 36, N_("White Fluorescent (WW 3200 - 3700K)") }, + { 256, N_("One Touch White Balance") }, + { 512, N_("Custom 1-4") } + }; + + const TagInfo OlympusMakerNote::tagInfoRi_[] = { + TagInfo(0x0000, "RawInfoVersion", N_("Raw Info Version"), N_("Raw info version"), olympusRiId, makerTags, undefined, -1, printValue), + TagInfo(0x0100, "WB_RBLevelsUsed", N_("WB_RB Levels Used"), N_("WB_RB levels used"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0110, "WB_RBLevelsAuto", N_("WB_RB Levels Auto"), N_("WB_RB levels auto"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0120, "WB_RBLevelsShade", N_("WB_RB Levels Shade"), N_("WB_RB levels shade"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0121, "WB_RBLevelsCloudy", N_("WB_RB Levels Cloudy"), N_("WB_RB levels cloudy"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0122, "WB_RBLevelsFineWeather", N_("WB_RB Levels Fine Weather"), N_("WB_RB levels fine weather"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0123, "WB_RBLevelsTungsten", N_("WB_RB Levels Tungsten"), N_("WB_RB levels tungsten"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0124, "WB_RBLevelsEveningSunlight", N_("WB_RB Levels Evening Sunlight"), N_("WB_RB levels evening sunlight"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0130, "WB_RBLevelsDaylightFluor", N_("WB_RB Levels Daylight Fluor"), N_("WB_RB levels daylight fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0131, "WB_RBLevelsDayWhiteFluor", N_("WB_RB Levels Day White Fluor"), N_("WB_RB levels day white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0132, "WB_RBLevelsCoolWhiteFluor", N_("WB_RB Levels Cool White Fluor"), N_("WB_RB levels cool white fluor"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0133, "WB_RBLevelsWhiteFluorescent", N_("WB_RB Levels White Fluorescent"), N_("WB_RB levels white fluorescent"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0200, "ColorMatrix2", N_("Color Matrix2"), N_("Color matrix 2"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0310, "CoringFilter", N_("Coring Filter"), N_("Coring filter"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0311, "CoringValues", N_("Coring Values"), N_("Coring values"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0600, "BlackLevel2", N_("Black Level 2"), N_("Black level 2"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0601, "YCbCrCoefficients", N_("YCbCr Coefficients"), N_("YCbCr coefficients"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0611, "ValidPixelDepth", N_("Valid Pixel Depth"), N_("Valid pixel depth"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0612, "CropLeft", N_("Crop Left"), N_("Crop left"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0613, "CropTop", N_("Crop Top"), N_("Crop top"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0614, "CropWidth", N_("Crop Width"), N_("Crop width"), olympusRiId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0615, "CropHeight", N_("Crop Height"), N_("Crop height"), olympusRiId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x1000, "LightSource", N_("Light Source"), N_("Light source"), olympusRiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(olympusRiLightSource)), + TagInfo(0x1001, "WhiteBalanceComp", N_("White Balance Comp"), N_("White balance comp"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x1010, "SaturationSetting", N_("Saturation Setting"), N_("Saturation setting"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x1011, "HueSetting", N_("Hue Setting"), N_("Hue setting"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x1012, "ContrastSetting", N_("Contrast Setting"), N_("Contrast setting"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x1013, "SharpnessSetting", N_("Sharpness Setting"), N_("Sharpness setting"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x2000, "CMExposureCompensation", N_("CM Exposure Compensation"), N_("CM exposure compensation"), olympusRiId, makerTags, signedRational, -1, printValue), + TagInfo(0x2001, "CMWhiteBalance", N_("CM White Balance"), N_("CM white balance"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x2002, "CMWhiteBalanceComp", N_("CM White Balance Comp"), N_("CM white balance comp"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x2010, "CMWhiteBalanceGrayPoint", N_("CM White Balance Gray Point"), N_("CM white balance gray point"), olympusRiId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x2020, "CMSaturation", N_("CM Saturation"), N_("CM saturation"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x2021, "CMHue", N_("CM Hue"), N_("CM hue"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x2022, "CMContrast", N_("CM Contrast"), N_("CM contrast"), olympusRiId, makerTags, signedShort, -1, printValue), + TagInfo(0x2023, "CMSharpness", N_("CM Sharpness"), N_("CM sharpness"), olympusRiId, makerTags, signedShort, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownOlympusRiTag)", "(UnknownOlympusRiTag)", N_("Unknown OlympusRi tag"), olympusRiId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListRi() + { + return tagInfoRi_; + } + + // Gradation + std::ostream& OlympusMakerNote::print0x050f(std::ostream& os, const Value& value, const ExifData*) + { + if ( !(value.count() == 3 || value.count() == 4) + || value.typeId() != signedShort) { + return os << value; + } + + if (value.toLong(0) == -1 && value.toLong(1) == -1 && value.toLong(2) == 1) os << _("Low Key"); + else if (value.toLong(0) == 0 && value.toLong(1) == -1 && value.toLong(2) == 1) os << _("Normal"); + else if (value.toLong(0) == 1 && value.toLong(1) == -1 && value.toLong(2) == 1) os << _("High Key"); + else os << value.toLong(0) << " " << value.toLong(1) << " " << value.toLong(2); + + if (value.count() == 4) { + switch (value.toLong(3)) { + case 0: os << ", " << _("User-Selected"); break; + case 1: os << ", " << _("Auto-Override"); break; + default: os << value.toLong(3); break; + } + } + return os; + } + + // Olympus CameraSettings tag 0x0527 NoiseFilter + std::ostream& OlympusMakerNote::print0x0527(std::ostream& os, const Value& value, const ExifData*) + { + if ( value.count() != 3 + || value.typeId() != signedShort + || value.toLong(1) != -2 + || value.toLong(2) != 1) { + return os << value; + } + + switch (value.toLong(0)) { + case -2: os << _("Off"); break; + case -1: os << _("Low"); break; + case 0: os << _("Standard"); break; + case 1: os << _("High"); break; + default: os << value.toLong(0); break; + } + + return os; + } + + std::ostream& OlympusMakerNote::print0x0200(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() != 3 || value.typeId() != unsignedLong) { + return os << value; + } + long l0 = value.toLong(0); + switch (l0) { + case 0: os << _("Normal"); break; + case 2: os << _("Fast"); break; + case 3: os << _("Panorama"); break; + default: os << "(" << l0 << ")"; break; + } + if (l0 != 0) { + os << ", "; + long l1 = value.toLong(1); + os << _("Sequence number") << " " << l1; + } + if (l0 != 0 && l0 != 2) { + os << ", "; + long l2 = value.toLong(2); + switch (l2) { + case 1: os << _("Left to right"); break; + case 2: os << _("Right to left"); break; + case 3: os << _("Bottom to top"); break; + case 4: os << _("Top to bottom"); break; + default: os << "(" << l2 << ")"; break; + } + } + return os; + } // OlympusMakerNote::print0x0200 + + std::ostream& OlympusMakerNote::print0x0204(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags of( os.flags() ); + if ( value.count() == 0 + || value.toRational().second == 0) { + return os << "(" << value << ")"; + } + float f = value.toFloat(); + if (f == 0.0 || f == 1.0) return os << _("None"); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << f << "x"; + os.copyfmt(oss); + os.flags(of); + return os; + } // OlympusMakerNote::print0x0204 + + std::ostream& OlympusMakerNote::print0x1015(std::ostream& os, const Value& value, const ExifData*) + { + if (value.typeId() != unsignedShort) { + return os << value; + } + if (value.count() == 1) { + short l0 = (short)value.toLong(0); + if (l0 == 1) { + os << _("Auto"); + } + else { + return os << value; + } + } + else if (value.count() == 2) { + short l0 = (short)value.toLong(0); + short l1 = (short)value.toLong(1); + if (l0 == 1) { + switch (l1) { + case 0: os << _("Auto"); break; + default: os << _("Auto") << " (" << l1 << ")"; break; + } + } + else if (l0 == 2) { + switch (l1) { + case 2: os << _("3000 Kelvin"); break; + case 3: os << _("3700 Kelvin"); break; + case 4: os << _("4000 Kelvin"); break; + case 5: os << _("4500 Kelvin"); break; + case 6: os << _("5500 Kelvin"); break; + case 7: os << _("6500 Kelvin"); break; + case 8: os << _("7500 Kelvin"); break; + default: os << value; break; + } + } + else if (l0 == 3) { + switch (l1) { + case 0: os << _("One-touch"); break; + default: os << value; break; + } + } + else { + return os << value; + } + } + else { + return os << value; + } + return os; + } // OlympusMakerNote::print0x1015 + + //! OlympusEq LensType, tag 0x201 + std::ostream& OlympusMakerNote::print0x0201(std::ostream& os, const Value& value, const ExifData*) + { + // 6 numbers: 0. Make, 1. Unknown, 2. Model, 3. Sub-model, 4-5. Unknown. + // Only the Make, Model and Sub-model are used to determine the lens model + static struct { + byte val[3]; + const char *label; + } lensTypes[] = { + { { 0, 0, 0 }, N_("None") }, + { { 0, 1, 0 }, "Olympus Zuiko Digital ED 50mm F2.0 Macro" }, + { { 0, 1, 1 }, "Olympus Zuiko Digital 40-150mm F3.5-4.5" }, + { { 0, 1, 16 }, "Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6" }, + { { 0, 2, 0 }, "Olympus Zuiko Digital ED 150mm F2.0" }, + { { 0, 2, 16 }, "Olympus M.Zuiko Digital 17mm F2.8 Pancake" }, + { { 0, 3, 0 }, "Olympus Zuiko Digital ED 300mm F2.8" }, + { { 0, 3, 16 }, "Olympus M.Zuiko Digital ED 14-150mm F4.0-5.6" }, + { { 0, 4, 16 }, "Olympus M.Zuiko Digital ED 9-18mm F4.0-5.6" }, + { { 0, 5, 0 }, "Olympus Zuiko Digital 14-54mm F2.8-3.5" }, + { { 0, 5, 1 }, "Olympus Zuiko Digital Pro ED 90-250mm F2.8" }, + { { 0, 5, 16 }, "Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6 L" }, + { { 0, 6, 0 }, "Olympus Zuiko Digital ED 50-200mm F2.8-3.5" }, + { { 0, 6, 1 }, "Olympus Zuiko Digital ED 8mm F3.5 Fisheye" }, + { { 0, 6, 16 }, "Olympus M.Zuiko Digital ED 40-150mm F4.0-5.6" }, + { { 0, 7, 0 }, "Olympus Zuiko Digital 11-22mm F2.8-3.5" }, + { { 0, 7, 1 }, "Olympus Zuiko Digital 18-180mm F3.5-6.3" }, + { { 0, 7, 16 }, "Olympus M.Zuiko Digital ED 12mm F2.0" }, + { { 0, 8, 1 }, "Olympus Zuiko Digital 70-300mm F4.0-5.6" }, + { { 0, 8, 16 }, "Olympus M.Zuiko Digital ED 75-300mm F4.8-6.7" }, + { { 0, 9, 16 }, "Olympus M.Zuiko Digital 14-42mm F3.5-5.6 II" }, + { { 0, 16, 1 }, "Kenko Tokina Reflex 300mm F6.3 MF Macro" }, + { { 0, 16, 16 }, "Olympus M.Zuiko Digital ED 12-50mm F3.5-6.3 EZ" }, + { { 0, 17, 16 }, "Olympus M.Zuiko Digital 45mm F1.8" }, + { { 0, 18, 16 }, "Olympus M.Zuiko Digital ED 60mm F2.8 Macro" }, + { { 0, 19, 16 }, "Olympus M.Zuiko Digital 14-42mm F3.5-5.6 II R" }, + { { 0, 20, 16 }, "Olympus M.Zuiko Digital ED 40-150mm F4.0-5.6 R" }, + { { 0, 21, 0 }, "Olympus Zuiko Digital ED 7-14mm F4.0" }, + { { 0, 21, 16 }, "Olympus M.Zuiko Digital ED 75mm F1.8" }, + { { 0, 22, 16 }, "Olympus M.Zuiko Digital 17mm F1.8" }, + { { 0, 23, 0 }, "Olympus Zuiko Digital Pro ED 35-100mm F2.0" }, + { { 0, 24, 0 }, "Olympus Zuiko Digital 14-45mm F3.5-5.6" }, + { { 0, 24, 16 }, "Olympus M.Zuiko Digital ED 75-300mm F4.8-6.7 II" }, + { { 0, 25, 16 }, "Olympus M.Zuiko Digital ED 12-40mm F2.8 Pro" }, + { { 0, 32, 0 }, "Olympus Zuiko Digital 35mm F3.5 Macro" }, + { { 0, 32, 16 }, "Olympus M.Zuiko Digital ED 40-150mm F2.8 Pro" }, + { { 0, 33, 16 }, "Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6 EZ" }, + { { 0, 34, 0 }, "Olympus Zuiko Digital 17.5-45mm F3.5-5.6" }, + { { 0, 34, 16 }, "Olympus M.Zuiko Digital 25mm F1.8" }, + { { 0, 35, 0 }, "Olympus Zuiko Digital ED 14-42mm F3.5-5.6" }, + { { 0, 35, 16 }, "Olympus M.Zuiko Digital ED 7-14mm F2.8 Pro" }, + { { 0, 36, 0 }, "Olympus Zuiko Digital ED 40-150mm F4.0-5.6" }, + { { 0, 37, 16 }, "Olympus M.Zuiko Digital ED 8mm F1.8 Fisheye Pro" }, + { { 0, 48, 0 }, "Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD" }, + { { 0, 49, 0 }, "Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD" }, + { { 0, 50, 0 }, "Olympus Zuiko Digital ED 14-35mm F2.0 SWD" }, + { { 0, 51, 0 }, "Olympus Zuiko Digital 25mm F2.8" }, + { { 0, 52, 0 }, "Olympus Zuiko Digital ED 9-18mm F4.0-5.6" }, + { { 0, 53, 0 }, "Olympus Zuiko Digital 14-54mm F2.8-3.5 II" }, + { { 1, 1, 0 }, "Sigma 18-50mm F3.5-5.6 DC" }, + { { 1, 1, 16 }, "Sigma 30mm F2.8 EX DN" }, + { { 1, 2, 0 }, "Sigma 55-200mm F4.0-5.6 DC" }, + { { 1, 2, 16 }, "Sigma 19mm F2.8 EX DN" }, + { { 1, 3, 0 }, "Sigma 18-125mm F3.5-5.6 DC" }, + { { 1, 3, 16 }, "Sigma 30mm F2.8 DN | A" }, + { { 1, 4, 0 }, "Sigma 18-125mm F3.5-5.6" }, + { { 1, 4, 16 }, "Sigma 19mm F2.8 DN | A" }, + { { 1, 5, 0 }, "Sigma 30mm F1.4" }, + { { 1, 5, 16 }, "Sigma 60mm F2.8 DN | A" }, + { { 1, 6, 0 }, "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" }, + { { 1, 7, 0 }, "Sigma 105mm F2.8 DG" }, + { { 1, 8, 0 }, "Sigma 150mm F2.8 DG HSM" }, + { { 1, 9, 0 }, "Sigma 18-50mm F2.8 EX DC Macro" }, + { { 1, 16, 0 }, "Sigma 24mm F1.8 EX DG Aspherical Macro" }, + { { 1, 17, 0 }, "Sigma 135-400mm F4.5-5.6 DG ASP APO RF" }, + { { 1, 18, 0 }, "Sigma 300-800mm F5.6 EX DG APO" }, + { { 1, 19, 0 }, "Sigma 30mm F1.4 EX DC HSM" }, + { { 1, 20, 0 }, "Sigma 50-500mm F4.0-6.3 EX DG APO HSM RF" }, + { { 1, 21, 0 }, "Sigma 10-20mm F4.0-5.6 EX DC HSM" }, + { { 1, 22, 0 }, "Sigma 70-200mm F2.8 EX DG Macro HSM II" }, + { { 1, 23, 0 }, "Sigma 50mm F1.4 EX DG HSM" }, + { { 2, 1, 0 }, "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." }, + { { 2, 1, 16 }, "Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS" }, + { { 2, 2, 0 }, "Leica D Summilux 25mm F1.4 Asph." }, + { { 2, 2, 16 }, "Lumix G Vario 45-200mm F4.0-5.6 Mega OIS" }, + { { 2, 3, 0 }, "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph. Mega OIS" }, + { { 2, 3, 1 }, "Leica D Vario Elmar 14-50mm F3.8-5.6 Asph." }, + { { 2, 3, 16 }, "Lumix G Vario HD 14-140mm F4.0-5.8 Asph. Mega OIS" }, + { { 2, 4, 0 }, "Leica D Vario Elmar 14-150mm F3.5-5.6" }, + { { 2, 4, 16 }, "Lumix G Vario 7-14mm F4.0 Asph." }, + { { 2, 5, 16 }, "Lumix G 20mm F1.7 Asph." }, + { { 2, 6, 16 }, "Leica DG Macro-Elmarit 45mm F2.8 Asph. Mega OIS" }, + { { 2, 7, 16 }, "Lumix G Vario 14-42mm F3.5-5.6 Asph. Mega OIS" }, + { { 2, 8, 16 }, "Lumix G Fisheye 8mm F3.5" }, + { { 2, 9, 16 }, "Lumix G Vario 100-300mm F4.0-5.6 Mega OIS" }, + { { 2, 16, 16 }, "Lumix G 14mm F2.5 Asph." }, + { { 2, 17, 16 }, "Lumix G 3D 12.5mm F12" }, + { { 2, 18, 16 }, "Leica DG Summilux 25mm F1.4 Asph." }, + { { 2, 19, 16 }, "Lumix G X Vario PZ 45-175mm F4.0-5.6 Asph. Power OIS" }, + { { 2, 20, 16 }, "Lumix G X Vario PZ 14-42mm F3.5-5.6 Asph. Power OIS" }, + { { 2, 21, 16 }, "Lumix G X Vario 12-35mm F2.8 Asph. Power OIS" }, + { { 2, 22, 16 }, "Lumix G Vario 45-150mm F4.0-5.6 Asph. Mega OIS" }, + { { 2, 23, 16 }, "Lumix G X Vario 35-100mm F2.8 Power OIS" }, + { { 2, 24, 16 }, "Lumix G Vario 14-42mm F3.5-5.6 II Asph. Mega OIS" }, + { { 2, 25, 16 }, "Lumix G Vario 14-140mm F3.5-5.6 Asph. Power OIS" }, + { { 2, 32, 16 }, "Lumix G Vario 12-32mm F3.5-5.6 Asph. Mega OIS" }, + { { 2, 33, 16 }, "Leica DG Nocticron 42.5mm F1.2 Asph. Power OIS" }, + { { 2, 34, 16 }, "Leica DG Summilux 15mm F1.7 Asph." }, + { { 2, 36, 16 }, "Lumix G Macro 30mm F2.8 Asph. Mega OIS" }, + { { 2, 37, 16 }, "Lumix G 42.5mm F1.7 Asph. Power OIS" }, + { { 3, 1, 0 }, "Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph." }, + { { 3, 2, 0 }, "Leica D Summilux 25mm F1.4 Asph." }, + { { 5, 1, 16 }, "Tamron 14-150mm F3.5-5.8 Di III" }, + // End of list marker + { { 0xff, 0, 0 }, "" } + }; + + if (value.count() != 6 || value.typeId() != unsignedByte) { + return os << value; + } + + byte v0 = (byte)value.toLong(0); + byte v2 = (byte)value.toLong(2); + byte v3 = (byte)value.toLong(3); + + for (int i = 0; lensTypes[i].val[0] != 0xff; i++) { + if (lensTypes[i].val[0] == v0 && + lensTypes[i].val[1] == v2 && + lensTypes[i].val[2] == v3) { + return os << lensTypes[i].label; + } + } + return os << value; + } // OlympusMakerNote::print0x0201 + + // Olympus tag 0x0209 CameraID + std::ostream& OlympusMakerNote::print0x0209(std::ostream& os, const Value& value, const ExifData*) + { + if (value.typeId() != asciiString && value.typeId() != undefined) { + return os << value; + } + + char ch; + int size = value.size(); + for (int i = 0; i < size && ((ch = (char)value.toLong(i)) != '\0'); i++) { + os << ch; + } + return os; + } // OlympusMakerNote::print0x0209 + + //! OlympusEq Extender, tag 0x0301 + std::ostream& OlympusMakerNote::printEq0x0301(std::ostream& os, const Value& value, const ExifData*) + { + // 6 numbers: 0. Make, 1. Unknown, 2. Model, 3. Sub-model, 4-5. Unknown. + // Only the Make and Model are used to determine the extender model + static struct { + byte val[2]; + const char *label; + } extenderModels[] = { + { { 0, 0 }, N_("None") }, + { { 0, 4 }, "Olympus Zuiko Digital EC-14 1.4x Teleconverter" }, + { { 0, 8 }, "Olympus EX-25 Extension Tube" }, + { { 0, 16 },"Olympus Zuiko Digital EC-20 2.0x Teleconverter" }, + // End of list marker + { { 0xff, 0 }, "" } + }; + + if (value.count() != 6 || value.typeId() != unsignedByte) { + return os << value; + } + + byte v0 = (byte)value.toLong(0); + byte v2 = (byte)value.toLong(2); + + for (int i = 0; extenderModels[i].val[0] != 0xff; i++) { + if (extenderModels[i].val[0] == v0 && + extenderModels[i].val[1] == v2) { + return os << extenderModels[i].label; + } + } + return os << value; + } // OlympusMakerNote::printEq0x0301 + + //! OlympusCs FocusMode, tag 0x0301 + // (1 or 2 values) + std::ostream& OlympusMakerNote::printCs0x0301(std::ostream& os, const Value& value, const ExifData*) + { + static struct { + uint16_t val; + const char *label; + } focusModes0[] = { + { 0, N_("Single AF") }, + { 1, N_("Sequential shooting AF") }, + { 2, N_("Continuous AF") }, + { 3, N_("Multi AF") }, + { 4, N_("Face detect") }, + { 10, N_("MF") }, + // End of list marker + { 0xff, "" } + }; + static struct { + uint16_t val; + const char *label; + } focusModes1[] = { + { 0x0001, N_("S-AF") }, + { 0x0004, N_("C-AF") }, + { 0x0010, N_("MF") }, + { 0x0020, N_("Face detect") }, + { 0x0040, N_("Imager AF") }, + { 0x0100, N_("AF sensor") }, + // End of list marker + { 0, "" } + }; + + if (value.count() < 1 || value.typeId() != unsignedShort) { + return os << "(" << value << ")"; + } else { + uint16_t v = (uint16_t)value.toLong(0); + + // If value 2 is present, it is used instead of value 1. + if (value.count() > 1) { + std::string p = ""; // Used to enable ',' separation + + v = (uint16_t)value.toLong(1); + for (int i = 0; focusModes1[i].val != 0; i++) { + if ((v & focusModes1[i].val) != 0) { + if (p.size() > 0) { + os << ", "; + } + p = focusModes1[i].label; + os << p; + } + } + } else { + for (int i = 0; focusModes0[i].val != 0xff; i++) { + if (focusModes0[i].val == v) { + os << focusModes0[i].label; + break; + } + } + } + return os << v; + } + } // OlympusMakerNote::printCs0x0301 + + //! OlympusCs ArtFilter, tag 0x0529, OlympusCs MagicFilter, tag 0x052c + std::ostream& OlympusMakerNote::print0x0529(std::ostream& os, const Value& value, const ExifData*) + { + static struct { + uint16_t val[2]; + const char *label; + } artFilters[] = { + { { 0, 0}, N_("Off") }, + { { 0, 1280}, N_("Off") }, + { { 1, 1280}, N_("Soft Focus") }, + { { 2, 1280}, N_("Pop Art") }, + { { 3, 1280}, N_("Pale & Light Color") }, + { { 4, 1280}, N_("Light Tone") }, + { { 5, 1280}, N_("Pin Hole") }, + { { 6, 1280}, N_("Grainy Film") }, + { { 9, 1280}, N_("Diorama") }, + { { 10, 1280}, N_("Cross Process") }, + { { 12, 1280}, N_("Fish Eye") }, + { { 13, 1280}, N_("Drawing") }, + { { 14, 1280}, N_("Gentle Sepia") }, + { { 15, 1280}, N_("Pale & Light Color II") }, + { { 16, 1280}, N_("Pop Art II") }, + { { 17, 1280}, N_("Pin Hole II") }, + { { 18, 1280}, N_("Pin Hole III") }, + { { 19, 1280}, N_("Grainy Film II") }, + { { 20, 1280}, N_("Dramatic Tone") }, + { { 21, 1280}, N_("Punk") }, + { { 22, 1280}, N_("Soft Focus 2") }, + { { 23, 1280}, N_("Sparkle") }, + { { 24, 1280}, N_("Watercolor") }, + { { 25, 1280}, N_("Key Line") }, + { { 26, 1280}, N_("Key Line II") }, + { { 27, 1280}, N_("Miniature") }, + { { 28, 1280}, N_("Reflection") }, + { { 29, 1280}, N_("Fragmented") }, + { { 31, 1280}, N_("Cross Process II") }, + { { 32, 1280}, N_("Dramatic Tone II") }, + { { 33, 1280}, N_("Watercolor I") }, + { { 34, 1280}, N_("Watercolor II") }, + { { 35, 1280}, N_("Diorama II") }, + { { 36, 1280}, N_("Vintage") }, + { { 37, 1280}, N_("Vintage II") }, + { { 38, 1280}, N_("Vintage III") }, + { { 39, 1280}, N_("Partial Color") }, + { { 40, 1280}, N_("Partial Color II") }, + { { 41, 1280}, N_("Partial Color III") }, + // End of list marker + { { 0xffff, 0 }, "" } + }; + + if (value.count() != 4 || value.typeId() != unsignedShort) { + return os << value; + } + + uint16_t v0 = (uint16_t)value.toLong(0); + uint16_t v1 = (uint16_t)value.toLong(1); + + for (int i = 0; artFilters[i].val[0] != 0xffff; i++) { + if (artFilters[i].val[0] == v0 && + artFilters[i].val[1] == v1) { + return os << artFilters[i].label; + } + } + return os << ""; + } // OlympusMakerNote::print0x0529 + + // Olympus FocusInfo tag 0x1209 ManualFlash + std::ostream& OlympusMakerNote::print0x1209(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() != 2 || value.typeId() != unsignedShort) { + return os << value; + } + + switch (value.toLong(0)) { + case 0: os << _("Off"); break; + case 1: os << _("On"); break; + default: os << value.toLong(0); break; + } + os << " "; + os << value.toLong(1); + + return os; + } // OlympusMakerNote::print0x1209 + + // Olympus FocusDistance 0x0305 + std::ostream& OlympusMakerNote::print0x0305(std::ostream& os, const Value& value, const ExifData*) { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedRational) { + os.flags(f); + return os << value; + } + + Rational distance = value.toRational(); + if(static_cast(distance.first) == 0xffffffff) { + os << _("Infinity"); + } + else { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2); + os << (float)distance.first/1000 << " m"; + os.copyfmt(oss); + } + os.flags(f); + return os; + } + + // Olympus FocusInfo tag 0x0308 AFPoint + std::ostream& OlympusMakerNote::print0x0308(std::ostream& os, const Value& +value, const ExifData* metadata) + { + static struct { + uint16_t val; + const char *label; + } afPoints[] = { + { 0, N_("Left (or n/a)") }, + { 1, N_("Center (horizontal)") }, + { 2, N_("Right") }, + { 3, N_("Center (vertical)") }, + { 255, N_("None") }, + // End of list marker + { 0xffff, "" } + }; + + static struct { + byte val; + const char *label; + } afPointsE3[] = { + { 0x00, N_("None") }, + { 0x01, N_("Top-left (horizontal)") }, + { 0x02, N_("Top-center (horizontal)") }, + { 0x03, N_("Top-right (horizontal)") }, + { 0x04, N_("Left (horizontal)") }, + { 0x05, N_("Mid-left (horizontal)") }, + { 0x06, N_("Center (horizontal)") }, + { 0x07, N_("Mid-right (horizontal)") }, + { 0x08, N_("Right (horizontal)") }, + { 0x09, N_("Bottom-left (horizontal)") }, + { 0x0a, N_("Bottom-center (horizontal)") }, + { 0x0b, N_("Bottom-right (horizontal)") }, + { 0x0c, N_("Top-left (vertical)") }, + { 0x0d, N_("Top-center (vertical)") }, + { 0x0e, N_("Top-right (vertical)") }, + { 0x0f, N_("Left (vertical)") }, + { 0x10, N_("Mid-left (vertical)") }, + { 0x11, N_("Center (vertical)") }, + { 0x12, N_("Mid-right (vertical)") }, + { 0x13, N_("Right (vertical)") }, + { 0x14, N_("Bottom-left (vertical)") }, + { 0x15, N_("Bottom-center (vertical)") }, + { 0x16, N_("Bottom-right (vertical)") }, + // End of list marker + { 0xff, "" } + }; + + if (value.count() != 1 || value.typeId() != unsignedShort) { + return os << value; + } + + bool E3_E30model = false; + + if (metadata != NULL) { + ExifData::const_iterator pos = metadata->findKey(ExifKey("Exif.Image.Model")); + if (pos != metadata->end() && pos->count() != 0) { + std::string model = pos->toString(); + if (model.find("E-3 ") != std::string::npos || + model.find("E-30 ") != std::string::npos) { + E3_E30model = true; + } + } + } + + uint16_t v = (uint16_t) value.toLong(0); + + if (!E3_E30model) { + for (int i = 0; afPoints[i].val != 0xffff; i++) { + if (afPoints[i].val == v) { + return os << afPoints[i].label; + } + } + } else { + + // E-3 and E-30 + for (int i = 0; afPointsE3[i].val != 0xff; i++) { + if (afPointsE3[i].val == (v & 0x1f)) { + os << afPointsE3[i].label; + os << ", "; + if ((v & 0xe0) == 0) return os << N_("Single Target"); + if (v & 0x40) return os << N_("All Target"); + if (v & 0x80) return os << N_("Dynamic Single Target"); + } + } + } + return os << v; + } // OlympusMakerNote::print0x0308 + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/olympusmn_int.hpp b/vendor/exiv2-0.25/src/olympusmn_int.hpp new file mode 100644 index 0000000..b9efd48 --- /dev/null +++ b/vendor/exiv2-0.25/src/olympusmn_int.hpp @@ -0,0 +1,130 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file olympusmn_int.hpp + @brief Olympus makernote tags.
References:
+ [1] Exif file format, Appendix 1: MakerNote of Olympus Digicams by TsuruZoh Tachibanaya
+ [2] ExifTool by Phil Harvey
+ [3] Olympus Makernote Format Specification by Evan Hunter
+ [4] email communication with Will Stokes + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Will Stokes (wuz) + wstokes@gmail.com + @author Gilles Caulier (gc) + caulier dot gilles at gmail dot com + @author Greg Mansfield + G.Mansfield at computer dot org + @date 10-Mar-05, wuz: created + */ +#ifndef OLYMPUSMN_INT_HPP_ +#define OLYMPUSMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Olympus cameras + class OlympusMakerNote { + public: + //! Return read-only list of built-in Olympus tags + static const TagInfo* tagList(); + //! Return read-only list of built-in Olympus Camera Settings tags + static const TagInfo* tagListCs(); + //! Return read-only list of built-in Olympus Equipment tags + static const TagInfo* tagListEq(); + //! Return read-only list of built-in Olympus Raw Development tags + static const TagInfo* tagListRd(); + //! Return read-only list of built-in Olympus Raw Development 2 tags + static const TagInfo* tagListRd2(); + //! Return read-only list of built-in Olympus Image Processing tags + static const TagInfo* tagListIp(); + //! Return read-only list of built-in Olympus Focus Info tags + static const TagInfo* tagListFi(); + //! Return read-only list of built-in Olympus FE tags + static const TagInfo* tagListFe(); + //! Return read-only list of built-in Olympus Raw Info tags + static const TagInfo* tagListRi(); + + //! @name Print functions for Olympus %MakerNote tags + //@{ + //! Print 'Special Mode' + static std::ostream& print0x0200(std::ostream& os, const Value& value, const ExifData*); + //! Print Digital Zoom Factor + static std::ostream& print0x0204(std::ostream& os, const Value& value, const ExifData*); + //! Print White Balance Mode + static std::ostream& print0x1015(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus equipment Lens type + static std::ostream& print0x0201(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus CamerID + static std::ostream& print0x0209(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus equipment Extender + static std::ostream& printEq0x0301(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus camera settings Focus Mode + static std::ostream& printCs0x0301(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus camera settings Gradation + static std::ostream& print0x050f(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus camera settings Noise Filter + static std::ostream& print0x0527(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus ArtFilter + static std::ostream& print0x0529(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus focus info ManualFlash + static std::ostream& print0x1209(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus focus distance + static std::ostream& print0x0305(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus focus info AF Point + static std::ostream& print0x0308(std::ostream& os, const Value& value, const ExifData*); + //! Print Olympus generic + static std::ostream& printGeneric(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Tag information + static const TagInfo tagInfo_[]; + static const TagInfo tagInfoCs_[]; + static const TagInfo tagInfoEq_[]; + static const TagInfo tagInfoRd_[]; + static const TagInfo tagInfoRd2_[]; + static const TagInfo tagInfoIp_[]; + static const TagInfo tagInfoFi_[]; + static const TagInfo tagInfoFe_[]; + static const TagInfo tagInfoRi_[]; + + }; // class OlympusMakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef OLYMPUSMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/orfimage.cpp b/vendor/exiv2-0.25/src/orfimage.cpp new file mode 100644 index 0000000..7d3c56b --- /dev/null +++ b/vendor/exiv2-0.25/src/orfimage.cpp @@ -0,0 +1,284 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: orfimage.cpp + Version: $Rev: 3846 $ + Author(s): Andreas Huggel (ahu) + History: 13-May-06, ahu: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: orfimage.cpp 3846 2015-06-08 14:39:59Z ahuggel $") + +// included header files +#include "config.h" + +#include "orfimage.hpp" +#include "orfimage_int.hpp" +#include "tiffcomposite_int.hpp" +#include "tiffimage_int.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + OrfImage::OrfImage(BasicIo::AutoPtr io, bool /*create*/) + : Image(ImageType::orf, mdExif | mdIptc | mdXmp, io) + { + } // OrfImage::OrfImage + + std::string OrfImage::mimeType() const + { + return "image/x-olympus-orf"; + } + + int OrfImage::pixelWidth() const + { + ExifData::const_iterator imageWidth = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageWidth")); + if (imageWidth != exifData_.end() && imageWidth->count() > 0) { + return imageWidth->toLong(); + } + return 0; + } + + int OrfImage::pixelHeight() const + { + ExifData::const_iterator imageHeight = exifData_.findKey(Exiv2::ExifKey("Exif.Image.ImageLength")); + if (imageHeight != exifData_.end() && imageHeight->count() > 0) { + return imageHeight->toLong(); + } + return 0; + } + + void OrfImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "ORF")); + } + + void OrfImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading ORF file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isOrfType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "ORF"); + } + clearMetadata(); + ByteOrder bo = OrfParser::decode(exifData_, + iptcData_, + xmpData_, + io_->mmap(), + io_->size()); + setByteOrder(bo); + } // OrfImage::readMetadata + + void OrfImage::writeMetadata() + { +#ifdef DEBUG + std::cerr << "Writing ORF file " << io_->path() << "\n"; +#endif + ByteOrder bo = byteOrder(); + byte* pData = 0; + long size = 0; + IoCloser closer(*io_); + if (io_->open() == 0) { + // Ensure that this is the correct image type + if (isOrfType(*io_, false)) { + pData = io_->mmap(true); + size = io_->size(); + OrfHeader orfHeader; + if (0 == orfHeader.read(pData, 8)) { + bo = orfHeader.byteOrder(); + } + } + } + if (bo == invalidByteOrder) { + bo = littleEndian; + } + setByteOrder(bo); + OrfParser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw + } // OrfImage::writeMetadata + + ByteOrder OrfParser::decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ) + { + OrfHeader orfHeader; + return TiffParserWorker::decode(exifData, + iptcData, + xmpData, + pData, + size, + Tag::root, + TiffMapping::findDecoder, + &orfHeader); + } + + WriteMethod OrfParser::encode( + BasicIo& io, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData + ) + { + // Copy to be able to modify the Exif data + ExifData ed = exifData; + + // Delete IFDs which do not occur in TIFF images + static const IfdId filteredIfds[] = { + panaRawId + }; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { +#ifdef DEBUG + std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; +#endif + ed.erase(std::remove_if(ed.begin(), + ed.end(), + FindExifdatum(filteredIfds[i])), + ed.end()); + } + + std::auto_ptr header(new OrfHeader(byteOrder)); + return TiffParserWorker::encode(io, + pData, + size, + ed, + iptcData, + xmpData, + Tag::root, + TiffMapping::findEncoder, + header.get(), + 0); + } + + // ************************************************************************* + // free functions + Image::AutoPtr newOrfInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new OrfImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isOrfType(BasicIo& iIo, bool advance) + { + const int32_t len = 8; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + OrfHeader orfHeader; + bool rc = orfHeader.read(buf, len); + if (!advance || !rc) { + iIo.seek(-len, BasicIo::cur); + } + return rc; + } + +} // namespace Exiv2 + +namespace Exiv2 { + namespace Internal { + + OrfHeader::OrfHeader(ByteOrder byteOrder) + : TiffHeaderBase(0x4f52, 8, byteOrder, 0x00000008), + sig_(0x4f52) + { + } + + OrfHeader::~OrfHeader() + { + } + + bool OrfHeader::read(const byte* pData, uint32_t size) + { + if (size < 8) return false; + + if (pData[0] == 0x49 && pData[1] == 0x49) { + setByteOrder(littleEndian); + } + else if (pData[0] == 0x4d && pData[1] == 0x4d) { + setByteOrder(bigEndian); + } + else { + return false; + } + uint16_t sig = getUShort(pData + 2, byteOrder()); + if (tag() != sig && 0x5352 != sig) return false; // #658: Added 0x5352 for SP-560UZ + sig_ = sig; + setOffset(getULong(pData + 4, byteOrder())); + if (offset() != 0x00000008) return false; + + return true; + } // OrfHeader::read + + DataBuf OrfHeader::write() const + { + DataBuf buf(8); + switch (byteOrder()) { + case littleEndian: + buf.pData_[0] = 0x49; + buf.pData_[1] = 0x49; + break; + case bigEndian: + buf.pData_[0] = 0x4d; + buf.pData_[1] = 0x4d; + break; + case invalidByteOrder: + assert(false); + break; + } + us2Data(buf.pData_ + 2, sig_, byteOrder()); + ul2Data(buf.pData_ + 4, 0x00000008, byteOrder()); + return buf; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/orfimage_int.hpp b/vendor/exiv2-0.25/src/orfimage_int.hpp new file mode 100644 index 0000000..86d9b4e --- /dev/null +++ b/vendor/exiv2-0.25/src/orfimage_int.hpp @@ -0,0 +1,75 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file orfimage_int.hpp + @brief Internal classes to support Olympus RAW image format + @version $Rev: 3777 $ + @author Jeff Costlow + costlow@gmail.com + @date 31-Jul-07, costlow: created + 23-Apr-08, ahu: Moved to _int file + */ +#ifndef ORFIMAGE_INT_HPP_ +#define ORFIMAGE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tiffimage_int.hpp" +#include "types.hpp" + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief Olympus ORF header structure. + */ + class OrfHeader : public TiffHeaderBase { + public: + //! @name Creators + //@{ + //! Default constructor + OrfHeader(ByteOrder byteOrder =littleEndian); + //! Destructor. + ~OrfHeader(); + //@} + + //! @name Manipulators + //@{ + bool read(const byte* pData, uint32_t size); + //@} + + //! @name Accessors + //@{ + DataBuf write() const; + //@} + private: + // DATA + uint16_t sig_; // + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: panasonicmn.cpp + Version: $Rev: 3831 $ + Author(s): Andreas Huggel (ahu) + Gilles Caulier (gc) + History: 11-Jun-04, ahu: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: panasonicmn.cpp 3831 2015-05-20 01:27:32Z asp $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "panasonicmn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! Quality, tag 0x0001 + extern const TagDetails panasonicQuality[] = { + { 1, N_("TIFF") }, + { 2, N_("High") }, + { 3, N_("Normal") }, + { 6, N_("Very High") }, + { 7, N_("Raw") }, + { 9, N_("Motion Picture") }, + { 11, N_("Full HD Movie") }, + { 12, N_("4k Movie") } + }; + + //! WhiteBalance, tag 0x0003 + extern const TagDetails panasonicWhiteBalance[] = { + { 1, N_("Auto") }, + { 2, N_("Daylight") }, + { 3, N_("Cloudy") }, + { 4, N_("Halogen") }, + { 5, N_("Manual") }, + { 8, N_("Flash") }, + { 10, N_("Black and white") }, + { 11, N_("Manual") }, + { 12, N_("Shade") }, + { 13, N_("Kelvin") } + }; + + //! FocusMode, tag 0x0007 + extern const TagDetails panasonicFocusMode[] = { + { 1, N_("Auto") }, + { 2, N_("Manual") }, + { 4, N_("Auto, focus button") }, + { 5, N_("Auto, continuous") }, + { 6, N_("AF-S") }, + { 7, N_("AF-C") }, + { 8, N_("AF-F") } + }; + + //! ImageStabilizer, tag 0x001a + extern const TagDetails panasonicImageStabilizer[] = { + { 2, N_("On, Mode 1") }, + { 3, N_("Off") }, + { 4, N_("On, Mode 2") }, + { 5, N_("Panning") }, + { 6, N_("On, Mode 3") }, + }; + + //! Macro, tag 0x001c + extern const TagDetails panasonicMacro[] = { + { 1, N_("On") }, + { 2, N_("Off") }, + { 257, N_("Tele-macro") }, + { 513, N_("Macro-zoom") } + }; + + //! ShootingMode, tag 0x001f and SceneMode, tag 0x8001 + extern const TagDetails panasonicShootingMode[] = { + { 0, N_("Off") }, // only SceneMode + { 1, N_("Normal") }, + { 2, N_("Portrait") }, + { 3, N_("Scenery") }, + { 4, N_("Sports") }, + { 5, N_("Night portrait") }, + { 6, N_("Program") }, + { 7, N_("Aperture priority") }, + { 8, N_("Shutter-speed priority") }, + { 9, N_("Macro") }, + { 10, N_("Spot") }, + { 11, N_("Manual") }, + { 12, N_("Movie preview") }, + { 13, N_("Panning") }, + { 14, N_("Simple") }, + { 15, N_("Color effects") }, + { 16, N_("Self Portrait") }, + { 17, N_("Economy") }, + { 18, N_("Fireworks") }, + { 19, N_("Party") }, + { 20, N_("Snow") }, + { 21, N_("Night scenery") }, + { 22, N_("Food") }, + { 23, N_("Baby") }, + { 24, N_("Soft skin") }, + { 25, N_("Candlelight") }, + { 26, N_("Starry night") }, + { 27, N_("High sensitivity") }, + { 28, N_("Panorama assist") }, + { 29, N_("Underwater") }, + { 30, N_("Beach") }, + { 31, N_("Aerial photo") }, + { 32, N_("Sunset") }, + { 33, N_("Pet") }, + { 34, N_("Intelligent ISO") }, + { 35, N_("Clipboard") }, + { 36, N_("High speed continuous shooting") }, + { 37, N_("Intelligent auto") }, + { 39, N_("Multi-aspect") }, + { 41, N_("Transform") }, + { 42, N_("Flash Burst") }, + { 43, N_("Pin Hole") }, + { 44, N_("Film Grain") }, + { 45, N_("My Color") }, + { 46, N_("Photo Frame") }, + { 51, N_("HDR") }, + { 55, N_("Handheld Night Shot") }, + { 57, N_("3D") }, + { 59, N_("Creative Control") }, + { 62, N_("Panorama") }, + { 63, N_("Glass Through") }, + { 64, N_("HDR") }, + { 66, N_("Digital Filter") }, + { 67, N_("Clear Portrait") }, + { 68, N_("Silky Skin") }, + { 69, N_("Backlit Softness") }, + { 70, N_("Clear in Backlight") }, + { 71, N_("Relaxing Tone") }, + { 72, N_("Sweet Child's Face") }, + { 73, N_("Distinct Scenery") }, + { 74, N_("Bright Blue Sky") }, + { 75, N_("Romantic Sunset Glow") }, + { 76, N_("Vivid Sunset Glow") }, + { 77, N_("Glistening Water") }, + { 78, N_("Clear Nightscape") }, + { 79, N_("Cool Night Sky") }, + { 80, N_("Warm Glowing Nightscape") }, + { 81, N_("Artistic Nightscape") }, + { 82, N_("Glittering Illuminations") }, + { 83, N_("Clear Night Portrait") }, + { 84, N_("Soft Image of a Flower") }, + { 85, N_("Appetizing Food") }, + { 86, N_("Cute Desert") }, + { 87, N_("Freeze Animal Motion") }, + { 88, N_("Clear Sports Shot") }, + { 89, N_("Monochrome") }, + { 90, N_("Creative Control") } + }; + + //! Audio, tag 0x0020 + extern const TagDetails panasonicAudio[] = { + { 1, N_("Yes") }, + { 2, N_("No") }, + { 3, N_("Stereo") } + }; + + //! ColorEffect, tag 0x0028 + extern const TagDetails panasonicColorEffect[] = { + { 1, N_("Off") }, + { 2, N_("Warm") }, + { 3, N_("Cool") }, + { 4, N_("Black and white") }, + { 5, N_("Sepia") }, + { 6, N_("Happy") } + }; + + //! BustMode, tag 0x002a + extern const TagDetails panasonicBurstMode[] = { + { 0, N_("Off") }, + { 1, N_("Low/High quality") }, + { 2, N_("Infinite") } + }; + + //! Contrast, tag 0x002c + extern const TagDetails panasonicContrast[] = { + { 0, N_("Normal") }, + { 1, N_("Low") }, + { 2, N_("High") }, + { 6, N_("Medium low") }, + { 7, N_("Medium high") }, + { 256, N_("Low") }, + { 272, N_("Standard") }, + { 288, N_("High") }, + { 288, N_("High") } // To silence compiler warning + }; + + //! NoiseReduction, tag 0x002d + extern const TagDetails panasonicNoiseReduction[] = { + { 0, N_("Standard") }, + { 1, N_("Low (-1)") }, + { 2, N_("High (+1)") }, + { 3, N_("Lowest (-2)") }, + { 4, N_("Highest (+2)") } + }; + + //! SelfTimer, tag 0x002e + extern const TagDetails panasonicSelfTimer[] = { + { 1, N_("Off") }, + { 2, "10 s" }, + { 3, "2 s" }, + { 4, "10 s / 3 pictures" } + }; + + //! Rotation, tag 0x0030 + extern const TagDetails panasonicRotation[] = { + { 1, N_("Horizontal (normal)") }, + { 3, N_("Rotate 180") }, + { 6, N_("Rotate 90 CW") }, + { 8, N_("Rotate 270 CW") } + }; + + //! AFAssistLamp, tag 0x0031 + extern const TagDetails panasonicAFAssistLamp[] = { + { 1, N_("Fired") }, + { 2, N_("Enabled but Not Used") }, + { 3, N_("Disabled but Required") }, + { 4, N_("Disabled and Not Required") } + }; + + //! ColorMode, tag 0x0032 + extern const TagDetails panasonicColorMode[] = { + { 0, N_("Normal") }, + { 1, N_("Natural") }, + { 2, N_("Vivid") } + }; + + //! OpticalZoomMode, tag 0x0034 + extern const TagDetails panasonicOpticalZoomMode[] = { + { 1, N_("Standard") }, + { 2, N_("EX optics") } + }; + + //! ConversionLens, tag 0x0035 + extern const TagDetails panasonicConversionLens[] = { + { 1, N_("Off") }, + { 2, N_("Wide") }, + { 3, N_("Telephoto") }, + { 4, N_("Macro") }, + { 4, N_("Macro") } // To silence compiler warning + }; + + //! WorldTimeLocation, tag 0x003a + extern const TagDetails panasonicWorldTimeLocation[] = { + { 1, N_("Home") }, + { 2, N_("Destination") } + }; + + //! TextStamp, tag 0x003b, 0x003e, 000x8008 and 0x8009 + extern const TagDetails panasonicTextStamp[] = { + { 1, N_("Off") }, + { 2, N_("On") } + }; + + //! FilmMode, tag 0x0042 + extern const TagDetails panasonicFilmMode[] = { + { 1, N_("Standard (color)") }, + { 2, N_("Dynamic (color)") }, + { 3, N_("Nature (color)") }, + { 4, N_("Smooth (color)") }, + { 5, N_("Standard (B&W)") }, + { 6, N_("Dynamic (B&W)") }, + { 7, N_("Smooth (B&W)") }, + { 10, N_("Nostalgic") }, + { 11, N_("Vibrant") } + }; + + //! Bracket Settings, tag 0x0045 + extern const TagDetails panasonicBracketSettings[] = { + { 0, N_("No Bracket") }, + { 1, N_("3 images, Sequence 0/-/+") }, + { 2, N_("3 images, Sequence -/0/+") }, + { 3, N_("5 images, Sequence 0/-/+") }, + { 4, N_("5 images, Sequence -/0/+") }, + { 5, N_("7 images, Sequence 0/-/+") }, + { 6, N_("7 images, Sequence -/0/+") } + }; + + //! Flash curtain, tag 0x0048 + extern const TagDetails panasonicFlashCurtain[] = { + { 0, N_("n/a") }, + { 1, N_("1st") }, + { 2, N_("2nd") } + }; + + //! Long Shutter Noise Reduction, tag 0x0049 + extern const TagDetails panasonicLongShutterNoiseReduction[] = { + { 1, N_("Off") }, + { 2, N_("On") } + }; + + //! Intelligent exposure, tag 0x005d + extern const TagDetails panasonicIntelligentExposure[] = { + { 0, N_("Off") }, + { 1, N_("Low") }, + { 2, N_("Standard") }, + { 3, N_("High") } + }; + + //! Flash warning, tag 0x0062 + extern const TagDetails panasonicFlashWarning[] = { + { 0, N_("No") }, + { 1, N_("Yes (flash required but disabled") } + }; + + //! Intelligent resolution, tag 0x0070 + extern const TagDetails panasonicIntelligentResolution[] = { + { 0, N_("Off") }, + { 1, N_("Low") }, + { 2, N_("Standard") }, + { 3, N_("High") }, + { 4, N_("Extended") } + }; + + //! Intelligent D-Range, tag 0x0079 + extern const TagDetails panasonicIntelligentDRange[] = { + { 0, N_("Off") }, + { 1, N_("Low") }, + { 2, N_("Standard") }, + { 3, N_("High") } + }; + + //! Clear Retouch, tag 0x007c + extern const TagDetails panasonicClearRetouch[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Photo Style, tag 0x0089 + extern const TagDetails panasonicPhotoStyle[] = { + { 0, N_("NoAuto") }, + { 1, N_("Standard or Custom") }, + { 2, N_("Vivid") }, + { 3, N_("Natural") }, + { 4, N_("Monochrome") }, + { 5, N_("Scenery") }, + { 6, N_("Portrait") } + }; + + //! Shading compensation, tag 0x008a + extern const TagDetails panasonicShadingCompensation[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Camera orientation, tag 0x008f + extern const TagDetails panasonicCameraOrientation[] = { + { 0, N_("Normal") }, + { 1, N_("Rotate CW") }, + { 2, N_("Rotate 180") }, + { 3, N_("Rotate CCW") }, + { 4, N_("Tilt upwards") }, + { 5, N_("Tilt downwards") } + }; + + //! Sweep panorama direction, tag 0x0093 + extern const TagDetails panasonicSweepPanoramaDirection[] = { + { 0, N_("Off") }, + { 1, N_("Left to Right") }, + { 2, N_("Right to Left") }, + { 3, N_("Top to Bottom") }, + { 4, N_("Bottom to Top") } + }; + + //! Timer recording, tag 0x0096 + extern const TagDetails panasonicTimerRecording[] = { + { 0, N_("Off") }, + { 1, N_("Time Lapse") }, + { 2, N_("Stop-Motion Animation") } + }; + + //! HDR, tag 0x009e + extern const TagDetails panasonicHDR[] = { + { 0, N_("Off") }, + { 100, N_("1 EV") }, + { 200, N_("2 EV") }, + { 300, N_("3 EV") }, + { 32868, N_("1 EV (Auto)") }, + { 32968, N_("2 EV (Auto)") }, + { 33068, N_("3 EV (Auto)") } + }; + + //! Shutter Type, tag 0x009f + extern const TagDetails panasonicShutterType[] = { + { 0, N_("Mechanical") }, + { 1, N_("Electronic") }, + { 2, N_("Hybrid") } + }; + + //! Touch AE, tag 0x00ab + extern const TagDetails panasonicTouchAE[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Flash Fired, tag 0x8007 + extern const TagDetails panasonicFlashFired[] = { + { 1, N_("No") }, + { 2, N_("Yes") } + }; + + // Panasonic MakerNote Tag Info + const TagInfo PanasonicMakerNote::tagInfo_[] = { + TagInfo(0x0001, "Quality", N_("Quality"), N_("Image Quality"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicQuality)), + TagInfo(0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x0003, "WhiteBalance", N_("White Balance"), N_("White balance setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWhiteBalance)), + TagInfo(0x0004, "0x0004", "0x0004", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFocusMode)), + TagInfo(0x000f, "AFMode", N_("AF Mode"), N_("AF mode"), panasonicId, makerTags, unsignedByte, -1, print0x000f), + TagInfo(0x001a, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicImageStabilizer)), + TagInfo(0x001c, "Macro", N_("Macro"), N_("Macro mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicMacro)), + TagInfo(0x001f, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)), + TagInfo(0x0020, "Audio", N_("Audio"), N_("Audio"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAudio)), + TagInfo(0x0021, "DataDump", N_("Data Dump"), N_("Data dump"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x0022, "0x0022", "0x0022", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), panasonicId, makerTags, signedShort, -1, print0x0023), + TagInfo(0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), panasonicId, makerTags, signedShort, -1, printValue), + TagInfo(0x0025, "InternalSerialNumber", N_("Internal Serial Number"), N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed on the camera body."), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x0026, "ExifVersion", "Exif Version", N_("Exif version"), panasonicId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0027, "0x0027", "0x0027", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorEffect)), + TagInfo(0x0029, "TimeSincePowerOn", "Time since Power On", N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), panasonicId, makerTags, unsignedLong, -1, print0x0029), + TagInfo(0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBurstMode)), + TagInfo(0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), panasonicId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)), + TagInfo(0x002d, "NoiseReduction", N_("NoiseReduction"), N_("Noise reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicNoiseReduction)), + TagInfo(0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicSelfTimer)), + TagInfo(0x002f, "0x002f", "0x002f", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0030, "Rotation", N_("Rotation"), N_("Rotation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicRotation)), + TagInfo(0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)), + TagInfo(0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorMode)), + TagInfo(0x0033, "BabyAge1", N_("Baby Age 1"), N_("Baby (or pet) age 1"), panasonicId, makerTags, asciiString, -1, print0x0033), + TagInfo(0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)), + TagInfo(0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)), + TagInfo(0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, print0x0036), + TagInfo(0x0039, "Contrast", N_("Contrast"), N_("Contrast"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)), + TagInfo(0x003b, "TextStamp1", N_("Text Stamp 1"), N_("Text Stamp 1"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), + TagInfo(0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, print0x003c), + TagInfo(0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x003e, "TextStamp2", N_("Text Stamp 2"), N_("Text Stamp 2"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), + TagInfo(0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)), + TagInfo(0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperatur in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)), + TagInfo(0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashCurtain)), + TagInfo(0x0049, "LongShutterNoiseReduction", N_("Long Shutter Noise Reduction"), N_("Long Shutter Noise Reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicLongShutterNoiseReduction)), + TagInfo(0x004b, "ImageWidth", N_("Image width"), N_("Image width"), panasonicId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x004c, "ImageHeight", N_("Image height"), N_("Image height"), panasonicId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), panasonicId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x0051, "LensType", N_("Lens Type"), N_("Lens type"), panasonicId, makerTags, asciiString, -1, printValue), + TagInfo(0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), panasonicId, makerTags, asciiString, -1, printValue), + TagInfo(0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), panasonicId, makerTags, asciiString, -1, printValue), + TagInfo(0x0054, "AccessorySerialNumber", N_("Accessory Serial Number"), N_("Accessory Serial Number"), panasonicId, makerTags, asciiString, -1, printValue), + TagInfo(0x0059, "Transform1", N_("Transform 1"), N_("Transform 1"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)), + TagInfo(0x0060, "LensFirmwareVersion", N_("Firmware Version of the Lens"), N_("Firmware Version of the Lens"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x0061, "FaceRecInfo", N_("Face recognition info"), N_("Face recognition info"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)), + TagInfo(0x0065, "Title", N_("Title"), N_("Title"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x0067, "Location", N_("Location"), N_("Location"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x0069, "Country", N_("Country"), N_("Country"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x006b, "State", N_("State"), N_("State"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x006d, "City", N_("City"), N_("City"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x006f, "Landmark", N_("Landmark"), N_("Landmark"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)), + TagInfo(0x0077, "BurstSheed", N_("Burst Speed"), N_("Burst Speed in pictures per second"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)), + TagInfo(0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)), + TagInfo(0x0080, "City2", N_("City2"), N_("City2"), panasonicId, makerTags, undefined, -1, printPanasonicText), + TagInfo(0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)), + TagInfo(0x008a, "ShadingCompensation", N_("Shading Compensation"), N_("Shading Compensation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShadingCompensation)), + TagInfo(0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer), + TagInfo(0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer), + TagInfo(0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer), + TagInfo(0x008f, "CameraOrientation", N_("Camera Orientation"), N_("Camera Orientation"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicCameraOrientation)), + TagInfo(0x0090, "RollAngle", N_("Roll Angle"), N_("degress of clockwise camera rotation"), panasonicId, makerTags, unsignedShort, -1, printRollAngle), + TagInfo(0x0091, "PitchAngle", N_("Pitch Angle"), N_("degress of upwards camera tilt"), panasonicId, makerTags, unsignedShort, -1, printPitchAngle), + TagInfo(0x0093, "SweepPanoramaDirection", N_("Sweep Panorama Direction"), N_("Sweep Panorama Direction"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicSweepPanoramaDirection)), + TagInfo(0x0094, "PanoramaFieldOfView", N_("Field of View of Panorama"), N_("Field of View of Panorama"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)), + TagInfo(0x009d, "InternalNDFilter", N_("Internal ND Filter"), N_("Internal ND Filter"), panasonicId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x009e, "HDR", N_("HDR"), N_("HDR"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicHDR)), + TagInfo(0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)), + TagInfo(0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), panasonicId, makerTags, unsignedRational, -1, printValue), + TagInfo(0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTouchAE)), + TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x4449, "0x4449", "0x4449", N_("Unknown"), panasonicId, makerTags, undefined, -1, printValue), + TagInfo(0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), panasonicId, makerTags, undefined, -1, printExifVersion), + TagInfo(0x8001, "SceneMode", N_("Scene Mode"), N_("Scene mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)), + TagInfo(0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panasonicId, makerTags, unsignedShort, -1, printValue), + TagInfo(0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)), + TagInfo(0x8008, "TextStamp3", N_("Text Stamp 3"), N_("Text Stamp 3"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), + TagInfo(0x8009, "TextStamp4", N_("Text Stamp 4"), N_("Text Stamp 4"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)), + TagInfo(0x8010, "BabyAge2", N_("Baby Age 2"), N_("Baby (or pet) age 2"), panasonicId, makerTags, asciiString, -1, print0x0033), + TagInfo(0x8012, "Transform2", N_("Transform 2"), N_("Transform 2"), panasonicId, makerTags, undefined, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), panasonicId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* PanasonicMakerNote::tagList() + { + return tagInfo_; + } + + // tag Focus Mode + std::ostream& PanasonicMakerNote::print0x000f(std::ostream& os, + const Value& value, + const ExifData*) + { + if (value.count() < 2 || value.typeId() != unsignedByte) { + return os << value; + } + long l0 = value.toLong(0); + long l1 = value.toLong(1); + if (l0 == 0 && l1 == 1) os << _("Spot mode on or 9 area"); + else if (l0 == 0 && l1 == 16) os << _("Spot mode off or 3-area (high speed)"); + else if (l0 == 0 && l1 == 23) os << _("23-area"); + else if (l0 == 1 && l1 == 0) os << _("Spot focussing"); + else if (l0 == 1 && l1 == 1) os << _("5-area"); + else if (l0 == 16 && l1 == 0) os << _("1-area"); + else if (l0 == 16 && l1 == 16) os << _("1-area (high speed)"); + else if (l0 == 32 && l1 == 0) os << _("3-area (auto)"); + else if (l0 == 32 && l1 == 1) os << _("3-area (left)"); + else if (l0 == 32 && l1 == 2) os << _("3-area (center)"); + else if (l0 == 32 && l1 == 3) os << _("3-area (right)"); + else if (l0 == 64 && l1 == 0) os << _("Face Detect"); + else if (l0 == 128 && l1 == 0) os << _("Spot Focusing 2"); + else os << value; + return os; + } // PanasonicMakerNote::print0x000f + + // tag White balance bias + std::ostream& PanasonicMakerNote::print0x0023(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) + << value.toLong() / 3 << _(" EV"); + os.copyfmt(oss); + + os.flags(f); + return os; + + } // PanasonicMakerNote::print0x0023 + + // Time since power on + std::ostream& PanasonicMakerNote::print0x0029(std::ostream& os, + const Value& value, + const ExifData*) + { + std::ostringstream oss; + oss.copyfmt(os); + long time=value.toLong(); + os << std::setw(2) << std::setfill('0') << time / 360000 << ":" + << std::setw(2) << std::setfill('0') << (time % 360000) / 6000 << ":" + << std::setw(2) << std::setfill('0') << (time % 6000) / 100 << "." + << std::setw(2) << std::setfill('0') << time % 100; + os.copyfmt(oss); + + return os; + + } // PanasonicMakerNote::print0x0029 + + // bage age + std::ostream& PanasonicMakerNote::print0x0033(std::ostream& os, + const Value& value, + const ExifData*) + { + if(value.toString()=="9999:99:99 00:00:00") + { + os << N_("not set"); + } + else + { + os << value; + }; + return os; + } // PanasonicMakerNote::print0x0033 + + // Travel days + std::ostream& PanasonicMakerNote::print0x0036(std::ostream& os, + const Value& value, + const ExifData*) + { + if(value.toLong()==65535) + { + os << N_("not set"); + } + else + { + os << value; + }; + return os; + } // PanasonicMakerNote::print0x0036 + + // Program ISO + std::ostream& PanasonicMakerNote::print0x003c(std::ostream& os, + const Value& value, + const ExifData*) + { + switch(value.toLong()) + { + case 65534: + os << N_("Intelligent ISO"); + break; + case 65535: + os << N_("n/a"); + break; + default: + os << value; + break; + }; + return os; + } // PanasonicMakerNote::print0x003c + + std::ostream& PanasonicMakerNote::printPanasonicText(std::ostream& os, + const Value& value, + const ExifData*) + { + if(value.size()>0 && value.typeId() == undefined) + { + for(long i=0; i< value.size(); i++) + { + if(value.toLong(i)==0) + { + break; + }; + os << static_cast(value.toLong(i)); + }; + return os; + } + else + { + return os << value; + }; + } // PanasonicMakerNote::printPanasonicText + + std::ostream& PanasonicMakerNote::printAccelerometer(std::ostream& os, const Value& value, const ExifData*) + { + // value is stored as unsigned int, but should be readed as signed int, so manually convert it + int i = value.toLong(); + i = i - ((i & 0x8000) >> 15) * 0xffff; + return os << i; + } // PanasonicMakerNote::printAccelerometer + + std::ostream& PanasonicMakerNote::printRollAngle(std::ostream& os, const Value& value, const ExifData*) + { + // roll angle is stored as signed int, but tag states to be unsigned int + int i = value.toLong(); + i = i - ((i & 0x8000) >> 15) * 0xffff; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << i / 10.0; + os.copyfmt(oss); + + return os; + } // PanasonicMakerNote::printRollAngle + + std::ostream& PanasonicMakerNote::printPitchAngle(std::ostream& os, const Value& value, const ExifData*) + { + // pitch angle is stored as signed int, but tag states to be unsigned int + // change sign to be compatible with ExifTool: positive is upwards + int i = value.toLong(); + i = i - ((i & 0x8000) >> 15) * 0xffff; + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << -i / 10.0; + os.copyfmt(oss); + + return os; + } // PanasonicMakerNote::printPitchAngle + + // Panasonic MakerNote Tag Info + const TagInfo PanasonicMakerNote::tagInfoRaw_[] = { + TagInfo(0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, printExifVersion), + TagInfo(0x0002, "SensorWidth", N_("Sensor Width"), N_("Sensor width"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0003, "SensorHeight", N_("Sensor Height"), N_("Sensor height"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0004, "SensorTopBorder", N_("Sensor Top Border"), N_("Sensor top border"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0005, "SensorLeftBorder", N_("Sensor Left Border"), N_("Sensor left border"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0006, "ImageHeight", N_("Image Height"), N_("Image height"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0007, "ImageWidth", N_("Image Width"), N_("Image width"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0011, "RedBalance", N_("Red Balance"), N_("Red balance (found in Digilux 2 RAW images)"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0012, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0017, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0024, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0025, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0026, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x002e, "PreviewImage", N_("Preview Image"), N_("Preview image"), panaRawId, panaRaw, undefined, -1, printValue), + TagInfo(0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording equipment"), panaRawId, panaRaw, asciiString, -1, printValue), + TagInfo(0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment"), panaRawId, panaRaw, asciiString, -1, printValue), + TagInfo(0x0111, "StripOffsets", N_("Strip Offsets"), N_("Strip offsets"), panaRawId, panaRaw, unsignedLong, -1, printValue), + TagInfo(0x0112, "Orientation", N_("Orientation"), N_("Orientation"), panaRawId, panaRaw, unsignedShort, -1, print0x0112), + TagInfo(0x0116, "RowsPerStrip", N_("Rows Per Strip"), N_("The number of rows per strip"), panaRawId, panaRaw, unsignedShort, -1, printValue), + TagInfo(0x0117, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip byte counts"), panaRawId, panaRaw, unsignedLong, -1, printValue), + TagInfo(0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), panaRawId, panaRaw, unsignedLong, -1, printValue), + TagInfo(0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue), + TagInfo(0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), panaRawId, panaRaw, unsignedLong, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), panaRawId, panaRaw, asciiString, -1, printValue) + }; + + const TagInfo* PanasonicMakerNote::tagListRaw() + { + return tagInfoRaw_; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/panasonicmn_int.hpp b/vendor/exiv2-0.25/src/panasonicmn_int.hpp new file mode 100644 index 0000000..3140d55 --- /dev/null +++ b/vendor/exiv2-0.25/src/panasonicmn_int.hpp @@ -0,0 +1,96 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file panasonicmn_int.hpp + @brief Panasonic MakerNote implemented using the following references: + Panasonic MakerNote Information by Tom Hughes, + Panasonic.pm of ExifTool by Phil Harvey, + Panasonic Makernote Format Specification by Evan Hunter. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (gc) + caulier dot gilles at gmail dot com + @date 11-Jun-05, ahu: created + */ +#ifndef PANASONICMN_INT_HPP_ +#define PANASONICMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Panasonic cameras + class PanasonicMakerNote { + public: + //! Return read-only list of built-in Panasonic tags + static const TagInfo* tagList(); + //! Return read-only list of built-in Panasonic RAW image tags (IFD0) + static const TagInfo* tagListRaw(); + + //! @name Print functions for Panasonic %MakerNote tags + //@{ + //! Print SpotMode + static std::ostream& print0x000f(std::ostream& os, const Value& value, const ExifData*); + //! Print WhiteBalanceBias + static std::ostream& print0x0023(std::ostream& os, const Value& value, const ExifData*); + //! Print TimeSincePowerOn + static std::ostream& print0x0029(std::ostream& os, const Value& value, const ExifData*); + //! Print Baby age + static std::ostream& print0x0033(std::ostream& os, const Value& value, const ExifData*); + //! Print Travel days + static std::ostream& print0x0036(std::ostream& os, const Value& value, const ExifData*); + //! Print ISO + static std::ostream& print0x003c(std::ostream& os, const Value& value, const ExifData*); + //! Print special text values: title, landmark, county and so on + static std::ostream& printPanasonicText(std::ostream& os, const Value& value, const ExifData*); + //! Print accerometer readings + static std::ostream& printAccelerometer(std::ostream& os, const Value& value, const ExifData*); + //! Print roll angle + static std::ostream& printRollAngle(std::ostream& os, const Value& value, const ExifData*); + //! Print pitch angle + static std::ostream& printPitchAngle(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Makernote tag list + static const TagInfo tagInfo_[]; + //! Taglist for IFD0 of Panasonic RAW images + static const TagInfo tagInfoRaw_[]; + + }; // class PanasonicMakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef PANASONICMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/pentaxmn.cpp b/vendor/exiv2-0.25/src/pentaxmn.cpp new file mode 100644 index 0000000..0beea32 --- /dev/null +++ b/vendor/exiv2-0.25/src/pentaxmn.cpp @@ -0,0 +1,1414 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: pentaxmn.cpp + Version: $Rev: 3835 $ + Author(s): Michal Cihar + Based on fujimn.cpp by: + Andreas Huggel (ahu) + Gilles Caulier (gc) + History: 27-Sep-07 created + Credits: See header file. + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: pentaxmn.cpp 3835 2015-05-22 03:18:31Z nkbj $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "pentaxmn_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! ShootingMode, tag 0x0001 + extern const TagDetails pentaxShootingMode[] = { + { 0, N_("Auto") }, + { 1, N_("Night-Scene") }, + { 2, N_("Manual") }, + }; + + //! CameraModel, tag 0x0005 + extern const TagDetails pentaxModel[] = { + { 0x0000d, "Optio 330/430" }, + { 0x12926, "Optio 230" }, + { 0x12958, "Optio 330GS" }, + { 0x12962, "Optio 450/550" }, + { 0x1296c, "Optio S" }, + { 0x12971, "Optio S V1.01" }, + { 0x12994, "*ist D" }, + { 0x129b2, "Optio 33L" }, + { 0x129bc, "Optio 33LF" }, + { 0x129c6, "Optio 33WR/43WR/555" }, + { 0x129d5, "Optio S4" }, + { 0x12a02, "Optio MX" }, + { 0x12a0c, "Optio S40" }, + { 0x12a16, "Optio S4i" }, + { 0x12a34, "Optio 30" }, + { 0x12a52, "Optio S30" }, + { 0x12a66, "Optio 750Z" }, + { 0x12a70, "Optio SV" }, + { 0x12a75, "Optio SVi" }, + { 0x12a7a, "Optio X" }, + { 0x12a8e, "Optio S5i" }, + { 0x12a98, "Optio S50" }, + { 0x12aa2, "*ist DS" }, + { 0x12ab6, "Optio MX4" }, + { 0x12ac0, "Optio S5n" }, + { 0x12aca, "Optio WP" }, + { 0x12afc, "Optio S55" }, + { 0x12b10, "Optio S5z" }, + { 0x12b1a, "*ist DL" }, + { 0x12b24, "Optio S60" }, + { 0x12b2e, "Optio S45" }, + { 0x12b38, "Optio S6" }, + { 0x12b4c, "Optio WPi" }, + { 0x12b56, "BenQ DC X600" }, + { 0x12b60, "*ist DS2" }, + { 0x12b62, "Samsung GX-1S" }, + { 0x12b6a, "Optio A10" }, + { 0x12b7e, "*ist DL2" }, + { 0x12b80, "Samsung GX-1L" }, + { 0x12b9c, "K100D" }, + { 0x12b9d, "K110D" }, + { 0x12ba2, "K100D Super" }, + { 0x12bb0, "Optio T10/T20" }, + { 0x12be2, "Optio W10" }, + { 0x12bf6, "Optio M10" }, + { 0x12c1e, "K10D" }, + { 0x12c20, "Samsung GX10" }, + { 0x12c28, "Optio S7" }, + { 0x12c2d, "Optio L20" }, + { 0x12c32, "Optio M20" }, + { 0x12c3c, "Optio W20" }, + { 0x12c46, "Optio A20" }, + { 0x12c78, "Optio E30" }, + { 0x12c7d, "Optio E35" }, + { 0x12c82, "Optio T30" }, + { 0x12c8c, "Optio M30" }, + { 0x12c91, "Optio L30" }, + { 0x12c96, "Optio W30" }, + { 0x12ca0, "Optio A30" }, + { 0x12cb4, "Optio E40" }, + { 0x12cbe, "Optio M40" }, + { 0x12cc3, "Optio L40" }, + { 0x12cc5, "Optio L36" }, + { 0x12cc8, "Optio Z10" }, + { 0x12cd2, "K20D" }, + { 0x12cd4, "Samsung GX20" }, + { 0x12cdc, "Optio S10" }, + { 0x12ce6, "Optio A40" }, + { 0x12cf0, "Optio V10" }, + { 0x12cfa, "K200D" }, + { 0x12d04, "Optio S12" }, + { 0x12d0e, "Optio E50" }, + { 0x12d18, "Optio M50" }, + { 0x12d22, "Optio L50" }, + { 0x12d2c, "Optio V20" }, + { 0x12d40, "Optio W60" }, + { 0x12d4a, "Optio M60" }, + { 0x12d68, "Optio E60/M90" }, + { 0x12d72, "K2000" }, + { 0x12d73, "K-m" }, + { 0x12d86, "Optio P70" }, + { 0x12d90, "Optio L70" }, + { 0x12d9a, "Optio E70" }, + { 0x12dae, "X70" }, + { 0x12db8, "K-7" }, + { 0x12dcc, "Optio W80" }, + { 0x12dea, "Optio P80" }, + { 0x12df4, "Optio WS80" }, + { 0x12dfe, "K-x" }, + { 0x12e08, "645D" }, + { 0x12e12, "Optio E80" }, + { 0x12e30, "Optio W90" }, + { 0x12e3a, "Optio I-10" }, + { 0x12e44, "Optio H90" }, + { 0x12e4e, "Optio E90" }, + { 0x12e58, "X90" }, + { 0x12e6c, "K-r" }, + { 0x12e76, "K-5" }, + { 0x12e8a, "Optio RS1000/RS1500" }, + { 0x12e94, "Optio RZ10" }, + { 0x12e9e, "Optio LS1000" }, + { 0x12ebc, "Optio WG-1 GPS" }, + { 0x12ed0, "Optio S1" }, + { 0x12ee4, "Q" }, + { 0x12ef8, "K-01" }, + { 0x12f0c, "Optio RZ18" }, + { 0x12f16, "Optio VS20" }, + { 0x12f2a, "Optio WG-2 GPS" }, + { 0x12f48, "Optio LS465" }, + { 0x12f52, "K-30" }, + { 0x12f5c, "X-5" }, + { 0x12f66, "Q10" }, + { 0x12f70, "K-5 II" }, + { 0x12f71, "K-5 II s" }, + { 0x12f7a, "Q7" }, + { 0x12f84, "MX-1" }, + { 0x12f8e, "WG-3 GPS" }, + { 0x12f98, "WG-3" }, + { 0x12fa2, "WG-10" }, + { 0x12fb6, "K-50" }, + { 0x12fc0, "K-3" }, + { 0x12fca, "K-500" }, + { 0x12fde, "WG-4 GPS" }, + { 0x12fe8, "WG-4" }, + { 0x13006, "WG-20" }, + { 0x13010, "645Z" }, + { 0x1301a, "K-S1" }, + { 0x13024, "K-S2" }, + { 0x1302e, "Q-S1" }, + { 0x13056, "WG-30" }, + { 0x13088, "WG-5 GPS" }, + { 0x1309c, "K-3 II" }, + }; + + //! Quality, tag 0x0008 + extern const TagDetails pentaxQuality[] = { + { 0, N_("Good") }, + { 1, N_("Better") }, + { 2, N_("Best") }, + { 3, N_("TIFF") }, + { 4, N_("RAW") }, + { 5, N_("Premium") }, + { 65535, N_("n/a") }, + }; + + //! Size, tag 0x0009 + extern const TagDetails pentaxSize[] = { + { 0, "640x480" }, + { 1, N_("Full") }, + { 2, "1024x768" }, + { 3, "1280x960" }, + { 4, "1600x1200" }, + { 5, "2048x1536" }, + { 8, N_("2560x1920 or 2304x1728") }, + { 9, "3072x2304" }, + { 10, "3264x2448" }, + { 19, "320x240" }, + { 20, "2288x1712" }, + { 21, "2592x1944" }, + { 22, N_("2304x1728 or 2592x1944") }, + { 23, "3056x2296" }, + { 25, N_("2816x2212 or 2816x2112") }, + { 27, "3648x2736" }, + { 29, "4000x3000" }, + { 30, "4288x3216" }, + { 31, "4608x3456" }, + { 129, "1920x1080" }, + { 135, "4608x2592" }, + { 257, "3216x3216" }, +// not sure what to do with these values: +// '0 0' = 2304x1728 +// '4 0' = 1600x1200 +// '5 0' = 2048x1536 +// '8 0' = 2560x1920 +// '32 2' = 960x640 +// '33 2' = 1152x768 +// '34 2' = 1536x1024 +// '35 1' = 2400x1600 +// '36 0' = 3008x2008 or 3040x2024 +// '37 0' = 3008x2000 + }; + + //! Flash, tag 0x000c + extern const TagDetails pentaxFlash[] = { + { 0x000, N_("Auto, Did not fire") }, + { 0x001, N_("Off, Did not fire") }, + { 0x002, N_("Off, Did not fire") }, + { 0x003, N_("Auto, Did not fire, Red-eye reduction") }, + { 0x005, N_("On. Did not fire. Wireless (Master)") }, + { 0x100, N_("Auto, Fired") }, + { 0x102, N_("On, Fired") }, + { 0x103, N_("Auto, Fired, Red-eye reduction") }, + { 0x104, N_("On, Red-eye reduction") }, + { 0x105, N_("On, Wireless (Master)") }, + { 0x106, N_("On, Wireless (Control)") }, + { 0x108, N_("On, Soft") }, + { 0x109, N_("On, Slow-sync") }, + { 0x10a, N_("On, Slow-sync, Red-eye reduction") }, + { 0x10b, N_("On, Trailing-curtain Sync") }, +// exiftool recognises 2 values, the values here correpond with Value 0 + }; + + //! Focus, tag 0x000d + extern const TagDetails pentaxFocus[] = { + { 0, N_("Normal") }, + { 1, N_("Macro") }, + { 2, N_("Infinity") }, + { 3, N_("Manual") }, + { 4, N_("Super Macro") }, + { 5, N_("Pan Focus") }, + { 16, N_("AF-S") }, + { 17, N_("AF-C") }, + { 18, N_("AF-A") }, + { 32, N_("Contrast-detect") }, + { 33, N_("Tracking Contrast-detect") }, + { 288, N_("Face Detect") }, + }; + + //! AFPoint, tag 0x000e + extern const TagDetails pentaxAFPoint[] = { + { 0xffff, N_("Auto") }, + { 0xfffe, N_("Fixed Center") }, + { 0xfffd, N_("Automatic Tracking AF") }, + { 0xfffc, N_("Face Recognition AF") }, + { 0xfffb, N_("AF Select") }, + { 0, N_("None") }, + { 1, N_("Upper-left") }, + { 2, N_("Top") }, + { 3, N_("Upper-right") }, + { 4, N_("Left") }, + { 5, N_("Mid-left") }, + { 6, N_("Center") }, + { 7, N_("Mid-right") }, + { 8, N_("Right") }, + { 9, N_("Lower-left") }, + { 10, N_("Bottom") }, + { 11, N_("Lower-right") }, + }; + + //! AFPointInFocus, tag 0x000f + extern const TagDetails pentaxAFPointFocus[] = { + { 0xffff, N_("None") }, + { 0, N_("Fixed Center or multiple") }, + { 1, N_("Top-left") }, + { 2, N_("Top-center") }, + { 3, N_("Top-right") }, + { 4, N_("Left") }, + { 5, N_("Center") }, + { 6, N_("Right") }, + { 7, N_("Bottom-left") }, + { 8, N_("Bottom-center") }, + { 9, N_("Bottom-right") }, + }; + + //! ISO, tag 0x0014 + extern const TagDetails pentaxISO[] = { + { 3, "50" }, + { 4, "64" }, + { 5, "80" }, + { 6, "100" }, + { 7, "125" }, + { 8, "160" }, + { 9, "200" }, + { 10, "250" }, + { 11, "320" }, + { 12, "400" }, + { 13, "500" }, + { 14, "640" }, + { 15, "800" }, + { 16, "1000" }, + { 17, "1250" }, + { 18, "1600" }, + { 19, "2000" }, + { 20, "2500" }, + { 21, "3200" }, + { 22, "4000" }, + { 23, "5000" }, + { 24, "6400" }, + { 25, "8000" }, + { 26, "10000" }, + { 27, "12800" }, + { 28, "16000" }, + { 29, "20000" }, + { 30, "25600" }, + { 31, "32000" }, + { 32, "40000" }, + { 33, "51200" }, + { 34, "64000" }, + { 35, "80000" }, + { 36, "102400" }, + { 37, "128000" }, + { 38, "160000" }, + { 39, "204800" }, + { 50, "50" }, + { 100, "100" }, + { 200, "200" }, +// { 268, "200" }, + { 400, "400" }, + { 800, "800" }, + { 1600, "1600" }, + { 3200, "3200" }, + { 258, "50" }, + { 259, "70" }, + { 260, "100" }, + { 261, "140" }, + { 262, "200" }, + { 263, "280" }, + { 264, "400" }, + { 265, "560" }, + { 266, "800" }, + { 267, "1100" }, + { 268, "1600" }, + { 269, "2200" }, + { 270, "3200" }, + { 271, "4500" }, + { 272, "6400" }, + { 273, "9000" }, + { 274, "12800" }, + { 275, "18000" }, + { 276, "25600" }, + { 277, "36000" }, + { 278, "51200" }, + + }; + + //! Generic for Off/On switches + extern const TagDetails pentaxOffOn[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + }; + + //! Generic for Yes/No switches + extern const TagDetails pentaxYesNo[] = { + { 0, N_("No") }, + { 1, N_("Yes") }, + }; + + //! MeteringMode, tag 0x0017 + extern const TagDetails pentaxMeteringMode[] = { + { 0, N_("Multi Segment") }, + { 1, N_("Center Weighted") }, + { 2, N_("Spot") }, + }; + + //! WhiteBalance, tag 0x0019 + extern const TagDetails pentaxWhiteBalance[] = { + { 0, N_("Auto") }, + { 1, N_("Daylight") }, + { 2, N_("Shade") }, + { 3, N_("Fluorescent") }, + { 4, N_("Tungsten") }, + { 5, N_("Manual") }, + { 6, N_("DaylightFluorescent") }, + { 7, N_("DaywhiteFluorescent") }, + { 8, N_("WhiteFluorescent") }, + { 9, N_("Flash") }, + { 10, N_("Cloudy") }, + { 15, N_("Color Temperature Enhancement") }, + { 17, N_("Kelvin") }, + { 65534, N_("Unknown") }, + { 65535, N_("User Selected") }, + }; + + //! WhiteBalance, tag 0x001a + extern const TagDetails pentaxWhiteBalanceMode[] = { + { 1, N_("Auto (Daylight)") }, + { 2, N_("Auto (Shade)") }, + { 3, N_("Auto (Flash)") }, + { 4, N_("Auto (Tungsten)") }, + { 6, N_("Auto (DaylightFluorescent)") }, + { 7, N_("Auto (DaywhiteFluorescent)") }, + { 8, N_("Auto (WhiteFluorescent)") }, + { 10, N_("Auto (Cloudy)") }, + { 0xffff, N_("User-Selected") }, + { 0xfffe, N_("Preset (Fireworks?)") }, + }; + + //! Saturation, tag 0x001f + extern const TagDetails pentaxSaturation[] = { + { 0, N_("Low") }, + { 1, N_("Normal") }, + { 2, N_("High") }, + { 3, N_("Med Low") }, + { 4, N_("Med High") }, + { 5, N_("Very Low") }, + { 6, N_("Very High") }, + { 7, N_("-4") }, + { 8, N_("+4") }, + { 65535, N_("None") }, + { 65535, N_("None") } // To silence compiler warning + }; + + //! Contrast, tag 0x0020 + extern const TagDetails pentaxContrast[] = { + { 0, N_("Low") }, + { 1, N_("Normal") }, + { 2, N_("High") }, + { 3, N_("Med Low") }, + { 4, N_("Med High") }, + { 5, N_("Very Low") }, + { 6, N_("Very High") }, + { 7, N_("-4") }, + { 8, N_("+4") }, + }; + + //! Sharpness, tag 0x0021 + extern const TagDetails pentaxSharpness[] = { + { 0, N_("Soft") }, + { 1, N_("Normal") }, + { 2, N_("Hard") }, + { 3, N_("Med Soft") }, + { 4, N_("Med Hard") }, + { 5, N_("Very Soft") }, + { 6, N_("Very Hard") }, + { 7, N_("-4") }, + { 8, N_("+4") }, + }; + + //! Location, tag 0x0022 + extern const TagDetails pentaxLocation[] = { + { 0, N_("Home town") }, + { 1, N_("Destination") }, + }; + + //! City names, tags 0x0023 and 0x0024 + extern const TagDetails pentaxCities[] = { + { 0, N_("Pago Pago") }, + { 1, N_("Honolulu") }, + { 2, N_("Anchorage") }, + { 3, N_("Vancouver") }, + { 4, N_("San Fransisco") }, + { 5, N_("Los Angeles") }, + { 6, N_("Calgary") }, + { 7, N_("Denver") }, + { 8, N_("Mexico City") }, + { 9, N_("Chicago") }, + { 10, N_("Miami") }, + { 11, N_("Toronto") }, + { 12, N_("New York") }, + { 13, N_("Santiago") }, + { 14, N_("Caracus") }, + { 15, N_("Halifax") }, + { 16, N_("Buenos Aires") }, + { 17, N_("Sao Paulo") }, + { 18, N_("Rio de Janeiro") }, + { 19, N_("Madrid") }, + { 20, N_("London") }, + { 21, N_("Paris") }, + { 22, N_("Milan") }, + { 23, N_("Rome") }, + { 24, N_("Berlin") }, + { 25, N_("Johannesburg") }, + { 26, N_("Istanbul") }, + { 27, N_("Cairo") }, + { 28, N_("Jerusalem") }, + { 29, N_("Moscow") }, + { 30, N_("Jeddah") }, + { 31, N_("Tehran") }, + { 32, N_("Dubai") }, + { 33, N_("Karachi") }, + { 34, N_("Kabul") }, + { 35, N_("Male") }, + { 36, N_("Delhi") }, + { 37, N_("Colombo") }, + { 38, N_("Kathmandu") }, + { 39, N_("Dacca") }, + { 40, N_("Yangon") }, + { 41, N_("Bangkok") }, + { 42, N_("Kuala Lumpur") }, + { 43, N_("Vientiane") }, + { 44, N_("Singapore") }, + { 45, N_("Phnom Penh") }, + { 46, N_("Ho Chi Minh") }, + { 47, N_("Jakarta") }, + { 48, N_("Hong Kong") }, + { 49, N_("Perth") }, + { 50, N_("Beijing") }, + { 51, N_("Shanghai") }, + { 52, N_("Manila") }, + { 53, N_("Taipei") }, + { 54, N_("Seoul") }, + { 55, N_("Adelaide") }, + { 56, N_("Tokyo") }, + { 57, N_("Guam") }, + { 58, N_("Sydney") }, + { 59, N_("Noumea") }, + { 60, N_("Wellington") }, + { 61, N_("Auckland") }, + { 62, N_("Lima") }, + { 63, N_("Dakar") }, + { 64, N_("Algiers") }, + { 65, N_("Helsinki") }, + { 66, N_("Athens") }, + { 67, N_("Nairobi") }, + { 68, N_("Amsterdam") }, + { 69, N_("Stockholm") }, + { 70, N_("Lisbon") }, + { 71, N_("Copenhagen") }, + { 72, N_("Warsaw") }, + { 73, N_("Prague") }, + { 74, N_("Budapest") }, + }; + + //! ImageProcessing, combi-tag 0x0032 (4 bytes) + extern const TagDetails pentaxImageProcessing[] = { + { 0x00000000, N_("Unprocessed") }, + { 0x00000004, N_("Digital Filter") }, + { 0x01000000, N_("Resized") }, + { 0x02000000, N_("Cropped") }, + { 0x04000000, N_("Color Filter") }, + { 0x06000000, N_("Digital Filter 6") }, + { 0x10000000, N_("Frame Synthesis?") } + }; + + //! PictureMode, combi-tag 0x0033 (3 bytes) + extern const TagDetails pentaxPictureMode[] = { + { 0x000000, N_("Program") }, + { 0x000100, N_("Hi-speed Program") }, + { 0x000200, N_("DOF Program") }, + { 0x000300, N_("MTF Program") }, + { 0x000400, N_("Standard") }, + { 0x000500, N_("Portrait") }, + { 0x000600, N_("Landscape") }, + { 0x000700, N_("Macro") }, + { 0x000800, N_("Sport") }, + { 0x000900, N_("Night Scene Portrait") }, + { 0x000a00, N_("No Flash") }, + /* SCN modes (menu-selected) */ + { 0x000b00, N_("Night Scene") }, + { 0x000c00, N_("Surf & Snow") }, + { 0x000d00, N_("Text") }, + { 0x000e00, N_("Sunset") }, + { 0x000f00, N_("Kids") }, + { 0x001000, N_("Pet") }, + { 0x001100, N_("Candlelight") }, + { 0x001200, N_("Museum") }, + { 0x001300, N_("Food") }, + { 0x001400, N_("Stage Lighting") }, + { 0x001500, N_("Night Snap") }, + { 0x001700, N_("Blue Sky") }, + { 0x001800, N_("Sunset") }, + { 0x001a00, N_("Night Scene HDR") }, + { 0x001b00, N_("HDR") }, + { 0x001c00, N_("Quick Macro") }, + { 0x001d00, N_("Forest") }, + { 0x001e00, N_("Backlight Silhouette") }, + /* AUTO PICT modes (auto-selected) */ + { 0x010400, N_("Auto PICT (Standard)") }, + { 0x010500, N_("Auto PICT (Portrait)") }, + { 0x010600, N_("Auto PICT (Landscape)") }, + { 0x010700, N_("Auto PICT (Macro)") }, + { 0x010800, N_("Auto PICT (Sport)") }, + /* Manual dial modes */ + { 0x020000, N_("Program AE") }, + { 0x030000, N_("Green Mode") }, + { 0x040000, N_("Shutter Speed Priority") }, + { 0x050000, N_("Aperture Priority") }, + { 0x080000, N_("Manual") }, + { 0x090000, N_("Bulb") }, + /* *istD modes */ + { 0x020001, N_("Program AE") }, + { 0x020101, N_("Hi-speed Program") }, + { 0x020201, N_("DOF Program") }, + { 0x020301, N_("MTF Program") }, + { 0x021601, N_("Shallow DOF") }, + { 0x030001, N_("Green Mode") }, + { 0x040001, N_("Shutter Speed Priority") }, + { 0x050001, N_("Aperture Priority") }, + { 0x060001, N_("Program Tv Shift") }, + { 0x070001, N_("Program Av Shift") }, + { 0x080001, N_("Manual") }, + { 0x090001, N_("Bulb") }, + { 0x0a0001, N_("Aperture Priority (Off-Auto-Aperture)") }, + { 0x0b0001, N_("Manual (Off-Auto-Aperture)") }, + { 0x0c0001, N_("Bulb (Off-Auto-Aperture)") }, + /* K10D modes */ + { 0x060000, N_("Shutter Priority") }, + { 0x0d0000, N_("Shutter & Aperture Priority AE") }, + { 0x0d0001, N_("Shutter & Aperture Priority AE (1)") }, + { 0x0f0000, N_("Sensitivity Priority AE") }, + { 0x0f0001, N_("Sensitivity Priority AE (1)") }, + { 0x100000, N_("Flash X-Sync Speed AE") }, + { 0x100001, N_("Flash X-Sync Speed AE (1)") }, + { 0x120001, N_("Auto Program (Normal)") }, + { 0x120101, N_("Auto Program (Hi-Speed)") }, + { 0x120201, N_("Auto Program (DOF)") }, + { 0x120301, N_("Auto Program (MTF)") }, + { 0x121601, N_("Auto Program (Shallow DOF)") }, + { 0x141601, N_("Blur control") }, + /* other modes */ + { 0x000001, N_("Program") }, + { 0xfe0000, N_("Video (30 fps)") }, + { 0xff0004, N_("Video (24 fps)") }, + }; + + //! DriveMode, combi-tag 0x0034 (4 bytes) + extern const TagDetails pentaxDriveMode[] = { + { 0x00000000, N_("Single-frame") }, + { 0x01000000, N_("Continuous") }, + { 0x02000000, N_("Continuous (Hi)") }, + { 0x03000000, N_("Burst") }, + { 0xff000000, N_("Video") }, + { 0x00100000, N_("Single-frame") }, /* on 645D */ + { 0x00010000, N_("Self-timer (12 sec)") }, + { 0x00020000, N_("Self-timer (2 sec)") }, + { 0x000f0000, N_("Video") }, + { 0x00100000, N_("Mirror Lock-up") }, + { 0x00000100, N_("Remote Control (3 sec)") }, + { 0x00000200, N_("Remote Control") }, + { 0x00000400, N_("Remote Continuous Shooting") }, + { 0x00000001, N_("Multiple Exposure") }, + { 0x00000010, N_("HDR") }, + { 0x00000020, N_("HDR Strong 1") }, + { 0x00000030, N_("HDR Strong 2") }, + { 0x00000040, N_("HDR Strong 3") }, + { 0x000000e0, N_("HDR Auto") }, + { 0x000000ff, N_("Video") }, + }; + + //! ColorSpace, tag 0x0037 + extern const TagDetails pentaxColorSpace[] = { + { 0, N_("sRGB") }, + { 1, N_("Adobe RGB") }, + }; + + //! LensType, combi-tag 0x003f (2 unsigned long) + extern const TagDetails pentaxLensType[] = { + { 0x0000, N_("M-42 or No Lens") }, + { 0x0100, N_("K or M Lens") }, + { 0x0200, N_("A Series Lens") }, + { 0x0300, "Sigma Lens" }, + { 0x0311, "smc PENTAX-FA SOFT 85mm F2.8" }, + { 0x0312, "smc PENTAX-F 1.7X AF ADAPTER" }, + { 0x0313, "smc PENTAX-F 24-50mm F4" }, + { 0x0314, "smc PENTAX-F 35-80mm F4-5.6" }, + { 0x0315, "smc PENTAX-F 80-200mm F4.7-5.6" }, + { 0x0316, "smc PENTAX-F FISH-EYE 17-28mm F3.5-4.5" }, + { 0x0317, "smc PENTAX-F 100-300mm F4.5-5.6" }, //0 + { 0x0317, "Sigma AF 28-300mm F3.5-6.3 DG IF Macro" }, //1 + { 0x0317, "Tokina 80-200mm F2.8 ATX-Pro" }, //2 + { 0x0318, "smc PENTAX-F 35-135mm F3.5-4.5" }, + { 0x0319, "smc PENTAX-F 35-105mm F4-5.6" }, //0 + { 0x0319, "Sigma AF 28-300mm F3.5-5.6 DL IF" }, //1 + { 0x0319, "Sigma 55-200mm F4-5.6 DC" }, //2 + { 0x0319, "Sigma AF 28-300mm F3.5-5.6 DL IF" }, //3 + { 0x0319, "Sigma AF 28-300mm F3.5-6.3 DG IF Macro" }, //4 + { 0x0319, "Tokina 80-200mm F2.8 ATX-Pro" }, //5 + { 0x031a, "smc PENTAX-F* 250-600mm F5.6 ED[IF]" }, + { 0x031b, "smc PENTAX-F 28-80mm F3.5-4.5" }, //0 + { 0x031b, "Tokina AT-X Pro AF 28-70mm F2.6-2.8" }, //1 + { 0x031c, "smc PENTAX-F 35-70mm F3.5-4.5" }, //0 + { 0x031c, "Tokina 19-35mm F3.5-4.5 AF" }, //1 + { 0x031c, "Tokina AT-X AF 400mm F5.6" }, //2 + { 0x031d, "PENTAX-F 28-80mm F3.5-4.5" }, //0 + { 0x031d, "Sigma AF 18-125mm F3.5-5.6 DC" }, //1 + { 0x031d, "Tokina AT-X PRO 28-70mm F2.6-2.8" }, //2 + { 0x031e, "PENTAX-F 70-200mm F4-5.6" }, + { 0x031f, "smc PENTAX-F 70-210mm F4-5.6" }, //0 + { 0x031f, "Tokina AF 730 75-300mm F4.5-5.6" }, //1 + { 0x031f, "Takumar-F 70-210mm F4-5.6" }, //2 + { 0x0320, "smc PENTAX-F 50mm F1.4" }, + { 0x0321, "smc PENTAX-F 50mm F1.7" }, + { 0x0322, "smc PENTAX-F 135mm F2.8 [IF]" }, + { 0x0323, "smc PENTAX-F 28mm F2.8" }, + { 0x0324, "Sigma 20mm F1.8 EX DG Aspherical RF" }, + { 0x0326, "smc PENTAX-F* 300mm F4.5 ED[IF]" }, + { 0x0327, "smc PENTAX-F* 600mm F4 ED[IF]" }, + { 0x0328, "smc PENTAX-F Macro 100mm F2.8" }, + { 0x0329, "smc PENTAX-F Macro 50mm F2.8" }, //0 + { 0x0329, "Sigma 50mm F2.8 Macro" }, //1 + { 0x032c, "Tamron 35-90mm F4 AF" }, //0 + { 0x032c, "Sigma AF 10-20mm F4-5.6 EX DC" }, //1 + { 0x032c, "Sigma 12-24mm F4.5-5.6 EX DG" }, //2 + { 0x032c, "Sigma 17-70mm F2.8-4.5 DC Macro" }, //3 + { 0x032c, "Sigma 18-50mm F3.5-5.6 DC" }, //4 + { 0x032e, "Sigma or Samsung Lens" }, //0 + { 0x032e, "Sigma APO 70-200mm F2.8 EX" }, //1 + { 0x032e, "Sigma EX APO 100-300mm F4 IF" }, //2 + { 0x032e, "Samsung/Schneider D-XENON 50-200mm F4-5.6 ED" }, //3 + { 0x0332, "smc PENTAX-FA 28-70mm F4 AL" }, + { 0x0333, "Sigma 28mm F1.8 EX DG Aspherical Macro" }, + { 0x0334, "smc PENTAX-FA 28-200mm F3.8-5.6 AL[IF]" }, //0 + { 0x0334, "Tamron AF LD 28-200mm F3.8-5.6 [IF] Aspherical (171D)" },//1 + { 0x0335, "smc PENTAX-FA 28-80mm F3.5-5.6 AL" }, + { 0x03f7, "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED[IF]" }, + { 0x03f8, "smc PENTAX-DA 12-24mm F4 ED AL[IF]" }, + { 0x03fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" }, + { 0x03fb, "smc PENTAX-DA 40mm F2.8 Limited" }, + { 0x03fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" }, + { 0x03fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" }, + { 0x03fe, "smc PENTAX-DA 16-45mm F4 ED AL" }, + { 0x03ff, "Sigma Lens" }, //0 + { 0x03ff, "Sigma 18-200mm F3.5-6.3 DC" }, //1 + { 0x03ff, "Sigma DL-II 35-80mm F4-5.6" }, //2 + { 0x03ff, "Sigma DL Zoom 75-300mm F4-5.6" }, //3 + { 0x03ff, "Sigma DF EX Aspherical 28-70mm F2.8" }, //4 + { 0x03ff, "Sigma AF Tele 400mm F5.6 Multi-coated" }, //5 + { 0x03ff, "Sigma 24-60mm F2.8 EX DG" }, //6 + { 0x03ff, "Sigma 70-300mm F4-5.6 Macro" }, //7 + { 0x03ff, "Sigma 55-200mm F4-5.6 DC" }, //8 + { 0x03ff, "Sigma 18-50mm F2.8 EX DC" }, //9 + { 0x03ff, "Sigma 18-50mm F2.8 EX DC Macro" }, //10 + { 0x0401, "smc PENTAX-FA SOFT 28mm F2.8" }, + { 0x0402, "smc PENTAX-FA 80-320mm F4.5-5.6" }, + { 0x0403, "smc PENTAX-FA 43mm F1.9 Limited" }, + { 0x0406, "smc PENTAX-FA 35-80mm F4-5.6" }, + { 0x040c, "smc PENTAX-FA 50mm F1.4" }, + { 0x040f, "smc PENTAX-FA 28-105mm F4-5.6 [IF]" }, + { 0x0410, "Tamron AF 80-210mm F4-5.6 (178D)" }, + { 0x0413, "Tamron SP AF 90mm F2.8 (172E)" }, + { 0x0414, "smc PENTAX-FA 28-80mm F3.5-5.6" }, + { 0x0415, "Cosina AF 100-300mm F5.6-6.7" }, + { 0x0416, "Tokina 28-80mm F3.5-5.6" }, + { 0x0417, "smc PENTAX-FA 20-35mm F4 AL" }, + { 0x0418, "smc PENTAX-FA 77mm F1.8 Limited" }, + { 0x0419, "Tamron SP AF 14mm F2.8" }, + { 0x041a, "smc PENTAX-FA Macro 100mm F3.5" }, //0 + { 0x041a, "Cosina 100mm F3.5 Macro" }, //1 + { 0x041b, "Tamron AF28-300mm F/3.5-6.3 LD Aspherical[IF] Macro (185D/285D)" }, + { 0x041c, "smc PENTAX-FA 35mm F2 AL" }, + { 0x041d, "Tamron AF 28-200mm F/3.8-5.6 LD Super II Macro (371D)" }, + { 0x0422, "smc PENTAX-FA 24-90mm F3.5-4.5 AL[IF]" }, + { 0x0423, "smc PENTAX-FA 100-300mm F4.7-5.8" }, + { 0x0424, "Tamron AF 70-300mm F/4-5.6 LD Macro 1:2 (572D/A17)" }, + { 0x0425, "Tamron SP AF 24-135mm F3.5-5.6 AD AL (190D)" }, + { 0x0426, "smc PENTAX-FA 28-105mm F3.2-4.5 AL[IF]" }, + { 0x0427, "smc PENTAX-FA 31mm F1.8AL Limited" }, + { 0x0429, "Tamron AF 28-200mm Super Zoom F3.8-5.6 Aspherical XR [IF] Macro (A03)" }, + { 0x042b, "smc PENTAX-FA 28-90mm F3.5-5.6" }, + { 0x042c, "smc PENTAX-FA J 75-300mm F4.5-5.8 AL" }, + { 0x042d, "Tamron Lens" }, //0 + { 0x042d, "Tamron 28-300mm F3.5-6.3 Ultra zoom XR" }, //1 + { 0x042d, "Tamron AF 28-300mm F3.5-6.3 XR Di LD Aspherical [IF] Macro" },//2 + { 0x042e, "smc PENTAX-FA J 28-80mm F3.5-5.6 AL" }, + { 0x042f, "smc PENTAX-FA J 18-35mm F4-5.6 AL" }, + { 0x0431, "Tamron SP AF 28-75mm F2.8 XR Di LD Aspherical [IF] Macro (A09)" }, + { 0x0433, "smc PENTAX-D FA 50mm F2.8 Macro" }, + { 0x0434, "smc PENTAX-D FA 100mm F2.8 Macro" }, + { 0x0437, "Samsung/Schneider D-XENOGON 35mm F2" }, + { 0x0438, "Samsung/Schneider D-XENON 100mm F2.8 Macro" }, + { 0x044b, "Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro (A001)" }, + { 0x04d6, "smc PENTAX-DA 35mm F2.4 AL" }, + { 0x04e5, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" }, + { 0x04e6, "Tamron SP AF 17-50mm F2.8 XR Di II" }, + { 0x04e7, "smc PENTAX-DA 18-250mm F3.5-6.3 ED AL [IF]" }, + { 0x04ed, "Samsung/Schneider D-XENOGON 10-17mm F3.5-4.5" }, + { 0x04ef, "Samsung/Schneider D-XENON 12-24mm F4 ED AL [IF]" }, + { 0x04f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM unused)" }, + { 0x04f3, "smc PENTAX-DA 70mm F2.4 Limited" }, + { 0x04f4, "smc PENTAX-DA 21mm F3.2 AL Limited" }, + { 0x04f5, "Samsung/Schneider D-XENON 50-200mm F4-5.6" }, + { 0x04f6, "Samsung/Schneider D-XENON 18-55mm F3.5-5.6" }, + { 0x04f7, "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED [IF]" }, + { 0x04f8, "smc PENTAX-DA 12-24mm F4 ED AL [IF]" }, + { 0x04f9, "Tamron XR DiII 18-200mm F3.5-6.3 (A14)" }, + { 0x04fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" }, + { 0x04fb, "smc PENTAX-DA 40mm F2.8 Limited" }, + { 0x04fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" }, + { 0x04fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" }, + { 0x04fe, "smc PENTAX-DA 16-45mm F4 ED AL" }, + { 0x0501, "smc PENTAX-FA* 24mm F2 AL[IF]" }, + { 0x0502, "smc PENTAX-FA 28mm F2.8 AL" }, + { 0x0503, "smc PENTAX-FA 50mm F1.7" }, + { 0x0504, "smc PENTAX-FA 50mm F1.4" }, + { 0x0505, "smc PENTAX-FA* 600mm F4 ED[IF]" }, + { 0x0506, "smc PENTAX-FA* 300mm F4.5 ED[IF]" }, + { 0x0507, "smc PENTAX-FA 135mm F2.8 [IF]" }, + { 0x0508, "smc PENTAX-FA Macro 50mm F2.8" }, + { 0x0509, "smc PENTAX-FA Macro 100mm F2.8" }, + { 0x050a, "smc PENTAX-FA* 85mm F1.4 [IF]" }, + { 0x050b, "smc PENTAX-FA* 200mm F2.8 ED[IF]" }, + { 0x050c, "smc PENTAX-FA 28-80mm F3.5-4.7" }, + { 0x050d, "smc PENTAX-FA 70-200mm F4-5.6" }, + { 0x050e, "smc PENTAX-FA* 250-600mm F5.6 ED[IF]" }, + { 0x050f, "smc PENTAX-FA 28-105mm F4-5.6" }, + { 0x0510, "smc PENTAX-FA 100-300mm F4.5-5.6" }, + { 0x0562, "smc PENTAX-FA 100-300mm F4.5-5.6" }, + { 0x0601, "smc PENTAX-FA* 85mm F1.4[IF]" }, + { 0x0602, "smc PENTAX-FA* 200mm F2.8 ED[IF]" }, + { 0x0603, "smc PENTAX-FA* 300mm F2.8 ED[IF]" }, + { 0x0604, "smc PENTAX-FA* 28-70mm F2.8 AL" }, + { 0x0605, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" }, + { 0x0606, "smc PENTAX-FA* 28-70mm F2.8 AL" }, + { 0x0607, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" }, + { 0x0608, "smc PENTAX-FA 28-70mm F4AL" }, + { 0x0609, "smc PENTAX-FA 20mm F2.8" }, + { 0x060a, "smc PENTAX-FA* 400mm F5.6 ED[IF]" }, + { 0x060d, "smc PENTAX-FA* 400mm F5.6 ED[IF]" }, + { 0x060e, "smc PENTAX-FA* Macro 200mm F4 ED[IF]" }, + { 0x0700, "smc PENTAX-DA 21mm F3.2 AL Limited" }, + { 0x073a, "smc PENTAX-D FA Macro 100mm F2.8 WR" }, + { 0x074b, "Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro (A001)" }, + { 0x07c9, "smc Pentax-DA L 50-200mm F4-5.6 ED WR" }, + { 0x07ca, "smc PENTAX-DA L 18-55mm F3.5-5.6 AL WR" }, + { 0x07cb, "HD PENTAX-DA 55-300mm F4-5.8 ED WR" }, + { 0x07cc, "HD PENTAX-DA 15mm F4 ED AL Limited" }, + { 0x07cd, "HD PENTAX-DA 35mm F2.8 Macro Limited" }, + { 0x07ce, "HD PENTAX-DA 70mm F2.4 Limited" }, + { 0x07cf, "HD PENTAX-DA 21mm F3.2 ED AL Limited" }, + { 0x07d0, "HD PENTAX-DA 40mm F2.8 Limited" }, + { 0x07d4, "smc PENTAX-DA 50mm F1.8" }, + { 0x07d5, "smc PENTAX-DA 40mm F2.8 XS" }, + { 0x07d6, "smc PENTAX-DA 35mm F2.4 AL" }, + { 0x07d8, "smc PENTAX-DA L 55-300mm F4-5.8 ED" }, + { 0x07d9, "smc PENTAX-DA 50-200mm F4-5.6 ED WR" }, + { 0x07da, "smc PENTAX-DA 18-55mm F3.5-5.6 AL WR" }, + { 0x07dc, "Tamron SP AF 10-24mm F3.5-4.5 Di II LD Aspherical [IF]" }, + { 0x07dd, "smc PENTAX-DA L 50-200mm F4-5.6 ED" }, + { 0x07de, "smc PENTAX-DA L 18-55mm F3.5-5.6" }, + { 0x07df, "Samsung/Schneider D-XENON 18-55mm F3.5-5.6 II" }, + { 0x07e0, "smc PENTAX-DA 15mm F4 ED AL Limited" }, + { 0x07e1, "Samsung/Schneider D-XENON 18-250mm F3.5-6.3" }, + { 0x07e2, "smc PENTAX-DA* 55mm F1.4 SDM (SDM unused)" }, + { 0x07e3, "smc PENTAX-DA* 60-250mm F4 [IF] SDM (SDM unused)" }, + { 0x07e4, "Samsung 16-45mm F4 ED" }, + { 0x07e5, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" }, + { 0x07e6, "Tamron AF 17-50mm F2.8 XR Di-II LD (Model A16)" }, + { 0x07e7, "smc PENTAX-DA 18-250mm F3.5-6.3ED AL [IF]" }, + { 0x07e9, "smc PENTAX-DA 35mm F2.8 Macro Limited" }, + { 0x07ea, "smc PENTAX-DA* 300 mm F4ED [IF] SDM (SDM not used)" }, + { 0x07eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM (SDM not used)" }, + { 0x07ec, "smc PENTAX-DA 55-300mm F4-5.8 ED" }, + { 0x07ee, "Tamron AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] Macro" }, + { 0x07f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM (SDM not used)" }, + { 0x07f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM not used)" }, + { 0x07f3, "smc PENTAX-DA 70mm F2.4 Limited" }, + { 0x07f4, "smc PENTAX-DA 21mm F3.2 AL Limited" }, + { 0x0800, "Sigma 50-150mm F2.8 II APO EX DC HSM" }, + { 0x0803, "Sigma AF 18-125mm F3.5-5.6 DC" }, + { 0x0804, "Sigma 50mm F1.4 EX DG HSM" }, + { 0x0807, "Sigma 24-70mm F2.8 IF EX DG HSM" }, + { 0x0808, "Sigma 18-250mm F3.5-6.3 DC OS HSM" }, + { 0x080b, "Sigma 10-20mm F3.5 EX DC HSM" }, + { 0x080c, "Sigma 70-300mm F4-5.6 DG OS" }, + { 0x080d, "Sigma 120-400mm F4.5-5.6 APO DG OS HSM" }, + { 0x080e, "Sigma 17-70mm F2.8-4.0 DC Macro OS HSM" }, + { 0x080f, "Sigma 150-500mm F5-6.3 APO DG OS HSM" }, + { 0x0810, "Sigma 70-200mm F2.8 EX DG Macro HSM II" }, + { 0x0811, "Sigma 50-500mm F4.5-6.3 DG OS HSM" }, + { 0x0812, "Sigma 8-16mm F4.5-5.6 DC HSM" }, + { 0x0815, "Sigma 17-50mm F2.8 EX DC OS HSM" }, + { 0x0816, "Sigma 85mm F1.4 EX DG HSM" }, + { 0x0817, "Sigma 70-200mm F2.8 APO EX DG OS HSM" }, + { 0x0819, "Sigma 17-50mm F2.8 EX DC HSM" }, + { 0x081b, "Sigma 18-200mm F3.5-6.3 II DC HSM" }, + { 0x081c, "Sigma 18-250mm F3.5-6.3 DC Macro HSM" }, + { 0x081d, "Sigma 35mm F1.4 DG HSM" }, + { 0x081e, "Sigma 17-70mm F2.8-4 DC Macro HSM Contemporary" }, + { 0x081f, "Sigma 18-35mm F1.8 DC HSM" }, + { 0x0820, "Sigma 30mm F1.4 DC HSM | A" }, + { 0x083b, "HD PENTAX-D FA 150-450mm F4.5-5.6 ED DC AW" }, + { 0x083c, "HD PENTAX-D FA* 70-200mm F2.8 ED DC AW" }, + { 0x08c6, "smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE" }, + { 0x08c7, "HD PENTAX-DA 18-50mm F4-5.6 DC WR RE" }, + { 0x08c8, "HD PENTAX-DA 16-85mm F3.5-5.6 ED DC WR" }, + { 0x08d1, "HD PENTAX-DA 20-40mm F2.8-4 ED Limited DC WR" }, + { 0x08d2, "smc PENTAX-DA 18-270mm F3.5-6.3 ED SDM" }, + { 0x08d3, "HD PENTAX-DA 560mm F5.6 ED AW" }, + { 0x08d7, "smc PENTAX-DA 18-135mm F3.5-5.6 ED AL [IF] DC WR" }, + { 0x08e2, "smc PENTAX-DA* 55mm F1.4 SDM" }, + { 0x08e3, "smc PENTAX DA* 60-250mm F4 [IF] SDM"}, + { 0x08e8, "smc PENTAX-DA 17-70mm F4 AL [IF] SDM" }, + { 0x08ea, "smc PENTAX-DA* 300mm F4 ED [IF] SDM" }, + { 0x08eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM" }, + { 0x08f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM" }, + { 0x08f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM" }, + { 0x08ff, "Sigma Lens" }, //0 + { 0x08ff, "Sigma 70-200mm F2.8 EX DG Macro HSM II" }, //1 + { 0x08ff, "Sigma 150-500mm F5-6.3 DG APO [OS] HSM" }, //2 + { 0x08ff, "Sigma 50-150mm F2.8 II APO EX DC HSM" }, //3 + { 0x08ff, "Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye" }, //4 + { 0x08ff, "Sigma 50-200mm F4-5.6 DC OS" }, //5 + { 0x08ff, "Sigma 24-70mm F2.8 EX DG HSM" }, //6 + { 0x0900, "645 Manual Lens" }, + { 0x0a00, "645 A Series Lens" }, + { 0x0b01, "smc PENTAX-FA 645 75mm F2.8" }, + { 0x0b02, "smc PENTAX-FA 645 45mm F2.8" }, + { 0x0b03, "smc PENTAX-FA* 645 300mm F4 ED [IF]" }, + { 0x0b04, "smc PENTAX-FA 645 45mm-85mm F4.5" }, + { 0x0b05, "smc PENTAX-FA 645 400mm F5.6 ED [IF]" }, + { 0x0b07, "smc PENTAX-FA 645 Macro 120mm F4" }, + { 0x0b08, "smc PENTAX-FA 645 80-160mm F4.5" }, + { 0x0b09, "smc PENTAX-FA 645 200mm F4 [IF]" }, + { 0x0b0a, "smc PENTAX-FA 645 150mm F2.8 [IF]" }, + { 0x0b0b, "smc PENTAX-FA 645 35mm F3.5 AL [IF]" }, + { 0x0b0c, "smc PENTAX-FA 645 300mm F5.6 ED [IF]" }, + { 0x0b0e, "smc PENTAX-FA 645 55-110mm F5.6" }, + { 0x0b10, "smc PENTAX-FA 645 33-55mm F4.5 AL" }, + { 0x0b11, "smc PENTAX-FA 645 150mm-300mm F5.6 ED [IF]" }, + { 0x0d12, "smc PENTAX-D FA 645 55mm F2.8 AL [IF] SDM AW" }, + { 0x0d13, "smc PENTAX-D FA 645 25mm F4 AL [IF] SDM AW" }, + { 0x0d14, "HD PENTAX-D FA 645 90mm F2.8 ED AW SR" }, + { 0x0dfd, "HD PENTAX-DA 645 28-45mm F4.5 ED AW SR" }, + { 0x1500, "Pentax Q Manual Lens" }, + { 0x1501, "01 Standard Prime 8.5mm F1.9" }, + { 0x1502, "02 Standard Zoom 5-15mm F2.8-4.5" }, + { 0x1603, "03 Fish-eye 3.2mm F5.6" }, + { 0x1604, "04 Toy Lens Wide 6.3mm F7.1" }, + { 0x1605, "05 Toy Lens Telephoto 18mm F8" }, + { 0x1506, "06 Telephoto Zoom 15-45mm F2.8" }, + { 0x1507, "07 Mount Shield 11.5mm F9" }, + { 0x1508, "08 Wide Zoom 3.8-5.9mm F3.7-4" }, + }; + + //! ImageTone, tag 0x004f + extern const TagDetails pentaxImageTone[] = { + { 0, N_("Natural") }, + { 1, N_("Bright") }, + { 2, N_("Portrait") }, + { 3, N_("Landscape") }, + { 4, N_("Vibrant") }, + { 5, N_("Monochrome") }, + { 6, N_("Muted") }, + { 7, N_("Reversal film") }, + { 8, N_("Bleach bypass") }, + { 9, N_("Radiant") }, + }; + + //! DynamicRangeExpansion, tag 0x0069 + extern const TagDetails pentaxDynamicRangeExpansion[] = { + { 0, N_("Off") }, + { 0x1000000, N_("On") }, + }; + + //! HighISONoiseReduction, tag 0x0071 + extern const TagDetails pentaxHighISONoiseReduction[] = { + { 0, N_("Off") }, + { 1, N_("Weakest") }, + { 2, N_("Weak") }, + { 3, N_("Strong") }, + { 4, N_("Custom") }, + }; + + std::ostream& PentaxMakerNote::printPentaxVersion(std::ostream& os, const Value& value, const ExifData*) + { + std::string val = value.toString(); + size_t i; + while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) { + val.replace(i, 1, "."); + } + os << val; + return os; + } + + std::ostream& PentaxMakerNote::printPentaxResolution(std::ostream& os, const Value& value, const ExifData*) + { + std::string val = value.toString(); + size_t i; + while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) { + val.replace(i, 1, "x"); + } + os << val; + return os; + } + + std::ostream& PentaxMakerNote::printPentaxDate(std::ostream& os, const Value& value, const ExifData*) + { + /* I choose same format as is used inside EXIF itself */ + os << ((value.toLong(0) << 8) + value.toLong(1)); + os << ":"; + os << std::setw(2) << std::setfill('0') << value.toLong(2); + os << ":"; + os << std::setw(2) << std::setfill('0') << value.toLong(3); + return os; + } + + std::ostream& PentaxMakerNote::printPentaxTime(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + os << std::setw(2) << std::setfill('0') << value.toLong(0); + os << ":"; + os << std::setw(2) << std::setfill('0') << value.toLong(1); + os << ":"; + os << std::setw(2) << std::setfill('0') << value.toLong(2); + os.flags(f); + return os; + } + + std::ostream& PentaxMakerNote::printPentaxExposure(std::ostream& os, const Value& value, const ExifData*) + { + os << static_cast(value.toLong()) / 100 << " ms"; + return os; + } + + std::ostream& PentaxMakerNote::printPentaxFValue(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + os << "F" << std::setprecision(2) + << static_cast(value.toLong()) / 10; + os.flags(f); + return os; + } + + std::ostream& PentaxMakerNote::printPentaxFocalLength(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + os << std::fixed << std::setprecision(1) + << static_cast(value.toLong()) / 100 + << " mm"; + os.flags(f); + return os; + } + + std::ostream& PentaxMakerNote::printPentaxCompensation(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + os << std::setprecision(2) + << (static_cast(value.toLong()) - 50) / 10 + << " EV"; + os.flags(f); + return os; + } + + std::ostream& PentaxMakerNote::printPentaxTemperature(std::ostream& os, const Value& value, const ExifData*) + { + os << value.toLong() << " C"; + return os; + } + + std::ostream& PentaxMakerNote::printPentaxFlashCompensation(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + os << std::setprecision(2) + << static_cast(value.toLong()) / 256 + << " EV"; + os.flags(f); + return os; + } + + std::ostream& PentaxMakerNote::printPentaxBracketing(std::ostream& os, const Value& value, const ExifData*) + { + long l0 = value.toLong(0); + + if (l0 < 10) { + os << std::setprecision(2) + << static_cast(l0) / 3 + << " EV"; + } else { + os << std::setprecision(2) + << static_cast(l0) - 9.5 + << " EV"; + } + + if (value.count() == 2) { + long l1 = value.toLong(1); + long type; + long range; + os << " ("; + if (l1 == 0) { + os << _("No extended bracketing"); + } else { + type = l1 >> 8; + range = l1 & 0xff; + switch (type) { + case 1: + os << _("WB-BA"); + break; + case 2: + os << _("WB-GM"); + break; + case 3: + os << _("Saturation"); + break; + case 4: + os << _("Sharpness"); + break; + case 5: + os << _("Contrast"); + break; + default: + os << _("Unknown ") << type; + break; + } + os << " " << range; + } + os << ")"; + } + return os; + } + + // Pentax MakerNote Tag Info + const TagInfo PentaxMakerNote::tagInfo_[] = { + TagInfo(0x0000, "Version", N_("Version"), + N_("Pentax Makernote version"), + pentaxId, makerTags, undefined, -1, printPentaxVersion), + TagInfo(0x0001, "Mode", N_("Shooting mode"), + N_("Camera shooting mode"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxShootingMode)), + TagInfo(0x0002, "PreviewResolution", N_("Resolution of a preview image"), + N_("Resolution of a preview image"), + pentaxId, makerTags, undefined, -1, printPentaxResolution), + TagInfo(0x0003, "PreviewLength", N_("Length of a preview image"), + N_("Size of an IFD containing a preview image"), + pentaxId, makerTags, undefined, -1, printValue), + TagInfo(0x0004, "PreviewOffset", N_("Pointer to a preview image"), + N_("Offset to an IFD containing a preview image"), + pentaxId, makerTags, undefined, -1, printValue), + TagInfo(0x0005, "ModelID", N_("Model identification"), + N_("Pentax model identification"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)), + TagInfo(0x0006, "Date", N_("Date"), + N_("Date"), + pentaxId, makerTags, undefined, -1, printPentaxDate), + TagInfo(0x0007, "Time", N_("Time"), + N_("Time"), + pentaxId, makerTags, undefined, -1, printPentaxTime), + TagInfo(0x0008, "Quality", N_("Image quality"), + N_("Image quality settings"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxQuality)), + TagInfo(0x0009, "Size", N_("Image size"), + N_("Image size settings"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxSize)), + /* Some missing ! */ + TagInfo(0x000c, "Flash", N_("Flash mode"), + N_("Flash mode settings"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFlash)), + TagInfo(0x000d, "Focus", N_("Focus mode"), + N_("Focus mode settings"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFocus)), + TagInfo(0x000e, "AFPoint", N_("AF point"), + N_("Selected AF point"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPoint)), + TagInfo(0x000F, "AFPointInFocus", N_("AF point in focus"), + N_("AF point in focus"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPointFocus)), + /* Some missing ! */ + TagInfo(0x0012, "ExposureTime", N_("Exposure time"), + N_("Exposure time"), + pentaxId, makerTags, unsignedLong, -1, printPentaxExposure), + TagInfo(0x0013, "FNumber", N_("F-Number"), + N_("F-Number"), + pentaxId, makerTags, unsignedLong, -1, printPentaxFValue), + TagInfo(0x0014, "ISO", N_("ISO sensitivity"), + N_("ISO sensitivity settings"), + pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxISO)), + /* Some missing ! */ + TagInfo(0x0016, "ExposureCompensation", N_("Exposure compensation"), + N_("Exposure compensation"), + pentaxId, makerTags, unsignedLong, -1, printPentaxCompensation), + /* Some missing ! */ + TagInfo(0x0017, "MeteringMode", N_("MeteringMode"), + N_("MeteringMode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxMeteringMode)), + TagInfo(0x0018, "AutoBracketing", N_("AutoBracketing"), + N_("AutoBracketing"), + pentaxId, makerTags, undefined, -1, printPentaxBracketing), + TagInfo(0x0019, "WhiteBalance", N_("White balance"), + N_("White balance"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalance)), + TagInfo(0x001a, "WhiteBalanceMode", N_("White balance mode"), + N_("White balance mode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalanceMode)), + TagInfo(0x001b, "BlueBalance", N_("Blue balance"), + N_("Blue color balance"), + pentaxId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x001c, "RedBalance", N_("Red balance"), + N_("Red color balance"), + pentaxId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x001d, "FocalLength", N_("FocalLength"), + N_("FocalLength"), + pentaxId, makerTags, undefined, -1, printPentaxFocalLength), + TagInfo(0x001e, "DigitalZoom", N_("Digital zoom"), + N_("Digital zoom"), + pentaxId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x001f, "Saturation", N_("Saturation"), + N_("Saturation"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSaturation)), + TagInfo(0x0020, "Contrast", N_("Contrast"), + N_("Contrast"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxContrast)), + TagInfo(0x0021, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSharpness)), + TagInfo(0x0022, "Location", N_("Location"), + N_("Location"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxLocation)), + TagInfo(0x0023, "Hometown", N_("Hometown"), + N_("Home town"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)), + TagInfo(0x0024, "Destination", N_("Destination"), + N_("Destination"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)), + TagInfo(0x0025, "HometownDST", N_("Hometown DST"), + N_("Whether day saving time is active in home town"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)), + TagInfo(0x0026, "DestinationDST", N_("Destination DST"), + N_("Whether day saving time is active in destination"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)), + TagInfo(0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), + N_("DSPFirmwareVersion"), + pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), + N_("CPUFirmwareVersion"), + pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0029, "FrameNumber", N_("Frame number"), + N_("Frame number"), + pentaxId, makerTags, undefined, -1, printValue), + /* Some missing ! */ + TagInfo(0x002d, "EffectiveLV", N_("Light value"), + N_("Camera calculated light value, includes exposure compensation"), + pentaxId, makerTags, unsignedShort, -1, printValue), + /* Some missing ! */ + TagInfo(0x0032, "ImageProcessing", N_("Image processing"), + N_("Image processing"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)), + TagInfo(0x0033, "PictureMode", N_("Picture mode"), + N_("Picture mode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)), + TagInfo(0x0034, "DriveMode", N_("Drive mode"), + N_("Drive mode"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)), + /* Some missing ! */ + TagInfo(0x0037, "ColorSpace", N_("Color space"), + N_("Color space"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxColorSpace)), + TagInfo(0x0038, "ImageAreaOffset", N_("Image area offset"), + N_("Image area offset"), + pentaxId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0039, "RawImageSize", N_("Raw image size"), + N_("Raw image size"), + pentaxId, makerTags, unsignedLong, -1, printValue), + /* Some missing ! */ + TagInfo(0x003e, "PreviewImageBorders", N_("Preview image borders"), + N_("Preview image borders"), + pentaxId, makerTags, unsignedByte, -1, printValue), + TagInfo(0x003f, "LensType", N_("Lens type"), + N_("Lens type"), + pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)), + TagInfo(0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), + N_("Sensitivity adjust"), + pentaxId, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0041, "DigitalFilter", N_("Digital filter"), + N_("Digital filter"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), + /* Some missing ! */ + TagInfo(0x0047, "Temperature", N_("Temperature"), + N_("Camera temperature"), + pentaxId, makerTags, signedByte, -1, printPentaxTemperature), + TagInfo(0x0048, "AELock", N_("AE lock"), + N_("AE lock"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), + TagInfo(0x0049, "NoiseReduction", N_("Noise reduction"), + N_("Noise reduction"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)), + /* Some missing ! */ + TagInfo(0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"), + N_("Flash exposure compensation"), + pentaxId, makerTags, signedLong, -1, printPentaxFlashCompensation), + /* Some missing ! */ + TagInfo(0x004f, "ImageTone", N_("Image tone"), + N_("Image tone"), + pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxImageTone)), + TagInfo(0x0050, "ColorTemperature", N_("Color temperature"), + N_("Color temperature"), + pentaxId, makerTags, unsignedShort, -1, printValue), + /* Some missing ! */ + TagInfo(0x005c, "ShakeReduction", N_("Shake reduction"), + N_("Shake reduction information"), + pentaxId, makerTags, undefined, -1, printValue), + TagInfo(0x005d, "ShutterCount", N_("Shutter count"), + N_("Shutter count"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: This has some encryption by date (see exiftool) */ + TagInfo(0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"), + N_("Dynamic range expansion"), + pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)), + TagInfo(0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), + N_("High ISO noise reduction"), + pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)), + TagInfo(0x0072, "AFAdjustment", N_("AF Adjustment"), + N_("AF Adjustment"), + pentaxId, makerTags, undefined, -1, printValue), + /* Many missing ! */ + TagInfo(0x0200, "BlackPoint", N_("Black point"), + N_("Black point"), + pentaxId, makerTags, undefined, -1, printValue), + TagInfo(0x0201, "WhitePoint", N_("White point"), + N_("White point"), + pentaxId, makerTags, undefined, -1, printValue), + /* Some missing ! */ + TagInfo(0x0205, "ShotInfo", N_("ShotInfo"), + N_("ShotInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0206, "AEInfo", N_("AEInfo"), + N_("AEInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0207, "LensInfo", N_("LensInfo"), + N_("LensInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0208, "FlashInfo", N_("FlashInfo"), + N_("FlashInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), + N_("AEMeteringSegments"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x020a, "FlashADump", N_("FlashADump"), + N_("FlashADump"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x020b, "FlashBDump", N_("FlashBDump"), + N_("FlashBDump"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + /* Some missing ! */ + TagInfo(0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), + N_("WB_RGGBLevelsDaylight"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"), + N_("WB_RGGBLevelsShade"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), + N_("WB_RGGBLevelsCloudy"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"), + N_("WB_RGGBLevelsTungsten"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), + N_("WB_RGGBLevelsFluorescentD"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"), + N_("WB_RGGBLevelsFluorescentN"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), + N_("WB_RGGBLevelsFluorescentW"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"), + N_("WB_RGGBLevelsFlash"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0215, "CameraInfo", N_("CameraInfo"), + N_("CameraInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0216, "BatteryInfo", N_("BatteryInfo"), + N_("BatteryInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x021f, "AFInfo", N_("AFInfo"), + N_("AFInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0222, "ColorInfo", N_("ColorInfo"), + N_("ColorInfo"), + pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */ + TagInfo(0x0229, "SerialNumber", N_("Serial Number"), + N_("Serial Number"), + pentaxId, makerTags, asciiString, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", + N_("Unknown PentaxMakerNote tag"), + pentaxId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* PentaxMakerNote::tagList() + { + return tagInfo_; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/pentaxmn_int.hpp b/vendor/exiv2-0.25/src/pentaxmn_int.hpp new file mode 100644 index 0000000..8346725 --- /dev/null +++ b/vendor/exiv2-0.25/src/pentaxmn_int.hpp @@ -0,0 +1,128 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file pentaxmn_int.hpp + @brief Pentax MakerNote implemented according to the specification + http://www.gvsoft.homedns.org/exif/makernote-pentax-type3.html and + based on ExifTool implementation and + Pentax Makernote list by Phil Harvey
+ @version $Rev: 3777 $ + @author Michal Cihar + michal@cihar.com + @date 27-Sep-07 + */ +#ifndef PENTAXMN_INT_HPP_ +#define PENTAXMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "tags_int.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Pentaxfilm cameras + class PentaxMakerNote { + public: + //! Return read-only list of built-in Pentaxfilm tags + static const TagInfo* tagList(); + + //! Print Pentax version + static std::ostream& printPentaxVersion(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax resolution + static std::ostream& printPentaxResolution(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax date + static std::ostream& printPentaxDate(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax time + static std::ostream& printPentaxTime(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax exposure + static std::ostream& printPentaxExposure(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax F value + static std::ostream& printPentaxFValue(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax focal length + static std::ostream& printPentaxFocalLength(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax compensation + static std::ostream& printPentaxCompensation(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax temperature + static std::ostream& printPentaxTemperature(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax flash compensation + static std::ostream& printPentaxFlashCompensation(std::ostream& os, const Value& value, const ExifData*); + //! Print Pentax bracketing + static std::ostream& printPentaxBracketing(std::ostream& os, const Value& value, const ExifData*); + + private: + //! Tag information + static const TagInfo tagInfo_[]; + }; // class PentaxMakerNote + + /*! + @brief Print function to translate Pentax "combi-values" to a description + by looking up a reference table. + */ + template + std::ostream& printCombiTag(std::ostream& os, const Value& value, const ExifData* metadata) + { + std::ios::fmtflags f( os.flags() ); + if ((value.count() != count && (value.count() < (count + ignoredcount) || value.count() > (count + ignoredcountmax))) || count > 4) { + return printValue(os, value, metadata); + } + unsigned long l = 0; + for (int c = 0; c < count; ++c) { + if (value.toLong(c) < 0 || value.toLong(c) > 255) { + return printValue(os, value, metadata); + } + l += (value.toLong(c) << ((count - c - 1) * 8)); + } + const TagDetails* td = find(array, l); + if (td) { + os << exvGettext(td->label_); + } + else { + os << exvGettext("Unknown") << " (0x" + << std::setw(2 * count) << std::setfill('0') + << std::hex << l << std::dec << ")"; + } + + os.flags(f); + return os; + } + +//! Shortcut for the printCombiTag template which requires typing the array name only once. +#define EXV_PRINT_COMBITAG(array, count, ignoredcount) printCombiTag +//! Shortcut for the printCombiTag template which requires typing the array name only once. +#define EXV_PRINT_COMBITAG_MULTI(array, count, ignoredcount, ignoredcountmax) printCombiTag + +}} // namespace Internal, Exiv2 + +#endif // #ifndef PENTAXMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/pgfimage.cpp b/vendor/exiv2-0.25/src/pgfimage.cpp new file mode 100644 index 0000000..65bb338 --- /dev/null +++ b/vendor/exiv2-0.25/src/pgfimage.cpp @@ -0,0 +1,323 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: pgfimage.cpp + Version: $Rev: 3777 $ + Author(s): Gilles Caulier (cgilles) + History: 16-Jun-09, gc: submitted + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: pgfimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "pgfimage.hpp" +#include "image.hpp" +#include "pngimage.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include // for EOF +#include +#include +#include +#include + +// Signature from front of PGF file +const unsigned char pgfSignature[3] = { 0x50, 0x47, 0x46 }; + +const unsigned char pgfBlank[] = { 0x50,0x47,0x46,0x36,0x10,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, + 0x00,0x00,0x18,0x03,0x03,0x00,0x00,0x00,0x14,0x00,0x67,0x08,0x20,0x00,0xc0,0x01, + 0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00, + 0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00, + 0x00,0x00,0x37,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x37,0x00, + 0x00,0x78,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00 + }; + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + PgfImage::PgfImage(BasicIo::AutoPtr io, bool create) + : Image(ImageType::pgf, mdExif | mdIptc| mdXmp | mdComment, io) + { + if (create) + { + if (io_->open() == 0) + { +#ifdef DEBUG + std::cerr << "Exiv2::PgfImage:: Creating PGF image to memory\n"; +#endif + IoCloser closer(*io_); + if (io_->write(pgfBlank, sizeof(pgfBlank)) != sizeof(pgfBlank)) + { +#ifdef DEBUG + std::cerr << "Exiv2::PgfImage:: Failed to create PGF image on memory\n"; +#endif + } + } + } + } // PgfImage::PgfImage + + void PgfImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::PgfImage::readMetadata: Reading PGF file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isPgfType(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "PGF"); + } + clearMetadata(); + + readPgfMagicNumber(*io_); + + uint32_t headerSize = readPgfHeaderSize(*io_); + + readPgfHeaderStructure(*io_, &pixelWidth_, &pixelHeight_); + + // And now, the most interresting, the user data byte array where metadata are stored as small image. + + long size = 8 + headerSize - io_->tell(); + +#ifdef DEBUG + std::cout << "Exiv2::PgfImage::readMetadata: Found Image data (" << size << " bytes)\n"; +#endif + + if (size < 0) throw Error(20); + if (size == 0) return; + + DataBuf imgData(size); + std::memset(imgData.pData_, 0x0, imgData.size_); + long bufRead = io_->read(imgData.pData_, imgData.size_); + if (io_->error()) throw Error(14); + if (bufRead != imgData.size_) throw Error(20); + + Image::AutoPtr image = Exiv2::ImageFactory::open(imgData.pData_, imgData.size_); + image->readMetadata(); + exifData() = image->exifData(); + iptcData() = image->iptcData(); + xmpData() = image->xmpData(); + + } // PgfImage::readMetadata + + void PgfImage::writeMetadata() + { + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + BasicIo::AutoPtr tempIo(io_->temporary()); // may throw + assert (tempIo.get() != 0); + + doWriteMetadata(*tempIo); // may throw + io_->close(); + io_->transfer(*tempIo); // may throw + + } // PgfImage::writeMetadata + + void PgfImage::doWriteMetadata(BasicIo& outIo) + { + if (!io_->isopen()) throw Error(20); + if (!outIo.isopen()) throw Error(21); + +#ifdef DEBUG + std::cout << "Exiv2::PgfImage::doWriteMetadata: Writing PGF file " << io_->path() << "\n"; + std::cout << "Exiv2::PgfImage::doWriteMetadata: tmp file created " << outIo.path() << "\n"; +#endif + + // Ensure that this is the correct image type + if (!isPgfType(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(20); + throw Error(22); + } + + // Ensure PGF version. + byte mnb = readPgfMagicNumber(*io_); + + readPgfHeaderSize(*io_); + + int w, h; + DataBuf header = readPgfHeaderStructure(*io_, &w, &h); + + Image::AutoPtr img = ImageFactory::create(ImageType::png); + + img->setExifData(exifData_); + img->setIptcData(iptcData_); + img->setXmpData(xmpData_); + img->writeMetadata(); + int imgSize = img->io().size(); + DataBuf imgBuf = img->io().read(imgSize); + +#ifdef DEBUG + std::cout << "Exiv2::PgfImage::doWriteMetadata: Creating image to host metadata (" << imgSize << " bytes)\n"; +#endif + + //--------------------------------------------------------------- + + // Write PGF Signature. + if (outIo.write(pgfSignature, 3) != 3) throw Error(21); + + // Write Magic number. + if (outIo.putb(mnb) == EOF) throw Error(21); + + // Write new Header size. + uint32_t newHeaderSize = header.size_ + imgSize; + DataBuf buffer(4); + memcpy (buffer.pData_, &newHeaderSize, 4); + if (outIo.write(buffer.pData_, 4) != 4) throw Error(21); + +#ifdef DEBUG + std::cout << "Exiv2::PgfImage: new PGF header size : " << newHeaderSize << " bytes\n"; + + printf("%x\n", buffer.pData_[0]); + printf("%x\n", buffer.pData_[1]); + printf("%x\n", buffer.pData_[2]); + printf("%x\n", buffer.pData_[3]); +#endif + + // Write Header data. + if (outIo.write(header.pData_, header.size_) != header.size_) throw Error(21); + + // Write new metadata byte array. + if (outIo.write(imgBuf.pData_, imgBuf.size_) != imgBuf.size_) throw Error(21); + + // Copy the rest of PGF image data. + + DataBuf buf(4096); + long readSize = 0; + while ((readSize=io_->read(buf.pData_, buf.size_))) + { + if (outIo.write(buf.pData_, readSize) != readSize) throw Error(21); + } + if (outIo.error()) throw Error(21); + + } // PgfImage::doWriteMetadata + + byte PgfImage::readPgfMagicNumber(BasicIo& iIo) + { + byte b = iIo.getb(); + if (iIo.error()) throw Error(14); + + if (b < 0x36) // 0x36 = '6'. + { + // Not right Magick version. +#ifdef DEBUG + std::cout << "Exiv2::PgfImage::readMetadata: wrong Magick number\n"; +#endif + } + + return b; + } // PgfImage::readPgfMagicNumber + + uint32_t PgfImage::readPgfHeaderSize(BasicIo& iIo) + { + DataBuf buffer(4); + long bufRead = iIo.read(buffer.pData_, buffer.size_); + if (iIo.error()) throw Error(14); + if (bufRead != buffer.size_) throw Error(20); + + uint32_t headerSize = 0; + memcpy (&headerSize, buffer.pData_, 4); // TODO : check endianness. + if (headerSize <= 0 ) throw Error(22); + +#ifdef DEBUG + std::cout << "Exiv2::PgfImage: PGF header size : " << headerSize << " bytes\n"; +#endif + + return headerSize; + } // PgfImage::readPgfHeaderSize + + DataBuf PgfImage::readPgfHeaderStructure(BasicIo& iIo, int* width, int* height) + { + DataBuf header(16); + long bufRead = iIo.read(header.pData_, header.size_); + if (iIo.error()) throw Error(14); + if (bufRead != header.size_) throw Error(20); + + memcpy(width, &header.pData_[0], 4); // TODO : check endianness. + memcpy(height, &header.pData_[4], 4); // TODO : check endianness. + + /* NOTE: properties not yet used + byte nLevels = buffer.pData_[8]; + byte quality = buffer.pData_[9]; + byte bpp = buffer.pData_[10]; + byte channels = buffer.pData_[11]; + */ + byte mode = header.pData_[12]; + + if (mode == 2) // Indexed color image. We pass color table (256 * 3 bytes). + { + header.alloc(16 + 256*3); + + bufRead = iIo.read(&header.pData_[16], 256*3); + if (iIo.error()) throw Error(14); + if (bufRead != 256*3) throw Error(20); + } + + return header; + } // PgfImage::readPgfHeaderStructure + + // ************************************************************************* + // free functions + Image::AutoPtr newPgfInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new PgfImage(io, create)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isPgfType(BasicIo& iIo, bool advance) + { + const int32_t len = 3; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) + { + return false; + } + int rc = memcmp(buf, pgfSignature, 3); + if (!advance || rc != 0) + { + iIo.seek(-len, BasicIo::cur); + } + + return rc == 0; + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/pngchunk.cpp b/vendor/exiv2-0.25/src/pngchunk.cpp new file mode 100644 index 0000000..66919b6 --- /dev/null +++ b/vendor/exiv2-0.25/src/pngchunk.cpp @@ -0,0 +1,684 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: pngchunk.cpp + Version: $Rev: 3777 $ + Author(s): Gilles Caulier (cgilles) + History: 12-Jun-06, gc: submitted + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: pngchunk.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#ifdef EXV_HAVE_LIBZ +#include "pngchunk_int.hpp" +#include "tiffimage.hpp" +#include "jpgimage.hpp" +#include "exif.hpp" +#include "iptc.hpp" +#include "image.hpp" +#include "error.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include +#include + +#include // To uncompress or compress text chunk + +/* + +URLs to find informations about PNG chunks : + +tEXt and zTXt chunks : http://www.vias.org/pngguide/chapter11_04.html +iTXt chunk : http://www.vias.org/pngguide/chapter11_05.html +PNG tags : http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData + +*/ + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + void PngChunk::decodeIHDRChunk(const DataBuf& data, + int* outWidth, + int* outHeight) + { + // Extract image width and height from IHDR chunk. + + *outWidth = getLong((const byte*)data.pData_, bigEndian); + *outHeight = getLong((const byte*)data.pData_ + 4, bigEndian); + + } // PngChunk::decodeIHDRChunk + + void PngChunk::decodeTXTChunk(Image* pImage, + const DataBuf& data, + TxtChunkType type) + { + DataBuf key = keyTXTChunk(data); + +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::decodeTXTChunk: TXT chunk key: " + << std::string((const char*)key.pData_, key.size_) << "\n"; +#endif + DataBuf arr = parseTXTChunk(data, key.size_, type); + +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::decodeTXTChunk: TXT chunk data: " + << std::string((const char*)arr.pData_, arr.size_) << "\n"; +#endif + parseChunkContent(pImage, key.pData_, key.size_, arr); + + } // PngChunk::decodeTXTChunk + + DataBuf PngChunk::keyTXTChunk(const DataBuf& data, bool stripHeader) + { + // From a tEXt, zTXt, or iTXt chunk, + // we get the key, it's a null terminated string at the chunk start + if (data.size_ <= (stripHeader ? 8 : 0)) throw Error(14); + const byte *key = data.pData_ + (stripHeader ? 8 : 0); + + // Find null string at end of key. + int keysize=0; + for ( ; key[keysize] != 0 ; keysize++) + { + // look if keysize is valid. + if (keysize >= data.size_) + throw Error(14); + } + + return DataBuf(key, keysize); + + } // PngChunk::keyTXTChunk + + DataBuf PngChunk::parseTXTChunk(const DataBuf& data, + int keysize, + TxtChunkType type) + { + DataBuf arr; + + if(type == zTXt_Chunk) + { + // Extract a deflate compressed Latin-1 text chunk + + // we get the compression method after the key + const byte* compressionMethod = data.pData_ + keysize + 1; + if ( *compressionMethod != 0x00 ) + { + // then it isn't zlib compressed and we are sunk +#ifdef DEBUG + std::cerr << "Exiv2::PngChunk::parseTXTChunk: Non-standard zTXt compression method.\n"; +#endif + throw Error(14); + } + + // compressed string after the compression technique spec + const byte* compressedText = data.pData_ + keysize + 2; + unsigned int compressedTextSize = data.size_ - keysize - 2; + + zlibUncompress(compressedText, compressedTextSize, arr); + } + else if(type == tEXt_Chunk) + { + // Extract a non-compressed Latin-1 text chunk + + // the text comes after the key, but isn't null terminated + const byte* text = data.pData_ + keysize + 1; + long textsize = data.size_ - keysize - 1; + + arr = DataBuf(text, textsize); + } + else if(type == iTXt_Chunk) + { + // Extract a deflate compressed or uncompressed UTF-8 text chunk + + // we get the compression flag after the key + const byte* compressionFlag = data.pData_ + keysize + 1; + // we get the compression method after the compression flag + const byte* compressionMethod = data.pData_ + keysize + 2; + // language description string after the compression technique spec + std::string languageText((const char*)(data.pData_ + keysize + 3)); + unsigned int languageTextSize = static_cast(languageText.size()); + // translated keyword string after the language description + std::string translatedKeyText((const char*)(data.pData_ + keysize + 3 + languageTextSize +1)); + unsigned int translatedKeyTextSize = static_cast(translatedKeyText.size()); + + if ( compressionFlag[0] == 0x00 ) + { + // then it's an uncompressed iTXt chunk +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::parseTXTChunk: We found an uncompressed iTXt field\n"; +#endif + + // the text comes after the translated keyword, but isn't null terminated + const byte* text = data.pData_ + keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1; + long textsize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); + + arr.alloc(textsize); + arr = DataBuf(text, textsize); + } + else if ( compressionFlag[0] == 0x01 && compressionMethod[0] == 0x00 ) + { + // then it's a zlib compressed iTXt chunk +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::parseTXTChunk: We found a zlib compressed iTXt field\n"; +#endif + + // the compressed text comes after the translated keyword, but isn't null terminated + const byte* compressedText = data.pData_ + keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1; + long compressedTextSize = data.size_ - (keysize + 3 + languageTextSize + 1 + translatedKeyTextSize + 1); + + zlibUncompress(compressedText, compressedTextSize, arr); + } + else + { + // then it isn't zlib compressed and we are sunk +#ifdef DEBUG + std::cerr << "Exiv2::PngChunk::parseTXTChunk: Non-standard iTXt compression method.\n"; +#endif + throw Error(14); + } + } + else + { +#ifdef DEBUG + std::cerr << "Exiv2::PngChunk::parseTXTChunk: We found a field, not expected though\n"; +#endif + throw Error(14); + } + + return arr; + + } // PngChunk::parsePngChunk + + void PngChunk::parseChunkContent( Image* pImage, + const byte* key, + long keySize, + const DataBuf arr) + { + // We look if an ImageMagick EXIF raw profile exist. + + if ( keySize >= 21 + && ( memcmp("Raw profile type exif", key, 21) == 0 + || memcmp("Raw profile type APP1", key, 21) == 0) + && pImage->exifData().empty()) + { + DataBuf exifData = readRawProfile(arr); + long length = exifData.size_; + + if (length > 0) + { + // Find the position of Exif header in bytes array. + + const byte exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 }; + long pos = -1; + + for (long i=0 ; i < length-(long)sizeof(exifHeader) ; i++) + { + if (memcmp(exifHeader, &exifData.pData_[i], sizeof(exifHeader)) == 0) + { + pos = i; + break; + } + } + + // If found it, store only these data at from this place. + + if (pos !=-1) + { +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::parseChunkContent: Exif header found at position " << pos << "\n"; +#endif + pos = pos + sizeof(exifHeader); + ByteOrder bo = TiffParser::decode(pImage->exifData(), + pImage->iptcData(), + pImage->xmpData(), + exifData.pData_ + pos, + length - pos); + pImage->setByteOrder(bo); + } + else + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode Exif metadata.\n"; +#endif + pImage->exifData().clear(); + } + } + } + + // We look if an ImageMagick IPTC raw profile exist. + + if ( keySize >= 21 + && memcmp("Raw profile type iptc", key, 21) == 0 + && pImage->iptcData().empty()) { + DataBuf psData = readRawProfile(arr); + if (psData.size_ > 0) { + Blob iptcBlob; + const byte *record = 0; + uint32_t sizeIptc = 0; + uint32_t sizeHdr = 0; + + const byte* pEnd = psData.pData_ + psData.size_; + const byte* pCur = psData.pData_; + while ( pCur < pEnd + && 0 == Photoshop::locateIptcIrb(pCur, + static_cast(pEnd - pCur), + &record, + &sizeHdr, + &sizeIptc)) { + if (sizeIptc) { +#ifdef DEBUG + std::cerr << "Found IPTC IRB, size = " << sizeIptc << "\n"; +#endif + append(iptcBlob, record + sizeHdr, sizeIptc); + } + pCur = record + sizeHdr + sizeIptc; + pCur += (sizeIptc & 1); + } + if ( iptcBlob.size() > 0 + && IptcParser::decode(pImage->iptcData(), + &iptcBlob[0], + static_cast(iptcBlob.size()))) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode IPTC metadata.\n"; +#endif + pImage->clearIptcData(); + } + // If there is no IRB, try to decode the complete chunk data + if ( iptcBlob.empty() + && IptcParser::decode(pImage->iptcData(), + psData.pData_, + psData.size_)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode IPTC metadata.\n"; +#endif + pImage->clearIptcData(); + } + } // if (psData.size_ > 0) + } + + // We look if an ImageMagick XMP raw profile exist. + + if ( keySize >= 20 + && memcmp("Raw profile type xmp", key, 20) == 0 + && pImage->xmpData().empty()) + { + DataBuf xmpBuf = readRawProfile(arr); + long length = xmpBuf.size_; + + if (length > 0) + { + std::string& xmpPacket = pImage->xmpPacket(); + xmpPacket.assign(reinterpret_cast(xmpBuf.pData_), length); + std::string::size_type idx = xmpPacket.find_first_of('<'); + if (idx != std::string::npos && idx > 0) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Removing " << idx + << " characters from the beginning of the XMP packet\n"; +#endif + xmpPacket = xmpPacket.substr(idx); + } + if (XmpParser::decode(pImage->xmpData(), xmpPacket)) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + } + } + + // We look if an Adobe XMP string exist. + + if ( keySize >= 17 + && memcmp("XML:com.adobe.xmp", key, 17) == 0 + && pImage->xmpData().empty()) + { + if (arr.size_ > 0) + { + std::string& xmpPacket = pImage->xmpPacket(); + xmpPacket.assign(reinterpret_cast(arr.pData_), arr.size_); + std::string::size_type idx = xmpPacket.find_first_of('<'); + if (idx != std::string::npos && idx > 0) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Removing " << idx << " characters " + << "from the beginning of the XMP packet\n"; +#endif + xmpPacket = xmpPacket.substr(idx); + } + if (XmpParser::decode(pImage->xmpData(), xmpPacket)) + { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + } + } + + // We look if a comments string exist. Note than we use only 'Description' keyword which + // is dedicaced to store long comments. 'Comment' keyword is ignored. + + if ( keySize >= 11 + && memcmp("Description", key, 11) == 0 + && pImage->comment().empty()) + { + pImage->setComment(std::string(reinterpret_cast(arr.pData_), arr.size_)); + } + + } // PngChunk::parseChunkContent + + std::string PngChunk::makeMetadataChunk(const std::string& metadata, + MetadataId type) + { + std::string chunk; + std::string rawProfile; + + switch (type) { + case mdComment: + chunk = makeUtf8TxtChunk("Description", metadata, true); + break; + case mdExif: + rawProfile = writeRawProfile(metadata, "exif"); + chunk = makeAsciiTxtChunk("Raw profile type exif", rawProfile, true); + break; + case mdIptc: + rawProfile = writeRawProfile(metadata, "iptc"); + chunk = makeAsciiTxtChunk("Raw profile type iptc", rawProfile, true); + break; + case mdXmp: + chunk = makeUtf8TxtChunk("XML:com.adobe.xmp", metadata, false); + break; + case mdNone: + assert(false); + } + + return chunk; + + } // PngChunk::makeMetadataChunk + + void PngChunk::zlibUncompress(const byte* compressedText, + unsigned int compressedTextSize, + DataBuf& arr) + { + uLongf uncompressedLen = compressedTextSize * 2; // just a starting point + int zlibResult; + int dos = 0; + + do { + arr.alloc(uncompressedLen); + zlibResult = uncompress((Bytef*)arr.pData_, + &uncompressedLen, + compressedText, + compressedTextSize); + if (zlibResult == Z_OK) { + assert((uLongf)arr.size_ >= uncompressedLen); + arr.size_ = uncompressedLen; + } + else if (zlibResult == Z_BUF_ERROR) { + // the uncompressedArray needs to be larger + uncompressedLen *= 2; + // DoS protection. can't be bigger than 64k + if (uncompressedLen > 131072) { + if (++dos > 1) break; + uncompressedLen = 131072; + } + } + else { + // something bad happened + throw Error(14); + } + } + while (zlibResult == Z_BUF_ERROR); + + if (zlibResult != Z_OK) { + throw Error(14); + } + } // PngChunk::zlibUncompress + + std::string PngChunk::zlibCompress(const std::string& text) + { + uLongf compressedLen = static_cast(text.size() * 2); // just a starting point + int zlibResult; + + DataBuf arr; + do { + arr.alloc(compressedLen); + zlibResult = compress2((Bytef*)arr.pData_, &compressedLen, + (const Bytef*)text.data(), static_cast(text.size()), + Z_BEST_COMPRESSION); + + switch (zlibResult) { + case Z_OK: + assert((uLongf)arr.size_ >= compressedLen); + arr.size_ = compressedLen; + break; + case Z_BUF_ERROR: + // The compressed array needs to be larger +#ifdef DEBUG + std::cout << "Exiv2::PngChunk::parsePngChunk: doubling size for compression.\n"; +#endif + compressedLen *= 2; + // DoS protection. Cap max compressed size + if ( compressedLen > 131072 ) throw Error(14); + break; + default: + // Something bad happened + throw Error(14); + } + } while (zlibResult == Z_BUF_ERROR); + + return std::string((const char*)arr.pData_, arr.size_); + + } // PngChunk::zlibCompress + + std::string PngChunk::makeAsciiTxtChunk(const std::string& keyword, + const std::string& text, + bool compress) + { + // Chunk structure: length (4 bytes) + chunk type + chunk data + CRC (4 bytes) + // Length is the size of the chunk data + // CRC is calculated on chunk type + chunk data + + // Compressed text chunk using zlib. + // Chunk data format : keyword + 0x00 + compression method (0x00) + compressed text + + // Not Compressed text chunk. + // Chunk data format : keyword + 0x00 + text + + // Build chunk data, determine chunk type + std::string chunkData = keyword + '\0'; + std::string chunkType; + if (compress) { + chunkData += '\0' + zlibCompress(text); + chunkType = "zTXt"; + } + else { + chunkData += text; + chunkType = "tEXt"; + } + // Determine length of the chunk data + byte length[4]; + ul2Data(length, static_cast(chunkData.size()), bigEndian); + // Calculate CRC on chunk type and chunk data + std::string crcData = chunkType + chunkData; + uLong tmp = crc32(0L, Z_NULL, 0); + tmp = crc32(tmp, (const Bytef*)crcData.data(), static_cast(crcData.size())); + byte crc[4]; + ul2Data(crc, tmp, bigEndian); + // Assemble the chunk + return std::string((const char*)length, 4) + chunkType + chunkData + std::string((const char*)crc, 4); + + } // PngChunk::makeAsciiTxtChunk + + std::string PngChunk::makeUtf8TxtChunk(const std::string& keyword, + const std::string& text, + bool compress) + { + // Chunk structure: length (4 bytes) + chunk type + chunk data + CRC (4 bytes) + // Length is the size of the chunk data + // CRC is calculated on chunk type + chunk data + + // Chunk data format : keyword + 0x00 + compression flag (0x00: uncompressed - 0x01: compressed) + // + compression method (0x00: zlib format) + language tag (null) + 0x00 + // + translated keyword (null) + 0x00 + text (compressed or not) + + // Build chunk data, determine chunk type + std::string chunkData = keyword; + if (compress) { + static const char flags[] = { 0x00, 0x01, 0x00, 0x00, 0x00 }; + chunkData += std::string(flags, 5) + zlibCompress(text); + } + else { + static const char flags[] = { 0x00, 0x00, 0x00, 0x00, 0x00 }; + chunkData += std::string(flags, 5) + text; + } + // Determine length of the chunk data + byte length[4]; + ul2Data(length, static_cast(chunkData.size()), bigEndian); + // Calculate CRC on chunk type and chunk data + std::string chunkType = "iTXt"; + std::string crcData = chunkType + chunkData; + uLong tmp = crc32(0L, Z_NULL, 0); + tmp = crc32(tmp, (const Bytef*)crcData.data(), static_cast(crcData.size())); + byte crc[4]; + ul2Data(crc, tmp, bigEndian); + // Assemble the chunk + return std::string((const char*)length, 4) + chunkType + chunkData + std::string((const char*)crc, 4); + + } // PngChunk::makeUtf8TxtChunk + + DataBuf PngChunk::readRawProfile(const DataBuf& text) + { + DataBuf info; + register long i; + register unsigned char *dp; + const char *sp; + unsigned int nibbles; + long length; + unsigned char unhex[103]={0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,1, 2,3,4,5,6,7,8,9,0,0, + 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,10,11,12, + 13,14,15}; + if (text.size_ == 0) { + return DataBuf(); + } + + sp = (char*)text.pData_+1; + + // Look for newline + + while (*sp != '\n') + sp++; + + // Look for length + + while (*sp == '\0' || *sp == ' ' || *sp == '\n') + sp++; + + length = (long) atol(sp); + + while (*sp != ' ' && *sp != '\n') + sp++; + + // Allocate space + + if (length == 0) + { +#ifdef DEBUG + std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: invalid profile length\n"; +#endif + return DataBuf(); + } + + info.alloc(length); + + if (info.size_ != length) + { +#ifdef DEBUG + std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: cannot allocate memory\n"; +#endif + return DataBuf(); + } + + // Copy profile, skipping white space and column 1 "=" signs + + dp = (unsigned char*)info.pData_; + nibbles = length * 2; + + for (i = 0; i < (long) nibbles; i++) + { + while (*sp < '0' || (*sp > '9' && *sp < 'a') || *sp > 'f') + { + if (*sp == '\0') + { +#ifdef DEBUG + std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: ran out of data\n"; +#endif + return DataBuf(); + } + + sp++; + } + + if (i%2 == 0) + *dp = (unsigned char) (16*unhex[(int) *sp++]); + else + (*dp++) += unhex[(int) *sp++]; + } + + return info; + + } // PngChunk::readRawProfile + + std::string PngChunk::writeRawProfile(const std::string& profileData, + const char* profileType) + { + static byte hex[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; + + std::ostringstream oss; + oss << '\n' << profileType << '\n' << std::setw(8) << profileData.size(); + const char* sp = profileData.data(); + for (std::string::size_type i = 0; i < profileData.size(); ++i) { + if (i % 36 == 0) oss << '\n'; + oss << hex[((*sp >> 4) & 0x0f)]; + oss << hex[((*sp++) & 0x0f)]; + } + oss << '\n'; + return oss.str(); + + } // PngChunk::writeRawProfile + +}} // namespace Internal, Exiv2 +#endif // ifdef EXV_HAVE_LIBZ + diff --git a/vendor/exiv2-0.25/src/pngchunk_int.hpp b/vendor/exiv2-0.25/src/pngchunk_int.hpp new file mode 100644 index 0000000..79358de --- /dev/null +++ b/vendor/exiv2-0.25/src/pngchunk_int.hpp @@ -0,0 +1,196 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file pngchunk_int.hpp + @brief Class PngChunk to parse PNG chunk data implemented using the following references:
+ PNG iTXt chunk structure from PNG definitive guide,
+ PNG tTXt and zTXt chunks structures from PNG definitive guide,
+ PNG tags list by Phil Harvey
+ Email communication with caulier dot gilles at gmail dot com
+ @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @date 12-Jun-06, gc: submitted + */ +#ifndef PNGCHUNK_INT_HPP_ +#define PNGCHUNK_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + +// ***************************************************************************** +// class declarations + class Image; + + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief Stateless parser class for data in PNG chunk format. Images use this + class to decode and encode PNG-based data. + */ + class PngChunk { + public: + /*! + @brief Text Chunk types. + */ + enum TxtChunkType { + tEXt_Chunk = 0, + zTXt_Chunk = 1, + iTXt_Chunk = 2 + }; + + public: + /*! + @brief Decode PNG IHDR chunk data from a data buffer + \em data and return image size to \em outWidth and \em outHeight. + + @param data PNG Chunk data buffer. + @param outWidth Integer pointer to be set to the width of the image. + @param outHeight Integer pointer to be set to the height of the image. + */ + static void decodeIHDRChunk(const DataBuf& data, + int* outWidth, + int* outHeight); + + /*! + @brief Decode PNG tEXt, zTXt, or iTXt chunk data from \em pImage passed by data buffer + \em data and extract Comment, Exif, Iptc, Xmp metadata accordingly. + + @param pImage Pointer to the image to hold the metadata + @param data PNG Chunk data buffer. + @param type PNG Chunk TXT type. + */ + static void decodeTXTChunk(Image* pImage, + const DataBuf& data, + TxtChunkType type); + + /*! + @brief Return PNG TXT chunk key as data buffer. + + @param data PNG Chunk data buffer. + @param stripHeader Set true if chunk data start with header bytes, else false (default). + */ + static DataBuf keyTXTChunk(const DataBuf& data, bool stripHeader=false); + + /*! + @brief Return a complete PNG chunk data compressed or not as buffer. + Data returned is formated accordingly with metadata \em type + to host passed by \em metadata. + + @param metadata metadata buffer. + @param type metadata type. + */ + static std::string makeMetadataChunk(const std::string& metadata, + MetadataId type); + + private: + /*! + @brief Parse PNG Text chunk to determine type and extract content. + Supported Chunk types are tTXt, zTXt, and iTXt. + */ + static DataBuf parseTXTChunk(const DataBuf& data, + int keysize, + TxtChunkType type); + + /*! + @brief Parse PNG chunk contents to extract metadata container and assign it to image. + Supported contents are: + Exif raw text profile generated by ImageMagick ==> Image Exif metadata. + Iptc raw text profile generated by ImageMagick ==> Image Iptc metadata. + Xmp raw text profile generated by ImageMagick ==> Image Xmp metadata. + Xmp packet generated by Adobe ==> Image Xmp metadata. + Description string ==> Image Comments. + */ + static void parseChunkContent( Image* pImage, + const byte* key, + long keySize, + const DataBuf arr); + + /*! + @brief Return a compressed (zTXt) or uncompressed (tEXt) PNG ASCII text chunk + (length + chunk type + chunk data + CRC) as a string. + + @param keyword Keyword for the PNG text chunk + @param text Text to be recorded in the PNG chunk. + @param compress Flag indicating whether to compress the PNG chunk data. + + @return String containing the PNG chunk + */ + static std::string makeAsciiTxtChunk(const std::string& keyword, + const std::string& text, + bool compress); + + /*! + @brief Return a compressed or uncompressed (iTXt) PNG international text chunk + (length + chunk type + chunk data + CRC) as a string. + + @param keyword Keyword for the PNG international text chunk + @param text Text to be recorded in the PNG chunk. + @param compress Flag indicating whether to compress the PNG chunk data. + */ + static std::string makeUtf8TxtChunk(const std::string& keyword, + const std::string& text, + bool compress); + + /*! + @brief Wrapper around zlib to uncompress a PNG chunk content. + */ + static void zlibUncompress(const byte* compressedText, + unsigned int compressedTextSize, + DataBuf& arr); + + /*! + @brief Wrapper around zlib to compress a PNG chunk content. + */ + static std::string zlibCompress(const std::string& text); + + /*! + @brief Decode from ImageMagick raw text profile which host encoded Exif/Iptc/Xmp metadata byte array. + */ + static DataBuf readRawProfile(const DataBuf& text); + + /*! + @brief Encode to ImageMagick raw text profile, which host encoded + Exif/IPTC/XMP metadata byte arrays. + */ + static std::string writeRawProfile(const std::string& profileData, + const char* profileType); + + }; // class PngChunk + +}} // namespace Internal, Exiv2 + +#endif // #ifndef PNGCHUNK_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/pngimage.cpp b/vendor/exiv2-0.25/src/pngimage.cpp new file mode 100644 index 0000000..10b7a04 --- /dev/null +++ b/vendor/exiv2-0.25/src/pngimage.cpp @@ -0,0 +1,490 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: pngimage.cpp + Version: $Rev: 3815 $ + Author(s): Gilles Caulier (cgilles) + History: 12-Jun-06, gc: submitted + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: pngimage.cpp 3815 2015-05-10 09:37:34Z ahuggel $") + +// included header files +#include "config.h" + +#ifdef EXV_HAVE_LIBZ +#include "pngchunk_int.hpp" +#include "pngimage.hpp" +#include "jpgimage.hpp" +#include "image.hpp" +#include "image_int.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include + +// Signature from front of PNG file +const unsigned char pngSignature[8] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A }; + +const unsigned char pngBlank[] = { 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52, + 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x90,0x77,0x53, + 0xde,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,0xae,0xce,0x1c,0xe9,0x00,0x00, + 0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00, + 0x9a,0x9c,0x18,0x00,0x00,0x00,0x0c,0x49,0x44,0x41,0x54,0x08,0xd7,0x63,0xf8,0xff, + 0xff,0x3f,0x00,0x05,0xfe,0x02,0xfe,0xdc,0xcc,0x59,0xe7,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 + }; + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + PngImage::PngImage(BasicIo::AutoPtr io, bool create) + : Image(ImageType::png, mdExif | mdIptc | mdXmp | mdComment, io) + { + if (create) + { + if (io_->open() == 0) + { +#ifdef DEBUG + std::cerr << "Exiv2::PngImage:: Creating PNG image to memory\n"; +#endif + IoCloser closer(*io_); + if (io_->write(pngBlank, sizeof(pngBlank)) != sizeof(pngBlank)) + { +#ifdef DEBUG + std::cerr << "Exiv2::PngImage:: Failed to create PNG image on memory\n"; +#endif + } + } + } + } // PngImage::PngImage + + std::string PngImage::mimeType() const + { + return "image/png"; + } + + void PngImage::printStructure(std::ostream& out, PrintStructureOption option) + { + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isPngType(*io_, true)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "PNG"); + } + + char chType[5]; + chType[0]=0; + chType[4]=0; + + if ( option == kpsBasic || option == kpsXMP ) { + + if ( option == kpsBasic ) { + out << "STRUCTURE OF PNG FILE: " << io_->path() << std::endl; + out << " address | index | chunk_type | length | data" << std::endl; + } + + long index = 0; + const long imgSize = io_->size(); + DataBuf cheaderBuf(8); + + while( !io_->eof() && ::strcmp(chType,"IEND") ) { + size_t address = io_->tell(); + + std::memset(cheaderBuf.pData_, 0x0, cheaderBuf.size_); + long bufRead = io_->read(cheaderBuf.pData_, cheaderBuf.size_); + if (io_->error()) throw Error(14); + if (bufRead != cheaderBuf.size_) throw Error(20); + + // Decode chunk data length. + uint32_t dataOffset = Exiv2::getULong(cheaderBuf.pData_, Exiv2::bigEndian); + long pos = io_->tell(); + if ( pos == -1 + || dataOffset > uint32_t(0x7FFFFFFF) + || static_cast(dataOffset) > imgSize - pos) throw Exiv2::Error(14); + + for (int i = 4; i < 8; i++) { + chType[i-4]=cheaderBuf.pData_[i]; + } + + uint32_t blen = 32 ; + uint32_t dOff = dataOffset; + std::string dataString ; + + if ( dataOffset > blen ) { + DataBuf buff(blen+1); + io_->read(buff.pData_,blen); + dataOffset -= blen ; + dataString = Internal::binaryToString(buff, blen); + } + + if ( option == kpsBasic ) out << Internal::stringFormat("%8d | %5d | %10s |%8d | ",(uint32_t)address, index++,chType,dOff) << dataString << std::endl; + // for XMP, back up and read the whole block + const char* key = "XML:com.adobe.xmp" ; + size_t start = ::strlen(key); + + if ( option == kpsXMP && dataString.find(key)==0 ) { +#if defined(_MSC_VER) + io_->seek(-static_cast(blen) , BasicIo::cur); +#else + io_->seek(-static_cast(blen) , BasicIo::cur); +#endif + dataOffset = dOff ; + byte* xmp = new byte[dataOffset+5]; + io_->read(xmp,dataOffset+4); + xmp[dataOffset]=0; + while ( xmp[start] == 0 ) start++; // crawl over the '\0' bytes between XML:....\0\0seek(dataOffset + 4 , BasicIo::cur); + if (io_->error()) throw Error(14); + } + } + } + + void PngImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::PngImage::readMetadata: Reading PNG file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isPngType(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "PNG"); + } + clearMetadata(); + + const long imgSize = io_->size(); + DataBuf cheaderBuf(8); // Chunk header size : 4 bytes (data size) + 4 bytes (chunk type). + + while(!io_->eof()) + { + // Read chunk header. + +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Position: " << io_->tell() << "\n"; +#endif + std::memset(cheaderBuf.pData_, 0x0, cheaderBuf.size_); + long bufRead = io_->read(cheaderBuf.pData_, cheaderBuf.size_); + if (io_->error()) throw Error(14); + if (bufRead != cheaderBuf.size_) throw Error(20); + + // Decode chunk data length. + uint32_t dataOffset = Exiv2::getULong(cheaderBuf.pData_, Exiv2::bigEndian); + long pos = io_->tell(); + if ( pos == -1 + || dataOffset > uint32_t(0x7FFFFFFF) + || static_cast(dataOffset) > imgSize - pos) throw Exiv2::Error(14); + + // Perform a chunk triage for item that we need. + + if (!memcmp(cheaderBuf.pData_ + 4, "IEND", 4) || + !memcmp(cheaderBuf.pData_ + 4, "IHDR", 4) || + !memcmp(cheaderBuf.pData_ + 4, "tEXt", 4) || + !memcmp(cheaderBuf.pData_ + 4, "zTXt", 4) || + !memcmp(cheaderBuf.pData_ + 4, "iTXt", 4)) + { + // Extract chunk data. + + DataBuf cdataBuf(dataOffset); + bufRead = io_->read(cdataBuf.pData_, dataOffset); + if (io_->error()) throw Error(14); + if (bufRead != (long)dataOffset) throw Error(20); + + if (!memcmp(cheaderBuf.pData_ + 4, "IEND", 4)) + { + // Last chunk found: we stop parsing. +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Found IEND chunk (length: " << dataOffset << ")\n"; +#endif + return; + } + else if (!memcmp(cheaderBuf.pData_ + 4, "IHDR", 4)) + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Found IHDR chunk (length: " << dataOffset << ")\n"; +#endif + PngChunk::decodeIHDRChunk(cdataBuf, &pixelWidth_, &pixelHeight_); + } + else if (!memcmp(cheaderBuf.pData_ + 4, "tEXt", 4)) + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Found tEXt chunk (length: " << dataOffset << ")\n"; +#endif + PngChunk::decodeTXTChunk(this, cdataBuf, PngChunk::tEXt_Chunk); + } + else if (!memcmp(cheaderBuf.pData_ + 4, "zTXt", 4)) + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Found zTXt chunk (length: " << dataOffset << ")\n"; +#endif + PngChunk::decodeTXTChunk(this, cdataBuf, PngChunk::zTXt_Chunk); + } + else if (!memcmp(cheaderBuf.pData_ + 4, "iTXt", 4)) + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Found iTXt chunk (length: " << dataOffset << ")\n"; +#endif + PngChunk::decodeTXTChunk(this, cdataBuf, PngChunk::iTXt_Chunk); + } + + // Set dataOffset to null like chunk data have been extracted previously. + dataOffset = 0; + } + + // Move to the next chunk: chunk data size + 4 CRC bytes. +#ifdef DEBUG + std::cout << "Exiv2::PngImage::readMetadata: Seek to offset: " << dataOffset + 4 << "\n"; +#endif + io_->seek(dataOffset + 4 , BasicIo::cur); + if (io_->error() || io_->eof()) throw Error(14); + } + + } // PngImage::readMetadata + + void PngImage::writeMetadata() + { + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + BasicIo::AutoPtr tempIo(io_->temporary()); // may throw + assert (tempIo.get() != 0); + + doWriteMetadata(*tempIo); // may throw + io_->close(); + io_->transfer(*tempIo); // may throw + + } // PngImage::writeMetadata + + void PngImage::doWriteMetadata(BasicIo& outIo) + { + if (!io_->isopen()) throw Error(20); + if (!outIo.isopen()) throw Error(21); + +#ifdef DEBUG + std::cout << "Exiv2::PngImage::doWriteMetadata: Writing PNG file " << io_->path() << "\n"; + std::cout << "Exiv2::PngImage::doWriteMetadata: tmp file created " << outIo.path() << "\n"; +#endif + + // Ensure that this is the correct image type + if (!isPngType(*io_, true)) + { + if (io_->error() || io_->eof()) throw Error(20); + throw Error(22); + } + + // Write PNG Signature. + if (outIo.write(pngSignature, 8) != 8) throw Error(21); + + DataBuf cheaderBuf(8); // Chunk header : 4 bytes (data size) + 4 bytes (chunk type). + + while(!io_->eof()) + { + // Read chunk header. + + std::memset(cheaderBuf.pData_, 0x00, cheaderBuf.size_); + long bufRead = io_->read(cheaderBuf.pData_, cheaderBuf.size_); + if (io_->error()) throw Error(14); + if (bufRead != cheaderBuf.size_) throw Error(20); + + // Decode chunk data length. + + uint32_t dataOffset = getULong(cheaderBuf.pData_, bigEndian); + if (dataOffset > 0x7FFFFFFF) throw Exiv2::Error(14); + + // Read whole chunk : Chunk header + Chunk data (not fixed size - can be null) + CRC (4 bytes). + + DataBuf chunkBuf(8 + dataOffset + 4); // Chunk header (8 bytes) + Chunk data + CRC (4 bytes). + memcpy(chunkBuf.pData_, cheaderBuf.pData_, 8); // Copy header. + bufRead = io_->read(chunkBuf.pData_ + 8, dataOffset + 4); // Extract chunk data + CRC + if (io_->error()) throw Error(14); + if (bufRead != (long)(dataOffset + 4)) throw Error(20); + + if (!memcmp(cheaderBuf.pData_ + 4, "IEND", 4)) + { + // Last chunk found: we write it and done. +#ifdef DEBUG + std::cout << "Exiv2::PngImage::doWriteMetadata: Write IEND chunk (length: " << dataOffset << ")\n"; +#endif + if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); + return; + } + else if (!memcmp(cheaderBuf.pData_ + 4, "IHDR", 4)) + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::doWriteMetadata: Write IHDR chunk (length: " << dataOffset << ")\n"; +#endif + if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); + + // Write all updated metadata here, just after IHDR. + if (!comment_.empty()) + { + // Update Comment data to a new PNG chunk + std::string chunk = PngChunk::makeMetadataChunk(comment_, mdComment); + if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) + { + throw Error(21); + } + } + + if (exifData_.count() > 0) + { + // Update Exif data to a new PNG chunk + Blob blob; + ExifParser::encode(blob, littleEndian, exifData_); + if (blob.size() > 0) + { + static const char exifHeader[] = { 0x45, 0x78, 0x69, 0x66, 0x00, 0x00 }; + std::string rawExif = std::string(exifHeader, 6) + + std::string((const char*)&blob[0], blob.size()); + std::string chunk = PngChunk::makeMetadataChunk(rawExif, mdExif); + if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) + { + throw Error(21); + } + } + } + + if (iptcData_.count() > 0) + { + // Update IPTC data to a new PNG chunk + DataBuf newPsData = Photoshop::setIptcIrb(0, 0, iptcData_); + if (newPsData.size_ > 0) + { + std::string rawIptc((const char*)newPsData.pData_, newPsData.size_); + std::string chunk = PngChunk::makeMetadataChunk(rawIptc, mdIptc); + if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) + { + throw Error(21); + } + } + } + + if (writeXmpFromPacket() == false) { + if (XmpParser::encode(xmpPacket_, xmpData_) > 1) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to encode XMP metadata.\n"; +#endif + } + } + if (xmpPacket_.size() > 0) { + // Update XMP data to a new PNG chunk + std::string chunk = PngChunk::makeMetadataChunk(xmpPacket_, mdXmp); + if (outIo.write((const byte*)chunk.data(), static_cast(chunk.size())) != (long)chunk.size()) { + throw Error(21); + } + } + } + else if (!memcmp(cheaderBuf.pData_ + 4, "tEXt", 4) || + !memcmp(cheaderBuf.pData_ + 4, "zTXt", 4) || + !memcmp(cheaderBuf.pData_ + 4, "iTXt", 4)) + { + DataBuf key = PngChunk::keyTXTChunk(chunkBuf, true); + if (memcmp("Raw profile type exif", key.pData_, 21) == 0 || + memcmp("Raw profile type APP1", key.pData_, 21) == 0 || + memcmp("Raw profile type iptc", key.pData_, 21) == 0 || + memcmp("Raw profile type xmp", key.pData_, 20) == 0 || + memcmp("XML:com.adobe.xmp", key.pData_, 17) == 0 || + memcmp("Description", key.pData_, 11) == 0) + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::doWriteMetadata: strip " << cheaderBuf.pData_ + 4 + << " chunk (key: " << key.pData_ << ")\n"; +#endif + } + else + { +#ifdef DEBUG + std::cout << "Exiv2::PngImage::doWriteMetadata: write " << cheaderBuf.pData_ + 4 + << " chunk (length: " << dataOffset << ")\n"; +#endif + if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); + } + } + else + { + // Write all others chunk as well. +#ifdef DEBUG + std::cout << "Exiv2::PngImage::doWriteMetadata: write " << cheaderBuf.pData_ + 4 + << " chunk (length: " << dataOffset << ")\n"; +#endif + if (outIo.write(chunkBuf.pData_, chunkBuf.size_) != chunkBuf.size_) throw Error(21); + + } + } + + } // PngImage::doWriteMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newPngInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new PngImage(io, create)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isPngType(BasicIo& iIo, bool advance) + { + const int32_t len = 8; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) + { + return false; + } + int rc = memcmp(buf, pngSignature, 8); + if (!advance || rc != 0) + { + iIo.seek(-len, BasicIo::cur); + } + + return rc == 0; + } +} // namespace Exiv2 +#endif diff --git a/vendor/exiv2-0.25/src/preview.cpp b/vendor/exiv2-0.25/src/preview.cpp new file mode 100644 index 0000000..2986d72 --- /dev/null +++ b/vendor/exiv2-0.25/src/preview.cpp @@ -0,0 +1,1162 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: preview.cpp + Version: $Rev: 3777 $ + Author(s): Vladimir Nadvornik (vn) + History: 18-Sep-08, vn: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: preview.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include +#include + +#include "preview.hpp" +#include "futils.hpp" + +#include "image.hpp" +#include "cr2image.hpp" +#include "jpgimage.hpp" +#include "tiffimage.hpp" +#include "tiffimage_int.hpp" + +// ***************************************************************************** +namespace { + + using namespace Exiv2; + + /*! + @brief Compare two preview images by number of pixels, if width and height + of both lhs and rhs are available or else by size. + Return true if lhs is smaller than rhs. + */ + bool cmpPreviewProperties( + const PreviewProperties& lhs, + const PreviewProperties& rhs + ) + { + uint32_t l = lhs.width_ * lhs.height_; + uint32_t r = rhs.width_ * rhs.height_; + + return l < r; + } + + /*! + @brief Decode a Hex string. + */ + DataBuf decodeHex(const byte *src, long srcSize); + + /*! + @brief Decode a Base64 string. + */ + DataBuf decodeBase64(const std::string &src); + + /*! + @brief Decode an Illustrator thumbnail that follows after %AI7_Thumbnail. + */ + DataBuf decodeAi7Thumbnail(const DataBuf &src); + + /*! + @brief Create a PNM image from raw RGB data. + */ + DataBuf makePnm(uint32_t width, uint32_t height, const DataBuf &rgb); + + /*! + Base class for image loaders. Provides virtual methods for reading properties + and DataBuf. + */ + class Loader { + public: + //! Virtual destructor. + virtual ~Loader() {} + + //! Loader auto pointer + typedef std::auto_ptr AutoPtr; + + //! Create a Loader subclass for requested id + static AutoPtr create(PreviewId id, const Image &image); + + //! Check if a preview image with given params exists in the image + virtual bool valid() const { return valid_; } + + //! Get properties of a preview image with given params + virtual PreviewProperties getProperties() const; + + //! Get a buffer that contains the preview image + virtual DataBuf getData() const = 0; + + //! Read preview image dimensions when they are not available directly + virtual bool readDimensions() { return true; } + + //! A number of image loaders configured in the loaderList_ table + static PreviewId getNumLoaders(); + + protected: + //! Constructor. Sets all image properies to unknown. + Loader(PreviewId id, const Image &image); + + //! Functions that creates a loader from given parameters + typedef AutoPtr (*CreateFunc)(PreviewId id, const Image &image, int parIdx); + + //! Structure to list possible loaders + struct LoaderList { + const char *imageMimeType_; //!< Image type for which the loader is valid, 0 matches all images + CreateFunc create_; //!< Function that creates particular loader instance + int parIdx_; //!< Parameter that is passed into CreateFunc + }; + + //! Table that lists possible loaders. PreviewId is an index to this table. + static const LoaderList loaderList_[]; + + //! Identifies preview image type + PreviewId id_; + + //! Source image reference + const Image &image_; + + //! Preview image width + uint32_t width_; + + //! Preview image length + uint32_t height_; + + //! Preview image size in bytes + uint32_t size_; + + //! True if the source image contains a preview image of given type + bool valid_; + }; + + //! Loader for native previews + class LoaderNative : public Loader { + public: + //! Constructor + LoaderNative(PreviewId id, const Image &image, int parIdx); + + //! Get properties of a preview image with given params + virtual PreviewProperties getProperties() const; + + //! Get a buffer that contains the preview image + virtual DataBuf getData() const; + + //! Read preview image dimensions + virtual bool readDimensions(); + + protected: + //! Native preview information + NativePreview nativePreview_; + }; + + //! Function to create new LoaderNative + Loader::AutoPtr createLoaderNative(PreviewId id, const Image &image, int parIdx); + + //! Loader for Jpeg previews that are not read into ExifData directly + class LoaderExifJpeg : public Loader { + public: + + //! Constructor + LoaderExifJpeg(PreviewId id, const Image &image, int parIdx); + + //! Get properties of a preview image with given params + virtual PreviewProperties getProperties() const; + + //! Get a buffer that contains the preview image + virtual DataBuf getData() const; + + //! Read preview image dimensions + virtual bool readDimensions(); + + protected: + //! Structure that lists offset/size tag pairs + struct Param { + const char* offsetKey_; //!< Offset tag + const char* sizeKey_; //!< Size tag + const char* baseOffsetKey_; //!< Tag that holds base offset or 0 + }; + + //! Table that holds all possible offset/size pairs. parIdx is an index to this table + static const Param param_[]; + + //! Offset value + uint32_t offset_; + }; + + //! Function to create new LoaderExifJpeg + Loader::AutoPtr createLoaderExifJpeg(PreviewId id, const Image &image, int parIdx); + + //! Loader for Jpeg previews that are read into ExifData + class LoaderExifDataJpeg : public Loader { + public: + //! Constructor + LoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx); + + //! Get properties of a preview image with given params + virtual PreviewProperties getProperties() const; + + //! Get a buffer that contains the preview image + virtual DataBuf getData() const; + + //! Read preview image dimensions + virtual bool readDimensions(); + + protected: + + //! Structure that lists data/size tag pairs + struct Param { + const char* dataKey_; //!< Data tag + const char* sizeKey_; //!< Size tag + }; + + //! Table that holds all possible data/size pairs. parIdx is an index to this table + static const Param param_[]; + + //! Key that points to the Value that contains the JPEG preview in data area + ExifKey dataKey_; + }; + + //! Function to create new LoaderExifDataJpeg + Loader::AutoPtr createLoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx); + + //! Loader for Tiff previews - it can get image data from ExifData or image_.io() as needed + class LoaderTiff : public Loader { + public: + //! Constructor + LoaderTiff(PreviewId id, const Image &image, int parIdx); + + //! Get properties of a preview image with given params + virtual PreviewProperties getProperties() const; + + //! Get a buffer that contains the preview image + virtual DataBuf getData() const; + + protected: + //! Name of the group that contains the preview image + const char *group_; + + //! Tag that contains image data. Possible values are "StripOffsets" or "TileOffsets" + std::string offsetTag_; + + //! Tag that contains data sizes. Possible values are "StripByteCounts" or "TileByteCounts" + std::string sizeTag_; + + //! Structure that lists preview groups + struct Param { + const char* group_; //!< Group name + const char* checkTag_; //!< Tag to check or NULL + const char* checkValue_; //!< The preview image is valid only if the checkTag_ has this value + }; + + //! Table that holds all possible groups. parIdx is an index to this table. + static const Param param_[]; + + }; + + //! Function to create new LoaderTiff + Loader::AutoPtr createLoaderTiff(PreviewId id, const Image &image, int parIdx); + + //! Loader for JPEG previews stored in the XMP metadata + class LoaderXmpJpeg : public Loader { + public: + //! Constructor + LoaderXmpJpeg(PreviewId id, const Image &image, int parIdx); + + //! Get properties of a preview image with given params + virtual PreviewProperties getProperties() const; + + //! Get a buffer that contains the preview image + virtual DataBuf getData() const; + + //! Read preview image dimensions + virtual bool readDimensions(); + + protected: + //! Preview image data + DataBuf preview_; + }; + + //! Function to create new LoaderXmpJpeg + Loader::AutoPtr createLoaderXmpJpeg(PreviewId id, const Image &image, int parIdx); + +// ***************************************************************************** +// class member definitions + + const Loader::LoaderList Loader::loaderList_[] = { + { 0, createLoaderNative, 0 }, + { 0, createLoaderNative, 1 }, + { 0, createLoaderNative, 2 }, + { 0, createLoaderNative, 3 }, + { 0, createLoaderExifDataJpeg, 0 }, + { 0, createLoaderExifDataJpeg, 1 }, + { 0, createLoaderExifDataJpeg, 2 }, + { 0, createLoaderExifDataJpeg, 3 }, + { 0, createLoaderExifDataJpeg, 4 }, + { 0, createLoaderExifDataJpeg, 5 }, + { 0, createLoaderExifDataJpeg, 6 }, + { 0, createLoaderExifDataJpeg, 7 }, + { 0, createLoaderExifDataJpeg, 8 }, + { "image/x-panasonic-rw2", createLoaderExifDataJpeg, 9 }, + { 0, createLoaderExifDataJpeg,10 }, + { 0, createLoaderExifDataJpeg,11 }, + { 0, createLoaderTiff, 0 }, + { 0, createLoaderTiff, 1 }, + { 0, createLoaderTiff, 2 }, + { 0, createLoaderTiff, 3 }, + { 0, createLoaderTiff, 4 }, + { 0, createLoaderTiff, 5 }, + { 0, createLoaderTiff, 6 }, + { "image/x-canon-cr2", createLoaderTiff, 7 }, + { 0, createLoaderExifJpeg, 0 }, + { 0, createLoaderExifJpeg, 1 }, + { 0, createLoaderExifJpeg, 2 }, + { 0, createLoaderExifJpeg, 3 }, + { 0, createLoaderExifJpeg, 4 }, + { 0, createLoaderExifJpeg, 5 }, + { 0, createLoaderExifJpeg, 6 }, + { "image/x-canon-cr2", createLoaderExifJpeg, 7 }, + { 0, createLoaderExifJpeg, 8 }, + { 0, createLoaderXmpJpeg, 0 } + }; + + const LoaderExifJpeg::Param LoaderExifJpeg::param_[] = { + { "Exif.Image.JPEGInterchangeFormat", "Exif.Image.JPEGInterchangeFormatLength", 0 }, // 0 + { "Exif.SubImage1.JPEGInterchangeFormat", "Exif.SubImage1.JPEGInterchangeFormatLength", 0 }, // 1 + { "Exif.SubImage2.JPEGInterchangeFormat", "Exif.SubImage2.JPEGInterchangeFormatLength", 0 }, // 2 + { "Exif.SubImage3.JPEGInterchangeFormat", "Exif.SubImage3.JPEGInterchangeFormatLength", 0 }, // 3 + { "Exif.SubImage4.JPEGInterchangeFormat", "Exif.SubImage4.JPEGInterchangeFormatLength", 0 }, // 4 + { "Exif.SubThumb1.JPEGInterchangeFormat", "Exif.SubThumb1.JPEGInterchangeFormatLength", 0 }, // 5 + { "Exif.Image2.JPEGInterchangeFormat", "Exif.Image2.JPEGInterchangeFormatLength", 0 }, // 6 + { "Exif.Image.StripOffsets", "Exif.Image.StripByteCounts", 0 }, // 7 + { "Exif.OlympusCs.PreviewImageStart", "Exif.OlympusCs.PreviewImageLength", "Exif.MakerNote.Offset"} // 8 + }; + + const LoaderExifDataJpeg::Param LoaderExifDataJpeg::param_[] = { + { "Exif.Thumbnail.JPEGInterchangeFormat", "Exif.Thumbnail.JPEGInterchangeFormatLength" }, // 0 + { "Exif.NikonPreview.JPEGInterchangeFormat", "Exif.NikonPreview.JPEGInterchangeFormatLength" }, // 1 + { "Exif.Pentax.PreviewOffset", "Exif.Pentax.PreviewLength" }, // 2 + { "Exif.PentaxDng.PreviewOffset", "Exif.PentaxDng.PreviewLength" }, // 3 + { "Exif.Minolta.ThumbnailOffset", "Exif.Minolta.ThumbnailLength" }, // 4 + { "Exif.SonyMinolta.ThumbnailOffset", "Exif.SonyMinolta.ThumbnailLength" }, // 5 + { "Exif.Olympus.ThumbnailImage", 0 }, // 6 + { "Exif.Olympus2.ThumbnailImage", 0 }, // 7 + { "Exif.Minolta.Thumbnail", 0 }, // 8 + { "Exif.PanasonicRaw.PreviewImage", 0 }, // 9 + { "Exif.SamsungPreview.JPEGInterchangeFormat", "Exif.SamsungPreview.JPEGInterchangeFormatLength" }, // 10 + { "Exif.Casio2.PreviewImage", 0 } // 11 + }; + + const LoaderTiff::Param LoaderTiff::param_[] = { + { "Image", "Exif.Image.NewSubfileType", "1" }, // 0 + { "SubImage1", "Exif.SubImage1.NewSubfileType", "1" }, // 1 + { "SubImage2", "Exif.SubImage2.NewSubfileType", "1" }, // 2 + { "SubImage3", "Exif.SubImage3.NewSubfileType", "1" }, // 3 + { "SubImage4", "Exif.SubImage4.NewSubfileType", "1" }, // 4 + { "SubThumb1", "Exif.SubThumb1.NewSubfileType", "1" }, // 5 + { "Thumbnail", 0, 0 }, // 6 + { "Image2", 0, 0 } // 7 + }; + + Loader::AutoPtr Loader::create(PreviewId id, const Image &image) + { + if (id < 0 || id >= Loader::getNumLoaders()) + return AutoPtr(); + + if (loaderList_[id].imageMimeType_ && + std::string(loaderList_[id].imageMimeType_) != std::string(image.mimeType())) + return AutoPtr(); + + AutoPtr loader = loaderList_[id].create_(id, image, loaderList_[id].parIdx_); + + if (loader.get() && !loader->valid()) loader.reset(); + return loader; + } + + Loader::Loader(PreviewId id, const Image &image) + : id_(id), image_(image), + width_(0), height_(0), + size_(0), + valid_(false) + { + } + + PreviewProperties Loader::getProperties() const + { + PreviewProperties prop; + prop.id_ = id_; + prop.size_ = size_; + prop.width_ = width_; + prop.height_ = height_; + return prop; + } + + PreviewId Loader::getNumLoaders() + { + return (PreviewId)EXV_COUNTOF(loaderList_); + } + + LoaderNative::LoaderNative(PreviewId id, const Image &image, int parIdx) + : Loader(id, image) + { + if (!(0 <= parIdx && static_cast(parIdx) < image.nativePreviews().size())) return; + nativePreview_ = image.nativePreviews()[parIdx]; + width_ = nativePreview_.width_; + height_ = nativePreview_.height_; + valid_ = true; + if (nativePreview_.filter_ == "") { + size_ = nativePreview_.size_; + } else { + size_ = getData().size_; + } + } + + Loader::AutoPtr createLoaderNative(PreviewId id, const Image &image, int parIdx) + { + return Loader::AutoPtr(new LoaderNative(id, image, parIdx)); + } + + PreviewProperties LoaderNative::getProperties() const + { + PreviewProperties prop = Loader::getProperties(); + prop.mimeType_ = nativePreview_.mimeType_; + if (nativePreview_.mimeType_ == "image/jpeg") { + prop.extension_ = ".jpg"; + } else if (nativePreview_.mimeType_ == "image/tiff") { + prop.extension_ = ".tif"; + } else if (nativePreview_.mimeType_ == "image/x-wmf") { + prop.extension_ = ".wmf"; + } else if (nativePreview_.mimeType_ == "image/x-portable-anymap") { + prop.extension_ = ".pnm"; + } else { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unknown native preview format: " << nativePreview_.mimeType_ << "\n"; +#endif + prop.extension_ = ".dat"; + } +#ifdef EXV_UNICODE_PATH + prop.wextension_ = s2ws(prop.extension_); +#endif + return prop; + } + + DataBuf LoaderNative::getData() const + { + if (!valid()) return DataBuf(); + + BasicIo &io = image_.io(); + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + IoCloser closer(io); + const byte* data = io.mmap(); + if (io.size() < nativePreview_.position_ + static_cast(nativePreview_.size_)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Invalid native preview position or size.\n"; +#endif + return DataBuf(); + } + if (nativePreview_.filter_ == "") { + return DataBuf(data + nativePreview_.position_, static_cast(nativePreview_.size_)); + } else if (nativePreview_.filter_ == "hex-ai7thumbnail-pnm") { + const DataBuf ai7thumbnail = decodeHex(data + nativePreview_.position_, static_cast(nativePreview_.size_)); + const DataBuf rgb = decodeAi7Thumbnail(ai7thumbnail); + return makePnm(width_, height_, rgb); + } else if (nativePreview_.filter_ == "hex-irb") { + const DataBuf psData = decodeHex(data + nativePreview_.position_, static_cast(nativePreview_.size_)); + const byte *record; + uint32_t sizeHdr; + uint32_t sizeData; + if (Photoshop::locatePreviewIrb(psData.pData_, psData.size_, &record, &sizeHdr, &sizeData) != 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Missing preview IRB in Photoshop EPS preview.\n"; +#endif + return DataBuf(); + } + return DataBuf(record + sizeHdr + 28, sizeData - 28); + } else { + throw Error(1, "Invalid native preview filter: " + nativePreview_.filter_); + } + } + + bool LoaderNative::readDimensions() + { + if (!valid()) return false; + if (width_ != 0 || height_ != 0) return true; + + const DataBuf data = getData(); + if (data.size_ == 0) return false; + try { + Image::AutoPtr image = ImageFactory::open(data.pData_, data.size_); + if (image.get() == 0) return false; + image->readMetadata(); + + width_ = image->pixelWidth(); + height_ = image->pixelHeight(); + } catch (const AnyError& /* error */) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Invalid native preview image.\n"; +#endif + return false; + } + return true; + } + + LoaderExifJpeg::LoaderExifJpeg(PreviewId id, const Image &image, int parIdx) + : Loader(id, image) + { + offset_ = 0; + ExifData::const_iterator pos = image_.exifData().findKey(ExifKey(param_[parIdx].offsetKey_)); + if (pos != image_.exifData().end() && pos->count() > 0) { + offset_ = pos->toLong(); + } + + size_ = 0; + pos = image_.exifData().findKey(ExifKey(param_[parIdx].sizeKey_)); + if (pos != image_.exifData().end() && pos->count() > 0) { + size_ = pos->toLong(); + } + + if (offset_ == 0 || size_ == 0) return; + + if (param_[parIdx].baseOffsetKey_) { + pos = image_.exifData().findKey(ExifKey(param_[parIdx].baseOffsetKey_)); + if (pos != image_.exifData().end() && pos->count() > 0) { + offset_ += pos->toLong(); + } + } + + if (offset_ + size_ > static_cast(image_.io().size())) return; + + valid_ = true; + } + + Loader::AutoPtr createLoaderExifJpeg(PreviewId id, const Image &image, int parIdx) + { + return Loader::AutoPtr(new LoaderExifJpeg(id, image, parIdx)); + } + + PreviewProperties LoaderExifJpeg::getProperties() const + { + PreviewProperties prop = Loader::getProperties(); + prop.mimeType_ = "image/jpeg"; + prop.extension_ = ".jpg"; +#ifdef EXV_UNICODE_PATH + prop.wextension_ = EXV_WIDEN(".jpg"); +#endif + return prop; + } + + DataBuf LoaderExifJpeg::getData() const + { + if (!valid()) return DataBuf(); + BasicIo &io = image_.io(); + + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + IoCloser closer(io); + + const Exiv2::byte* base = io.mmap(); + + return DataBuf(base + offset_, size_); + } + + bool LoaderExifJpeg::readDimensions() + { + if (!valid()) return false; + if (width_ || height_) return true; + + BasicIo &io = image_.io(); + + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + IoCloser closer(io); + const Exiv2::byte* base = io.mmap(); + + try { + Image::AutoPtr image = ImageFactory::open(base + offset_, size_); + if (image.get() == 0) return false; + image->readMetadata(); + + width_ = image->pixelWidth(); + height_ = image->pixelHeight(); + } + catch (const AnyError& /* error */ ) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Invalid JPEG preview image.\n"; +#endif + return false; + } + + return true; + } + + LoaderExifDataJpeg::LoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx) + : Loader(id, image), + dataKey_(param_[parIdx].dataKey_) + { + ExifData::const_iterator pos = image_.exifData().findKey(dataKey_); + if (pos != image_.exifData().end()) { + size_ = pos->sizeDataArea(); // indirect data + if (size_ == 0 && pos->typeId() == undefined) + size_ = pos->size(); // direct data + } + + if (size_ == 0) return; + + valid_ = true; + } + + Loader::AutoPtr createLoaderExifDataJpeg(PreviewId id, const Image &image, int parIdx) + { + return Loader::AutoPtr(new LoaderExifDataJpeg(id, image, parIdx)); + } + + PreviewProperties LoaderExifDataJpeg::getProperties() const + { + PreviewProperties prop = Loader::getProperties(); + prop.mimeType_ = "image/jpeg"; + prop.extension_ = ".jpg"; +#ifdef EXV_UNICODE_PATH + prop.wextension_ = EXV_WIDEN(".jpg"); +#endif + return prop; + } + + DataBuf LoaderExifDataJpeg::getData() const + { + if (!valid()) return DataBuf(); + + ExifData::const_iterator pos = image_.exifData().findKey(dataKey_); + if (pos != image_.exifData().end()) { + DataBuf buf = pos->dataArea(); // indirect data + + if (buf.size_ == 0) { // direct data + buf = DataBuf(pos->size()); + pos->copy(buf.pData_, invalidByteOrder); + } + + buf.pData_[0] = 0xff; // fix Minolta thumbnails with invalid jpeg header + return buf; + } + + return DataBuf(); + } + + bool LoaderExifDataJpeg::readDimensions() + { + if (!valid()) return false; + + DataBuf buf = getData(); + if (buf.size_ == 0) return false; + + try { + Image::AutoPtr image = ImageFactory::open(buf.pData_, buf.size_); + if (image.get() == 0) return false; + image->readMetadata(); + + width_ = image->pixelWidth(); + height_ = image->pixelHeight(); + } + catch (const AnyError& /* error */ ) { + return false; + } + + return true; + } + + LoaderTiff::LoaderTiff(PreviewId id, const Image &image, int parIdx) + : Loader(id, image), + group_(param_[parIdx].group_) + { + const ExifData &exifData = image_.exifData(); + + int offsetCount = 0; + ExifData::const_iterator pos; + + // check if the group_ contains a preview image + if (param_[parIdx].checkTag_) { + pos = exifData.findKey(ExifKey(param_[parIdx].checkTag_)); + if (pos == exifData.end()) return; + if (param_[parIdx].checkValue_ && pos->toString() != param_[parIdx].checkValue_) return; + } + + pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".StripOffsets")); + if (pos != exifData.end()) { + offsetTag_ = "StripOffsets"; + sizeTag_ = "StripByteCounts"; + offsetCount = pos->value().count(); + } + else { + pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".TileOffsets")); + if (pos == exifData.end()) return; + offsetTag_ = "TileOffsets"; + sizeTag_ = "TileByteCounts"; + offsetCount = pos->value().count(); + } + + pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + '.' + sizeTag_)); + if (pos == exifData.end()) return; + if (offsetCount != pos->value().count()) return; + for (int i = 0; i < offsetCount; i++) { + size_ += pos->toLong(i); + } + + if (size_ == 0) return; + + pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".ImageWidth")); + if (pos != exifData.end() && pos->count() > 0) { + width_ = pos->toLong(); + } + + pos = exifData.findKey(ExifKey(std::string("Exif.") + group_ + ".ImageLength")); + if (pos != exifData.end() && pos->count() > 0) { + height_ = pos->toLong(); + } + + if (width_ == 0 || height_ == 0) return; + + valid_ = true; + } + + Loader::AutoPtr createLoaderTiff(PreviewId id, const Image &image, int parIdx) + { + return Loader::AutoPtr(new LoaderTiff(id, image, parIdx)); + } + + PreviewProperties LoaderTiff::getProperties() const + { + PreviewProperties prop = Loader::getProperties(); + prop.mimeType_ = "image/tiff"; + prop.extension_ = ".tif"; +#ifdef EXV_UNICODE_PATH + prop.wextension_ = EXV_WIDEN(".tif"); +#endif + return prop; + } + + DataBuf LoaderTiff::getData() const + { + const ExifData &exifData = image_.exifData(); + + ExifData preview; + + // copy tags + for (ExifData::const_iterator pos = exifData.begin(); pos != exifData.end(); ++pos) { + if (pos->groupName() == group_) { + /* + Write only the necessary TIFF image tags + tags that especially could cause problems are: + "NewSubfileType" - the result is no longer a thumbnail, it is a standalone image + "Orientation" - this tag typically appears only in the "Image" group. Deleting it ensures + consistent result for all previews, including JPEG + */ + uint16_t tag = pos->tag(); + if (tag != 0x00fe && tag != 0x00ff && Internal::isTiffImageTag(tag, Internal::ifd0Id)) { + preview.add(ExifKey(tag, "Image"), &pos->value()); + } + } + } + + Value &dataValue = const_cast(preview["Exif.Image." + offsetTag_].value()); + + if (dataValue.sizeDataArea() == 0) { + // image data are not available via exifData, read them from image_.io() + BasicIo &io = image_.io(); + + if (io.open() != 0) { + throw Error(9, io.path(), strError()); + } + IoCloser closer(io); + + const Exiv2::byte* base = io.mmap(); + + const Value &sizes = preview["Exif.Image." + sizeTag_].value(); + + if (sizes.count() == dataValue.count()) { + if (sizes.count() == 1) { + // this saves one copying of the buffer + uint32_t offset = dataValue.toLong(0); + uint32_t size = sizes.toLong(0); + if (offset + size <= static_cast(io.size())) + dataValue.setDataArea(base + offset, size); + } + else { + // FIXME: the buffer is probably copied twice, it should be optimized + DataBuf buf(size_); + Exiv2::byte* pos = buf.pData_; + for (int i = 0; i < sizes.count(); i++) { + uint32_t offset = dataValue.toLong(i); + uint32_t size = sizes.toLong(i); + if (offset + size <= static_cast(io.size())) + memcpy(pos, base + offset, size); + pos += size; + } + dataValue.setDataArea(buf.pData_, buf.size_); + } + } + } + + // Fix compression value in the CR2 IFD2 image + if (0 == strcmp(group_, "Image2") && image_.mimeType() == "image/x-canon-cr2") { + preview["Exif.Image.Compression"] = uint16_t(1); + } + + // write new image + MemIo mio; + IptcData emptyIptc; + XmpData emptyXmp; + TiffParser::encode(mio, 0, 0, Exiv2::littleEndian, preview, emptyIptc, emptyXmp); + return DataBuf(mio.mmap(), mio.size()); + } + + LoaderXmpJpeg::LoaderXmpJpeg(PreviewId id, const Image &image, int parIdx) + : Loader(id, image) + { + (void)parIdx; + + const XmpData &xmpData = image_.xmpData(); + + std::string prefix = "xmpGImg"; + if (xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/xapGImg:image")) != xmpData.end()) { + prefix = "xapGImg"; + } + + XmpData::const_iterator imageDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":image")); + if (imageDatum == xmpData.end()) return; + XmpData::const_iterator formatDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":format")); + if (formatDatum == xmpData.end()) return; + XmpData::const_iterator widthDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":width")); + if (widthDatum == xmpData.end()) return; + XmpData::const_iterator heightDatum = xmpData.findKey(XmpKey("Xmp.xmp.Thumbnails[1]/" + prefix + ":height")); + if (heightDatum == xmpData.end()) return; + + if (formatDatum->toString() != "JPEG") return; + + width_ = widthDatum->toLong(); + height_ = heightDatum->toLong(); + preview_ = decodeBase64(imageDatum->toString()); + size_ = static_cast(preview_.size_); + valid_ = true; + } + + Loader::AutoPtr createLoaderXmpJpeg(PreviewId id, const Image &image, int parIdx) + { + return Loader::AutoPtr(new LoaderXmpJpeg(id, image, parIdx)); + } + + PreviewProperties LoaderXmpJpeg::getProperties() const + { + PreviewProperties prop = Loader::getProperties(); + prop.mimeType_ = "image/jpeg"; + prop.extension_ = ".jpg"; +#ifdef EXV_UNICODE_PATH + prop.wextension_ = EXV_WIDEN(".jpg"); +#endif + return prop; + } + + DataBuf LoaderXmpJpeg::getData() const + { + if (!valid()) return DataBuf(); + return DataBuf(preview_.pData_, preview_.size_); + } + + bool LoaderXmpJpeg::readDimensions() + { + return valid(); + } + + DataBuf decodeHex(const byte *src, long srcSize) + { + // create decoding table + byte invalid = 16; + byte decodeHexTable[256]; + for (long i = 0; i < 256; i++) decodeHexTable[i] = invalid; + for (byte i = 0; i < 10; i++) decodeHexTable[static_cast('0') + i] = i; + for (byte i = 0; i < 6; i++) decodeHexTable[static_cast('A') + i] = i + 10; + for (byte i = 0; i < 6; i++) decodeHexTable[static_cast('a') + i] = i + 10; + + // calculate dest size + long validSrcSize = 0; + for (long srcPos = 0; srcPos < srcSize; srcPos++) { + if (decodeHexTable[src[srcPos]] != invalid) validSrcSize++; + } + const long destSize = validSrcSize / 2; + + // allocate dest buffer + DataBuf dest(destSize); + + // decode + for (long srcPos = 0, destPos = 0; destPos < destSize; destPos++) { + byte buffer = 0; + for (int bufferPos = 1; bufferPos >= 0 && srcPos < srcSize; srcPos++) { + byte srcValue = decodeHexTable[src[srcPos]]; + if (srcValue == invalid) continue; + buffer |= srcValue << (bufferPos * 4); + bufferPos--; + } + dest.pData_[destPos] = buffer; + } + return dest; + } + + static const char encodeBase64Table[64 + 1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + DataBuf decodeBase64(const std::string& src) + { + const unsigned long srcSize = static_cast(src.size()); + + // create decoding table + unsigned long invalid = 64; + unsigned long decodeBase64Table[256]; + for (unsigned long i = 0; i < 256; i++) decodeBase64Table[i] = invalid; + for (unsigned long i = 0; i < 64; i++) decodeBase64Table[(unsigned char)encodeBase64Table[i]] = i; + + // calculate dest size + unsigned long validSrcSize = 0; + for (unsigned long srcPos = 0; srcPos < srcSize; srcPos++) { + if (decodeBase64Table[(unsigned char)src[srcPos]] != invalid) validSrcSize++; + } + if (validSrcSize > ULONG_MAX / 3) return DataBuf(); // avoid integer overflow + const unsigned long destSize = (validSrcSize * 3) / 4; + + // allocate dest buffer + if (destSize > LONG_MAX) return DataBuf(); // avoid integer overflow + DataBuf dest(static_cast(destSize)); + + // decode + for (unsigned long srcPos = 0, destPos = 0; destPos < destSize;) { + unsigned long buffer = 0; + for (int bufferPos = 3; bufferPos >= 0 && srcPos < srcSize; srcPos++) { + unsigned long srcValue = decodeBase64Table[(unsigned char)src[srcPos]]; + if (srcValue == invalid) continue; + buffer |= srcValue << (bufferPos * 6); + bufferPos--; + } + for (int bufferPos = 2; bufferPos >= 0 && destPos < destSize; bufferPos--, destPos++) { + dest.pData_[destPos] = static_cast((buffer >> (bufferPos * 8)) & 0xFF); + } + } + return dest; + } + + DataBuf decodeAi7Thumbnail(const DataBuf &src) + { + const byte *colorTable = src.pData_; + const long colorTableSize = 256 * 3; + if (src.size_ < colorTableSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Invalid size of AI7 thumbnail: " << src.size_ << "\n"; +#endif + return DataBuf(); + } + const byte *imageData = src.pData_ + colorTableSize; + const long imageDataSize = src.size_ - colorTableSize; + const bool rle = (imageDataSize >= 3 && imageData[0] == 'R' && imageData[1] == 'L' && imageData[2] == 'E'); + std::string dest; + for (long i = rle ? 3 : 0; i < imageDataSize;) { + byte num = 1; + byte value = imageData[i++]; + if (rle && value == 0xFD) { + if (i >= imageDataSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unexpected end of image data at AI7 thumbnail.\n"; +#endif + return DataBuf(); + } + value = imageData[i++]; + if (value != 0xFD) { + if (i >= imageDataSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Unexpected end of image data at AI7 thumbnail.\n"; +#endif + return DataBuf(); + } + num = value; + value = imageData[i++]; + } + } + for (; num != 0; num--) { + dest.append(reinterpret_cast(colorTable + (3*value)), 3); + } + } + return DataBuf(reinterpret_cast(dest.data()), static_cast(dest.size())); + } + + DataBuf makePnm(uint32_t width, uint32_t height, const DataBuf &rgb) + { + const long expectedSize = static_cast(width * height * 3); + if (rgb.size_ != expectedSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Invalid size of preview data. Expected " << expectedSize << " bytes, got " << rgb.size_ << " bytes.\n"; +#endif + return DataBuf(); + } + + const std::string header = "P6\n" + toString(width) + " " + toString(height) + "\n255\n"; + const byte *headerBytes = reinterpret_cast(header.data()); + + DataBuf dest(static_cast(header.size() + rgb.size_)); + std::copy(headerBytes, headerBytes + header.size(), dest.pData_); + std::copy(rgb.pData_, rgb.pData_ + rgb.size_, dest.pData_ + header.size()); + return dest; + } + +} // namespace + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + PreviewImage::PreviewImage(const PreviewProperties& properties, DataBuf data) + : properties_(properties) + { + pData_ = data.pData_; + size_ = data.size_; + data.release(); + } + + PreviewImage::~PreviewImage() + { + delete[] pData_; + } + + PreviewImage::PreviewImage(const PreviewImage& rhs) + { + properties_ = rhs.properties_; + pData_ = new byte[rhs.size_]; + memcpy(pData_, rhs.pData_, rhs.size_); + size_ = rhs.size_; + } + + PreviewImage& PreviewImage::operator=(const PreviewImage& rhs) + { + if (this == &rhs) return *this; + if (rhs.size_ > size_) { + delete[] pData_; + pData_ = new byte[rhs.size_]; + } + properties_ = rhs.properties_; + memcpy(pData_, rhs.pData_, rhs.size_); + size_ = rhs.size_; + return *this; + } + + long PreviewImage::writeFile(const std::string& path) const + { + std::string name = path + extension(); + // Todo: Creating a DataBuf here unnecessarily copies the memory + DataBuf buf(pData_, size_); + return Exiv2::writeFile(buf, name); + } + +#ifdef EXV_UNICODE_PATH + long PreviewImage::writeFile(const std::wstring& wpath) const + { + std::wstring name = wpath + wextension(); + // Todo: Creating a DataBuf here unnecessarily copies the memory + DataBuf buf(pData_, size_); + return Exiv2::writeFile(buf, name); + } + +#endif + DataBuf PreviewImage::copy() const + { + return DataBuf(pData_, size_); + } + + const byte* PreviewImage::pData() const + { + return pData_; + } + + uint32_t PreviewImage::size() const + { + return size_; + } + + std::string PreviewImage::mimeType() const + { + return properties_.mimeType_; + } + + std::string PreviewImage::extension() const + { + return properties_.extension_; + } + +#ifdef EXV_UNICODE_PATH + std::wstring PreviewImage::wextension() const + { + return properties_.wextension_; + } + +#endif + uint32_t PreviewImage::width() const + { + return properties_.width_; + } + + uint32_t PreviewImage::height() const + { + return properties_.height_; + } + + PreviewId PreviewImage::id() const + { + return properties_.id_; + } + + PreviewManager::PreviewManager(const Image& image) + : image_(image) + { + } + + PreviewPropertiesList PreviewManager::getPreviewProperties() const + { + PreviewPropertiesList list; + // go through the loader table and store all successfully created loaders in the list + for (PreviewId id = 0; id < Loader::getNumLoaders(); ++id) { + Loader::AutoPtr loader = Loader::create(id, image_); + if (loader.get() && loader->readDimensions()) { + list.push_back(loader->getProperties()); + } + } + std::sort(list.begin(), list.end(), cmpPreviewProperties); + return list; + } + + PreviewImage PreviewManager::getPreviewImage(const PreviewProperties &properties) const + { + Loader::AutoPtr loader = Loader::create(properties.id_, image_); + DataBuf buf; + if (loader.get()) { + buf = loader->getData(); + } + + return PreviewImage(properties, buf); + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/private.h b/vendor/exiv2-0.25/src/private.h new file mode 100644 index 0000000..11078a0 --- /dev/null +++ b/vendor/exiv2-0.25/src/private.h @@ -0,0 +1,210 @@ +/*! + @file private.h + @brief This file is from the tz distribution at ftp://elsie.nci.nih.gov/pub/ + @version $Rev: 1358 $ +*/ +#ifndef PRIVATE_H + +#define PRIVATE_H + +/* +** This file is in the public domain, so clarified as of +** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). +*/ + +/* +** This header is for use ONLY with the time conversion code. +** There is no guarantee that it will remain unchanged, +** or that it will remain at all. +** Do NOT copy it to any system include directory. +** Thank you! +*/ + +/* +** ID +*/ + +#ifndef lint +#ifndef NOID +static char privatehid[] = "@(#)private.h 7.53"; +#endif /* !defined NOID */ +#endif /* !defined lint */ + +/* ahu: moved required preprocessor symbols to config.h */ + +/* ahu: disable warnings */ +#ifdef _MSC_VER +// disable warning 'uses old-style declarator' C4131 +#pragma warning (disable: 4131) +#endif + +/* +** Nested includes +*/ + +#include "sys/types.h" /* for time_t */ +#include "stdio.h" +#include "errno.h" +#include "string.h" +#include "limits.h" /* for CHAR_BIT */ +#include "time.h" +#include "stdlib.h" + +/* ahu: added io.h for MSVC */ +#ifdef _MSC_VER +# include "io.h" +#endif + +/* ahu: deleted include libintl.h */ + +/* ahu: deleted include sys/wait.h and WIFEXITED, WEXITSTATUS macros */ + +#if EXV_HAVE_UNISTD_H - 0 +#include "unistd.h" /* for F_OK and R_OK */ +#endif /* EXV_HAVE_UNISTD_H - 0 */ + +#if !(EXV_HAVE_UNISTD_H - 0) +#ifndef F_OK +#define F_OK 0 +#endif /* !defined F_OK */ +#ifndef R_OK +#define R_OK 4 +#endif /* !defined R_OK */ +#endif /* !(EXV_HAVE_UNISTD_H - 0) */ + +/* Unlike 's isdigit, this also works if c < 0 | c > UCHAR_MAX. */ +#define is_digit(c) ((unsigned)(c) - '0' <= 9) + +/* +** Workarounds for compilers/systems. +*/ + +/* +** SunOS 4.1.1 cc lacks prototypes. +*/ + +#ifndef P +#ifdef __STDC__ +#define P(x) x +#endif /* defined __STDC__ */ +#ifndef __STDC__ +#define P(x) () +#endif /* !defined __STDC__ */ +#endif /* !defined P */ + +/* +** SunOS 4.1.1 headers lack EXIT_SUCCESS. +*/ + +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif /* !defined EXIT_SUCCESS */ + +/* +** SunOS 4.1.1 headers lack EXIT_FAILURE. +*/ + +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif /* !defined EXIT_FAILURE */ + +/* +** SunOS 4.1.1 headers lack FILENAME_MAX. +*/ + +#ifndef FILENAME_MAX + +#ifndef MAXPATHLEN +#ifdef unix +#include "sys/param.h" +#endif /* defined unix */ +#endif /* !defined MAXPATHLEN */ + +#ifdef MAXPATHLEN +#define FILENAME_MAX MAXPATHLEN +#endif /* defined MAXPATHLEN */ +#ifndef MAXPATHLEN +#define FILENAME_MAX 1024 /* Pure guesswork */ +#endif /* !defined MAXPATHLEN */ + +#endif /* !defined FILENAME_MAX */ + +/* ahu: deleted unlink declaration and remove define */ + +/* ahu: deleted errno declaration */ + +/* ahu: deleted private function declarations */ + +/* +** Finally, some convenience items. +*/ + +#ifndef TRUE +#define TRUE 1 +#endif /* !defined TRUE */ + +#ifndef FALSE +#define FALSE 0 +#endif /* !defined FALSE */ + +#ifndef TYPE_BIT +#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) +#endif /* !defined TYPE_BIT */ + +#ifndef TYPE_SIGNED +#define TYPE_SIGNED(type) (((type) -1) < 0) +#endif /* !defined TYPE_SIGNED */ + +#ifndef INT_STRLEN_MAXIMUM +/* +** 302 / 1000 is log10(2.0) rounded up. +** Subtract one for the sign bit if the type is signed; +** add one for integer division truncation; +** add one more for a minus sign if the type is signed. +*/ +#define INT_STRLEN_MAXIMUM(type) \ + ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) +#endif /* !defined INT_STRLEN_MAXIMUM */ + +/* +** INITIALIZE(x) +*/ + +#ifndef GNUC_or_lint +#ifdef lint +#define GNUC_or_lint +#endif /* defined lint */ +#ifndef lint +#ifdef __GNUC__ +#define GNUC_or_lint +#endif /* defined __GNUC__ */ +#endif /* !defined lint */ +#endif /* !defined GNUC_or_lint */ + +#ifndef INITIALIZE +#ifdef GNUC_or_lint +#define INITIALIZE(x) ((x) = 0) +#endif /* defined GNUC_or_lint */ +#ifndef GNUC_or_lint +#define INITIALIZE(x) +#endif /* !defined GNUC_or_lint */ +#endif /* !defined INITIALIZE */ + +/* ahu: deleted definition of _(msgid) macro */ + +#ifndef TZ_DOMAIN +#define TZ_DOMAIN "tz" +#endif /* !defined TZ_DOMAIN */ + +#if HAVE_INCOMPATIBLE_CTIME_R +#undef asctime_r +#undef ctime_r +char *asctime_r P((struct tm const *, char *)); +char *ctime_r P((time_t const *, char *)); +#endif /* HAVE_INCOMPATIBLE_CTIME_R */ + +/* +** UNIX was a registered trademark of The Open Group in 2003. +*/ + +#endif /* !defined PRIVATE_H */ diff --git a/vendor/exiv2-0.25/src/properties.cpp b/vendor/exiv2-0.25/src/properties.cpp new file mode 100644 index 0000000..7ae6a0d --- /dev/null +++ b/vendor/exiv2-0.25/src/properties.cpp @@ -0,0 +1,2532 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: properties.cpp + Version: $Rev: 3831 $ + Author(s): Andreas Huggel (ahu) + Gilles Caulier (cgilles) + History: 13-July-07, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: properties.cpp 3831 2015-05-20 01:27:32Z asp $") + +// ***************************************************************************** +// included header files +#include "properties.hpp" +#include "tags_int.hpp" +#include "error.hpp" +#include "types.hpp" +#include "value.hpp" +#include "metadatum.hpp" +#include "i18n.h" // NLS support. +#include "xmp.hpp" + +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +namespace { + + //! Struct used in the lookup table for pretty print functions + struct XmpPrintInfo { + //! Comparison operator for key + bool operator==(const std::string& key) const + { + return 0 == strcmp(key_, key.c_str()); + } + + const char* key_; //!< XMP key + Exiv2::PrintFct printFct_; //!< Print function + }; + +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + //! @cond IGNORE + extern const XmpPropertyInfo xmpDcInfo[]; + extern const XmpPropertyInfo xmpDigikamInfo[]; + extern const XmpPropertyInfo xmpKipiInfo[]; + extern const XmpPropertyInfo xmpXmpInfo[]; + extern const XmpPropertyInfo xmpXmpRightsInfo[]; + extern const XmpPropertyInfo xmpXmpMMInfo[]; + extern const XmpPropertyInfo xmpXmpBJInfo[]; + extern const XmpPropertyInfo xmpXmpTPgInfo[]; + extern const XmpPropertyInfo xmpXmpDMInfo[]; + extern const XmpPropertyInfo xmpMicrosoftInfo[]; + extern const XmpPropertyInfo xmpPdfInfo[]; + extern const XmpPropertyInfo xmpPhotoshopInfo[]; + extern const XmpPropertyInfo xmpCrsInfo[]; + extern const XmpPropertyInfo xmpTiffInfo[]; + extern const XmpPropertyInfo xmpExifInfo[]; + extern const XmpPropertyInfo xmpAuxInfo[]; + extern const XmpPropertyInfo xmpIptcInfo[]; + extern const XmpPropertyInfo xmpIptcExtInfo[]; + extern const XmpPropertyInfo xmpPlusInfo[]; + extern const XmpPropertyInfo xmpMediaProInfo[]; + extern const XmpPropertyInfo xmpExpressionMediaInfo[]; + extern const XmpPropertyInfo xmpMicrosoftPhotoInfo[]; + extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfoInfo[]; + extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfo[]; + extern const XmpPropertyInfo xmpMWGRegionsInfo[]; + extern const XmpPropertyInfo xmpMWGKeywordInfo[]; + extern const XmpPropertyInfo xmpVideoInfo[]; + extern const XmpPropertyInfo xmpAudioInfo[]; + extern const XmpPropertyInfo xmpDwCInfo[]; + extern const XmpPropertyInfo xmpDctermsInfo[]; + extern const XmpPropertyInfo xmpLrInfo[]; + extern const XmpPropertyInfo xmpAcdseeInfo[]; + extern const XmpPropertyInfo xmpGPanoInfo[]; + + extern const XmpNsInfo xmpNsInfo[] = { + // Schemas - NOTE: Schemas which the XMP-SDK doesn't know must be registered in XmpParser::initialize - Todo: Automate this + { "http://purl.org/dc/elements/1.1/", "dc", xmpDcInfo, N_("Dublin Core schema") }, + { "http://www.digikam.org/ns/1.0/", "digiKam", xmpDigikamInfo, N_("digiKam Photo Management schema") }, + { "http://www.digikam.org/ns/kipi/1.0/", "kipi", xmpKipiInfo, N_("KDE Image Program Interface schema") }, + { "http://ns.adobe.com/xap/1.0/", "xmp", xmpXmpInfo, N_("XMP Basic schema") }, + { "http://ns.adobe.com/xap/1.0/rights/", "xmpRights", xmpXmpRightsInfo, N_("XMP Rights Management schema") }, + { "http://ns.adobe.com/xap/1.0/mm/", "xmpMM", xmpXmpMMInfo, N_("XMP Media Management schema") }, + { "http://ns.adobe.com/xap/1.0/bj/", "xmpBJ", xmpXmpBJInfo, N_("XMP Basic Job Ticket schema") }, + { "http://ns.adobe.com/xap/1.0/t/pg/", "xmpTPg", xmpXmpTPgInfo, N_("XMP Paged-Text schema") }, + { "http://ns.adobe.com/xmp/1.0/DynamicMedia/", "xmpDM", xmpXmpDMInfo, N_("XMP Dynamic Media schema") }, + { "http://ns.microsoft.com/photo/1.0/", "MicrosoftPhoto", xmpMicrosoftInfo, N_("Microsoft Photo schema") }, + { "http://ns.adobe.com/lightroom/1.0/", "lr", xmpLrInfo, N_("Adobe Lightroom schema") }, + { "http://ns.adobe.com/pdf/1.3/", "pdf", xmpPdfInfo, N_("Adobe PDF schema") }, + { "http://ns.adobe.com/photoshop/1.0/", "photoshop", xmpPhotoshopInfo, N_("Adobe photoshop schema") }, + { "http://ns.adobe.com/camera-raw-settings/1.0/", "crs", xmpCrsInfo, N_("Camera Raw schema") }, + { "http://ns.adobe.com/tiff/1.0/", "tiff", xmpTiffInfo, N_("Exif Schema for TIFF Properties") }, + { "http://ns.adobe.com/exif/1.0/", "exif", xmpExifInfo, N_("Exif schema for Exif-specific Properties") }, + { "http://ns.adobe.com/exif/1.0/aux/", "aux", xmpAuxInfo, N_("Exif schema for Additional Exif Properties")}, + { "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "iptc", xmpIptcInfo, N_("IPTC Core schema") }, // NOTE: 'Iptc4xmpCore' is just too long, so make 'iptc' + { "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "Iptc4xmpCore", xmpIptcInfo, N_("IPTC Core schema") }, // the default prefix. But provide the official one too. + { "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "iptcExt", xmpIptcExtInfo, N_("IPTC Extension schema") }, // NOTE: It really should be 'Iptc4xmpExt' but following + { "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "Iptc4xmpExt", xmpIptcExtInfo, N_("IPTC Extension schema") }, // example above, 'iptcExt' is the default, Iptc4xmpExt works too. + { "http://ns.useplus.org/ldf/xmp/1.0/", "plus", xmpPlusInfo, N_("PLUS License Data Format schema") }, + { "http://ns.iview-multimedia.com/mediapro/1.0/", "mediapro", xmpMediaProInfo, N_("iView Media Pro schema") }, + { "http://ns.microsoft.com/expressionmedia/1.0/", "expressionmedia", xmpExpressionMediaInfo, N_("Expression Media schema") }, + { "http://ns.microsoft.com/photo/1.2/", "MP", xmpMicrosoftPhotoInfo, N_("Microsoft Photo 1.2 schema") }, + { "http://ns.microsoft.com/photo/1.2/t/RegionInfo#", "MPRI", xmpMicrosoftPhotoRegionInfoInfo, N_("Microsoft Photo RegionInfo schema") }, + { "http://ns.microsoft.com/photo/1.2/t/Region#", "MPReg", xmpMicrosoftPhotoRegionInfo, N_("Microsoft Photo Region schema") }, + { "http://www.metadataworkinggroup.com/schemas/regions/", "mwg-rs", xmpMWGRegionsInfo, N_("Metadata Working Group Regions schema") }, + { "http://www.metadataworkinggroup.com/schemas/keywords/","mwg-kw", xmpMWGKeywordInfo, N_("Metadata Working Group Keywords schema") }, + { "http://www.video", "video", xmpVideoInfo, N_("XMP Extended Video schema") }, + { "http://www.audio", "audio", xmpAudioInfo, N_("XMP Extended Audio schema") }, + { "http://rs.tdwg.org/dwc/index.htm", "dwc", xmpDwCInfo, N_("XMP Darwin Core schema") }, + { "http://purl.org/dc/terms/", "dcterms", xmpDctermsInfo, N_("Qualified Dublin Core schema") }, // Note: used as properties under dwc:record + { "http://ns.acdsee.com/iptc/1.0/", "acdsee", xmpAcdseeInfo, N_("ACDSee XMP schema") }, + { "http://ns.google.com/photos/1.0/panorama/", "GPano", xmpGPanoInfo, N_("Google Photo Sphere XMP schema") }, + + + // Structures + { "http://ns.adobe.com/xap/1.0/g/", "xapG", 0, N_("Colorant structure") }, + { "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "stDim", 0, N_("Dimensions structure") }, + { "http://ns.adobe.com/xap/1.0/sType/Font#", "stFnt", 0, N_("Font structure") }, + { "http://ns.adobe.com/xap/1.0/g/img/", "xmpGImg", 0, N_("Thumbnail structure") }, + { "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#", "stEvt", 0, N_("Resource Event structure") }, + { "http://ns.adobe.com/xap/1.0/sType/ResourceRef#", "stRef", 0, N_("ResourceRef structure") }, + { "http://ns.adobe.com/xap/1.0/sType/Version#", "stVer", 0, N_("Version structure") }, + { "http://ns.adobe.com/xap/1.0/sType/Job#", "stJob", 0, N_("Basic Job/Workflow structure") }, + { "http://ns.adobe.com/xmp/sType/Area#", "stArea", 0, N_("Area structure") }, + + // Qualifiers + { "http://ns.adobe.com/xmp/Identifier/qual/1.0/", "xmpidq", 0, N_("Qualifier for xmp:Identifier") } + }; + + extern const XmpPropertyInfo xmpDcInfo[] = { + { "contributor", N_("Contributor"), "bag ProperName", xmpBag, xmpExternal, N_("Contributors to the resource (other than the authors).") }, + { "coverage", N_("Coverage"), "Text", xmpText, xmpExternal, N_("The spatial or temporal topic of the resource, the spatial applicability of the " + "resource, or the jurisdiction under which the resource is relevant.") }, + { "creator", N_("Creator"), "seq ProperName", xmpSeq, xmpExternal, N_("The authors of the resource (listed in order of precedence, if significant).") }, + { "date", N_("Date"), "seq Date", xmpSeq, xmpExternal, N_("Date(s) that something interesting happened to the resource.") }, + { "description", N_("Description"), "Lang Alt", langAlt, xmpExternal, N_("A textual description of the content of the resource. Multiple values may be " + "present for different languages.") }, + { "format", N_("Format"), "MIMEType", xmpText, xmpInternal, N_("The file format used when saving the resource. Tools and applications should set " + "this property to the save format of the data. It may include appropriate qualifiers.") }, + { "identifier", N_("Identifier"), "Text", xmpText, xmpExternal, N_("Unique identifier of the resource. Recommended best practice is to identify the " + "resource by means of a string conforming to a formal identification system.") }, + { "language", N_("Language"), "bag Locale", xmpBag, xmpInternal, N_("An unordered array specifying the languages used in the resource.") }, + { "publisher", N_("Publisher"), "bag ProperName", xmpBag, xmpExternal, N_("An entity responsible for making the resource available. Examples of a Publisher " + "include a person, an organization, or a service. Typically, the name of a Publisher " + "should be used to indicate the entity.") }, + { "relation", N_("Relation"), "bag Text", xmpBag, xmpInternal, N_("Relationships to other documents. Recommended best practice is to identify the " + "related resource by means of a string conforming to a formal identification system.") }, + { "rights", N_("Rights"), "Lang Alt", langAlt, xmpExternal, N_("Informal rights statement, selected by language. Typically, rights information " + "includes a statement about various property rights associated with the resource, " + "including intellectual property rights.") }, + { "source", N_("Source"), "Text", xmpText, xmpExternal, N_("Unique identifier of the work from which this resource was derived.") }, + { "subject", N_("Subject"), "bag Text", xmpBag, xmpExternal, N_("An unordered array of descriptive phrases or keywords that specify the topic of the " + "content of the resource.") }, + { "title", N_("Title"), "Lang Alt", langAlt, xmpExternal, N_("The title of the document, or the name given to the resource. Typically, it will be " + "a name by which the resource is formally known.") }, + { "type", N_("Type"), "bag open Choice", xmpBag, xmpExternal, N_("A document type; for example, novel, poem, or working paper.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpDigikamInfo[] = { + { "TagsList", N_("Tags List"), "seq Text", xmpSeq, xmpExternal, N_("The list of complete tags path as string. The path hierarchy is separated by '/' character (ex.: \"City/Paris/Monument/Eiffel Tower\".") }, + { "CaptionsAuthorNames", N_("Captions Author Names"), "Lang Alt", langAlt, xmpExternal, N_("The list of all captions author names for each language alternative captions set in standard XMP tags.") }, + { "CaptionsDateTimeStamps", N_("Captions Date Time Stamps"), "Lang Alt", langAlt, xmpExternal, N_("The list of all captions date time stamps for each language alternative captions set in standard XMP tags.") }, + { "ImageHistory", N_("Image History"), "Text", xmpText, xmpExternal, N_("An XML based content to list all action processed on this image with image editor (as crop, rotate, color corrections, adjustments, etc.).") }, + { "LensCorrectionSettings", N_("Lens Correction Settings"), "Text", xmpText, xmpExternal, N_("The list of Lens Correction tools settings used to fix lens distortion. This include Batch Queue Manager and Image editor tools based on LensFun library.") }, + { "ColorLabel", N_("Color Label"), "Text", xmpText, xmpExternal, N_("The color label assigned to this item. Possible values are \"0\": no label; \"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": Magenta; \"7\": Gray; \"8\": Black; \"9\": White.") }, + { "PickLabel", N_("Pick Label"), "Text", xmpText, xmpExternal, N_("The pick label assigned to this item. Possible values are \"0\": no label; \"1\": item rejected; \"2\": item in pending validation; \"3\": item accepted.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpKipiInfo[] = { + { "PanoramaInputFiles", N_("Panorama Input Files"), "Text", xmpText, xmpExternal, N_("The list of files processed with Hugin program through Panorama tool.") }, + { "EnfuseInputFiles", N_("Enfuse Input Files"), "Text", xmpText, xmpExternal, N_("The list of files processed with Enfuse program through ExpoBlending tool.") }, + { "EnfuseSettings", N_("Enfuse Settings"), "Text", xmpText, xmpExternal, N_("The list of Enfuse settings used to blend image stack with ExpoBlending tool.") }, + { "picasawebGPhotoId", N_("PicasaWeb Item ID"), "Text", xmpText, xmpExternal, N_("Item ID from PicasaWeb web service.") }, + { "yandexGPhotoId", N_("Yandex Fotki Item ID"), "Text", xmpText, xmpExternal, N_("Item ID from Yandex Fotki web service.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpXmpInfo[] = { + { "Advisory", N_("Advisory"), "bag XPath", xmpBag, xmpExternal, N_("An unordered array specifying properties that were edited outside the authoring " + "application. Each item should contain a single namespace and XPath separated by " + "one ASCII space (U+0020).") }, + { "BaseURL", N_("Base URL"), "URL", xmpText, xmpInternal, N_("The base URL for relative URLs in the document content. If this document contains " + "Internet links, and those links are relative, they are relative to this base URL. " + "This property provides a standard way for embedded relative URLs to be interpreted " + "by tools. Web authoring tools should set the value based on their notion of where " + "URLs will be interpreted.") }, + { "CreateDate", N_("Create Date"), "Date", xmpText, xmpInternal, N_("The date and time the resource was originally created.") }, + { "CreatorTool", N_("Creator Tool"), "AgentName", xmpText, xmpInternal, N_("The name of the first known tool used to create the resource. If history is " + "present in the metadata, this value should be equivalent to that of " + "xmpMM:History's softwareAgent property.") }, + { "Identifier", N_("Identifier"), "bag Text", xmpBag, xmpExternal, N_("An unordered array of text strings that unambiguously identify the resource within " + "a given context. An array item may be qualified with xmpidq:Scheme to denote the " + "formal identification system to which that identifier conforms. Note: The " + "dc:identifier property is not used because it lacks a defined scheme qualifier and " + "has been defined in the XMP Specification as a simple (single-valued) property.") }, + { "Label", N_("Label"), "Text", xmpText, xmpExternal, N_("A word or short phrase that identifies a document as a member of a user-defined " + "collection. Used to organize documents in a file browser.") }, + { "MetadataDate", N_("Metadata Date"), "Date", xmpText, xmpInternal, N_("The date and time that any metadata for this resource was last changed. It should " + "be the same as or more recent than xmp:ModifyDate.") }, + { "ModifyDate", N_("Modify Date"), "Date", xmpText, xmpInternal, N_("The date and time the resource was last modified. Note: The value of this property " + "is not necessarily the same as the file's system modification date because it is " + "set before the file is saved.") }, + { "Nickname", N_("Nickname"), "Text", xmpText, xmpExternal, N_("A short informal name for the resource.") }, + { "Rating", N_("Rating"), "Closed Choice of Integer", xmpText, xmpExternal, N_("A number that indicates a document's status relative to other documents, " + "used to organize documents in a file browser. Values are user-defined within an " + "application-defined range.") }, + { "Thumbnails", N_("Thumbnails"), "alt Thumbnail", xmpText, xmpInternal, N_("An alternative array of thumbnail images for a file, which can differ in " + "characteristics such as size or image encoding.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpXmpRightsInfo[] = { + { "Certificate", N_("Certificate"), "URL", xmpText, xmpExternal, N_("Online rights management certificate.") }, + { "Marked", N_("Marked"), "Boolean", xmpText, xmpExternal, N_("Indicates that this is a rights-managed resource.") }, + { "Owner", N_("Owner"), "bag ProperName", xmpBag, xmpExternal, N_("An unordered array specifying the legal owner(s) of a resource.") }, + { "UsageTerms", N_("Usage Terms"), "Lang Alt", langAlt, xmpExternal, N_("Text instructions on how a resource can be legally used.") }, + { "WebStatement", N_("Web Statement"), "URL", xmpText, xmpExternal, N_("The location of a web page describing the owner and/or rights statement for this resource.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpXmpMMInfo[] = { + { "DerivedFrom", N_("Derived From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the original document from which this one is derived. It is a " + "minimal reference; missing components can be assumed to be unchanged. For example, " + "a new version might only need to specify the instance ID and version number of the " + "previous version, or a rendition might only need to specify the instance ID and " + "rendition class of the original.") }, + { "DocumentID", N_("Document ID"), "URI", xmpText, xmpInternal, N_("The common identifier for all versions and renditions of a document. It should be " + "based on a UUID; see Document and Instance IDs below.") }, + { "History", N_("History"), "seq ResourceEvent", xmpText, xmpInternal, N_("An ordered array of high-level user actions that resulted in this resource. It is " + "intended to give human readers a general indication of the steps taken to make the " + "changes from the previous version to this one. The list should be at an abstract " + "level; it is not intended to be an exhaustive keystroke or other detailed history.") }, + { "InstanceID", N_("Instance ID"), "URI", xmpText, xmpInternal, N_("An identifier for a specific incarnation of a document, updated each time a file " + "is saved. It should be based on a UUID; see Document and Instance IDs below.") }, + { "ManagedFrom", N_("Managed From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the document as it was prior to becoming managed. It is set when a " + "managed document is introduced to an asset management system that does not " + "currently own it. It may or may not include references to different management systems.") }, + { "Manager", N_("Manager"), "AgentName", xmpText, xmpInternal, N_("The name of the asset management system that manages this resource. Along with " + "xmpMM: ManagerVariant, it tells applications which asset management system to " + "contact concerning this document.") }, + { "ManageTo", N_("Manage To"), "URI", xmpText, xmpInternal, N_("A URI identifying the managed resource to the asset management system; the presence " + "of this property is the formal indication that this resource is managed. The form " + "and content of this URI is private to the asset management system.") }, + { "ManageUI", N_("Manage UI"), "URI", xmpText, xmpInternal, N_("A URI that can be used to access information about the managed resource through a " + "web browser. It might require a custom browser plug-in.") }, + { "ManagerVariant", N_("Manager Variant"), "Text", xmpText, xmpInternal, N_("Specifies a particular variant of the asset management system. The format of this " + "property is private to the specific asset management system.") }, + { "RenditionClass", N_("Rendition Class"), "RenditionClass", xmpText, xmpInternal, N_("The rendition class name for this resource. This property should be absent or set " + "to default for a document version that is not a derived rendition.") }, + { "RenditionParams", N_("Rendition Params"), "Text", xmpText, xmpInternal, N_("Can be used to provide additional rendition parameters that are too complex or " + "verbose to encode in xmpMM: RenditionClass.") }, + { "VersionID", N_("Version ID"), "Text", xmpText, xmpInternal, N_("The document version identifier for this resource. Each version of a document gets " + "a new identifier, usually simply by incrementing integers 1, 2, 3 . . . and so on. " + "Media management systems can have other conventions or support branching which " + "requires a more complex scheme.") }, + { "Versions", N_("Versions"), "seq Version", xmpText, xmpInternal, N_("The version history associated with this resource. Entry [1] is the oldest known " + "version for this document, entry [last()] is the most recent version. Typically, a " + "media management system would fill in the version information in the metadata on " + "check-in. It is not guaranteed that a complete history versions from the first to " + "this one will be present in the xmpMM:Versions property. Interior version information " + "can be compressed or eliminated and the version history can be truncated at some point.") }, + { "LastURL", N_("Last URL"), "URL", xmpText, xmpInternal, N_("Deprecated for privacy protection.") }, + { "RenditionOf", N_("Rendition Of"), "ResourceRef", xmpText, xmpInternal, N_("Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of which this is " + "a rendition.") }, + { "SaveID", N_("Save ID"), "Integer", xmpText, xmpInternal, N_("Deprecated. Previously used only to support the xmpMM:LastURL property.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpXmpBJInfo[] = { + { "JobRef", N_("Job Reference"), "bag Job", xmpText, xmpExternal, N_("References an external job management file for a job process in which the document is being used. Use of job " + "names is under user control. Typical use would be to identify all documents that are part of a particular job or contract. " + "There are multiple values because there can be more than one job using a particular document at any time, and it can " + "also be useful to keep historical information about what jobs a document was part of previously.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpXmpTPgInfo[] = { + { "MaxPageSize", N_("Maximum Page Size"), "Dimensions", xmpText, xmpInternal, N_("The size of the largest page in the document (including any in contained documents).") }, + { "NPages", N_("Number of Pages"), "Integer", xmpText, xmpInternal, N_("The number of pages in the document (including any in contained documents).") }, + { "Fonts", N_("Fonts"), "bag Font", xmpText, xmpInternal, N_("An unordered array of fonts that are used in the document (including any in contained documents).") }, + { "Colorants", N_("Colorants"), "seq Colorant", xmpText, xmpInternal, N_("An ordered array of colorants (swatches) that are used in the document (including any in contained documents).") }, + { "PlateNames", N_("Plate Names"), "seq Text", xmpSeq, xmpInternal, N_("An ordered array of plate names that are needed to print the document (including any in contained documents).") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpXmpDMInfo[] = { + { "projectRef", N_("Project Reference"), "ProjectLink", xmpText, xmpInternal, N_("A reference to the project that created this file.") }, + { "videoFrameRate", N_("Video Frame Rate"), "open Choice of Text", xmpText, xmpInternal, N_("The video frame rate. One of: 24, NTSC, PAL.") }, + { "videoFrameSize", N_("Video Frame Size"), "Dimensions", xmpText, xmpInternal, N_("The frame size. For example: w:720, h: 480, unit:pixels") }, + { "videoPixelAspectRatio", N_("Video Pixel Aspect Ratio"), "Rational", xmpText, xmpInternal, N_("The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9") }, + { "videoPixelDepth", N_("Video Pixel Depth"), "closed Choice of Text", xmpText, xmpInternal, N_("The size in bits of each color component of a pixel. Standard Windows 32-bit " + "pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float.") }, + { "videoColorSpace", N_("Video Color Space"), "closed Choice of Text", xmpText, xmpInternal, N_("The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " + "CCIR-709 (used for HD).") }, + { "videoAlphaMode", N_("Video Alpha Mode"), "closed Choice of Text", xmpText, xmpExternal, N_("The alpha mode. One of: straight, pre-multiplied.") }, + { "videoAlphaPremultipleColor", N_("Video Alpha Premultiple Color"), "Colorant", xmpText, xmpExternal, N_("A color in CMYK or RGB to be used as the pre-multiple color when " + "alpha mode is pre-multiplied.") }, + { "videoAlphaUnityIsTransparent", N_("Video Alpha Unity Is Transparent"), "Boolean", xmpText, xmpInternal, N_("When true, unity is clear, when false, it is opaque.") }, + { "videoCompressor", N_("Video Compressor"), "Text", xmpText, xmpInternal, N_("Video compression used. For example, jpeg.") }, + { "videoFieldOrder", N_("Video Field Order"), "closed Choice of Text", xmpText, xmpInternal, N_("The field order for video. One of: Upper, Lower, Progressive.") }, + { "pullDown", N_("Pull Down"), "closed Choice of Text", xmpText, xmpInternal, N_("The sampling phase of film to be converted to video (pull-down). One of: " + "WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, WWWSS_24p, WWSSW_24p.") }, + { "audioSampleRate", N_("Audio Sample Rate"), "Integer", xmpText, xmpInternal, N_("The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000.") }, + { "audioSampleType", N_("Audio Sample Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio sample type. One of: 8Int, 16Int, 32Int, 32Float.") }, + { "audioChannelType", N_("Audio Channel Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio channel type. One of: Mono, Stereo, 5.1, 7.1.") }, + { "audioCompressor", N_("Audio Compressor"), "Text", xmpText, xmpInternal, N_("The audio compression used. For example, MP3.") }, + { "speakerPlacement", N_("Speaker Placement"), "Text", xmpText, xmpExternal, N_("A description of the speaker angles from center front in degrees. For example: " + "\"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = -110, Right Surround = 110\"") }, + { "fileDataRate", N_("File Data Rate"), "Rational", xmpText, xmpInternal, N_("The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/sec") }, + { "tapeName", N_("Tape Name"), "Text", xmpText, xmpExternal, N_("The name of the tape from which the clip was captured, as set during the capture process.") }, + { "altTapeName", N_("Alternative Tape Name"), "Text", xmpText, xmpExternal, N_("An alternative tape name, set via the project window or timecode dialog in Premiere. " + "If an alternative name has been set and has not been reverted, that name is displayed.") }, + { "startTimecode", N_("Start Time Code"), "Timecode", xmpText, xmpInternal, N_("The timecode of the first frame of video in the file, as obtained from the device control.") }, + { "altTimecode", N_("Alternative Time code"), "Timecode", xmpText, xmpExternal, N_("A timecode set by the user. When specified, it is used instead of the startTimecode.") }, + { "duration", N_("Duration"), "Time", xmpText, xmpInternal, N_("The duration of the media file.") }, + { "scene", N_("Scene"), "Text", xmpText, xmpExternal, N_("The name of the scene.") }, + { "shotName", N_("Shot Name"), "Text", xmpText, xmpExternal, N_("The name of the shot or take.") }, + { "shotDate", N_("Shot Date"), "Date", xmpText, xmpExternal, N_("The date and time when the video was shot.") }, + { "shotLocation", N_("Shot Location"), "Text", xmpText, xmpExternal, N_("The name of the location where the video was shot. For example: \"Oktoberfest, Munich Germany\" " + "For more accurate positioning, use the EXIF GPS values.") }, + { "logComment", N_("Log Comment"), "Text", xmpText, xmpExternal, N_("User's log comments.") }, + { "markers", N_("Markers"), "seq Marker", xmpText, xmpInternal, N_("An ordered list of markers") }, + { "contributedMedia", N_("Contributed Media"), "bag Media", xmpText, xmpInternal, N_("An unordered list of all media used to create this media.") }, + { "absPeakAudioFilePath", N_("Absolute Peak Audio File Path"), "URI", xmpText, xmpInternal, N_("The absolute path to the file's peak audio file. If empty, no peak file exists.") }, + { "relativePeakAudioFilePath", N_("Relative Peak Audio File Path"), "URI", xmpText, xmpInternal, N_("The relative path to the file's peak audio file. If empty, no peak file exists.") }, + { "videoModDate", N_("Video Modified Date"), "Date", xmpText, xmpInternal, N_("The date and time when the video was last modified.") }, + { "audioModDate", N_("Audio Modified Date"), "Date", xmpText, xmpInternal, N_("The date and time when the audio was last modified.") }, + { "metadataModDate", N_("Metadata Modified Date"), "Date", xmpText, xmpInternal, N_("The date and time when the metadata was last modified.") }, + { "artist", N_("Artist"), "Text", xmpText, xmpExternal, N_("The name of the artist or artists.") }, + { "album", N_("Album"), "Text", xmpText, xmpExternal, N_("The name of the album.") }, + { "trackNumber", N_("Track Number"), "Integer", xmpText, xmpExternal, N_("A numeric value indicating the order of the audio file within its original recording.") }, + { "genre", N_("Genre"), "Text", xmpText, xmpExternal, N_("The name of the genre.") }, + { "copyright", N_("Copyright"), "Text", xmpText, xmpExternal, N_("The copyright information.") }, + { "releaseDate", N_("Release Date"), "Date", xmpText, xmpExternal, N_("The date the title was released.") }, + { "composer", N_("Composer"), "Text", xmpText, xmpExternal, N_("The composer's name.") }, + { "engineer", N_("Engineer"), "Text", xmpText, xmpExternal, N_("The engineer's name.") }, + { "tempo", N_("Tempo"), "Real", xmpText, xmpInternal, N_("The audio's tempo.") }, + { "instrument", N_("Instrument"), "Text", xmpText, xmpExternal, N_("The musical instrument.") }, + { "introTime", N_("Intro Time"), "Time", xmpText, xmpInternal, N_("The duration of lead time for queuing music.") }, + { "outCue", N_("Out Cue"), "Time", xmpText, xmpInternal, N_("The time at which to fade out.") }, + { "relativeTimestamp", N_("Relative Timestamp"), "Time", xmpText, xmpInternal, N_("The start time of the media inside the audio project.") }, + { "loop", N_("Loop"), "Boolean", xmpText, xmpInternal, N_("When true, the clip can be looped seamlessly.") }, + { "numberOfBeats", N_("Number Of Beats"), "Real", xmpText, xmpInternal, N_("The number of beats.") }, + { "key", N_("Key"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B.") }, + { "stretchMode", N_("Stretch Mode"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat Splice, Hybrid.") }, + { "timeScaleParams", N_("Time Scale Parameters"), "timeScaleStretch", xmpText, xmpInternal, N_("Additional parameters for Time-Scale stretch mode.") }, + { "resampleParams", N_("Resample Parameters"), "resampleStretch", xmpText, xmpInternal, N_("Additional parameters for Resample stretch mode.") }, + { "beatSpliceParams", N_("Beat Splice Parameters"), "beatSpliceStretch", xmpText, xmpInternal, N_("Additional parameters for Beat Splice stretch mode.") }, + { "timeSignature", N_("Time Signature"), "closed Choice of Text", xmpText, xmpInternal, N_("The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, other.") }, + { "scaleType", N_("Scale Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The musical scale used in the music. One of: Major, Minor, Both, Neither. " + "Neither is most often used for instruments with no associated scale, such as drums.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpMicrosoftInfo[] = { + { "CameraSerialNumber", N_("Camera Serial Number"), "Text", xmpText, xmpExternal, N_("Camera Serial Number.") }, + { "DateAcquired", N_("Date Acquired"), "Date", xmpText, xmpExternal, N_("Date Acquired.") }, + { "FlashManufacturer", N_("Flash Manufacturer"), "Text", xmpText, xmpExternal, N_("Flash Manufacturer.") }, + { "FlashModel", N_("Flash Model"), "Text", xmpText, xmpExternal, N_("Flash Model.") }, + { "LastKeywordIPTC", N_("Last Keyword IPTC"), "bag Text", xmpBag, xmpExternal, N_("Last Keyword IPTC.") }, + { "LastKeywordXMP", N_("Last Keyword XMP"), "bag Text", xmpBag, xmpExternal, N_("Last Keyword XMP.") }, + { "LensManufacturer", N_("Lens Manufacturer"), "Text", xmpText, xmpExternal, N_("Lens Manufacturer.") }, + { "LensModel", N_("Lens Model"), "Text", xmpText, xmpExternal, N_("Lens Model.") }, + { "Rating", N_("Rating Percent"), "Text", xmpText, xmpExternal, N_("Rating Percent.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpLrInfo[] = { + { "hierarchicalSubject", N_("Hierarchical Subject"), "bag Text", xmpBag, xmpExternal, N_("Adobe Lightroom hierarchical keywords.") }, + { "privateRTKInfo", N_("Private RTK Info"), "Text", xmpText, xmpExternal, N_("Adobe Lightroom private RTK info.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpPdfInfo[] = { + { "Keywords", N_("Keywords"), "Text", xmpText, xmpExternal, N_("Keywords.") }, + { "PDFVersion", N_("PDF Version"), "Text", xmpText, xmpInternal, N_("The PDF file version (for example: 1.0, 1.3, and so on).") }, + { "Producer", N_("Producer"), "AgentName", xmpText, xmpInternal, N_("The name of the tool that created the PDF document.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpPhotoshopInfo[] = { + { "AuthorsPosition", N_("Authors Position"), "Text", xmpText, xmpExternal, N_("By-line title.") }, + { "CaptionWriter", N_("Caption Writer"), "ProperName", xmpText, xmpExternal, N_("Writer/editor.") }, + { "Category", N_("Category"), "Text", xmpText, xmpExternal, N_("Category. Limited to 3 7-bit ASCII characters.") }, + { "City", N_("City"), "Text", xmpText, xmpExternal, N_("City.") }, + { "Country", N_("Country"), "Text", xmpText, xmpExternal, N_("Country/primary location.") }, + { "Credit", N_("Credit"), "Text", xmpText, xmpExternal, N_("Credit.") }, + { "DateCreated", N_("Date Created"), "Date", xmpText, xmpExternal, N_("The date the intellectual content of the document was created (rather than the creation " + "date of the physical representation), following IIM conventions. For example, a photo " + "taken during the American Civil War would have a creation date during that epoch " + "(1861-1865) rather than the date the photo was digitized for archiving.") }, + { "Headline", N_("Headline"), "Text", xmpText, xmpExternal, N_("Headline.") }, + { "Instructions", N_("Instructions"), "Text", xmpText, xmpExternal, N_("Special instructions.") }, + { "Source", N_("Source"), "Text", xmpText, xmpExternal, N_("Source.") }, + { "State", N_("State"), "Text", xmpText, xmpExternal, N_("Province/state.") }, + { "SupplementalCategories", N_("Supplemental Categories"), "bag Text", xmpBag, xmpExternal, N_("Supplemental category.") }, + { "TransmissionReference", N_("Transmission Reference"), "Text", xmpText, xmpExternal, N_("Original transmission reference.") }, + { "Urgency", N_("Urgency"), "Integer", xmpText, xmpExternal, N_("Urgency. Valid range is 1-8.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + //! XMP crs:CropUnits + extern const TagDetails crsCropUnits[] = { + { 0, N_("pixels") }, + { 1, N_("inches") }, + { 2, N_("cm") } + }; + + extern const XmpPropertyInfo xmpCrsInfo[] = { + { "AutoBrightness", N_("Auto Brightness"), "Boolean", xmpText, xmpExternal, N_("When true, \"Brightness\" is automatically adjusted.") }, + { "AutoContrast", N_("Auto Contrast"), "Boolean", xmpText, xmpExternal, N_("When true, \"Contrast\" is automatically adjusted.") }, + { "AutoExposure", N_("Auto Exposure"), "Boolean", xmpText, xmpExternal, N_("When true, \"Exposure\" is automatically adjusted.") }, + { "AutoShadows", N_("Auto Shadows"), "Boolean", xmpText, xmpExternal, N_("When true,\"Shadows\" is automatically adjusted.") }, + { "BlueHue", N_("Blue Hue"), "Integer", xmpText, xmpExternal, N_("\"Blue Hue\" setting. Range -100 to 100.") }, + { "BlueSaturation", N_("Blue Saturation"), "Integer", xmpText, xmpExternal, N_("\"Blue Saturation\" setting. Range -100 to +100.") }, + { "Brightness", N_("Brightness"), "Integer", xmpText, xmpExternal, N_("\"Brightness\" setting. Range 0 to +150.") }, + { "CameraProfile", N_("Camera Profile"), "Text", xmpText, xmpExternal, N_("\"Camera Profile\" setting.") }, + { "ChromaticAberrationB", N_("Chromatic Aberration Blue"), "Integer", xmpText, xmpExternal, N_("\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100.") }, + { "ChromaticAberrationR", N_("Chromatic Aberration Red"), "Integer", xmpText, xmpExternal, N_("\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100.") }, + { "ColorNoiseReduction", N_("Color Noise Reduction"), "Integer", xmpText, xmpExternal, N_("\"Color Noise Reduction\" setting. Range 0 to +100.") }, + { "Contrast", N_("Contrast"), "Integer", xmpText, xmpExternal, N_("\"Contrast\" setting. Range -50 to +100.") }, + { "CropTop", N_("Crop Top"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, top of crop rectangle") }, + { "CropLeft", N_("Crop Left"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, left of crop rectangle.") }, + { "CropBottom", N_("Crop Bottom"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, bottom of crop rectangle.") }, + { "CropRight", N_("Crop Right"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, right of crop rectangle.") }, + { "CropAngle", N_("Crop Angle"), "Real", xmpText, xmpExternal, N_("When \"Has Crop\" is true, angle of crop rectangle.") }, + { "CropWidth", N_("Crop Width"), "Real", xmpText, xmpExternal, N_("Width of resulting cropped image in CropUnits units.") }, + { "CropHeight", N_("Crop Height"), "Real", xmpText, xmpExternal, N_("Height of resulting cropped image in CropUnits units.") }, + { "CropUnits", N_("Crop Units"), "Integer", xmpText, xmpExternal, N_("Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm") }, + { "Exposure", N_("Exposure"), "Real", xmpText, xmpExternal, N_("\"Exposure\" setting. Range -4.0 to +4.0.") }, + { "GreenHue", N_("Green Hue"), "Integer", xmpText, xmpExternal, N_("\"Green Hue\" setting. Range -100 to +100.") }, + { "GreenSaturation", N_("Green Saturation"), "Integer", xmpText, xmpExternal, N_("\"Green Saturation\" setting. Range -100 to +100.") }, + { "HasCrop", N_("Has Crop"), "Boolean", xmpText, xmpExternal, N_("When true, image has a cropping rectangle.") }, + { "HasSettings", N_("Has Settings"), "Boolean", xmpText, xmpExternal, N_("When true, non-default camera raw settings.") }, + { "LuminanceSmoothing", N_("Luminance Smoothing"), "Integer", xmpText, xmpExternal, N_("\"Luminance Smoothing\" setting. Range 0 to +100.") }, + { "RawFileName", N_("Raw File Name"), "Text", xmpText, xmpInternal, N_("File name of raw file (not a complete path).") }, + { "RedHue", N_("Red Hue"), "Integer", xmpText, xmpExternal, N_("\"Red Hue\" setting. Range -100 to +100.") }, + { "RedSaturation", N_("Red Saturation"), "Integer", xmpText, xmpExternal, N_("\"Red Saturation\" setting. Range -100 to +100.") }, + { "Saturation", N_("Saturation"), "Integer", xmpText, xmpExternal, N_("\"Saturation\" setting. Range -100 to +100.") }, + { "Shadows", N_("Shadows"), "Integer", xmpText, xmpExternal, N_("\"Shadows\" setting. Range 0 to +100.") }, + { "ShadowTint", N_("Shadow Tint"), "Integer", xmpText, xmpExternal, N_("\"Shadow Tint\" setting. Range -100 to +100.") }, + { "Sharpness", N_("Sharpness"), "Integer", xmpText, xmpExternal, N_("\"Sharpness\" setting. Range 0 to +100.") }, + { "Temperature", N_("Temperature"), "Integer", xmpText, xmpExternal, N_("\"Temperature\" setting. Range 2000 to 50000.") }, + { "Tint", N_("Tint"), "Integer", xmpText, xmpExternal, N_("\"Tint\" setting. Range -150 to +150.") }, + { "ToneCurve", N_("Tone Curve"), "Seq of points (Integer, Integer)", xmpText, xmpExternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") }, + { "ToneCurveName", N_("Tone Curve Name"), "Choice Text", xmpText, xmpInternal, N_("The name of the Tone Curve described by ToneCurve. One of: Linear, Medium Contrast, " + "Strong Contrast, Custom or a user-defined preset name.") }, + { "Version", N_("Version"), "Text", xmpText, xmpInternal, N_("Version of Camera Raw plugin.") }, + { "VignetteAmount", N_("Vignette Amount"), "Integer", xmpText, xmpExternal, N_("\"Vignetting Amount\" setting. Range -100 to +100.") }, + { "VignetteMidpoint", N_("Vignette Midpoint"), "Integer", xmpText, xmpExternal, N_("\"Vignetting Midpoint\" setting. Range 0 to +100.") }, + { "WhiteBalance", N_("White Balance"), "Closed Choice Text", xmpText, xmpExternal, N_("\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, Tungsten, " + "Fluorescent, Flash, Custom") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpTiffInfo[] = { + { "ImageWidth", N_("Image Width"), "Integer", xmpText, xmpInternal, N_("TIFF tag 256, 0x100. Image width in pixels.") }, + { "ImageLength", N_("Image Length"), "Integer", xmpText, xmpInternal, N_("TIFF tag 257, 0x101. Image height in pixels.") }, + { "BitsPerSample", N_("Bits Per Sample"), "seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 258, 0x102. Number of bits per component in each channel.") }, + { "Compression", N_("Compression"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG.") }, + { "PhotometricInterpretation", N_("Photometric Interpretation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr.") }, + { "Orientation", N_("Orientation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 274, 0x112. Orientation:" + "1 = 0th row at top, 0th column at left " + "2 = 0th row at top, 0th column at right " + "3 = 0th row at bottom, 0th column at right " + "4 = 0th row at bottom, 0th column at left " + "5 = 0th row at left, 0th column at top " + "6 = 0th row at right, 0th column at top " + "7 = 0th row at right, 0th column at bottom " + "8 = 0th row at left, 0th column at bottom") }, + { "SamplesPerPixel", N_("Samples Per Pixel"), "Integer", xmpText, xmpInternal, N_("TIFF tag 277, 0x115. Number of components per pixel.") }, + { "PlanarConfiguration", N_("Planar Configuration"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar.") }, + { "YCbCrSubSampling", N_("YCbCr Sub Sampling"), "Closed Choice of seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 530, 0x212. Sampling ratio of chrominance " + "components: [2, 1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0") }, + { "YCbCrPositioning", N_("YCbCr Positioning"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 531, 0x213. Position of chrominance vs. " + "luminance components: 1 = centered; 2 = co-sited.") }, + { "XResolution", N_("X Resolution"), "Rational", xmpText, xmpInternal, N_("TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit.") }, + { "YResolution", N_("Y Resolution"), "Rational", xmpText, xmpInternal, N_("TIFF tag 283, 0x11B. Vertical resolution in pixels per unit.") }, + { "ResolutionUnit", N_("Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 296, 0x128. Unit used for XResolution and " + "YResolution. Value is one of: 2 = inches; 3 = centimeters.") }, + { "TransferFunction", N_("Transfer Function"), "seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 301, 0x12D. Transfer function for image " + "described in tabular style with 3 * 256 entries.") }, + { "WhitePoint", N_("White Point"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 318, 0x13E. Chromaticity of white point.") }, + { "PrimaryChromaticities", N_("Primary Chromaticities"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 319, 0x13F. Chromaticity of the three primary colors.") }, + { "YCbCrCoefficients", N_("YCbCr Coefficients"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation.") }, + { "ReferenceBlackWhite", N_("Reference Black White"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 532, 0x214. Reference black and white point values.") }, + { "DateTime", N_("Date and Time"), "Date", xmpText, xmpInternal, N_("TIFF tag 306, 0x132 (primary) and EXIF tag 37520, " + "0x9290 (subseconds). Date and time of image creation " + "(no time zone in EXIF), stored in ISO 8601 format, not " + "the original EXIF format. This property includes the " + "value for the EXIF SubSecTime attribute. " + "NOTE: This property is stored in XMP as xmp:ModifyDate.") }, + { "ImageDescription", N_("Image Description"), "Lang Alt", langAlt, xmpExternal, N_("TIFF tag 270, 0x10E. Description of the image. Note: This property is stored in XMP as dc:description.") }, + { "Make", N_("Make"), "ProperName", xmpText, xmpInternal, N_("TIFF tag 271, 0x10F. Manufacturer of recording equipment.") }, + { "Model", N_("Model"), "ProperName", xmpText, xmpInternal, N_("TIFF tag 272, 0x110. Model name or number of equipment.") }, + { "Software", N_("Software"), "AgentName", xmpText, xmpInternal, N_("TIFF tag 305, 0x131. Software or firmware used to generate image. " + "Note: This property is stored in XMP as xmp:CreatorTool. ") }, + { "Artist", N_("Artist"), "ProperName", xmpText, xmpExternal, N_("TIFF tag 315, 0x13B. Camera owner, photographer or image creator. " + "Note: This property is stored in XMP as the first item in the dc:creator array.") }, + { "Copyright", N_("Copyright"), "Lang Alt", langAlt, xmpExternal, N_("TIFF tag 33432, 0x8298. Copyright information. " + "Note: This property is stored in XMP as dc:rights.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpExifInfo[] = { + { "ExifVersion", N_("Exif Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 36864, 0x9000. EXIF version number.") }, + { "FlashpixVersion", N_("Flashpix Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 40960, 0xA000. Version of FlashPix.") }, + { "ColorSpace", N_("Color Space"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 40961, 0xA001. Color space information") }, + { "ComponentsConfiguration", N_("Components Configuration"), "Closed Choice of seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB compressed data), " + "1 2 3 0 (other cases).") }, + { "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37122, 0x9102. Compression mode used for a compressed image is indicated " + "in unit bits per pixel.") }, + { "PixelXDimension", N_("Pixel X Dimension"), "Integer", xmpText, xmpInternal, N_("EXIF tag 40962, 0xA002. Valid image width, in pixels.") }, + { "PixelYDimension", N_("Pixel Y Dimension"), "Integer", xmpText, xmpInternal, N_("EXIF tag 40963, 0xA003. Valid image height, in pixels.") }, + { "UserComment", N_("User Comment"), "Lang Alt", langAlt, xmpExternal, N_("EXIF tag 37510, 0x9286. Comments from user.") }, + { "RelatedSoundFile", N_("Related Sound File"), "Text", xmpText, xmpInternal, N_("EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file.") }, + { "DateTimeOriginal", N_("Date and Time Original"), "Date", xmpText, xmpInternal, N_("EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). " + "Date and time when original image was generated, in ISO 8601 format. " + "Includes the EXIF SubSecTimeOriginal data.") }, + { "DateTimeDigitized", N_("Date and Time Digitized"), "Date", xmpText, xmpInternal, N_("EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and time when " + "image was stored as digital data, can be the same as DateTimeOriginal if originally " + "stored in digital form. Stored in ISO 8601 format. Includes the EXIF " + "SubSecTimeDigitized data.") }, + { "ExposureTime", N_("Exposure Time"), "Rational", xmpText, xmpInternal, N_("EXIF tag 33434, 0x829A. Exposure time in seconds.") }, + { "FNumber", N_("F Number"), "Rational", xmpText, xmpInternal, N_("EXIF tag 33437, 0x829D. F number.") }, + { "ExposureProgram", N_("Exposure Program"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 34850, 0x8822. Class of program used for exposure.") }, + { "SpectralSensitivity", N_("Spectral Sensitivity"), "Text", xmpText, xmpInternal, N_("EXIF tag 34852, 0x8824. Spectral sensitivity of each channel.") }, + { "ISOSpeedRatings", N_("ISOSpeedRatings"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as " + "specified in ISO 12232.") }, + { "OECF", N_("OECF"), "OECF/SFR", xmpText, xmpInternal, N_("EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in ISO 14524.") }, + { "ShutterSpeedValue", N_("Shutter Speed Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF specification.") }, + { "ApertureValue", N_("Aperture Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37378, 0x9202. Lens aperture, unit is APEX.") }, + { "BrightnessValue", N_("Brightness Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37379, 0x9203. Brightness, unit is APEX.") }, + { "ExposureBiasValue", N_("Exposure Bias Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37380, 0x9204. Exposure bias, unit is APEX.") }, + { "MaxApertureValue", N_("Maximum Aperture Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX.") }, + { "SubjectDistance", N_("Subject Distance"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37382, 0x9206. Distance to subject, in meters.") }, + { "MeteringMode", N_("Metering Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 37383, 0x9207. Metering mode.") }, + { "LightSource", N_("Light Source"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 37384, 0x9208. Light source.") }, + { "Flash", N_("Flash"), "Flash", xmpText, xmpInternal, N_("EXIF tag 37385, 0x9209. Strobe light (flash) source data.") }, + { "FocalLength", N_("Focal Length"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters.") }, + { "SubjectArea", N_("Subject Area"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 37396, 0x9214. The location and area of the main subject in the overall scene.") }, + { "FlashEnergy", N_("Flash Energy"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41483, 0xA20B. Strobe energy during image capture.") }, + { "SpatialFrequencyResponse", N_("Spatial Frequency Response"), "OECF/SFR", xmpText, xmpInternal, N_("EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values as " + "specified in ISO 12233.") }, + { "FocalPlaneXResolution", N_("Focal Plane X Resolution"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per unit.") }, + { "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per unit.") }, + { "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and FocalPlaneYResolution.") }, + { "SubjectLocation", N_("Subject Location"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first value is the " + "horizontal pixel and the second value is the vertical pixel at which the " + "main subject appears.") }, + { "ExposureIndex", N_("Exposure Index"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41493, 0xA215. Exposure index of input device.") }, + { "SensingMethod", N_("Sensing Method"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41495, 0xA217. Image sensor type on input device.") }, + { "FileSource", N_("File Source"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41728, 0xA300. Indicates image source.") }, + { "SceneType", N_("Scene Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41729, 0xA301. Indicates the type of scene.") }, + { "CFAPattern", N_("CFA Pattern"), "CFAPattern", xmpText, xmpInternal, N_("EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image sense.") }, + { "CustomRendered", N_("Custom Rendered"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41985, 0xA401. Indicates the use of special processing on image data.") }, + { "ExposureMode", N_("Exposure Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was shot.") }, + { "WhiteBalance", N_("White Balance"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image was shot.") }, + { "DigitalZoomRatio", N_("Digital Zoom Ratio"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was shot.") }, + { "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), "Integer", xmpText, xmpInternal, N_("EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a 35mm film " + "camera, in mm. A value of 0 means the focal length is unknown. Note that this tag " + "differs from the FocalLength tag.") }, + { "SceneCaptureType", N_("Scene Capture Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41990, 0xA406. Indicates the type of scene that was shot.") }, + { "GainControl", N_("Gain Control"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41991, 0xA407. Indicates the degree of overall image gain adjustment.") }, + { "Contrast", N_("Contrast"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41992, 0xA408. Indicates the direction of contrast processing applied by the camera.") }, + { "Saturation", N_("Saturation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41993, 0xA409. Indicates the direction of saturation processing applied by the camera.") }, + { "Sharpness", N_("Sharpness"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing applied by the camera.") }, + { "DeviceSettingDescription", N_("Device Setting Description"), "DeviceSettings", xmpText, xmpInternal, N_("EXIF tag 41995, 0xA40B. Indicates information on the picture-taking conditions of a particular camera model.") }, + { "SubjectDistanceRange", N_("Subject Distance Range"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41996, 0xA40C. Indicates the distance to the subject.") }, + { "ImageUniqueID", N_("Image Unique ID"), "Text", xmpText, xmpInternal, N_("EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is recorded as a 32 " + "character ASCII string, equivalent to hexadecimal notation and 128-bit fixed length.") }, + { "GPSVersionID", N_("GPS Version ID"), "Text", xmpText, xmpInternal, N_("GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with period separators. " + "The current value is \"2.0.0.0\".") }, + { "GPSLatitude", N_("GPS Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude.") }, + { "GPSLongitude", N_("GPS Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude.") }, + { "GPSAltitudeRef", N_("GPS Altitude Reference"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level.") }, + { "GPSAltitude", N_("GPS Altitude"), "Rational", xmpText, xmpInternal, N_("GPS tag 6, 0x06. Indicates altitude in meters.") }, + { "GPSTimeStamp", N_("GPS Time Stamp"), "Date", xmpText, xmpInternal, N_("GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS data, " + "in Coordinated Universal Time. Note: The GPSDateStamp tag is new in EXIF 2.2. " + "The GPS timestamp in EXIF 2.1 does not include a date. If not present, " + "the date component for the XMP should be taken from exif:DateTimeOriginal, or if that is " + "also lacking from exif:DateTimeDigitized. If no date is available, do not write " + "exif:GPSTimeStamp to XMP.") }, + { "GPSSatellites", N_("GPS Satellites"), "Text", xmpText, xmpInternal, N_("GPS tag 8, 0x08. Satellite information, format is unspecified.") }, + { "GPSStatus", N_("GPS Status"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 9, 0x09. Status of GPS receiver at image creation time.") }, + { "GPSMeasureMode", N_("GPS Measure Mode"), "Text", xmpText, xmpInternal, N_("GPS tag 10, 0x0A. GPS measurement mode, Text type.") }, + { "GPSDOP", N_("GPS DOP"), "Rational", xmpText, xmpInternal, N_("GPS tag 11, 0x0B. Degree of precision for GPS data.") }, + { "GPSSpeedRef", N_("GPS Speed Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 12, 0x0C. Units used to speed measurement.") }, + { "GPSSpeed", N_("GPS Speed"), "Rational", xmpText, xmpInternal, N_("GPS tag 13, 0x0D. Speed of GPS receiver movement.") }, + { "GPSTrackRef", N_("GPS Track Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 14, 0x0E. Reference for movement direction.") }, + { "GPSTrack", N_("GPS Track"), "Rational", xmpText, xmpInternal, N_("GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99.") }, + { "GPSImgDirectionRef", N_("GPS Image Direction Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 16, 0x10. Reference for image direction.") }, + { "GPSImgDirection", N_("GPS Image Direction"), "Rational", xmpText, xmpInternal, N_("GPS tag 17, 0x11. Direction of image when captured, values range from 0 to 359.99.") }, + { "GPSMapDatum", N_("GPS Map Datum"), "Text", xmpText, xmpInternal, N_("GPS tag 18, 0x12. Geodetic survey data.") }, + { "GPSDestLatitude", N_("GPS Destination Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates destination latitude.") }, + { "GPSDestLongitude", N_("GPS Destination Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination longitude.") }, + { "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 23, 0x17. Reference for movement direction.") }, + { "GPSDestBearing", N_("GPS Destination Bearing"), "Rational", xmpText, xmpInternal, N_("GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99.") }, + { "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 25, 0x19. Units used for speed measurement.") }, + { "GPSDestDistance", N_("GPS Destination Distance"), "Rational", xmpText, xmpInternal, N_("GPS tag 26, 0x1A. Distance to destination.") }, + { "GPSProcessingMethod", N_("GPS Processing Method"), "Text", xmpText, xmpInternal, N_("GPS tag 27, 0x1B. A character string recording the name of the method used for location finding.") }, + { "GPSAreaInformation", N_("GPS Area Information"), "Text", xmpText, xmpInternal, N_("GPS tag 28, 0x1C. A character string recording the name of the GPS area.") }, + { "GPSDifferential", N_("GPS Differential"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 30, 0x1E. Indicates whether differential correction is applied to the GPS receiver.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpAuxInfo[] = { + { "Lens", N_("Lens"), "Text", xmpText, xmpInternal, N_("A description of the lens used to take the photograph. For example, \"70-200 mm f/2.8-4.0\".") }, + { "SerialNumber", N_("Serial Number"), "Text", xmpText, xmpInternal, N_("The serial number of the camera or camera body used to take the photograph.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpIptcInfo[] = { + { "CreatorContactInfo", N_("Creator's Contact Info"), "ContactInfo", xmpText, xmpExternal, N_("The creator's contact information provides all necessary information to get in contact " + "with the creator of this news object and comprises a set of sub-properties for proper addressing.") }, + { "CiAdrExtadr", N_("Contact Info-Address"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: address. Comprises an optional company name and all required " + "information to locate the building or postbox to which mail should be sent.") }, + { "CiAdrCity", N_("Contact Info-City"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: city.") }, + { "CiAdrRegion", N_("Contact Info-State/Province"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: state or province.") }, + { "CiAdrPcode", N_("Contact Info-Postal Code"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: local postal code.") }, + { "CiAdrCtry", N_("Contact Info-Country"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: country.") }, + { "CiEmailWork", N_("Contact Info-Email"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: email address.") }, + { "CiTelWork", N_("Contact Info-Phone"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: phone number.") }, + { "CiUrlWork", N_("Contact Info-Web URL"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: web address.") }, + { "IntellectualGenre", N_("Intellectual Genre"), "Text", xmpText, xmpExternal, N_("Describes the nature, intellectual or journalistic characteristic of a news object, not " + "specifically its content.") }, + { "Scene", N_("IPTC Scene"), "bag closed Choice of Text", xmpBag, xmpExternal, N_("Describes the scene of a photo content. Specifies one or more terms from the IPTC " + "\"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits in an unordered list.") }, + { "SubjectCode", N_("IPTC Subject Code"), "bag closed Choice of Text", xmpBag, xmpExternal, N_("Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy to " + "categorize the content. Each Subject is represented as a string of 8 digits in an unordered list.") }, + { "Location", N_("Location"), "Text", xmpText, xmpExternal, N_("(legacy) Name of a location the content is focussing on -- either the location shown in visual " + "media or referenced by text or audio media. This location name could either be the name " + "of a sublocation to a city or the name of a well known location or (natural) monument " + "outside a city. In the sense of a sublocation to a city this element is at the fourth " + "level of a top-down geographical hierarchy.") }, + { "CountryCode", N_("Country Code"), "closed Choice of Text", xmpText, xmpExternal, N_("(legacy) Code of the country the content is focussing on -- either the country shown in visual " + "media or referenced in text or audio media. This element is at the top/first level of " + "a top-down geographical hierarchy. The code should be taken from ISO 3166 two or three " + "letter code. The full name of a country should go to the \"Country\" element.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpIptcExtInfo[] = { + { "AddlModelInfo", N_("Additional model info"), "Text", xmpText, xmpExternal, N_("Information about the ethnicity and other facts of the model(s) in a model-released image.") }, + { "OrganisationInImageCode", N_("Code of featured Organisation"), "bag Text", xmpBag, xmpExternal, N_("Code from controlled vocabulary for identifying the organisation or company which is featured in the image.") }, + { "CVterm", N_("Controlled Vocabulary Term"), "bag URI", xmpBag, xmpExternal, N_("A term to describe the content of the image by a value from a Controlled Vocabulary.") }, + { "ModelAge", N_("Model age"), "bag Integer", xmpBag, xmpExternal, N_("Age of the human model(s) at the time this image was taken in a model released image.") }, + { "OrganisationInImageName", N_("Name of featured Organisation"), "bag Text", xmpBag, xmpExternal, N_("Name of the organisation or company which is featured in the image.") }, + { "PersonInImage", N_("Person shown"), "bag Text", xmpBag, xmpExternal, N_("Name of a person shown in the image.") }, + { "DigImageGUID", N_("Digital Image Identifier"), "Text", xmpText, xmpExternal, N_("Globally unique identifier for this digital image. It is created and applied by the creator of the digital image at the time of its creation. this value shall not be changed after that time.") }, + { "DigitalSourcefileType", N_("Physical type of original photo"), "URI", xmpText, xmpExternal, N_("The type of the source digital file.") }, + { "Event", N_("Event"), "Lang Alt", langAlt, xmpExternal, N_("Names or describes the specific event at which the photo was taken.") }, + { "MaxAvailHeight", N_("Maximum available height"), "Integer", xmpText, xmpExternal, N_("The maximum available height in pixels of the original photo from which this photo has been derived by downsizing.") }, + { "MaxAvailWidth", N_("Maximum available width"), "Integer", xmpText, xmpExternal, N_("The maximum available width in pixels of the original photo from which this photo has been derived by downsizing.") }, + { "RegistryId", N_("Registry Entry"), "bag RegistryEntryDetails", xmpBag, xmpExternal, N_("Both a Registry Item Id and a Registry Organisation Id to record any registration of this digital image with a registry.") }, + { "RegItemId", N_("Registry Entry-Item Identifier"), "Text", xmpText, xmpExternal, N_("A unique identifier created by a registry and applied by the creator of the digital image. This value shall not be changed after being applied. This identifier is linked to a corresponding Registry Organisation Identifier.") }, + { "RegOrgId", N_("Registry Entry-Organisation Identifier"), "Text", xmpText, xmpExternal, N_("An identifier for the registry which issued the corresponding Registry Image Id.") }, + { "IptcLastEdited", N_("IPTC Fields Last Edited"), "Date", xmpText, xmpExternal, N_("The date and optionally time when any of the IPTC photo metadata fields has been last edited.") }, + { "LocationShown", N_("Location shown"), "bag LocationDetails", xmpBag, xmpExternal, N_("A location shown in the image.") }, + { "LocationCreated", N_("Location Created"), "bag LocationDetails", xmpBag, xmpExternal, N_("The location the photo was taken.") }, + { "City", N_("Location-City"), "Text", xmpText, xmpExternal, N_("Name of the city of a location.") }, + { "CountryCode", N_("Location-Country ISO-Code"), "Text", xmpText, xmpExternal, N_("The ISO code of a country of a location.") }, + { "CountryName", N_("Location-Country Name"), "Text", xmpText, xmpExternal, N_("The name of a country of a location.") }, + { "ProvinceState", N_("Location-Province/State"), "Text", xmpText, xmpExternal, N_("The name of a subregion of a country - a province or state - of a location.") }, + { "Sublocation", N_("Location-Sublocation"), "Text", xmpText, xmpExternal, N_("Name of a sublocation. This sublocation name could either be the name of a sublocation to a city or the name of a well known location or (natural) monument outside a city.") }, + { "WorldRegion", N_("Location-World Region"), "Text", xmpText, xmpExternal, N_("The name of a world region of a location.") }, + { "ArtworkOrObject", N_("Artwork or object in the image"), "bag ArtworkOrObjectDetails", xmpBag, xmpExternal, N_("A set of metadata about artwork or an object in the image.") }, + { "AOCopyrightNotice", N_("Artwork or object-Copyright notice"), "Text", xmpText, xmpExternal, N_("Contains any necessary copyright notice for claiming the intellectual property for artwork or an object in the image and should identify the current owner of the copyright of this work with associated intellectual property rights.") }, + { "AOCreator", N_("Artwork or object-Creator"), "seq ProperName", xmpSeq, xmpExternal, N_("Contains the name of the artist who has created artwork or an object in the image. In cases where the artist could or should not be identified the name of a company or organisation may be appropriate.") }, + { "AODateCreated", N_("Artwork or object-Date Created"), "Date", xmpText, xmpExternal, N_("Designates the date and optionally the time the artwork or object in the image was created. This relates to artwork or objects with associated intellectual property rights.") }, + { "AOSource", N_("Artwork or object-Source"), "Text", xmpText, xmpExternal, N_("The organisation or body holding and registering the artwork or object in the image for inventory purposes.") }, + { "AOSourceInvNo", N_("Artwork or object-Source inventory number"), "Text", xmpText, xmpExternal, N_("The inventory number issued by the organisation or body holding and registering the artwork or object in the image.") }, + { "AOTitle", N_("Artwork or object-Title"), "Lang Alt", langAlt, xmpExternal, N_("A reference for the artwork or object in the image.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + //! XMP iptcExt:DigitalSourcefileType + extern const TagVocabulary iptcExtDigitalSourcefileType[] = { + { "scanfilm", N_("Scan from film") }, + { "scantransparency", N_("Scan from transparency (including slide)") }, + { "scanprint", N_("Scan from print") }, + { "cameraraw", N_("Camera RAW") }, + { "cameratiff", N_("Camera TIFF") }, + { "camerajpeg", N_("Camera JPEG") } + }; + + extern const XmpPropertyInfo xmpPlusInfo[] = { + // PLUS Version 1.2.0 + { "Version", N_("PLUS Version"), "Text", xmpText, xmpExternal, N_("The version number of the PLUS standards in place at the time of the transaction.") }, + { "Licensee", N_("Licensee"), "seq LicenseeDetail", xmpSeq, xmpExternal, N_("Party or parties to whom the license is granted by the Licensor/s under the license transaction.") }, + { "LicenseeID", N_("Licensee ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Licensee.") }, + { "LicenseeName", N_("Licensee Name"), "ProperName", xmpText, xmpExternal, N_("Name of each Licensee.") }, + { "EndUser", N_("End User"), "seq EndUserDetail", xmpSeq, xmpExternal, N_("Party or parties ultimately making use of the image under the license.") }, + { "EndUserID", N_("End User ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each End User.") }, + { "EndUserName", N_("End User Name"), "ProperName", xmpText, xmpExternal, N_("Name of each End User.") }, + { "Licensor", N_("Licensor"), "seq LicensorDetail", xmpSeq, xmpExternal, N_("Party or parties granting the license to the Licensee.") }, + { "LicensorID", N_("Licensor ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Licensor.") }, + { "LicensorName", N_("Licensor Name"), "ProperName", xmpText, xmpExternal, N_("Name of each Licensor.") }, + { "LicensorStreetAddress", N_("Licensor Address"), "Text", xmpText, xmpExternal, N_("Licensor street address.") }, + { "LicensorExtendedAddress", N_("Licensor Address Detail"), "Text", xmpText, xmpExternal, N_("Additional Licensor mailing address details.") }, + { "LicensorCity", N_("Licensor City"), "Text", xmpText, xmpExternal, N_("Licensor City name.") }, + { "LicensorRegion", N_("Licensor State or Province"), "Text", xmpText, xmpExternal, N_("Licensor State or Province name.") }, + { "LicensorPostalCode", N_("Licensor Postal Code"), "Text", xmpText, xmpExternal, N_("Licensor Postal Code or Zip Code.") }, + { "LicensorCountry", N_("Licensor Country"), "Text", xmpText, xmpExternal, N_("Licensor Country name.") }, + { "LicensorTelephoneType1", N_("Licensor Telephone Type 1"), "URL", xmpText, xmpExternal, N_("Licensor Telephone Type 1.") }, + { "LicensorTelephone1", N_("Licensor Telephone 1"), "Text", xmpText, xmpExternal, N_("Licensor Telephone number 1.") }, + { "LicensorTelephoneType2", N_("Licensor Telephone Type 2"), "URL", xmpText, xmpExternal, N_("Licensor Telephone Type 2.") }, + { "LicensorTelephone2", N_("Licensor Telephone 2"), "Text", xmpText, xmpExternal, N_("Licensor Telephone number 2.") }, + { "LicensorEmail", N_("Licensor Email"), "Text", xmpText, xmpExternal, N_("Licensor Email address.") }, + { "LicensorURL", N_("Licensor URL"), "URL", xmpText, xmpExternal, N_("Licensor world wide web address.") }, + { "LicensorNotes", N_("Licensor Notes"), "Lang Alt", langAlt, xmpExternal, N_("Supplemental information for use in identifying and contacting the Licensor/s.") }, + { "MediaSummaryCode", N_("PLUS Media Summary Code"), "Text", xmpText, xmpExternal, N_("A PLUS-standardized alphanumeric code string summarizing the media usages included in the license.") }, + { "LicenseStartDate", N_("License Start Date"), "Date", xmpText, xmpExternal, N_("The date on which the license takes effect.") }, + { "LicenseEndDate", N_("License End Date"), "Date", xmpText, xmpExternal, N_("The date on which the license expires.") }, + { "MediaConstraints", N_("Media Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Constraints limiting the scope of PLUS Media Usage/s included in the license to particular named media or to media not yet specifically defined in the PLUS Media Matrix.") }, + { "RegionConstraints", N_("Region Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Constraints limiting the scope of geographic distribution to specific cities, states, provinces or other areas to be included in or excluded from the PLUS Regions specified in the Media Usages specified in the license.") }, + { "ProductOrServiceConstraints", N_("Product or Service Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Constraints limiting usage of the image to promotion of/association with a named product or service.") }, + { "ImageFileConstraints", N_("Image File Constraints"), "bag URL", xmpBag, xmpExternal, N_("Constraints on the changing of the image file name, metadata or file type.") }, + { "ImageAlterationConstraints", N_("Image Alteration Constraints"), "bag URL", xmpBag, xmpExternal, N_("Constraints on alteration of the image by cropping, flipping, retouching, colorization, de-colorization or merging.") }, + { "ImageDuplicationConstraints", N_("Image Duplication Constraints"), "URL", xmpText, xmpExternal, N_("Constraints on the creation of duplicates of the image.") }, + { "ModelReleaseStatus", N_("Model Release Status"), "URL", xmpText, xmpExternal, N_("Summarizes the availability and scope of model releases authorizing usage of the likenesses of persons appearing in the photograph.") }, + { "ModelReleaseID", N_("Model Release ID"), "bag Text", xmpBag, xmpExternal, N_("Optional identifier associated with each Model Release.") }, + { "MinorModelAgeDisclosure", N_("Minor Model Age Disclosure"), "URL", xmpText, xmpExternal, N_("Age of the youngest model pictured in the image, at the time that the image was made.") }, + { "PropertyReleaseStatus", N_("Property Release Status"), "URL", xmpText, xmpExternal, N_("Summarizes the availability and scope of property releases authorizing usage of the properties appearing in the photograph.") }, + { "PropertyReleaseID", N_("Property Release ID"), "bag Text", xmpBag, xmpExternal, N_("Optional identifier associated with each Property Release.") }, + { "OtherConstraints", N_("Other Constraints"), "Lang Alt", langAlt, xmpExternal, N_("Additional constraints on the license.") }, + { "CreditLineRequired", N_("Credit Line Required"), "URL", xmpText, xmpExternal, N_("Attribution requirements, if any.") }, + { "AdultContentWarning", N_("Adult Content Warning"), "URL", xmpText, xmpExternal, N_("Warning indicating the presence of content not suitable for minors.") }, + { "OtherLicenseRequirements", N_("Other License Requirements"), "Lang Alt", langAlt, xmpExternal, N_("Additional license requirements.") }, + { "TermsAndConditionsText", N_("Terms and Conditions Text"), "Lang Alt", langAlt, xmpExternal, N_("Terms and Conditions applying to the license.") }, + { "TermsAndConditionsURL", N_("Terms and Conditions URL"), "URL", xmpText, xmpExternal, N_("URL for Terms and Conditions applying to the license.") }, + { "OtherConditions", N_("Other License Conditions"), "Lang Alt", langAlt, xmpExternal, N_("Additional license conditions.") }, + { "ImageType", N_("Image Type"), "URL", xmpText, xmpExternal, N_("Identifies the type of image delivered.") }, + { "LicensorImageID", N_("Licensor Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Licensor to the image.") }, + { "FileNameAsDelivered", N_("Image File Name As Delivered"), "Text", xmpText, xmpExternal, N_("Name of the image file delivered to the Licensee for use under the license.") }, + { "ImageFileFormatAsDelivered", N_("Image File Format As Delivered"), "URL", xmpText, xmpExternal, N_("File format of the image file delivered to the Licensee for use under the license.") }, + { "ImageFileSizeAsDelivered", N_("Image File Size As Delivered"), "URL", xmpText, xmpExternal, N_("Size of the image file delivered to the Licensee.") }, + { "CopyrightStatus", N_("Copyright Status"), "URL", xmpText, xmpExternal, N_("Copyright status of the image.") }, + { "CopyrightRegistrationNumber", N_("Copyright Registration Number"), "Text", xmpText, xmpExternal, N_("Copyright Registration Number, if any, applying to the licensed image.") }, + { "FirstPublicationDate", N_("First Publication Date"), "Date", xmpText, xmpExternal, N_("The date on which the image was first published.") }, + { "CopyrightOwner", N_("Copyright Owner"), "seq CopyrightOwnerDetail", xmpSeq, xmpExternal, N_("Owner or owners of the copyright in the licensed image.") }, + { "CopyrightOwnerID", N_("Copyright Owner ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Copyright Owner.") }, + { "CopyrightOwnerName", N_("Copyright Owner Name"), "ProperName", xmpText, xmpExternal, N_("Name of Copyright Owner.") }, + { "CopyrightOwnerImageID", N_("Copyright Owner Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Copyright Owner to the image.") }, + { "ImageCreator", N_("Image Creator"), "seq ImageCreatorDetail", xmpSeq, xmpExternal, N_("Creator/s of the image.") }, + { "ImageCreatorID", N_("Image Creator ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying each Image Creator.") }, + { "ImageCreatorName", N_("Image Creator Name"), "ProperName", xmpText, xmpExternal, N_("Name of Image Creator.") }, + { "ImageCreatorImageID", N_("Image Creator Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Image Creator to the image.") }, + { "ImageSupplierID", N_("Image Supplier ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID identifying the Image Supplier.") }, + { "ImageSupplierName", N_("Image Supplier Name"), "ProperName", xmpText, xmpExternal, N_("Name of Image Supplier.") }, + { "ImageSupplierImageID", N_("Image Supplier Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Image Supplier to the image.") }, + { "LicenseeImageID", N_("Licensee Image ID"), "Text", xmpText, xmpExternal, N_("Optional identifier assigned by the Licensee to the image.") }, + { "LicenseeImageNotes", N_("Licensee Image Notes"), "Lang Alt", langAlt, xmpExternal, N_("Notes added by Licensee.") }, + { "OtherImageInfo", N_("Other Image Info"), "Lang Alt", langAlt, xmpExternal, N_("Additional image information.") }, + { "LicenseID", N_("License ID"), "Text", xmpText, xmpExternal, N_("Optional PLUS-ID assigned by the Licensor to the License.") }, + { "LicensorTransactionID", N_("Licensor Transaction ID"), "bag Text", xmpBag, xmpExternal, N_("Identifier assigned by Licensor for Licensor's reference and internal use.") }, + { "LicenseeTransactionID", N_("Licensee Transaction ID"), "bag Text", xmpBag, xmpExternal, N_("Identifier assigned by Licensee for Licensee's reference and internal use.") }, + { "LicenseeProjectReference", N_("Licensee Project Reference"), "bag Text", xmpBag, xmpExternal, N_("Project reference name or description assigned by Licensee.") }, + { "LicenseTransactionDate", N_("License Transaction Date"), "Date", xmpText, xmpExternal, N_("The date of the License Transaction.") }, + { "Reuse", N_("Reuse"), "URL", xmpText, xmpExternal, N_("Indicates whether a license is a repeat or an initial license. Reuse may require that licenses stored in files previously delivered to the customer be updated.") }, + { "OtherLicenseDocuments", N_("Other License Documents"), "bag Text", xmpBag, xmpExternal, N_("Reference information for additional documents associated with the license.") }, + { "OtherLicenseInfo", N_("Other License Info"), "Lang Alt", langAlt, xmpExternal, N_("Additional license information.") }, + { "Custom1", N_("Custom 1"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, + { "Custom2", N_("Custom 2"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, + { "Custom3", N_("Custom 3"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, + { "Custom4", N_("Custom 4"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, + { "Custom5", N_("Custom 5"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensor's discretion.") }, + { "Custom6", N_("Custom 6"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, + { "Custom7", N_("Custom 7"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, + { "Custom8", N_("Custom 8"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, + { "Custom9", N_("Custom 9"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, + { "Custom10", N_("Custom 10"), "bag Lang Alt", xmpBag, xmpExternal, N_("Optional field for use at Licensee's discretion.") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + //! XMP plus:AdultContentWarning + extern const TagVocabulary plusAdultContentWarning[] = { + { "CW-AWR", N_("Adult Content Warning Required") }, + { "CW-NRQ", N_("Not Required") }, + { "CW-UNK", N_("Unknown") } + }; + + //! XMP plus:CopyrightStatus + extern const TagVocabulary plusCopyrightStatus[] = { + { "CS-PRO", N_("Protected") }, + { "CS-PUB", N_("Public Domain") }, + { "CS-UNK", N_("Unknown") } + }; + + //! XMP plus:CreditLineRequired + extern const TagVocabulary plusCreditLineRequired[] = { + { "CR-CAI", N_("Credit Adjacent To Image") }, + { "CR-CCA", N_("Credit in Credits Area") }, + { "CR-COI", N_("Credit on Image") }, + { "CR-NRQ", N_("Not Require") } + }; + + //! XMP plus:ImageAlterationConstraints + extern const TagVocabulary plusImageAlterationConstraints[] = { + { "AL-CLR", N_("No Colorization") }, + { "AL-CRP", N_("No Cropping") }, + { "AL-DCL", N_("No De-Colorization") }, + { "AL-FLP", N_("No Flipping") }, + { "AL-MRG", N_("No Merging") }, + { "AL-RET", N_("No Retouching") } + }; + + //! XMP plus:ImageDuplicationConstraints + extern const TagVocabulary plusImageDuplicationConstraints[] = { + { "DP-LIC", N_("Duplication Only as Necessary Under License") }, + { "DP-NDC", N_("No Duplication Constraints") }, + { "DP-NOD", N_("No Duplication") } + }; + + //! XMP plus:ImageFileConstraints + extern const TagVocabulary plusImageFileConstraints[] = { + { "IF-MFN", N_("Maintain File Name") }, + { "IF-MFT", N_("Maintain File Type") }, + { "IF-MID", N_("Maintain ID in File Name") }, + { "IF-MMD", N_("Maintain Metadata") } + }; + + //! XMP plus:ImageFileFormatAsDelivered + extern const TagVocabulary plusImageFileFormatAsDelivered[] = { + { "FF-BMP", N_("Windows Bitmap (BMP)") }, + { "FF-DNG", N_("Digital Negative (DNG)") }, + { "FF-EPS", N_("Encapsulated PostScript (EPS)") }, + { "FF-GIF", N_("Graphics Interchange Format (GIF)") }, + { "FF-JPG", N_("JPEG Interchange Formats (JPG, JIF, JFIF)") }, + { "FF-OTR", N_("Other") }, + { "FF-PIC", N_("Macintosh Picture (PICT)") }, + { "FF-PNG", N_("Portable Network Graphics (PNG)") }, + { "FF-PSD", N_("Photoshop Document (PSD)") }, + { "FF-RAW", N_("Proprietary RAW Image Format") }, + { "FF-TIF", N_("Tagged Image File Format (TIFF)") }, + { "FF-WMP", N_("Windows Media Photo (HD Photo)") } + }; + + //! XMP plus:ImageFileSizeAsDelivered + extern const TagVocabulary plusImageFileSizeAsDelivered[] = { + { "SZ-G50", N_("Greater than 50 MB") }, + { "SZ-U01", N_("Up to 1 MB") }, + { "SZ-U10", N_("Up to 10 MB") }, + { "SZ-U30", N_("Up to 30 MB") }, + { "SZ-U50", N_("Up to 50 MB") } + }; + + //! XMP plus:ImageType + extern const TagVocabulary plusImageType[] = { + { "TY-ILL", N_("Illustrated Image") }, + { "TY-MCI", N_("Multimedia or Composited Image") }, + { "TY-OTR", N_("Other") }, + { "TY-PHO", N_("Photographic Image") }, + { "TY-VID", N_("Video") } + }; + + //! XMP plus:LicensorTelephoneType + extern const TagVocabulary plusLicensorTelephoneType[] = { + { "cell", N_("Cell") }, + { "fax", N_("FAX") }, + { "home", N_("Home") }, + { "pager", N_("Pager") }, + { "work", N_("Work") } + }; + + //! XMP plus:MinorModelAgeDisclosure + extern const TagVocabulary plusMinorModelAgeDisclosure[] = { + { "AG-UNK", N_("Age Unknown") }, + { "AG-A25", N_("Age 25 or Over") }, + { "AG-A24", N_("Age 24") }, + { "AG-A23", N_("Age 23") }, + { "AG-A22", N_("Age 22") }, + { "AG-A21", N_("Age 21") }, + { "AG-A20", N_("Age 20") }, + { "AG-A19", N_("Age 19") }, + { "AG-A18", N_("Age 18") }, + { "AG-A17", N_("Age 17") }, + { "AG-A16", N_("Age 16") }, + { "AG-A15", N_("Age 15") }, + { "AG-U14", N_("Age 14 or Under") } + }; + + //! XMP plus:ModelReleaseStatus + extern const TagVocabulary plusModelReleaseStatus[] = { + { "MR-NON", N_("None") }, + { "MR-NAP", N_("Not Applicable") }, + { "MR-UMR", N_("Unlimited Model Releases") }, + { "MR-LMR", N_("Limited or Incomplete Model Releases") } + }; + + //! XMP plus:PropertyReleaseStatus + extern const TagVocabulary plusPropertyReleaseStatus[] = { + { "PR-NON", N_("None") }, + { "PR-NAP", N_("Not Applicable") }, + { "PR-UPR", N_("Unlimited Property Releases") }, + { "PR-LPR", N_("Limited or Incomplete Property Releases") } + }; + + //! XMP plus:Reuse + extern const TagVocabulary plusReuse[] = { + { "RE-NAP", N_("Not Applicable") }, + { "RE-REU", N_("Repeat Use") } + }; + + extern const XmpPropertyInfo xmpMediaProInfo[] = { + { "Event", N_("Event"), "Text", xmpText, xmpExternal, N_("Fixture Identification") }, + { "Status", N_("Status"), "Text", xmpText, xmpExternal, N_("A notation making the image unique") }, + { "People", N_("People"), "bag Text", xmpBag, xmpExternal, N_("Contact") }, + { "CatalogSets", N_("Catalog Sets"), "bag Text", xmpBag, xmpExternal, N_("Descriptive markers of catalog items by content") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpExpressionMediaInfo[] = { + { "Event", N_("Event"), "Text", xmpText, xmpExternal, N_("Fixture Identification") }, + { "Status", N_("Status"), "Text", xmpText, xmpExternal, N_("A notation making the image unique") }, + { "People", N_("People"), "bag Text", xmpBag, xmpExternal, N_("Contact") }, + { "CatalogSets", N_("Catalog Sets"), "bag Text", xmpBag, xmpExternal, N_("Descriptive markers of catalog items by content") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpMicrosoftPhotoInfo[] = { + { "RegionInfo", N_("RegionInfo"), "RegionInfo", xmpText, xmpInternal, N_("Microsoft Photo people-tagging metadata root") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfoInfo[] = { + { "Regions", N_("Regions"), "bag Region", xmpBag, xmpExternal, N_("Contains Regions/person tags") }, + { "DateRegionsValid", N_("Date Regions Valid"), "Date", xmpText, xmpExternal, N_("Date the last region was created") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfo[] = { + { "PersonDisplayName", N_("Person Display Name"), "Text", xmpText, xmpExternal, N_("Name of the person (in the given rectangle)") }, + { "Rectangle", N_("Rectangle"), "Text", xmpText, xmpExternal, N_("Rectangle that identifies the person within the photo") }, + { "PersonEmailDigest", N_("Person Email Digest"), "Text", xmpText, xmpExternal, N_("SHA-1 encrypted message hash of the person's Windows Live e-mail address"), }, + { "PersonLiveIdCID", N_("Person LiveId CID"), "Text", xmpText, xmpExternal, N_("Signed decimal representation of the person's Windows Live CID") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpMWGRegionsInfo[] = { + { "Regions", N_("Regions"), "RegionInfo", xmpText, xmpInternal, N_("Main structure containing region based information") }, + { "AppliedToDimensions", N_("Applied To Dimensions"), "Dimensions", xmpText, xmpExternal, N_("Width and height of image when storing region data") }, + { "RegionList", N_("Region List"), "bag RegionStruct", xmpBag, xmpExternal, N_("List of Region structures") }, + { "Area", N_("Area"), "Area", xmpText, xmpExternal, N_("Descriptive markers of catalog items by content") }, + { "Type", N_("Type"), "closed Choice of Text", xmpText, xmpExternal, N_("Type purpose of region (Face|Pet|Focus|BarCode)") }, + { "Name", N_("Name"), "Text", xmpText, xmpExternal, N_("Name/ short description of content in image region") }, + { "Description", N_("Description"), "Text", xmpText, xmpExternal, N_("Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|NotEvaluatedNotUsed)") }, + { "FocusUsage", N_("Focus Usage"), "closed Choice of Text", xmpText, xmpExternal, N_("Descriptive markers of catalog items by content") }, + { "BarCodeValue", N_("Bar Code Value"), "Text", xmpText, xmpExternal, N_("Decoded BarCode value string") }, + { "Extensions", N_("Extensions"), "Text", xmpText, xmpInternal, N_("Any top level XMP property to describe the region content") }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpMWGKeywordInfo[] = { + { "Keywords", N_("Keywords"), "KeywordInfo", xmpText, xmpInternal, N_("Main structure containing keyword based information") }, + { "Hierarchy", N_("Hierarchy"), "bag KeywordStruct", xmpBag, xmpExternal, N_("List of root keyword structures") }, + { "Keyword", N_("Keyword"), "Text", xmpText, xmpExternal, N_("Name of keyword (-node)") }, + { "Applied", N_("Applied"), "Boolean", xmpText, xmpExternal, N_("True if this keyword has been applied, False otherwise. If missing, mwg-kw:Applied is presumed True for leaf nodes and False for ancestor nodes") }, + { "Children", N_("Children"), "bag KeywordStruct", xmpBag, xmpExternal, N_("List of children keyword structures") }, + + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpGPanoInfo[] = { + { "UsePanoramaViewer", N_("Use Panorama Viewer"), "Boolean", xmpText, xmpExternal, N_("Whether to show this image in a panorama viewer rather than as a normal flat image. This may be specified based on user preferences or by the stitching software. The application displaying or ingesting the image may choose to ignore this.") }, + { "CaptureSoftware", N_("Capture Software"), "Text", xmpText, xmpExternal, N_("If capture was done using an application on a mobile device, such as an Android phone, the name of the application that was used (such as \"Photo Sphere\"). This should be left blank if source images were captured manually, such as by using a DSLR on a tripod.") }, + { "StitchingSoftware", N_("Stitching Software"), "Text", xmpText, xmpExternal, N_("The software that was used to create the final panorama. This may sometimes be the same value as that of GPano:CaptureSoftware.") }, + { "ProjectionType", N_("Projection Type"), "Open Choice of Text", xmpText, xmpExternal, N_("Projection type used in the image file. Google products currently support the value equirectangular.") }, + { "PoseHeadingDegrees", N_("Pose Heading Degrees"), "Real", xmpText, xmpExternal, N_("Compass heading, measured in degrees, for the center the image. Value must be >= 0 and < 360.") }, + { "PosePitchDegrees", N_("Pose Pitch Degrees"), "Real", xmpText, xmpExternal, N_("Pitch, measured in degrees, for the center in the image. Value must be >= -90 and <= 90.") }, + { "PoseRollDegrees", N_("Pose Roll Degrees"), "Real", xmpText, xmpExternal, N_("Roll, measured in degrees, of the image where level with the horizon is 0. Value must be > -180 and <= 180.") }, + { "InitialViewHeadingDegrees", N_("Initial View Heading Degrees"), "Integer", xmpText, xmpExternal, N_("The heading angle of the initial view in degrees.") }, + { "InitialViewPitchDegrees", N_("Initial View Pitch Degrees"), "Integer", xmpText, xmpExternal, N_("The pitch angle of the initial view in degrees.") }, + { "InitialViewRollDegrees", N_("Initial View Roll Degrees"), "Integer", xmpText, xmpExternal, N_("The roll angle of the initial view in degrees.") }, + { "InitialHorizontalFOVDegrees", N_("Initial Horizontal FOV Degrees"), "Real", xmpText, xmpExternal, N_("The initial horizontal field of view that the viewer should display (in degrees). This is similar to a zoom level.") }, + { "FirstPhotoDate", N_("First Photo Date"), "Date", xmpText, xmpExternal, N_("Date and time for the first image created in the panorama.") }, + { "LastPhotoDate", N_("Last Photo Date"), "Date", xmpText, xmpExternal, N_("Date and time for the last image created in the panorama.") }, + { "SourcePhotosCount", N_("Source Photos Count"), "Integer", xmpText, xmpExternal, N_("Number of source images used to create the panorama") }, + { "ExposureLockUsed", N_("Exposure Lock Used"), "Boolean", xmpText, xmpExternal, N_("When individual source photographs were captured, whether or not the camera's exposure setting was locked. ") }, + { "CroppedAreaImageWidthPixels", N_("Cropped Area Image Width Pixels"), "Integer", xmpText, xmpExternal, N_("Original width in pixels of the image (equal to the actual image's width for unedited images).") }, + { "CroppedAreaImageHeightPixels", N_("Cropped Area Image Height Pixels"), "Integer", xmpText, xmpExternal, N_("Original height in pixels of the image (equal to the actual image's height for unedited images).") }, + { "FullPanoWidthPixels", N_("Full Pano Width Pixels"), "Integer", xmpText, xmpExternal, N_("Original full panorama width from which the image was cropped. Or, if only a partial panorama was captured, this specifies the width of what the full panorama would have been.") }, + { "FullPanoHeightPixels", N_("Full Pano Height Pixels"), "Integer", xmpText, xmpExternal, N_("Original full panorama height from which the image was cropped. Or, if only a partial panorama was captured, this specifies the height of what the full panorama would have been.") }, + { "CroppedAreaLeftPixels", N_("Cropped Area Left Pixels"), "Integer", xmpText, xmpExternal, N_("Column where the left edge of the image was cropped from the full sized panorama.") }, + { "CroppedAreaTopPixels", N_("Cropped Area Top Pixels"), "Integer", xmpText, xmpExternal, N_("Row where the top edge of the image was cropped from the full sized panorama.") }, + { "InitialCameraDolly", N_("Initial Camera Dolly"), "Real", xmpText, xmpExternal, N_("This optional parameter moves the virtual camera position along the line of sight, away from the center of the photo sphere. A rear surface position is represented by the value -1.0, while a front surface position is represented by 1.0. For normal viewing, this parameter should be set to 0.") }, + + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpVideoInfo[] = { + { "Album", N_("Album"), "Text", xmpText, xmpExternal, N_("The name of the album.") }, + { "ArchivalLocation", N_("Archival Location"), "Text", xmpText, xmpExternal, N_("Information about the Archival Location.") }, + { "Arranger", N_("Arranger"), "Text", xmpText, xmpExternal, N_("Information about the Arranger.") }, + { "ArrangerKeywords", N_("Arranger Keywords"), "Text", xmpText, xmpExternal, N_("Information about the Arranger Keywords.") }, + { "Artist", N_("Artist"), "Text", xmpText, xmpExternal, N_("The name of the artist or artists.") }, + { "AspectRatio", N_("Video Aspect Ratio"), "Ratio", xmpText, xmpExternal, N_("Ratio of Width:Height, helps to determine how a video would be displayed on a screen") }, + { "AspectRatioType", N_("Video Aspect Ratio Type"), "Text", xmpText, xmpExternal, N_("Aspect Ratio Type. Eg - Free-Resizing or Fixed") }, + { "AttachFileData", N_("Attached File Data"), "Text", xmpText, xmpExternal, N_("Attached File Data") }, + { "AttachFileDesc", N_("Attached File Description"), "Text", xmpText, xmpExternal, N_("Attached File Description") }, + { "AttachFileMIME", N_("Attached File MIME Type"), "Text", xmpText, xmpExternal, N_("Attached File MIME Type") }, + { "AttachFileName", N_("Attached File Name"), "Text", xmpText, xmpExternal, N_("Attached File Name") }, + { "AttachFileUID", N_("Attached File UID"), "Integer", xmpText, xmpExternal, N_("Attached File Universal ID") }, + { "BaseURL", N_("Base URL"), "Text", xmpText, xmpExternal, N_("A C string that specifies a Base URL.") }, + { "BitDepth", N_("Bit Depth"), "Integer", xmpText, xmpExternal, N_("A 16-bit integer that indicates the pixel depth of the compressed image. Values of 1, 2, 4, 8 , 16, 24, and 32 indicate the depth of color images") }, + { "Brightness", N_("Brightness"), "Integer", xmpText, xmpExternal, N_("Brightness setting.") }, + { "CameraByteOrder", N_("Camera Byte Order"), "Text", xmpText, xmpExternal, N_("Byte Order used by the Video Capturing device.") }, + { "Cinematographer", N_("Video Cinematographer"), "Text", xmpText, xmpExternal, N_("The video Cinematographer information.") }, + { "CleanApertureWidth", N_("Clean Aperture Width"), "Integer", xmpText, xmpExternal, N_("Clean aperture width in pixels") }, + { "CleanApertureHeight", N_("Clean Aperture Height"), "Integer", xmpText, xmpExternal, N_("Clean aperture height in pixels") }, + { "Codec", N_("Video Codec"), "Text", xmpText, xmpExternal, N_("The video codec information. Informs about the encoding algorithm of video. Codec Info is required for video playback.") }, + { "CodecDecodeAll", N_("Video Codec Decode Info"), "Text", xmpText, xmpExternal, N_("Contains information the video Codec Decode All, i.e. Enabled/Disabled") }, + { "CodecDescription", N_("Video Codec Description"), "Text", xmpText, xmpExternal, N_("Contains description the codec.") }, + { "CodecInfo", N_("Video Codec Information"), "Text", xmpText, xmpExternal, N_("Contains information the codec needs before decoding can be started.") }, + { "CodecDownloadUrl", N_("Video Codec Download URL"), "Text", xmpText, xmpExternal, N_("Video Codec Download URL.") }, + { "CodecSettings", N_("Video Codec Settings"), "Text", xmpText, xmpExternal, N_("Contains settings the codec needs before decoding can be started.") }, + { "ColorMode", N_("Color Mode"), "Text", xmpText, xmpExternal, N_("Color Mode") }, + { "ColorNoiseReduction", N_("Color Noise Reduction"), "Integer", xmpText, xmpExternal, N_("\"Color Noise Reduction\" setting. Range 0 to +100.") }, + { "ColorSpace", N_("Video Color Space"), "closed Choice of Text", xmpText, xmpInternal, N_("The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), " + "CCIR-709 (used for HD).") }, + { "Comment", N_("Comment"), "Text", xmpText, xmpExternal, N_("Information about the Comment.") }, + { "Commissioned", N_("Commissioned"), "Text", xmpText, xmpExternal, N_("Commissioned.") }, + { "CompatibleBrands", N_("QTime Compatible FileType Brand"), "Text", xmpText, xmpExternal, N_("Other QuickTime Compatible FileType Brand") }, + { "Composer", N_("Composer"), "Text", xmpText, xmpExternal, N_("Information about the Composer.") }, + { "ComposerKeywords", N_("Composer Keywords"), "Text", xmpText, xmpExternal, N_("Information about the Composer Keywords.") }, + { "Compressor", N_("Compressor"), "Text", xmpText, xmpExternal, N_("Video Compression Library Used") }, + { "CompressorID", N_("Video Compressor ID"), "Text", xmpText, xmpExternal, N_("Video Compression ID of Technology/Codec Used") }, + { "CompressorVersion", N_("Compressor Version"), "Text", xmpText, xmpExternal, N_("Information about the Compressor Version.") }, + { "Container", N_("Container Type"), "Text", xmpText, xmpExternal, N_("Primary Metadata Container") }, + { "ContentCompressAlgo", N_("Content Compression Algorithm"), "Text", xmpText, xmpExternal, N_("Content Compression Algorithm. Eg: zlib") }, + { "ContentEncodingType", N_("Content Encoding Type"), "Text", xmpText, xmpExternal, N_("Content Encoding Type. Eg: Encryption or Compression") }, + { "ContentEncryptAlgo", N_("Content Encryption Algorithm"), "Text", xmpText, xmpExternal, N_("Content Encryption Algorithm. Eg: Blowfish") }, + { "ContentSignAlgo", N_("Content Signature Algorithm"), "Text", xmpText, xmpExternal, N_("Content Signature Algorithm. Eg: RSA") }, + { "ContentSignHashAlgo", N_("Content Sign Hash Algorithm"), "Text", xmpText, xmpExternal, N_("Content Signature Hash Algorithm. Eg: SHA1-160 or MD5") }, + { "Contrast", N_("Contrast"), "Closed Choice of Integer", xmpText, xmpInternal, N_("Indicates the direction of contrast processing applied by the camera.") }, + { "Copyright", N_("Copyright"), "Text", xmpText, xmpExternal, N_("Copyright, can be name of an organization or an individual.") }, + { "CostumeDesigner", N_("Costume Designer"), "Text", xmpText, xmpExternal, N_("Costume Designer associated with the video.") }, + { "Country", N_("Country"), "Text", xmpText, xmpExternal, N_("Name of the country where the video was created.") }, + { "CreationDate", N_("Creation Date"), "Integer", xmpText, xmpExternal, N_("Specifies the date and time of the initial creation of the file. The value is given as the " + "number of 100-nanosecond intervals since January 1, 1601, according to Coordinated Universal Time (Greenwich Mean Time).") }, + { "CropBottom", N_("Pixel Crop Bottom"), "Integer", xmpText, xmpExternal, N_("Number of Pixels to be cropped from the bottom.") }, + { "CropLeft", N_("Pixel Crop Left"), "Integer", xmpText, xmpExternal, N_("Number of Pixels to be cropped from the left.") }, + { "CropRight", N_("Pixel Crop Right"), "Integer", xmpText, xmpExternal, N_("Number of Pixels to be cropped from the right.") }, + { "Cropped", N_("Cropped"), "Integer", xmpText, xmpExternal, N_("Field that indicates if a video is cropped.") }, + { "CropTop", N_("Pixel Crop Top"), "Integer", xmpText, xmpExternal, N_("Number of Pixels to be cropped from the top.") }, + { "CurrentTime", N_("Current Time"), "Integer", xmpText, xmpExternal, N_("The time value for current time position within the movie.") }, + { "DataPackets", N_("Data Packets"), "Integer", xmpText, xmpExternal, N_("Specifies the number of Data Packet entries that exist within the Data Object.") }, + { "DateTimeOriginal", N_("Date and Time Original"), "Date", xmpText, xmpInternal, N_("Date and time when original video was generated, in ISO 8601 format. ") }, + { "DateTimeDigitized", N_("Date and Time Digitized"), "Date", xmpText, xmpInternal, N_("Date and time when video was stored as digital data, can be the same " + "as DateTimeOriginal if originally stored in digital form. Stored in ISO 8601 format.") }, + { "DateUTC", N_("Date-Time Original"), "Text", xmpText, xmpExternal, N_("Contains the production date") }, + { "DefaultOn", N_("Video Track Default On"), "Text", xmpText, xmpExternal, N_("Video Track Default On , i.e. Enabled/Disabled") }, + { "DigitalZoomRatio", N_("Digital Zoom Ratio"), "Rational", xmpText, xmpInternal, N_("Indicates the digital zoom ratio when the video was shot.") }, + { "Dimensions", N_("Dimensions"), "Text", xmpText, xmpExternal, N_("Information about the Dimensions of the video frame.") }, + { "Director", N_("Director"), "Text", xmpText, xmpExternal, N_("Information about the Director.") }, + { "DisplayUnit", N_("Video Display Unit"), "Text", xmpText, xmpExternal, N_("Video display unit. Eg - cm, pixels, inch") }, + { "DistributedBy", N_("Distributed By"), "Text", xmpText, xmpExternal, N_("Distributed By, i.e. name of person or organization.") }, + { "DocType", N_("Doc Type"), "Text", xmpText, xmpExternal, N_("Describes the contents of the file. In the case of a MATROSKA file, its value is 'matroska'") }, + { "DocTypeReadVersion", N_("Doc Type Read Version"), "Integer", xmpText, xmpExternal, N_("A Matroska video specific property, helps in determining the compatibility of file with a particular version of a video player") }, + { "DocTypeVersion", N_("Doc Type Version"), "Integer", xmpText, xmpExternal, N_("A Matroska video specific property, indicated the version of filetype, helps in determining the compatibility") }, + { "DotsPerInch", N_("Dots Per Inch"), "Integer", xmpText, xmpExternal, N_("Dots Per Inch") }, + { "duration", N_("Duration"), "Integer", xmpText, xmpExternal, N_("The duration of the media file. Measured in milli-seconds.") }, + { "EBMLReadVersion", N_("EBML Read Version"), "Integer", xmpText, xmpExternal, N_("Extensible Binary Meta Language Read Version") }, + { "EBMLVersion", N_("EBML Version"), "Integer", xmpText, xmpExternal, N_("Extensible Binary Meta Language Version") }, + { "Edit1", N_("Edit Block 1 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit2", N_("Edit Block 2 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit3", N_("Edit Block 3 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit4", N_("Edit Block 4 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit5", N_("Edit Block 5 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit6", N_("Edit Block 6 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit7", N_("Edit Block 7 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit8", N_("Edit Block 8 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "Edit9", N_("Edit Block 9 / Language"), "Text", xmpText, xmpExternal, N_("Information about the Edit / Language.") }, + { "EditedBy", N_("Edited By"), "Text", xmpText, xmpExternal, N_("Edited By, i.e. name of person or organization.") }, + { "Enabled", N_("Video Track Enabled"), "Text", xmpText, xmpExternal, N_("Status of Video Track, i.e. Enabled/Disabled") }, + { "EncodedBy", N_("Encoded By"), "Text", xmpText, xmpExternal, N_("Encoded By, i.e. name of person or organization.") }, + { "EncodedPixelsWidth", N_("Encoded Pixels Width"), "Integer", xmpText, xmpExternal, N_("Encoded Pixels width in pixels") }, + { "EncodedPixelsHeight", N_("Encoded Pixels Height"), "Integer", xmpText, xmpExternal, N_("Encoded Pixels height in pixels") }, + { "Encoder", N_("Encoder"), "Text", xmpText, xmpExternal, N_("Information about the Encoder.") }, + { "EndTimecode", N_("End Timecode"), "Integer", xmpText, xmpExternal, N_("End Timecode") }, + { "Engineer", N_("Engineer"), "Text", xmpText, xmpExternal, N_("Engineer, in most cases name of person.") }, + { "Equipment", N_("Equipment"), "Text", xmpText, xmpExternal, N_("Information about the Equipment used for recording Video.") }, + { "ExposureCompensation", N_("Exposure Compensation"), "Text", xmpText, xmpExternal, N_("Exposure Compensation Information.") }, + { "ExposureProgram", N_("Exposure Program"), "Text", xmpText, xmpExternal, N_("Exposure Program Information.") }, + { "ExposureTime", N_("Exposure Time"), "Rational", xmpText, xmpInternal, N_("Exposure time in seconds.") }, + { "ExtendedContentDescription",N_("Extended Content Description"), "Text", xmpSeq, xmpExternal, N_("Extended Content Description, usually found in ASF type files.") }, + { "FileDataRate", N_("File Data Rate"), "Rational", xmpText, xmpExternal, N_("The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/sec") }, + { "FileID", N_("File ID"), "Text", xmpText, xmpExternal, N_("File ID.") }, + { "FileLength", N_("File Length"), "Integer", xmpText, xmpInternal, N_("File length.") }, + { "FileName", N_("File Name"), "Text", xmpText, xmpExternal, N_("File Name or Absolute File Path") }, + { "FileSize", N_("File Size"), "Integer", xmpText, xmpExternal, N_("File Size, in MB") }, + { "FileType", N_("File Type"), "Text", xmpText, xmpExternal, N_("Extension of File or Type of File") }, + { "FilterEffect", N_("Filter Effect"), "Text", xmpText, xmpExternal, N_("Filter Effect Settings Applied.") }, + { "FirmwareVersion", N_("Firmware Version"), "Text", xmpText, xmpExternal, N_("Firmware Version of the Camera/Video device.") }, + { "FNumber", N_("F Number"), "Rational", xmpText, xmpInternal, N_("F number. Camera Lens specific data.") }, + { "FocalLength", N_("Focal Length"), "Rational", xmpText, xmpInternal, N_("Focal length of the lens, in millimeters.") }, + { "FocusMode", N_("Focus Mode"), "Text", xmpText, xmpExternal, N_("Focus Mode of the Lens. Eg - AF for Auto Focus") }, + { "Format", N_("Format"), "Text", xmpText, xmpExternal, N_("Indication of movie format (computer-generated, digitized, and so on).") }, + { "FrameCount", N_("Frame Count"), "Integer", xmpText, xmpExternal, N_("Total number of frames in a video") }, + { "FrameHeight", N_("Frame Height"), "Integer", xmpText, xmpExternal, N_("Height of frames in a video") }, + { "FrameRate", N_("Video Frame Rate"), "Frames per Second", xmpText, xmpExternal, N_("Rate at which frames are presented in a video (Expressed in fps(Frames per Second))") }, + { "FrameSize", N_("Video Frame Size"), "Dimensions", xmpText, xmpExternal, N_("The frame size. For example: w:720, h: 480, unit:pixels") }, + { "FrameWidth", N_("Frame Width"), "Integer", xmpText, xmpExternal, N_("Width of frames in a video") }, + { "Genre", N_("Genre"), "Text", xmpText, xmpExternal, N_("The name of the genre.") }, + { "GPSAltitude", N_("GPS Altitude"), "Rational", xmpText, xmpInternal, N_("GPS tag 6, 0x06. Indicates altitude in meters.") }, + { "GPSAltitudeRef", N_("GPS Altitude Reference"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level.") }, + { "GPSCoordinates", N_("GPS Coordinates"), "Text", xmpText, xmpExternal, N_("Information about the GPS Coordinates.") }, + { "GPSDateStamp", N_("GPS Time Stamp"), "Date", xmpText, xmpInternal, N_("Date stamp of GPS data, ") }, + { "GPSImgDirection", N_("GPS Image Direction"), "Rational", xmpText, xmpInternal, N_("Direction of image when captured, values range from 0 to 359.99.") }, + { "GPSImgDirectionRef", N_("GPS Image Direction Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("Reference for image direction.") }, + { "GPSLatitude", N_("GPS Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("(North/South). Indicates latitude.") }, + { "GPSLongitude", N_("GPS Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("(East/West). Indicates longitude.") }, + { "GPSMapDatum", N_("GPS Map Datum"), "Text", xmpText, xmpInternal, N_("Geodetic survey data.") }, + { "GPSSatellites", N_("GPS Satellites"), "Text", xmpText, xmpInternal, N_("Satellite information, format is unspecified.") }, + { "GPSTimeStamp", N_("GPS Time Stamp"), "Date", xmpText, xmpInternal, N_("Time stamp of GPS data, ") }, + { "GPSVersionID", N_("GPS Version ID"), "Text", xmpText, xmpInternal, N_("A decimal encoding with period separators. ") }, + { "GraphicsMode", N_("Graphics Mode"), "Text", xmpText, xmpExternal, N_("A 16-bit integer that specifies the transfer mode. The transfer mode specifies which Boolean" + "operation QuickDraw should perform when drawing or transferring an image from one location to another.") }, + { "Grouping", N_("Grouping"), "Text", xmpText, xmpExternal, N_("Information about the Grouping.") }, + { "HandlerClass", N_("Handler Class"), "Text", xmpText, xmpExternal, N_("A four-character code that identifies the type of the handler. Only two values are valid for this field: 'mhlr' for media handlers and 'dhlr' for data handlers.") }, + { "HandlerDescription", N_("Handler Description"), "Text", xmpText, xmpExternal, N_("A (counted) string that specifies the name of the component-that is, the media handler used when this media was created..") }, + { "HandlerType", N_("Handler Type"), "Text", xmpText, xmpExternal, N_("A four-character code that identifies the type of the media handler or data handler.") }, + { "HandlerVendorID", N_("Handler Vendor ID"), "Text", xmpText, xmpExternal, N_("Component manufacturer.") }, + { "Height", N_("Video Height"), "Integer", xmpText, xmpExternal, N_("Video height in pixels") }, + { "HueAdjustment", N_("Hue Adjustment"), "Integer", xmpText, xmpExternal, N_("Hue Adjustment Settings Information.") }, + { "ImageLength", N_("Image Length"), "Integer", xmpText, xmpExternal, N_("Image Length, a property inherited from BitMap format") }, + { "InfoBannerImage", N_("Info Banner Image"), "Text", xmpText, xmpExternal, N_("Information Banner Image.") }, + { "InfoBannerURL", N_("Info Banner URL"), "Text", xmpText, xmpExternal, N_("Information Banner URL.") }, + { "Information", N_("Information"), "Text", xmpText, xmpExternal, N_("Additional Movie Information.") }, + { "InfoText", N_("Info Text"), "Text", xmpText, xmpExternal, N_("Information Text.") }, + { "InfoURL", N_("Info URL"), "Text", xmpText, xmpExternal, N_("Information URL.") }, + { "ISO", N_("ISO Setting"), "Integer", xmpText, xmpExternal, N_("Information about the ISO Setting.") }, + { "ISRCCode", N_("ISRC Code"), "Text", xmpText, xmpExternal, N_("Information about the ISRC Code.") }, + { "Junk", N_("Junk Data"), "Text", xmpText, xmpExternal, N_("Video Junk data") }, + { "Language", N_("Language"), "Text", xmpText, xmpExternal, N_("Language.") }, + { "Length", N_("Length"), "Integer", xmpText, xmpExternal, N_("The length of the media file.") }, + { "LensModel", N_("Lens Model"), "Text", xmpText, xmpExternal, N_("Lens Model.") }, + { "LensType", N_("Lens Type"), "Text", xmpText, xmpExternal, N_("Lens Type.") }, + { "Lightness", N_("Lightness"), "Text", xmpText, xmpExternal, N_("Lightness.") }, + { "LocationInfo", N_("Location Information"), "Text", xmpText, xmpExternal, N_("Location Information.") }, + { "LogoIconURL", N_("Logo Icon URL"), "Text", xmpText, xmpExternal, N_("A C string that specifies Logo Icon URL.") }, + { "LogoURL", N_("Logo URL"), "Text", xmpText, xmpExternal, N_("A C string that specifies a Logo URL.") }, + { "Lyrics", N_("Lyrics"), "Text", xmpText, xmpExternal, N_("Lyrics of a Song/Video.") }, + { "MajorBrand", N_("QTime Major FileType Brand"), "Text", xmpText, xmpExternal, N_("QuickTime Major File Type Brand") }, + { "Make", N_("Equipment Make"), "Text", xmpText, xmpExternal, N_("Manufacturer of recording equipment") }, + { "MakerNoteType", N_("Camera Maker Note Type"), "Text", xmpText, xmpExternal, N_("Maker Note Type of the camera.") }, + { "MakerNoteVersion", N_("Camera Maker Note Version"), "Text", xmpText, xmpExternal, N_("Maker Note Version of the camera.") }, + { "MakerURL", N_("Maker URL"), "Text", xmpText, xmpExternal, N_("Camera Manufacturer's URL.") }, + { "MaxApertureValue", N_("Maximum Aperture Value"), "Rational", xmpText, xmpInternal, N_("Smallest F number of lens, in APEX.") }, + { "MaxBitRate", N_("Maximum Bit Rate"), "Integer", xmpText, xmpExternal, N_("Specifies the maximum instantaneous bit rate in bits per second for the entire file. This shall equal the sum of the bit rates of the individual digital media streams.") }, + { "MaxDataRate", N_("Maximum Data Rate"), "kiloBytes per Second", xmpText, xmpExternal, N_("Peak rate at which data is presented in a video (Expressed in kB/s(kiloBytes per Second))") }, + { "MediaCreateDate", N_("Media Track Create Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the media header was created.") }, + { "MediaDuration", N_("Media Track Duration"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the duration of this media (in the movie's time coordinate system).") }, + { "MediaHeaderVersion", N_("Media Header Version"), "Text", xmpText, xmpExternal, N_("A 1-byte specification of the version of this media header") }, + { "MediaLangCode", N_("Media Language Code"), "Integer", xmpText, xmpExternal, N_("A 16-bit integer that specifies the language code for this media.") }, + { "MediaModifyDate", N_("Media Track Modify Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the media header was last modified.") }, + { "MediaTimeScale", N_("Media Time Scale"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the time scale for this media-that is, the number of time units that pass per second in its time coordinate system." ) }, + { "Medium", N_("Medium"), "Text", xmpSeq, xmpExternal, N_("Medium.") }, + { "Metadata", N_("Metadata"), "Text", xmpSeq, xmpExternal, N_("An array of Unknown / Unregistered Metadata Tags and their values.") }, + { "MetadataLibrary", N_("Metadata Library"), "Text", xmpSeq, xmpExternal, N_("An array of Unregistered Metadata Library Tags and their values.") }, + { "MeteringMode", N_("Metering Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("Metering mode.") }, + { "MicroSecPerFrame", N_("Micro Seconds Per Frame"), "Integer", xmpText, xmpExternal, N_("Number of micro seconds per frame, or frame rate") }, + { "MimeType", N_("Mime Type"), "Text", xmpText, xmpExternal, N_("Tells about the video format") }, + { "MinorVersion", N_("QTime Minor FileType Version"), "Text", xmpText, xmpExternal, N_("QuickTime Minor File Type Version") }, + { "Model", N_("Equipment Model"), "Text", xmpText, xmpExternal, N_("Model name or number of equipment.") }, + { "ModificationDate", N_("Modification Date-Time"), "Text", xmpText, xmpExternal, N_("Contains the modification date of the video") }, + { "MovieHeaderVersion", N_("Movie Header Version"), "Integer", xmpText, xmpExternal, N_("Movie Header Version") }, + { "MusicBy", N_("Music By"), "Text", xmpText, xmpExternal, N_("Music By, i.e. name of person or organization.") }, + { "MuxingApp", N_("Muxing App"), "Text", xmpText, xmpExternal, N_("Contains the name of the library that has been used to create the file (like \"libmatroska 0.7.0\")") }, + { "Name", N_("Name"), "Text", xmpText, xmpExternal, N_("Name of song or the event.") }, + { "NextTrackID", N_("Next Track ID"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates a value to use for the track ID number of the next track added to this movie. Note that 0 is not a valid track ID value.") }, + { "NumOfColours", N_("Number Of Colours"), "Integer/Text", xmpText, xmpExternal, N_("Total number of colours used") }, + { "NumOfImpColours", N_("Number Of Important Colours"), "Integer/Text", xmpText, xmpExternal, N_("Number Of Important Colours, a property inherited from BitMap format") }, + { "NumOfParts", N_("Number Of Parts"), "Integer", xmpText, xmpExternal, N_("Total number of parts in the video.") }, + { "OpColor", N_("Operation Colours"), "Integer/Text", xmpText, xmpExternal, N_("Three 16-bit values that specify the red, green, and blue colors for the transfer mode operation indicated in the graphics mode field.") }, + { "Organization", N_("Organization"), "Text", xmpText, xmpExternal, N_("Name of organization associated with the video.") }, + { "Orientation", N_("Orientation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("Video Orientation:" + "1 = Horizontal (normal) " + "2 = Mirror horizontal " + "3 = Rotate 180 " + "4 = Mirror vertical " + "5 = Mirror horizontal and rotate 270 CW " + "6 = Rotate 90 CW " + "7 = Mirror horizontal and rotate 90 CW " + "8 = Rotate 270 CW") }, + { "Part", N_("Part"), "Text", xmpText, xmpExternal, N_("Part.") }, + { "Performers", N_("Performers"), "Text", xmpText, xmpExternal, N_("Performers involved in the video.") }, + { "PerformerKeywords", N_("Performer Keywords"), "Text", xmpText, xmpExternal, N_("Performer Keywords.") }, + { "PerformerURL", N_("Performer URL"), "Text", xmpText, xmpExternal, N_("Performer's dedicated URL.") }, + { "PictureControlData", N_("Picture Control Data"), "Text", xmpText, xmpExternal, N_("Picture Control Data.") }, + { "PictureControlVersion", N_("Picture Control Version"), "Text", xmpText, xmpExternal, N_("Picture Control Data Version.") }, + { "PictureControlName", N_("Picture Control Name"), "Text", xmpText, xmpExternal, N_("Picture Control Name.") }, + { "PictureControlBase", N_("Picture Control Base"), "Text", xmpText, xmpExternal, N_("Picture Control Data Base.") }, + { "PictureControlAdjust", N_("Picture Control Adjust"), "Text", xmpText, xmpExternal, N_("Picture Control Adjust Information.") }, + { "PictureControlQuickAdjust",N_("Picture Control Quick Adjust"), "Text", xmpText, xmpExternal, N_("Picture Control Quick Adjustment Settings.") }, + { "PlaySelection", N_("Play Selection"), "Text", xmpText, xmpExternal, N_("Play Selection.") }, + { "PlayMode", N_("Play Mode"), "Text", xmpText, xmpExternal, N_("Information about the Play Mode.") }, + { "PhysicalEquivalent", N_("Chapter Physical Equivalent"), "Text", xmpText, xmpExternal, N_("Contains the information of External media.") }, + { "PixelDepth", N_("Video Pixel Depth"), "closed Choice of Text", xmpText, xmpExternal, N_("The size in bits of each color component of a pixel. Standard Windows 32-bit " + "pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float.") }, + { "PixelPerMeterX", N_("Pixels Per Meter X"), "Integer", xmpText, xmpExternal, N_("Pixels Per Meter X, a property inherited from BitMap format") }, + { "PixelPerMeterY", N_("Pixels Per Meter Y"), "Integer", xmpText, xmpExternal, N_("Pixels Per Meter Y, a property inherited from BitMap format") }, + { "Planes", N_("Planes"), "Integer", xmpText, xmpExternal, N_("The number of Image Planes in the video") }, + { "PosterTime", N_("Poster Time"), "Integer", xmpText, xmpExternal, N_("The time value of the time of the movie poster.") }, + { "PreferredRate", N_("Preferred Rate"), "Rational", xmpText, xmpExternal, N_("A 32-bit fixed-point number that specifies the rate at which to play this movie. A value of 1.0 indicates normal rate.") }, + { "PreferredVolume", N_("Preferred Volume"), "Rational", xmpText, xmpExternal, N_("A 16-bit fixed-point number that specifies how loud to play this movie's sound. A value of 1.0 indicates full volume.") }, + { "Preroll", N_("Preroll"), "Integer", xmpText, xmpExternal, N_("Specifies the amount of time to buffer data before starting to play the file, in millisecond units. If this value is nonzero," + "the Play Duration field and all of the payload Presentation Time fields have been offset by this amount. Therefore, player software " + "must subtract the value in the preroll field from the play duration and presentation times to calculate their actual values.") }, + { "PreviewAtomType", N_("Preview Atom Type"), "Text", xmpText, xmpExternal, N_("Indicates the type of atom that contains the preview data") }, + { "PreviewDate", N_("Preview Date"), "Integer", xmpText, xmpExternal, N_("The date of the movie preview in local time converted from UTC") }, + { "PreviewDuration", N_("Preview Duration"), "Integer", xmpText, xmpExternal, N_("The duration of the movie preview in movie time scale units") }, + { "PreviewTime", N_("Preview Time"), "Integer", xmpText, xmpExternal, N_("The time value in the movie at which the preview begins.") }, + { "PreviewVersion", N_("Preview Version"), "Integer", xmpText, xmpExternal, N_("The version of the movie preview ") }, + { "ProducedBy", N_("Produced By"), "Text", xmpText, xmpExternal, N_("Produced By, i.e. name of person or organization.") }, + { "Producer", N_("Producer"), "Text", xmpText, xmpExternal, N_("Producer involved with the video.") }, + { "ProducerKeywords", N_("Producer Keywords"), "Text", xmpText, xmpExternal, N_("Information about the Producer Keywords.") }, + { "ProductionApertureWidth",N_("Production Aperture Width"), "Integer", xmpText, xmpExternal, N_("Production aperture width in pixels") }, + { "ProductionApertureHeight",N_("Production Aperture Height"), "Integer", xmpText, xmpExternal, N_("Production aperture height in pixels") }, + { "ProductionDesigner", N_("Production Designer"), "Text", xmpText, xmpExternal, N_("Information about the Production Designer.") }, + { "ProductionStudio", N_("Production Studio"), "Text", xmpText, xmpExternal, N_("Information about the Production Studio.") }, + { "Product", N_("Product"), "Text", xmpText, xmpExternal, N_("Product.") }, + { "ProjectRef", N_("Project Reference"), "ProjectLink", xmpText, xmpExternal, N_("A reference to the project that created this file.") }, + { "Rate", N_("Rate"), "Integer", xmpText, xmpExternal, N_("Rate.") }, + { "Rated", N_("Rated"), "Text", xmpText, xmpExternal, N_("The age circle required for viewing the video.") }, + { "Rating", N_("Rating"), "Text", xmpText, xmpExternal, N_("Rating, eg. 7 or 8 (generally out of 10).") }, + { "RecordLabelName", N_("Record Label Name"), "Text", xmpText, xmpExternal, N_("Record Label Name, or the name of the organization recording the video.") }, + { "RecordLabelURL", N_("Record Label URL"), "Text", xmpText, xmpExternal, N_("Record Label URL.") }, + { "RecordingCopyright", N_("Recording Copyright"), "Text", xmpText, xmpExternal, N_("Recording Copyright.") }, + { "Requirements", N_("Requirements"), "Text", xmpText, xmpExternal, N_("Information about the Requirements.") }, + { "ResolutionUnit", N_("Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("Unit used for XResolution and YResolution. Value is one of: 2 = inches; 3 = centimeters.") }, + { "RippedBy", N_("Ripped By"), "Text", xmpText, xmpExternal, N_("Ripped By, i.e. name of person or organization.") }, + { "Saturation", N_("Saturation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("Indicates the direction of saturation processing applied by the camera.") }, + { "SecondaryGenre", N_("Secondary Genre"), "Text", xmpText, xmpExternal, N_("The name of the secondary genre..") }, + { "SelectionTime", N_("Selection Time"), "Integer", xmpText, xmpExternal, N_("The time value for the start time of the current selection.") }, + { "SelectionDuration", N_("Selection Duration"), "Integer", xmpText, xmpExternal, N_("The duration of the current selection in movie time scale units.") }, + { "SendDuration", N_("Send Duration"), "Integer", xmpText, xmpExternal, N_("Specifies the time needed to send the file in 100-nanosecond units. This value should " + "include the duration of the last packet in the content.") }, + { "Sharpness", N_("Sharpness"), "Integer", xmpText, xmpExternal, N_("\"Sharpness\" setting. Range 0 to +100.") }, + { "Software", N_("Software"), "Text", xmpText, xmpExternal, N_("Software used to generate / create Video data.") }, + { "SoftwareVersion", N_("Software Version"), "Text", xmpText, xmpExternal, N_("The Version of the software used.") }, + { "SongWriter", N_("Song Writer"), "Text", xmpText, xmpExternal, N_("The name of the song writer.") }, + { "SongWriterKeywords", N_("Song Writer Keywords"), "Text", xmpText, xmpExternal, N_("Song Writer Keywords.") }, + { "Source", N_("Source"), "Text", xmpText, xmpExternal, N_("Source.") }, + { "SourceCredits", N_("Source Credits"), "Text", xmpText, xmpExternal, N_("Source Credits.") }, + { "SourceForm", N_("Source Form"), "Text", xmpText, xmpExternal, N_("Source Form.") }, + { "SourceImageHeight", N_("Source Image Height"), "Integer", xmpText, xmpExternal, N_("Video height in pixels") }, + { "SourceImageWidth", N_("Source Image Width"), "Integer", xmpText, xmpExternal, N_("Video width in pixels") }, + { "Starring", N_("Starring"), "Text", xmpText, xmpExternal, N_("Starring, name of famous people appearing in the video.") }, + { "StartTimecode", N_("Start Timecode"), "Integer", xmpText, xmpExternal, N_("Start Timecode") }, + { "Statistics", N_("Statistics"), "Text", xmpText, xmpExternal, N_("Statistics.") }, + { "StreamCount", N_("Stream Count"), "Integer", xmpText, xmpExternal, N_("Total Number Of Streams") }, + { "StreamName", N_("Stream Name"), "Text", xmpText, xmpExternal, N_("Describes the Stream Name. Eg - FUJIFILM AVI STREAM 0100") }, + { "StreamQuality", N_("Stream Quality"), "Integer", xmpText, xmpExternal, N_("General Stream Quality") }, + { "StreamSampleRate", N_("Stream Sample Rate"), "Rational", xmpText, xmpExternal, N_("Stream Sample Rate") }, + { "StreamSampleCount", N_("Stream Sample Count"), "Integer", xmpText, xmpExternal, N_("Stream Sample Count") }, + { "StreamSampleSize", N_("Stream Sample Size"), "Integer", xmpText, xmpExternal, N_("General Stream Sample Size") }, + { "StreamType", N_("Stream Type"), "Text", xmpText, xmpExternal, N_("Describes the Stream Type. Eg - Video, Audio or Subtitles") }, + { "SubTCodec", N_("Subtitles Codec"), "Text", xmpText, xmpExternal, N_("Subtitles stream codec, for general purpose") }, + { "SubTCodecDecodeAll", N_("Subtitle Codec Decode Info"), "Text", xmpText, xmpExternal, N_("Contains information the Subtitles codec decode all, i.e. Enabled/Disabled") }, + { "SubTCodecInfo", N_("Subtitles Codec Information"), "Text", xmpText, xmpExternal, N_("Contains additional information about subtitles.") }, + { "SubTCodecDownloadUrl", N_("Subtitle Codec Download URL"), "Text", xmpText, xmpExternal, N_("Video Subtitle Codec Download URL.") }, + { "SubTCodecSettings", N_("Subtitle Codec Settings"), "Text", xmpText, xmpExternal, N_("Contains settings the codec needs before decoding can be started.") }, + { "SubTDefaultOn", N_("Subtitle Track Default On"), "Text", xmpText, xmpExternal, N_("Subtitles Track Default On , i.e. Enabled/Disabled") }, + { "SubTEnabled", N_("Subtitle Track Enabled"), "Text", xmpText, xmpExternal, N_("Status of Subtitles Track, i.e. Enabled/Disabled") }, + { "Subtitle", N_("Subtitle"), "Text", xmpText, xmpExternal, N_("Subtitle of the video.") }, + { "SubtitleKeywords", N_("Subtitle Keywords"), "Text", xmpText, xmpExternal, N_("Subtitle Keywords.") }, + { "SubTLang", N_("Subtitles Language"), "Text", xmpText, xmpExternal, N_("The Language in which the subtitles is recorded in.") }, + { "SubTTrackForced", N_("Subtitle Track Forced"), "Text", xmpText, xmpExternal, N_("Subtitles Track Forced , i.e. Enabled/Disabled") }, + { "SubTTrackLacing", N_("Subtitle Track Lacing"), "Text", xmpText, xmpExternal, N_("Subtitles Track Lacing , i.e. Enabled/Disabled") }, + { "Subject", N_("Subject"), "Text", xmpText, xmpExternal, N_("Subject. ") }, + { "TapeName", N_("Tape Name"), "Text", xmpText, xmpExternal, N_("TapeName.") }, + { "TagDefault", N_("Tag Default Setting"), "Text", xmpText, xmpExternal, N_("If Tag is Default enabled, this value is Yes, else No ") }, + { "TagLanguage", N_("Tag Language"), "Text", xmpText, xmpExternal, N_("Language that has been used to define tags") }, + { "TagName", N_("Tag Name"), "Text", xmpText, xmpExternal, N_("Tags could be used to define several titles for a segment.") }, + { "TagString", N_("Tag String"), "Text", xmpText, xmpExternal, N_("Information contained in a Tags") }, + { "TargetType", N_("Target Type"), "Text", xmpText, xmpExternal, N_("A string describing the logical level of the object the Tag is referring to.") }, + { "Technician", N_("Technician"), "Text", xmpText, xmpExternal, N_("Technician, in most cases name of person.") }, + { "ThumbnailHeight", N_("Thumbnail Height"), "Integer", xmpText, xmpExternal, N_("Preview Image Thumbnail Height.") }, + { "ThumbnailLength", N_("Thumbnail Length"), "Integer", xmpText, xmpExternal, N_("Preview Image Thumbnail Length.") }, + { "ThumbnailWidth", N_("Thumbnail Width"), "Integer", xmpText, xmpExternal, N_("Preview Image Thumbnail Width.") }, + { "TimecodeScale", N_("Timecode Scale"), "Rational", xmpText, xmpExternal, N_("Multiplying factor which is helpful in calculation of a particular timecode") }, + { "TimeOffset", N_("Time Offset"), "Integer", xmpText, xmpExternal, N_("Specifies the presentation time offset of the stream in 100-nanosecond units. This value shall be equal to the send time of the first interleaved packet in the data section.") }, + { "TimeScale", N_("Time Scale"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the time scale for this movie-that is, the number of time units that" + "pass per second in its time coordinate system. A time coordinate system that measures time" + "in sixtieths of a second, for example, has a time scale of 60.") }, + { "Title", N_("Title"), "Text", xmpText, xmpExternal, N_("Contains a general name of the SEGMENT, like 'Lord of the Rings - The Two Towers', however, Tags could be used to define several titles for a segment.") }, + { "ToningEffect", N_("Toning Effect"), "Text", xmpText, xmpExternal, N_("Toning Effect Settings Applied.") }, + { "TotalFrameCount", N_("Total Frame Count"), "Integer", xmpText, xmpExternal, N_("Total number of frames in a video") }, + { "TotalStream", N_("Number Of Streams"), "Integer", xmpText, xmpExternal, N_("Total number of streams present in a video. Eg - Video, Audio or Subtitles") }, + { "Track", N_("Track"), "Text", xmpText, xmpExternal, N_("Information about the Track.") }, + { "TrackCreateDate", N_("Video Track Create Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the track header was created.") }, + { "TrackDuration", N_("Video Track Duration"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the duration of this track (in the movie's time coordinate system).") }, + { "TrackForced", N_("Video Track Forced"), "Text", xmpText, xmpExternal, N_("Video Track Forced , i.e. Enabled/Disabled") }, + { "TrackID", N_("Track ID"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that uniquely identifies the track. The value 0 cannot be used.") }, + { "TrackHeaderVersion", N_("Track Header Version"), "Text", xmpText, xmpExternal, N_("A 1-byte specification of the version of this track header") }, + { "TrackLacing", N_("Video Track Lacing"), "Text", xmpText, xmpExternal, N_("Video Track Lacing , i.e. Enabled/Disabled") }, + { "TrackLang", N_("Track Language"), "Text", xmpText, xmpExternal, N_("The Language in which a particular stream is recorded in.") }, + { "TrackLayer", N_("Video Track Layer"), "Integer", xmpText, xmpExternal, N_("A 16-bit integer that indicates this track's spatial priority in its movie. The QuickTime Movie" + "Toolbox uses this value to determine how tracks overlay one another. Tracks with lower layer" + "values are displayed in front of tracks with higher layer values.") }, + { "TrackModifyDate", N_("Video Track Modify Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the track header was last modified.") }, + { "TrackName", N_("Track Name"), "Text", xmpText, xmpExternal, N_("Track Name could be used to define titles for a segment.") }, + { "TrackNumber", N_("Track Number"), "Integer", xmpText, xmpExternal, N_("Track Number.") }, + { "TrackVolume", N_("Track Volume"), "Rational", xmpText, xmpExternal, N_("A 16-bit fixed-point number that specifies how loud to play this track's sound. A value of 1.0 indicates full volume.") }, + { "TranslateCodec", N_("Chapter Translate Codec"), "Text", xmpText, xmpExternal, N_("Chapter Translate Codec information. Usually used in Matroska file type.") }, + { "UnknownInfo", N_("Unknown Information"), "Text", xmpText, xmpExternal, N_("Unknown / Unregistered Metadata Tags and their values.") }, + { "UnknownInfo2", N_("Unknown Information"), "Text", xmpText, xmpExternal, N_("Unknown / Unregistered Metadata Tags and their values.") }, + { "URL", N_("Video URL"), "Text", xmpText, xmpExternal, N_("A C string that specifies a URL. There may be additional data after the C string.") }, + { "URN", N_("Video URN"), "Text", xmpText, xmpExternal, N_("A C string that specifies a URN. There may be additional data after the C string.") }, + { "VariProgram", N_("Vari Program"), "Text", xmpText, xmpExternal, N_("Software settings used to generate / create Video data.") }, + { "VegasVersionMajor", N_("Vegas Version Major"), "Text", xmpText, xmpExternal, N_("Vegas Version Major.") }, + { "VegasVersionMinor", N_("Vegas Version Minor"), "Text", xmpText, xmpExternal, N_("Vegas Version Minor.") }, + { "Vendor", N_("Vendor"), "Text", xmpText, xmpExternal, N_("The developer of the compressor that generated the compressed data.") }, + { "VendorID", N_("Vendor ID"), "Text", xmpText, xmpExternal, N_("A 32-bit integer that specifies the developer of the compressor that generated the compressed data. Often this field contains 'appl' to indicate Apple Computer, Inc.") }, + { "VideoQuality", N_("Video Quality"), "Integer", xmpText, xmpExternal, N_("Video Stream Quality") }, + { "VideoSampleSize", N_("Video Sample Size"), "Integer", xmpText, xmpExternal, N_("Video Stream Sample Size") }, + { "VideoScanType", N_("Video Scan Type"), "Text", xmpText, xmpExternal, N_("Video Scan Type, it can be Progressive or Interlaced") }, + { "WatermarkURL", N_("Watermark URL"), "Text", xmpText, xmpExternal, N_("A C string that specifies a Watermark URL.") }, + { "WhiteBalance", N_("White Balance"), "Closed Choice Text", xmpText, xmpExternal, N_("\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, Tungsten, " + "Fluorescent, Flash, Custom") }, + { "WhiteBalanceFineTune", N_("White Balance Fine Tune"), "Integer", xmpText, xmpExternal, N_("White Balance Fine Tune.") }, + { "Width", N_("Video Width"), "Integer", xmpText, xmpExternal, N_("Video width in pixels") }, + { "WindowLocation", N_("Window Location"), "Text", xmpText, xmpExternal, N_("Information about the Window Location.") }, + { "WorldTime", N_("World Time"), "Integer", xmpText, xmpExternal, N_("World Time") }, + { "WrittenBy", N_("Written By"), "Text", xmpText, xmpExternal, N_("Written By, i.e. name of person or organization.") }, + { "WritingApp", N_("Writing App"), "Text", xmpText, xmpExternal, N_("Contains the name of the application used to create the file (like \"mkvmerge 0.8.1\")") }, + { "XResolution", N_("X Resolution"), "Rational", xmpText, xmpInternal, N_("Horizontal resolution in pixels per unit.") }, + { "Year", N_("Year"), "Integer", xmpText, xmpExternal, N_("Year in which the video was made.") }, + { "YResolution", N_("Y Resolution"), "Rational", xmpText, xmpInternal, N_("Vertical resolution in pixels per unit.") }, + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpAudioInfo[] = { + { "AvgBytePerSec", N_("Average Bytes Per Second"), "Integer", xmpText, xmpExternal, N_("Average Bytes Per Second found in audio stream") }, + { "Balance", N_("Balance"), "Integer", xmpText, xmpExternal, N_("Indicates the left-right balance of the audio") }, + { "BitsPerSample", N_("Bits Per Sample/ Bit Rate"), "Integer", xmpText, xmpExternal, N_("Bits per test sample") }, + { "ChannelType", N_("Audio Channel Type"), "Integers", xmpText, xmpExternal, N_("The audio channel type. One of: Mono, Stereo, 5.1, 7.1.") }, + { "Codec", N_("Audio Codec"), "Text", xmpText, xmpExternal, N_("Codec used for Audio Encoding/Decoding") }, + { "CodecDecodeAll", N_("Audio Codec Decode Info"), "Text", xmpText, xmpExternal, N_("Contains information the audio codec decode all, i.e. Enabled/Disabled") }, + { "CodecDescription", N_("Audio Codec Description"), "Text", xmpText, xmpExternal, N_("Contains description the codec.") }, + { "CodecDownloadUrl", N_("Audio Codec Download URL"), "Text", xmpText, xmpExternal, N_("Audio Codec Download URL.") }, + { "CodecInfo", N_("Audio Codec Information"), "Text", xmpText, xmpExternal, N_("Contains information the codec needs before decoding can be started. An example is the Vorbis initialization packets for Vorbis audio.") }, + { "CodecSettings", N_("Audio Codec Settings"), "Text", xmpText, xmpExternal, N_("Contains settings the codec needs before decoding can be started.") }, + { "Compressor", N_("Audio Compressor"), "Text", xmpText, xmpExternal, N_("The audio compression used. For example, MP3.") }, + { "DefaultDuration", N_("Audio Default Duration"), "Text", xmpText, xmpExternal, N_("The number of micro seconds an audio chunk plays.") }, + { "DefaultStream", N_("Audio Default Stream"), "Text", xmpText, xmpExternal, N_("Audio Stream that would be played by default.") }, + { "DefaultOn", N_("Audio Track Default On"), "Text", xmpText, xmpExternal, N_("Audio Track Default On , i.e. Enabled/Disabled") }, + { "Enabled", N_("Audio Track Enabled"), "Text", xmpText, xmpExternal, N_("Status of Audio Track, i.e. Enabled/Disabled") }, + { "Format", N_("Audio Format"), "Text", xmpText, xmpExternal, N_("A four-character code that identifies the format of the audio.") }, + { "HandlerClass", N_("Handler Class"), "Text", xmpText, xmpExternal, N_("A four-character code that identifies the type of the handler. Only two values are valid for this field: 'mhlr' for media handlers and 'dhlr' for data handlers.") }, + { "HandlerDescription", N_("Handler Description"), "Text", xmpText, xmpExternal, N_("A (counted) string that specifies the name of the component-that is, the media handler used when this media was created..") }, + { "HandlerType", N_("Handler Type"), "Text", xmpText, xmpExternal, N_("A four-character code that identifies the type of the media handler or data handler.") }, + { "HandlerVendorID", N_("Handler Vendor ID"), "Text", xmpText, xmpExternal, N_("Component manufacturer.") }, + { "MediaCreateDate", N_("Media Track Create Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the media header was created.") }, + { "MediaDuration", N_("Media Track Duration"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the duration of this media (in the movie's time coordinate system).") }, + { "MediaHeaderVersion", N_("Media Header Version"), "Text", xmpText, xmpExternal, N_("A 1-byte specification of the version of this media header") }, + { "MediaLangCode", N_("Media Language Code"), "Integer", xmpText, xmpExternal, N_("A 16-bit integer that specifies the language code for this media.") }, + { "MediaModifyDate", N_("Media Track Modify Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the media header was last modified.") }, + { "MediaTimeScale", N_("Media Time Scale"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the time scale for this media-that is, the number of time units that pass per second in its time coordinate system." ) }, + { "OutputSampleRate", N_("Output Audio Sample Rate"), "Integer", xmpText, xmpExternal, N_("The output audio sample rate. Can be any value, but commonly 32000, 41100, or 48000.") }, + { "SampleCount", N_("Audio Sample Count"), "Integer", xmpText, xmpExternal, N_("Sample taken for Analyzing Audio Stream") }, + { "SampleRate", N_("Audio Sample Rate"), "Integer", xmpText, xmpExternal, N_("The audio sample rate. Can be any value, but commonly 32000, 41100, or 48000.") }, + { "SampleType", N_("Audio Sample Type"), "closed Choice of Text", xmpText, xmpExternal, N_("The audio sample type. One of: 8Int, 16Int, 32Int, 32Float.") }, + { "SchemeTitle", N_("Sound Scheme Title"), "Text", xmpText, xmpExternal, N_("Sound Scheme Title.") }, + { "TimeOffset", N_("Time Offset"), "Integer", xmpText, xmpExternal, N_("Specifies the presentation time offset of the stream in 100-nanosecond units. This value shall be equal to the send time of the first interleaved packet in the data section.") }, + { "TrackCreateDate", N_("Audio Track Create Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the track header was created.") }, + { "TrackDuration", N_("Audio Track Duration"), "Integer", xmpText, xmpExternal, N_("A time value that indicates the duration of this track (in the movie's time coordinate system).") }, + { "TrackForced", N_("Audio Track Forced"), "Text", xmpText, xmpExternal, N_("Audio Track Forced , i.e. Enabled/Disabled") }, + { "TrackID", N_("Track ID"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that uniquely identifies the track. The value 0 cannot be used.") }, + { "TrackHeaderVersion", N_("Track Header Version"), "Text", xmpText, xmpExternal, N_("A 1-byte specification of the version of this track header") }, + { "TrackLacing", N_("Audio Track Lacing"), "Text", xmpText, xmpExternal, N_("Audio Track Lacing , i.e. Enabled/Disabled") }, + { "TrackLang", N_("Track Language"), "Text", xmpText, xmpExternal, N_("The Language in which a particular stream is recorded in.") }, + { "TrackLayer", N_("Audio Track Layer"), "Integer", xmpText, xmpExternal, N_("A 16-bit integer that indicates this track's spatial priority in its movie. The QuickTime Movie" + "Toolbox uses this value to determine how tracks overlay one another. Tracks with lower layer" + "values are displayed in front of tracks with higher layer values.") }, + { "TrackModifyDate", N_("Audio Track Modify Date"), "Integer", xmpText, xmpExternal, N_("A 32-bit integer that indicates (in seconds since midnight, January 1, 1904) when the track header was last modified.") }, + { "TrackVolume", N_("Track Volume"), "Rational", xmpText, xmpExternal, N_("A 16-bit fixed-point number that specifies how loud to play this track's sound. A value of 1.0 indicates full volume.") }, + { "URL", N_("Audio URL"), "Text", xmpText, xmpExternal, N_("A C string that specifies a URL. There may be additional data after the C string.") }, + { "URN", N_("Audio URN"), "Text", xmpText, xmpExternal, N_("A C string that specifies a URN. There may be additional data after the C string.") }, + { "VendorID", N_("Vendor ID"), "Text", xmpText, xmpExternal, N_("A 32-bit integer that specifies the developer of the compressor that generated the compressed data. Often this field contains 'appl' to indicate Apple Computer, Inc.") }, + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpDctermsInfo[] = { + // dcterms properties used by DwC under the Record Class. + { "type", N_("Type"), "bag open Choice", xmpBag, xmpExternal, N_("The nature or genre of the resource.") }, + { "modified", N_("Date Modified"), "seq Date", xmpSeq, xmpExternal, N_("Date on which the resource was changed.") }, + { "language", N_("Language"), "bag Locale", xmpBag, xmpExternal, N_("A language of the resource.") }, + { "license", N_("License"), "Lang Alt", langAlt, xmpExternal, N_("A legal document giving official permission to do something with the resource.") }, + { "rightsHolder", N_("Rights Holder"), "seq ProperName", xmpSeq, xmpExternal, N_("A person or organization owning or managing rights over the resource.") }, + { "accessRights", N_("Access Rights"), "Lang Alt", langAlt, xmpExternal, N_("Information about who can access the resource or an indication of its security status.") }, + { "bibliographicCitation", N_("Bibliographic Citation"), "Text", xmpText, xmpExternal, N_("A bibliographic reference for the resource.") }, + { "references", N_("References"), "bag Text", xmpBag, xmpExternal, N_("A related resource that is referenced, cited, or otherwise pointed to by the described resource.") }, + // Location Level Class + { "Location", N_("Location"), "Location", xmpText, xmpInternal, + N_("*Main structure* containing Darwin Core location based information."), + }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpDwCInfo[] = { + + // Record Level Class + { "Record", N_("Record"), "Record", xmpText, xmpInternal, + N_("*Main structure* containing record based information."), + }, + // Record Level Terms + { "institutionID", N_("Institution ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the institution having custody of the object(s) or information referred to in the record.") + }, + { "collectionID", N_("Collection ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the collection or dataset from which the record was derived. For physical specimens, the recommended best practice is to use the identifier in a collections registry such as the Biodiversity Collections Index (http://www.biodiversitycollectionsindex.org/).") + }, + { "institutionCode", N_("Institution Code"), "Text", xmpText, xmpExternal, + N_("The name (or acronym) in use by the institution having custody of the object(s) or information referred to in the record.") + }, + { "datasetID", N_("Dataset ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the set of data. May be a global unique identifier or an identifier specific to a collection or institution.") + }, + { "collectionCode", N_("Collection Code"), "Text", xmpText, xmpExternal, + N_("The name, acronym, coden, or initialism identifying the collection or data set from which the record was derived.") + }, + { "datasetName", N_("Dataset Name"), "Text", xmpText, xmpExternal, + N_("The name identifying the data set from which the record was derived.") + }, + { "ownerInstitutionCode", N_("Owner Institution Code"), "Text", xmpText, xmpExternal, + N_("The name (or acronym) in use by the institution having ownership of the object(s) or information referred to in the record.") + }, + { "basisOfRecord", N_("Basis Of Record"), "Text", xmpText, xmpExternal, + N_("The specific nature of the data record - a subtype of the type. Recommended best practice is to use a controlled vocabulary such as the Darwin Core Type Vocabulary (http://rs.tdwg.org/dwc/terms/type-vocabulary/index.htm).") + }, + { "informationWithheld", N_("Information Withheld"), "Text", xmpText, xmpExternal, + N_("Additional information that exists, but that has not been shared in the given record.") + }, + { "dataGeneralizations", N_("Data Generalizations"), "Text", xmpText, xmpExternal, + N_("Actions taken to make the shared data less specific or complete than in its original form. Suggests that alternative data of higher quality may be available on request.") + }, + { "dynamicProperties", N_("Dynamic Properties"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of additional measurements, facts, characteristics, or assertions about the record. Meant to provide a mechanism for structured content such as key-value pairs.") + }, + + // Occurrence Level Class + { "Occurrence", N_("Occurrence"), "Occurrence", xmpText, xmpInternal, + N_("*Main structure* containing occurrence based information."), + }, + // Occurrence Level Terms + { "occurrenceID", N_("Occurrence ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the Occurrence (as opposed to a particular digital record of the occurrence). In the absence of a persistent global unique identifier, construct one from a combination of identifiers in the record that will most closely make the occurrenceID globally unique.") + }, + { "catalogNumber", N_("Catalog Number"), "Text", xmpText, xmpExternal, + N_("An identifier (preferably unique) for the record within the data set or collection.") + }, + { "occurrenceDetails", N_("Occurrence Details"), "Text", xmpText, xmpExternal, + N_("Depreciated. Details about the Occurrence.") + }, + { "occurrenceRemarks", N_("Occurrence Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the Occurrence.") + }, + { "recordNumber", N_("Record Number"), "Text", xmpText, xmpExternal, + N_("An identifier given to the Occurrence at the time it was recorded. Often serves as a link between field notes and an Occurrence record, such as a specimen collector's number.") + }, + { "recordedBy", N_("Recorded By"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of names of people, groups, or organizations responsible for recording the original Occurrence. The primary collector or observer, especially one who applies a personal identifier (recordNumber), should be listed first.") + }, + { "individualID", N_("Individual ID"), "Text", xmpText, xmpExternal, + N_("Depreciated. An identifier for an individual or named group of individual organisms represented in the Occurrence. Meant to accommodate resampling of the same individual or group for monitoring purposes. May be a global unique identifier or an identifier specific to a data set.") + }, + { "individualCount", N_("Individual Count"), "Integer", xmpText, xmpExternal, + N_("The number of individuals represented present at the time of the Occurrence.") + }, + { "organismQuantity", N_("Organism Quantity"), "Text", xmpText, xmpExternal, + N_("A number or enumeration value for the quantity of organisms.") + }, + { "organismQuantityType", N_("Organism Quantity Type"), "Text", xmpText, xmpExternal, + N_("The type of quantification system used for the quantity of organisms.") + }, + { "sex", N_("Sex"), "Text", xmpText, xmpExternal, + N_("The sex of the biological individual(s) represented in the Occurrence. Recommended best practice is to use a controlled vocabulary.") + }, + { "lifeStage", N_("Life Stage"), "Text", xmpText, xmpExternal, + N_("The age class or life stage of the biological individual(s) at the time the Occurrence was recorded. Recommended best practice is to use a controlled vocabulary.") + }, + { "reproductiveCondition", N_("Reproductive Condition"), "Text", xmpText, xmpExternal, + N_("The reproductive condition of the biological individual(s) represented in the Occurrence. Recommended best practice is to use a controlled vocabulary.") + }, + { "behavior", N_("Behavior"), "Text", xmpText, xmpExternal, + N_("A description of the behavior shown by the subject at the time the Occurrence was recorded. Recommended best practice is to use a controlled vocabulary.") + }, + { "establishmentMeans", N_("Establishment Means"), "Text", xmpText, xmpExternal, + N_("The process by which the biological individual(s) represented in the Occurrence became established at the location. Recommended best practice is to use a controlled vocabulary.") + }, + { "occurrenceStatus", N_("Occurrence Status"), "Text", xmpText, xmpExternal, + N_("A statement about the presence or absence of a Taxon at a Location. Recommended best practice is to use a controlled vocabulary.") + }, + { "preparations", N_("Preparations"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of preparations and preservation methods for a specimen.") + }, + { "disposition", N_("Disposition"), "Text", xmpText, xmpExternal, + N_("The current state of a specimen with respect to the collection identified in collectionCode or collectionID. Recommended best practice is to use a controlled vocabulary.") + }, + { "otherCatalogNumbers", N_("Other Catalog Numbers"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of previous or alternate fully qualified catalog numbers or other human-used identifiers for the same Occurrence, whether in the current or any other data set or collection.") + }, + { "previousIdentifications", N_("Previous Identifications"), "bag Text", xmpBag, xmpExternal, + N_("Depreciated. A list (concatenated and separated) of previous assignments of names to the Occurrence.") + }, + { "associatedMedia", N_("Associated Media"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of identifiers (publication, global unique identifier, URI) of media associated with the Occurrence.") + }, + { "associatedReferences", N_("Associated References"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of identifiers (publication, bibliographic reference, global unique identifier, URI) of literature associated with the Occurrence.") + }, + { "associatedOccurrences", N_("Associated Occurrences"), "bag Text", xmpBag, xmpExternal, + N_("Depreciated. A list (concatenated and separated) of identifiers of other Occurrence records and their associations to this Occurrence.") + }, + { "associatedSequences", N_("Associated Sequences"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of identifiers (publication, global unique identifier, URI) of genetic sequence information associated with the Occurrence.") + }, + { "associatedTaxa", N_("Associated Taxa"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of identifiers or names of taxa and their associations with the Occurrence.") + }, + + // Organism Level Class + { "Organism", N_("Organism"), "Organism", xmpText, xmpInternal, + N_("*Main structure* containing organism based information."), + }, + // Organism Level Terms + { "organismID", N_("Organism ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the Organism instance (as opposed to a particular digital record of the Organism). May be a globally unique identifier or an identifier specific to the data set.") + }, + { "organismName", N_("Organism Name"), "Text", xmpText, xmpExternal, + N_("A textual name or label assigned to an Organism instance.") + }, + { "organismScope", N_("Organism Scope"), "Text", xmpText, xmpExternal, + N_("A description of the kind of Organism instance. Can be used to indicate whether the Organism instance represents a discrete organism or if it represents a particular type of aggregation. Recommended best practice is to use a controlled vocabulary.") + }, + { "associatedOccurrences", N_("Organism Associated Occurrences"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated with a vertical bar ' | ') of identifiers of other Occurrence records and their associations to this Occurrence.") + }, + { "associatedOrganisms", N_("Associated Organisms"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated with a vertical bar ' | ' ) of identifiers of other Organisms and their associations to this Organism.") + }, + { "previousIdentifications", N_("Previous Identifications"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated with a vertical bar ' | ' ) of previous assignments of names to the Organism.") + }, + { "organismRemarks", N_("Organism Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the Organism instance.") + }, + + // Material Sample Level Class + { "MaterialSample", N_("Material Sample"), "MaterialSample", xmpText, xmpInternal, + N_("*Main structure* containing material sample based information."), + }, + { "LivingSpecimen", N_("Living Specimen"), "LivingSpecimen", xmpText, xmpInternal, + N_("*Main structure* containing living specimen based information. A specimen that is alive."), + }, + { "PreservedSpecimen", N_("Preserved Specimen"), "PreservedSpecimen", xmpText, xmpInternal, + N_("*Main structure* containing preserved specimen based information. A specimen that has been preserved."), + }, + { "FossilSpecimen", N_("Fossil Specimen"), "FossilSpecimen", xmpText, xmpInternal, + N_("*Main structure* containing fossil specimen based information. A preserved specimen that is a fossil."), + }, + // Material Sample Level Terms + { "materialSampleID", N_("Material Sample ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the MaterialSample (as opposed to a particular digital record of the material sample). In the absence of a persistent global unique identifier, construct one from a combination of identifiers in the record that will most closely make the materialSampleID globally unique.") + }, + + // Event Level Class + { "Event", N_("Event"), "Event", xmpText, xmpInternal, + N_("*Main structure* containing event based information."), + }, + { "HumanObservation", N_("Human Observation"), "HumanObservation", xmpText, xmpInternal, + N_("*Main structure* containing human observation based information."), + }, + { "MachineObservation", N_("Machine Observation"), "MachineObservation", xmpText, xmpInternal, + N_("*Main structure* containing machine observation based information."), + }, + // Event Level Terms + { "eventID", N_("Event ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the set of information associated with an Event (something that occurs at a place and time). May be a global unique identifier or an identifier specific to the data set.") + }, + { "parentEventID", N_("Parent Event ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the broader Event that groups this and potentially other Events.") + }, + { "eventDate", N_("Event Date"), "Date", xmpText, xmpExternal, + N_("The date-time or interval during which an Event occurred. For occurrences, this is the date-time when the event was recorded. Not suitable for a time in a geological context. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "earliestDate", N_("Event Earliest Date"), "Date", xmpText, xmpExternal, + N_("Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which an Event started. For occurrences, this is the date-time when the event was recorded. Not suitable for a time in a geological context. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "latestDate", N_("Event Latest Date"), "Date", xmpText, xmpExternal, + N_("Depreciated. (Child of Xmp.dwc.Event) The date-time or interval during which an Event ended. For occurrences, this is the date-time when the event was recorded. Not suitable for a time in a geological context. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "eventTime", N_("Event Time"), "Date", xmpText, xmpExternal, + N_("The time or interval during which an Event occurred. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "startDayOfYear", N_("Start Day Of Year"), "Integer", xmpText, xmpExternal, + N_("The earliest ordinal day of the year on which the Event occurred (1 for January 1, 365 for December 31, except in a leap year, in which case it is 366).") + }, + { "endDayOfYear", N_("End Day Of Year"), "Integer", xmpText, xmpExternal, + N_("The latest ordinal day of the year on which the Event occurred (1 for January 1, 365 for December 31, except in a leap year, in which case it is 366).") + }, + { "year", N_("Year"), "Integer", xmpText, xmpExternal, + N_("The four-digit year in which the Event occurred, according to the Common Era Calendar.") + }, + { "month", N_("Month"), "Integer", xmpText, xmpExternal, + N_("The ordinal month in which the Event occurred.") + }, + { "day", N_("Day"), "Integer", xmpText, xmpExternal, + N_("The integer day of the month on which the Event occurred.") + }, + { "verbatimEventDate", N_("Verbatim Event Date"), "Text", xmpText, xmpExternal, + N_("The verbatim original representation of the date and time information for an Event.") + }, + { "habitat", N_("Habitat"), "Text", xmpText, xmpExternal, + N_("A category or description of the habitat in which the Event occurred.") + }, + { "samplingProtocol", N_("Sampling Protocol"), "Text", xmpText, xmpExternal, + N_("The name of, reference to, or description of the method or protocol used during an Event.") + }, + { "samplingEffort", N_("Sampling Effort"), "Text", xmpText, xmpExternal, + N_("The amount of effort expended during an Event.") + }, + { "sampleSizeValue", N_("Sampling Size Value"), "Text", xmpText, xmpExternal, + N_("A numeric value for a measurement of the size (time duration, length, area, or volume) of a sample in a sampling event.") + }, + { "sampleSizeUnit", N_("Sampling Size Unit"), "Text", xmpText, xmpExternal, + N_("The unit of measurement of the size (time duration, length, area, or volume) of a sample in a sampling event.") + }, + { "fieldNumber", N_("Field Number"), "Text", xmpText, xmpExternal, + N_("An identifier given to the event in the field. Often serves as a link between field notes and the Event.") + }, + { "fieldNotes", N_("Field Notes"), "Text", xmpText, xmpExternal, + N_("One of (a) an indicator of the existence of, (b) a reference to (publication, URI), or (c) the text of notes taken in the field about the Event.") + }, + { "eventRemarks", N_("Event Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the Event.") + }, + + //Location Level Class + { "dctermsLocation", N_("Location Class"), "Location", xmpText, xmpInternal, + N_("Depreciated. Use Xmp.dcterms.Location instead. *Main structure* containing location based information."), + }, + //Location Level Terms + { "locationID", N_("Location ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the set of location information (data associated with Location). May be a global unique identifier or an identifier specific to the data set.") + }, + { "higherGeographyID", N_("Higher Geography ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the geographic region within which the Location occurred. Recommended best practice is to use an persistent identifier from a controlled vocabulary such as the Getty Thesaurus of Geographic Names.") + }, + { "higherGeography", N_("Higher Geography"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of geographic names less specific than the information captured in the locality term.") + }, + { "continent", N_("Continent"), "Text", xmpText, xmpExternal, + N_("The name of the continent in which the Location occurs. Recommended best practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names or the ISO 3166 Continent code.") + }, + { "waterBody", N_("Water Body"), "Text", xmpText, xmpExternal, + N_("The name of the water body in which the Location occurs. Recommended best practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names.") + }, + { "islandGroup", N_("Island Group"), "Text", xmpText, xmpExternal, + N_("The name of the island group in which the Location occurs. Recommended best practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names.") + }, + { "island", N_("Island"), "Text", xmpText, xmpExternal, + N_("The name of the island on or near which the Location occurs. Recommended best practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names.") + }, + { "country", N_("Country"), "Text", xmpText, xmpExternal, + N_("The name of the country or major administrative unit in which the Location occurs. Recommended best practice is to use a controlled vocabulary such as the Getty Thesaurus of Geographic Names.") + }, + { "countryCode", N_("Country Code"), "Text", xmpText, xmpExternal, + N_("The standard code for the country in which the Location occurs. Recommended best practice is to use ISO 3166-1-alpha-2 country codes.") + }, + { "stateProvince", N_("State Province"), "Text", xmpText, xmpExternal, + N_("The name of the next smaller administrative region than country (state, province, canton, department, region, etc.) in which the Location occurs.") + }, + { "county", N_("County"), "Text", xmpText, xmpExternal, + N_("The full, unabbreviated name of the next smaller administrative region than stateProvince (county, shire, department, etc.) in which the Location occurs.") + }, + { "municipality", N_("Municipality"), "Text", xmpText, xmpExternal, + N_("The full, unabbreviated name of the next smaller administrative region than county (city, municipality, etc.) in which the Location occurs. Do not use this term for a nearby named place that does not contain the actual location.") + }, + { "locality", N_("Locality"), "Text", xmpText, xmpExternal, + N_("The specific description of the place. Less specific geographic information can be provided in other geographic terms (higherGeography, continent, country, stateProvince, county, municipality, waterBody, island, islandGroup). This term may contain information modified from the original to correct perceived errors or standardize the description.") + }, + { "verbatimLocality", N_("Verbatim Locality"), "Text", xmpText, xmpExternal, + N_("The original textual description of the place.") + }, + { "verbatimElevation", N_("Verbatim Elevation"), "Text", xmpText, xmpExternal, + N_("The original description of the elevation (altitude, usually above sea level) of the Location.") + }, + { "minimumElevationInMeters", N_("Minimum Elevation In Meters"), "Real", xmpText, xmpExternal, + N_("The lower limit of the range of elevation (altitude, usually above sea level), in meters.") + }, + { "maximumElevationInMeters", N_("Maximum Elevation In Meters"), "Real", xmpText, xmpExternal, + N_("The upper limit of the range of elevation (altitude, usually above sea level), in meters.") + }, + { "verbatimDepth", N_("Verbatim Depth"), "Text", xmpText, xmpExternal, + N_("The original description of the depth below the local surface.") + }, + { "minimumDepthInMeters", N_("Minimum Depth In Meters"), "Real", xmpText, xmpExternal, + N_("The lesser depth of a range of depth below the local surface, in meters.") + }, + { "maximumDepthInMeters", N_("Maximum Depth In Meters"), "Real", xmpText, xmpExternal, + N_("The greater depth of a range of depth below the local surface, in meters.") + }, + { "minimumDistanceAboveSurfaceInMeters", N_("Minimum Distance Above Surface In Meters"), "Real", xmpText, xmpExternal, + N_("The lesser distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.") + }, + { "maximumDistanceAboveSurfaceInMeters", N_("Maximum Distance Above Surface In Meters"), "Real", xmpText, xmpExternal, + N_("The greater distance in a range of distance from a reference surface in the vertical direction, in meters. Use positive values for locations above the surface, negative values for locations below. If depth measures are given, the reference surface is the location given by the depth, otherwise the reference surface is the location given by the elevation.") + }, + { "locationAccordingTo", N_("Location According To"), "Text", xmpText, xmpExternal, + N_("Information about the source of this Location information. Could be a publication (gazetteer), institution, or team of individuals.") + }, + { "locationRemarks", N_("Location Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the Location.") + }, + { "verbatimCoordinates", N_("Verbatim Coordinates"), "Text", xmpText, xmpExternal, + N_("The verbatim original spatial coordinates of the Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in verbatimSRS and the coordinate system should be stored in verbatimCoordinateSystem.") + }, + { "verbatimLatitude", N_("Verbatim Latitude"), "Text", xmpText, xmpExternal, + N_("The verbatim original latitude of the Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in verbatimSRS and the coordinate system should be stored in verbatimCoordinateSystem.") + }, + { "verbatimLongitude", N_("Verbatim Longitude"), "Text", xmpText, xmpExternal, + N_("The verbatim original longitude of the Location. The coordinate ellipsoid, geodeticDatum, or full Spatial Reference System (SRS) for these coordinates should be stored in verbatimSRS and the coordinate system should be stored in verbatimCoordinateSystem.") + }, + { "verbatimCoordinateSystem", N_("Verbatim Coordinate System"), "Text", xmpText, xmpExternal, + N_("The spatial coordinate system for the verbatimLatitude and verbatimLongitude or the verbatimCoordinates of the Location. Recommended best practice is to use a controlled vocabulary.") + }, + { "verbatimSRS", N_("Verbatim SRS"), "Text", xmpText, xmpExternal, + N_("The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which coordinates given in verbatimLatitude and verbatimLongitude, or verbatimCoordinates are based. Recommended best practice is use the EPSG code as a controlled vocabulary to provide an SRS, if known. Otherwise use a controlled vocabulary for the name or code of the geodetic datum, if known. Otherwise use a controlled vocabulary for the name or code of the ellipsoid, if known. If none of these is known, use the value \"unknown\".") + }, + { "decimalLatitude", N_("Decimal Latitude"), "Real", xmpText, xmpExternal, + N_("The geographic latitude (in decimal degrees, using the spatial reference system given in geodeticDatum) of the geographic center of a Location. Positive values are north of the Equator, negative values are south of it. Legal values lie between -90 and 90, inclusive.") + }, + { "decimalLongitude", N_("Decimal Longitude"), "Real", xmpText, xmpExternal, + N_("The geographic longitude (in decimal degrees, using the spatial reference system given in geodeticDatum) of the geographic center of a Location. Positive values are east of the Greenwich Meridian, negative values are west of it. Legal values lie between -180 and 180, inclusive.") + }, + { "geodeticDatum", N_("Geodetic Datum"), "Text", xmpText, xmpExternal, + N_("The ellipsoid, geodetic datum, or spatial reference system (SRS) upon which the geographic coordinates given in decimalLatitude and decimalLongitude as based. Recommended best practice is use the EPSG code as a controlled vocabulary to provide an SRS, if known. Otherwise use a controlled vocabulary for the name or code of the geodetic datum, if known. Otherwise use a controlled vocabulary for the name or code of the ellipsoid, if known. If none of these is known, use the value \"unknown\".") + }, + { "coordinateUncertaintyInMeters", N_("Coordinate Uncertainty In Meters"), "Real", xmpText, xmpExternal, + N_("The horizontal distance (in meters) from the given decimalLatitude and decimalLongitude describing the smallest circle containing the whole of the Location. Leave the value empty if the uncertainty is unknown, cannot be estimated, or is not applicable (because there are no coordinates). Zero is not a valid value for this term.") + }, + { "coordinatePrecision", N_("Coordinate Precision"), "Text", xmpText, xmpExternal, + N_("A decimal representation of the precision of the coordinates given in the decimalLatitude and decimalLongitude.") + }, + { "pointRadiusSpatialFit", N_("Point Radius Spatial Fit"), "Real", xmpText, xmpExternal, + N_("The ratio of the area of the point-radius (decimalLatitude, decimalLongitude, coordinateUncertaintyInMeters) to the area of the true (original, or most specific) spatial representation of the Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given point-radius does not completely contain the original representation. The pointRadiusSpatialFit is undefined (and should be left blank) if the original representation is a point without uncertainty and the given georeference is not that same point (without uncertainty). If both the original and the given georeference are the same point, the pointRadiusSpatialFit is 1.") + }, + { "footprintWKT", N_("Footprint WKT"), "Text", xmpText, xmpExternal, + N_("A Well-Known Text (WKT) representation of the shape (footprint, geometry) that defines the Location. A Location may have both a point-radius representation (see decimalLatitude) and a footprint representation, and they may differ from each other.") + }, + { "footprintSRS", N_("Footprint SRS"), "Text", xmpText, xmpExternal, + N_("A Well-Known Text (WKT) representation of the Spatial Reference System (SRS) for the footprintWKT of the Location. Do not use this term to describe the SRS of the decimalLatitude and decimalLongitude, even if it is the same as for the footprintWKT - use the geodeticDatum instead.") + }, + { "footprintSpatialFit", N_("Footprint Spatial Fit"), "Real", xmpText, xmpExternal, + N_("The ratio of the area of the footprint (footprintWKT) to the area of the true (original, or most specific) spatial representation of the Location. Legal values are 0, greater than or equal to 1, or undefined. A value of 1 is an exact match or 100% overlap. A value of 0 should be used if the given footprint does not completely contain the original representation. The footprintSpatialFit is undefined (and should be left blank) if the original representation is a point and the given georeference is not that same point. If both the original and the given georeference are the same point, the footprintSpatialFit is 1.") + }, + { "georeferencedBy", N_("Georeferenced By"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of names of people, groups, or organizations who determined the georeference (spatial representation) for the Location.") + }, + { "georeferencedDate", N_("Georeferenced Date"), "Date", xmpText, xmpExternal, + N_("The date on which the Location was georeferenced. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "georeferenceProtocol", N_("Georeference Protocol"), "Text", xmpText, xmpExternal, + N_("A description or reference to the methods used to determine the spatial footprint, coordinates, and uncertainties.") + }, + { "georeferenceSources", N_("Georeference Sources"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of maps, gazetteers, or other resources used to georeference the Location, described specifically enough to allow anyone in the future to use the same resources.") + }, + { "georeferenceVerificationStatus", N_("Georeference Verification Status"), "Text", xmpText, xmpExternal, + N_("A categorical description of the extent to which the georeference has been verified to represent the best possible spatial description. Recommended best practice is to use a controlled vocabulary.") + }, + { "georeferenceRemarks", N_("Georeference Remarks"), "Text", xmpText, xmpExternal, + N_("Notes or comments about the spatial description determination, explaining assumptions made in addition or opposition to the those formalized in the method referred to in georeferenceProtocol.") + }, + + // Geological Context Level Class + { "GeologicalContext", N_("Geological Context"), "GeologicalContext", xmpText, xmpInternal, + N_("*Main structure* containing geological context based information."), + }, + // Geological Context Level Terms + { "geologicalContextID", N_("Geological Context ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the set of information associated with a GeologicalContext (the location within a geological context, such as stratigraphy). May be a global unique identifier or an identifier specific to the data set.") + }, + { "earliestEonOrLowestEonothem", N_("Earliest Eon Or Lowest Eonothem"), "Text", xmpText, xmpExternal, + N_("The full name of the earliest possible geochronologic eon or lowest chrono-stratigraphic eonothem or the informal name (\"Precambrian\") attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "latestEonOrHighestEonothem", N_("Latest Eon Or Highest Eonothem"), "Text", xmpText, xmpExternal, + N_("The full name of the latest possible geochronologic eon or highest chrono-stratigraphic eonothem or the informal name (\"Precambrian\") attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "earliestEraOrLowestErathem", N_("Earliest Era Or Lowest Erathem"), "Text", xmpText, xmpExternal, + N_("The full name of the earliest possible geochronologic era or lowest chronostratigraphic erathem attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "latestEraOrHighestErathem", N_("Latest Era Or Highest Erathem"), "Text", xmpText, xmpExternal, + N_("The full name of the latest possible geochronologic era or highest chronostratigraphic erathem attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "earliestPeriodOrLowestSystem", N_("Earliest Period Or Lowest System"), "Text", xmpText, xmpExternal, + N_("The full name of the earliest possible geochronologic period or lowest chronostratigraphic system attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "latestPeriodOrHighestSystem", N_("Latest Period Or Highest System"), "Text", xmpText, xmpExternal, + N_("The full name of the latest possible geochronologic period or highest chronostratigraphic system attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "earliestEpochOrLowestSeries", N_("Earliest Epoch Or Lowest Series"), "Text", xmpText, xmpExternal, + N_("The full name of the earliest possible geochronologic epoch or lowest chronostratigraphic series attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "latestEpochOrHighestSeries", N_("Latest Epoch Or Highest Series"), "Text", xmpText, xmpExternal, + N_("The full name of the latest possible geochronologic epoch or highest chronostratigraphic series attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "earliestAgeOrLowestStage", N_("Earliest Age Or Lowest Stage"), "Text", xmpText, xmpExternal, + N_("The full name of the earliest possible geochronologic age or lowest chronostratigraphic stage attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "latestAgeOrHighestStage", N_("Latest Age Or Highest Stage"), "Text", xmpText, xmpExternal, + N_("The full name of the latest possible geochronologic age or highest chronostratigraphic stage attributable to the stratigraphic horizon from which the cataloged item was collected.") + }, + { "lowestBiostratigraphicZone", N_("Lowest Biostratigraphic Zone"), "Text", xmpText, xmpExternal, + N_("The full name of the lowest possible geological biostratigraphic zone of the stratigraphic horizon from which the cataloged item was collected.") + }, + { "highestBiostratigraphicZone", N_("Highest Biostratigraphic Zone"), "Text", xmpText, xmpExternal, + N_("The full name of the highest possible geological biostratigraphic zone of the stratigraphic horizon from which the cataloged item was collected.") + }, + { "lithostratigraphicTerms", N_("Lithostratigraphic Terms"), "Text", xmpText, xmpExternal, + N_("The combination of all litho-stratigraphic names for the rock from which the cataloged item was collected.") + }, + { "group", N_("Group"), "Text", xmpText, xmpExternal, + N_("The full name of the lithostratigraphic group from which the cataloged item was collected.") + }, + { "formation", N_("Formation"), "Text", xmpText, xmpExternal, + N_("The full name of the lithostratigraphic formation from which the cataloged item was collected.") + }, + { "member", N_("Member"), "Text", xmpText, xmpExternal, + N_("The full name of the lithostratigraphic member from which the cataloged item was collected.") + }, + { "bed", N_("Bed"), "Text", xmpText, xmpExternal, + N_("The full name of the lithostratigraphic bed from which the cataloged item was collected.") + }, + + // Identification Level Class + { "Identification", N_("Identification"), "Identification", xmpText, xmpInternal, + N_("*Main structure* containing identification based information."), + }, + // Identification Level Terms + { "identificationID", N_("Identification ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the Identification (the body of information associated with the assignment of a scientific name). May be a global unique identifier or an identifier specific to the data set.") + }, + { "identifiedBy", N_("Identified By"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of names of people, groups, or organizations who assigned the Taxon to the subject.") + }, + { "dateIdentified", N_("Date Identified"), "Date", xmpText, xmpExternal, + N_("The date on which the subject was identified as representing the Taxon. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "identificationReferences", N_("Identification References"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of references (publication, global unique identifier, URI) used in the Identification.") + }, + { "identificationVerificationStatus", N_("Identification Verification Status"), "Text", xmpText, xmpExternal, + N_("A categorical indicator of the extent to which the taxonomic identification has been verified to be correct. Recommended best practice is to use a controlled vocabulary such as that used in HISPID/ABCD.") + }, + { "identificationRemarks", N_("Identification Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the Identification.") + }, + { "identificationQualifier", N_("Identification Qualifier"), "Text", xmpText, xmpExternal, + N_("A brief phrase or a standard term (\"cf.\" \"aff.\") to express the determiner's doubts about the Identification.") + }, + { "typeStatus", N_("Type Status"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of nomenclatural types (type status, typified scientific name, publication) applied to the subject.") + }, + + // Taxon Level Class + { "Taxon", N_("Taxon"), "Taxon", xmpBag, xmpInternal, + N_("*Main structure* containing taxonomic based information."), + }, + // Taxon Level Terms + { "taxonID", N_("Taxon ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the set of taxon information (data associated with the Taxon class). May be a global unique identifier or an identifier specific to the data set.") + }, + { "scientificNameID", N_("Scientific Name ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the nomenclatural (not taxonomic) details of a scientific name.") + }, + { "acceptedNameUsageID", N_("Accepted Name Usage ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the name usage (documented meaning of the name according to a source) of the currently valid (zoological) or accepted (botanical) taxon.") + }, + { "parentNameUsageID", N_("Parent Name Usage ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the name usage (documented meaning of the name according to a source) of the direct, most proximate higher-rank parent taxon (in a classification) of the most specific element of the scientificName.") + }, + { "originalNameUsageID", N_("Original Name Usage ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the name usage (documented meaning of the name according to a source) in which the terminal element of the scientificName was originally established under the rules of the associated nomenclaturalCode.") + }, + { "nameAccordingToID", N_("Name According To ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the source in which the specific taxon concept circumscription is defined or implied. See nameAccordingTo.") + }, + { "namePublishedInID", N_("Name Published In ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the publication in which the scientificName was originally established under the rules of the associated nomenclaturalCode.") + }, + { "taxonConceptID", N_("Taxon Concept ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the taxonomic concept to which the record refers - not for the nomenclatural details of a taxon.") + }, + { "scientificName", N_("Scientific Name"), "Text", xmpText, xmpExternal, + N_("The full scientific name, with authorship and date information if known. When forming part of an Identification, this should be the name in lowest level taxonomic rank that can be determined. This term should not contain identification qualifications, which should instead be supplied in the IdentificationQualifier term.") + }, + { "acceptedNameUsage", N_("Accepted Name Usage"), "Text", xmpText, xmpExternal, + N_("The full name, with authorship and date information if known, of the currently valid (zoological) or accepted (botanical) taxon.") + }, + { "parentNameUsage", N_("Parent Name Usage"), "Text", xmpText, xmpExternal, + N_("The full name, with authorship and date information if known, of the direct, most proximate higher-rank parent taxon (in a classification) of the most specific element of the scientificName.") + }, + { "originalNameUsage", N_("Original Name Usage"), "Text", xmpText, xmpExternal, + N_("The taxon name, with authorship and date information if known, as it originally appeared when first established under the rules of the associated nomenclaturalCode. The basionym (botany) or basonym (bacteriology) of the scientificName or the senior/earlier homonym for replaced names.") + }, + { "nameAccordingTo", N_("Name According To"), "Text", xmpText, xmpExternal, + N_("The reference to the source in which the specific taxon concept circumscription is defined or implied - traditionally signified by the Latin \"sensu\" or \"sec.\" (from secundum, meaning \"according to\"). For taxa that result from identifications, a reference to the keys, monographs, experts and other sources should be given.") + }, + { "namePublishedIn", N_("Name Published In"), "Text", xmpText, xmpExternal, + N_("A reference for the publication in which the scientificName was originally established under the rules of the associated nomenclaturalCode.") + }, + { "namePublishedInYear", N_("Name Published In Year"), "Text", xmpText, xmpExternal, + N_("The four-digit year in which the scientificName was published.") + }, + { "higherClassification", N_("Higher Classification"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of taxa names terminating at the rank immediately superior to the taxon referenced in the taxon record. Recommended best practice is to order the list starting with the highest rank and separating the names for each rank with a semi-colon ;") + }, + { "kingdom", N_("Kingdom"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the kingdom in which the taxon is classified.") + }, + { "phylum", N_("Phylum"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the phylum or division in which the taxon is classified.") + }, + { "class", N_("Class"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the class in which the taxon is classified.") + }, + { "order", N_("Order"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the order in which the taxon is classified.") + }, + { "family", N_("Family"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the family in which the taxon is classified.") + }, + { "genus", N_("Genus"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the genus in which the taxon is classified.") + }, + { "subgenus", N_("Subgenus"), "Text", xmpText, xmpExternal, + N_("The full scientific name of the subgenus in which the taxon is classified. Values should include the genus to avoid homonym confusion.") + }, + { "specificEpithet", N_("Specific Epithet"), "Text", xmpText, xmpExternal, + N_("The name of the first or species epithet of the scientificName.") + }, + { "infraspecificEpithet", N_("Infraspecific Epithet"), "Text", xmpText, xmpExternal, + N_("The name of the lowest or terminal infraspecific epithet of the scientificName, excluding any rank designation.") + }, + { "taxonRank", N_("Taxon Rank"), "Text", xmpText, xmpExternal, + N_("The taxonomic rank of the most specific name in the scientificName. Recommended best practice is to use a controlled vocabulary.") + }, + { "verbatimTaxonRank", N_("Verbatim Taxon Rank"), "Text", xmpText, xmpExternal, + N_("The taxonomic rank of the most specific name in the scientificName as it appears in the original record.") + }, + { "scientificNameAuthorship", N_("Scientific Name Authorship"), "Text", xmpText, xmpExternal, + N_("The authorship information for the scientificName formatted according to the conventions of the applicable nomenclaturalCode.") + }, + { "vernacularName", N_("Vernacular Name"), "Lang Alt", langAlt, xmpExternal, + N_("A common or vernacular name.") + }, + { "nomenclaturalCode", N_("Nomenclatural Code"), "Text", xmpText, xmpExternal, + N_("The nomenclatural code (or codes in the case of an ambiregnal name) under which the scientificName is constructed. Recommended best practice is to use a controlled vocabulary.") + }, + { "taxonomicStatus", N_("Taxonomic Status"), "Text", xmpText, xmpExternal, + N_("The status of the use of the scientificName as a label for a taxon. Requires taxonomic opinion to define the scope of a taxon. Rules of priority then are used to define the taxonomic status of the nomenclature contained in that scope, combined with the experts opinion. It must be linked to a specific taxonomic reference that defines the concept. Recommended best practice is to use a controlled vocabulary.") + }, + { "nomenclaturalStatus", N_("Nomenclatural Status"), "Text", xmpText, xmpExternal, + N_("The status related to the original publication of the name and its conformance to the relevant rules of nomenclature. It is based essentially on an algorithm according to the business rules of the code. It requires no taxonomic opinion.") + }, + { "taxonRemarks", N_("Taxon Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the taxon or name.") + }, + + // Resource Relationship Level Class + { "ResourceRelationship", N_("Resource Relationship"), "ResourceRelationship", xmpText, xmpInternal, + N_("*Main structure* containing relationships between resources based information."), + }, + // Resource Relationship Level Terms + { "resourceRelationshipID", N_("Resource Relationship ID"), "Text", xmpText, xmpExternal, + N_("An identifier for an instance of relationship between one resource (the subject) and another (relatedResource, the object).") + }, + { "resourceID", N_("Resource ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the resource that is the subject of the relationship.") + }, + { "relatedResourceID", N_("Related Resource ID"), "Text", xmpText, xmpExternal, + N_("An identifier for a related resource (the object, rather than the subject of the relationship).") + }, + { "relationshipOfResource", N_("Relationship Of Resource"), "Text", xmpText, xmpExternal, + N_("The relationship of the resource identified by relatedResourceID to the subject (optionally identified by the resourceID). Recommended best practice is to use a controlled vocabulary.") + }, + { "relationshipAccordingTo", N_("Relationship According To"), "Text", xmpText, xmpExternal, + N_("The source (person, organization, publication, reference) establishing the relationship between the two resources.") + }, + { "relationshipEstablishedDate", N_("Relationship Established Date"), "Date", xmpText, xmpExternal, + N_("The date-time on which the relationship between the two resources was established. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "relationshipRemarks", N_("Relationship Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes about the relationship between the two resources.") + }, + + // Measurement Or Fact Level Class + { "MeasurementOrFact", N_("Measurement Or Fact"), "MeasurementOrFact", xmpText, xmpInternal, + N_("*Main structure* containing measurement based information."), + }, + // Measurement Or Fact Level Terms + { "measurementID", N_("Measurement ID"), "Text", xmpText, xmpExternal, + N_("An identifier for the MeasurementOrFact (information pertaining to measurements, facts, characteristics, or assertions). May be a global unique identifier or an identifier specific to the data set.") + }, + { "measurementType", N_("Measurement Type"), "Text", xmpText, xmpExternal, + N_("The nature of the measurement, fact, characteristic, or assertion. Recommended best practice is to use a controlled vocabulary.") + }, + { "measurementValue", N_("Measurement Value"), "Text", xmpText, xmpExternal, + N_("The value of the measurement, fact, characteristic, or assertion.") + }, + { "measurementAccuracy", N_("Measurement Accuracy"), "Text", xmpText, xmpExternal, + N_("The description of the potential error associated with the measurementValue.") + }, + { "measurementUnit", N_("Measurement Unit"), "Text", xmpText, xmpExternal, + N_("The units associated with the measurementValue. Recommended best practice is to use the International System of Units (SI).") + }, + { "measurementDeterminedDate", N_("Measurement Determined Date"), "Date", xmpText, xmpExternal, + N_("The date on which the MeasurementOrFact was made. Recommended best practice is to use an encoding scheme, such as ISO 8601:2004(E).") + }, + { "measurementDeterminedBy", N_("Measurement Determined By"), "bag Text", xmpBag, xmpExternal, + N_("A list (concatenated and separated) of names of people, groups, or organizations who determined the value of the MeasurementOrFact.") + }, + { "measurementMethod", N_("Measurement Method"), "Text", xmpText, xmpExternal, + N_("A description of or reference to (publication, URI) the method or protocol used to determine the measurement, fact, characteristic, or assertion.") + }, + { "measurementRemarks", N_("Measurement Remarks"), "Text", xmpText, xmpExternal, + N_("Comments or notes accompanying the MeasurementOrFact.") + }, + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPropertyInfo xmpAcdseeInfo[] = { + { "caption", N_("Caption"), "Text", xmpText, xmpExternal, N_("A brief description of the file") }, + { "datetime", N_("Date Time"), "Text", xmpText, xmpExternal, N_("Date and Time") }, + { "author", N_("Author"), "Text", xmpText, xmpExternal, N_("The name of the author or photographer") }, + { "rating", N_("Rating"), "Text", xmpText, xmpExternal, N_("Numerical rating from 1 to 5") }, + { "notes", N_("Notes"), "Text", xmpText, xmpExternal, N_("Any descriptive or additional free-form text up to 4,095 characters") }, + { "tagged", N_("Tagged"), "Text", xmpText, xmpExternal, N_("True or False") }, + { "categories", N_("Categories"), "Text", xmpText, xmpExternal, N_("Catalog of hierarchical keywords and groups") }, + + // End of list marker + { 0, 0, 0, invalidTypeId, xmpInternal, 0 } + }; + + extern const XmpPrintInfo xmpPrintInfo[] = { + {"Xmp.crs.CropUnits", EXV_PRINT_TAG(crsCropUnits) }, + {"Xmp.exif.ApertureValue", print0x9202 }, + {"Xmp.exif.BrightnessValue", printFloat }, + {"Xmp.exif.ColorSpace", print0xa001 }, + {"Xmp.exif.ComponentsConfiguration", print0x9101 }, + {"Xmp.exif.Contrast", printNormalSoftHard }, + {"Xmp.exif.CreateDate", printXmpDate }, + {"Xmp.exif.CustomRendered", print0xa401 }, + {"Xmp.exif.DateTimeOriginal", printXmpDate }, + {"Xmp.exif.ExifVersion", printXmpVersion }, + {"Xmp.exif.ExposureBiasValue", print0x9204 }, + {"Xmp.exif.ExposureMode", print0xa402 }, + {"Xmp.exif.ExposureProgram", print0x8822 }, + {"Xmp.exif.FileSource", print0xa300 }, + {"Xmp.exif.FlashpixVersion", printXmpVersion }, + {"Xmp.exif.FNumber", print0x829d }, + {"Xmp.exif.FocalLength", print0x920a }, + {"Xmp.exif.FocalPlaneResolutionUnit", printExifUnit }, + {"Xmp.exif.FocalPlaneXResolution", printFloat }, + {"Xmp.exif.FocalPlaneYResolution", printFloat }, + {"Xmp.exif.GainControl", print0xa407 }, + {"Xmp.exif.GPSAltitudeRef", print0x0005 }, + {"Xmp.exif.GPSDestBearingRef", printGPSDirRef }, + {"Xmp.exif.GPSDestDistanceRef", print0x0019 }, + {"Xmp.exif.GPSDifferential", print0x001e }, + {"Xmp.exif.GPSImgDirectionRef", printGPSDirRef }, + {"Xmp.exif.GPSMeasureMode", print0x000a }, + {"Xmp.exif.GPSSpeedRef", print0x000c }, + {"Xmp.exif.GPSStatus", print0x0009 }, + {"Xmp.exif.GPSTimeStamp", printXmpDate }, + {"Xmp.exif.GPSTrackRef", printGPSDirRef }, + {"Xmp.exif.LightSource", print0x9208 }, + {"Xmp.exif.MeteringMode", print0x9207 }, + {"Xmp.exif.ModifyDate", printXmpDate }, + {"Xmp.exif.Saturation", print0xa409 }, + {"Xmp.exif.SceneCaptureType", print0xa406 }, + {"Xmp.exif.SceneType", print0xa301 }, + {"Xmp.exif.SensingMethod", print0xa217 }, + {"Xmp.exif.Sharpness", printNormalSoftHard }, + {"Xmp.exif.ShutterSpeedValue", print0x9201 }, + {"Xmp.exif.SubjectDistanceRange", print0xa40c }, + {"Xmp.exif.WhiteBalance", print0xa403 }, + {"Xmp.tiff.Orientation", print0x0112 }, + {"Xmp.tiff.ResolutionUnit", printExifUnit }, + {"Xmp.tiff.XResolution", printLong }, + {"Xmp.tiff.YCbCrPositioning", print0x0213 }, + {"Xmp.tiff.YResolution", printLong }, + {"Xmp.iptcExt.DigitalSourcefileType", EXV_PRINT_VOCABULARY(iptcExtDigitalSourcefileType) }, + {"Xmp.plus.AdultContentWarning", EXV_PRINT_VOCABULARY(plusAdultContentWarning) }, + {"Xmp.plus.CopyrightStatus", EXV_PRINT_VOCABULARY(plusCopyrightStatus) }, + {"Xmp.plus.CreditLineRequired", EXV_PRINT_VOCABULARY(plusCreditLineRequired) }, + {"Xmp.plus.ImageAlterationConstraints", EXV_PRINT_VOCABULARY(plusImageAlterationConstraints) }, + {"Xmp.plus.ImageDuplicationConstraints", EXV_PRINT_VOCABULARY(plusImageDuplicationConstraints)}, + {"Xmp.plus.ImageFileConstraints", EXV_PRINT_VOCABULARY(plusImageFileConstraints) }, + {"Xmp.plus.ImageFileFormatAsDelivered", EXV_PRINT_VOCABULARY(plusImageFileFormatAsDelivered) }, + {"Xmp.plus.ImageFileSizeAsDelivered", EXV_PRINT_VOCABULARY(plusImageFileSizeAsDelivered) }, + {"Xmp.plus.ImageType", EXV_PRINT_VOCABULARY(plusImageType) }, + {"Xmp.plus.LicensorTelephoneType1", EXV_PRINT_VOCABULARY(plusLicensorTelephoneType) }, + {"Xmp.plus.LicensorTelephoneType2", EXV_PRINT_VOCABULARY(plusLicensorTelephoneType) }, + {"Xmp.plus.MinorModelAgeDisclosure", EXV_PRINT_VOCABULARY(plusMinorModelAgeDisclosure) }, + {"Xmp.plus.ModelReleaseStatus", EXV_PRINT_VOCABULARY(plusModelReleaseStatus) }, + {"Xmp.plus.PropertyReleaseStatus", EXV_PRINT_VOCABULARY(plusPropertyReleaseStatus) }, + {"Xmp.plus.Reuse", EXV_PRINT_VOCABULARY(plusReuse) } + }; + + XmpNsInfo::Ns::Ns(const std::string& ns) + : ns_(ns) + { + } + + XmpNsInfo::Prefix::Prefix(const std::string& prefix) + : prefix_(prefix) + { + } + + bool XmpNsInfo::operator==(const XmpNsInfo::Ns& ns) const + { + std::string n(ns_); + return n == ns.ns_; + } + + bool XmpNsInfo::operator==(const XmpNsInfo::Prefix& prefix) const + { + std::string p(prefix_); + return p == prefix.prefix_; + } + + bool XmpPropertyInfo::operator==(const std::string& name) const + { + std::string n(name_); + return n == name; + } + + XmpProperties::NsRegistry XmpProperties::nsRegistry_; + + const XmpNsInfo* XmpProperties::lookupNsRegistry(const XmpNsInfo::Prefix& prefix) + { + for (NsRegistry::const_iterator i = nsRegistry_.begin(); + i != nsRegistry_.end(); ++i) { + if (i->second == prefix) return &(i->second); + } + return 0; + } + + void XmpProperties::registerNs(const std::string& ns, + const std::string& prefix) + { + std::string ns2 = ns; + if ( ns2.substr(ns2.size() - 1, 1) != "/" + && ns2.substr(ns2.size() - 1, 1) != "#") ns2 += "/"; + // Check if there is already a registered namespace with this prefix + const XmpNsInfo* xnp = lookupNsRegistry(XmpNsInfo::Prefix(prefix)); + if (xnp) { +#ifndef SUPPRESS_WARNINGS + if (strcmp(xnp->ns_, ns2.c_str()) != 0) { + EXV_WARNING << "Updating namespace URI for " << prefix << " from " + << xnp->ns_ << " to " << ns2 << "\n"; + } +#endif + unregisterNs(xnp->ns_); + } + // Allocated memory is freed when the namespace is unregistered. + // Using malloc/free for better system compatibility in case + // users don't unregister their namespaces explicitly. + XmpNsInfo xn; + char* c = static_cast(std::malloc(ns2.size() + 1)); + std::strcpy(c, ns2.c_str()); + xn.ns_ = c; + c = static_cast(std::malloc(prefix.size() + 1)); + std::strcpy(c, prefix.c_str()); + xn.prefix_ = c; + xn.xmpPropertyInfo_ = 0; + xn.desc_ = ""; + nsRegistry_[ns2] = xn; + } + + void XmpProperties::unregisterNs(const std::string& ns) + { + NsRegistry::iterator i = nsRegistry_.find(ns); + if (i != nsRegistry_.end()) { + std::free(const_cast(i->second.prefix_)); + std::free(const_cast(i->second.ns_)); + nsRegistry_.erase(i); + } + } + + void XmpProperties::unregisterNs() + { + NsRegistry::iterator i = nsRegistry_.begin(); + while (i != nsRegistry_.end()) { + NsRegistry::iterator kill = i++; + unregisterNs(kill->first); + } + } + + std::string XmpProperties::prefix(const std::string& ns) + { + std::string ns2 = ns; + if ( ns2.substr(ns2.size() - 1, 1) != "/" + && ns2.substr(ns2.size() - 1, 1) != "#") ns2 += "/"; + NsRegistry::const_iterator i = nsRegistry_.find(ns2); + std::string p; + if (i != nsRegistry_.end()) { + p = i->second.prefix_; + } + else { + const XmpNsInfo* xn = find(xmpNsInfo, XmpNsInfo::Ns(ns2)); + if (xn) p = std::string(xn->prefix_); + } + return p; + } + + std::string XmpProperties::ns(const std::string& prefix) + { + const XmpNsInfo* xn = lookupNsRegistry(XmpNsInfo::Prefix(prefix)); + if (xn != 0) return xn->ns_; + return nsInfo(prefix)->ns_; + } + + const char* XmpProperties::propertyTitle(const XmpKey& key) + { + const XmpPropertyInfo* pi = propertyInfo(key); + return pi ? pi->title_ : 0; + } + + const char* XmpProperties::propertyDesc(const XmpKey& key) + { + const XmpPropertyInfo* pi = propertyInfo(key); + return pi ? pi->desc_ : 0; + } + + TypeId XmpProperties::propertyType(const XmpKey& key) + { + const XmpPropertyInfo* pi = propertyInfo(key); + return pi ? pi->typeId_ : xmpText; + } + + const XmpPropertyInfo* XmpProperties::propertyInfo(const XmpKey& key) + { + std::string prefix = key.groupName(); + std::string property = key.tagName(); + // If property is a path for a nested property, determines the innermost element + std::string::size_type i = property.find_last_of('/'); + if (i != std::string::npos) { + for (; i != std::string::npos && !isalpha(property[i]); ++i) {} + property = property.substr(i); + i = property.find_first_of(':'); + if (i != std::string::npos) { + prefix = property.substr(0, i); + property = property.substr(i+1); + } +#ifdef DEBUG + std::cout << "Nested key: " << key.key() << ", prefix: " << prefix + << ", property: " << property << "\n"; +#endif + } + const XmpPropertyInfo* pl = propertyList(prefix); + if (!pl) return 0; + const XmpPropertyInfo* pi = 0; + for (int i = 0; pl[i].name_ != 0; ++i) { + if (0 == strcmp(pl[i].name_, property.c_str())) { + pi = pl + i; + break; + } + } + return pi; + } + + const char* XmpProperties::nsDesc(const std::string& prefix) + { + return nsInfo(prefix)->desc_; + } + + const XmpPropertyInfo* XmpProperties::propertyList(const std::string& prefix) + { + return nsInfo(prefix)->xmpPropertyInfo_; + } + + const XmpNsInfo* XmpProperties::nsInfo(const std::string& prefix) + { + const XmpNsInfo::Prefix pf(prefix); + const XmpNsInfo* xn = lookupNsRegistry(pf); + if (!xn) xn = find(xmpNsInfo, pf); + if (!xn) throw Error(35, prefix); + return xn; + } + + void XmpProperties::printProperties(std::ostream& os, const std::string& prefix) + { + const XmpPropertyInfo* pl = propertyList(prefix); + if (pl) { + for (int i = 0; pl[i].name_ != 0; ++i) { + os << pl[i]; + } + } + + } // XmpProperties::printProperties + + std::ostream& XmpProperties::printProperty(std::ostream& os, + const std::string& key, + const Value& value) + { + PrintFct fct = printValue; + if (value.count() != 0) { + const XmpPrintInfo* info = find(xmpPrintInfo, key); + if (info) fct = info->printFct_; + } + return fct(os, value, 0); + } + + //! @cond IGNORE + + //! Internal Pimpl structure with private members and data of class XmpKey. + struct XmpKey::Impl { + Impl() {} //!< Default constructor + Impl(const std::string& prefix, const std::string& property); //!< Constructor + + /*! + @brief Parse and convert the \em key string into property and prefix. + Updates data members if the string can be decomposed, or throws + \em Error. + + @throw Error if the key cannot be decomposed. + */ + void decomposeKey(const std::string& key); + + // DATA + static const char* familyName_; //!< "Xmp" + + std::string prefix_; //!< Prefix + std::string property_; //!< Property name + }; + //! @endcond + + XmpKey::Impl::Impl(const std::string& prefix, const std::string& property) + { + // Validate prefix + if (XmpProperties::ns(prefix).empty()) throw Error(46, prefix); + + property_ = property; + prefix_ = prefix; + } + + const char* XmpKey::Impl::familyName_ = "Xmp"; + + XmpKey::XmpKey(const std::string& key) + : p_(new Impl) + { + p_->decomposeKey(key); + } + + XmpKey::XmpKey(const std::string& prefix, const std::string& property) + : p_(new Impl(prefix, property)) + { + } + + XmpKey::~XmpKey() + { + delete p_; + } + + XmpKey::XmpKey(const XmpKey& rhs) + : Key(rhs), p_(new Impl(*rhs.p_)) + { + } + + XmpKey& XmpKey::operator=(const XmpKey& rhs) + { + if (this == &rhs) return *this; + Key::operator=(rhs); + *p_ = *rhs.p_; + return *this; + } + + XmpKey::AutoPtr XmpKey::clone() const + { + return AutoPtr(clone_()); + } + + XmpKey* XmpKey::clone_() const + { + return new XmpKey(*this); + } + + std::string XmpKey::key() const + { + return std::string(p_->familyName_) + "." + p_->prefix_ + "." + p_->property_; + } + + const char* XmpKey::familyName() const + { + return p_->familyName_; + } + + std::string XmpKey::groupName() const + { + return p_->prefix_; + } + + std::string XmpKey::tagName() const + { + return p_->property_; + } + + std::string XmpKey::tagLabel() const + { + const char* pt = XmpProperties::propertyTitle(*this); + if (!pt) return tagName(); + return pt; + } + + uint16_t XmpKey::tag() const + { + return 0; + } + + std::string XmpKey::ns() const + { + return XmpProperties::ns(p_->prefix_); + } + + void XmpKey::Impl::decomposeKey(const std::string& key) + { + // Get the family name, prefix and property name parts of the key + std::string::size_type pos1 = key.find('.'); + if (pos1 == std::string::npos) throw Error(6, key); + std::string familyName = key.substr(0, pos1); + if (0 != strcmp(familyName.c_str(), familyName_)) { + throw Error(6, key); + } + std::string::size_type pos0 = pos1 + 1; + pos1 = key.find('.', pos0); + if (pos1 == std::string::npos) throw Error(6, key); + std::string prefix = key.substr(pos0, pos1 - pos0); + if (prefix == "") throw Error(6, key); + std::string property = key.substr(pos1 + 1); + if (property == "") throw Error(6, key); + + // Validate prefix + if (XmpProperties::ns(prefix).empty()) throw Error(46, prefix); + + property_ = property; + prefix_ = prefix; + } // XmpKey::Impl::decomposeKey + + // ************************************************************************* + // free functions + std::ostream& operator<<(std::ostream& os, const XmpPropertyInfo& property) + { + return os << property.name_ << ",\t" + << property.title_ << ",\t" + << property.xmpValueType_ << ",\t" + << TypeInfo::typeName(property.typeId_) << ",\t" + << ( property.xmpCategory_ == xmpExternal ? "External" : "Internal" ) << ",\t" + << property.desc_ << "\n"; + } + //! @endcond + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/psdimage.cpp b/vendor/exiv2-0.25/src/psdimage.cpp new file mode 100644 index 0000000..482f482 --- /dev/null +++ b/vendor/exiv2-0.25/src/psdimage.cpp @@ -0,0 +1,712 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: psdimage.cpp + Version: $Rev: 3777 $ + Author(s): Marco Piovanelli, Ovolab (marco) + Michael Ulbrich (mul) + History: 05-Mar-2007, marco: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: psdimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "psdimage.hpp" +#include "jpgimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include + +// Todo: Consolidate with existing code in struct Photoshop (jpgimage.hpp): +// Extend this helper to a proper class with all required functionality, +// then move it here or into a separate file? + +//! @cond IGNORE +struct PhotoshopResourceBlock { + uint32_t resourceType; // one of the markers in Photoshop::irbId_[] + uint16_t resourceId; + unsigned char resourceName[2]; // Pascal string (length byte + characters), padded to an even size -- this assumes the empty string + uint32_t resourceDataSize; +}; +//! @endcond + +// Photoshop resource IDs (Cf. ) +enum { + kPhotoshopResourceID_Photoshop2Info = 0x03e8, // [obsolete -- Photoshop 2.0 only] General information -- contains five 2-byte values: number of channels, rows, columns, depth and mode + kPhotoshopResourceID_MacintoshClassicPrintInfo = 0x03e9, // [optional] Macintosh classic print record (120 bytes) + kPhotoshopResourceID_MacintoshCarbonPrintInfo = 0x03ea, // [optional] Macintosh carbon print info (variable-length XML format) + kPhotoshopResourceID_Photoshop2ColorTable = 0x03eb, // [obsolete -- Photoshop 2.0 only] Indexed color table + kPhotoshopResourceID_ResolutionInfo = 0x03ed, // PhotoshopResolutionInfo structure (see below) + kPhotoshopResourceID_AlphaChannelsNames = 0x03ee, // as a series of Pstrings + kPhotoshopResourceID_DisplayInfo = 0x03ef, // see appendix A in Photoshop SDK + kPhotoshopResourceID_PStringCaption = 0x03f0, // [optional] the caption, as a Pstring + kPhotoshopResourceID_BorderInformation = 0x03f1, // border width and units + kPhotoshopResourceID_BackgroundColor = 0x03f2, // see additional Adobe information + kPhotoshopResourceID_PrintFlags = 0x03f3, // labels, crop marks, colour bars, ecc... + kPhotoshopResourceID_BWHalftoningInfo = 0x03f4, // Gray-scale and multich. half-toning info + kPhotoshopResourceID_ColorHalftoningInfo = 0x03f5, // Colour half-toning information + kPhotoshopResourceID_DuotoneHalftoningInfo = 0x03f6, // Duo-tone half-toning information + kPhotoshopResourceID_BWTransferFunc = 0x03f7, // Gray-scale and multich. transfer function + kPhotoshopResourceID_ColorTransferFuncs = 0x03f8, // Colour transfer function + kPhotoshopResourceID_DuotoneTransferFuncs = 0x03f9, // Duo-tone transfer function + kPhotoshopResourceID_DuotoneImageInfo = 0x03fa, // Duo-tone image information + kPhotoshopResourceID_EffectiveBW = 0x03fb, // two bytes for the effective black and white values + kPhotoshopResourceID_ObsoletePhotoshopTag1 = 0x03fc, // [obsolete] + kPhotoshopResourceID_EPSOptions = 0x03fd, // Encapsulated Postscript options + kPhotoshopResourceID_QuickMaskInfo = 0x03fe, // Quick Mask information. 2 bytes containing Quick Mask channel ID, 1 byte boolean indicating whether the mask was initially empty. + kPhotoshopResourceID_ObsoletePhotoshopTag2 = 0x03ff, // [obsolete] + kPhotoshopResourceID_LayerStateInfo = 0x0400, // index of target layer (0 means bottom) + kPhotoshopResourceID_WorkingPathInfo = 0x0401, // should not be saved to the file + kPhotoshopResourceID_LayersGroupInfo = 0x0402, // for grouping layers together + kPhotoshopResourceID_ObsoletePhotoshopTag3 = 0x0403, // [obsolete] ?? + kPhotoshopResourceID_IPTC_NAA = 0x0404, // IPTC/NAA data + kPhotoshopResourceID_RawImageMode = 0x0405, // image mode for raw format files + kPhotoshopResourceID_JPEGQuality = 0x0406, // [private] + kPhotoshopResourceID_GridGuidesInfo = 0x0408, // see additional Adobe information + kPhotoshopResourceID_ThumbnailResource = 0x0409, // see additional Adobe information + kPhotoshopResourceID_CopyrightFlag = 0x040a, // true if image is copyrighted + kPhotoshopResourceID_URL = 0x040b, // text string with a resource locator + kPhotoshopResourceID_ThumbnailResource2 = 0x040c, // see additional Adobe information + kPhotoshopResourceID_GlobalAngle = 0x040d, // global lighting angle for effects layer + kPhotoshopResourceID_ColorSamplersResource = 0x040e, // see additional Adobe information + kPhotoshopResourceID_ICCProfile = 0x040f, // see notes from Internat. Color Consortium + kPhotoshopResourceID_Watermark = 0x0410, // one byte + kPhotoshopResourceID_ICCUntagged = 0x0411, // 1 means intentionally untagged + kPhotoshopResourceID_EffectsVisible = 0x0412, // 1 byte to show/hide all effects layers + kPhotoshopResourceID_SpotHalftone = 0x0413, // version, length and data + kPhotoshopResourceID_IDsBaseValue = 0x0414, // base value for new layers ID's + kPhotoshopResourceID_UnicodeAlphaNames = 0x0415, // length plus Unicode string + kPhotoshopResourceID_IndexedColourTableCount = 0x0416, // [Photoshop 6.0 and later] 2 bytes + kPhotoshopResourceID_TransparentIndex = 0x0417, // [Photoshop 6.0 and later] 2 bytes + kPhotoshopResourceID_GlobalAltitude = 0x0419, // [Photoshop 6.0 and later] 4 bytes + kPhotoshopResourceID_Slices = 0x041a, // [Photoshop 6.0 and later] see additional Adobe info + kPhotoshopResourceID_WorkflowURL = 0x041b, // [Photoshop 6.0 and later] 4 bytes length + Unicode string + kPhotoshopResourceID_JumpToXPEP = 0x041c, // [Photoshop 6.0 and later] see additional Adobe info + kPhotoshopResourceID_AlphaIdentifiers = 0x041d, // [Photoshop 6.0 and later] 4*(n+1) bytes + kPhotoshopResourceID_URLList = 0x041e, // [Photoshop 6.0 and later] structured Unicode URL's + kPhotoshopResourceID_VersionInfo = 0x0421, // [Photoshop 6.0 and later] see additional Adobe info + kPhotoshopResourceID_ExifInfo = 0x0422, // [Photoshop 7.0?] Exif metadata + kPhotoshopResourceID_XMPPacket = 0x0424, // [Photoshop 7.0?] XMP packet -- see http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf + kPhotoshopResourceID_ClippingPathName = 0x0bb7, // [Photoshop 6.0 and later] name of clipping path + kPhotoshopResourceID_MorePrintFlags = 0x2710 // [Photoshop 6.0 and later] Print flags information. 2 bytes version (=1), 1 byte center crop marks, 1 byte (=0), 4 bytes bleed width value, 2 bytes bleed width scale. +}; + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + PsdImage::PsdImage(BasicIo::AutoPtr io) + : Image(ImageType::psd, mdExif | mdIptc | mdXmp, io) + { + } // PsdImage::PsdImage + + std::string PsdImage::mimeType() const + { + return "image/x-photoshop"; + } + + void PsdImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "Photoshop")); + } + + void PsdImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::PsdImage::readMetadata: Reading Photoshop file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isPsdType(*io_, false)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "Photoshop"); + } + clearMetadata(); + + /* + The Photoshop header goes as follows -- all numbers are in big-endian byte order: + + offset length name description + ====== ======= ========= ========= + 0 4 bytes signature always '8BPS' + 4 2 bytes version always equal to 1 + 6 6 bytes reserved must be zero + 12 2 bytes channels number of channels in the image, including alpha channels (1 to 24) + 14 4 bytes rows the height of the image in pixels + 18 4 bytes columns the width of the image in pixels + 22 2 bytes depth the number of bits per channel + 24 2 bytes mode the color mode of the file; Supported values are: Bitmap=0; Grayscale=1; Indexed=2; RGB=3; CMYK=4; Multichannel=7; Duotone=8; Lab=9 + */ + byte buf[26]; + if (io_->read(buf, 26) != 26) + { + throw Error(3, "Photoshop"); + } + pixelWidth_ = getLong(buf + 18, bigEndian); + pixelHeight_ = getLong(buf + 14, bigEndian); + + // immediately following the image header is the color mode data section, + // the first four bytes of which specify the byte size of the whole section + if (io_->read(buf, 4) != 4) + { + throw Error(3, "Photoshop"); + } + + // skip it + uint32_t colorDataLength = getULong(buf, bigEndian); + if (io_->seek(colorDataLength, BasicIo::cur)) + { + throw Error(3, "Photoshop"); + } + + // after the color data section, comes a list of resource blocks, preceded by the total byte size + if (io_->read(buf, 4) != 4) + { + throw Error(3, "Photoshop"); + } + uint32_t resourcesLength = getULong(buf, bigEndian); + while (resourcesLength > 0) + { + if (io_->read(buf, 8) != 8) + { + throw Error(3, "Photoshop"); + } + + if (!Photoshop::isIrb(buf, 4)) + { + break; // bad resource type + } + uint16_t resourceId = getUShort(buf + 4, bigEndian); + uint32_t resourceNameLength = buf[6] & ~1; + + // skip the resource name, plus any padding + io_->seek(resourceNameLength, BasicIo::cur); + + // read resource size + if (io_->read(buf, 4) != 4) + { + throw Error(3, "Photoshop"); + } + uint32_t resourceSize = getULong(buf, bigEndian); + uint32_t curOffset = io_->tell(); + +#ifdef DEBUG + std::cerr << std::hex << "resourceId: " << resourceId << std::dec << " length: " << resourceSize << std::hex << "\n"; +#endif + + readResourceBlock(resourceId, resourceSize); + resourceSize = (resourceSize + 1) & ~1; // pad to even + io_->seek(curOffset + resourceSize, BasicIo::beg); + resourcesLength -= (12 + resourceNameLength + resourceSize); + } + + } // PsdImage::readMetadata + + void PsdImage::readResourceBlock(uint16_t resourceId, uint32_t resourceSize) + { + switch(resourceId) + { + case kPhotoshopResourceID_IPTC_NAA: + { + DataBuf rawIPTC(resourceSize); + io_->read(rawIPTC.pData_, rawIPTC.size_); + if (io_->error() || io_->eof()) throw Error(14); + if (IptcParser::decode(iptcData_, rawIPTC.pData_, rawIPTC.size_)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode IPTC metadata.\n"; +#endif + iptcData_.clear(); + } + break; + } + + case kPhotoshopResourceID_ExifInfo: + { + DataBuf rawExif(resourceSize); + io_->read(rawExif.pData_, rawExif.size_); + if (io_->error() || io_->eof()) throw Error(14); + ByteOrder bo = ExifParser::decode(exifData_, rawExif.pData_, rawExif.size_); + setByteOrder(bo); + if (rawExif.size_ > 0 && byteOrder() == invalidByteOrder) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode Exif metadata.\n"; +#endif + exifData_.clear(); + } + break; + } + + case kPhotoshopResourceID_XMPPacket: + { + DataBuf xmpPacket(resourceSize); + io_->read(xmpPacket.pData_, xmpPacket.size_); + if (io_->error() || io_->eof()) throw Error(14); + xmpPacket_.assign(reinterpret_cast(xmpPacket.pData_), xmpPacket.size_); + if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + break; + } + + // - PS 4.0 preview data is fetched from ThumbnailResource + // - PS >= 5.0 preview data is fetched from ThumbnailResource2 + case kPhotoshopResourceID_ThumbnailResource: + case kPhotoshopResourceID_ThumbnailResource2: + { + /* + Photoshop thumbnail resource header + + offset length name description + ====== ======== ==== =========== + 0 4 bytes format = 1 (kJpegRGB). Also supports kRawRGB (0). + 4 4 bytes width Width of thumbnail in pixels. + 8 4 bytes height Height of thumbnail in pixels. + 12 4 bytes widthbytes Padded row bytes as (width * bitspixel + 31) / 32 * 4. + 16 4 bytes size Total size as widthbytes * height * planes + 20 4 bytes compressedsize Size after compression. Used for consistentcy check. + 24 2 bytes bitspixel = 24. Bits per pixel. + 26 2 bytes planes = 1. Number of planes. + 28 variable data JFIF data in RGB format. + Note: For resource ID 1033 the data is in BGR format. + */ + byte buf[28]; + if (io_->read(buf, 28) != 28) + { + throw Error(3, "Photoshop"); + } + NativePreview nativePreview; + nativePreview.position_ = io_->tell(); + nativePreview.size_ = getLong(buf + 20, bigEndian); // compressedsize + nativePreview.width_ = getLong(buf + 4, bigEndian); + nativePreview.height_ = getLong(buf + 8, bigEndian); + const uint32_t format = getLong(buf + 0, bigEndian); + + if (nativePreview.size_ > 0 && nativePreview.position_ >= 0) { + io_->seek(static_cast(nativePreview.size_), BasicIo::cur); + if (io_->error() || io_->eof()) throw Error(14); + + if (format == 1) { + nativePreview.filter_ = ""; + nativePreview.mimeType_ = "image/jpeg"; + nativePreviews_.push_back(nativePreview); + } else { + // unsupported format of native preview + } + } + break; + } + + default: + { + break; + } + } + } // PsdImage::readResourceBlock + + void PsdImage::writeMetadata() + { + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + BasicIo::AutoPtr tempIo(io_->temporary()); // may throw + assert (tempIo.get() != 0); + + doWriteMetadata(*tempIo); // may throw + io_->close(); + io_->transfer(*tempIo); // may throw + + } // PsdImage::writeMetadata + + void PsdImage::doWriteMetadata(BasicIo& outIo) + { + if (!io_->isopen()) throw Error(20); + if (!outIo.isopen()) throw Error(21); + +#ifdef DEBUG + std::cout << "Exiv2::PsdImage::doWriteMetadata: Writing PSD file " << io_->path() << "\n"; + std::cout << "Exiv2::PsdImage::doWriteMetadata: tmp file created " << outIo.path() << "\n"; +#endif + + // Ensure that this is the correct image type + if (!isPsdType(*io_, true)) { + if (io_->error() || io_->eof()) throw Error(20); + throw Error(22); + } + + io_->seek(0, BasicIo::beg); // rewind + + DataBuf lbuf(4096); + byte buf[8]; + + // Get Photoshop header from original file + byte psd_head[26]; + if (io_->read(psd_head, 26) != 26) throw Error(3, "Photoshop"); + + // Write Photoshop header data out to new PSD file + if (outIo.write(psd_head, 26) != 26) throw Error(21); + + // Read colorDataLength from original PSD + if (io_->read(buf, 4) != 4) throw Error(3, "Photoshop"); + + uint32_t colorDataLength = getULong(buf, bigEndian); + + // Write colorDataLength + ul2Data(buf, colorDataLength, bigEndian); + if (outIo.write(buf, 4) != 4) throw Error(21); +#ifdef DEBUG + std::cerr << std::dec << "colorDataLength: " << colorDataLength << "\n"; +#endif + // Copy colorData + uint32_t readTotal = 0; + long toRead = 0; + while (readTotal < colorDataLength) { + toRead = static_cast(colorDataLength - readTotal) < lbuf.size_ + ? static_cast(colorDataLength - readTotal) : lbuf.size_; + if (io_->read(lbuf.pData_, toRead) != toRead) throw Error(3, "Photoshop"); + readTotal += toRead; + if (outIo.write(lbuf.pData_, toRead) != toRead) throw Error(21); + } + if (outIo.error()) throw Error(21); + + uint32_t resLenOffset = io_->tell(); // remember for later update + + // Read length of all resource blocks from original PSD + if (io_->read(buf, 4) != 4) throw Error(3, "Photoshop"); + + uint32_t oldResLength = getULong(buf, bigEndian); + uint32_t newResLength = 0; + + // Write oldResLength (will be updated later) + ul2Data(buf, oldResLength, bigEndian); + if (outIo.write(buf, 4) != 4) throw Error(21); + +#ifdef DEBUG + std::cerr << std::dec << "oldResLength: " << oldResLength << "\n"; +#endif + + // Iterate over original resource blocks. + // Replace or insert IPTC, EXIF and XMP + // Original resource blocks assumed to be sorted ASC + + bool iptcDone = false; + bool exifDone = false; + bool xmpDone = false; + while (oldResLength > 0) { + if (io_->read(buf, 8) != 8) throw Error(3, "Photoshop"); + + // read resource type and ID + uint32_t resourceType = getULong(buf, bigEndian); + + if (!Photoshop::isIrb(buf, 4)) + { + throw Error(3, "Photoshop"); // bad resource type + } + uint16_t resourceId = getUShort(buf + 4, bigEndian); + uint32_t resourceNameLength = buf[6]; + uint32_t adjResourceNameLen = resourceNameLength & ~1; + unsigned char resourceNameFirstChar = buf[7]; + + // read rest of resource name, plus any padding + DataBuf resName(256); + if ( io_->read(resName.pData_, adjResourceNameLen) + != static_cast(adjResourceNameLen)) throw Error(3, "Photoshop"); + + // read resource size (actual length w/o padding!) + if (io_->read(buf, 4) != 4) throw Error(3, "Photoshop"); + + uint32_t resourceSize = getULong(buf, bigEndian); + uint32_t pResourceSize = (resourceSize + 1) & ~1; // padded resource size + uint32_t curOffset = io_->tell(); + + // Write IPTC_NAA resource block + if ((resourceId == kPhotoshopResourceID_IPTC_NAA || + resourceId > kPhotoshopResourceID_IPTC_NAA) && iptcDone == false) { + newResLength += writeIptcData(iptcData_, outIo); + iptcDone = true; + } + + // Write ExifInfo resource block + else if ((resourceId == kPhotoshopResourceID_ExifInfo || + resourceId > kPhotoshopResourceID_ExifInfo) && exifDone == false) { + newResLength += writeExifData(exifData_, outIo); + exifDone = true; + } + + // Write XMPpacket resource block + else if ((resourceId == kPhotoshopResourceID_XMPPacket || + resourceId > kPhotoshopResourceID_XMPPacket) && xmpDone == false) { + newResLength += writeXmpData(xmpData_, outIo); + xmpDone = true; + } + + // Copy all other resource blocks + if ( resourceId != kPhotoshopResourceID_IPTC_NAA + && resourceId != kPhotoshopResourceID_ExifInfo + && resourceId != kPhotoshopResourceID_XMPPacket) { +#ifdef DEBUG + std::cerr << std::hex << "copy : resourceType: " << resourceType << "\n"; + std::cerr << std::hex << "copy : resourceId: " << resourceId << "\n"; + std::cerr << std::dec; +#endif + // Copy resource block to new PSD file + ul2Data(buf, resourceType, bigEndian); + if (outIo.write(buf, 4) != 4) throw Error(21); + us2Data(buf, resourceId, bigEndian); + if (outIo.write(buf, 2) != 2) throw Error(21); + // Write resource name as Pascal string + buf[0] = resourceNameLength & 0x00ff; + if (outIo.write(buf, 1) != 1) throw Error(21); + buf[0] = resourceNameFirstChar; + if (outIo.write(buf, 1) != 1) throw Error(21); + if ( outIo.write(resName.pData_, adjResourceNameLen) + != static_cast(adjResourceNameLen)) throw Error(21); + ul2Data(buf, resourceSize, bigEndian); + if (outIo.write(buf, 4) != 4) throw Error(21); + + readTotal = 0; + toRead = 0; + while (readTotal < pResourceSize) { + toRead = static_cast(pResourceSize - readTotal) < lbuf.size_ + ? static_cast(pResourceSize - readTotal) : lbuf.size_; + if (io_->read(lbuf.pData_, toRead) != toRead) { + throw Error(3, "Photoshop"); + } + readTotal += toRead; + if (outIo.write(lbuf.pData_, toRead) != toRead) throw Error(21); + } + if (outIo.error()) throw Error(21); + newResLength += pResourceSize + adjResourceNameLen + 12; + } + + io_->seek(curOffset + pResourceSize, BasicIo::beg); + oldResLength -= (12 + adjResourceNameLen + pResourceSize); + } + + // Append IPTC_NAA resource block, if not yet written + if (iptcDone == false) { + newResLength += writeIptcData(iptcData_, outIo); + iptcDone = true; + } + + // Append ExifInfo resource block, if not yet written + if (exifDone == false) { + newResLength += writeExifData(exifData_, outIo); + exifDone = true; + } + + // Append XmpPacket resource block, if not yet written + if (xmpDone == false) { + newResLength += writeXmpData(xmpData_, outIo); + xmpDone = true; + } + + // Populate the fake data, only make sense for remoteio, httpio and sshio. + // it avoids allocating memory for parts of the file that contain image-date. + io_->populateFakeData(); + + // Copy remaining data + long readSize = 0; + while ((readSize=io_->read(lbuf.pData_, lbuf.size_))) { + if (outIo.write(lbuf.pData_, readSize) != readSize) throw Error(21); + } + if (outIo.error()) throw Error(21); + + // Update length of resources +#ifdef DEBUG + std::cerr << "newResLength: " << newResLength << "\n"; +#endif + outIo.seek(resLenOffset, BasicIo::beg); + ul2Data(buf, newResLength, bigEndian); + if (outIo.write(buf, 4) != 4) throw Error(21); + + } // PsdImage::doWriteMetadata + + uint32_t PsdImage::writeIptcData(const IptcData& iptcData, BasicIo& out) const + { + uint32_t resLength = 0; + byte buf[8]; + + if (iptcData.count() > 0) { + DataBuf rawIptc = IptcParser::encode(iptcData); + if (rawIptc.size_ > 0) { +#ifdef DEBUG + std::cerr << std::hex << "write: resourceId: " << kPhotoshopResourceID_IPTC_NAA << "\n"; + std::cerr << std::dec << "Writing IPTC_NAA: size: " << rawIptc.size_ << "\n"; +#endif + if (out.write(reinterpret_cast(Photoshop::irbId_[0]), 4) != 4) throw Error(21); + us2Data(buf, kPhotoshopResourceID_IPTC_NAA, bigEndian); + if (out.write(buf, 2) != 2) throw Error(21); + us2Data(buf, 0, bigEndian); // NULL resource name + if (out.write(buf, 2) != 2) throw Error(21); + ul2Data(buf, rawIptc.size_, bigEndian); + if (out.write(buf, 4) != 4) throw Error(21); + // Write encoded Iptc data + if (out.write(rawIptc.pData_, rawIptc.size_) != rawIptc.size_) throw Error(21); + resLength += rawIptc.size_ + 12; + if (rawIptc.size_ & 1) // even padding + { + buf[0] = 0; + if (out.write(buf, 1) != 1) throw Error(21); + resLength++; + } + } + } + return resLength; + } // PsdImage::writeIptcData + + uint32_t PsdImage::writeExifData(const ExifData& exifData, BasicIo& out) + { + uint32_t resLength = 0; + byte buf[8]; + + if (exifData.count() > 0) { + Blob blob; + ByteOrder bo = byteOrder(); + if (bo == invalidByteOrder) { + bo = littleEndian; + setByteOrder(bo); + } + ExifParser::encode(blob, bo, exifData); + + if (blob.size() > 0) { +#ifdef DEBUG + std::cerr << std::hex << "write: resourceId: " << kPhotoshopResourceID_ExifInfo << "\n"; + std::cerr << std::dec << "Writing ExifInfo: size: " << blob.size() << "\n"; +#endif + if (out.write(reinterpret_cast(Photoshop::irbId_[0]), 4) != 4) throw Error(21); + us2Data(buf, kPhotoshopResourceID_ExifInfo, bigEndian); + if (out.write(buf, 2) != 2) throw Error(21); + us2Data(buf, 0, bigEndian); // NULL resource name + if (out.write(buf, 2) != 2) throw Error(21); + ul2Data(buf, static_cast(blob.size()), bigEndian); + if (out.write(buf, 4) != 4) throw Error(21); + // Write encoded Exif data + if (out.write(&blob[0], static_cast(blob.size())) != static_cast(blob.size())) throw Error(21); + resLength += static_cast(blob.size()) + 12; + if (blob.size() & 1) // even padding + { + buf[0] = 0; + if (out.write(buf, 1) != 1) throw Error(21); + resLength++; + } + } + } + return resLength; + } // PsdImage::writeExifData + + uint32_t PsdImage::writeXmpData(const XmpData& xmpData, BasicIo& out) const + { + std::string xmpPacket; + uint32_t resLength = 0; + byte buf[8]; + +#ifdef DEBUG + std::cerr << "writeXmpFromPacket(): " << writeXmpFromPacket() << "\n"; +#endif +// writeXmpFromPacket(true); + if (writeXmpFromPacket() == false) { + if (XmpParser::encode(xmpPacket, xmpData) > 1) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to encode XMP metadata.\n"; +#endif + } + } + + if (xmpPacket.size() > 0) { +#ifdef DEBUG + std::cerr << std::hex << "write: resourceId: " << kPhotoshopResourceID_XMPPacket << "\n"; + std::cerr << std::dec << "Writing XMPPacket: size: " << xmpPacket.size() << "\n"; +#endif + if (out.write(reinterpret_cast(Photoshop::irbId_[0]), 4) != 4) throw Error(21); + us2Data(buf, kPhotoshopResourceID_XMPPacket, bigEndian); + if (out.write(buf, 2) != 2) throw Error(21); + us2Data(buf, 0, bigEndian); // NULL resource name + if (out.write(buf, 2) != 2) throw Error(21); + ul2Data(buf, static_cast(xmpPacket.size()), bigEndian); + if (out.write(buf, 4) != 4) throw Error(21); + // Write XMPPacket + if (out.write(reinterpret_cast(xmpPacket.data()), static_cast(xmpPacket.size())) + != static_cast(xmpPacket.size())) throw Error(21); + if (out.error()) throw Error(21); + resLength += static_cast(xmpPacket.size()) + 12; + if (xmpPacket.size() & 1) // even padding + { + buf[0] = 0; + if (out.write(buf, 1) != 1) throw Error(21); + resLength++; + } + } + return resLength; + } // PsdImage::writeXmpData + + // ************************************************************************* + // free functions + Image::AutoPtr newPsdInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new PsdImage(io)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isPsdType(BasicIo& iIo, bool advance) + { + const int32_t len = 6; + const unsigned char PsdHeader[6] = { '8', 'B', 'P', 'S', 0, 1 }; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) + { + return false; + } + bool matched = (memcmp(buf, PsdHeader, len) == 0); + if (!advance || !matched) + { + iIo.seek(-len, BasicIo::cur); + } + + return matched; + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/quicktimevideo.cpp b/vendor/exiv2-0.25/src/quicktimevideo.cpp new file mode 100644 index 0000000..6cba899 --- /dev/null +++ b/vendor/exiv2-0.25/src/quicktimevideo.cpp @@ -0,0 +1,1661 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: quicktimevideo.cpp + Version: $Rev: 3845 $ + Author(s): Abhinav Badola for GSoC 2012 (AB) + History: 28-Jun-12, AB: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: quicktimevideo.cpp 3845 2015-06-07 16:29:06Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "config.h" + +#ifdef EXV_ENABLE_VIDEO +#include "quicktimevideo.hpp" +#include "futils.hpp" +#include "basicio.hpp" +#include "tags.hpp" +// + standard includes +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + extern const TagVocabulary qTimeFileType[] = { + { "3g2a", "3GPP2 Media (.3G2) compliant with 3GPP2 C.S0050-0 V1.0" }, + { "3g2b", "3GPP2 Media (.3G2) compliant with 3GPP2 C.S0050-A V1.0.0" }, + { "3g2c", "3GPP2 Media (.3G2) compliant with 3GPP2 C.S0050-B v1.0" }, + { "3ge6", "3GPP (.3GP) Release 6 MBMS Extended Presentations" }, + { "3ge7", "3GPP (.3GP) Release 7 MBMS Extended Presentations" }, + { "3gg6", "3GPP Release 6 General Profile" }, + { "3gp1", "3GPP Media (.3GP) Release 1 (probably non-existent)" }, + { "3gp2", "3GPP Media (.3GP) Release 2 (probably non-existent)" }, + { "3gp3", "3GPP Media (.3GP) Release 3 (probably non-existent)" }, + { "3gp4", "3GPP Media (.3GP) Release 4" }, + { "3gp5", "3GPP Media (.3GP) Release 5" }, + { "3gp6", "3GPP Media (.3GP) Release 6 Streaming Servers" }, + { "3gs7", "3GPP Media (.3GP) Release 7 Streaming Servers" }, + { "CAEP", "Canon Digital Camera" }, + { "CDes", "Convergent Design" }, + { "F4A ", "Audio for Adobe Flash Player 9+ (.F4A)" }, + { "F4B ", "Audio Book for Adobe Flash Player 9+ (.F4B)" }, + { "F4P ", "Protected Video for Adobe Flash Player 9+ (.F4P)" }, + { "F4V ", "Video for Adobe Flash Player 9+ (.F4V)" }, + { "JP2 ", "JPEG 2000 Image (.JP2) [ISO 15444-1 ?]" }, + { "JP20", "Unknown, from GPAC samples (prob non-existent)" }, + { "KDDI", "3GPP2 EZmovie for KDDI 3G cellphones" }, + { "M4A ", "Apple iTunes AAC-LC (.M4A) Audio" }, + { "M4B ", "Apple iTunes AAC-LC (.M4B) Audio Book" }, + { "M4P ", "Apple iTunes AAC-LC (.M4P) AES Protected Audio" }, + { "M4V ", "Apple iTunes Video (.M4V) Video" }, + { "M4VH", "Apple TV (.M4V)" }, + { "M4VP", "Apple iPhone (.M4V)" }, + { "MPPI", "Photo Player, MAF [ISO/IEC 23000-3]" }, + { "MSNV", "MPEG-4 (.MP4) for SonyPSP" }, + { "NDAS", "MP4 v2 [ISO 14496-14] Nero Digital AAC Audio" }, + { "NDSC", "MPEG-4 (.MP4) Nero Cinema Profile" }, + { "NDSH", "MPEG-4 (.MP4) Nero HDTV Profile" }, + { "NDSM", "MPEG-4 (.MP4) Nero Mobile Profile" }, + { "NDSP", "MPEG-4 (.MP4) Nero Portable Profile" }, + { "NDSS", "MPEG-4 (.MP4) Nero Standard Profile" }, + { "NDXC", "H.264/MPEG-4 AVC (.MP4) Nero Cinema Profile" }, + { "NDXH", "H.264/MPEG-4 AVC (.MP4) Nero HDTV Profile" }, + { "NDXM", "H.264/MPEG-4 AVC (.MP4) Nero Mobile Profile" }, + { "NDXP", "H.264/MPEG-4 AVC (.MP4) Nero Portable Profile" }, + { "NDXS", "H.264/MPEG-4 AVC (.MP4) Nero Standard Profile" }, + { "NIKO", "Nikon" }, + { "ROSS", "Ross Video" }, + { "avc1", "MP4 Base w/ AVC ext [ISO 14496-12:2005]" }, + { "caqv", "Casio Digital Camera" }, + { "da0a", "DMB MAF w/ MPEG Layer II aud, MOT slides, DLS, JPG/PNG/MNG images" }, + { "da0b", "DMB MAF, extending DA0A, with 3GPP timed text, DID, TVA, REL, IPMP" }, + { "da1a", "DMB MAF audio with ER-BSAC audio, JPG/PNG/MNG images" }, + { "da1b", "DMB MAF, extending da1a, with 3GPP timed text, DID, TVA, REL, IPMP" }, + { "da2a", "DMB MAF aud w/ HE-AAC v2 aud, MOT slides, DLS, JPG/PNG/MNG images" }, + { "da2b", "DMB MAF, extending da2a, with 3GPP timed text, DID, TVA, REL, IPMP" }, + { "da3a", "DMB MAF aud with HE-AAC aud, JPG/PNG/MNG images" }, + { "da3b", "DMB MAF, extending da3a w/ BIFS, 3GPP timed text, DID, TVA, REL, IPMP" }, + { "dmb1", "DMB MAF supporting all the components defined in the specification" }, + { "dmpf", "Digital Media Project" }, + { "drc1", "Dirac (wavelet compression), encapsulated in ISO base media (MP4)" }, + { "dv1a", "DMB MAF vid w/ AVC vid, ER-BSAC aud, BIFS, JPG/PNG/MNG images, TS" }, + { "dv1b", "DMB MAF, extending dv1a, with 3GPP timed text, DID, TVA, REL, IPMP" }, + { "dv2a", "DMB MAF vid w/ AVC vid, HE-AAC v2 aud, BIFS, JPG/PNG/MNG images, TS" }, + { "dv2b", "DMB MAF, extending dv2a, with 3GPP timed text, DID, TVA, REL, IPMP" }, + { "dv3a", "DMB MAF vid w/ AVC vid, HE-AAC aud, BIFS, JPG/PNG/MNG images, TS" }, + { "dv3b", "DMB MAF, extending dv3a, with 3GPP timed text, DID, TVA, REL, IPMP" }, + { "dvr1", "DVB (.DVB) over RTP" }, + { "dvt1", "DVB (.DVB) over MPEG-2 Transport Stream" }, + { "isc2", "ISMACryp 2.0 Encrypted File" }, + { "iso2", "MP4 Base Media v2 [ISO 14496-12:2005]" }, + { "isom", "MP4 Base Media v1 [IS0 14496-12:2003]" }, + { "jpm ", "JPEG 2000 Compound Image (.JPM) [ISO 15444-6]" }, + { "jpx ", "JPEG 2000 with extensions (.JPX) [ISO 15444-2]" }, + { "mj2s", "Motion JPEG 2000 [ISO 15444-3] Simple Profile" }, + { "mjp2", "Motion JPEG 2000 [ISO 15444-3] General Profile" }, + { "mmp4", "MPEG-4/3GPP Mobile Profile (.MP4/3GP) (for NTT)" }, + { "mp21", "MPEG-21 [ISO/IEC 21000-9]" }, + { "mp41", "MP4 v1 [ISO 14496-1:ch13]" }, + { "mp42", "MP4 v2 [ISO 14496-14]" }, + { "mp71", "MP4 w/ MPEG-7 Metadata [per ISO 14496-12]" }, + { "mqt ", "Sony / Mobile QuickTime (.MQV) US Patent 7,477,830 (Sony Corp)" }, + { "niko", "Nikon" }, + { "odcf", "OMA DCF DRM Format 2.0 (OMA-TS-DRM-DCF-V2_0-20060303-A)" }, + { "opf2", "OMA PDCF DRM Format 2.1 (OMA-TS-DRM-DCF-V2_1-20070724-C)" }, + { "opx2", "OMA PDCF DRM + XBS extensions (OMA-TS-DRM_XBS-V1_0-20070529-C)" }, + { "pana", "Panasonic Digital Camera" }, + { "qt ", "Apple QuickTime (.MOV/QT)" }, + { "sdv ", "SD Memory Card Video" }, + { "ssc1", "Samsung stereoscopic, single stream" }, + { "ssc2", "Samsung stereoscopic, dual stream" } + }; + + extern const TagVocabulary handlerClassTags[] = { + { "dhlr", "Data Handler" }, + { "mhlr", "Media Handler" } + }; + + extern const TagVocabulary handlerTypeTags[] = { + { "alis", "Alias Data" }, + { "crsm", "Clock Reference" }, + { "hint", "Hint Track" }, + { "ipsm", "IPMP" }, + { "m7sm", "MPEG-7 Stream" }, + { "mdir", "Metadata" }, + { "mdta", "Metadata Tags" }, + { "mjsm", "MPEG-J" }, + { "ocsm", "Object Content" }, + { "odsm", "Object Descriptor" }, + { "sdsm", "Scene Description" }, + { "soun", "Audio Track" }, + { "text", "Text" }, + { "tmcd", "Time Code" }, + { "url ", "URL" }, + { "vide", "Video Track" } + }; + + extern const TagVocabulary vendorIDTags[] = { + { "FFMP", "FFmpeg" }, + { "appl", "Apple" }, + { "olym", "Olympus" }, + { "GIC ", "General Imaging Co." }, + { "fe20", "Olympus (fe20)" }, + { "pana", "Panasonic" }, + { "KMPI", "Konica-Minolta" }, + { "kdak", "Kodak" }, + { "pent", "Pentax" }, + { "NIKO", "Nikon" }, + { "leic", "Leica" }, + { "pr01", "Olympus (pr01)" }, + { "SMI ", "Sorenson Media Inc." }, + { "mino", "Minolta" }, + { "sany", "Sanyo" }, + { "ZORA", "Zoran Corporation" }, + { "niko", "Nikon" } + }; + + extern const TagVocabulary cameraByteOrderTags[] = { + { "II", "Little-endian (Intel, II)" }, + { "MM", "Big-endian (Motorola, MM)" } + }; + + extern const TagDetails graphicsModetags[] = { + { 0x0, "srcCopy" }, + { 0x1, "srcOr" }, + { 0x2, "srcXor" }, + { 0x3, "srcBic" }, + { 0x4, "notSrcCopy" }, + { 0x5, "notSrcOr" }, + { 0x6, "notSrcXor" }, + { 0x7, "notSrcBic" }, + { 0x8, "patCopy" }, + { 0x9, "patOr" }, + { 0xa, "patXor" }, + { 0xb, "patBic" }, + { 0xc, "notPatCopy" }, + { 0xd, "notPatOr" }, + { 0xe, "notPatXor" }, + { 0xf, "notPatBic" }, + { 0x20, "blend" }, + { 0x21, "addPin" }, + { 0x22, "addOver" }, + { 0x23, "subPin" }, + { 0x24, "transparent" }, + { 0x25, "addMax" }, + { 0x26, "subOver" }, + { 0x27, "addMin" }, + { 0x31, "grayishTextOr" }, + { 0x32, "hilite" }, + { 0x40, "ditherCopy" }, + { 0x100, "Alpha" }, + { 0x101, "White Alpha" }, + { 0x102, "Pre-multiplied Black Alpha" }, + { 0x110, "Component Alpha" } + }; + + + extern const TagVocabulary userDatatags[] = { + { "AllF", "PlayAllFrames" }, + { "CNCV", "CompressorVersion" }, + { "CNFV", "FirmwareVersion" }, + { "CNMN", "Model" }, + { "CNTH", "CanonCNTH" }, + { "DcMD", "DcMD" }, + { "FFMV", "FujiFilmFFMV" }, + { "INFO", "SamsungINFO" }, + { "LOOP", "LoopStyle" }, + { "MMA0", "MinoltaMMA0" }, + { "MMA1", "MinoltaMMA1" }, + { "MVTG", "FujiFilmMVTG" }, + { "NCDT", "NikonNCDT" }, + { "PANA", "PanasonicPANA" }, + { "PENT", "PentaxPENT" }, + { "PXMN", "MakerNotePentax5b" }, + { "PXTH", "PentaxPreview" }, + { "QVMI", "CasioQVMI" }, + { "SDLN", "PlayMode" }, + { "SelO", "PlaySelection" }, + { "TAGS", "KodakTags/KonicaMinoltaTags/MinoltaTags/NikonTags/OlympusTags/PentaxTags/SamsungTags/SanyoMOV/SanyoMP4" }, + { "WLOC", "WindowLocation" }, + { "XMP_", "XMP" }, + { "Xtra", "Xtra" }, + { "hinf", "HintTrackInfo" }, + { "hinv", "HintVersion" }, + { "hnti", "Hint" }, + { "meta", "Meta" }, + { "name", "Name" }, + { "ptv ", "PrintToVideo" }, + { "scrn", "OlympusPreview" }, + { "thmb", "MakerNotePentax5a/OlympusThumbnail" }, + }; + + extern const TagVocabulary userDataReferencetags[] = { + { "CNCV", "Xmp.video.CompressorVersion" }, + { "CNFV", "Xmp.video.FirmwareVersion" }, + { "CNMN", "Xmp.video.Model" }, + { "NCHD", "Xmp.video.MakerNoteType" }, + { "WLOC", "Xmp.video.WindowLocation" }, + { "SDLN", "Xmp.video.PlayMode" }, + { "FFMV", "Xmp.video.StreamName" }, + { "SelO", "Xmp.video.PlaySelection" }, + { "name", "Xmp.video.Name" }, + { "vndr", "Xmp.video.Vendor" }, + { " ART", "Xmp.video.Artist" }, + { " alb", "Xmp.video.Album" }, + { " arg", "Xmp.video.Arranger" }, + { " ark", "Xmp.video.ArrangerKeywords" }, + { " cmt", "Xmp.video.Comment" }, + { " cok", "Xmp.video.ComposerKeywords" }, + { " com", "Xmp.video.Composer" }, + { " cpy", "Xmp.video.Copyright" }, + { " day", "Xmp.video.CreateDate" }, + { " dir", "Xmp.video.Director" }, + { " ed1", "Xmp.video.Edit1" }, + { " ed2", "Xmp.video.Edit2" }, + { " ed3", "Xmp.video.Edit3" }, + { " ed4", "Xmp.video.Edit4" }, + { " ed5", "Xmp.video.Edit5" }, + { " ed6", "Xmp.video.Edit6" }, + { " ed7", "Xmp.video.Edit7" }, + { " ed8", "Xmp.video.Edit8" }, + { " ed9", "Xmp.video.Edit9" }, + { " enc", "Xmp.video.Encoder" }, + { " fmt", "Xmp.video.Format" }, + { " gen", "Xmp.video.Genre" }, + { " grp", "Xmp.video.Grouping" }, + { " inf", "Xmp.video.Information" }, + { " isr", "Xmp.video.ISRCCode" }, + { " lab", "Xmp.video.RecordLabelName" }, + { " lal", "Xmp.video.RecordLabelURL" }, + { " lyr", "Xmp.video.Lyrics" }, + { " mak", "Xmp.video.Make" }, + { " mal", "Xmp.video.MakerURL" }, + { " mod", "Xmp.video.Model" }, + { " nam", "Xmp.video.Title" }, + { " pdk", "Xmp.video.ProducerKeywords" }, + { " phg", "Xmp.video.RecordingCopyright" }, + { " prd", "Xmp.video.Producer" }, + { " prf", "Xmp.video.Performers" }, + { " prk", "Xmp.video.PerformerKeywords" }, + { " prl", "Xmp.video.PerformerURL" }, + { " req", "Xmp.video.Requirements" }, + { " snk", "Xmp.video.SubtitleKeywords" }, + { " snm", "Xmp.video.Subtitle" }, + { " src", "Xmp.video.SourceCredits" }, + { " swf", "Xmp.video.SongWriter" }, + { " swk", "Xmp.video.SongWriterKeywords" }, + { " swr", "Xmp.video.SoftwareVersion" }, + { " too", "Xmp.video.Encoder" }, + { " trk", "Xmp.video.Track" }, + { " wrt", "Xmp.video.Composer" }, + { " xyz", "Xmp.video.GPSCoordinates" }, + { "CMbo", "Xmp.video.CameraByteOrder" }, + { "Cmbo", "Xmp.video.CameraByteOrder" }, + }; + + extern const TagDetails NikonNCTGTags[] = { + { 0x0001, "Xmp.video.Make" }, + { 0x0002, "Xmp.video.Model" }, + { 0x0003, "Xmp.video.Software" }, + { 0x0011, "Xmp.video.CreationDate" }, + { 0x0012, "Xmp.video.DateTimeOriginal" }, + { 0x0013, "Xmp.video.FrameCount" }, + { 0x0016, "Xmp.video.FrameRate" }, + { 0x0022, "Xmp.video.FrameWidth" }, + { 0x0023, "Xmp.video.FrameHeight" }, + { 0x0032, "Xmp.audio.channelType" }, + { 0x0033, "Xmp.audio.BitsPerSample" }, + { 0x0034, "Xmp.audio.sampleRate" }, + { 0x1108822, "Xmp.video.ExposureProgram" }, + { 0x1109204, "Xmp.video.ExposureCompensation" }, + { 0x1109207, "Xmp.video.MeteringMode" }, + { 0x110a434, "Xmp.video.LensModel" }, + { 0x1200000, "Xmp.video.GPSVersionID" }, + { 0x1200001, "Xmp.video.GPSLatitudeRef" }, + { 0x1200002, "Xmp.video.GPSLatitude" }, + { 0x1200003, "Xmp.video.GPSLongitudeRef" }, + { 0x1200004, "Xmp.video.GPSLongitude" }, + { 0x1200005, "Xmp.video.GPSAltitudeRef" }, + { 0x1200006, "Xmp.video.GPSAltitude" }, + { 0x1200007, "Xmp.video.GPSTimeStamp" }, + { 0x1200008, "Xmp.video.GPSSatellites" }, + { 0x1200010, "Xmp.video.GPSImgDirectionRef" }, + { 0x1200011, "Xmp.video.GPSImgDirection" }, + { 0x1200012, "Xmp.video.GPSMapDatum" }, + { 0x120001d, "Xmp.video.GPSDateStamp" }, + { 0x2000001, "Xmp.video.MakerNoteVersion" }, + { 0x2000005, "Xmp.video.WhiteBalance" }, + { 0x200000b, "Xmp.video.WhiteBalanceFineTune" }, + { 0x200001e, "Xmp.video.ColorSpace" }, + { 0x2000023, "Xmp.video.PictureControlData" }, + { 0x2000024, "Xmp.video.WorldTime" }, + { 0x200002c, "Xmp.video.UnknownInfo" }, + { 0x2000032, "Xmp.video.UnknownInfo2" }, + { 0x2000039, "Xmp.video.LocationInfo" }, + { 0x2000083, "Xmp.video.LensType" }, + { 0x2000084, "Xmp.video.LensModel" }, + { 0x20000ab, "Xmp.video.VariProgram" }, + }; + + extern const TagDetails NikonColorSpace[] = { + { 1, "sRGB" }, + { 2, "Adobe RGB" }, + }; + + extern const TagVocabulary NikonGPS_Latitude_Longitude_ImgDirection_Reference[] = { + { "N", "North" }, + { "S", "South" }, + { "E", "East" }, + { "W", "West" }, + { "M", "Magnetic North" }, + { "T", "True North" }, + }; + + extern const TagDetails NikonGPSAltitudeRef[] = { + { 0, "Above Sea Level" }, + { 1, "Below Sea Level" }, + }; + + extern const TagDetails NikonExposureProgram[] = { + { 0, "Not Defined" }, + { 1, "Manual" }, + { 2, "Program AE" }, + { 3, "Aperture-priority AE" }, + { 4, "Shutter speed priority AE" }, + { 5, "Creative (Slow speed)" }, + { 6, "Action (High speed)" }, + { 7, "Portrait" }, + { 8, "Landscape" }, + }; + + extern const TagDetails NikonMeteringMode[] = { + { 0, "Unknown" }, + { 1, "Average" }, + { 2, "Center-weighted average" }, + { 3, "Spot" }, + { 4, "Multi-spot" }, + { 5, "Multi-segment" }, + { 6, "Partial" }, + { 255, "Other" }, + }; + + extern const TagDetails PictureControlAdjust[] = { + { 0, "Default Settings" }, + { 1, "Quick Adjust" }, + { 2, "Full Control" }, + }; + + //! Contrast and Sharpness + extern const TagDetails NormalSoftHard[] = { + { 0, "Normal" }, + { 1, "Soft" }, + { 2, "Hard" } + }; + + //! Saturation + extern const TagDetails Saturation[] = { + { 0, "Normal" }, + { 1, "Low" }, + { 2, "High" } + }; + + //! YesNo, used for DaylightSavings + extern const TagDetails YesNo[] = { + { 0, "No" }, + { 1, "Yes" } + }; + + //! DateDisplayFormat + extern const TagDetails DateDisplayFormat[] = { + { 0, "Y/M/D" }, + { 1, "M/D/Y" }, + { 2, "D/M/Y" } + }; + + extern const TagDetails FilterEffect[] = { + { 0x80, "Off" }, + { 0x81, "Yellow" }, + { 0x82, "Orange" }, + { 0x83, "Red" }, + { 0x84, "Green" }, + { 0xff, "n/a" }, + }; + + extern const TagDetails ToningEffect[] = { + { 0x80, "B&W" }, + { 0x81, "Sepia" }, + { 0x82, "Cyanotype" }, + { 0x83, "Red" }, + { 0x84, "Yellow" }, + { 0x85, "Green" }, + { 0x86, "Blue-green" }, + { 0x87, "Blue" }, + { 0x88, "Purple-blue" }, + { 0x89, "Red-purple" }, + { 0xff, "n/a" }, + }; + + extern const TagDetails whiteBalance[] = { + { 0, "Auto" }, + { 1, "Daylight" }, + { 2, "Shade" }, + { 3, "Fluorescent" }, + { 4, "Tungsten" }, + { 5, "Manual" }, + }; + + enum movieHeaderTags { + MovieHeaderVersion, CreateDate, ModifyDate, TimeScale, Duration, PreferredRate, PreferredVolume, + PreviewTime = 18, PreviewDuration,PosterTime, SelectionTime, SelectionDuration, CurrentTime, NextTrackID + }; + enum trackHeaderTags { + TrackHeaderVersion, TrackCreateDate, TrackModifyDate, TrackID, TrackDuration = 5, TrackLayer = 8, + TrackVolume, ImageWidth = 19, ImageHeight + }; + enum mediaHeaderTags { + MediaHeaderVersion, MediaCreateDate, MediaModifyDate, MediaTimeScale, MediaDuration, MediaLanguageCode + }; + enum handlerTags { + HandlerClass = 1, HandlerType, HandlerVendorID + }; + enum videoHeaderTags { + GraphicsMode = 2, OpColor + }; + enum stream { + Video, Audio, Hint, Null, GenMediaHeader + }; + enum imageDescTags { + codec, VendorID = 4, SourceImageWidth_Height = 7, XResolution, + YResolution, CompressorName = 10, BitDepth + }; + enum audioDescTags { + AudioFormat, AudioVendorID = 4, AudioChannels, AudioSampleRate = 7, MOV_AudioFormat = 13 + }; + + /*! + @brief Function used to check equality of a Tags with a + particular string (ignores case while comparing). + @param buf Data buffer that will contain Tag to compare + @param str char* Pointer to string + @return Returns true if the buffer value is equal to string. + */ + bool equalsQTimeTag(Exiv2::DataBuf& buf ,const char* str) { + for(int i = 0; i < 4; ++i) + if(tolower(buf.pData_[i]) != tolower(str[i])) + return false; + return true; + } + + /*! + @brief Function used to ignore Tags and values stored in them, + since they are not necessary as metadata information + @param buf Data buffer that will contain Tag to compare + @return Returns true, if Tag is found in the ignoreList[] + */ + bool ignoreList (Exiv2::DataBuf& buf) { + const char ignoreList[13][5] = { + "mdat", "edts", "junk", "iods", "alis", "stsc", "stsz", "stco", "ctts", "stss", + "skip", "wide", "cmvd", + }; + + for(int i = 0 ; i < 13 ; ++i) + if(equalsQTimeTag(buf, ignoreList[i])) + return true; + + return false; + } + + /*! + @brief Function used to ignore Tags, basically Tags which + contain other tags inside them, since they are not necessary + as metadata information + @param buf Data buffer that will contain Tag to compare + @return Returns true, if Tag is found in the ignoreList[] + */ + bool dataIgnoreList (Exiv2::DataBuf& buf) { + const char ignoreList[8][5] = { + "moov", "mdia", "minf", "dinf", "alis", "stbl", "cmov", + "meta", + }; + + for(int i = 0 ; i < 8 ; ++i) + if(equalsQTimeTag(buf, ignoreList[i])) + return true; + + return false; + } + + /*! + @brief Function used to convert buffer data into 64-bit + signed integer, information stored in Big Endian format + @param buf Data buffer that will contain data to be converted + @return Returns a signed 64-bit integer + */ + int64_t returnBufValue(Exiv2::DataBuf& buf, int n = 4) { + int64_t temp = 0; + for(int i = n - 1; i >= 0; i--) +#ifdef _MSC_VER + temp = temp + static_cast(buf.pData_[i]*(pow(static_cast(256), n-i-1))); +#else + temp = temp + buf.pData_[i]*(pow((float)256,n-i-1)); +#endif + + return temp; + } + + /*! + @brief Function used to convert buffer data into 64-bit + unsigned integer, information stored in Big Endian format + @param buf Data buffer that will contain data to be converted + @return Returns an unsigned 64-bit integer + */ + uint64_t returnUnsignedBufValue(Exiv2::DataBuf& buf, int n = 4) { + uint64_t temp = 0; + for(int i = n-1; i >= 0; i--) +#if _MSC_VER + temp = temp + static_cast(buf.pData_[i]*(pow(static_cast(256), n-i-1))); +#else + temp = temp + buf.pData_[i]*(pow((float)256,n-i-1)); +#endif + + return temp; + } + + /*! + @brief Function used to quicktime files, by checking the + the tags at the start of the file. If the Tag is any one + of the tags listed below, then it is of Quicktime Type. + @param a, b, c, d - characters used to compare + @return Returns true, if Tag is found in the list qTimeTags + */ + bool isQuickTimeType (char a, char b, char c, char d) { + char qTimeTags[][5] = { + "PICT", "free", "ftyp", "junk", "mdat", + "moov", "pict", "pnot", "skip", "uuid", "wide" + }; + + for(int i = 0; i <= 10; i++) + if(a == qTimeTags[i][0] && b == qTimeTags[i][1] && c == qTimeTags[i][2] && d == qTimeTags[i][3]) + return true; + return false; + } + +}} // namespace Internal, Exiv2 + +namespace Exiv2 { + + using namespace Exiv2::Internal; + + QuickTimeVideo::QuickTimeVideo(BasicIo::AutoPtr io) + : Image(ImageType::qtime, mdNone, io) + , timeScale_(1) + { + } // QuickTimeVideo::QuickTimeVideo + + std::string QuickTimeVideo::mimeType() const + { + return "video/quicktime"; + } + + void QuickTimeVideo::writeMetadata() + { + } + + + void QuickTimeVideo::readMetadata() + { + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + + // Ensure that this is the correct image type + if (!isQTimeType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "QuickTime"); + } + + IoCloser closer(*io_); + clearMetadata(); + continueTraversing_ = true; + height_ = width_ = 1; + + xmpData_["Xmp.video.FileSize"] = (double)io_->size()/(double)1048576; + xmpData_["Xmp.video.FileName"] = io_->path(); + xmpData_["Xmp.video.MimeType"] = mimeType(); + + while (continueTraversing_) decodeBlock(); + + aspectRatio(); + } // QuickTimeVideo::readMetadata + + void QuickTimeVideo::decodeBlock() + { + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + unsigned long size = 0; + buf.pData_[4] = '\0' ; + + std::memset(buf.pData_, 0x0, buf.size_); + + io_->read(buf.pData_, 4); + if(io_->eof()) { + continueTraversing_ = false; + return; + } + + size = Exiv2::getULong(buf.pData_, bigEndian); + + io_->read(buf.pData_, 4); + if(size < 8) + return; + +// std::cerr<<"\nTag=>"<"<read(buf.pData_, size); + if (currentStream_ == Video) + xmpData_["Xmp.video.URL"] = Exiv2::toString(buf.pData_); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.URL"] = Exiv2::toString(buf.pData_); + } + + else if (equalsQTimeTag(buf, "urn ")) { + io_->read(buf.pData_, size); + if (currentStream_ == Video) + xmpData_["Xmp.video.URN"] = Exiv2::toString(buf.pData_); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.URN"] = Exiv2::toString(buf.pData_); + } + + else if (equalsQTimeTag(buf, "dcom")) { + io_->read(buf.pData_, size); + xmpData_["Xmp.video.Compressor"] = Exiv2::toString(buf.pData_); + } + + else if (equalsQTimeTag(buf, "smhd")) { + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 4); + xmpData_["Xmp.audio.Balance"] = returnBufValue(buf, 2); + } + + else { + discard(size); + } + } // QuickTimeVideo::tagDecoder + + void QuickTimeVideo::discard(unsigned long size) + { + uint64_t cur_pos = io_->tell(); + io_->seek(cur_pos + size, BasicIo::beg); + } // QuickTimeVideo::discard + + void QuickTimeVideo::previewTagDecoder(unsigned long size) + { + DataBuf buf(4); + uint64_t cur_pos = io_->tell(); + io_->read(buf.pData_, 4); + xmpData_["Xmp.video.PreviewDate"] = getULong(buf.pData_, bigEndian); + io_->read(buf.pData_, 2); + xmpData_["Xmp.video.PreviewVersion"] = getShort(buf.pData_, bigEndian); + + io_->read(buf.pData_, 4); + if(equalsQTimeTag(buf, "PICT")) + xmpData_["Xmp.video.PreviewAtomType"] = "QuickDraw Picture"; + else + xmpData_["Xmp.video.PreviewAtomType"] = Exiv2::toString(buf.pData_); + + io_->seek(cur_pos + size, BasicIo::beg); + } // QuickTimeVideo::previewTagDecoder + + void QuickTimeVideo::keysTagDecoder(unsigned long size) + { + DataBuf buf(4); + uint64_t cur_pos = io_->tell(); + io_->read(buf.pData_, 4); + xmpData_["Xmp.video.PreviewDate"] = getULong(buf.pData_, bigEndian); + io_->read(buf.pData_, 2); + xmpData_["Xmp.video.PreviewVersion"] = getShort(buf.pData_, bigEndian); + + io_->read(buf.pData_, 4); + if(equalsQTimeTag(buf, "PICT")) + xmpData_["Xmp.video.PreviewAtomType"] = "QuickDraw Picture"; + else + xmpData_["Xmp.video.PreviewAtomType"] = Exiv2::toString(buf.pData_); + + io_->seek(cur_pos + size, BasicIo::beg); + } // QuickTimeVideo::keysTagDecoder + + void QuickTimeVideo::trackApertureTagDecoder(unsigned long size) + { + DataBuf buf(4), buf2(2); + uint64_t cur_pos = io_->tell(); + byte n = 3; + + while(n--) { + io_->seek(static_cast(4), BasicIo::cur); io_->read(buf.pData_, 4); + + if(equalsQTimeTag(buf, "clef")) { + io_->seek(static_cast(4), BasicIo::cur); + io_->read(buf.pData_, 2); io_->read(buf2.pData_, 2); + xmpData_["Xmp.video.CleanApertureWidth"] = Exiv2::toString(getUShort(buf.pData_, bigEndian)) + + "." + Exiv2::toString(getUShort(buf2.pData_, bigEndian)); + io_->read(buf.pData_, 2); io_->read(buf2.pData_, 2); + xmpData_["Xmp.video.CleanApertureHeight"] = Exiv2::toString(getUShort(buf.pData_, bigEndian)) + + "." + Exiv2::toString(getUShort(buf2.pData_, bigEndian)); + } + + else if(equalsQTimeTag(buf, "prof")) { + io_->seek(static_cast(4), BasicIo::cur); + io_->read(buf.pData_, 2); io_->read(buf2.pData_, 2); + xmpData_["Xmp.video.ProductionApertureWidth"] = Exiv2::toString(getUShort(buf.pData_, bigEndian)) + + "." + Exiv2::toString(getUShort(buf2.pData_, bigEndian)); + io_->read(buf.pData_, 2); io_->read(buf2.pData_, 2); + xmpData_["Xmp.video.ProductionApertureHeight"] = Exiv2::toString(getUShort(buf.pData_, bigEndian)) + + "." + Exiv2::toString(getUShort(buf2.pData_, bigEndian)); + } + + else if(equalsQTimeTag(buf, "enof")) { + io_->seek(static_cast(4), BasicIo::cur); + io_->read(buf.pData_, 2); io_->read(buf2.pData_, 2); + xmpData_["Xmp.video.EncodedPixelsWidth"] = Exiv2::toString(getUShort(buf.pData_, bigEndian)) + + "." + Exiv2::toString(getUShort(buf2.pData_, bigEndian)); + io_->read(buf.pData_, 2); io_->read(buf2.pData_, 2); + xmpData_["Xmp.video.EncodedPixelsHeight"] = Exiv2::toString(getUShort(buf.pData_, bigEndian)) + + "." + Exiv2::toString(getUShort(buf2.pData_, bigEndian)); + } + } + io_->seek(static_cast(cur_pos + size), BasicIo::beg); + } // QuickTimeVideo::trackApertureTagDecoder + + void QuickTimeVideo::CameraTagsDecoder(unsigned long size_external) + { + uint64_t cur_pos = io_->tell(); + DataBuf buf(50), buf2(4); + const TagDetails* td; + + io_->read(buf.pData_, 4); + if(equalsQTimeTag(buf, "NIKO")) { + io_->seek(cur_pos, BasicIo::beg); + + io_->read(buf.pData_, 24); + xmpData_["Xmp.video.Make"] = Exiv2::toString(buf.pData_); + io_->read(buf.pData_, 14); + xmpData_["Xmp.video.Model"] = Exiv2::toString(buf.pData_); + io_->read(buf.pData_, 4); + xmpData_["Xmp.video.ExposureTime"] = "1/" + Exiv2::toString( ceil( getULong(buf.pData_, littleEndian) / (double)10)); + io_->read(buf.pData_, 4); io_->read(buf2.pData_, 4); + xmpData_["Xmp.video.FNumber"] = getULong(buf.pData_, littleEndian) / (double)getULong(buf2.pData_, littleEndian) ; + io_->read(buf.pData_, 4); io_->read(buf2.pData_, 4); + xmpData_["Xmp.video.ExposureCompensation"] = getULong(buf.pData_, littleEndian) / (double)getULong(buf2.pData_, littleEndian) ; + io_->read(buf.pData_, 10); io_->read(buf.pData_, 4); + td = find(whiteBalance, getULong(buf.pData_, littleEndian)); + if (td) + xmpData_["Xmp.video.WhiteBalance"] = exvGettext(td->label_); + io_->read(buf.pData_, 4); io_->read(buf2.pData_, 4); + xmpData_["Xmp.video.FocalLength"] = getULong(buf.pData_, littleEndian) / (double)getULong(buf2.pData_, littleEndian) ; + io_->seek(static_cast(95), BasicIo::cur); + io_->read(buf.pData_, 48); + xmpData_["Xmp.video.Software"] = Exiv2::toString(buf.pData_); + io_->read(buf.pData_, 4); + xmpData_["Xmp.video.ISO"] = getULong(buf.pData_, littleEndian); + } + + io_->seek(cur_pos + size_external, BasicIo::beg); + } // QuickTimeVideo::CameraTagsDecoder + + void QuickTimeVideo::userDataDecoder(unsigned long size_external) + { + uint64_t cur_pos = io_->tell(); + const TagVocabulary* td; + const TagVocabulary* tv, *tv_internal; + + const long bufMinSize = 100; + DataBuf buf(bufMinSize); + unsigned long size = 0, size_internal = size_external; + std::memset(buf.pData_, 0x0, buf.size_); + + while((size_internal/4 != 0) && (size_internal > 0)) { + + buf.pData_[4] = '\0' ; + io_->read(buf.pData_, 4); + size = Exiv2::getULong(buf.pData_, bigEndian); + if(size > size_internal) + break; + size_internal -= size; + io_->read(buf.pData_, 4); + + if(buf.pData_[0] == 169) + buf.pData_[0] = ' '; + td = find(userDatatags, Exiv2::toString( buf.pData_)); + + tv = find(userDataReferencetags, Exiv2::toString( buf.pData_)); + + if(size == 0 || (size - 12) <= 0) + break; + + else if(equalsQTimeTag(buf, "DcMD") || equalsQTimeTag(buf, "NCDT")) + userDataDecoder(size - 8); + + else if(equalsQTimeTag(buf, "NCTG")) + NikonTagsDecoder(size - 8); + + else if(equalsQTimeTag(buf, "TAGS")) + CameraTagsDecoder(size - 8); + + else if(equalsQTimeTag(buf, "CNCV") || equalsQTimeTag(buf, "CNFV") + || equalsQTimeTag(buf, "CNMN") || equalsQTimeTag(buf, "NCHD") + || equalsQTimeTag(buf, "FFMV")) { + io_->read(buf.pData_, size - 8); + xmpData_[exvGettext(tv->label_)] = Exiv2::toString(buf.pData_); + } + + else if(equalsQTimeTag(buf, "CMbo") || equalsQTimeTag(buf, "Cmbo")) { + io_->read(buf.pData_, 2); + buf.pData_[2] = '\0' ; + tv_internal = find(cameraByteOrderTags, Exiv2::toString( buf.pData_)); + + if (tv_internal) + xmpData_[exvGettext(tv->label_)] = exvGettext(tv_internal->label_); + else + xmpData_[exvGettext(tv->label_)] = Exiv2::toString(buf.pData_); + } + + else if(tv) { + io_->read(buf.pData_, 4); + io_->read(buf.pData_, size-12); + xmpData_[exvGettext(tv->label_)] = Exiv2::toString(buf.pData_); + } + + else if(td) + tagDecoder(buf,size-8); + } + + io_->seek(cur_pos + size_external, BasicIo::beg); + } // QuickTimeVideo::userDataDecoder + + void QuickTimeVideo::NikonTagsDecoder(unsigned long size_external) + { + uint64_t cur_pos = io_->tell(); + DataBuf buf(200), buf2(4+1); + unsigned long TagID = 0; + unsigned short dataLength = 0, dataType = 2; + const TagDetails* td, *td2; + + for(int i = 0 ; i < 100 ; i++) { + io_->read(buf.pData_, 4); + TagID = Exiv2::getULong(buf.pData_, bigEndian); + td = find(NikonNCTGTags, TagID); + + io_->read(buf.pData_, 2); + dataType = Exiv2::getUShort(buf.pData_, bigEndian); + + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + + if(TagID == 0x2000023) { + uint64_t local_pos = io_->tell(); + dataLength = Exiv2::getUShort(buf.pData_, bigEndian); + std::memset(buf.pData_, 0x0, buf.size_); + + io_->read(buf.pData_, 4); xmpData_["Xmp.video.PictureControlVersion"] = Exiv2::toString(buf.pData_); + io_->read(buf.pData_, 20); xmpData_["Xmp.video.PictureControlName"] = Exiv2::toString(buf.pData_); + io_->read(buf.pData_, 20); xmpData_["Xmp.video.PictureControlBase"] = Exiv2::toString(buf.pData_); + io_->read(buf.pData_, 4); std::memset(buf.pData_, 0x0, buf.size_); + + io_->read(buf.pData_, 1); + td2 = find(PictureControlAdjust, (int)buf.pData_[0] & 7 ); + if(td2) + xmpData_["Xmp.video.PictureControlAdjust"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.PictureControlAdjust"] = (int)buf.pData_[0] & 7 ; + + io_->read(buf.pData_, 1); + td2 = find(NormalSoftHard, (int)buf.pData_[0] & 7 ); + if(td2) + xmpData_["Xmp.video.PictureControlQuickAdjust"] = exvGettext(td2->label_); + + io_->read(buf.pData_, 1); + td2 = find(NormalSoftHard, (int)buf.pData_[0] & 7 ); + if(td2) + xmpData_["Xmp.video.Sharpness"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.Sharpness"] = (int)buf.pData_[0] & 7; + + io_->read(buf.pData_, 1); + td2 = find(NormalSoftHard, (int)buf.pData_[0] & 7 ); + if(td2) + xmpData_["Xmp.video.Contrast"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.Contrast"] = (int)buf.pData_[0] & 7; + + io_->read(buf.pData_, 1); + td2 = find(NormalSoftHard, (int)buf.pData_[0] & 7 ); + if(td2) + xmpData_["Xmp.video.Brightness"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.Brightness"] = (int)buf.pData_[0] & 7; + + io_->read(buf.pData_, 1); + td2 = find(Saturation, (int)buf.pData_[0] & 7 ); + if(td2) + xmpData_["Xmp.video.Saturation"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.Saturation"] = (int)buf.pData_[0] & 7; + + io_->read(buf.pData_, 1); + xmpData_["Xmp.video.HueAdjustment"] = (int)buf.pData_[0] & 7; + + io_->read(buf.pData_, 1); + td2 = find(FilterEffect, (int)buf.pData_[0]); + if(td2) + xmpData_["Xmp.video.FilterEffect"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.FilterEffect"] = (int)buf.pData_[0]; + + io_->read(buf.pData_, 1); + td2 = find(ToningEffect, (int)buf.pData_[0]); + if(td2) + xmpData_["Xmp.video.ToningEffect"] = exvGettext(td2->label_); + else + xmpData_["Xmp.video.ToningEffect"] = (int)buf.pData_[0]; + + io_->read(buf.pData_, 1); xmpData_["Xmp.video.ToningSaturation"] = (int)buf.pData_[0]; + + io_->seek(local_pos + dataLength, BasicIo::beg); + } + + else if(TagID == 0x2000024) { + uint64_t local_pos = io_->tell(); + dataLength = Exiv2::getUShort(buf.pData_, bigEndian); + std::memset(buf.pData_, 0x0, buf.size_); + + io_->read(buf.pData_, 2); xmpData_["Xmp.video.TimeZone"] = Exiv2::getShort(buf.pData_, bigEndian); + io_->read(buf.pData_, 1); + td2 = find(YesNo, (int)buf.pData_[0]); + if(td2) + xmpData_["Xmp.video.DayLightSavings"] = exvGettext(td2->label_); + + io_->read(buf.pData_, 1); + td2 = find(DateDisplayFormat, (int)buf.pData_[0]); + if(td2) + xmpData_["Xmp.video.DateDisplayFormat"] = exvGettext(td2->label_); + + io_->seek(local_pos + dataLength, BasicIo::beg); + } + + else if(dataType == 2 || dataType == 7) { + dataLength = Exiv2::getUShort(buf.pData_, bigEndian); + std::memset(buf.pData_, 0x0, buf.size_); + + // Sanity check with an "unreasonably" large number + if (dataLength > 200) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video Nikon Tags, dataLength was found to be larger than 200." + << " Entries considered invalid. Not Processed.\n"; +#endif + io_->seek(io_->tell() + dataLength, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength); + + if(td) + xmpData_[exvGettext(td->label_)] = Exiv2::toString(buf.pData_); + } + else if(dataType == 4) { + dataLength = Exiv2::getUShort(buf.pData_, bigEndian) * 4; + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 4); + if(td) + xmpData_[exvGettext(td->label_)] = Exiv2::toString(Exiv2::getULong( buf.pData_, bigEndian)); + + // Sanity check with an "unreasonably" large number + if (dataLength > 200 || dataLength < 4) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video Nikon Tags, dataLength was found to be of inapropriate size." + << " Entries considered invalid. Not Processed.\n"; +#endif + io_->seek(io_->tell() + dataLength - 4, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength - 4); + } + else if(dataType == 3) { + dataLength = Exiv2::getUShort(buf.pData_, bigEndian) * 2; + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + if(td) + xmpData_[exvGettext(td->label_)] = Exiv2::toString(Exiv2::getUShort( buf.pData_, bigEndian)); + + // Sanity check with an "unreasonably" large number + if (dataLength > 200 || dataLength < 2) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video Nikon Tags, dataLength was found to be of inapropriate size." + << " Entries considered invalid. Not Processed.\n"; +#endif + io_->seek(io_->tell() + dataLength - 2, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength - 2); + } + else if(dataType == 5) { + dataLength = Exiv2::getUShort(buf.pData_, bigEndian) * 8; + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 4); + io_->read(buf2.pData_, 4); + if(td) + xmpData_[exvGettext(td->label_)] = Exiv2::toString((double)Exiv2::getULong( buf.pData_, bigEndian) / (double)Exiv2::getULong( buf2.pData_, bigEndian)); + + // Sanity check with an "unreasonably" large number + if (dataLength > 200 || dataLength < 8) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video Nikon Tags, dataLength was found to be of inapropriate size." + << " Entries considered invalid. Not Processed.\n"; +#endif + io_->seek(io_->tell() + dataLength - 8, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength - 8); + } + else if(dataType == 8) { + dataLength = Exiv2::getUShort(buf.pData_, bigEndian) * 2; + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + io_->read(buf2.pData_, 2); + if(td) + xmpData_[exvGettext(td->label_)] = Exiv2::toString(Exiv2::getUShort( buf.pData_, bigEndian) ) + " " + Exiv2::toString(Exiv2::getUShort( buf2.pData_, bigEndian)); + + // Sanity check with an "unreasonably" large number + if (dataLength > 200 || dataLength < 4) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Xmp.video Nikon Tags, dataLength was found to be of inapropriate size." + << " Entries considered invalid. Not Processed.\n"; +#endif + io_->seek(io_->tell() + dataLength - 4, BasicIo::beg); + } + else + io_->read(buf.pData_, dataLength - 4); + } + } + + io_->seek(cur_pos + size_external, BasicIo::beg); + } // QuickTimeVideo::NikonTagsDecoder + + void QuickTimeVideo::setMediaStream() + { + uint64_t current_position = io_->tell(); + DataBuf buf(4+1); + + while(!io_->eof()) { + io_->read(buf.pData_, 4); + if (equalsQTimeTag(buf, "hdlr")) { + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 4); + + if (equalsQTimeTag(buf, "vide")) + currentStream_ = Video; + else if(equalsQTimeTag(buf, "soun")) + currentStream_ = Audio; + else if (equalsQTimeTag(buf, "hint")) + currentStream_ = Hint; + else + currentStream_ = GenMediaHeader; + break; + } + } + + io_->seek(current_position, BasicIo::beg); + } // QuickTimeVideo::setMediaStream + + void QuickTimeVideo::timeToSampleDecoder() + { + DataBuf buf(4+1); + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 4); + uint64_t noOfEntries, totalframes = 0, timeOfFrames = 0; + noOfEntries = returnUnsignedBufValue(buf); + uint64_t temp; + + for(unsigned long i = 1; i <= noOfEntries; i++) { + io_->read(buf.pData_, 4); + temp = returnBufValue(buf); + totalframes += temp; + io_->read(buf.pData_, 4); + timeOfFrames += temp * returnBufValue(buf); + } + if (currentStream_ == Video) + xmpData_["Xmp.video.FrameRate"] = (double)totalframes * (double)timeScale_ / (double)timeOfFrames; + } // QuickTimeVideo::timeToSampleDecoder + + void QuickTimeVideo::sampleDesc(unsigned long size) + { + DataBuf buf(100); + uint64_t cur_pos = io_->tell(); + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 4); + uint64_t noOfEntries; + noOfEntries = returnUnsignedBufValue(buf); + + for(unsigned long i = 1; i <= noOfEntries; i++) { + if (currentStream_ == Video) + imageDescDecoder(); + else if (currentStream_ == Audio) + audioDescDecoder(); + } + io_->seek(cur_pos + size, BasicIo::beg); + } // QuickTimeVideo::sampleDesc + + void QuickTimeVideo::audioDescDecoder() + { + DataBuf buf(40); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + io_->read(buf.pData_, 4); + uint64_t size = 82; + + const TagVocabulary* td; + + for (int i = 0; size/4 != 0 ; size -= 4, i++) { + io_->read(buf.pData_, 4); + switch(i) { + case AudioFormat: + td = find(qTimeFileType, Exiv2::toString( buf.pData_)); + if(td) + xmpData_["Xmp.audio.Compressor"] = exvGettext(td->label_); + else + xmpData_["Xmp.audio.Compressor"] = Exiv2::toString( buf.pData_); + break; + case AudioVendorID: + td = find(vendorIDTags, Exiv2::toString( buf.pData_)); + if(td) + xmpData_["Xmp.audio.VendorID"] = exvGettext(td->label_); + break; + case AudioChannels: + xmpData_["Xmp.audio.ChannelType"] = returnBufValue(buf, 2); + xmpData_["Xmp.audio.BitsPerSample"] = (buf.pData_[2] * 256 + buf.pData_[3]); + break; + case AudioSampleRate: + xmpData_["Xmp.audio.SampleRate"] = returnBufValue(buf, 2) + ((buf.pData_[2] * 256 + buf.pData_[3]) * 0.01); + break; + default: + break; + } + } + io_->read(buf.pData_, static_cast(size % 4)); //cause size is so small, this cast should be right. + } // QuickTimeVideo::audioDescDecoder + + void QuickTimeVideo::imageDescDecoder() + { + DataBuf buf(40); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + io_->read(buf.pData_, 4); + uint64_t size = 82; + + const TagVocabulary* td; + + for (int i = 0; size/4 != 0 ; size -= 4, i++) { + io_->read(buf.pData_, 4); + + switch(i) { + case codec: + td = find(qTimeFileType, Exiv2::toString( buf.pData_)); + if(td) + xmpData_["Xmp.video.Codec"] = exvGettext(td->label_); + else + xmpData_["Xmp.video.Codec"] = Exiv2::toString( buf.pData_); + break; + case VendorID: + td = find(vendorIDTags, Exiv2::toString( buf.pData_)); + if(td) + xmpData_["Xmp.video.VendorID"] = exvGettext(td->label_); + break; + case SourceImageWidth_Height: + xmpData_["Xmp.video.SourceImageWidth"] = returnBufValue(buf, 2); + xmpData_["Xmp.video.SourceImageHeight"] = (buf.pData_[2] * 256 + buf.pData_[3]); + break; + case XResolution: + xmpData_["Xmp.video.XResolution"] = returnBufValue(buf, 2) + ((buf.pData_[2] * 256 + buf.pData_[3]) * 0.01); + break; + case YResolution: + xmpData_["Xmp.video.YResolution"] = returnBufValue(buf, 2) + ((buf.pData_[2] * 256 + buf.pData_[3]) * 0.01); + io_->read(buf.pData_, 3); size -= 3; + break; + case CompressorName: + io_->read(buf.pData_, 32); size -= 32; + xmpData_["Xmp.video.Compressor"] = Exiv2::toString( buf.pData_); + break; + default: + break; + } + } + io_->read(buf.pData_, static_cast(size % 4)); + xmpData_["Xmp.video.BitDepth"] = returnBufValue(buf, 1); + } // QuickTimeVideo::imageDescDecoder + + void QuickTimeVideo::multipleEntriesDecoder() + { + DataBuf buf(4+1); + io_->read(buf.pData_, 4); + io_->read(buf.pData_, 4); + uint64_t noOfEntries; + + noOfEntries = returnUnsignedBufValue(buf); + + for(unsigned long i = 1; i <= noOfEntries; i++) + decodeBlock(); + } // QuickTimeVideo::multipleEntriesDecoder + + void QuickTimeVideo::videoHeaderDecoder(unsigned long size) { + DataBuf buf(3); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[2] = '\0'; + currentStream_ = Video; + + const TagDetails* td; + + for (int i = 0; size/2 != 0 ; size -= 2, i++) { + io_->read(buf.pData_, 2); + + switch(i) { + case GraphicsMode: + td = find(graphicsModetags, returnBufValue(buf,2)); + if(td) + xmpData_["Xmp.video.GraphicsMode"] = exvGettext(td->label_); + break; + case OpColor: + xmpData_["Xmp.video.OpColor"] = returnBufValue(buf,2); + break; + default: + break; + } + } + io_->read(buf.pData_, size % 2); + } // QuickTimeVideo::videoHeaderDecoder + + void QuickTimeVideo::handlerDecoder(unsigned long size) + { + uint64_t cur_pos = io_->tell(); + DataBuf buf(100); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + + const TagVocabulary* tv; + + for (int i = 0; i < 5 ; i++) { + io_->read(buf.pData_, 4); + + switch(i) { + case HandlerClass: + tv = find(handlerClassTags, Exiv2::toString( buf.pData_)); + if(tv) { + if (currentStream_ == Video) + xmpData_["Xmp.video.HandlerClass"] = exvGettext(tv->label_); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.HandlerClass"] = exvGettext(tv->label_); + } + break; + case HandlerType: + tv = find(handlerTypeTags, Exiv2::toString( buf.pData_)); + if(tv) { + if (currentStream_ == Video) + xmpData_["Xmp.video.HandlerType"] = exvGettext(tv->label_); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.HandlerType"] = exvGettext(tv->label_); + } + break; + case HandlerVendorID: + tv = find(vendorIDTags, Exiv2::toString( buf.pData_)); + if(tv) { + if (currentStream_ == Video) + xmpData_["Xmp.video.HandlerVendorID"] = exvGettext(tv->label_); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.HandlerVendorID"] = exvGettext(tv->label_); + } + break; + } + } + io_->seek(cur_pos + size, BasicIo::beg); + } // QuickTimeVideo::handlerDecoder + + void QuickTimeVideo::fileTypeDecoder(unsigned long size) { + DataBuf buf(5); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpSeq); + const TagVocabulary* td; + + for (int i = 0; size/4 != 0; size -=4, i++) { + io_->read(buf.pData_, 4); + td = find(qTimeFileType, Exiv2::toString( buf.pData_)); + + switch(i) { + case 0: + if(td) + xmpData_["Xmp.video.MajorBrand"] = exvGettext(td->label_); + break; + case 1: + xmpData_["Xmp.video.MinorVersion"] = returnBufValue(buf); + break; + default: + if(td) + v->read(exvGettext(td->label_)); + else + v->read(Exiv2::toString(buf.pData_)); + break; + } + } + xmpData_.add(Exiv2::XmpKey("Xmp.video.CompatibleBrands"), v.get()); + io_->read(buf.pData_, size%4); + } // QuickTimeVideo::fileTypeDecoder + + void QuickTimeVideo::mediaHeaderDecoder(unsigned long size) { + DataBuf buf(5); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + int64_t time_scale = 1; + + for (int i = 0; size/4 != 0 ; size -=4, i++) { + io_->read(buf.pData_, 4); + + switch(i) { + case MediaHeaderVersion: + if(currentStream_ == Video) + xmpData_["Xmp.video.MediaHeaderVersion"] = returnBufValue(buf,1); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.MediaHeaderVersion"] = returnBufValue(buf,1); + break; + case MediaCreateDate: + //A 32-bit integer that specifies (in seconds since midnight, January 1, 1904) when the movie atom was created. + if(currentStream_ == Video) + xmpData_["Xmp.video.MediaCreateDate"] = returnUnsignedBufValue(buf); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.MediaCreateDate"] = returnUnsignedBufValue(buf); + break; + case MediaModifyDate: + //A 32-bit integer that specifies (in seconds since midnight, January 1, 1904) when the movie atom was created. + if(currentStream_ == Video) + xmpData_["Xmp.video.MediaModifyDate"] = returnUnsignedBufValue(buf); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.MediaModifyDate"] = returnUnsignedBufValue(buf); + break; + case MediaTimeScale: + if(currentStream_ == Video) + xmpData_["Xmp.video.MediaTimeScale"] = returnBufValue(buf); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.MediaTimeScale"] = returnBufValue(buf); + time_scale = returnBufValue(buf); + if (time_scale <= 0) + time_scale = 1; + break; + case MediaDuration: + if(currentStream_ == Video) + xmpData_["Xmp.video.MediaDuration"] = time_scale ? returnBufValue(buf)/time_scale : 0 ; + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.MediaDuration"] = time_scale ? returnBufValue(buf)/time_scale : 0; + break; + case MediaLanguageCode: + if(currentStream_ == Video) + xmpData_["Xmp.video.MediaLangCode"] = returnUnsignedBufValue(buf,2); + else if (currentStream_ == Audio) + xmpData_["Xmp.audio.MediaLangCode"] = returnUnsignedBufValue(buf,2); + break; + + default: + break; + } + } + io_->read(buf.pData_, size%4); + } // QuickTimeVideo::mediaHeaderDecoder + + void QuickTimeVideo::trackHeaderDecoder(unsigned long size) { + DataBuf buf(5); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + int64_t temp = 0; + + for (int i = 0; size/4 != 0 ; size -=4, i++) { + io_->read(buf.pData_, 4); + + switch(i) { + case TrackHeaderVersion: + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackHeaderVersion"] = returnBufValue(buf,1); + else if(currentStream_ == Audio) + xmpData_["Xmp.audio.TrackHeaderVersion"] = returnBufValue(buf,1); + break; + case TrackCreateDate: + //A 32-bit integer that specifies (in seconds since midnight, January 1, 1904) when the movie atom was created. + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackCreateDate"] = returnUnsignedBufValue(buf); + else if(currentStream_ == Audio) + xmpData_["Xmp.audio.TrackCreateDate"] = returnUnsignedBufValue(buf); + break; + case TrackModifyDate: + //A 32-bit integer that specifies (in seconds since midnight, January 1, 1904) when the movie atom was created. + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackModifyDate"] = returnUnsignedBufValue(buf); + else if(currentStream_ == Audio) + xmpData_["Xmp.audio.TrackModifyDate"] = returnUnsignedBufValue(buf); + break; + case TrackID: + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackID"] = returnBufValue(buf); + else if(currentStream_ == Audio) + xmpData_["Xmp.audio.TrackID"] = returnBufValue(buf); + break; + case TrackDuration: + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackDuration"] = timeScale_ ? returnBufValue(buf)/timeScale_ : 0; + else if(currentStream_ == Audio) + xmpData_["Xmp.audio.TrackDuration"] = timeScale_ ? returnBufValue(buf)/timeScale_ : 0; + break; + case TrackLayer: + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackLayer"] = returnBufValue(buf, 2); + else if(currentStream_ == Audio) + xmpData_["Xmp.audio.TrackLayer"] = returnBufValue(buf, 2); + break; + case TrackVolume: + if(currentStream_ == Video) + xmpData_["Xmp.video.TrackVolume"] = (returnBufValue(buf, 1) + (buf.pData_[2] * 0.1)) * 100; + else if(currentStream_ == Audio) + xmpData_["Xmp.video.TrackVolume"] = (returnBufValue(buf, 1) + (buf.pData_[2] * 0.1)) * 100; + break; + case ImageWidth: + if(currentStream_ == Video) { + temp = returnBufValue(buf, 2) + static_cast((buf.pData_[2] * 256 + buf.pData_[3]) * 0.01); + xmpData_["Xmp.video.Width"] = temp; + width_ = temp; + } + break; + case ImageHeight: + if(currentStream_ == Video) { + temp = returnBufValue(buf, 2) + static_cast((buf.pData_[2] * 256 + buf.pData_[3]) * 0.01); + xmpData_["Xmp.video.Height"] = temp; + height_ = temp; + } + break; + default: + break; + } + } + io_->read(buf.pData_, size%4); + } // QuickTimeVideo::trackHeaderDecoder + + void QuickTimeVideo::movieHeaderDecoder(unsigned long size) { + DataBuf buf(5); + std::memset(buf.pData_, 0x0, buf.size_); + buf.pData_[4] = '\0'; + + for (int i = 0; size/4 != 0 ; size -=4, i++) { + io_->read(buf.pData_, 4); + + switch(i) { + case MovieHeaderVersion: + xmpData_["Xmp.video.MovieHeaderVersion"] = returnBufValue(buf,1); break; + case CreateDate: + //A 32-bit integer that specifies (in seconds since midnight, January 1, 1904) when the movie atom was created. + xmpData_["Xmp.video.DateUTC"] = returnUnsignedBufValue(buf); break; + case ModifyDate: + //A 32-bit integer that specifies (in seconds since midnight, January 1, 1904) when the movie atom was created. + xmpData_["Xmp.video.ModificationDate"] = returnUnsignedBufValue(buf); break; + case TimeScale: + xmpData_["Xmp.video.TimeScale"] = returnBufValue(buf); + timeScale_ = returnBufValue(buf); + if (timeScale_ <= 0) timeScale_ = 1; + break; + case Duration: + if(timeScale_ != 0) // To prevent division by zero + xmpData_["Xmp.video.Duration"] = returnBufValue(buf) * 1000 / timeScale_; break; + case PreferredRate: + xmpData_["Xmp.video.PreferredRate"] = returnBufValue(buf, 2) + ((buf.pData_[2] * 256 + buf.pData_[3]) * 0.01); break; + case PreferredVolume: + xmpData_["Xmp.video.PreferredVolume"] = (returnBufValue(buf, 1) + (buf.pData_[2] * 0.1)) * 100; break; + case PreviewTime: + xmpData_["Xmp.video.PreviewTime"] = returnBufValue(buf); break; + case PreviewDuration: + xmpData_["Xmp.video.PreviewDuration"] = returnBufValue(buf); break; + case PosterTime: + xmpData_["Xmp.video.PosterTime"] = returnBufValue(buf); break; + case SelectionTime: + xmpData_["Xmp.video.SelectionTime"] = returnBufValue(buf); break; + case SelectionDuration: + xmpData_["Xmp.video.SelectionDuration"] = returnBufValue(buf); break; + case CurrentTime: + xmpData_["Xmp.video.CurrentTime"] = returnBufValue(buf); break; + case NextTrackID: + xmpData_["Xmp.video.NextTrackID"] = returnBufValue(buf); break; + default: + break; + } + } + io_->read(buf.pData_, size%4); + } // QuickTimeVideo::movieHeaderDecoder + + void QuickTimeVideo::aspectRatio() + { + //TODO - Make a better unified method to handle all cases of Aspect Ratio + + double aspectRatio = (double)width_ / (double)height_; + aspectRatio = floor(aspectRatio*10) / 10; + xmpData_["Xmp.video.AspectRatio"] = aspectRatio; + + int aR = (int) ((aspectRatio*10.0)+0.1); + + switch (aR) { + case 13 : xmpData_["Xmp.video.AspectRatio"] = "4:3" ; break; + case 17 : xmpData_["Xmp.video.AspectRatio"] = "16:9" ; break; + case 10 : xmpData_["Xmp.video.AspectRatio"] = "1:1" ; break; + case 16 : xmpData_["Xmp.video.AspectRatio"] = "16:10" ; break; + case 22 : xmpData_["Xmp.video.AspectRatio"] = "2.21:1" ; break; + case 23 : xmpData_["Xmp.video.AspectRatio"] = "2.35:1" ; break; + case 12 : xmpData_["Xmp.video.AspectRatio"] = "5:4" ; break; + default : xmpData_["Xmp.video.AspectRatio"] = aspectRatio;break; + } + } // QuickTimeVideo::aspectRatio + + + Image::AutoPtr newQTimeInstance(BasicIo::AutoPtr io, bool /*create*/) { + Image::AutoPtr image(new QuickTimeVideo(io)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isQTimeType(BasicIo& iIo, bool advance) { + const int32_t len = 4; + byte buf[len]; + iIo.read(buf, len); + iIo.read(buf, len); + + if (iIo.error() || iIo.eof()) { + return false; + } + + bool matched = isQuickTimeType(buf[0], buf[1], buf[2], buf[3]); + if (!advance || !matched) { + iIo.seek(static_cast(0), BasicIo::beg); + } + + return matched; + } + +} // namespace Exiv2 +#endif // EXV_ENABLE_VIDEO diff --git a/vendor/exiv2-0.25/src/rafimage.cpp b/vendor/exiv2-0.25/src/rafimage.cpp new file mode 100644 index 0000000..cfcc124 --- /dev/null +++ b/vendor/exiv2-0.25/src/rafimage.cpp @@ -0,0 +1,160 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: rafimage.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 05-Feb-07, ahu: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: rafimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "rafimage.hpp" +#include "tiffimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + RafImage::RafImage(BasicIo::AutoPtr io, bool /*create*/) + : Image(ImageType::raf, mdExif | mdIptc | mdXmp, io) + { + } // RafImage::RafImage + + std::string RafImage::mimeType() const + { + return "image/x-fuji-raf"; + } + + int RafImage::pixelWidth() const + { + Exiv2::ExifData::const_iterator widthIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelXDimension")); + if (widthIter != exifData_.end() && widthIter->count() > 0) { + return widthIter->toLong(); + } + return 0; + } + + int RafImage::pixelHeight() const + { + Exiv2::ExifData::const_iterator heightIter = exifData_.findKey(Exiv2::ExifKey("Exif.Photo.PixelYDimension")); + if (heightIter != exifData_.end() && heightIter->count() > 0) { + return heightIter->toLong(); + } + return 0; + } + + void RafImage::setExifData(const ExifData& /*exifData*/) + { + // Todo: implement me! + throw(Error(32, "Exif metadata", "RAF")); + } + + void RafImage::setIptcData(const IptcData& /*iptcData*/) + { + // Todo: implement me! + throw(Error(32, "IPTC metadata", "RAF")); + } + + void RafImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "RAF")); + } + + void RafImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading RAF file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isRafType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "RAF"); + } + byte const* pData = io_->mmap(); + long size = io_->size(); + if (size < 88 + 4) throw Error(14); // includes the test for -1 + uint32_t const start = getULong(pData + 84, bigEndian) + 12; + if (static_cast(size) < start) throw Error(14); + clearMetadata(); + ByteOrder bo = TiffParser::decode(exifData_, + iptcData_, + xmpData_, + pData + start, + size - start); + + exifData_["Exif.Image2.JPEGInterchangeFormat"] = getULong(pData + 84, bigEndian); + exifData_["Exif.Image2.JPEGInterchangeFormatLength"] = getULong(pData + 88, bigEndian); + + setByteOrder(bo); + } // RafImage::readMetadata + + void RafImage::writeMetadata() + { + //! Todo: implement me! + throw(Error(31, "RAF")); + } // RafImage::writeMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newRafInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new RafImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isRafType(BasicIo& iIo, bool advance) + { + const int32_t len = 8; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + int rc = memcmp(buf, "FUJIFILM", 8); + if (!advance || rc != 0) { + iIo.seek(-len, BasicIo::cur); + } + return rc == 0; + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/rcsid_int.hpp b/vendor/exiv2-0.25/src/rcsid_int.hpp new file mode 100644 index 0000000..3c1cd2f --- /dev/null +++ b/vendor/exiv2-0.25/src/rcsid_int.hpp @@ -0,0 +1,67 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file rcsid_int.hpp + @brief Define an RCS id string in every object file compiled from a source + file that includes rcsid_int.hpp. + + This is a simplified version of the ACE_RCSID macro that is used in the + ACE(TM) distribution. + + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 02-Feb-04, ahu: created + */ +#ifndef RCSID_INT_HPP_ +#define RCSID_INT_HPP_ + +#if !defined (EXIV2_RCSID) +/*! + @brief Macro to store version information in each object file. + + Use this macro by including the following two lines at the beginning of + each *.cpp file. See the ident(1) manual pages for more information. + + @code + #include "rcsid_int.hpp" + EXIV2_RCSID("@(#) $Id$"); + @endcode + + The macro hack itself has the following purposes: + -# To define the RCS id string variable in the local namespace, so + that there won't be any duplicate extern symbols at link time. + -# To avoid warnings of the type "variable declared and never used". + + */ + +#if (defined(__GNUG__) || defined(__GNUC__) || defined (_MSC_VER)) && ! defined(__clang__) +#define EXIV2_RCSID(id) \ + namespace { \ + inline const char* getRcsId(const char*) { return id ; } \ + const char* rcsId = getRcsId(rcsId); \ + } +#else +#define EXIV2_RCSID(id) +#endif + +#endif // #if !defined (EXIV2_RCSID) +#endif // #ifndef RCSID_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/riffvideo.cpp b/vendor/exiv2-0.25/src/riffvideo.cpp new file mode 100644 index 0000000..63875a2 --- /dev/null +++ b/vendor/exiv2-0.25/src/riffvideo.cpp @@ -0,0 +1,1255 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: riffvideo.cpp + Version: $Rev: 3845 $ + Author(s): Abhinav Badola for GSoC 2012 (AB) + History: 18-Jun-12, AB: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: riffvideo.cpp 3845 2015-06-07 16:29:06Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "config.h" + +#ifdef EXV_ENABLE_VIDEO +#include "riffvideo.hpp" +#include "futils.hpp" +#include "basicio.hpp" +#include "tags.hpp" +#include "tags_int.hpp" +#include "types.hpp" +#include "tiffimage_int.hpp" +// + standard includes +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + /*! + @brief Dummy TIFF header structure. + */ + class DummyTiffHeader : public TiffHeaderBase { + public: + //! @name Creators + //@{ + //! Default constructor + DummyTiffHeader(ByteOrder byteOrder); + //! Destructor + ~DummyTiffHeader(); + //@} + + //! @name Manipulators + //@{ + //! Dummy read function. Does nothing and returns true. + bool read(const byte* pData, uint32_t size); + //@} + + }; // class TiffHeader + + DummyTiffHeader::DummyTiffHeader(ByteOrder byteOrder) + : TiffHeaderBase(42, 0, byteOrder, 0) + { + } + + DummyTiffHeader::~DummyTiffHeader() + { + } + + bool DummyTiffHeader::read(const byte* /*pData*/, uint32_t /*size*/) + { + return true; + } + + extern const TagVocabulary infoTags[] = { + { "AGES", "Xmp.video.Rated" }, + { "CMNT", "Xmp.video.Comment" }, + { "CODE", "Xmp.video.EncodedBy" }, + { "COMM", "Xmp.video.Comment" }, + { "DIRC", "Xmp.video.Director" }, + { "DISP", "Xmp.audio.SchemeTitle" }, + { "DTIM", "Xmp.video.DateTimeOriginal" }, + { "GENR", "Xmp.video.Genre" }, + { "IARL", "Xmp.video.ArchivalLocation" }, + { "IART", "Xmp.video.Artist" }, + { "IAS1", "Xmp.video.Edit1" }, + { "IAS2", "Xmp.video.Edit2" }, + { "IAS3", "Xmp.video.Edit3" }, + { "IAS4", "Xmp.video.Edit4" }, + { "IAS5", "Xmp.video.Edit5" }, + { "IAS6", "Xmp.video.Edit6" }, + { "IAS7", "Xmp.video.Edit7" }, + { "IAS8", "Xmp.video.Edit8" }, + { "IAS9", "Xmp.video.Edit9" }, + { "IBSU", "Xmp.video.BaseURL" }, + { "ICAS", "Xmp.audio.DefaultStream" }, + { "ICDS", "Xmp.video.CostumeDesigner" }, + { "ICMS", "Xmp.video.Commissioned" }, + { "ICMT", "Xmp.video.Comment" }, + { "ICNM", "Xmp.video.Cinematographer" }, + { "ICNT", "Xmp.video.Country" }, + { "ICOP", "Xmp.video.Copyright" }, + { "ICRD", "Xmp.video.DateTimeDigitized" }, + { "ICRP", "Xmp.video.Cropped" }, + { "IDIM", "Xmp.video.Dimensions" }, + { "IDPI", "Xmp.video.DotsPerInch" }, + { "IDST", "Xmp.video.DistributedBy" }, + { "IEDT", "Xmp.video.EditedBy" }, + { "IENC", "Xmp.video.EncodedBy" }, + { "IENG", "Xmp.video.Engineer" }, + { "IGNR", "Xmp.video.Genre" }, + { "IKEY", "Xmp.video.PerformerKeywords" }, + { "ILGT", "Xmp.video.Lightness" }, + { "ILGU", "Xmp.video.LogoURL" }, + { "ILIU", "Xmp.video.LogoIconURL" }, + { "ILNG", "Xmp.video.Language" }, + { "IMBI", "Xmp.video.InfoBannerImage" }, + { "IMBU", "Xmp.video.InfoBannerURL" }, + { "IMED", "Xmp.video.Medium" }, + { "IMIT", "Xmp.video.InfoText" }, + { "IMIU", "Xmp.video.InfoURL" }, + { "IMUS", "Xmp.video.MusicBy" }, + { "INAM", "Xmp.video.Title" }, + { "IPDS", "Xmp.video.ProductionDesigner" }, + { "IPLT", "Xmp.video.NumOfColors" }, + { "IPRD", "Xmp.video.Product" }, + { "IPRO", "Xmp.video.ProducedBy" }, + { "IRIP", "Xmp.video.RippedBy" }, + { "IRTD", "Xmp.video.Rating" }, + { "ISBJ", "Xmp.video.Subject" }, + { "ISFT", "Xmp.video.Software" }, + { "ISGN", "Xmp.video.SecondaryGenre" }, + { "ISHP", "Xmp.video.Sharpness" }, + { "ISRC", "Xmp.video.Source" }, + { "ISRF", "Xmp.video.SourceForm" }, + { "ISTD", "Xmp.video.ProductionStudio" }, + { "ISTR", "Xmp.video.Starring" }, + { "ITCH", "Xmp.video.Technician" }, + { "IWMU", "Xmp.video.WatermarkURL" }, + { "IWRI", "Xmp.video.WrittenBy" }, + { "LANG", "Xmp.video.Language" }, + { "LOCA", "Xmp.video.LocationInfo" }, + { "PRT1", "Xmp.video.Part" }, + { "PRT2", "Xmp.video.NumOfParts" }, + { "RATE", "Xmp.video.Rate" }, + { "STAR", "Xmp.video.Starring" }, + { "STAT", "Xmp.video.Statistics" }, + { "TAPE", "Xmp.video.TapeName" }, + { "TCDO", "Xmp.video.EndTimecode" }, + { "TCOD", "Xmp.video.StartTimecode" }, + { "TITL", "Xmp.video.Title" }, + { "TLEN", "Xmp.video.Length" }, + { "TORG", "Xmp.video.Organization" }, + { "TRCK", "Xmp.video.TrackNumber" }, + { "TURL", "Xmp.video.URL" }, + { "TVER", "Xmp.video.SoftwareVersion" }, + { "VMAJ", "Xmp.video.VegasVersionMajor" }, + { "VMIN", "Xmp.video.VegasVersionMinor" }, + { "YEAR", "Xmp.video.Year" } + }; + + extern const TagDetails audioEncodingValues[] = { + { 0x1, "Microsoft PCM" }, + { 0x2, "Microsoft ADPCM" }, + { 0x3, "Microsoft IEEE float" }, + { 0x4, "Compaq VSELP" }, + { 0x5, "IBM CVSD" }, + { 0x6, "Microsoft a-Law" }, + { 0x7, "Microsoft u-Law" }, + { 0x8, "Microsoft DTS" }, + { 0x9, "DRM" }, + { 0xa, "WMA 9 Speech" }, + { 0xb, "Microsoft Windows Media RT Voice" }, + { 0x10, "OKI-ADPCM" }, + { 0x11, "Intel IMA/DVI-ADPCM" }, + { 0x12, "Videologic Mediaspace ADPCM" }, + { 0x13, "Sierra ADPCM" }, + { 0x14, "Antex G.723 ADPCM" }, + { 0x15, "DSP Solutions DIGISTD" }, + { 0x16, "DSP Solutions DIGIFIX" }, + { 0x17, "Dialoic OKI ADPCM" }, + { 0x18, "Media Vision ADPCM" }, + { 0x19, "HP CU" }, + { 0x1a, "HP Dynamic Voice" }, + { 0x20, "Yamaha ADPCM" }, + { 0x21, "SONARC Speech Compression" }, + { 0x22, "DSP Group True Speech" }, + { 0x23, "Echo Speech Corp." }, + { 0x24, "Virtual Music Audiofile AF36" }, + { 0x25, "Audio Processing Tech." }, + { 0x26, "Virtual Music Audiofile AF10" }, + { 0x27, "Aculab Prosody 1612" }, + { 0x28, "Merging Tech. LRC" }, + { 0x30, "Dolby AC2" }, + { 0x31, "Microsoft GSM610" }, + { 0x32, "MSN Audio" }, + { 0x33, "Antex ADPCME" }, + { 0x34, "Control Resources VQLPC" }, + { 0x35, "DSP Solutions DIGIREAL" }, + { 0x36, "DSP Solutions DIGIADPCM" }, + { 0x37, "Control Resources CR10" }, + { 0x38, "Natural MicroSystems VBX ADPCM" }, + { 0x39, "Crystal Semiconductor IMA ADPCM" }, + { 0x3a, "Echo Speech ECHOSC3" }, + { 0x3b, "Rockwell ADPCM" }, + { 0x3c, "Rockwell DIGITALK" }, + { 0x3d, "Xebec Multimedia" }, + { 0x40, "Antex G.721 ADPCM" }, + { 0x41, "Antex G.728 CELP" }, + { 0x42, "Microsoft MSG723" }, + { 0x43, "IBM AVC ADPCM" }, + { 0x45, "ITU-T G.726" }, + { 0x50, "Microsoft MPEG" }, + { 0x51, "RT23 or PAC" }, + { 0x52, "InSoft RT24" }, + { 0x53, "InSoft PAC" }, + { 0x55, "MP3" }, + { 0x59, "Cirrus" }, + { 0x60, "Cirrus Logic" }, + { 0x61, "ESS Tech. PCM" }, + { 0x62, "Voxware Inc." }, + { 0x63, "Canopus ATRAC" }, + { 0x64, "APICOM G.726 ADPCM" }, + { 0x65, "APICOM G.722 ADPCM" }, + { 0x66, "Microsoft DSAT" }, + { 0x67, "Micorsoft DSAT DISPLAY" }, + { 0x69, "Voxware Byte Aligned" }, + { 0x70, "Voxware AC8" }, + { 0x71, "Voxware AC10" }, + { 0x72, "Voxware AC16" }, + { 0x73, "Voxware AC20" }, + { 0x74, "Voxware MetaVoice" }, + { 0x75, "Voxware MetaSound" }, + { 0x76, "Voxware RT29HW" }, + { 0x77, "Voxware VR12" }, + { 0x78, "Voxware VR18" }, + { 0x79, "Voxware TQ40" }, + { 0x7a, "Voxware SC3" }, + { 0x7b, "Voxware SC3" }, + { 0x80, "Soundsoft" }, + { 0x81, "Voxware TQ60" }, + { 0x82, "Microsoft MSRT24" }, + { 0x83, "AT&T G.729A" }, + { 0x84, "Motion Pixels MVI MV12" }, + { 0x85, "DataFusion G.726" }, + { 0x86, "DataFusion GSM610" }, + { 0x88, "Iterated Systems Audio" }, + { 0x89, "Onlive" }, + { 0x8a, "Multitude, Inc. FT SX20" }, + { 0x8b, "Infocom ITS A/S G.721 ADPCM" }, + { 0x8c, "Convedia G729" }, + { 0x8d, "Not specified congruency, Inc." }, + { 0x91, "Siemens SBC24" }, + { 0x92, "Sonic Foundry Dolby AC3 APDIF" }, + { 0x93, "MediaSonic G.723" }, + { 0x94, "Aculab Prosody 8kbps" }, + { 0x97, "ZyXEL ADPCM" }, + { 0x98, "Philips LPCBB" }, + { 0x99, "Studer Professional Audio Packed" }, + { 0xa0, "Malden PhonyTalk" }, + { 0xa1, "Racal Recorder GSM" }, + { 0xa2, "Racal Recorder G720.a" }, + { 0xa3, "Racal G723.1" }, + { 0xa4, "Racal Tetra ACELP" }, + { 0xb0, "NEC AAC NEC Corporation" }, + { 0xff, "AAC" }, + { 0x100, "Rhetorex ADPCM" }, + { 0x101, "IBM u-Law" }, + { 0x102, "IBM a-Law" }, + { 0x103, "IBM ADPCM" }, + { 0x111, "Vivo G.723" }, + { 0x112, "Vivo Siren" }, + { 0x120, "Philips Speech Processing CELP" }, + { 0x121, "Philips Speech Processing GRUNDIG" }, + { 0x123, "Digital G.723" }, + { 0x125, "Sanyo LD ADPCM" }, + { 0x130, "Sipro Lab ACEPLNET" }, + { 0x131, "Sipro Lab ACELP4800" }, + { 0x132, "Sipro Lab ACELP8V3" }, + { 0x133, "Sipro Lab G.729" }, + { 0x134, "Sipro Lab G.729A" }, + { 0x135, "Sipro Lab Kelvin" }, + { 0x136, "VoiceAge AMR" }, + { 0x140, "Dictaphone G.726 ADPCM" }, + { 0x150, "Qualcomm PureVoice" }, + { 0x151, "Qualcomm HalfRate" }, + { 0x155, "Ring Zero Systems TUBGSM" }, + { 0x160, "Microsoft Audio1" }, + { 0x161, "Windows Media Audio V2 V7 V8 V9 / DivX audio (WMA) / Alex AC3 Audio" }, + { 0x162, "Windows Media Audio Professional V9" }, + { 0x163, "Windows Media Audio Lossless V9" }, + { 0x164, "WMA Pro over S/PDIF" }, + { 0x170, "UNISYS NAP ADPCM" }, + { 0x171, "UNISYS NAP ULAW" }, + { 0x172, "UNISYS NAP ALAW" }, + { 0x173, "UNISYS NAP 16K" }, + { 0x174, "MM SYCOM ACM SYC008 SyCom Technologies" }, + { 0x175, "MM SYCOM ACM SYC701 G726L SyCom Technologies" }, + { 0x176, "MM SYCOM ACM SYC701 CELP54 SyCom Technologies" }, + { 0x177, "MM SYCOM ACM SYC701 CELP68 SyCom Technologies" }, + { 0x178, "Knowledge Adventure ADPCM" }, + { 0x180, "Fraunhofer IIS MPEG2AAC" }, + { 0x190, "Digital Theater Systems DTS DS" }, + { 0x200, "Creative Labs ADPCM" }, + { 0x202, "Creative Labs FASTSPEECH8" }, + { 0x203, "Creative Labs FASTSPEECH10" }, + { 0x210, "UHER ADPCM" }, + { 0x215, "Ulead DV ACM" }, + { 0x216, "Ulead DV ACM" }, + { 0x220, "Quarterdeck Corp." }, + { 0x230, "I-Link VC" }, + { 0x240, "Aureal Semiconductor Raw Sport" }, + { 0x241, "ESST AC3" }, + { 0x250, "Interactive Products HSX" }, + { 0x251, "Interactive Products RPELP" }, + { 0x260, "Consistent CS2" }, + { 0x270, "Sony SCX" }, + { 0x271, "Sony SCY" }, + { 0x272, "Sony ATRAC3" }, + { 0x273, "Sony SPC" }, + { 0x280, "TELUM Telum Inc." }, + { 0x281, "TELUMIA Telum Inc." }, + { 0x285, "Norcom Voice Systems ADPCM" }, + { 0x300, "Fujitsu FM TOWNS SND" }, + { 0x301, "Fujitsu (not specified)" }, + { 0x302, "Fujitsu (not specified)" }, + { 0x303, "Fujitsu (not specified)" }, + { 0x304, "Fujitsu (not specified)" }, + { 0x305, "Fujitsu (not specified)" }, + { 0x306, "Fujitsu (not specified)" }, + { 0x307, "Fujitsu (not specified)" }, + { 0x308, "Fujitsu (not specified)" }, + { 0x350, "Micronas Semiconductors, Inc. Development" }, + { 0x351, "Micronas Semiconductors, Inc. CELP833" }, + { 0x400, "Brooktree Digital" }, + { 0x401, "Intel Music Coder (IMC)" }, + { 0x402, "Ligos Indeo Audio" }, + { 0x450, "QDesign Music" }, + { 0x500, "On2 VP7 On2 Technologies" }, + { 0x501, "On2 VP6 On2 Technologies" }, + { 0x680, "AT&T VME VMPCM" }, + { 0x681, "AT&T TCP" }, + { 0x700, "YMPEG Alpha (dummy for MPEG-2 compressor)" }, + { 0x8ae, "ClearJump LiteWave (lossless)" }, + { 0x1000, "Olivetti GSM" }, + { 0x1001, "Olivetti ADPCM" }, + { 0x1002, "Olivetti CELP" }, + { 0x1003, "Olivetti SBC" }, + { 0x1004, "Olivetti OPR" }, + { 0x1100, "Lernout & Hauspie" }, + { 0x1101, "Lernout & Hauspie CELP codec" }, + { 0x1102, "Lernout & Hauspie SBC codec" }, + { 0x1103, "Lernout & Hauspie SBC codec" }, + { 0x1104, "Lernout & Hauspie SBC codec" }, + { 0x1400, "Norris Comm. Inc." }, + { 0x1401, "ISIAudio" }, + { 0x1500, "AT&T Soundspace Music Compression" }, + { 0x181c, "VoxWare RT24 speech codec" }, + { 0x181e, "Lucent elemedia AX24000P Music codec" }, + { 0x1971, "Sonic Foundry LOSSLESS" }, + { 0x1979, "Innings Telecom Inc. ADPCM" }, + { 0x1c07, "Lucent SX8300P speech codec" }, + { 0x1c0c, "Lucent SX5363S G.723 compliant codec" }, + { 0x1f03, "CUseeMe DigiTalk (ex-Rocwell)" }, + { 0x1fc4, "NCT Soft ALF2CD ACM" }, + { 0x2000, "FAST Multimedia DVM" }, + { 0x2001, "Dolby DTS (Digital Theater System)" }, + { 0x2002, "RealAudio 1 / 2 14.4" }, + { 0x2003, "RealAudio 1 / 2 28.8" }, + { 0x2004, "RealAudio G2 / 8 Cook (low bitrate)" }, + { 0x2005, "RealAudio 3 / 4 / 5 Music (DNET)" }, + { 0x2006, "RealAudio 10 AAC (RAAC)" }, + { 0x2007, "RealAudio 10 AAC+ (RACP)" }, + { 0x2500, "Reserved range to 0x2600 Microsoft" }, + { 0x3313, "makeAVIS (ffvfw fake AVI sound from AviSynth scripts)" }, + { 0x4143, "Divio MPEG-4 AAC audio" }, + { 0x4201, "Nokia adaptive multirate" }, + { 0x4243, "Divio G726 Divio, Inc." }, + { 0x434c, "LEAD Speech" }, + { 0x564c, "LEAD Vorbis" }, + { 0x5756, "WavPack Audio" }, + { 0x674f, "Ogg Vorbis (mode 1)" }, + { 0x6750, "Ogg Vorbis (mode 2)" }, + { 0x6751, "Ogg Vorbis (mode 3)" }, + { 0x676f, "Ogg Vorbis (mode 1+)" }, + { 0x6770, "Ogg Vorbis (mode 2+)" }, + { 0x6771, "Ogg Vorbis (mode 3+)" }, + { 0x7000, "3COM NBX 3Com Corporation" }, + { 0x706d, "FAAD AAC" }, + { 0x7a21, "GSM-AMR (CBR, no SID)" }, + { 0x7a22, "GSM-AMR (VBR, including SID)" }, + { 0xa100, "Comverse Infosys Ltd. G723 1" }, + { 0xa101, "Comverse Infosys Ltd. AVQSBC" }, + { 0xa102, "Comverse Infosys Ltd. OLDSBC" }, + { 0xa103, "Symbol Technologies G729A" }, + { 0xa104, "VoiceAge AMR WB VoiceAge Corporation" }, + { 0xa105, "Ingenient Technologies Inc. G726" }, + { 0xa106, "ISO/MPEG-4 advanced audio Coding" }, + { 0xa107, "Encore Software Ltd G726" }, + { 0xa109, "Speex ACM Codec xiph.org" }, + { 0xdfac, "DebugMode SonicFoundry Vegas FrameServer ACM Codec" }, + { 0xe708, "Unknown -" }, + { 0xf1ac, "Free Lossless Audio Codec FLAC" }, + { 0xfffe, "Extensible" }, + { 0xffff, "Development" } + }; + + extern const TagDetails nikonAVITags[] = { + { 0x0003, "Xmp.video.Make" }, + { 0x0004, "Xmp.video.Model" }, + { 0x0005, "Xmp.video.Software" }, + { 0x0006, "Xmp.video.Equipment" }, + { 0x0007, "Xmp.video.Orientation" }, + { 0x0008, "Xmp.video.ExposureTime" }, + { 0x0009, "Xmp.video.FNumber" }, + { 0x000a, "Xmp.video.ExposureCompensation" }, + { 0x000b, "Xmp.video.MaxApertureValue" }, + { 0x000c, "Xmp.video.MeteringMode" }, + { 0x000f, "Xmp.video.FocalLength" }, + { 0x0010, "Xmp.video.XResolution" }, + { 0x0011, "Xmp.video.YResolution" }, + { 0x0012, "Xmp.video.ResolutionUnit" }, + { 0x0013, "Xmp.video.DateTimeOriginal" }, + { 0x0014, "Xmp.video.DateTimeDigitized" }, + { 0x0016, "Xmp.video.duration" }, + { 0x0018, "Xmp.video.FocusMode" }, + { 0x001b, "Xmp.video.DigitalZoomRatio" }, + { 0x001d, "Xmp.video.ColorMode" }, + { 0x001e, "Xmp.video.Sharpness" }, + { 0x001f, "Xmp.video.WhiteBalance" }, + { 0x0020, "Xmp.video.ColorNoiseReduction" } + }; + + /* + extern const TagDetails orientation[] = { + { 1, "Horizontal (normal)" }, + { 2, "Mirror horizontal" }, + { 3, "Rotate 180" }, + { 4, "Mirror vertical" }, + { 5, "Mirror horizontal and rotate 270 CW" }, + { 6, "Rotate 90 CW" }, + { 7, "Mirror horizontal and rotate 90 CW" }, + { 8, "Rotate 270 CW" } + }; + */ + extern const TagDetails meteringMode[] = { + { 0, "Unknown" }, + { 1, "Average" }, + { 2, "Center-weighted average" }, + { 3, "Spot" }, + { 4, "Multi-spot" }, + { 5, "Multi-segment" }, + { 6, "Partial" }, + { 255, "Other" } + }; + + extern const TagDetails resolutionUnit[] = { + { 1, "None" }, + { 2, "inches" }, + { 3, "cm" } + }; + + /*! + @brief Function used to check equality of a Tags with a + particular string (ignores case while comparing). + @param buf Data buffer that will contain Tag to compare + @param str char* Pointer to string + @return Returns true if the buffer value is equal to string. + */ + bool equalsRiffTag(Exiv2::DataBuf& buf ,const char* str) { + for(int i = 0; i < 4; i++ ) + if(toupper(buf.pData_[i]) != str[i]) + return false; + return true; + } + + enum streamTypeInfo { + Audio = 1, MIDI, Text, Video + }; + enum streamHeaderTags { + codec = 1, sampleRate = 5, sampleCount = 8, quality = 10, sampleSize + }; + enum bmptags { + imageWidth, imageHeight, planes, bitDepth, compression, imageLength, pixelsPerMeterX, pixelsPerMeterY, numColors, numImportantColors + }; + enum audioFormatTags { + encoding, numberOfChannels, audioSampleRate, avgBytesPerSec = 4, bitsPerSample = 7 + }; + enum aviHeaderTags { + frameRate, maxDataRate, frameCount = 4, streamCount = 6, imageWidth_h = 8, imageHeight_h + }; +}} // namespace Internal, Exiv2 + +namespace Exiv2 { + using namespace Exiv2::Internal; + + RiffVideo::RiffVideo(BasicIo::AutoPtr io) + : Image(ImageType::riff, mdNone, io) + { + } // RiffVideo::RiffVideo + + std::string RiffVideo::mimeType() const + { + return "video/riff"; + } + + void RiffVideo::writeMetadata() + { + } // RiffVideo::writeMetadata + + void RiffVideo::readMetadata() + { + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + + // Ensure that this is the correct image type + if (!isRiffType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "RIFF"); + } + + IoCloser closer(*io_); + clearMetadata(); + continueTraversing_ = true; + + xmpData_["Xmp.video.FileSize"] = (double)io_->size()/(double)1048576; + xmpData_["Xmp.video.FileName"] = io_->path(); + xmpData_["Xmp.video.MimeType"] = mimeType(); + + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + buf.pData_[4] = '\0'; + + io_->read(buf.pData_, bufMinSize); + xmpData_["Xmp.video.Container"] = buf.pData_; + + io_->read(buf.pData_, bufMinSize); + io_->read(buf.pData_, bufMinSize); + xmpData_["Xmp.video.FileType"] = buf.pData_; + + while (continueTraversing_) decodeBlock(); + } // RiffVideo::readMetadata + + void RiffVideo::decodeBlock() + { + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + DataBuf buf2(bufMinSize+1); + unsigned long size = 0; + buf.pData_[4] = '\0' ; + buf2.pData_[4] = '\0' ; + + io_->read(buf2.pData_, 4); + + if(io_->eof() || equalsRiffTag(buf2, "MOVI") || equalsRiffTag(buf2, "DATA")) { + continueTraversing_ = false; + return; + } + else if(equalsRiffTag(buf2, "HDRL") || equalsRiffTag(buf2, "STRL")) { + decodeBlock(); + } + else { + io_->read(buf.pData_, 4); + size = Exiv2::getULong(buf.pData_, littleEndian); + + tagDecoder(buf2, size); + } + } // RiffVideo::decodeBlock + + void RiffVideo::tagDecoder(Exiv2::DataBuf& buf, unsigned long size) + { + uint64_t cur_pos = io_->tell(); + static bool listFlag = false, listEnd = false; + + if(equalsRiffTag(buf, "LIST")) { + listFlag = true; + listEnd = false; + + while((uint64_t)(io_->tell()) < cur_pos + size) decodeBlock(); + + listEnd = true; + io_->seek(cur_pos + size, BasicIo::beg); + } + else if(equalsRiffTag(buf, "JUNK") && listEnd) { + junkHandler(size); + } + else if(equalsRiffTag(buf, "AVIH")) { + listFlag = false; + aviHeaderTagsHandler(size); + } + else if(equalsRiffTag(buf, "STRH")) { + listFlag = false; + streamHandler(size); + } + else if(equalsRiffTag(buf,"STRF") || equalsRiffTag(buf, "FMT ")) { + listFlag = false; + if(equalsRiffTag(buf,"FMT ")) + streamType_ = Audio; + streamFormatHandler(size); + } + else if(equalsRiffTag(buf, "STRN")) { + listFlag = false; + dateTimeOriginal(size, 1); + } + else if(equalsRiffTag(buf, "STRD")) { + listFlag = false; + streamDataTagHandler(size); + } + else if(equalsRiffTag(buf, "IDIT")) { + listFlag = false; + dateTimeOriginal(size); + } + else if(equalsRiffTag(buf, "INFO")) { + listFlag = false; + infoTagsHandler(); + } + else if(equalsRiffTag(buf, "NCDT")) { + listFlag = false; + nikonTagsHandler(); + } + else if(equalsRiffTag(buf, "ODML")) { + listFlag = false; + odmlTagsHandler(); + } + else if (listFlag) { + // std::cout<<"|unprocessed|"<seek(cur_pos + size, BasicIo::beg); + } + } // RiffVideo::tagDecoder + + void RiffVideo::streamDataTagHandler(long size) + { + const long bufMinSize = 20000; + DataBuf buf(bufMinSize); + buf.pData_[4] = '\0'; + uint64_t cur_pos = io_->tell(); + + io_->read(buf.pData_, 8); + + if(equalsRiffTag(buf, "AVIF")) { + + if (size - 4 < 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Exif Tags found in this RIFF file are not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + } + else { + io_->read(buf.pData_, size - 4); + + IptcData iptcData; + XmpData xmpData; + DummyTiffHeader tiffHeader(littleEndian); + TiffParserWorker::decode(exifData_, + iptcData, + xmpData, + buf.pData_, + buf.size_, + Tag::root, + TiffMapping::findDecoder, + &tiffHeader); + + #ifndef SUPPRESS_WARNINGS + if (!iptcData.empty()) { + EXV_WARNING << "Ignoring IPTC information encoded in the Exif data.\n"; + } + if (!xmpData.empty()) { + EXV_WARNING << "Ignoring XMP information encoded in the Exif data.\n"; + } + #endif + } + } + // TODO decode CasioData and ZORA Tag + io_->seek(cur_pos + size, BasicIo::beg); + + } // RiffVideo::streamDataTagHandler + + void RiffVideo::dateTimeOriginal(long size, int i) + { + uint64_t cur_pos = io_->tell(); + const long bufMinSize = 100; + DataBuf buf(bufMinSize); + io_->read(buf.pData_, size); + if(!i) + xmpData_["Xmp.video.DateUTC"] = buf.pData_; + else + xmpData_["Xmp.video.StreamName"] = buf.pData_; + io_->seek(cur_pos + size, BasicIo::beg); + } // RiffVideo::dateTimeOriginal + + void RiffVideo::odmlTagsHandler() + { + const long bufMinSize = 100; + DataBuf buf(bufMinSize); + buf.pData_[4] = '\0'; + io_->seek(-12, BasicIo::cur); + io_->read(buf.pData_, 4); + unsigned long size = Exiv2::getULong(buf.pData_, littleEndian); + unsigned long size2 = size; + + uint64_t cur_pos = io_->tell(); + io_->read(buf.pData_, 4); size -= 4; + + while(size > 0) { + io_->read(buf.pData_, 4); size -= 4; + if(equalsRiffTag(buf,"DMLH")) { + io_->read(buf.pData_, 4); size -= 4; + io_->read(buf.pData_, 4); size -= 4; + xmpData_["Xmp.video.TotalFrameCount"] = Exiv2::getULong(buf.pData_, littleEndian); + } + } + io_->seek(cur_pos + size2, BasicIo::beg); + } // RiffVideo::odmlTagsHandler + + void RiffVideo::skipListData() + { + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + buf.pData_[4] = '\0'; + io_->seek(-12, BasicIo::cur); + io_->read(buf.pData_, 4); + unsigned long size = Exiv2::getULong(buf.pData_, littleEndian); + + uint64_t cur_pos = io_->tell(); + io_->seek(cur_pos + size, BasicIo::beg); + } // RiffVideo::skipListData + + void RiffVideo::nikonTagsHandler() + { + const long bufMinSize = 100; + DataBuf buf(bufMinSize), buf2(4+1); + buf.pData_[4] = '\0'; + io_->seek(-12, BasicIo::cur); + io_->read(buf.pData_, 4); + + long internal_size = 0, tagID = 0, dataSize = 0, tempSize, size = Exiv2::getULong(buf.pData_, littleEndian); + tempSize = size; char str[9] = " . . . "; + uint64_t internal_pos, cur_pos; internal_pos = cur_pos = io_->tell(); + const TagDetails* td; + double denominator = 1; + io_->read(buf.pData_, 4); tempSize -= 4; + + while((long)tempSize > 0) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 4); + io_->read(buf2.pData_, 4); + int temp = internal_size = Exiv2::getULong(buf2.pData_, littleEndian); + internal_pos = io_->tell(); tempSize -= (internal_size + 8); + + if(equalsRiffTag(buf, "NCVR")) { + while((long)temp > 3) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + tagID = Exiv2::getULong(buf.pData_, littleEndian); + io_->read(buf.pData_, 2); + dataSize = Exiv2::getULong(buf.pData_, littleEndian); + temp -= (4 + dataSize); + + if(tagID == 0x0001) { + if (dataSize <= 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Makernotes found in this RIFF file are not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + } + else { + io_->read(buf.pData_, dataSize); + xmpData_["Xmp.video.MakerNoteType"] = buf.pData_; + } + } + else if (tagID == 0x0002) { + while(dataSize) { + std::memset(buf.pData_, 0x0, buf.size_); io_->read(buf.pData_, 1); + str[(4 - dataSize) * 2] = (char)(Exiv2::getULong(buf.pData_, littleEndian) + 48); + --dataSize; + } + xmpData_["Xmp.video.MakerNoteVersion"] = str; + } + } + } + else if(equalsRiffTag(buf, "NCTG")) { + while((long)temp > 3) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 2); + tagID = Exiv2::getULong(buf.pData_, littleEndian); + io_->read(buf.pData_, 2); + dataSize = Exiv2::getULong(buf.pData_, littleEndian); + temp -= (4 + dataSize); + td = find(nikonAVITags , tagID); + + if (dataSize <= 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Makernotes found in this RIFF file are not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + } + else { + io_->read(buf.pData_, dataSize); + + switch (tagID) { + case 0x0003: case 0x0004: case 0x0005: case 0x0006: + case 0x0013: case 0x0014: case 0x0018: case 0x001d: + case 0x001e: case 0x001f: case 0x0020: + xmpData_[exvGettext(td->label_)] = buf.pData_; break; + + case 0x0007: case 0x0010: case 0x0011: case 0x000c: + case 0x0012: + xmpData_[exvGettext(td->label_)] = Exiv2::getULong(buf.pData_, littleEndian); break; + + case 0x0008: case 0x0009: case 0x000a: case 0x000b: + case 0x000f: case 0x001b: case 0x0016: + buf2.pData_[0] = buf.pData_[4]; buf2.pData_[1] = buf.pData_[5]; + buf2.pData_[2] = buf.pData_[6]; buf2.pData_[3] = buf.pData_[7]; + denominator = (double)Exiv2::getLong(buf2.pData_, littleEndian); + if (denominator != 0) + xmpData_[exvGettext(td->label_)] = (double)Exiv2::getLong(buf.pData_, littleEndian) / denominator; + else + xmpData_[exvGettext(td->label_)] = 0; + break; + + default: + break; + } + } + } + } + + else if(equalsRiffTag(buf, "NCTH")) {//TODO Nikon Thumbnail Image + } + + else if(equalsRiffTag(buf, "NCVW")) {//TODO Nikon Preview Image + } + + io_->seek(internal_pos + internal_size, BasicIo::beg); + } + + if (size ==0) { + io_->seek(cur_pos + 4, BasicIo::beg); + } + else { + io_->seek(cur_pos + size, BasicIo::beg); + } + } // RiffVideo::nikonTagsHandler + + void RiffVideo::infoTagsHandler() + { + const long bufMinSize = 10000; + DataBuf buf(bufMinSize); + buf.pData_[4] = '\0'; + io_->seek(-12, BasicIo::cur); + io_->read(buf.pData_, 4); + long infoSize, size = Exiv2::getULong(buf.pData_, littleEndian); + long size_external = size; + const TagVocabulary* tv; + + uint64_t cur_pos = io_->tell(); + io_->read(buf.pData_, 4); size -= 4; + + while(size > 3) { + io_->read(buf.pData_, 4); size -= 4; + if(!Exiv2::getULong(buf.pData_, littleEndian)) + break; + tv = find(infoTags , Exiv2::toString( buf.pData_)); + io_->read(buf.pData_, 4); size -= 4; + infoSize = Exiv2::getULong(buf.pData_, littleEndian); + + if(infoSize >= 0) { + size -= infoSize; + io_->read(buf.pData_, infoSize); + if(infoSize < 4) + buf.pData_[infoSize] = '\0'; + } + + if(tv) + xmpData_[exvGettext(tv->label_)] = buf.pData_; + else + continue; + } + io_->seek(cur_pos + size_external, BasicIo::beg); + } // RiffVideo::infoTagsHandler + + void RiffVideo::junkHandler(long size) + { + const long bufMinSize = size; + + if (size < 0) { + #ifndef SUPPRESS_WARNINGS + EXV_ERROR << " Junk Data found in this RIFF file are not of valid size ." + << " Entries considered invalid. Not Processed.\n"; + #endif + io_->seek(io_->tell() + 4, BasicIo::beg); + } + + else { + DataBuf buf(bufMinSize+1), buf2(4+1); + std::memset(buf.pData_, 0x0, buf.size_); + buf2.pData_[4] = '\0'; + uint64_t cur_pos = io_->tell(); + + io_->read(buf.pData_, 4); + //! Pentax Metadata and Tags + if(equalsRiffTag(buf, "PENT")) { + + io_->seek(cur_pos + 18, BasicIo::beg); + io_->read(buf.pData_, 26); + xmpData_["Xmp.video.Make"] = buf.pData_; + + io_->read(buf.pData_, 50); + xmpData_["Xmp.video.Model"] = buf.pData_; + + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, 8); + buf2.pData_[0] = buf.pData_[4]; buf2.pData_[1] = buf.pData_[5]; + buf2.pData_[2] = buf.pData_[6]; buf2.pData_[3] = buf.pData_[7]; + xmpData_["Xmp.video.FNumber"] = (double)Exiv2::getLong(buf.pData_, littleEndian) / (double)Exiv2::getLong(buf2.pData_, littleEndian);; + + io_->seek(cur_pos + 131, BasicIo::beg); + io_->read(buf.pData_, 26); + xmpData_["Xmp.video.DateTimeOriginal"] = buf.pData_; + + io_->read(buf.pData_, 26); + xmpData_["Xmp.video.DateTimeDigitized"] = buf.pData_; + + io_->seek(cur_pos + 299, BasicIo::beg); + std::memset(buf.pData_, 0x0, buf.size_); + + io_->read(buf.pData_, 2); + Exiv2::XmpTextValue tv(Exiv2::toString(Exiv2::getLong(buf.pData_, littleEndian))); + xmpData_.add(Exiv2::XmpKey("Xmp.xmp.Thumbnails/xmpGImg:width"), &tv); + + io_->read(buf.pData_, 2); + tv.read(Exiv2::toString(Exiv2::getLong(buf.pData_, littleEndian))); + xmpData_.add(Exiv2::XmpKey("Xmp.xmp.Thumbnails/xmpGImg:height"), &tv); + + io_->read(buf.pData_, 4); + + /* TODO - Storing the image Thumbnail in Base64 Format + + + uint64_t length = Exiv2::getLong(buf.pData_, littleEndian); + io_->read(buf.pData_, length); + + char *rawStr = Exiv2::toString(buf.pData_); + char *encodedStr; + + SXMPUtils::EncodeToBase64(rawStr, encodedStr); + + tv.read(Exiv2::toString(encodedStr)); + xmpData_.add(Exiv2::XmpKey("Xmp.xmp.Thumbnails/xmpGImg:image"), &tv); + */ + } + else { + io_->seek(cur_pos, BasicIo::beg); + io_->read(buf.pData_, size); + xmpData_["Xmp.video.Junk"] = buf.pData_; + } + + io_->seek(cur_pos + size, BasicIo::beg); + } + } // RiffVideo::junkHandler + + void RiffVideo::aviHeaderTagsHandler(long size) + { + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + buf.pData_[4] = '\0'; + long width = 0, height = 0, frame_count = 0; + double frame_rate = 1; + + uint64_t cur_pos = io_->tell(); + + for(int i = 0; i <= 9; i++) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, bufMinSize); + + switch(i) { + case frameRate: + xmpData_["Xmp.video.MicroSecPerFrame"] = Exiv2::getULong(buf.pData_, littleEndian); + frame_rate = (double)1000000/(double)Exiv2::getULong(buf.pData_, littleEndian); + break; + case (maxDataRate): + xmpData_["Xmp.video.MaxDataRate"] = (double)Exiv2::getULong(buf.pData_, littleEndian)/(double)1024; + break; + case frameCount: + xmpData_["Xmp.video.FrameCount"] = Exiv2::getULong(buf.pData_, littleEndian); + frame_count = Exiv2::getULong(buf.pData_, littleEndian); + break; + case streamCount: + xmpData_["Xmp.video.StreamCount"] = Exiv2::getULong(buf.pData_, littleEndian); + break; + case imageWidth_h: + width = Exiv2::getULong(buf.pData_, littleEndian); + xmpData_["Xmp.video.Width"] = width; + break; + case imageHeight_h: + height = Exiv2::getULong(buf.pData_, littleEndian); + xmpData_["Xmp.video.Height"] = height; + break; + } + } + + fillAspectRatio(width, height); + fillDuration(frame_rate, frame_count); + + io_->seek(cur_pos + size, BasicIo::beg); + } // RiffVideo::aviHeaderTagsHandler + + void RiffVideo::streamHandler(long size) + { + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + buf.pData_[4]='\0'; + long divisor = 1; + uint64_t cur_pos = io_->tell(); + + io_->read(buf.pData_, bufMinSize); + if(equalsRiffTag(buf, "VIDS")) + streamType_ = Video; + else if (equalsRiffTag(buf, "AUDS")) + streamType_ = Audio; + + for(int i=1; i<=25; i++) { + std::memset(buf.pData_, 0x0, buf.size_); + io_->read(buf.pData_, bufMinSize); + + switch(i) { + case codec: + if(streamType_ == Video) + xmpData_["Xmp.video.Codec"] = buf.pData_; + else if (streamType_ == Audio) + xmpData_["Xmp.audio.Codec"] = buf.pData_; + else + xmpData_["Xmp.video.Codec"] = buf.pData_; + break; + case sampleRate: + divisor=Exiv2::getULong(buf.pData_, littleEndian); + break; + case (sampleRate+1): + if(streamType_ == Video) + xmpData_["Xmp.video.FrameRate"] = returnSampleRate(buf,divisor); + else if (streamType_ == Audio) + xmpData_["Xmp.audio.SampleRate"] = returnSampleRate(buf,divisor); + else + xmpData_["Xmp.video.StreamSampleRate"] = returnSampleRate(buf,divisor); + break; + case sampleCount: + if(streamType_ == Video) + xmpData_["Xmp.video.FrameCount"] = Exiv2::getULong(buf.pData_, littleEndian); + else if (streamType_ == Audio) + xmpData_["Xmp.audio.SampleCount"] = Exiv2::getULong(buf.pData_, littleEndian); + else + xmpData_["Xmp.video.StreamSampleCount"] = Exiv2::getULong(buf.pData_, littleEndian); + break; + case quality: + if(streamType_ == Video) + xmpData_["Xmp.video.VideoQuality"] = Exiv2::getULong(buf.pData_, littleEndian); + else if(streamType_ != Audio) + xmpData_["Xmp.video.StreamQuality"] = Exiv2::getULong(buf.pData_, littleEndian); + break; + case sampleSize: + if(streamType_ == Video) + xmpData_["Xmp.video.VideoSampleSize"] = Exiv2::getULong(buf.pData_, littleEndian); + else if(streamType_ != Audio) + xmpData_["Xmp.video.StreamSampleSize"] = Exiv2::getULong(buf.pData_, littleEndian); + break; + } + + } + io_->seek(cur_pos + size, BasicIo::beg); + } // RiffVideo::streamHandler + + void RiffVideo::streamFormatHandler(long size) + { + const long bufMinSize = 4; + DataBuf buf(bufMinSize+1); + buf.pData_[4] = '\0'; + uint64_t cur_pos = io_->tell(); + + if(streamType_ == Video) { + io_->read(buf.pData_, bufMinSize); + + for(int i = 0; i <= 9; i++) { + std::memset(buf.pData_, 0x0, buf.size_); + + switch(i) { + case imageWidth: //Will be used in case of debugging + io_->read(buf.pData_, bufMinSize); break; + case imageHeight: //Will be used in case of debugging + io_->read(buf.pData_, bufMinSize); break; + case planes: + io_->read(buf.pData_, 2); + xmpData_["Xmp.video.Planes"] = Exiv2::getUShort(buf.pData_, littleEndian); break; + case bitDepth: + io_->read(buf.pData_, 2); + xmpData_["Xmp.video.PixelDepth"] = Exiv2::getUShort(buf.pData_, littleEndian); break; + case compression: + io_->read(buf.pData_, bufMinSize); + xmpData_["Xmp.video.Compressor"] = buf.pData_; break; + case imageLength: + io_->read(buf.pData_, bufMinSize); + xmpData_["Xmp.video.ImageLength"] = Exiv2::getULong(buf.pData_, littleEndian); break; + case pixelsPerMeterX: + io_->read(buf.pData_, bufMinSize); + xmpData_["Xmp.video.PixelPerMeterX"] = Exiv2::getULong(buf.pData_, littleEndian); break; + case pixelsPerMeterY: + io_->read(buf.pData_, bufMinSize); + xmpData_["Xmp.video.PixelPerMeterY"] = Exiv2::getULong(buf.pData_, littleEndian); break; + case numColors: + io_->read(buf.pData_, bufMinSize); + if(Exiv2::getULong(buf.pData_, littleEndian) == 0) { + xmpData_["Xmp.video.NumOfColours"] = "Unspecified"; + } + else { + xmpData_["Xmp.video.NumOfColours"] = Exiv2::getULong(buf.pData_, littleEndian); + } + break; + case numImportantColors: + io_->read(buf.pData_, bufMinSize); + if(Exiv2::getULong(buf.pData_, littleEndian)) { + xmpData_["Xmp.video.NumIfImpColours"] = Exiv2::getULong(buf.pData_, littleEndian); + } + else { + xmpData_["Xmp.video.NumOfImpColours"] = "All"; + } + break; + } + } + } + else if(streamType_ == Audio) { + int c = 0; + const TagDetails* td; + for(int i = 0; i <= 7; i++) { + io_->read(buf.pData_, 2); + + switch(i) { + case encoding: + td = find(audioEncodingValues , Exiv2::getUShort(buf.pData_, littleEndian)); + if(td) { + xmpData_["Xmp.audio.Compressor"] = exvGettext(td->label_); + } + else { + xmpData_["Xmp.audio.Compressor"] = Exiv2::getUShort(buf.pData_, littleEndian); + } + break; + case numberOfChannels: + c = Exiv2::getUShort(buf.pData_, littleEndian); + if(c == 1) xmpData_["Xmp.audio.ChannelType"] = "Mono"; + else if(c == 2) xmpData_["Xmp.audio.ChannelType"] = "Stereo"; + else if(c == 5) xmpData_["Xmp.audio.ChannelType"] = "5.1 Surround Sound"; + else if(c == 7) xmpData_["Xmp.audio.ChannelType"] = "7.1 Surround Sound"; + else xmpData_["Xmp.audio.ChannelType"] = "Mono"; + break; + case audioSampleRate: + xmpData_["Xmp.audio.SampleRate"] = Exiv2::getUShort(buf.pData_, littleEndian); + break; + case avgBytesPerSec: + xmpData_["Xmp.audio.SampleType"] = Exiv2::getUShort(buf.pData_, littleEndian); + break; + case bitsPerSample: + xmpData_["Xmp.audio.BitsPerSample"] = Exiv2::getUShort(buf.pData_,littleEndian); + io_->read(buf.pData_, 2); + break; + } + } + } + io_->seek(cur_pos + size, BasicIo::beg); + } // RiffVideo::streamFormatHandler + + double RiffVideo::returnSampleRate(Exiv2::DataBuf& buf, long divisor) + { + return ((double)Exiv2::getULong(buf.pData_, littleEndian) / (double)divisor); + } // RiffVideo::returnSampleRate + + const char* RiffVideo::printAudioEncoding(uint64_t i) + { + const TagDetails* td; + td = find(audioEncodingValues , i); + if(td) + return exvGettext(td->label_); + + return "Undefined"; + } // RiffVideo::printAudioEncoding + + void RiffVideo::fillAspectRatio(long width, long height) + { + double aspectRatio = (double)width / (double)height; + aspectRatio = floor(aspectRatio*10) / 10; + xmpData_["Xmp.video.AspectRatio"] = aspectRatio; + + int aR = (int) ((aspectRatio*10.0)+0.1); + + switch (aR) { + case 13 : xmpData_["Xmp.video.AspectRatio"] = "4:3" ; break; + case 17 : xmpData_["Xmp.video.AspectRatio"] = "16:9" ; break; + case 10 : xmpData_["Xmp.video.AspectRatio"] = "1:1" ; break; + case 16 : xmpData_["Xmp.video.AspectRatio"] = "16:10" ; break; + case 22 : xmpData_["Xmp.video.AspectRatio"] = "2.21:1" ; break; + case 23 : xmpData_["Xmp.video.AspectRatio"] = "2.35:1" ; break; + case 12 : xmpData_["Xmp.video.AspectRatio"] = "5:4" ; break; + default : xmpData_["Xmp.video.AspectRatio"] = aspectRatio;break; + } + } // RiffVideo::fillAspectRatio + + void RiffVideo::fillDuration(double frame_rate, long frame_count) + { + if(frame_rate == 0) + return; + + uint64_t duration = static_cast((double)frame_count * (double)1000 / (double)frame_rate); + xmpData_["Xmp.video.FileDataRate"] = (double)io_->size()/(double)(1048576*duration); + xmpData_["Xmp.video.Duration"] = duration; //Duration in number of seconds + } // RiffVideo::fillDuration + + Image::AutoPtr newRiffInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new RiffVideo(io)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isRiffType(BasicIo& iIo, bool advance) + { + const int32_t len = 2; + const unsigned char RiffVideoId[4] = { 'R', 'I', 'F' ,'F'}; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + bool matched = (memcmp(buf, RiffVideoId, len) == 0); + if (!advance || !matched) { + iIo.seek(-len, BasicIo::cur); + } + return matched; + } + +} // namespace Exiv2 +#endif // EXV_ENABLE_VIDEO diff --git a/vendor/exiv2-0.25/src/rw2image.cpp b/vendor/exiv2-0.25/src/rw2image.cpp new file mode 100644 index 0000000..9519833 --- /dev/null +++ b/vendor/exiv2-0.25/src/rw2image.cpp @@ -0,0 +1,282 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: rw2image.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 06-Jan-09, ahu: created + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: rw2image.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "rw2image.hpp" +#include "rw2image_int.hpp" +#include "tiffcomposite_int.hpp" +#include "tiffimage_int.hpp" +#include "image.hpp" +#include "preview.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#ifdef DEBUG +# include +#endif + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + Rw2Image::Rw2Image(BasicIo::AutoPtr io) + : Image(ImageType::rw2, mdExif | mdIptc | mdXmp, io) + { + } // Rw2Image::Rw2Image + + std::string Rw2Image::mimeType() const + { + return "image/x-panasonic-rw2"; + } + + int Rw2Image::pixelWidth() const + { + ExifData::const_iterator imageWidth = + exifData_.findKey(Exiv2::ExifKey("Exif.PanasonicRaw.SensorWidth")); + if (imageWidth != exifData_.end() && imageWidth->count() > 0) { + return imageWidth->toLong(); + } + return 0; + } + + int Rw2Image::pixelHeight() const + { + ExifData::const_iterator imageHeight = + exifData_.findKey(Exiv2::ExifKey("Exif.PanasonicRaw.SensorHeight")); + if (imageHeight != exifData_.end() && imageHeight->count() > 0) { + return imageHeight->toLong(); + } + return 0; + } + + void Rw2Image::setExifData(const ExifData& /*exifData*/) + { + // Todo: implement me! + throw(Error(32, "Exif metadata", "RW2")); + } + + void Rw2Image::setIptcData(const IptcData& /*iptcData*/) + { + // Todo: implement me! + throw(Error(32, "IPTC metadata", "RW2")); + } + + void Rw2Image::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "RW2")); + } + + void Rw2Image::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading RW2 file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isRw2Type(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "RW2"); + } + clearMetadata(); + ByteOrder bo = Rw2Parser::decode(exifData_, + iptcData_, + xmpData_, + io_->mmap(), + io_->size()); + setByteOrder(bo); + + // A lot more metadata is hidden in the embedded preview image + // Todo: This should go into the Rw2Parser, but for that it needs the Image + PreviewManager loader(*this); + PreviewPropertiesList list = loader.getPreviewProperties(); + // Todo: What if there are more preview images? + if (list.size() > 1) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "RW2 image contains more than one preview. None used.\n"; +#endif + } + if (list.size() != 1) return; + ExifData exifData; + PreviewImage preview = loader.getPreviewImage(*list.begin()); + Image::AutoPtr image = ImageFactory::open(preview.pData(), preview.size()); + if (image.get() == 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to open RW2 preview image.\n"; +#endif + return; + } + image->readMetadata(); + ExifData& prevData = image->exifData(); + if (!prevData.empty()) { + // Filter duplicate tags + for (ExifData::const_iterator pos = exifData_.begin(); pos != exifData_.end(); ++pos) { + if (pos->ifdId() == panaRawId) continue; + ExifData::iterator dup = prevData.findKey(ExifKey(pos->key())); + if (dup != prevData.end()) { +#ifdef DEBUG + std::cerr << "Filtering duplicate tag " << pos->key() + << " (values '" << pos->value() + << "' and '" << dup->value() << "')\n"; +#endif + prevData.erase(dup); + } + } + } + // Remove tags not applicable for raw images + static const char* filteredTags[] = { + "Exif.Photo.ComponentsConfiguration", + "Exif.Photo.CompressedBitsPerPixel", + "Exif.Panasonic.ColorEffect", + "Exif.Panasonic.Contrast", + "Exif.Panasonic.NoiseReduction", + "Exif.Panasonic.ColorMode", + "Exif.Panasonic.OpticalZoomMode", + "Exif.Panasonic.Contrast", + "Exif.Panasonic.Saturation", + "Exif.Panasonic.Sharpness", + "Exif.Panasonic.FilmMode", + "Exif.Panasonic.SceneMode", + "Exif.Panasonic.WBRedLevel", + "Exif.Panasonic.WBGreenLevel", + "Exif.Panasonic.WBBlueLevel", + "Exif.Photo.ColorSpace", + "Exif.Photo.PixelXDimension", + "Exif.Photo.PixelYDimension", + "Exif.Photo.SceneType", + "Exif.Photo.CustomRendered", + "Exif.Photo.DigitalZoomRatio", + "Exif.Photo.SceneCaptureType", + "Exif.Photo.GainControl", + "Exif.Photo.Contrast", + "Exif.Photo.Saturation", + "Exif.Photo.Sharpness", + "Exif.Image.PrintImageMatching", + "Exif.Image.YCbCrPositioning" + }; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredTags); ++i) { + ExifData::iterator pos = prevData.findKey(ExifKey(filteredTags[i])); + if (pos != prevData.end()) { +#ifdef DEBUG + std::cerr << "Exif tag " << pos->key() << " removed\n"; +#endif + prevData.erase(pos); + } + } + + // Add the remaining tags + for (ExifData::const_iterator pos = prevData.begin(); pos != prevData.end(); ++pos) { + exifData_.add(*pos); + } + + } // Rw2Image::readMetadata + + void Rw2Image::writeMetadata() + { + // Todo: implement me! + throw(Error(31, "RW2")); + } // Rw2Image::writeMetadata + + ByteOrder Rw2Parser::decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ) + { + Rw2Header rw2Header; + return TiffParserWorker::decode(exifData, + iptcData, + xmpData, + pData, + size, + Tag::pana, + TiffMapping::findDecoder, + &rw2Header); + } + + // ************************************************************************* + // free functions + Image::AutoPtr newRw2Instance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new Rw2Image(io)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isRw2Type(BasicIo& iIo, bool advance) + { + const int32_t len = 24; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + Rw2Header header; + bool rc = header.read(buf, len); + if (!advance || !rc) { + iIo.seek(-len, BasicIo::cur); + } + return rc; + } + +} // namespace Exiv2 + +namespace Exiv2 { + namespace Internal { + + Rw2Header::Rw2Header() + : TiffHeaderBase(0x0055, 24, littleEndian, 0x00000018) + { + } + + Rw2Header::~Rw2Header() + { + } + + DataBuf Rw2Header::write() const + { + // Todo: Implement me! + return DataBuf(); + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/rw2image_int.hpp b/vendor/exiv2-0.25/src/rw2image_int.hpp new file mode 100644 index 0000000..4b1b15a --- /dev/null +++ b/vendor/exiv2-0.25/src/rw2image_int.hpp @@ -0,0 +1,71 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file rw2image_int.hpp + @brief Internal classes to support RW2 image format + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 06-Jan-09, ahu: created + */ +#ifndef RW2IMAGE_INT_HPP_ +#define RW2IMAGE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tiffimage_int.hpp" +#include "types.hpp" + +// + standard includes +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief Panasonic RW2 header structure. + */ + class Rw2Header : public TiffHeaderBase { + public: + //! @name Creators + //@{ + //! Default constructor + Rw2Header(); + //! Destructor. + ~Rw2Header(); + //@} + + //! @name Accessors + //@{ + //! Not yet implemented. Does nothing and returns an empty buffer. + DataBuf write() const; + //@} + + }; // class Rw2Header + +}} // namespace Internal, Exiv2 + +#endif // #ifndef RW2IMAGE_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/samsungmn.cpp b/vendor/exiv2-0.25/src/samsungmn.cpp new file mode 100644 index 0000000..956ee9c --- /dev/null +++ b/vendor/exiv2-0.25/src/samsungmn.cpp @@ -0,0 +1,211 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: samsungmn.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 27-Sep-10, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: samsungmn.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "samsungmn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + //! LensType, tag 0xa003 + extern const TagDetails samsung2LensType[] = { + { 0, N_("Built-in") }, + { 1, "Samsung NX 30mm F2 Pancake" }, + { 2, "Samsung NX 18-55mm F3.5-5.6 OIS" }, + { 3, "Samsung NX 50-200mm F4-5.6 ED OIS" }, + { 4, "Samsung NX 20-50mm F3.5-5.6 ED" }, + { 5, "Samsung NX 20mm F2.8 Pancake" }, + { 6, "Samsung NX 18-200mm F3.5-6.3 ED OIS" }, + { 7, "Samsung NX 60mm F2.8 Macro ED OIS SSA" }, + { 8, "Samsung NX 16mm F2.4 Pancake" }, + { 9, "Samsung NX 85mm F1.4 ED SSA" }, + { 10, "Samsung NX 45mm F1.8" }, + { 11, "Samsung NX 45mm F1.8 2D/3D" }, + { 12, "Samsung NX 12-24mm F4-5.6 ED" }, + { 13, "Saumsun NX 16-50mm F2-2.8 S ED OIS" }, + { 14, "Samsung NX 10mm F3.5 Fisheye" }, + { 15, "Samsung NX 16-50mm F3.5-5.6 Power Zoom ED OIS" }, + { 20, "Samsung NX 50-150mm F2.8 S ED OIS" }, + { 21, "Samsung NX 300mm F2.8 ED OIS" } + }; + + //! ColorSpace, tag 0xa011 + extern const TagDetails samsung2ColorSpace[] = { + { 0, N_("sRGB") }, + { 1, N_("Adobe RGB") } + }; + + //! SmartRange, tag 0xa012 + extern const TagDetails samsung2SmartRange[] = { + { 0, N_("Off") }, + { 1, N_("On") } + }; + + //! Print the camera temperature + std::ostream& printCameraTemperature(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() != 1 || value.typeId() != signedRational) { + return os << value; + } + return os << value.toFloat() << " C"; + } + + //! Print the 35mm focal length + std::ostream& printFocalLength35(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() != 1 || value.typeId() != unsignedLong) { + return os << value; + } + long length = value.toLong(); + if (length == 0) { + os << _("Unknown"); + } + else { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) << length / 10.0 << " mm"; + os.copyfmt(oss); + } + os.flags(f); + return os; + } + + // Samsung MakerNote Tag Info + const TagInfo Samsung2MakerNote::tagInfo_[] = { + TagInfo(0x0001, "Version", N_("Version"), N_("Makernote version"), samsung2Id, makerTags, undefined, -1, printExifVersion), + TagInfo(0x0021, "PictureWizard", N_("Picture Wizard"), N_("Picture wizard composite tag"), samsung2Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x0030, "LocalLocationName", N_("Local Location Name"), N_("Local location name"), samsung2Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0031, "LocationName", N_("Location Name"), N_("Location name"), samsung2Id, makerTags, asciiString, -1, printValue), + TagInfo(0x0035, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0043, "CameraTemperature", N_("Camera Temperature"), N_("Camera temperature"), samsung2Id, makerTags, signedRational, -1, printCameraTemperature), + TagInfo(0xa001, "FirmwareName", N_("Firmware Name"), N_("Firmware name"), samsung2Id, makerTags, asciiString, -1, printValue), + TagInfo(0xa003, "LensType", N_("Lens Type"), N_("Lens type"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2LensType)), + TagInfo(0xa004, "LensFirmware", N_("Lens Firmware"), N_("Lens firmware"), samsung2Id, makerTags, asciiString, -1, printValue), + TagInfo(0xa010, "SensorAreas", N_("Sensor Areas"), N_("Sensor areas"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa011, "ColorSpace", N_("Color Space"), N_("Color space"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2ColorSpace)), + TagInfo(0xa012, "SmartRange", N_("Smart Range"), N_("Smart range"), samsung2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(samsung2SmartRange)), + TagInfo(0xa013, "ExposureBiasValue", N_("Exposure Bias Value"), N_("Exposure bias value"), samsung2Id, makerTags, signedRational, -1, print0x9204), + TagInfo(0xa014, "ISO", N_("ISO"), N_("ISO"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa018, "ExposureTime", N_("Exposure Time"), N_("Exposure time"), samsung2Id, makerTags, unsignedRational, -1, print0x829a), + TagInfo(0xa019, "FNumber", N_("FNumber"), N_("The F number."), samsung2Id, makerTags, unsignedRational, -1, print0x829d), + TagInfo(0xa01a, "FocalLengthIn35mmFormat", N_("Focal Length In 35mm Format"), N_("Focal length in 35mm format"), samsung2Id, makerTags, unsignedLong, -1, printFocalLength35), + TagInfo(0xa020, "EncryptionKey", N_("Encryption Key"), N_("Encryption key"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa021, "WB_RGGBLevelsUncorrected", N_("WB RGGB Levels Uncorrected"), N_("WB RGGB levels not corrected for WB_RGGBLevelsBlack"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa022, "WB_RGGBLevelsAuto", N_("WB RGGB Levels Auto"), N_("WB RGGB levels auto"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa023, "WB_RGGBLevelsIlluminator1", N_("WB RGGB Levels Illuminator1"), N_("WB RGGB levels illuminator1"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa024, "WB_RGGBLevelsIlluminator2", N_("WB RGGB Levels Illuminator2"), N_("WB RGGB levels illuminator2"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa028, "WB_RGGBLevelsBlack", N_("WB RGGB Levels Black"), N_("WB RGGB levels black"), samsung2Id, makerTags, signedLong, -1, printValue), + TagInfo(0xa030, "ColorMatrix", N_("Color Matrix"), N_("Color matrix"), samsung2Id, makerTags, signedLong, -1, printValue), + TagInfo(0xa031, "ColorMatrixSRGB", N_("Color Matrix sRGB"), N_("Color matrix sRGB"), samsung2Id, makerTags, signedLong, -1, printValue), + TagInfo(0xa032, "ColorMatrixAdobeRGB", N_("Color Matrix Adobe RGB"), N_("Color matrix Adobe RGB"), samsung2Id, makerTags, signedLong, -1, printValue), + TagInfo(0xa040, "ToneCurve1", N_("Tone Curve 1"), N_("Tone curve 1"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa041, "ToneCurve2", N_("Tone Curve 2"), N_("Tone curve 2"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa042, "ToneCurve3", N_("Tone Curve 3"), N_("Tone curve 3"), samsung2Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xa043, "ToneCurve4", N_("Tone Curve 4"), N_("Tone curve 4"), samsung2Id, makerTags, unsignedLong, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownSamsung2MakerNoteTag)", "(UnknownSamsung2MakerNoteTag)", N_("Unknown Samsung2MakerNote tag"), samsung2Id, makerTags, undefined, -1, printValue) + }; + + const TagInfo* Samsung2MakerNote::tagList() + { + return tagInfo_; + } + + //! PictureWizard Mode + extern const TagDetails samsungPwMode[] = { + { 0, N_("Standard") }, + { 1, N_("Vivid") }, + { 2, N_("Portrait") }, + { 3, N_("Landscape") }, + { 4, N_("Forest") }, + { 5, N_("Retro") }, + { 6, N_("Cool") }, + { 7, N_("Calm") }, + { 8, N_("Classic") }, + { 9, N_("Custom1") }, + { 10, N_("Custom2") }, + { 11, N_("Custom3") } + }; + + //! Print the PictureWizard Color tag value + std::ostream& printPwColor(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() != 1 || value.typeId() != unsignedShort) { + return os << value; + } + // Special case where no color modification is done + if (value.toLong() == 65535) { + return os << _("Neutral"); + } + // Output seems to represent Hue in degrees + return os << value.toLong(); + } + + //! Print the tag value minus 4 + std::ostream& printValueMinus4(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() != 1 || value.typeId() != unsignedShort) { + return os << value; + } + return os << value.toLong(0) - 4; + } + + // Samsung PictureWizard Tag Info + const TagInfo Samsung2MakerNote::tagInfoPw_[] = { + TagInfo(0x0000, "Mode", N_("Mode"), N_("Mode"), samsungPwId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(samsungPwMode)), + TagInfo(0x0001, "Color", N_("Color"), N_("Color"), samsungPwId, makerTags, unsignedShort, 1, printPwColor), + TagInfo(0x0002, "Saturation", N_("Saturation"), N_("Saturation"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), + TagInfo(0x0003, "Sharpness", N_("Sharpness"), N_("Sharpness"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), + TagInfo(0x0004, "Contrast", N_("Contrast"), N_("Contrast"), samsungPwId, makerTags, unsignedShort, 1, printValueMinus4), + // End of list marker + TagInfo(0xffff, "(UnknownSamsungPictureWizardTag)", "(UnknownSamsungPictureWizardTag)", N_("Unknown SamsungPictureWizard tag"), samsungPwId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* Samsung2MakerNote::tagListPw() + { + return tagInfoPw_; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/samsungmn_int.hpp b/vendor/exiv2-0.25/src/samsungmn_int.hpp new file mode 100644 index 0000000..3d21665 --- /dev/null +++ b/vendor/exiv2-0.25/src/samsungmn_int.hpp @@ -0,0 +1,69 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file samsungmn_int.hpp + @brief Samsung makernote tags.
References:
+ [1] ExifTool by Phil Harvey + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 27-Sep-10, ahu: created + */ +#ifndef SAMSUNGMN_INT_HPP_ +#define SAMSUNGMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Samsung cameras + class Samsung2MakerNote { + public: + //! Return read-only list of built-in Samsung tags + static const TagInfo* tagList(); + //! Return read-only list of built-in PictureWizard tags + static const TagInfo* tagListPw(); + + private: + //! Tag information + static const TagInfo tagInfo_[]; + //! PictureWizard tag information + static const TagInfo tagInfoPw_[]; + + }; // class Samsung2MakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef SAMSUNGMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/sigmamn.cpp b/vendor/exiv2-0.25/src/sigmamn.cpp new file mode 100644 index 0000000..4628bbb --- /dev/null +++ b/vendor/exiv2-0.25/src/sigmamn.cpp @@ -0,0 +1,176 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: sigmamn.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 02-Apr-04, ahu: created + Credits: Sigma and Foveon MakerNote implemented according to the specification + in "SIGMA and FOVEON EXIF MakerNote Documentation" by Foveon. + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: sigmamn.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "sigmamn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + // Sigma (Foveon) MakerNote Tag Info + const TagInfo SigmaMakerNote::tagInfo_[] = { + TagInfo(0x0002, "SerialNumber", N_("Serial Number"), + N_("Camera serial number"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0003, "DriveMode", N_("Drive Mode"), + N_("Drive mode"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0004, "ResolutionMode", N_("Resolution Mode"), + N_("Resolution mode"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0005, "AutofocusMode", N_("Autofocus Mode"), + N_("Autofocus mode"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0006, "FocusSetting", N_("Focus Setting"), + N_("Focus setting"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0007, "WhiteBalance", N_("White Balance"), + N_("White balance"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0008, "ExposureMode", N_("Exposure Mode"), + N_("Exposure mode"), + sigmaId, makerTags, asciiString, -1, print0x0008), + TagInfo(0x0009, "MeteringMode", N_("Metering Mode"), + N_("Metering mode"), + sigmaId, makerTags, asciiString, -1, print0x0009), + TagInfo(0x000a, "LensRange", N_("Lens Range"), + N_("Lens focal length range"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x000b, "ColorSpace", N_("Color Space"), + N_("Color space"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x000c, "Exposure", N_("Exposure"), + N_("Exposure"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x000d, "Contrast", N_("Contrast"), + N_("Contrast"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x000e, "Shadow", N_("Shadow"), + N_("Shadow"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x000f, "Highlight", N_("Highlight"), + N_("Highlight"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x0010, "Saturation", N_("Saturation"), + N_("Saturation"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x0011, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x0012, "FillLight", N_("Fill Light"), + N_("X3 Fill light"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x0014, "ColorAdjustment", N_("Color Adjustment"), + N_("Color adjustment"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x0015, "AdjustmentMode", N_("Adjustment Mode"), + N_("Adjustment mode"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0016, "Quality", N_("Quality"), + N_("Quality"), + sigmaId, makerTags, asciiString, -1, printStripLabel), + TagInfo(0x0017, "Firmware", N_("Firmware"), + N_("Firmware"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0018, "Software", N_("Software"), + N_("Software"), + sigmaId, makerTags, asciiString, -1, printValue), + TagInfo(0x0019, "AutoBracket", N_("Auto Bracket"), + N_("Auto bracket"), + sigmaId, makerTags, asciiString, -1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "(UnknownSigmaMakerNoteTag)", + N_("Unknown SigmaMakerNote tag"), + sigmaId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* SigmaMakerNote::tagList() + { + return tagInfo_; + } + + std::ostream& SigmaMakerNote::printStripLabel(std::ostream& os, + const Value& value, + const ExifData*) + { + std::string v = value.toString(); + std::string::size_type pos = v.find(':'); + if (pos != std::string::npos) { + if (v[pos + 1] == ' ') ++pos; + v = v.substr(pos + 1); + } + return os << v; + } + + std::ostream& SigmaMakerNote::print0x0008(std::ostream& os, + const Value& value, + const ExifData*) + { + switch (value.toString()[0]) { + case 'P': os << _("Program"); break; + case 'A': os << _("Aperture priority"); break; + case 'S': os << _("Shutter priority"); break; + case 'M': os << _("Manual"); break; + default: os << "(" << value << ")"; break; + } + return os; + } + + std::ostream& SigmaMakerNote::print0x0009(std::ostream& os, + const Value& value, + const ExifData*) + { + switch (value.toString()[0]) { + case 'A': os << _("Average"); break; + case 'C': os << _("Center"); break; + case '8': os << _("8-Segment"); break; + default: os << "(" << value << ")"; break; + } + return os; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/sigmamn_int.hpp b/vendor/exiv2-0.25/src/sigmamn_int.hpp new file mode 100644 index 0000000..883e6fb --- /dev/null +++ b/vendor/exiv2-0.25/src/sigmamn_int.hpp @@ -0,0 +1,76 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file sigmamn_int.hpp + @brief Sigma and Foveon MakerNote implemented according to the specification + + SIGMA and FOVEON EXIF MakerNote Documentation by Foveon. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 02-Apr-04, ahu: created + */ +#ifndef SIGMAMN_INT_HPP_ +#define SIGMAMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Sigma (Foveon) cameras + class SigmaMakerNote { + public: + //! Return read-only list of built-in Sigma tags + static const TagInfo* tagList(); + + //! @name Print functions for Sigma (Foveon) %MakerNote tags + //@{ + //! Strip the label from the value and print the remainder + static std::ostream& printStripLabel(std::ostream& os, const Value& value, const ExifData*); + //! Print exposure mode + static std::ostream& print0x0008(std::ostream& os, const Value& value, const ExifData*); + //! Print metering mode + static std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*); + //@} + + private: + //! Tag information + static const TagInfo tagInfo_[]; + + }; // class SigmaMakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef SIGMAMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/sonymn.cpp b/vendor/exiv2-0.25/src/sonymn.cpp new file mode 100644 index 0000000..44424bc --- /dev/null +++ b/vendor/exiv2-0.25/src/sonymn.cpp @@ -0,0 +1,777 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: sonymn.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 18-Apr-05, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: sonymn.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "minoltamn_int.hpp" +#include "sonymn_int.hpp" +#include "tags_int.hpp" +#include "value.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + // -- Standard Sony Makernotes tags --------------------------------------------------------------- + + //! Lookup table to translate Sony Auto HDR values to readable labels + extern const TagDetails sonyHDRMode[] = { + { 0x00000, N_("Off") }, + { 0x10001, N_("Auto") }, + { 0x10010, "1" }, + { 0x10012, "2" }, + { 0x10014, "3" }, + { 0x10016, "4" }, + { 0x10018, "5" } + }; + + //! Lookup table to translate Sony model ID values to readable labels + extern const TagDetails sonyModelId[] = { + { 2, "DSC-R1" }, + { 256, "DSLR-A100" }, + { 257, "DSLR-A900" }, + { 258, "DSLR-A700" }, + { 259, "DSLR-A200" }, + { 260, "DSLR-A350" }, + { 261, "DSLR-A300" }, + { 262, "DSLR-A900 (APS-C mode)" }, + { 263, "DSLR-A380/A390" }, + { 264, "DSLR-A330" }, + { 265, "DSLR-A230" }, + { 266, "DSLR-A290" }, + { 269, "DSLR-A850" }, + { 270, "DSLR-A850 (APS-C mode)" }, + { 273, "DSLR-A550" }, + { 274, "DSLR-A500" }, + { 275, "DSLR-A450" }, + { 278, "NEX-5" }, + { 279, "NEX-3" }, + { 280, "SLT-A33" }, + { 281, "SLT-A55 / SLT-A55V" }, + { 282, "DSLR-A560" }, + { 283, "DSLR-A580" }, + { 284, "NEX-C3" }, + { 285, "SLT-A35" }, + { 286, "SLT-A65 / SLT-A65V" }, + { 287, "SLT-A77 / SLT-A77V" }, + { 288, "NEX-5N" }, + { 289, "NEX-7" }, + { 290, "NEX-VG20E" }, + { 291, "SLT-A37" }, + { 292, "SLT-A57" }, + { 293, "NEX-F3" }, + { 294, "SLT-A99 / SLT-A99V" }, + { 295, "NEX-6" }, + { 296, "NEX-5R" }, + { 297, "DSC-RX100" }, + { 298, "DSC-RX1" }, + { 299, "NEX-VG900" }, + { 300, "NEX-VG30E" }, + { 302, "ILCE-3000" }, + { 303, "SLT-A58" }, + { 305, "NEX-3N" }, + { 306, "ILCE-7" }, + { 307, "NEX-5T" }, + { 308, "DSC-RX100M2" }, + { 309, "DSC-RX10" }, + { 310, "DSC-RX1R" }, + { 311, "ILCE-7R" }, + { 312, "ILCE-6000" }, + { 313, "ILCE-5000" }, + { 317, "DSC-RX100M3" }, + { 318, "ILCE-7S" }, + { 319, "ILCA-77M2" }, + { 339, "ILCE-5100" }, + { 346, "ILCE-QX1" } + }; + + //! Lookup table to translate Sony dynamic range optimizer values to readable labels + extern const TagDetails print0xb025[] = { + { 0, N_("Off") }, + { 1, N_("Standard") }, + { 2, N_("Advanced Auto") }, + { 3, N_("Auto") }, + { 8, N_("Advanced Lv1") }, + { 9, N_("Advanced Lv2") }, + { 10, N_("Advanced Lv3") }, + { 11, N_("Advanced Lv4") }, + { 12, N_("Advanced Lv5") }, + { 16, "1" }, + { 17, "2" }, + { 18, "3" }, + { 19, "4" }, + { 20, "5" } + }; + + //! Lookup table to translate Sony exposure mode values to readable labels + extern const TagDetails sonyExposureMode[] = { + { 0, N_("Auto") }, + { 1, N_("Portrait") }, + { 2, N_("Beach") }, + { 3, N_("Sports") }, + { 4, N_("Snow") }, + { 5, N_("Landscape") }, + { 6, N_("Program") }, + { 7, N_("Aperture priority") }, + { 8, N_("Shutter priority") }, + { 9, N_("Night Scene / Twilight") }, + { 10, N_("Hi-Speed Shutter") }, + { 11, N_("Twilight Portrait") }, + { 12, N_("Soft Snap / Portrait") }, + { 13, N_("Fireworks") }, + { 14, N_("Smile Shutter") }, + { 15, N_("Manual") }, + { 18, N_("High Sensitivity") }, + { 19, N_("Macro") }, + { 20, N_("Advanced Sports Shooting") }, + { 29, N_("Underwater") }, + { 33, N_("Food") }, + { 34, N_("Sweep Panorama") }, + { 35, N_("Handheld Night Shot") }, + { 36, N_("Anti Motion Blur") }, + { 37, N_("Pet") }, + { 38, N_("Backlight Correction HDR") }, + { 39, N_("Superior Auto") }, + { 40, N_("Background Defocus") }, + { 41, N_("Soft Skin") }, + { 42, N_("3D Image") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony JPEG Quality values to readable labels + extern const TagDetails sonyJPEGQuality[] = { + { 0, N_("Normal") }, + { 1, N_("Fine") }, + { 2, N_("Extra Fine") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony anti-blur values to readable labels + extern const TagDetails sonyAntiBlur[] = { + { 0, N_("Off") }, + { 1, N_("On (Continuous)") }, + { 2, N_("On (Shooting)") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony dynamic range optimizer values to readable labels + extern const TagDetails print0xb04f[] = { + { 0, N_("Off") }, + { 1, N_("Standard") }, + { 2, N_("Plus") } + }; + + //! Lookup table to translate Sony Intelligent Auto values to readable labels + extern const TagDetails sonyIntelligentAuto[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("Advanced") } + }; + + //! Lookup table to translate Sony WB values to readable labels + extern const TagDetails sonyWhiteBalance[] = { + { 0, N_("Auto") }, + { 4, N_("Manual") }, + { 5, N_("Daylight") }, + { 6, N_("Cloudy") }, + { 7, N_("White Flourescent") }, + { 8, N_("Cool White Flourescent") }, + { 9, N_("Day White Flourescent") }, + { 10, N_("Incandescent2") }, + { 11, N_("Warm White Fluorescent") }, + { 14, N_("Incandescent") }, + { 15, N_("Flash") }, + { 17, N_("Underwater 1 (Blue Water)") }, + { 18, N_("Underwater 2 (Green Water)") } + }; + + //! Lookup table to translate Sony AF mode values to readable labels + extern const TagDetails sonyFocusMode[] = { + { 1, "AF-S" }, + { 2, "AF-C" }, + { 4, N_("Permanent-AF") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony AF mode values to readable labels + extern const TagDetails sonyAFMode[] = { + { 0, N_("Default") }, + { 1, N_("Multi AF") }, + { 2, N_("Center AF") }, + { 3, N_("Spot AF") }, + { 4, N_("Flexible Spot AF") }, + { 6, N_("Touch AF") }, + { 14, N_("Manual Focus") }, + { 15, N_("Face Detected") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony AF illuminator values to readable labels + extern const TagDetails sonyAFIlluminator[] = { + { 0, N_("Off") }, + { 1, N_("Auto") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony macro mode values to readable labels + extern const TagDetails sonyMacroMode[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 2, N_("Close Focus") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony flash level values to readable labels + extern const TagDetails sonyFlashLevel[] = { + { -32768, N_("Low") }, + { -1, N_("n/a") }, + { 0, N_("Normal") }, + { 32767, N_("High") } + }; + + //! Lookup table to translate Sony release mode values to readable labels + extern const TagDetails sonyReleaseMode[] = { + { 0, N_("Normal") }, + { 2, N_("Burst") }, + { 5, N_("Exposure Bracketing") }, + { 6, N_("White Balance Bracketing") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony sequence number values to readable labels + extern const TagDetails sonySequenceNumber[] = { + { 0, N_("Single") }, + { 65535, N_("n/a") } + }; + + //! Lookup table to translate Sony long exposure noise reduction values to readable labels + extern const TagDetails sonyLongExposureNoiseReduction[] = { + { 0, N_("Off") }, + { 1, N_("On") }, + { 65535, N_("n/a") } + }; + + std::ostream& SonyMakerNote::print0xb000(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() != 4) + { + os << "(" << value << ")"; + } + else + { + std::string val = value.toString(0) + value.toString(1) + value.toString(2) + value.toString(3); + if (val == "0002") os << "JPEG"; + else if (val == "1000") os << "SR2"; + else if (val == "2000") os << "ARW 1.0"; + else if (val == "3000") os << "ARW 2.0"; + else if (val == "3100") os << "ARW 2.1"; + else if (val == "3200") os << "ARW 2.2"; + else os << "(" << value << ")"; + } + return os; + } + + std::ostream& SonyMakerNote::printImageSize(std::ostream& os, const Value& value, const ExifData*) + { + if (value.count() == 2) + os << value.toString(0) << " x " << value.toString(1); + else + os << "(" << value << ")"; + + return os; + } + + // Sony MakerNote Tag Info + const TagInfo SonyMakerNote::tagInfo_[] = { + TagInfo(0x0102, "Quality", N_("Image Quality"), + N_("Image quality"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyImageQuality), + TagInfo(0x0104, "FlashExposureComp", N_("Flash Exposure Compensation"), + N_("Flash exposure compensation in EV"), + sony1Id, makerTags, signedRational, -1, print0x9204), + TagInfo(0x0105, "Teleconverter", N_("Teleconverter Model"), + N_("Teleconverter Model"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyTeleconverterModel), + TagInfo(0x0112, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + N_("White Balance Fine Tune Value"), + sony1Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x0114, "CameraSettings", N_("Camera Settings"), + N_("Camera Settings"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0x0115, "WhiteBalance", N_("White Balance"), + N_("White balance"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyWhiteBalanceStd), + TagInfo(0x0116, "0x0116", "0x0116", + N_("Unknown"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0x0E00, "PrintIM", N_("Print IM"), + N_("PrintIM information"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0x1000, "MultiBurstMode", N_("Multi Burst Mode"), + N_("Multi Burst Mode"), + sony1Id, makerTags, undefined, -1, printMinoltaSonyBoolValue), + TagInfo(0x1001, "MultiBurstImageWidth", N_("Multi Burst Image Width"), + N_("Multi Burst Image Width"), + sony1Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x1002, "MultiBurstImageHeight", N_("Multi Burst Image Height"), + N_("Multi Burst Image Height"), + sony1Id, makerTags, unsignedShort, -1, printValue), + // TODO : Implement Panorama tags decoding. + TagInfo(0x1003, "Panorama", N_("Panorama"), + N_("Panorama"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0x2000, "0x2000", "0x2000", + N_("Unknown"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0x2001, "PreviewImage", N_("Preview Image"), + N_("JPEG preview image"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0x2002, "0x2002", "0x2002", + N_("Unknown"), + sony1Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0x2003, "0x2003", "0x2003", + N_("Unknown"), + sony1Id, makerTags, asciiString, -1, printValue), + TagInfo(0x2004, "Contrast", "Contrast", + N_("Contrast"), + sony1Id, makerTags, signedLong, -1, printValue), + TagInfo(0x2005, "Saturation", "Saturation", + N_("Saturation"), + sony1Id, makerTags, signedLong, -1, printValue), + TagInfo(0x2006, "0x2006", "0x2006", + N_("Unknown"), + sony1Id, makerTags, signedLong, -1, printValue), + TagInfo(0x2007, "0x2007", "0x2007", + N_("Unknown"), + sony1Id, makerTags, signedLong, -1, printValue), + TagInfo(0x2008, "0x2008", "0x2008", + N_("Unknown"), + sony1Id, makerTags, signedLong, -1, printValue), + TagInfo(0x2009, "0x2009", "0x2009", + N_("Unknown"), + sony1Id, makerTags, unsignedShort, -1, printValue), + TagInfo(0x200A, "AutoHDR", N_("Auto HDR"), + N_("High Definition Range Mode"), + sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(sonyHDRMode)), + // TODO : Implement Shot Info tags decoding. + TagInfo(0x3000, "ShotInfo", N_("Shot Info"), + N_("Shot Information"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0xB000, "FileFormat", N_("File Format"), + N_("File Format"), + sony1Id, makerTags, unsignedByte, -1, print0xb000), + TagInfo(0xB001, "SonyModelID", N_("Sony Model ID"), + N_("Sony Model ID"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyModelId)), + TagInfo(0xB020, "ColorReproduction", N_("Color Reproduction"), + N_("Color Reproduction"), + sony1Id, makerTags, asciiString, -1, printValue), + TagInfo(0xb021, "ColorTemperature", N_("Color Temperature"), + N_("Color Temperature"), + sony1Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xB022, "ColorCompensationFilter", N_("Color Compensation Filter"), + N_("Color Compensation Filter: negative is green, positive is magenta"), + sony1Id, makerTags, unsignedLong, -1, printValue), + TagInfo(0xB023, "SceneMode", N_("Scene Mode"), + N_("Scene Mode"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonySceneMode), + TagInfo(0xB024, "ZoneMatching", N_("Zone Matching"), + N_("Zone Matching"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyZoneMatching), + TagInfo(0xB025, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), + N_("Dynamic Range Optimizer"), + sony1Id, makerTags, unsignedLong, -1, EXV_PRINT_TAG(print0xb025)), + TagInfo(0xB026, "ImageStabilization", N_("Image Stabilization"), + N_("Image stabilization"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyBoolValue), + TagInfo(0xB027, "LensID", N_("Lens ID"), + N_("Lens identifier"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyLensID), + TagInfo(0xB028, "MinoltaMakerNote", N_("Minolta MakerNote"), + N_("Minolta MakerNote"), + sony1Id, makerTags, undefined, -1, printValue), + TagInfo(0xB029, "ColorMode", N_("Color Mode"), + N_("Color Mode"), + sony1Id, makerTags, unsignedLong, -1, printMinoltaSonyColorMode), + TagInfo(0xB02B, "FullImageSize", N_("Full Image Size"), + N_("Full Image Size"), + sony1Id, makerTags, unsignedLong, -1, printImageSize), + TagInfo(0xB02C, "PreviewImageSize", N_("Preview Image Size"), + N_("Preview image size"), + sony1Id, makerTags, unsignedLong, -1, printImageSize), + TagInfo(0xB040, "Macro", N_("Macro"), + N_("Macro"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyMacroMode)), + TagInfo(0xB041, "ExposureMode", N_("Exposure Mode"), + N_("Exposure Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyExposureMode)), + TagInfo(0xB042, "FocusMode", N_("Focus Mode"), + N_("Focus Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyFocusMode)), + TagInfo(0xB043, "AFMode", N_("AF Mode"), + N_("AF Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFMode)), + TagInfo(0xB044, "AFIlluminator", N_("AF Illuminator"), + N_("AF Illuminator"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAFIlluminator)), + TagInfo(0xB047, "JPEGQuality", N_("JPEG Quality"), + N_("JPEG Quality"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyJPEGQuality)), + TagInfo(0xB048, "FlashLevel", N_("Flash Level"), + N_("Flash Level"), + sony1Id, makerTags, signedShort, -1, EXV_PRINT_TAG(sonyFlashLevel)), + TagInfo(0xB049, "ReleaseMode", N_("Release Mode"), + N_("Release Mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyReleaseMode)), + TagInfo(0xB04A, "SequenceNumber", N_("Sequence Number"), + N_("Shot number in continuous burst mode"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonySequenceNumber)), + TagInfo(0xB04B, "AntiBlur", N_("Anti-Blur"), + N_("Anti-Blur"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyAntiBlur)), + TagInfo(0xB04E, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), + N_("Long Exposure Noise Reduction"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyLongExposureNoiseReduction)), + TagInfo(0xB04F, "DynamicRangeOptimizer", N_("Dynamic Range Optimizer"), + N_("Dynamic Range Optimizer"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(print0xb04f)), + TagInfo(0xB052, "IntelligentAuto", N_("Intelligent Auto"), + N_("Intelligent Auto"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyIntelligentAuto)), + TagInfo(0xB054, "WhiteBalance2", N_("White Balance 2"), + N_("White balance 2"), + sony1Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(sonyWhiteBalance)), + // End of list marker + TagInfo(0xffff, "(UnknownSony1MakerNoteTag)", "(UnknownSony1MakerNoteTag)", + N_("Unknown Sony1MakerNote tag"), + sony1Id, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* SonyMakerNote::tagList() + { + return tagInfo_; + } + + // -- Sony camera settings --------------------------------------------------------------- + + //! Lookup table to translate Sony camera settings drive mode values to readable labels + extern const TagDetails sonyDriveModeStd[] = { + { 1, N_("Single Frame") }, + { 2, N_("Continuous High") }, + { 4, N_("Self-timer 10 sec") }, + { 5, N_("Self-timer 2 sec") }, + { 7, N_("Continuous Bracketing") }, + { 12, N_("Continuous Low") }, + { 18, N_("White Balance Bracketing Low") }, + { 19, N_("D-Range Optimizer Bracketing Low") }, + { 19, N_("D-Range Optimizer Bracketing Low") } // To silence compiler warning + }; + + //! Lookup table to translate Sony camera settings focus mode values to readable labels + extern const TagDetails sonyCSFocusMode[] = { + { 0, N_("Manual") }, + { 1, "AF-S" }, + { 2, "AF-C" }, + { 3, "AF-A" } + }; + + //! Lookup table to translate Sony camera settings metering mode values to readable labels + extern const TagDetails sonyMeteringMode[] = { + { 1, N_("Multi-segment") }, + { 2, N_("Center weighted average") }, + { 4, N_("Spot") } + }; + + //! Lookup table to translate Sony camera settings creative style values to readable labels + extern const TagDetails sonyCreativeStyle[] = { + { 1, N_("Standard") }, + { 2, N_("Vivid") }, + { 3, N_("Portrait") }, + { 4, N_("Landscape") }, + { 5, N_("Sunset") }, + { 6, N_("Night View/Portrait") }, + { 8, N_("Black & White") }, + { 9, N_("Adobe RGB") }, + { 11, N_("Neutral") }, + { 12, N_("Clear") }, + { 13, N_("Deep") }, + { 14, N_("Light") }, + { 15, N_("Autumn") }, + { 16, N_("Sepia") } + }; + + //! Lookup table to translate Sony camera settings flash mode values to readable labels + extern const TagDetails sonyFlashMode[] = { + { 0, N_("ADI") }, + { 1, N_("TTL") }, + }; + + //! Lookup table to translate Sony AF illuminator values to readable labels + extern const TagDetails sonyAFIlluminatorCS[] = { + { 0, N_("Auto") }, + { 1, N_("Off") } + }; + + //! Lookup table to translate Sony camera settings image style values to readable labels + extern const TagDetails sonyImageStyle[] = { + { 1, N_("Standard") }, + { 2, N_("Vivid") }, + { 9, N_("Adobe RGB") }, + { 11, N_("Neutral") }, + { 129, N_("StyleBox1") }, + { 130, N_("StyleBox1") }, + { 131, N_("StyleBox1") } + }; + + //! Lookup table to translate Sony camera settings exposure program values to readable labels + extern const TagDetails sonyExposureProgram[] = { + { 0, N_("Auto") }, + { 1, N_("Manual") }, + { 2, N_("Program AE") }, + { 3, N_("Aperture-priority AE") }, + { 4, N_("Shutter speed priority AE") }, + { 8, N_("Program Shift A") }, + { 9, N_("Program Shift S") }, + { 16, N_("Portrait") }, + { 17, N_("Sports") }, + { 18, N_("Sunset") }, + { 19, N_("Night Portrait") }, + { 20, N_("Landscape") }, + { 21, N_("Macro") }, + { 35, N_("Auto No Flash") } + }; + + //! Lookup table to translate Sony camera settings image size values to readable labels + extern const TagDetails sonyImageSize[] = { + { 1, N_("Large") }, + { 2, N_("Medium") }, + { 3, N_("Small") } + }; + + //! Lookup table to translate Sony aspect ratio values to readable labels + extern const TagDetails sonyAspectRatio[] = { + { 1, "3:2" }, + { 2, "16:9" } + }; + + //! Lookup table to translate Sony exposure level increments values to readable labels + extern const TagDetails sonyExposureLevelIncrements[] = { + { 33, "1/3 EV" }, + { 50, "1/2 EV" } + }; + + // Sony Camera Settings Tag Info + // NOTE: all are for A200, A230, A300, A350, A700, A850 and A900 Sony model excepted + // some entries which are only relevant with A700. + + // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. + + const TagInfo SonyMakerNote::tagInfoCs_[] = { + // NOTE: A700 only + TagInfo(0x0004, "DriveMode", N_("Drive Mode"), + N_("Drive Mode"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyDriveModeStd)), + // NOTE: A700 only + TagInfo(0x0006, "WhiteBalanceFineTune", N_("White Balance Fine Tune"), + N_("White Balance Fine Tune"), + sony1CsId, makerTags, signedShort, 1, printValue), + TagInfo(0x0010, "FocusMode", N_("Focus Mode"), + N_("Focus Mode"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)), + TagInfo(0x0011, "AFAreaMode", N_("AF Area Mode"), + N_("AF Area Mode"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), + TagInfo(0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), + N_("Local AF Area Point"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), + TagInfo(0x0015, "MeteringMode", N_("Metering Mode"), + N_("Metering Mode"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)), + TagInfo(0x0016, "ISOSetting", N_("ISO Setting"), + N_("ISO Setting"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0018, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), + N_("Dynamic Range Optimizer Mode"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), + TagInfo(0x0019, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), + N_("Dynamic Range Optimizer Level"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001A, "CreativeStyle", N_("Creative Style"), + N_("Creative Style"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)), + TagInfo(0x001C, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001D, "Contrast", N_("Contrast"), + N_("Contrast"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001E, "Saturation", N_("Saturation"), + N_("Saturation"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001F, "ZoneMatchingValue", N_("Zone Matching Value"), + N_("Zone Matching Value"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0022, "Brightness", N_("Brightness"), + N_("Brightness"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0023, "FlashMode", N_("FlashMode"), + N_("FlashMode"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)), + // NOTE: A700 only + TagInfo(0x0028, "PrioritySetupShutterRelease", N_("Priority Setup Shutter Release"), + N_("Priority Setup Shutter Release"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyPrioritySetupShutterRelease), + // NOTE: A700 only + TagInfo(0x0029, "AFIlluminator", N_("AF Illuminator"), + N_("AF Illuminator"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAFIlluminatorCS)), + // NOTE: A700 only + TagInfo(0x002A, "AFWithShutter", N_("AF With Shutter"), + N_("AF With Shutter"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolInverseValue), + // NOTE: A700 only + TagInfo(0x002B, "LongExposureNoiseReduction", N_("Long Exposure Noise Reduction"), + N_("Long Exposure Noise Reduction"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + // NOTE: A700 only + TagInfo(0x002C, "HighISONoiseReduction", N_("High ISO NoiseReduction"), + N_("High ISO NoiseReduction"), + sony1CsId, makerTags, unsignedShort, 1, printValue), + // NOTE: A700 only + TagInfo(0x002D, "ImageStyle", N_("Image Style"), + N_("Image Style"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageStyle)), + TagInfo(0x003C, "ExposureProgram", N_("Exposure Program"), + N_("Exposure Program"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)), + TagInfo(0x003D, "ImageStabilization", N_("Image Stabilization"), + N_("Image Stabilization"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyBoolValue), + TagInfo(0x003F, "Rotation", N_("Rotation"), + N_("Rotation"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyRotation), + TagInfo(0x0054, "SonyImageSize", N_("Sony Image Size"), + N_("Sony Image Size"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)), + TagInfo(0x0055, "AspectRatio", N_("Aspect Ratio"), + N_("Aspect Ratio"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyAspectRatio)), + TagInfo(0x0056, "Quality", N_("Quality"), + N_("Quality"), + sony1CsId, makerTags, unsignedShort, 1, printMinoltaSonyQualityCs), + TagInfo(0x0058, "ExposureLevelIncrements", N_("Exposure Level Increments"), + N_("Exposure Level Increments"), + sony1CsId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureLevelIncrements)), + // End of list marker + TagInfo(0xffff, "(UnknownSony1CsTag)", "(UnknownSony1CsTag)", + N_("Unknown Sony1 Camera Settings tag"), + sony1CsId, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* SonyMakerNote::tagListCs() + { + return tagInfoCs_; + } + + // -- Sony camera settings 2 --------------------------------------------------------------- + + // Sony Camera Settings Tag Version 2 Info + // NOTE: for A330, A380, A450, A500, A550 Sony model + + // Warnings: Exiftool database give a list of tags shorted in decimal mode, not hexadecimal. + + const TagInfo SonyMakerNote::tagInfoCs2_[] = { + TagInfo(0x0010, "FocusMode", N_("Focus Mode"), + N_("Focus Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCSFocusMode)), + TagInfo(0x0011, "AFAreaMode", N_("AF Area Mode"), + N_("AF Area Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyAFAreaMode), + TagInfo(0x0012, "LocalAFAreaPoint", N_("Local AF Area Point"), + N_("Local AF Area Point"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyLocalAFAreaPoint), + TagInfo(0x0013, "MeteringMode", N_("Metering Mode"), + N_("Metering Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyMeteringMode)), + TagInfo(0x0014, "ISOSetting", N_("ISO Setting"), + N_("ISO Setting"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0016, "DynamicRangeOptimizerMode", N_("Dynamic Range Optimizer Mode"), + N_("Dynamic Range Optimizer Mode"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyDynamicRangeOptimizerMode), + TagInfo(0x0017, "DynamicRangeOptimizerLevel", N_("Dynamic Range Optimizer Level"), + N_("Dynamic Range Optimizer Level"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0018, "CreativeStyle", N_("Creative Style"), + N_("Creative Style"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyCreativeStyle)), + TagInfo(0x0019, "Sharpness", N_("Sharpness"), + N_("Sharpness"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001A, "Contrast", N_("Contrast"), + N_("Contrast"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x001B, "Saturation", N_("Saturation"), + N_("Saturation"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue), + TagInfo(0x0023, "FlashMode", N_("FlashMode"), + N_("FlashMode"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyFlashMode)), + TagInfo(0x003C, "ExposureProgram", N_("Exposure Program"), + N_("Exposure Program"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyExposureProgram)), + TagInfo(0x003F, "Rotation", N_("Rotation"), + N_("Rotation"), + sony1Cs2Id, makerTags, unsignedShort, 1, printMinoltaSonyRotation), + TagInfo(0x0054, "SonyImageSize", N_("Sony Image Size"), + N_("Sony Image Size"), + sony1Cs2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(sonyImageSize)), + // End of list marker + TagInfo(0xffff, "(UnknownSony1Cs2Tag)", "(UnknownSony1Cs2Tag)", + N_("Unknown Sony1 Camera Settings 2 tag"), + sony1Cs2Id, makerTags, unsignedShort, 1, printValue) + }; + + const TagInfo* SonyMakerNote::tagListCs2() + { + return tagInfoCs2_; + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/sonymn_int.hpp b/vendor/exiv2-0.25/src/sonymn_int.hpp new file mode 100644 index 0000000..58a76cb --- /dev/null +++ b/vendor/exiv2-0.25/src/sonymn_int.hpp @@ -0,0 +1,81 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file sonymn_int.hpp + @brief Sony MakerNote implemented using the following references:
+ Sony Makernote list by Phil Harvey
+Email communication with caulier dot gilles at gmail dot com
+ + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @author Gilles Caulier (cgilles) + caulier dot gilles at gmail dot com + @date 18-Apr-05, ahu: created + */ +#ifndef SONYMN_INT_HPP_ +#define SONYMN_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tags.hpp" +#include "types.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! MakerNote for Sony cameras + class SonyMakerNote { + public: + //! Return read-only list of built-in Sony tags + static const TagInfo* tagList(); + //! Return read-only list of built-in Sony Standard Camera Settings tags + static const TagInfo* tagListCs(); + //! Return read-only list of built-in Sony Standard Camera Settings version 2 tags + static const TagInfo* tagListCs2(); + + //! @name Print functions for Sony %MakerNote tags + //@{ + //! Print Sony Camera Model + static std::ostream& print0xb000(std::ostream&, const Value&, const ExifData*); + //! Print Full and Preview Image size + static std::ostream& printImageSize(std::ostream&, const Value&, const ExifData*); + + private: + //! Tag information + static const TagInfo tagInfo_[]; + static const TagInfo tagInfoCs_[]; + static const TagInfo tagInfoCs2_[]; + + }; // class SonyMakerNote + +}} // namespace Internal, Exiv2 + +#endif // #ifndef SONYMN_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/ssh.cpp b/vendor/exiv2-0.25/src/ssh.cpp new file mode 100644 index 0000000..0ee2112 --- /dev/null +++ b/vendor/exiv2-0.25/src/ssh.cpp @@ -0,0 +1,155 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: rw2image.cpp + Version: $Rev: 3201 $ + Author(s): Andreas Huggel (ahu) + History: 06-Jan-09, ahu: created + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: rw2image.cpp 3201 2013-12-01 12:13:42Z ahuggel $") + +#include "ssh.hpp" +#if EXV_USE_SSH == 1 +// class member definitions +namespace Exiv2 { + + SSH::SSH(const std::string& host, const std::string& user, const std::string& pass, const std::string port): + host_(host),user_(user),pass_(pass),sftp_(0) { + + std::string timeout = getEnv(envTIMEOUT); + timeout_ = atol(timeout.c_str()); + if (timeout_ == 0) { + throw Error(1, "Timeout Environmental Variable must be a positive integer."); + } + + session_ = ssh_new(); + if (session_ == NULL) { + throw Error(1, "Unable to create the the ssh session"); + } + + // try to connect + ssh_options_set(session_, SSH_OPTIONS_HOST, host_.c_str()); + ssh_options_set(session_, SSH_OPTIONS_USER, user_.c_str()); + ssh_options_set(session_, SSH_OPTIONS_TIMEOUT, &timeout_); + if (port != "") ssh_options_set(session_, SSH_OPTIONS_PORT_STR, port.c_str()); + + if (ssh_connect(session_) != SSH_OK) { + throw Error(1, ssh_get_error(session_)); + } + // Authentication + if (ssh_userauth_password(session_, NULL, pass_.c_str()) != SSH_AUTH_SUCCESS) { + throw Error(1, ssh_get_error(session_)); + } + } + + int SSH::runCommand(const std::string& cmd, std::string* output) { + int rc; + ssh_channel channel; + channel = ssh_channel_new(session_); + if (channel == NULL) { + rc = SSH_ERROR; + } else { + rc = ssh_channel_open_session(channel); + if (rc != SSH_OK) { + ssh_channel_free(channel); + } else { + char buffer[256]; + rc = ssh_channel_request_exec(channel, cmd.c_str()); + if (rc == SSH_OK) { + while ((rc = ssh_channel_read(channel, buffer, sizeof(buffer), 0)) > 0) { + output->append(buffer, rc); + } + } + ssh_channel_send_eof(channel); + ssh_channel_close(channel); + ssh_channel_free(channel); + } + } + return rc; + } + + int SSH::scp(const std::string& filePath, const byte* data, size_t size) { + ssh_scp scp; + int rc; + + size_t found = filePath.find_last_of("/\\"); + std::string filename = filePath.substr(found+1); + std::string path = filePath.substr(0, found+1); + + scp = ssh_scp_new(session_, SSH_SCP_WRITE, path.c_str()); + if (scp == NULL) { + rc = SSH_ERROR; + throw Error(1, ssh_get_error(session_)); + } else { + rc = ssh_scp_init(scp); + if (rc != SSH_OK) { + throw Error(1, ssh_get_error(session_)); + } else { +#ifdef _MSC_VER +// S_IRUSR & S_IWUSR not in MSVC (0000400 & 0000200 in /usr/include/sys/stat.h on MacOS-X 10.8) +#define S_IRUSR S_IREAD +#define S_IWUSR S_IWRITE +#endif + rc = ssh_scp_push_file (scp, filename.c_str(), size, S_IRUSR | S_IWUSR); + if (rc != SSH_OK) { + throw Error(1, ssh_get_error(session_)); + } else { + rc = ssh_scp_write(scp, data, size); + if (rc != SSH_OK) { + throw Error(1, ssh_get_error(session_)); + } + } + ssh_scp_close(scp); + } + ssh_scp_free(scp); + } + + return rc; + } + + void SSH::openSftp() { + if (sftp_) return; + + sftp_ = sftp_new(session_); + if (sftp_ == NULL) { + throw Error(1, "Unable to create the the sftp session"); + } + if (sftp_init(sftp_) != SSH_OK) { + sftp_free(sftp_); + throw Error(1, "Error initializing SFTP session"); + } + } + + void SSH::getFileSftp(const std::string& filePath, sftp_file& handle) { + if (!sftp_) openSftp(); + handle = sftp_open(sftp_, ("/"+filePath).c_str(), 0x0000, 0); // read only + } + + SSH::~SSH() { + if (sftp_) sftp_free(sftp_); + ssh_disconnect(session_); + ssh_free(session_); + } +} +#endif // EXV_USE_SSH == 1 diff --git a/vendor/exiv2-0.25/src/svn_version.h.in b/vendor/exiv2-0.25/src/svn_version.h.in new file mode 100644 index 0000000..c446119 --- /dev/null +++ b/vendor/exiv2-0.25/src/svn_version.h.in @@ -0,0 +1,3 @@ +#ifndef SVN_VERSION +#define SVN_VERSION @SVN_REVISION@ +#endif diff --git a/vendor/exiv2-0.25/src/svn_version.sh b/vendor/exiv2-0.25/src/svn_version.sh new file mode 100755 index 0000000..ff962e9 --- /dev/null +++ b/vendor/exiv2-0.25/src/svn_version.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +## +# update svn_version_h when revision changes +## + +svn_version_h=svn_version.h +svn_version=$(svn info .. 2>/dev/null) +s=$? + +## +# from Jenkins, svn is almost always a disaster because +# Jenkins SVN Plugin is 1.7 and the build machine is normally at least 1.8 +if [ "$s" == "0" ]; then + svn_version=$(svn info .. | grep ^Revision | cut -f 2 -d' ') + if [ -z "$svn_version" ]; then svn_version=0 ; fi +else + svn_version=0 +fi + +## +# report svn_version to output +set | grep svn_version | grep -v -e BASH | grep -v -e $svn_version_h + +## +# sniff svn_version in svn_version.h and delete the file if incorrect +if [ -e "$svn_version_h" ]; then + old=$(cut -f 3 -d' ' "$svn_version_h") + if [ "$old" != "$svn_version" ]; then + rm -rf "$svn_version_h" + fi +fi + +## +# write svn_version to file +if [ ! -e "$svn_version_h" ]; then + echo "#ifndef SVN_VERSION" > "$svn_version_h" + echo "#define SVN_VERSION $svn_version" >> "$svn_version_h" + echo "#endif" >> "$svn_version_h" +fi + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/src/tags.cpp b/vendor/exiv2-0.25/src/tags.cpp new file mode 100644 index 0000000..086eda7 --- /dev/null +++ b/vendor/exiv2-0.25/src/tags.cpp @@ -0,0 +1,3161 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: tags.cpp + Version: $Rev: 3831 $ + Author(s): Andreas Huggel (ahu) + Gilles Caulier (gc) + History: 15-Jan-04, ahu: created + 21-Jan-05, ahu: added MakerNote TagInfo registry and related code + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: tags.cpp 3831 2015-05-20 01:27:32Z asp $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "tags.hpp" +#include "tags_int.hpp" +#include "error.hpp" +#include "futils.hpp" +#include "value.hpp" +#include "convert.hpp" +#include "i18n.h" // NLS support. + +#include "canonmn_int.hpp" +#include "casiomn_int.hpp" +#include "fujimn_int.hpp" +#include "minoltamn_int.hpp" +#include "nikonmn_int.hpp" +#include "olympusmn_int.hpp" +#include "panasonicmn_int.hpp" +#include "pentaxmn_int.hpp" +#include "samsungmn_int.hpp" +#include "sigmamn_int.hpp" +#include "sonymn_int.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// local declarations +namespace { + // Print version string from an intermediate string + std::ostream& printVersion(std::ostream& os, const std::string& str); +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + //! List of all known Exif groups. Important: Group name (3rd column) must be unique! + extern const GroupInfo groupInfo[] = { + { ifdIdNotSet, "Unknown IFD", "Unknown", 0 }, + { ifd0Id, "IFD0", "Image", ifdTagList }, + { ifd1Id, "IFD1", "Thumbnail", ifdTagList }, + { ifd2Id, "IFD2", "Image2", ifdTagList }, + { ifd3Id, "IFD3", "Image3", ifdTagList }, + { exifId, "Exif", "Photo", exifTagList }, + { gpsId, "GPSInfo", "GPSInfo", gpsTagList }, + { iopId, "Iop", "Iop", iopTagList }, + { subImage1Id, "SubImage1", "SubImage1", ifdTagList }, + { subImage2Id, "SubImage2", "SubImage2", ifdTagList }, + { subImage3Id, "SubImage3", "SubImage3", ifdTagList }, + { subImage4Id, "SubImage4", "SubImage4", ifdTagList }, + { subImage5Id, "SubImage5", "SubImage5", ifdTagList }, + { subImage6Id, "SubImage6", "SubImage6", ifdTagList }, + { subImage7Id, "SubImage7", "SubImage7", ifdTagList }, + { subImage8Id, "SubImage8", "SubImage8", ifdTagList }, + { subImage9Id, "SubImage9", "SubImage9", ifdTagList }, + { subThumb1Id, "SubThumb1", "SubThumb1", ifdTagList }, + { panaRawId, "PanaRaw", "PanasonicRaw", PanasonicMakerNote::tagListRaw }, + { mnId, "Makernote", "MakerNote", mnTagList }, + { canonId, "Makernote", "Canon", CanonMakerNote::tagList }, + { canonCsId, "Makernote", "CanonCs", CanonMakerNote::tagListCs }, + { canonSiId, "Makernote", "CanonSi", CanonMakerNote::tagListSi }, + { canonCfId, "Makernote", "CanonCf", CanonMakerNote::tagListCf }, + { canonPiId, "Makernote", "CanonPi", CanonMakerNote::tagListPi }, + { canonFiId, "Makernote", "CanonFi", CanonMakerNote::tagListFi }, + { canonPaId, "Makernote", "CanonPa", CanonMakerNote::tagListPa }, + { canonPrId, "Makernote", "CanonPr", CanonMakerNote::tagListPr }, + { casioId, "Makernote", "Casio", CasioMakerNote::tagList }, + { casio2Id, "Makernote", "Casio2", Casio2MakerNote::tagList }, + { fujiId, "Makernote", "Fujifilm", FujiMakerNote::tagList }, + { minoltaId, "Makernote", "Minolta", MinoltaMakerNote::tagList }, + { minoltaCs5DId, "Makernote", "MinoltaCs5D", MinoltaMakerNote::tagListCs5D }, + { minoltaCs7DId, "Makernote", "MinoltaCs7D", MinoltaMakerNote::tagListCs7D }, + { minoltaCsOldId, "Makernote", "MinoltaCsOld", MinoltaMakerNote::tagListCsStd }, + { minoltaCsNewId, "Makernote", "MinoltaCsNew", MinoltaMakerNote::tagListCsStd }, + { nikon1Id, "Makernote", "Nikon1", Nikon1MakerNote::tagList }, + { nikon2Id, "Makernote", "Nikon2", Nikon2MakerNote::tagList }, + { nikon3Id, "Makernote", "Nikon3", Nikon3MakerNote::tagList }, + { nikonPvId, "Makernote", "NikonPreview", ifdTagList }, + { nikonVrId, "Makernote", "NikonVr", Nikon3MakerNote::tagListVr }, + { nikonPcId, "Makernote", "NikonPc", Nikon3MakerNote::tagListPc }, + { nikonWtId, "Makernote", "NikonWt", Nikon3MakerNote::tagListWt }, + { nikonIiId, "Makernote", "NikonIi", Nikon3MakerNote::tagListIi }, + { nikonAfId, "Makernote", "NikonAf", Nikon3MakerNote::tagListAf }, + { nikonAf2Id, "Makernote", "NikonAf2", Nikon3MakerNote::tagListAf2 }, + { nikonAFTId, "Makernote", "NikonAFT", Nikon3MakerNote::tagListAFT }, + { nikonFiId, "Makernote", "NikonFi", Nikon3MakerNote::tagListFi }, + { nikonMeId, "Makernote", "NikonMe", Nikon3MakerNote::tagListMe }, + { nikonFl1Id, "Makernote", "NikonFl1", Nikon3MakerNote::tagListFl1 }, + { nikonFl2Id, "Makernote", "NikonFl2", Nikon3MakerNote::tagListFl2 }, + { nikonFl3Id, "Makernote", "NikonFl3", Nikon3MakerNote::tagListFl3 }, + { nikonSi1Id, "Makernote", "NikonSiD80", Nikon3MakerNote::tagListSi1 }, + { nikonSi2Id, "Makernote", "NikonSiD40", Nikon3MakerNote::tagListSi2 }, + { nikonSi3Id, "Makernote", "NikonSiD300a", Nikon3MakerNote::tagListSi3 }, + { nikonSi4Id, "Makernote", "NikonSiD300b", Nikon3MakerNote::tagListSi4 }, + { nikonSi5Id, "Makernote", "NikonSi02xx", Nikon3MakerNote::tagListSi5 }, + { nikonSi6Id, "Makernote", "NikonSi01xx", Nikon3MakerNote::tagListSi5 }, + { nikonCb1Id, "Makernote", "NikonCb1", Nikon3MakerNote::tagListCb1 }, + { nikonCb2Id, "Makernote", "NikonCb2", Nikon3MakerNote::tagListCb2 }, + { nikonCb2aId, "Makernote", "NikonCb2a", Nikon3MakerNote::tagListCb2a }, + { nikonCb2bId, "Makernote", "NikonCb2b", Nikon3MakerNote::tagListCb2b }, + { nikonCb3Id, "Makernote", "NikonCb3", Nikon3MakerNote::tagListCb3 }, + { nikonCb4Id, "Makernote", "NikonCb4", Nikon3MakerNote::tagListCb4 }, + { nikonLd1Id, "Makernote", "NikonLd1", Nikon3MakerNote::tagListLd1 }, + { nikonLd2Id, "Makernote", "NikonLd2", Nikon3MakerNote::tagListLd2 }, + { nikonLd3Id, "Makernote", "NikonLd3", Nikon3MakerNote::tagListLd3 }, + { olympusId, "Makernote", "Olympus", OlympusMakerNote::tagList }, + { olympus2Id, "Makernote", "Olympus2", OlympusMakerNote::tagList }, + { olympusCsId, "Makernote", "OlympusCs", OlympusMakerNote::tagListCs }, + { olympusEqId, "Makernote", "OlympusEq", OlympusMakerNote::tagListEq }, + { olympusRdId, "Makernote", "OlympusRd", OlympusMakerNote::tagListRd }, + { olympusRd2Id, "Makernote", "OlympusRd2", OlympusMakerNote::tagListRd2 }, + { olympusIpId, "Makernote", "OlympusIp", OlympusMakerNote::tagListIp }, + { olympusFiId, "Makernote", "OlympusFi", OlympusMakerNote::tagListFi }, + { olympusFe1Id, "Makernote", "OlympusFe1", OlympusMakerNote::tagListFe }, + { olympusFe2Id, "Makernote", "OlympusFe2", OlympusMakerNote::tagListFe }, + { olympusFe3Id, "Makernote", "OlympusFe3", OlympusMakerNote::tagListFe }, + { olympusFe4Id, "Makernote", "OlympusFe4", OlympusMakerNote::tagListFe }, + { olympusFe5Id, "Makernote", "OlympusFe5", OlympusMakerNote::tagListFe }, + { olympusFe6Id, "Makernote", "OlympusFe6", OlympusMakerNote::tagListFe }, + { olympusFe7Id, "Makernote", "OlympusFe7", OlympusMakerNote::tagListFe }, + { olympusFe8Id, "Makernote", "OlympusFe8", OlympusMakerNote::tagListFe }, + { olympusFe9Id, "Makernote", "OlympusFe9", OlympusMakerNote::tagListFe }, + { olympusRiId, "Makernote", "OlympusRi", OlympusMakerNote::tagListRi }, + { panasonicId, "Makernote", "Panasonic", PanasonicMakerNote::tagList }, + { pentaxDngId, "Makernote", "PentaxDng", PentaxMakerNote::tagList }, + { pentaxId, "Makernote", "Pentax", PentaxMakerNote::tagList }, + { samsung2Id, "Makernote", "Samsung2", Samsung2MakerNote::tagList }, + { samsungPvId, "Makernote", "SamsungPreview", ifdTagList }, + { samsungPwId, "Makernote", "SamsungPictureWizard", Samsung2MakerNote::tagListPw }, + { sigmaId, "Makernote", "Sigma", SigmaMakerNote::tagList }, + { sony1Id, "Makernote", "Sony1", SonyMakerNote::tagList }, + { sony2Id, "Makernote", "Sony2", SonyMakerNote::tagList }, + { sonyMltId, "Makernote", "SonyMinolta", MinoltaMakerNote::tagList }, + { sony1CsId, "Makernote", "Sony1Cs", SonyMakerNote::tagListCs }, + { sony1Cs2Id, "Makernote", "Sony1Cs2", SonyMakerNote::tagListCs2 }, + { sony1MltCs7DId, "Makernote", "Sony1MltCs7D", MinoltaMakerNote::tagListCs7D }, + { sony1MltCsOldId, "Makernote", "Sony1MltCsOld",MinoltaMakerNote::tagListCsStd }, + { sony1MltCsNewId, "Makernote", "Sony1MltCsNew",MinoltaMakerNote::tagListCsStd }, + { sony1MltCsA100Id,"Makernote","Sony1MltCsA100",MinoltaMakerNote::tagListCsA100}, + { sony2CsId, "Makernote", "Sony2Cs", SonyMakerNote::tagListCs }, + { sony2Cs2Id, "Makernote", "Sony2Cs2", SonyMakerNote::tagListCs2 }, + { lastId, "(Last IFD info)", "(Last IFD item)", 0 } + }; + + //! List of all defined Exif sections. + extern const SectionInfo sectionInfo[] = { + { sectionIdNotSet, "(UnknownSection)", N_("Unknown section") }, + { imgStruct, "ImageStructure", N_("Image data structure") }, + { recOffset, "RecordingOffset", N_("Recording offset") }, + { imgCharacter, "ImageCharacteristics", N_("Image data characteristics") }, + { otherTags, "OtherTags", N_("Other data") }, + { exifFormat, "ExifFormat", N_("Exif data structure") }, + { exifVersion, "ExifVersion", N_("Exif version") }, + { imgConfig, "ImageConfig", N_("Image configuration") }, + { userInfo, "UserInfo", N_("User information") }, + { relatedFile, "RelatedFile", N_("Related file") }, + { dateTime, "DateTime", N_("Date and time") }, + { captureCond, "CaptureConditions", N_("Picture taking conditions") }, + { gpsTags, "GPS", N_("GPS information") }, + { iopTags, "Interoperability", N_("Interoperability information") }, + { makerTags, "Makernote", N_("Vendor specific information") }, + { dngTags, "DngTags", N_("Adobe DNG tags") }, + { panaRaw, "PanasonicRaw", N_("Panasonic RAW tags") }, + { tiffEp, "TIFF/EP", N_("TIFF/EP tags") }, + { tiffPm6, "TIFF&PM6", N_("TIFF PageMaker 6.0 tags") }, + { adobeOpi, "AdobeOPI", N_("Adobe OPI tags") }, + { lastSectionId, "(LastSection)", N_("Last section") } + }; + +} // namespace Exiv2 + +namespace Exiv2 { + namespace Internal { + + bool TagVocabulary::operator==(const std::string& key) const + { + if (strlen(voc_) > key.size()) return false; + return 0 == strcmp(voc_, key.c_str() + key.size() - strlen(voc_)); + } + + //! NewSubfileType, TIFF tag 0x00fe - this is actually a bitmask + extern const TagDetails exifNewSubfileType[] = { + { 0, N_("Primary image") }, + { 1, N_("Thumbnail/Preview image") }, + { 2, N_("Primary image, Multi page file") }, + { 3, N_("Thumbnail/Preview image, Multi page file") }, + { 4, N_("Primary image, Transparency mask") }, + { 5, N_("Thumbnail/Preview image, Transparency mask") }, + { 6, N_("Primary image, Multi page file, Transparency mask") }, + { 7, N_("Thumbnail/Preview image, Multi page file, Transparency mask") }, + { 7, N_("Thumbnail/Preview image, Multi page file, Transparency mask") } // To silence compiler warning + }; + + //! SubfileType, TIFF tag 0x00ff + extern const TagDetails exifSubfileType[] = { + { 1, N_("Full-resolution image data") }, + { 2, N_("Reduced-resolution image data") }, + { 3, N_("A single page of a multi-page image") } + }; + + //! Units for measuring X and Y resolution, tags 0x0128, 0xa210 + extern const TagDetails exifUnit[] = { + { 1, N_("none") }, + { 2, N_("inch") }, + { 3, N_("cm") } + }; + + //! Compression, tag 0x0103 + extern const TagDetails exifCompression[] = { + { 1, N_("Uncompressed") }, + { 2, N_("CCITT RLE") }, + { 3, N_("T4/Group 3 Fax") }, + { 4, N_("T6/Group 4 Fax") }, + { 5, N_("LZW") }, + { 6, N_("JPEG (old-style)") }, + { 7, N_("JPEG") }, + { 8, N_("Adobe Deflate") }, + { 9, N_("JBIG B&W") }, + { 10, N_("JBIG Color") }, + { 32766, N_("Next 2-bits RLE") }, + { 32769, N_("Epson ERF Compressed") }, + { 32770, N_("Samsung SRW Compressed") }, + { 32771, N_("CCITT RLE 1-word") }, + { 32773, N_("PackBits (Macintosh RLE)") }, + { 32809, N_("Thunderscan RLE") }, + { 32895, N_("IT8 CT Padding") }, + { 32896, N_("IT8 Linework RLE") }, + { 32897, N_("IT8 Monochrome Picture") }, + { 32898, N_("IT8 Binary Lineart") }, + { 32908, N_("Pixar Film (10-bits LZW)") }, + { 32909, N_("Pixar Log (11-bits ZIP)") }, + { 32946, N_("Pixar Deflate") }, + { 32947, N_("Kodak DCS Encoding") }, + { 34661, N_("ISO JBIG") }, + { 34676, N_("SGI Log Luminance RLE") }, + { 34677, N_("SGI Log 24-bits packed") }, + { 34712, N_("Leadtools JPEG 2000") }, + { 34713, N_("Nikon NEF Compressed") }, + { 65000, N_("Kodak DCR Compressed") }, + { 65535, N_("Pentax PEF Compressed") } + }; + + //! PhotometricInterpretation, tag 0x0106 + extern const TagDetails exifPhotometricInterpretation[] = { + { 0, N_("White Is Zero") }, + { 1, N_("Black Is Zero") }, + { 2, N_("RGB") }, + { 3, N_("RGB Palette") }, + { 4, N_("Transparency Mask") }, + { 5, N_("CMYK") }, + { 6, N_("YCbCr") }, + { 8, N_("CIELab") }, + { 9, N_("ICCLab") }, + { 10, N_("ITULab") }, + { 32803, N_("Color Filter Array") }, + { 32844, N_("Pixar LogL") }, + { 32845, N_("Pixar LogLuv") }, + { 34892, N_("Linear Raw") } + }; + + //! Thresholding, tag 0x0107 + extern const TagDetails exifThresholding[] = { + { 1, N_("No dithering or halftoning") }, + { 2, N_("Ordered dither or halftone technique") }, + { 3, N_("Randomized process") } + }; + + //! Orientation, tag 0x0112 + extern const TagDetails exifOrientation[] = { + { 1, N_("top, left") }, + { 2, N_("top, right") }, + { 3, N_("bottom, right") }, + { 4, N_("bottom, left") }, + { 5, N_("left, top") }, + { 6, N_("right, top") }, + { 7, N_("right, bottom") }, + { 8, N_("left, bottom") }, + { 8, N_("left, bottom") } // To silence compiler warning + }; + + //! Predictor, tag 0x013d + extern const TagDetails exifPredictor[] = { + { 1, N_("No prediction scheme used") }, + { 2, N_("Horizontal differencing") } + }; + + //! InkSet, tag 0x014c + extern const TagDetails exifInkSet[] = { + { 1, N_("CMYK") }, + { 2, N_("not CMYK") } + }; + + //! SampleFormat, tag 0x0153 + extern const TagDetails exifSampleFormat[] = { + { 1, N_("Unsigned integer data") }, + { 2, N_("Two's complement signed integer data") }, + { 3, N_("IEEE floating point data") }, + { 4, N_("Undefined data format") }, + { 4, N_("Undefined data format") } // To silence compiler warning + }; + + //! Indexed, tag 0x015a + extern const TagDetails exifIndexed[] = { + { 0, N_("Not indexed") }, + { 1, N_("Indexed") } + }; + + //! exifJpegLosslessPredictor, tag 0x0205 + extern const TagDetails exifJpegLosslessPredictor[] = { + { 1, N_("A") }, + { 2, N_("B") }, + { 3, N_("C") }, + { 4, N_("A+B-C") }, + { 5, N_("A+((B-C)/2)") }, + { 6, N_("B+((A-C)/2)") }, + { 7, N_("(A+B)/2") } + }; + + //! YCbCrPositioning, tag 0x0213 + extern const TagDetails exifYCbCrPositioning[] = { + { 1, N_("Centered") }, + { 2, N_("Co-sited") } + }; + + //! Flash, Exif tag 0x9209 + extern const TagDetails exifFlash[] = { + { 0x00, N_("No flash") }, + { 0x01, N_("Fired") }, + { 0x05, N_("Fired, return light not detected") }, + { 0x07, N_("Fired, return light detected") }, + { 0x08, N_("Yes, did not fire") }, + { 0x09, N_("Yes, compulsory") }, + { 0x0d, N_("Yes, compulsory, return light not detected") }, + { 0x0f, N_("Yes, compulsory, return light detected") }, + { 0x10, N_("No, compulsory") }, + { 0x14, N_("No, did not fire, return light not detected") }, + { 0x18, N_("No, auto") }, + { 0x19, N_("Yes, auto") }, + { 0x1d, N_("Yes, auto, return light not detected") }, + { 0x1f, N_("Yes, auto, return light detected") }, + { 0x20, N_("No flash function") }, + { 0x20, N_("No, no flash function") }, + { 0x41, N_("Yes, red-eye reduction") }, + { 0x45, N_("Yes, red-eye reduction, return light not detected") }, + { 0x47, N_("Yes, red-eye reduction, return light detected") }, + { 0x49, N_("Yes, compulsory, red-eye reduction") }, + { 0x4d, N_("Yes, compulsory, red-eye reduction, return light not detected") }, + { 0x4f, N_("Yes, compulsory, red-eye reduction, return light detected") }, + { 0x50, N_("No, red-eye reduction") }, + { 0x58, N_("No, auto, red-eye reduction") }, + { 0x59, N_("Yes, auto, red-eye reduction") }, + { 0x5d, N_("Yes, auto, red-eye reduction, return light not detected") }, + { 0x5f, N_("Yes, auto, red-eye reduction, return light detected") } + }; + + //! CFALayout, tag 0xc617 + extern const TagDetails exifCfaLayout[] = { + { 1, N_("Rectangular (or square) layout") }, + { 2, N_("Staggered layout A: even columns are offset down by 1/2 row") }, + { 3, N_("Staggered layout B: even columns are offset up by 1/2 row") }, + { 4, N_("Staggered layout C: even rows are offset right by 1/2 column") }, + { 5, N_("Staggered layout D: even rows are offset left by 1/2 column") } + }; + + //! Base IFD Tags (IFD0 and IFD1) + static const TagInfo ifdTagInfo[] = { + TagInfo(0x000b, "ProcessingSoftware", N_("Processing Software"), + N_("The name and version of the software used to post-process " + "the picture."), // ACD Systems Digital Imaging tag + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x00fe, "NewSubfileType", N_("New Subfile Type"), + N_("A general indication of the kind of data contained in this subfile."), + ifd0Id, imgStruct, unsignedLong, 1, EXV_PRINT_TAG(exifNewSubfileType)), // TIFF tag + TagInfo(0x00ff, "SubfileType", N_("Subfile Type"), + N_("A general indication of the kind of data contained in this subfile. " + "This field is deprecated. The NewSubfileType field should be used instead."), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifSubfileType)), // TIFF tag + TagInfo(0x0100, "ImageWidth", N_("Image Width"), + N_("The number of columns of image data, equal to the number of " + "pixels per row. In JPEG compressed data a JPEG marker is " + "used instead of this tag."), + ifd0Id, imgStruct, unsignedLong, 1, printValue), + TagInfo(0x0101, "ImageLength", N_("Image Length"), + N_("The number of rows of image data. In JPEG compressed data a " + "JPEG marker is used instead of this tag."), + ifd0Id, imgStruct, unsignedLong, 1, printValue), + TagInfo(0x0102, "BitsPerSample", N_("Bits per Sample"), + N_("The number of bits per image component. In this standard each " + "component of the image is 8 bits, so the value for this " + "tag is 8. See also . In JPEG compressed data " + "a JPEG marker is used instead of this tag."), + ifd0Id, imgStruct, unsignedShort, 3, printValue), + TagInfo(0x0103, "Compression", N_("Compression"), + N_("The compression scheme used for the image data. When a " + "primary image is JPEG compressed, this designation is " + "not necessary and is omitted. When thumbnails use JPEG " + "compression, this tag value is set to 6."), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifCompression)), + TagInfo(0x0106, "PhotometricInterpretation", N_("Photometric Interpretation"), + N_("The pixel composition. In JPEG compressed data a JPEG " + "marker is used instead of this tag."), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPhotometricInterpretation)), + TagInfo(0x0107, "Thresholding", N_("Thresholding"), + N_("For black and white TIFF files that represent shades of gray, " + "the technique used to convert from gray to black and white pixels."), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifThresholding)), // TIFF tag + TagInfo(0x0108, "CellWidth", N_("Cell Width"), + N_("The width of the dithering or halftoning matrix used to create a " + "dithered or halftoned bilevel file."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x0109, "CellLength", N_("Cell Length"), + N_("The length of the dithering or halftoning matrix used to create a " + "dithered or halftoned bilevel file."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x010a, "FillOrder", N_("Fill Order"), + N_("The logical order of bits within a byte"), + ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x010d, "DocumentName", N_("Document Name"), + N_("The name of the document from which this image was scanned"), + ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag + TagInfo(0x010e, "ImageDescription", N_("Image Description"), + N_("A character string giving the title of the image. It may be " + "a comment such as \"1988 company picnic\" or " + "the like. Two-bytes character codes cannot be used. " + "When a 2-bytes code is necessary, the Exif Private tag " + " is to be used."), + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x010f, "Make", N_("Manufacturer"), + N_("The manufacturer of the recording " + "equipment. This is the manufacturer of the DSC, scanner, " + "video digitizer or other equipment that generated the " + "image. When the field is left blank, it is treated as unknown."), + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x0110, "Model", N_("Model"), + N_("The model name or model number of the equipment. This is the " + "model name or number of the DSC, scanner, video digitizer " + "or other equipment that generated the image. When the field " + "is left blank, it is treated as unknown."), + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x0111, "StripOffsets", N_("Strip Offsets"), + N_("For each strip, the byte offset of that strip. It is " + "recommended that this be selected so the number of strip " + "bytes does not exceed 64 Kbytes. With JPEG compressed " + "data this designation is not needed and is omitted. See also " + " and ."), + ifd0Id, recOffset, unsignedLong, -1, printValue), + TagInfo(0x0112, "Orientation", N_("Orientation"), + N_("The image orientation viewed in terms of rows and columns."), + ifd0Id, imgStruct, unsignedShort, 1, print0x0112), + TagInfo(0x0115, "SamplesPerPixel", N_("Samples per Pixel"), + N_("The number of components per pixel. Since this standard applies " + "to RGB and YCbCr images, the value set for this tag is 3. " + "In JPEG compressed data a JPEG marker is used instead of this tag."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), + TagInfo(0x0116, "RowsPerStrip", N_("Rows per Strip"), + N_("The number of rows per strip. This is the number of rows " + "in the image of one strip when an image is divided into " + "strips. With JPEG compressed data this designation is not " + "needed and is omitted. See also and ."), + ifd0Id, recOffset, unsignedLong, 1, printValue), + TagInfo(0x0117, "StripByteCounts", N_("Strip Byte Count"), + N_("The total number of bytes in each strip. With JPEG compressed " + "data this designation is not needed and is omitted."), + ifd0Id, recOffset, unsignedLong, -1, printValue), + TagInfo(0x011a, "XResolution", N_("X-Resolution"), + N_("The number of pixels per in the " + "direction. When the image resolution is unknown, 72 [dpi] is designated."), + ifd0Id, imgStruct, unsignedRational, 1, printLong), + TagInfo(0x011b, "YResolution", N_("Y-Resolution"), + N_("The number of pixels per in the " + "direction. The same value as is designated."), + ifd0Id, imgStruct, unsignedRational, 1, printLong), + TagInfo(0x011c, "PlanarConfiguration", N_("Planar Configuration"), + N_("Indicates whether pixel components are recorded in a chunky " + "or planar format. In JPEG compressed files a JPEG marker " + "is used instead of this tag. If this field does not exist, " + "the TIFF default of 1 (chunky) is assumed."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), + TagInfo(0x0122, "GrayResponseUnit", N_("Gray Response Unit"), + N_("The precision of the information contained in the GrayResponseCurve."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x0123, "GrayResponseCurve", N_("Gray Response Curve"), + N_("For grayscale data, the optical density of each possible pixel value."), + ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x0124, "T4Options", N_("T4 Options"), + N_("T.4-encoding options."), + ifd0Id, imgStruct, unsignedLong, 1, printValue), // TIFF tag + TagInfo(0x0125, "T6Options", N_("T6 Options"), + N_("T.6-encoding options."), + ifd0Id, imgStruct, unsignedLong, 1, printValue), // TIFF tag + TagInfo(0x0128, "ResolutionUnit", N_("Resolution Unit"), + N_("The unit for measuring and . The same " + "unit is used for both and . If " + "the image resolution is unknown, 2 (inches) is designated."), + ifd0Id, imgStruct, unsignedShort, 1, printExifUnit), + TagInfo(0x0129, "PageNumber", N_("Page Number"), + N_("The page number of the page from which this image was scanned."), + ifd0Id, imgStruct, unsignedShort, 2, printValue), + TagInfo(0x012d, "TransferFunction", N_("Transfer Function"), + N_("A transfer function for the image, described in tabular style. " + "Normally this tag is not necessary, since color space is " + "specified in the color space information tag ()."), + ifd0Id, imgCharacter, unsignedShort, 3*256, printValue), + TagInfo(0x0131, "Software", N_("Software"), + N_("This tag records the name and version of the software or " + "firmware of the camera or image input device used to " + "generate the image. The detailed format is not specified, but " + "it is recommended that the example shown below be " + "followed. When the field is left blank, it is treated as unknown."), + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x0132, "DateTime", N_("Date and Time"), + N_("The date and time of image creation. In Exif standard, " + "it is the date and time the file was changed."), + ifd0Id, otherTags, asciiString, 20, printValue), + TagInfo(0x013b, "Artist", N_("Artist"), + N_("This tag records the name of the camera owner, photographer or " + "image creator. The detailed format is not specified, but it is " + "recommended that the information be written as in the example " + "below for ease of Interoperability. When the field is " + "left blank, it is treated as unknown. Ex.) \"Camera owner, John " + "Smith; Photographer, Michael Brown; Image creator, Ken James\""), + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x013c, "HostComputer", N_("Host Computer"), + N_("This tag records information about the host computer used " + "to generate the image."), + ifd0Id, otherTags, asciiString, 0, printValue), + TagInfo(0x013d, "Predictor", N_("Predictor"), + N_("A predictor is a mathematical operator that is applied to " + "the image data before an encoding scheme is applied."), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifPredictor)), // TIFF tag + TagInfo(0x013e, "WhitePoint", N_("White Point"), + N_("The chromaticity of the white point of the image. Normally " + "this tag is not necessary, since color space is specified " + "in the colorspace information tag ()."), + ifd0Id, imgCharacter, unsignedRational, 2, printValue), + TagInfo(0x013f, "PrimaryChromaticities", N_("Primary Chromaticities"), + N_("The chromaticity of the three primary colors of the image. " + "Normally this tag is not necessary, since colorspace is " + "specified in the colorspace information tag ()."), + ifd0Id, imgCharacter, unsignedRational, 6, printValue), + TagInfo(0x0140, "ColorMap", N_("Color Map"), + N_("A color map for palette color images. This field defines " + "a Red-Green-Blue color map (often called a lookup table) " + "for palette-color images. In a palette-color image, a " + "pixel value is used to index into an RGB lookup table."), + ifd0Id, imgCharacter, unsignedShort, -1, printValue), + TagInfo(0x0141, "HalftoneHints", N_("Halftone Hints"), + N_("The purpose of the HalftoneHints field is to convey to the " + "halftone function the range of gray levels within a " + "colorimetrically-specified image that should retain tonal detail."), + ifd0Id, imgStruct, unsignedShort, 2, printValue), // TIFF tag + TagInfo(0x0142, "TileWidth", N_("Tile Width"), + N_("The tile width in pixels. This is the number of columns in each tile."), + ifd0Id, recOffset, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x0143, "TileLength", N_("Tile Length"), + N_("The tile length (height) in pixels. This is the number of rows in each tile."), + ifd0Id, recOffset, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x0144, "TileOffsets", N_("Tile Offsets"), + N_("For each tile, the byte offset of that tile, as compressed and " + "stored on disk. The offset is specified with respect to the " + "beginning of the TIFF file. Note that this implies that each " + "tile has a location independent of the locations of other tiles."), + ifd0Id, recOffset, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x0145, "TileByteCounts", N_("Tile Byte Counts"), + N_("For each tile, the number of (compressed) bytes in that tile. See " + "TileOffsets for a description of how the byte counts are ordered."), + ifd0Id, recOffset, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x014a, "SubIFDs", N_("SubIFD Offsets"), + N_("Defined by Adobe Corporation to enable TIFF Trees within a TIFF file."), + ifd0Id, tiffEp, unsignedLong, -1, printValue), + TagInfo(0x014c, "InkSet", N_("Ink Set"), + N_("The set of inks used in a separated (PhotometricInterpretation=5) image."), + ifd0Id, imgStruct, unsignedShort, 1, EXV_PRINT_TAG(exifInkSet)), // TIFF tag + TagInfo(0x014d, "InkNames", N_("Ink Names"), + N_("The name of each ink used in a separated (PhotometricInterpretation=5) image."), + ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag + TagInfo(0x014e, "NumberOfInks", N_("Number Of Inks"), + N_("The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x0150, "DotRange", N_("Dot Range"), + N_("The component values that correspond to a 0% dot and 100% dot."), + ifd0Id, imgStruct, unsignedByte, -1, printValue), // TIFF tag + TagInfo(0x0151, "TargetPrinter", N_("Target Printer"), + N_("A description of the printing environment for which this separation is intended."), + ifd0Id, imgStruct, asciiString, 0, printValue), // TIFF tag + TagInfo(0x0152, "ExtraSamples", N_("Extra Samples"), + N_("Specifies that each pixel has m extra components whose interpretation " + "is defined by one of the values listed below."), + ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x0153, "SampleFormat", N_("Sample Format"), + N_("This field specifies how to interpret each data sample in a pixel."), + ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifSampleFormat)), // TIFF tag + TagInfo(0x0154, "SMinSampleValue", N_("SMin Sample Value"), + N_("This field specifies the minimum sample value."), + ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x0155, "SMaxSampleValue", N_("SMax Sample Value"), + N_("This field specifies the maximum sample value."), + ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x0156, "TransferRange", N_("Transfer Range"), + N_("Expands the range of the TransferFunction"), + ifd0Id, imgCharacter, unsignedShort, 6, printValue), // TIFF tag + TagInfo(0x0157, "ClipPath", N_("Clip Path"), + N_("A TIFF ClipPath is intended to mirror the essentials of PostScript's " + "path creation functionality."), + ifd0Id, tiffPm6, unsignedByte, -1, printValue), // TIFF&PM6 tag + TagInfo(0x0158, "XClipPathUnits", N_("X Clip Path Units"), + N_("The number of units that span the width of the image, in terms of " + "integer ClipPath coordinates."), + ifd0Id, tiffPm6, signedShort, 1, printValue), // TIFF&PM6 tag + TagInfo(0x0159, "YClipPathUnits", N_("Y Clip Path Units"), + N_("The number of units that span the height of the image, in terms of " + "integer ClipPath coordinates."), + ifd0Id, tiffPm6, signedShort, 1, printValue), // TIFF&PM6 tag + TagInfo(0x015a, "Indexed", N_("Indexed"), + N_("Indexed images are images where the 'pixels' do not represent color " + "values, but rather an index (usually 8-bit) into a separate color " + "table, the ColorMap."), + ifd0Id, tiffPm6, unsignedShort, 1, EXV_PRINT_TAG(exifIndexed)), // TIFF&PM6 tag + TagInfo(0x015b, "JPEGTables", N_("JPEG tables"), + N_("This optional tag may be used to encode the JPEG quantization and " + "Huffman tables for subsequent use by the JPEG decompression process."), + ifd0Id, imgStruct, undefined, 0, printValue), // TIFF/EP tag + TagInfo(0x015F, "OPIProxy", N_("OPI Proxy"), + N_("OPIProxy gives information concerning whether this image is a " + "low-resolution proxy of a high-resolution image (Adobe OPI)."), + ifd0Id, adobeOpi, unsignedShort, 1, printValue), // Adobe OPI tag + TagInfo(0x0200, "JPEGProc", N_("JPEG Process"), + N_("This field indicates the process used to produce the compressed data"), + ifd0Id, recOffset, unsignedLong, 1, printValue), // TIFF tag + TagInfo(0x0201, "JPEGInterchangeFormat", N_("JPEG Interchange Format"), + N_("The offset to the start byte (SOI) of JPEG compressed " + "thumbnail data. This is not used for primary image JPEG data."), + ifd0Id, recOffset, unsignedLong, 1, printValue), + TagInfo(0x0202, "JPEGInterchangeFormatLength", N_("JPEG Interchange Format Length"), + N_("The number of bytes of JPEG compressed thumbnail data. This " + "is not used for primary image JPEG data. JPEG thumbnails " + "are not divided but are recorded as a continuous JPEG " + "bitstream from SOI to EOI. Appn and COM markers should " + "not be recorded. Compressed thumbnails must be recorded in no " + "more than 64 Kbytes, including all other data to be recorded in APP1."), + ifd0Id, recOffset, unsignedLong, 1, printValue), + TagInfo(0x0203, "JPEGRestartInterval", N_("JPEG Restart Interval"), + N_("This Field indicates the length of the restart interval used " + "in the compressed image data."), + ifd0Id, imgStruct, unsignedShort, 1, printValue), // TIFF tag + TagInfo(0x0205, "JPEGLosslessPredictors", N_("JPEG Lossless Predictors"), + N_("This Field points to a list of lossless predictor-selection " + "values, one per component."), + ifd0Id, imgStruct, unsignedShort, -1, EXV_PRINT_TAG(exifJpegLosslessPredictor)), // TIFF tag + TagInfo(0x0206, "JPEGPointTransforms", N_("JPEG Point Transforms"), + N_("This Field points to a list of point transform values, one per component."), + ifd0Id, imgStruct, unsignedShort, -1, printValue), // TIFF tag + TagInfo(0x0207, "JPEGQTables", N_("JPEG Q-Tables"), + N_("This Field points to a list of offsets to the quantization tables, " + "one per component."), + ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag + TagInfo(0x0208, "JPEGDCTables", N_("JPEG DC-Tables"), + N_("This Field points to a list of offsets to the DC Huffman tables or " + "the lossless Huffman tables, one per component."), + ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag + TagInfo(0x0209, "JPEGACTables", N_("JPEG AC-Tables"), + N_("This Field points to a list of offsets to the Huffman AC tables, " + "one per component."), + ifd0Id, imgStruct, unsignedLong, -1, printValue), // TIFF tag + TagInfo(0x0211, "YCbCrCoefficients", N_("YCbCr Coefficients"), + N_("The matrix coefficients for transformation from RGB to YCbCr " + "image data. No default is given in TIFF; but here the " + "value given in Appendix E, \"Color Space Guidelines\", is used " + "as the default. The color space is declared in a " + "color space information tag, with the default being the value " + "that gives the optimal image characteristics " + "Interoperability this condition."), + ifd0Id, imgCharacter, unsignedRational, 3, printValue), + TagInfo(0x0212, "YCbCrSubSampling", N_("YCbCr Sub-Sampling"), + N_("The sampling ratio of chrominance components in relation to the " + "luminance component. In JPEG compressed data a JPEG marker " + "is used instead of this tag."), + ifd0Id, imgStruct, unsignedShort, 2, printValue), + TagInfo(0x0213, "YCbCrPositioning", N_("YCbCr Positioning"), + N_("The position of chrominance components in relation to the " + "luminance component. This field is designated only for " + "JPEG compressed data or uncompressed YCbCr data. The TIFF " + "default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is " + "recommended in this standard that 2 (co-sited) be used to " + "record data, in order to improve the image quality when viewed " + "on TV systems. When this field does not exist, the reader shall " + "assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the " + "TIFF default (centered) is recommended. If the reader " + "does not have the capability of supporting both kinds of " + ", it shall follow the TIFF default regardless " + "of the value in this field. It is preferable that readers " + "be able to support both centered and co-sited positioning."), + ifd0Id, imgStruct, unsignedShort, 1, print0x0213), + TagInfo(0x0214, "ReferenceBlackWhite", N_("Reference Black/White"), + N_("The reference black point value and reference white point " + "value. No defaults are given in TIFF, but the values " + "below are given as defaults here. The color space is declared " + "in a color space information tag, with the default " + "being the value that gives the optimal image characteristics " + "Interoperability these conditions."), + ifd0Id, imgCharacter, unsignedRational, 6, printValue), + TagInfo(0x02bc, "XMLPacket", N_("XML Packet"), + N_("XMP Metadata (Adobe technote 9-14-02)"), + ifd0Id, otherTags, unsignedByte, -1, printValue), + TagInfo(0x4746, "Rating", N_("Windows Rating"), + N_("Rating tag used by Windows"), + ifd0Id, otherTags, unsignedShort, -1, printValue), // Windows Tag + TagInfo(0x4749, "RatingPercent", N_("Windows Rating Percent"), + N_("Rating tag used by Windows, value in percent"), + ifd0Id, otherTags, unsignedShort, -1, printValue), // Windows Tag + TagInfo(0x800d, "ImageID", N_("Image ID"), + N_("ImageID is the full pathname of the original, high-resolution image, " + "or any other identifying string that uniquely identifies the original " + "image (Adobe OPI)."), + ifd0Id, adobeOpi, asciiString, 0, printValue), // Adobe OPI tag + TagInfo(0x828d, "CFARepeatPatternDim", N_("CFA Repeat Pattern Dimension"), + N_("Contains two values representing the minimum rows and columns " + "to define the repeating patterns of the color filter array"), + ifd0Id, tiffEp, unsignedShort, 2, printValue), // TIFF/EP Tag + TagInfo(0x828e, "CFAPattern", N_("CFA Pattern"), + N_("Indicates the color filter array (CFA) geometric pattern of the image " + "sensor when a one-chip color area sensor is used. It does not apply to " + "all sensing methods"), + ifd0Id, tiffEp, unsignedByte, -1, printValue), // TIFF/EP Tag + TagInfo(0x828f, "BatteryLevel", N_("Battery Level"), + "Contains a value of the battery level as a fraction or string", + ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP Tag + TagInfo(0x8298, "Copyright", N_("Copyright"), + N_("Copyright information. In this standard the tag is used to " + "indicate both the photographer and editor copyrights. It is " + "the copyright notice of the person or organization claiming " + "rights to the image. The Interoperability copyright " + "statement including date and rights should be written in this " + "field; e.g., \"Copyright, John Smith, 19xx. All rights " + "reserved.\". In this standard the field records both the " + "photographer and editor copyrights, with each recorded in a " + "separate part of the statement. When there is a clear distinction " + "between the photographer and editor copyrights, these are to be " + "written in the order of photographer followed by editor copyright, " + "separated by NULL (in this case since the statement also ends with " + "a NULL, there are two NULL codes). When only the photographer " + "copyright is given, it is terminated by one NULL code. When only " + "the editor copyright is given, the photographer copyright part " + "consists of one space followed by a terminating NULL code, then " + "the editor copyright is given. When the field is left blank, it is " + "treated as unknown."), + ifd0Id, otherTags, asciiString, 0, print0x8298), + TagInfo(0x829a, "ExposureTime", N_("Exposure Time"), N_("Exposure time, given in seconds."), ifd0Id, tiffEp, unsignedRational, 1, print0x829a), // TIFF/EP tag + TagInfo(0x829d, "FNumber", N_("FNumber"), N_("The F number."), ifd0Id, tiffEp, unsignedRational, 1, print0x829d), // TIFF/EP tag + TagInfo(0x83bb, "IPTCNAA", N_("IPTC/NAA"), + N_("Contains an IPTC/NAA record"), + ifd0Id, tiffEp, unsignedLong, 0, printValue), // TIFF/EP Tag + TagInfo(0x8649, "ImageResources", N_("Image Resources Block"), + N_("Contains information embedded by the Adobe Photoshop application"), + ifd0Id, otherTags, unsignedByte, -1, printValue), + TagInfo(0x8769, "ExifTag", N_("Exif IFD Pointer"), + N_("A pointer to the Exif IFD. Interoperability, Exif IFD has the " + "same structure as that of the IFD specified in TIFF. " + "ordinarily, however, it does not contain image data as in " + "the case of TIFF."), + ifd0Id, exifFormat, unsignedLong, 1, printValue), + TagInfo(0x8773, "InterColorProfile", N_("Inter Color Profile"), + N_("Contains an InterColor Consortium (ICC) format color space characterization/profile"), + ifd0Id, tiffEp, undefined, -1, printValue), + TagInfo(0x8822, "ExposureProgram", N_("Exposure Program"), N_("The class of the program used by the camera to set exposure when the picture is taken."), ifd0Id, tiffEp, unsignedShort, 1, print0x8822), // TIFF/EP tag + TagInfo(0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), N_("Indicates the spectral sensitivity of each channel of the camera used."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag + TagInfo(0x8825, "GPSTag", N_("GPS Info IFD Pointer"), + N_("A pointer to the GPS Info IFD. The " + "Interoperability structure of the GPS Info IFD, like that of " + "Exif IFD, has no image data."), + ifd0Id, exifFormat, unsignedLong, 1, printValue), + TagInfo(0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), N_("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232."), ifd0Id, tiffEp, unsignedShort, 0, print0x8827), // TIFF/EP tag + TagInfo(0x8828, "OECF", N_("OECF"), N_("Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag + TagInfo(0x8829, "Interlace", N_("Interlace"), N_("Indicates the field number of multifield images."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag + TagInfo(0x882a, "TimeZoneOffset", N_("Time Zone Offset"), + N_("This optional tag encodes the time zone of the camera clock (relative" + "to Greenwich Mean Time) used to create the DataTimeOriginal tag-value" + "when the picture was taken. It may also contain the time zone offset" + "of the clock used to create the DateTime tag-value when the image was" + "modified."), + ifd0Id, tiffEp, signedShort, -1, printValue), + TagInfo(0x882b, "SelfTimerMode", N_("Self Timer Mode"), N_("Number of seconds image capture was delayed from button press."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag + TagInfo(0x9003, "DateTimeOriginal", N_("Date Time Original"), N_("The date and time when the original image data was generated."), ifd0Id, tiffEp, asciiString, 20, printValue), // TIFF/EP tag + TagInfo(0x9102, "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), N_("Specific to compressed data; states the compressed bits per pixel."), ifd0Id, tiffEp, unsignedRational, 1, printFloat), // TIFF/EP tag + TagInfo(0x9201, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed."), ifd0Id, tiffEp, signedRational, 1, print0x9201), // TIFF/EP tag + TagInfo(0x9202, "ApertureValue", N_("Aperture Value"), N_("The lens aperture."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202), // TIFF/EP tag + TagInfo(0x9203, "BrightnessValue", N_("Brightness Value"), N_("The value of brightness."), ifd0Id, tiffEp, signedRational, 1, printFloat), // TIFF/EP tag + TagInfo(0x9204, "ExposureBiasValue", N_("Exposure Bias Value"), N_("The exposure bias."), ifd0Id, tiffEp, signedRational, 1, print0x9204), // TIFF/EP tag + TagInfo(0x9205, "MaxApertureValue", N_("Max Aperture Value"), N_("The smallest F number of the lens."), ifd0Id, tiffEp, unsignedRational, 1, print0x9202), // TIFF/EP tag + TagInfo(0x9206, "SubjectDistance", N_("Subject Distance"), N_("The distance to the subject, given in meters."), ifd0Id, tiffEp, signedRational, 1, print0x9206), // TIFF/EP tag + TagInfo(0x9207, "MeteringMode", N_("Metering Mode"), N_("The metering mode."), ifd0Id, tiffEp, unsignedShort, 1, print0x9207), // TIFF/EP tag + TagInfo(0x9208, "LightSource", N_("Light Source"), N_("The kind of light source."), ifd0Id, tiffEp, unsignedShort, 1, print0x9208), // TIFF/EP tag + TagInfo(0x9209, "Flash", N_("Flash"), N_("Indicates the status of flash when the image was shot."), ifd0Id, tiffEp, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)), // TIFF/EP tag + TagInfo(0x920a, "FocalLength", N_("Focal Length"), N_("The actual focal length of the lens, in mm."), ifd0Id, tiffEp, unsignedRational, 1, print0x920a), // TIFF/EP tag + TagInfo(0x920b, "FlashEnergy", N_("Flash Energy"), N_("Amount of flash energy (BCPS)."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag + TagInfo(0x920c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), N_("SFR of the camera."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag + TagInfo(0x920d, "Noise", N_("Noise"), N_("Noise measurement values."), ifd0Id, tiffEp, undefined, 0, printValue), // TIFF/EP tag + TagInfo(0x920e, "FocalPlaneXResolution", N_("Focal Plane X Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag + TagInfo(0x920f, "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), N_("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag + TagInfo(0x9210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), N_("Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391)."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag + TagInfo(0x9211, "ImageNumber", N_("Image Number"), N_("Number assigned to an image, e.g., in a chained image burst."), ifd0Id, tiffEp, unsignedLong, 1, printValue), // TIFF/EP tag + TagInfo(0x9212, "SecurityClassification", N_("Security Classification"), N_("Security classification assigned to the image."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag + TagInfo(0x9213, "ImageHistory", N_("Image History"), N_("Record of what has been done to the image."), ifd0Id, tiffEp, asciiString, 0, printValue), // TIFF/EP tag + TagInfo(0x9214, "SubjectLocation", N_("Subject Location"), N_("Indicates the location and area of the main subject in the overall scene."), ifd0Id, tiffEp, unsignedShort, 2, printValue), // TIFF/EP tag + TagInfo(0x9215, "ExposureIndex", N_("Exposure Index"), N_("Encodes the camera exposure index setting when image was captured."), ifd0Id, tiffEp, unsignedRational, 1, printValue), // TIFF/EP tag + TagInfo(0x9216, "TIFFEPStandardID", N_("TIFF/EP Standard ID"), + N_("Contains four ASCII characters representing the TIFF/EP standard " + "version of a TIFF/EP file, eg '1', '0', '0', '0'"), + ifd0Id, tiffEp, unsignedByte, 4, printValue), // TIFF/EP Tag + TagInfo(0x9217, "SensingMethod", N_("Sensing Method"), N_("Type of image sensor."), ifd0Id, tiffEp, unsignedShort, 1, printValue), // TIFF/EP tag + TagInfo(0x9c9b, "XPTitle", N_("Windows Title"), + N_("Title tag used by Windows, encoded in UCS2"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag + TagInfo(0x9c9c, "XPComment", N_("Windows Comment"), + N_("Comment tag used by Windows, encoded in UCS2"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag + TagInfo(0x9c9d, "XPAuthor", N_("Windows Author"), + N_("Author tag used by Windows, encoded in UCS2"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag + TagInfo(0x9c9e, "XPKeywords", N_("Windows Keywords"), + N_("Keywords tag used by Windows, encoded in UCS2"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag + TagInfo(0x9c9f, "XPSubject", N_("Windows Subject"), + N_("Subject tag used by Windows, encoded in UCS2"), + ifd0Id, otherTags, unsignedByte, -1, printUcs2), // Windows Tag + TagInfo(0xc4a5, "PrintImageMatching", N_("Print Image Matching"), + N_("Print Image Matching, description needed."), + ifd0Id, otherTags, undefined, -1, printValue), + TagInfo(0xc612, "DNGVersion", N_("DNG version"), + N_("This tag encodes the DNG four-tier version number. For files " + "compliant with version 1.1.0.0 of the DNG specification, this " + "tag should contain the bytes: 1, 1, 0, 0."), + ifd0Id, dngTags, unsignedByte, 4, printValue), // DNG tag + TagInfo(0xc613, "DNGBackwardVersion", N_("DNG backward version"), + N_("This tag specifies the oldest version of the Digital Negative " + "specification for which a file is compatible. Readers should" + "not attempt to read a file if this tag specifies a version " + "number that is higher than the version number of the specification " + "the reader was based on. In addition to checking the version tags, " + "readers should, for all tags, check the types, counts, and values, " + "to verify it is able to correctly read the file."), + ifd0Id, dngTags, unsignedByte, 4, printValue), // DNG tag + TagInfo(0xc614, "UniqueCameraModel", N_("Unique Camera Model"), + N_("Defines a unique, non-localized name for the camera model that " + "created the image in the raw file. This name should include the " + "manufacturer's name to avoid conflicts, and should not be localized, " + "even if the camera name itself is localized for different markets " + "(see LocalizedCameraModel). This string may be used by reader " + "software to index into per-model preferences and replacement profiles."), + ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag + TagInfo(0xc615, "LocalizedCameraModel", N_("Localized Camera Model"), + N_("Similar to the UniqueCameraModel field, except the name can be " + "localized for different markets to match the localization of the " + "camera name."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc616, "CFAPlaneColor", N_("CFA Plane Color"), + N_("Provides a mapping between the values in the CFAPattern tag and the " + "plane numbers in LinearRaw space. This is a required tag for non-RGB " + "CFA images."), + ifd0Id, dngTags, unsignedByte, -1, printValue), // DNG tag + TagInfo(0xc617, "CFALayout", N_("CFA Layout"), + N_("Describes the spatial layout of the CFA."), + ifd0Id, dngTags, unsignedShort, 1, EXV_PRINT_TAG(exifCfaLayout)), // DNG tag + TagInfo(0xc618, "LinearizationTable", N_("Linearization Table"), + N_("Describes a lookup table that maps stored values into linear values. " + "This tag is typically used to increase compression ratios by storing " + "the raw data in a non-linear, more visually uniform space with fewer " + "total encoding levels. If SamplesPerPixel is not equal to one, this " + "single table applies to all the samples for each pixel."), + ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag + TagInfo(0xc619, "BlackLevelRepeatDim", N_("Black Level Repeat Dim"), + N_("Specifies repeat pattern size for the BlackLevel tag."), + ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag + TagInfo(0xc61a, "BlackLevel", N_("Black Level"), + N_("Specifies the zero light (a.k.a. thermal black or black current) " + "encoding level, as a repeating pattern. The origin of this pattern " + "is the top-left corner of the ActiveArea rectangle. The values are " + "stored in row-column-sample scan order."), + ifd0Id, dngTags, unsignedRational, -1, printValue), // DNG tag + TagInfo(0xc61b, "BlackLevelDeltaH", N_("Black Level Delta H"), + N_("If the zero light encoding level is a function of the image column, " + "BlackLevelDeltaH specifies the difference between the zero light " + "encoding level for each column and the baseline zero light encoding " + "level. If SamplesPerPixel is not equal to one, this single table " + "applies to all the samples for each pixel."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc61c, "BlackLevelDeltaV", N_("Black Level Delta V"), + N_("If the zero light encoding level is a function of the image row, " + "this tag specifies the difference between the zero light encoding " + "level for each row and the baseline zero light encoding level. If " + "SamplesPerPixel is not equal to one, this single table applies to " + "all the samples for each pixel."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc61d, "WhiteLevel", N_("White Level"), + N_("This tag specifies the fully saturated encoding level for the raw " + "sample values. Saturation is caused either by the sensor itself " + "becoming highly non-linear in response, or by the camera's analog " + "to digital converter clipping."), + ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag + TagInfo(0xc61e, "DefaultScale", N_("Default Scale"), + N_("DefaultScale is required for cameras with non-square pixels. It " + "specifies the default scale factors for each direction to convert " + "the image to square pixels. Typically these factors are selected " + "to approximately preserve total pixel count. For CFA images that " + "use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, " + "these two values should usually differ by a factor of 2.0."), + ifd0Id, dngTags, unsignedRational, 2, printValue), // DNG tag + TagInfo(0xc61f, "DefaultCropOrigin", N_("Default Crop Origin"), + N_("Raw images often store extra pixels around the edges of the final " + "image. These extra pixels help prevent interpolation artifacts near " + "the edges of the final image. DefaultCropOrigin specifies the origin " + "of the final image area, in raw image coordinates (i.e., before the " + "DefaultScale has been applied), relative to the top-left corner of " + "the ActiveArea rectangle."), + ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag + TagInfo(0xc620, "DefaultCropSize", N_("Default Crop Size"), + N_("Raw images often store extra pixels around the edges of the final " + "image. These extra pixels help prevent interpolation artifacts near " + "the edges of the final image. DefaultCropSize specifies the size of " + "the final image area, in raw image coordinates (i.e., before the " + "DefaultScale has been applied)."), + ifd0Id, dngTags, unsignedShort, 2, printValue), // DNG tag + TagInfo(0xc621, "ColorMatrix1", N_("Color Matrix 1"), + N_("ColorMatrix1 defines a transformation matrix that converts XYZ " + "values to reference camera native color space values, under the " + "first calibration illuminant. The matrix values are stored in row " + "scan order. The ColorMatrix1 tag is required for all non-monochrome " + "DNG files."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc622, "ColorMatrix2", N_("Color Matrix 2"), + N_("ColorMatrix2 defines a transformation matrix that converts XYZ " + "values to reference camera native color space values, under the " + "second calibration illuminant. The matrix values are stored in row " + "scan order."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc623, "CameraCalibration1", N_("Camera Calibration 1"), + N_("CameraCalibration1 defines a calibration matrix that transforms " + "reference camera native space values to individual camera native " + "space values under the first calibration illuminant. The matrix is " + "stored in row scan order. This matrix is stored separately from the " + "matrix specified by the ColorMatrix1 tag to allow raw converters to " + "swap in replacement color matrices based on UniqueCameraModel tag, " + "while still taking advantage of any per-individual camera calibration " + "performed by the camera manufacturer."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc624, "CameraCalibration2", N_("Camera Calibration 2"), + N_("CameraCalibration2 defines a calibration matrix that transforms " + "reference camera native space values to individual camera native " + "space values under the second calibration illuminant. The matrix is " + "stored in row scan order. This matrix is stored separately from the " + "matrix specified by the ColorMatrix2 tag to allow raw converters to " + "swap in replacement color matrices based on UniqueCameraModel tag, " + "while still taking advantage of any per-individual camera calibration " + "performed by the camera manufacturer."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc625, "ReductionMatrix1", N_("Reduction Matrix 1"), + N_("ReductionMatrix1 defines a dimensionality reduction matrix for use as " + "the first stage in converting color camera native space values to XYZ " + "values, under the first calibration illuminant. This tag may only be " + "used if ColorPlanes is greater than 3. The matrix is stored in row " + "scan order."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc626, "ReductionMatrix2", N_("Reduction Matrix 2"), + N_("ReductionMatrix2 defines a dimensionality reduction matrix for use as " + "the first stage in converting color camera native space values to XYZ " + "values, under the second calibration illuminant. This tag may only be " + "used if ColorPlanes is greater than 3. The matrix is stored in row " + "scan order."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc627, "AnalogBalance", N_("Analog Balance"), + N_("Normally the stored raw values are not white balanced, since any " + "digital white balancing will reduce the dynamic range of the final " + "image if the user decides to later adjust the white balance; " + "however, if camera hardware is capable of white balancing the color " + "channels before the signal is digitized, it can improve the dynamic " + "range of the final image. AnalogBalance defines the gain, either " + "analog (recommended) or digital (not recommended) that has been " + "applied the stored raw values."), + ifd0Id, dngTags, unsignedRational, -1, printValue), // DNG tag + TagInfo(0xc628, "AsShotNeutral", N_("As Shot Neutral"), + N_("Specifies the selected white balance at time of capture, encoded as " + "the coordinates of a perfectly neutral color in linear reference " + "space values. The inclusion of this tag precludes the inclusion of " + "the AsShotWhiteXY tag."), + ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag + TagInfo(0xc629, "AsShotWhiteXY", N_("As Shot White XY"), + N_("Specifies the selected white balance at time of capture, encoded as " + "x-y chromaticity coordinates. The inclusion of this tag precludes " + "the inclusion of the AsShotNeutral tag."), + ifd0Id, dngTags, unsignedRational, 2, printValue), // DNG tag + TagInfo(0xc62a, "BaselineExposure", N_("Baseline Exposure"), + N_("Camera models vary in the trade-off they make between highlight " + "headroom and shadow noise. Some leave a significant amount of " + "highlight headroom during a normal exposure. This allows significant " + "negative exposure compensation to be applied during raw conversion, " + "but also means normal exposures will contain more shadow noise. Other " + "models leave less headroom during normal exposures. This allows for " + "less negative exposure compensation, but results in lower shadow " + "noise for normal exposures. Because of these differences, a raw " + "converter needs to vary the zero point of its exposure compensation " + "control from model to model. BaselineExposure specifies by how much " + "(in EV units) to move the zero point. Positive values result in " + "brighter default results, while negative values result in darker " + "default results."), + ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag + TagInfo(0xc62b, "BaselineNoise", N_("Baseline Noise"), + N_("Specifies the relative noise level of the camera model at a baseline " + "ISO value of 100, compared to a reference camera model. Since noise " + "levels tend to vary approximately with the square root of the ISO " + "value, a raw converter can use this value, combined with the current " + "ISO, to estimate the relative noise level of the current image."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc62c, "BaselineSharpness", N_("Baseline Sharpness"), + N_("Specifies the relative amount of sharpening required for this camera " + "model, compared to a reference camera model. Camera models vary in " + "the strengths of their anti-aliasing filters. Cameras with weak or " + "no filters require less sharpening than cameras with strong " + "anti-aliasing filters."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc62d, "BayerGreenSplit", N_("Bayer Green Split"), + N_("Only applies to CFA images using a Bayer pattern filter array. This " + "tag specifies, in arbitrary units, how closely the values of the " + "green pixels in the blue/green rows track the values of the green " + "pixels in the red/green rows. A value of zero means the two kinds " + "of green pixels track closely, while a non-zero value means they " + "sometimes diverge. The useful range for this tag is from 0 (no " + "divergence) to about 5000 (quite large divergence)."), + ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag + TagInfo(0xc62e, "LinearResponseLimit", N_("Linear Response Limit"), + N_("Some sensors have an unpredictable non-linearity in their response " + "as they near the upper limit of their encoding range. This " + "non-linearity results in color shifts in the highlight areas of the " + "resulting image unless the raw converter compensates for this effect. " + "LinearResponseLimit specifies the fraction of the encoding range " + "above which the response may become significantly non-linear."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc62f, "CameraSerialNumber", N_("Camera Serial Number"), + N_("CameraSerialNumber contains the serial number of the camera or camera " + "body that captured the image."), + ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag + TagInfo(0xc630, "LensInfo", N_("Lens Info"), + N_("Contains information about the lens that captured the image. If the " + "minimum f-stops are unknown, they should be encoded as 0/0."), + ifd0Id, dngTags, unsignedRational, 4, printValue), // DNG tag + TagInfo(0xc631, "ChromaBlurRadius", N_("Chroma Blur Radius"), + N_("ChromaBlurRadius provides a hint to the DNG reader about how much " + "chroma blur should be applied to the image. If this tag is omitted, " + "the reader will use its default amount of chroma blurring. " + "Normally this tag is only included for non-CFA images, since the " + "amount of chroma blur required for mosaic images is highly dependent " + "on the de-mosaic algorithm, in which case the DNG reader's default " + "value is likely optimized for its particular de-mosaic algorithm."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc632, "AntiAliasStrength", N_("Anti Alias Strength"), + N_("Provides a hint to the DNG reader about how strong the camera's " + "anti-alias filter is. A value of 0.0 means no anti-alias filter " + "(i.e., the camera is prone to aliasing artifacts with some subjects), " + "while a value of 1.0 means a strong anti-alias filter (i.e., the " + "camera almost never has aliasing artifacts)."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc633, "ShadowScale", N_("Shadow Scale"), + N_("This tag is used by Adobe Camera Raw to control the sensitivity of " + "its 'Shadows' slider."), + ifd0Id, dngTags, signedRational, 1, printValue), // DNG tag + TagInfo(0xc634, "DNGPrivateData", N_("DNG Private Data"), + N_("Provides a way for camera manufacturers to store private data in the " + "DNG file for use by their own raw converters, and to have that data " + "preserved by programs that edit DNG files."), + ifd0Id, dngTags, unsignedByte, -1, printValue), // DNG tag + TagInfo(0xc635, "MakerNoteSafety", N_("MakerNote Safety"), + N_("MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote " + "tag is safe to preserve along with the rest of the EXIF data. File " + "browsers and other image management software processing an image " + "with a preserved MakerNote should be aware that any thumbnail " + "image embedded in the MakerNote may be stale, and may not reflect " + "the current state of the full size image."), + ifd0Id, dngTags, unsignedShort, 1, printValue), // DNG tag + TagInfo(0xc65a, "CalibrationIlluminant1", N_("Calibration Illuminant 1"), + N_("The illuminant used for the first set of color calibration tags " + "(ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal " + "values for this tag are the same as the legal values for the " + "LightSource EXIF tag."), + ifd0Id, dngTags, unsignedShort, 1, printValue), // DNG tag + TagInfo(0xc65b, "CalibrationIlluminant2", N_("Calibration Illuminant 2"), + N_("The illuminant used for an optional second set of color calibration " + "tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal " + "values for this tag are the same as the legal values for the " + "CalibrationIlluminant1 tag; however, if both are included, neither " + "is allowed to have a value of 0 (unknown)."), + ifd0Id, dngTags, unsignedShort, 1, printValue), // DNG tag + TagInfo(0xc65c, "BestQualityScale", N_("Best Quality Scale"), + N_("For some cameras, the best possible image quality is not achieved " + "by preserving the total pixel count during conversion. For example, " + "Fujifilm SuperCCD images have maximum detail when their total pixel " + "count is doubled. This tag specifies the amount by which the values " + "of the DefaultScale tag need to be multiplied to achieve the best " + "quality image size."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc65d, "RawDataUniqueID", N_("Raw Data Unique ID"), + N_("This tag contains a 16-byte unique identifier for the raw image data " + "in the DNG file. DNG readers can use this tag to recognize a " + "particular raw image, even if the file's name or the metadata " + "contained in the file has been changed. If a DNG writer creates such " + "an identifier, it should do so using an algorithm that will ensure " + "that it is very unlikely two different images will end up having the " + "same identifier."), + ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag + TagInfo(0xc68b, "OriginalRawFileName", N_("Original Raw File Name"), + N_("If the DNG file was converted from a non-DNG raw file, then this tag " + "contains the file name of that original raw file."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc68c, "OriginalRawFileData", N_("Original Raw File Data"), + N_("If the DNG file was converted from a non-DNG raw file, then this tag " + "contains the compressed contents of that original raw file. The " + "contents of this tag always use the big-endian byte order. The tag " + "contains a sequence of data blocks. Future versions of the DNG " + "specification may define additional data blocks, so DNG readers " + "should ignore extra bytes when parsing this tag. DNG readers should " + "also detect the case where data blocks are missing from the end of " + "the sequence, and should assume a default value for all the missing " + "blocks. There are no padding or alignment bytes between data blocks."), + ifd0Id, dngTags, undefined, -1, printValue), // DNG tag + TagInfo(0xc68d, "ActiveArea", N_("Active Area"), + N_("This rectangle defines the active (non-masked) pixels of the sensor. " + "The order of the rectangle coordinates is: top, left, bottom, right."), + ifd0Id, dngTags, unsignedShort, 4, printValue), // DNG tag + TagInfo(0xc68e, "MaskedAreas", N_("Masked Areas"), + N_("This tag contains a list of non-overlapping rectangle coordinates of " + "fully masked pixels, which can be optionally used by DNG readers " + "to measure the black encoding level. The order of each rectangle's " + "coordinates is: top, left, bottom, right. If the raw image data has " + "already had its black encoding level subtracted, then this tag should " + "not be used, since the masked pixels are no longer useful."), + ifd0Id, dngTags, unsignedShort, -1, printValue), // DNG tag + TagInfo(0xc68f, "AsShotICCProfile", N_("As-Shot ICC Profile"), + N_("This tag contains an ICC profile that, in conjunction with the " + "AsShotPreProfileMatrix tag, provides the camera manufacturer with a " + "way to specify a default color rendering from camera color space " + "coordinates (linear reference values) into the ICC profile connection " + "space. The ICC profile connection space is an output referred " + "colorimetric space, whereas the other color calibration tags in DNG " + "specify a conversion into a scene referred colorimetric space. This " + "means that the rendering in this profile should include any desired " + "tone and gamut mapping needed to convert between scene referred " + "values and output referred values."), + ifd0Id, dngTags, undefined, -1, printValue), // DNG tag + TagInfo(0xc690, "AsShotPreProfileMatrix", N_("As-Shot Pre-Profile Matrix"), + N_("This tag is used in conjunction with the AsShotICCProfile tag. It " + "specifies a matrix that should be applied to the camera color space " + "coordinates before processing the values through the ICC profile " + "specified in the AsShotICCProfile tag. The matrix is stored in the " + "row scan order. If ColorPlanes is greater than three, then this " + "matrix can (but is not required to) reduce the dimensionality of the " + "color data down to three components, in which case the AsShotICCProfile " + "should have three rather than ColorPlanes input components."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc691, "CurrentICCProfile", N_("Current ICC Profile"), + N_("This tag is used in conjunction with the CurrentPreProfileMatrix tag. " + "The CurrentICCProfile and CurrentPreProfileMatrix tags have the same " + "purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix " + "tag pair, except they are for use by raw file editors rather than " + "camera manufacturers."), + ifd0Id, dngTags, undefined, -1, printValue), // DNG tag + TagInfo(0xc692, "CurrentPreProfileMatrix", N_("Current Pre-Profile Matrix"), + N_("This tag is used in conjunction with the CurrentICCProfile tag. " + "The CurrentICCProfile and CurrentPreProfileMatrix tags have the same " + "purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix " + "tag pair, except they are for use by raw file editors rather than " + "camera manufacturers."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc6bf, "ColorimetricReference", N_("Colorimetric Reference"), + N_("The DNG color model documents a transform between camera colors and " + "CIE XYZ values. This tag describes the colorimetric reference for the " + "CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values " + "are output-referred, using the ICC profile perceptual dynamic range. This " + "tag allows output-referred data to be stored in DNG files and still processed " + "correctly by DNG readers."), + ifd0Id, dngTags, unsignedShort, 0, printValue), // DNG tag + TagInfo(0xc6f3, "CameraCalibrationSignature", N_("Camera Calibration Signature"), + N_("A UTF-8 encoded string associated with the CameraCalibration1 and " + "CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags " + "should only be used in the DNG color transform if the string stored in the " + "CameraCalibrationSignature tag exactly matches the string stored in the " + "ProfileCalibrationSignature tag for the selected camera profile."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc6f4, "ProfileCalibrationSignature", N_("Profile Calibration Signature"), + N_("A UTF-8 encoded string associated with the camera profile tags. The " + "CameraCalibration1 and CameraCalibration2 tags should only be used in the " + "DNG color transfer if the string stored in the CameraCalibrationSignature " + "tag exactly matches the string stored in the ProfileCalibrationSignature tag " + "for the selected camera profile."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc6f6, "AsShotProfileName", N_("As Shot Profile Name"), + N_("A UTF-8 encoded string containing the name of the \"as shot\" camera " + "profile, if any."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc6f7, "NoiseReductionApplied", N_("Noise Reduction Applied"), + N_("This tag indicates how much noise reduction has been applied to the raw " + "data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction " + "has been applied. A 1.0 value indicates that the \"ideal\" amount of noise " + "reduction has been applied, i.e. that the DNG reader should not apply " + "additional noise reduction by default. A value of 0/0 indicates that this " + "parameter is unknown."), + ifd0Id, dngTags, unsignedRational, 1, printValue), // DNG tag + TagInfo(0xc6f8, "ProfileName", N_("Profile Name"), + N_("A UTF-8 encoded string containing the name of the camera profile. This " + "tag is optional if there is only a single camera profile stored in the file " + "but is required for all camera profiles if there is more than one camera " + "profile stored in the file."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc6f9, "ProfileHueSatMapDims", N_("Profile Hue Sat Map Dims"), + N_("This tag specifies the number of input samples in each dimension of the " + "hue/saturation/value mapping tables. The data for these tables are stored " + "in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common " + "case has ValueDivisions equal to 1, so only hue and saturation are used as " + "inputs to the mapping table."), + ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag + TagInfo(0xc6fa, "ProfileHueSatMapData1", N_("Profile Hue Sat Map Data 1"), + N_("This tag contains the data for the first hue/saturation/value mapping " + "table. Each entry of the table contains three 32-bit IEEE floating-point " + "values. The first entry is hue shift in degrees; the second entry is " + "saturation scale factor; and the third entry is a value scale factor. The " + "table entries are stored in the tag in nested loop order, with the value " + "divisions in the outer loop, the hue divisions in the middle loop, and the " + "saturation divisions in the inner loop. All zero input saturation entries " + "are required to have a value scale factor of 1.0."), + ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag + TagInfo(0xc6fb, "ProfileHueSatMapData2", N_("Profile Hue Sat Map Data 2"), + N_("This tag contains the data for the second hue/saturation/value mapping " + "table. Each entry of the table contains three 32-bit IEEE floating-point " + "values. The first entry is hue shift in degrees; the second entry is a " + "saturation scale factor; and the third entry is a value scale factor. The " + "table entries are stored in the tag in nested loop order, with the value " + "divisions in the outer loop, the hue divisions in the middle loop, and the " + "saturation divisions in the inner loop. All zero input saturation entries " + "are required to have a value scale factor of 1.0."), + ifd0Id, dngTags, tiffFloat, 0, printValue), // DNG tag + TagInfo(0xc6fc, "ProfileToneCurve", N_("Profile Tone Curve"), + N_("This tag contains a default tone curve that can be applied while " + "processing the image as a starting point for user adjustments. The curve " + "is specified as a list of 32-bit IEEE floating-point value pairs in linear " + "gamma. Each sample has an input value in the range of 0.0 to 1.0, and an " + "output value in the range of 0.0 to 1.0. The first sample is required to be " + "(0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated " + "the curve using a cubic spline."), + ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag + TagInfo(0xc6fd, "ProfileEmbedPolicy", N_("Profile Embed Policy"), + N_("This tag contains information about the usage rules for the associated " + "camera profile."), + ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag + TagInfo(0xc6fe, "ProfileCopyright", N_("Profile Copyright"), + N_("A UTF-8 encoded string containing the copyright information for the " + "camera profile. This string always should be preserved along with the other " + "camera profile tags."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc714, "ForwardMatrix1", N_("Forward Matrix 1"), + N_("This tag defines a matrix that maps white balanced camera colors to XYZ " + "D50 colors."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc715, "ForwardMatrix2", N_("Forward Matrix 2"), + N_("This tag defines a matrix that maps white balanced camera colors to XYZ " + "D50 colors."), + ifd0Id, dngTags, signedRational, -1, printValue), // DNG tag + TagInfo(0xc716, "PreviewApplicationName", N_("Preview Application Name"), + N_("A UTF-8 encoded string containing the name of the application that " + "created the preview stored in the IFD."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc717, "PreviewApplicationVersion", N_("Preview Application Version"), + N_("A UTF-8 encoded string containing the version number of the application " + "that created the preview stored in the IFD."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc718, "PreviewSettingsName", N_("Preview Settings Name"), + N_("A UTF-8 encoded string containing the name of the conversion settings " + "(for example, snapshot name) used for the preview stored in the IFD."), + ifd0Id, dngTags, unsignedByte, 0, printValue), // DNG tag + TagInfo(0xc719, "PreviewSettingsDigest", N_("Preview Settings Digest"), + N_("A unique ID of the conversion settings (for example, MD5 digest) used " + "to render the preview stored in the IFD."), + ifd0Id, dngTags, unsignedByte, 16, printValue), // DNG tag + TagInfo(0xc71a, "PreviewColorSpace", N_("Preview Color Space"), + N_("This tag specifies the color space in which the rendered preview in this " + "IFD is stored. The default value for this tag is sRGB for color previews " + "and Gray Gamma 2.2 for monochrome previews."), + ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag + TagInfo(0xc71b, "PreviewDateTime", N_("Preview Date Time"), + N_("This tag is an ASCII string containing the name of the date/time at which " + "the preview stored in the IFD was rendered. The date/time is encoded using " + "ISO 8601 format."), + ifd0Id, dngTags, asciiString, 0, printValue), // DNG tag + TagInfo(0xc71c, "RawImageDigest", N_("Raw Image Digest"), + N_("This tag is an MD5 digest of the raw image data. All pixels in the image " + "are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits " + "deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). " + "The data for each pixel is processed in little-endian byte order."), + ifd0Id, dngTags, undefined, 16, printValue), // DNG tag + TagInfo(0xc71d, "OriginalRawFileDigest", N_("Original Raw File Digest"), + N_("This tag is an MD5 digest of the data stored in the OriginalRawFileData " + "tag."), + ifd0Id, dngTags, undefined, 16, printValue), // DNG tag + TagInfo(0xc71e, "SubTileBlockSize", N_("Sub Tile Block Size"), + N_("Normally, the pixels within a tile are stored in simple row-scan order. " + "This tag specifies that the pixels within a tile should be grouped first " + "into rectangular blocks of the specified size. These blocks are stored in " + "row-scan order. Within each block, the pixels are stored in row-scan order. " + "The use of a non-default value for this tag requires setting the " + "DNGBackwardVersion tag to at least 1.2.0.0."), + ifd0Id, dngTags, unsignedLong, 2, printValue), // DNG tag + TagInfo(0xc71f, "RowInterleaveFactor", N_("Row Interleave Factor"), + N_("This tag specifies that rows of the image are stored in interleaved " + "order. The value of the tag specifies the number of interleaved fields. " + "The use of a non-default value for this tag requires setting the " + "DNGBackwardVersion tag to at least 1.2.0.0."), + ifd0Id, dngTags, unsignedLong, 1, printValue), // DNG tag + TagInfo(0xc725, "ProfileLookTableDims", N_("Profile Look Table Dims"), + N_("This tag specifies the number of input samples in each dimension of a " + "default \"look\" table. The data for this table is stored in the " + "ProfileLookTableData tag."), + ifd0Id, dngTags, unsignedLong, 3, printValue), // DNG tag + TagInfo(0xc726, "ProfileLookTableData", N_("Profile Look Table Data"), + N_("This tag contains a default \"look\" table that can be applied while " + "processing the image as a starting point for user adjustment. This table " + "uses the same format as the tables stored in the ProfileHueSatMapData1 " + "and ProfileHueSatMapData2 tags, and is applied in the same color space. " + "However, it should be applied later in the processing pipe, after any " + "exposure compensation and/or fill light stages, but before any tone curve " + "stage. Each entry of the table contains three 32-bit IEEE floating-point " + "values. The first entry is hue shift in degrees, the second entry is a " + "saturation scale factor, and the third entry is a value scale factor. " + "The table entries are stored in the tag in nested loop order, with the " + "value divisions in the outer loop, the hue divisions in the middle loop, " + "and the saturation divisions in the inner loop. All zero input saturation " + "entries are required to have a value scale factor of 1.0."), + ifd0Id, dngTags, tiffFloat, -1, printValue), // DNG tag + TagInfo(0xc740, "OpcodeList1", N_("Opcode List 1"), + N_("Specifies the list of opcodes that should be applied to the raw image, " + "as read directly from the file."), + ifd0Id, dngTags, undefined, -1, printValue), // DNG tag + TagInfo(0xc741, "OpcodeList2", N_("Opcode List 2"), + N_("Specifies the list of opcodes that should be applied to the raw image, " + "just after it has been mapped to linear reference values."), + ifd0Id, dngTags, undefined, -1, printValue), // DNG tag + TagInfo(0xc74e, "OpcodeList3", N_("Opcode List 3"), + N_("Specifies the list of opcodes that should be applied to the raw image, " + "just after it has been demosaiced."), + ifd0Id, dngTags, undefined, -1, printValue), // DNG tag + TagInfo(0xc761, "NoiseProfile", N_("Noise Profile"), + N_("NoiseProfile describes the amount of noise in a raw image. Specifically, " + "this tag models the amount of signal-dependent photon (shot) noise and " + "signal-independent sensor readout noise, two common sources of noise in " + "raw images. The model assumes that the noise is white and spatially " + "independent, ignoring fixed pattern effects and other sources of noise (e.g., " + "pixel response non-uniformity, spatially-dependent thermal effects, etc.)."), + ifd0Id, dngTags, tiffDouble, -1, printValue), // DNG tag + // End of list marker + TagInfo(0xffff, "(UnknownIfdTag)", N_("Unknown IFD tag"), + N_("Unknown IFD tag"), + ifd0Id, sectionIdNotSet, asciiString, -1, printValue) + }; + + const TagInfo* ifdTagList() + { + return ifdTagInfo; + } + + //! ExposureProgram, tag 0x8822 + extern const TagDetails exifExposureProgram[] = { + { 0, N_("Not defined") }, + { 1, N_("Manual") }, + { 2, N_("Auto") }, + { 3, N_("Aperture priority") }, + { 4, N_("Shutter priority") }, + { 5, N_("Creative program") }, + { 6, N_("Action program") }, + { 7, N_("Portrait mode") }, + { 8, N_("Landscape mode") } + }; + + //! MeteringMode, tag 0x9207 + extern const TagDetails exifMeteringMode[] = { + { 0, N_("Unknown") }, + { 1, N_("Average") }, + { 2, N_("Center weighted average") }, + { 3, N_("Spot") }, + { 4, N_("Multi-spot") }, + { 5, N_("Multi-segment") }, + { 6, N_("Partial") }, + { 255, N_("Other") }, + { 255, N_("Other") } // To silence compiler warning + }; + + //! LightSource, tag 0x9208 + extern const TagDetails exifLightSource[] = { + { 0, N_("Unknown") }, + { 1, N_("Daylight") }, + { 2, N_("Fluorescent") }, + { 3, N_("Tungsten (incandescent light)") }, + { 4, N_("Flash") }, + { 9, N_("Fine weather") }, + { 10, N_("Cloudy weather") }, + { 11, N_("Shade") }, + { 12, N_("Daylight fluorescent (D 5700 - 7100K)") }, + { 13, N_("Day white fluorescent (N 4600 - 5400K)") }, + { 14, N_("Cool white fluorescent (W 3900 - 4500K)") }, + { 15, N_("White fluorescent (WW 3200 - 3700K)") }, + { 17, N_("Standard light A") }, + { 18, N_("Standard light B") }, + { 19, N_("Standard light C") }, + { 20, N_("D55") }, + { 21, N_("D65") }, + { 22, N_("D75") }, + { 23, N_("D50") }, + { 24, N_("ISO studio tungsten") }, + { 255, N_("Other light source") } + }; + + //! ColorSpace, tag 0xa001 + extern const TagDetails exifColorSpace[] = { + { 1, N_("sRGB") }, + { 2, N_("Adobe RGB") }, // Not defined to Exif 2.2 spec. But used by a lot of cameras. + { 0xffff, N_("Uncalibrated") } + }; + + //! SensingMethod, tag 0xa217 + extern const TagDetails exifSensingMethod[] = { + { 1, N_("Not defined") }, + { 2, N_("One-chip color area") }, + { 3, N_("Two-chip color area") }, + { 4, N_("Three-chip color area") }, + { 5, N_("Color sequential area") }, + { 7, N_("Trilinear sensor") }, + { 8, N_("Color sequential linear") } + }; + + //! FileSource, tag 0xa300 + extern const TagDetails exifFileSource[] = { + { 1, N_("Film scanner") }, // Not defined to Exif 2.2 spec. + { 2, N_("Reflexion print scanner") }, // but used by some scanner device softwares. + { 3, N_("Digital still camera") } + }; + + //! SceneType, tag 0xa301 + extern const TagDetails exifSceneType[] = { + { 1, N_("Directly photographed") } + }; + + //! CustomRendered, tag 0xa401 + extern const TagDetails exifCustomRendered[] = { + { 0, N_("Normal process") }, + { 1, N_("Custom process") } + }; + + //! ExposureMode, tag 0xa402 + extern const TagDetails exifExposureMode[] = { + { 0, N_("Auto") }, + { 1, N_("Manual") }, + { 2, N_("Auto bracket") } + }; + + //! WhiteBalance, tag 0xa403 + extern const TagDetails exifWhiteBalance[] = { + { 0, N_("Auto") }, + { 1, N_("Manual") } + }; + + //! SceneCaptureType, tag 0xa406 + extern const TagDetails exifSceneCaptureType[] = { + { 0, N_("Standard") }, + { 1, N_("Landscape") }, + { 2, N_("Portrait") }, + { 3, N_("Night scene") }, + { 3, N_("Night scene") } // To silence compiler warning + }; + + //! GainControl, tag 0xa407 + extern const TagDetails exifGainControl[] = { + { 0, N_("None") }, + { 1, N_("Low gain up") }, + { 2, N_("High gain up") }, + { 3, N_("Low gain down") }, + { 4, N_("High gain down") } + }; + + //! Contrast, tag 0xa408 and Sharpness, tag 0xa40a + extern const TagDetails exifNormalSoftHard[] = { + { 0, N_("Normal") }, + { 1, N_("Soft") }, + { 2, N_("Hard") } + }; + + //! Saturation, tag 0xa409 + extern const TagDetails exifSaturation[] = { + { 0, N_("Normal") }, + { 1, N_("Low") }, + { 2, N_("High") } + }; + + //! SubjectDistanceRange, tag 0xa40c + extern const TagDetails exifSubjectDistanceRange[] = { + { 0, N_("Unknown") }, + { 1, N_("Macro") }, + { 2, N_("Close view") }, + { 3, N_("Distant view") }, + { 3, N_("Distant view") } // To silence compiler warning + }; + + // Exif IFD Tags + static const TagInfo exifTagInfo[] = { + TagInfo(0x829a, "ExposureTime", N_("Exposure Time"), + N_("Exposure time, given in seconds (sec)."), + exifId, captureCond, unsignedRational, 1, print0x829a), + TagInfo(0x829d, "FNumber", N_("FNumber"), + N_("The F number."), + exifId, captureCond, unsignedRational, 1, print0x829d), + TagInfo(0x8822, "ExposureProgram", N_("Exposure Program"), + N_("The class of the program used by the camera to set exposure " + "when the picture is taken."), + exifId, captureCond, unsignedShort, 1, print0x8822), + TagInfo(0x8824, "SpectralSensitivity", N_("Spectral Sensitivity"), + N_("Indicates the spectral sensitivity of each channel of the " + "camera used. The tag value is an ASCII string compatible " + "with the standard developed by the ASTM Technical Committee."), + exifId, captureCond, asciiString, 0, printValue), + TagInfo(0x8827, "ISOSpeedRatings", N_("ISO Speed Ratings"), + N_("Indicates the ISO Speed and ISO Latitude of the camera or " + "input device as specified in ISO 12232."), + exifId, captureCond, unsignedShort, 0, print0x8827), + TagInfo(0x8828, "OECF", N_("Opto-Electoric Conversion Function"), + N_("Indicates the Opto-Electoric Conversion Function (OECF) " + "specified in ISO 14524. is the relationship between " + "the camera optical input and the image values."), + exifId, captureCond, undefined, 0, printValue), + TagInfo(0x8830, "SensitivityType", N_("Sensitivity Type"), + N_("The SensitivityType tag indicates which one of the parameters of " + "ISO12232 is the PhotographicSensitivity tag. Although it is an optional tag, " + "it should be recorded when a PhotographicSensitivity tag is recorded. " + "Value = 4, 5, 6, or 7 may be used in case that the values of plural " + "parameters are the same."), + exifId, captureCond, unsignedShort, 1, printValue), + TagInfo(0x8831, "StandardOutputSensitivity", N_("Standard Output Sensitivity"), + N_("This tag indicates the standard output sensitivity value of a camera or " + "input device defined in ISO 12232. When recording this tag, the " + "PhotographicSensitivity and SensitivityType tags shall also be recorded."), + exifId, captureCond, unsignedLong, 1, printValue), + TagInfo(0x8832, "RecommendedExposureIndex", N_("Recommended Exposure Index"), + N_("This tag indicates the recommended exposure index value of a camera or " + "input device defined in ISO 12232. When recording this tag, the " + "PhotographicSensitivity and SensitivityType tags shall also be recorded."), + exifId, captureCond, unsignedLong, 1, printValue), + TagInfo(0x8833, "ISOSpeed", N_("ISO Speed"), + N_("This tag indicates the ISO speed value of a camera or input device that " + "is defined in ISO 12232. When recording this tag, the PhotographicSensitivity " + "and SensitivityType tags shall also be recorded."), + exifId, captureCond, unsignedLong, 1, printValue), + TagInfo(0x8834, "ISOSpeedLatitudeyyy", N_("ISO Speed Latitude yyy"), + N_("This tag indicates the ISO speed latitude yyy value of a camera or input " + "device that is defined in ISO 12232. However, this tag shall not be recorded " + "without ISOSpeed and ISOSpeedLatitudezzz."), + exifId, captureCond, unsignedLong, 1, printValue), + TagInfo(0x8835, "ISOSpeedLatitudezzz", N_("ISO Speed Latitude zzz"), + N_("This tag indicates the ISO speed latitude zzz value of a camera or input " + "device that is defined in ISO 12232. However, this tag shall not be recorded " + "without ISOSpeed and ISOSpeedLatitudeyyy."), + exifId, captureCond, unsignedLong, 1, printValue), + TagInfo(0x9000, "ExifVersion", N_("Exif Version"), + N_("The version of this standard supported. Nonexistence of this " + "field is taken to mean nonconformance to the standard."), + exifId, exifVersion, undefined, 4, printExifVersion), + TagInfo(0x9003, "DateTimeOriginal", N_("Date and Time (original)"), + N_("The date and time when the original image data was generated. " + "For a digital still camera the date and time the picture was taken are recorded."), + exifId, dateTime, asciiString, 20, printValue), + TagInfo(0x9004, "DateTimeDigitized", N_("Date and Time (digitized)"), + N_("The date and time when the image was stored as digital data."), + exifId, dateTime, asciiString, 20, printValue), + TagInfo(0x9101, "ComponentsConfiguration", N_("Components Configuration"), + N_("Information specific to compressed data. The channels of " + "each component are arranged in order from the 1st " + "component to the 4th. For uncompressed data the data " + "arrangement is given in the tag. " + "However, since can only " + "express the order of Y, Cb and Cr, this tag is provided " + "for cases when compressed data uses components other than " + "Y, Cb, and Cr and to enable support of other sequences."), + exifId, imgConfig, undefined, 4, print0x9101), + TagInfo(0x9102, "CompressedBitsPerPixel", N_("Compressed Bits per Pixel"), + N_("Information specific to compressed data. The compression mode " + "used for a compressed image is indicated in unit bits per pixel."), + exifId, imgConfig, unsignedRational, 1, printFloat), + TagInfo(0x9201, "ShutterSpeedValue", N_("Shutter speed"), + N_("Shutter speed. The unit is the APEX (Additive System of " + "Photographic Exposure) setting."), + exifId, captureCond, signedRational, 1, print0x9201), + TagInfo(0x9202, "ApertureValue", N_("Aperture"), + N_("The lens aperture. The unit is the APEX value."), + exifId, captureCond, unsignedRational, 1, print0x9202), + TagInfo(0x9203, "BrightnessValue", N_("Brightness"), + N_("The value of brightness. The unit is the APEX value. " + "Ordinarily it is given in the range of -99.99 to 99.99."), + exifId, captureCond, signedRational, 1, printFloat), + TagInfo(0x9204, "ExposureBiasValue", N_("Exposure Bias"), + N_("The exposure bias. The units is the APEX value. Ordinarily " + "it is given in the range of -99.99 to 99.99."), + exifId, captureCond, signedRational, 1, print0x9204), + TagInfo(0x9205, "MaxApertureValue", N_("Max Aperture Value"), + N_("The smallest F number of the lens. The unit is the APEX value. " + "Ordinarily it is given in the range of 00.00 to 99.99, " + "but it is not limited to this range."), + exifId, captureCond, unsignedRational, 1, print0x9202), + TagInfo(0x9206, "SubjectDistance", N_("Subject Distance"), + N_("The distance to the subject, given in meters."), + exifId, captureCond, unsignedRational, 1, print0x9206), + TagInfo(0x9207, "MeteringMode", N_("Metering Mode"), + N_("The metering mode."), + exifId, captureCond, unsignedShort, 1, print0x9207), + TagInfo(0x9208, "LightSource", N_("Light Source"), + N_("The kind of light source."), + exifId, captureCond, unsignedShort, 1, print0x9208), + TagInfo(0x9209, "Flash", N_("Flash"), + N_("This tag is recorded when an image is taken using a strobe light (flash)."), + exifId, captureCond, unsignedShort, 1, EXV_PRINT_TAG(exifFlash)), + TagInfo(0x920a, "FocalLength", N_("Focal Length"), + N_("The actual focal length of the lens, in mm. Conversion is not " + "made to the focal length of a 35 mm film camera."), + exifId, captureCond, unsignedRational, 1, print0x920a), + TagInfo(0x9214, "SubjectArea", N_("Subject Area"), + N_("This tag indicates the location and area of the main subject " + "in the overall scene."), + exifId, captureCond, unsignedShort, -1, printValue), + TagInfo(0x927c, "MakerNote", N_("Maker Note"), + N_("A tag for manufacturers of Exif writers to record any desired " + "information. The contents are up to the manufacturer."), + exifId, userInfo, undefined, 0, printValue), + TagInfo(0x9286, "UserComment", N_("User Comment"), + N_("A tag for Exif users to write keywords or comments on the image " + "besides those in , and without the " + "character code limitations of the tag."), + exifId, userInfo, comment, 0, print0x9286), + TagInfo(0x9290, "SubSecTime", N_("Sub-seconds Time"), + N_("A tag used to record fractions of seconds for the tag."), + exifId, dateTime, asciiString, 0, printValue), + TagInfo(0x9291, "SubSecTimeOriginal", N_("Sub-seconds Time Original"), + N_("A tag used to record fractions of seconds for the tag."), + exifId, dateTime, asciiString, 0, printValue), + TagInfo(0x9292, "SubSecTimeDigitized", N_("Sub-seconds Time Digitized"), + N_("A tag used to record fractions of seconds for the tag."), + exifId, dateTime, asciiString, 0, printValue), + TagInfo(0xa000, "FlashpixVersion", N_("FlashPix Version"), + N_("The FlashPix format version supported by a FPXR file."), + exifId, exifVersion, undefined, 4, printExifVersion), + TagInfo(0xa001, "ColorSpace", N_("Color Space"), + N_("The color space information tag is always " + "recorded as the color space specifier. Normally sRGB " + "is used to define the color space based on the PC monitor " + "conditions and environment. If a color space other than " + "sRGB is used, Uncalibrated is set. Image data " + "recorded as Uncalibrated can be treated as sRGB when it is " + "converted to FlashPix."), + exifId, imgCharacter, unsignedShort, 1, print0xa001), + TagInfo(0xa002, "PixelXDimension", N_("Pixel X Dimension"), + N_("Information specific to compressed data. When a " + "compressed file is recorded, the valid width of the " + "meaningful image must be recorded in this tag, whether or " + "not there is padding data or a restart marker. This tag " + "should not exist in an uncompressed file."), + exifId, imgConfig, unsignedLong, 1, printValue), + TagInfo(0xa003, "PixelYDimension", N_("Pixel Y Dimension"), + N_("Information specific to compressed data. When a compressed " + "file is recorded, the valid height of the meaningful image " + "must be recorded in this tag, whether or not there is padding " + "data or a restart marker. This tag should not exist in an " + "uncompressed file. Since data padding is unnecessary in the vertical " + "direction, the number of lines recorded in this valid image height tag " + "will in fact be the same as that recorded in the SOF."), + exifId, imgConfig, unsignedLong, 1, printValue), + TagInfo(0xa004, "RelatedSoundFile", N_("Related Sound File"), + N_("This tag is used to record the name of an audio file related " + "to the image data. The only relational information " + "recorded here is the Exif audio file name and extension (an " + "ASCII string consisting of 8 characters + '.' + 3 " + "characters). The path is not recorded."), + exifId, relatedFile, asciiString, 13, printValue), + TagInfo(0xa005, "InteroperabilityTag", N_("Interoperability IFD Pointer"), + N_("Interoperability IFD is composed of tags which stores the " + "information to ensure the Interoperability and pointed " + "by the following tag located in Exif IFD. " + "The Interoperability structure of Interoperability IFD is " + "the same as TIFF defined IFD structure but does not contain the " + "image data characteristically compared with normal TIFF IFD."), + exifId, exifFormat, unsignedLong, 1, printValue), + TagInfo(0xa20b, "FlashEnergy", N_("Flash Energy"), + N_("Indicates the strobe energy at the time the image is " + "captured, as measured in Beam Candle Power Seconds (BCPS)."), + exifId, captureCond, unsignedRational, 1, printValue), + TagInfo(0xa20c, "SpatialFrequencyResponse", N_("Spatial Frequency Response"), + N_("This tag records the camera or input device spatial frequency " + "table and SFR values in the direction of image width, " + "image height, and diagonal direction, as specified in ISO 12233."), + exifId, captureCond, undefined, 0, printValue), + TagInfo(0xa20e, "FocalPlaneXResolution", N_("Focal Plane X-Resolution"), + N_("Indicates the number of pixels in the image width (X) direction " + "per on the camera focal plane."), + exifId, captureCond, unsignedRational, 1, printFloat), + TagInfo(0xa20f, "FocalPlaneYResolution", N_("Focal Plane Y-Resolution"), + N_("Indicates the number of pixels in the image height (V) direction " + "per on the camera focal plane."), + exifId, captureCond, unsignedRational, 1, printFloat), + TagInfo(0xa210, "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), + N_("Indicates the unit for measuring and " + ". This value is the same as the ."), + exifId, captureCond, unsignedShort, 1, printExifUnit), + TagInfo(0xa214, "SubjectLocation", N_("Subject Location"), + N_("Indicates the location of the main subject in the scene. The " + "value of this tag represents the pixel at the center of the " + "main subject relative to the left edge, prior to rotation " + "processing as per the tag. The first value " + "indicates the X column number and second indicates the Y row number."), + exifId, captureCond, unsignedShort, 2, printValue), + TagInfo(0xa215, "ExposureIndex", N_("Exposure index"), + N_("Indicates the exposure index selected on the camera or " + "input device at the time the image is captured."), + exifId, captureCond, unsignedRational, 1, printValue), + TagInfo(0xa217, "SensingMethod", N_("Sensing Method"), + N_("Indicates the image sensor type on the camera or input device."), + exifId, captureCond, unsignedShort, 1, print0xa217), + TagInfo(0xa300, "FileSource", N_("File Source"), + N_("Indicates the image source. If a DSC recorded the image, " + "this tag value of this tag always be set to 3, indicating " + "that the image was recorded on a DSC."), + exifId, captureCond, undefined, 1, print0xa300), + TagInfo(0xa301, "SceneType", N_("Scene Type"), + N_("Indicates the type of scene. If a DSC recorded the image, " + "this tag value must always be set to 1, indicating that the " + "image was directly photographed."), + exifId, captureCond, undefined, 1, print0xa301), + TagInfo(0xa302, "CFAPattern", N_("Color Filter Array Pattern"), + N_("Indicates the color filter array (CFA) geometric pattern of the " + "image sensor when a one-chip color area sensor is used. " + "It does not apply to all sensing methods."), + exifId, captureCond, undefined, 0, printValue), + TagInfo(0xa401, "CustomRendered", N_("Custom Rendered"), + N_("This tag indicates the use of special processing on image " + "data, such as rendering geared to output. When special " + "processing is performed, the reader is expected to disable " + "or minimize any further processing."), + exifId, captureCond, unsignedShort, 1, print0xa401), + TagInfo(0xa402, "ExposureMode", N_("Exposure Mode"), + N_("This tag indicates the exposure mode set when the image was " + "shot. In auto-bracketing mode, the camera shoots a series of " + "frames of the same scene at different exposure settings."), + exifId, captureCond, unsignedShort, 1, print0xa402), + TagInfo(0xa403, "WhiteBalance", N_("White Balance"), + N_("This tag indicates the white balance mode set when the image was shot."), + exifId, captureCond, unsignedShort, 1, print0xa403), + TagInfo(0xa404, "DigitalZoomRatio", N_("Digital Zoom Ratio"), + N_("This tag indicates the digital zoom ratio when the image was " + "shot. If the numerator of the recorded value is 0, this " + "indicates that digital zoom was not used."), + exifId, captureCond, unsignedRational, 1, print0xa404), + TagInfo(0xa405, "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), + N_("This tag indicates the equivalent focal length assuming a " + "35mm film camera, in mm. A value of 0 means the focal " + "length is unknown. Note that this tag differs from the " + " tag."), + exifId, captureCond, unsignedShort, 1, print0xa405), + TagInfo(0xa406, "SceneCaptureType", N_("Scene Capture Type"), + N_("This tag indicates the type of scene that was shot. It can " + "also be used to record the mode in which the image was " + "shot. Note that this differs from the tag."), + exifId, captureCond, unsignedShort, 1, print0xa406), + TagInfo(0xa407, "GainControl", N_("Gain Control"), + N_("This tag indicates the degree of overall image gain adjustment."), + exifId, captureCond, unsignedShort, 1, print0xa407), + TagInfo(0xa408, "Contrast", N_("Contrast"), + N_("This tag indicates the direction of contrast processing " + "applied by the camera when the image was shot."), + exifId, captureCond, unsignedShort, 1, printNormalSoftHard), + TagInfo(0xa409, "Saturation", N_("Saturation"), + N_("This tag indicates the direction of saturation processing " + "applied by the camera when the image was shot."), + exifId, captureCond, unsignedShort, 1, print0xa409), + TagInfo(0xa40a, "Sharpness", N_("Sharpness"), + N_("This tag indicates the direction of sharpness processing " + "applied by the camera when the image was shot."), + exifId, captureCond, unsignedShort, 1, printNormalSoftHard), + TagInfo(0xa40b, "DeviceSettingDescription", N_("Device Setting Description"), + N_("This tag indicates information on the picture-taking " + "conditions of a particular camera model. The tag is used " + "only to indicate the picture-taking conditions in the reader."), + exifId, captureCond, undefined, 0, printValue), + TagInfo(0xa40c, "SubjectDistanceRange", N_("Subject Distance Range"), + N_("This tag indicates the distance to the subject."), + exifId, captureCond, unsignedShort, 1, print0xa40c), + TagInfo(0xa420, "ImageUniqueID", N_("Image Unique ID"), + N_("This tag indicates an identifier assigned uniquely to " + "each image. It is recorded as an ASCII string equivalent " + "to hexadecimal notation and 128-bit fixed length."), + exifId, otherTags, asciiString, 33, printValue), + TagInfo(0xa430, "CameraOwnerName", N_("Camera Owner Name"), + N_("This tag records the owner of a camera used in " + "photography as an ASCII string."), + exifId, otherTags, asciiString, 0, printValue), + TagInfo(0xa431, "BodySerialNumber", N_("Body Serial Number"), + N_("This tag records the serial number of the body of the camera " + "that was used in photography as an ASCII string."), + exifId, otherTags, asciiString, 0, printValue), + TagInfo(0xa432, "LensSpecification", N_("Lens Specification"), + N_("This tag notes minimum focal length, maximum focal length, " + "minimum F number in the minimum focal length, and minimum F number " + "in the maximum focal length, which are specification information " + "for the lens that was used in photography. When the minimum F " + "number is unknown, the notation is 0/0"), + exifId, otherTags, unsignedRational, 4, printValue), + TagInfo(0xa433, "LensMake", N_("Lens Make"), + N_("This tag records the lens manufactor as an ASCII string."), + exifId, otherTags, asciiString, 0, printValue), + TagInfo(0xa434, "LensModel", N_("Lens Model"), + N_("This tag records the lens's model name and model number as an " + "ASCII string."), + exifId, otherTags, asciiString, 0, printValue), + TagInfo(0xa435, "LensSerialNumber", N_("Lens Serial Number"), + N_("This tag records the serial number of the interchangeable lens " + "that was used in photography as an ASCII string."), + exifId, otherTags, asciiString, 0, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownExifTag)", N_("Unknown Exif tag"), + N_("Unknown Exif tag"), + exifId, sectionIdNotSet, asciiString, -1, printValue) + }; + + const TagInfo* exifTagList() + { + return exifTagInfo; + } + + //! GPS latitude reference, tag 0x0001; also GPSDestLatitudeRef, tag 0x0013 + extern const TagDetails exifGPSLatitudeRef[] = { + { 78, N_("North") }, + { 83, N_("South") } + }; + + //! GPS longitude reference, tag 0x0003; also GPSDestLongitudeRef, tag 0x0015 + extern const TagDetails exifGPSLongitudeRef[] = { + { 69, N_("East") }, + { 87, N_("West") } + }; + + //! GPS altitude reference, tag 0x0005 + extern const TagDetails exifGPSAltitudeRef[] = { + { 0, N_("Above sea level") }, + { 1, N_("Below sea level") } + }; + + //! GPS status, tag 0x0009 + extern const TagDetails exifGPSStatus[] = { + { 'A', N_("Measurement in progress") }, + { 'V', N_("Measurement Interoperability") } + }; + + //! GPS measurement mode, tag 0x000a + extern const TagDetails exifGPSMeasureMode[] = { + { '2', N_("Two-dimensional measurement") }, + { '3', N_("Three-dimensional measurement") } + }; + + //! GPS speed reference, tag 0x000c + extern const TagDetails exifGPSSpeedRef[] = { + { 'K', N_("km/h") }, + { 'M', N_("mph") }, + { 'N', N_("knots") } + }; + + //! GPS direction ref, tags 0x000e, 0x0010, 0x0017 + extern const TagDetails exifGPSDirRef[] = { + { 'T', N_("True direction") }, + { 'M', N_("Magnetic direction") } + }; + + //! GPS Destination distance ref, tag 0x0019 + extern const TagDetails exifGPSDestDistanceRef[] = { + { 'K', N_("Kilometers") }, + { 'M', N_("Miles") }, + { 'N', N_("Knots") } + }; + + //! GPS Differential, tag 0x001e + extern const TagDetails exifGPSDifferential[] = { + { 0, N_("Without correction") }, + { 1, N_("Correction applied") } + }; + + // GPS Info Tags + static const TagInfo gpsTagInfo[] = { + TagInfo(0x0000, "GPSVersionID", N_("GPS Version ID"), + N_("Indicates the version of . The version is given " + "as 2.0.0.0. This tag is mandatory when tag is " + "present. (Note: The tag is given in bytes, " + "unlike the tag. When the version is " + "2.0.0.0, the tag value is 02000000.H)."), + gpsId, gpsTags, unsignedByte, 4, print0x0000), + TagInfo(0x0001, "GPSLatitudeRef", N_("GPS Latitude Reference"), + N_("Indicates whether the latitude is north or south latitude. The " + "ASCII value 'N' indicates north latitude, and 'S' is south latitude."), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)), + TagInfo(0x0002, "GPSLatitude", N_("GPS Latitude"), + N_("Indicates the latitude. The latitude is expressed as three " + "RATIONAL values giving the degrees, minutes, and seconds, " + "respectively. When degrees, minutes and seconds are expressed, " + "the format is dd/1,mm/1,ss/1. When degrees and minutes are used " + "and, for example, fractions of minutes are given up to two " + "decimal places, the format is dd/1,mmmm/100,0/1."), + gpsId, gpsTags, unsignedRational, 3, printDegrees), + TagInfo(0x0003, "GPSLongitudeRef", N_("GPS Longitude Reference"), + N_("Indicates whether the longitude is east or west longitude. " + "ASCII 'E' indicates east longitude, and 'W' is west longitude."), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)), + TagInfo(0x0004, "GPSLongitude", N_("GPS Longitude"), + N_("Indicates the longitude. The longitude is expressed as three " + "RATIONAL values giving the degrees, minutes, and seconds, " + "respectively. When degrees, minutes and seconds are expressed, " + "the format is ddd/1,mm/1,ss/1. When degrees and minutes are " + "used and, for example, fractions of minutes are given up to " + "two decimal places, the format is ddd/1,mmmm/100,0/1."), + gpsId, gpsTags, unsignedRational, 3, printDegrees), + TagInfo(0x0005, "GPSAltitudeRef", N_("GPS Altitude Reference"), + N_("Indicates the altitude used as the reference altitude. If the " + "reference is sea level and the altitude is above sea level, 0 " + "is given. If the altitude is below sea level, a value of 1 is given " + "and the altitude is indicated as an absolute value in the " + "GSPAltitude tag. The reference unit is meters. Note that this tag " + "is BYTE type, unlike other reference tags."), + gpsId, gpsTags, unsignedByte, 1, print0x0005), + TagInfo(0x0006, "GPSAltitude", N_("GPS Altitude"), + N_("Indicates the altitude based on the reference in GPSAltitudeRef. " + "Altitude is expressed as one RATIONAL value. The reference unit is meters."), + gpsId, gpsTags, unsignedRational, 1, print0x0006), + TagInfo(0x0007, "GPSTimeStamp", N_("GPS Time Stamp"), + N_("Indicates the time as UTC (Coordinated Universal Time). " + " is expressed as three RATIONAL values " + "giving the hour, minute, and second (atomic clock)."), + gpsId, gpsTags, unsignedRational, 3, print0x0007), + TagInfo(0x0008, "GPSSatellites", N_("GPS Satellites"), + N_("Indicates the GPS satellites used for measurements. This tag can be used " + "to describe the number of satellites, their ID number, angle of elevation, " + "azimuth, SNR and other information in ASCII notation. The format is not " + "specified. If the GPS receiver is incapable of taking measurements, value " + "of the tag is set to NULL."), + gpsId, gpsTags, asciiString, 0, printValue), + TagInfo(0x0009, "GPSStatus", N_("GPS Status"), + N_("Indicates the status of the GPS receiver when the image is recorded. " + "\"A\" means measurement is in progress, and \"V\" means the measurement " + "is Interoperability."), + gpsId, gpsTags, asciiString, 2, print0x0009), + TagInfo(0x000a, "GPSMeasureMode", N_("GPS Measure Mode"), + N_("Indicates the GPS measurement mode. \"2\" means two-dimensional measurement and \"3\" " + "means three-dimensional measurement is in progress."), + gpsId, gpsTags, asciiString, 2, print0x000a), + TagInfo(0x000b, "GPSDOP", N_("GPS Data Degree of Precision"), + N_("Indicates the GPS DOP (data degree of precision). An HDOP value is written " + "during two-dimensional measurement, and PDOP during three-dimensional measurement."), + gpsId, gpsTags, unsignedRational, 1, printValue), + TagInfo(0x000c, "GPSSpeedRef", N_("GPS Speed Reference"), + N_("Indicates the unit used to express the GPS receiver speed of movement. " + "\"K\" \"M\" and \"N\" represents kilometers per hour, miles per hour, and knots."), + gpsId, gpsTags, asciiString, 2, print0x000c), + TagInfo(0x000d, "GPSSpeed", N_("GPS Speed"), + N_("Indicates the speed of GPS receiver movement."), + gpsId, gpsTags, unsignedRational, 1, printValue), + TagInfo(0x000e, "GPSTrackRef", N_("GPS Track Ref"), + N_("Indicates the reference for giving the direction of GPS receiver movement. " + "\"T\" denotes true direction and \"M\" is magnetic direction."), + gpsId, gpsTags, asciiString, 2, printGPSDirRef), + TagInfo(0x000f, "GPSTrack", N_("GPS Track"), + N_("Indicates the direction of GPS receiver movement. The range of values is " + "from 0.00 to 359.99."), + gpsId, gpsTags, unsignedRational, 1, printValue), + TagInfo(0x0010, "GPSImgDirectionRef", N_("GPS Image Direction Reference"), + N_("Indicates the reference for giving the direction of the image when it is captured. " + "\"T\" denotes true direction and \"M\" is magnetic direction."), + gpsId, gpsTags, asciiString, 2, printGPSDirRef), + TagInfo(0x0011, "GPSImgDirection", N_("GPS Image Direction"), + N_("Indicates the direction of the image when it was captured. The range of values " + "is from 0.00 to 359.99."), + gpsId, gpsTags, unsignedRational, 1, printValue), + TagInfo(0x0012, "GPSMapDatum", N_("GPS Map Datum"), + N_("Indicates the geodetic survey data used by the GPS receiver. If the survey data " + "is restricted to Japan, the value of this tag is \"TOKYO\" or \"WGS-84\"."), + gpsId, gpsTags, asciiString, 0, printValue), + TagInfo(0x0013, "GPSDestLatitudeRef", N_("GPS Destination Latitude Reference"), + N_("Indicates whether the latitude of the destination point is north or south latitude. " + "The ASCII value \"N\" indicates north latitude, and \"S\" is south latitude."), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLatitudeRef)), + TagInfo(0x0014, "GPSDestLatitude", N_("GPS Destination Latitude"), + N_("Indicates the latitude of the destination point. The latitude is expressed as " + "three RATIONAL values giving the degrees, minutes, and seconds, respectively. " + "If latitude is expressed as degrees, minutes and seconds, a typical format would " + "be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, " + "fractions of minutes are given up to two decimal places, the format would be " + "dd/1,mmmm/100,0/1."), + gpsId, gpsTags, unsignedRational, 3, printDegrees), + TagInfo(0x0015, "GPSDestLongitudeRef", N_("GPS Destination Longitude Reference"), + N_("Indicates whether the longitude of the destination point is east or west longitude. " + "ASCII \"E\" indicates east longitude, and \"W\" is west longitude."), + gpsId, gpsTags, asciiString, 2, EXV_PRINT_TAG(exifGPSLongitudeRef)), + TagInfo(0x0016, "GPSDestLongitude", N_("GPS Destination Longitude"), + N_("Indicates the longitude of the destination point. The longitude is expressed " + "as three RATIONAL values giving the degrees, minutes, and seconds, respectively. " + "If longitude is expressed as degrees, minutes and seconds, a typical format would be " + "ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of " + "minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1."), + gpsId, gpsTags, unsignedRational, 3, printDegrees), + TagInfo(0x0017, "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), + N_("Indicates the reference used for giving the bearing to the destination point. " + "\"T\" denotes true direction and \"M\" is magnetic direction."), + gpsId, gpsTags, asciiString, 2, printGPSDirRef), + TagInfo(0x0018, "GPSDestBearing", N_("GPS Destination Bearing"), + N_("Indicates the bearing to the destination point. The range of values is from " + "0.00 to 359.99."), + gpsId, gpsTags, unsignedRational, 1, printValue), + TagInfo(0x0019, "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), + N_("Indicates the unit used to express the distance to the destination point. " + "\"K\", \"M\" and \"N\" represent kilometers, miles and knots."), + gpsId, gpsTags, asciiString, 2, print0x0019), + TagInfo(0x001a, "GPSDestDistance", N_("GPS Destination Distance"), + N_("Indicates the distance to the destination point."), + gpsId, gpsTags, unsignedRational, 1, printValue), + TagInfo(0x001b, "GPSProcessingMethod", N_("GPS Processing Method"), + N_("A character string recording the name of the method used for location finding. " + "The first byte indicates the character code used, and this is followed by the name " + "of the method."), + gpsId, gpsTags, undefined, 0, printValue), + TagInfo(0x001c, "GPSAreaInformation", N_("GPS Area Information"), + N_("A character string recording the name of the GPS area. The first byte indicates " + "the character code used, and this is followed by the name of the GPS area."), + gpsId, gpsTags, undefined, 0, printValue), + TagInfo(0x001d, "GPSDateStamp", N_("GPS Date Stamp"), + N_("A character string recording date and time information relative to UTC " + "(Coordinated Universal Time). The format is \"YYYY:MM:DD.\"."), + gpsId, gpsTags, asciiString, 11, printValue), + TagInfo(0x001e, "GPSDifferential", N_("GPS Differential"), + N_("Indicates whether differential correction is applied to the GPS receiver."), + gpsId, gpsTags, unsignedShort, 1, print0x001e), + // End of list marker + TagInfo(0xffff, "(UnknownGpsTag)", N_("Unknown GPSInfo tag"), + N_("Unknown GPSInfo tag"), + gpsId, gpsTags, asciiString, -1, printValue) + }; + + const TagInfo* gpsTagList() + { + return gpsTagInfo; + } + + // Exif Interoperability IFD Tags + static const TagInfo iopTagInfo[] = { + TagInfo(0x0001, "InteroperabilityIndex", N_("Interoperability Index"), + N_("Indicates the identification of the Interoperability rule. " + "Use \"R98\" for stating ExifR98 Rules. Four bytes used " + "including the termination code (NULL). see the separate " + "volume of Recommended Exif Interoperability Rules (ExifR98) " + "for other tags used for ExifR98."), + iopId, iopTags, asciiString, 0, printValue), + TagInfo(0x0002, "InteroperabilityVersion", N_("Interoperability Version"), + N_("Interoperability version"), + iopId, iopTags, undefined, -1, printExifVersion), + TagInfo(0x1000, "RelatedImageFileFormat", N_("Related Image File Format"), + N_("File format of image file"), + iopId, iopTags, asciiString, 0, printValue), + TagInfo(0x1001, "RelatedImageWidth", N_("Related Image Width"), + N_("Image width"), + iopId, iopTags, unsignedLong, 1, printValue), + TagInfo(0x1002, "RelatedImageLength", N_("Related Image Length"), + N_("Image height"), + iopId, iopTags, unsignedLong, 1, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownIopTag)", N_("Unknown Exif Interoperability tag"), + N_("Unknown Exif Interoperability tag"), + iopId, iopTags, asciiString, -1, printValue) + }; + + const TagInfo* iopTagList() + { + return iopTagInfo; + } + + // Synthesized Exiv2 Makernote info Tags (read-only) + static const TagInfo mnTagInfo[] = { + TagInfo(0x0001, "Offset", N_("Offset"), + N_("Offset of the makernote from the start of the TIFF header."), + mnId, makerTags, unsignedLong, 1, printValue), + TagInfo(0x0002, "ByteOrder", N_("Byte Order"), + N_("Byte order used to encode MakerNote tags, 'MM' (big-endian) or 'II' (little-endian)."), + mnId, makerTags, asciiString, 0, printValue), + // End of list marker + TagInfo(0xffff, "(UnknownMnTag)", N_("Unknown Exiv2 Makernote info tag"), + N_("Unknown Exiv2 Makernote info tag"), + mnId, makerTags, asciiString, -1, printValue) + }; + + const TagInfo* mnTagList() + { + return mnTagInfo; + } + + // Unknown Tag + static const TagInfo unknownTag(0xffff, "Unknown tag", N_("Unknown tag"), + N_("Unknown tag"), + ifdIdNotSet, sectionIdNotSet, asciiString, -1, printValue); + + std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*) + { + return os << value; + } + + IfdId groupId(const std::string& groupName) + { + IfdId ifdId = ifdIdNotSet; + const GroupInfo* ii = find(groupInfo, GroupInfo::GroupName(groupName)); + if (ii != 0) ifdId = static_cast(ii->ifdId_); + return ifdId; + } + + const char* ifdName(IfdId ifdId) + { + const GroupInfo* ii = find(groupInfo, ifdId); + if (ii == 0) return groupInfo[0].ifdName_; + return ii->ifdName_; + } // ifdName + + const char* groupName(IfdId ifdId) + { + const GroupInfo* ii = find(groupInfo, ifdId); + if (ii == 0) return groupInfo[0].groupName_; + return ii->groupName_; + } // groupName + + bool isMakerIfd(IfdId ifdId) + { + bool rc = false; + const GroupInfo* ii = find(groupInfo, ifdId); + if (ii != 0 && 0 == strcmp(ii->ifdName_, "Makernote")) { + rc = true; + } + return rc; + } // isMakerIfd + + bool isExifIfd(IfdId ifdId) + { + bool rc; + switch (ifdId) { + case ifd0Id: + case exifId: + case gpsId: + case iopId: + case ifd1Id: + case ifd2Id: + case ifd3Id: + case subImage1Id: + case subImage2Id: + case subImage3Id: + case subImage4Id: + case subImage5Id: + case subImage6Id: + case subImage7Id: + case subImage8Id: + case subImage9Id: + case subThumb1Id: + case panaRawId: rc = true; break; + default: rc = false; break; + } + return rc; + } // isExifIfd + + void taglist(std::ostream& os, IfdId ifdId) + { + const TagInfo* ti = Internal::tagList(ifdId); + if (ti != 0) { + for (int k = 0; ti[k].tag_ != 0xffff; ++k) { + os << ti[k] << "\n"; + } + } + } // taglist + + const TagInfo* tagList(IfdId ifdId) + { + const GroupInfo* ii = find(groupInfo, ifdId); + if (ii == 0 || ii->tagList_ == 0) return 0; + return ii->tagList_(); + } // tagList + + const TagInfo* tagInfo(uint16_t tag, IfdId ifdId) + { + const TagInfo* ti = tagList(ifdId); + if (ti == 0) return 0; + int idx = 0; + for (idx = 0; ti[idx].tag_ != 0xffff; ++idx) { + if (ti[idx].tag_ == tag) break; + } + return &ti[idx]; + } // tagInfo + + const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId) + { + const TagInfo* ti = tagList(ifdId); + if (ti == 0) return 0; + const char* tn = tagName.c_str(); + if (tn == 0) return 0; + for (int idx = 0; ti[idx].tag_ != 0xffff; ++idx) { + if (0 == strcmp(ti[idx].name_, tn)) { + return &ti[idx]; + } + } + return 0; + } // tagInfo + + uint16_t tagNumber(const std::string& tagName, IfdId ifdId) + { + const TagInfo* ti = tagInfo(tagName, ifdId); + if (ti != 0 && ti->tag_ != 0xffff) return ti->tag_; + if (!isHex(tagName, 4, "0x")) throw Error(7, tagName, ifdId); + std::istringstream is(tagName); + uint16_t tag; + is >> std::hex >> tag; + return tag; + } // tagNumber + + std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*) + { + Rational r = value.toRational(); + if (r.second != 0) return os << static_cast(r.first) / r.second; + return os << "(" << value << ")"; + } // printLong + + std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*) + { + Rational r = value.toRational(); + if (r.second != 0) return os << static_cast(r.first) / r.second; + return os << "(" << value << ")"; + } // printFloat + + std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() == 3) { + std::ostringstream oss; + oss.copyfmt(os); + static const char* unit[] = { "deg", "'", "\"" }; + static const int prec[] = { 7, 5, 3 }; + int n; + for (n = 2; n > 0; --n) { + if (value.toRational(n).first != 0) break; + } + for (int i = 0; i < n + 1; ++i) { + const int32_t z = value.toRational(i).first; + const int32_t d = value.toRational(i).second; + if (d == 0) + { + os << "(" << value << ")"; + os.flags(f); + return os; + } + // Hack: Need Value::toDouble + double b = static_cast(z)/d; + const int p = z % d == 0 ? 0 : prec[i]; + os << std::fixed << std::setprecision(p) << b + << unit[i] << " "; + } + os.copyfmt(oss); + } + else { + os << value; + } + os.flags(f); + return os; + } // printDegrees + + std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*) + { + bool cnv = false; + if (value.typeId() == unsignedByte && value.size() > 0) { + DataBuf buf(value.size()); + value.copy(buf.pData_, invalidByteOrder); + // Strip trailing UCS-2 0-character, if there is one + if (buf.pData_[buf.size_ - 1] == 0 && buf.pData_[buf.size_ - 2] == 0) buf.size_ -= 2; + std::string str((const char*)buf.pData_, buf.size_); + cnv = convertStringCharset(str, "UCS-2LE", "UTF-8"); + if (cnv) os << str; + } + if (!cnv) os << value; + return os; + } // printUcs2 + + std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifUnit)(os, value, metadata); + } + + std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*) + { + if (value.size() != 4 || value.typeId() != unsignedByte) { + return os << value; + } + + for (int i = 0; i < 3; i++) { + os << value.toLong(i); + os << "."; + } + os << value.toLong(3); + + return os; + } + + std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSAltitudeRef)(os, value, metadata); + } + + std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + std::ostringstream oss; + oss.copyfmt(os); + const int32_t d = value.toRational().second; + if (d == 0) return os << "(" << value << ")"; + const int p = d > 1 ? 1 : 0; + os << std::fixed << std::setprecision(p) << value.toFloat() << " m"; + os.copyfmt(oss); + + os.flags(f); + return os; + } + + std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if (value.count() == 3) { + for (int i = 0; i < 3; ++i) { + if (value.toRational(i).second == 0) { + return os << "(" << value << ")"; + } + } + std::ostringstream oss; + oss.copyfmt(os); + const float sec = 3600 * value.toFloat(0) + + 60 * value.toFloat(1) + + value.toFloat(2); + int p = 0; + if (sec != static_cast(sec)) p = 1; + + const int hh = static_cast(sec / 3600); + const int mm = static_cast((sec - 3600 * hh) / 60); + const float ss = sec - 3600 * hh - 60 * mm; + + os << std::setw(2) << std::setfill('0') << std::right << hh << ":" + << std::setw(2) << std::setfill('0') << std::right << mm << ":" + << std::setw(2 + p * 2) << std::setfill('0') << std::right + << std::fixed << std::setprecision(p) << ss; + + os.copyfmt(oss); + } + else { + os << value; + } + + os.flags(f); + return os; + } + + std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSStatus)(os, value, metadata); + } + + std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSMeasureMode)(os, value, metadata); + } + + std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSSpeedRef)(os, value, metadata); + } + + std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSDestDistanceRef)(os, value, metadata); + } + + std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSDifferential)(os, value, metadata); + } + + std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifOrientation)(os, value, metadata); + } + + std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifYCbCrPositioning)(os, value, metadata); + } + + std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*) + { + // Print the copyright information in the format Photographer, Editor + std::string val = value.toString(); + std::string::size_type pos = val.find('\0'); + if (pos != std::string::npos) { + std::string photographer(val, 0, pos); + if (photographer != " ") os << photographer; + std::string editor(val, pos + 1); + if (editor != "") { + if (photographer != " ") os << ", "; + os << editor; + } + } + else { + os << val; + } + return os; + } + + std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*) + { + Rational t = value.toRational(); + if (t.first > 1 && t.second > 1 && t.second >= t.first) { + t.second = static_cast( + static_cast(t.second) / t.first + 0.5); + t.first = 1; + } + if (t.second > 1 && t.second < t.first) { + t.first = static_cast( + static_cast(t.first) / t.second + 0.5); + t.second = 1; + } + if (t.second == 1) { + os << t.first << " s"; + } + else { + os << t.first << "/" << t.second << " s"; + } + return os; + } + + std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational fnumber = value.toRational(); + if (fnumber.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << "F" << std::setprecision(2) + << static_cast(fnumber.first) / fnumber.second; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifExposureProgram)(os, value, metadata); + } + + std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*) + { + return os << value.toLong(); + } + + std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*) + { + for (long i = 0; i < value.count(); ++i) { + long l = value.toLong(i); + switch (l) { + case 0: break; + case 1: os << "Y"; break; + case 2: os << "Cb"; break; + case 3: os << "Cr"; break; + case 4: os << "R"; break; + case 5: os << "G"; break; + case 6: os << "B"; break; + default: os << "(" << l << ")"; break; + } + } + return os; + } + + std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*) + { + Rational r = value.toRational(); + if (!value.ok() || r.second == 0) return os << "(" << value << ")"; + + URational ur = exposureTime(static_cast(r.first) / r.second); + os << ur.first; + if (ur.second > 1) { + os << "/" << ur.second; + } + return os << " s"; + } + + std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + if ( value.count() == 0 + || value.toRational().second == 0) { + return os << "(" << value << ")"; + } + std::ostringstream oss; + oss.copyfmt(os); + os << "F" << std::setprecision(2) << fnumber(value.toFloat()); + os.copyfmt(oss); + os.flags(f); + return os; + } + + std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*) + { + Rational bias = value.toRational(); + if (bias.second <= 0) { + os << "(" << bias.first << "/" << bias.second << ")"; + } + else if (bias.first == 0) { + os << "0 EV"; + } + else { + int32_t d = gcd(bias.first, bias.second); + int32_t num = std::abs(bias.first) / d; + int32_t den = bias.second / d; + os << (bias.first < 0 ? "-" : "+") << num; + if (den != 1) { + os << "/" << den; + } + os << " EV"; + } + return os; + } + + std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational distance = value.toRational(); + if (distance.first == 0) { + os << _("Unknown"); + } + else if (static_cast(distance.first) == 0xffffffff) { + os << _("Infinity"); + } + else if (distance.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(2) + << (float)distance.first / distance.second + << " m"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifMeteringMode)(os, value, metadata); + } + + std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifLightSource)(os, value, metadata); + } + + std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational length = value.toRational(); + if (length.second != 0) { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) + << (float)length.first / length.second + << " mm"; + os.copyfmt(oss); + } + else { + os << "(" << value << ")"; + } + os.flags(f); + return os; + } + + std::ostream& print0x9286(std::ostream& os, const Value& value, const ExifData*) + { + const CommentValue* pcv = dynamic_cast(&value); + if (pcv) { + os << pcv->comment(); + } + else { + os << value; + } + return os; + } + + std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifColorSpace)(os, value, metadata); + } + + std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifSensingMethod)(os, value, metadata); + } + + std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifFileSource)(os, value, metadata); + } + + std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifSceneType)(os, value, metadata); + } + + std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifCustomRendered)(os, value, metadata); + } + + std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifExposureMode)(os, value, metadata); + } + + std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifWhiteBalance)(os, value, metadata); + } + + std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*) + { + std::ios::fmtflags f( os.flags() ); + Rational zoom = value.toRational(); + if (zoom.second == 0) { + os << _("Digital zoom not used"); + } + else { + std::ostringstream oss; + oss.copyfmt(os); + os << std::fixed << std::setprecision(1) + << (float)zoom.first / zoom.second; + os.copyfmt(oss); + } + os.flags(f); + return os; + } + + std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*) + { + long length = value.toLong(); + if (length == 0) { + os << _("Unknown"); + } + else { + os << length << ".0 mm"; + } + return os; + } + + std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifSceneCaptureType)(os, value, metadata); + } + + std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGainControl)(os, value, metadata); + } + + std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifSaturation)(os, value, metadata); + } + + std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifSubjectDistanceRange)(os, value, metadata); + } + + std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifGPSDirRef)(os, value, metadata); + } + + std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData* metadata) + { + return EXV_PRINT_TAG(exifNormalSoftHard)(os, value, metadata); + } + + std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*) + { + if (value.size() != 4 || value.typeId() != undefined) { + return os << "(" << value << ")"; + } + + char s[5]; + for (int i = 0; i < 4; ++i) { + s[i] = static_cast(value.toLong(i)); + } + s[4] = '\0'; + + return printVersion(os, s); + } + + std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*) + { + if (value.size() != 4 || value.typeId() != xmpText) { + return os << "(" << value << ")"; + } + + return printVersion(os, value.toString()); + } + + std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*) + { + if (!(value.size() == 19 || value.size() == 20) || value.typeId() != xmpText) { + return os << value; + } + + std::string stringValue = value.toString(); + if (stringValue[19] == 'Z') { + stringValue = stringValue.substr(0, 19); + } + for (unsigned int i = 0; i < stringValue.length(); ++i) { + if (stringValue[i] == 'T') stringValue[i] = ' '; + if (stringValue[i] == '-') stringValue[i] = ':'; + } + + return os << stringValue; + } + + float fnumber(float apertureValue) + { + return static_cast(std::exp(std::log(2.0) * apertureValue / 2)); + } + + URational exposureTime(float shutterSpeedValue) + { + URational ur(1, 1); + double tmp = std::exp(std::log(2.0) * shutterSpeedValue); + if (tmp > 1) { + ur.second = static_cast(tmp + 0.5); + } + else { + ur.first = static_cast(1/tmp + 0.5); + } + return ur; + } + +}} // namespace Internal, Exiv2 + +namespace Exiv2 { + + //! @cond IGNORE + GroupInfo::GroupName::GroupName(const std::string& groupName) + { + g_ = groupName; + } + //! @endcond + + bool GroupInfo::operator==(int ifdId) const + { + return ifdId_ == ifdId; + } + + bool GroupInfo::operator==(const GroupName& groupName) const + { + return 0 == strcmp(groupName.g_.c_str(), groupName_); + } + + TagInfo::TagInfo( + uint16_t tag, + const char* name, + const char* title, + const char* desc, + int ifdId, + int sectionId, + TypeId typeId, + int16_t count, + PrintFct printFct + ) + : tag_(tag), name_(name), title_(title), desc_(desc), ifdId_(ifdId), + sectionId_(sectionId), typeId_(typeId), count_(count), printFct_(printFct) + { + } + + const GroupInfo* ExifTags::groupList() + { + return groupInfo + 1; // +1 to skip the first (ifdIdNotSet) entry + } + + const TagInfo* ExifTags::tagList(const std::string& groupName) + { + const GroupInfo* ii = find(groupInfo, GroupInfo::GroupName(groupName)); + if (ii == 0 || ii->tagList_ == 0) return 0; + return ii->tagList_(); + } // ExifTags::tagList + + const char* ExifTags::sectionName(const ExifKey& key) + { + const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); + if (ti == 0) return sectionInfo[unknownTag.sectionId_].name_; + return sectionInfo[ti->sectionId_].name_; + } + + uint16_t ExifTags::defaultCount(const ExifKey& key) + { + const TagInfo* ti = tagInfo(key.tag(), static_cast(key.ifdId())); + if (ti == 0) return unknownTag.count_; + return ti->count_; + } + + const char* ExifTags::ifdName(const std::string& groupName) + { + IfdId ifdId = Internal::groupId(groupName); + return Internal::ifdName(ifdId); + } + + bool ExifTags::isMakerGroup(const std::string& groupName) + { + IfdId ifdId = Internal::groupId(groupName); + return Internal::isMakerIfd(ifdId); + } + + bool ExifTags::isExifGroup(const std::string& groupName) + { + IfdId ifdId = Internal::groupId(groupName); + return Internal::isExifIfd(ifdId); + } + + void ExifTags::taglist(std::ostream& os) + { + for (int i=0; ifdTagInfo[i].tag_ != 0xffff; ++i) { + os << ifdTagInfo[i] << "\n"; + } + for (int i=0; exifTagInfo[i].tag_ != 0xffff; ++i) { + os << exifTagInfo[i] << "\n"; + } + for (int i=0; iopTagInfo[i].tag_ != 0xffff; ++i) { + os << iopTagInfo[i] << "\n"; + } + for (int i=0; gpsTagInfo[i].tag_ != 0xffff; ++i) { + os << gpsTagInfo[i] << "\n"; + } + } // ExifTags::taglist + + void ExifTags::taglist(std::ostream& os, const std::string& groupName) + { + IfdId ifdId = Internal::groupId(groupName); + Internal::taglist(os, ifdId); + } + + //! %Internal Pimpl structure with private members and data of class ExifKey. + struct ExifKey::Impl { + //! @name Creators + //@{ + Impl(); //!< Default constructor + //@} + + //! @name Manipulators + //@{ + /*! + @brief Set the key corresponding to the \em tag, \em ifdId and \em tagInfo. + The key is of the form 'Exif.groupName.tagName'. + */ + void makeKey(uint16_t tag, IfdId ifdId, const TagInfo* tagInfo); + /*! + @brief Parse and convert the key string into tag and IFD Id. + Updates data members if the string can be decomposed, + or throws \em Error . + + @throw Error if the key cannot be decomposed. + */ + void decomposeKey(const std::string& key); + //@} + + //! @name Accessors + //@{ + //! Return the name of the tag + std::string tagName() const; + //@} + + // DATA + static const char* familyName_; //!< "Exif" + + const TagInfo* tagInfo_; //!< Tag info + uint16_t tag_; //!< Tag value + IfdId ifdId_; //!< The IFD associated with this tag + int idx_; //!< Unique id of the Exif key in the image + std::string groupName_; //!< The group name + std::string key_; //!< %Key + }; + + const char* ExifKey::Impl::familyName_ = "Exif"; + + ExifKey::Impl::Impl() + : tagInfo_(0), tag_(0), ifdId_(ifdIdNotSet), idx_(0) + { + } + + std::string ExifKey::Impl::tagName() const + { + if (tagInfo_ != 0 && tagInfo_->tag_ != 0xffff) { + return tagInfo_->name_; + } + std::ostringstream os; + os << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << tag_; + return os.str(); + } + + void ExifKey::Impl::decomposeKey(const std::string& key) + { + // Get the family name, IFD name and tag name parts of the key + std::string::size_type pos1 = key.find('.'); + if (pos1 == std::string::npos) throw Error(6, key); + std::string familyName = key.substr(0, pos1); + if (0 != strcmp(familyName.c_str(), familyName_)) { + throw Error(6, key); + } + std::string::size_type pos0 = pos1 + 1; + pos1 = key.find('.', pos0); + if (pos1 == std::string::npos) throw Error(6, key); + std::string groupName = key.substr(pos0, pos1 - pos0); + if (groupName.empty()) throw Error(6, key); + std::string tn = key.substr(pos1 + 1); + if (tn.empty()) throw Error(6, key); + + // Find IfdId + IfdId ifdId = groupId(groupName); + if (ifdId == ifdIdNotSet) throw Error(6, key); + if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { + throw Error(6, key); + } + // Convert tag + uint16_t tag = tagNumber(tn, ifdId); + // Get tag info + tagInfo_ = tagInfo(tag, ifdId); + if (tagInfo_ == 0) throw Error(6, key); + + tag_ = tag; + ifdId_ = ifdId; + groupName_ = groupName; + // tagName() translates hex tag name (0xabcd) to a real tag name if there is one + key_ = familyName + "." + groupName + "." + tagName(); + } + + void ExifKey::Impl::makeKey(uint16_t tag, IfdId ifdId, const TagInfo* tagInfo) + { + assert(tagInfo != 0); + + tagInfo_ = tagInfo; + tag_ = tag; + ifdId_ = ifdId; + key_ = std::string(familyName_) + "." + groupName_ + "." + tagName(); + } + + ExifKey::ExifKey(uint16_t tag, const std::string& groupName) + : p_(new Impl) + { + IfdId ifdId = groupId(groupName); + // Todo: Test if this condition can be removed + if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { + throw Error(23, ifdId); + } + const TagInfo* ti = tagInfo(tag, ifdId); + if (ti == 0) { + throw Error(23, ifdId); + } + p_->groupName_ = groupName; + p_->makeKey(tag, ifdId, ti); + } + + ExifKey::ExifKey(const TagInfo& ti) + : p_(new Impl) + { + IfdId ifdId = static_cast(ti.ifdId_); + if (!Internal::isExifIfd(ifdId) && !Internal::isMakerIfd(ifdId)) { + throw Error(23, ifdId); + } + p_->groupName_ = Exiv2::groupName(ifdId); + p_->makeKey(ti.tag_, ifdId, &ti); + } + + ExifKey::ExifKey(const std::string& key) + : p_(new Impl) + { + p_->decomposeKey(key); + } + + ExifKey::ExifKey(const ExifKey& rhs) + : Key(rhs), p_(new Impl(*rhs.p_)) + { + } + + ExifKey::~ExifKey() + { + delete p_; + } + + ExifKey& ExifKey::operator=(const ExifKey& rhs) + { + if (this == &rhs) return *this; + Key::operator=(rhs); + *p_ = *rhs.p_; + return *this; + } + + void ExifKey::setIdx(int idx) + { + p_->idx_ = idx; + } + + std::string ExifKey::key() const + { + return p_->key_; + } + + const char* ExifKey::familyName() const + { + return p_->familyName_; + } + + std::string ExifKey::groupName() const + { + return p_->groupName_; + } + + std::string ExifKey::tagName() const + { + return p_->tagName(); + } + + std::string ExifKey::tagLabel() const + { + if (p_->tagInfo_ == 0 || p_->tagInfo_->tag_ == 0xffff) return ""; + return _(p_->tagInfo_->title_); + } + + std::string ExifKey::tagDesc() const + { + if (p_->tagInfo_ == 0 || p_->tagInfo_->tag_ == 0xffff) return ""; + return _(p_->tagInfo_->desc_); + } + + TypeId ExifKey::defaultTypeId() const + { + if (p_->tagInfo_ == 0) return unknownTag.typeId_; + return p_->tagInfo_->typeId_; + } + + uint16_t ExifKey::tag() const + { + return p_->tag_; + } + + ExifKey::AutoPtr ExifKey::clone() const + { + return AutoPtr(clone_()); + } + + ExifKey* ExifKey::clone_() const + { + return new ExifKey(*this); + } + + int ExifKey::ifdId() const + { + return p_->ifdId_; + } + + int ExifKey::idx() const + { + return p_->idx_; + } + + // ************************************************************************* + // free functions + + std::ostream& operator<<(std::ostream& os, const TagInfo& ti) + { + std::ios::fmtflags f( os.flags() ); + ExifKey exifKey(ti); + os << exifKey.tagName() << ",\t" + << std::dec << exifKey.tag() << ",\t" + << "0x" << std::setw(4) << std::setfill('0') + << std::right << std::hex << exifKey.tag() << ",\t" + << exifKey.groupName() << ",\t" + << exifKey.key() << ",\t" + << TypeInfo::typeName(exifKey.defaultTypeId()) << ",\t" + << exifKey.tagDesc(); + + os.flags(f); + return os; + } + +} // namespace Exiv2 + +namespace { + std::ostream& printVersion(std::ostream& os, const std::string& str) + { + if (str.size() != 4) { + return os << "(" << str << ")"; + } + if (str[0] != '0') os << str[0]; + return os << str[1] << "." << str[2] << str[3]; + } +} diff --git a/vendor/exiv2-0.25/src/tags_int.hpp b/vendor/exiv2-0.25/src/tags_int.hpp new file mode 100644 index 0000000..9933144 --- /dev/null +++ b/vendor/exiv2-0.25/src/tags_int.hpp @@ -0,0 +1,447 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tags_int.hpp + @brief Internal Exif tag and type information + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 15-Jan-04, ahu: created
+ 11-Feb-04, ahu: isolated as a component + */ +#ifndef TAGS_INT_HPP_ +#define TAGS_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "tags.hpp" +#include "value.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// namespace extensions + +namespace Exiv2 { + class ExifData; + + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! Type to specify the IFD to which a metadata belongs + enum IfdId { + ifdIdNotSet, + ifd0Id, + ifd1Id, + ifd2Id, + ifd3Id, + exifId, + gpsId, + iopId, + subImage1Id, + subImage2Id, + subImage3Id, + subImage4Id, + subImage5Id, + subImage6Id, + subImage7Id, + subImage8Id, + subImage9Id, + subThumb1Id, + panaRawId, + mnId, + canonId, + canonCsId, + canonSiId, + canonCfId, + canonPiId, + canonPaId, + canonFiId, + canonPrId, + casioId, + casio2Id, + fujiId, + minoltaId, + minoltaCs5DId, + minoltaCs7DId, + minoltaCsOldId, + minoltaCsNewId, + nikon1Id, + nikon2Id, + nikon3Id, + nikonPvId, + nikonVrId, + nikonPcId, + nikonWtId, + nikonIiId, + nikonAfId, + nikonAf2Id, + nikonAFTId, + nikonFiId, + nikonMeId, + nikonFl1Id, + nikonFl2Id, + nikonFl3Id, + nikonSi1Id, + nikonSi2Id, + nikonSi3Id, + nikonSi4Id, + nikonSi5Id, + nikonSi6Id, + nikonLd1Id, + nikonLd2Id, + nikonLd3Id, + nikonCb1Id, + nikonCb2Id, + nikonCb2aId, + nikonCb2bId, + nikonCb3Id, + nikonCb4Id, + olympusId, + olympus2Id, + olympusCsId, + olympusEqId, + olympusRdId, + olympusRd2Id, + olympusIpId, + olympusFiId, + olympusFe1Id, + olympusFe2Id, + olympusFe3Id, + olympusFe4Id, + olympusFe5Id, + olympusFe6Id, + olympusFe7Id, + olympusFe8Id, + olympusFe9Id, + olympusRiId, + panasonicId, + pentaxId, + pentaxDngId, + samsung2Id, + samsungPvId, + samsungPwId, + sigmaId, + sony1Id, + sony2Id, + sonyMltId, + sony1CsId, + sony1Cs2Id, + sony2CsId, + sony2Cs2Id, + sony1MltCs7DId, + sony1MltCsOldId, + sony1MltCsNewId, + sony1MltCsA100Id, + lastId, + ignoreId = lastId + }; + + /*! + @brief Section identifiers to logically group tags. A section consists + of nothing more than a name, based on the Exif standard. + */ + enum SectionId { sectionIdNotSet, + imgStruct, recOffset, imgCharacter, otherTags, exifFormat, + exifVersion, imgConfig, userInfo, relatedFile, dateTime, + captureCond, gpsTags, iopTags, makerTags, dngTags, panaRaw, + tiffEp, tiffPm6, adobeOpi, + lastSectionId }; + + //! The details of a section. + struct SectionInfo { + SectionId sectionId_; //!< Section id + const char* name_; //!< Section name (one word) + const char* desc_; //!< Section description + }; + + /*! + @brief Helper structure for lookup tables for translations of numeric + tag values to human readable labels. + */ + struct TagDetails { + int64_t val_; //!< Tag value + const char* label_; //!< Translation of the tag value + + //! Comparison operator for use with the find template + bool operator==(long key) const { return val_ == key; } + }; // struct TagDetails + + /*! + @brief Helper structure for lookup tables for translations of bitmask + values to human readable labels. + */ + struct TagDetailsBitmask { + uint32_t mask_; //!< Bitmask value + const char* label_; //!< Description of the tag value + }; // struct TagDetailsBitmask + + /*! + @brief Helper structure for lookup tables for translations of controlled + vocabulary strings to their descriptions. + */ + struct TagVocabulary { + const char* voc_; //!< Vocabulary string + const char* label_; //!< Description of the vocabulary string + + /*! + @brief Comparison operator for use with the find template + + Compare vocabulary strings like "PR-NON" with keys like + "http://ns.useplus.org/ldf/vocab/PR-NON" and return true if the vocabulary + string matches the end of the key. + */ + bool operator==(const std::string& key) const; + }; // struct TagDetails + + /*! + @brief Generic pretty-print function to translate a long value to a description + by looking up a reference table. + */ + template + std::ostream& printTag(std::ostream& os, const Value& value, const ExifData*) + { + const TagDetails* td = find(array, value.toLong()); + if (td) { + os << exvGettext(td->label_); + } + else { + os << "(" << value << ")"; + } + return os; + } + +//! Shortcut for the printTag template which requires typing the array name only once. +#define EXV_PRINT_TAG(array) printTag + + /*! + @brief Generic print function to translate a long value to a description + by looking up bitmasks in a reference table. + */ + template + std::ostream& printTagBitmask(std::ostream& os, const Value& value, const ExifData*) + { + const uint32_t val = static_cast(value.toLong()); + if (val == 0 && N > 0) { + const TagDetailsBitmask* td = *(&array); + if (td->mask_ == 0) return os << exvGettext(td->label_); + } + bool sep = false; + for (int i = 0; i < N; ++i) { + // *& acrobatics is a workaround for a MSVC 7.1 bug + const TagDetailsBitmask* td = *(&array) + i; + + if (val & td->mask_) { + if (sep) { + os << ", " << exvGettext(td->label_); + } + else { + os << exvGettext(td->label_); + sep = true; + } + } + } + return os; + } + +//! Shortcut for the printTagBitmask template which requires typing the array name only once. +#define EXV_PRINT_TAG_BITMASK(array) printTagBitmask + + /*! + @brief Generic pretty-print function to translate a controlled vocabulary value (string) + to a description by looking up a reference table. + */ + template + std::ostream& printTagVocabulary(std::ostream& os, const Value& value, const ExifData*) + { + const TagVocabulary* td = find(array, value.toString()); + if (td) { + os << exvGettext(td->label_); + } + else { + os << "(" << value << ")"; + } + return os; + } + +//! Shortcut for the printTagVocabulary template which requires typing the array name only once. +#define EXV_PRINT_VOCABULARY(array) printTagVocabulary + +// ***************************************************************************** +// free functions + + //! Return read-only list of built-in IFD0/1 tags + const TagInfo* ifdTagList(); + //! Return read-only list of built-in Exif IFD tags + const TagInfo* exifTagList(); + //! Return read-only list of built-in IOP tags + const TagInfo* iopTagList(); + //! Return read-only list of built-in GPS tags + const TagInfo* gpsTagList(); + //! Return read-only list of built-in Exiv2 Makernote info tags + const TagInfo* mnTagList(); + + //! Return the group id for a group name + IfdId groupId(const std::string& groupName); + //! Return the name of the IFD + const char* ifdName(IfdId ifdId); + //! Return the group name for a group id + const char* groupName(IfdId ifdId); + + //! Return true if \em ifdId is a makernote IFD id. (Note: returns false for makerIfd) + bool isMakerIfd(IfdId ifdId); + //! Return true if \em ifdId is an %Exif IFD id. + bool isExifIfd(IfdId ifdId); + + //! Print the list of tags for \em ifdId to the output stream \em os + void taglist(std::ostream& os, IfdId ifdId); + //! Return the tag list for \em ifdId + const TagInfo* tagList(IfdId ifdId); + //! Return the tag info for \em tag and \em ifdId + const TagInfo* tagInfo(uint16_t tag, IfdId ifdId); + //! Return the tag info for \em tagName and \em ifdId + const TagInfo* tagInfo(const std::string& tagName, IfdId ifdId); + /*! + @brief Return the tag number for one combination of IFD id and tagName. + If the tagName is not known, it expects tag names in the + form "0x01ff" and converts them to unsigned integer. + + @throw Error if the tagname or ifdId is invalid + */ + uint16_t tagNumber(const std::string& tagName, IfdId ifdId); + + //! @name Functions printing interpreted tag values + //@{ + //! Default print function, using the Value output operator + std::ostream& printValue(std::ostream& os, const Value& value, const ExifData*); + //! Print the value converted to a long + std::ostream& printLong(std::ostream& os, const Value& value, const ExifData*); + //! Print a Rational or URational value in floating point format + std::ostream& printFloat(std::ostream& os, const Value& value, const ExifData*); + //! Print a longitude or latitude value + std::ostream& printDegrees(std::ostream& os, const Value& value, const ExifData*); + //! Print function converting from UCS-2LE to UTF-8 + std::ostream& printUcs2(std::ostream& os, const Value& value, const ExifData*); + //! Print function for Exif units + std::ostream& printExifUnit(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS version + std::ostream& print0x0000(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS altitude ref + std::ostream& print0x0005(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS altitude + std::ostream& print0x0006(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS timestamp + std::ostream& print0x0007(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS status + std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS measurement mode + std::ostream& print0x000a(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS speed ref + std::ostream& print0x000c(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS destination distance ref + std::ostream& print0x0019(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS differential correction + std::ostream& print0x001e(std::ostream& os, const Value& value, const ExifData*); + //! Print orientation + std::ostream& print0x0112(std::ostream& os, const Value& value, const ExifData*); + //! Print YCbCrPositioning + std::ostream& print0x0213(std::ostream& os, const Value& value, const ExifData*); + //! Print the copyright + std::ostream& print0x8298(std::ostream& os, const Value& value, const ExifData*); + //! Print the exposure time + std::ostream& print0x829a(std::ostream& os, const Value& value, const ExifData*); + //! Print the f-number + std::ostream& print0x829d(std::ostream& os, const Value& value, const ExifData*); + //! Print exposure program + std::ostream& print0x8822(std::ostream& os, const Value& value, const ExifData*); + //! Print ISO speed ratings + std::ostream& print0x8827(std::ostream& os, const Value& value, const ExifData*); + //! Print components configuration specific to compressed data + std::ostream& print0x9101(std::ostream& os, const Value& value, const ExifData*); + //! Print exposure time converted from APEX shutter speed value + std::ostream& print0x9201(std::ostream& os, const Value& value, const ExifData*); + //! Print f-number converted from APEX aperture value + std::ostream& print0x9202(std::ostream& os, const Value& value, const ExifData*); + //! Print the exposure bias value + std::ostream& print0x9204(std::ostream& os, const Value& value, const ExifData*); + //! Print the subject distance + std::ostream& print0x9206(std::ostream& os, const Value& value, const ExifData*); + //! Print metering mode + std::ostream& print0x9207(std::ostream& os, const Value& value, const ExifData*); + //! Print light source + std::ostream& print0x9208(std::ostream& os, const Value& value, const ExifData*); + //! Print the actual focal length of the lens + std::ostream& print0x920a(std::ostream& os, const Value& value, const ExifData*); + //! Print the user comment + std::ostream& print0x9286(std::ostream& os, const Value& value, const ExifData*); + //! Print color space + std::ostream& print0xa001(std::ostream& os, const Value& value, const ExifData*); + //! Print sensing method + std::ostream& print0xa217(std::ostream& os, const Value& value, const ExifData*); + //! Print file source + std::ostream& print0xa300(std::ostream& os, const Value& value, const ExifData*); + //! Print scene type + std::ostream& print0xa301(std::ostream& os, const Value& value, const ExifData*); + //! Print custom rendered + std::ostream& print0xa401(std::ostream& os, const Value& value, const ExifData*); + //! Print exposure mode + std::ostream& print0xa402(std::ostream& os, const Value& value, const ExifData*); + //! Print white balance + std::ostream& print0xa403(std::ostream& os, const Value& value, const ExifData*); + //! Print digital zoom ratio + std::ostream& print0xa404(std::ostream& os, const Value& value, const ExifData*); + //! Print 35mm equivalent focal length + std::ostream& print0xa405(std::ostream& os, const Value& value, const ExifData*); + //! Print scene capture type + std::ostream& print0xa406(std::ostream& os, const Value& value, const ExifData*); + //! Print gain control + std::ostream& print0xa407(std::ostream& os, const Value& value, const ExifData*); + //! Print saturation + std::ostream& print0xa409(std::ostream& os, const Value& value, const ExifData*); + //! Print subject distance range + std::ostream& print0xa40c(std::ostream& os, const Value& value, const ExifData*); + //! Print GPS direction ref + std::ostream& printGPSDirRef(std::ostream& os, const Value& value, const ExifData*); + //! Print contrast, sharpness (normal, soft, hard) + std::ostream& printNormalSoftHard(std::ostream& os, const Value& value, const ExifData*); + //! Print any version packed in 4 Bytes format : major major minor minor + std::ostream& printExifVersion(std::ostream& os, const Value& value, const ExifData*); + //! Print any version encoded in the ASCII string majormajorminorminor + std::ostream& printXmpVersion(std::ostream& os, const Value& value, const ExifData*); + //! Print a date following the format YYYY-MM-DDTHH:MM:SSZ + std::ostream& printXmpDate(std::ostream& os, const Value& value, const ExifData*); + //@} + + //! Calculate F number from an APEX aperture value + float fnumber(float apertureValue); + + //! Calculate the exposure time from an APEX shutter speed value + URational exposureTime(float shutterSpeedValue); + +}} // namespace Internal, Exiv2 + +#endif // #ifndef TAGS_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/tgaimage.cpp b/vendor/exiv2-0.25/src/tgaimage.cpp new file mode 100644 index 0000000..166cb3e --- /dev/null +++ b/vendor/exiv2-0.25/src/tgaimage.cpp @@ -0,0 +1,176 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: tgaimage.cpp + Version: $Rev: 3777 $ + Author(s): Marco Piovanelli, Ovolab (marco) + History: 05-Mar-2007, marco: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: tgaimage.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "tgaimage.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "futils.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + TgaImage::TgaImage(BasicIo::AutoPtr io) + : Image(ImageType::tga, mdNone, io) + { + } // TgaImage::TgaImage + + std::string TgaImage::mimeType() const + { + return "image/targa"; + } + + void TgaImage::setExifData(const ExifData& /*exifData*/) + { + // Todo: implement me! + throw(Error(32, "Exif metadata", "TGA")); + } + + void TgaImage::setIptcData(const IptcData& /*iptcData*/) + { + // Todo: implement me! + throw(Error(32, "IPTC metadata", "TGA")); + } + + void TgaImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "TGA")); + } + + void TgaImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Exiv2::TgaImage::readMetadata: Reading TARGA file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) + { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isTgaType(*io_, false)) + { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "TGA"); + } + clearMetadata(); + + /* + The TARGA header goes as follows -- all numbers are in little-endian byte order: + + offset length name description + ====== ======= ======================= =========== + 0 1 byte ID length length of image ID (0 to 255) + 1 1 byte color map type 0 = no color map; 1 = color map included + 2 1 byte image type 0 = no image; + 1 = uncompressed color-mapped; + 2 = uncompressed true-color; + 3 = uncompressed black-and-white; + 9 = RLE-encoded color mapped; + 10 = RLE-encoded true-color; + 11 = RLE-encoded black-and-white + 3 5 bytes color map specification + 8 2 bytes x-origin of image + 10 2 bytes y-origin of image + 12 2 bytes image width + 14 2 bytes image height + 16 1 byte pixel depth + 17 1 byte image descriptor + */ + byte buf[18]; + if (io_->read(buf, sizeof(buf)) == sizeof(buf)) + { + pixelWidth_ = getShort(buf + 12, littleEndian); + pixelHeight_ = getShort(buf + 14, littleEndian); + } + } // TgaImage::readMetadata + + void TgaImage::writeMetadata() + { + // Todo: implement me! + throw(Error(31, "TGA")); + } // TgaImage::writeMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newTgaInstance(BasicIo::AutoPtr io, bool /*create*/) + { + Image::AutoPtr image(new TgaImage(io)); + if (!image->good()) + { + image.reset(); + } + return image; + } + + bool isTgaType(BasicIo& iIo, bool /*advance*/) + { + // not all TARGA files have a signature string, so first just try to match the file name extension +#ifdef EXV_UNICODE_PATH + std::wstring wpath = iIo.wpath(); + if( wpath.rfind(EXV_WIDEN(".tga")) != std::wstring::npos + || wpath.rfind(EXV_WIDEN(".TGA")) != std::wstring::npos) { + return true; + } +#else + std::string path = iIo.path(); + if( path.rfind(".tga") != std::string::npos + || path.rfind(".TGA") != std::string::npos) { + return true; + } +#endif + byte buf[26]; + long curPos = iIo.tell(); + iIo.seek(-26, BasicIo::end); + if (iIo.error() || iIo.eof()) + { + return false; + } + iIo.read(buf, sizeof(buf)); + if (iIo.error()) + { + return false; + } + // some TARGA files, but not all, have a signature string at the end + bool matched = (memcmp(buf + 8, "TRUEVISION-XFILE", 16) == 0); + iIo.seek(curPos, BasicIo::beg); + return matched; + } +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/tiff-test.cpp b/vendor/exiv2-0.25/src/tiff-test.cpp new file mode 100644 index 0000000..0258207 --- /dev/null +++ b/vendor/exiv2-0.25/src/tiff-test.cpp @@ -0,0 +1,76 @@ +// ***************************************************************** -*- C++ -*- +// tiff-test.cpp, $Rev: 1512 $ +// TIFF writer tests. + +#include "tiffimage.hpp" +#include "exif.hpp" +#include "error.hpp" + +#include +#include + +/* + Tests: + + All types of components + + Makernotes + + Data entries, thumbnails + + Special use-cases + + IFD1 + + Multiple sub-IFDs + + Comment + + Other/unknown TIFF types + + + + */ + +using namespace Exiv2; + +void print(const ExifData& exifData); + +int main() +try { + BasicIo::AutoPtr io(new FileIo("image.tif")); + TiffImage tiffImage(io, false); + ExifData& exifData = tiffImage.exifData(); + exifData["Exif.Image.ImageWidth"] = uint32_t(42); + exifData["Exif.Image.ImageLength"] = 24; + exifData["Exif.Image.Model"] = "Model"; + exifData["Exif.Image.Make"] = "FujiFilm"; + exifData["Exif.Photo.0x0001"] = "Just for fun"; + exifData["Exif.Iop.RelatedImageFileFormat"] = "TIFF"; + exifData["Exif.Photo.InteroperabilityTag"] = uint32_t(132); // for non-intrusive writing + exifData["Exif.Image.ExifTag"] = uint32_t(89); // for non-intrusive writingti + exifData.setJpegThumbnail("exiv2-empty.jpg"); + // The setJpegThumbnail method sets this to 0. + //exifData["Exif.Thumbnail.JPEGInterchangeFormat"] = uint32_t(197); + print(exifData); + tiffImage.writeMetadata(); + return 0; +} +catch (const Error& e) { + std::cerr << e << "\n"; + return 1; +} + +void print(const ExifData& exifData) +{ + if (exifData.empty()) { + std::string 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) { + 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 + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + } +} diff --git a/vendor/exiv2-0.25/src/tiffcomposite.cpp b/vendor/exiv2-0.25/src/tiffcomposite.cpp new file mode 100644 index 0000000..e5ced3a --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffcomposite.cpp @@ -0,0 +1,1913 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: tiffcomposite.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 11-Apr-06, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: tiffcomposite.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "tiffimage_int.hpp" +#include "tiffcomposite_int.hpp" +#include "tiffvisitor_int.hpp" +#include "makernote_int.hpp" +#include "value.hpp" +#include "error.hpp" + +// + standard includes +#include +#include +#include +#include +#include + +// ***************************************************************************** +namespace { + //! Add \em tobe - \em curr 0x00 filler bytes if necessary + uint32_t fillGap(Exiv2::Internal::IoWrapper& ioWrapper, uint32_t curr, uint32_t tobe); +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + bool TiffMappingInfo::operator==(const TiffMappingInfo::Key& key) const + { + return ( 0 == strcmp("*", make_) + || 0 == strncmp(make_, key.m_.c_str(), strlen(make_))) + && (Tag::all == extendedTag_ || key.e_ == extendedTag_) + && key.g_ == group_; + } + + IoWrapper::IoWrapper(BasicIo& io, const byte* pHeader, long size, OffsetWriter* pow) + : io_(io), pHeader_(pHeader), size_(size), wroteHeader_(false), pow_(pow) + { + if (pHeader_ == 0 || size_ == 0) wroteHeader_ = true; + } + + long IoWrapper::write(const byte* pData, long wcount) + { + if (!wroteHeader_ && wcount > 0) { + io_.write(pHeader_, size_); + wroteHeader_ = true; + } + return io_.write(pData, wcount); + } + + int IoWrapper::putb(byte data) + { + if (!wroteHeader_) { + io_.write(pHeader_, size_); + wroteHeader_ = true; + } + return io_.putb(data); + } + + void IoWrapper::setTarget(int id, uint32_t target) + { + if (pow_) pow_->setTarget(OffsetWriter::OffsetId(id), target); + } + + TiffComponent::TiffComponent(uint16_t tag, IfdId group) + : tag_(tag), group_(group), pStart_(0) + { + } + + TiffEntryBase::TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType) + : TiffComponent(tag, group), + tiffType_(tiffType), count_(0), offset_(0), + size_(0), pData_(0), isMalloced_(false), idx_(0), + pValue_(0) + { + } + + TiffSubIfd::TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup) + : TiffEntryBase(tag, group, ttUnsignedLong), newGroup_(newGroup) + { + } + + TiffMnEntry::TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup) + : TiffEntryBase(tag, group, ttUndefined), mnGroup_(mnGroup), mn_(0) + { + } + + TiffIfdMakernote::TiffIfdMakernote(uint16_t tag, + IfdId group, + IfdId mnGroup, + MnHeader* pHeader, + bool hasNext) + : TiffComponent(tag, group), + pHeader_(pHeader), + ifd_(tag, mnGroup, hasNext), + mnOffset_(0), + imageByteOrder_(invalidByteOrder) + { + } + + TiffBinaryArray::TiffBinaryArray(uint16_t tag, + IfdId group, + const ArrayCfg* arrayCfg, + const ArrayDef* arrayDef, + int defSize) + : TiffEntryBase(tag, group, arrayCfg->elTiffType_), + cfgSelFct_(0), + arraySet_(0), + arrayCfg_(arrayCfg), + arrayDef_(arrayDef), + defSize_(defSize), + setSize_(0), + origData_(0), + origSize_(0), + pRoot_(0), + decoded_(false) + { + assert(arrayCfg != 0); + } + + TiffBinaryArray::TiffBinaryArray(uint16_t tag, + IfdId group, + const ArraySet* arraySet, + int setSize, + CfgSelFct cfgSelFct) + : TiffEntryBase(tag, group), // Todo: Does it make a difference that there is no type? + cfgSelFct_(cfgSelFct), + arraySet_(arraySet), + arrayCfg_(0), + arrayDef_(0), + defSize_(0), + setSize_(setSize), + origData_(0), + origSize_(0), + pRoot_(0), + decoded_(false) + { + // We'll figure out the correct cfg later + assert(cfgSelFct != 0); + assert(arraySet_ != 0); + } + + TiffBinaryElement::TiffBinaryElement(uint16_t tag, IfdId group) + : TiffEntryBase(tag, group) + { + } + + TiffComponent::~TiffComponent() + { + } + + TiffDirectory::~TiffDirectory() + { + for (Components::iterator i = components_.begin(); i != components_.end(); ++i) { + delete *i; + } + delete pNext_; + } + + TiffSubIfd::~TiffSubIfd() + { + for (Ifds::iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + delete *i; + } + } + + TiffEntryBase::~TiffEntryBase() + { + if (isMalloced_) { + delete[] pData_; + } + delete pValue_; + } + + TiffEntry::~TiffEntry() + { + } + + TiffDataEntryBase::~TiffDataEntryBase() + { + } + + TiffDataEntry::~TiffDataEntry() + { + } + + TiffImageEntry::~TiffImageEntry() + { + } + + TiffSizeEntry::~TiffSizeEntry() + { + } + + TiffMnEntry::~TiffMnEntry() + { + delete mn_; + } + + TiffIfdMakernote::~TiffIfdMakernote() + { + delete pHeader_; + } + + TiffBinaryArray::~TiffBinaryArray() + { + for (Components::iterator i = elements_.begin(); i != elements_.end(); ++i) { + delete *i; + } + } + + TiffBinaryElement::~TiffBinaryElement() + { + } + + TiffEntryBase::TiffEntryBase(const TiffEntryBase& rhs) + : TiffComponent(rhs), + tiffType_(rhs.tiffType_), + count_(rhs.count_), + offset_(rhs.offset_), + size_(rhs.size_), + pData_(rhs.pData_), + isMalloced_(rhs.isMalloced_), + idx_(rhs.idx_), + pValue_(rhs.pValue_ ? rhs.pValue_->clone().release() : 0) + { + if (rhs.isMalloced_) { + pData_ = new byte[rhs.size_]; + memcpy(pData_, rhs.pData_, rhs.size_); + } + } + + TiffDirectory::TiffDirectory(const TiffDirectory& rhs) + : TiffComponent(rhs), + hasNext_(rhs.hasNext_), + pNext_(0) + { + } + + TiffSubIfd::TiffSubIfd(const TiffSubIfd& rhs) + : TiffEntryBase(rhs), + newGroup_(rhs.newGroup_) + { + } + + TiffBinaryArray::TiffBinaryArray(const TiffBinaryArray& rhs) + : TiffEntryBase(rhs), + cfgSelFct_(rhs.cfgSelFct_), + arraySet_(rhs.arraySet_), + arrayCfg_(rhs.arrayCfg_), + arrayDef_(rhs.arrayDef_), + defSize_(rhs.defSize_), + setSize_(rhs.setSize_), + origData_(rhs.origData_), + origSize_(rhs.origSize_), + pRoot_(rhs.pRoot_), + decoded_(false) + { + } + + TiffComponent::AutoPtr TiffComponent::clone() const + { + return AutoPtr(doClone()); + } + + TiffEntry* TiffEntry::doClone() const + { + return new TiffEntry(*this); + } + + TiffDataEntry* TiffDataEntry::doClone() const + { + return new TiffDataEntry(*this); + } + + TiffImageEntry* TiffImageEntry::doClone() const + { + return new TiffImageEntry(*this); + } + + TiffSizeEntry* TiffSizeEntry::doClone() const + { + return new TiffSizeEntry(*this); + } + + TiffDirectory* TiffDirectory::doClone() const + { + return new TiffDirectory(*this); + } + + TiffSubIfd* TiffSubIfd::doClone() const + { + return new TiffSubIfd(*this); + } + + TiffMnEntry* TiffMnEntry::doClone() const + { + assert(false); // Not implemented + return 0; + } + + TiffIfdMakernote* TiffIfdMakernote::doClone() const + { + assert(false); // Not implemented + return 0; + } + + TiffBinaryArray* TiffBinaryArray::doClone() const + { + return new TiffBinaryArray(*this); + } + + TiffBinaryElement* TiffBinaryElement::doClone() const + { + return new TiffBinaryElement(*this); + } + + int TiffComponent::idx() const + { + return 0; + } + + int TiffEntryBase::idx() const + { + return idx_; + } + + void TiffEntryBase::setData(DataBuf buf) + { + std::pair p = buf.release(); + setData(p.first, p.second); + isMalloced_ = true; + } + + void TiffEntryBase::setData(byte* pData, int32_t size) + { + if (isMalloced_) { + delete[] pData_; + } + pData_ = pData; + size_ = size; + if (pData_ == 0) size_ = 0; + } + + void TiffEntryBase::updateValue(Value::AutoPtr value, ByteOrder byteOrder) + { + if (value.get() == 0) return; + uint32_t newSize = value->size(); + if (newSize > size_) { + setData(DataBuf(newSize)); + } + memset(pData_, 0x0, size_); + size_ = value->copy(pData_, byteOrder); + assert(size_ == newSize); + setValue(value); + } // TiffEntryBase::updateValue + + void TiffEntryBase::setValue(Value::AutoPtr value) + { + if (value.get() == 0) return; + tiffType_ = toTiffType(value->typeId()); + count_ = value->count(); + delete pValue_; + pValue_ = value.release(); + } // TiffEntryBase::setValue + + void TiffDataEntry::setStrips(const Value* pSize, + const byte* pData, + uint32_t sizeData, + uint32_t baseOffset) + { + if (!pValue() || !pSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Size or data offset value not set, ignoring them.\n"; +#endif + return; + } + if (pValue()->count() == 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Data offset entry value is empty, ignoring it.\n"; +#endif + return; + } + if (pValue()->count() != pSize->count()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Size and data offset entries have different" + << " number of components, ignoring them.\n"; +#endif + return; + } + uint32_t size = 0; + for (int i = 0; i < pSize->count(); ++i) { + size += static_cast(pSize->toLong(i)); + } + uint32_t offset = static_cast(pValue()->toLong(0)); + // Todo: Remove limitation of JPEG writer: strips must be contiguous + // Until then we check: last offset + last size - first offset == size? + if ( static_cast(pValue()->toLong(pValue()->count()-1)) + + static_cast(pSize->toLong(pSize->count()-1)) + - offset != size) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Data area is not contiguous, ignoring it.\n"; +#endif + return; + } + if ( offset > sizeData + || size > sizeData + || baseOffset + offset > sizeData - size) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Data area exceeds data buffer, ignoring it.\n"; +#endif + return; + } + pDataArea_ = const_cast(pData) + baseOffset + offset; + sizeDataArea_ = size; + const_cast(pValue())->setDataArea(pDataArea_, sizeDataArea_); + } // TiffDataEntry::setStrips + + void TiffImageEntry::setStrips(const Value* pSize, + const byte* pData, + uint32_t sizeData, + uint32_t baseOffset) + { + if (!pValue() || !pSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Size or data offset value not set, ignoring them.\n"; +#endif + return; + } + if (pValue()->count() != pSize->count()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Size and data offset entries have different" + << " number of components, ignoring them.\n"; +#endif + return; + } + for (int i = 0; i < pValue()->count(); ++i) { + const uint32_t offset = static_cast(pValue()->toLong(i)); + const byte* pStrip = pData + baseOffset + offset; + const uint32_t size = static_cast(pSize->toLong(i)); + + if ( offset > sizeData + || size > sizeData + || baseOffset + offset > sizeData - size) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << ": Strip " << std::dec << i + << " is outside of the data area; ignored.\n"; +#endif + } + else if (size != 0) { + strips_.push_back(std::make_pair(pStrip, size)); + } + } + } // TiffImageEntry::setStrips + + uint32_t TiffIfdMakernote::ifdOffset() const + { + if (!pHeader_) return 0; + return pHeader_->ifdOffset(); + } + + ByteOrder TiffIfdMakernote::byteOrder() const + { + assert(imageByteOrder_ != invalidByteOrder); + if (!pHeader_ || pHeader_->byteOrder() == invalidByteOrder) { + return imageByteOrder_; + } + return pHeader_->byteOrder(); + } + + uint32_t TiffIfdMakernote::mnOffset() const + { + return mnOffset_; + } + + uint32_t TiffIfdMakernote::baseOffset() const + { + if (!pHeader_) return 0; + return pHeader_->baseOffset(mnOffset_); + } + + bool TiffIfdMakernote::readHeader(const byte* pData, + uint32_t size, + ByteOrder byteOrder) + { + if (!pHeader_) return true; + return pHeader_->read(pData, size, byteOrder); + } + + void TiffIfdMakernote::setByteOrder(ByteOrder byteOrder) + { + if (pHeader_) pHeader_->setByteOrder(byteOrder); + } + + uint32_t TiffIfdMakernote::sizeHeader() const + { + if (!pHeader_) return 0; + return pHeader_->size(); + } + + uint32_t TiffIfdMakernote::writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const + { + if (!pHeader_) return 0; + return pHeader_->write(ioWrapper, byteOrder); + } + + uint32_t ArrayDef::size(uint16_t tag, IfdId group) const + { + TypeId typeId = toTypeId(tiffType_, tag, group); + return count_ * TypeInfo::typeSize(typeId); + } + + bool TiffBinaryArray::initialize(IfdId group) + { + if (arrayCfg_ != 0) return true; // Not a complex array or already initialized + + for (int idx = 0; idx < setSize_; ++idx) { + if (arraySet_[idx].cfg_.group_ == group) { + arrayCfg_ = &arraySet_[idx].cfg_; + arrayDef_ = arraySet_[idx].def_; + defSize_ = arraySet_[idx].defSize_; + return true; + } + } + return false; + } + + bool TiffBinaryArray::initialize(TiffComponent* const pRoot) + { + if (cfgSelFct_ == 0) return true; // Not a complex array + + int idx = cfgSelFct_(tag(), pData(), TiffEntryBase::doSize(), pRoot); + if (idx > -1) { + arrayCfg_ = &arraySet_[idx].cfg_; + arrayDef_ = arraySet_[idx].def_; + defSize_ = arraySet_[idx].defSize_; + } + return idx > -1; + } + + void TiffBinaryArray::iniOrigDataBuf() + { + origData_ = const_cast(pData()); + origSize_ = TiffEntryBase::doSize(); + } + + bool TiffBinaryArray::updOrigDataBuf(const byte* pData, uint32_t size) + { + assert(pData != 0); + + if (origSize_ != size) return false; + if (origData_ == pData) return true; + memcpy(origData_, pData, origSize_); + return true; + } + + uint32_t TiffBinaryArray::addElement(uint32_t idx, const ArrayDef& def) + { + uint16_t tag = static_cast(idx / cfg()->tagStep()); + int32_t sz = EXV_MIN(def.size(tag, cfg()->group_), TiffEntryBase::doSize() - idx); + TiffComponent::AutoPtr tc = TiffCreator::create(tag, cfg()->group_); + TiffBinaryElement* tp = dynamic_cast(tc.get()); + // The assertion typically fails if a component is not configured in + // the TIFF structure table (TiffCreator::tiffTreeStruct_) + assert(tp); + tp->setStart(pData() + idx); + tp->setData(const_cast(pData() + idx), sz); + tp->setElDef(def); + tp->setElByteOrder(cfg()->byteOrder_); + addChild(tc); + return sz; + } // TiffBinaryArray::addElement + + TiffComponent* TiffComponent::addPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object) + { + return doAddPath(tag, tiffPath, pRoot, object); + } // TiffComponent::addPath + + TiffComponent* TiffComponent::doAddPath(uint16_t /*tag*/, + TiffPath& /*tiffPath*/, + TiffComponent* const /*pRoot*/, + TiffComponent::AutoPtr /*object*/) + { + return this; + } // TiffComponent::doAddPath + + TiffComponent* TiffDirectory::doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object) + { + assert(tiffPath.size() > 1); + tiffPath.pop(); + const TiffPathItem tpi = tiffPath.top(); + + TiffComponent* tc = 0; + // Try to use an existing component if there is still at least one + // composite tag on the stack or the tag to add is the MakerNote tag. + // This is used to prevent duplicate entries. Sub-IFDs also, but the > 1 + // condition takes care of them, see below. + if ( tiffPath.size() > 1 + || (tpi.extendedTag() == 0x927c && tpi.group() == exifId)) { + if (tpi.extendedTag() == Tag::next) { + tc = pNext_; + } + else { + for (Components::iterator i = components_.begin(); i != components_.end(); ++i) { + if ((*i)->tag() == tpi.tag() && (*i)->group() == tpi.group()) { + tc = *i; + break; + } + } + } + } + if (tc == 0) { + TiffComponent::AutoPtr atc; + if (tiffPath.size() == 1 && object.get() != 0) { + atc = object; + } + else { + atc = TiffCreator::create(tpi.extendedTag(), tpi.group()); + } + assert(atc.get() != 0); + + // Prevent dangling sub-IFD tags: Do not add a sub-IFD component without children. + // Todo: How to check before creating the component? + if (tiffPath.size() == 1 && dynamic_cast(atc.get()) != 0) return 0; + + if (tpi.extendedTag() == Tag::next) { + tc = this->addNext(atc); + } + else { + tc = this->addChild(atc); + } + } + return tc->addPath(tag, tiffPath, pRoot, object); + } // TiffDirectory::doAddPath + + TiffComponent* TiffSubIfd::doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object) + { + assert(!tiffPath.empty()); + const TiffPathItem tpi1 = tiffPath.top(); + tiffPath.pop(); + if (tiffPath.empty()) { + // If the last element in the path is the sub-IFD tag itself we're done. + // But that shouldn't happen - see TiffDirectory::doAddPath + return this; + } + const TiffPathItem tpi2 = tiffPath.top(); + tiffPath.push(tpi1); + TiffComponent* tc = 0; + for (Ifds::iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + if ((*i)->group() == tpi2.group()) { + tc = *i; + break; + } + } + if (tc == 0) { + if (tiffPath.size() == 1 && object.get() != 0) { + tc = addChild(object); + } + else { + TiffComponent::AutoPtr atc(new TiffDirectory(tpi1.tag(), tpi2.group())); + tc = addChild(atc); + } + setCount(static_cast(ifds_.size())); + } + return tc->addPath(tag, tiffPath, pRoot, object); + } // TiffSubIfd::doAddPath + + TiffComponent* TiffMnEntry::doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object) + { + assert(!tiffPath.empty()); + const TiffPathItem tpi1 = tiffPath.top(); + tiffPath.pop(); + if (tiffPath.empty()) { + // If the last element in the path is the makernote tag itself we're done + return this; + } + const TiffPathItem tpi2 = tiffPath.top(); + tiffPath.push(tpi1); + if (mn_ == 0) { + mnGroup_ = tpi2.group(); + mn_ = TiffMnCreator::create(tpi1.tag(), tpi1.group(), mnGroup_); + assert(mn_); + } + return mn_->addPath(tag, tiffPath, pRoot, object); + } // TiffMnEntry::doAddPath + + TiffComponent* TiffIfdMakernote::doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object) + { + return ifd_.addPath(tag, tiffPath, pRoot, object); + } + + TiffComponent* TiffBinaryArray::doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object) + { + pRoot_ = pRoot; + if (tiffPath.size() == 1) { + // An unknown complex binary array has no children and acts like a standard TIFF entry + return this; + } + tiffPath.pop(); + const TiffPathItem tpi = tiffPath.top(); + // Initialize the binary array (if it is a complex array) + initialize(tpi.group()); + TiffComponent* tc = 0; + // Todo: Duplicates are not allowed! + // To allow duplicate entries, we only check if the new component already + // exists if there is still at least one composite tag on the stack + if (tiffPath.size() > 1) { + for (Components::iterator i = elements_.begin(); i != elements_.end(); ++i) { + if ((*i)->tag() == tpi.tag() && (*i)->group() == tpi.group()) { + tc = *i; + break; + } + } + } + if (tc == 0) { + TiffComponent::AutoPtr atc; + if (tiffPath.size() == 1 && object.get() != 0) { + atc = object; + } + else { + atc = TiffCreator::create(tpi.extendedTag(), tpi.group()); + } + assert(atc.get() != 0); + assert(tpi.extendedTag() != Tag::next); + tc = addChild(atc); + setCount(static_cast(elements_.size())); + } + return tc->addPath(tag, tiffPath, pRoot, object); + } // TiffBinaryArray::doAddPath + + TiffComponent* TiffComponent::addChild(TiffComponent::AutoPtr tiffComponent) + { + return doAddChild(tiffComponent); + } // TiffComponent::addChild + + TiffComponent* TiffComponent::doAddChild(AutoPtr /*tiffComponent*/) + { + return 0; + } // TiffComponent::doAddChild + + TiffComponent* TiffDirectory::doAddChild(TiffComponent::AutoPtr tiffComponent) + { + TiffComponent* tc = tiffComponent.release(); + components_.push_back(tc); + return tc; + } // TiffDirectory::doAddChild + + TiffComponent* TiffSubIfd::doAddChild(TiffComponent::AutoPtr tiffComponent) + { + TiffDirectory* d = dynamic_cast(tiffComponent.release()); + assert(d); + ifds_.push_back(d); + return d; + } // TiffSubIfd::doAddChild + + TiffComponent* TiffMnEntry::doAddChild(TiffComponent::AutoPtr tiffComponent) + { + TiffComponent* tc = 0; + if (mn_) { + tc = mn_->addChild(tiffComponent); + } + return tc; + } // TiffMnEntry::doAddChild + + TiffComponent* TiffIfdMakernote::doAddChild(TiffComponent::AutoPtr tiffComponent) + { + return ifd_.addChild(tiffComponent); + } + + TiffComponent* TiffBinaryArray::doAddChild(TiffComponent::AutoPtr tiffComponent) + { + TiffComponent* tc = tiffComponent.release(); + elements_.push_back(tc); + setDecoded(true); + return tc; + } // TiffBinaryArray::doAddChild + + TiffComponent* TiffComponent::addNext(TiffComponent::AutoPtr tiffComponent) + { + return doAddNext(tiffComponent); + } // TiffComponent::addNext + + TiffComponent* TiffComponent::doAddNext(AutoPtr /*tiffComponent*/) + { + return 0; + } // TiffComponent::doAddNext + + TiffComponent* TiffDirectory::doAddNext(TiffComponent::AutoPtr tiffComponent) + { + TiffComponent* tc = 0; + if (hasNext_) { + tc = tiffComponent.release(); + pNext_ = tc; + } + return tc; + } // TiffDirectory::doAddNext + + TiffComponent* TiffMnEntry::doAddNext(TiffComponent::AutoPtr tiffComponent) + { + TiffComponent* tc = 0; + if (mn_) { + tc = mn_->addNext(tiffComponent); + } + return tc; + } // TiffMnEntry::doAddNext + + TiffComponent* TiffIfdMakernote::doAddNext(TiffComponent::AutoPtr tiffComponent) + { + return ifd_.addNext(tiffComponent); + } + + void TiffComponent::accept(TiffVisitor& visitor) + { + if (visitor.go(TiffVisitor::geTraverse)) doAccept(visitor); // one for NVI :) + } // TiffComponent::accept + + void TiffEntry::doAccept(TiffVisitor& visitor) + { + visitor.visitEntry(this); + } // TiffEntry::doAccept + + void TiffDataEntry::doAccept(TiffVisitor& visitor) + { + visitor.visitDataEntry(this); + } // TiffDataEntry::doAccept + + void TiffImageEntry::doAccept(TiffVisitor& visitor) + { + visitor.visitImageEntry(this); + } // TiffImageEntry::doAccept + + void TiffSizeEntry::doAccept(TiffVisitor& visitor) + { + visitor.visitSizeEntry(this); + } // TiffSizeEntry::doAccept + + void TiffDirectory::doAccept(TiffVisitor& visitor) + { + visitor.visitDirectory(this); + for (Components::const_iterator i = components_.begin(); + visitor.go(TiffVisitor::geTraverse) && i != components_.end(); ++i) { + (*i)->accept(visitor); + } + if (visitor.go(TiffVisitor::geTraverse)) visitor.visitDirectoryNext(this); + if (pNext_) pNext_->accept(visitor); + if (visitor.go(TiffVisitor::geTraverse)) visitor.visitDirectoryEnd(this); + } // TiffDirectory::doAccept + + void TiffSubIfd::doAccept(TiffVisitor& visitor) + { + visitor.visitSubIfd(this); + for (Ifds::iterator i = ifds_.begin(); + visitor.go(TiffVisitor::geTraverse) && i != ifds_.end(); ++i) { + (*i)->accept(visitor); + } + } // TiffSubIfd::doAccept + + void TiffMnEntry::doAccept(TiffVisitor& visitor) + { + visitor.visitMnEntry(this); + if (mn_) mn_->accept(visitor); + if (!visitor.go(TiffVisitor::geKnownMakernote)) { + delete mn_; + mn_ = 0; + } + + } // TiffMnEntry::doAccept + + void TiffIfdMakernote::doAccept(TiffVisitor& visitor) + { + if (visitor.go(TiffVisitor::geTraverse)) visitor.visitIfdMakernote(this); + if (visitor.go(TiffVisitor::geKnownMakernote)) ifd_.accept(visitor); + if ( visitor.go(TiffVisitor::geKnownMakernote) + && visitor.go(TiffVisitor::geTraverse)) visitor.visitIfdMakernoteEnd(this); + } + + void TiffBinaryArray::doAccept(TiffVisitor& visitor) + { + visitor.visitBinaryArray(this); + for (Components::const_iterator i = elements_.begin(); + visitor.go(TiffVisitor::geTraverse) && i != elements_.end(); ++i) { + (*i)->accept(visitor); + } + if (visitor.go(TiffVisitor::geTraverse)) visitor.visitBinaryArrayEnd(this); + } // TiffBinaryArray::doAccept + + void TiffBinaryElement::doAccept(TiffVisitor& visitor) + { + visitor.visitBinaryElement(this); + } // TiffBinaryElement::doAccept + + void TiffEntryBase::encode(TiffEncoder& encoder, const Exifdatum* datum) + { + doEncode(encoder, datum); + } // TiffComponent::encode + + void TiffBinaryElement::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeBinaryElement(this, datum); + } // TiffBinaryElement::doEncode + + void TiffBinaryArray::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeBinaryArray(this, datum); + } // TiffBinaryArray::doEncode + + void TiffDataEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeDataEntry(this, datum); + } // TiffDataEntry::doEncode + + void TiffEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeTiffEntry(this, datum); + } // TiffEntry::doEncode + + void TiffImageEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeImageEntry(this, datum); + } // TiffImageEntry::doEncode + + void TiffMnEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeMnEntry(this, datum); + } // TiffMnEntry::doEncode + + void TiffSizeEntry::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeSizeEntry(this, datum); + } // TiffSizeEntry::doEncode + + void TiffSubIfd::doEncode(TiffEncoder& encoder, const Exifdatum* datum) + { + encoder.encodeSubIfd(this, datum); + } // TiffSubIfd::doEncode + + uint32_t TiffComponent::count() const + { + return doCount(); + } + + uint32_t TiffDirectory::doCount() const + { + return static_cast(components_.size()); + } + + uint32_t TiffEntryBase::doCount() const + { + return count_; + } + + uint32_t TiffMnEntry::doCount() const + { + if (!mn_) { + return TiffEntryBase::doCount(); + } + // Count of IFD makernote in tag Exif.Photo.MakerNote is the size of the + // Makernote in bytes + assert(tiffType() == ttUndefined || tiffType() == ttUnsignedByte || tiffType() == ttSignedByte); + return mn_->size(); + } + + uint32_t TiffIfdMakernote::doCount() const + { + return ifd_.count(); + } // TiffIfdMakernote::doCount + + uint32_t TiffBinaryArray::doCount() const + { + if (cfg() == 0 || !decoded()) return TiffEntryBase::doCount(); + + if (elements_.empty()) return 0; + + TypeId typeId = toTypeId(tiffType(), tag(), group()); + long typeSize = TypeInfo::typeSize(typeId); + if (0 == typeSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() + << " has unknown Exif (TIFF) type " << std::dec << tiffType() + << "; setting type size 1.\n"; +#endif + typeSize = 1; + } + + return static_cast(static_cast(size()) / typeSize + 0.5); + } + + uint32_t TiffBinaryElement::doCount() const + { + return elDef_.count_; + } + + uint32_t TiffComponent::write(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) + { + return doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx); + } // TiffComponent::write + + uint32_t TiffDirectory::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) + { + bool isRootDir = (imageIdx == uint32_t(-1)); + + // Number of components to write + const uint32_t compCount = count(); + if (compCount > 0xffff) throw Error(49, groupName(group())); + + // Size of next IFD, if any + uint32_t sizeNext = 0; + if (pNext_) sizeNext = pNext_->size(); + + // Nothing to do if there are no entries and the size of the next IFD is 0 + if (compCount == 0 && sizeNext == 0) return 0; + + // Remember the offset of the CR2 RAW IFD + if (group() == ifd3Id) { +#ifdef DEBUG + std::cerr << "Directory " << groupName(group()) << " offset is 0x" + << std::setw(8) << std::setfill('0') << std::hex << offset << std::dec + << "\n"; +#endif + ioWrapper.setTarget(OffsetWriter::cr2RawIfdOffset, offset); + } + // Size of all directory entries, without values and additional data + const uint32_t sizeDir = 2 + 12 * compCount + (hasNext_ ? 4 : 0); + + // TIFF standard requires IFD entries to be sorted in ascending order by tag. + // Not sorting makernote directories sometimes preserves them better. + if (group() < mnId) { + std::sort(components_.begin(), components_.end(), cmpTagLt); + } + // Size of IFD values and additional data + uint32_t sizeValue = 0; + uint32_t sizeData = 0; + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + uint32_t sv = (*i)->size(); + if (sv > 4) { + sv += sv & 1; // Align value to word boundary + sizeValue += sv; + } + // Also add the size of data, but only if needed + if (isRootDir) { + uint32_t sd = (*i)->sizeData(); + sd += sd & 1; // Align data to word boundary + sizeData += sd; + } + } + + uint32_t idx = 0; // Current IFD index / bytes written + valueIdx = sizeDir; // Offset to the current IFD value + dataIdx = sizeDir + sizeValue; // Offset to the entry's data area + if (isRootDir) { // Absolute offset to the image data + imageIdx = offset + dataIdx + sizeData + sizeNext; + imageIdx += imageIdx & 1; // Align image data to word boundary + } + + // 1st: Write the IFD, a) Number of directory entries + byte buf[4]; + us2Data(buf, static_cast(compCount), byteOrder); + ioWrapper.write(buf, 2); + idx += 2; + // b) Directory entries - may contain pointers to the value or data + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + idx += writeDirEntry(ioWrapper, byteOrder, offset, *i, valueIdx, dataIdx, imageIdx); + uint32_t sv = (*i)->size(); + if (sv > 4) { + sv += sv & 1; // Align value to word boundary + valueIdx += sv; + } + uint32_t sd = (*i)->sizeData(); + sd += sd & 1; // Align data to word boundary + dataIdx += sd; + } + // c) Pointer to the next IFD + if (hasNext_) { + memset(buf, 0x0, 4); + if (pNext_ && sizeNext) { + l2Data(buf, offset + dataIdx, byteOrder); + } + ioWrapper.write(buf, 4); + idx += 4; + } + assert(idx == sizeDir); + + // 2nd: Write IFD values - may contain pointers to additional data + valueIdx = sizeDir; + dataIdx = sizeDir + sizeValue; + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + uint32_t sv = (*i)->size(); + if (sv > 4) { + uint32_t d = (*i)->write(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx); + assert(sv == d); + if ((sv & 1) == 1) { + ioWrapper.putb(0x0); // Align value to word boundary + sv += 1; + } + idx += sv; + valueIdx += sv; + } + uint32_t sd = (*i)->sizeData(); + sd += sd & 1; // Align data to word boundary + dataIdx += sd; + } + assert(idx == sizeDir + sizeValue); + + // 3rd: Write data - may contain offsets too (eg sub-IFD) + dataIdx = sizeDir + sizeValue; + idx += writeData(ioWrapper, byteOrder, offset, dataIdx, imageIdx); + + // 4th: Write next-IFD + if (pNext_ && sizeNext) { + idx += pNext_->write(ioWrapper, byteOrder, offset + idx, uint32_t(-1), uint32_t(-1), imageIdx); + } + + // 5th, at the root directory level only: write image data + if (isRootDir) { + idx += writeImage(ioWrapper, byteOrder); + } + + return idx; + } // TiffDirectory::doWrite + + uint32_t TiffDirectory::writeDirEntry(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + TiffComponent* pTiffComponent, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) const + { + assert(pTiffComponent); + TiffEntryBase* pDirEntry = dynamic_cast(pTiffComponent); + assert(pDirEntry); + byte buf[8]; + us2Data(buf, pDirEntry->tag(), byteOrder); + us2Data(buf + 2, pDirEntry->tiffType(), byteOrder); + ul2Data(buf + 4, pDirEntry->count(), byteOrder); + ioWrapper.write(buf, 8); + if (pDirEntry->size() > 4) { + pDirEntry->setOffset(offset + static_cast(valueIdx)); + l2Data(buf, pDirEntry->offset(), byteOrder); + ioWrapper.write(buf, 4); + } + else { + const uint32_t len = pDirEntry->write(ioWrapper, + byteOrder, + offset, + valueIdx, + dataIdx, + imageIdx); + assert(len <= 4); + if (len < 4) { + memset(buf, 0x0, 4); + ioWrapper.write(buf, 4 - len); + } + } + return 12; + } // TiffDirectory::writeDirEntry + + uint32_t TiffEntryBase::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t /*offset*/, + uint32_t /*valueIdx*/, + uint32_t /*dataIdx*/, + uint32_t& /*imageIdx*/) + { + if (!pValue_) return 0; + + DataBuf buf(pValue_->size()); + pValue_->copy(buf.pData_, byteOrder); + ioWrapper.write(buf.pData_, buf.size_); + return buf.size_; + } // TiffEntryBase::doWrite + + uint32_t TiffEntryBase::writeOffset(byte* buf, + int32_t offset, + TiffType tiffType, + ByteOrder byteOrder) + { + uint32_t rc = 0; + switch(tiffType) { + case ttUnsignedShort: + case ttSignedShort: + if (static_cast(offset) > 0xffff) throw Error(26); + rc = s2Data(buf, static_cast(offset), byteOrder); + break; + case ttUnsignedLong: + case ttSignedLong: + rc = l2Data(buf, static_cast(offset), byteOrder); + break; + default: + throw Error(27); + break; + } + return rc; + } // TiffEntryBase::writeOffset + + uint32_t TiffDataEntry::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t /*valueIdx*/, + uint32_t dataIdx, + uint32_t& /*imageIdx*/) + { + if (!pValue() || pValue()->count() == 0) return 0; + + DataBuf buf(pValue()->size()); + uint32_t idx = 0; + const long prevOffset = pValue()->toLong(0); + for (uint32_t i = 0; i < count(); ++i) { + const long newDataIdx = pValue()->toLong(i) - prevOffset + + static_cast(dataIdx); + idx += writeOffset(buf.pData_ + idx, + offset + newDataIdx, + tiffType(), + byteOrder); + } + ioWrapper.write(buf.pData_, buf.size_); + return buf.size_; + } // TiffDataEntry::doWrite + + uint32_t TiffImageEntry::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t /*valueIdx*/, + uint32_t dataIdx, + uint32_t& imageIdx) + { + uint32_t o2 = imageIdx; + // For makernotes, write TIFF image data to the data area + if (group() > mnId) o2 = offset + dataIdx; +#ifdef DEBUG + std::cerr << "TiffImageEntry, Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() << std::dec + << ": Writing offset " << o2 << "\n"; +#endif + DataBuf buf(static_cast(strips_.size()) * 4); + memset(buf.pData_, 0x0, buf.size_); + uint32_t idx = 0; + for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) { + idx += writeOffset(buf.pData_ + idx, o2, tiffType(), byteOrder); + o2 += i->second; + o2 += i->second & 1; // Align strip data to word boundary + if (!(group() > mnId)) { // Todo: FIX THIS!! SHOULDN'T USE > + imageIdx += i->second; + imageIdx += i->second & 1; // Align strip data to word boundary + } + } + ioWrapper.write(buf.pData_, buf.size_); + return buf.size_; + } // TiffImageEntry::doWrite + + uint32_t TiffSubIfd::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t /*valueIdx*/, + uint32_t dataIdx, + uint32_t& /*imageIdx*/) + { + DataBuf buf(static_cast(ifds_.size()) * 4); + uint32_t idx = 0; + // Sort IFDs by group, needed if image data tags were copied first + std::sort(ifds_.begin(), ifds_.end(), cmpGroupLt); + for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + idx += writeOffset(buf.pData_ + idx, offset + dataIdx, tiffType(), byteOrder); + dataIdx += (*i)->size(); + } + ioWrapper.write(buf.pData_, buf.size_); + return buf.size_; + } // TiffSubIfd::doWrite + + uint32_t TiffMnEntry::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) + { + if (!mn_) { + return TiffEntryBase::doWrite(ioWrapper, byteOrder, offset, valueIdx, dataIdx, imageIdx); + } + return mn_->write(ioWrapper, byteOrder, offset + valueIdx, uint32_t(-1), uint32_t(-1), imageIdx); + } // TiffMnEntry::doWrite + + uint32_t TiffIfdMakernote::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t /*valueIdx*/, + uint32_t /*dataIdx*/, + uint32_t& imageIdx) + { + mnOffset_ = offset; + setImageByteOrder(byteOrder); + uint32_t len = writeHeader(ioWrapper, this->byteOrder()); + len += ifd_.write(ioWrapper, this->byteOrder(), + offset - baseOffset() + len, + uint32_t(-1), uint32_t(-1), + imageIdx); + return len; + } // TiffIfdMakernote::doWrite + + uint32_t TiffBinaryArray::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) + { + if (cfg() == 0 || !decoded()) return TiffEntryBase::doWrite(ioWrapper, + byteOrder, + offset, + valueIdx, + dataIdx, + imageIdx); + if (cfg()->byteOrder_ != invalidByteOrder) byteOrder = cfg()->byteOrder_; + // Tags must be sorted in ascending order + std::sort(elements_.begin(), elements_.end(), cmpTagLt); + uint32_t idx = 0; + MemIo mio; + IoWrapper mioWrapper(mio, 0, 0, 0); + // Some array entries need to have the size in the first element + if (cfg()->hasSize_) { + byte buf[4]; + long elSize = TypeInfo::typeSize(toTypeId(cfg()->elTiffType_, 0, cfg()->group_)); + switch (elSize) { + case 2: + idx += us2Data(buf, size(), byteOrder); + break; + case 4: + idx += ul2Data(buf, size(), byteOrder); + break; + default: + assert(false); + } + mioWrapper.write(buf, elSize); + } + // write all tags of the array (Todo: assumes that there are no duplicates, need check) + for (Components::const_iterator i = elements_.begin(); i != elements_.end(); ++i) { + // Skip the manufactured tag, if it exists + if (cfg()->hasSize_ && (*i)->tag() == 0) continue; + uint32_t newIdx = (*i)->tag() * cfg()->tagStep(); + idx += fillGap(mioWrapper, idx, newIdx); + idx += (*i)->write(mioWrapper, byteOrder, offset + newIdx, valueIdx, dataIdx, imageIdx); + } + if (cfg()->hasFillers_ && def()) { + const ArrayDef* lastDef = def() + defSize() - 1; + uint16_t lastTag = static_cast(lastDef->idx_ / cfg()->tagStep()); + idx += fillGap(mioWrapper, idx, lastDef->idx_ + lastDef->size(lastTag, cfg()->group_)); + } + DataBuf buf; + if (cfg()->cryptFct_) { + buf = cfg()->cryptFct_(tag(), mio.mmap(), static_cast(mio.size()), pRoot_); + } + if (buf.size_ > 0) { + ioWrapper.write(buf.pData_, buf.size_); + } + else { + ioWrapper.write(mio.mmap(), static_cast(mio.size())); + } + + return idx; + } // TiffBinaryArray::doWrite + + uint32_t TiffBinaryElement::doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t /*offset*/, + uint32_t /*valueIdx*/, + uint32_t /*dataIdx*/, + uint32_t& /*imageIdx*/) + { + Value const* pv = pValue(); + if (!pv || pv->count() == 0) return 0; + DataBuf buf(pv->size()); + pv->copy(buf.pData_, byteOrder); + ioWrapper.write(buf.pData_, buf.size_); + return buf.size_; + } // TiffBinaryElement::doWrite + + uint32_t TiffComponent::writeData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const + { + return doWriteData(ioWrapper, byteOrder, offset, dataIdx, imageIdx); + } // TiffComponent::writeData + + uint32_t TiffDirectory::doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const + { + uint32_t len = 0; + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + len += (*i)->writeData(ioWrapper, byteOrder, offset, dataIdx + len, imageIdx); + } + return len; + } // TiffDirectory::doWriteData + + uint32_t TiffEntryBase::doWriteData(IoWrapper&/*ioWrapper*/, + ByteOrder /*byteOrder*/, + int32_t /*offset*/, + uint32_t /*dataIdx*/, + uint32_t& /*imageIdx*/) const + { + return 0; + } // TiffEntryBase::doWriteData + + uint32_t TiffImageEntry::doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t /*offset*/, + uint32_t /*dataIdx*/, + uint32_t& /*imageIdx*/) const + { + uint32_t len = 0; + // For makernotes, write TIFF image data to the data area + if (group() > mnId) { // Todo: FIX THIS HACK!!! + len = writeImage(ioWrapper, byteOrder); + } + return len; + } // TiffImageEntry::doWriteData + + uint32_t TiffDataEntry::doWriteData(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/, + int32_t /*offset*/, + uint32_t /*dataIdx*/, + uint32_t& /*imageIdx*/) const + { + if (!pValue()) return 0; + + DataBuf buf = pValue()->dataArea(); + ioWrapper.write(buf.pData_, buf.size_); + // Align data to word boundary + uint32_t align = (buf.size_ & 1); + if (align) ioWrapper.putb(0x0); + + return buf.size_ + align; + } // TiffDataEntry::doWriteData + + uint32_t TiffSubIfd::doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const + { + uint32_t len = 0; + for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + len += (*i)->write(ioWrapper, byteOrder, offset + dataIdx + len, uint32_t(-1), uint32_t(-1), imageIdx); + } + // Align data to word boundary + uint32_t align = (len & 1); + if (align) ioWrapper.putb(0x0); + + return len + align; + } // TiffSubIfd::doWriteData + + uint32_t TiffIfdMakernote::doWriteData(IoWrapper&/*ioWrapper*/, + ByteOrder /*byteOrder*/, + int32_t /*offset*/, + uint32_t /*dataIdx*/, + uint32_t& /*imageIdx*/) const + { + assert(false); + return 0; + } // TiffIfdMakernote::doWriteData + + uint32_t TiffComponent::writeImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const + { + return doWriteImage(ioWrapper, byteOrder); + } // TiffComponent::writeImage + + uint32_t TiffDirectory::doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const + { + uint32_t len = 0; + TiffComponent* pSubIfd = 0; + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + if ((*i)->tag() == 0x014a) { + // Hack: delay writing of sub-IFD image data to get the order correct + assert(pSubIfd == 0); + pSubIfd = *i; + continue; + } + len += (*i)->writeImage(ioWrapper, byteOrder); + } + if (pSubIfd) { + len += pSubIfd->writeImage(ioWrapper, byteOrder); + } + if (pNext_) { + len += pNext_->writeImage(ioWrapper, byteOrder); + } + return len; + } // TiffDirectory::doWriteImage + + uint32_t TiffEntryBase::doWriteImage(IoWrapper&/*ioWrapper*/, + ByteOrder /*byteOrder*/) const + { + return 0; + } // TiffEntryBase::doWriteImage + + uint32_t TiffSubIfd::doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const + { + uint32_t len = 0; + for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + len += (*i)->writeImage(ioWrapper, byteOrder); + } + return len; + } // TiffSubIfd::doWriteImage + + uint32_t TiffIfdMakernote::doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const + { + if (this->byteOrder() != invalidByteOrder) { + byteOrder = this->byteOrder(); + } + uint32_t len = ifd_.writeImage(ioWrapper, byteOrder); + return len; + } // TiffIfdMakernote::doWriteImage + + uint32_t TiffImageEntry::doWriteImage(IoWrapper& ioWrapper, + ByteOrder /*byteOrder*/) const + { + uint32_t len = pValue()->sizeDataArea(); + if (len > 0) { +#ifdef DEBUG + std::cerr << "TiffImageEntry, Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() << std::dec + << ": Writing data area, size = " << len; +#endif + DataBuf buf = pValue()->dataArea(); + ioWrapper.write(buf.pData_, buf.size_); + uint32_t align = len & 1; // Align image data to word boundary + if (align) ioWrapper.putb(0x0); + len += align; + } + else { +#ifdef DEBUG + std::cerr << "TiffImageEntry, Directory " << groupName(group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << tag() << std::dec + << ": Writing " << strips_.size() << " strips"; +#endif + len = 0; + for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) { + ioWrapper.write(i->first, i->second); + len += i->second; + uint32_t align = i->second & 1; // Align strip data to word boundary + if (align) ioWrapper.putb(0x0); + len += align; + } + } +#ifdef DEBUG + std::cerr << ", len = " << len << " bytes\n"; +#endif + return len; + } // TiffImageEntry::doWriteImage + + uint32_t TiffComponent::size() const + { + return doSize(); + } // TiffComponent::size + + uint32_t TiffDirectory::doSize() const + { + uint32_t compCount = count(); + // Size of the directory, without values and additional data + uint32_t len = 2 + 12 * compCount + (hasNext_ ? 4 : 0); + // Size of IFD values and data + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + uint32_t sv = (*i)->size(); + if (sv > 4) { + sv += sv & 1; // Align value to word boundary + len += sv; + } + uint32_t sd = (*i)->sizeData(); + sd += sd & 1; // Align data to word boundary + len += sd; + } + // Size of next-IFD, if any + uint32_t sizeNext = 0; + if (pNext_) { + sizeNext = pNext_->size(); + len += sizeNext; + } + // Reset size of IFD if it has no entries and no or empty next IFD. + if (compCount == 0 && sizeNext == 0) len = 0; + return len; + } // TiffDirectory::doSize + + uint32_t TiffEntryBase::doSize() const + { + return size_; + } // TiffEntryBase::doSize + + uint32_t TiffImageEntry::doSize() const + { + return static_cast(strips_.size()) * 4; + } // TiffImageEntry::doSize + + uint32_t TiffSubIfd::doSize() const + { + return static_cast(ifds_.size()) * 4; + } // TiffSubIfd::doSize + + uint32_t TiffMnEntry::doSize() const + { + if (!mn_) { + return TiffEntryBase::doSize(); + } + return mn_->size(); + } // TiffMnEntry::doSize + + uint32_t TiffIfdMakernote::doSize() const + { + return sizeHeader() + ifd_.size(); + } // TiffIfdMakernote::doSize + + uint32_t TiffBinaryArray::doSize() const + { + if (cfg() == 0 || !decoded()) return TiffEntryBase::doSize(); + + if (elements_.empty()) return 0; + + // Remaining assumptions: + // - array elements don't "overlap" + // - no duplicate tags in the array + uint32_t idx = 0; + uint32_t sz = cfg()->tagStep(); + for (Components::const_iterator i = elements_.begin(); i != elements_.end(); ++i) { + if ((*i)->tag() > idx) { + idx = (*i)->tag(); + sz = (*i)->size(); + } + } + idx = idx * cfg()->tagStep() + sz; + + if (cfg()->hasFillers_ && def()) { + const ArrayDef* lastDef = def() + defSize() - 1; + uint16_t lastTag = static_cast(lastDef->idx_ / cfg()->tagStep()); + idx = EXV_MAX(idx, lastDef->idx_ + lastDef->size(lastTag, cfg()->group_)); + } + return idx; + + } // TiffBinaryArray::doSize + + uint32_t TiffBinaryElement::doSize() const + { + if (!pValue()) return 0; + return pValue()->size(); + } // TiffBinaryElement::doSize + + uint32_t TiffComponent::sizeData() const + { + return doSizeData(); + } // TiffComponent::sizeData + + uint32_t TiffDirectory::doSizeData() const + { + assert(false); + return 0; + } // TiffDirectory::doSizeData + + uint32_t TiffEntryBase::doSizeData() const + { + return 0; + } // TiffEntryBase::doSizeData + + uint32_t TiffImageEntry::doSizeData() const + { + uint32_t len = 0; + // For makernotes, TIFF image data is written to the data area + if (group() > mnId) { // Todo: Fix this hack!! + len = sizeImage(); + } + return len; + } // TiffImageEntry::doSizeData + + uint32_t TiffDataEntry::doSizeData() const + { + if (!pValue()) return 0; + return pValue()->sizeDataArea(); + } // TiffDataEntry::doSizeData + + uint32_t TiffSubIfd::doSizeData() const + { + uint32_t len = 0; + for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + len += (*i)->size(); + } + return len; + } // TiffSubIfd::doSizeData + + uint32_t TiffIfdMakernote::doSizeData() const + { + assert(false); + return 0; + } // TiffIfdMakernote::doSizeData + + uint32_t TiffComponent::sizeImage() const + { + return doSizeImage(); + } // TiffComponent::sizeImage + + uint32_t TiffDirectory::doSizeImage() const + { + uint32_t len = 0; + for (Components::const_iterator i = components_.begin(); i != components_.end(); ++i) { + len += (*i)->sizeImage(); + } + if (pNext_) { + len += pNext_->sizeImage(); + } + return len; + } // TiffDirectory::doSizeImage + + uint32_t TiffSubIfd::doSizeImage() const + { + uint32_t len = 0; + for (Ifds::const_iterator i = ifds_.begin(); i != ifds_.end(); ++i) { + len += (*i)->sizeImage(); + } + return len; + } // TiffSubIfd::doSizeImage + + uint32_t TiffIfdMakernote::doSizeImage() const + { + return ifd_.sizeImage(); + } // TiffIfdMakernote::doSizeImage + + uint32_t TiffEntryBase::doSizeImage() const + { + return 0; + } // TiffEntryBase::doSizeImage + + uint32_t TiffImageEntry::doSizeImage() const + { + if (!pValue()) return 0; + uint32_t len = pValue()->sizeDataArea(); + if (len == 0) { + for (Strips::const_iterator i = strips_.begin(); i != strips_.end(); ++i) { + len += i->second; + } + } + return len; + } // TiffImageEntry::doSizeImage + + // ************************************************************************* + // free functions + TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group) + { + TypeId ti = TypeId(tiffType); + // On the fly type conversion for Exif.Photo.UserComment + if (tag == 0x9286 && group == exifId && ti == undefined) { + ti = comment; + } + // http://dev.exiv2.org/boards/3/topics/1337 change unsignedByte to signedByte + // Exif.NikonAFT.AFFineTuneAdj || Exif.Pentax.Temperature + if ( ti == Exiv2::unsignedByte ) { + if ( (tag == 0x0002 && group == nikonAFTId ) || (tag == 0x0047 && group == pentaxId) ) { + ti = Exiv2::signedByte; + } + } + return ti; + } + + TiffType toTiffType(TypeId typeId) + { + if (static_cast(typeId) > 0xffff) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "'" << TypeInfo::typeName(typeId) + << "' is not a valid Exif (TIFF) type; using type '" + << TypeInfo::typeName(undefined) << "'.\n"; +#endif + return undefined; + } + return static_cast(typeId); + } + + bool cmpTagLt(TiffComponent const* lhs, TiffComponent const* rhs) + { + assert(lhs != 0); + assert(rhs != 0); + if (lhs->tag() != rhs->tag()) return lhs->tag() < rhs->tag(); + return lhs->idx() < rhs->idx(); + } + + bool cmpGroupLt(TiffComponent const* lhs, TiffComponent const* rhs) + { + assert(lhs != 0); + assert(rhs != 0); + return lhs->group() < rhs->group(); + } + + TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr(new TiffEntry(tag, group)); + } + + TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr(new TiffMnEntry(tag, group, mnId)); + } + + TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr(new TiffBinaryElement(tag, group)); + } + +}} // namespace Internal, Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + uint32_t fillGap(Exiv2::Internal::IoWrapper& ioWrapper, uint32_t curr, uint32_t tobe) + { + if (curr < tobe) { + Exiv2::DataBuf buf(tobe - curr); + memset(buf.pData_, 0x0, buf.size_); + ioWrapper.write(buf.pData_, buf.size_); + return tobe - curr; + } + return 0; + + } // fillGap +} diff --git a/vendor/exiv2-0.25/src/tiffcomposite_int.hpp b/vendor/exiv2-0.25/src/tiffcomposite_int.hpp new file mode 100644 index 0000000..f24474e --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffcomposite_int.hpp @@ -0,0 +1,1670 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tiffcomposite_int.hpp + @brief Internal classes used in a TIFF composite structure + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 11-Apr-06, ahu: created + */ +#ifndef TIFFCOMPOSITE_INT_HPP_ +#define TIFFCOMPOSITE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "value.hpp" +#include "tifffwd_int.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + + class BasicIo; + + namespace Internal { + +// ***************************************************************************** +// class definitions + + //! TIFF value type. + typedef uint16_t TiffType; + + const TiffType ttUnsignedByte = 1; //!< Exif BYTE type + const TiffType ttAsciiString = 2; //!< Exif ASCII type + const TiffType ttUnsignedShort = 3; //!< Exif SHORT type + const TiffType ttUnsignedLong = 4; //!< Exif LONG type + const TiffType ttUnsignedRational = 5; //!< Exif RATIONAL type + const TiffType ttSignedByte = 6; //!< Exif SBYTE type + const TiffType ttUndefined = 7; //!< Exif UNDEFINED type + const TiffType ttSignedShort = 8; //!< Exif SSHORT type + const TiffType ttSignedLong = 9; //!< Exif SLONG type + const TiffType ttSignedRational =10; //!< Exif SRATIONAL type + const TiffType ttTiffFloat =11; //!< TIFF FLOAT type + const TiffType ttTiffDouble =12; //!< TIFF DOUBLE type + const TiffType ttTiffIfd =13; //!< TIFF IFD type + + //! Convert the \em tiffType of a \em tag and \em group to an Exiv2 \em typeId. + TypeId toTypeId(TiffType tiffType, uint16_t tag, IfdId group); + //! Convert the %Exiv2 \em typeId to a TIFF value type. + TiffType toTiffType(TypeId typeId); + + /*! + Special TIFF tags for the use in TIFF structures only + */ + namespace Tag { + const uint32_t none = 0x10000; //!< Dummy tag + const uint32_t root = 0x20000; //!< Special tag: root IFD + const uint32_t next = 0x30000; //!< Special tag: next IFD + const uint32_t all = 0x40000; //!< Special tag: all tags in a group + const uint32_t pana = 0x80000; //!< Special tag: root IFD of Panasonic RAW images + } + + /*! + @brief A tupel consisting of extended Tag and group used as an item in + TIFF paths. + */ + class TiffPathItem { + public: + //! @name Creators + //@{ + //! Constructor + TiffPathItem(uint32_t extendedTag, IfdId group) + : extendedTag_(extendedTag), group_(group) {} + //@} + + //! @name Accessors + //@{ + //! Return the tag corresponding to the extended tag + uint16_t tag() const { return static_cast(extendedTag_ & 0xffff); } + //! Return the extended tag (32 bit so that it can contain special tags) + uint32_t extendedTag() const { return extendedTag_; } + //! Return the group + IfdId group() const { return group_; } + //@} + + private: + // DATA + uint32_t extendedTag_; + IfdId group_; + }; // class TiffPathItem + + /*! + @brief Simple IO wrapper to ensure that the header is only written if there is + any other data at all. + + The wrapper is initialized with an IO reference and a pointer to a TIFF header. + Subsequently the wrapper is used by all TIFF write methods. It takes care that + the TIFF header is written to the IO first before any other output and only if + there is any other data. + */ + class IoWrapper { + public: + //! @name Creators + //@{ + /*! + brief Constructor. + + The IO wrapper owns none of the objects passed in so the caller is + responsible to keep them alive. + */ + IoWrapper(BasicIo& io, const byte* pHeader, long size, OffsetWriter* pow); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Wraps the corresponding BasicIo::write() method. + + Writes the TIFF header to the IO, if it hasn't been written yet, followed + by the data passed in the arguments. + */ + long write(const byte* pData, long wcount); + /*! + @brief Wraps the corresponding BasicIo::putb() method. + + Writes the TIFF header to the IO, if it hasn't been written yet, followed + by the data passed in the argument. + */ + int putb(byte data); + //! Wrapper for OffsetWriter::setTarget(), using an int instead of the enum to reduce include deps + void setTarget(int id, uint32_t target); + //@} + + private: + // DATA + BasicIo& io_; //! Reference for the IO instance. + const byte* pHeader_; //! Pointer to the header data. + long size_; //! Size of the header data. + bool wroteHeader_; //! Indicates if the header has been written. + OffsetWriter* pow_; //! Pointer to an offset-writer, if any, or 0 + }; // class IoWrapper + + /*! + @brief Interface class for components of a TIFF directory hierarchy + (Composite pattern). Both TIFF directories as well as entries + implement this interface. A component can be uniquely identified + by a tag, group tupel. This class is implemented as a NVI + (Non-Virtual Interface) and it has an interface for visitors + (Visitor pattern) to perform operations on all components. + */ + class TiffComponent { + public: + //! TiffComponent auto_ptr type + typedef std::auto_ptr AutoPtr; + //! Container type to hold all metadata + typedef std::vector Components; + + //! @name Creators + //@{ + //! Constructor + TiffComponent(uint16_t tag, IfdId group); + //! Virtual destructor. + virtual ~TiffComponent(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Add a TIFF entry \em tag to the component. Components on + the path to the entry are added if they don't exist yet. + + @param tag The tag of the new entry + @param tiffPath A path from the TIFF root element to a TIFF entry. + @param pRoot Pointer to the root component of the TIFF composite. + @param object TIFF component to add. If 0, the correct entry will be + created. + + @return A pointer to the newly added TIFF entry. + */ + TiffComponent* addPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + AutoPtr object =AutoPtr(0)); + /*! + @brief Add a child to the component. Default is to do nothing. + @param tiffComponent Auto pointer to the component to add. + @return Return a pointer to the newly added child element or 0. + */ + TiffComponent* addChild(AutoPtr tiffComponent); + /*! + @brief Add a "next" component to the component. Default is to do + nothing. + @param tiffComponent Auto pointer to the component to add. + @return Return a pointer to the newly added "next" element or 0. + */ + TiffComponent* addNext(AutoPtr tiffComponent); + /*! + @brief Interface to accept visitors (Visitor pattern). Visitors + can perform operations on all components of the composite. + + @param visitor The visitor. + */ + void accept(TiffVisitor& visitor); + /*! + @brief Set a pointer to the start of the binary representation of the + component in a memory buffer. The buffer must be allocated and + freed outside of this class. + */ + void setStart(const byte* pStart) { pStart_ = const_cast(pStart); } + /*! + @brief Write a TiffComponent to a binary image. + + @param ioWrapper IO wrapper to which the TiffComponent is written. + @param byteOrder Applicable byte order (little or big endian). + @param offset Offset from the start of the image (TIFF header) to + the component. + @param valueIdx Index of the component to be written relative to offset. + @param dataIdx Index of the data area of the component relative to offset. + @param imageIdx Index of the image data area relative to offset. + @return Number of bytes written to the IO wrapper including all + nested components. + @throw Error If the component cannot be written. + */ + uint32_t write(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Accessors + //@{ + //! Return the tag of this entry. + uint16_t tag() const { return tag_; } + //! Return the group id of this component + IfdId group() const { return group_; } + //! Return a pointer to the start of the binary representation of the component + byte* start() const { return pStart_; } + /*! + @brief Return an auto-pointer to a copy of itself (deep copy, but + without any children). The caller owns this copy and the + auto-pointer ensures that it will be deleted. + */ + AutoPtr clone() const; + /*! + @brief Write the IFD data of this component to a binary image. + Return the number of bytes written. Components derived from + TiffEntryBase implement this method if needed. + */ + uint32_t writeData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + /*! + @brief Write the image data of this component to a binary image. + Return the number of bytes written. TIFF components implement + this method if needed. + */ + uint32_t writeImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const; + /*! + @brief Return the size in bytes of the IFD value of this component + when written to a binary image. + */ + uint32_t size() const; + /*! + @brief Return the number of components in this component. + */ + uint32_t count() const; + /*! + @brief Return the size in bytes of the IFD data of this component when + written to a binary image. This is a support function for + write(). Components derived from TiffEntryBase implement this + method corresponding to their implementation of writeData(). + */ + uint32_t sizeData() const; + /*! + @brief Return the size in bytes of the image data of this component + when written to a binary image. This is a support function for + write(). TIFF components implement this method corresponding to + their implementation of writeImage(). + */ + uint32_t sizeImage() const; + /*! + @brief Return the unique id of the entry in the image. + */ + // Todo: This is only implemented in TiffEntryBase. It is needed here so that + // we can sort components by tag and idx. Something is not quite right. + virtual int idx() const; + //@} + + protected: + //! @name Protected Manipulators + //@{ + //! Implements addPath(). The default implementation does nothing. + virtual TiffComponent* doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object); + //! Implements addChild(). The default implementation does nothing. + virtual TiffComponent* doAddChild(AutoPtr tiffComponent); + //! Implements addNext(). The default implementation does nothing. + virtual TiffComponent* doAddNext(AutoPtr tiffComponent); + //! Implements accept(). + virtual void doAccept(TiffVisitor& visitor) =0; + //! Implements write(). + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) =0; + //@} + + //! @name Protected Accessors + //@{ + //! Internal virtual copy constructor, implements clone(). + virtual TiffComponent* doClone() const =0; + //! Implements writeData(). + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const =0; + //! Implements writeImage(). + virtual uint32_t doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const =0; + //! Implements size(). + virtual uint32_t doSize() const =0; + //! Implements count(). + virtual uint32_t doCount() const =0; + //! Implements sizeData(). + virtual uint32_t doSizeData() const =0; + //! Implements sizeImage(). + virtual uint32_t doSizeImage() const =0; + //@} + + private: + // DATA + uint16_t tag_; //!< Tag that identifies the component + IfdId group_; //!< Group id for this component + /*! + Pointer to the start of the binary representation of the component in + a memory buffer. The buffer is allocated and freed outside of this class. + */ + byte* pStart_; + + }; // class TiffComponent + + //! TIFF mapping table for functions to decode special cases + struct TiffMappingInfo { + struct Key; + /*! + @brief Compare a TiffMappingInfo with a TiffMappingInfo::Key. + The two are equal if TiffMappingInfo::make_ equals a substring + of the key of the same size. E.g., mapping info = "OLYMPUS", + key = "OLYMPUS OPTICAL CO.,LTD" (found in the image) match, + the extendedTag is Tag::all or equal to the extended tag of the + key, and the group is equal to that of the key. + */ + bool operator==(const Key& key) const; + //! Return the tag corresponding to the extended tag + uint16_t tag() const { return static_cast(extendedTag_ & 0xffff); } + + // DATA + const char* make_; //!< Camera make for which these mapping functions apply + uint32_t extendedTag_; //!< Tag (32 bit so that it can contain special tags) + IfdId group_; //!< Group that contains the tag + DecoderFct decoderFct_; //!< Decoder function for matching tags + EncoderFct encoderFct_; //!< Encoder function for matching tags + + }; // struct TiffMappingInfo + + //! Search key for TIFF mapping structures. + struct TiffMappingInfo::Key { + //! Constructor + Key(const std::string& m, uint32_t e, IfdId g) : m_(m), e_(e), g_(g) {} + std::string m_; //!< Camera make + uint32_t e_; //!< Extended tag + IfdId g_; //!< %Group + }; + + /*! + @brief This abstract base class provides the common functionality of an + IFD directory entry and defines an extended interface for derived + concrete entries, which allows access to the attributes of the + entry. + */ + class TiffEntryBase : public TiffComponent { + friend class TiffReader; + friend class TiffEncoder; + friend int selectNikonLd(TiffBinaryArray* const, TiffComponent* const); + public: + //! @name Creators + //@{ + //! Default constructor. + TiffEntryBase(uint16_t tag, IfdId group, TiffType tiffType =ttUndefined); + //! Virtual destructor. + virtual ~TiffEntryBase(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Encode a TIFF component from the metadatum provided and + information from the \em encoder as needed. + + Implemented as double-dispatch calls back to one of the specific + encoding functions at the \em encoder. + */ + void encode(TiffEncoder& encoder, const Exifdatum* datum); + //! Set the offset + void setOffset(int32_t offset) { offset_ = offset; } + //! Set pointer and size of the entry's data (not taking ownership of the data). + void setData(byte* pData, int32_t size); + //! Set the entry's data buffer, taking ownership of the data buffer passed in. + void setData(DataBuf buf); + /*! + @brief Update the value. Takes ownership of the pointer passed in. + + Update binary value data and call setValue(). + */ + void updateValue(Value::AutoPtr value, ByteOrder byteOrder); + /*! + @brief Set tag value. Takes ownership of the pointer passed in. + + Update type, count and the pointer to the value. + */ + void setValue(Value::AutoPtr value); + //@} + + //! @name Accessors + //@{ + //! Return the TIFF type + TiffType tiffType() const { return tiffType_; } + /*! + @brief Return the offset to the data area relative to the base + for the component (usually the start of the TIFF header) + */ + int32_t offset() const { return offset_; } + /*! + @brief Return the unique id of the entry in the image + */ + virtual int idx() const; + /*! + @brief Return a pointer to the binary representation of the + value of this component. + */ + const byte* pData() const { return pData_; } + //! Return a const pointer to the converted value of this component + const Value* pValue() const { return pValue_; } + //@} + + protected: + //! @name Protected Creators + //@{ + //! Copy constructor (used to implement clone()). + TiffEntryBase(const TiffEntryBase& rhs); + //@} + + //! @name Protected Manipulators + //@{ + //! Implements encode(). + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum) =0; + //! Set the number of components in this entry + void setCount(uint32_t count) { count_ = count; } + //! Set the unique id of the entry in the image + void setIdx(int idx) { idx_ = idx; } + /*! + @brief Implements write(). Write the value of a standard TIFF entry to + the \em ioWrapper, return the number of bytes written. Only the + \em ioWrapper and \em byteOrder arguments are used. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + //! Implements count(). + virtual uint32_t doCount() const; + /*! + @brief Implements writeData(). Standard TIFF entries have no data: + write nothing and return 0. + */ + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + /*! + @brief Implements writeImage(). Standard TIFF entries have no image data: + write nothing and return 0. + */ + virtual uint32_t doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const; + //! Implements size(). Return the size of a standard TIFF entry + virtual uint32_t doSize() const; + //! Implements sizeData(). Return 0. + virtual uint32_t doSizeData() const; + //! Implements sizeImage(). Return 0. + virtual uint32_t doSizeImage() const; + //@} + + //! Helper function to write an \em offset to a preallocated binary buffer + static uint32_t writeOffset(byte* buf, + int32_t offset, + TiffType tiffType, + ByteOrder byteOrder); + + private: + //! @name NOT implemented + //@{ + //! Assignment operator. + TiffEntryBase& operator=(const TiffEntryBase& rhs); + //@} + + // DATA + TiffType tiffType_; //!< Field TIFF type + uint32_t count_; //!< The number of values of the indicated type + int32_t offset_; //!< Offset to the data area + /*! + Size of the data buffer holding the value in bytes, there is no + minimum size. + */ + uint32_t size_; + byte* pData_; //!< Pointer to the data area + bool isMalloced_; //!< True if this entry owns the value data + int idx_; //!< Unique id of the entry in the image + Value* pValue_; //!< Converted data value + + }; // class TiffEntryBase + + /*! + @brief A standard TIFF IFD entry. + */ + class TiffEntry : public TiffEntryBase { + public: + //! @name Creators + //@{ + //! Constructor + TiffEntry(uint16_t tag, IfdId group) : TiffEntryBase(tag, group) {} + //! Virtual destructor. + virtual ~TiffEntry(); + //@} + + protected: + //! @name Manipulators + //@{ + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffEntry* doClone() const; + //@} + + }; // class TiffEntry + + /*! + @brief Interface for a standard TIFF IFD entry consisting of a value + which is a set of offsets to a data area. The sizes of these "strips" + are provided in a related TiffSizeEntry, tag and group of which are + set in the constructor. The implementations of this interface differ + in whether the data areas are extracted to the higher level metadata + (TiffDataEntry) or not (TiffImageEntry). + */ + class TiffDataEntryBase : public TiffEntryBase { + public: + //! @name Creators + //@{ + //! Constructor + TiffDataEntryBase(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) + : TiffEntryBase(tag, group), + szTag_(szTag), szGroup_(szGroup) {} + //! Virtual destructor. + virtual ~TiffDataEntryBase(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Set the data areas ("strips"). + + @param pSize Pointer to the Value holding the sizes corresponding + to this data entry. + @param pData Pointer to the data area. + @param sizeData Size of the data area. + @param baseOffset Base offset into the data area. + */ + virtual void setStrips(const Value* pSize, + const byte* pData, + uint32_t sizeData, + uint32_t baseOffset) =0; + //@} + + //! @name Accessors + //@{ + //! Return the group of the entry which has the size + uint16_t szTag() const { return szTag_; } + //! Return the group of the entry which has the size + IfdId szGroup() const { return szGroup_; } + //@} + + private: + // DATA + const uint16_t szTag_; //!< Tag of the entry with the size + const IfdId szGroup_; //!< Group of the entry with the size + + }; // class TiffDataEntryBase + + /*! + @brief A standard TIFF IFD entry consisting of a value which is an offset + to a data area and the data area. The size of the data area is + provided in a related TiffSizeEntry, tag and group of which are set + in the constructor. + + This component extracts the data areas ("strips") and makes them + available in the higher level metadata. It is used, e.g., for + \em Exif.Thumbnail.JPEGInterchangeFormat for which the size + is provided in \em Exif.Thumbnail.JPEGInterchangeFormatLength. + */ + class TiffDataEntry : public TiffDataEntryBase { + friend class TiffEncoder; + public: + //! @name Creators + //@{ + //! Constructor + TiffDataEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) + : TiffDataEntryBase(tag, group, szTag, szGroup), + pDataArea_(0), sizeDataArea_(0) {} + //! Virtual destructor. + virtual ~TiffDataEntry(); + //@} + + //! @name Manipulators + //@{ + virtual void setStrips(const Value* pSize, + const byte* pData, + uint32_t sizeData, + uint32_t baseOffset); + //@} + + protected: + //! @name Protected Manipulators + //@{ + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + /*! + @brief Implements write(). Write pointers into the data area to the + \em ioWrapper, relative to the offsets in the value. Return the + number of bytes written. The \em valueIdx argument is not used. + + The number of components in the value determines how many offsets are + written. Set the first value to 0, the second to the size of the first + data area, etc. when creating a new data entry. Offsets will be adjusted + on write. The type of the value can only be signed or unsigned short or + long. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffDataEntry* doClone() const; + /*! + @brief Implements writeData(). Write the data area to the \em ioWrapper. + Return the number of bytes written. + */ + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + // Using doWriteImage from base class + // Using doSize() from base class + //! Implements sizeData(). Return the size of the data area. + virtual uint32_t doSizeData() const; + // Using doSizeImage from base class + //@} + + private: + // DATA + byte* pDataArea_; //!< Pointer to the data area (never alloc'd) + uint32_t sizeDataArea_; //!< Size of the data area + + }; // class TiffDataEntry + + /*! + @brief A standard TIFF IFD entry consisting of a value which is an array + of offsets to image data areas. The sizes of the image data areas are + provided in a related TiffSizeEntry, tag and group of which are set + in the constructor. + + The data is not extracted into the higher level metadata tags, it is + only copied to the target image when the image is written. + This component is used, e.g., for + \em Exif.Image.StripOffsets for which the sizes are provided in + \em Exif.Image.StripByteCounts. + */ + class TiffImageEntry : public TiffDataEntryBase { + friend class TiffEncoder; + public: + //! @name Creators + //@{ + //! Constructor + TiffImageEntry(uint16_t tag, IfdId group, uint16_t szTag, IfdId szGroup) + : TiffDataEntryBase(tag, group, szTag, szGroup) {} + //! Virtual destructor. + virtual ~TiffImageEntry(); + //@} + + //! @name Manipulators + //@{ + virtual void setStrips(const Value* pSize, + const byte* pData, + uint32_t sizeData, + uint32_t baseOffset); + //@} + + protected: + //! @name Protected Manipulators + //@{ + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + /*! + @brief Implements write(). Write pointers into the image data area to the + \em ioWrapper. Return the number of bytes written. The \em valueIdx + and \em dataIdx arguments are not used. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffImageEntry* doClone() const; + /*! + @brief Implements writeData(). Write the image data area to the \em ioWrapper. + Return the number of bytes written. + + This function writes the image data to the data area of the current + directory. It is used for TIFF image entries in the makernote (large + preview images) so that the image data remains in the makernote IFD. + */ + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + /*! + @brief Implements writeImage(). Write the image data area to the \em ioWrapper. + Return the number of bytes written. + */ + virtual uint32_t doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const; + //! Implements size(). Return the size of the strip pointers. + virtual uint32_t doSize() const; + //! Implements sizeData(). Return the size of the image data area. + virtual uint32_t doSizeData() const; + //! Implements sizeImage(). Return the size of the image data area. + virtual uint32_t doSizeImage() const; + //@} + + private: + //! Pointers to the image data (strips) and their sizes. + typedef std::vector > Strips; + + // DATA + Strips strips_; //!< Image strips data (never alloc'd) and sizes + + }; // class TiffImageEntry + + /*! + @brief A TIFF IFD entry containing the size of a data area of a related + TiffDataEntry. This component is used, e.g. for + \em Exif.Thumbnail.JPEGInterchangeFormatLength, which contains the + size of \em Exif.Thumbnail.JPEGInterchangeFormat. + */ + class TiffSizeEntry : public TiffEntryBase { + public: + //! @name Creators + //@{ + //! Constructor + TiffSizeEntry(uint16_t tag, IfdId group, uint16_t dtTag, IfdId dtGroup) + : TiffEntryBase(tag, group), dtTag_(dtTag), dtGroup_(dtGroup) {} + //! Virtual destructor. + virtual ~TiffSizeEntry(); + //@} + + //! @name Accessors + //@{ + //! Return the group of the related entry which has the data area + uint16_t dtTag() const { return dtTag_; } + //! Return the group of the related entry which has the data area + IfdId dtGroup() const { return dtGroup_; } + //@} + + protected: + //! @name Protected Manipulators + //@{ + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffSizeEntry* doClone() const; + //@} + + private: + // DATA + const uint16_t dtTag_; //!< Tag of the entry with the data area + const IfdId dtGroup_; //!< Group of the entry with the data area + + }; // class TiffSizeEntry + + /*! + @brief This class models a TIFF directory (%Ifd). It is a composite + component of the TIFF tree. + */ + class TiffDirectory : public TiffComponent { + friend class TiffEncoder; + public: + //! @name Creators + //@{ + //! Default constructor + TiffDirectory(uint16_t tag, IfdId group, bool hasNext =true) + : TiffComponent(tag, group), hasNext_(hasNext), pNext_(0) {} + //! Virtual destructor + virtual ~TiffDirectory(); + //@} + + //! @name Accessors + //@{ + //! Return true if the directory has a next pointer + bool hasNext() const { return hasNext_; } + //@} + + protected: + //! @name Protected Creators + //@{ + //! Copy constructor (used to implement clone()). + TiffDirectory(const TiffDirectory& rhs); + //@} + + //! @name Protected Manipulators + //@{ + virtual TiffComponent* doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object); + virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); + virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent); + virtual void doAccept(TiffVisitor& visitor); + /*! + @brief Implements write(). Write the TIFF directory, values and + additional data, including the next-IFD, if any, to the + \em ioWrapper, return the number of bytes written. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffDirectory* doClone() const; + /*! + @brief This class does not really implement writeData(), it only has + write(). This method must not be called; it commits suicide. + */ + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + /*! + @brief Implements writeImage(). Write the image data of the TIFF + directory to the \em ioWrapper by forwarding the call to each + component as well as the next-IFD, if there is any. Return the + number of bytes written. + */ + virtual uint32_t doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const; + /*! + @brief Implements size(). Return the size of the TIFF directory, + values and additional data, including the next-IFD, if any. + */ + virtual uint32_t doSize() const; + /*! + @brief Implements count(). Return the number of entries in the TIFF + directory. Does not count entries which are marked as deleted. + */ + virtual uint32_t doCount() const; + /*! + @brief This class does not really implement sizeData(), it only has + size(). This method must not be called; it commits suicide. + */ + virtual uint32_t doSizeData() const; + /*! + @brief Implements sizeImage(). Return the sum of the image sizes of + all components plus that of the next-IFD, if there is any. + */ + virtual uint32_t doSizeImage() const; + //@} + + private: + //! @name NOT implemented + //@{ + //! Assignment operator. + TiffDirectory& operator=(const TiffDirectory& rhs); + //@} + + //! @name Private Accessors + //@{ + //! Write a binary directory entry for a TIFF component. + uint32_t writeDirEntry(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + TiffComponent* pTiffComponent, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx) const; + //@} + + private: + // DATA + Components components_; //!< List of components in this directory + const bool hasNext_; //!< True if the directory has a next pointer + TiffComponent* pNext_; //!< Pointer to the next IFD + + }; // class TiffDirectory + + /*! + @brief This class models a TIFF sub-directory (sub-IFD). A sub-IFD + is an entry with one or more values that are pointers to IFD + structures containing an IFD. The TIFF standard defines + some important tags to be sub-IFDs, including the %Exif and + GPS tags. + */ + class TiffSubIfd : public TiffEntryBase { + friend class TiffReader; + public: + //! @name Creators + //@{ + //! Default constructor + TiffSubIfd(uint16_t tag, IfdId group, IfdId newGroup); + //! Virtual destructor + virtual ~TiffSubIfd(); + //@} + + protected: + //! @name Protected Creators + //@{ + //! Copy constructor (used to implement clone()). + TiffSubIfd(const TiffSubIfd& rhs); + //@} + + //! @name Protected Manipulators + //@{ + virtual TiffComponent* doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object); + virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + /*! + @brief Implements write(). Write the sub-IFD pointers to the \em ioWrapper, + return the number of bytes written. The \em valueIdx and + \em imageIdx arguments are not used. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffSubIfd* doClone() const; + /*! + @brief Implements writeData(). Write the sub-IFDs to the \em ioWrapper. + Return the number of bytes written. + */ + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + /*! + @brief Implements writeImage(). Write the image data of each sub-IFD to + the \em ioWrapper. Return the number of bytes written. + */ + virtual uint32_t doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const; + //! Implements size(). Return the size of the sub-Ifd pointers. + uint32_t doSize() const; + //! Implements sizeData(). Return the sum of the sizes of all sub-IFDs. + virtual uint32_t doSizeData() const; + //! Implements sizeImage(). Return the sum of the image sizes of all sub-IFDs. + virtual uint32_t doSizeImage() const; + //@} + + private: + //! @name NOT implemented + //@{ + //! Assignment operator. + TiffSubIfd& operator=(const TiffSubIfd& rhs); + //@} + + //! A collection of TIFF directories (IFDs) + typedef std::vector Ifds; + + // DATA + IfdId newGroup_; //!< Start of the range of group numbers for the sub-IFDs + Ifds ifds_; //!< The subdirectories + + }; // class TiffSubIfd + + /*! + @brief This class is the basis for Makernote support in TIFF. It contains + a pointer to a concrete Makernote. The TiffReader visitor has the + responsibility to create the correct Make/Model specific Makernote + for a particular TIFF file. Calls to child management methods are + forwarded to the concrete Makernote, if there is one. + */ + class TiffMnEntry : public TiffEntryBase { + friend class TiffReader; + friend class TiffDecoder; + friend class TiffEncoder; + public: + //! @name Creators + //@{ + //! Default constructor + TiffMnEntry(uint16_t tag, IfdId group, IfdId mnGroup); + //! Virtual destructor + virtual ~TiffMnEntry(); + //@} + + protected: + //! @name Protected Manipulators + //@{ + virtual TiffComponent* doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object); + virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); + virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent); + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + /*! + @brief Implements write() by forwarding the call to the actual + concrete Makernote, if there is one. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffMnEntry* doClone() const; + //! Implements count(). Return number of components in the entry. + virtual uint32_t doCount() const; + // Using doWriteData from base class + // Using doWriteImage from base class + /*! + @brief Implements size() by forwarding the call to the actual + concrete Makernote, if there is one. + */ + virtual uint32_t doSize() const; + // Using doSizeData from base class + // Using doSizeImage from base class + //@} + + private: + //! @name NOT implemented + //@{ + //! Copy constructor. + TiffMnEntry(const TiffMnEntry& rhs); + //! Assignment operator. + TiffMnEntry& operator=(const TiffMnEntry& rhs); + //@} + + // DATA + IfdId mnGroup_; //!< New group for concrete mn + TiffComponent* mn_; //!< The Makernote + + }; // class TiffMnEntry + + /*! + @brief Tiff IFD Makernote. This is a concrete class suitable for all + IFD makernotes. + + Contains a makernote header (which can be 0) and an IFD and + implements child mgmt functions to deal with the IFD entries. The + various makernote weirdnesses are taken care of in the makernote + header (and possibly in special purpose IFD entries). + */ + class TiffIfdMakernote : public TiffComponent { + friend class TiffReader; + public: + //! @name Creators + //@{ + //! Default constructor + TiffIfdMakernote(uint16_t tag, + IfdId group, + IfdId mnGroup, + MnHeader* pHeader, + bool hasNext =true); + //! Virtual destructor + virtual ~TiffIfdMakernote(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Read the header from a data buffer, return true if successful. + + The default implementation simply returns true. + */ + bool readHeader(const byte* pData, uint32_t size, ByteOrder byteOrder); + /*! + @brief Set the byte order for the makernote. + */ + void setByteOrder(ByteOrder byteOrder); + /*! + @brief Set the byte order used for the image. + */ + void setImageByteOrder(ByteOrder byteOrder) { imageByteOrder_ = byteOrder; } + //@} + + //! @name Accessors + //@{ + //! Return the size of the header in bytes. + uint32_t sizeHeader() const; + //! Write the header to a data buffer, return the number of bytes written. + uint32_t writeHeader(IoWrapper& ioWrapper, ByteOrder byteOrder) const; + /*! + @brief Return the offset to the makernote from the start of the + TIFF header. + */ + uint32_t mnOffset() const; + /*! + @brief Return the offset to the start of the Makernote IFD from + the start of the Makernote. + Returns 0 if there is no header. + */ + uint32_t ifdOffset() const; + /*! + @brief Return the byte order for the makernote. Requires the image + byte order to be set (setImageByteOrder()). Returns the byte + order for the image if there is no header or the byte order for + the header is \c invalidByteOrder. + */ + ByteOrder byteOrder() const; + /*! + @brief Return the byte order used for the image. + */ + ByteOrder imageByteOrder() const { return imageByteOrder_; } + /*! + @brief Return the base offset for use with the makernote IFD entries + relative to the start of the TIFF header. + Returns 0 if there is no header. + */ + uint32_t baseOffset() const; + //@} + + protected: + //! @name Protected Manipulators + //@{ + virtual TiffComponent* doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object); + virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); + virtual TiffComponent* doAddNext(TiffComponent::AutoPtr tiffComponent); + virtual void doAccept(TiffVisitor& visitor); + /*! + @brief Implements write(). Write the Makernote header, TIFF directory, + values and additional data to the \em ioWrapper, return the + number of bytes written. + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffIfdMakernote* doClone() const; + /*! + @brief This class does not really implement writeData(), it only has + write(). This method must not be called; it commits suicide. + */ + virtual uint32_t doWriteData(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t dataIdx, + uint32_t& imageIdx) const; + /*! + @brief Implements writeImage(). Write the image data of the IFD of + the Makernote. Return the number of bytes written. + */ + virtual uint32_t doWriteImage(IoWrapper& ioWrapper, + ByteOrder byteOrder) const; + /*! + @brief Implements size(). Return the size of the Makernote header, + TIFF directory, values and additional data. + */ + virtual uint32_t doSize() const; + /*! + @brief Implements count(). Return the number of entries in the IFD + of the Makernote. Does not count entries which are marked as + deleted. + */ + virtual uint32_t doCount() const; + /*! + @brief This class does not really implement sizeData(), it only has + size(). This method must not be called; it commits suicide. + */ + virtual uint32_t doSizeData() const; + /*! + @brief Implements sizeImage(). Return the total image data size of the + makernote IFD. + */ + virtual uint32_t doSizeImage() const; + //@} + + private: + /*! + @name NOT implemented + + Implementing the copy constructor and assignment operator will require + cloning the header, i.e., clone() functionality on the MnHeader + hierarchy. + */ + //@{ + //! Copy constructor. + TiffIfdMakernote(const TiffIfdMakernote& rhs); + //! Assignment operator. + TiffIfdMakernote& operator=(const TiffIfdMakernote& rhs); + //@} + + // DATA + MnHeader* pHeader_; //!< Makernote header + TiffDirectory ifd_; //!< Makernote IFD + uint32_t mnOffset_; //!< Makernote offset + ByteOrder imageByteOrder_; //!< Byte order for the image + + }; // class TiffIfdMakernote + + /*! + @brief Function pointer type for a function to determine which cfg + def + of a corresponding array set to use. + */ + typedef int (*CfgSelFct)(uint16_t, const byte*, uint32_t, TiffComponent* const); + + //! Function pointer type for a crypt function used for binary arrays. + typedef DataBuf (*CryptFct)(uint16_t, const byte*, uint32_t, TiffComponent* const); + + //! Defines one tag in a binary array + struct ArrayDef { + //! Comparison with idx + bool operator==(uint32_t idx) const { return idx_ == idx; } + //! Get the size in bytes of a tag. + uint32_t size(uint16_t tag, IfdId group) const; + // DATA + uint32_t idx_; //!< Index in bytes from the start + TiffType tiffType_; //!< TIFF type of the element + uint32_t count_; //!< Number of components + }; + + //! Additional configuration for a binary array. + struct ArrayCfg { + /*! + @brief Return the size of the default tag, which is used + to calculate tag numbers as idx/tagStep + */ + uint32_t tagStep() const { return elDefaultDef_.size(0, group_); } + //DATA + IfdId group_; //!< Group for the elements + ByteOrder byteOrder_; //!< Byte order, invalidByteOrder to inherit + TiffType elTiffType_; //!< Type for the array entry and the size element, if any + CryptFct cryptFct_; //!< Crypt function, 0 if not used + bool hasSize_; //!< If true, first tag is the size element + bool hasFillers_; //!< If true, write all defined tags + bool concat_; //!< If true, concatenate gaps between defined tags to single tags + ArrayDef elDefaultDef_; //!< Default element + }; + + //! Combination of array configuration and definition for arrays + struct ArraySet { + const ArrayCfg cfg_; //!< Binary array configuration + const ArrayDef* def_; //!< Binary array definition array + const int defSize_; //!< Size of the array definition array + }; + + /*! + @brief Composite to model an array of different tags. The tag types as well + as other aspects of the array are configurable. The elements of this + component are of type TiffBinaryElement. + */ + class TiffBinaryArray : public TiffEntryBase { + public: + //! @name Creators + //@{ + //! Constructor + TiffBinaryArray(uint16_t tag, + IfdId group, + const ArrayCfg* arrayCfg, + const ArrayDef* arrayDef, + int defSize); + //! Constructor for a complex binary array + TiffBinaryArray(uint16_t tag, + IfdId group, + const ArraySet* arraySet, + int setSize, + CfgSelFct cfgSelFct); + //! Virtual destructor + virtual ~TiffBinaryArray(); + //@} + + //! @name Manipulators + //@{ + //! Add an element to the binary array, return the size of the element + uint32_t addElement(uint32_t idx, const ArrayDef& def); + /*! + @brief Setup cfg and def for the component, in case of a complex binary array. + Else do nothing. Return true if the initialization succeeded, else false. + + This version of initialize() is used during intrusive writing. It determines the + correct settings based on the \em group passed in (which is the group of the first + tag that is added to the array). It doesn't require cfgSelFct_. + + @param group Group to setup the binary array for. + @return true if the initialization succeeded, else false. + */ + bool initialize(IfdId group); + /*! + @brief Setup cfg and def for the component, in case of a complex binary array. + Else do nothing. Return true if the initialization succeeded, else false. + + This version of initialize() is used for reading and non-intrusive writing. It + calls cfgSelFct_ to determine the correct settings. + + @param pRoot Pointer to the root component of the TIFF tree. + @return true if the initialization succeeded, else false. + */ + bool initialize(TiffComponent* const pRoot); + //! Initialize the original data buffer and its size from the base entry. + void iniOrigDataBuf(); + //! Update the original data buffer and its size, return true if successful. + bool updOrigDataBuf(const byte* pData, uint32_t size); + //! Set a flag to indicate if the array was decoded + void setDecoded(bool decoded) { decoded_ = decoded; } + //@} + + //! @name Accessors + //@{ + //! Return a pointer to the configuration + const ArrayCfg* cfg() const { return arrayCfg_; } + //! Return a pointer to the definition + const ArrayDef* def() const { return arrayDef_; } + //! Return the number of elements in the definition + int defSize() const { return defSize_; } + //! Return the flag which indicates if the array was decoded + bool decoded() const { return decoded_; } + //@} + + protected: + //! @name Protected Creators + //@{ + //! Copy constructor (used to implement clone()). + TiffBinaryArray(const TiffBinaryArray& rhs); + //@} + + //! @name Protected Manipulators + //@{ + /*! + @brief Implements addPath(). Todo: Document it! + */ + virtual TiffComponent* doAddPath(uint16_t tag, + TiffPath& tiffPath, + TiffComponent* const pRoot, + TiffComponent::AutoPtr object); + /*! + @brief Implements addChild(). Todo: Document it! + */ + virtual TiffComponent* doAddChild(TiffComponent::AutoPtr tiffComponent); + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + /*! + @brief Implements write(). Todo: Document it! + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffBinaryArray* doClone() const; + //! Implements count(). Todo: Document it! + virtual uint32_t doCount() const; + // Using doWriteData from base class + // Using doWriteImage from base class + /*! + @brief Implements size(). Todo: Document it! + */ + virtual uint32_t doSize() const; + // Using doSizeData from base class + // Using doSizeImage from base class + //@} + + private: + //! @name NOT implemented + //@{ + //! Assignment operator. + TiffBinaryArray& operator=(const TiffBinaryArray& rhs); + //@} + + // DATA + const CfgSelFct cfgSelFct_; //!< Pointer to a function to determine which cfg to use (may be 0) + const ArraySet* arraySet_; //!< Pointer to the array set, if any (may be 0) + const ArrayCfg* arrayCfg_; //!< Pointer to the array configuration (must not be 0, except for unrecognized complex binary arrays) + const ArrayDef* arrayDef_; //!< Pointer to the array definition (may be 0) + int defSize_; //!< Size of the array definition array (may be 0) + int setSize_; //!< Size of the array set (may be 0) + Components elements_; //!< List of elements in this composite + byte* origData_; //!< Pointer to the original data buffer (unencrypted) + uint32_t origSize_; //!< Size of the original data buffer + TiffComponent* pRoot_; //!< Pointer to the root component of the TIFF tree. (Only used for intrusive writing.) + bool decoded_; //!< Flag to indicate if the array was decoded + }; // class TiffBinaryArray + + /*! + @brief Element of a TiffBinaryArray. + */ + class TiffBinaryElement : public TiffEntryBase { + public: + //! @name Creators + //@{ + //! Constructor + TiffBinaryElement(uint16_t tag, IfdId group); + //! Virtual destructor. + virtual ~TiffBinaryElement(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Set the array definition for this element. + */ + void setElDef(const ArrayDef& def) { elDef_ = def; } + /*! + @brief Set the byte order of this element. + */ + void setElByteOrder(ByteOrder byteOrder) { elByteOrder_ = byteOrder; } + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the array definition of this element. + */ + const ArrayDef* elDef() const { return &elDef_; } + /*! + @brief Return the byte order of this element. + */ + ByteOrder elByteOrder() const { return elByteOrder_; } + //@} + + protected: + //! @name Protected Manipulators + //@{ + virtual void doAccept(TiffVisitor& visitor); + virtual void doEncode(TiffEncoder& encoder, const Exifdatum* datum); + /*! + @brief Implements write(). Todo: Document it! + */ + virtual uint32_t doWrite(IoWrapper& ioWrapper, + ByteOrder byteOrder, + int32_t offset, + uint32_t valueIdx, + uint32_t dataIdx, + uint32_t& imageIdx); + //@} + + //! @name Protected Accessors + //@{ + virtual TiffBinaryElement* doClone() const; + /*! + @brief Implements count(). Returns the count from the element definition. + */ + virtual uint32_t doCount() const; + // Using doWriteData from base class + // Using doWriteImage from base class + /*! + @brief Implements size(). Returns count * type-size, both taken from + the element definition. + */ + virtual uint32_t doSize() const; + // Using doSizeData from base class + // Using doSizeImage from base class + //@} + + private: + // DATA + ArrayDef elDef_; //!< The array element definition + ByteOrder elByteOrder_; //!< Byte order to read/write the element + + }; // class TiffBinaryElement + +// ***************************************************************************** +// template, inline and free functions + + /*! + @brief Compare two TIFF component pointers by tag. Return true if the tag + of component lhs is less than that of rhs. + */ + bool cmpTagLt(TiffComponent const* lhs, TiffComponent const* rhs); + + /*! + @brief Compare two TIFF component pointers by group. Return true if the + group of component lhs is less than that of rhs. + */ + bool cmpGroupLt(TiffComponent const* lhs, TiffComponent const* rhs); + + //! Function to create and initialize a new TIFF entry + TiffComponent::AutoPtr newTiffEntry(uint16_t tag, IfdId group); + + //! Function to create and initialize a new TIFF makernote entry + TiffComponent::AutoPtr newTiffMnEntry(uint16_t tag, IfdId group); + + //! Function to create and initialize a new binary array element + TiffComponent::AutoPtr newTiffBinaryElement(uint16_t tag, IfdId group); + + //! Function to create and initialize a new TIFF directory + template + TiffComponent::AutoPtr newTiffDirectory(uint16_t tag, IfdId /*group*/) + { + return TiffComponent::AutoPtr(new TiffDirectory(tag, newGroup)); + } + + //! Function to create and initialize a new TIFF sub-directory + template + TiffComponent::AutoPtr newTiffSubIfd(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr(new TiffSubIfd(tag, group, newGroup)); + } + + //! Function to create and initialize a new binary array entry + template + TiffComponent::AutoPtr newTiffBinaryArray0(uint16_t tag, IfdId group) + { + // *& acrobatics is a workaround for a MSVC 7.1 bug + return TiffComponent::AutoPtr( + new TiffBinaryArray(tag, group, arrayCfg, *(&arrayDef), N)); + } + + //! Function to create and initialize a new simple binary array entry + template + TiffComponent::AutoPtr newTiffBinaryArray1(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr( + new TiffBinaryArray(tag, group, arrayCfg, 0, 0)); + } + + //! Function to create and initialize a new complex binary array entry + template + TiffComponent::AutoPtr newTiffBinaryArray2(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr( + new TiffBinaryArray(tag, group, arraySet, N, cfgSelFct)); + } + + //! Function to create and initialize a new TIFF entry for a thumbnail (data) + template + TiffComponent::AutoPtr newTiffThumbData(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr( + new TiffDataEntry(tag, group, szTag, szGroup)); + } + + //! Function to create and initialize a new TIFF entry for a thumbnail (size) + template + TiffComponent::AutoPtr newTiffThumbSize(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr( + new TiffSizeEntry(tag, group, dtTag, dtGroup)); + } + + //! Function to create and initialize a new TIFF entry for image data + template + TiffComponent::AutoPtr newTiffImageData(uint16_t tag, IfdId group) + { + return TiffComponent::AutoPtr( + new TiffImageEntry(tag, group, szTag, szGroup)); + } + + //! Function to create and initialize a new TIFF entry for image data (size) + template + TiffComponent::AutoPtr newTiffImageSize(uint16_t tag, IfdId group) + { + // Todo: Same as newTiffThumbSize - consolidate (rename)? + return TiffComponent::AutoPtr( + new TiffSizeEntry(tag, group, dtTag, dtGroup)); + } + +}} // namespace Internal, Exiv2 + +#endif // #ifndef TIFFCOMPOSITE_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/tifffwd_int.hpp b/vendor/exiv2-0.25/src/tifffwd_int.hpp new file mode 100644 index 0000000..e9d9f54 --- /dev/null +++ b/vendor/exiv2-0.25/src/tifffwd_int.hpp @@ -0,0 +1,120 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tifffwd_int.hpp + @brief Internal TIFF parser related typedefs and forward definitions. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 24-Jun-06, ahu: created + */ +#ifndef TIFFFWD_INT_HPP_ +#define TIFFFWD_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "tags_int.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +// Exiv2 namespace extensions +namespace Exiv2 { + + class Exifdatum; + + namespace Internal { + + class TiffHeaderBase; + class TiffComponent; + class TiffEntryBase; + class TiffEntry; + class TiffDataEntry; + class TiffSizeEntry; + class TiffDirectory; + class TiffSubIfd; + class TiffMnEntry; + class TiffBinaryArray; + class TiffBinaryElement; + + class TiffIfdMakernote; + class MnHeader; + + class TiffVisitor; + class TiffFinder; + class TiffDecoder; + class TiffEncoder; + class TiffReader; + + class TiffRwState; + class TiffPathItem; + struct TiffMappingInfo; + + class IoWrapper; + class OffsetWriter; + +// ***************************************************************************** +// type definitions + + /*! + @brief Function pointer type for a TiffDecoder member function + to decode a TIFF component. + */ + typedef void (TiffDecoder::*DecoderFct)(const TiffEntryBase*); + /*! + @brief Function pointer type for a TiffDecoder member function + to decode a TIFF component. + */ + typedef void (TiffEncoder::*EncoderFct)(TiffEntryBase*, const Exifdatum*); + /*! + @brief Type for a function pointer for a function to decode a TIFF component. + */ + typedef DecoderFct (*FindDecoderFct)(const std::string& make, + uint32_t extendedTag, + IfdId group); + /*! + @brief Type for a function pointer for a function to encode a TIFF component. + */ + typedef EncoderFct (*FindEncoderFct)( + const std::string& make, + uint32_t extendedTag, + IfdId group + ); + /*! + @brief Type for a function pointer for a function to create a TIFF component. + Use TiffComponent::AutoPtr, it is not used in this declaration only + to reduce dependencies. + */ + typedef std::auto_ptr (*NewTiffCompFct)(uint16_t tag, IfdId group); + + //! Stack to hold a path from the TIFF root element to a TIFF entry + typedef std::stack TiffPath; + + //! Type for a list of primary image groups + typedef std::vector PrimaryGroups; + +}} // namespace Internal, Exiv2 + +#endif // #ifndef TIFFFWD_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/tiffimage.cpp b/vendor/exiv2-0.25/src/tiffimage.cpp new file mode 100644 index 0000000..a8d3313 --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffimage.cpp @@ -0,0 +1,2513 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: tiffimage.cpp + Version: $Rev: 3846 $ + Author(s): Andreas Huggel (ahu) + History: 15-Mar-06, ahu: created + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: tiffimage.cpp 3846 2015-06-08 14:39:59Z ahuggel $") + +// included header files +#include "config.h" + +#include "tiffimage.hpp" +#include "tiffimage_int.hpp" +#include "tiffcomposite_int.hpp" +#include "tiffvisitor_int.hpp" +#include "makernote_int.hpp" +#include "image.hpp" +#include "image_int.hpp" +#include "error.hpp" +#include "futils.hpp" +#include "types.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include +#include + +/* -------------------------------------------------------------------------- + + Todo: + + + CR2 Makernotes don't seem to have a next pointer but Canon Jpeg Makernotes + do. What a mess. (That'll become an issue when it comes to writing to CR2) + + Sony makernotes in RAW files do not seem to have header like those in Jpegs. + And maybe no next pointer either. + + in crwimage.* : + + + Fix CiffHeader according to TiffHeader + + Combine Error(15) and Error(33), add format argument %1 + + Search crwimage for todos, fix writeMetadata comment + + rename loadStack to getPath for consistency + + -------------------------------------------------------------------------- */ + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + using namespace Internal; + + TiffImage::TiffImage(BasicIo::AutoPtr io, bool /*create*/) + : Image(ImageType::tiff, mdExif | mdIptc | mdXmp, io), + pixelWidth_(0), pixelHeight_(0) + { + } // TiffImage::TiffImage + + //! Structure for TIFF compression to MIME type mappings + struct MimeTypeList { + //! Comparison operator for compression + bool operator==(int compression) const { return compression_ == compression; } + int compression_; //!< TIFF compression + const char* mimeType_; //!< MIME type + }; + + //! List of TIFF compression to MIME type mappings + MimeTypeList mimeTypeList[] = { + { 32770, "image/x-samsung-srw" }, + { 34713, "image/x-nikon-nef" }, + { 65535, "image/x-pentax-pef" } + }; + + std::string TiffImage::mimeType() const + { + if (!mimeType_.empty()) return mimeType_; + + mimeType_ = std::string("image/tiff"); + std::string key = "Exif." + primaryGroup() + ".Compression"; + ExifData::const_iterator md = exifData_.findKey(ExifKey(key)); + if (md != exifData_.end() && md->count() > 0) { + const MimeTypeList* i = find(mimeTypeList, static_cast(md->toLong())); + if (i) mimeType_ = std::string(i->mimeType_); + } + return mimeType_; + } + + std::string TiffImage::primaryGroup() const + { + if (!primaryGroup_.empty()) return primaryGroup_; + + static const char* keys[] = { + "Exif.Image.NewSubfileType", + "Exif.SubImage1.NewSubfileType", + "Exif.SubImage2.NewSubfileType", + "Exif.SubImage3.NewSubfileType", + "Exif.SubImage4.NewSubfileType", + "Exif.SubImage5.NewSubfileType", + "Exif.SubImage6.NewSubfileType", + "Exif.SubImage7.NewSubfileType", + "Exif.SubImage8.NewSubfileType", + "Exif.SubImage9.NewSubfileType" + }; + // Find the group of the primary image, default to "Image" + primaryGroup_ = std::string("Image"); + for (unsigned int i = 0; i < EXV_COUNTOF(keys); ++i) { + ExifData::const_iterator md = exifData_.findKey(ExifKey(keys[i])); + // Is it the primary image? + if (md != exifData_.end() && md->count() > 0 && md->toLong() == 0) { + // Sometimes there is a JPEG primary image; that's not our first choice + primaryGroup_ = md->groupName(); + std::string key = "Exif." + primaryGroup_ + ".JPEGInterchangeFormat"; + if (exifData_.findKey(ExifKey(key)) == exifData_.end()) break; + } + } + return primaryGroup_; + } + + int TiffImage::pixelWidth() const + { + if (pixelWidth_ != 0) return pixelWidth_; + + ExifKey key(std::string("Exif.") + primaryGroup() + std::string(".ImageWidth")); + ExifData::const_iterator imageWidth = exifData_.findKey(key); + if (imageWidth != exifData_.end() && imageWidth->count() > 0) { + pixelWidth_ = static_cast(imageWidth->toLong()); + } + return pixelWidth_; + } + + int TiffImage::pixelHeight() const + { + if (pixelHeight_ != 0) return pixelHeight_; + + ExifKey key(std::string("Exif.") + primaryGroup() + std::string(".ImageLength")); + ExifData::const_iterator imageHeight = exifData_.findKey(key); + if (imageHeight != exifData_.end() && imageHeight->count() > 0) { + pixelHeight_ = imageHeight->toLong(); + } + return pixelHeight_; + } + + void TiffImage::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "TIFF")); + } + + void TiffImage::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading TIFF file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isTiffType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "TIFF"); + } + clearMetadata(); + ByteOrder bo = TiffParser::decode(exifData_, + iptcData_, + xmpData_, + io_->mmap(), + io_->size()); + setByteOrder(bo); + } // TiffImage::readMetadata + + void TiffImage::writeMetadata() + { +#ifdef DEBUG + std::cerr << "Writing TIFF file " << io_->path() << "\n"; +#endif + ByteOrder bo = byteOrder(); + byte* pData = 0; + long size = 0; + IoCloser closer(*io_); + if (io_->open() == 0) { + // Ensure that this is the correct image type + if (isTiffType(*io_, false)) { + pData = io_->mmap(true); + size = io_->size(); + TiffHeader tiffHeader; + if (0 == tiffHeader.read(pData, 8)) { + bo = tiffHeader.byteOrder(); + } + } + } + if (bo == invalidByteOrder) { + bo = littleEndian; + } + setByteOrder(bo); + TiffParser::encode(*io_, pData, size, bo, exifData_, iptcData_, xmpData_); // may throw + } // TiffImage::writeMetadata + + ByteOrder TiffParser::decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size + ) + { + return TiffParserWorker::decode(exifData, + iptcData, + xmpData, + pData, + size, + Tag::root, + TiffMapping::findDecoder); + } // TiffParser::decode + + WriteMethod TiffParser::encode( + BasicIo& io, + const byte* pData, + uint32_t size, + ByteOrder byteOrder, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData + ) + { + // Copy to be able to modify the Exif data + ExifData ed = exifData; + + // Delete IFDs which do not occur in TIFF images + static const IfdId filteredIfds[] = { + panaRawId + }; + for (unsigned int i = 0; i < EXV_COUNTOF(filteredIfds); ++i) { +#ifdef DEBUG + std::cerr << "Warning: Exif IFD " << filteredIfds[i] << " not encoded\n"; +#endif + ed.erase(std::remove_if(ed.begin(), + ed.end(), + FindExifdatum(filteredIfds[i])), + ed.end()); + } + + std::auto_ptr header(new TiffHeader(byteOrder)); + return TiffParserWorker::encode(io, + pData, + size, + ed, + iptcData, + xmpData, + Tag::root, + TiffMapping::findEncoder, + header.get(), + 0); + } // TiffParser::encode + + // ************************************************************************* + // free functions + Image::AutoPtr newTiffInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new TiffImage(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isTiffType(BasicIo& iIo, bool advance) + { + const int32_t len = 8; + byte buf[len]; + iIo.read(buf, len); + if (iIo.error() || iIo.eof()) { + return false; + } + TiffHeader tiffHeader; + bool rc = tiffHeader.read(buf, len); + if (!advance || !rc) { + iIo.seek(-len, BasicIo::cur); + } + return rc; + } + + bool isBigEndian() + { + union { + uint32_t i; + char c[4]; + } e = { 0x01000000 }; + + return e.c[0]?true:false; + } + bool isLittleEndian() { return !isBigEndian(); } + + + // http://en.wikipedia.org/wiki/Endianness + static uint32_t byteSwap(uint32_t value,bool bSwap) + { + uint32_t result = 0; + result |= (value & 0x000000FF) << 24; + result |= (value & 0x0000FF00) << 8; + result |= (value & 0x00FF0000) >> 8; + result |= (value & 0xFF000000) >> 24; + return bSwap ? result : value; + } + + static uint16_t byteSwap(uint16_t value,bool bSwap) + { + uint16_t result = 0; + result |= (value & 0x00FF) << 8; + result |= (value & 0xFF00) >> 8; + return bSwap ? result : value; + } + + static uint16_t byteSwap2(DataBuf& buf,size_t offset,bool bSwap) + { + uint16_t v; + char* p = (char*) &v; + p[0] = buf.pData_[offset]; + p[1] = buf.pData_[offset+1]; + return byteSwap(v,bSwap); + } + + static uint32_t byteSwap4(DataBuf& buf,size_t offset,bool bSwap) + { + uint32_t v; + char* p = (char*) &v; + p[0] = buf.pData_[offset]; + p[1] = buf.pData_[offset+1]; + p[2] = buf.pData_[offset+2]; + p[3] = buf.pData_[offset+3]; + return byteSwap(v,bSwap); + } + + static const char* typeName(uint16_t tag) + { + //! List of TIFF image tags + const char* result = NULL; + switch (tag ) { + case Exiv2::unsignedByte : result = "BYTE" ; break; + case Exiv2::asciiString : result = "ASCII" ; break; + case Exiv2::unsignedShort : result = "SHORT" ; break; + case Exiv2::unsignedLong : result = "LONG" ; break; + case Exiv2::unsignedRational : result = "RATIONAL" ; break; + case Exiv2::signedByte : result = "SBYTE" ; break; + case Exiv2::undefined : result = "UNDEFINED" ; break; + case Exiv2::signedShort : result = "SSHORT" ; break; + case Exiv2::signedLong : result = "SLONG" ; break; + case Exiv2::signedRational : result = "SRATIONAL" ; break; + case Exiv2::tiffFloat : result = "FLOAT" ; break; + case Exiv2::tiffDouble : result = "DOUBLE" ; break; + default : result = "unknown" ; break; + } + return result; + } + + static const char* tagName(uint16_t tag,size_t nMaxLength) + { + const char* result = NULL; + + // build a static map of tags for fast search + static std::map tags; + static bool init = true; + static char buffer[80]; + + if ( init ) { + int idx; + const TagInfo* ti ; + for (ti = Exiv2:: mnTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; + for (ti = Exiv2:: iopTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; + for (ti = Exiv2:: gpsTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; + for (ti = Exiv2:: ifdTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; + for (ti = Exiv2::exifTagList(), idx = 0; ti[idx].tag_ != 0xffff; ++idx) tags[ti[idx].tag_] = ti[idx].name_; + } + init = false; + + try { + result = tags[tag].c_str(); + if ( nMaxLength > sizeof(buffer) -2 ) + nMaxLength = sizeof(buffer) -2; + strncpy(buffer,result,nMaxLength); + result = buffer; + } catch ( ... ) {} + + return result ; + } + + static bool isStringType(uint16_t type) + { + return type == Exiv2::asciiString + || type == Exiv2::unsignedByte + || type == Exiv2::signedByte + ; + } + static bool isShortType(uint16_t type) { + return type == Exiv2::unsignedShort + || type == Exiv2::signedShort + ; + } + static bool isLongType(uint16_t type) { + return type == Exiv2::unsignedLong + || type == Exiv2::signedLong + ; + } + static bool isRationalType(uint16_t type) { + return type == Exiv2::unsignedRational + || type == Exiv2::signedRational + ; + } + static bool is2ByteType(uint16_t type) + { + return isShortType(type); + } + static bool is4ByteType(uint16_t type) + { + return isLongType(type) + || isRationalType(type) + ; + } + static bool isPrintXMP(uint16_t type, Exiv2::PrintStructureOption option) + { + return type == 700 && option == kpsXMP; + } + +#define MIN(a,b) ((a)<(b))?(b):(a) + + void TiffImage::printStructure(std::ostream& out, Exiv2::PrintStructureOption option) + { + if (io_->open() != 0) throw Error(9, io_->path(), strError()); + // Ensure that this is the correct image type + if (!isTiffType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(15); + } + + if ( option == kpsBasic || option == kpsXMP ) { + io_->seek(0,BasicIo::beg); + // buffer + const size_t dirSize = 32; + DataBuf dir(dirSize); + + // read header (we already know for certain that we have a Tiff file) + io_->read(dir.pData_, 8); + char c = (char) dir.pData_[0] ; + bool bSwap = ( c == 'M' && isLittleEndian() ) + || ( c == 'I' && isBigEndian() ) + ; + + if ( option == kpsBasic ) { + out << Internal::stringFormat("STRUCTURE OF TIFF FILE (%c%c): ",c,c) << io_->path() << std::endl; + out << " address | tag | type | count | offset | value\n"; + } + + uint32_t start = byteSwap4(dir,4,bSwap); + while ( start ) { + // if ( option == kpsBasic ) out << Internal::stringFormat("bSwap, start = %d %u\n",bSwap,offset); + + // Read top of directory + io_->seek(start,BasicIo::beg); + io_->read(dir.pData_, 2); + uint16_t dirLength = byteSwap2(dir,0,bSwap); + + // Read the dictionary + for ( int i = 0 ; i < dirLength ; i ++ ) { + io_->read(dir.pData_, 12); + uint16_t tag = byteSwap2(dir,0,bSwap); + uint16_t type = byteSwap2(dir,2,bSwap); + uint32_t count = byteSwap4(dir,4,bSwap); + uint32_t offset = byteSwap4(dir,8,bSwap); + + std::string sp = "" ; // output spacer + + //prepare to print the value + uint16_t kount = isPrintXMP(tag,option) ? count // restrict long arrays + : isStringType(type) ? (count > 32 ? 32 : count) + : count > 5 ? 5 + : count + ; + uint32_t pad = isStringType(type) ? 1 : 0; + uint32_t size = isStringType(type) ? 1 + : is2ByteType(type) ? 2 + : is4ByteType(type) ? 4 + : 1 + ; + + DataBuf buf(MIN(size*kount + pad,48)); // allocate a buffer + if ( isStringType(type) || count*size > 4 ) { // data is in the directory => read into buffer + size_t restore = io_->tell(); // save + io_->seek(offset,BasicIo::beg); // position + io_->read(buf.pData_,kount*size);// read + io_->seek(restore,BasicIo::beg); // restore + } else { // move data from directory to the buffer + std::memcpy(buf.pData_,dir.pData_+8,12); + } + + if ( option == kpsBasic ) { + uint32_t address = start + 2 + i*12 ; + out << Internal::stringFormat("%8u | %#06x %-25s |%10s |%9u |%9u | ",address,tag,tagName(tag,25),typeName(type),count,offset); + + if ( isShortType(type) ){ + for ( uint16_t k = 0 ; k < kount ; k++ ) { + out << sp << byteSwap2(buf,k*size,bSwap); + sp = " "; + } + } else if ( isLongType(type) ){ + for ( uint16_t k = 0 ; k < kount ; k++ ) { + out << sp << byteSwap4(buf,k*size,bSwap); + sp = " "; + } + } else if ( isRationalType(type) ){ + for ( uint16_t k = 0 ; k < kount ; k++ ) { + uint16_t a = byteSwap2(buf,k*size+0,bSwap); + uint16_t b = byteSwap2(buf,k*size+2,bSwap); + if ( isLittleEndian() ) { + if ( bSwap ) out << sp << b << "/" << a; + else out << sp << a << "/" << b; + } else { + if ( bSwap ) out << sp << a << "/" << b; + else out << sp << b << "/" << a; + } + sp = " "; + } + } else if ( isStringType(type) ) { + out << sp << Internal::binaryToString(buf, kount); + } + sp = kount == count ? "" : " ..."; + out << sp << std::endl; + } + + if ( isPrintXMP(tag,option) ) { + buf.pData_[count]=0; + out << (char*) buf.pData_; + } + } + io_->read(dir.pData_, 4); + start = byteSwap4(dir,0,bSwap); + } // while offset + } + } + +} // namespace Exiv2 + +// Shortcuts for the newTiffBinaryArray templates. +#define EXV_BINARY_ARRAY(arrayCfg, arrayDef) (newTiffBinaryArray0<&arrayCfg, EXV_COUNTOF(arrayDef), arrayDef>) +#define EXV_SIMPLE_BINARY_ARRAY(arrayCfg) (newTiffBinaryArray1<&arrayCfg>) +#define EXV_COMPLEX_BINARY_ARRAY(arraySet, cfgSelFct) (newTiffBinaryArray2) + +namespace Exiv2 { + namespace Internal { + + //! Constant for non-encrypted binary arrays + const CryptFct notEncrypted = 0; + + //! Canon Camera Settings binary array - configuration + extern const ArrayCfg canonCsCfg = { + canonCsId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // With size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Canon Camera Settings binary array - definition + extern const ArrayDef canonCsDef[] = { + { 46, ttUnsignedShort, 3 } // Exif.CanonCs.Lens + }; + + //! Canon Shot Info binary array - configuration + extern const ArrayCfg canonSiCfg = { + canonSiId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // With size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + + //! Canon Panorama binary array - configuration + extern const ArrayCfg canonPaCfg = { + canonPaId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + + //! Canon Custom Function binary array - configuration + extern const ArrayCfg canonCfCfg = { + canonCfId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // With size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + + //! Canon Picture Info binary array - configuration + extern const ArrayCfg canonPiCfg = { + canonPiId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + + //! Canon File Info binary array - configuration + extern const ArrayCfg canonFiCfg = { + canonFiId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttSignedShort, 1 } + }; + //! Canon File Info binary array - definition + extern const ArrayDef canonFiDef[] = { + { 2, ttUnsignedLong, 1 } + }; + + //! Canon Processing Info binary array - configuration + extern const ArrayCfg canonPrCfg = { + canonPrId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry and size element + notEncrypted, // Not encrypted + true, // Has a size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttSignedShort, 1 } + }; + + //! Nikon Vibration Reduction binary array - configuration + extern const ArrayCfg nikonVrCfg = { + nikonVrId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Vibration Reduction binary array - definition + extern const ArrayDef nikonVrDef[] = { + { 0, ttUndefined, 4 }, // Version + { 7, ttUnsignedByte, 1 } // The array contains 8 bytes + }; + + //! Nikon Picture Control binary array - configuration + extern const ArrayCfg nikonPcCfg = { + nikonPcId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Picture Control binary array - definition + extern const ArrayDef nikonPcDef[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttAsciiString, 20 }, + { 24, ttAsciiString, 20 }, + { 48, ttUnsignedByte, 1 }, + { 49, ttUnsignedByte, 1 }, + { 50, ttUnsignedByte, 1 }, + { 51, ttUnsignedByte, 1 }, + { 52, ttUnsignedByte, 1 }, + { 53, ttUnsignedByte, 1 }, + { 54, ttUnsignedByte, 1 }, + { 55, ttUnsignedByte, 1 }, + { 56, ttUnsignedByte, 1 }, + { 57, ttUnsignedByte, 1 } // The array contains 58 bytes + }; + + //! Nikon World Time binary array - configuration + extern const ArrayCfg nikonWtCfg = { + nikonWtId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon World Time binary array - definition + extern const ArrayDef nikonWtDef[] = { + { 0, ttSignedShort, 1 }, + { 2, ttUnsignedByte, 1 }, + { 3, ttUnsignedByte, 1 } + }; + + //! Nikon ISO info binary array - configuration + extern const ArrayCfg nikonIiCfg = { + nikonIiId, // Group for the elements + bigEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon ISO info binary array - definition + extern const ArrayDef nikonIiDef[] = { + { 0, ttUnsignedByte, 1 }, + { 4, ttUnsignedShort, 1 }, + { 6, ttUnsignedByte, 1 }, + { 10, ttUnsignedShort, 1 }, + { 13, ttUnsignedByte, 1 } // The array contains 14 bytes + }; + + //! Nikon Auto Focus binary array - configuration + extern const ArrayCfg nikonAfCfg = { + nikonAfId, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Auto Focus binary array - definition + extern const ArrayDef nikonAfDef[] = { + { 0, ttUnsignedByte, 1 }, + { 1, ttUnsignedByte, 1 }, + { 2, ttUnsignedShort, 1 } // The array contains 4 bytes + }; + + //! Nikon Auto Focus 2 binary array - configuration + extern const ArrayCfg nikonAf2Cfg = { + nikonAf2Id, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Auto Focus 2 binary array - definition + extern const ArrayDef nikonAf2Def[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedByte, 1 }, // ContrastDetectAF + { 5, ttUnsignedByte, 1 }, // AFAreaMode + { 6, ttUnsignedByte, 1 }, // PhaseDetectAF + { 7, ttUnsignedByte, 1 }, // PrimaryAFPoint + { 8, ttUnsignedByte, 7 }, // AFPointsUsed + { 16, ttUnsignedShort, 1 }, // AFImageWidth + { 18, ttUnsignedShort, 1 }, // AFImageHeight + { 20, ttUnsignedShort, 1 }, // AFAreaXPosition + { 22, ttUnsignedShort, 1 }, // AFAreaYPosition + { 24, ttUnsignedShort, 1 }, // AFAreaWidth + { 26, ttUnsignedShort, 1 }, // AFAreaHeight + { 28, ttUnsignedShort, 1 }, // ContrastDetectAFInFocus + }; + + //! Nikon AF Fine Tune binary array - configuration + extern const ArrayCfg nikonAFTCfg = { + nikonAFTId, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon AF Fine Tune binary array - definition + extern const ArrayDef nikonAFTDef[] = { + { 0, ttUnsignedByte, 1 }, // AF Fine Tune on/off + { 1, ttUnsignedByte, 1 }, // AF Fine Tune index + { 2, ttUnsignedByte, 1 } // AF Fine Tune value + }; + + //! Nikon File Info binary array - configuration + extern const ArrayCfg nikonFiCfg = { + nikonFiId, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon File Info binary array - definition + extern const ArrayDef nikonFiDef[] = { + { 0, ttUndefined, 4 }, // Version + { 6, ttUnsignedShort, 1 }, // Directory Number + { 8, ttUnsignedShort, 1 } // File Number + }; + + //! Nikon Multi Exposure binary array - configuration + extern const ArrayCfg nikonMeCfg = { + nikonMeId, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Multi Exposure binary array - definition + extern const ArrayDef nikonMeDef[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedLong, 1 }, // MultiExposureMode + { 8, ttUnsignedLong, 1 }, // MultiExposureShots + { 12, ttUnsignedLong, 1 } // MultiExposureAutoGain + }; + + //! Nikon Flash Info binary array - configuration 1 + extern const ArrayCfg nikonFl1Cfg = { + nikonFl1Id, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Flash Info binary array - definition 1 + extern const ArrayDef nikonFl1Def[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedByte, 1 }, // FlashSource + { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware + { 8, ttUnsignedByte, 1 }, // ExternalFlashFlags + { 11, ttUnsignedByte, 1 }, // FlashFocalLength + { 12, ttUnsignedByte, 1 }, // RepeatingFlashRate + { 13, ttUnsignedByte, 1 }, // RepeatingFlashCount + { 14, ttUnsignedByte, 1 }, // FlashGNDistance + { 15, ttUnsignedByte, 1 }, // FlashGroupAControlMode + { 16, ttUnsignedByte, 1 } // FlashGroupBControlMode + }; + //! Nikon Flash Info binary array - configuration 2 + extern const ArrayCfg nikonFl2Cfg = { + nikonFl2Id, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Flash Info binary array - definition 2 + extern const ArrayDef nikonFl2Def[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedByte, 1 }, // FlashSource + { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware + { 8, ttUnsignedByte, 1 }, // ExternalFlashFlags + { 12, ttUnsignedByte, 1 }, // FlashFocalLength + { 13, ttUnsignedByte, 1 }, // RepeatingFlashRate + { 14, ttUnsignedByte, 1 }, // RepeatingFlashCount + { 15, ttUnsignedByte, 1 }, // FlashGNDistance + }; + //! Nikon Flash Info binary array - configuration 3 + extern const ArrayCfg nikonFl3Cfg = { + nikonFl3Id, // Group for the elements + littleEndian, // Byte order + ttUndefined, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Flash Info binary array - definition + extern const ArrayDef nikonFl3Def[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedByte, 1 }, // FlashSource + { 6, ttUnsignedShort, 1 }, // ExternalFlashFirmware + { 8, ttUnsignedByte, 1 }, // ExternalFlashFlags + { 12, ttUnsignedByte, 1 }, // FlashFocalLength + { 13, ttUnsignedByte, 1 }, // RepeatingFlashRate + { 14, ttUnsignedByte, 1 }, // RepeatingFlashCount + { 15, ttUnsignedByte, 1 }, // FlashGNDistance + { 16, ttUnsignedByte, 1 }, // FlashColorFilter + }; + //! Nikon Lens Data configurations and definitions + extern const ArraySet nikonFlSet[] = { + { nikonFl1Cfg, nikonFl1Def, EXV_COUNTOF(nikonFl1Def) }, + { nikonFl2Cfg, nikonFl2Def, EXV_COUNTOF(nikonFl2Def) }, + { nikonFl3Cfg, nikonFl3Def, EXV_COUNTOF(nikonFl3Def) } + }; + + //! Nikon Shot Info binary array - configuration 1 (D80) + extern const ArrayCfg nikonSi1Cfg = { + nikonSi1Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Shot Info binary array - definition 1 (D80) + extern const ArrayDef nikonSi1Def[] = { + { 0, ttUndefined, 4 }, // Version + { 586, ttUnsignedLong, 1 }, // ShutterCount + { 1155, ttUnsignedByte, 1 } // The array contains 1156 bytes + }; + //! Nikon Shot Info binary array - configuration 2 (D40) + extern const ArrayCfg nikonSi2Cfg = { + nikonSi2Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Shot Info binary array - definition 2 (D40) + extern const ArrayDef nikonSi2Def[] = { + { 0, ttUndefined, 4 }, // Version + { 582, ttUnsignedLong, 1 }, // ShutterCount + { 738, ttUnsignedByte, 1 }, + { 1112, ttUnsignedByte, 1 } // The array contains 1113 bytes + }; + //! Nikon Shot Info binary array - configuration 3 (D300a) + extern const ArrayCfg nikonSi3Cfg = { + nikonSi3Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Shot Info binary array - definition 3 (D300a) + extern const ArrayDef nikonSi3Def[] = { + { 0, ttUndefined, 4 }, // Version + { 604, ttUnsignedByte, 1 }, // ISO + { 633, ttUnsignedLong, 1 }, // ShutterCount + { 721, ttUnsignedShort, 1 }, // AFFineTuneAdj + { 814, ttUndefined, 4478 } // The array contains 5291 bytes + }; + //! Nikon Shot Info binary array - configuration 4 (D300b) + extern const ArrayCfg nikonSi4Cfg = { + nikonSi4Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Shot Info binary array - definition 4 (D300b) + extern const ArrayDef nikonSi4Def[] = { + { 0, ttUndefined, 4 }, // Version + { 644, ttUnsignedLong, 1 }, // ShutterCount + { 732, ttUnsignedShort, 1 }, // AFFineTuneAdj + { 826, ttUndefined, 4478 } // The array contains 5303 bytes + }; + //! Nikon Shot Info binary array - configuration 5 (ver 02.xx) + extern const ArrayCfg nikonSi5Cfg = { + nikonSi5Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags (don't know how many) + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Shot Info binary array - definition 5 (ver 01.xx and ver 02.xx) + extern const ArrayDef nikonSi5Def[] = { + { 0, ttUndefined, 4 }, // Version + { 106, ttUnsignedLong, 1 }, // ShutterCount1 + { 110, ttUnsignedLong, 1 }, // DeletedImageCount + { 117, ttUnsignedByte, 1 }, // VibrationReduction + { 130, ttUnsignedByte, 1 }, // VibrationReduction1 + { 343, ttUndefined, 2 }, // ShutterCount + { 430, ttUnsignedByte, 1 }, // VibrationReduction2 + { 598, ttUnsignedByte, 1 }, // ISO + { 630, ttUnsignedLong, 1 } // ShutterCount + }; + //! Nikon Shot Info binary array - configuration 6 (ver 01.xx) + extern const ArrayCfg nikonSi6Cfg = { + nikonSi6Id, // Group for the elements + bigEndian, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + false, // Write all tags (don't know how many) + true, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Lens Data configurations and definitions + extern const ArraySet nikonSiSet[] = { + { nikonSi1Cfg, nikonSi1Def, EXV_COUNTOF(nikonSi1Def) }, + { nikonSi2Cfg, nikonSi2Def, EXV_COUNTOF(nikonSi2Def) }, + { nikonSi3Cfg, nikonSi3Def, EXV_COUNTOF(nikonSi3Def) }, + { nikonSi4Cfg, nikonSi4Def, EXV_COUNTOF(nikonSi4Def) }, + { nikonSi5Cfg, nikonSi5Def, EXV_COUNTOF(nikonSi5Def) }, + { nikonSi6Cfg, nikonSi5Def, EXV_COUNTOF(nikonSi5Def) } // uses nikonSi5Def + }; + + //! Nikon Lens Data binary array - configuration 1 + extern const ArrayCfg nikonLd1Cfg = { + nikonLd1Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + true, // Write all tags + false, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Lens Data binary array - configuration 2 + extern const ArrayCfg nikonLd2Cfg = { + nikonLd2Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + false, // Concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Lens Data binary array - configuration 3 + extern const ArrayCfg nikonLd3Cfg = { + nikonLd3Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + true, // Write all tags + false, // Don't concatenate gaps + { 0, ttUnsignedByte, 1 } + }; + //! Nikon Lens Data binary array - definition + extern const ArrayDef nikonLdDef[] = { + { 0, ttUndefined, 4 } // Version + }; + //! Nikon Lens Data configurations and definitions + extern const ArraySet nikonLdSet[] = { + { nikonLd1Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, + { nikonLd2Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) }, + { nikonLd3Cfg, nikonLdDef, EXV_COUNTOF(nikonLdDef) } + }; + + //! Nikon Color Balance binary array - configuration 1 + extern const ArrayCfg nikonCb1Cfg = { + nikonCb1Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Nikon Color Balance binary array - configuration 2 + extern const ArrayCfg nikonCb2Cfg = { + nikonCb2Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Nikon Color Balance binary array - configuration 2a + extern const ArrayCfg nikonCb2aCfg = { + nikonCb2aId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Nikon Color Balance binary array - configuration 2b + extern const ArrayCfg nikonCb2bCfg = { + nikonCb2bId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Nikon Color Balance binary array - configuration 3 + extern const ArrayCfg nikonCb3Cfg = { + nikonCb3Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + notEncrypted, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Nikon Color Balance binary array - configuration 4 + extern const ArrayCfg nikonCb4Cfg = { + nikonCb4Id, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUndefined, // Type for array entry + nikonCrypt, // Encryption function + false, // No size element + false, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Nikon Color Balance binary array - definition 1 (D100) + extern const ArrayDef nikonCb1Def[] = { + { 0, ttUndefined, 4 }, // Version + { 72, ttUnsignedShort, 4 } // Color balance levels + }; + //! Nikon Color Balance binary array - definition 2 (D2H) + extern const ArrayDef nikonCb2Def[] = { + { 0, ttUndefined, 4 }, // Version + { 10, ttUnsignedShort, 4 } // Color balance levels + }; + //! Nikon Color Balance binary array - definition 2a (D50) + extern const ArrayDef nikonCb2aDef[] = { + { 0, ttUndefined, 4 }, // Version + { 18, ttUnsignedShort, 4 } // Color balance levels + }; + //! Nikon Color Balance binary array - definition 2b (D2X=0204,D2Hs=0206,D200=0207,D40=0208) + extern const ArrayDef nikonCb2bDef[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedShort, 140 }, // Unknown + {284, ttUnsignedShort, 3 }, // Unknown (encrypted) + {290, ttUnsignedShort, 4 } // Color balance levels + }; + //! Nikon Color Balance binary array - definition 3 (D70) + extern const ArrayDef nikonCb3Def[] = { + { 0, ttUndefined, 4 }, // Version + { 20, ttUnsignedShort, 4 } // Color balance levels + }; + //! Nikon Color Balance binary array - definition 4 (D3) + extern const ArrayDef nikonCb4Def[] = { + { 0, ttUndefined, 4 }, // Version + { 4, ttUnsignedShort, 140 }, // Unknown + {284, ttUnsignedShort, 5 }, // Unknown (encrypted) + {294, ttUnsignedShort, 4 } // Color balance levels + }; + //! Nikon Color Balance configurations and definitions + extern const ArraySet nikonCbSet[] = { + { nikonCb1Cfg, nikonCb1Def, EXV_COUNTOF(nikonCb1Def) }, + { nikonCb2Cfg, nikonCb2Def, EXV_COUNTOF(nikonCb2Def) }, + { nikonCb2aCfg, nikonCb2aDef, EXV_COUNTOF(nikonCb2aDef) }, + { nikonCb2bCfg, nikonCb2bDef, EXV_COUNTOF(nikonCb2bDef) }, + { nikonCb3Cfg, nikonCb3Def, EXV_COUNTOF(nikonCb3Def) }, + { nikonCb4Cfg, nikonCb4Def, EXV_COUNTOF(nikonCb4Def) } + }; + + //! Minolta Camera Settings (old) binary array - configuration + extern const ArrayCfg minoCsoCfg = { + minoltaCsOldId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedLong, 1 } + }; + + //! Minolta Camera Settings (new) binary array - configuration + extern const ArrayCfg minoCsnCfg = { + minoltaCsNewId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedLong, 1 } + }; + + //! Minolta 7D Camera Settings binary array - configuration + extern const ArrayCfg minoCs7Cfg = { + minoltaCs7DId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Minolta 7D Camera Settings binary array - definition + extern const ArrayDef minoCs7Def[] = { + { 60, ttSignedShort, 1 }, // Exif.MinoltaCs7D.ExposureCompensation + { 126, ttSignedShort, 1 } // Exif.MinoltaCs7D.ColorTemperature + }; + + //! Minolta 5D Camera Settings binary array - configuration + extern const ArrayCfg minoCs5Cfg = { + minoltaCs5DId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Minolta 5D Camera Settings binary array - definition + extern const ArrayDef minoCs5Def[] = { + { 146, ttSignedShort, 1 } // Exif.MinoltaCs5D.ColorTemperature + }; + + // Todo: Performance of the handling of Sony Camera Settings can be + // improved by defining all known array elements in the definitions + // sonyCsDef and sonyCs2Def below and enabling the 'concatenate gaps' + // setting in all four configurations. + + //! Sony1 Camera Settings binary array - configuration + extern const ArrayCfg sony1CsCfg = { + sony1CsId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Sony1 Camera Settings 2 binary array - configuration + extern const ArrayCfg sony1Cs2Cfg = { + sony1Cs2Id, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Sony[12] Camera Settings binary array - definition + extern const ArrayDef sonyCsDef[] = { + { 12, ttSignedShort, 1 } // Exif.Sony[12]Cs.WhiteBalanceFineTune + }; + //! Sony2 Camera Settings binary array - configuration + extern const ArrayCfg sony2CsCfg = { + sony2CsId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Sony2 Camera Settings 2 binary array - configuration + extern const ArrayCfg sony2Cs2Cfg = { + sony2Cs2Id, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Sony[12] Camera Settings 2 binary array - definition + extern const ArrayDef sonyCs2Def[] = { + { 44, ttUnsignedShort, 1 } // Exif.Sony[12]Cs2.FocusMode + }; + //! Sony1 Camera Settings configurations and definitions + extern const ArraySet sony1CsSet[] = { + { sony1CsCfg, sonyCsDef, EXV_COUNTOF(sonyCsDef) }, + { sony1Cs2Cfg, sonyCs2Def, EXV_COUNTOF(sonyCs2Def) } + }; + //! Sony2 Camera Settings configurations and definitions + extern const ArraySet sony2CsSet[] = { + { sony2CsCfg, sonyCsDef, EXV_COUNTOF(sonyCsDef) }, + { sony2Cs2Cfg, sonyCs2Def, EXV_COUNTOF(sonyCs2Def) } + }; + + //! Sony Minolta Camera Settings (old) binary array - configuration + extern const ArrayCfg sony1MCsoCfg = { + sony1MltCsOldId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedLong, 1 } + }; + + //! Sony Minolta Camera Settings (new) binary array - configuration + extern const ArrayCfg sony1MCsnCfg = { + sony1MltCsNewId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedLong, 1 } + }; + + //! Sony Minolta 7D Camera Settings binary array - configuration + extern const ArrayCfg sony1MCs7Cfg = { + sony1MltCs7DId, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + + //! Sony Minolta A100 Camera Settings binary array - configuration + extern const ArrayCfg sony1MCsA100Cfg = { + sony1MltCsA100Id, // Group for the elements + bigEndian, // Big endian + ttUndefined, // Type for array entry and size element + notEncrypted, // Not encrypted + false, // No size element + false, // No fillers + false, // Don't concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Sony Minolta A100 Camera Settings binary array - definition + extern const ArrayDef sony1MCsA100Def[] = { + { 112, ttSignedShort, 1 }, // Exif.Sony1MltCsA100.WhiteBalanceFineTune + { 116, ttSignedShort, 1 }, // Exif.Sony1MltCsA100.ColorCompensationFilter + { 190, ttSignedShort, 1 } // Exif.Sony1MltCsA100.ColorCompensationFilter2 + }; + + //! Samsung PictureWizard binary array - configuration + extern const ArrayCfg samsungPwCfg = { + samsungPwId, // Group for the elements + invalidByteOrder, // Use byte order from parent + ttUnsignedShort, // Type for array entry + notEncrypted, // Not encrypted + false, // No size element + true, // Write all tags + true, // Concatenate gaps + { 0, ttUnsignedShort, 1 } + }; + //! Samsung PictureWizard binary array - definition + extern const ArrayDef samsungPwDef[] = { + { 0, ttUnsignedShort, 1 }, // Mode + { 2, ttUnsignedShort, 1 }, // Color + { 4, ttUnsignedShort, 1 }, // Saturation + { 6, ttUnsignedShort, 1 }, // Sharpness + { 8, ttUnsignedShort, 1 } // Contrast + }; + + /* + This table lists for each group in a tree, its parent group and tag. + Root identifies the root of a TIFF tree, as there is a need for multiple + trees. Groups are the nodes of a TIFF tree. A group is an IFD or any + other composite component. + + With this table, it is possible, for a given group (and tag) to find a + path, i.e., a list of groups and tags, from the root to that group (tag). + */ + const TiffTreeStruct TiffCreator::tiffTreeStruct_[] = { + // root group parent group parent tag + //--------- ----------------- ----------------- ---------- + { Tag::root, ifdIdNotSet, ifdIdNotSet, Tag::root }, + { Tag::root, ifd0Id, ifdIdNotSet, Tag::root }, + { Tag::root, subImage1Id, ifd0Id, 0x014a }, + { Tag::root, subImage2Id, ifd0Id, 0x014a }, + { Tag::root, subImage3Id, ifd0Id, 0x014a }, + { Tag::root, subImage4Id, ifd0Id, 0x014a }, + { Tag::root, subImage5Id, ifd0Id, 0x014a }, + { Tag::root, subImage6Id, ifd0Id, 0x014a }, + { Tag::root, subImage7Id, ifd0Id, 0x014a }, + { Tag::root, subImage8Id, ifd0Id, 0x014a }, + { Tag::root, subImage9Id, ifd0Id, 0x014a }, + { Tag::root, exifId, ifd0Id, 0x8769 }, + { Tag::root, gpsId, ifd0Id, 0x8825 }, + { Tag::root, iopId, exifId, 0xa005 }, + { Tag::root, ifd1Id, ifd0Id, Tag::next }, + { Tag::root, ifd2Id, ifd1Id, Tag::next }, + { Tag::root, ifd3Id, ifd2Id, Tag::next }, + { Tag::root, olympusId, exifId, 0x927c }, + { Tag::root, olympus2Id, exifId, 0x927c }, + { Tag::root, subThumb1Id, ifd1Id, 0x014a }, + { Tag::root, olympusEqId, olympus2Id, 0x2010 }, + { Tag::root, olympusCsId, olympus2Id, 0x2020 }, + { Tag::root, olympusRdId, olympus2Id, 0x2030 }, + { Tag::root, olympusRd2Id, olympus2Id, 0x2031 }, + { Tag::root, olympusIpId, olympus2Id, 0x2040 }, + { Tag::root, olympusFiId, olympus2Id, 0x2050 }, + { Tag::root, olympusFe1Id, olympus2Id, 0x2100 }, + { Tag::root, olympusFe2Id, olympus2Id, 0x2200 }, + { Tag::root, olympusFe3Id, olympus2Id, 0x2300 }, + { Tag::root, olympusFe4Id, olympus2Id, 0x2400 }, + { Tag::root, olympusFe5Id, olympus2Id, 0x2500 }, + { Tag::root, olympusFe6Id, olympus2Id, 0x2600 }, + { Tag::root, olympusFe7Id, olympus2Id, 0x2700 }, + { Tag::root, olympusFe8Id, olympus2Id, 0x2800 }, + { Tag::root, olympusFe9Id, olympus2Id, 0x2900 }, + { Tag::root, olympusRiId, olympus2Id, 0x3000 }, + { Tag::root, fujiId, exifId, 0x927c }, + { Tag::root, canonId, exifId, 0x927c }, + { Tag::root, canonCsId, canonId, 0x0001 }, + { Tag::root, canonSiId, canonId, 0x0004 }, + { Tag::root, canonPaId, canonId, 0x0005 }, + { Tag::root, canonCfId, canonId, 0x000f }, + { Tag::root, canonPiId, canonId, 0x0012 }, + { Tag::root, canonFiId, canonId, 0x0093 }, + { Tag::root, canonPrId, canonId, 0x00a0 }, + { Tag::root, nikon1Id, exifId, 0x927c }, + { Tag::root, nikon2Id, exifId, 0x927c }, + { Tag::root, nikon3Id, exifId, 0x927c }, + { Tag::root, nikonPvId, nikon3Id, 0x0011 }, + { Tag::root, nikonVrId, nikon3Id, 0x001f }, + { Tag::root, nikonPcId, nikon3Id, 0x0023 }, + { Tag::root, nikonWtId, nikon3Id, 0x0024 }, + { Tag::root, nikonIiId, nikon3Id, 0x0025 }, + { Tag::root, nikonAfId, nikon3Id, 0x0088 }, + { Tag::root, nikonSi1Id, nikon3Id, 0x0091 }, + { Tag::root, nikonSi2Id, nikon3Id, 0x0091 }, + { Tag::root, nikonSi3Id, nikon3Id, 0x0091 }, + { Tag::root, nikonSi4Id, nikon3Id, 0x0091 }, + { Tag::root, nikonSi5Id, nikon3Id, 0x0091 }, + { Tag::root, nikonSi6Id, nikon3Id, 0x0091 }, + { Tag::root, nikonCb1Id, nikon3Id, 0x0097 }, + { Tag::root, nikonCb2Id, nikon3Id, 0x0097 }, + { Tag::root, nikonCb2aId, nikon3Id, 0x0097 }, + { Tag::root, nikonCb2bId, nikon3Id, 0x0097 }, + { Tag::root, nikonCb3Id, nikon3Id, 0x0097 }, + { Tag::root, nikonCb4Id, nikon3Id, 0x0097 }, + { Tag::root, nikonLd1Id, nikon3Id, 0x0098 }, + { Tag::root, nikonLd2Id, nikon3Id, 0x0098 }, + { Tag::root, nikonLd3Id, nikon3Id, 0x0098 }, + { Tag::root, nikonMeId, nikon3Id, 0x00b0 }, + { Tag::root, nikonAf2Id, nikon3Id, 0x00b7 }, + { Tag::root, nikonFiId, nikon3Id, 0x00b8 }, + { Tag::root, nikonAFTId, nikon3Id, 0x00b9 }, + { Tag::root, nikonFl1Id, nikon3Id, 0x00a8 }, + { Tag::root, nikonFl2Id, nikon3Id, 0x00a8 }, + { Tag::root, nikonFl3Id, nikon3Id, 0x00a8 }, + { Tag::root, panasonicId, exifId, 0x927c }, + { Tag::root, pentaxId, exifId, 0x927c }, + { Tag::root, pentaxDngId, ifd0Id, 0xc634 }, + { Tag::root, samsung2Id, exifId, 0x927c }, + { Tag::root, samsungPwId, samsung2Id, 0x0021 }, + { Tag::root, samsungPvId, samsung2Id, 0x0035 }, + { Tag::root, sigmaId, exifId, 0x927c }, + { Tag::root, sony1Id, exifId, 0x927c }, + { Tag::root, sony1CsId, sony1Id, 0x0114 }, + { Tag::root, sony1Cs2Id, sony1Id, 0x0114 }, + { Tag::root, sonyMltId, sony1Id, 0xb028 }, + { Tag::root, sony1MltCsOldId, sonyMltId, 0x0001 }, + { Tag::root, sony1MltCsNewId, sonyMltId, 0x0003 }, + { Tag::root, sony1MltCs7DId, sonyMltId, 0x0004 }, + { Tag::root, sony1MltCsA100Id, sonyMltId, 0x0114 }, + { Tag::root, sony2Id, exifId, 0x927c }, + { Tag::root, sony2CsId, sony2Id, 0x0114 }, + { Tag::root, sony2Cs2Id, sony2Id, 0x0114 }, + { Tag::root, minoltaId, exifId, 0x927c }, + { Tag::root, minoltaCsOldId, minoltaId, 0x0001 }, + { Tag::root, minoltaCsNewId, minoltaId, 0x0003 }, + { Tag::root, minoltaCs7DId, minoltaId, 0x0004 }, + { Tag::root, minoltaCs5DId, minoltaId, 0x0114 }, + { Tag::root, casioId, exifId, 0x927c }, + { Tag::root, casio2Id, exifId, 0x927c }, + // --------------------------------------------------------- + // Panasonic RW2 raw images + { Tag::pana, ifdIdNotSet, ifdIdNotSet, Tag::pana }, + { Tag::pana, panaRawId, ifdIdNotSet, Tag::pana }, + { Tag::pana, exifId, panaRawId, 0x8769 }, + { Tag::pana, gpsId, panaRawId, 0x8825 } + }; + + /* + This table describes the layout of each known TIFF group (including + non-standard structures and IFDs only seen in RAW images). + + The key of the table consists of the first two attributes, (extended) tag + and group. Tag is the TIFF tag or one of a few extended tags, group + identifies the IFD or any other composite component. + + Each entry of the table defines for a particular tag and group combination + the corresponding TIFF component create function. + */ + const TiffGroupStruct TiffCreator::tiffGroupStruct_[] = { + // ext. tag group create function + //--------- ----------------- ----------------------------------------- + // Root directory + { Tag::root, ifdIdNotSet, newTiffDirectory }, + + // IFD0 + { 0x8769, ifd0Id, newTiffSubIfd }, + { 0x8825, ifd0Id, newTiffSubIfd }, + { 0x0111, ifd0Id, newTiffImageData<0x0117, ifd0Id> }, + { 0x0117, ifd0Id, newTiffImageSize<0x0111, ifd0Id> }, + { 0x0144, ifd0Id, newTiffImageData<0x0145, ifd0Id> }, + { 0x0145, ifd0Id, newTiffImageSize<0x0144, ifd0Id> }, + { 0x0201, ifd0Id, newTiffImageData<0x0202, ifd0Id> }, + { 0x0202, ifd0Id, newTiffImageSize<0x0201, ifd0Id> }, + { 0x014a, ifd0Id, newTiffSubIfd }, + { 0xc634, ifd0Id, newTiffMnEntry }, + { Tag::next, ifd0Id, newTiffDirectory }, + { Tag::all, ifd0Id, newTiffEntry }, + + // Subdir subImage1 + { 0x0111, subImage1Id, newTiffImageData<0x0117, subImage1Id> }, + { 0x0117, subImage1Id, newTiffImageSize<0x0111, subImage1Id> }, + { 0x0144, subImage1Id, newTiffImageData<0x0145, subImage1Id> }, + { 0x0145, subImage1Id, newTiffImageSize<0x0144, subImage1Id> }, + { 0x0201, subImage1Id, newTiffImageData<0x0202, subImage1Id> }, + { 0x0202, subImage1Id, newTiffImageSize<0x0201, subImage1Id> }, + { Tag::next, subImage1Id, newTiffDirectory }, + { Tag::all, subImage1Id, newTiffEntry }, + + // Subdir subImage2 + { 0x0111, subImage2Id, newTiffImageData<0x0117, subImage2Id> }, + { 0x0117, subImage2Id, newTiffImageSize<0x0111, subImage2Id> }, + { 0x0144, subImage2Id, newTiffImageData<0x0145, subImage2Id> }, + { 0x0145, subImage2Id, newTiffImageSize<0x0144, subImage2Id> }, + { 0x0201, subImage2Id, newTiffImageData<0x0202, subImage2Id> }, + { 0x0202, subImage2Id, newTiffImageSize<0x0201, subImage2Id> }, + { Tag::next, subImage2Id, newTiffDirectory }, + { Tag::all, subImage2Id, newTiffEntry }, + + // Subdir subImage3 + { 0x0111, subImage3Id, newTiffImageData<0x0117, subImage3Id> }, + { 0x0117, subImage3Id, newTiffImageSize<0x0111, subImage3Id> }, + { 0x0144, subImage3Id, newTiffImageData<0x0145, subImage3Id> }, + { 0x0145, subImage3Id, newTiffImageSize<0x0144, subImage3Id> }, + { 0x0201, subImage3Id, newTiffImageData<0x0202, subImage3Id> }, + { 0x0202, subImage3Id, newTiffImageSize<0x0201, subImage3Id> }, + { Tag::next, subImage3Id, newTiffDirectory }, + { Tag::all, subImage3Id, newTiffEntry }, + + // Subdir subImage4 + { 0x0111, subImage4Id, newTiffImageData<0x0117, subImage4Id> }, + { 0x0117, subImage4Id, newTiffImageSize<0x0111, subImage4Id> }, + { 0x0144, subImage4Id, newTiffImageData<0x0145, subImage4Id> }, + { 0x0145, subImage4Id, newTiffImageSize<0x0144, subImage4Id> }, + { 0x0201, subImage4Id, newTiffImageData<0x0202, subImage4Id> }, + { 0x0202, subImage4Id, newTiffImageSize<0x0201, subImage4Id> }, + { Tag::next, subImage4Id, newTiffDirectory }, + { Tag::all, subImage4Id, newTiffEntry }, + + // Subdir subImage5 + { 0x0111, subImage5Id, newTiffImageData<0x0117, subImage5Id> }, + { 0x0117, subImage5Id, newTiffImageSize<0x0111, subImage5Id> }, + { 0x0144, subImage5Id, newTiffImageData<0x0145, subImage5Id> }, + { 0x0145, subImage5Id, newTiffImageSize<0x0144, subImage5Id> }, + { 0x0201, subImage5Id, newTiffImageData<0x0202, subImage5Id> }, + { 0x0202, subImage5Id, newTiffImageSize<0x0201, subImage5Id> }, + { Tag::next, subImage5Id, newTiffDirectory }, + { Tag::all, subImage5Id, newTiffEntry }, + + // Subdir subImage6 + { 0x0111, subImage6Id, newTiffImageData<0x0117, subImage6Id> }, + { 0x0117, subImage6Id, newTiffImageSize<0x0111, subImage6Id> }, + { 0x0144, subImage6Id, newTiffImageData<0x0145, subImage6Id> }, + { 0x0145, subImage6Id, newTiffImageSize<0x0144, subImage6Id> }, + { 0x0201, subImage6Id, newTiffImageData<0x0202, subImage6Id> }, + { 0x0202, subImage6Id, newTiffImageSize<0x0201, subImage6Id> }, + { Tag::next, subImage6Id, newTiffDirectory }, + { Tag::all, subImage6Id, newTiffEntry }, + + // Subdir subImage7 + { 0x0111, subImage7Id, newTiffImageData<0x0117, subImage7Id> }, + { 0x0117, subImage7Id, newTiffImageSize<0x0111, subImage7Id> }, + { 0x0144, subImage7Id, newTiffImageData<0x0145, subImage7Id> }, + { 0x0145, subImage7Id, newTiffImageSize<0x0144, subImage7Id> }, + { 0x0201, subImage7Id, newTiffImageData<0x0202, subImage7Id> }, + { 0x0202, subImage7Id, newTiffImageSize<0x0201, subImage7Id> }, + { Tag::next, subImage7Id, newTiffDirectory }, + { Tag::all, subImage7Id, newTiffEntry }, + + // Subdir subImage8 + { 0x0111, subImage8Id, newTiffImageData<0x0117, subImage8Id> }, + { 0x0117, subImage8Id, newTiffImageSize<0x0111, subImage8Id> }, + { 0x0144, subImage8Id, newTiffImageData<0x0145, subImage8Id> }, + { 0x0145, subImage8Id, newTiffImageSize<0x0144, subImage8Id> }, + { 0x0201, subImage8Id, newTiffImageData<0x0202, subImage8Id> }, + { 0x0202, subImage8Id, newTiffImageSize<0x0201, subImage8Id> }, + { Tag::next, subImage8Id, newTiffDirectory }, + { Tag::all, subImage8Id, newTiffEntry }, + + // Subdir subImage9 + { 0x0111, subImage9Id, newTiffImageData<0x0117, subImage9Id> }, + { 0x0117, subImage9Id, newTiffImageSize<0x0111, subImage9Id> }, + { 0x0144, subImage9Id, newTiffImageData<0x0145, subImage9Id> }, + { 0x0145, subImage9Id, newTiffImageSize<0x0144, subImage9Id> }, + { 0x0201, subImage9Id, newTiffImageData<0x0202, subImage9Id> }, + { 0x0202, subImage9Id, newTiffImageSize<0x0201, subImage9Id> }, + { Tag::next, subImage9Id, newTiffDirectory }, + { Tag::all, subImage9Id, newTiffEntry }, + + // Exif subdir + { 0xa005, exifId, newTiffSubIfd }, + { 0x927c, exifId, newTiffMnEntry }, + { Tag::next, exifId, newTiffDirectory }, + { Tag::all, exifId, newTiffEntry }, + + // GPS subdir + { Tag::next, gpsId, newTiffDirectory }, + { Tag::all, gpsId, newTiffEntry }, + + // IOP subdir + { Tag::next, iopId, newTiffDirectory }, + { Tag::all, iopId, newTiffEntry }, + + // IFD1 + { 0x0111, ifd1Id, newTiffThumbData<0x0117, ifd1Id> }, + { 0x0117, ifd1Id, newTiffThumbSize<0x0111, ifd1Id> }, + { 0x0144, ifd1Id, newTiffImageData<0x0145, ifd1Id> }, + { 0x0145, ifd1Id, newTiffImageSize<0x0144, ifd1Id> }, + { 0x014a, ifd1Id, newTiffSubIfd }, + { 0x0201, ifd1Id, newTiffThumbData<0x0202, ifd1Id> }, + { 0x0202, ifd1Id, newTiffThumbSize<0x0201, ifd1Id> }, + { Tag::next, ifd1Id, newTiffDirectory }, + { Tag::all, ifd1Id, newTiffEntry }, + + // Subdir subThumb1 + { 0x0111, subThumb1Id, newTiffImageData<0x0117, subThumb1Id> }, + { 0x0117, subThumb1Id, newTiffImageSize<0x0111, subThumb1Id> }, + { 0x0144, subThumb1Id, newTiffImageData<0x0145, subThumb1Id> }, + { 0x0145, subThumb1Id, newTiffImageSize<0x0144, subThumb1Id> }, + { 0x0201, subThumb1Id, newTiffImageData<0x0202, subThumb1Id> }, + { 0x0202, subThumb1Id, newTiffImageSize<0x0201, subThumb1Id> }, + { Tag::next, subThumb1Id, newTiffDirectory }, + { Tag::all, subThumb1Id, newTiffEntry }, + + // IFD2 (eg, in Pentax PEF and Canon CR2 files) + { 0x0111, ifd2Id, newTiffImageData<0x0117, ifd2Id> }, + { 0x0117, ifd2Id, newTiffImageSize<0x0111, ifd2Id> }, + { 0x0144, ifd1Id, newTiffImageData<0x0145, ifd2Id> }, + { 0x0145, ifd1Id, newTiffImageSize<0x0144, ifd2Id> }, + { 0x0201, ifd2Id, newTiffImageData<0x0202, ifd2Id> }, + { 0x0202, ifd2Id, newTiffImageSize<0x0201, ifd2Id> }, + { Tag::next, ifd2Id, newTiffDirectory }, + { Tag::all, ifd2Id, newTiffEntry }, + + // IFD3 (eg, in Canon CR2 files) + { 0x0111, ifd3Id, newTiffImageData<0x0117, ifd3Id> }, + { 0x0117, ifd3Id, newTiffImageSize<0x0111, ifd3Id> }, + { 0x0144, ifd1Id, newTiffImageData<0x0145, ifd3Id> }, + { 0x0145, ifd1Id, newTiffImageSize<0x0144, ifd3Id> }, + { 0x0201, ifd3Id, newTiffImageData<0x0202, ifd3Id> }, + { 0x0202, ifd3Id, newTiffImageSize<0x0201, ifd3Id> }, + { Tag::next, ifd3Id, newTiffDirectory }, + { Tag::all, ifd3Id, newTiffEntry }, + + // Olympus makernote - some Olympus cameras use Minolta structures + // Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups + { 0x0001, olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg) }, + { 0x0003, olympusId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg) }, + { Tag::next, olympusId, newTiffDirectory }, + { Tag::all, olympusId, newTiffEntry }, + + // Olympus2 makernote + { 0x0001, olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg) }, + { 0x0003, olympus2Id, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg) }, + { 0x2010, olympus2Id, newTiffSubIfd }, + { 0x2020, olympus2Id, newTiffSubIfd }, + { 0x2030, olympus2Id, newTiffSubIfd }, + { 0x2031, olympus2Id, newTiffSubIfd }, + { 0x2040, olympus2Id, newTiffSubIfd }, + { 0x2050, olympus2Id, newTiffSubIfd }, + { 0x2100, olympus2Id, newTiffSubIfd }, + { 0x2200, olympus2Id, newTiffSubIfd }, + { 0x2300, olympus2Id, newTiffSubIfd }, + { 0x2400, olympus2Id, newTiffSubIfd }, + { 0x2500, olympus2Id, newTiffSubIfd }, + { 0x2600, olympus2Id, newTiffSubIfd }, + { 0x2700, olympus2Id, newTiffSubIfd }, + { 0x2800, olympus2Id, newTiffSubIfd }, + { 0x2900, olympus2Id, newTiffSubIfd }, + { 0x3000, olympus2Id, newTiffSubIfd }, + { Tag::next, olympus2Id, newTiffDirectory }, + { Tag::all, olympus2Id, newTiffEntry }, + + // Olympus2 equipment subdir + { Tag::all, olympusEqId, newTiffEntry }, + + // Olympus2 camera settings subdir + { 0x0101, olympusCsId, newTiffImageData<0x0102, olympusCsId> }, + { 0x0102, olympusCsId, newTiffImageSize<0x0101, olympusCsId> }, + { Tag::all, olympusCsId, newTiffEntry }, + + // Olympus2 raw development subdir + { Tag::all, olympusRdId, newTiffEntry }, + + // Olympus2 raw development 2 subdir + { Tag::all, olympusRd2Id, newTiffEntry }, + + // Olympus2 image processing subdir + { Tag::all, olympusIpId, newTiffEntry }, + + // Olympus2 focus info subdir + { Tag::all, olympusFiId, newTiffEntry }, + + // Olympus2 FE 1 subdir + { Tag::all, olympusFe1Id, newTiffEntry }, + + // Olympus2 FE 2 subdir + { Tag::all, olympusFe2Id, newTiffEntry }, + + // Olympus2 FE 3 subdir + { Tag::all, olympusFe3Id, newTiffEntry }, + + // Olympus2 FE 4 subdir + { Tag::all, olympusFe4Id, newTiffEntry }, + + // Olympus2 FE 5 subdir + { Tag::all, olympusFe5Id, newTiffEntry }, + + // Olympus2 FE 6 subdir + { Tag::all, olympusFe6Id, newTiffEntry }, + + // Olympus2 FE 7 subdir + { Tag::all, olympusFe7Id, newTiffEntry }, + + // Olympus2 FE 8 subdir + { Tag::all, olympusFe8Id, newTiffEntry }, + + // Olympus2 FE 9 subdir + { Tag::all, olympusFe9Id, newTiffEntry }, + + // Olympus2 Raw Info subdir + { Tag::all, olympusRiId, newTiffEntry }, + + // Fujifilm makernote + { Tag::next, fujiId, newTiffDirectory }, + { Tag::all, fujiId, newTiffEntry }, + + // Canon makernote + { 0x0001, canonId, EXV_BINARY_ARRAY(canonCsCfg, canonCsDef) }, + { 0x0004, canonId, EXV_SIMPLE_BINARY_ARRAY(canonSiCfg) }, + { 0x0005, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPaCfg) }, + { 0x000f, canonId, EXV_SIMPLE_BINARY_ARRAY(canonCfCfg) }, + { 0x0012, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPiCfg) }, + { 0x0093, canonId, EXV_BINARY_ARRAY(canonFiCfg, canonFiDef) }, + { 0x00a0, canonId, EXV_SIMPLE_BINARY_ARRAY(canonPrCfg) }, + { Tag::next, canonId, newTiffDirectory }, + { Tag::all, canonId, newTiffEntry }, + + // Canon makernote composite tags + { Tag::all, canonCsId, newTiffBinaryElement }, + { Tag::all, canonSiId, newTiffBinaryElement }, + { Tag::all, canonPaId, newTiffBinaryElement }, + { Tag::all, canonCfId, newTiffBinaryElement }, + { Tag::all, canonPiId, newTiffBinaryElement }, + { Tag::all, canonFiId, newTiffBinaryElement }, + { Tag::all, canonPrId, newTiffBinaryElement }, + + // Nikon1 makernote + { Tag::next, nikon1Id, newTiffDirectory }, + { Tag::all, nikon1Id, newTiffEntry }, + + // Nikon2 makernote + { Tag::next, nikon2Id, newTiffDirectory }, + { Tag::all, nikon2Id, newTiffEntry }, + + // Nikon3 makernote + { Tag::next, nikon3Id, newTiffDirectory }, + { 0x0011, nikon3Id, newTiffSubIfd }, + { 0x001f, nikon3Id, EXV_BINARY_ARRAY(nikonVrCfg, nikonVrDef) }, + { 0x0023, nikon3Id, EXV_BINARY_ARRAY(nikonPcCfg, nikonPcDef) }, + { 0x0024, nikon3Id, EXV_BINARY_ARRAY(nikonWtCfg, nikonWtDef) }, + { 0x0025, nikon3Id, EXV_BINARY_ARRAY(nikonIiCfg, nikonIiDef) }, + { 0x0088, nikon3Id, EXV_BINARY_ARRAY(nikonAfCfg, nikonAfDef) }, + { 0x0091, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonSiSet, nikonSelector) }, + { 0x0097, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonCbSet, nikonSelector) }, + { 0x0098, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonLdSet, nikonSelector) }, + { 0x00a8, nikon3Id, EXV_COMPLEX_BINARY_ARRAY(nikonFlSet, nikonSelector) }, + { 0x00b0, nikon3Id, EXV_BINARY_ARRAY(nikonMeCfg, nikonMeDef) }, + { 0x00b7, nikon3Id, EXV_BINARY_ARRAY(nikonAf2Cfg, nikonAf2Def)}, + { 0x00b8, nikon3Id, EXV_BINARY_ARRAY(nikonFiCfg, nikonFiDef) }, + { 0x00b9, nikon3Id, EXV_BINARY_ARRAY(nikonAFTCfg, nikonAFTDef) }, + { Tag::all, nikon3Id, newTiffEntry }, + + // Nikon3 makernote preview subdir + { 0x0201, nikonPvId, newTiffThumbData<0x0202, nikonPvId> }, + { 0x0202, nikonPvId, newTiffThumbSize<0x0201, nikonPvId> }, + { Tag::next, nikonPvId, newTiffDirectory }, + { Tag::all, nikonPvId, newTiffEntry }, + + // Nikon3 vibration reduction + { Tag::all, nikonVrId, newTiffBinaryElement }, + + // Nikon3 picture control + { Tag::all, nikonPcId, newTiffBinaryElement }, + + // Nikon3 world time + { Tag::all, nikonWtId, newTiffBinaryElement }, + + // Nikon3 ISO info + { Tag::all, nikonIiId, newTiffBinaryElement }, + + // Nikon3 auto focus + { Tag::all, nikonAfId, newTiffBinaryElement }, + + // Nikon3 auto focus 2 + { Tag::all, nikonAf2Id, newTiffBinaryElement }, + + // Nikon3 AF Fine Tune + { Tag::all, nikonAFTId, newTiffBinaryElement }, + + // Nikon3 file info + { Tag::all, nikonFiId, newTiffBinaryElement }, + + // Nikon3 multi exposure + { Tag::all, nikonMeId, newTiffBinaryElement }, + + // Nikon3 flash info + { Tag::all, nikonFl1Id, newTiffBinaryElement }, + { Tag::all, nikonFl2Id, newTiffBinaryElement }, + { Tag::all, nikonFl3Id, newTiffBinaryElement }, + + // Nikon3 shot info + { Tag::all, nikonSi1Id, newTiffBinaryElement }, + { Tag::all, nikonSi2Id, newTiffBinaryElement }, + { Tag::all, nikonSi3Id, newTiffBinaryElement }, + { Tag::all, nikonSi4Id, newTiffBinaryElement }, + { Tag::all, nikonSi5Id, newTiffBinaryElement }, + { Tag::all, nikonSi6Id, newTiffBinaryElement }, + + // Nikon3 color balance + { Tag::all, nikonCb1Id, newTiffBinaryElement }, + { Tag::all, nikonCb2Id, newTiffBinaryElement }, + { Tag::all, nikonCb2aId, newTiffBinaryElement }, + { Tag::all, nikonCb2bId, newTiffBinaryElement }, + { Tag::all, nikonCb3Id, newTiffBinaryElement }, + { Tag::all, nikonCb4Id, newTiffBinaryElement }, + + // Nikon3 lens data + { Tag::all, nikonLd1Id, newTiffBinaryElement }, + { Tag::all, nikonLd2Id, newTiffBinaryElement }, + { Tag::all, nikonLd3Id, newTiffBinaryElement }, + + // Panasonic makernote + { Tag::next, panasonicId, newTiffDirectory }, + { Tag::all, panasonicId, newTiffEntry }, + + // Pentax DNG makernote + { 0x0003, pentaxDngId, newTiffThumbSize<0x0004, pentaxDngId> }, + { 0x0004, pentaxDngId, newTiffThumbData<0x0003, pentaxDngId> }, + { Tag::next, pentaxDngId, newTiffDirectory }, + { Tag::all, pentaxDngId, newTiffEntry }, + + // Pentax makernote + { 0x0003, pentaxId, newTiffThumbSize<0x0004, pentaxId> }, + { 0x0004, pentaxId, newTiffThumbData<0x0003, pentaxId> }, + { Tag::next, pentaxId, newTiffDirectory }, + { Tag::all, pentaxId, newTiffEntry }, + + // Samsung2 makernote + { 0x0021, samsung2Id, EXV_BINARY_ARRAY(samsungPwCfg, samsungPwDef) }, + { 0x0035, samsung2Id, newTiffSubIfd }, + { Tag::next, samsung2Id, newTiffDirectory }, + { Tag::all, samsung2Id, newTiffEntry }, + + // Samsung PictureWizard binary array + { Tag::all, samsungPwId, newTiffBinaryElement }, + + // Samsung2 makernote preview subdir + { 0x0201, samsungPvId, newTiffThumbData<0x0202, samsungPvId> }, + { 0x0202, samsungPvId, newTiffThumbSize<0x0201, samsungPvId> }, + { Tag::next, samsungPvId, newTiffDirectory }, + { Tag::all, samsungPvId, newTiffEntry }, + + // Sigma/Foveon makernote + { Tag::next, sigmaId, newTiffDirectory }, + { Tag::all, sigmaId, newTiffEntry }, + + // Sony1 makernote + { 0x0114, sony1Id, EXV_COMPLEX_BINARY_ARRAY(sony1CsSet, sonyCsSelector) }, + { 0xb028, sony1Id, newTiffSubIfd }, + { Tag::next, sony1Id, newTiffDirectory }, + { Tag::all, sony1Id, newTiffEntry }, + + // Sony1 camera settings + { Tag::all, sony1CsId, newTiffBinaryElement }, + { Tag::all, sony1Cs2Id, newTiffBinaryElement }, + + // Sony2 makernote + { 0x0114, sony2Id, EXV_COMPLEX_BINARY_ARRAY(sony2CsSet, sonyCsSelector) }, + { Tag::next, sony2Id, newTiffDirectory }, + { Tag::all, sony2Id, newTiffEntry }, + + // Sony2 camera settings + { Tag::all, sony2CsId, newTiffBinaryElement }, + { Tag::all, sony2Cs2Id, newTiffBinaryElement }, + + // Sony1 Minolta makernote + { 0x0001, sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsoCfg) }, + { 0x0003, sonyMltId, EXV_SIMPLE_BINARY_ARRAY(sony1MCsnCfg) }, + { 0x0004, sonyMltId, EXV_BINARY_ARRAY(sony1MCs7Cfg, minoCs7Def)}, // minoCs7Def [sic] + { 0x0088, sonyMltId, newTiffThumbData<0x0089, sonyMltId> }, + { 0x0089, sonyMltId, newTiffThumbSize<0x0088, sonyMltId> }, + { 0x0114, sonyMltId, EXV_BINARY_ARRAY(sony1MCsA100Cfg, sony1MCsA100Def)}, + { Tag::next, sonyMltId, newTiffDirectory }, + { Tag::all, sonyMltId, newTiffEntry }, + + // Sony1 Minolta makernote composite tags + { Tag::all, sony1MltCsOldId, newTiffBinaryElement }, + { Tag::all, sony1MltCsNewId, newTiffBinaryElement }, + { Tag::all, sony1MltCs7DId, newTiffBinaryElement }, + { Tag::all, sony1MltCsA100Id, newTiffBinaryElement }, + + // Minolta makernote + { 0x0001, minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsoCfg) }, + { 0x0003, minoltaId, EXV_SIMPLE_BINARY_ARRAY(minoCsnCfg) }, + { 0x0004, minoltaId, EXV_BINARY_ARRAY(minoCs7Cfg, minoCs7Def) }, + { 0x0088, minoltaId, newTiffThumbData<0x0089, minoltaId> }, + { 0x0089, minoltaId, newTiffThumbSize<0x0088, minoltaId> }, + { 0x0114, minoltaId, EXV_BINARY_ARRAY(minoCs5Cfg, minoCs5Def) }, + { Tag::next, minoltaId, newTiffDirectory }, + { Tag::all, minoltaId, newTiffEntry }, + + // Minolta makernote composite tags + { Tag::all, minoltaCsOldId, newTiffBinaryElement }, + { Tag::all, minoltaCsNewId, newTiffBinaryElement }, + { Tag::all, minoltaCs7DId, newTiffBinaryElement }, + { Tag::all, minoltaCs5DId, newTiffBinaryElement }, + + // ----------------------------------------------------------------------- + // Root directory of Panasonic RAW images + { Tag::pana, ifdIdNotSet, newTiffDirectory }, + + // IFD0 of Panasonic RAW images + { 0x8769, panaRawId, newTiffSubIfd }, + { 0x8825, panaRawId, newTiffSubIfd }, +// { 0x0111, panaRawId, newTiffImageData<0x0117, panaRawId> }, +// { 0x0117, panaRawId, newTiffImageSize<0x0111, panaRawId> }, + { Tag::next, panaRawId, newTiffDirectory }, + { Tag::all, panaRawId, newTiffEntry }, + + // Casio makernote + { Tag::next, casioId, newTiffDirectory }, + { Tag::all, casioId, newTiffEntry }, + + // Casio2 makernote + { Tag::next, casio2Id, newTiffDirectory }, + { Tag::all, casio2Id, newTiffEntry }, + + // ----------------------------------------------------------------------- + // Tags which are not de/encoded + { Tag::next, ignoreId, newTiffDirectory }, + { Tag::all, ignoreId, newTiffEntry } + }; + + // TIFF mapping table for special decoding and encoding requirements + const TiffMappingInfo TiffMapping::tiffMappingInfo_[] = { + { "*", Tag::all, ignoreId, 0, 0 }, // Do not decode tags with group == ignoreId + { "*", 0x02bc, ifd0Id, &TiffDecoder::decodeXmp, 0 /*done before the tree is traversed*/ }, + { "*", 0x83bb, ifd0Id, &TiffDecoder::decodeIptc, 0 /*done before the tree is traversed*/ }, + { "*", 0x8649, ifd0Id, &TiffDecoder::decodeIptc, 0 /*done before the tree is traversed*/ } + }; + + DecoderFct TiffMapping::findDecoder(const std::string& make, + uint32_t extendedTag, + IfdId group) + { + DecoderFct decoderFct = &TiffDecoder::decodeStdTiffEntry; + const TiffMappingInfo* td = find(tiffMappingInfo_, + TiffMappingInfo::Key(make, extendedTag, group)); + if (td) { + // This may set decoderFct to 0, meaning that the tag should not be decoded + decoderFct = td->decoderFct_; + } + return decoderFct; + } + + EncoderFct TiffMapping::findEncoder( + const std::string& make, + uint32_t extendedTag, + IfdId group + ) + { + EncoderFct encoderFct = 0; + const TiffMappingInfo* td = find(tiffMappingInfo_, + TiffMappingInfo::Key(make, extendedTag, group)); + if (td) { + // Returns 0 if no special encoder function is found + encoderFct = td->encoderFct_; + } + return encoderFct; + } + + bool TiffTreeStruct::operator==(const TiffTreeStruct::Key& key) const + { + return key.r_ == root_ && key.g_ == group_; + } + + TiffComponent::AutoPtr TiffCreator::create(uint32_t extendedTag, + IfdId group) + { + TiffComponent::AutoPtr tc(0); + uint16_t tag = static_cast(extendedTag & 0xffff); + const TiffGroupStruct* ts = find(tiffGroupStruct_, + TiffGroupStruct::Key(extendedTag, group)); + if (ts && ts->newTiffCompFct_) { + tc = ts->newTiffCompFct_(tag, group); + } +#ifdef DEBUG + else { + if (!ts) { + std::cerr << "Warning: No TIFF structure entry found for "; + } + else { + std::cerr << "Warning: No TIFF component creator found for "; + } + std::cerr << "extended tag 0x" << std::setw(4) << std::setfill('0') + << std::hex << std::right << extendedTag + << ", group " << groupName(group) << "\n"; + } +#endif + return tc; + } // TiffCreator::create + + void TiffCreator::getPath(TiffPath& tiffPath, + uint32_t extendedTag, + IfdId group, + uint32_t root) + { + const TiffTreeStruct* ts = 0; + do { + tiffPath.push(TiffPathItem(extendedTag, group)); + ts = find(tiffTreeStruct_, TiffTreeStruct::Key(root, group)); + assert(ts != 0); + extendedTag = ts->parentExtTag_; + group = ts->parentGroup_; + } while (!(ts->root_ == root && ts->group_ == ifdIdNotSet)); + + } // TiffCreator::getPath + + ByteOrder TiffParserWorker::decode( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + const byte* pData, + uint32_t size, + uint32_t root, + FindDecoderFct findDecoderFct, + TiffHeaderBase* pHeader + ) + { + // Create standard TIFF header if necessary + std::auto_ptr ph; + if (!pHeader) { + ph = std::auto_ptr(new TiffHeader); + pHeader = ph.get(); + } + TiffComponent::AutoPtr rootDir = parse(pData, size, root, pHeader); + if (0 != rootDir.get()) { + TiffDecoder decoder(exifData, + iptcData, + xmpData, + rootDir.get(), + findDecoderFct); + rootDir->accept(decoder); + } + return pHeader->byteOrder(); + + } // TiffParserWorker::decode + + WriteMethod TiffParserWorker::encode( + BasicIo& io, + const byte* pData, + uint32_t size, + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData, + uint32_t root, + FindEncoderFct findEncoderFct, + TiffHeaderBase* pHeader, + OffsetWriter* pOffsetWriter + ) + { + /* + 1) parse the binary image, if one is provided, and + 2) attempt updating the parsed tree in-place ("non-intrusive writing") + 3) else, create a new tree and write a new TIFF structure ("intrusive + writing"). If there is a parsed tree, it is only used to access the + image data in this case. + */ + assert(pHeader); + assert(pHeader->byteOrder() != invalidByteOrder); + WriteMethod writeMethod = wmIntrusive; + TiffComponent::AutoPtr parsedTree = parse(pData, size, root, pHeader); + PrimaryGroups primaryGroups; + findPrimaryGroups(primaryGroups, parsedTree.get()); + if (0 != parsedTree.get()) { + // Attempt to update existing TIFF components based on metadata entries + TiffEncoder encoder(exifData, + iptcData, + xmpData, + parsedTree.get(), + false, + &primaryGroups, + pHeader, + findEncoderFct); + parsedTree->accept(encoder); + if (!encoder.dirty()) writeMethod = wmNonIntrusive; + } + if (writeMethod == wmIntrusive) { + TiffComponent::AutoPtr createdTree = TiffCreator::create(root, ifdIdNotSet); + if (0 != parsedTree.get()) { + // Copy image tags from the original image to the composite + TiffCopier copier(createdTree.get(), root, pHeader, &primaryGroups); + parsedTree->accept(copier); + } + // Add entries from metadata to composite + TiffEncoder encoder(exifData, + iptcData, + xmpData, + createdTree.get(), + parsedTree.get() == 0, + &primaryGroups, + pHeader, + findEncoderFct); + encoder.add(createdTree.get(), parsedTree.get(), root); + // Write binary representation from the composite tree + DataBuf header = pHeader->write(); + BasicIo::AutoPtr tempIo(io.temporary()); // may throw + assert(tempIo.get() != 0); + IoWrapper ioWrapper(*tempIo, header.pData_, header.size_, pOffsetWriter); + uint32_t imageIdx(uint32_t(-1)); + createdTree->write(ioWrapper, + pHeader->byteOrder(), + header.size_, + uint32_t(-1), + uint32_t(-1), + imageIdx); + if (pOffsetWriter) pOffsetWriter->writeOffsets(*tempIo); + io.transfer(*tempIo); // may throw +#ifndef SUPPRESS_WARNINGS + EXV_INFO << "Write strategy: Intrusive\n"; +#endif + } +#ifndef SUPPRESS_WARNINGS + else { + EXV_INFO << "Write strategy: Non-intrusive\n"; + } +#endif + return writeMethod; + } // TiffParserWorker::encode + + TiffComponent::AutoPtr TiffParserWorker::parse( + const byte* pData, + uint32_t size, + uint32_t root, + TiffHeaderBase* pHeader + ) + { + if (pData == 0 || size == 0) return TiffComponent::AutoPtr(0); + if (!pHeader->read(pData, size) || pHeader->offset() >= size) { + throw Error(3, "TIFF"); + } + TiffComponent::AutoPtr rootDir = TiffCreator::create(root, ifdIdNotSet); + if (0 != rootDir.get()) { + rootDir->setStart(pData + pHeader->offset()); + TiffRwState state(pHeader->byteOrder(), 0); + TiffReader reader(pData, size, rootDir.get(), state); + rootDir->accept(reader); + reader.postProcess(); + } + return rootDir; + + } // TiffParserWorker::parse + + void TiffParserWorker::findPrimaryGroups(PrimaryGroups& primaryGroups, + TiffComponent* pSourceDir) + { + if (0 == pSourceDir) return; + + const IfdId imageGroups[] = { + ifd0Id, + ifd1Id, + ifd2Id, + ifd3Id, + subImage1Id, + subImage2Id, + subImage3Id, + subImage4Id, + subImage5Id, + subImage6Id, + subImage7Id, + subImage8Id, + subImage9Id + }; + + for (unsigned int i = 0; i < EXV_COUNTOF(imageGroups); ++i) { + TiffFinder finder(0x00fe, imageGroups[i]); + pSourceDir->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + if ( te + && te->pValue()->typeId() == unsignedLong + && te->pValue()->count() == 1 + && (te->pValue()->toLong() & 1) == 0) { + primaryGroups.push_back(te->group()); + } + } + + } // TiffParserWorker::findPrimaryGroups + + TiffHeaderBase::TiffHeaderBase(uint16_t tag, + uint32_t size, + ByteOrder byteOrder, + uint32_t offset) + : tag_(tag), + size_(size), + byteOrder_(byteOrder), + offset_(offset) + { + } + + TiffHeaderBase::~TiffHeaderBase() + { + } + + bool TiffHeaderBase::read(const byte* pData, uint32_t size) + { + if (!pData || size < 8) return false; + + if (pData[0] == 0x49 && pData[1] == 0x49) { + byteOrder_ = littleEndian; + } + else if (pData[0] == 0x4d && pData[1] == 0x4d) { + byteOrder_ = bigEndian; + } + else { + return false; + } + if (tag_ != getUShort(pData + 2, byteOrder_)) return false; + offset_ = getULong(pData + 4, byteOrder_); + + return true; + } // TiffHeaderBase::read + + DataBuf TiffHeaderBase::write() const + { + DataBuf buf(8); + switch (byteOrder_) { + case littleEndian: + buf.pData_[0] = 0x49; + buf.pData_[1] = 0x49; + break; + case bigEndian: + buf.pData_[0] = 0x4d; + buf.pData_[1] = 0x4d; + break; + case invalidByteOrder: + assert(false); + break; + } + us2Data(buf.pData_ + 2, tag_, byteOrder_); + ul2Data(buf.pData_ + 4, 0x00000008, byteOrder_); + return buf; + } + + void TiffHeaderBase::print(std::ostream& os, const std::string& prefix) const + { + std::ios::fmtflags f( os.flags() ); + os << prefix + << _("TIFF header, offset") << " = 0x" + << std::setw(8) << std::setfill('0') << std::hex << std::right + << offset_; + + switch (byteOrder_) { + case littleEndian: os << ", " << _("little endian encoded"); break; + case bigEndian: os << ", " << _("big endian encoded"); break; + case invalidByteOrder: break; + } + os << "\n"; + os.flags(f); + } // TiffHeaderBase::print + + ByteOrder TiffHeaderBase::byteOrder() const + { + return byteOrder_; + } + + void TiffHeaderBase::setByteOrder(ByteOrder byteOrder) + { + byteOrder_ = byteOrder; + } + + uint32_t TiffHeaderBase::offset() const + { + return offset_; + } + + void TiffHeaderBase::setOffset(uint32_t offset) + { + offset_ = offset; + } + + uint32_t TiffHeaderBase::size() const + { + return size_; + } + + uint16_t TiffHeaderBase::tag() const + { + return tag_; + } + + bool TiffHeaderBase::isImageTag( uint16_t /*tag*/, + IfdId /*group*/, + const PrimaryGroups* /*primaryGroups*/) const + { + return false; + } + + bool isTiffImageTag(uint16_t tag, IfdId group) + { + //! List of TIFF image tags + static const TiffImgTagStruct tiffImageTags[] = { + { 0x00fe, ifd0Id }, // Exif.Image.NewSubfileType + { 0x00ff, ifd0Id }, // Exif.Image.SubfileType + { 0x0100, ifd0Id }, // Exif.Image.ImageWidth + { 0x0101, ifd0Id }, // Exif.Image.ImageLength + { 0x0102, ifd0Id }, // Exif.Image.BitsPerSample + { 0x0103, ifd0Id }, // Exif.Image.Compression + { 0x0106, ifd0Id }, // Exif.Image.PhotometricInterpretation + { 0x010a, ifd0Id }, // Exif.Image.FillOrder + { 0x0111, ifd0Id }, // Exif.Image.StripOffsets + { 0x0115, ifd0Id }, // Exif.Image.SamplesPerPixel + { 0x0116, ifd0Id }, // Exif.Image.RowsPerStrip + { 0x0117, ifd0Id }, // Exif.Image.StripByteCounts + { 0x011a, ifd0Id }, // Exif.Image.XResolution + { 0x011b, ifd0Id }, // Exif.Image.YResolution + { 0x011c, ifd0Id }, // Exif.Image.PlanarConfiguration + { 0x0122, ifd0Id }, // Exif.Image.GrayResponseUnit + { 0x0123, ifd0Id }, // Exif.Image.GrayResponseCurve + { 0x0124, ifd0Id }, // Exif.Image.T4Options + { 0x0125, ifd0Id }, // Exif.Image.T6Options + { 0x0128, ifd0Id }, // Exif.Image.ResolutionUnit + { 0x0129, ifd0Id }, // Exif.Image.PageNumber + { 0x012d, ifd0Id }, // Exif.Image.TransferFunction + { 0x013d, ifd0Id }, // Exif.Image.Predictor + { 0x013e, ifd0Id }, // Exif.Image.WhitePoint + { 0x013f, ifd0Id }, // Exif.Image.PrimaryChromaticities + { 0x0140, ifd0Id }, // Exif.Image.ColorMap + { 0x0141, ifd0Id }, // Exif.Image.HalftoneHints + { 0x0142, ifd0Id }, // Exif.Image.TileWidth + { 0x0143, ifd0Id }, // Exif.Image.TileLength + { 0x0144, ifd0Id }, // Exif.Image.TileOffsets + { 0x0145, ifd0Id }, // Exif.Image.TileByteCounts + { 0x014c, ifd0Id }, // Exif.Image.InkSet + { 0x014d, ifd0Id }, // Exif.Image.InkNames + { 0x014e, ifd0Id }, // Exif.Image.NumberOfInks + { 0x0150, ifd0Id }, // Exif.Image.DotRange + { 0x0151, ifd0Id }, // Exif.Image.TargetPrinter + { 0x0152, ifd0Id }, // Exif.Image.ExtraSamples + { 0x0153, ifd0Id }, // Exif.Image.SampleFormat + { 0x0154, ifd0Id }, // Exif.Image.SMinSampleValue + { 0x0155, ifd0Id }, // Exif.Image.SMaxSampleValue + { 0x0156, ifd0Id }, // Exif.Image.TransferRange + { 0x0157, ifd0Id }, // Exif.Image.ClipPath + { 0x0158, ifd0Id }, // Exif.Image.XClipPathUnits + { 0x0159, ifd0Id }, // Exif.Image.YClipPathUnits + { 0x015a, ifd0Id }, // Exif.Image.Indexed + { 0x015b, ifd0Id }, // Exif.Image.JPEGTables + { 0x0200, ifd0Id }, // Exif.Image.JPEGProc + { 0x0201, ifd0Id }, // Exif.Image.JPEGInterchangeFormat + { 0x0202, ifd0Id }, // Exif.Image.JPEGInterchangeFormatLength + { 0x0203, ifd0Id }, // Exif.Image.JPEGRestartInterval + { 0x0205, ifd0Id }, // Exif.Image.JPEGLosslessPredictors + { 0x0206, ifd0Id }, // Exif.Image.JPEGPointTransforms + { 0x0207, ifd0Id }, // Exif.Image.JPEGQTables + { 0x0208, ifd0Id }, // Exif.Image.JPEGDCTables + { 0x0209, ifd0Id }, // Exif.Image.JPEGACTables + { 0x0211, ifd0Id }, // Exif.Image.YCbCrCoefficients + { 0x0212, ifd0Id }, // Exif.Image.YCbCrSubSampling + { 0x0213, ifd0Id }, // Exif.Image.YCbCrPositioning + { 0x0214, ifd0Id }, // Exif.Image.ReferenceBlackWhite + { 0x828d, ifd0Id }, // Exif.Image.CFARepeatPatternDim + { 0x828e, ifd0Id }, // Exif.Image.CFAPattern + { 0x8773, ifd0Id }, // Exif.Image.InterColorProfile + { 0x8824, ifd0Id }, // Exif.Image.SpectralSensitivity + { 0x8828, ifd0Id }, // Exif.Image.OECF + { 0x9102, ifd0Id }, // Exif.Image.CompressedBitsPerPixel + { 0x9217, ifd0Id }, // Exif.Image.SensingMethod + }; + + // If tag, group is one of the image tags listed above -> bingo! + if (find(tiffImageTags, TiffImgTagStruct::Key(tag, group))) { +#ifdef DEBUG + ExifKey key(tag, groupName(group)); + std::cerr << "Image tag: " << key << " (3)\n"; +#endif + return true; + } +#ifdef DEBUG + std::cerr << "Not an image tag: " << tag << " (4)\n"; +#endif + return false; + } + + TiffHeader::TiffHeader(ByteOrder byteOrder, uint32_t offset, bool hasImageTags) + : TiffHeaderBase(42, 8, byteOrder, offset), + hasImageTags_(hasImageTags) + { + } + + TiffHeader::~TiffHeader() + { + } + + bool TiffHeader::isImageTag( uint16_t tag, + IfdId group, + const PrimaryGroups* pPrimaryGroups) const + { + if (!hasImageTags_) { +#ifdef DEBUG + std::cerr << "No image tags in this image\n"; +#endif + return false; + } +#ifdef DEBUG + ExifKey key(tag, groupName(group)); +#endif + // If there are primary groups and none matches group, we're done + if ( pPrimaryGroups != 0 + && !pPrimaryGroups->empty() + && std::find(pPrimaryGroups->begin(), pPrimaryGroups->end(), group) + == pPrimaryGroups->end()) { +#ifdef DEBUG + std::cerr << "Not an image tag: " << key << " (1)\n"; +#endif + return false; + } + // All tags of marked primary groups other than IFD0 are considered + // image tags. That should take care of NEFs until we know better. + if ( pPrimaryGroups != 0 + && !pPrimaryGroups->empty() + && group != ifd0Id) { +#ifdef DEBUG + ExifKey key(tag, groupName(group)); + std::cerr << "Image tag: " << key << " (2)\n"; +#endif + return true; + } + // Finally, if tag, group is one of the TIFF image tags -> bingo! + return isTiffImageTag(tag, group); + } // TiffHeader::isImageTag + + void OffsetWriter::setOrigin(OffsetId id, uint32_t origin, ByteOrder byteOrder) + { + offsetList_[id] = OffsetData(origin, byteOrder); + } + + void OffsetWriter::setTarget(OffsetId id, uint32_t target) + { + OffsetList::iterator it = offsetList_.find(id); + if (it != offsetList_.end()) it->second.target_ = target; + } + + void OffsetWriter::writeOffsets(BasicIo& io) const + { + for (OffsetList::const_iterator it = offsetList_.begin(); it != offsetList_.end(); ++it) { + io.seek(it->second.origin_, BasicIo::beg); + byte buf[4] = { 0, 0, 0, 0 }; + l2Data(buf, it->second.target_, it->second.byteOrder_); + io.write(buf, 4); + } + } + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/tiffimage_int.hpp b/vendor/exiv2-0.25/src/tiffimage_int.hpp new file mode 100644 index 0000000..23da8c1 --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffimage_int.hpp @@ -0,0 +1,492 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tiffimage_int.hpp + @brief Internal class TiffParserWorker to parse TIFF data. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 23-Apr-08, ahu: created + */ +#ifndef TIFFIMAGE_INT_HPP_ +#define TIFFIMAGE_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "tifffwd_int.hpp" +#include "tiffcomposite_int.hpp" +#include "image.hpp" +#include "tags_int.hpp" +#include "types.hpp" + +// + standard includes +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + /*! + @brief Contains internal objects which are not published and are not part + of the libexiv2 API. + */ + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief Abstract base class defining the interface of an image header. + Used internally by classes for TIFF-based images. Default + implementation is for the regular TIFF header. + */ + class TiffHeaderBase { + public: + //! @name Creators + //@{ + //! Constructor taking \em tag, \em size and default \em byteOrder and \em offset. + TiffHeaderBase(uint16_t tag, + uint32_t size, + ByteOrder byteOrder, + uint32_t offset); + //! Virtual destructor. + virtual ~TiffHeaderBase() =0; + //@} + + //! @name Manipulators + //@{ + /*! + @brief Read the image header from a data buffer. Return false if the + data buffer does not contain an image header of the expected + format, else true. + + @param pData Pointer to the data buffer. + @param size Number of bytes in the data buffer. + @return True if the TIFF header was read successfully. False if the + data buffer does not contain a valid TIFF header. + */ + virtual bool read(const byte* pData, uint32_t size); + //! Set the byte order. + virtual void setByteOrder(ByteOrder byteOrder); + //! Set the offset to the start of the root directory. + virtual void setOffset(uint32_t offset); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the image header in binary format. + The caller owns this data and %DataBuf ensures that it will be deleted. + + @return Binary header data. + */ + virtual DataBuf write() const; + /*! + @brief Print debug info for the image header to \em os. + + @param os Output stream to write to. + @param prefix Prefix to be written before each line of output. + */ + virtual void print(std::ostream& os, const std::string& prefix ="") const; + //! Return the byte order (little or big endian). + virtual ByteOrder byteOrder() const; + //! Return the offset to the start of the root directory. + virtual uint32_t offset() const; + //! Return the size (in bytes) of the image header. + virtual uint32_t size() const; + //! Return the tag value (magic number) which identifies the buffer as TIFF data. + virtual uint16_t tag() const; + /*! + @brief Return \c true if the %Exif \em tag from \em group is an image tag. + + Certain tags of TIFF and TIFF-like images are required to correctly + display the primary image. These image tags contain image data rather + than metadata. + + @param tag Tag number. + @param group Group identifier. + @param pPrimaryGroups Pointer to a list of TIFF groups that contain + primary images, empty if none are marked. + + @return The default implementation returns \c false. + */ + virtual bool isImageTag( uint16_t tag, + IfdId group, + const PrimaryGroups* pPrimaryGroups) const; + //@} + + private: + // DATA + const uint16_t tag_; //!< Tag to identify the buffer as TIFF data + const uint32_t size_; //!< Size of the header + ByteOrder byteOrder_; //!< Applicable byte order + uint32_t offset_; //!< Offset to the start of the root dir + + }; // class TiffHeaderBase + + //! Convenience function to check if tag, group is in the list of TIFF image tags. + bool isTiffImageTag(uint16_t tag, IfdId group); + + /*! + @brief Standard TIFF header structure. + */ + class TiffHeader : public TiffHeaderBase { + public: + //! @name Creators + //@{ + //! Default constructor + TiffHeader(ByteOrder byteOrder =littleEndian, + uint32_t offset =0x00000008, + bool hasImageTags =true); + //! Destructor + ~TiffHeader(); + //@} + //@{ + //! @name Accessors + bool isImageTag( uint16_t tag, + IfdId group, + const PrimaryGroups* pPrimaryGroups) const; + //@} + + private: + // DATA + bool hasImageTags_; //!< Indicates if image tags are supported + }; // class TiffHeader + + /*! + @brief Data structure used to list image tags for TIFF and TIFF-like images. + */ + struct TiffImgTagStruct { + //! Search key for TIFF image tag structure. + struct Key { + //! Constructor + Key(uint16_t t, IfdId g) : t_(t), g_(g) {} + uint16_t t_; //!< %Tag + IfdId g_; //!< %Group + }; + + //! Comparison operator to compare a TiffImgTagStruct with a TiffImgTagStruct::Key + bool operator==(const Key& key) const + { + return key.g_ == group_ && key.t_ == tag_; + } + + // DATA + uint16_t tag_; //!< Image tag + IfdId group_; //!< Group that contains the image tag + }; // struct TiffImgTagStruct + + /*! + @brief Data structure used as a row (element) of a table (array) + defining the TIFF component used for each tag in a group. + */ + struct TiffGroupStruct { + //! Search key for TIFF group structure. + struct Key { + //! Constructor + Key(uint32_t e, IfdId g) : e_(e), g_(g) {} + uint32_t e_; //!< Extended tag + IfdId g_; //!< %Group + }; + + //! Comparison operator to compare a TiffGroupStruct with a TiffGroupStruct::Key + bool operator==(const Key& key) const + { + return key.g_ == group_ + && (Tag::all == extendedTag_ || key.e_ == extendedTag_); + } + //! Return the tag corresponding to the extended tag + uint16_t tag() const { return static_cast(extendedTag_ & 0xffff); } + + // DATA + uint32_t extendedTag_; //!< Tag (32 bit so that it can contain special tags) + IfdId group_; //!< Group that contains the tag + NewTiffCompFct newTiffCompFct_; //!< Function to create the correct TIFF component + }; + + /*! + @brief Data structure used as a row of the table which describes TIFF trees. + Multiple trees are needed as TIFF-based RAW image formats do not always + use standard TIFF layout. + */ + struct TiffTreeStruct { + struct Key; + //! Comparison operator to compare a TiffTreeStruct with a TiffTreeStruct::Key + bool operator==(const Key& key) const; + + // DATA + uint32_t root_; //!< Tree root element, identifies a tree + IfdId group_; //!< Each group is a node in the tree + IfdId parentGroup_; //!< Parent group + uint32_t parentExtTag_; //!< Parent tag (32 bit so that it can contain special tags) + }; + + //! Search key for TIFF tree structure. + struct TiffTreeStruct::Key { + //! Constructor + Key(uint32_t r, IfdId g) : r_(r), g_(g) {} + uint32_t r_; //!< Root + IfdId g_; //!< %Group + }; + + /*! + @brief TIFF component factory. + */ + class TiffCreator { + public: + /*! + @brief Create the TiffComponent for TIFF entry \em extendedTag and + \em group. The embedded lookup table is used to find the correct + component creation function. If the pointer that is returned + is 0, then the TIFF entry should be ignored. + */ + static std::auto_ptr create(uint32_t extendedTag, + IfdId group); + /*! + @brief Get the path, i.e., a list of extended tag and group pairs, from + the \em root TIFF element to the TIFF entry \em extendedTag and + \em group. + */ + static void getPath(TiffPath& tiffPath, + uint32_t extendedTag, + IfdId group, + uint32_t root); + + private: + static const TiffTreeStruct tiffTreeStruct_[]; // parse( + const byte* pData, + uint32_t size, + uint32_t root, + TiffHeaderBase* pHeader + ); + /*! + @brief Find primary groups in the source tree provided and populate + the list of primary groups. + + @param primaryGroups List of primary groups which is populated + @param pSourceDir Pointer to the source composite tree to search (may be 0) + */ + static void findPrimaryGroups( + PrimaryGroups& primaryGroups, + TiffComponent* pSourceDir + ); + + }; // class TiffParserWorker + + /*! + @brief Table of TIFF decoding and encoding functions and find functions. + This class is separated from the metadata decoder and encoder + visitors so that the parser can be parametrized with a different + table if needed. This is used, eg., for CR2 format, which uses a + different decoder table. + */ + class TiffMapping { + public: + /*! + @brief Find the decoder function for a key. + + If the returned pointer is 0, the tag should not be decoded, + else the decoder function should be used. + + @param make Camera make + @param extendedTag Extended tag + @param group %Group + + @return Pointer to the decoder function + */ + static DecoderFct findDecoder(const std::string& make, + uint32_t extendedTag, + IfdId group); + /*! + @brief Find special encoder function for a key. + + If the returned pointer is 0, the tag should be encoded with the + encoder function of the TIFF component, else the encoder function + should be used. + + @param make Camera make + @param extendedTag Extended tag + @param group %Group + + @return Pointer to the encoder function + */ + static EncoderFct findEncoder( + const std::string& make, + uint32_t extendedTag, + IfdId group + ); + + private: + static const TiffMappingInfo tiffMappingInfo_[]; // OffsetList; + + // DATA + OffsetList offsetList_; //!< List of the offsets to replace + + }; // class OffsetWriter + + // Todo: Move this class to metadatum_int.hpp or tags_int.hpp + //! Unary predicate that matches an Exifdatum with a given IfdId. + class FindExifdatum { + public: + //! Constructor, initializes the object with the IfdId to look for. + FindExifdatum(Exiv2::Internal::IfdId ifdId) : ifdId_(ifdId) {} + //! Returns true if IFD id matches. + bool operator()(const Exiv2::Exifdatum& md) const { return ifdId_ == md.ifdId(); } + + private: + Exiv2::Internal::IfdId ifdId_; + + }; // class FindExifdatum + +}} // namespace Internal, Exiv2 + +#endif // #ifndef TIFFIMAGE_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/tiffmn-test.cpp b/vendor/exiv2-0.25/src/tiffmn-test.cpp new file mode 100644 index 0000000..626c302 --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffmn-test.cpp @@ -0,0 +1,212 @@ +// ***************************************************************** -*- C++ -*- +// tiffmn-test.cpp, $Rev: 1512 $ +// Makernote TIFF writer tests. + +#include "tiffimage.hpp" +#include "exif.hpp" +#include "error.hpp" + +#include +#include +#include + +using namespace Exiv2; + +void canonmn(const std::string& path); +void fujimn(const std::string& path); +void minoltamn(const std::string& path); +void nikon1mn(const std::string& path); +void nikon2mn(const std::string& path); +void nikon3mn(const std::string& path); +void olympusmn(const std::string& path); +void panasonicmn(const std::string& path); +void sigmamn(const std::string& path); +void sony1mn(const std::string& path); +void sony2mn(const std::string& path); + +void print(const ExifData& exifData); + +int main() +try { + canonmn("exiv2-canonmn.tif"); + fujimn("exiv2-fujimn.tif"); + minoltamn("exiv2-minoltamn.tif"); + nikon1mn("exiv2-nikon1mn.tif"); + nikon2mn("exiv2-nikon2mn.tif"); + nikon3mn("exiv2-nikon3mn.tif"); + olympusmn("exiv2-olympusmn.tif"); + panasonicmn("exiv2-panasonicmn.tif"); + sigmamn("exiv2-sigmamn.tif"); + sony1mn("exiv2-sony1mn.tif"); + sony2mn("exiv2-sony2mn.tif"); + + return 0; +} +catch (const Error& e) { + std::cout << e << "\n"; +} + +void canonmn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "Canon"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Canon.OwnerName"] = "Camera Owner"; + + print(exifData); + tiffImage.writeMetadata(); +} + +void fujimn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "FUJIFILM"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Fujifilm.Quality"] = "Very good"; + + print(exifData); + tiffImage.writeMetadata(); +} + +void minoltamn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "Minolta"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Minolta.Quality"] = uint32_t(42); + + print(exifData); + tiffImage.writeMetadata(); +} + +void nikon1mn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "NIKON"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Nikon1.Quality"] = "Excellent"; + + print(exifData); + tiffImage.writeMetadata(); +} + +void nikon2mn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "NIKON"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Nikon2.Quality"] = uint16_t(42); + + print(exifData); + tiffImage.writeMetadata(); +} + +void nikon3mn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "NIKON"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Nikon3.Quality"] = "Nikon3 quality"; + + print(exifData); + tiffImage.writeMetadata(); +} + +void olympusmn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "OLYMPUS"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Olympus.Quality"] = uint16_t(42); + + print(exifData); + tiffImage.writeMetadata(); +} + +void panasonicmn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "Panasonic"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Panasonic.Quality"] = uint16_t(42); + + print(exifData); + tiffImage.writeMetadata(); +} + +void sigmamn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "SIGMA"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Sigma.Quality"] = "Sigma quality"; + + print(exifData); + tiffImage.writeMetadata(); +} + +void sony1mn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "SONY"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Sony.0x2000"] = uint16_t(42); + + print(exifData); + tiffImage.writeMetadata(); +} + +void sony2mn(const std::string& path) +{ + TiffImage tiffImage(BasicIo::AutoPtr(new FileIo(path)), false); + ExifData& exifData = tiffImage.exifData(); + + exifData["Exif.Image.Make"] = "SONY"; + exifData["Exif.Photo.DateTimeOriginal"] = "Yesterday at noon"; + exifData["Exif.Sony.0x2001"] = uint16_t(43); + + print(exifData); + tiffImage.writeMetadata(); +} + +void print(const ExifData& exifData) +{ + if (exifData.empty()) { + std::string 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) { + 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 + << i->typeName() << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + } +} diff --git a/vendor/exiv2-0.25/src/tiffvisitor.cpp b/vendor/exiv2-0.25/src/tiffvisitor.cpp new file mode 100644 index 0000000..2baadb1 --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffvisitor.cpp @@ -0,0 +1,1638 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: tiffvisitor.cpp + Version: $Rev: 3846 $ + Author(s): Andreas Huggel (ahu) + History: 11-Apr-06, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: tiffvisitor.cpp 3846 2015-06-08 14:39:59Z ahuggel $") + +// included header files +#include "config.h" + +#include "tiffcomposite_int.hpp" // Do not change the order of these 2 includes, +#include "tiffvisitor_int.hpp" // see bug #487 +#include "tiffimage_int.hpp" +#include "makernote_int.hpp" +#include "exif.hpp" +#include "iptc.hpp" +#include "value.hpp" +#include "image.hpp" +#include "jpgimage.hpp" +#include "i18n.h" // NLS support. + +// + standard includes +#include +#include +#include +#include + +// ***************************************************************************** +namespace { + //! Unary predicate that matches an Exifdatum with a given group and index. + class FindExifdatum2 { + public: + //! Constructor, initializes the object with the group and index to look for. + FindExifdatum2(Exiv2::Internal::IfdId group, int idx) + : groupName_(Exiv2::Internal::groupName(group)), idx_(idx) {} + //! Returns true if group and index match. + bool operator()(const Exiv2::Exifdatum& md) const + { + return idx_ == md.idx() && 0 == strcmp(md.groupName().c_str(), groupName_); + } + + private: + const char* groupName_; + int idx_; + + }; // class FindExifdatum2 + + Exiv2::ByteOrder stringToByteOrder(const std::string& val) + { + Exiv2::ByteOrder bo = Exiv2::invalidByteOrder; + if (0 == strcmp("II", val.c_str())) bo = Exiv2::littleEndian; + else if (0 == strcmp("MM", val.c_str())) bo = Exiv2::bigEndian; + + return bo; + } +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + namespace Internal { + + TiffVisitor::TiffVisitor() + { + for (int i = 0; i < events_; ++i) { + go_[i] = true; + } + } + + TiffVisitor::~TiffVisitor() + { + } + + void TiffVisitor::setGo(GoEvent event, bool go) + { + assert(event >= 0 && static_cast(event) < events_); + go_[event] = go; + } + + bool TiffVisitor::go(GoEvent event) const + { + assert(event >= 0 && static_cast(event) < events_); + return go_[event]; + } + + void TiffVisitor::visitDirectoryNext(TiffDirectory* /*object*/) + { + } + + void TiffVisitor::visitDirectoryEnd(TiffDirectory* /*object*/) + { + } + + void TiffVisitor::visitIfdMakernoteEnd(TiffIfdMakernote* /*object*/) + { + } + + void TiffVisitor::visitBinaryArrayEnd(TiffBinaryArray* /*object*/) + { + } + + void TiffFinder::init(uint16_t tag, IfdId group) + { + tag_ = tag; + group_ = group; + tiffComponent_ = 0; + setGo(geTraverse, true); + } + + TiffFinder::~TiffFinder() + { + } + + void TiffFinder::findObject(TiffComponent* object) + { + if (object->tag() == tag_ && object->group() == group_) { + tiffComponent_ = object; + setGo(geTraverse, false); + } + } + + void TiffFinder::visitEntry(TiffEntry* object) + { + findObject(object); + } + + void TiffFinder::visitDataEntry(TiffDataEntry* object) + { + findObject(object); + } + + void TiffFinder::visitImageEntry(TiffImageEntry* object) + { + findObject(object); + } + + void TiffFinder::visitSizeEntry(TiffSizeEntry* object) + { + findObject(object); + } + + void TiffFinder::visitDirectory(TiffDirectory* object) + { + findObject(object); + } + + void TiffFinder::visitSubIfd(TiffSubIfd* object) + { + findObject(object); + } + + void TiffFinder::visitMnEntry(TiffMnEntry* object) + { + findObject(object); + } + + void TiffFinder::visitIfdMakernote(TiffIfdMakernote* object) + { + findObject(object); + } + + void TiffFinder::visitBinaryArray(TiffBinaryArray* object) + { + findObject(object); + } + + void TiffFinder::visitBinaryElement(TiffBinaryElement* object) + { + findObject(object); + } + + TiffCopier::TiffCopier( TiffComponent* pRoot, + uint32_t root, + const TiffHeaderBase* pHeader, + const PrimaryGroups* pPrimaryGroups) + : pRoot_(pRoot), + root_(root), + pHeader_(pHeader), + pPrimaryGroups_(pPrimaryGroups) + { + assert(pRoot_ != 0); + assert(pHeader_ != 0); + assert(pPrimaryGroups_ != 0); + } + + TiffCopier::~TiffCopier() + { + } + + void TiffCopier::copyObject(TiffComponent* object) + { + assert(object != 0); + + if (pHeader_->isImageTag(object->tag(), object->group(), pPrimaryGroups_)) { + TiffComponent::AutoPtr clone = object->clone(); + // Assumption is that the corresponding TIFF entry doesn't exist + TiffPath tiffPath; + TiffCreator::getPath(tiffPath, object->tag(), object->group(), root_); + pRoot_->addPath(object->tag(), tiffPath, pRoot_, clone); +#ifdef DEBUG + ExifKey key(object->tag(), groupName(object->group())); + std::cerr << "Copied " << key << "\n"; +#endif + } + } + + void TiffCopier::visitEntry(TiffEntry* object) + { + copyObject(object); + } + + void TiffCopier::visitDataEntry(TiffDataEntry* object) + { + copyObject(object); + } + + void TiffCopier::visitImageEntry(TiffImageEntry* object) + { + copyObject(object); + } + + void TiffCopier::visitSizeEntry(TiffSizeEntry* object) + { + copyObject(object); + } + + void TiffCopier::visitDirectory(TiffDirectory* /*object*/) + { + // Do not copy directories (avoids problems with SubIfds) + } + + void TiffCopier::visitSubIfd(TiffSubIfd* object) + { + copyObject(object); + } + + void TiffCopier::visitMnEntry(TiffMnEntry* object) + { + copyObject(object); + } + + void TiffCopier::visitIfdMakernote(TiffIfdMakernote* object) + { + copyObject(object); + } + + void TiffCopier::visitBinaryArray(TiffBinaryArray* object) + { + copyObject(object); + } + + void TiffCopier::visitBinaryElement(TiffBinaryElement* object) + { + copyObject(object); + } + + TiffDecoder::TiffDecoder( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + TiffComponent* const pRoot, + FindDecoderFct findDecoderFct + ) + : exifData_(exifData), + iptcData_(iptcData), + xmpData_(xmpData), + pRoot_(pRoot), + findDecoderFct_(findDecoderFct), + decodedIptc_(false) + { + assert(pRoot != 0); + + exifData_.clear(); + iptcData_.clear(); + xmpData_.clear(); + + // Find camera make + TiffFinder finder(0x010f, ifd0Id); + pRoot_->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + if (te && te->pValue()) { + make_ = te->pValue()->toString(); + } + } + + TiffDecoder::~TiffDecoder() + { + } + + void TiffDecoder::visitEntry(TiffEntry* object) + { + decodeTiffEntry(object); + } + + void TiffDecoder::visitDataEntry(TiffDataEntry* object) + { + decodeTiffEntry(object); + } + + void TiffDecoder::visitImageEntry(TiffImageEntry* object) + { + decodeTiffEntry(object); + } + + void TiffDecoder::visitSizeEntry(TiffSizeEntry* object) + { + decodeTiffEntry(object); + } + + void TiffDecoder::visitDirectory(TiffDirectory* /*object*/) + { + // Nothing to do + } + + void TiffDecoder::visitSubIfd(TiffSubIfd* object) + { + decodeTiffEntry(object); + } + + void TiffDecoder::visitMnEntry(TiffMnEntry* object) + { + // Always decode binary makernote tag + decodeTiffEntry(object); + } + + void TiffDecoder::visitIfdMakernote(TiffIfdMakernote* object) + { + assert(object != 0); + + exifData_["Exif.MakerNote.Offset"] = object->mnOffset(); + switch (object->byteOrder()) { + case littleEndian: + exifData_["Exif.MakerNote.ByteOrder"] = "II"; + break; + case bigEndian: + exifData_["Exif.MakerNote.ByteOrder"] = "MM"; + break; + case invalidByteOrder: + assert(object->byteOrder() != invalidByteOrder); + break; + } + } + + void TiffDecoder::getObjData(byte const*& pData, + long& size, + uint16_t tag, + IfdId group, + const TiffEntryBase* object) + { + if (object && object->tag() == tag && object->group() == group) { + pData = object->pData(); + size = object->size(); + return; + } + TiffFinder finder(tag, group); + pRoot_->accept(finder); + TiffEntryBase const* te = dynamic_cast(finder.result()); + if (te) { + pData = te->pData(); + size = te->size(); + return; + } + } + + void TiffDecoder::decodeXmp(const TiffEntryBase* object) + { + // add Exif tag anyway + decodeStdTiffEntry(object); + + byte const* pData = 0; + long size = 0; + getObjData(pData, size, 0x02bc, ifd0Id, object); + if (pData) { + std::string xmpPacket; + xmpPacket.assign(reinterpret_cast(pData), size); + std::string::size_type idx = xmpPacket.find_first_of('<'); + if (idx != std::string::npos && idx > 0) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Removing " << static_cast(idx) + << " characters from the beginning of the XMP packet\n"; +#endif + xmpPacket = xmpPacket.substr(idx); + } + if (XmpParser::decode(xmpData_, xmpPacket)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + } + } // TiffDecoder::decodeXmp + + void TiffDecoder::decodeIptc(const TiffEntryBase* object) + { + // add Exif tag anyway + decodeStdTiffEntry(object); + + // All tags are read at this point, so the first time we come here, + // find the relevant IPTC tag and decode IPTC if found + if (decodedIptc_) { + return; + } + decodedIptc_ = true; + // 1st choice: IPTCNAA + byte const* pData = 0; + long size = 0; + getObjData(pData, size, 0x83bb, ifd0Id, object); + if (pData) { + if (0 == IptcParser::decode(iptcData_, pData, size)) { + return; + } +#ifndef SUPPRESS_WARNINGS + else { + EXV_WARNING << "Failed to decode IPTC block found in " + << "Directory Image, entry 0x83bb\n"; + } +#endif + } + + // 2nd choice if no IPTCNAA record found or failed to decode it: + // ImageResources + pData = 0; + size = 0; + getObjData(pData, size, 0x8649, ifd0Id, object); + if (pData) { + byte const* record = 0; + uint32_t sizeHdr = 0; + uint32_t sizeData = 0; + if (0 != Photoshop::locateIptcIrb(pData, size, + &record, &sizeHdr, &sizeData)) { + return; + } + if (0 == IptcParser::decode(iptcData_, record + sizeHdr, sizeData)) { + return; + } +#ifndef SUPPRESS_WARNINGS + else { + EXV_WARNING << "Failed to decode IPTC block found in " + << "Directory Image, entry 0x8649\n"; + } +#endif + } + } // TiffMetadataDecoder::decodeIptc + + void TiffDecoder::decodeTiffEntry(const TiffEntryBase* object) + { + assert(object != 0); + + // Don't decode the entry if value is not set + if (!object->pValue()) return; + + const DecoderFct decoderFct = findDecoderFct_(make_, + object->tag(), + object->group()); + // skip decoding if decoderFct == 0 + if (decoderFct) { + EXV_CALL_MEMBER_FN(*this, decoderFct)(object); + } + } // TiffDecoder::decodeTiffEntry + + void TiffDecoder::decodeStdTiffEntry(const TiffEntryBase* object) + { + assert(object != 0); + ExifKey key(object->tag(), groupName(object->group())); + key.setIdx(object->idx()); + exifData_.add(key, object->pValue()); + + } // TiffDecoder::decodeTiffEntry + + void TiffDecoder::visitBinaryArray(TiffBinaryArray* object) + { + if (object->cfg() == 0 || !object->decoded()) { + decodeTiffEntry(object); + } + } + + void TiffDecoder::visitBinaryElement(TiffBinaryElement* object) + { + decodeTiffEntry(object); + } + + TiffEncoder::TiffEncoder( + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData, + TiffComponent* pRoot, + const bool isNewImage, + const PrimaryGroups* pPrimaryGroups, + const TiffHeaderBase* pHeader, + FindEncoderFct findEncoderFct + ) + : exifData_(exifData), + iptcData_(iptcData), + xmpData_(xmpData), + del_(true), + pHeader_(pHeader), + pRoot_(pRoot), + isNewImage_(isNewImage), + pPrimaryGroups_(pPrimaryGroups), + pSourceTree_(0), + findEncoderFct_(findEncoderFct), + dirty_(false), + writeMethod_(wmNonIntrusive) + { + assert(pRoot != 0); + assert(pPrimaryGroups != 0); + assert(pHeader != 0); + + byteOrder_ = pHeader->byteOrder(); + origByteOrder_ = byteOrder_; + + encodeIptc(); + encodeXmp(); + + // Find camera make + ExifKey key("Exif.Image.Make"); + ExifData::const_iterator pos = exifData_.findKey(key); + if (pos != exifData_.end()) { + make_ = pos->toString(); + } + if (make_.empty() && pRoot_) { + TiffFinder finder(0x010f, ifd0Id); + pRoot_->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + if (te && te->pValue()) { + make_ = te->pValue()->toString(); + } + } + } + + TiffEncoder::~TiffEncoder() + { + } + + void TiffEncoder::encodeIptc() + { + // Update IPTCNAA Exif tag, if it exists. Delete the tag if there + // is no IPTC data anymore. + // If there is new IPTC data and Exif.Image.ImageResources does + // not exist, create a new IPTCNAA Exif tag. + bool del = false; + ExifKey iptcNaaKey("Exif.Image.IPTCNAA"); + ExifData::iterator pos = exifData_.findKey(iptcNaaKey); + if (pos != exifData_.end()) { + iptcNaaKey.setIdx(pos->idx()); + exifData_.erase(pos); + del = true; + } + DataBuf rawIptc = IptcParser::encode(iptcData_); + ExifKey irbKey("Exif.Image.ImageResources"); + pos = exifData_.findKey(irbKey); + if (pos != exifData_.end()) { + irbKey.setIdx(pos->idx()); + } + if (rawIptc.size_ != 0 && (del || pos == exifData_.end())) { + Value::AutoPtr value = Value::create(unsignedLong); + DataBuf buf; + if (rawIptc.size_ % 4 != 0) { + // Pad the last unsignedLong value with 0s + buf.alloc((rawIptc.size_ / 4) * 4 + 4); + memset(buf.pData_, 0x0, buf.size_); + memcpy(buf.pData_, rawIptc.pData_, rawIptc.size_); + } + else { + buf = rawIptc; // Note: This resets rawIptc + } + value->read(buf.pData_, buf.size_, byteOrder_); + Exifdatum iptcDatum(iptcNaaKey, value.get()); + exifData_.add(iptcDatum); + pos = exifData_.findKey(irbKey); // needed after add() + } + // Also update IPTC IRB in Exif.Image.ImageResources if it exists, + // but don't create it if not. + if (pos != exifData_.end()) { + DataBuf irbBuf(pos->value().size()); + pos->value().copy(irbBuf.pData_, invalidByteOrder); + irbBuf = Photoshop::setIptcIrb(irbBuf.pData_, irbBuf.size_, iptcData_); + exifData_.erase(pos); + if (irbBuf.size_ != 0) { + Value::AutoPtr value = Value::create(unsignedByte); + value->read(irbBuf.pData_, irbBuf.size_, invalidByteOrder); + Exifdatum iptcDatum(irbKey, value.get()); + exifData_.add(iptcDatum); + } + } + } // TiffEncoder::encodeIptc + + void TiffEncoder::encodeXmp() + { +#ifdef EXV_HAVE_XMP_TOOLKIT + ExifKey xmpKey("Exif.Image.XMLPacket"); + // Remove any existing XMP Exif tag + ExifData::iterator pos = exifData_.findKey(xmpKey); + if (pos != exifData_.end()) { + xmpKey.setIdx(pos->idx()); + exifData_.erase(pos); + } + std::string xmpPacket; + if (XmpParser::encode(xmpPacket, xmpData_) > 1) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to encode XMP metadata.\n"; +#endif + } + if (!xmpPacket.empty()) { + // Set the XMP Exif tag to the new value + Value::AutoPtr value = Value::create(unsignedByte); + value->read(reinterpret_cast(&xmpPacket[0]), + static_cast(xmpPacket.size()), + invalidByteOrder); + Exifdatum xmpDatum(xmpKey, value.get()); + exifData_.add(xmpDatum); + } +#endif + } // TiffEncoder::encodeXmp + + void TiffEncoder::setDirty(bool flag) + { + dirty_ = flag; + setGo(geTraverse, !flag); + } + + bool TiffEncoder::dirty() const + { + if (dirty_ || exifData_.count() > 0) return true; + return false; + } + + void TiffEncoder::visitEntry(TiffEntry* object) + { + encodeTiffComponent(object); + } + + void TiffEncoder::visitDataEntry(TiffDataEntry* object) + { + encodeTiffComponent(object); + } + + void TiffEncoder::visitImageEntry(TiffImageEntry* object) + { + encodeTiffComponent(object); + } + + void TiffEncoder::visitSizeEntry(TiffSizeEntry* object) + { + encodeTiffComponent(object); + } + + void TiffEncoder::visitDirectory(TiffDirectory* /*object*/) + { + // Nothing to do + } + + void TiffEncoder::visitDirectoryNext(TiffDirectory* object) + { + // Update type and count in IFD entries, in case they changed + assert(object != 0); + + byte* p = object->start() + 2; + for (TiffDirectory::Components::iterator i = object->components_.begin(); + i != object->components_.end(); ++i) { + p += updateDirEntry(p, byteOrder(), *i); + } + } + + uint32_t TiffEncoder::updateDirEntry(byte* buf, + ByteOrder byteOrder, + TiffComponent* pTiffComponent) const + { + assert(buf); + assert(pTiffComponent); + TiffEntryBase* pTiffEntry = dynamic_cast(pTiffComponent); + assert(pTiffEntry); + us2Data(buf + 2, pTiffEntry->tiffType(), byteOrder); + ul2Data(buf + 4, pTiffEntry->count(), byteOrder); + // Move data to offset field, if it fits and is not yet there. + if (pTiffEntry->size() <= 4 && buf + 8 != pTiffEntry->pData()) { +#ifdef DEBUG + std::cerr << "Copying data for tag " << pTiffEntry->tag() + << " to offset area.\n"; +#endif + memset(buf + 8, 0x0, 4); + memcpy(buf + 8, pTiffEntry->pData(), pTiffEntry->size()); + memset(const_cast(pTiffEntry->pData()), 0x0, pTiffEntry->size()); + } + return 12; + } + + void TiffEncoder::visitSubIfd(TiffSubIfd* object) + { + encodeTiffComponent(object); + } + + void TiffEncoder::visitMnEntry(TiffMnEntry* object) + { + // Test is required here as well as in the callback encoder function + if (!object->mn_) { + encodeTiffComponent(object); + } + else if (del_) { + // The makernote is made up of decoded tags, delete binary tag + ExifKey key(object->tag(), groupName(object->group())); + ExifData::iterator pos = exifData_.findKey(key); + if (pos != exifData_.end()) exifData_.erase(pos); + } + } + + void TiffEncoder::visitIfdMakernote(TiffIfdMakernote* object) + { + assert(object != 0); + + ExifData::iterator pos = exifData_.findKey(ExifKey("Exif.MakerNote.ByteOrder")); + if (pos != exifData_.end()) { + // Set Makernote byte order + ByteOrder bo = stringToByteOrder(pos->toString()); + if (bo != invalidByteOrder && bo != object->byteOrder()) { + object->setByteOrder(bo); + setDirty(); + } + if (del_) exifData_.erase(pos); + } + if (del_) { + // Remove remaining synthesized tags + static const char* synthesizedTags[] = { + "Exif.MakerNote.Offset", + }; + for (unsigned int i = 0; i < EXV_COUNTOF(synthesizedTags); ++i) { + ExifData::iterator pos = exifData_.findKey(ExifKey(synthesizedTags[i])); + if (pos != exifData_.end()) exifData_.erase(pos); + } + } + // Modify encoder for Makernote peculiarities, byte order + byteOrder_ = object->byteOrder(); + + } // TiffEncoder::visitIfdMakernote + + void TiffEncoder::visitIfdMakernoteEnd(TiffIfdMakernote* /*object*/) + { + // Reset byte order back to that from the c'tor + byteOrder_ = origByteOrder_; + + } // TiffEncoder::visitIfdMakernoteEnd + + void TiffEncoder::visitBinaryArray(TiffBinaryArray* object) + { + if (object->cfg() == 0 || !object->decoded()) { + encodeTiffComponent(object); + } + } + + void TiffEncoder::visitBinaryArrayEnd(TiffBinaryArray* object) + { + assert(object != 0); + + if (object->cfg() == 0 || !object->decoded()) return; + int32_t size = object->TiffEntryBase::doSize(); + if (size == 0) return; + if (!object->initialize(pRoot_)) return; + + // Re-encrypt buffer if necessary + const CryptFct cryptFct = object->cfg()->cryptFct_; + if (cryptFct != 0) { + const byte* pData = object->pData(); + DataBuf buf = cryptFct(object->tag(), pData, size, pRoot_); + if (buf.size_ > 0) { + pData = buf.pData_; + size = buf.size_; + } + if (!object->updOrigDataBuf(pData, size)) { + setDirty(); + } + } + } + + void TiffEncoder::visitBinaryElement(TiffBinaryElement* object) + { + // Temporarily overwrite byteorder according to that of the binary element + ByteOrder boOrig = byteOrder_; + if (object->elByteOrder() != invalidByteOrder) byteOrder_ = object->elByteOrder(); + encodeTiffComponent(object); + byteOrder_ = boOrig; + } + + bool TiffEncoder::isImageTag(uint16_t tag, IfdId group) const + { + if (!isNewImage_ && pHeader_->isImageTag(tag, group, pPrimaryGroups_)) { + return true; + } + return false; + } + + void TiffEncoder::encodeTiffComponent( + TiffEntryBase* object, + const Exifdatum* datum + ) + { + assert(object != 0); + + ExifData::iterator pos = exifData_.end(); + const Exifdatum* ed = datum; + if (ed == 0) { + // Non-intrusive writing: find matching tag + ExifKey key(object->tag(), groupName(object->group())); + pos = exifData_.findKey(key); + if (pos != exifData_.end()) { + ed = &(*pos); + if (object->idx() != pos->idx()) { + // Try to find exact match (in case of duplicate tags) + ExifData::iterator pos2 = + std::find_if(exifData_.begin(), exifData_.end(), + FindExifdatum2(object->group(), object->idx())); + if (pos2 != exifData_.end() && pos2->key() == key.key()) { + ed = &(*pos2); + pos = pos2; // make sure we delete the correct tag below + } + } + } + else { + setDirty(); +#ifdef DEBUG + std::cerr << "DELETING " << key << ", idx = " << object->idx() << "\n"; +#endif + } + } + else { + // For intrusive writing, the index is used to preserve the order of + // duplicate tags + object->idx_ = ed->idx(); + } + // Skip encoding image tags of existing TIFF image - they were copied earlier - + // but encode image tags of new images (creation) + if (ed && !isImageTag(object->tag(), object->group())) { + const EncoderFct fct = findEncoderFct_(make_, object->tag(), object->group()); + if (fct) { + // If an encoding function is registered for the tag, use it + EXV_CALL_MEMBER_FN(*this, fct)(object, ed); + } + else { + // Else use the encode function at the object (results in a double-dispatch + // to the appropriate encoding function of the encoder. + object->encode(*this, ed); + } + } + if (del_ && pos != exifData_.end()) { + exifData_.erase(pos); + } +#ifdef DEBUG + std::cerr << "\n"; +#endif + } // TiffEncoder::encodeTiffComponent + + void TiffEncoder::encodeBinaryArray(TiffBinaryArray* object, const Exifdatum* datum) + { + encodeOffsetEntry(object, datum); + } // TiffEncoder::encodeBinaryArray + + void TiffEncoder::encodeBinaryElement(TiffBinaryElement* object, const Exifdatum* datum) + { + encodeTiffEntryBase(object, datum); + } // TiffEncoder::encodeArrayElement + + void TiffEncoder::encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum) + { + encodeOffsetEntry(object, datum); + + if (!dirty_ && writeMethod() == wmNonIntrusive) { + assert(object); + assert(object->pValue()); + if ( object->sizeDataArea_ + < static_cast(object->pValue()->sizeDataArea())) { +#ifdef DEBUG + ExifKey key(object->tag(), groupName(object->group())); + std::cerr << "DATAAREA GREW " << key << "\n"; +#endif + setDirty(); + } + else { + // Write the new dataarea, fill with 0x0 +#ifdef DEBUG + ExifKey key(object->tag(), groupName(object->group())); + std::cerr << "Writing data area for " << key << "\n"; +#endif + DataBuf buf = object->pValue()->dataArea(); + memcpy(object->pDataArea_, buf.pData_, buf.size_); + if (object->sizeDataArea_ - buf.size_ > 0) { + memset(object->pDataArea_ + buf.size_, + 0x0, object->sizeDataArea_ - buf.size_); + } + } + } + + } // TiffEncoder::encodeDataEntry + + void TiffEncoder::encodeTiffEntry(TiffEntry* object, const Exifdatum* datum) + { + encodeTiffEntryBase(object, datum); + } // TiffEncoder::encodeTiffEntry + + void TiffEncoder::encodeImageEntry(TiffImageEntry* object, const Exifdatum* datum) + { + encodeOffsetEntry(object, datum); + + uint32_t sizeDataArea = object->pValue()->sizeDataArea(); + + if (sizeDataArea > 0 && writeMethod() == wmNonIntrusive) { +#ifdef DEBUG + std::cerr << "\t DATAAREA IS SET (NON-INTRUSIVE WRITING)"; +#endif + setDirty(); + } + + if (sizeDataArea > 0 && writeMethod() == wmIntrusive) { +#ifdef DEBUG + std::cerr << "\t DATAAREA IS SET (INTRUSIVE WRITING)"; +#endif + // Set pseudo strips (without a data pointer) from the size tag + ExifKey key(object->szTag(), groupName(object->szGroup())); + ExifData::const_iterator pos = exifData_.findKey(key); + const byte* zero = 0; + if (pos == exifData_.end()) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Size tag " << key + << " not found. Writing only one strip.\n"; +#endif + object->strips_.clear(); + object->strips_.push_back(std::make_pair(zero, sizeDataArea)); + } + else { + uint32_t sizeTotal = 0; + object->strips_.clear(); + for (long i = 0; i < pos->count(); ++i) { + uint32_t len = pos->toLong(i); + object->strips_.push_back(std::make_pair(zero, len)); + sizeTotal += len; + } + if (sizeTotal != sizeDataArea) { +#ifndef SUPPRESS_WARNINGS + ExifKey key2(object->tag(), groupName(object->group())); + EXV_ERROR << "Sum of all sizes of " << key + << " != data size of " << key2 << ". " + << "This results in an invalid image.\n"; +#endif + // Todo: How to fix? Write only one strip? + } + } + } + + if (sizeDataArea == 0 && writeMethod() == wmIntrusive) { +#ifdef DEBUG + std::cerr << "\t USE STRIPS FROM SOURCE TREE IMAGE ENTRY"; +#endif + // Set strips from source tree + if (pSourceTree_) { + TiffFinder finder(object->tag(), object->group()); + pSourceTree_->accept(finder); + TiffImageEntry* ti = dynamic_cast(finder.result()); + if (ti) { + object->strips_ = ti->strips_; + } + } +#ifndef SUPPRESS_WARNINGS + else { + ExifKey key2(object->tag(), groupName(object->group())); + EXV_WARNING << "No image data to encode " << key2 << ".\n"; + } +#endif + } + + } // TiffEncoder::encodeImageEntry + + void TiffEncoder::encodeMnEntry(TiffMnEntry* object, const Exifdatum* datum) + { + // Test is required here as well as in the visit function + if (!object->mn_) encodeTiffEntryBase(object, datum); + } // TiffEncoder::encodeMnEntry + + void TiffEncoder::encodeSizeEntry(TiffSizeEntry* object, const Exifdatum* datum) + { + encodeTiffEntryBase(object, datum); + } // TiffEncoder::encodeSizeEntry + + void TiffEncoder::encodeSubIfd(TiffSubIfd* object, const Exifdatum* datum) + { + encodeOffsetEntry(object, datum); + } // TiffEncoder::encodeSubIfd + + void TiffEncoder::encodeTiffEntryBase(TiffEntryBase* object, const Exifdatum* datum) + { + assert(object != 0); + assert(datum != 0); + +#ifdef DEBUG + bool tooLarge = false; +#endif + uint32_t newSize = datum->size(); + if (newSize > object->size_) { // value doesn't fit, encode for intrusive writing + setDirty(); +#ifdef DEBUG + tooLarge = true; +#endif + } + object->updateValue(datum->getValue(), byteOrder()); // clones the value +#ifdef DEBUG + ExifKey key(object->tag(), groupName(object->group())); + std::cerr << "UPDATING DATA " << key; + if (tooLarge) { + std::cerr << "\t\t\t ALLOCATED " << std::dec << object->size_ << " BYTES"; + } +#endif + } // TiffEncoder::encodeTiffEntryBase + + void TiffEncoder::encodeOffsetEntry(TiffEntryBase* object, const Exifdatum* datum) + { + assert(object != 0); + assert(datum != 0); + + uint32_t newSize = datum->size(); + if (newSize > object->size_) { // value doesn't fit, encode for intrusive writing + setDirty(); + object->updateValue(datum->getValue(), byteOrder()); // clones the value +#ifdef DEBUG + ExifKey key(object->tag(), groupName(object->group())); + std::cerr << "UPDATING DATA " << key; + std::cerr << "\t\t\t ALLOCATED " << object->size() << " BYTES"; +#endif + } + else { + object->setValue(datum->getValue()); // clones the value +#ifdef DEBUG + ExifKey key(object->tag(), groupName(object->group())); + std::cerr << "NOT UPDATING " << key; + std::cerr << "\t\t\t PRESERVE VALUE DATA"; +#endif + } + + } // TiffEncoder::encodeOffsetEntry + + void TiffEncoder::add( + TiffComponent* pRootDir, + TiffComponent* pSourceDir, + uint32_t root + ) + { + assert(pRootDir != 0); + + writeMethod_ = wmIntrusive; + pSourceTree_ = pSourceDir; + + // Ensure that the exifData_ entries are not deleted, to be able to + // iterate over all remaining entries. + del_ = false; + + ExifData::const_iterator posBo = exifData_.end(); + for (ExifData::const_iterator i = exifData_.begin(); + i != exifData_.end(); ++i) { + + IfdId group = groupId(i->groupName()); + // Skip synthesized info tags + if (group == mnId) { + if (i->tag() == 0x0002) { + posBo = i; + } + continue; + } + + // Skip image tags of existing TIFF image - they were copied earlier - + // but add and encode image tags of new images (creation) + if (isImageTag(i->tag(), group)) continue; + + // Assumption is that the corresponding TIFF entry doesn't exist + TiffPath tiffPath; + TiffCreator::getPath(tiffPath, i->tag(), group, root); + TiffComponent* tc = pRootDir->addPath(i->tag(), tiffPath, pRootDir); + TiffEntryBase* object = dynamic_cast(tc); +#ifdef DEBUG + if (object == 0) { + std::cerr << "Warning: addPath() didn't add an entry for " + << i->groupName() + << " tag 0x" << std::setw(4) << std::setfill('0') + << std::hex << i->tag() << "\n"; + } +#endif + if (object != 0) { + encodeTiffComponent(object, &(*i)); + } + } + + /* + What follows is a hack. I can't think of a better way to set + the makernote byte order (and other properties maybe) in the + makernote header during intrusive writing. The thing is that + visit/encodeIfdMakernote is not called in this case and there + can't be an Exif tag which corresponds to this component. + */ + if (posBo == exifData_.end()) return; + + TiffFinder finder(0x927c, exifId); + pRootDir->accept(finder); + TiffMnEntry* te = dynamic_cast(finder.result()); + if (te) { + TiffIfdMakernote* tim = dynamic_cast(te->mn_); + if (tim) { + // Set Makernote byte order + ByteOrder bo = stringToByteOrder(posBo->toString()); + if (bo != invalidByteOrder) tim->setByteOrder(bo); + } + } + + } // TiffEncoder::add + + TiffReader::TiffReader(const byte* pData, + uint32_t size, + TiffComponent* pRoot, + TiffRwState state) + : pData_(pData), + size_(size), + pLast_(pData + size), + pRoot_(pRoot), + origState_(state), + mnState_(state), + postProc_(false) + { + pState_ = &origState_; + assert(pData_); + assert(size_ > 0); + + } // TiffReader::TiffReader + + TiffReader::~TiffReader() + { + } + + void TiffReader::setOrigState() + { + pState_ = &origState_; + } + + void TiffReader::setMnState(const TiffRwState* state) + { + if (state != 0) { + // invalidByteOrder indicates 'no change' + if (state->byteOrder() == invalidByteOrder) { + mnState_ = TiffRwState(origState_.byteOrder(), state->baseOffset()); + } + else { + mnState_ = *state; + } + } + pState_ = &mnState_; + } + + ByteOrder TiffReader::byteOrder() const + { + assert(pState_); + return pState_->byteOrder(); + } + + uint32_t TiffReader::baseOffset() const + { + assert(pState_); + return pState_->baseOffset(); + } + + void TiffReader::readDataEntryBase(TiffDataEntryBase* object) + { + assert(object != 0); + + readTiffEntry(object); + TiffFinder finder(object->szTag(), object->szGroup()); + pRoot_->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + if (te && te->pValue()) { + object->setStrips(te->pValue(), pData_, size_, baseOffset()); + } + } + + void TiffReader::visitEntry(TiffEntry* object) + { + readTiffEntry(object); + } + + void TiffReader::visitDataEntry(TiffDataEntry* object) + { + readDataEntryBase(object); + } + + void TiffReader::visitImageEntry(TiffImageEntry* object) + { + readDataEntryBase(object); + } + + void TiffReader::visitSizeEntry(TiffSizeEntry* object) + { + assert(object != 0); + + readTiffEntry(object); + TiffFinder finder(object->dtTag(), object->dtGroup()); + pRoot_->accept(finder); + TiffDataEntryBase* te = dynamic_cast(finder.result()); + if (te && te->pValue()) { + te->setStrips(object->pValue(), pData_, size_, baseOffset()); + } + } + + bool TiffReader::circularReference(const byte* start, IfdId group) + { + DirList::const_iterator pos = dirList_.find(start); + if (pos != dirList_.end()) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << groupName(group) << " pointer references previously read " + << groupName(pos->second) << " directory. Ignored.\n"; +#endif + return true; + } + dirList_[start] = group; + return false; + } + + int TiffReader::nextIdx(IfdId group) + { + return ++idxSeq_[group]; + } + + void TiffReader::postProcess() + { + setMnState(); // All components to be post-processed must be from the Makernote + postProc_ = true; + for (PostList::const_iterator pos = postList_.begin(); pos != postList_.end(); ++pos) { + (*pos)->accept(*this); + } + postProc_ = false; + setOrigState(); + } + + void TiffReader::visitDirectory(TiffDirectory* object) + { + assert(object != 0); + + const byte* p = object->start(); + assert(p >= pData_); + + if (circularReference(object->start(), object->group())) return; + + if (p + 2 > pLast_) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) + << ": IFD exceeds data buffer, cannot read entry count.\n"; +#endif + return; + } + const uint16_t n = getUShort(p, byteOrder()); + p += 2; + // Sanity check with an "unreasonably" large number + if (n > 256) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) << " with " + << n << " entries considered invalid; not read.\n"; +#endif + return; + } + for (uint16_t i = 0; i < n; ++i) { + if (p + 12 > pLast_) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) + << ": IFD entry " << i + << " lies outside of the data buffer.\n"; +#endif + return; + } + uint16_t tag = getUShort(p, byteOrder()); + TiffComponent::AutoPtr tc = TiffCreator::create(tag, object->group()); + // The assertion typically fails if a component is not configured in + // the TIFF structure table + assert(tc.get()); + tc->setStart(p); + object->addChild(tc); + p += 12; + } + + if (object->hasNext()) { + if (p + 4 > pLast_) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) + << ": IFD exceeds data buffer, cannot read next pointer.\n"; +#endif + return; + } + TiffComponent::AutoPtr tc(0); + uint32_t next = getLong(p, byteOrder()); + if (next) { + tc = TiffCreator::create(Tag::next, object->group()); +#ifndef SUPPRESS_WARNINGS + if (tc.get() == 0) { + EXV_WARNING << "Directory " << groupName(object->group()) + << " has an unhandled next pointer.\n"; + } +#endif + } + if (tc.get()) { + if (baseOffset() + next > size_) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) + << ": Next pointer is out of bounds; ignored.\n"; +#endif + return; + } + tc->setStart(pData_ + baseOffset() + next); + object->addNext(tc); + } + } // object->hasNext() + + } // TiffReader::visitDirectory + + void TiffReader::visitSubIfd(TiffSubIfd* object) + { + assert(object != 0); + + readTiffEntry(object); + if ( (object->tiffType() == ttUnsignedLong || object->tiffType() == ttSignedLong + || object->tiffType() == ttTiffIfd) + && object->count() >= 1) { + // Todo: Fix hack + uint32_t maxi = 9; + if (object->group() == ifd1Id) maxi = 1; + for (uint32_t i = 0; i < object->count(); ++i) { + int32_t offset = getLong(object->pData() + 4*i, byteOrder()); + if ( baseOffset() + offset > size_ + || static_cast(baseOffset()) + offset < 0) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << " Sub-IFD pointer " << i + << " is out of bounds; ignoring it.\n"; +#endif + return; + } + if (i >= maxi) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << ": Skipping sub-IFDs beyond the first " << i << ".\n"; +#endif + break; + } + // If there are multiple dirs, group is incremented for each + TiffComponent::AutoPtr td(new TiffDirectory(object->tag(), + static_cast(object->newGroup_ + i))); + td->setStart(pData_ + baseOffset() + offset); + object->addChild(td); + } + } +#ifndef SUPPRESS_WARNINGS + else { + EXV_WARNING << "Directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << " doesn't look like a sub-IFD.\n"; + } +#endif + + } // TiffReader::visitSubIfd + + void TiffReader::visitMnEntry(TiffMnEntry* object) + { + assert(object != 0); + + readTiffEntry(object); + // Find camera make + TiffFinder finder(0x010f, ifd0Id); + pRoot_->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + std::string make; + if (te && te->pValue()) { + make = te->pValue()->toString(); + // create concrete makernote, based on make and makernote contents + object->mn_ = TiffMnCreator::create(object->tag(), + object->mnGroup_, + make, + object->pData_, + object->size_, + byteOrder()); + } + if (object->mn_) object->mn_->setStart(object->pData()); + + } // TiffReader::visitMnEntry + + void TiffReader::visitIfdMakernote(TiffIfdMakernote* object) + { + assert(object != 0); + + object->setImageByteOrder(byteOrder()); // set the byte order for the image + + if (!object->readHeader(object->start(), + static_cast(pLast_ - object->start()), + byteOrder())) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to read " + << groupName(object->ifd_.group()) + << " IFD Makernote header.\n"; +#ifdef DEBUG + if (static_cast(pLast_ - object->start()) >= 16) { + hexdump(std::cerr, object->start(), 16); + } +#endif // DEBUG +#endif // SUPPRESS_WARNINGS + setGo(geKnownMakernote, false); + return; + } + + object->ifd_.setStart(object->start() + object->ifdOffset()); + + // Modify reader for Makernote peculiarities, byte order and offset + object->mnOffset_ = static_cast(object->start() - pData_); + TiffRwState state(object->byteOrder(), object->baseOffset()); + setMnState(&state); + + } // TiffReader::visitIfdMakernote + + void TiffReader::visitIfdMakernoteEnd(TiffIfdMakernote* /*object*/) + { + // Reset state (byte order, create function, offset) back to that for the image + setOrigState(); + } // TiffReader::visitIfdMakernoteEnd + + void TiffReader::readTiffEntry(TiffEntryBase* object) + { + assert(object != 0); + + byte* p = object->start(); + assert(p >= pData_); + + if (p + 12 > pLast_) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Entry in directory " << groupName(object->group()) + << "requests access to memory beyond the data buffer. " + << "Skipping entry.\n"; +#endif + return; + } + // Component already has tag + p += 2; + TiffType tiffType = getUShort(p, byteOrder()); + TypeId typeId = toTypeId(tiffType, object->tag(), object->group()); + long typeSize = TypeInfo::typeSize(typeId); + if (0 == typeSize) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << " has unknown Exif (TIFF) type " << std::dec << tiffType + << "; setting type size 1.\n"; +#endif + typeSize = 1; + } + p += 2; + uint32_t count = getULong(p, byteOrder()); + if (count >= 0x10000000) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << " has invalid size " + << std::dec << count << "*" << typeSize + << "; skipping entry.\n"; +#endif + return; + } + p += 4; + uint32_t size = typeSize * count; + int32_t offset = getLong(p, byteOrder()); + byte* pData = p; + if ( size > 4 + && ( baseOffset() + offset >= size_ + || static_cast(baseOffset()) + offset <= 0)) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Offset of directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << " is out of bounds: " + << "Offset = 0x" << std::setw(8) + << std::setfill('0') << std::hex << offset + << "; truncating the entry\n"; +#endif + size = 0; + } + if (size > 4) { + pData = const_cast(pData_) + baseOffset() + offset; + if (size > static_cast(pLast_ - pData)) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Upper boundary of data for " + << "directory " << groupName(object->group()) + << ", entry 0x" << std::setw(4) + << std::setfill('0') << std::hex << object->tag() + << " is out of bounds: " + << "Offset = 0x" << std::setw(8) + << std::setfill('0') << std::hex << offset + << ", size = " << std::dec << size + << ", exceeds buffer size by " + // cast to make MSVC happy + << static_cast(pData + size - pLast_) + << " Bytes; truncating the entry\n"; +#endif + size = 0; + } + } + Value::AutoPtr v = Value::create(typeId); + assert(v.get()); + v->read(pData, size, byteOrder()); + + object->setValue(v); + object->setData(pData, size); + object->setOffset(offset); + object->setIdx(nextIdx(object->group())); + + } // TiffReader::readTiffEntry + + void TiffReader::visitBinaryArray(TiffBinaryArray* object) + { + assert(object != 0); + + if (!postProc_) { + // Defer reading children until after all other components are read, but + // since state (offset) is not set during post-processing, read entry here + readTiffEntry(object); + object->iniOrigDataBuf(); + postList_.push_back(object); + return; + } + + // Check duplicates + TiffFinder finder(object->tag(), object->group()); + pRoot_->accept(finder); + TiffEntryBase* te = dynamic_cast(finder.result()); + if (te && te->idx() != object->idx()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Not decoding duplicate binary array tag 0x" + << std::setw(4) << std::setfill('0') << std::hex + << object->tag() << std::dec << ", group " + << groupName(object->group()) << ", idx " << object->idx() + << "\n"; +#endif + object->setDecoded(false); + return; + } + + if (object->TiffEntryBase::doSize() == 0) return; + if (!object->initialize(pRoot_)) return; + const ArrayCfg* cfg = object->cfg(); + if (cfg == 0) return; + + const CryptFct cryptFct = cfg->cryptFct_; + if (cryptFct != 0) { + const byte* pData = object->pData(); + int32_t size = object->TiffEntryBase::doSize(); + DataBuf buf = cryptFct(object->tag(), pData, size, pRoot_); + if (buf.size_ > 0) object->setData(buf); + } + + const ArrayDef* defs = object->def(); + const ArrayDef* defsEnd = defs + object->defSize(); + const ArrayDef* def = &cfg->elDefaultDef_; + ArrayDef gap = *def; + + for (uint32_t idx = 0; idx < object->TiffEntryBase::doSize(); ) { + if (defs) { + def = std::find(defs, defsEnd, idx); + if (def == defsEnd) { + if (cfg->concat_) { + // Determine gap-size + const ArrayDef* xdef = defs; + for (; xdef != defsEnd && xdef->idx_ <= idx; ++xdef) {} + uint32_t gapSize = 0; + if (xdef != defsEnd && xdef->idx_ > idx) { + gapSize = xdef->idx_ - idx; + } + else { + gapSize = object->TiffEntryBase::doSize() - idx; + } + gap.idx_ = idx; + gap.tiffType_ = cfg->elDefaultDef_.tiffType_; + gap.count_ = gapSize / cfg->tagStep(); + if (gap.count_ * cfg->tagStep() != gapSize) { + gap.tiffType_ = ttUndefined; + gap.count_ = gapSize; + } + def = ⪆ + } + else { + def = &cfg->elDefaultDef_; + } + } + } + idx += object->addElement(idx, *def); // idx may be different from def->idx_ + } + + } // TiffReader::visitBinaryArray + + void TiffReader::visitBinaryElement(TiffBinaryElement* object) + { + byte* pData = object->start(); + uint32_t size = object->TiffEntryBase::doSize(); + ByteOrder bo = object->elByteOrder(); + if (bo == invalidByteOrder) bo = byteOrder(); + TypeId typeId = toTypeId(object->elDef()->tiffType_, object->tag(), object->group()); + Value::AutoPtr v = Value::create(typeId); + assert(v.get()); + v->read(pData, size, bo); + + object->setValue(v); + object->setOffset(0); + object->setIdx(nextIdx(object->group())); + + } // TiffReader::visitBinaryElement + +}} // namespace Internal, Exiv2 diff --git a/vendor/exiv2-0.25/src/tiffvisitor_int.hpp b/vendor/exiv2-0.25/src/tiffvisitor_int.hpp new file mode 100644 index 0000000..aebc314 --- /dev/null +++ b/vendor/exiv2-0.25/src/tiffvisitor_int.hpp @@ -0,0 +1,736 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file tiffvisitor_int.hpp + @brief Internal operations on a TIFF composite tree, implemented as visitor + classes. + @version $Rev: 3777 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 11-Apr-06, ahu: created + */ +#ifndef TIFFVISITOR_INT_HPP_ +#define TIFFVISITOR_INT_HPP_ + +// ***************************************************************************** +// included header files +#include "exif.hpp" +#include "tifffwd_int.hpp" +#include "types.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// namespace extensions +namespace Exiv2 { + + class IptcData; + class XmpData; + + namespace Internal { + +// ***************************************************************************** +// class definitions + + /*! + @brief Abstract base class defining the interface for TIFF composite + vistors (Visitor pattern) + + A concrete visitor class is used as shown in the example below. Accept() + will invoke the member function corresponding to the concrete type of each + component in the composite. + + @code + void visitorExample(Exiv2::TiffComponent* tiffComponent, Exiv2::TiffVisitor& visitor) + { + tiffComponent->accept(visitor); + } + @endcode + */ + class TiffVisitor { + public: + //! Events for the stop/go flag. See setGo(). + enum GoEvent { + //! Signal to control traversing of the composite tree. + geTraverse = 0, + //! Signal used by TiffReader to signal an unknown makernote. + geKnownMakernote = 1 + // Note: If you add more events here, adjust the events_ constant too! + }; + + private: + static const int events_ = 2; //!< The number of stop/go flags. + bool go_[events_]; //!< Array of stop/go flags. See setGo(). + + public: + //! @name Creators + //@{ + //! Default constructor. Initialises all stop/go flags to true. + TiffVisitor(); + //! Virtual destructor + virtual ~TiffVisitor(); + //@} + + //! @name Manipulators + //@{ + /*! + @brief Set the stop/go flag: true for go, false for stop. + + This mechanism is used by visitors and components to signal special + events. Specifically, TiffFinder sets the geTraverse flag as soon as + it finds the correct component to signal to components that the search + should be aborted. TiffReader uses geKnownMakernote to signal problems + reading a makernote to the TiffMnEntry component. There is an array + of flags, one for each defined \em event, so different signals can be + used independent of each other. + */ + void setGo(GoEvent event, bool go); + //! Operation to perform for a TIFF entry + virtual void visitEntry(TiffEntry* object) =0; + //! Operation to perform for a TIFF data entry + virtual void visitDataEntry(TiffDataEntry* object) =0; + //! Operation to perform for a TIFF image entry + virtual void visitImageEntry(TiffImageEntry* object) =0; + //! Operation to perform for a TIFF size entry + virtual void visitSizeEntry(TiffSizeEntry* object) =0; + //! Operation to perform for a TIFF directory + virtual void visitDirectory(TiffDirectory* object) =0; + /*! + @brief Operation to perform for a TIFF directory, after all components + and before the next entry is processed. + */ + virtual void visitDirectoryNext(TiffDirectory* object); + /*! + @brief Operation to perform for a TIFF directory, at the end of the + processing. + */ + virtual void visitDirectoryEnd(TiffDirectory* object); + //! Operation to perform for a TIFF sub-IFD + virtual void visitSubIfd(TiffSubIfd* object) =0; + //! Operation to perform for the makernote component + virtual void visitMnEntry(TiffMnEntry* object) =0; + //! Operation to perform for an IFD makernote + virtual void visitIfdMakernote(TiffIfdMakernote* object) =0; + //! Operation to perform after processing an IFD makernote + virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object); + //! Operation to perform for a binary array + virtual void visitBinaryArray(TiffBinaryArray* object) =0; + /*! + @brief Operation to perform for a TIFF binary array, at the end + of the processing. + */ + virtual void visitBinaryArrayEnd(TiffBinaryArray* object); + //! Operation to perform for an element of a binary array + virtual void visitBinaryElement(TiffBinaryElement* object) =0; + //@} + + //! @name Accessors + //@{ + //! Check if stop flag for \em event is clear, return true if it's clear. + bool go(GoEvent event) const; + //@} + + }; // class TiffVisitor + + /*! + @brief Search the composite for a component with \em tag and \em group. + Return a pointer to the component or 0, if not found. The class + is ready for a first search after construction and can be + re-initialized with init(). + */ + class TiffFinder : public TiffVisitor { + public: + //! @name Creators + //@{ + //! Constructor, taking \em tag and \em group of the component to find. + TiffFinder(uint16_t tag, IfdId group) + : tag_(tag), group_(group), tiffComponent_(0) {} + //! Virtual destructor + virtual ~TiffFinder(); + //@} + + //! @name Manipulators + //@{ + //! Find tag and group in a TIFF entry + virtual void visitEntry(TiffEntry* object); + //! Find tag and group in a TIFF data entry + virtual void visitDataEntry(TiffDataEntry* object); + //! Find tag and group in a TIFF image entry + virtual void visitImageEntry(TiffImageEntry* object); + //! Find tag and group in a TIFF size entry + virtual void visitSizeEntry(TiffSizeEntry* object); + //! Find tag and group in a TIFF directory + virtual void visitDirectory(TiffDirectory* object); + //! Find tag and group in a TIFF sub-IFD + virtual void visitSubIfd(TiffSubIfd* object); + //! Find tag and group in a TIFF makernote + virtual void visitMnEntry(TiffMnEntry* object); + //! Find tag and group in an IFD makernote + virtual void visitIfdMakernote(TiffIfdMakernote* object); + //! Find tag and group in a binary array + virtual void visitBinaryArray(TiffBinaryArray* object); + //! Find tag and group in an element of a binary array + virtual void visitBinaryElement(TiffBinaryElement* object); + + //! Check if \em object matches \em tag and \em group + void findObject(TiffComponent* object); + //! Initialize the Finder for a new search. + void init(uint16_t tag, IfdId group); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the search result. 0 if no TIFF component was found + for the tag and group combination. + */ + TiffComponent* result() const { return tiffComponent_; } + //@} + + private: + uint16_t tag_; + IfdId group_; + TiffComponent* tiffComponent_; + }; // class TiffFinder + + /*! + @brief Copy all image tags from the source tree (the tree that is traversed) to a + target tree, which is empty except for the root element provided in the + constructor. + */ + class TiffCopier : public TiffVisitor { + public: + //! @name Creators + //@{ + /*! + @brief Constructor + + @param pRoot Pointer to the root element of the (empty) target tree. + @param root + @param pHeader Pointer to the TIFF header of the source image. + @param pPrimaryGroups Pointer to the list of primary groups. + */ + TiffCopier( TiffComponent* pRoot, + uint32_t root, + const TiffHeaderBase* pHeader, + const PrimaryGroups* pPrimaryGroups); + //! Virtual destructor + virtual ~TiffCopier(); + //@} + + //! @name Manipulators + //@{ + //! Copy a TIFF entry if it is an image tag + virtual void visitEntry(TiffEntry* object); + //! Copy a TIFF data entry if it is an image tag + virtual void visitDataEntry(TiffDataEntry* object); + //! Copy a TIFF image entry if it is an image tag + virtual void visitImageEntry(TiffImageEntry* object); + //! Copy a TIFF size entry if it is an image tag + virtual void visitSizeEntry(TiffSizeEntry* object); + //! Copy a TIFF directory if it is an image tag + virtual void visitDirectory(TiffDirectory* object); + //! Copy a TIFF sub-IFD if it is an image tag + virtual void visitSubIfd(TiffSubIfd* object); + //! Copy a TIFF makernote if it is an image tag + virtual void visitMnEntry(TiffMnEntry* object); + //! Copy an IFD makernote if it is an image tag + virtual void visitIfdMakernote(TiffIfdMakernote* object); + //! Copy a binary array if it is an image tag + virtual void visitBinaryArray(TiffBinaryArray* object); + //! Copy an element of a binary array if it is an image tag + virtual void visitBinaryElement(TiffBinaryElement* object); + + //! Check if \em object is an image tag and if so, copy it to the target tree. + void copyObject(TiffComponent* object); + //@} + + private: + TiffComponent* pRoot_; + uint32_t root_; + const TiffHeaderBase* pHeader_; + const PrimaryGroups* pPrimaryGroups_; + }; // class TiffCopier + + /*! + @brief TIFF composite visitor to decode metadata from the TIFF tree and + add it to an Image, which is supplied in the constructor (Visitor + pattern). Used by TiffParser to decode the metadata from a + TIFF composite. + */ + class TiffDecoder : public TiffVisitor { + public: + //! @name Creators + //@{ + /*! + @brief Constructor, taking metadata containers to add the metadata to, + the root element of the composite to decode and a FindDecoderFct + function to get the decoder function for each tag. + */ + TiffDecoder( + ExifData& exifData, + IptcData& iptcData, + XmpData& xmpData, + TiffComponent* const pRoot, + FindDecoderFct findDecoderFct + ); + //! Virtual destructor + virtual ~TiffDecoder(); + //@} + + //! @name Manipulators + //@{ + //! Decode a TIFF entry + virtual void visitEntry(TiffEntry* object); + //! Decode a TIFF data entry + virtual void visitDataEntry(TiffDataEntry* object); + //! Decode a TIFF image entry + virtual void visitImageEntry(TiffImageEntry* object); + //! Decode a TIFF size entry + virtual void visitSizeEntry(TiffSizeEntry* object); + //! Decode a TIFF directory + virtual void visitDirectory(TiffDirectory* object); + //! Decode a TIFF sub-IFD + virtual void visitSubIfd(TiffSubIfd* object); + //! Decode a TIFF makernote + virtual void visitMnEntry(TiffMnEntry* object); + //! Decode an IFD makernote + virtual void visitIfdMakernote(TiffIfdMakernote* object); + //! Decode a binary array + virtual void visitBinaryArray(TiffBinaryArray* object); + //! Decode an element of a binary array + virtual void visitBinaryElement(TiffBinaryElement* object); + + //! Entry function, determines how to decode each tag + void decodeTiffEntry(const TiffEntryBase* object); + //! Decode a standard TIFF entry + void decodeStdTiffEntry(const TiffEntryBase* object); + //! Decode IPTC data from an IPTCNAA tag or Photoshop ImageResources + void decodeIptc(const TiffEntryBase* object); + //! Decode XMP packet from an XMLPacket tag + void decodeXmp(const TiffEntryBase* object); + //@} + + private: + //! @name Manipulators + //@{ + /*! + @brief Get the data for a \em tag and \em group, either from the + \em object provided, if it matches or from the matching element + in the hierarchy. + + Populates \em pData and \em size with the result. If no matching + element is found the function leaves both of these parameters unchanged. + */ + void getObjData(byte const*& pData, + long& size, + uint16_t tag, + IfdId group, + const TiffEntryBase* object); + //@} + + private: + // DATA + ExifData& exifData_; //!< Exif metadata container + IptcData& iptcData_; //!< IPTC metadata container + XmpData& xmpData_; //!< XMP metadata container + TiffComponent* const pRoot_; //!< Root element of the composite + const FindDecoderFct findDecoderFct_; //!< Ptr to the function to find special decoding functions + std::string make_; //!< Camera make, determined from the tags to decode + bool decodedIptc_; //!< Indicates if IPTC has been decoded yet + + }; // class TiffDecoder + + /*! + @brief TIFF composite visitor to encode metadata from an image to the TIFF + tree. The metadata containers and root element of the tree are + supplied in the constructor. Used by TiffParserWorker to encode the + metadata into a TIFF composite. + + For non-intrusive writing, the encoder is used as a visitor (by + passing it to the accept() member of a TiffComponent). The + composite tree is then traversed and metadata from the image is + used to encode each existing component. + + For intrusive writing, add() is called, which loops through the + metadata and creates and populates corresponding TiffComponents + as needed. + */ + class TiffEncoder : public TiffVisitor { + public: + //! @name Creators + //@{ + /*! + @brief Constructor, taking the root element of the composite to encode + to, the image with the metadata to encode and a function to + find special encoders. + */ + TiffEncoder( + const ExifData& exifData, + const IptcData& iptcData, + const XmpData& xmpData, + TiffComponent* pRoot, + const bool isNewImage, + const PrimaryGroups* pPrimaryGroups, + const TiffHeaderBase* pHeader, + FindEncoderFct findEncoderFct + ); + //! Virtual destructor + virtual ~TiffEncoder(); + //@} + + //! @name Manipulators + //@{ + //! Encode a TIFF entry + virtual void visitEntry(TiffEntry* object); + //! Encode a TIFF data entry + virtual void visitDataEntry(TiffDataEntry* object); + //! Encode a TIFF image entry + virtual void visitImageEntry(TiffImageEntry* object); + //! Encode a TIFF size entry + virtual void visitSizeEntry(TiffSizeEntry* object); + //! Encode a TIFF directory + virtual void visitDirectory(TiffDirectory* object); + //! Update directory entries + virtual void visitDirectoryNext(TiffDirectory* object); + //! Encode a TIFF sub-IFD + virtual void visitSubIfd(TiffSubIfd* object); + //! Encode a TIFF makernote + virtual void visitMnEntry(TiffMnEntry* object); + //! Encode an IFD makernote + virtual void visitIfdMakernote(TiffIfdMakernote* object); + //! Reset encoder to its original state, undo makernote specific settings + virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object); + //! Encode a binary array + virtual void visitBinaryArray(TiffBinaryArray* object); + //! Re-encrypt binary array if necessary + virtual void visitBinaryArrayEnd(TiffBinaryArray* object); + //! Encode an element of a binary array + virtual void visitBinaryElement(TiffBinaryElement* object); + + /*! + @brief Top level encoder function. Determines how to encode each TIFF + component. This function is called by the visit methods of the + encoder as well as the add() method. + + If no \em datum is provided, search the metadata based on tag and + group of the \em object. This is the case if the function is called + from a visit method. + + Then check if a special encoder function is registered for the tag, + and if so use it to encode the \em object. Else use the callback + encoder function at the object (which results in a double-dispatch to + the appropriate encoding function of the encoder. + + @param object Object in the TIFF component tree to encode. + @param datum The corresponding metadatum with the updated value. + + @note Encoder functions may use metadata other than \em datum. + */ + void encodeTiffComponent( + TiffEntryBase* object, + const Exifdatum* datum =0 + ); + + //! Callback encoder function for an element of a binary array. + void encodeBinaryElement(TiffBinaryElement* object, const Exifdatum* datum); + //! Callback encoder function for a binary array. + void encodeBinaryArray(TiffBinaryArray* object, const Exifdatum* datum); + //! Callback encoder function for a data entry. + void encodeDataEntry(TiffDataEntry* object, const Exifdatum* datum); + //! Callback encoder function for a standard TIFF entry + void encodeTiffEntry(TiffEntry* object, const Exifdatum* datum); + //! Callback encoder function for an image entry. + void encodeImageEntry(TiffImageEntry* object, const Exifdatum* datum); + //! Callback encoder function for a %Makernote entry. + void encodeMnEntry(TiffMnEntry* object, const Exifdatum* datum); + //! Callback encoder function for a size entry. + void encodeSizeEntry(TiffSizeEntry* object, const Exifdatum* datum); + //! Callback encoder function for a sub-IFD entry. + void encodeSubIfd(TiffSubIfd* object, const Exifdatum* datum); + + //! Special encoder function for the base part of a TIFF entry. + void encodeTiffEntryBase(TiffEntryBase* object, const Exifdatum* datum); + //! Special encoder function for an offset entry. + void encodeOffsetEntry(TiffEntryBase* object, const Exifdatum* datum); + + //! Special encoder function to encode SubIFD contents to Image group if it contains primary image data + // Todo void encodeNikonSubIfd(TiffEntryBase* object, const Exifdatum* datum); + + //! Special encoder function to encode IPTC data to an IPTCNAA or Photoshop ImageResources tag. + void encodeIptc(TiffEntryBase* object, const Exifdatum* datum); + /*! + @brief Add metadata from image to the TIFF composite. + + For each Exif metadatum, the corresponding TiffComponent is created + if necessary and populated using encodeTiffComponent(). The add() function + is used during intrusive writing, to create a new TIFF structure. + + @note For non-intrusive writing, the encoder is used as a visitor (by + passing it to the accept() member of a TiffComponent). The composite + tree is then traversed and metadata from the image is used to encode + each existing component. + */ + void add( + TiffComponent* pRootDir, + TiffComponent* pSourceDir, + uint32_t root + ); + //! Set the dirty flag and end of traversing signal. + void setDirty(bool flag =true); + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the applicable byte order. May be different for + the Makernote and the rest of the TIFF entries. + */ + ByteOrder byteOrder() const { return byteOrder_; } + /*! + @brief True if any tag was deleted or allocated in the process of + visiting a TIFF composite tree. + */ + bool dirty() const; + //! Return the write method used. + WriteMethod writeMethod() const { return writeMethod_; } + //@} + + private: + //! @name Manipulators + //@{ + /*! + Encode IPTC data. Updates or adds tag Exif.Image.IPTCNAA, updates but + never adds tag Exif.Image.ImageResources. + This method is called from the constructor. + */ + void encodeIptc(); + /*! + Encode XMP data. Adds tag Exif.Image.XMLPacket with the XMP packet. + This method is called from the constructor. + */ + void encodeXmp(); + //@} + + //! @name Accessors + //@{ + /*! + @brief Update a directory entry. This is called after all directory + entries are encoded. It takes care of type and count changes + and size shrinkage for non-intrusive writing. + */ + uint32_t updateDirEntry(byte* buf, + ByteOrder byteOrder, + TiffComponent* pTiffComponent) const; + /*! + @brief Check if the tag is an image tag of an existing image. Such + tags are copied from the original image and can't be modifed. + + The condition is true if there is an existing image (as + opposed to a newly created TIFF image) and \em tag, \em group + is considered an image tag of this image - whether or not + it's actually present in the existing image doesn't matter. + */ + bool isImageTag(uint16_t tag, IfdId group) const; + //@} + + private: + // DATA + ExifData exifData_; //!< Copy of the Exif data to encode + const IptcData& iptcData_; //!< IPTC data to encode, just a reference + const XmpData& xmpData_; //!< XMP data to encode, just a reference + bool del_; //!< Indicates if Exif data entries should be deleted after encoding + const TiffHeaderBase* pHeader_; //!< TIFF image header + TiffComponent* pRoot_; //!< Root element of the composite + const bool isNewImage_; //!< True if the TIFF image is created from scratch + const PrimaryGroups* pPrimaryGroups_; //!< List of primary image groups + TiffComponent* pSourceTree_; //!< Parsed source tree for reference + ByteOrder byteOrder_; //!< Byteorder for encoding + ByteOrder origByteOrder_; //!< Byteorder as set in the c'tor + const FindEncoderFct findEncoderFct_; //!< Ptr to the function to find special encoding functions + std::string make_; //!< Camera make, determined from the tags to encode + bool dirty_; //!< Signals if any tag is deleted or allocated + WriteMethod writeMethod_; //!< Write method used. + + }; // class TiffEncoder + + /*! + @brief Simple state class containing relevant state information for + the TIFF reader. This is in a separate class so that the + reader can change state if needed (e.g., to read certain complex + makernotes). + */ + class TiffRwState { + public: + //! @name Creators + //@{ + //! Constructor. + TiffRwState(ByteOrder byteOrder, + uint32_t baseOffset) + : byteOrder_(byteOrder), + baseOffset_(baseOffset) {} + //@} + + //! @name Accessors + //@{ + /*! + @brief Return the applicable byte order. May be different for + the Makernote and the rest of the TIFF entries. + */ + ByteOrder byteOrder() const { return byteOrder_; } + /*! + @brief Return the base offset. + + TIFF standard format uses byte offsets which are always relative to + the start of the TIFF file, i.e., relative to the start of the TIFF + image header. In this case, the base offset is 0. However, some + camera vendors encode their makernotes in TIFF IFDs using offsets + relative to (somewhere near) the start of the makernote data. In this + case, base offset added to the start of the TIFF image header points + to the basis for such makernote offsets. + */ + uint32_t baseOffset() const { return baseOffset_; } + //@} + + private: + ByteOrder byteOrder_; + uint32_t baseOffset_; + }; // TiffRwState + + /*! + @brief TIFF composite visitor to read the TIFF structure from a block of + memory and build the composite from it (Visitor pattern). Used by + TiffParser to read the TIFF data from a block of memory. + */ + class TiffReader : public TiffVisitor { + public: + //! @name Creators + //@{ + /*! + @brief Constructor. The data buffer and table describing the TIFF + structure of the data are set in the constructor. + @param pData Pointer to the data buffer, starting with a TIFF header. + @param size Number of bytes in the data buffer. + @param pRoot Root element of the TIFF composite. + @param state State object for creation function, byte order and + base offset. + */ + TiffReader(const byte* pData, + uint32_t size, + TiffComponent* pRoot, + TiffRwState state); + + //! Virtual destructor + virtual ~TiffReader(); + //@} + + //! @name Manipulators + //@{ + //! Read a TIFF entry from the data buffer + virtual void visitEntry(TiffEntry* object); + //! Read a TIFF data entry from the data buffer + virtual void visitDataEntry(TiffDataEntry* object); + //! Read a TIFF image entry from the data buffer + virtual void visitImageEntry(TiffImageEntry* object); + //! Read a TIFF size entry from the data buffer + virtual void visitSizeEntry(TiffSizeEntry* object); + //! Read a TIFF directory from the data buffer + virtual void visitDirectory(TiffDirectory* object); + //! Read a TIFF sub-IFD from the data buffer + virtual void visitSubIfd(TiffSubIfd* object); + //! Read a TIFF makernote entry from the data buffer + virtual void visitMnEntry(TiffMnEntry* object); + //! Read an IFD makernote from the data buffer + virtual void visitIfdMakernote(TiffIfdMakernote* object); + //! Reset reader to its original state, undo makernote specific settings + virtual void visitIfdMakernoteEnd(TiffIfdMakernote* object); + //! Read a binary array from the data buffer + virtual void visitBinaryArray(TiffBinaryArray* object); + //! Read an element of a binary array from the data buffer + virtual void visitBinaryElement(TiffBinaryElement* object); + + //! Read a standard TIFF entry from the data buffer + void readTiffEntry(TiffEntryBase* object); + //! Read a TiffDataEntryBase from the data buffer + void readDataEntryBase(TiffDataEntryBase* object); + /*! + @brief Set the \em state of the reader to one suitable for the Makernote. + + Uses the \em state passed in, if any, and remembers it for use during + subsequent calls without any argument. + */ + void setMnState(const TiffRwState* state =0); + //! Set the state to the original state as set in the constructor. + void setOrigState(); + //! Check IFD directory pointer \em start for circular reference + bool circularReference(const byte* start, IfdId group); + //! Return the next idx sequence number for \em group + int nextIdx(IfdId group); + + /*! + @brief Read deferred components. + + This function is called after the TIFF composite is read by passing a + TiffReader to the accept() function of the root component. It reads + all components for which reading was deferred during that pass. This + is usually done to make sure that all other components are accessible + at the time the deferred components are processed. + */ + void postProcess(); + //@} + + //! @name Accessors + //@{ + //! Return the byte order. + ByteOrder byteOrder() const; + //! Return the base offset. See class TiffRwState for details + uint32_t baseOffset() const; + //@} + + private: + typedef std::map DirList; + typedef std::map IdxSeq; + typedef std::vector PostList; + + // DATA + const byte* pData_; //!< Pointer to the memory buffer + const uint32_t size_; //!< Size of the buffer + const byte* pLast_; //!< Pointer to the last byte + TiffComponent* const pRoot_; //!< Root element of the composite + TiffRwState* pState_; //!< Pointer to the state in effect (origState_ or mnState_) + TiffRwState origState_; //!< State class as set in the c'tor + TiffRwState mnState_; //!< State class as set in the c'tor or by setMnState() + DirList dirList_; //!< List of IFD pointers and their groups + IdxSeq idxSeq_; //!< Sequences for group, used for the entry's idx + PostList postList_; //!< List of components with deferred reading + bool postProc_; //!< True in postProcessList() + }; // class TiffReader + +}} // namespace Internal, Exiv2 + +#endif // #ifndef TIFFVISITOR_INT_HPP_ diff --git a/vendor/exiv2-0.25/src/timegm.h b/vendor/exiv2-0.25/src/timegm.h new file mode 100644 index 0000000..f36f186 --- /dev/null +++ b/vendor/exiv2-0.25/src/timegm.h @@ -0,0 +1,94 @@ +/*! + @file timegm.h + @brief Declaration of timegm(). The implementation is in localtime.c + @version $Rev: 1800 $ +*/ +#ifndef TIMEGM_H_ +#define TIMEGM_H_ + +#include + +/* + The following comments are copied from the Makefile of the tz distribution, + available at ftp://elsie.nci.nih.gov/pub/: + + NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put + out by the National Institute of Standards and Technology + which claims to test C and Posix conformance. If you want to pass PCTS, add + -DPCTS + to the end of the "CFLAGS=" line. + + If your system has a "zone abbreviation" field in its "struct tm"s + (or if you decide to add such a field in your system's "time.h" file), + add the name to a define such as + -DTM_ZONE=tm_zone + or + -DTM_ZONE=_tm_zone + to the end of the "CFLAGS=" line. + + If you want functions that were inspired by early versions of X3J11's work, + add + -DSTD_INSPIRED + to the end of the "CFLAGS=" line. + + If you want to allocate state structures in localtime, add + -DALL_STATE + to the end of the "CFLAGS=" line. Storage is obtained by calling malloc. + + If you want Source Code Control System ID's left out of object modules, add + -DNOID + + Add the following to the end of the "CFLAGS=" line as needed. + -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified + DST transitions if the time zone files cannot be accessed + + If you want to use System V compatibility code, add + -DUSG_COMPAT + to the end of the "CFLAGS=" line. This arrange for "timezone" and "daylight" + variables to be kept up-to-date by the time conversion functions. Neither + "timezone" nor "daylight" is described in X3J11's work. + + If you want an "altzone" variable (a la System V Release 3.1), add + -DALTZONE + to the end of the "CFLAGS=" line. + This variable is not described in X3J11's work. + + If your system has a "GMT offset" field in its "struct tm"s + (or if you decide to add such a field in your system's "time.h" file), + add the name to a define such as + -DTM_GMTOFF=tm_gmtoff + or + -DTM_GMTOFF=_tm_gmtoff + to the end of the "CFLAGS=" line. + Neither tm_gmtoff nor _tm_gmtoff is described in X3J11's work; + in its work, use of "tm_gmtoff" is described as non-conforming. + Both Linux and BSD have done the equivalent of defining TM_GMTOFF in + their recent releases. + + If you want a "gtime" function (a la MACH), add + -DCMUCS + to the end of the "CFLAGS=" line + This function is not described in X3J11's work. +*/ + +#define STD_INSPIRED +#define NOID + +#ifdef __cplusplus +extern "C" { +#endif + +// The UTC version of mktime +/* rmills - timegm is replaced with _mkgmtime on VC 2005 and up */ +/* - see localtime.c */ +#if !defined(_MSC_VER) || (_MSC_VER < 1400) +time_t timegm(struct tm * const tmp); +#else +#define timegm _mkgmtime +#endif + +#ifdef __cplusplus +} +#endif + +#endif // #ifndef TIMEGM_H_ diff --git a/vendor/exiv2-0.25/src/types.cpp b/vendor/exiv2-0.25/src/types.cpp new file mode 100644 index 0000000..f76c8ae --- /dev/null +++ b/vendor/exiv2-0.25/src/types.cpp @@ -0,0 +1,670 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: types.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 26-Jan-04, ahu: created + 11-Feb-04, ahu: isolated as a component + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: types.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "types.hpp" +#include "i18n.h" // for _exvGettext + +// + standard includes +#ifdef EXV_UNICODE_PATH +# include // for MultiByteToWideChar etc +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +namespace { + + //! Information pertaining to the defined %Exiv2 value type identifiers. + struct TypeInfoTable { + Exiv2::TypeId typeId_; //!< Type id + const char* name_; //!< Name of the type + long size_; //!< Bytes per data entry + //! Comparison operator for \em typeId + bool operator==(Exiv2::TypeId typeId) const + { + return typeId_ == typeId; + } + //! Comparison operator for \em name + bool operator==(const std::string& name) const + { + return 0 == strcmp(name_, name.c_str()); + } + }; // struct TypeInfoTable + + //! Lookup list with information of Exiv2 types + const TypeInfoTable typeInfoTable[] = { + { Exiv2::invalidTypeId, "Invalid", 0 }, + { Exiv2::unsignedByte, "Byte", 1 }, + { Exiv2::asciiString, "Ascii", 1 }, + { Exiv2::unsignedShort, "Short", 2 }, + { Exiv2::unsignedLong, "Long", 4 }, + { Exiv2::unsignedRational, "Rational", 8 }, + { Exiv2::signedByte, "SByte", 1 }, + { Exiv2::undefined, "Undefined", 1 }, + { Exiv2::signedShort, "SShort", 2 }, + { Exiv2::signedLong, "SLong", 4 }, + { Exiv2::signedRational, "SRational", 8 }, + { Exiv2::tiffFloat, "Float", 4 }, + { Exiv2::tiffDouble, "Double", 8 }, + { Exiv2::tiffIfd, "Ifd", 4 }, + { Exiv2::string, "String", 1 }, + { Exiv2::date, "Date", 8 }, + { Exiv2::time, "Time", 11 }, + { Exiv2::comment, "Comment", 1 }, + { Exiv2::directory, "Directory", 1 }, + { Exiv2::xmpText, "XmpText", 1 }, + { Exiv2::xmpAlt, "XmpAlt", 1 }, + { Exiv2::xmpBag, "XmpBag", 1 }, + { Exiv2::xmpSeq, "XmpSeq", 1 }, + { Exiv2::langAlt, "LangAlt", 1 } + }; + +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + const char* TypeInfo::typeName(TypeId typeId) + { + const TypeInfoTable* tit = find(typeInfoTable, typeId); + if (!tit) return 0; + return tit->name_; + } + + TypeId TypeInfo::typeId(const std::string& typeName) + { + const TypeInfoTable* tit = find(typeInfoTable, typeName); + if (!tit) return invalidTypeId; + return tit->typeId_; + } + + long TypeInfo::typeSize(TypeId typeId) + { + const TypeInfoTable* tit = find(typeInfoTable, typeId); + if (!tit) return 0; + return tit->size_; + } + + DataBuf::DataBuf(DataBuf& rhs) + : pData_(rhs.pData_), size_(rhs.size_) + { + rhs.release(); + } + + DataBuf::DataBuf(const byte* pData, long size) + : pData_(0), size_(0) + { + if (size > 0) { + pData_ = new byte[size]; + std::memcpy(pData_, pData, size); + size_ = size; + } + } + + DataBuf& DataBuf::operator=(DataBuf& rhs) + { + if (this == &rhs) return *this; + reset(rhs.release()); + return *this; + } + + void DataBuf::alloc(long size) + { + if (size > size_) { + delete[] pData_; + pData_ = 0; + size_ = 0; + pData_ = new byte[size]; + size_ = size; + } + } + + std::pair DataBuf::release() + { + std::pair p = std::make_pair(pData_, size_); + pData_ = 0; + size_ = 0; + return p; + } + + void DataBuf::reset(std::pair p) + { + if (pData_ != p.first) { + delete[] pData_; + pData_ = p.first; + } + size_ = p.second; + } + + // ************************************************************************* + // free functions + + std::ostream& operator<<(std::ostream& os, const Rational& r) + { + return os << r.first << "/" << r.second; + } + + std::istream& operator>>(std::istream& is, Rational& r) + { + // http://dev.exiv2.org/boards/3/topics/1912?r=1915 + if ( std::tolower(is.peek()) == 'f' ) { + char F; + float f; + is >> F >> f ; + f = 2.0f * std::log(f) / std::log(2.0f) ; + r = Exiv2::floatToRationalCast(f); + } else { + int32_t nominator; + int32_t denominator; + char c('\0'); + is >> nominator >> c >> denominator; + if (c != '/') is.setstate(std::ios::failbit); + if (is) r = std::make_pair(nominator, denominator); + } + return is; + } + + std::ostream& operator<<(std::ostream& os, const URational& r) + { + return os << r.first << "/" << r.second; + } + + std::istream& operator>>(std::istream& is, URational& r) + { + // http://dev.exiv2.org/boards/3/topics/1912?r=1915 + if ( std::tolower(is.peek()) == 'f' ) { + char F; + float f; + is >> F >> f ; + f = 2.0f * std::log(f) / std::log(2.0f) ; + r = Exiv2::floatToRationalCast(f); + } else { + uint32_t nominator; + uint32_t denominator; + char c('\0'); + is >> nominator >> c >> denominator; + if (c != '/') is.setstate(std::ios::failbit); + if (is) r = std::make_pair(nominator, denominator); + } + return is; + } + + uint16_t getUShort(const byte* buf, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + return (byte)buf[1] << 8 | (byte)buf[0]; + } + else { + return (byte)buf[0] << 8 | (byte)buf[1]; + } + } + + uint32_t getULong(const byte* buf, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + return (byte)buf[3] << 24 | (byte)buf[2] << 16 + | (byte)buf[1] << 8 | (byte)buf[0]; + } + else { + return (byte)buf[0] << 24 | (byte)buf[1] << 16 + | (byte)buf[2] << 8 | (byte)buf[3]; + } + } + + URational getURational(const byte* buf, ByteOrder byteOrder) + { + uint32_t nominator = getULong(buf, byteOrder); + uint32_t denominator = getULong(buf + 4, byteOrder); + return std::make_pair(nominator, denominator); + } + + int16_t getShort(const byte* buf, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + return (byte)buf[1] << 8 | (byte)buf[0]; + } + else { + return (byte)buf[0] << 8 | (byte)buf[1]; + } + } + + int32_t getLong(const byte* buf, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + return (byte)buf[3] << 24 | (byte)buf[2] << 16 + | (byte)buf[1] << 8 | (byte)buf[0]; + } + else { + return (byte)buf[0] << 24 | (byte)buf[1] << 16 + | (byte)buf[2] << 8 | (byte)buf[3]; + } + } + + Rational getRational(const byte* buf, ByteOrder byteOrder) + { + int32_t nominator = getLong(buf, byteOrder); + int32_t denominator = getLong(buf + 4, byteOrder); + return std::make_pair(nominator, denominator); + } + + float getFloat(const byte* buf, ByteOrder byteOrder) + { + // This algorithm assumes that the internal representation of the float + // type is the 4-byte IEEE 754 binary32 format, which is common but not + // required by the C++ standard. + assert(sizeof(float) == 4); + union { + uint32_t ul_; + float f_; + } u; + u.ul_ = getULong(buf, byteOrder); + return u.f_; + } + + double getDouble(const byte* buf, ByteOrder byteOrder) + { + // This algorithm assumes that the internal representation of the double + // type is the 8-byte IEEE 754 binary64 format, which is common but not + // required by the C++ standard. + assert(sizeof(double) == 8); + union { + uint64_t ull_; + double d_; + } u; + u.ull_ = 0; + if (byteOrder == littleEndian) { + u.ull_ = static_cast(buf[7]) << 56 + | static_cast(buf[6]) << 48 + | static_cast(buf[5]) << 40 + | static_cast(buf[4]) << 32 + | static_cast(buf[3]) << 24 + | static_cast(buf[2]) << 16 + | static_cast(buf[1]) << 8 + | static_cast(buf[0]); + } + else { + u.ull_ = static_cast(buf[0]) << 56 + | static_cast(buf[1]) << 48 + | static_cast(buf[2]) << 40 + | static_cast(buf[3]) << 32 + | static_cast(buf[4]) << 24 + | static_cast(buf[5]) << 16 + | static_cast(buf[6]) << 8 + | static_cast(buf[7]); + } + return u.d_; + } + + long us2Data(byte* buf, uint16_t s, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + buf[0] = (byte) (s & 0x00ff); + buf[1] = (byte)((s & 0xff00) >> 8); + } + else { + buf[0] = (byte)((s & 0xff00) >> 8); + buf[1] = (byte) (s & 0x00ff); + } + return 2; + } + + long ul2Data(byte* buf, uint32_t l, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + buf[0] = (byte) (l & 0x000000ff); + buf[1] = (byte)((l & 0x0000ff00) >> 8); + buf[2] = (byte)((l & 0x00ff0000) >> 16); + buf[3] = (byte)((l & 0xff000000) >> 24); + } + else { + buf[0] = (byte)((l & 0xff000000) >> 24); + buf[1] = (byte)((l & 0x00ff0000) >> 16); + buf[2] = (byte)((l & 0x0000ff00) >> 8); + buf[3] = (byte) (l & 0x000000ff); + } + return 4; + } + + long ur2Data(byte* buf, URational l, ByteOrder byteOrder) + { + long o = ul2Data(buf, l.first, byteOrder); + o += ul2Data(buf+o, l.second, byteOrder); + return o; + } + + long s2Data(byte* buf, int16_t s, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + buf[0] = (byte)(s & 0x00ff); + buf[1] = (byte)((s & 0xff00) >> 8); + } + else { + buf[0] = (byte)((s & 0xff00) >> 8); + buf[1] = (byte)(s & 0x00ff); + } + return 2; + } + + long l2Data(byte* buf, int32_t l, ByteOrder byteOrder) + { + if (byteOrder == littleEndian) { + buf[0] = (byte)(l & 0x000000ff); + buf[1] = (byte)((l & 0x0000ff00) >> 8); + buf[2] = (byte)((l & 0x00ff0000) >> 16); + buf[3] = (byte)((l & 0xff000000) >> 24); + } + else { + buf[0] = (byte)((l & 0xff000000) >> 24); + buf[1] = (byte)((l & 0x00ff0000) >> 16); + buf[2] = (byte)((l & 0x0000ff00) >> 8); + buf[3] = (byte)(l & 0x000000ff); + } + return 4; + } + + long r2Data(byte* buf, Rational l, ByteOrder byteOrder) + { + long o = l2Data(buf, l.first, byteOrder); + o += l2Data(buf+o, l.second, byteOrder); + return o; + } + + long f2Data(byte* buf, float f, ByteOrder byteOrder) + { + // This algorithm assumes that the internal representation of the float + // type is the 4-byte IEEE 754 binary32 format, which is common but not + // required by the C++ standard. + assert(sizeof(float) == 4); + union { + uint32_t ul_; + float f_; + } u; + u.f_ = f; + return ul2Data(buf, u.ul_, byteOrder); + } + + long d2Data(byte* buf, double d, ByteOrder byteOrder) + { + // This algorithm assumes that the internal representation of the double + // type is the 8-byte IEEE 754 binary64 format, which is common but not + // required by the C++ standard. + assert(sizeof(double) == 8); + union { + uint64_t ull_; + double d_; + } u; + u.d_ = d; + uint64_t m = 0xff; + if (byteOrder == littleEndian) { + buf[0] = (byte)(u.ull_ & m); + buf[1] = (byte)((u.ull_ & (m << 8)) >> 8); + buf[2] = (byte)((u.ull_ & (m << 16)) >> 16); + buf[3] = (byte)((u.ull_ & (m << 24)) >> 24); + buf[4] = (byte)((u.ull_ & (m << 32)) >> 32); + buf[5] = (byte)((u.ull_ & (m << 40)) >> 40); + buf[6] = (byte)((u.ull_ & (m << 48)) >> 48); + buf[7] = (byte)((u.ull_ & (m << 56)) >> 56); + } + else { + buf[0] = (byte)((u.ull_ & (m << 56)) >> 56); + buf[1] = (byte)((u.ull_ & (m << 48)) >> 48); + buf[2] = (byte)((u.ull_ & (m << 40)) >> 40); + buf[3] = (byte)((u.ull_ & (m << 32)) >> 32); + buf[4] = (byte)((u.ull_ & (m << 24)) >> 24); + buf[5] = (byte)((u.ull_ & (m << 16)) >> 16); + buf[6] = (byte)((u.ull_ & (m << 8)) >> 8); + buf[7] = (byte)(u.ull_ & m); + } + return 8; + } + + void hexdump(std::ostream& os, const byte* buf, long len, long offset) + { + const std::string::size_type pos = 8 + 16 * 3 + 2; + const std::string align(pos, ' '); + std::ios::fmtflags f( os.flags() ); + + long i = 0; + while (i < len) { + os << " " + << std::setw(4) << std::setfill('0') << std::hex + << i + offset << " "; + std::ostringstream ss; + do { + byte c = buf[i]; + os << std::setw(2) << std::setfill('0') << std::right + << std::hex << (int)c << " "; + ss << ((int)c >= 31 && (int)c < 127 ? char(buf[i]) : '.'); + } while (++i < len && i%16 != 0); + std::string::size_type width = 9 + ((i-1)%16 + 1) * 3; + os << (width > pos ? "" : align.substr(width)) << ss.str() << "\n"; + } + os << std::dec << std::setfill(' '); + os.flags(f); + } // hexdump + + bool isHex(const std::string& str, size_t size, const std::string& prefix) + { + if ( str.size() <= prefix.size() + || str.substr(0, prefix.size()) != prefix) return false; + if ( size > 0 + && str.size() != size + prefix.size()) return false; + + for (size_t i = prefix.size(); i < str.size(); ++i) { + if (!isxdigit(str[i])) return false; + } + return true; + } // isHex + + int exifTime(const char* buf, struct tm* tm) + { + assert(buf != 0); + assert(tm != 0); + int rc = 1; + int year, mon, mday, hour, min, sec; + int scanned = std::sscanf(buf, "%4d:%2d:%2d %2d:%2d:%2d", + &year, &mon, &mday, &hour, &min, &sec); + if (scanned == 6) { + tm->tm_year = year - 1900; + tm->tm_mon = mon - 1; + tm->tm_mday = mday; + tm->tm_hour = hour; + tm->tm_min = min; + tm->tm_sec = sec; + rc = 0; + } + return rc; + } // exifTime + + const char* exvGettext(const char* str) + { +#ifdef EXV_ENABLE_NLS + return _exvGettext(str); +#else + return str; +#endif + } + +#ifdef EXV_UNICODE_PATH + std::string ws2s(const std::wstring& s) + { + int len; + int slength = (int)s.length() + 1; + len = WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, 0, 0, 0, 0); + char* buf = new char[len]; + WideCharToMultiByte(CP_ACP, 0, s.c_str(), slength, buf, len, 0, 0); + std::string r(buf); + delete[] buf; + return r; + } + + std::wstring s2ws(const std::string& s) + { + int len; + int slength = (int)s.length() + 1; + len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); + wchar_t* buf = new wchar_t[len]; + MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len); + std::wstring r(buf); + delete[] buf; + return r; + } + +#endif // EXV_UNICODE_PATH + template<> + bool stringTo(const std::string& s, bool& ok) + { + std::string lcs(s); /* lowercase string */ + for(unsigned i = 0; i < lcs.length(); i++) { + lcs[i] = std::tolower(s[i]); + } + /* handle the same values as xmp sdk */ + if (lcs == "false" || lcs == "f" || lcs == "0") { + ok = true; + return false; + } + if (lcs == "true" || lcs == "t" || lcs == "1") { + ok = true; + return true; + } + ok = false; + return false; + } + + long parseLong(const std::string& s, bool& ok) + { + long ret = stringTo(s, ok); + if (ok) return ret; + + float f = stringTo(s, ok); + if (ok) return static_cast(f); + + Rational r = stringTo(s, ok); + if (ok) { + if (r.second == 0) { + ok = false; + return 0; + } + return static_cast(static_cast(r.first) / r.second); + } + + bool b = stringTo(s, ok); + if (ok) return b ? 1 : 0; + + // everything failed, return from stringTo is probably the best fit + return ret; + } + + float parseFloat(const std::string& s, bool& ok) + { + float ret = stringTo(s, ok); + if (ok) return ret; + + Rational r = stringTo(s, ok); + if (ok) { + if (r.second == 0) { + ok = false; + return 0.0; + } + return static_cast(r.first) / r.second; + } + + bool b = stringTo(s, ok); + if (ok) return b ? 1.0f : 0.0f; + + // everything failed, return from stringTo is probably the best fit + return ret; + } + + Rational parseRational(const std::string& s, bool& ok) + { + Rational ret = stringTo(s, ok); + if (ok) return ret; + + long l = stringTo(s, ok); + if (ok) return Rational(l, 1); + + float f = stringTo(s, ok); + if (ok) return floatToRationalCast(f); + + bool b = stringTo(s, ok); + if (ok) return b ? Rational(1, 1) : Rational(0, 1); + + // everything failed, return from stringTo is probably the best fit + return ret; + } + + Rational floatToRationalCast(float f) + { + // Beware: primitive conversion algorithm + int32_t den = 1000000; + if (std::labs(static_cast(f)) > 2147) den = 10000; + if (std::labs(static_cast(f)) > 214748) den = 100; + if (std::labs(static_cast(f)) > 21474836) den = 1; + const float rnd = f >= 0 ? 0.5f : -0.5f; + const int32_t nom = static_cast(f * den + rnd); + const int32_t g = gcd(nom, den); + + return Rational(nom/g, den/g); + } + +} // namespace Exiv2 + +#ifdef EXV_ENABLE_NLS +// Declaration is in i18n.h +const char* _exvGettext(const char* str) +{ + static bool exvGettextInitialized = false; + + if (!exvGettextInitialized) { + bindtextdomain(EXV_PACKAGE, EXV_LOCALEDIR); +# ifdef EXV_HAVE_BIND_TEXTDOMAIN_CODESET + bind_textdomain_codeset (EXV_PACKAGE, "UTF-8"); +# endif + exvGettextInitialized = true; + } + + return dgettext(EXV_PACKAGE, str); +} +#endif // EXV_ENABLE_NLS diff --git a/vendor/exiv2-0.25/src/tzfile.h b/vendor/exiv2-0.25/src/tzfile.h new file mode 100644 index 0000000..d9c2210 --- /dev/null +++ b/vendor/exiv2-0.25/src/tzfile.h @@ -0,0 +1,193 @@ +/*! + @file tzfile.h + @brief This file is from the tz distribution at ftp://elsie.nci.nih.gov/pub/ + @version $Rev: 392 $ +*/ +#ifndef TZFILE_H + +#define TZFILE_H + +/* +** This file is in the public domain, so clarified as of +** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). +*/ + +/* +** This header is for use ONLY with the time conversion code. +** There is no guarantee that it will remain unchanged, +** or that it will remain at all. +** Do NOT copy it to any system include directory. +** Thank you! +*/ + +/* +** ID +*/ + +#ifndef lint +#ifndef NOID +static char tzfilehid[] = "@(#)tzfile.h 7.14"; +#endif /* !defined NOID */ +#endif /* !defined lint */ + +/* +** Information about time zone files. +*/ + +#ifndef TZDIR +#define TZDIR "/usr/local/etc/zoneinfo" /* Time zone object file directory */ +#endif /* !defined TZDIR */ + +#ifndef TZDEFAULT +#define TZDEFAULT "localtime" +#endif /* !defined TZDEFAULT */ + +#ifndef TZDEFRULES +#define TZDEFRULES "posixrules" +#endif /* !defined TZDEFRULES */ + +/* +** Each file begins with. . . +*/ + +#define TZ_MAGIC "TZif" + +struct tzhead { + char tzh_magic[4]; /* TZ_MAGIC */ + char tzh_reserved[16]; /* reserved for future use */ + char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ + char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ + char tzh_leapcnt[4]; /* coded number of leap seconds */ + char tzh_timecnt[4]; /* coded number of transition times */ + char tzh_typecnt[4]; /* coded number of local time types */ + char tzh_charcnt[4]; /* coded number of abbr. chars */ +}; + +/* +** . . .followed by. . . +** +** tzh_timecnt (char [4])s coded transition times a la time(2) +** tzh_timecnt (unsigned char)s types of local time starting at above +** tzh_typecnt repetitions of +** one (char [4]) coded UTC offset in seconds +** one (unsigned char) used to set tm_isdst +** one (unsigned char) that's an abbreviation list index +** tzh_charcnt (char)s '\0'-terminated zone abbreviations +** tzh_leapcnt repetitions of +** one (char [4]) coded leap second transition times +** one (char [4]) total correction after above +** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition +** time is standard time, if FALSE, +** transition time is wall clock time +** if absent, transition times are +** assumed to be wall clock time +** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition +** time is UTC, if FALSE, +** transition time is local time +** if absent, transition times are +** assumed to be local time +*/ + +/* +** In the current implementation, "tzset()" refuses to deal with files that +** exceed any of the limits below. +*/ + +#ifndef TZ_MAX_TIMES +/* +** The TZ_MAX_TIMES value below is enough to handle a bit more than a +** year's worth of solar time (corrected daily to the nearest second) or +** 138 years of Pacific Presidential Election time +** (where there are three time zone transitions every fourth year). +*/ +#define TZ_MAX_TIMES 370 +#endif /* !defined TZ_MAX_TIMES */ + +#ifndef TZ_MAX_TYPES +#ifndef NOSOLAR +#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ +#endif /* !defined NOSOLAR */ +#ifdef NOSOLAR +/* +** Must be at least 14 for Europe/Riga as of Jan 12 1995, +** as noted by Earl Chew . +*/ +#define TZ_MAX_TYPES 20 /* Maximum number of local time types */ +#endif /* !defined NOSOLAR */ +#endif /* !defined TZ_MAX_TYPES */ + +#ifndef TZ_MAX_CHARS +#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ + /* (limited by what unsigned chars can hold) */ +#endif /* !defined TZ_MAX_CHARS */ + +#ifndef TZ_MAX_LEAPS +#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ +#endif /* !defined TZ_MAX_LEAPS */ + +#define SECSPERMIN 60 +#define MINSPERHOUR 60 +#define HOURSPERDAY 24 +#define DAYSPERWEEK 7 +#define DAYSPERNYEAR 365 +#define DAYSPERLYEAR 366 +#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) +#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) +#define MONSPERYEAR 12 + +#define TM_SUNDAY 0 +#define TM_MONDAY 1 +#define TM_TUESDAY 2 +#define TM_WEDNESDAY 3 +#define TM_THURSDAY 4 +#define TM_FRIDAY 5 +#define TM_SATURDAY 6 + +#define TM_JANUARY 0 +#define TM_FEBRUARY 1 +#define TM_MARCH 2 +#define TM_APRIL 3 +#define TM_MAY 4 +#define TM_JUNE 5 +#define TM_JULY 6 +#define TM_AUGUST 7 +#define TM_SEPTEMBER 8 +#define TM_OCTOBER 9 +#define TM_NOVEMBER 10 +#define TM_DECEMBER 11 + +#define TM_YEAR_BASE 1900 + +#define EPOCH_YEAR 1970 +#define EPOCH_WDAY TM_THURSDAY + +/* +** Accurate only for the past couple of centuries; +** that will probably do. +*/ + +#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) + +#ifndef USG + +/* +** Use of the underscored variants may cause problems if you move your code to +** certain System-V-based systems; for maximum portability, use the +** underscore-free variants. The underscored variants are provided for +** backward compatibility only; they may disappear from future versions of +** this file. +*/ + +#define SECS_PER_MIN SECSPERMIN +#define MINS_PER_HOUR MINSPERHOUR +#define HOURS_PER_DAY HOURSPERDAY +#define DAYS_PER_WEEK DAYSPERWEEK +#define DAYS_PER_NYEAR DAYSPERNYEAR +#define DAYS_PER_LYEAR DAYSPERLYEAR +#define SECS_PER_HOUR SECSPERHOUR +#define SECS_PER_DAY SECSPERDAY +#define MONS_PER_YEAR MONSPERYEAR + +#endif /* !defined USG */ + +#endif /* !defined TZFILE_H */ diff --git a/vendor/exiv2-0.25/src/utils.cpp b/vendor/exiv2-0.25/src/utils.cpp new file mode 100644 index 0000000..e2e37b5 --- /dev/null +++ b/vendor/exiv2-0.25/src/utils.cpp @@ -0,0 +1,162 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: utils.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 08-Dec-03, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: utils.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "utils.hpp" + +// + standard includes +#if defined(_MSC_VER) +# include "getopt_win32.h" +# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif + +#ifdef EXV_HAVE_UNISTD_H +# include // for getopt(), stat() +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Util { + +// ***************************************************************************** +// class Getopt + Getopt::Getopt() + : errcnt_(0) + { + } + + Getopt::~Getopt() + { + } + + int Getopt::getopt(int argc, char* const argv[], const std::string& optstring) + { + progname_ = Util::basename(argv[0]); + + for (;;) { + int c = ::getopt(argc, argv, optstring.c_str()); + if (c == -1) break; + errcnt_ += option(c, ::optarg == 0 ? "" : ::optarg, ::optopt); + } + for (int i = ::optind; i < argc; i++) { + errcnt_ += nonoption(argv[i]); + } + return errcnt_; + } + + int Getopt::nonoption(const std::string& /*argv*/) + { + return 0; + } + +// ***************************************************************************** +// free functions + + std::string dirname(const std::string& path) + { + if (path == "") return "."; + // Strip trailing slashes or backslashes + std::string p = path; + while ( p.length() > 1 + && (p[p.length()-1] == '\\' || p[p.length()-1] == '/')) { + p = p.substr(0, p.length()-1); + } + if (p == "\\" || p == "/") return p; + if (p.length() == 2 && p[1] == ':') return p; // For Windows paths + std::string::size_type idx = p.find_last_of("\\/"); + if (idx == std::string::npos) return "."; + if (idx == 1 && p[0] == '\\' && p[1] == '\\') return p; // For Windows paths + p = p.substr(0, idx == 0 ? 1 : idx); + while ( p.length() > 1 + && (p[p.length()-1] == '\\' || p[p.length()-1] == '/')) { + p = p.substr(0, p.length()-1); + } + return p; + } + + std::string basename(const std::string& path, bool delsuffix) + { + if (path == "") return "."; + // Strip trailing slashes or backslashes + std::string p = path; + while ( p.length() > 1 + && (p[p.length()-1] == '\\' || p[p.length()-1] == '/')) { + p = p.substr(0, p.length()-1); + } + if (p.length() == 2 && p[1] == ':') return ""; // For Windows paths + std::string::size_type idx = p.find_last_of("\\/"); + if (idx == 1 && p[0] == '\\' && p[1] == '\\') return ""; // For Windows paths + if (idx != std::string::npos) p = p.substr(idx+1); + if (delsuffix) p = p.substr(0, p.length() - suffix(p).length()); + return p; + } + + std::string suffix(const std::string& path) + { + std::string b = basename(path); + std::string::size_type idx = b.rfind('.'); + if (idx == std::string::npos || idx == 0 || idx == b.length()-1) { + return ""; + } + return b.substr(idx); + } + + bool strtol(const char* nptr, long& n) + { + if (!nptr || *nptr == '\0') return false; + char* endptr = 0; + long tmp = std::strtol(nptr, &endptr, 10); + if (*endptr != '\0') return false; + if (tmp == LONG_MAX || tmp == LONG_MIN) return false; + n = tmp; + return true; + } + + void replace(std::string& text, const std::string& searchText, const std::string& replaceText) + { + std::string::size_type index = 0; + while ((index = text.find(searchText, index)) != std::string::npos) + { + text.replace(index, searchText.length(), replaceText.c_str(), replaceText.length()); + index++; + } + } + +} // namespace Util diff --git a/vendor/exiv2-0.25/src/utils.hpp b/vendor/exiv2-0.25/src/utils.hpp new file mode 100644 index 0000000..dabf6e0 --- /dev/null +++ b/vendor/exiv2-0.25/src/utils.hpp @@ -0,0 +1,173 @@ +// ********************************************************* -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file utils.hpp + @brief A collection of utility functions + @version $Rev: 3090 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 12-Dec-03, ahu: created + */ +#ifndef UTILS_HPP_ +#define UTILS_HPP_ + +// ********************************************************************* +// included header files +#include "futils.hpp" + +// + standard includes +#include + +// ********************************************************************* +// namespace extensions +/*! + @brief Contains utility classes and functions. Most of these are + wrappers for common C functions that do not require pointers + and memory considerations. +*/ +namespace Util { + +// ********************************************************************* +// class definitions + +/*! + @brief Parse the command line options of a program. + + A wrapper around the POSIX %getopt(3) function. Parses the command line + options and passes each option to virtual option(). A derived class + implements this method to handle options as needed. Similarly, + remaining non-option parameters are passed to the virtual nonoption() + method. + */ +class Getopt { +public: + //! Default constructor. + Getopt(); + + //! Destructor. + virtual ~Getopt(); + + /*! + @brief Parse command line arguments. + + Parses the command line arguments. Calls option() with the + character value of the option and its argument (if any) for each + recognized option and with ':' or '?' for unrecognized options. + See the manual pages for %getopt(3) for details. In addition, + nonoption() is invoked for each remaining non-option parameter on + the command line. + + @param argc Argument count as passed to main() on program invocation. + @param argv Argument array as passed to main() on program invocation. + @param optstring String containing the legitimate option characters. + + @return Number of errors (the sum of the return values from option() + and nonoption()). + */ + int getopt(int argc, char* const argv[], const std::string& optstring); + + /*! + @brief Callback used by getopt() to pass on each option and its + argument (if any). + + Implement this method in a derived class to handle the options as + needed. See the manual pages for %getopt(3) for further details, in + particular, the semantics of optarg and optopt. + + @param opt Value of the option character as returned by %getopt(3). + @param optarg The corresponding option argument. + @param optopt The actual option character in case of an unrecognized + option or a missing option argument (opt is '?' or ':'). + + @return 0 if successful, 1 in case of an error. + */ + virtual int option(int opt, const std::string& optarg, int optopt) = 0; + + /*! + @brief Callback used by getopt() to pass on each non-option parameter + found on the command line. + + Implement this method in a derived class to handle the non-option + parameters as needed. The default implementation ignores all non-option + parameters. + + @param argv The non-option parameter from the command line. + + @return 0 if successful, 1 in case of an error. + */ + virtual int nonoption(const std::string& argv); + + //! Program name (argv[0]) + const std::string& progname() const { return progname_; } + + //! Total number of errors returned by calls to option() + int errcnt() const { return errcnt_; } + +private: + std::string progname_; + int errcnt_; +}; + +// ********************************************************************* +// free functions + + /*! + @brief Get the directory component from the \em path string. + See %dirname(3). + + This function can handle Windows paths to some extent: c:\\bar should + be fine, \\\\bigsrv\\foo also, but \\\\bigsrv alone doesn't work. + */ + std::string dirname(const std::string& path); + + /*! + @brief Get the filename component from the \em path string. + See %basename(3). If the \em delsuffix parameter is true, + the suffix will be removed. + + This function can handle Windows paths to some extent: c:\\bar should + be fine, \\\\bigsrv\\foo also, but \\\\bigsrv alone doesn't work. + */ + std::string basename(const std::string& path, bool delsuffix =false); + + /*! + @brief Get the suffix from the path string. Normally, the suffix + is the substring of the basename of path from the last '.' + to the end of the string. + */ + std::string suffix(const std::string& path); + + /*! + @brief Convert a C string to a long value, which is returned in n. + Returns true if the conversion is successful, else false. + n is not modified if the conversion is unsuccessful. See strtol(2). + */ + bool strtol(const char* nptr, long& n); + + /*! + @brief Replaces all occurrences of \em searchText in the \em text string + by \em replaceText. + */ + void replace(std::string& text, const std::string& searchText, const std::string& replaceText); + +} // namespace Util + +#endif // #ifndef UTILS_HPP_ diff --git a/vendor/exiv2-0.25/src/utilsvideo.cpp b/vendor/exiv2-0.25/src/utilsvideo.cpp new file mode 100644 index 0000000..07b2535 --- /dev/null +++ b/vendor/exiv2-0.25/src/utilsvideo.cpp @@ -0,0 +1,66 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/*! + @file utilsvideo.hpp + @brief An Image subclass to support RIFF video files + @version $Rev: 3845 $ + Mahesh Hegde 2014 + maheshmhegade@gmail.com + @date 16-Aug-14, AB: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: utilsvideo.cpp 3845 2015-06-07 16:29:06Z ahuggel $") + +#ifdef EXV_ENABLE_VIDEO +#include "utilsvideo.hpp" + +#ifndef _MSC_VER +#define stricmp strcasecmp +#endif + +namespace Exiv2 +{ + +bool UtilsVideo::compareTagValue(Exiv2::DataBuf& buf ,const char* str){ + bool result = true; + for(int32_t i=0; result && i<4; i++ ) + if(tolower(buf.pData_[i]) != tolower(str[i])) + return false; + return true; +} + +bool UtilsVideo::compareTagValue(Exiv2::DataBuf& buf,const char arr[][5],int32_t arraysize){ + bool result = false; + for ( int32_t i=0; !result && i< arraysize; i++) + result = (bool)(stricmp((const char*)buf.pData_,arr[i])==0); + return result; +} + +bool UtilsVideo::simpleBytesComparison(Exiv2::DataBuf& buf ,const char* str,int32_t size){ + for(int32_t i=0; i +#include + +void testStrtol(); +void testStrError(); +void testPaths(); +void testPath(const std::string& path); + +// ***************************************************************************** +// Main +int main(int argc, char* const argv[]) +{ + testPaths(); + return 0; +} + +void testStrtol() +{ + bool rc; + long n(0); + std::string s; + + s = "22"; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = "1"; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = "-22222222222222222"; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = "0x0"; rc = Util::strtol(0, n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = ""; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = "abc"; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = "1.2"; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; + s = "12p"; rc = Util::strtol(s.c_str(), n); + std::cout << "s = `" << s << "' rc = " << rc << " n = " << n << "\n"; +} + +void testPaths() +{ + std::string path; + path = "/usr/lib"; testPath(path); + path = "/usr/"; testPath(path); + path = "usr"; testPath(path); + path = "/"; testPath(path); + path = "."; testPath(path); + path = ".."; testPath(path); + path = "///"; testPath(path); + path = "/usr/.emacs"; testPath(path); + path = "/usr/.emacs/"; testPath(path); + path = "/usr/.emacs//"; testPath(path); + path = "usr/.emacs"; testPath(path); + path = ".emacs"; testPath(path); + path = ".emacs.gz"; testPath(path); + path = "/tmp/image.jpg"; testPath(path); + path = "/tmp/.image.jpg"; testPath(path); + path = "/image.jpg"; testPath(path); + path = "image.jpg"; testPath(path); + path = "image.jpg//"; testPath(path); + path = "/////image.jpg"; testPath(path); + path = "/foo.bar/image"; testPath(path); + path = "/foo.bar/images.tar.gz"; testPath(path); + path = "d:\\foo.bar\\images.tar.gz"; testPath(path); +} + +void testPath(const std::string& path) +{ + std::cout << std::setw(15) << path << " " + << std::setw(15) << Util::dirname(path) << " " + << std::setw(15) << Util::basename(path) << " " + << std::setw(15) << Util::suffix(path) << "\n"; +} diff --git a/vendor/exiv2-0.25/src/value.cpp b/vendor/exiv2-0.25/src/value.cpp new file mode 100644 index 0000000..abfcce1 --- /dev/null +++ b/vendor/exiv2-0.25/src/value.cpp @@ -0,0 +1,1230 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: value.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 26-Jan-04, ahu: created + 11-Feb-04, ahu: isolated as a component + 31-Jul-04, brad: added Time, Date and String values + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: value.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "value.hpp" +#include "types.hpp" +#include "error.hpp" +#include "convert.hpp" + +// + standard includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + Value::Value(TypeId typeId) + : ok_(true), type_(typeId) + { + } + + Value::~Value() + { + } + + Value& Value::operator=(const Value& rhs) + { + if (this == &rhs) return *this; + type_ = rhs.type_; + ok_ = rhs.ok_; + return *this; + } + + Value::AutoPtr Value::create(TypeId typeId) + { + AutoPtr value; + switch (typeId) { + case invalidTypeId: + case signedByte: + case unsignedByte: + value = AutoPtr(new DataValue(typeId)); + break; + case asciiString: + value = AutoPtr(new AsciiValue); + break; + case unsignedShort: + value = AutoPtr(new ValueType); + break; + case unsignedLong: + case tiffIfd: + value = AutoPtr(new ValueType(typeId)); + break; + case unsignedRational: + value = AutoPtr(new ValueType); + break; + case undefined: + value = AutoPtr(new DataValue); + break; + case signedShort: + value = AutoPtr(new ValueType); + break; + case signedLong: + value = AutoPtr(new ValueType); + break; + case signedRational: + value = AutoPtr(new ValueType); + break; + case tiffFloat: + value = AutoPtr(new ValueType); + break; + case tiffDouble: + value = AutoPtr(new ValueType); + break; + case string: + value = AutoPtr(new StringValue); + break; + case date: + value = AutoPtr(new DateValue); + break; + case time: + value = AutoPtr(new TimeValue); + break; + case comment: + value = AutoPtr(new CommentValue); + break; + case xmpText: + value = AutoPtr(new XmpTextValue); + break; + case xmpBag: + case xmpSeq: + case xmpAlt: + value = AutoPtr(new XmpArrayValue(typeId)); + break; + case langAlt: + value = AutoPtr(new LangAltValue); + break; + default: + value = AutoPtr(new DataValue(typeId)); + break; + } + return value; + } // Value::create + + int Value::setDataArea(const byte* /*buf*/, long /*len*/) + { + return -1; + } + + std::string Value::toString() const + { + std::ostringstream os; + write(os); + ok_ = !os.fail(); + return os.str(); + } + + std::string Value::toString(long /*n*/) const + { + return toString(); + } + + long Value::sizeDataArea() const + { + return 0; + } + + DataBuf Value::dataArea() const + { + return DataBuf(0, 0); + } + + DataValue::DataValue(TypeId typeId) : Value(typeId) + { + } + + DataValue::DataValue(const byte* buf, + long len, ByteOrder byteOrder,TypeId typeId) + : Value(typeId) + { + read(buf, len, byteOrder); + } + + DataValue::~DataValue() + { + } + + long DataValue::count() const + { + return size(); + } + + int DataValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/) + { + // byteOrder not needed + value_.assign(buf, buf + len); + return 0; + } + + int DataValue::read(const std::string& buf) + { + std::istringstream is(buf); + int tmp; + ValueType val; + while (!(is.eof())) { + is >> tmp; + if (is.fail()) return 1; + val.push_back(static_cast(tmp)); + } + value_.swap(val); + return 0; + } + + long DataValue::copy(byte* buf, ByteOrder /*byteOrder*/) const + { + // byteOrder not needed + return static_cast( + std::copy(value_.begin(), value_.end(), buf) - buf + ); + } + + long DataValue::size() const + { + return static_cast(value_.size()); + } + + DataValue* DataValue::clone_() const + { + return new DataValue(*this); + } + + std::ostream& DataValue::write(std::ostream& os) const + { + std::vector::size_type end = value_.size(); + for (std::vector::size_type i = 0; i != end; ++i) { + os << static_cast(value_[i]); + if (i < end - 1) os << " "; + } + return os; + } + + std::string DataValue::toString(long n) const + { + std::ostringstream os; + os << static_cast(value_[n]); + ok_ = !os.fail(); + return os.str(); + } + + long DataValue::toLong(long n) const + { + ok_ = true; + return value_[n]; + } + + float DataValue::toFloat(long n) const + { + ok_ = true; + return value_[n]; + } + + Rational DataValue::toRational(long n) const + { + ok_ = true; + return Rational(value_[n], 1); + } + + StringValueBase::StringValueBase(TypeId typeId) + : Value(typeId) + { + } + + StringValueBase::StringValueBase(TypeId typeId, const std::string& buf) + : Value(typeId) + { + read(buf); + } + + StringValueBase::StringValueBase(const StringValueBase& rhs) + : Value(rhs), value_(rhs.value_) + { + } + + StringValueBase::~StringValueBase() + { + } + + StringValueBase& StringValueBase::operator=(const StringValueBase& rhs) + { + if (this == &rhs) return *this; + Value::operator=(rhs); + value_ = rhs.value_; + return *this; + } + + int StringValueBase::read(const std::string& buf) + { + value_ = buf; + return 0; + } + + int StringValueBase::read(const byte* buf, long len, ByteOrder /*byteOrder*/) + { + // byteOrder not needed + if (buf) value_ = std::string(reinterpret_cast(buf), len); + return 0; + } + + long StringValueBase::copy(byte* buf, ByteOrder /*byteOrder*/) const + { + if (value_.size() == 0) return 0; + // byteOrder not needed + assert(buf != 0); + return static_cast( + value_.copy(reinterpret_cast(buf), value_.size()) + ); + } + + long StringValueBase::count() const + { + return size(); + } + + long StringValueBase::size() const + { + return static_cast(value_.size()); + } + + std::ostream& StringValueBase::write(std::ostream& os) const + { + return os << value_; + } + + long StringValueBase::toLong(long n) const + { + ok_ = true; + return value_[n]; + } + + float StringValueBase::toFloat(long n) const + { + ok_ = true; + return value_[n]; + } + + Rational StringValueBase::toRational(long n) const + { + ok_ = true; + return Rational(value_[n], 1); + } + + StringValue::StringValue() + : StringValueBase(string) + { + } + + StringValue::StringValue(const std::string& buf) + : StringValueBase(string, buf) + { + } + + StringValue::~StringValue() + { + } + + StringValue* StringValue::clone_() const + { + return new StringValue(*this); + } + + AsciiValue::AsciiValue() + : StringValueBase(asciiString) + { + } + + AsciiValue::AsciiValue(const std::string& buf) + : StringValueBase(asciiString, buf) + { + } + + AsciiValue::~AsciiValue() + { + } + + int AsciiValue::read(const std::string& buf) + { + value_ = buf; + if (value_.size() > 0 && value_[value_.size()-1] != '\0') value_ += '\0'; + return 0; + } + + AsciiValue* AsciiValue::clone_() const + { + return new AsciiValue(*this); + } + + std::ostream& AsciiValue::write(std::ostream& os) const + { + // Write only up to the first '\0' (if any) + std::string::size_type pos = value_.find_first_of('\0'); + if (pos == std::string::npos) pos = value_.size(); + return os << value_.substr(0, pos); + } + + CommentValue::CharsetTable::CharsetTable(CharsetId charsetId, + const char* name, + const char* code) + : charsetId_(charsetId), name_(name), code_(code) + { + } + + //! Lookup list of supported IFD type information + const CommentValue::CharsetTable CommentValue::CharsetInfo::charsetTable_[] = { + CharsetTable(ascii, "Ascii", "ASCII\0\0\0"), + CharsetTable(jis, "Jis", "JIS\0\0\0\0\0"), + CharsetTable(unicode, "Unicode", "UNICODE\0"), + CharsetTable(undefined, "Undefined", "\0\0\0\0\0\0\0\0"), + CharsetTable(invalidCharsetId, "InvalidCharsetId", "\0\0\0\0\0\0\0\0"), + CharsetTable(lastCharsetId, "InvalidCharsetId", "\0\0\0\0\0\0\0\0") + }; + + const char* CommentValue::CharsetInfo::name(CharsetId charsetId) + { + return charsetTable_[ charsetId < lastCharsetId ? charsetId : undefined ].name_; + } + + const char* CommentValue::CharsetInfo::code(CharsetId charsetId) + { + return charsetTable_[ charsetId < lastCharsetId ? charsetId : undefined ].code_; + } + + CommentValue::CharsetId CommentValue::CharsetInfo::charsetIdByName( + const std::string& name) + { + int i = 0; + for (; charsetTable_[i].charsetId_ != lastCharsetId + && charsetTable_[i].name_ != name; ++i) {} + return charsetTable_[i].charsetId_ == lastCharsetId ? + invalidCharsetId : charsetTable_[i].charsetId_; + } + + CommentValue::CharsetId CommentValue::CharsetInfo::charsetIdByCode( + const std::string& code) + { + int i = 0; + for (; charsetTable_[i].charsetId_ != lastCharsetId + && std::string(charsetTable_[i].code_, 8) != code; ++i) {} + return charsetTable_[i].charsetId_ == lastCharsetId ? + invalidCharsetId : charsetTable_[i].charsetId_; + } + + CommentValue::CommentValue() + : StringValueBase(Exiv2::undefined), byteOrder_(littleEndian) + { + } + + CommentValue::CommentValue(const std::string& comment) + : StringValueBase(Exiv2::undefined), byteOrder_(littleEndian) + { + read(comment); + } + + CommentValue::~CommentValue() + { + } + + int CommentValue::read(const std::string& comment) + { + std::string c = comment; + CharsetId charsetId = undefined; + if (comment.length() > 8 && comment.substr(0, 8) == "charset=") { + std::string::size_type pos = comment.find_first_of(' '); + std::string name = comment.substr(8, pos-8); + // Strip quotes (so you can also specify the charset without quotes) + if (name[0] == '"') name = name.substr(1); + if (name[name.length()-1] == '"') name = name.substr(0, name.length()-1); + charsetId = CharsetInfo::charsetIdByName(name); + if (charsetId == invalidCharsetId) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(28, name) << "\n"; +#endif + return 1; + } + c.clear(); + if (pos != std::string::npos) c = comment.substr(pos+1); + } + if (charsetId == unicode) { + const char* to = byteOrder_ == littleEndian ? "UCS-2LE" : "UCS-2BE"; + convertStringCharset(c, "UTF-8", to); + } + const std::string code(CharsetInfo::code(charsetId), 8); + return StringValueBase::read(code + c); + } + + int CommentValue::read(const byte* buf, long len, ByteOrder byteOrder) + { + byteOrder_ = byteOrder; + return StringValueBase::read(buf, len, byteOrder); + } + + long CommentValue::copy(byte* buf, ByteOrder byteOrder) const + { + std::string c = value_; + if (charsetId() == unicode) { + c = value_.substr(8); + std::string::size_type sz = c.size(); + if (byteOrder_ == littleEndian && byteOrder == bigEndian) { + convertStringCharset(c, "UCS-2LE", "UCS-2BE"); + assert(c.size() == sz); + } + else if (byteOrder_ == bigEndian && byteOrder == littleEndian) { + convertStringCharset(c, "UCS-2BE", "UCS-2LE"); + assert(c.size() == sz); + } + c = value_.substr(0, 8) + c; + } + if (c.size() == 0) return 0; + assert(buf != 0); + return static_cast(c.copy(reinterpret_cast(buf), c.size())); + } + + std::ostream& CommentValue::write(std::ostream& os) const + { + CharsetId csId = charsetId(); + if (csId != undefined) { + os << "charset=\"" << CharsetInfo::name(csId) << "\" "; + } + return os << comment(); + } + + std::string CommentValue::comment(const char* encoding) const + { + std::string c; + if (value_.length() < 8) { + return c; + } + c = value_.substr(8); + if (charsetId() == unicode) { + const char* from = encoding == 0 || *encoding == '\0' ? detectCharset(c) : encoding; + convertStringCharset(c, from, "UTF-8"); + } + return c; + } + + CommentValue::CharsetId CommentValue::charsetId() const + { + CharsetId charsetId = undefined; + if (value_.length() >= 8) { + const std::string code = value_.substr(0, 8); + charsetId = CharsetInfo::charsetIdByCode(code); + } + return charsetId; + } + + const char* CommentValue::detectCharset(std::string& c) const + { + // Interpret a BOM if there is one + if (0 == strncmp(c.data(), "\xef\xbb\xbf", 3)) { + c = c.substr(3); + return "UTF-8"; + } + if (0 == strncmp(c.data(), "\xff\xfe", 2)) { + c = c.substr(2); + return "UCS-2LE"; + } + if (0 == strncmp(c.data(), "\xfe\xff", 2)) { + c = c.substr(2); + return "UCS-2BE"; + } + + // Todo: Add logic to guess if the comment is encoded in UTF-8 + + return byteOrder_ == littleEndian ? "UCS-2LE" : "UCS-2BE"; + } + + CommentValue* CommentValue::clone_() const + { + return new CommentValue(*this); + } + + XmpValue::XmpValue(TypeId typeId) + : Value(typeId), + xmpArrayType_(xaNone), + xmpStruct_(xsNone) + { + } + + XmpValue& XmpValue::operator=(const XmpValue& rhs) + { + if (this == &rhs) return *this; + xmpArrayType_ = rhs.xmpArrayType_; + xmpStruct_ = rhs.xmpStruct_; + return *this; + } + + void XmpValue::setXmpArrayType(XmpArrayType xmpArrayType) + { + xmpArrayType_ = xmpArrayType; + } + + void XmpValue::setXmpStruct(XmpStruct xmpStruct) + { + xmpStruct_ = xmpStruct; + } + + XmpValue::XmpArrayType XmpValue::xmpArrayType() const + { + return xmpArrayType_; + } + + XmpValue::XmpArrayType XmpValue::xmpArrayType(TypeId typeId) + { + XmpArrayType xa = xaNone; + switch (typeId) { + case xmpAlt: xa = xaAlt; break; + case xmpBag: xa = xaBag; break; + case xmpSeq: xa = xaSeq; break; + default: break; + } + return xa; + } + + XmpValue::XmpStruct XmpValue::xmpStruct() const + { + return xmpStruct_; + } + + long XmpValue::copy(byte* buf, + ByteOrder /*byteOrder*/) const + { + std::ostringstream os; + write(os); + std::string s = os.str(); + if (s.size() > 0) std::memcpy(buf, &s[0], s.size()); + return static_cast(s.size()); + } + + int XmpValue::read(const byte* buf, + long len, + ByteOrder /*byteOrder*/) + { + std::string s(reinterpret_cast(buf), len); + return read(s); + } + + long XmpValue::size() const + { + std::ostringstream os; + write(os); + return static_cast(os.str().size()); + } + + XmpTextValue::XmpTextValue() + : XmpValue(xmpText) + { + } + + XmpTextValue::XmpTextValue(const std::string& buf) + : XmpValue(xmpText) + { + read(buf); + } + + int XmpTextValue::read(const std::string& buf) + { + // support a type=Alt,Bag,Seq,Struct indicator + std::string b = buf; + std::string type; + if (buf.length() > 5 && buf.substr(0, 5) == "type=") { + std::string::size_type pos = buf.find_first_of(' '); + type = buf.substr(5, pos-5); + // Strip quotes (so you can also specify the type without quotes) + if (type[0] == '"') type = type.substr(1); + if (type[type.length()-1] == '"') type = type.substr(0, type.length()-1); + b.clear(); + if (pos != std::string::npos) b = buf.substr(pos+1); + } + if (!type.empty()) { + if (type == "Alt") { + setXmpArrayType(XmpValue::xaAlt); + } + else if (type == "Bag") { + setXmpArrayType(XmpValue::xaBag); + } + else if (type == "Seq") { + setXmpArrayType(XmpValue::xaSeq); + } + else if (type == "Struct") { + setXmpStruct(); + } + else { + throw Error(48, type); + } + } + value_ = b; + return 0; + } + + XmpTextValue::AutoPtr XmpTextValue::clone() const + { + return AutoPtr(clone_()); + } + + long XmpTextValue::size() const + { + return static_cast(value_.size()); + } + + long XmpTextValue::count() const + { + return size(); + } + + std::ostream& XmpTextValue::write(std::ostream& os) const + { + bool del = false; + if (xmpArrayType() != XmpValue::xaNone) { + switch (xmpArrayType()) { + case XmpValue::xaAlt: os << "type=\"Alt\""; break; + case XmpValue::xaBag: os << "type=\"Bag\""; break; + case XmpValue::xaSeq: os << "type=\"Seq\""; break; + case XmpValue::xaNone: break; // just to suppress the warning + } + del = true; + } + else if (xmpStruct() != XmpValue::xsNone) { + switch (xmpStruct()) { + case XmpValue::xsStruct: os << "type=\"Struct\""; break; + case XmpValue::xsNone: break; // just to suppress the warning + } + del = true; + } + if (del && !value_.empty()) os << " "; + return os << value_; + } + + long XmpTextValue::toLong(long /*n*/) const + { + return parseLong(value_, ok_); + } + + float XmpTextValue::toFloat(long /*n*/) const + { + return parseFloat(value_, ok_); + } + + Rational XmpTextValue::toRational(long /*n*/) const + { + return parseRational(value_, ok_); + } + + XmpTextValue* XmpTextValue::clone_() const + { + return new XmpTextValue(*this); + } + + XmpArrayValue::XmpArrayValue(TypeId typeId) + : XmpValue(typeId) + { + setXmpArrayType(xmpArrayType(typeId)); + } + + int XmpArrayValue::read(const std::string& buf) + { + if (!buf.empty()) value_.push_back(buf); + return 0; + } + + XmpArrayValue::AutoPtr XmpArrayValue::clone() const + { + return AutoPtr(clone_()); + } + + long XmpArrayValue::count() const + { + return static_cast(value_.size()); + } + + std::ostream& XmpArrayValue::write(std::ostream& os) const + { + for (std::vector::const_iterator i = value_.begin(); + i != value_.end(); ++i) { + if (i != value_.begin()) os << ", "; + os << *i; + } + return os; + } + + std::string XmpArrayValue::toString(long n) const + { + ok_ = true; + return value_[n]; + } + + long XmpArrayValue::toLong(long n) const + { + return parseLong(value_[n], ok_); + } + + float XmpArrayValue::toFloat(long n) const + { + return parseFloat(value_[n], ok_); + } + + Rational XmpArrayValue::toRational(long n) const + { + return parseRational(value_[n], ok_); + } + + XmpArrayValue* XmpArrayValue::clone_() const + { + return new XmpArrayValue(*this); + } + + LangAltValue::LangAltValue() + : XmpValue(langAlt) + { + } + + LangAltValue::LangAltValue(const std::string& buf) + : XmpValue(langAlt) + { + read(buf); + } + + int LangAltValue::read(const std::string& buf) + { + std::string b = buf; + std::string lang = "x-default"; + if (buf.length() > 5 && buf.substr(0, 5) == "lang=") { + std::string::size_type pos = buf.find_first_of(' '); + lang = buf.substr(5, pos-5); + // Strip quotes (so you can also specify the language without quotes) + if (lang[0] == '"') lang = lang.substr(1); + if (lang[lang.length()-1] == '"') lang = lang.substr(0, lang.length()-1); + b.clear(); + if (pos != std::string::npos) b = buf.substr(pos+1); + } + value_[lang] = b; + return 0; + } + + LangAltValue::AutoPtr LangAltValue::clone() const + { + return AutoPtr(clone_()); + } + + long LangAltValue::count() const + { + return static_cast(value_.size()); + } + + static const std::string x_default = "x-default"; + + std::ostream& LangAltValue::write(std::ostream& os) const + { + bool first = true; + + // Write the default entry first + ValueType::const_iterator i = value_.find(x_default); + if (i != value_.end()) { + os << "lang=\"" << i->first << "\" " << i->second; + first = false; + } + + // Write the others + for (i = value_.begin(); i != value_.end(); ++i) { + if (i->first != x_default ) { + if (!first) os << ", "; + os << "lang=\"" << i->first << "\" " << i->second; + first = false; + } + } + return os; + } + + std::string LangAltValue::toString(long /*n*/) const + { + return toString(x_default); + } + + std::string LangAltValue::toString(const std::string& qualifier) const + { + ValueType::const_iterator i = value_.find(qualifier); + if (i != value_.end()) { + ok_ = true; + return i->second; + } + ok_ = false; + return ""; + } + + long LangAltValue::toLong(long /*n*/) const + { + ok_ = false; + return 0; + } + + float LangAltValue::toFloat(long /*n*/) const + { + ok_ = false; + return 0.0f; + } + + Rational LangAltValue::toRational(long /*n*/) const + { + ok_ = false; + return Rational(0, 0); + } + + LangAltValue* LangAltValue::clone_() const + { + return new LangAltValue(*this); + } + + DateValue::DateValue() + : Value(date) + { + } + + DateValue::DateValue(int year, int month, int day) + : Value(date) + { + date_.year = year; + date_.month = month; + date_.day = day; + } + + DateValue::~DateValue() + { + } + + int DateValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/) + { + // Hard coded to read Iptc style dates + if (len != 8) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(29) << "\n"; +#endif + return 1; + } + // Make the buffer a 0 terminated C-string for sscanf + char b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + std::memcpy(b, reinterpret_cast(buf), 8); + int scanned = sscanf(b, "%4d%2d%2d", + &date_.year, &date_.month, &date_.day); + if (scanned != 3) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(29) << "\n"; +#endif + return 1; + } + return 0; + } + + int DateValue::read(const std::string& buf) + { + // Hard coded to read Iptc style dates + if (buf.length() < 8) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(29) << "\n"; +#endif + return 1; + } + int scanned = sscanf(buf.c_str(), "%4d-%d-%d", + &date_.year, &date_.month, &date_.day); + if (scanned != 3) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(29) << "\n"; +#endif + return 1; + } + return 0; + } + + void DateValue::setDate(const Date& src) + { + date_.year = src.year; + date_.month = src.month; + date_.day = src.day; + } + + long DateValue::copy(byte* buf, ByteOrder /*byteOrder*/) const + { + // sprintf wants to add the null terminator, so use oversized buffer + char temp[9]; + + int wrote = sprintf(temp, "%04d%02d%02d", + date_.year, date_.month, date_.day); + assert(wrote == 8); + std::memcpy(buf, temp, 8); + return 8; + } + + const DateValue::Date& DateValue::getDate() const + { + return date_; + } + + long DateValue::count() const + { + return size(); + } + + long DateValue::size() const + { + return 8; + } + + DateValue* DateValue::clone_() const + { + return new DateValue(*this); + } + + std::ostream& DateValue::write(std::ostream& os) const + { + std::ios::fmtflags f( os.flags() ); + os << date_.year << '-' << std::right + << std::setw(2) << std::setfill('0') << date_.month << '-' + << std::setw(2) << std::setfill('0') << date_.day; + os.flags(f); + return os; + } + + long DateValue::toLong(long /*n*/) const + { + // Range of tm struct is limited to about 1970 to 2038 + // This will return -1 if outside that range + std::tm tms; + std::memset(&tms, 0, sizeof(tms)); + tms.tm_mday = date_.day; + tms.tm_mon = date_.month - 1; + tms.tm_year = date_.year - 1900; + long l = static_cast(std::mktime(&tms)); + ok_ = (l != -1); + return l; + } + + float DateValue::toFloat(long n) const + { + return static_cast(toLong(n)); + } + + Rational DateValue::toRational(long n) const + { + return Rational(toLong(n), 1); + } + + TimeValue::TimeValue() + : Value(time) + { + } + + TimeValue::TimeValue(int hour, int minute, + int second, int tzHour, + int tzMinute) + : Value(date) + { + time_.hour = hour; + time_.minute = minute; + time_.second = second; + time_.tzHour = tzHour; + time_.tzMinute = tzMinute; + } + + TimeValue::~TimeValue() + { + } + + int TimeValue::read(const byte* buf, long len, ByteOrder /*byteOrder*/) + { + // Make the buffer a 0 terminated C-string for scanTime[36] + char b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + std::memcpy(b, reinterpret_cast(buf), (len < 12 ? len : 11)); + // Hard coded to read HHMMSS or Iptc style times + int rc = 1; + if (len == 6) { + // Try to read (non-standard) HHMMSS format + rc = scanTime3(b, "%2d%2d%2d"); + } + if (len == 11) { + rc = scanTime6(b, "%2d%2d%2d%1c%2d%2d"); + } + if (rc) { + rc = 1; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(30) << "\n"; +#endif + } + return rc; + } + + int TimeValue::read(const std::string& buf) + { + // Hard coded to read H:M:S or Iptc style times + int rc = 1; + if (buf.length() < 9) { + // Try to read (non-standard) H:M:S format + rc = scanTime3(buf.c_str(), "%d:%d:%d"); + } + else { + rc = scanTime6(buf.c_str(), "%d:%d:%d%1c%d:%d"); + } + if (rc) { + rc = 1; +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << Error(30) << "\n"; +#endif + } + return rc; + } + + int TimeValue::scanTime3(const char* buf, const char* format) + { + int rc = 1; + Time t; + int scanned = sscanf(buf, format, &t.hour, &t.minute, &t.second); + if ( scanned == 3 + && t.hour >= 0 && t.hour < 24 + && t.minute >= 0 && t.minute < 60 + && t.second >= 0 && t.second < 60) { + time_ = t; + rc = 0; + } + return rc; + } + + int TimeValue::scanTime6(const char* buf, const char* format) + { + int rc = 1; + Time t; + char plusMinus; + int scanned = sscanf(buf, format, &t.hour, &t.minute, &t.second, + &plusMinus, &t.tzHour, &t.tzMinute); + if ( scanned == 6 + && t.hour >= 0 && t.hour < 24 + && t.minute >= 0 && t.minute < 60 + && t.second >= 0 && t.second < 60 + && t.tzHour >= 0 && t.tzHour < 24 + && t.tzMinute >= 0 && t.tzMinute < 60) { + time_ = t; + if (plusMinus == '-') { + time_.tzHour *= -1; + time_.tzMinute *= -1; + } + rc = 0; + } + return rc; + } + + void TimeValue::setTime( const Time& src ) + { + std::memcpy(&time_, &src, sizeof(time_)); + } + + long TimeValue::copy(byte* buf, ByteOrder /*byteOrder*/) const + { + // sprintf wants to add the null terminator, so use oversized buffer + char temp[12]; + char plusMinus = '+'; + if (time_.tzHour < 0 || time_.tzMinute < 0) plusMinus = '-'; + + int wrote = sprintf(temp, + "%02d%02d%02d%1c%02d%02d", + time_.hour, time_.minute, time_.second, + plusMinus, abs(time_.tzHour), abs(time_.tzMinute)); + + assert(wrote == 11); + std::memcpy(buf, temp, 11); + return 11; + } + + const TimeValue::Time& TimeValue::getTime() const + { + return time_; + } + + long TimeValue::count() const + { + return size(); + } + + long TimeValue::size() const + { + return 11; + } + + TimeValue* TimeValue::clone_() const + { + return new TimeValue(*this); + } + + std::ostream& TimeValue::write(std::ostream& os) const + { + char plusMinus = '+'; + if (time_.tzHour < 0 || time_.tzMinute < 0) plusMinus = '-'; + + std::ios::fmtflags f( os.flags() ); + os << std::right + << std::setw(2) << std::setfill('0') << time_.hour << ':' + << std::setw(2) << std::setfill('0') << time_.minute << ':' + << std::setw(2) << std::setfill('0') << time_.second << plusMinus + << std::setw(2) << std::setfill('0') << abs(time_.tzHour) << ':' + << std::setw(2) << std::setfill('0') << abs(time_.tzMinute); + os.flags(f); + + return os; + } + + long TimeValue::toLong(long /*n*/) const + { + // Returns number of seconds in the day in UTC. + long result = (time_.hour - time_.tzHour) * 60 * 60; + result += (time_.minute - time_.tzMinute) * 60; + result += time_.second; + if (result < 0) { + result += 86400; + } + ok_ = true; + return result; + } + + float TimeValue::toFloat(long n) const + { + return static_cast(toLong(n)); + } + + Rational TimeValue::toRational(long n) const + { + return Rational(toLong(n), 1); + } + +} // namespace Exiv2 diff --git a/vendor/exiv2-0.25/src/version.cpp b/vendor/exiv2-0.25/src/version.cpp new file mode 100644 index 0000000..01f9f6c --- /dev/null +++ b/vendor/exiv2-0.25/src/version.cpp @@ -0,0 +1,520 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: version.cpp + Version: $Rev: 3800 $ + Author(s): Andreas Huggel (ahu) + History: 06-Mar-07, ahu: created + + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: version.cpp 3800 2015-05-08 22:26:36Z robinwmills $") + +// ***************************************************************************** + +#include "config.h" + +#ifndef EXV_USE_SSH +#define EXV_USE_SSH 0 +#endif + +#ifndef EXV_USE_CURL +#define EXV_USE_CURL 0 +#endif + +#if EXV_USE_CURL == 1 +#include +#endif + +#if defined(__CYGWIN__) || defined(__MINGW__) +#include +#endif + +#include "http.hpp" +#include "svn_version.h" +#include "version.hpp" + +// + standard includes +#include +#include +#include +#include +#include + +namespace Exiv2 { + int versionNumber() + { + return EXIV2_MAKE_VERSION(EXIV2_MAJOR_VERSION, EXIV2_MINOR_VERSION, EXIV2_PATCH_VERSION); + } + + std::string versionString() + { + std::ostringstream os; + os << EXIV2_MAJOR_VERSION << '.' << EXIV2_MINOR_VERSION << '.' << EXIV2_PATCH_VERSION; + return os.str(); + + } + + std::string versionNumberHexString() + { + std::ostringstream os; + os << std::hex << std::setw(6) << std::setfill('0') << Exiv2::versionNumber(); + return os.str(); + } + + const char* version() + { + return EXV_PACKAGE_VERSION; + } + + bool testVersion(int major, int minor, int patch) + { + return versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch); + } +} // namespace Exiv2 + +using namespace std; +typedef vector string_v; +typedef string_v::iterator string_i; + +#ifndef lengthof +#define lengthof(x) sizeof(x)/sizeof(x[0]) +#endif +#ifndef _MAX_PATH +#define _MAX_PATH 512 +#endif + +// platform specific support for dumpLibraryInfo +#if defined(WIN32) +# include +# include + +// tell MSVC to link psapi. +#ifdef _MSC_VER +#pragma comment( lib, "psapi" ) +#endif + +#elif defined(__APPLE__) +# include + +#elif defined(__linux__) +# include +// http://syprog.blogspot.com/2011/12/listing-loaded-shared-objects-in-linux.html +# include + struct something + { + void* pointers[3]; + struct something* ptr; + }; + struct lmap + { + void* base_address; /* Base address of the shared object */ + char* path; /* Absolute file name (path) of the shared object */ + void* not_needed1; /* Pointer to the dynamic section of the shared object */ + struct lmap *next, *prev;/* chain of loaded objects */ + }; +#endif + +static void output(std::ostream& os,const exv_grep_keys_t& greps,const char* name,const std::string& value) +{ + bool bPrint = greps.empty(); + for( exv_grep_keys_t::const_iterator g = greps.begin(); + !bPrint && g != greps.end() ; ++g + ) { +#if EXV_HAVE_REGEX + bPrint = ( 0 == regexec( &(*g), name , 0, NULL, 0) + || 0 == regexec( &(*g), value.c_str(), 0, NULL, 0) + ); +#else + bPrint = std::string(name).find(*g) != std::string::npos || value.find(*g) != std::string::npos; +#endif + } + if ( bPrint ) os << name << "=" << value << endl; +} + +static void output(std::ostream& os,const exv_grep_keys_t& greps,const char* name,int value) +{ + std::ostringstream stringStream; + stringStream << value; + output(os,greps,name,stringStream.str()); +} + +void Exiv2::dumpLibraryInfo(std::ostream& os,const exv_grep_keys_t& keys) +{ + string_v libs; // libs[0] == executable + + int bits = 8*sizeof(void*); +#if defined(_DEBUG) || defined(DEBUG) + int debug=1; +#else + int debug=0; +#endif + +#if defined(DLL_EXPORT) || defined(EXV_HAVE_DLL) + int dll=1; +#else + int dll=0; +#endif + + const char* compiler = +#if defined(_MSC_VER) + "MSVC" ; + +#ifndef __VERSION__ + char version[20]; + sprintf(version,"%d.%02d",(_MSC_VER-600)/100,_MSC_VER%100); +#define __VERSION__ version +#endif + +#elif defined(__clang__) + "Clang" ; +#elif defined(__GNUG__) + "G++" ; +#elif defined(__GNUC__) + "GCC" ; +#elif defined(__SUNPRO_CC) + "CC (oracle)"; +#elif defined (__SUNPRO_C) + "cc (oracle)"; +#else + "unknown" ; +#endif + +#if defined(__SUNPRO_CC) || defined (__SUNPRO_C) +#define __oracle__ +#endif + +#ifndef __VERSION__ +#ifdef __clang__version__ +#define __VERSION__ __clang__version__ +#else +#define __VERSION__ "unknown" +#endif +#endif + + const char* platform = +#if defined(__CYGWIN__) + "cygwin"; +#elif defined(_MSC_VER) + "windows"; +#elif defined(__APPLE__) + "apple"; +#elif defined(__MINGW64__) + "mingw64"; +#elif defined(__MINGW32__) + "mingw32"; +#elif defined(__linux__) + "linux"; +#else + "unknown"; +#endif + + int have_regex =0; + int have_gmtime_r =0; + int have_inttypes =0; + int have_libintl =0; + int have_lensdata =0; + int have_iconv =0; + int have_memory =0; + int have_memset =0; + int have_lstat =0; + int have_stdbool =0; + int have_stdint =0; + int have_stdlib =0; + int have_strlib =0; + int have_strchr =0; + int have_strerror =0; + int have_strerror_r =0; + int have_strings_h =0; + int have_strtol =0; + int have_mmap =0; + int have_munmap =0; + int have_sys_stat =0; + int have_timegm =0; + int have_unistd_h =0; + int have_sys_mman =0; + int have_libz =0; + int have_xmptoolkit =0; + int have_bool =0; + int have_strings =0; + int have_sys_types =0; + int have_unistd =0; + int have_unicode_path=0; + + int enable_video =0; + int enable_webready =0; + +#if EXV_HAVE_DECL_STRERROR_R + have_strerror_r=1; +#endif + +#if EXV_HAVE_GMTIME_R + have_gmtime_r=1; +#endif + +#if EXV_HAVE_INTTYPES_H + have_inttypes=1; +#endif + +#if EXV_HAVE_LIBINTL_H + have_libintl=1; +#endif + +#if EXV_HAVE_LENSDATA + have_lensdata=1; +#endif + +#if EXV_HAVE_ICONV + have_iconv=1; +#endif + +#if EXV_HAVE_LIBINTL_H + have_libintl=1; +#endif + +#if EXV_HAVE_REGEX + have_regex=1; +#endif + +#if EXV_HAVE_MEMORY_H + have_memory=1; +#endif + +#if EXV_HAVE_MEMSET + have_memset=1; +#endif + +#if EXV_HAVE_LSTAT + have_lstat=1; +#endif + +#if EXV_HAVE_STDBOOL_H + have_stdbool=1; +#endif + +#if EXV_HAVE_STDINT_H + have_stdint=1; +#endif + +#if EXV_HAVE_STDLIB_H + have_stdlib=1; +#endif + +#if EXV_HAVE_STRCHR + have_strchr=1; +#endif + +#if EXV_HAVE_STRERROR + have_strerror=1; +#endif + +#if EXV_HAVE_STRERROR_R + have_strerror_r=1; +#endif + +#if EXV_HAVE_STRINGS_H + have_strings=1; +#endif + +#if EXV_HAVE_STRTOL + have_strtol=1; +#endif + +#if EXV_HAVE_MMAP + have_mmap=1; +#endif + +#if EXV_HAVE_MUNMAP + have_munmap=1; +#endif + +#if EXV_HAVE_SYS_STAT_H + have_sys_stat=1; +#endif + +#if EXV_HAVE_SYS_TYPES_H + have_sys_types=1; +#endif + +#if EXV_HAVE_TIMEGM + have_timegm=1; +#endif + +#if EXV_HAVE_UNISTD_H + have_unistd=1; +#endif + +#if EXV_HAVE_SYS_MMAN_H + have_sys_mman=1; +#endif + +#if HAVE_LIBZ + have_libz=1; +#endif + +#if EXV_HAVE_XMP_TOOLKIT + have_xmptoolkit=1; +#endif + +#if EXV_HAVE__BOOL + have_bool=1; +#endif + +#if EXV_HAVE_STRINGS + have_strings=1; +#endif + +#if EXV_SYS_TYPES + have_sys_types=1; +#endif + +#if EXV_HAVE_UNISTD + have_unistd=1; +#endif + +#if EXV_UNICODE_PATH + have_unicode_path=1; +#endif + +#if EXV_ENABLE_VIDEO + enable_video=1; +#endif + +#if EXV_ENABLE_WEBREADY + enable_webready=1; +#endif + +#if defined(WIN32) || defined(__CYGWIN__) || defined(__MINGW__) + // enumerate loaded libraries and determine path to executable + HMODULE handles[200]; + DWORD cbNeeded; + if ( EnumProcessModules(GetCurrentProcess(),handles,lengthof(handles),&cbNeeded)) { + char szFilename[_MAX_PATH]; + for ( DWORD h = 0 ; h < cbNeeded/sizeof(handles[0]) ; h++ ) { + GetModuleFileNameA(handles[h],szFilename,lengthof(szFilename)) ; + libs.push_back(szFilename); + } + } +#elif defined(__APPLE__) + // man 3 dyld + uint32_t count = _dyld_image_count(); + for (uint32_t image = 0 ; image < count ; image++ ) { + const char* image_path = _dyld_get_image_name(image); + libs.push_back(image_path); + } +#elif defined(__linux__) + // http://stackoverflow.com/questions/606041/how-do-i-get-the-path-of-a-process-in-unix-linux + char proc[100]; + char path[500]; + sprintf(proc,"/proc/%d/exe", getpid()); + int l = readlink (proc, path,sizeof(path)-1); + if (l>0) { + path[l]=0; + libs.push_back(path); + } else { + libs.push_back("unknown"); + } + + // http://syprog.blogspot.com/2011/12/listing-loaded-shared-objects-in-linux.html + struct lmap* pl; + void* ph = dlopen(NULL, RTLD_NOW); + struct something* p = (struct something*) ph; + + p = p->ptr; + pl = (struct lmap*)p->ptr; + + while ( pl ) + { + libs.push_back(pl->path); + pl = pl->next; + } +#endif + output(os,keys,"exiv2",Exiv2::versionString()); + output(os,keys,"platform" , platform ); + output(os,keys,"compiler" , compiler ); + output(os,keys,"bits" , bits ); + output(os,keys,"dll" , dll ); + output(os,keys,"debug" , debug ); + output(os,keys,"version" , __VERSION__); + output(os,keys,"date" , __DATE__ ); + output(os,keys,"time" , __TIME__ ); + output(os,keys,"svn" , SVN_VERSION); + output(os,keys,"ssh" , EXV_USE_SSH); +#if EXV_USE_CURL == 1 + std::string curl_protocols; + curl_version_info_data* vinfo = curl_version_info(CURLVERSION_NOW); + for (int i = 0; vinfo->protocols[i]; i++) { + curl_protocols += vinfo->protocols[i]; + curl_protocols += " " ; + } + output(os,keys,"curlprotocols" ,curl_protocols); +#else + output(os,keys,"curl" , EXV_USE_CURL); +#endif + output(os,keys,"id" , "$Id: version.cpp 3800 2015-05-08 22:26:36Z robinwmills $"); + if ( libs.begin() != libs.end() ) { + output(os,keys,"executable" ,*libs.begin()); + for ( string_i lib = libs.begin()+1 ; lib != libs.end() ; lib++ ) + output(os,keys,"library",*lib); + } + + output(os,keys,"have_regex" ,have_regex ); + output(os,keys,"have_strerror_r" ,have_strerror_r ); + output(os,keys,"have_gmtime_r" ,have_gmtime_r ); + output(os,keys,"have_inttypes" ,have_inttypes ); + output(os,keys,"have_libintl" ,have_libintl ); + output(os,keys,"have_lensdata" ,have_lensdata ); + output(os,keys,"have_iconv" ,have_iconv ); + output(os,keys,"have_memory" ,have_memory ); + output(os,keys,"have_memset" ,have_memset ); + output(os,keys,"have_lstat" ,have_lstat ); + output(os,keys,"have_stdbool" ,have_stdbool ); + output(os,keys,"have_stdint" ,have_stdint ); + output(os,keys,"have_stdlib" ,have_stdlib ); + output(os,keys,"have_strlib" ,have_strlib ); + output(os,keys,"have_strchr" ,have_strchr ); + output(os,keys,"have_strerror" ,have_strerror ); + output(os,keys,"have_strerror_r" ,have_strerror_r ); + output(os,keys,"have_strings_h" ,have_strings_h ); + output(os,keys,"have_strtol" ,have_strtol ); + output(os,keys,"have_mmap" ,have_mmap ); + output(os,keys,"have_munmap" ,have_munmap ); + output(os,keys,"have_sys_stat" ,have_sys_stat ); + output(os,keys,"have_timegm" ,have_timegm ); + output(os,keys,"have_unistd_h" ,have_unistd_h ); + output(os,keys,"have_sys_mman" ,have_sys_mman ); + output(os,keys,"have_libz" ,have_libz ); + output(os,keys,"have_xmptoolkit" ,have_xmptoolkit ); + output(os,keys,"have_bool" ,have_bool ); + output(os,keys,"have_strings" ,have_strings ); + output(os,keys,"have_sys_types" ,have_sys_types ); + output(os,keys,"have_unistd" ,have_unistd ); + output(os,keys,"have_unicode_path" ,have_unicode_path); + output(os,keys,"enable_video" ,enable_video ); + output(os,keys,"enable_webready" ,enable_webready ); + +#if defined(__linux__) + dlclose(ph); + ph=NULL; +#endif + +} diff --git a/vendor/exiv2-0.25/src/xmp.cpp b/vendor/exiv2-0.25/src/xmp.cpp new file mode 100644 index 0000000..ed2c263 --- /dev/null +++ b/vendor/exiv2-0.25/src/xmp.cpp @@ -0,0 +1,879 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: xmp.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 13-July-07, ahu: created + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: xmp.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// ***************************************************************************** +// included header files +#include "xmp.hpp" +#include "types.hpp" +#include "error.hpp" +#include "value.hpp" +#include "properties.hpp" + +// + standard includes +#include +#include +#include +#include + +// Adobe XMP Toolkit +#ifdef EXV_HAVE_XMP_TOOLKIT +# define TXMP_STRING_TYPE std::string +# include +# include +#endif // EXV_HAVE_XMP_TOOLKIT + +// ***************************************************************************** +// local declarations +namespace { + //! Unary predicate that matches an Xmpdatum by key + class FindXmpdatum { + public: + //! Constructor, initializes the object with key + FindXmpdatum(const Exiv2::XmpKey& key) + : key_(key.key()) {} + /*! + @brief Returns true if prefix and property of the argument + Xmpdatum are equal to that of the object. + */ + bool operator()(const Exiv2::Xmpdatum& xmpdatum) const + { return key_ == xmpdatum.key(); } + + private: + std::string key_; + + }; // class FindXmpdatum + +#ifdef EXV_HAVE_XMP_TOOLKIT + //! Convert XMP Toolkit struct option bit to Value::XmpStruct + Exiv2::XmpValue::XmpStruct xmpStruct(const XMP_OptionBits& opt); + + //! Convert Value::XmpStruct to XMP Toolkit array option bits + XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpStruct xs); + + //! Convert XMP Toolkit array option bits to array TypeId + Exiv2::TypeId arrayValueTypeId(const XMP_OptionBits& opt); + + //! Convert XMP Toolkit array option bits to Value::XmpArrayType + Exiv2::XmpValue::XmpArrayType xmpArrayType(const XMP_OptionBits& opt); + + //! Convert Value::XmpArrayType to XMP Toolkit array option bits + XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpArrayType xat); + + //! Convert XmpFormatFlags to XMP Toolkit format option bits + XMP_OptionBits xmpFormatOptionBits(Exiv2::XmpParser::XmpFormatFlags flags); + + //! Print information about a parsed XMP node + void printNode(const std::string& schemaNs, + const std::string& propPath, + const std::string& propValue, + const XMP_OptionBits& opt); +#endif // EXV_HAVE_XMP_TOOLKIT + + //! Make an XMP key from a schema namespace and property path + Exiv2::XmpKey::AutoPtr makeXmpKey(const std::string& schemaNs, + const std::string& propPath); + + //! Helper class used to serialize critical sections + class AutoLock + { + public: + AutoLock(Exiv2::XmpParser::XmpLockFct xmpLockFct, void* pLockData) + : xmpLockFct_(xmpLockFct), pLockData_(pLockData) + { + if (xmpLockFct_) xmpLockFct_(pLockData_, true); + } + ~AutoLock() + { + if (xmpLockFct_) xmpLockFct_(pLockData_, false); + } + private: + Exiv2::XmpParser::XmpLockFct xmpLockFct_; + void* pLockData_; + }; +} + +// ***************************************************************************** +// class member definitions +namespace Exiv2 { + + //! Internal Pimpl structure of class Xmpdatum. + struct Xmpdatum::Impl { + Impl(const XmpKey& key, const Value* pValue); //!< Constructor + Impl(const Impl& rhs); //!< Copy constructor + Impl& operator=(const Impl& rhs); //!< Assignment + + // DATA + XmpKey::AutoPtr key_; //!< Key + Value::AutoPtr value_; //!< Value + }; + + Xmpdatum::Impl::Impl(const XmpKey& key, const Value* pValue) + : key_(key.clone()) + { + if (pValue) value_ = pValue->clone(); + } + + Xmpdatum::Impl::Impl(const Impl& rhs) + { + if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy + if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy + } + + Xmpdatum::Impl& Xmpdatum::Impl::operator=(const Impl& rhs) + { + if (this == &rhs) return *this; + key_.reset(); + if (rhs.key_.get() != 0) key_ = rhs.key_->clone(); // deep copy + value_.reset(); + if (rhs.value_.get() != 0) value_ = rhs.value_->clone(); // deep copy + return *this; + } + + Xmpdatum::Xmpdatum(const XmpKey& key, const Value* pValue) + : p_(new Impl(key, pValue)) + { + } + + Xmpdatum::Xmpdatum(const Xmpdatum& rhs) + : Metadatum(rhs), p_(new Impl(*rhs.p_)) + { + } + + Xmpdatum& Xmpdatum::operator=(const Xmpdatum& rhs) + { + if (this == &rhs) return *this; + Metadatum::operator=(rhs); + *p_ = *rhs.p_; + return *this; + } + + Xmpdatum::~Xmpdatum() + { + delete p_; + } + + std::string Xmpdatum::key() const + { + return p_->key_.get() == 0 ? "" : p_->key_->key(); + } + + const char* Xmpdatum::familyName() const + { + return p_->key_.get() == 0 ? "" : p_->key_->familyName(); + } + + std::string Xmpdatum::groupName() const + { + return p_->key_.get() == 0 ? "" : p_->key_->groupName(); + } + + std::string Xmpdatum::tagName() const + { + return p_->key_.get() == 0 ? "" : p_->key_->tagName(); + } + + std::string Xmpdatum::tagLabel() const + { + return p_->key_.get() == 0 ? "" : p_->key_->tagLabel(); + } + + uint16_t Xmpdatum::tag() const + { + return p_->key_.get() == 0 ? 0 : p_->key_->tag(); + } + + TypeId Xmpdatum::typeId() const + { + return p_->value_.get() == 0 ? invalidTypeId : p_->value_->typeId(); + } + + const char* Xmpdatum::typeName() const + { + return TypeInfo::typeName(typeId()); + } + + long Xmpdatum::typeSize() const + { + return 0; + } + + long Xmpdatum::count() const + { + return p_->value_.get() == 0 ? 0 : p_->value_->count(); + } + + long Xmpdatum::size() const + { + return p_->value_.get() == 0 ? 0 : p_->value_->size(); + } + + std::string Xmpdatum::toString() const + { + return p_->value_.get() == 0 ? "" : p_->value_->toString(); + } + + std::string Xmpdatum::toString(long n) const + { + return p_->value_.get() == 0 ? "" : p_->value_->toString(n); + } + + long Xmpdatum::toLong(long n) const + { + return p_->value_.get() == 0 ? -1 : p_->value_->toLong(n); + } + + float Xmpdatum::toFloat(long n) const + { + return p_->value_.get() == 0 ? -1 : p_->value_->toFloat(n); + } + + Rational Xmpdatum::toRational(long n) const + { + return p_->value_.get() == 0 ? Rational(-1, 1) : p_->value_->toRational(n); + } + + Value::AutoPtr Xmpdatum::getValue() const + { + return p_->value_.get() == 0 ? Value::AutoPtr(0) : p_->value_->clone(); + } + + const Value& Xmpdatum::value() const + { + if (p_->value_.get() == 0) throw Error(8); + return *p_->value_; + } + + long Xmpdatum::copy(byte* /*buf*/, ByteOrder /*byteOrder*/) const + { + throw Error(34, "Xmpdatum::copy"); + return 0; + } + + std::ostream& Xmpdatum::write(std::ostream& os, const ExifData*) const + { + return XmpProperties::printProperty(os, key(), value()); + } + + Xmpdatum& Xmpdatum::operator=(const std::string& value) + { + setValue(value); + return *this; + } + + Xmpdatum& Xmpdatum::operator=(const Value& value) + { + setValue(&value); + return *this; + } + + void Xmpdatum::setValue(const Value* pValue) + { + p_->value_.reset(); + if (pValue) p_->value_ = pValue->clone(); + } + + int Xmpdatum::setValue(const std::string& value) + { + if (p_->value_.get() == 0) { + TypeId type = xmpText; + if (0 != p_->key_.get()) { + type = XmpProperties::propertyType(*p_->key_.get()); + } + p_->value_ = Value::create(type); + } + return p_->value_->read(value); + } + + Xmpdatum& XmpData::operator[](const std::string& key) + { + XmpKey xmpKey(key); + iterator pos = findKey(xmpKey); + if (pos == end()) { + add(Xmpdatum(xmpKey)); + pos = findKey(xmpKey); + } + return *pos; + } + + int XmpData::add(const XmpKey& key, const Value* value) + { + return add(Xmpdatum(key, value)); + } + + int XmpData::add(const Xmpdatum& xmpDatum) + { + xmpMetadata_.push_back(xmpDatum); + return 0; + } + + XmpData::const_iterator XmpData::findKey(const XmpKey& key) const + { + return std::find_if(xmpMetadata_.begin(), xmpMetadata_.end(), + FindXmpdatum(key)); + } + + XmpData::iterator XmpData::findKey(const XmpKey& key) + { + return std::find_if(xmpMetadata_.begin(), xmpMetadata_.end(), + FindXmpdatum(key)); + } + + void XmpData::clear() + { + xmpMetadata_.clear(); + } + + void XmpData::sortByKey() + { + std::sort(xmpMetadata_.begin(), xmpMetadata_.end(), cmpMetadataByKey); + } + + XmpData::const_iterator XmpData::begin() const + { + return xmpMetadata_.begin(); + } + + XmpData::const_iterator XmpData::end() const + { + return xmpMetadata_.end(); + } + + bool XmpData::empty() const + { + return count() == 0; + } + + long XmpData::count() const + { + return static_cast(xmpMetadata_.size()); + } + + XmpData::iterator XmpData::begin() + { + return xmpMetadata_.begin(); + } + + XmpData::iterator XmpData::end() + { + return xmpMetadata_.end(); + } + + XmpData::iterator XmpData::erase(XmpData::iterator pos) + { + return xmpMetadata_.erase(pos); + } + + bool XmpParser::initialized_ = false; + XmpParser::XmpLockFct XmpParser::xmpLockFct_ = 0; + void* XmpParser::pLockData_ = 0; + + bool XmpParser::initialize(XmpParser::XmpLockFct xmpLockFct, void* pLockData) + { + if (!initialized_) { +#ifdef EXV_HAVE_XMP_TOOLKIT + xmpLockFct_ = xmpLockFct; + pLockData_ = pLockData; + initialized_ = SXMPMeta::Initialize(); + SXMPMeta::RegisterNamespace("http://ns.adobe.com/lightroom/1.0/", "lr"); + SXMPMeta::RegisterNamespace("http://rs.tdwg.org/dwc/index.htm", "dwc"); + SXMPMeta::RegisterNamespace("http://purl.org/dc/terms/", "dcterms"); + SXMPMeta::RegisterNamespace("http://www.digikam.org/ns/1.0/", "digiKam"); + SXMPMeta::RegisterNamespace("http://www.digikam.org/ns/kipi/1.0/", "kipi"); + SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.0/", "MicrosoftPhoto"); + SXMPMeta::RegisterNamespace("http://ns.acdsee.com/iptc/1.0/", "acdsee"); + SXMPMeta::RegisterNamespace("http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "iptcExt"); + SXMPMeta::RegisterNamespace("http://ns.useplus.org/ldf/xmp/1.0/", "plus"); + SXMPMeta::RegisterNamespace("http://ns.iview-multimedia.com/mediapro/1.0/", "mediapro"); + SXMPMeta::RegisterNamespace("http://ns.microsoft.com/expressionmedia/1.0/", "expressionmedia"); + SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/", "MP"); + SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/t/RegionInfo#", "MPRI"); + SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/t/Region#", "MPReg"); + SXMPMeta::RegisterNamespace("http://ns.google.com/photos/1.0/panorama/", "GPano"); + SXMPMeta::RegisterNamespace("http://www.metadataworkinggroup.com/schemas/regions/", "mwg-rs"); + SXMPMeta::RegisterNamespace("http://www.metadataworkinggroup.com/schemas/keywords/", "mwg-kw"); + SXMPMeta::RegisterNamespace("http://ns.adobe.com/xmp/sType/Area#", "stArea"); + +#else + initialized_ = true; +#endif + } + return initialized_; + } + + void XmpParser::terminate() + { + XmpProperties::unregisterNs(); + if (initialized_) { +#ifdef EXV_HAVE_XMP_TOOLKIT + SXMPMeta::Terminate(); +#endif + xmpLockFct_ = 0; + pLockData_ = 0; + initialized_ = false; + } + } + +#ifdef EXV_HAVE_XMP_TOOLKIT + void XmpParser::registerNs(const std::string& ns, + const std::string& prefix) + { + try { + initialize(); + AutoLock autoLock(xmpLockFct_, pLockData_); + SXMPMeta::DeleteNamespace(ns.c_str()); + SXMPMeta::RegisterNamespace(ns.c_str(), prefix.c_str()); + } + catch (const XMP_Error& e) { + throw Error(40, e.GetID(), e.GetErrMsg()); + } + } // XmpParser::registerNs +#else + void XmpParser::registerNs(const std::string& /*ns*/, + const std::string& /*prefix*/) + { + initialize(); + } // XmpParser::registerNs +#endif + + void XmpParser::unregisterNs(const std::string& /*ns*/) + { +#ifdef EXV_HAVE_XMP_TOOLKIT + try { +// Throws XMP Toolkit error 8: Unimplemented method XMPMeta::DeleteNamespace +// SXMPMeta::DeleteNamespace(ns.c_str()); + } + catch (const XMP_Error& e) { + throw Error(40, e.GetID(), e.GetErrMsg()); + } +#endif + } // XmpParser::unregisterNs + +#ifdef EXV_HAVE_XMP_TOOLKIT + int XmpParser::decode( XmpData& xmpData, + const std::string& xmpPacket) + { try { + xmpData.clear(); + if (xmpPacket.empty()) return 0; + + if (!initialize()) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "XMP toolkit initialization failed.\n"; +#endif + return 2; + } + + SXMPMeta meta(xmpPacket.data(), static_cast(xmpPacket.size())); + SXMPIterator iter(meta); + std::string schemaNs, propPath, propValue; + XMP_OptionBits opt; + while (iter.Next(&schemaNs, &propPath, &propValue, &opt)) { + printNode(schemaNs, propPath, propValue, opt); + if (XMP_PropIsAlias(opt)) { + throw Error(47, schemaNs, propPath, propValue); + continue; + } + if (XMP_NodeIsSchema(opt)) { + // Register unknown namespaces with Exiv2 + // (Namespaces are automatically registered with the XMP Toolkit) + if (XmpProperties::prefix(schemaNs).empty()) { + std::string prefix; + bool ret = meta.GetNamespacePrefix(schemaNs.c_str(), &prefix); + if (!ret) throw Error(45, schemaNs); + prefix = prefix.substr(0, prefix.size() - 1); + XmpProperties::registerNs(schemaNs, prefix); + } + continue; + } + XmpKey::AutoPtr key = makeXmpKey(schemaNs, propPath); + if (XMP_ArrayIsAltText(opt)) { + // Read Lang Alt property + LangAltValue::AutoPtr val(new LangAltValue); + XMP_Index count = meta.CountArrayItems(schemaNs.c_str(), propPath.c_str()); + while (count-- > 0) { + // Get the text + bool haveNext = iter.Next(&schemaNs, &propPath, &propValue, &opt); + printNode(schemaNs, propPath, propValue, opt); + if ( !haveNext + || !XMP_PropIsSimple(opt) + || !XMP_PropHasLang(opt)) { + throw Error(41, propPath, opt); + } + const std::string text = propValue; + // Get the language qualifier + haveNext = iter.Next(&schemaNs, &propPath, &propValue, &opt); + printNode(schemaNs, propPath, propValue, opt); + if ( !haveNext + || !XMP_PropIsSimple(opt) + || !XMP_PropIsQualifier(opt) + || propPath.substr(propPath.size() - 8, 8) != "xml:lang") { + throw Error(42, propPath, opt); + } + val->value_[propValue] = text; + } + xmpData.add(*key.get(), val.get()); + continue; + } + if ( XMP_PropIsArray(opt) + && !XMP_PropHasQualifiers(opt) + && !XMP_ArrayIsAltText(opt)) { + // Check if all elements are simple + bool simpleArray = true; + SXMPIterator aIter(meta, schemaNs.c_str(), propPath.c_str()); + std::string aSchemaNs, aPropPath, aPropValue; + XMP_OptionBits aOpt; + while (aIter.Next(&aSchemaNs, &aPropPath, &aPropValue, &aOpt)) { + if (propPath == aPropPath) continue; + if ( !XMP_PropIsSimple(aOpt) + || XMP_PropHasQualifiers(aOpt) + || XMP_PropIsQualifier(aOpt) + || XMP_NodeIsSchema(aOpt) + || XMP_PropIsAlias(aOpt)) { + simpleArray = false; + break; + } + } + if (simpleArray) { + // Read the array into an XmpArrayValue + XmpArrayValue::AutoPtr val(new XmpArrayValue(arrayValueTypeId(opt))); + XMP_Index count = meta.CountArrayItems(schemaNs.c_str(), propPath.c_str()); + while (count-- > 0) { + iter.Next(&schemaNs, &propPath, &propValue, &opt); + printNode(schemaNs, propPath, propValue, opt); + val->read(propValue); + } + xmpData.add(*key.get(), val.get()); + continue; + } + } + XmpTextValue::AutoPtr val(new XmpTextValue); + if ( XMP_PropIsStruct(opt) + || XMP_PropIsArray(opt)) { + // Create a metadatum with only XMP options + val->setXmpArrayType(xmpArrayType(opt)); + val->setXmpStruct(xmpStruct(opt)); + xmpData.add(*key.get(), val.get()); + continue; + } + if ( XMP_PropIsSimple(opt) + || XMP_PropIsQualifier(opt)) { + val->read(propValue); + xmpData.add(*key.get(), val.get()); + continue; + } + // Don't let any node go by unnoticed + throw Error(39, key->key(), opt); + } // iterate through all XMP nodes + + return 0; + } +#ifndef SUPPRESS_WARNINGS + catch (const XMP_Error& e) { + EXV_ERROR << Error(40, e.GetID(), e.GetErrMsg()) << "\n"; + xmpData.clear(); + return 3; + } +#else + catch (const XMP_Error&) { + xmpData.clear(); + return 3; + } +#endif // SUPPRESS_WARNINGS + } // XmpParser::decode +#else + int XmpParser::decode( XmpData& xmpData, + const std::string& xmpPacket) + { + xmpData.clear(); + if (!xmpPacket.empty()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "XMP toolkit support not compiled in.\n"; +#endif + } + return 1; + } // XmpParser::decode +#endif // !EXV_HAVE_XMP_TOOLKIT + +#ifdef EXV_HAVE_XMP_TOOLKIT + int XmpParser::encode( std::string& xmpPacket, + const XmpData& xmpData, + uint16_t formatFlags, + uint32_t padding) + { try { + if (xmpData.empty()) { + xmpPacket.clear(); + return 0; + } + + if (!initialize()) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "XMP toolkit initialization failed.\n"; +#endif + return 2; + } + // Register custom namespaces with XMP-SDK + for (XmpProperties::NsRegistry::iterator i = XmpProperties::nsRegistry_.begin(); + i != XmpProperties::nsRegistry_.end(); ++i) { +#ifdef DEBUG + std::cerr << "Registering " << i->second.prefix_ << " : " << i->first << "\n"; +#endif + registerNs(i->first, i->second.prefix_); + } + SXMPMeta meta; + for (XmpData::const_iterator i = xmpData.begin(); i != xmpData.end(); ++i) { + const std::string ns = XmpProperties::ns(i->groupName()); + XMP_OptionBits options = 0; + + if (i->typeId() == langAlt) { + + // Encode Lang Alt property + const LangAltValue* la = dynamic_cast(&i->value()); + if (la == 0) throw Error(43, i->key()); + + int idx = 1; + for ( LangAltValue::ValueType::const_iterator k = la->value_.begin() + ; k != la->value_.end() + ; ++k + ) { + if ( k->second.size() ) { // remove lang specs with no value + printNode(ns, i->tagName(), k->second, 0); + meta.AppendArrayItem(ns.c_str(), i->tagName().c_str(), kXMP_PropArrayIsAlternate, k->second.c_str()); + const std::string item = i->tagName() + "[" + toString(idx++) + "]"; + meta.SetQualifier(ns.c_str(), item.c_str(), kXMP_NS_XML, "lang", k->first.c_str()); + } + } + continue; + } + + // Todo: Xmpdatum should have an XmpValue, not a Value + const XmpValue* val = dynamic_cast(&i->value()); + if (val == 0) throw Error(52, i->key(), i->typeName()); + options = xmpArrayOptionBits(val->xmpArrayType()) + | xmpArrayOptionBits(val->xmpStruct()); + if ( i->typeId() == xmpBag + || i->typeId() == xmpSeq + || i->typeId() == xmpAlt) { + printNode(ns, i->tagName(), "", options); + meta.SetProperty(ns.c_str(), i->tagName().c_str(), 0, options); + for (int idx = 0; idx < i->count(); ++idx) { + const std::string item = i->tagName() + "[" + toString(idx + 1) + "]"; + printNode(ns, item, i->toString(idx), 0); + meta.SetProperty(ns.c_str(), item.c_str(), i->toString(idx).c_str()); + } + continue; + } + if (i->typeId() == xmpText) { + if (i->count() == 0) { + printNode(ns, i->tagName(), "", options); + meta.SetProperty(ns.c_str(), i->tagName().c_str(), 0, options); + } + else { + printNode(ns, i->tagName(), i->toString(0), options); + meta.SetProperty(ns.c_str(), i->tagName().c_str(), i->toString(0).c_str(), options); + } + continue; + } + // Don't let any Xmpdatum go by unnoticed + throw Error(38, i->tagName(), i->typeName()); + } + std::string tmpPacket; + meta.SerializeToBuffer(&tmpPacket, xmpFormatOptionBits(static_cast(formatFlags)), padding); // throws + xmpPacket = tmpPacket; + + return 0; + } +#ifndef SUPPRESS_WARNINGS + catch (const XMP_Error& e) { + EXV_ERROR << Error(40, e.GetID(), e.GetErrMsg()) << "\n"; + return 3; + } +#else + catch (const XMP_Error&) { + return 3; + } +#endif // SUPPRESS_WARNINGS + } // XmpParser::decode +#else + int XmpParser::encode( std::string& /*xmpPacket*/, + const XmpData& xmpData, + uint16_t /*formatFlags*/, + uint32_t /*padding*/) + { + if (!xmpData.empty()) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "XMP toolkit support not compiled in.\n"; +#endif + } + return 1; + } // XmpParser::encode +#endif // !EXV_HAVE_XMP_TOOLKIT + +} // namespace Exiv2 + +// ***************************************************************************** +// local definitions +namespace { + +#ifdef EXV_HAVE_XMP_TOOLKIT + Exiv2::XmpValue::XmpStruct xmpStruct(const XMP_OptionBits& opt) + { + Exiv2::XmpValue::XmpStruct var(Exiv2::XmpValue::xsNone); + if (XMP_PropIsStruct(opt)) { + var = Exiv2::XmpValue::xsStruct; + } + return var; + } + + XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpStruct xs) + { + XMP_OptionBits var(0); + switch (xs) { + case Exiv2::XmpValue::xsNone: + break; + case Exiv2::XmpValue::xsStruct: + XMP_SetOption(var, kXMP_PropValueIsStruct); + break; + } + return var; + } + + Exiv2::TypeId arrayValueTypeId(const XMP_OptionBits& opt) + { + Exiv2::TypeId typeId(Exiv2::invalidTypeId); + if (XMP_PropIsArray(opt)) { + if (XMP_ArrayIsAlternate(opt)) typeId = Exiv2::xmpAlt; + else if (XMP_ArrayIsOrdered(opt)) typeId = Exiv2::xmpSeq; + else if (XMP_ArrayIsUnordered(opt)) typeId = Exiv2::xmpBag; + } + return typeId; + } + + Exiv2::XmpValue::XmpArrayType xmpArrayType(const XMP_OptionBits& opt) + { + return Exiv2::XmpValue::xmpArrayType(arrayValueTypeId(opt)); + } + + XMP_OptionBits xmpArrayOptionBits(Exiv2::XmpValue::XmpArrayType xat) + { + XMP_OptionBits var(0); + switch (xat) { + case Exiv2::XmpValue::xaNone: + break; + case Exiv2::XmpValue::xaAlt: + XMP_SetOption(var, kXMP_PropValueIsArray); + XMP_SetOption(var, kXMP_PropArrayIsAlternate); + break; + case Exiv2::XmpValue::xaSeq: + XMP_SetOption(var, kXMP_PropValueIsArray); + XMP_SetOption(var, kXMP_PropArrayIsOrdered); + break; + case Exiv2::XmpValue::xaBag: + XMP_SetOption(var, kXMP_PropValueIsArray); + break; + } + return var; + } + + XMP_OptionBits xmpFormatOptionBits(Exiv2::XmpParser::XmpFormatFlags flags) + { + XMP_OptionBits var(0); + if (flags & Exiv2::XmpParser::omitPacketWrapper) var |= kXMP_OmitPacketWrapper; + if (flags & Exiv2::XmpParser::readOnlyPacket) var |= kXMP_ReadOnlyPacket; + if (flags & Exiv2::XmpParser::useCompactFormat) var |= kXMP_UseCompactFormat; + if (flags & Exiv2::XmpParser::includeThumbnailPad) var |= kXMP_IncludeThumbnailPad; + if (flags & Exiv2::XmpParser::exactPacketLength) var |= kXMP_ExactPacketLength; + if (flags & Exiv2::XmpParser::writeAliasComments) var |= kXMP_WriteAliasComments; + if (flags & Exiv2::XmpParser::omitAllFormatting) var |= kXMP_OmitAllFormatting; + return var; + } + +#ifdef DEBUG + void printNode(const std::string& schemaNs, + const std::string& propPath, + const std::string& propValue, + const XMP_OptionBits& opt) + { + static bool first = true; + if (first) { + first = false; + std::cout << "ashisabsals\n" + << "lcqqtrgqlai\n"; + } + enum { alia=0, sche, hasq, isqu, stru, arra, + abag, aseq, aalt, lang, simp, len }; + + std::string opts(len, '.'); + if (XMP_PropIsAlias(opt)) opts[alia] = 'X'; + if (XMP_NodeIsSchema(opt)) opts[sche] = 'X'; + if (XMP_PropHasQualifiers(opt)) opts[hasq] = 'X'; + if (XMP_PropIsQualifier(opt)) opts[isqu] = 'X'; + if (XMP_PropIsStruct(opt)) opts[stru] = 'X'; + if (XMP_PropIsArray(opt)) opts[arra] = 'X'; + if (XMP_ArrayIsUnordered(opt)) opts[abag] = 'X'; + if (XMP_ArrayIsOrdered(opt)) opts[aseq] = 'X'; + if (XMP_ArrayIsAlternate(opt)) opts[aalt] = 'X'; + if (XMP_ArrayIsAltText(opt)) opts[lang] = 'X'; + if (XMP_PropIsSimple(opt)) opts[simp] = 'X'; + + std::cout << opts << " "; + if (opts[sche] == 'X') { + std::cout << "ns=" << schemaNs; + } + else { + std::cout << propPath << " = " << propValue; + } + std::cout << std::endl; + } +#else + void printNode(const std::string& , + const std::string& , + const std::string& , + const XMP_OptionBits& ) + {} +#endif // DEBUG +#endif // EXV_HAVE_XMP_TOOLKIT + + Exiv2::XmpKey::AutoPtr makeXmpKey(const std::string& schemaNs, + const std::string& propPath) + { + std::string property; + std::string::size_type idx = propPath.find(':'); + if (idx == std::string::npos) { + throw Exiv2::Error(44, propPath, schemaNs); + } + // Don't worry about out_of_range, XMP parser takes care of this + property = propPath.substr(idx + 1); + std::string prefix = Exiv2::XmpProperties::prefix(schemaNs); + if (prefix.empty()) { + throw Exiv2::Error(36, propPath, schemaNs); + } + return Exiv2::XmpKey::AutoPtr(new Exiv2::XmpKey(prefix, property)); + } // makeXmpKey + +} diff --git a/vendor/exiv2-0.25/src/xmpdump.cpp b/vendor/exiv2-0.25/src/xmpdump.cpp new file mode 100644 index 0000000..b6bb12a --- /dev/null +++ b/vendor/exiv2-0.25/src/xmpdump.cpp @@ -0,0 +1,35 @@ +// ***************************************************************** -*- C++ -*- +// xmpdump.cpp, $Rev: 1512 $ +// Sample program to dump the XMP packet of an image + +#include "image.hpp" +#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(); + + const std::string& xmpPacket = image->xmpPacket(); + if (xmpPacket.empty()) { + std::string error(argv[1]); + error += ": No XMP packet found in the file"; + throw Exiv2::Error(1, error); + } + std::cout << xmpPacket << "\n"; + + return 0; +} +catch (Exiv2::AnyError& e) { + std::cout << "Caught Exiv2 exception '" << e << "'\n"; + return -1; +} diff --git a/vendor/exiv2-0.25/src/xmpsidecar.cpp b/vendor/exiv2-0.25/src/xmpsidecar.cpp new file mode 100644 index 0000000..4749890 --- /dev/null +++ b/vendor/exiv2-0.25/src/xmpsidecar.cpp @@ -0,0 +1,210 @@ +// ***************************************************************** -*- C++ -*- +/* + * Copyright (C) 2004-2015 Andreas Huggel + * + * This program is part of the Exiv2 distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. + */ +/* + File: xmpsidecar.cpp + Version: $Rev: 3777 $ + Author(s): Andreas Huggel (ahu) + History: 07-Mar-08, ahu: created + Credits: See header file + */ +// ***************************************************************************** +#include "rcsid_int.hpp" +EXIV2_RCSID("@(#) $Id: xmpsidecar.cpp 3777 2015-05-02 11:55:40Z ahuggel $") + +// included header files +#include "config.h" + +#include "xmpsidecar.hpp" +#include "image.hpp" +#include "basicio.hpp" +#include "error.hpp" +#include "xmp.hpp" +#include "futils.hpp" +#include "convert.hpp" + +// + standard includes +#include +#include +#include + +// ***************************************************************************** +namespace { + const char* xmlHeader = "\n"; + const long xmlHdrCnt = (long) std::strlen(xmlHeader); // without the trailing 0-character + const char* xmlFooter = ""; +} + +// class member definitions +namespace Exiv2 { + + + XmpSidecar::XmpSidecar(BasicIo::AutoPtr io, bool create) + : Image(ImageType::xmp, mdXmp, io) + { + if (create) { + if (io_->open() == 0) { + IoCloser closer(*io_); + io_->write(reinterpret_cast(xmlHeader), xmlHdrCnt); + } + } + } // XmpSidecar::XmpSidecar + + std::string XmpSidecar::mimeType() const + { + return "application/rdf+xml"; + } + + void XmpSidecar::setComment(const std::string& /*comment*/) + { + // not supported + throw(Error(32, "Image comment", "XMP")); + } + + void XmpSidecar::readMetadata() + { +#ifdef DEBUG + std::cerr << "Reading XMP file " << io_->path() << "\n"; +#endif + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + // Ensure that this is the correct image type + if (!isXmpType(*io_, false)) { + if (io_->error() || io_->eof()) throw Error(14); + throw Error(3, "XMP"); + } + // Read the XMP packet from the IO stream + std::string xmpPacket; + const long len = 64 * 1024; + byte buf[len]; + long l; + while ((l = io_->read(buf, len)) > 0) { + xmpPacket.append(reinterpret_cast(buf), l); + } + if (io_->error()) throw Error(14); + clearMetadata(); + xmpPacket_ = xmpPacket; + if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) { +#ifndef SUPPRESS_WARNINGS + EXV_WARNING << "Failed to decode XMP metadata.\n"; +#endif + } + copyXmpToIptc(xmpData_, iptcData_); + copyXmpToExif(xmpData_, exifData_); + } // XmpSidecar::readMetadata + + void XmpSidecar::writeMetadata() + { + if (io_->open() != 0) { + throw Error(9, io_->path(), strError()); + } + IoCloser closer(*io_); + + if (writeXmpFromPacket() == false) { + copyExifToXmp(exifData_, xmpData_); + copyIptcToXmp(iptcData_, xmpData_); + if (XmpParser::encode(xmpPacket_, xmpData_, + XmpParser::omitPacketWrapper|XmpParser::useCompactFormat) > 1) { +#ifndef SUPPRESS_WARNINGS + EXV_ERROR << "Failed to encode XMP metadata.\n"; +#endif + } + } + if (xmpPacket_.size() > 0) { + if (xmpPacket_.substr(0, 5) != "temporary()); // may throw + assert(tempIo.get() != 0); + // Write XMP packet + if ( tempIo->write(reinterpret_cast(xmpPacket_.data()), + static_cast(xmpPacket_.size())) + != static_cast(xmpPacket_.size())) throw Error(21); + if (tempIo->error()) throw Error(21); + io_->close(); + io_->transfer(*tempIo); // may throw + } + } // XmpSidecar::writeMetadata + + // ************************************************************************* + // free functions + Image::AutoPtr newXmpInstance(BasicIo::AutoPtr io, bool create) + { + Image::AutoPtr image(new XmpSidecar(io, create)); + if (!image->good()) { + image.reset(); + } + return image; + } + + bool isXmpType(BasicIo& iIo, bool advance) + { + /* + Check if the file starts with an optional XML declaration followed by + either an XMP header () or an element. + + In addition, in order for empty XmpSidecar objects as created by + Exiv2 to pass the test, just an XML header is also considered ok. + */ + const int32_t len = 80; + byte buf[len]; + iIo.read(buf, xmlHdrCnt + 1); + if ( iIo.eof() + && 0 == strncmp(reinterpret_cast(buf), xmlHeader, xmlHdrCnt)) { + return true; + } + if (iIo.error() || iIo.eof()) { + return false; + } + iIo.read(buf + xmlHdrCnt + 1, len - xmlHdrCnt - 1); + if (iIo.error() || iIo.eof()) { + return false; + } + // Skip leading BOM + int32_t start = 0; + if (0 == strncmp(reinterpret_cast(buf), "\xef\xbb\xbf", 3)) { + start = 3; + } + bool rc = false; + std::string head(reinterpret_cast(buf + start), len - start); + if (head.substr(0, 5) == " 9 + && ( head.substr(0, 9) == " +# Copyright 2010-2012 Gilles Caulier +# Copyright 2008 Patrick Spendrin + +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +include(../CMake_msvc.txt) +msvc_runtime_configure(${EXIV2_ENABLE_SHARED}) + +if( POLICY CMP0026 ) + cmake_policy(SET CMP0026 OLD) # Something to do with location +endif() + +FOREACH(_currentfile ${XMPSRC}) + # http://www.openguru.com/2009/04/cmake-detecting-platformoperating.html + IF(NOT MSVC AND NOT CYGWIN AND NOT MSYS) + SET_SOURCE_FILES_PROPERTIES(${_currentfile} PROPERTIES COMPILE_FLAGS "-fPIC") + ENDIF(NOT MSVC AND NOT CYGWIN AND NOT MSYS) +ENDFOREACH() + +IF( EXIV2_ENABLE_XMP AND EXIV2_ENABLE_LIBXMP ) + ADD_LIBRARY( xmp STATIC ${XMPSRC} ) + GET_TARGET_PROPERTY( XMPLIB xmp LOCATION ) + TARGET_LINK_LIBRARIES(xmp ${EXPAT_LIBRARIES}) + # SET( XMPLIB ${XMPLIB} PARENT_SCOPE ) + # INSTALL(TARGETS xmp ${INSTALL_TARGET_STANDARD_ARGS} ) +ENDIF() + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/xmpsdk/include/MD5.h b/vendor/exiv2-0.25/xmpsdk/include/MD5.h new file mode 100644 index 0000000..00a5e94 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/MD5.h @@ -0,0 +1,50 @@ +#ifndef __MD5_h__ +#define __MD5_h__ + +/* + * This is the header file for the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5_CTX structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + * + * Changed so as no longer to depend on Colin Plumb's `usual.h' + * header definitions; now uses stuff from dpkg's config.h + * - Ian Jackson . + * Still in the public domain. + */ + +#include +#ifdef EXV_HAVE_STDINT_H +# include +#endif + +/* MSVC doesn't provide C99 types, but it has MS specific variants */ +#ifdef _MSC_VER +typedef unsigned __int32 uint32_t; +#endif + +typedef unsigned char md5byte; +typedef uint32_t UWORD32; + +struct MD5_CTX { + UWORD32 buf[4]; + UWORD32 bytes[2]; + UWORD32 in[16]; +}; + +extern void MD5Init(struct MD5_CTX *context); +extern void MD5Update(struct MD5_CTX *context, md5byte const *buf, unsigned len); +extern void MD5Final(unsigned char digest[16], struct MD5_CTX *context); +extern void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); + +#endif diff --git a/vendor/exiv2-0.25/xmpsdk/include/TXMPIterator.hpp b/vendor/exiv2-0.25/xmpsdk/include/TXMPIterator.hpp new file mode 100644 index 0000000..33c73a1 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/TXMPIterator.hpp @@ -0,0 +1,235 @@ +#ifndef __TXMPIterator_hpp__ +#define __TXMPIterator_hpp__ 1 + +#if ( ! __XMP_hpp__ ) + #error "Do not directly include, use XMPSDK.hpp" +#endif + +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2007 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. +// ================================================================================================= + +// ================================================================================================= +/// \file TXMPIterator.hpp +/// \brief API for access to the XMP Toolkit iteration services. +/// +/// \c TXMPIterator is the template class providing iteration services for the XMP Toolkit. It must +/// be instantiated with a string class such as \c std::string. See the instructions in XMPSDK.hpp, and +/// the Overview for a discussion of the overall architecture of the XMP API. +// ================================================================================================= + +// ================================================================================================= +/// \class TXMPIterator TXMPIterator.hpp +/// @brief API for access to the XMP Toolkit iteration services. +/// +/// \c TXMPIterator provides a uniform means to iterate over the schema and properties within an XMP +/// object. \c TXMPIterator is a template class which must be instantiated with a string class such +/// as \c std::string. See the instructions in XMPSDK.hpp, and the Overview for a discussion of the +/// overall architecture of the XMP API. Access these functions through the concrete class, +/// \c SXMPIterator. +/// +/// @note Only XMP object iteration is currently available. Future development may include iteration +/// over global tables, such as registered namespaces. +/// +/// To understand how iteration works, you should have a thorough understanding of the XMP data +/// tree, as described in the XMP Specification Part 1. You might also find it helpful to create +/// some complex XMP and examine the output of \c TXMPMeta::DumpObject(). +/// +/// \li The top of the XMP data tree is a single root node. This does not explicitly appear in the +/// dump and is never visited by an iterator; that is, it is never returned from +/// \c TXMPIterator::Next(). +/// +/// \li Beneath the root are schema nodes; these collect the top-level properties in the same +/// namespace. They are created and destroyed implicitly. +/// +/// \li Beneath the schema nodes are the property nodes. The nodes below a property node depend on +/// its type (simple, struct, or array) and whether it has qualifiers. +/// +/// A \c TXMPIterator constructor defines a starting point for the iteration, and options that +/// control how it proceeds. By default, iteration starts at the root and visits all nodes beneath +/// it in a depth-first manner. The root node iteself is not visited; the first visited node is a +/// schema node. You can provide a schema name or property path to select a different starting node. +/// By default, this visits the named root node first then all nodes beneath it in a depth-first +/// manner. +/// +/// The function \c TXMPIterator::Next() delivers the schema URI, path, and option flags for the +/// node being visited. If the node is simple, it also delivers the value. Qualifiers for this node +/// are visited next. The fields of a struct or items of an array are visited after the qualifiers +/// of the parent. +/// +/// You can specify options when constructing the iteration object to control how the iteration is +/// performed. +/// +/// \li \c #kXMP_IterJustChildren - Visit just the immediate children of the root. Skip the root +/// itself and all nodes below the immediate children. This omits the qualifiers of the immediate +/// children, the qualifier nodes being below what they qualify. +/// \li \c #kXMP_IterJustLeafNodes - Visit just the leaf property nodes and their qualifiers. +/// \li \c #kXMP_IterJustLeafName - Return just the leaf component of the node names. The default +/// is to return the full path name. +/// \li \c #kXMP_IterIncludeAliases - Include aliases as part of the iteration. Since aliases are +/// not actual nodes the default iteration does not visit them. +/// \li \c #kXMP_IterOmitQualifiers - Do not visit the qualifiers of a node. +// ================================================================================================= + +#include "client-glue/WXMPIterator.hpp" + +template class TXMPIterator { + +public: + + // --------------------------------------------------------------------------------------------- + /// @brief Assignment operator, assigns the internal ref and increments the ref count. + /// + /// Assigns the internal reference from an existing object and increments the reference count on + /// the underlying internal XMP iterator. + /// + /// @param rhs An existing iteration object. + + void operator= ( const TXMPIterator & rhs ); + + // --------------------------------------------------------------------------------------------- + /// @brief Copy constructor, creates a client object refering to the same internal object. + /// + /// Creates a new client iterator that refers to the same underlying iterator as an existing object. + /// + /// @param original An existing iteration object to copy. + + TXMPIterator ( const TXMPIterator & original ); + + // --------------------------------------------------------------------------------------------- + /// @brief Constructs an iterator for properties within a schema in an XMP object. + /// + /// See the class description for the general operation of an XMP object iterator. + /// Overloaded forms are provided to iterate the entire data tree, + /// a subtree rooted at a specific node, or properties within a specific schema. + /// + /// @param xmpObj The XMP object over which to iterate. + /// + /// @param schemaNS Optional schema namespace URI to restrict the iteration. To visit all of the + /// schema, pass 0 or the empty string "". + /// + /// @param propName Optional property name to restrict the iteration. May be an arbitrary path + /// expression. If provided, a schema URI must also be provided. To visit all properties, pass 0 + /// or the empty string "". + /// + /// @param options Option flags to control the iteration. A logical OR of these bit flag constants: + /// \li \c #kXMP_IterJustChildren - Visit only the immediate children of the root; default visits subtrees. + /// \li \c #kXMP_IterJustLeafNodes - Visit only the leaf nodes; default visits all nodes. + /// \li \c #kXMP_IterJustLeafName - Return just the leaf part of the path; default returns the full path. + /// \li \c #kXMP_IterOmitQualifiers - Omit all qualifiers. + /// + /// @return The new TXMPIterator object. + + TXMPIterator ( const TXMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief Constructs an iterator for a subtree of properties within an XMP object. + /// + /// See the class description for the general operation of an XMP object iterator. Overloaded + /// forms are provided to iterate the entire data tree, a subtree rooted at a specific node, or + /// properties within a specific schema. + /// + /// @param xmpObj The XMP object over which to iterate. + /// + /// @param schemaNS Optional schema namespace URI to restrict the iteration. To visit all of the + /// schema, pass 0 or the empty string "". + /// + /// @param options Option flags to control the iteration. A logical OR of these bit flag constants: + /// \li \c #kXMP_IterJustChildren - Visit only the immediate children of the root; default visits subtrees. + /// \li \c #kXMP_IterJustLeafNodes - Visit only the leaf nodes; default visits all nodes. + /// \li \c #kXMP_IterJustLeafName - Return just the leaf part of the path; default returns the full path. + /// \li \c #kXMP_IterOmitQualifiers - Omit all qualifiers. + /// + /// @return The new TXMPIterator object. + + TXMPIterator ( const TXMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief Constructs an iterator for the entire data tree within an XMP object. + /// + /// See the class description for the general operation of an XMP object iterator. Overloaded + /// forms are provided to iterate the entire data tree, a subtree rooted at a specific node, or + /// properties within a specific schema. + /// + /// @param xmpObj The XMP object over which to iterate. + /// + /// @param options Option flags to control the iteration. A logical OR of these bit flag constants: + /// \li \c #kXMP_IterJustChildren - Visit only the immediate children of the root; default visits subtrees. + /// \li \c #kXMP_IterJustLeafNodes - Visit only the leaf nodes; default visits all nodes. + /// \li \c #kXMP_IterJustLeafName - Return just the leaf part of the path; default returns the full path. + /// \li \c #kXMP_IterOmitQualifiers - Omit all qualifiers. + /// + /// @return The new \c TXMPIterator object. + + TXMPIterator ( const TXMPMeta & xmpObj, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief Constructs an iterator for the global tables of the XMP toolkit. Not implemented. + + TXMPIterator ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + /// @brief Destructor, typical virtual destructor. + + virtual ~TXMPIterator() throw(); + + // --------------------------------------------------------------------------------------------- + /// @brief \c Next() visits the next node in the iteration. + /// + /// Proceeds to the next node according to the options specified on creation of this object, and + /// delivers the schema URI, path, and option flags for the node being visited. If the node is + /// simple, it also delivers the value. + /// + /// @param schemaNS [out] A string object in which to return the assigned the schema namespace + /// URI of the current property. Can be null if the value is not wanted. + /// + /// @param propPath [out] A string object in which to return the XPath name of the current + /// property. Can be null if the value is not wanted. + /// + /// @param propValue [out] A string object in which to return the value of the current + /// property. Can be null if the value is not wanted. + /// + /// @param options [out] A buffer in which to return the flags describing the current property, + /// which are a logical OR of \c #XMP_OptionBits bit-flag constants. + /// + /// @return True if there was another node to visit, false if the iteration is complete. + + bool Next ( tStringObj * schemaNS = 0, + tStringObj * propPath = 0, + tStringObj * propValue = 0, + XMP_OptionBits * options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c Skip() skips some portion of the remaining iterations. + /// + /// @param options Option flags to control the iteration, a logical OR of these bit-flag + /// constants: + /// \li \c #kXMP_IterSkipSubtree - Skip the subtree below the current node. + /// \li \c #kXMP_IterSkipSiblings - Skip the subtree below and remaining siblings of the current node. + + void Skip ( XMP_OptionBits options ); + +private: + + XMPIteratorRef iterRef; + + TXMPIterator(); // ! Hidden, must choose property or table iteration. + +}; // class TXMPIterator + +// ================================================================================================= + +#endif // __TXMPIterator_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/TXMPMeta.hpp b/vendor/exiv2-0.25/xmpsdk/include/TXMPMeta.hpp new file mode 100644 index 0000000..0bf04e1 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/TXMPMeta.hpp @@ -0,0 +1,1803 @@ +#ifndef __TXMPMeta_hpp__ +#define __TXMPMeta_hpp__ 1 + +#if ( ! __XMP_hpp__ ) + #error "Do not directly include, use XMPSDK.hpp" +#endif + +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2008 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. +// ================================================================================================= + +// ================================================================================================= +/// \file TXMPMeta.hpp +/// \brief API for access to the XMP Toolkit core services. +/// +/// \c TXMPMeta is the template class providing the core services of the XMP Toolkit. It must be +/// instantiated with a string class such as \c std::string. Read the Toolkit Overview for +/// information about the overall architecture of the XMP API, and the documentation for \c XMPSDK.hpp +/// for specific instantiation instructions. +/// +/// Access these functions through the concrete class, \c SXMPMeta. +// ================================================================================================= + +// ================================================================================================= +/// \class TXMPMeta TXMPMeta.hpp +/// \brief API for access to the XMP Toolkit core services. +/// +/// \c TXMPMeta is the template class providing the core services of the XMP Toolkit. It should be +/// instantiated with a string class such as \c std::string. Read the Toolkit Overview for +/// information about the overall architecture of the XMP API, and the documentation for \c XMPSDK.hpp +/// for specific instantiation instructions. +/// +/// Access these functions through the concrete class, \c SXMPMeta. +/// +/// You can create \c TXMPMeta objects (also called XMP objects) from metadata that you construct, +/// or that you obtain from files using the XMP Toolkit's XMPFiles component; see \c TXMPFiles.hpp. +// ================================================================================================= + +template class TXMPIterator; +template class TXMPUtils; + +// ------------------------------------------------------------------------------------------------- + +template class TXMPMeta { + +public: + + // ============================================================================================= + // Initialization and termination + // ============================== + + // --------------------------------------------------------------------------------------------- + /// \name Initialization and termination + /// + /// @{ + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetVersionInfo() retrieves runtime version information. + /// + /// The header \c XMPVersion.hpp defines a static version number for the XMP Toolkit, which + /// describes the version of the API used at client compile time. It is not necessarily the same + /// as the runtime version. Do not base runtime decisions on the static version alone; you can, + /// however, compare the runtime and static versions. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). The + /// function can be called before calling \c TXMPMeta::Initialize(). + /// + /// @param info [out] A buffer in which to return the version information. + + static void GetVersionInfo ( XMP_VersionInfo * info ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c Initialize() explicitly initializes the XMP Toolkit before use. */ + + /// Initializes the XMP Toolkit. + /// + /// Call this function before making any other calls to the \c TXMPMeta functions, except + /// \c TXMPMeta::GetVersionInfo(). + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @return True on success. */ + static bool Initialize(); + // --------------------------------------------------------------------------------------------- + /// @brief \c Terminate() explicitly terminates usage of the XMP Toolkit. + /// + /// Frees structures created on initialization. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + + static void Terminate(); + + /// @} + + // ============================================================================================= + // Constuctors and destructor + // ========================= + + // --------------------------------------------------------------------------------------------- + /// \name Constructors and destructor + /// @{ + + // --------------------------------------------------------------------------------------------- + /// @brief Default constructor, creates an empty object. + /// + /// The default constructor creates a new empty \c TXMPMeta object. + /// + /// @return The new object. */ + TXMPMeta(); + + // --------------------------------------------------------------------------------------------- + /// @brief Copy constructor, creates a client object refering to the same internal object. + /// + /// The copy constructor creates a new \c TXMPMeta object that refers to the same internal XMP + /// object. as an existing \c TXMPMeta object. + /// + /// @param original The object to copy. + /// + /// @return The new object. */ + + TXMPMeta ( const TXMPMeta & original ); + + // --------------------------------------------------------------------------------------------- + /// @brief Assignment operator, assigns the internal reference and increments the reference count. + /// + /// The assignment operator assigns the internal ref from the rhs object and increments the + /// reference count on the underlying internal XMP object. + + void operator= ( const TXMPMeta & rhs ); + + // --------------------------------------------------------------------------------------------- + /// @brief Reconstructs an XMP object from an internal reference. + /// + /// This constructor creates a new \c TXMPMeta object that refers to the underlying reference object + /// of an existing \c TXMPMeta object. Use to safely pass XMP objects across DLL boundaries. + /// + /// @param xmpRef The underlying reference object, obtained from some other XMP object with + /// \c TXMPMeta::GetInternalRef(). + /// + /// @return The new object. + + TXMPMeta ( XMPMetaRef xmpRef ); + + // --------------------------------------------------------------------------------------------- + /// @brief Constructs an object and parse one buffer of RDF into it. + /// + /// This constructor creates a new \c TXMPMeta object and populates it with metadata from a + /// buffer containing serialized RDF. This buffer must be a complete RDF parse stream. + /// + /// The result of passing serialized data to this function is identical to creating an empty + /// object then calling \c TXMPMeta::ParseFromBuffer(). To use the constructor, however, the RDF + /// must be complete. If you need to parse data from multiple buffers, create an empty object + /// and use \c TXMPMeta::ParseFromBuffer(). + /// + /// @param buffer A pointer to the buffer of RDF to be parsed. Can be null if the length is 0; + /// in this case, the function creates an empty object. + /// + /// @param xmpSize The length in bytes of the buffer. + /// + /// @return The new object. + + TXMPMeta ( XMP_StringPtr buffer, + XMP_StringLen xmpSize ); + + // --------------------------------------------------------------------------------------------- + /// @brief Destructor, typical virtual destructor. */ + virtual ~TXMPMeta() throw(); + + /// @} + + // ============================================================================================= + // Global state functions + // ====================== + + // --------------------------------------------------------------------------------------------- + /// \name Global option flags + /// @{ + /// Global option flags affect the overall behavior of the XMP Toolkit. The available options + /// will be declared in \c XMP_Const.h. There are none in this version of the Toolkit. + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetGlobalOptions() retrieves the set of global option flags. There are none in + /// this version of the Toolkit. + /// + /// This function is static; you can make the call from the class without instantiating it. + /// + /// @return A logical OR of global option bit-flag constants. + + static XMP_OptionBits GetGlobalOptions(); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetGlobalOptions() updates the set of global option flags. There are none in this + /// version of the Toolkit. + /// + /// The entire set is replaced with the new values. If only one flag is to be modified, use + /// \c TXMPMeta::GetGlobalOptions() to obtain the current set, modify the desired flag, then use + /// this function to reset the value. + /// + /// This function is static; you can make the call from the class without instantiating it. + /// + /// @param options A logical OR of global option bit-flag constants. + + static void SetGlobalOptions ( XMP_OptionBits options ); + + /// @} + + // --------------------------------------------------------------------------------------------- + /// \name Internal data structure dump utilities + /// @{ + /// + /// These are debugging utilities that dump internal data structures, to be handled by + /// client-defined callback described in \c XMP_Const.h. + /// + /// @see Member function \c TXMPMeta::DumpObject() + + // --------------------------------------------------------------------------------------------- + /// @brief \c DumpNamespaces() sends the list of registered namespace URIs and prefixes to a handler. + /// + /// For debugging. Invokes a client-defined callback for each line of output. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param outProc The client-defined procedure to handle each line of output. + /// + /// @param clientData A pointer to client-defined data to pass to the handler. + /// + /// @return A success-fail status value, returned from the handler. Zero is success, failure + /// values are client-defined. + + static XMP_Status DumpNamespaces ( XMP_TextOutputProc outProc, + void * clientData ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DumpAliases() sends the list of registered aliases and corresponding actuals to a handler. + /// + /// For debugging. Invokes a client-defined callback for each line of output. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param outProc The client-defined procedure to handle each line of output. + /// + /// @param clientData A pointer to client-defined data to pass to the handler. + /// + /// @return A success-fail status value, returned from the handler. Zero is success, failure + /// values are client-defined. + + static XMP_Status DumpAliases ( XMP_TextOutputProc outProc, + void * clientData ); + + /// @} + + // --------------------------------------------------------------------------------------------- + /// \name Namespace Functions + /// @{ + /// + /// Namespaces must be registered before use in namespace URI parameters or path expressions. + /// Within the XMP Toolkit the registered namespace URIs and prefixes must be unique. Additional + /// namespaces encountered when parsing RDF are automatically registered. + /// + /// The namespace URI should always end in an XML name separator such as '/' or '#'. This is + /// because some forms of RDF shorthand catenate a namespace URI with an element name to form a + /// new URI. + + // --------------------------------------------------------------------------------------------- + /// @brief \c RegisterNamespace() registers a namespace URI with a prefix. + /// + /// If the the prefix is in use, the URI of the existing prefix is overwritten. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param namespaceURI The URI for the namespace. Must be a valid XML URI. + /// + /// @param prefix The prefix to be used. Must be a valid XML name. + /// + /// @note No checking is done on either the URI or the prefix. */ + + static void RegisterNamespace ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetNamespacePrefix() obtains the prefix for a registered namespace URI, and + /// reports whether the URI is registered. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param namespaceURI The URI for the namespace. Must not be null or the empty string. It is + /// not an error if the namespace URI is not registered. + /// + /// @param namespacePrefix [out] A string object in which to return the prefix registered for + /// this URI, with a terminating colon character, ':'. If the namespace is not registered, this + /// string is not modified. + /// + /// @return True if the namespace URI is registered. + + static bool GetNamespacePrefix ( XMP_StringPtr namespaceURI, + tStringObj * namespacePrefix ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetNamespaceURI() obtains the URI for a registered namespace prefix, and reports + /// whether the prefix is registered. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param namespacePrefix The prefix for the namespace. Must not be null or the empty string. + /// It is not an error if the namespace prefix is not registered. + /// + /// @param namespaceURI [out] A string object in which to return the URI registered for this + /// prefix. If the prefix is not registered, this string is not modified. + /// + /// @return True if the namespace prefix is registered. + + static bool GetNamespaceURI ( XMP_StringPtr namespacePrefix, + tStringObj * namespaceURI ); + + // --------------------------------------------------------------------------------------------- + /// @brief Not implemented. + /// + /// Deletes a namespace from the registry. Does nothing if the URI is not registered, or if the + /// parameter is null or the empty string. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param namespaceURI The URI for the namespace. + + static void DeleteNamespace ( XMP_StringPtr namespaceURI ); + + /// @} + + // --------------------------------------------------------------------------------------------- + /// \name Alias functions + /// @{ + /// + /// Aliases in XMP serve the same purpose as Windows file shortcuts, Mac OS file aliases, or + /// UNIX file symbolic links. The aliases are multiple names for the same property. One + /// distinction of XMP aliases is that they are ordered. An alias name points to an actual name; + /// the primary significance of the actual name is that it is the preferred name for output, + /// generally the most widely recognized name. + /// + /// XMP restricts the names that can be aliased. The alias must be a top-level property name, + /// not a field within a structure or an element within an array. The actual can be a top-level + /// property name, the first element within a top-level array, or the default element in an + /// alt-text array. This does not mean the alias can only be a simple property; you can alias a + /// top-level structure or array to an identical top-level structure or array, or to the first + /// item of an array of structures. + + // --------------------------------------------------------------------------------------------- + /// @brief \c RegisterAlias() associates an alias name with an actual name. + /// + /// Defines an alias mapping from one namespace/property to another. Both property names must be + /// simple names. An alias can be a direct mapping, where the alias and actual have the same + /// data type. It is also possible to map a simple alias to an item in an array. This can either + /// be to the first item in the array, or to the 'x-default' item in an alt-text array. Multiple + /// alias names can map to the same actual, as long as the forms match. It is a no-op to + /// reregister an alias in an identical fashion. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. + /// + /// @param aliasProp The name of the alias. Must be a simple name, not null or the empty string + /// and not a general path expression. + /// + /// @param actualNS The namespace URI for the actual. Must not be null or the empty string. + /// + /// @param actualProp The name of the actual. Must be a simple name, not null or the empty string + /// and not a general path expression. + /// + /// @param arrayForm Provides the array form for simple aliases to an array item. This is needed + /// to know what kind of array to create if set for the first time via the simple alias. Pass + /// \c #kXMP_NoOptions, the default value, for all direct aliases regardless of whether the actual + /// data type is an array or not. One of these constants: + /// + /// \li \c #kXMP_NoOptions - This is a direct mapping. The actual data type does not matter. + /// \li \c #kXMP_PropValueIsArray - The actual is an unordered array, the alias is to the + /// first element of the array. + /// \li \c #kXMP_PropArrayIsOrdered - The actual is an ordered array, the alias is to the + /// first element of the array. + /// \li \c #kXMP_PropArrayIsAlternate - The actual is an alternate array, the alias is to the + /// first element of the array. + /// \li \c #kXMP_PropArrayIsAltText - The actual is an alternate text array, the alias is to + /// the 'x-default' element of the array. */ + + static void RegisterAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm = kXMP_NoOptions ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ResolveAlias() reports whether a name is an alias, and what it is aliased to. + /// + /// Output strings are not written until return, so you can use this to + /// "reduce" a path to the base form as follows: + ///
+    ///   isAlias = SXMPMeta::ResolveAlias ( ns.c_str(), path.c_str(), &ns, &path, 0 );
+    /// 
+ /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. + /// + /// @param aliasProp The name of the alias. Can be an arbitrary path expression path, must not + /// null or the empty string. + /// + /// @param actualNS [out] A string object in which to return the namespace URI for the actual. + /// Not modified if the given name is not an alias. Can be null if the namespace URI is not wanted. + /// + /// @param actualProp [out] A string object in which to return the path of the actual. + /// Not modified if the given name is not an alias. Can be null if the actual's path is not wanted. + /// + /// @param arrayForm [out] A string object in which to return the array form of the actual. This + /// is 0 (\c #kXMP_NoOptions) if the alias and actual forms match, otherwise it is the options + /// passed to \c TXMPMeta::RegisterAlias(). Not modified if the given name is not an alias. Can + /// be null if the actual's array form is not wanted. + /// + /// @return True if the provided name is an alias. + + static bool ResolveAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + tStringObj * actualNS, + tStringObj * actualProp, + XMP_OptionBits * arrayForm ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DeleteAlias() deletes an alias. + /// + /// This deletes only the registration of the alias, it does not delete the actual property. + /// It deletes any view of the property through the alias name. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. + /// + /// @param aliasProp The name of the alias. Must be a simple name, not null or the empty string + /// and not a general path expression. It is not an error to provide + /// a name that has not been registered as an alias. + + static void DeleteAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c RegisterStandardAliases() registers all of the built-in aliases for a standard namespace. + /// + /// The built-in aliases are documented in the XMP Specification. This function registers the + /// aliases in the given namespace; that is, it creates the aliases from this namespace to + /// actuals in other namespaces. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param schemaNS The namespace URI for the aliases. Must not be null or the empty string. + + static void RegisterStandardAliases ( XMP_StringPtr schemaNS ); + + /// @} + + // ============================================================================================= + // Basic property manipulation functions + // ===================================== + + // *** Should add discussion of schemaNS and propName prefix usage. + + // --------------------------------------------------------------------------------------------- + /// \name Accessing property values + /// @{ + /// + /// The property value accessors all take a property specification; the top level namespace URI + /// (the "schema" namespace) and the basic name of the property being referenced. See the + /// introductory discussion of path expression usage for more information. + /// + /// The accessor functions return true if the specified property exists. If it does, output + /// parameters return the value (if any) and option flags describing the property. The option + /// bit-flag constants that describe properties are \c kXMP_PropXx and + /// \c kXMP_ArrayIsXx. See \c #kXMP_PropValueIsURI and following, and macros \c #XMP_PropIsSimple + /// and following in \c XMP_Const.h. If the property exists and has a value, it is returned as a + /// Unicode string in UTF-8 encoding. Arrays and the non-leaf levels of structs do not have + /// values. + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetProperty() reports whether a property exists, and retrieves its value. + /// + /// This is the simplest property accessor. Use this to retrieve the values of top-level simple + /// properties, or after using the path composition functions in \c TXMPUtils. + /// + /// When specifying a namespace and path (in this and all other accessors): + /// \li If a namespace URI is specified, it must be for a registered namespace. + /// \li If the namespace is specified only by a prefix in the property name path, + /// it must be a registered prefix. + /// \li If both a URI and path prefix are present, they must be corresponding + /// parts of a registered namespace. + /// + /// @param schemaNS The namespace URI for the property. The URI must be for a registered + /// namespace. Can be null or the empty string if the first component of the \c propName path + /// contains a namespace prefix. + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string. The first component can be a namespace prefix; if present without a + /// \c schemaNS value, the prefix specifies the namespace. The prefix must be for a registered + /// namespace, and if a namespace URI is specified, must match the registered prefix for that + /// namespace. + /// + /// @param propValue [out] A string object in which to return the value of the property, if the + /// property exists and has a value. Arrays and non-leaf levels of structs do not have values. + /// Can be null if the value is not wanted. + /// + /// @param options A buffer in which to return option flags describing the property. Can be null + /// if the flags are not wanted. + /// + /// @return True if the property exists. + + bool GetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + tStringObj * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetArrayItem() provides access to items within an array. + /// + /// Reports whether the item exists; if it does, and if it has a value, the function retrieves + /// the value. Items are accessed by an integer index, where the first item has index 1. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem + /// to specify the last existing array item. + /// + /// @param itemValue [out] A string object in which to return the value of the array item, if it + /// has a value. Arrays and non-leaf levels of structs do not have values. Can be null if the + /// value is not wanted. + /// + /// @param options [out] A buffer in which to return the option flags describing the array item. + /// Can be null if the flags are not wanted. + /// + /// @return True if the array item exists. + + bool GetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + tStringObj * itemValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetStructField() provides access to fields within a nested structure. + /// + /// Reports whether the field exists; if it does, and if it has a value, the function retrieves + /// the value. + /// + /// @param schemaNS The namespace URI for the struct; see \c GetProperty(). + /// + /// @param structName The name of the struct. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field. Same URI and prefix usage as the \c schemaNS + /// and \c structName parameters. + /// + /// @param fieldName The name of the field. Must be a single XML name, must not be null or the + /// empty string. Same URI and prefix usage as the \c schemaNS and \c structName parameters. + /// + /// @param fieldValue [out] A string object in which to return the value of the field, if the + /// field has a value. Arrays and non-leaf levels of structs do not have values. Can be null if + /// the value is not wanted. + /// + /// @param options [out] A buffer in which to return the option flags describing the field. Can + /// be null if the flags are not wanted. + /// + /// @return True if the field exists. + + bool GetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + tStringObj * fieldValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetQualifier() provides access to a qualifier attached to a property. + /// + /// @note In this version of the Toolkit, qualifiers are supported only for simple leaf properties. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property to which the qualifier is attached. Can be a + /// general path expression, must not be null or the empty string; see \c GetProperty() for + /// namespace prefix usage. + /// + /// @param qualNS The namespace URI for the qualifier. Same URI and prefix usage as the + /// \c schemaNS and \c propName parameters. + /// + /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or + /// the empty string. Same URI and prefix usage as the \c schemaNS and \c propName parameters. + /// + /// @param qualValue [out] A string object in which to return the value of the qualifier, if the + /// qualifier has a value. Arrays and non-leaf levels of structs do not have values. Can be null + /// if the value is not wanted. + /// + /// @param options [out] A buffer in which to return the option flags describing the qualifier. + /// Can be null if the flags are not wanted. + /// + /// @return True if the qualifier exists. + + bool GetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + tStringObj * qualValue, + XMP_OptionBits * options ) const; + + /// @} + + // ============================================================================================= + + // --------------------------------------------------------------------------------------------- + /// \name Creating properties and setting their values + /// @{ + /// + /// These functions all take a property specification; the top level namespace URI (the "schema" + /// namespace) and the basic name of the property being referenced. See the introductory + /// discussion of path expression usage for more information. + /// + /// All of the functions take a UTF-8 encoded Unicode string for the property value. Arrays and + /// non-leaf levels of structs do not have values. The value can be passed as an + /// \c #XMP_StringPtr (a pointer to a null-terminated string), or as a string object + /// (\c tStringObj). + + /// Each function takes an options flag that describes the property. You can use these functions + /// to create empty arrays and structs by setting appropriate option flags. When you assign a + /// value, all levels of a struct that are implicit in the assignment are created if necessary. + /// \c TXMPMeta::AppendArrayItem() implicitly creates the named array if necessary. + /// + /// The allowed option bit-flags include: + /// \li \c #kXMP_PropValueIsStruct - Can be used to create an empty struct. + /// A struct is implicitly created when the first field is set. + /// \li \c #kXMP_PropValueIsArray - By default, a general unordered array (bag). + /// \li \c #kXMP_PropArrayIsOrdered - An ordered array. + /// \li \c #kXMP_PropArrayIsAlternate - An alternative array. + /// \li \c #kXMP_PropArrayIsAltText - An alt-text array. Each array element must + /// be a simple property with an \c xml:lang attribute. + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty() creates or sets a property value. + /// + /// This is the simplest property setter. Use it for top-level simple properties, or after using + /// the path composition functions in \c TXMPUtils. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue The new value, a pointer to a null terminated UTF-8 string. Must be null + /// for arrays and non-leaf levels of structs that do not have values. + /// + /// @param options Option flags describing the property; a logical OR of allowed bit-flag + /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property + /// that already exists. + + void SetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr propValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty() creates or sets a property value using a string object. + /// + /// Overloads the basic form of the function, allowing you to pass a string object + /// for the item value. It is otherwise identical; see details in the canonical form. + + void SetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const tStringObj & propValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetArrayItem() creates or sets the value of an item within an array. + /// + /// Items are accessed by an integer index, where the first item has index 1. This function + /// creates the item if necessary, but the array itself must already exist Use + /// \c AppendArrayItem() to create arrays. A new item is automatically appended if the index is the + /// array size plus 1. To insert a new item before or after an existing item, use option flags. + /// + /// Use \c TXMPUtils::ComposeArrayItemPath() to create a complex path. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem + /// to specify the last existing array item. + /// + /// @param itemValue The new item value, a null-terminated UTF-8 string, if the array item has a + /// value. + /// + /// @param options Option flags describing the array type and insertion location for a new item; + /// a logical OR of allowed bit-flag constants. The type, if specified, must match the existing + /// array type, \c #kXMP_PropArrayIsOrdered, \c #kXMP_PropArrayIsAlternate, or + /// \c #kXMP_PropArrayIsAltText. Default (0 or \c #kXMP_NoOptions) matches the existing array type. + /// + /// To insert a new item before or after the specified index, set flag \c #kXMP_InsertBeforeItem + /// or \c #kXMP_InsertAfterItem. + + void SetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetArrayItem() creates or sets the value of an item within an array using a string object. + /// + /// Overloads the basic form of the function, allowing you to pass a string object in which to + /// return the item value. It is otherwise identical; see details in the canonical form. + + void SetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + const tStringObj & itemValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c AppendArrayItem() adds an item to an array, creating the array if necessary. + /// + /// This function simplifies construction of an array by not requiring that you pre-create an + /// empty array. The array that is assigned is created automatically if it does not yet exist. + /// If the array exists, it must have the form specified by the options. Each call appends a new + /// item to the array. + /// + /// Use \c TXMPUtils::ComposeArrayItemPath() to create a complex path. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param arrayOptions Option flags describing the array type to create; a logical OR of + /// allowed bit-flag constants, \c #kXMP_PropArrayIsOrdered, \c #kXMP_PropArrayIsAlternate, or + /// \c #kXMP_PropArrayIsAltText. If the array exists, must match the existing array type or be + /// null (0 or \c #kXMP_NoOptions). + /// + /// @param itemValue The new item value, a null-terminated UTF-8 string, if the array item has a + /// value. + /// + /// @param itemOptions Option flags describing the item type to create; one of the bit-flag + /// constants \c #kXMP_PropValueIsArray or \c #kXMP_PropValueIsStruct to create a complex array + /// item. + + void AppendArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + XMP_StringPtr itemValue, + XMP_OptionBits itemOptions = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c AppendArrayItem() adds an item to an array using a string object value, creating + /// the array if necessary. + /// + /// Overloads the basic form of the function, allowing you to pass a string object in which to + /// return the item value. It is otherwise identical; see details in the canonical form. + + void AppendArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + const tStringObj & itemValue, + XMP_OptionBits itemOptions = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetStructField() creates or sets the value of a field within a nested structure. + /// + /// Use this to set a value within an existing structure, create a new field within an existing + /// structure, or create an empty structure of any depth. If you set a field in a structure that + /// does not exist, the structure is automatically created. + /// + /// Use \c TXMPUtils::ComposeStructFieldPath() to create a complex path. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param structName The name of the struct. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field. Same namespace and prefix usage as + /// \c GetProperty(). + /// + /// @param fieldName The name of the field. Must be a single XML name, must not be null or the + /// empty string. Same namespace and prefix usage as \c GetProperty(). + /// + /// @param fieldValue The new value, a null-terminated UTF-8 string, if the field has a value. + /// Null to create a new, empty struct or empty field in an existing struct. + /// + /// @param options Option flags describing the property, in which the bit-flag + /// \c #kXMP_PropValueIsStruct must be set to create a struct. + + void SetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetStructField() creates or sets the value of a field within a nested structure, + /// using a string object. + /// + /// Overloads the basic form of the function, allowing you to pass a string object in which to + /// return the field value. It is otherwise identical; see details in the canonical form. + + void SetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + const tStringObj & fieldValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetQualifier() creates or sets a qualifier attached to a property. + /// + /// Use this to set a value for an existing qualifier, or create a new qualifier. <> Use + /// \c TXMPUtils::ComposeQualifierPath() to create a complex path. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property to which the qualifier is attached. Can be a + /// general path expression, must not be null or the empty string; see \c GetProperty() for + /// namespace prefix usage. + /// + /// @param qualNS The namespace URI for the qualifier. Same namespace and prefix usage as + /// \c GetProperty(). + /// + /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or + /// the empty string. Same namespace and prefix usage as \c GetProperty(). + /// + /// @param qualValue The new value, a null-terminated UTF-8 string, if the qualifier has a + /// value. Null to create a new, empty qualifier. + /// + /// @param options Option flags describing the <>, a logical OR + /// of property-type bit-flag constants. Use the macro \c #XMP_PropIsQualifier to create a + /// qualifier. <> + + void SetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr qualValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetQualifier() creates or sets a qualifier attached to a property using a string object. + /// + /// Overloads the basic form of the function, allowing you to pass a string object + /// for the qualifier value. It is otherwise identical; see details in the canonical form. + + void SetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + const tStringObj & qualValue, + XMP_OptionBits options = 0 ); + + /// @} + + // ============================================================================================= + + // --------------------------------------------------------------------------------------------- + /// \name Detecting and deleting properties. + /// @{ + /// + /// The namespace URI and prefix usage for property specifiers in these functions is the same as + /// for \c TXMPMeta::GetProperty(). + + // --------------------------------------------------------------------------------------------- + /// @brief \c DeleteProperty() deletes an XMP subtree rooted at a given property. + /// + /// It is not an error if the property does not exist. + /// + /// @param schemaNS The namespace URI for the property; see \c GetProperty(). + /// + /// @param propName The name of the property; see \c GetProperty(). + + void DeleteProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DeleteArrayItem() deletes an XMP subtree rooted at a given array item. + /// + /// It is not an error if the array item does not exist. Use + /// \c TXMPUtils::ComposeArrayItemPath() to create a complex path. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem + /// to specify the last existing array item. + + void DeleteArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DeleteStructField() deletes an XMP subtree rooted at a given struct field. + /// + /// It is not an error if the field does not exist. + /// + /// @param schemaNS The namespace URI for the struct; see \c GetProperty(). + /// + /// @param structName The name of the struct. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field. Same namespace and prefix usage as + /// \c GetProperty(). + /// + /// @param fieldName The name of the field. Must be a single XML name, must not be null or the + /// empty string. Same namespace and prefix usage as \c GetProperty(). + + void DeleteStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DeleteQualifier() deletes an XMP subtree rooted at a given qualifier. + /// + /// It is not an error if the qualifier does not exist. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property to which the qualifier is attached. Can be a + /// general path expression, must not be null or the empty string; see \c GetProperty() for + /// namespace prefix usage. + /// + /// @param qualNS The namespace URI for the qualifier. Same namespace and prefix usage as + /// \c GetProperty(). + /// + /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or + /// the empty string. Same namespace and prefix usage as \c GetProperty(). + + void DeleteQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DoesPropertyExist() reports whether a property currently exists. + /// + /// @param schemaNS The namespace URI for the property; see \c GetProperty(). + /// + /// @param propName The name of the property; see \c GetProperty(). + /// + /// @return True if the property exists. + + bool DoesPropertyExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c DoesArrayItemExist() reports whether an array item currently exists. + /// + /// Use \c TXMPUtils::ComposeArrayItemPath() to create a complex path. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param itemIndex The 1-based index of the desired item. Use the macro \c #kXMP_ArrayLastItem + /// to specify the last existing array item. + /// + /// @return True if the array item exists. + + bool DoesArrayItemExist ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c DoesStructFieldExist() reports whether a struct field currently exists. + /// + /// Use \c TXMPUtils::ComposeStructFieldPath() to create a complex path. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param structName The name of the struct. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field. Same namespace and prefix usage as + /// \c GetProperty(). + /// + /// @param fieldName The name of the field. Must be a single XML name, must not be null or the + /// empty string. Same namespace and prefix usage as \c GetProperty(). + /// + /// @return True if the field exists. + + bool DoesStructFieldExist ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c DoesQualifierExist() reports whether a qualifier currently exists. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property to which the qualifier is attached. Can be a + /// general path expression, must not be null or the empty string; see \c GetProperty() for + /// namespace prefix usage. + /// + /// @param qualNS The namespace URI for the qualifier. Same namespace and prefix usage as + /// \c GetProperty(). + /// + /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or + /// the empty string. Same namespace and prefix usage as \c GetProperty(). + /// + /// @return True if the qualifier exists. + + bool DoesQualifierExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ) const; + + /// @} + + // ============================================================================================= + // Specialized Get and Set functions + // ============================================================================================= + + // --------------------------------------------------------------------------------------------- + /// \name Accessing properties as binary values. + /// @{ + /// + /// These are very similar to \c TXMPMeta::GetProperty() and \c TXMPMeta::SetProperty(), except + /// that the value is returned or provided in binary form instead of as a UTF-8 string. + /// \c TXMPUtils provides functions for converting between binary and string values. + /// Use the path composition functions in \c TXMPUtils to compose complex path expressions + /// for fields or items in nested structures or arrays, or for qualifiers. + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetProperty_Bool() retrieves the value of a Boolean property as a C++ bool. + /// + /// Reports whether a property exists, and retrieves its binary value and property type information. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue [out] A buffer in which to return the binary value. Can be null if the + /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have + /// values. + /// + /// @param options [out] A buffer in which to return the option flags describing the property, a + /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can + /// be null if flags are not wanted. + /// + /// @return True if the property exists. + + bool GetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetProperty_Int() retrieves the value of an integer property as a C long integer. + /// + /// Reports whether a property exists, and retrieves its binary value and property type information. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue [out] A buffer in which to return the binary value. Can be null if the + /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have + /// values. + /// + /// @param options [out] A buffer in which to return the option flags describing the property, a + /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can + /// be null if flags are not wanted. + /// + /// @return True if the property exists. + + bool GetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetProperty_Int64() retrieves the value of an integer property as a C long long integer. + /// + /// Reports whether a property exists, and retrieves its binary value and property type information. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue [out] A buffer in which to return the binary value. Can be null if the + /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have + /// values. + /// + /// @param options [out] A buffer in which to return the option flags describing the property, a + /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can + /// be null if flags are not wanted. + /// + /// @return True if the property exists. + + bool GetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long long * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetProperty_Float() retrieves the value of a floating-point property as a C double float. + /// + /// Reports whether a property exists, and retrieves its binary value and property type information. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue [out] A buffer in which to return the binary value. Can be null if the + /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have + /// values. + /// + /// @param options [out] A buffer in which to return the option flags describing the property, a + /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can + /// be null if flags are not wanted. + /// + /// @return True if the property exists. + + bool GetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetProperty_Date() retrieves the value of a date-time property as an \c #XMP_DateTime structure. + /// + /// Reports whether a property exists, and retrieves its binary value and property type information. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue [out] A buffer in which to return the binary value. Can be null if the + /// value is not wanted. Must be null for arrays and non-leaf levels of structs that do not have + /// values. + /// + /// @param options [out] A buffer in which to return the option flags describing the property, a + /// logical OR of allowed bit-flag constants; see \c #kXMP_PropValueIsStruct and following. Can + /// be null if flags are not wanted. + /// + /// @return True if the property exists. + + bool GetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_DateTime * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty_Bool() sets the value of a Boolean property using a C++ bool. + /// + /// Sets a property with a binary value, creating it if necessary. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue The new binary value. Can be null if creating the property. Must be null + /// for arrays and non-leaf levels of structs that do not have values. + /// + /// @param options Option flags describing the property; a logical OR of allowed bit-flag + /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property + /// that already exists. + + void SetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool propValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty_Int() sets the value of an integer property using a C long integer. + /// + /// Sets a property with a binary value, creating it if necessary. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue The new binary value. Can be null if creating the property. Must be null + /// for arrays and non-leaf levels of structs that do not have values. + /// + /// @param options Option flags describing the property; a logical OR of allowed bit-flag + /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property + /// that already exists. + + void SetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long propValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty_Int64() sets the value of an integer property using a C long long integer. + /// + /// Sets a property with a binary value, creating it if necessary. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue The new binary value. Can be null if creating the property. Must be null + /// for arrays and non-leaf levels of structs that do not have values. + /// + /// @param options Option flags describing the property; a logical OR of allowed bit-flag + /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property + /// that already exists. + + void SetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long long propValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty_Float() sets the value of a floating-point property using a C double float. + /// + /// Sets a property with a binary value, creating it if necessary. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue The new binary value. Can be null if creating the property. Must be null + /// for arrays and non-leaf levels of structs that do not have values. + /// + /// @param options Option flags describing the property; a logical OR of allowed bit-flag + /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property + /// that already exists. + + void SetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double propValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetProperty_Date() sets the value of a date/time property using an \c #XMP_DateTime structure. + /// + /// Sets a property with a binary value, creating it if necessary. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param propValue The new binary value. Can be null if creating the property. Must be null + /// for arrays and non-leaf levels of structs that do not have values. + /// + /// @param options Option flags describing the property; a logical OR of allowed bit-flag + /// constants; see \c #kXMP_PropValueIsStruct and following. Must match the type of a property + /// that already exists. + + void SetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const XMP_DateTime & propValue, + XMP_OptionBits options = 0 ); + + /// @} + // ============================================================================================= + /// \name Accessing localized text (alt-text) properties. + /// @{ + /// + /// Localized text properties are stored in alt-text arrays. They allow multiple concurrent + /// localizations of a property value, for example a document title or copyright in several + /// languages. + /// + /// These functions provide convenient support for localized text properties, including a + /// number of special and obscure aspects. The most important aspect of these functions is that + /// they select an appropriate array item based on one or two RFC 3066 language tags. One of + /// these languages, the "specific" language, is preferred and selected if there is an exact + /// match. For many languages it is also possible to define a "generic" language that can be + /// used if there is no specific language match. The generic language must be a valid RFC 3066 + /// primary subtag, or the empty string. + /// + /// For example, a specific language of "en-US" should be used in the US, and a specific + /// language of "en-UK" should be used in England. It is also appropriate to use "en" as the + /// generic language in each case. If a US document goes to England, the "en-US" title is + /// selected by using the "en" generic language and the "en-UK" specific language. + /// + /// It is considered poor practice, but allowed, to pass a specific language that is just an + /// RFC 3066 primary tag. For example "en" is not a good specific language, it should only be + /// used as a generic language. Passing "i" or "x" as the generic language is also considered + /// poor practice but allowed. + /// + /// Advice from the W3C about the use of RFC 3066 language tags can be found at: + /// \li http://www.w3.org/International/articles/language-tags/ + /// + /// \note RFC 3066 language tags must be treated in a case insensitive manner. The XMP toolkit + /// does this by normalizing their capitalization: + /// \li The primary subtag is lower case, the suggested practice of ISO 639. + /// \li All 2 letter secondary subtags are upper case, the suggested practice of ISO 3166. + /// \li All other subtags are lower case. + /// + /// The XMP specification defines an artificial language, "x-default", that is used to + /// explicitly denote a default item in an alt-text array. The XMP toolkit normalizes alt-text + /// arrays such that the x-default item is the first item. The \c SetLocalizedText() function + /// has several special features related to the x-default item, see its description for details. + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetLocalizedText() retrieves information about a selected item in an alt-text array. + /// + /// The array item is selected according to these rules: + /// \li Look for an exact match with the specific language. + /// \li If a generic language is given, look for a partial match. + /// \li Look for an x-default item. + /// \li Choose the first item. + /// + /// A partial match with the generic language is where the start of the item's language matches + /// the generic string and the next character is '-'. An exact match is also recognized as a + /// degenerate case. + /// + /// You can pass "x-default" as the specific language. In this case, selection of an + /// \c x-default item is an exact match by the first rule, not a selection by the 3rd rule. The + /// last 2 rules are fallbacks used when the specific and generic languages fail to produce a + /// match. + /// + /// The return value reports whether a match was successfully made. + /// + /// @param schemaNS The namespace URI for the alt-text array; see \c GetProperty(). + /// + /// @param altTextName The name of the alt-text array. Can be a general path expression, must + /// not be null or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be + /// null or the empty string if no generic language is wanted. + /// + /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". + /// Must not be null or the empty string. + /// + /// @param actualLang [out] A string object in which to return the language of the selected + /// array item, if an appropriate array item is found. Can be null if the language is not wanted. + /// + /// @param itemValue [out] A string object in which to return the value of the array item, if an + /// appropriate array item is found. Can be null if the value is not wanted. + /// + /// @param options A buffer in which to return the option flags that describe the array item, if + /// an appropriate array item is found. Can be null if the flags are not wanted. + /// + /// @return True if an appropriate array item exists. + + bool GetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + tStringObj * actualLang, + tStringObj * itemValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetLocalizedText() modifies the value of a selected item in an alt-text array. + /// + /// Creates an appropriate array item if necessary, and handles special cases for the x-default + /// item. + /// + /// The array item is selected according to these rules: + /// \li Look for an exact match with the specific language. + /// \li If a generic language is given, look for a partial match. + /// \li Look for an x-default item. + /// \li Choose the first item. + /// + /// A partial match with the generic language is where the start of the item's language matches + /// the generic string and the next character is '-'. An exact match is also recognized as a + /// degenerate case. + /// + /// You can pass "x-default" as the specific language. In this case, selection of an + /// \c x-default item is an exact match by the first rule, not a selection by the 3rd rule. The + /// last 2 rules are fallbacks used when the specific and generic languages fail to produce a + /// match. + /// + /// Item values are modified according to these rules: + /// + /// \li If the selected item is from a match with the specific language, the value of that + /// item is modified. If the existing value of that item matches the existing value of the + /// x-default item, the x-default item is also modified. If the array only has 1 existing item + /// (which is not x-default), an x-default item is added with the given value. + /// + /// \li If the selected item is from a match with the generic language and there are no other + /// generic matches, the value of that item is modified. If the existing value of that item + /// matches the existing value of the x-default item, the x-default item is also modified. If + /// the array only has 1 existing item (which is not x-default), an x-default item is added + /// with the given value. + /// + /// \li If the selected item is from a partial match with the generic language and there are + /// other partial matches, a new item is created for the specific language. The x-default item + /// is not modified. + /// + /// \li If the selected item is from the last 2 rules then a new item is created for the + /// specific language. If the array only had an x-default item, the x-default item is also + /// modified. If the array was empty, items are created for the specific language and + /// x-default. + /// + /// @param schemaNS The namespace URI for the alt-text array; see \c GetProperty(). + /// + /// @param altTextName The name of the alt-text array. Can be a general path expression, must + /// not be null or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be + /// null or the empty string if no generic language is wanted. + /// + /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". + /// Must not be null or the empty string. + /// + /// @param itemValue The new value for the matching array item, specified as a null-terminated + /// UTF-8 string. + /// + /// @param options Option flags, none currently defined. + + void SetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr itemValue, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetLocalizedText() modifies the value of a selected item in an alt-text array using + /// a string object. + /// + /// Creates an appropriate array item if necessary, and handles special cases for the x-default + /// item. + /// + /// The array item is selected according to these rules: + /// \li Look for an exact match with the specific language. + /// \li If a generic language is given, look for a partial match. + /// \li Look for an x-default item. + /// \li Choose the first item. + /// + /// A partial match with the generic language is where the start of the item's language matches + /// the generic string and the next character is '-'. An exact match is also recognized as a + /// degenerate case. + /// + /// You can pass "x-default" as the specific language. In this case, selection of an \c x-default + /// item is an exact match by the first rule, not a selection by the 3rd rule. The last 2 rules + /// are fallbacks used when the specific and generic languages fail to produce a match. + /// + /// Item values are modified according to these rules: + /// + /// \li If the selected item is from a match with the specific language, the value of that + /// item is modified. If the existing value of that item matches the existing value of the + /// x-default item, the x-default item is also modified. If the array only has 1 existing item + /// (which is not x-default), an x-default item is added with the given value. + /// + /// \li If the selected item is from a match with the generic language and there are no other + /// generic matches, the value of that item is modified. If the existing value of that item + /// matches the existing value of the x-default item, the x-default item is also modified. If + /// the array only has 1 existing item (which is not x-default), an x-default item is added + /// with the given value. + /// + /// \li If the selected item is from a partial match with the generic language and there are + /// other partial matches, a new item is created for the specific language. The x-default item + /// is not modified. + /// + /// \li If the selected item is from the last 2 rules then a new item is created for the + /// specific language. If the array only had an x-default item, the x-default item is also + /// modified. If the array was empty, items are created for the specific language and + /// x-default. + /// + /// @param schemaNS The namespace URI for the alt-text array; see \c GetProperty(). + /// + /// @param altTextName The name of the alt-text array. Can be a general path expression, must + /// not be null or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be + /// null or the empty string if no generic language is wanted. + /// + /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". + /// Must not be null or the empty string. + /// + /// @param itemValue The new value for the matching array item, specified as a string object. + /// + /// @param options Option flags, none currently defined. + + void SetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + const tStringObj & itemValue, + XMP_OptionBits options = 0 ); + + /// @} + + // ============================================================================================= + /// \name Creating and reading serialized RDF. + /// @{ + /// + /// The metadata contained in an XMP object must be serialized as RDF for storage in an XMP + /// packet and output to a file. Similarly, metadata in the form of serialized RDF (such as + /// metadata read from a file using \c TXMPFiles) must be parsed into an XMP object for + /// manipulation with the XMP Toolkit. + /// + /// These functions support parsing serialized RDF into an XMP object, and serializing an XMP + /// object into RDF. The input for parsing can be any valid Unicode encoding. ISO Latin-1 is + /// also recognized, but its use is strongly discouraged. Serialization is always as UTF-8. + + // --------------------------------------------------------------------------------------------- + /// @brief \c ParseFromBuffer() parses RDF from a series of input buffers into this XMP object. + /// + /// Use this to convert metadata from serialized RDF form (as, for example, read from an XMP + /// packet embedded in a file) into an XMP object that you can manipulate with the XMP Toolkit. + /// If this XMP object is empty and the input buffer contains a complete XMP packet, this is the + /// same as creating a new XMP object from that buffer with the constructor. + /// + /// You can use this function to combine multiple buffers into a single metadata tree. To + /// terminate an input loop conveniently, pass the option \c #kXMP_ParseMoreBuffers for all + /// real input, then make a final call with a zero length and \c #kXMP_NoOptions. The buffers + /// can be any length. The buffer boundaries need not respect XML tokens or even Unicode + /// characters. + /// + /// @param buffer A pointer to a buffer of input. Can be null if \c bufferSize is 0. + /// + /// @param bufferSize The length of the input buffer in bytes. Zero is a valid value. + /// + /// @param options An options flag that controls how the parse operation is performed. A logical + /// OR of these bit-flag constants: + /// \li \c #kXMP_ParseMoreBuffers - This is not the last buffer of input, more calls follow. + /// \li \c #kXMP_RequireXMPMeta - The \c x:xmpmeta XML element is required around \c rdf:RDF. + /// + /// @see \c TXMPFiles::GetXMP() + + void ParseFromBuffer ( XMP_StringPtr buffer, + XMP_StringLen bufferSize, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SerializeToBuffer() serializes metadata in this XMP object into a string as RDF. + /// + /// Use this to prepare metadata for storage as an XMP packet embedded in a file. See \c TXMPFiles::PutXMP(). + /// + /// @param rdfString [out] A string object in which to return the serialized RDF. Must not be null. + /// + /// @param options An options flag that controls how the serialization operation is performed. + /// The specified options must be logically consistent; an exception is thrown if they are not. + /// A logical OR of these bit-flag constants: + /// \li \c kXMP_OmitPacketWrapper - Do not include an XML packet wrapper. This cannot be + /// specified together with \c #kXMP_ReadOnlyPacket, \c #kXMP_IncludeThumbnailPad, or + /// \c #kXMP_ExactPacketLength. + /// \li \c kXMP_ReadOnlyPacket - Create a read-only XML packet wapper. Cannot be specified + /// together with \c kXMP_OmitPacketWrapper. + /// \li \c kXMP_UseCompactFormat - Use a highly compact RDF syntax and layout. + /// \li \c kXMP_WriteAliasComments - Include XML comments for aliases. + /// \li \c kXMP_IncludeThumbnailPad - Include typical space for a JPEG thumbnail in the + /// padding if no \c xmp:Thumbnails property is present. Cannot be specified together with + /// \c kXMP_OmitPacketWrapper. + /// \li \c kXMP_ExactPacketLength - The padding parameter provides the overall packet length. + /// The actual amount of padding is computed. An exception is thrown if the packet exceeds + /// this length with no padding. Cannot be specified together with + /// \c kXMP_OmitPacketWrapper. + /// + /// In addition to the above options, you can include one of the following encoding options: + /// \li \c #kXMP_EncodeUTF8 - Encode as UTF-8, the default. + /// \li \c #kXMP_EncodeUTF16Big - Encode as big-endian UTF-16. + /// \li \c #kXMP_EncodeUTF16Little - Encode as little-endian UTF-16. + /// \li \c #kXMP_EncodeUTF32Big - Encode as big-endian UTF-32. + /// \li \c #kXMP_EncodeUTF32Little - Encode as little-endian UTF-32. + /// + /// @param padding The amount of padding to be added if a writeable XML packet is created. If + /// zero (the default) an appropriate amount of padding is computed. + /// + /// @param newline The string to be used as a line terminator. If empty, defaults to linefeed, + /// U+000A, the standard XML newline. + /// + /// @param indent The string to be used for each level of indentation in the serialized RDF. If + /// empty, defaults to two ASCII spaces, U+0020. + /// + /// @param baseIndent The number of levels of indentation to be used for the outermost XML + /// element in the serialized RDF. This is convenient when embedding the RDF in other text. + + void SerializeToBuffer ( tStringObj * rdfString, + XMP_OptionBits options, + XMP_StringLen padding, + XMP_StringPtr newline, + XMP_StringPtr indent = "", + XMP_Index baseIndent = 0 ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c SerializeToBuffer() serializes metadata in this XMP object into a string as RDF. + /// + /// This simpler form of the function uses default values for the \c newline, \c indent, and + /// \c baseIndent parameters. + /// + /// @param rdfString [out] A string object in which to return the serialized RDF. Must not be null. + /// + /// @param options An options flag that controls how the serialization operation is performed. + /// The specified options must be logically consistent; an exception is thrown if they are not. + /// A logical OR of these bit-flag constants: + /// \li \c kXMP_OmitPacketWrapper - Do not include an XML packet wrapper. This cannot be + /// specified together with \c #kXMP_ReadOnlyPacket, \c #kXMP_IncludeThumbnailPad, or + /// \c #kXMP_ExactPacketLength. + /// \li \c kXMP_ReadOnlyPacket - Create a read-only XML packet wapper. Cannot be specified + /// together with \c kXMP_OmitPacketWrapper. + /// \li \c kXMP_UseCompactFormat - Use a highly compact RDF syntax and layout. + /// \li \c kXMP_WriteAliasComments - Include XML comments for aliases. + /// \li \c kXMP_IncludeThumbnailPad - Include typical space for a JPEG thumbnail in the + /// padding if no \c xmp:Thumbnails property is present. Cannot be specified together with + /// \c kXMP_OmitPacketWrapper. + /// \li \c kXMP_ExactPacketLength - The padding parameter provides the overall packet length. + /// The actual amount of padding is computed. An exception is thrown if the packet exceeds + /// this length with no padding. Cannot be specified together with + /// \c kXMP_OmitPacketWrapper. + /// + /// In addition to the above options, you can include one of the following encoding options: + /// \li \c #kXMP_EncodeUTF8 - Encode as UTF-8, the default. + /// \li \c #kXMP_EncodeUTF16Big - Encode as big-endian UTF-16. + /// \li \c #kXMP_EncodeUTF16Little - Encode as little-endian UTF-16. + /// \li \c #kXMP_EncodeUTF32Big - Encode as big-endian UTF-32. + /// \li \c #kXMP_EncodeUTF32Little - Encode as little-endian UTF-32. + /// + /// @param padding The amount of padding to be added if a writeable XML packet is created. + /// If zero (the default) an appropriate amount of padding is computed. + + void SerializeToBuffer ( tStringObj * rdfString, + XMP_OptionBits options = 0, + XMP_StringLen padding = 0 ) const; + + /// @} + // ============================================================================================= + // Miscellaneous Member Functions + // ============================== + + // --------------------------------------------------------------------------------------------- + /// \name Helper functions. + /// @{ + + // --------------------------------------------------------------------------------------------- + /// @brief Retrieves an internal reference that can be safely passed across DLL boundaries and + /// reconstructed. + /// + /// The \c TXMPMeta class is a normal C++ template, it is instantiated and local to each client + /// executable, as are the other \c TXMP* classes. Different clients might not use the same + /// string type to instantiate \c TXMPMeta. + /// + /// Because of this you should not pass \c SXMPMeta objects, or pointers to \c SXMPMeta objects, + /// across DLL boundaries. Use this function to obtain a safe internal reference that you can + /// pass, then construct a local object on the callee side. This construction does not create a + /// cloned XMP tree, it is the same underlying XMP object safely wrapped in each client's + /// \c SXMPMeta object. + /// + /// Use this function and the associated constructor like this: + /// \li The callee's header contains: + ///
+    /// CalleeMethod ( XMPMetaRef xmpRef );
+    /// 
+ /// + /// \li The caller's code contains: + ///
+    /// SXMPMeta callerXMP;
+    /// CalleeMethod ( callerXMP.GetInternalRef() );
+    /// 
+ /// + /// \li The callee's code contains: + ///
+    /// SXMPMeta calleeXMP ( xmpRef );
+    /// 
+ /// + /// @return The reference object. + + XMPMetaRef GetInternalRef() const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c GetObjectName() retrieves the client-assigned name of this XMP object. + /// + /// Assign this name with \c SetObjectName(). + /// + /// @param name [out] A string object in which to return the name. + + void GetObjectName ( tStringObj * name ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetObjectName() assigns a name to this XMP object. + /// + /// Retrieve this client-assigned name with \c GetObjectName(). + /// + /// @param name The name as a null-terminated UTF-8 string. + + void SetObjectName ( XMP_StringPtr name ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetObjectName() assigns a name to this XMP object. + /// + /// Retrieve this client-assigned name with \c GetObjectName(). + /// + /// @param name The name as a string object. + + void SetObjectName ( tStringObj name ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c Sort() sorts the data model tree of an XMP object. + /// + /// Use this function to sort the data model of an XMP object into a canonical order. This can + /// be convenient when comparing data models, (e.g. by text comparison of DumpObject output). + /// + /// At the top level the namespaces are sorted by their prefixes. Within a namespace, the top + /// level properties are sorted by name. Within a struct, the fields are sorted by their + /// qualified name, i.e. their XML prefix:local form. Unordered arrays of simple items are + /// sorted by value. Language Alternative arrays are sorted by the xml:lang qualifiers, with + /// the "x-default" item placed first. + + void Sort(); + + // --------------------------------------------------------------------------------------------- + /// @brief \c Erase() restores the object to a "just constructed" state. + + void Erase(); + + // --------------------------------------------------------------------------------------------- + /// @brief \c Clone() creates a deep copy of an XMP object. + /// + /// Use this function to copy an entire XMP metadata tree. Assignment and copy constructors only + /// increment a reference count, they do not do a deep copy. This function returns an object, + /// not a pointer. The following shows correct usage: + /// + ///
+    /// SXMPMeta * clone1 = new SXMPMeta ( sourceXMP.Clone() );  // This works.
+    /// SXMPMeta   clone2 ( sourceXMP.Clone );  	// This works also. (Not a pointer.)
+    /// 
+ /// The \c clone2 example does not use an explicit pointer. + /// This is good for local usage, protecting against memory leaks. + /// + /// This is an example of incorrect usage: + ///
+    /// SXMPMeta * clone3 = &sourceXMP.Clone();		// ! This does not work!
+    /// 
+ /// The assignment to \c clone3 creates a temporary object, initializes it with the clone, + /// assigns the address of the temporary to \c clone3, then deletes the temporary. + /// + /// @param options Option flags, not currently defined.. + /// + /// @return An XMP object cloned from the original. + + TXMPMeta Clone ( XMP_OptionBits options = 0 ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c CountArrayItems() reports the number of items currently defined in an array. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @return The number of items. + + XMP_Index CountArrayItems ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief \c DumpObject() outputs the content of an XMP object to a callback handler for debugging. + /// + /// Invokes a client-defined callback for each line of output. + /// + /// @param outProc The client-defined procedure to handle each line of output. + /// + /// @param clientData A pointer to client-defined data to pass to the handler. + /// + /// @return A success-fail status value, returned from the handler. Zero is success, failure + /// values are client-defined. + /// + /// @see Static functions \c DumpNamespaces() and \c DumpAliases() + + XMP_Status DumpObject ( XMP_TextOutputProc outProc, + void * clientData ) const; + + // --------------------------------------------------------------------------------------------- + /// @brief Not implemented + XMP_OptionBits GetObjectOptions() const; + + // --------------------------------------------------------------------------------------------- + /// \brief Not implemented + void SetObjectOptions ( XMP_OptionBits options ); + + /// @} + + // ============================================================================================= + + XMPMetaRef xmpRef; // *** Should be private, see below. + +private: + +#if 0 // *** VS.Net and gcc seem to not handle the friend declarations properly. + friend class TXMPIterator ; + friend class TXMPUtils ; +#endif + +}; // class TXMPMeta + +#endif // __TXMPMeta_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/TXMPUtils.hpp b/vendor/exiv2-0.25/xmpsdk/include/TXMPUtils.hpp new file mode 100644 index 0000000..d718977 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/TXMPUtils.hpp @@ -0,0 +1,965 @@ +#ifndef __TXMPUtils_hpp__ +#define __TXMPUtils_hpp__ 1 + +#if ( ! __XMP_hpp__ ) + #error "Do not directly include, use XMPSDK.hpp" +#endif + +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2008 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. +// ================================================================================================= + +// ================================================================================================= +/// \file TXMPUtils.hpp +/// \brief API for access to the XMP Toolkit utility services. +/// +/// \c TXMPUtils is the template class providing utility services for the XMP Toolkit. It must be +/// instantiated with a string class such as \c std::string. See the instructions in XMPSDK.hpp, and +/// the Overview for a discussion of the overall architecture of the XMP API. +// ================================================================================================= + +// ================================================================================================= +/// \class TXMPUtils TXMPUtils.hpp +/// @brief API for access to the XMP Toolkit utility services. +/// +/// \c TXMPUtils is a template class which must be instantiated with a string class such as +/// \c std::string. See the instructions in XMPSDK.hpp, and the Overview for a discussion of the overall +/// architecture of the XMP API. +/// +/// This class defines helper functions that support the basic metadata manipulation provided by +/// \c TXMPMeta. All of the functions are static; that is, you call them directly from the concrete +/// class (\c SXMPUtils), which is never itself instantiated. +/// +/// General categories of utilities include: +/// +/// \li Composing complex path expressions, which you can then pass to the property access +/// functions in \c TXMPMeta +/// \li Converting between binary and string forms of property values +/// \li Manipulating date/time values +/// \li Encoding and decoding base-64 strings +/// \li JPEG file handling +/// \li Editing aids for creating a user interface for the XMP Toolkit +// ================================================================================================= + +template class TXMPUtils { + +public: + + // ============================================================================================= + // No constructors or destructor declared or needed + // ================================================ + + // ============================================================================================ + /// \name Path composition + /// @{ + /// + /// These functions provide support for composing path expressions to deeply nested properties. + /// The functions in \c TXMPMeta such as \c TXMPMeta::GetProperty(), + /// \c TXMPMeta::GetArrayItem(), and \c TXMPMeta::GetStructField() provide easy access to top level + /// simple properties, items in top level arrays, and fields of top level structs. They are + /// not as convenient for more complex things, such as fields several levels deep in a complex + /// struct, or fields within an array of structs, or items of an array that is a field of a + /// struct. You can use these utility functions to compose these paths, which you can then pass + /// to the property access functions. You can also compose paths to top-level array items or + /// struct fields so that you can use the binary accessors such as + /// \c TXMPMeta::GetProperty_Int(). + /// + /// You can use these functions is to compose a complete path expression, or all but the last + /// component. For example, suppose you have a property that is an array of integers within a + /// struct. You can access one of the array items like this: + /// + ///
+    ///   SXMPUtils::ComposeStructFieldPath ( schemaNS, "Struct", fieldNS, "Array", &path );
+    ///   SXMPUtils::ComposeArrayItemPath ( schemaNS, path, index, &path );
+    ///   exists = xmpObj.GetProperty_Int ( schemaNS, path, &value, &options );
+    /// 
+ /// + /// You could also use this code if you want the string form of the integer: + /// + ///
+    ///   SXMPUtils::ComposeStructFieldPath ( schemaNS, "Struct", fieldNS, "Array", &path );
+    ///   xmpObj.GetArrayItem ( schemaNS, path, index, &value, &options );
+    /// 
+ /// + /// \note It might look confusing that the \c schemaNS is passed in all of the calls above. This + /// is because the XMP Toolkit keeps the top-level "schema" namespace separate from the rest of + /// the path expression. + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeArrayItemPath() composes the path expression for an item in an array. + /// + /// The returned string is in the form ns:arrayName[i], where "ns" is the prefix for + /// the specified namespace, and "i" is the decimal representation of specified item index. + /// If the last item was specified, the path is ns:arrayName[last()]. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param itemIndex The 1-based index of the desired item. Use the macro + /// \c #kXMP_ArrayLastItem to specify the last existing array item. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeArrayItemPath ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + tStringObj * fullPath ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeStructFieldPath() composes the path expression for a field in a struct. + /// + /// The returned string is in the form ns:structName/fNS:fieldName, where "ns" is the + /// prefix for the schema namespace, and "fNS" is the prefix for field namespace. + /// + /// @param schemaNS The namespace URI for the struct; see \c GetProperty(). + /// + /// @param structName The name of the struct. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field. Same URI and prefix usage as the + /// \c schemaNS and \c structName parameters. + /// + /// @param fieldName The name of the field. Must be a single XML name, must not be null or the + /// empty string. Same URI and prefix usage as the \c schemaNS and \c structName parameters. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeStructFieldPath ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + tStringObj * fullPath ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeQualifierPath() composes the path expression for a qualifier. + /// + /// The returned string is in the form ns:propName/?qNS:qualName, where "ns" is the + /// prefix for the schema namespace, and "qNS" is the prefix for the qualifier namespace. + /// + /// @param schemaNS The namespace URI; see \c GetProperty(). + /// + /// @param propName The name of the property to which the qualifier is attached. Can be a + /// general path expression, must not be null or the empty string; see \c GetProperty() for + /// namespace prefix usage. + /// + /// @param qualNS The namespace URI for the qualifier. Same URI and prefix usage as the + /// \c schemaNS and \c propName parameters. + /// + /// @param qualName The name of the qualifier. Must be a single XML name, must not be null or the + /// empty string. Same URI and prefix usage as the \c schemaNS and \c propName parameters. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeQualifierPath ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + tStringObj * fullPath ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeLangSelector() composes the path expression to select an alternate item by language. + /// + /// Path syntax allows two forms of "content addressing" to select an item in an array of + /// alternatives. The form used in this function lets you select an item in an alt-text array + /// based on the value of its \c xml:lang qualifier. The other form of content addressing is + /// shown in \c ComposeFieldSelector(). + /// + /// The returned string is in the form ns:arrayName[\@xml:lang='langName'], where + /// "ns" is the prefix for the schema namespace + /// + /// This function provides a path expression that is explicitly and only for a specific + /// language. In most cases, \c TXMPMeta::SetLocalizedText() and \c TXMPMeta::GetLocalizedText() + /// are preferred, because they provide extra logic to choose the appropriate language and + /// maintain consistency with the 'x-default' value. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param langName The RFC 3066 code for the desired language, as a null-terminated UTF-8 string. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeLangSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr langName, + tStringObj * fullPath ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeLangSelector() composes a path expression to select an alternate item by language. + /// + /// Path syntax allows two forms of "content addressing" to select an item in an array of + /// alternatives. The form used in this function lets you select an item in an alt-text array + /// based on the value of its \c xml:lang qualifier. The other form of content addressing is + /// shown in \c ComposeFieldSelector(). + /// + /// The returned string is in the form ns:arrayName[\@xml:lang='langName'], where + /// "ns" is the prefix for the schema namespace + /// + /// This function provides a path expression that is explicitly and only for a specific + /// language. In most cases, \c TXMPMeta::SetLocalizedText() and \c TXMPMeta::GetLocalizedText() + /// are preferred, because they provide extra logic to choose the appropriate language and + /// maintain consistency with the 'x-default' value. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param langName The RFC 3066 code for the desired language, as a string object. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeLangSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + const tStringObj & langName, + tStringObj * fullPath ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeFieldSelector() composes a path expression to select an alternate item by a field's value. + /// + /// Path syntax allows two forms of "content addressing" to select an item in an array of + /// alternatives. The form used in this function lets you select an item in an array of structs + /// based on the value of one of the fields in the structs. The other form of content addressing + /// is shown in \c ComposeLangSelector(). + /// + /// For example, consider a simple struct that has two fields, the name of a city and the URI of + /// an FTP site in that city. Use this to create an array of download alternatives. You can show + /// the user a popup built from the values of the city fields, then get the corresponding URI as + /// follows: + ///
+    ///   ComposeFieldSelector ( schemaNS, "Downloads", fieldNS, "City", chosenCity, &path );
+    ///   exists = GetStructField ( schemaNS, path, fieldNS, "URI", &uri );
+    /// 
+ /// + /// The returned string is in the form ns:arrayName[fNS:fieldName='fieldValue'], where + /// "ns" is the prefix for the schema namespace and "fNS" is the prefix for the field namespace. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field used as the selector. Same URI and prefix + /// usage as the \c schemaNS and \c arrayName parameters. + /// + /// @param fieldName The name of the field used as the selector. Must be a single XML name, must + /// not be null or the empty string. It must be the name of a field that is itself simple. + /// + /// @param fieldValue The desired value of the field, specified as a null-terminated UTF-8 string. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeFieldSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + tStringObj * fullPath ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ComposeFieldSelector() composes a path expression to select an alternate item by a field's value. + /// + /// Path syntax allows two forms of "content addressing" to select an item in an array of + /// alternatives. The form used in this function lets you select an item in an array of structs + /// based on the value of one of the fields in the structs. The other form of content addressing + /// is shown in \c ComposeLangSelector(). + /// + /// For example, consider a simple struct that has two fields, the name of a city and the URI of + /// an FTP site in that city. Use this to create an array of download alternatives. You can show + /// the user a popup built from the values of the city fields, then get the corresponding URI as + /// follows: + ///
+    ///   ComposeFieldSelector ( schemaNS, "Downloads", fieldNS, "City", chosenCity, &path );
+    ///   exists = GetStructField ( schemaNS, path, fieldNS, "URI", &uri );
+    /// 
+ /// + /// The returned string is in the form ns:arrayName[fNS:fieldName='fieldValue'], where + /// "ns" is the prefix for the schema namespace and "fNS" is the prefix for the field namespace. + /// + /// @param schemaNS The namespace URI for the array; see \c GetProperty(). + /// + /// @param arrayName The name of the array. Can be a general path expression, must not be null + /// or the empty string; see \c GetProperty() for namespace prefix usage. + /// + /// @param fieldNS The namespace URI for the field used as the selector. Same URI and prefix + /// usage as the \c schemaNS and \c arrayName parameters. + /// + /// @param fieldName The name of the field used as the selector. Must be a single XML name, must + /// not be null or the empty string. It must be the name of a field that is itself simple. + /// + /// @param fieldValue The desired value of the field, specified as a string object. + /// + /// @param fullPath [out] A string in which to return the composed path. + + static void ComposeFieldSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + const tStringObj & fieldValue, + tStringObj * fullPath ); + + /// @} + + // ============================================================================================= + /// \name Conversion between binary types and strings + /// @{ + /// + /// The main accessors in \c TXMPMeta set and retrieve property values as strings. additional + /// functions, such as \c TXMPMeta::SetPropertyInt(), set and retrieve property values as + /// explicit binary data types. Use these functions to convert between binary and string + /// values. + /// + /// Strings can be specified as null-terminated UTF-8 (\c #XMP_StringPtr), or as string + /// objects (\c tStringObj) of the type declared when instantiating the XMP classes; see + /// \c XMPSDK.hpp. Alternate forms of each conversion function allow either type of string. + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertFromBool() converts a Boolean value to a string. + /// + /// The string values of Booleans are returned by the macros \c #kXMP_TrueStr and + /// \c #kXMP_FalseStr in \c XMP_Const.h. + /// + /// @param binValue The Boolean value to be converted. + /// + /// @param strValue [out] A buffer in which to return the string representation of the value. + + static void ConvertFromBool ( bool binValue, + tStringObj * strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertFromInt() converts a 32-bit integer value to a string. + /// + /// @param binValue The integer value to be converted. + /// + /// @param format Optional. A C \c sprintf format for the conversion. Default is "%d". + /// + /// @param strValue [out] A buffer in which to return the string representation of the value. + + static void ConvertFromInt ( long binValue, + XMP_StringPtr format, + tStringObj * strValue ); + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertFromInt64() converts a 64-bit integer value to a string. + /// + /// @param binValue The integer value to be converted. + /// + /// @param format Optional. A C \c sprintf format for the conversion. Default is "%d". + /// + /// @param strValue [out] A buffer in which to return the string representation of the value. + + static void ConvertFromInt64 ( long long binValue, + XMP_StringPtr format, + tStringObj * strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertFromFloat() converts a floating-point value to a string. + /// + /// @param binValue The floating-point value to be converted. + /// + /// @param format Optional. A C \c sprintf format for the conversion. Default is "%d". + /// + /// @param strValue [out] A buffer in which to return the string representation of the value. + + static void ConvertFromFloat ( double binValue, + XMP_StringPtr format, + tStringObj * strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertFromDate() converts a date/time value to a string. + /// + /// Formats a date according to the ISO 8601 profile in http://www.w3.org/TR/NOTE-datetime: + ///
+    ///   YYYY
+    ///   YYYY-MM
+    ///   YYYY-MM-DD
+    ///   YYYY-MM-DDThh:mmTZD
+    ///   YYYY-MM-DDThh:mm:ssTZD
+    ///   YYYY-MM-DDThh:mm:ss.sTZD
+    /// 
+ /// + /// \c YYYY = four-digit year, formatted as "%.4d"
+ /// \c MM = two-digit month (01=January)
+ /// \c DD = two-digit day of month (01 through 31)
+ /// \c hh = two digits of hour (00 through 23)
+ /// \c mm = two digits of minute (00 through 59)
+ /// \c ss = two digits of second (00 through 59)
+ /// \c s = one or more digits representing a decimal fraction of a second
+ /// \c TZD = time zone designator (Z or +hh:mm or -hh:mm) + /// + /// Time-only input is allowed where the year, month, and day are all zero. This is output as + /// "0000-00-00...". + /// + /// @note ISO 8601 does not allow years less than 1000 or greater than 9999. This API allows + /// any year, even negative ones. + /// + /// @param binValue The date/time value to be converted. + /// + /// @param strValue [out] A buffer in which to return the ISO 8601 string representation of the date/time. + + static void ConvertFromDate ( const XMP_DateTime & binValue, + tStringObj * strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToBool() converts a string to a Boolean value. + /// + /// The preferred strings are those returned by the macros \c #kXMP_TrueStr and \c #kXMP_FalseStr. + /// If these do not match, the function does a case insensitive comparison, then simply 't' or 'f', + /// and finally non-zero and zero integer representations. + /// + /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. + /// + /// @return The appropriate C++ bool value for the string. + + static bool ConvertToBool ( XMP_StringPtr strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToBool() converts a string to a Boolean value. + /// + /// Overloads the basic form of the function, allowing you to pass a string object, + /// rather than a const * char. It is otherwise identical; see details in the canonical form. + /// + /// @param strValue The string representation of the value, specified as a string object. + /// + /// @return The appropriate C++ bool value for the string. + + static bool ConvertToBool ( const tStringObj & strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToInt() converts a string to a 32-bit integer value. + /// + /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. + /// + /// @return The 32-bit integer value. + + static long ConvertToInt ( XMP_StringPtr strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToInt() converts a string to a 32-bit integer value. + /// + /// Overloads the basic form of the function, allowing you to pass a string object, + /// rather than a const * char. It is otherwise identical. + /// + /// @param strValue The string representation of the value, specified as a string object. + /// + /// @return The 32-bit integer value. + + static long ConvertToInt ( const tStringObj & strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToInt64() converts a string to a 64-bit integer value. + /// + /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. + /// + /// @return The 64-bit integer value. + + static long long ConvertToInt64 ( XMP_StringPtr strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToInt64() converts a string to a 64-bit integer value. + /// + /// Overloads the basic form of the function, allowing you to pass a string object, + /// rather than a const * char. It is otherwise identical. + /// + /// @param strValue The string representation of the value, specified as a string object. + /// + /// @return The 64-bit integer value. + + static long long ConvertToInt64 ( const tStringObj & strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToFloat() converts a string to a floating-point value. + /// + /// @param strValue The string representation of the value, specified as a null-terminated UTF-8 string. + /// + /// @return The floating-point value. + + static double ConvertToFloat ( XMP_StringPtr strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToFloat() converts a string to a floating-point value. + /// + /// Overloads the basic form of the function, allowing you to pass a string object, + /// rather than a const * char. It is otherwise identical. + /// + /// @param strValue The string representation of the value, specified as a string object. + /// + /// @return The floating-point value. + + static double ConvertToFloat ( const tStringObj & strValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToDate() converts a string to a date/time value. + /// + /// Parses a date according to the ISO 8601 profile in http://www.w3.org/TR/NOTE-datetime: + ///
+    ///   YYYY
+    ///   YYYY-MM
+    ///   YYYY-MM-DD
+    ///   YYYY-MM-DDThh:mmTZD
+    ///   YYYY-MM-DDThh:mm:ssTZD
+    ///   YYYY-MM-DDThh:mm:ss.sTZD
+    /// 
+ /// + /// \c YYYY = four-digit year, formatted as "%.4d"
+ /// \c MM = two-digit month (01=January)
+ /// \c DD = two-digit day of month (01 through 31)
+ /// \c hh = two digits of hour (00 through 23)
+ /// \c mm = two digits of minute (00 through 59)
+ /// \c ss = two digits of second (00 through 59)
+ /// \c s = one or more digits representing a decimal fraction of a second
+ /// \c TZD = time zone designator (Z or +hh:mm or -hh:mm) + /// + /// A missing date portion or missing TZD are tolerated. A missing date value can begin with + /// "Thh:" or "hh:"; the year, month, and day are all set to zero in the \c #XMP_DateTime value. + /// A missing TZD is assumed to be UTC. + /// + /// @note ISO 8601 does not allow years less than 1000 or greater than 9999. This API allows + /// any year, even negative ones. + /// + /// @param strValue The ISO 8601 string representation of the date/time, specified as a + /// null-terminated UTF-8 string. + /// + /// @param binValue [out] A buffer in which to return the binary date/time value. + + static void ConvertToDate ( XMP_StringPtr strValue, + XMP_DateTime * binValue ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToDate() converts a string to a date/time value. + /// + /// Overloads the basic form of the function, allowing you to pass a string object, + /// rather than a const * char. It is otherwise identical. + /// See details for the canonical form. + /// + /// + /// @param strValue The ISO 8601 string representation of the date/time, specified as a string + /// object. + /// + /// @param binValue [out] A buffer in which to return the binary date/time value. + + static void ConvertToDate ( const tStringObj & strValue, + XMP_DateTime * binValue ); + + /// @} + + // ============================================================================================= + /// \name Date-time manipulation + /// @{ + /// + /// In addition to the type-conversion functions that convert between strings and binary + /// date-time values, these functions create, manipulate, and compare date-time values. + + // --------------------------------------------------------------------------------------------- + /// @brief \c CurrentDateTime() obtains the current date and time. + /// + /// Creates and returns a binary \c #XMP_DateTime value. The returned time is UTC, properly + /// adjusted for the local time zone. The resolution of the time is not guaranteed to be finer + /// than seconds. + /// + /// @param time [out] A buffer in which to return the date/time value. + + static void CurrentDateTime ( XMP_DateTime * time ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SetTimeZone() sets the time zone in a date/time value to the local time zone. + /// + /// Any existing time zone value is replaced. The other date/time fields are not adjusted in any way. + /// + /// @param time A pointer to the date-time value, which is modified in place. + + static void SetTimeZone ( XMP_DateTime * time ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToUTCTime() ensures that a time is UTC. + /// + /// If the time zone is not UTC, the time is adjusted and the time zone set to be UTC. If the + /// time zone is already UTC, the value is not modified. + /// + /// @param time A pointer to the date-time value, which is modified in place. + + static void ConvertToUTCTime ( XMP_DateTime * time ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ConvertToLocalTime() ensures that a time is local. + /// + /// If the time zone is not the local zone, the time is adjusted and the time zone set to be local. + /// If the time zone is already the local zone, the value is not modified. + /// + /// @param time A pointer to the date-time value, which is modified in place. + + static void ConvertToLocalTime ( XMP_DateTime * time ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c CompareDateTime() compares the order of two date/time values. + /// + /// @param left The left-side date/time value. + /// + /// @param right The right-side date/time value. + /// + /// @return An integer indicating the order: + /// \li -1 if left is earlier than right + /// \li 0 if left matches right + /// \li +1 if left is later than right + + static int CompareDateTime ( const XMP_DateTime & left, + const XMP_DateTime & right ); + + /// @} + + // ============================================================================================= + /// \name Base64 encoding and decoding + /// @{ + /// + /// These functions convert between raw data values and Base64-encoded strings. + + // --------------------------------------------------------------------------------------------- + /// @brief \c EncodeToBase64() converts a raw data value to a Base64-encoded string. + /// + /// @param rawStr An \c #XMP_StringPtr (char *) string containing the raw data to be converted. + /// + /// @param rawLen The number of characters of raw data to be converted. + /// + /// @param encodedStr [out] A string object in which to return the encoded string. + + static void EncodeToBase64 ( XMP_StringPtr rawStr, + XMP_StringLen rawLen, + tStringObj * encodedStr ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c EncodeToBase64() converts a raw data value passed in a string object to a Base64-encoded string. + /// + /// Overloads the basic form of the function, allowing you to pass a string object as input. + /// It is otherwise identical. + /// + /// @param rawStr A string object containing the raw data to be converted. + /// + /// @param encodedStr [out] A string object in which to return the encoded string. + + static void EncodeToBase64 ( const tStringObj & rawStr, + tStringObj * encodedStr ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DecodeFromBase64() Decodes a Base64-encoded string to raw data. + /// + /// @param encodedStr An \c #XMP_StringPtr (char *) string containing the encoded data to be converted. + /// + /// @param encodedLen The number of characters of raw data to be converted. + /// + /// @param rawStr [out] A string object in which to return the decoded data. + + static void DecodeFromBase64 ( XMP_StringPtr encodedStr, + XMP_StringLen encodedLen, + tStringObj * rawStr ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DecodeFromBase64() Decodes a Base64-encoded string, passed as a string object, to raw data. + /// + /// Overloads the basic form of the function, allowing you to pass a string object as input. + /// It is otherwise identical. + /// + /// @param encodedStr An string object containing the encoded data to be converted. + /// + /// @param rawStr [out] A string object in which to return the decoded data. + + static void DecodeFromBase64 ( const tStringObj & encodedStr, + tStringObj * rawStr ); + + /// @} + + // ============================================================================================= + // ============================================================================================= + /// \name JPEG file handling + /// @{ + /// + /// These functions support the partitioning of XMP in JPEG files into standard and extended + /// portions in order to work around the 64KB size limit of JPEG marker segments. + /// + /// @note (Doc note) Add detail about how to write out and read back extended data + + // --------------------------------------------------------------------------------------------- + /// @brief \c PackageForJPEG() creates XMP serializations appropriate for a JPEG file. + /// + /// The standard XMP in a JPEG file is limited to 64K bytes. This function serializes the XMP + /// metadata in an XMP object into a string of RDF (see \c TXMPMeta::SerializeToBuffer()). If + /// the data does not fit into the 64K byte limit, it creates a second packet string with the + /// extended data. + /// + /// @param xmpObj The XMP object containing the metadata. + /// + /// @param standardXMP [out] A string object in which to return the full standard XMP packet. + /// + /// @param extendedXMP [out] A string object in which to return the serialized extended XMP, + /// empty if not needed. + /// + /// @param extendedDigest [out] A string object in which to return an MD5 digest of the serialized + /// extended XMP, empty if not needed. + /// + /// @see \c MergeFromJPEG() + + static void PackageForJPEG ( const TXMPMeta & xmpObj, + tStringObj * standardXMP, + tStringObj * extendedXMP, + tStringObj * extendedDigest ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c MergeFromJPEG() merges standard and extended XMP retrieved from a JPEG file. + /// + /// When an extended partition stores properties that do not fit into the JPEG file limitation + /// of 64K bytes, this function integrates those properties back into the same XMP object with + /// those from the standard XMP packet. + /// + /// @param fullXMP [in, out] An XMP object which the caller has initialized from the standard + /// XMP packet in a JPEG file. The extended XMP is added to this object. + /// + /// @param extendedXMP An XMP object which the caller has initialized from the extended XMP + /// packet in a JPEG file. + /// + /// @see \c PackageForJPEG() + + static void MergeFromJPEG ( TXMPMeta * fullXMP, + const TXMPMeta & extendedXMP ); + + /// @} + + // ============================================================================================= + /// \name Editing utilities + /// @{ + /// + /// These functions are useful in implementing a user interface for editing XMP. They + /// convert sets of property values to and from displayable and manipulable strings, and perform + /// operations on sets of metadata, such as those available from the File Info dialog box. + + // --------------------------------------------------------------------------------------------- + /// @brief \c CatenateArrayItems() creates a single edit string from a set of array item values. + /// + /// Collects the values of all items in an array into a single string, using a specified + /// separation string. Each item in the specified array must be a simple string value. + /// + /// @param xmpObj The XMP object containing the array to be catenated. + /// + /// @param schemaNS The schema namespace URI for the array. Must not be null or the empty string. + /// + /// @param arrayName The name of the array. May be a general path expression, must not be null + /// or the empty string. + /// + /// @param separator The string with which to separate the items in the catenated string. + /// Defaults to "; ", ASCII semicolon and space (U+003B, U+0020). + /// + /// @param quotes The character or characters to use as quotes around array items that contain a + /// separator. Defaults to the double-quote character ("), ASCII quote (U+0022). + /// + /// @param options Option flags to control the catenation. <> + /// + /// @param catedStr [out] A string object in which to return the catenated array items. + /// + /// @see \c SeparateArrayItems() + + static void CatenateArrayItems ( const TXMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr separator, + XMP_StringPtr quotes, + XMP_OptionBits options, + tStringObj * catedStr ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SeparateArrayItems() updates an array from a concatenated edit string of values. + /// + /// This reverses the action of \c CatenateArrayItems(), separating out individual array items + /// from the edit string and updating the array with the new values. Each item in the array must + /// be a simple string value. + /// + /// @param xmpObj The XMP object containing the array to be updated. + /// + /// @param schemaNS The schema namespace URI for the array. Must not be null or the empty string. + /// + /// @param arrayName The name of the array. May be a general path expression, must not be null + /// or the empty string. + /// + /// @param options Option flags to control the separation. <> + /// + /// @param catedStr The concatenated array items, as created by \c CatenateArrayItems(), + /// specified as a null-terminated UTF-8 string. + + static void SeparateArrayItems ( TXMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + XMP_StringPtr catedStr ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c SeparateArrayItems() updates an array from a concatenated edit string of values. + /// + /// Overloads the basic form of the function, allowing you to pass a string object in which + /// to return the concatenated string. It is otherwise identical; see details for the canonical form. + /// + + static void SeparateArrayItems ( TXMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + const tStringObj & catedStr ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c RemoveProperties() removes multiple properties from an XMP object. + /// + /// The operation depends on how the namespace and property are specified: + /// + /// \li Non-empty \c schemaNS and \c propName - The named property is removed if it is an + /// external property, or if the \c #kXMPUtil_DoAllProperties option flag is set. It does not + /// matter whether the named property is an actual property or an alias. + /// + /// \li Non-empty \c schemaNS and empty \c propName - All external properties in the named + /// schema are removed. Internal properties are also removed if the + /// \c #kXMPUtil_DoAllProperties option flag is set. In addition, aliases from the named schema + /// are removed if the \c #kXMPUtil_IncludeAliases option flag is set. + /// + /// \li Empty \c schemaNS and empty \c propName - All external properties in all schemas are + /// removed. Internal properties are also removed if the \c #kXMPUtil_DoAllProperties option + /// flag is set. Aliases are handled implicitly, because the associated actuals are removed or + /// not. + /// + /// \li It is an error to pass an empty \c schemaNS and non-empty \c propName. + /// + /// @param xmpObj The XMP object containing the properties to be removed. + /// + /// @param schemaNS Optional schema namespace URI for the properties to be removed. + /// + /// @param propName Optional path expression for the property to be removed. + /// + /// @param options Option flags to control the deletion operation. A logical OR of these + /// bit-flag constants: + /// \li \c #kXMPUtil_DoAllProperties - Delete internal properties in addition to external properties. + /// \li \c #kXMPUtil_IncludeAliases - Include aliases if the schema is explicitly specified. + + static void RemoveProperties ( TXMPMeta * xmpObj, + XMP_StringPtr schemaNS = 0, + XMP_StringPtr propName = 0, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c AppendProperties() adds or moves properties from one XMP object to another. + /// + /// The default operation is to append only external properties that do not already exist in the + /// destination. Option flags allow you to add internal properties, and to merge values of + /// properties that exist in both the source and destination. + /// + /// \li \c #kXMPUtil_DoAllProperties: Operate on all top-level properties, external and + /// internal. You can use this flag together with \c #kXMPUtil_ReplaceOldValues to replace the + /// values of existing top-level properties. + /// + /// \li \c #kXMPUtil_ReplaceOldValues: Propagate all top-level properties from the source to + /// the destination, replacing any existing values. The values of properties in the + /// destination that are not in the source are not modified.
+ /// The keep-or-replace-old notion also applies within structs and arrays. Top-level + /// properties are added to the destination if they do not already exist. If they do exist but + /// differ in form (simple/struct/array) then the destination is not modified. If the forms + /// match, simple properties are left unchanged, while structs and arrays are merged.
+ /// Do not use this option when the processing is more complicated. <> + /// + /// \li \c #kXMPUtil_DeleteEmptyValues: An empty value in the source XMP causes the + /// corresponding destination property to be deleted. By default, empty values are treated in + /// the same way as non-empty values. An empty value is a simple empty string, an array with + /// no items,or a struct with no fields. Qualifiers are ignored. + /// + /// The detailed behavior is defined by the following pseudo-code: + /// + ///
+    /// AppendProperties ( sourceXMP, destXMP, options ):
+    ///    doAll = options & kXMPUtil_DoAllProperties
+    ///    replaceOld = options & kXMPUtil_ReplaceOldValues
+    ///    deleteEmpty = options & kXMPUtil_DeleteEmptyValues
+    ///    for all source schema (top level namespaces):
+    ///    for all top level properties in sourceSchema:
+    ///    if doAll or prop is external:
+    ///       AppendSubtree ( sourceNode, destSchema, replaceOld, deleteEmpty )
+    ///
+    /// AppendSubtree ( sourceNode, destParent, replaceOld, deleteEmpty ):
+    ///    if deleteEmpty and source value is empty:
+    ///       delete the corresponding child from destParent
+    ///    else if sourceNode not in destParent (by name):
+    ///       copy sourceNode's subtree to destParent
+    ///    else if replaceOld:
+    ///       delete subtree from destParent
+    ///       copy sourceNode's subtree to destParent
+    ///    else: // (Already exists in dest and not replacing, merge structs and arrays)
+    ///       if sourceNode and destNode forms differ:
+    ///          return, leave the destNode alone
+    ///       else if form is a struct:
+    ///          for each field in sourceNode:
+    ///             AppendSubtree ( sourceNode.field, destNode, replaceOld )
+    ///       else if form is an alt-text array:
+    ///          copy new items by xml:lang value into the destination
+    ///       else if form is an array:
+    ///          copy new items by value into the destination, ignoring order and duplicates
+    /// 
+ /// + /// Array item checking is n-squared; this can be time-intensive if the replace-old options is + /// not specified. Each source item is checked to see if it already exists in the destination, + /// without regard to order or duplicates. Simple items are compared by value and \c xml:lang + /// qualifier; other qualifiers are ignored. Structs are recursively compared by field names, + /// without regard to field order. Arrays are compared by recursively comparing all items. + /// + /// @param source The source XMP object. + /// + /// @param dest The destination XMP object. + /// + /// @param options Option flags to control the copying. A logical OR of these bit-flag constants: + /// \li \c kXMPUtil_DoAllProperties - Operate on internal properties in addition to external properties. + /// \li \c kXMPUtil_ReplaceOldValues - Replace the values of existing properties. + /// \li \c kXMPUtil_DeleteEmptyValues - Delete properties if the new value is empty. + + static void AppendProperties ( const TXMPMeta & source, + TXMPMeta * dest, + XMP_OptionBits options = 0 ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DuplicateSubtree() replicates a subtree from one XMP object into another. + /// + /// The destination can be a different namespace and root location in the same object, or the + /// same or a different location in another XMP object. + /// + /// @param source The source XMP object. + /// + /// @param dest The destination XMP object. + /// + /// @param sourceNS The schema namespace URI for the source subtree. + /// + /// @param sourceRoot The root location for the source subtree. Can be a general path expression, + /// must not be null or the empty string. + /// + /// @param destNS The schema namespace URI for the destination. Defaults to the source namespace. + /// + /// @param destRoot The root location for the destination. Can be a general path expression. + /// Defaults to the source location. + /// + /// @param options Option flags to control the operation. <> + + static void DuplicateSubtree ( const TXMPMeta & source, + TXMPMeta * dest, + XMP_StringPtr sourceNS, + XMP_StringPtr sourceRoot, + XMP_StringPtr destNS = 0, + XMP_StringPtr destRoot = 0, + XMP_OptionBits options = 0 ); + + /// @} + + // ============================================================================================= + + // ============================================================================================= + +}; // class TXMPUtils + +// ================================================================================================= + +#endif // __TXMPUtils_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/XMP.incl_cpp b/vendor/exiv2-0.25/xmpsdk/include/XMP.incl_cpp new file mode 100644 index 0000000..6501be9 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/XMP.incl_cpp @@ -0,0 +1,63 @@ +#ifndef __XMP_incl_cpp__ +#define __XMP_incl_cpp__ 1 + +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2007 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. +// ================================================================================================= + +// ================================================================================================ +/// \file XMP.incl_cpp +/// \brief Overall client glue file for the XMP toolkit. +/// +/// This is an overall client source file of XMP toolkit glue, the only XMP-specific one that +/// clients should build in projects. This ensures that all of the client-side glue code for the +/// XMP toolkit gets compiled. +/// +/// You cannot compile this file directly, because the template's string type must be declared and +/// only the client can do that. Instead, include this in some other source file. For example, +/// to use std::string you only need these two lines: +/// +/// \code +/// #include +/// #include "XMP.incl_cpp" +/// \endcode + + +#include "XMPSDK.hpp" // ! This must be the first include! + +#define XMP_ClientBuild 1 + +#ifdef _MSC_VER + #if XMP_DebugBuild + #pragma warning ( push, 4 ) + #else + #pragma warning ( push, 3 ) + #endif + #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) +#endif + +#if defined ( TXMP_STRING_TYPE ) && (! TXMP_EXPAND_INLINE) + + // We're using a single out of line instantiation. Do it here. + + #include "client-glue/TXMPMeta.incl_cpp" + #include "client-glue/TXMPIterator.incl_cpp" + #include "client-glue/TXMPUtils.incl_cpp" + template class TXMPMeta ; + template class TXMPIterator ; + template class TXMPUtils ; + +#endif + +#ifdef _MSC_VER + #pragma warning ( pop ) +#endif + +#endif // __XMP_incl_cpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/XMPSDK.hpp b/vendor/exiv2-0.25/xmpsdk/include/XMPSDK.hpp new file mode 100644 index 0000000..229714f --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/XMPSDK.hpp @@ -0,0 +1,89 @@ +#ifndef __XMP_hpp__ +#define __XMP_hpp__ 1 + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +// ================================================================================================ +/// \file XMPSDK.hpp +/// \brief Overall header file for the XMP Toolkit +/// +/// This is an overall header file, the only one that C++ clients should include. +/// +/// The full client API is in the \c TXMPMeta.hpp, \c TXMPIterator.hpp, \c TXMPUtils.hpp headers. +/// Read these for information, but do not include them directly. The \c TXMP... classes are C++ +/// template classes that must be instantiated with a string class such as \c std::string. The +/// string class is used to return text strings for property values, serialized XMP, and so on. +/// Clients must also compile \c XMP.incl_cpp to ensure that all client-side glue code is generated. +/// This should be done by including it in exactly one client source file. +/// +/// There are two C preprocessor macros that simplify use of the templates: +/// +/// \li \c TXMP_STRING_TYPE - Define this as the string class to use with the template. You will get +/// the template headers included and typedefs (\c SXMPMeta, and so on) to use in your code. +/// +/// \li \c TXMP_EXPAND_INLINE - Define this as 1 if you want to have the template functions expanded +/// inline in your code. Leave it undefined, or defined as 0, to use out-of-line instantiations of +/// the template functions. Compiling \c XMP.incl_cpp generates explicit out-of-line +/// instantiations if \c TXMP_EXPAND_INLINE is off. +/// +/// The template parameter, class \c tStringObj, must have the following member functions (which +/// match those for \c std::string): +/// +///
+///  tStringObj& assign ( const char * str, size_t len )
+///  size_t size() const
+///  const char * c_str() const
+/// 
+/// +/// The string class must be suitable for at least UTF-8. This is the encoding used for all general +/// values, and is the default encoding for serialized XMP. The string type must also be suitable +/// for UTF-16 or UTF-32 if those serialization encodings are used. This mainly means tolerating +/// embedded 0 bytes, which \c std::string does. +// ================================================================================================ + +/// /c XMP_Environment.h must be the first included header. +#include "XMP_Environment.h" + +#include "XMP_Version.h" +#include "XMP_Const.h" + +#ifdef _MSC_VER + #if XMP_DebugBuild + #pragma warning ( push, 4 ) + #else + #pragma warning ( push, 3 ) + #endif + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) +#endif + +#if defined ( TXMP_STRING_TYPE ) + + #include "TXMPMeta.hpp" + #include "TXMPIterator.hpp" + #include "TXMPUtils.hpp" + typedef class TXMPMeta SXMPMeta; // For client convenience. + typedef class TXMPIterator SXMPIterator; + typedef class TXMPUtils SXMPUtils; + #if TXMP_EXPAND_INLINE + #error "TXMP_EXPAND_INLINE is not working at present. Please don't use it." + #include "client-glue/TXMPMeta.incl_cpp" + #include "client-glue/TXMPIterator.incl_cpp" + #include "client-glue/TXMPUtils.incl_cpp" + #endif + +#endif // TXMP_STRING_TYPE + +#ifdef _MSC_VER + #pragma warning ( pop ) +#endif + +// ================================================================================================= + +#endif // __XMP_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/XMP_Const.h b/vendor/exiv2-0.25/xmpsdk/include/XMP_Const.h new file mode 100644 index 0000000..0316188 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/XMP_Const.h @@ -0,0 +1,1330 @@ +#ifndef __XMP_Const_h__ +#define __XMP_Const_h__ 1 + +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" + + #include + +#if XMP_MacBuild // ! No stdint.h on Windows and some UNIXes. + #include +#endif + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= +/// \file XMP_Const.h +/// \brief Common C/C++ types and constants for the XMP toolkit. +// ================================================================================================= + +// ================================================================================================= +// Basic types and constants +// ========================= + +// The XMP_... types are used on the off chance that the ..._t types present a problem. In that +// case only the declarations of the XMP_... types needs to change, not all of the uses. These +// types are used where fixed sizes are required in order to have a known ABI for a DLL build. + +#if XMP_MacBuild + + typedef int8_t XMP_Int8; + typedef int16_t XMP_Int16; + typedef int32_t XMP_Int32; + typedef int64_t XMP_Int64; + + typedef uint8_t XMP_Uns8; + typedef uint16_t XMP_Uns16; + typedef uint32_t XMP_Uns32; + typedef uint64_t XMP_Uns64; + +#else + + typedef signed char XMP_Int8; + typedef signed short XMP_Int16; + typedef signed long XMP_Int32; + typedef signed long long XMP_Int64; + + typedef unsigned char XMP_Uns8; + typedef unsigned short XMP_Uns16; + typedef unsigned long XMP_Uns32; + typedef unsigned long long XMP_Uns64; + +#endif + +typedef XMP_Uns8 XMP_Bool; + +/// An "ABI safe" pointer to the internal part of an XMP object. Use to pass an XMP object across +/// client DLL boundaries. See \c TXMPMeta::GetInternalRef(). +typedef struct __XMPMeta__ * XMPMetaRef; + +/// An "ABI safe" pointer to the internal part of an XMP iteration object. Use to pass an XMP +/// iteration object across client DLL boundaries. See \c TXMPIterator. +typedef struct __XMPIterator__ * XMPIteratorRef; + +/// An "ABI safe" pointer to the internal part of an XMP document operations object. Use to pass an +/// XMP document operations object across client DLL boundaries. See \c TXMPDocOps. +typedef struct __XMPDocOps__ * XMPDocOpsRef; + +/// An "ABI safe" pointer to the internal part of an XMP file-handling object. Use to pass an XMP +/// file-handling object across client DLL boundaries. See \c TXMPFiles. +typedef struct __XMPFiles__ * XMPFilesRef; + +// ================================================================================================= + +/// \name General scalar types and constants +/// @{ + +/// \typedef XMP_StringPtr +/// \brief The type for input string parameters. A const char *, a null-terminated UTF-8 +/// string. + +/// \typedef XMP_StringLen +/// \brief The type for string length parameters. A 32-bit unsigned integer, as big as will be +/// practically needed. + +/// \typedef XMP_Index +/// \brief The type for offsets and indices. A 32-bit signed integer. It is signed to allow -1 for +/// loop termination. + +/// \typedef XMP_OptionBits +/// \brief The type for a collection of 32 flag bits. Individual flags are defined as enum value bit +/// masks; see \c #kXMP_PropValueIsURI and following. A number of macros provide common set or set +/// operations, such as \c XMP_PropIsSimple. For other tests use an expression like options & +/// kXMP_. When passing multiple option flags use the bitwise-OR operator. '|', +/// not the arithmatic plus, '+'. + +typedef const char * XMP_StringPtr; // Points to a null terminated UTF-8 string. +typedef XMP_Uns32 XMP_StringLen; +typedef XMP_Int32 XMP_Index; // Signed, sometimes -1 is handy. +typedef XMP_Uns32 XMP_OptionBits; // Used as 32 individual bits. + +/// \def kXMP_TrueStr +/// \brief The canonical true string value for Booleans in serialized XMP. +/// +/// Code that converts from string to bool should be case insensitive, and also allow "1". + +/// \def kXMP_FalseStr +/// \brief The canonical false string value for Booleans in serialized XMP. +/// +/// Code that converts from string to bool should be case insensitive, and also allow "0". + +#define kXMP_TrueStr "True" // Serialized XMP spellings, not for the type bool. +#define kXMP_FalseStr "False" + +/// Type for yes/no/maybe answers. The values are picked to allow Boolean-like usage. The yes and +/// values are true (non-zero), the no value is false (zero). +enum { + /// The part or parts have definitely changed. + kXMPTS_Yes = 1, + /// The part or parts have definitely not changed. + kXMPTS_No = 0, + /// The part or parts might, or might not, have changed. + kXMPTS_Maybe = -1 +}; +typedef XMP_Int8 XMP_TriState; + +/// @} + +// ================================================================================================= + +/// \struct XMP_DateTime +/// \brief The expanded type for a date and time. +/// +/// Dates and time in the serialized XMP are ISO 8601 strings. The \c XMP_DateTime struct allows +/// easy conversion with other formats. +/// +/// All of the fields are 32 bit, even though most could be 8 bit. This avoids overflow when doing +/// carries for arithmetic or normalization. All fields have signed values for the same reasons. +/// +/// Date-time values are occasionally used with only a date or only a time component. A date without +/// a time has zeros in the \c XMP_DateTime struct for all time fields. A time without a date has +/// zeros for all date fields (year, month, and day). +/// +/// \c TXMPUtils provides utility functions for manipulating date-time values. +/// +/// @see \c TXMPUtils::ConvertToDate(), \c TXMPUtils::ConvertFromDate(), +/// \c TXMPUtils::CompareDateTime(), \c TXMPUtils::ConvertToLocalTime(), +/// \c TXMPUtils::ConvertToUTCTime(), \c TXMPUtils::CurrentDateTime(), +/// \c TXMPUtils::SetTimeZone() + +struct XMP_DateTime { + + /// The year, can be negative. + XMP_Int32 year; + + /// The month in the range 1..12. + XMP_Int32 month; + + /// The day of the month in the range 1..31. + XMP_Int32 day; + + /// The hour in the range 0..23. + XMP_Int32 hour; + + /// The minute in the range 0..59. + XMP_Int32 minute; + + /// The second in the range 0..59. + XMP_Int32 second; + + /// The "sign" of the time zone, \c #kXMP_TimeIsUTC (0) means UTC, \c #kXMP_TimeWestOfUTC (-1) + /// is west, \c #kXMP_TimeEastOfUTC (+1) is east. + XMP_Int32 tzSign; + + /// The time zone hour in the range 0..23. + XMP_Int32 tzHour; + + /// The time zone minute in the range 0..59. + XMP_Int32 tzMinute; + + /// Nanoseconds within a second, often left as zero. + XMP_Int32 nanoSecond; + +}; + +/// Constant values for \c XMP_DateTime::tzSign field. +enum { + /// Time zone is west of UTC. + kXMP_TimeWestOfUTC = -1, + /// UTC time. + kXMP_TimeIsUTC = 0, + /// Time zone is east of UTC. + kXMP_TimeEastOfUTC = +1 +}; + +// ================================================================================================= +// Standard namespace URI constants +// ================================ + +/// \name XML namespace constants for standard XMP schema. +/// @{ +/// +/// \def kXMP_NS_XMP +/// \brief The XML namespace for the XMP "basic" schema. +/// +/// \def kXMP_NS_XMP_Rights +/// \brief The XML namespace for the XMP copyright schema. +/// +/// \def kXMP_NS_XMP_MM +/// \brief The XML namespace for the XMP digital asset management schema. +/// +/// \def kXMP_NS_XMP_BJ +/// \brief The XML namespace for the job management schema. +/// +/// \def kXMP_NS_XMP_T +/// \brief The XML namespace for the XMP text document schema. +/// +/// \def kXMP_NS_XMP_T_PG +/// \brief The XML namespace for the XMP paged document schema. +/// +/// \def kXMP_NS_PDF +/// \brief The XML namespace for the PDF schema. +/// +/// \def kXMP_NS_Photoshop +/// \brief The XML namespace for the Photoshop custom schema. +/// +/// \def kXMP_NS_EXIF +/// \brief The XML namespace for Adobe's EXIF schema. +/// +/// \def kXMP_NS_TIFF +/// \brief The XML namespace for Adobe's TIFF schema. +/// +/// @} + +#define kXMP_NS_XMP "http://ns.adobe.com/xap/1.0/" + +#define kXMP_NS_XMP_Rights "http://ns.adobe.com/xap/1.0/rights/" +#define kXMP_NS_XMP_MM "http://ns.adobe.com/xap/1.0/mm/" +#define kXMP_NS_XMP_BJ "http://ns.adobe.com/xap/1.0/bj/" + +#define kXMP_NS_PDF "http://ns.adobe.com/pdf/1.3/" +#define kXMP_NS_Photoshop "http://ns.adobe.com/photoshop/1.0/" +#define kXMP_NS_PSAlbum "http://ns.adobe.com/album/1.0/" +#define kXMP_NS_EXIF "http://ns.adobe.com/exif/1.0/" +#define kXMP_NS_EXIF_Aux "http://ns.adobe.com/exif/1.0/aux/" +#define kXMP_NS_TIFF "http://ns.adobe.com/tiff/1.0/" +#define kXMP_NS_PNG "http://ns.adobe.com/png/1.0/" +#define kXMP_NS_SWF "http://ns.adobe.com/swf/1.0/" +#define kXMP_NS_JPEG "http://ns.adobe.com/jpeg/1.0/" +#define kXMP_NS_JP2K "http://ns.adobe.com/jp2k/1.0/" +#define kXMP_NS_CameraRaw "http://ns.adobe.com/camera-raw-settings/1.0/" +#define kXMP_NS_DM "http://ns.adobe.com/xmp/1.0/DynamicMedia/" +#define kXMP_NS_ASF "http://ns.adobe.com/asf/1.0/" +#define kXMP_NS_WAV "http://ns.adobe.com/xmp/wav/1.0/" + +#define kXMP_NS_XMP_Note "http://ns.adobe.com/xmp/note/" + +#define kXMP_NS_AdobeStockPhoto "http://ns.adobe.com/StockPhoto/1.0/" +#define kXMP_NS_CreatorAtom "http://ns.adobe.com/creatorAtom/1.0/" + +/// \name XML namespace constants for qualifiers and structured property fields. +/// @{ +/// +/// \def kXMP_NS_XMP_IdentifierQual +/// \brief The XML namespace for qualifiers of the xmp:Identifier property. +/// +/// \def kXMP_NS_XMP_Dimensions +/// \brief The XML namespace for fields of the Dimensions type. +/// +/// \def kXMP_NS_XMP_Image +/// \brief The XML namespace for fields of a graphical image. Used for the Thumbnail type. +/// +/// \def kXMP_NS_XMP_ResourceEvent +/// \brief The XML namespace for fields of the ResourceEvent type. +/// +/// \def kXMP_NS_XMP_ResourceRef +/// \brief The XML namespace for fields of the ResourceRef type. +/// +/// \def kXMP_NS_XMP_ST_Version +/// \brief The XML namespace for fields of the Version type. +/// +/// \def kXMP_NS_XMP_ST_Job +/// \brief The XML namespace for fields of the JobRef type. +/// +/// @} + +#define kXMP_NS_XMP_IdentifierQual "http://ns.adobe.com/xmp/Identifier/qual/1.0/" +#define kXMP_NS_XMP_Dimensions "http://ns.adobe.com/xap/1.0/sType/Dimensions#" +#define kXMP_NS_XMP_Text "http://ns.adobe.com/xap/1.0/t/" +#define kXMP_NS_XMP_PagedFile "http://ns.adobe.com/xap/1.0/t/pg/" +#define kXMP_NS_XMP_Graphics "http://ns.adobe.com/xap/1.0/g/" +#define kXMP_NS_XMP_Image "http://ns.adobe.com/xap/1.0/g/img/" +#define kXMP_NS_XMP_Font "http://ns.adobe.com/xap/1.0/sType/Font#" +#define kXMP_NS_XMP_ResourceEvent "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" +#define kXMP_NS_XMP_ResourceRef "http://ns.adobe.com/xap/1.0/sType/ResourceRef#" +#define kXMP_NS_XMP_ST_Version "http://ns.adobe.com/xap/1.0/sType/Version#" +#define kXMP_NS_XMP_ST_Job "http://ns.adobe.com/xap/1.0/sType/Job#" +#define kXMP_NS_XMP_ManifestItem "http://ns.adobe.com/xap/1.0/sType/ManifestItem#" + +// Deprecated XML namespace constants +#define kXMP_NS_XMP_T "http://ns.adobe.com/xap/1.0/t/" +#define kXMP_NS_XMP_T_PG "http://ns.adobe.com/xap/1.0/t/pg/" +#define kXMP_NS_XMP_G_IMG "http://ns.adobe.com/xap/1.0/g/img/" + +/// \name XML namespace constants from outside Adobe. +/// @{ +/// +/// \def kXMP_NS_DC +/// \brief The XML namespace for the Dublin Core schema. +/// +/// \def kXMP_NS_IPTCCore +/// \brief The XML namespace for the IPTC Core schema. +/// +/// \def kXMP_NS_RDF +/// \brief The XML namespace for RDF. +/// +/// \def kXMP_NS_XML +/// \brief The XML namespace for XML. +/// +/// @} + +#define kXMP_NS_DC "http://purl.org/dc/elements/1.1/" + +#define kXMP_NS_IPTCCore "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/" + +#define kXMP_NS_DICOM "http://ns.adobe.com/DICOM/" + +#define kXMP_NS_PDFA_Schema "http://www.aiim.org/pdfa/ns/schema#" +#define kXMP_NS_PDFA_Property "http://www.aiim.org/pdfa/ns/property#" +#define kXMP_NS_PDFA_Type "http://www.aiim.org/pdfa/ns/type#" +#define kXMP_NS_PDFA_Field "http://www.aiim.org/pdfa/ns/field#" +#define kXMP_NS_PDFA_ID "http://www.aiim.org/pdfa/ns/id/" +#define kXMP_NS_PDFA_Extension "http://www.aiim.org/pdfa/ns/extension/" + +#define kXMP_NS_PDFX "http://ns.adobe.com/pdfx/1.3/" +#define kXMP_NS_PDFX_ID "http://www.npes.org/pdfx/ns/id/" + +#define kXMP_NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#" +#define kXMP_NS_XML "http://www.w3.org/XML/1998/namespace" + +// ================================================================================================= +// Enums and macros used for option bits +// ===================================== + +/// \name Macros for standard option selections. +/// @{ +/// +/// \def kXMP_ArrayLastItem +/// \brief Options macro accesses last array item. +/// +/// \def kXMP_UseNullTermination +/// \brief Options macro sets string style. +/// +/// \def kXMP_NoOptions +/// \brief Options macro clears all property-type bits. +/// +/// @} + +#define kXMP_ArrayLastItem ((XMP_Index)(-1L)) +#define kXMP_UseNullTermination ((XMP_StringLen)(~0UL)) +#define kXMP_NoOptions ((XMP_OptionBits)0UL) + +/// \name Macros for setting and testing general option bits. +/// @{ +/// +/// \def XMP_SetOption +/// \brief Macro sets an option flag bit. +/// \param var A variable storing an options flag. +/// \param opt The bit-flag constant to set. +/// +/// \def XMP_ClearOption +/// \brief Macro clears an option flag bit. +/// \param var A variable storing an options flag. +/// \param opt The bit-flag constant to clear. +/// +/// \def XMP_TestOption +/// \brief Macro reports whether an option flag bit is set. +/// \param var A variable storing an options flag. +/// \param opt The bit-flag constant to test. +/// \return True if the bit is set. +/// +/// \def XMP_OptionIsSet +/// \brief Macro reports whether an option flag bit is set. +/// \param var A variable storing an options flag. +/// \param opt The bit-flag constant to test. +/// \return True if the bit is set. +/// +/// \def XMP_OptionIsClear +/// \brief Macro reports whether an option flag bit is clear. +/// \param var A variable storing an options flag. +/// \param opt The bit-flag constant to test. +/// \return True if the bit is clear. +/// +/// @} + +#define XMP_SetOption(var,opt) var |= (opt) +#define XMP_ClearOption(var,opt) var &= ~(opt) +#define XMP_TestOption(var,opt) (((var) & (opt)) != 0) +#define XMP_OptionIsSet(var,opt) (((var) & (opt)) != 0) +#define XMP_OptionIsClear(var,opt) (((var) & (opt)) == 0) + +/// \name Macros for setting and testing specific option bits. +/// @{ +/// +/// \def XMP_PropIsSimple +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_PropIsStruct +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_PropIsArray +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_ArrayIsUnordered +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_ArrayIsOrdered +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_ArrayIsAlternate +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_ArrayIsAltText +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_PropHasQualifiers +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_PropIsQualifier +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_PropHasLang +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_NodeIsSchema +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// \def XMP_PropIsAlias +/// \brief Macro reports the property type specified by an options flag. +/// \param opt The options flag to check. +/// +/// @} + +#define XMP_PropIsSimple(opt) (((opt) & kXMP_PropCompositeMask) == 0) +#define XMP_PropIsStruct(opt) (((opt) & kXMP_PropValueIsStruct) != 0) +#define XMP_PropIsArray(opt) (((opt) & kXMP_PropValueIsArray) != 0) + +#define XMP_ArrayIsUnordered(opt) (((opt) & kXMP_PropArrayIsOrdered) == 0) +#define XMP_ArrayIsOrdered(opt) (((opt) & kXMP_PropArrayIsOrdered) != 0) +#define XMP_ArrayIsAlternate(opt) (((opt) & kXMP_PropArrayIsAlternate) != 0) +#define XMP_ArrayIsAltText(opt) (((opt) & kXMP_PropArrayIsAltText) != 0) + +#define XMP_PropHasQualifiers(opt) (((opt) & kXMP_PropHasQualifiers) != 0) +#define XMP_PropIsQualifier(opt) (((opt) & kXMP_PropIsQualifier) != 0) +#define XMP_PropHasLang(opt) (((opt) & kXMP_PropHasLang) != 0) + +#define XMP_NodeIsSchema(opt) (((opt) & kXMP_SchemaNode) != 0) +#define XMP_PropIsAlias(opt) (((opt) & kXMP_PropIsAlias) != 0) + +// ------------------------------------------------------------------------------------------------- + +/// Option bit flags for the \c TXMPMeta property accessor functions. +enum { + + /// The XML string form of the property value is a URI, use rdf:resource attribute. DISCOURAGED + kXMP_PropValueIsURI = 0x00000002UL, + + // ------------------------------------------------------ + // Options relating to qualifiers attached to a property. + + /// The property has qualifiers, includes \c rdf:type and \c xml:lang. + kXMP_PropHasQualifiers = 0x00000010UL, + + /// This is a qualifier for some other property, includes \c rdf:type and \c xml:lang. + /// Qualifiers can have arbitrary structure, and can themselves have qualifiers. If the + /// qualifier itself has a structured value, this flag is only set for the top node of the + /// qualifier's subtree. + kXMP_PropIsQualifier = 0x00000020UL, + + /// Implies \c #kXMP_PropHasQualifiers, property has \c xml:lang. + kXMP_PropHasLang = 0x00000040UL, + + /// Implies \c #kXMP_PropHasQualifiers, property has \c rdf:type. + kXMP_PropHasType = 0x00000080UL, + + // -------------------------------------------- + // Options relating to the data structure form. + + /// The value is a structure with nested fields. + kXMP_PropValueIsStruct = 0x00000100UL, + + /// The value is an array (RDF alt/bag/seq). The "ArrayIs..." flags identify specific types + /// of array; default is a general unordered array, serialized using an \c rdf:Bag container. + kXMP_PropValueIsArray = 0x00000200UL, + + /// The item order does not matter. + kXMP_PropArrayIsUnordered = kXMP_PropValueIsArray, + + /// Implies \c #kXMP_PropValueIsArray, item order matters. It is serialized using an \c rdf:Seq container. + kXMP_PropArrayIsOrdered = 0x00000400UL, + + /// Implies \c #kXMP_PropArrayIsOrdered, items are alternates. It is serialized using an \c rdf:Alt container. + kXMP_PropArrayIsAlternate = 0x00000800UL, + + // ------------------------------------ + // Additional struct and array options. + + /// Implies \c #kXMP_PropArrayIsAlternate, items are localized text. Each array element is a + /// simple property with an \c xml:lang attribute. + kXMP_PropArrayIsAltText = 0x00001000UL, + + // kXMP_InsertBeforeItem = 0x00004000UL, ! Used by SetXyz functions. + // kXMP_InsertAfterItem = 0x00008000UL, ! Used by SetXyz functions. + + // ---------------------------- + // Other miscellaneous options. + + /// This property is an alias name for another property. This is only returned by + /// \c TXMPMeta::GetProperty() and then only if the property name is simple, not an path expression. + kXMP_PropIsAlias = 0x00010000UL, + + /// This property is the base value (actual) for a set of aliases.This is only returned by + /// \c TXMPMeta::GetProperty() and then only if the property name is simple, not an path expression. + kXMP_PropHasAliases = 0x00020000UL, + + /// The value of this property is "owned" by the application, and should not generally be editable in a UI. + kXMP_PropIsInternal = 0x00040000UL, + + /// The value of this property is not derived from the document content. + kXMP_PropIsStable = 0x00100000UL, + + /// The value of this property is derived from the document content. + kXMP_PropIsDerived = 0x00200000UL, + + // kXMPUtil_AllowCommas = 0x10000000UL, ! Used by TXMPUtils::CatenateArrayItems and ::SeparateArrayItems. + // kXMP_DeleteExisting = 0x20000000UL, ! Used by TXMPMeta::SetXyz functions to delete any pre-existing property. + // kXMP_SchemaNode = 0x80000000UL, ! Returned by iterators - #define to avoid warnings + + // ------------------------------ + // Masks that are multiple flags. + + /// Property type bit-flag mask for all array types + kXMP_PropArrayFormMask = kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText, + + /// Property type bit-flag mask for composite types (array and struct) + kXMP_PropCompositeMask = kXMP_PropValueIsStruct | kXMP_PropArrayFormMask, + + /// Mask for bits that are reserved for transient use by the implementation. + kXMP_ImplReservedMask = 0x70000000L + +}; + +#define kXMP_SchemaNode ((XMP_OptionBits)0x80000000UL) + +/// Option bit flags for the \c TXMPMeta property setting functions. These option bits are shared +/// with the accessor functions: +/// \li \c #kXMP_PropValueIsURI +/// \li \c #kXMP_PropValueIsStruct +/// \li \c #kXMP_PropValueIsArray +/// \li \c #kXMP_PropArrayIsOrdered +/// \li \c #kXMP_PropArrayIsAlternate +/// \li \c #kXMP_PropArrayIsAltText +enum { + + /// Option for array item location: Insert a new item before the given index. + kXMP_InsertBeforeItem = 0x00004000UL, + + /// Option for array item location: Insert a new item after the given index. + kXMP_InsertAfterItem = 0x00008000UL, + + /// Delete any pre-existing property. + kXMP_DeleteExisting = 0x20000000UL, + + /// Bit-flag mask for property-value option bits + kXMP_PropValueOptionsMask = kXMP_PropValueIsURI, + + /// Bit-flag mask for array-item location bits + kXMP_PropArrayLocationMask = kXMP_InsertBeforeItem | kXMP_InsertAfterItem + +}; + +// ------------------------------------------------------------------------------------------------- + +/// Option bit flags for \c TXMPMeta::ParseFromBuffer(). +enum { + + /// Require a surrounding \c x:xmpmeta element. + kXMP_RequireXMPMeta = 0x0001UL, + + /// This is the not last input buffer for this parse stream. + kXMP_ParseMoreBuffers = 0x0002UL, + + /// Do not reconcile alias differences, throw an exception. + kXMP_StrictAliasing = 0x0004UL + +}; + +/// Option bit flags for \c TXMPMeta::SerializeToBuffer(). +enum { + + // *** Option to remove empty struct/array, or leaf with empty value? + + /// Omit the XML packet wrapper. + kXMP_OmitPacketWrapper = 0x0010UL, + + /// Default is a writeable packet. + kXMP_ReadOnlyPacket = 0x0020UL, + + /// Use a compact form of RDF. + kXMP_UseCompactFormat = 0x0040UL, + + /// Include a padding allowance for a thumbnail image. + kXMP_IncludeThumbnailPad = 0x0100UL, + + /// The padding parameter is the overall packet length. + kXMP_ExactPacketLength = 0x0200UL, + + /// Show aliases as XML comments. + kXMP_WriteAliasComments = 0x0400UL, + + /// Omit all formatting whitespace. + kXMP_OmitAllFormatting = 0x0800UL, + + /// Omit the x:xmpmeta element surrounding the rdf:RDF element. + kXMP_OmitXMPMetaElement = 0x1000UL, + + _XMP_LittleEndian_Bit = 0x0001UL, // ! Don't use directly, see the combined values below! + _XMP_UTF16_Bit = 0x0002UL, + _XMP_UTF32_Bit = 0x0004UL, + + /// Bit-flag mask for encoding-type bits + kXMP_EncodingMask = 0x0007UL, + + /// Use UTF8 encoding + kXMP_EncodeUTF8 = 0UL, + + /// Use UTF16 big-endian encoding + kXMP_EncodeUTF16Big = _XMP_UTF16_Bit, + + /// Use UTF16 little-endian encoding + kXMP_EncodeUTF16Little = _XMP_UTF16_Bit | _XMP_LittleEndian_Bit, + + /// Use UTF32 big-endian encoding + kXMP_EncodeUTF32Big = _XMP_UTF32_Bit, + + /// Use UTF13 little-endian encoding + kXMP_EncodeUTF32Little = _XMP_UTF32_Bit | _XMP_LittleEndian_Bit + +}; + +// ------------------------------------------------------------------------------------------------- + +/// Option bit flags for \c TXMPIterator construction. +enum { + + /// The low 8 bits are an enum of what data structure to iterate. + kXMP_IterClassMask = 0x00FFUL, + + /// Iterate the property tree of a TXMPMeta object. + kXMP_IterProperties = 0x0000UL, + + /// Iterate the global alias table. + kXMP_IterAliases = 0x0001UL, + + /// Iterate the global namespace table. + kXMP_IterNamespaces = 0x0002UL, + + /// Just do the immediate children of the root, default is subtree. + kXMP_IterJustChildren = 0x0100UL, + + /// Just do the leaf nodes, default is all nodes in the subtree. + kXMP_IterJustLeafNodes = 0x0200UL, + + /// Return just the leaf part of the path, default is the full path. + kXMP_IterJustLeafName = 0x0400UL, + + /// Include aliases, default is just actual properties. + kXMP_IterIncludeAliases = 0x0800UL, + + /// Omit all qualifiers. + kXMP_IterOmitQualifiers = 0x1000UL + +}; + +/// Option bit flags for \c TXMPIterator::Skip(). +enum { + + /// Skip the subtree below the current node. + kXMP_IterSkipSubtree = 0x0001UL, + + /// Skip the subtree below and remaining siblings of the current node. + kXMP_IterSkipSiblings = 0x0002UL + +}; + +// ------------------------------------------------------------------------------------------------- +/// Option bit flags for \c TXMPUtils::CatenateArrayItems() and \c TXMPUtils::SeparateArrayItems(). +/// These option bits are shared with the accessor functions: +/// \li \c #kXMP_PropValueIsArray, +/// \li \c #kXMP_PropArrayIsOrdered, +/// \li \c #kXMP_PropArrayIsAlternate, +/// \li \c #kXMP_PropArrayIsAltText +enum { + + /// Allow commas in item values, default is separator. + kXMPUtil_AllowCommas = 0x10000000UL + +}; + +/// Option bit flags for \c TXMPUtils::RemoveProperties() and \c TXMPUtils::AppendProperties(). +enum { + + /// Do all properties, default is just external properties. + kXMPUtil_DoAllProperties = 0x0001UL, + + /// Replace existing values, default is to leave them. + kXMPUtil_ReplaceOldValues = 0x0002UL, + + /// Delete properties if the new value is empty. + kXMPUtil_DeleteEmptyValues = 0x0004UL, + + /// Include aliases, default is just actual properties. + kXMPUtil_IncludeAliases = 0x0800UL + +}; + +// ================================================================================================= +// Types and Constants for XMPFiles +// ================================ + +/// File format constants for use with XMPFiles. +enum { + + // ! Hex used to avoid gcc warnings. Leave the constants so the text reads big endian. There + // ! seems to be no decent way on UNIX to determine the target endianness at compile time. + // ! Forcing it on the client isn't acceptable. + + // -------------------- + // Public file formats. + + /// Public file format constant: 'PDF ' + kXMP_PDFFile = 0x50444620UL, + /// Public file format constant: 'PS ', general PostScript following DSC conventions + kXMP_PostScriptFile = 0x50532020UL, + /// Public file format constant: 'EPS ', encapsulated PostScript + kXMP_EPSFile = 0x45505320UL, + + /// Public file format constant: 'JPEG' + kXMP_JPEGFile = 0x4A504547UL, + /// Public file format constant: 'JPX ', JPEG 2000, ISO 15444-1 + kXMP_JPEG2KFile = 0x4A505820UL, + /// Public file format constant: 'TIFF' + kXMP_TIFFFile = 0x54494646UL, + /// Public file format constant: 'GIF ' + kXMP_GIFFile = 0x47494620UL, + /// Public file format constant: 'PNG ' + kXMP_PNGFile = 0x504E4720UL, + + /// Public file format constant: 'SWF ' + kXMP_SWFFile = 0x53574620UL, + /// Public file format constant: 'FLA ' + kXMP_FLAFile = 0x464C4120UL, + /// Public file format constant: 'FLV ' + kXMP_FLVFile = 0x464C5620UL, + + /// Public file format constant: 'MOV ', Quicktime + kXMP_MOVFile = 0x4D4F5620UL, + /// Public file format constant: 'AVI ' + kXMP_AVIFile = 0x41564920UL, + /// Public file format constant: 'CIN ', Cineon + kXMP_CINFile = 0x43494E20UL, + /// Public file format constant: 'WAV ' + kXMP_WAVFile = 0x57415620UL, + /// Public file format constant: 'MP3 ' + kXMP_MP3File = 0x4D503320UL, + /// Public file format constant: 'SES ', Audition session + kXMP_SESFile = 0x53455320UL, + /// Public file format constant: 'CEL ', Audition loop + kXMP_CELFile = 0x43454C20UL, + /// Public file format constant: 'MPEG' + kXMP_MPEGFile = 0x4D504547UL, + /// Public file format constant: 'MP2 ' + kXMP_MPEG2File = 0x4D503220UL, + /// Public file format constant: 'MP4 ', ISO 14494-12 and -14 + kXMP_MPEG4File = 0x4D503420UL, + /// Public file format constant: 'WMAV', Windows Media Audio and Video + kXMP_WMAVFile = 0x574D4156UL, + /// Public file format constant: 'AIFF' + kXMP_AIFFFile = 0x41494646UL, + /// Public file format constant: 'P2 ', a collection not really a single file + kXMP_P2File = 0x50322020UL, + /// Public file format constant: 'XDCF', a collection not really a single file + kXMP_XDCAM_FAMFile = 0x58444346UL, + /// Public file format constant: 'XDCS', a collection not really a single file + kXMP_XDCAM_SAMFile = 0x58444353UL, + /// Public file format constant: 'XDCX', a collection not really a single file + kXMP_XDCAM_EXFile = 0x58444358UL, + /// Public file format constant: 'AVHD', a collection not really a single file + kXMP_AVCHDFile = 0x41564844UL, + /// Public file format constant: 'SHDV', a collection not really a single file + kXMP_SonyHDVFile = 0x53484456UL, + + /// Public file format constant: 'HTML' + kXMP_HTMLFile = 0x48544D4CUL, + /// Public file format constant: 'XML ' + kXMP_XMLFile = 0x584D4C20UL, + /// Public file format constant: 'text' + kXMP_TextFile = 0x74657874UL, + + // ------------------------------- + // Adobe application file formats. + + /// Adobe application file format constant: 'PSD ' + kXMP_PhotoshopFile = 0x50534420UL, + /// Adobe application file format constant: 'AI ' + kXMP_IllustratorFile = 0x41492020UL, + /// Adobe application file format constant: 'INDD' + kXMP_InDesignFile = 0x494E4444UL, + /// Adobe application file format constant: 'AEP ' + kXMP_AEProjectFile = 0x41455020UL, + /// Adobe application file format constant: 'AET ', After Effects Project Template + kXMP_AEProjTemplateFile = 0x41455420UL, + /// Adobe application file format constant: 'FFX ' + kXMP_AEFilterPresetFile = 0x46465820UL, + /// Adobe application file format constant: 'NCOR' + kXMP_EncoreProjectFile = 0x4E434F52UL, + /// Adobe application file format constant: 'PRPJ' + kXMP_PremiereProjectFile = 0x5052504AUL, + /// Adobe application file format constant: 'PRTL' + kXMP_PremiereTitleFile = 0x5052544CUL, + /// Adobe application file format constant: 'UCF ', Universal Container Format + kXMP_UCFFile = 0x55434620UL, + + // ------- + // Others. + + /// Unknown file format constant: ' ' + kXMP_UnknownFile = 0x20202020UL + +}; + +/// Type for file format identification constants. See \c #kXMP_PDFFile and following. +typedef XMP_Uns32 XMP_FileFormat; + +// ------------------------------------------------------------------------------------------------- + +/// Byte-order masks, do not use directly +enum { + kXMP_CharLittleEndianMask = 1, + kXMP_Char16BitMask = 2, + kXMP_Char32BitMask = 4 +}; + +/// Constants to allow easy testing for 16/32 bit and big/little endian. +enum { + /// 8-bit + kXMP_Char8Bit = 0, + /// 16-bit big-endian + kXMP_Char16BitBig = kXMP_Char16BitMask, + /// 16-bit little-endian + kXMP_Char16BitLittle = kXMP_Char16BitMask | kXMP_CharLittleEndianMask, + /// 32-bit big-endian + kXMP_Char32BitBig = kXMP_Char32BitMask, + /// 32-bit little-endian + kXMP_Char32BitLittle = kXMP_Char32BitMask | kXMP_CharLittleEndianMask, + /// Variable or not-yet-known cases + kXMP_CharUnknown = 1 +}; + +/// \name Macros to test components of the character form mask +/// @{ +/// +/// \def XMP_CharFormIs16Bit +/// \brief Macro reports the encoding of a character. +/// \param f The character to check. +/// +/// \def XMP_CharFormIs32Bit +/// \brief Macro reports the encoding of a character. +/// \param f The character to check. +/// +/// \def XMP_CharFormIsBigEndian +/// \brief Macro reports the byte-order of a character. +/// \param f The character to check. +/// +/// \def XMP_CharFormIsLittleEndian +/// \brief Macro reports the byte-order of a character. +/// \param f The character to check. +/// +/// \def XMP_GetCharSize +/// \brief Macro reports the byte-size of a character. +/// \param f The character to check. +/// +/// \def XMP_CharToSerializeForm +/// \brief Macro converts \c XMP_Uns8 to \c XMP_OptionBits. +/// \param cf The character to convert. +/// +/// \def XMP_CharFromSerializeForm +/// \brief Macro converts \c XMP_OptionBits to \c XMP_Uns8. +/// \param sf The character to convert. +/// +/// @} + +#define XMP_CharFormIs16Bit(f) ( ((int)(f) & kXMP_Char16BitMask) != 0 ) +#define XMP_CharFormIs32Bit(f) ( ((int)(f) & kXMP_Char32BitMask) != 0 ) +#define XMP_CharFormIsBigEndian(f) ( ((int)(f) & kXMP_CharLittleEndianMask) == 0 ) +#define XMP_CharFormIsLittleEndian(f) ( ((int)(f) & kXMP_CharLittleEndianMask) != 0 ) +#define XMP_GetCharSize(f) ( ((int)(f)&6) == 0 ? 1 : (int)(f)&6 ) +#define XMP_CharToSerializeForm(cf) ( (XMP_OptionBits)(cf) ) +#define XMP_CharFromSerializeForm(sf) ( (XMP_Uns8)(sf) ) + +/// \def kXMPFiles_UnknownOffset +/// \brief Constant for an unknown packet offset within a file. +#define kXMPFiles_UnknownOffset ((XMP_Int64)-1) + +/// \def kXMPFiles_UnknownLength +/// \brief Constant for an unknown packet length within a file. +#define kXMPFiles_UnknownLength ((XMP_Int32)-1) + +/// XMP packet description +struct XMP_PacketInfo { + + /// Packet offset in the file in bytes, -1 if unknown. + XMP_Int64 offset; + /// Packet length in the file in bytes, -1 if unknown. + XMP_Int32 length; + /// Packet padding size in bytes, zero if unknown. + XMP_Int32 padSize; // Zero if unknown. + + /// Character format using the values \c kXMP_Char8Bit, \c kXMP_Char16BitBig, etc. + XMP_Uns8 charForm; + /// True if there is a packet wrapper and the trailer says writeable by dumb packet scanners. + XMP_Bool writeable; + /// True if there is a packet wrapper, the "" XML processing instructions. + XMP_Bool hasWrapper; + + /// Padding to make the struct's size be a multiple 4. + XMP_Uns8 pad; + + /// Default constructor. + XMP_PacketInfo() : offset(kXMPFiles_UnknownOffset), length(kXMPFiles_UnknownLength), + padSize(0), charForm(0), writeable(0), hasWrapper(0), pad(0) {}; + +}; + +/// Version of the XMP_PacketInfo type +enum { + /// Version of the XMP_PacketInfo type + kXMP_PacketInfoVersion = 3 +}; + +// ------------------------------------------------------------------------------------------------- + +/// Values for \c XMP_ThumbnailInfo::tnailFormat. +enum { + /// The thumbnail data has an unknown format. + kXMP_UnknownTNail = 0, + /// The thumbnail data is a JPEG stream, presumably compressed. + kXMP_JPEGTNail = 1, + /// The thumbnail data is a TIFF stream, presumably uncompressed. + kXMP_TIFFTNail = 2, + /// The thumbnail data is in the format of Photoshop Image Resource 1036. + kXMP_PShopTNail = 3 +}; + +/// Thumbnail descriptor +struct XMP_ThumbnailInfo { + + /// The format of the containing file. + XMP_FileFormat fileFormat; + /// Full image size in pixels. + XMP_Uns32 fullWidth, fullHeight; + /// Thumbnail image size in pixels. + XMP_Uns32 tnailWidth, tnailHeight; + /// Orientation of full image and thumbnail, as defined by Exif for tag 274. + + XMP_Uns16 fullOrientation, tnailOrientation; + /// Raw image data from the host file, valid for life of the owning \c XMPFiles object. Do not modify! + const XMP_Uns8 * tnailImage; + /// The size in bytes of the thumbnail image data. + XMP_Uns32 tnailSize; + /// The format of the thumbnail image data. + XMP_Uns8 tnailFormat; + + /// Padding to make the struct's size be a multiple 4. + XMP_Uns8 pad1, pad2, pad3; + + /// Default constructor. + XMP_ThumbnailInfo() : fileFormat(kXMP_UnknownFile), fullWidth(0), fullHeight(0), + tnailWidth(0), tnailHeight(0), fullOrientation(0), tnailOrientation(0), + tnailImage(0), tnailSize(0), tnailFormat(kXMP_UnknownTNail) {}; + +}; + +/// Version of the XMP_ThumbnailInfo type +enum { + /// Version of the XMP_ThumbnailInfo type + kXMP_ThumbnailInfoVersion = 1 +}; + +// ------------------------------------------------------------------------------------------------- + +/// Option bit flags for \c TXMPFiles::Initialize(). +enum { + /// Do not initialize QuickTime, the client will. + kXMPFiles_NoQuickTimeInit = 0x0001 +}; + +/// Option bit flags for \c TXMPFiles::GetFormatInfo(). +enum { + + /// Can inject first-time XMP into an existing file. + kXMPFiles_CanInjectXMP = 0x00000001, + + /// Can expand XMP or other metadata in an existing file. + kXMPFiles_CanExpand = 0x00000002, + + /// Can copy one file to another, writing new metadata. + kXMPFiles_CanRewrite = 0x00000004, + + /// Can expand, but prefers in-place update. + kXMPFiles_PrefersInPlace = 0x00000008, + + /// Supports reconciliation between XMP and other forms. + kXMPFiles_CanReconcile = 0x00000010, + + /// Allows access to just the XMP, ignoring other forms. + kXMPFiles_AllowsOnlyXMP = 0x00000020, + + /// File handler returns raw XMP packet information. + kXMPFiles_ReturnsRawPacket = 0x00000040, + + /// File handler returns native thumbnail. + kXMPFiles_ReturnsTNail = 0x00000080, + + /// The file handler does the file open and close. + kXMPFiles_HandlerOwnsFile = 0x00000100, + + /// The file handler allows crash-safe file updates. + kXMPFiles_AllowsSafeUpdate = 0x00000200, + + /// The file format needs the XMP packet to be read-only. + kXMPFiles_NeedsReadOnlyPacket = 0x00000400, + + /// The file handler uses a "sidecar" file for the XMP. + kXMPFiles_UsesSidecarXMP = 0x00000800, + + /// The format is folder oriented, for example the P2 video format. + kXMPFiles_FolderBasedFormat = 0x00001000 + +}; + +/// Option bit flags for \c TXMPFiles::OpenFile(). +enum { + + /// Open for read-only access. + kXMPFiles_OpenForRead = 0x00000001, + + /// Open for reading and writing. + kXMPFiles_OpenForUpdate = 0x00000002, + + /// Only the XMP is wanted, allows space/time optimizations. + kXMPFiles_OpenOnlyXMP = 0x00000004, + + /// Cache thumbnail if possible, \c TXMPFiles::GetThumbnail() will be called. + kXMPFiles_OpenCacheTNail = 0x00000008, + + /// Be strict about locating XMP and reconciling with other forms. + kXMPFiles_OpenStrictly = 0x00000010, + + /// Require the use of a smart handler. + kXMPFiles_OpenUseSmartHandler = 0x00000020, + + /// Force packet scanning, do not use a smart handler. + kXMPFiles_OpenUsePacketScanning = 0x00000040, + + /// Only packet scan files "known" to need scanning. + kXMPFiles_OpenLimitedScanning = 0x00000080, + + /// Attempt to repair a file opened for update, default is to not open (throw an exception). + kXMPFiles_OpenRepairFile = 0x00000100, + + /// Set if calling from background thread. + kXMPFiles_OpenInBackground = 0x10000000 + +}; + +// A note about kXMPFiles_OpenInBackground. The XMPFiles handler for .mov files currently uses +// QuickTime. On Macintosh, calls to Enter/ExitMovies versus Enter/ExitMoviesOnThread must be made. +// This option is used to signal background use so that the .mov handler can behave appropriately. + +/// Option bit flags for \c TXMPFiles::CloseFile(). +enum { + /// Write into a temporary file and swap for crash safety. + kXMPFiles_UpdateSafely = 0x0001 +}; + +// ================================================================================================= +// Exception codes +// =============== + +/// \name Errors Exception handling +/// @{ +/// +/// XMP Tookit errors result in throwing an \c XMP_Error exception. Any exception thrown within the +/// XMP Toolkit is caught in the toolkit and rethrown as an \c XMP_Error. +/// +/// The \c XMP_Error class contains a numeric code and an English explanation. New numeric codes may +/// be added at any time. There are typically many possible explanations for each numeric code. The +/// explanations try to be precise about the specific circumstances causing the error. +/// +/// \note The explanation string is for debugging use only. It must not be shown to users in a +/// final product. It is written for developers not users, and never localized. +/// + +/// XMP Toolkit error, associates an error code with a descriptive error string. +class XMP_Error { +public: + + /// @brief Constructor for an XMP_Error. + /// + /// @param _id The numeric code. + /// + /// @param _errMsg The descriptive string, for debugging use only. It must not be shown to users + /// in a final product. It is written for developers, not users, and never localized. + XMP_Error ( XMP_Int32 _id, XMP_StringPtr _errMsg ) : id(_id), errMsg(_errMsg) {}; + + /// Retrieves the numeric code from an XMP_Error. + inline XMP_Int32 GetID() const { return id; }; + + /// Retrieves the descriptive string from an XMP_Error. + inline XMP_StringPtr GetErrMsg() const { return errMsg; }; + +private: + /// Exception code. See constants \c #kXMPErr_Unknown and following. + XMP_Int32 id; + /// Descriptive string, for debugging use only. It must not be shown to users in a final + /// product. It is written for developers, not users, and never localized. + XMP_StringPtr errMsg; +}; + +/// Exception code constants +enum { + + // -------------------- + // Generic error codes. + + /// Generic unknown error + kXMPErr_Unknown = 0, + /// Generic undefined error + kXMPErr_TBD = 1, + /// Generic unavailable error + kXMPErr_Unavailable = 2, + /// Generic bad object error + kXMPErr_BadObject = 3, + /// Generic bad parameter error + kXMPErr_BadParam = 4, + /// Generic bad value error + kXMPErr_BadValue = 5, + /// Generic assertion failure + kXMPErr_AssertFailure = 6, + /// Generic enforcement failure + kXMPErr_EnforceFailure = 7, + /// Generic unimplemented error + kXMPErr_Unimplemented = 8, + /// Generic internal failure + kXMPErr_InternalFailure = 9, + /// Generic deprecated error + kXMPErr_Deprecated = 10, + /// Generic external failure + kXMPErr_ExternalFailure = 11, + /// Generic user abort error + kXMPErr_UserAbort = 12, + /// Generic standard exception + kXMPErr_StdException = 13, + /// Generic unknown exception + kXMPErr_UnknownException = 14, + /// Generic out-of-memory error + kXMPErr_NoMemory = 15, + + // ------------------------------------ + // More specific parameter error codes. + + /// Bad schema parameter + kXMPErr_BadSchema = 101, + /// Bad XPath parameter + kXMPErr_BadXPath = 102, + /// Bad options parameter + kXMPErr_BadOptions = 103, + /// Bad index parameter + kXMPErr_BadIndex = 104, + /// Bad iteration position + kXMPErr_BadIterPosition = 105, + /// XML parsing error + kXMPErr_BadParse = 106, + /// Serialization error + kXMPErr_BadSerialize = 107, + /// File format error + kXMPErr_BadFileFormat = 108, + /// No file handler found for format + kXMPErr_NoFileHandler = 109, + /// Data too large for JPEG file format + kXMPErr_TooLargeForJPEG = 110, + + // ----------------------------------------------- + // File format and internal structure error codes. + + /// XML format error + kXMPErr_BadXML = 201, + /// RDF format error + kXMPErr_BadRDF = 202, + /// XMP format error + kXMPErr_BadXMP = 203, + /// Empty iterator + kXMPErr_EmptyIterator = 204, + /// Unicode error + kXMPErr_BadUnicode = 205, + /// TIFF format error + kXMPErr_BadTIFF = 206, + /// JPEG format error + kXMPErr_BadJPEG = 207, + /// PSD format error + kXMPErr_BadPSD = 208, + /// PSIR format error + kXMPErr_BadPSIR = 209, + /// IPTC format error + kXMPErr_BadIPTC = 210, + /// MPEG format error + kXMPErr_BadMPEG = 211 + +}; + +/// @} + +// ================================================================================================= +// Client callbacks +// ================ + +// ------------------------------------------------------------------------------------------------- +/// \name Special purpose callback functions +/// @{ + +/// A signed 32-bit integer used as a status result for the output callback routine, +/// \c XMP_TextOutputProc. Zero means no error, all other values except -1 are private to the callback. +/// The callback is wrapped to prevent exceptions being thrown across DLL boundaries. Any exceptions +/// thrown out of the callback cause a return status of -1. + +typedef XMP_Int32 XMP_Status; + +// ------------------------------------------------------------------------------------------------- +/// The signature of a client-defined callback for text output from XMP Toolkit debugging +/// operations. The callback is invoked one or more times for each line of output. The end of a line +/// is signaled by a '\\n' character at the end of the buffer. Formatting newlines are never present +/// in the middle of a buffer, but values of properties might contain any UTF-8 characters. +/// +/// @param refCon A pointer to client-defined data passed to the TextOutputProc. +/// +/// @param buffer A string containing one line of output. +/// +/// @param bufferSize The number of characters in the output buffer. +/// +/// @return A success/fail status value. Any failure result aborts the output. +/// +/// @see \c TXMPMeta::DumpObject() + +typedef XMP_Status (* XMP_TextOutputProc) ( void * refCon, + XMP_StringPtr buffer, + XMP_StringLen bufferSize ); + +// ------------------------------------------------------------------------------------------------- +/// The signature of a client-defined callback to check for a user request to abort a time-consuming +/// operation within XMPFiles. +/// +/// @param arg A pointer to caller-defined data passed from the registration call. +/// +/// @return True to abort the current operation, which results in an exception being thrown. +/// +/// @see \c TXMPFiles::SetAbortProc() + +typedef bool (* XMP_AbortProc) ( void * arg ); // Used by . + +/// @} + +// ================================================================================================= +// Stuff with no better place to be +// ================================ + +/// XMP Toolkit version information +typedef struct XMP_VersionInfo { + /// The primary release number, the "1" in version "1.2.3". + XMP_Uns8 major; + /// The secondary release number, the "2" in version "1.2.3". + XMP_Uns8 minor; + /// The tertiary release number, the "3" in version "1.2.3". + XMP_Uns8 micro; + /// A 0/1 boolean value, true if this is a debug build. + XMP_Bool isDebug; + /// A rolling build number, monotonically increasing in a release. + XMP_Uns32 build; + /// Individual feature implementation flags. + XMP_Uns32 flags; + /// A comprehensive version information string. + XMP_StringPtr message; +} XMP_VersionInfo; + +// ================================================================================================= + +#if __cplusplus +} // extern "C" +#endif + +#endif // __XMP_Const_h__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/XMP_Environment.h b/vendor/exiv2-0.25/xmpsdk/include/XMP_Environment.h new file mode 100644 index 0000000..bfaa5a8 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/XMP_Environment.h @@ -0,0 +1,164 @@ +#ifndef __XMP_Environment_h__ +#define __XMP_Environment_h__ 1 + +// ================================================================================================= +// XMP_Environment.h - Build environment flags for the XMP toolkit. +// ================================================================ +// +// This header is just C preprocessor macro definitions to set up the XMP toolkit build environment. +// It must be the first #include in any chain since it might affect things in other #includes. +// +// ================================================================================================= + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +// ================================================================================================= +// Determine the Platform +// ====================== + +// One of MAC_ENV, WIN_ENV, or UNIX_ENV must be defined by the client. Since some other code +// requires these to be defined without values, they are only used here to define XMP-specific +// macros with 0 or 1 values. + +/* 20-Oct-07, ahu: Determine the platform, set the above defines accordingly. */ + +#if !defined(_FILE_OFFSET_BITS) +#define _FILE_OFFSET_BITS 64 +#endif + +#if defined __CYGWIN32__ && !defined __CYGWIN__ + /* For backwards compatibility with Cygwin b19 and + earlier, we define __CYGWIN__ here, so that + we can rely on checking just for that macro. */ +# define __CYGWIN__ __CYGWIN32__ +#endif +#if defined WIN32 && !defined __CYGWIN__ +# define WIN_ENV 1 +/* Todo: How to correctly recognize a Mac platform? */ +#elif defined macintosh || defined MACOS_CLASSIC || defined MACOS_X_UNIX || defined MACOS_X || defined MACOS +# define MAC_ENV 1 +#else +# define UNIX_ENV 1 +#endif + +// ! Tempting though it might be to have a standard macro for big or little endian, there seems to +// ! be no decent way to do that on our own in UNIX. Forcing it on the client isn't acceptable. + +#if defined ( MAC_ENV ) + + #if 0 // ! maybe someday - ! MAC_ENV + #error "MAC_ENV must be defined so that \"#if MAC_ENV\" is true" + #endif + + #if defined ( WIN_ENV ) || defined ( UNIX_ENV ) + #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, or UNIX_ENV" + #endif + + #define XMP_MacBuild 1 + #define XMP_WinBuild 0 + #define XMP_UNIXBuild 0 + +#elif defined ( WIN_ENV ) + + #if 0 // ! maybe someday - ! WIN_ENV + #error "WIN_ENV must be defined so that \"#if WIN_ENV\" is true" + #endif + + #if defined ( UNIX_ENV ) + #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, or UNIX_ENV" + #endif + + #define XMP_MacBuild 0 + #define XMP_WinBuild 1 + #define XMP_UNIXBuild 0 + +#elif defined ( UNIX_ENV ) + + #if 0 // ! maybe someday - ! UNIX_ENV + #error "UNIX_ENV must be defined so that \"#if UNIX_ENV\" is true" + #endif + + #define XMP_MacBuild 0 + #define XMP_WinBuild 0 + #define XMP_UNIXBuild 1 + +#else + + #error "XMP environment error - must define one of MAC_ENV, WIN_ENV, or UNIX_ENV" + +#endif + +// ================================================================================================= +// Common Macros +// ============= + +#if defined ( DEBUG ) + #if defined ( NDEBUG ) + #undef NDEBUG + #warning + #warning "XMP environment - DEBUG and NDEBUG defined. NDEBUG has been undefined" + #warning + #endif + #define XMP_DebugBuild 1 +#endif + +#if defined ( NDEBUG ) + #define XMP_DebugBuild 0 +#endif + +#ifndef XMP_DebugBuild + #define XMP_DebugBuild 0 +#endif + +#if XMP_DebugBuild + #include // The assert macro needs printf. +#endif + +#ifndef XMP_64 + #if _WIN64 + #define XMP_64 1 + #else + #define XMP_64 0 + #endif +#endif + +#define UNUSED(x) (void)(x) + +// ================================================================================================= +// Macintosh Specific Settings +// =========================== + +// ================================================================================================= +// Windows Specific Settings +// ========================= + +// ================================================================================================= +// UNIX Specific Settings +// ====================== + +// ================================================================================================= + +#endif // __XMP_Environment_h__ + +/* + If you're using Solaris and the Solaris Studio compiler, then you really + do need to use -library=stdcxx4 along with these inclusions below +*/ +#if defined(OS_SOLARIS) +#include +#include +#include +#include +#include +#if defined(__cplusplus) +#include +#include +#endif +#endif + diff --git a/vendor/exiv2-0.25/xmpsdk/include/XMP_Version.h b/vendor/exiv2-0.25/xmpsdk/include/XMP_Version.h new file mode 100644 index 0000000..f8b0ea8 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/XMP_Version.h @@ -0,0 +1,45 @@ +#ifndef __XMP_Version_h__ +#define __XMP_Version_h__ 1 + +/* --------------------------------------------------------------------------------------------- */ +/* ** IMPORTANT ** This file must be usable by strict ANSI C compilers. No "//" comments, etc. */ +/* --------------------------------------------------------------------------------------------- */ + +/* +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= +*/ + +/* ============================================================================================= */ +/** +XMP Toolkit Version Information + +Version information for the XMP toolkit is stored in the executable and available through a runtime +call, SXMPMeta::GetVersionInfo. In addition a static version number is defined in this +header. The information in the executable or returned by SXMPMeta::GetVersionInfo is about +the implementation internals, it is runtime version information. The values defined in this header +describe the version of the API used at client compile time. They do not necessarily relate to the +runtime version. + +Important: Do not display the static values defined here to users as the version of XMP in use. Do +not base runtime decisions on just this static version. It is OK to compare the static and runtime +versions. + +*/ +/* ============================================================================================= */ + +#define XMP_API_VERSION_MAJOR 4 +#define XMP_API_VERSION_MINOR 4 +#define XMP_API_VERSION_MICRO 0 + +#define XMP_API_VERSION 4.4 +#define XMP_API_VERSION_STRING "4.4.0-Exiv2" + +/* ============================================================================================= */ + +#endif /* __XMP_Version_h__ */ diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPIterator.incl_cpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPIterator.incl_cpp new file mode 100644 index 0000000..672203e --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPIterator.incl_cpp @@ -0,0 +1,226 @@ +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2007 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. +// ================================================================================================= + +// ================================================================================================ +/// \file TXMPIterator.incl_cpp +/// \brief The implementation of the TXMPIterator template class. + +#include "XMPSDK.hpp" +#include "client-glue/WXMP_Common.hpp" +#include "client-glue/WXMPIterator.hpp" + +// ================================================================================================= +// Implementation Guidelines +// ========================= +// +// The implementations of the template functions are very stylized. The jobs done in this code are: +// +// 1. Set up the xmpIter template data member in the constructors. +// 2. Call through to the appropriate WXMPIterator function. +// 3. Copy returned strings and release the threading lock. +// +// The various kinds of functions follow similar patterns, first assuming no returned string: +// +// Constructors - Use an initializer for the xmpIter data member to call the WXMPIterator constructor. +// Destructor - Let the WXMPIterator destructor be implicitly called for the xmpIter data member. +// Static function - Simply call the corresponding WXMPIterator static function. +// Non-static function - Simply call the corresponding WXMPIterator function using xmpIter. +// +// If a member function has returned strings the code looks roughly like this: +// +// <<>> +// <<>> +// if ( <<>> ) { +// if ( outStr != 0 ) outStr->assign ( outPtr, outLen ); +// <<>> +// } +// return result; +// +// The <<>> is the call to the wrapper, and <<>> is the check and throw +// if the wrapper reports failure. The <<>> check is used to determine if the string +// should actually be assigned. For example, GetProperty can't assign the value if the property +// does not exist. There is no <<>> check if it isn't, well, appropriate. Outputs are +// always passed as explicit pointers, and null can be passed if the string is not wanted. The +// inner implementation holds the threading lock if an output string is returned, regardless of +// whether the client wants it or not (which the implementation does not know). +// +// ================================================================================================= + +#ifndef XMP_TraceCTorDTor + #define XMP_TraceCTorDTor 0 +#endif + +#if XMP_TraceCTorDTor + class XIPeek { // Hack to peek at the client ref count in the internal object. + public: + XIPeek(); + virtual ~XIPeek(); + XMP_Int32 clientRefs; + }; +#endif + +// ------------------------------------------------------------------------------------------------- + +#define PropIterCTor(xmpRef,schemaNS,propName,options) \ + WrapCheckIterRef ( newRef, zXMPIterator_PropCTor_1 ( xmpRef, schemaNS, propName, options ) ); \ + this->iterRef = newRef + +// ------------------------------------------------------------------------------------------------- + +#define TableIterCTor(schemaNS,propName,options) \ + WrapCheckIterRef ( newRef, zXMPIterator_TableCTor_1 ( schemaNS, propName, options ) ); \ + this->iterRef = newRef + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +TXMPIterator ( const TXMPIterator & original ) : iterRef(original.iterRef) +{ + WXMPIterator_IncrementRefCount_1 ( this->iterRef ); + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Copy construct TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPIterator,void):: +operator= ( const TXMPIterator & rhs ) +{ + #if XMP_TraceCTorDTor + XIPeek* xiLHS = (XIPeek*)this->iterRef; + XIPeek* xiRHS = (XIPeek*)rhs.iterRef; + printf ( "Assign TXMPIterator, lhs @ %.8X, rhs @ %.8X\n", this, &rhs ); + printf ( " original lhs ref = %.8X, count = %d\n", xiLHS, xiLHS->clientRefs ); + printf ( " original rhs ref = %.8X, count = %d\n", xiRHS, xiRHS->clientRefs ); + #endif + XMPIteratorRef oldRef = this->iterRef; // ! Decrement last so errors leave client object OK. + this->iterRef = rhs.iterRef; + WXMPIterator_IncrementRefCount_1 ( this->iterRef ); + WXMPIterator_DecrementRefCount_1 ( oldRef ); + #if XMP_TraceCTorDTor + printf ( " result lhs ref = %.8X, count = %d\n", xiLHS, xiLHS->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +TXMPIterator() : iterRef(0) +{ + throw XMP_Error ( kXMPErr_Unavailable, "No default construction for XMP iterators" ); + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Default construct TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +TXMPIterator ( const TXMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options /* = 0 */ ) : iterRef(0) +{ + PropIterCTor ( xmpObj.GetInternalRef(), schemaNS, propName, options ); + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Construct property TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +TXMPIterator ( const TXMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_OptionBits options /* = 0 */ ) : iterRef(0) +{ + PropIterCTor ( xmpObj.GetInternalRef(), schemaNS, "", options ); + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Construct schema TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +TXMPIterator ( const TXMPMeta & xmpObj, + XMP_OptionBits options /* = 0 */ ) : iterRef(0) +{ + PropIterCTor ( xmpObj.GetInternalRef(), "", "", options ); + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Construct tree TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +TXMPIterator ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options ) : iterRef(0) +{ + TableIterCTor ( schemaNS, propName, options ); + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Construct table TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPIterator):: +~TXMPIterator () throw() +{ + #if XMP_TraceCTorDTor + XIPeek* xiPtr = (XIPeek*)this->iterRef; + printf ( "Destruct TXMPIterator @ %.8X, ref = %.8X, count = %d\n", this, xiPtr, xiPtr->clientRefs ); + #endif + WXMPIterator_DecrementRefCount_1 ( this->iterRef ); + this->iterRef = 0; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPIterator,bool):: +Next ( tStringObj * schemaNS /* = 0 */, + tStringObj * propPath /* = 0 */, + tStringObj * propValue /* = 0 */, + XMP_OptionBits * options /* = 0 */ ) +{ + XMP_StringPtr schemaPtr = 0; + XMP_StringLen schemaLen = 0; + XMP_StringPtr pathPtr = 0; + XMP_StringLen pathLen = 0; + XMP_StringPtr valuePtr = 0; + XMP_StringLen valueLen = 0; + WrapCheckBool ( found, zXMPIterator_Next_1 ( &schemaPtr, &schemaLen, &pathPtr, &pathLen, &valuePtr, &valueLen, options ) ); + if ( found ) { + if ( schemaNS != 0 ) schemaNS->assign ( schemaPtr, schemaLen ); + if ( propPath != 0 ) propPath->assign ( pathPtr, pathLen ); + if ( propValue != 0 ) propValue->assign ( valuePtr, valueLen ); + WXMPUtils_UnlockIter_1 ( this->iterRef, 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPIterator,void):: +Skip ( XMP_OptionBits options ) +{ + WrapCheckVoid ( zXMPIterator_Skip_1 ( options ) ); +} + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPMeta.incl_cpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPMeta.incl_cpp new file mode 100644 index 0000000..0131aa5 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPMeta.incl_cpp @@ -0,0 +1,935 @@ +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2008 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. +// ================================================================================================= + +// ================================================================================================ +/// \file TXMPMeta.incl_cpp +/// \brief The implementation of the TXMPMeta template class. + +#include "XMPSDK.hpp" +#include "client-glue/WXMP_Common.hpp" +#include "client-glue/WXMPMeta.hpp" + +// ================================================================================================= +// Implementation Guidelines +// ========================= +// +// The implementations of the template functions are very stylized. ... +// +// ================================================================================================= + +#ifndef XMP_TraceCTorDTor + #define XMP_TraceCTorDTor 0 +#endif + +#if XMP_TraceCTorDTor + class XMPeek { // Hack to peek at the client ref count in the internal object. + public: + XMPeek(); + virtual ~XMPeek(); + XMP_Int32 clientRefs; + }; +#endif + +// ================================================================================================= +// Local utilities +// =============== + +// ------------------------------------------------------------------------------------------------- + +class TOPW_Info { +public: + XMP_TextOutputProc clientProc; + void * clientRefCon; + TOPW_Info ( XMP_TextOutputProc proc, void * refCon ) : clientProc(proc), clientRefCon(refCon) {}; +private: + TOPW_Info() {}; // ! Hide default constructor. +}; + +static XMP_Status TextOutputProcWrapper ( void * refCon, + XMP_StringPtr buffer, + XMP_StringLen bufferSize ) +{ + try { // Don't let client callback exceptions propagate across DLL boundaries. + TOPW_Info * info = (TOPW_Info*)refCon; + return info->clientProc ( info->clientRefCon, buffer, bufferSize ); + } catch ( ... ) { + return -1; + } +} + +// ================================================================================================= +// Initialization and termination +// ============================== + +XMP_MethodIntro(TXMPMeta,void):: +GetVersionInfo ( XMP_VersionInfo * info ) +{ + WrapNoCheckVoid ( zXMPMeta_GetVersionInfo_1 ( info ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +Initialize() +{ + WrapCheckBool ( ok, zXMPMeta_Initialize_1() ); + return ok; +} +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +Terminate() +{ + WrapNoCheckVoid ( zXMPMeta_Terminate_1() ); +} + +// ================================================================================================= +// Constuctors, destructor, operators +// ================================== + +static XMPMetaRef DefaultCTor() +{ + WrapCheckMetaRef ( newRef, zXMPMeta_CTor_1() ); + return newRef; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPMeta):: +TXMPMeta() : xmpRef(DefaultCTor()) +{ + #if XMP_TraceCTorDTor + XMPeek* xmPtr = (XMPeek*)this->xmpRef; + printf ( "Default construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPMeta):: +TXMPMeta ( const TXMPMeta & original ) : xmpRef(original.xmpRef) +{ + WXMPMeta_IncrementRefCount_1 ( this->xmpRef ); + #if XMP_TraceCTorDTor + XMPeek* xmPtr = (XMPeek*)this->xmpRef; + printf ( "Copy construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +operator= ( const TXMPMeta & rhs ) +{ + #if XMP_TraceCTorDTor + XMPeek* xmLHS = (XMPeek*)this->xmpRef; + XMPeek* xmRHS = (XMPeek*)rhs.xmpRef; + printf ( "Assign TXMPMeta, lhs @ %.8X, rhs @ %.8X\n", this, &rhs ); + printf ( " original lhs ref = %.8X, count = %d\n", xmLHS, xmLHS->clientRefs ); + printf ( " original rhs ref = %.8X, count = %d\n", xmRHS, xmRHS->clientRefs ); + #endif + XMPMetaRef oldRef = this->xmpRef; // ! Decrement last so errors leave client object OK. + this->xmpRef = rhs.xmpRef; + WXMPMeta_IncrementRefCount_1 ( this->xmpRef ); // Increment the count on the new ref. + WXMPMeta_DecrementRefCount_1 ( oldRef ); // Decrement the count on the old ref. + #if XMP_TraceCTorDTor + printf ( " result lhs ref = %.8X, count = %d\n", xmLHS, xmLHS->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPMeta):: +TXMPMeta ( XMPMetaRef _xmpRef ) : xmpRef(_xmpRef) +{ + WXMPMeta_IncrementRefCount_1 ( this->xmpRef ); + #if XMP_TraceCTorDTor + XMPeek* xmPtr = (XMPeek*)this->xmpRef; + printf ( "Ref construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); + #endif +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPMeta):: +TXMPMeta ( XMP_StringPtr buffer, + XMP_StringLen xmpSize ) : xmpRef(DefaultCTor()) +{ + #if XMP_TraceCTorDTor + XMPeek* xmPtr = (XMPeek*)this->xmpRef; + printf ( "Parse construct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); + #endif + try { + this->ParseFromBuffer ( buffer, xmpSize ); + } catch ( ... ) { + WXMPMeta_DecrementRefCount_1 ( this->xmpRef ); + this->xmpRef = 0; + throw; + } +} + +// ------------------------------------------------------------------------------------------------- + +XMP_CTorDTorIntro(TXMPMeta):: +~TXMPMeta() throw() +{ + #if XMP_TraceCTorDTor + XMPeek* xmPtr = (XMPeek*)this->xmpRef; + printf ( "Destruct TXMPMeta @ %.8X, ref = %.8X, count = %d\n", this, xmPtr, xmPtr->clientRefs ); + #endif + WXMPMeta_DecrementRefCount_1 ( this->xmpRef ); + this->xmpRef = 0; + +} // ~TXMPMeta () + +// ================================================================================================= +// Global state functions +// ====================== + +XMP_MethodIntro(TXMPMeta,XMP_OptionBits):: +GetGlobalOptions() +{ + WrapCheckOptions ( options, zXMPMeta_GetGlobalOptions_1() ); + return options; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetGlobalOptions ( XMP_OptionBits options ) +{ + WrapCheckVoid ( zXMPMeta_SetGlobalOptions_1 ( options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,XMP_Status):: +DumpNamespaces ( XMP_TextOutputProc outProc, + void * refCon ) +{ + TOPW_Info info ( outProc, refCon ); + WrapCheckStatus ( status, zXMPMeta_DumpNamespaces_1 ( TextOutputProcWrapper, &info ) ); + return status; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,XMP_Status):: +DumpAliases ( XMP_TextOutputProc outProc, + void * refCon ) +{ + TOPW_Info info ( outProc, refCon ); + WrapCheckStatus ( status, zXMPMeta_DumpAliases_1 ( TextOutputProcWrapper, &info ) ); + return status; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +RegisterNamespace ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix ) +{ + WrapCheckVoid ( zXMPMeta_RegisterNamespace_1 ( namespaceURI, prefix ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetNamespacePrefix ( XMP_StringPtr namespaceURI, + tStringObj * namespacePrefix ) +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckBool ( found, zXMPMeta_GetNamespacePrefix_1 ( namespaceURI, &resultPtr, &resultLen ) ); + if ( found ) { + if ( namespacePrefix != 0 ) namespacePrefix->assign ( resultPtr, resultLen ); + WXMPMeta_Unlock_1 ( 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetNamespaceURI ( XMP_StringPtr namespacePrefix, + tStringObj * namespaceURI ) +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckBool ( found, zXMPMeta_GetNamespaceURI_1 ( namespacePrefix, &resultPtr, &resultLen ) ); + if ( found ) { + if ( namespaceURI != 0 ) namespaceURI->assign ( resultPtr, resultLen ); + WXMPMeta_Unlock_1 ( 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +DeleteNamespace ( XMP_StringPtr namespaceURI ) +{ + WrapCheckVoid ( zXMPMeta_DeleteNamespace_1 ( namespaceURI ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +RegisterAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm ) +{ + WrapCheckVoid ( zXMPMeta_RegisterAlias_1 ( aliasNS, aliasProp, actualNS, actualProp, arrayForm ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +ResolveAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + tStringObj * actualNS, + tStringObj * actualProp, + XMP_OptionBits * arrayForm ) +{ + XMP_StringPtr nsPtr = 0; + XMP_StringLen nsLen = 0; + XMP_StringPtr propPtr = 0; + XMP_StringLen propLen = 0; + WrapCheckBool ( found, zXMPMeta_ResolveAlias_1 ( aliasNS, aliasProp, &nsPtr, &nsLen, &propPtr, &propLen, arrayForm ) ); + if ( found ) { + if ( actualNS != 0 ) actualNS->assign ( nsPtr, nsLen ); + if ( actualProp != 0 ) actualProp->assign ( propPtr, propLen ); + WXMPMeta_Unlock_1 ( 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +DeleteAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp ) +{ + WrapCheckVoid ( zXMPMeta_DeleteAlias_1 ( aliasNS, aliasProp ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +RegisterStandardAliases ( XMP_StringPtr schemaNS ) +{ + WrapCheckVoid ( zXMPMeta_RegisterStandardAliases_1 ( schemaNS ) ); +} + +// ================================================================================================= +// Basic property manipulation functions +// ===================================== + +XMP_MethodIntro(TXMPMeta,bool):: +GetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + tStringObj * propValue, + XMP_OptionBits * options ) const +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckBool ( found, zXMPMeta_GetProperty_1 ( schemaNS, propName, &resultPtr, &resultLen, options ) ); + if ( found ) { + if ( propValue != 0 ) propValue->assign ( resultPtr, resultLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + tStringObj * itemValue, + XMP_OptionBits * options ) const +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckBool ( found, zXMPMeta_GetArrayItem_1 ( schemaNS, arrayName, itemIndex, &resultPtr, &resultLen, options ) ); + if ( found ) { + if ( itemValue != 0 ) itemValue->assign ( resultPtr, resultLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + tStringObj * fieldValue, + XMP_OptionBits * options ) const +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckBool ( found, zXMPMeta_GetStructField_1 ( schemaNS, structName, fieldNS, fieldName, &resultPtr, &resultLen, options ) ); + if ( found ) { + if ( fieldValue != 0 ) fieldValue->assign ( resultPtr, resultLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + tStringObj * qualValue, + XMP_OptionBits * options ) const +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckBool ( found, zXMPMeta_GetQualifier_1 ( schemaNS, propName, qualNS, qualName, &resultPtr, &resultLen, options ) ); + if ( found ) { + if ( qualValue != 0 ) qualValue->assign ( resultPtr, resultLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); + } + return found; +} //GetQualifier () + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr propValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetProperty_1 ( schemaNS, propName, propValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const tStringObj & propValue, + XMP_OptionBits options /* = 0 */ ) +{ + this->SetProperty ( schemaNS, propName, propValue.c_str(), options ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetArrayItem_1 ( schemaNS, arrayName, itemIndex, itemValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + const tStringObj & itemValue, + XMP_OptionBits options /* = 0 */ ) +{ + this->SetArrayItem ( schemaNS, arrayName, itemIndex, itemValue.c_str(), options ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +AppendArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + XMP_StringPtr itemValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_AppendArrayItem_1 ( schemaNS, arrayName, arrayOptions, itemValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +AppendArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + const tStringObj & itemValue, + XMP_OptionBits options /* = 0 */ ) +{ + this->AppendArrayItem ( schemaNS, arrayName, arrayOptions, itemValue.c_str(), options ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetStructField_1 ( schemaNS, structName, fieldNS, fieldName, fieldValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + const tStringObj & fieldValue, + XMP_OptionBits options /* = 0 */ ) +{ + this->SetStructField ( schemaNS, structName, fieldNS, fieldName, fieldValue.c_str(), options ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr qualValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetQualifier_1 ( schemaNS, propName, qualNS, qualName, qualValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + const tStringObj & qualValue, + XMP_OptionBits options /* = 0 */ ) +{ + this->SetQualifier ( schemaNS, propName, qualNS, qualName, qualValue.c_str(), options ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +DeleteProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ) +{ + WrapCheckVoid ( zXMPMeta_DeleteProperty_1 ( schemaNS, propName ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +DeleteArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ) +{ + WrapCheckVoid ( zXMPMeta_DeleteArrayItem_1 ( schemaNS, arrayName, itemIndex ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +DeleteStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ) +{ + WrapCheckVoid ( zXMPMeta_DeleteStructField_1 ( schemaNS, structName, fieldNS, fieldName ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +DeleteQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ) +{ + WrapCheckVoid ( zXMPMeta_DeleteQualifier_1 ( schemaNS, propName, qualNS, qualName ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +DoesPropertyExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ) const +{ + WrapCheckBool ( exists, zXMPMeta_DoesPropertyExist_1 ( schemaNS, propName ) ); + return exists; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +DoesArrayItemExist ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ) const +{ + WrapCheckBool ( exists, zXMPMeta_DoesArrayItemExist_1 ( schemaNS, arrayName, itemIndex ) ); + return exists; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +DoesStructFieldExist ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ) const +{ + WrapCheckBool ( exists, zXMPMeta_DoesStructFieldExist_1 ( schemaNS, structName, fieldNS, fieldName ) ); + return exists; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +DoesQualifierExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ) const +{ + WrapCheckBool ( exists, zXMPMeta_DoesQualifierExist_1 ( schemaNS, propName, qualNS, qualName ) ); + return exists; +} + +// ================================================================================================= +// Specialized Get and Set functions +// ================================= + +XMP_MethodIntro(TXMPMeta,bool):: +GetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + tStringObj * actualLang, + tStringObj * itemValue, + XMP_OptionBits * options ) const +{ + XMP_StringPtr langPtr = 0; + XMP_StringLen langLen = 0; + XMP_StringPtr itemPtr = 0; + XMP_StringLen itemLen = 0; + WrapCheckBool ( found, zXMPMeta_GetLocalizedText_1 ( schemaNS, altTextName, genericLang, specificLang, + &langPtr, &langLen, &itemPtr, &itemLen, options ) ); + if ( found ) { + if ( actualLang != 0 ) actualLang->assign ( langPtr, langLen ); + if ( itemValue != 0 ) itemValue->assign ( itemPtr, itemLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, kXMP_NoOptions ); + } + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr itemValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetLocalizedText_1 ( schemaNS, altTextName, genericLang, specificLang, itemValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + const tStringObj & itemValue, + XMP_OptionBits options /* = 0 */ ) +{ + this->SetLocalizedText ( schemaNS, altTextName, genericLang, specificLang, itemValue.c_str(), options ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool * propValue, + XMP_OptionBits * options ) const +{ + XMP_Bool binValue; + WrapCheckBool ( found, zXMPMeta_GetProperty_Bool_1 ( schemaNS, propName, &binValue, options ) ); + if ( found && (propValue != 0) ) *propValue = binValue; + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long * propValue, + XMP_OptionBits * options ) const +{ + XMP_Int32 abiValue; + WrapCheckBool ( found, zXMPMeta_GetProperty_Int_1 ( schemaNS, propName, &abiValue, options ) ); + if ( found && (propValue != 0) ) *propValue = abiValue; + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long long * propValue, + XMP_OptionBits * options ) const +{ + XMP_Int64 abiValue; + WrapCheckBool ( found, zXMPMeta_GetProperty_Int64_1 ( schemaNS, propName, &abiValue, options ) ); + if ( found && (propValue != 0) ) *propValue = abiValue; + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double * propValue, + XMP_OptionBits * options ) const +{ + WrapCheckBool ( found, zXMPMeta_GetProperty_Float_1 ( schemaNS, propName, propValue, options ) ); + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,bool):: +GetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_DateTime * propValue, + XMP_OptionBits * options ) const +{ + WrapCheckBool ( found, zXMPMeta_GetProperty_Date_1 ( schemaNS, propName, propValue, options ) ); + return found; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool propValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetProperty_Bool_1 ( schemaNS, propName, propValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long propValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetProperty_Int_1 ( schemaNS, propName, propValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + long long propValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetProperty_Int64_1 ( schemaNS, propName, propValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double propValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetProperty_Float_1 ( schemaNS, propName, propValue, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const XMP_DateTime & propValue, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_SetProperty_Date_1 ( schemaNS, propName, propValue, options ) ); +} + +// ================================================================================================= +// Miscellaneous Member Functions +// ============================== + +XMP_MethodIntro(TXMPMeta,XMPMetaRef):: +GetInternalRef() const +{ + return this->xmpRef; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +GetObjectName ( tStringObj * name ) const +{ + XMP_StringPtr namePtr = 0; + XMP_StringLen nameLen = 0; + WrapCheckVoid ( zXMPMeta_GetObjectName_1 ( &namePtr, &nameLen ) ); + if ( name != 0 ) name->assign ( namePtr, nameLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetObjectName ( XMP_StringPtr name ) +{ + WrapCheckVoid ( zXMPMeta_SetObjectName_1 ( name ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetObjectName ( tStringObj name ) +{ + this->SetObjectName ( name.c_str() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,XMP_OptionBits):: +GetObjectOptions() const +{ + WrapCheckOptions ( options, zXMPMeta_GetObjectOptions_1() ); + return options; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SetObjectOptions ( XMP_OptionBits options ) +{ + WrapCheckVoid ( zXMPMeta_SetObjectOptions_1 ( options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +Sort() +{ + WrapCheckVoid ( zXMPMeta_Sort_1() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +Erase() +{ + WrapCheckVoid ( zXMPMeta_Erase_1() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,TXMPMeta):: +Clone ( XMP_OptionBits options ) const +{ + WrapCheckMetaRef ( cloneRef, zXMPMeta_Clone_1 ( options ) ); + return TXMPMeta ( cloneRef ); // Ref construct will increment the clientRefs. +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,XMP_Index):: +CountArrayItems ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName ) const +{ + WrapCheckIndex ( count, zXMPMeta_CountArrayItems_1 ( schemaNS, arrayName ) ); + return count; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,XMP_Status):: +DumpObject ( XMP_TextOutputProc outProc, + void * refCon ) const +{ + TOPW_Info info ( outProc, refCon ); + WrapCheckStatus ( status, zXMPMeta_DumpObject_1 ( TextOutputProcWrapper, &info ) ); + return status; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +ParseFromBuffer ( XMP_StringPtr buffer, + XMP_StringLen bufferSize, + XMP_OptionBits options /* = 0 */ ) +{ + WrapCheckVoid ( zXMPMeta_ParseFromBuffer_1 ( buffer, bufferSize, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SerializeToBuffer ( tStringObj * pktString, + XMP_OptionBits options, + XMP_StringLen padding, + XMP_StringPtr newline, + XMP_StringPtr indent, + XMP_Index baseIndent /* = 0 */ ) const +{ + XMP_StringPtr resultPtr = 0; + XMP_StringLen resultLen = 0; + WrapCheckVoid ( zXMPMeta_SerializeToBuffer_1 ( &resultPtr, &resultLen, options, padding, newline, indent, baseIndent ) ); + if ( pktString != 0 ) pktString->assign ( resultPtr, resultLen ); + WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPMeta,void):: +SerializeToBuffer ( tStringObj * pktString, + XMP_OptionBits options /* = 0 */, + XMP_StringLen padding /* = 0 */ ) const +{ + this->SerializeToBuffer ( pktString, options, padding, "", "", 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPUtils.incl_cpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPUtils.incl_cpp new file mode 100644 index 0000000..6898be7 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/TXMPUtils.incl_cpp @@ -0,0 +1,493 @@ +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2008 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. +// ================================================================================================= + +// ================================================================================================ +/// \file TXMPUtils.incl_cpp +/// \brief The implementation of the TXMPUtils template class. + +#include "XMPSDK.hpp" +#include "client-glue/WXMP_Common.hpp" +#include "client-glue/WXMPUtils.hpp" + +// ================================================================================================= +// Implementation Guidelines +// ========================= +// +// The implementations of the template functions are very stylized. ... +// +// ================================================================================================= + +XMP_MethodIntro(TXMPUtils,void):: +ComposeArrayItemPath ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + tStringObj * fullPath ) +{ + XMP_StringPtr pathPtr = 0; + XMP_StringLen pathLen = 0; + WrapCheckVoid ( zXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, &pathPtr, &pathLen ) ); + if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ComposeStructFieldPath ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + tStringObj * fullPath ) +{ + XMP_StringPtr pathPtr = 0; + XMP_StringLen pathLen = 0; + WrapCheckVoid ( zXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, &pathPtr, &pathLen ) ); + if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ComposeQualifierPath ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + tStringObj * fullPath ) +{ + XMP_StringPtr pathPtr = 0; + XMP_StringLen pathLen = 0; + WrapCheckVoid ( zXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, &pathPtr, &pathLen ) ); + if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ComposeLangSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr langName, + tStringObj * fullPath ) +{ + XMP_StringPtr pathPtr = 0; + XMP_StringLen pathLen = 0; + WrapCheckVoid ( zXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, &pathPtr, &pathLen ) ); + if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ComposeLangSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + const tStringObj & langName, + tStringObj * fullPath ) +{ + TXMPUtils::ComposeLangSelector ( schemaNS, arrayName, langName.c_str(), fullPath ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ComposeFieldSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + tStringObj * fullPath ) +{ + XMP_StringPtr pathPtr = 0; + XMP_StringLen pathLen = 0; + WrapCheckVoid ( zXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, + &pathPtr, &pathLen ) ); + if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ComposeFieldSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + const tStringObj & fieldValue, + tStringObj * fullPath ) +{ + TXMPUtils::ComposeFieldSelector ( schemaNS, arrayName, fieldNS, fieldName, fieldValue.c_str(), fullPath ); +} + +// ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertFromBool ( bool binValue, + tStringObj * strValue ) +{ + XMP_StringPtr strPtr = 0; + XMP_StringLen strLen = 0; + WrapCheckVoid ( zXMPUtils_ConvertFromBool_1 ( binValue, &strPtr, &strLen ) ); + if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertFromInt ( long binValue, + XMP_StringPtr format, + tStringObj * strValue ) +{ + XMP_StringPtr strPtr = 0; + XMP_StringLen strLen = 0; + WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( binValue, format, &strPtr, &strLen ) ); + if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertFromInt64 ( long long binValue, + XMP_StringPtr format, + tStringObj * strValue ) +{ + XMP_StringPtr strPtr = 0; + XMP_StringLen strLen = 0; + WrapCheckVoid ( zXMPUtils_ConvertFromInt64_1 ( binValue, format, &strPtr, &strLen ) ); + if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertFromFloat ( double binValue, + XMP_StringPtr format, + tStringObj * strValue ) +{ + XMP_StringPtr strPtr = 0; + XMP_StringLen strLen = 0; + WrapCheckVoid ( zXMPUtils_ConvertFromFloat_1 ( binValue, format, &strPtr, &strLen ) ); + if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertFromDate ( const XMP_DateTime & binValue, + tStringObj * strValue ) +{ + XMP_StringPtr strPtr = 0; + XMP_StringLen strLen = 0; + WrapCheckVoid ( zXMPUtils_ConvertFromDate_1 ( binValue, &strPtr, &strLen ) ); + if ( strValue != 0 ) strValue->assign ( strPtr, strLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,bool):: +ConvertToBool ( XMP_StringPtr strValue ) +{ + WrapCheckBool ( value, zXMPUtils_ConvertToBool_1 ( strValue ) ); + return value; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,bool):: +ConvertToBool ( const tStringObj & strValue ) +{ + return TXMPUtils::ConvertToBool ( strValue.c_str() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,long):: +ConvertToInt ( XMP_StringPtr strValue ) +{ + WrapCheckInt32 ( value, zXMPUtils_ConvertToInt_1 ( strValue ) ); + return value; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,long):: +ConvertToInt ( const tStringObj & strValue ) +{ + return TXMPUtils::ConvertToInt ( strValue.c_str() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,long long):: +ConvertToInt64 ( XMP_StringPtr strValue ) +{ + WrapCheckInt64 ( value, zXMPUtils_ConvertToInt64_1 ( strValue ) ); + return value; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,long long):: +ConvertToInt64 ( const tStringObj & strValue ) +{ + return TXMPUtils::ConvertToInt64 ( strValue.c_str() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,double):: +ConvertToFloat ( XMP_StringPtr strValue ) +{ + WrapCheckFloat ( value, zXMPUtils_ConvertToFloat_1 ( strValue ) ); + return value; +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,double):: +ConvertToFloat ( const tStringObj & strValue ) +{ + return TXMPUtils::ConvertToFloat ( strValue.c_str() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertToDate ( XMP_StringPtr strValue, + XMP_DateTime * binValue ) +{ + WrapCheckVoid ( zXMPUtils_ConvertToDate_1 ( strValue, binValue ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertToDate ( const tStringObj & strValue, + XMP_DateTime * binValue ) +{ + TXMPUtils::ConvertToDate ( strValue.c_str(), binValue ); +} + +// ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +CurrentDateTime ( XMP_DateTime * time ) +{ + WrapCheckVoid ( zXMPUtils_CurrentDateTime_1 ( time ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +SetTimeZone ( XMP_DateTime * time ) +{ + WrapCheckVoid ( zXMPUtils_SetTimeZone_1 ( time ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertToUTCTime ( XMP_DateTime * time ) +{ + WrapCheckVoid ( zXMPUtils_ConvertToUTCTime_1 ( time ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +ConvertToLocalTime ( XMP_DateTime * time ) +{ + WrapCheckVoid ( zXMPUtils_ConvertToLocalTime_1 ( time ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,int):: +CompareDateTime ( const XMP_DateTime & left, + const XMP_DateTime & right ) +{ + WrapCheckInt32 ( result, zXMPUtils_CompareDateTime_1 ( left, right ) ); + return result; +} + +// ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +EncodeToBase64 ( XMP_StringPtr rawStr, + XMP_StringLen rawLen, + tStringObj * encodedStr ) +{ + XMP_StringPtr encPtr = 0; + XMP_StringLen encLen = 0; + WrapCheckVoid ( zXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, &encPtr, &encLen ) ); + if ( encodedStr != 0 ) encodedStr->assign ( encPtr, encLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +EncodeToBase64 ( const tStringObj & rawStr, + tStringObj * encodedStr ) +{ + TXMPUtils::EncodeToBase64 ( rawStr.c_str(), (XMP_StringLen)rawStr.size(), encodedStr ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +DecodeFromBase64 ( XMP_StringPtr encodedStr, + XMP_StringLen encodedLen, + tStringObj * rawStr ) +{ + XMP_StringPtr rawPtr = 0; + XMP_StringLen rawLen = 0; + WrapCheckVoid ( zXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, &rawPtr, &rawLen ) ); + if ( rawStr != 0 ) rawStr->assign ( rawPtr, rawLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +DecodeFromBase64 ( const tStringObj & encodedStr, + tStringObj * rawStr ) +{ + TXMPUtils::DecodeFromBase64 ( encodedStr.c_str(), (XMP_StringLen)encodedStr.size(), rawStr ); +} + +// ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +PackageForJPEG ( const TXMPMeta & xmpObj, + tStringObj * standardXMP, + tStringObj * extendedXMP, + tStringObj * extendedDigest ) +{ + XMP_StringPtr stdStr = 0; + XMP_StringLen stdLen = 0; + XMP_StringPtr extStr = 0; + XMP_StringLen extLen = 0; + XMP_StringPtr digestStr = 0; + XMP_StringLen digestLen = 0; + WrapCheckVoid ( zXMPUtils_PackageForJPEG_1 ( xmpObj.GetInternalRef(), + &stdStr, &stdLen, &extStr, &extLen, &digestStr, &digestLen ) ); + if ( standardXMP != 0 ) standardXMP->assign ( stdStr, stdLen ); + if ( extendedXMP != 0 ) extendedXMP->assign ( extStr, extLen ); + if ( extendedDigest != 0 ) extendedDigest->assign ( digestStr, digestLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +MergeFromJPEG ( TXMPMeta * fullXMP, + const TXMPMeta & extendedXMP ) +{ + WrapCheckVoid ( zXMPUtils_MergeFromJPEG_1 ( fullXMP->GetInternalRef(), extendedXMP.GetInternalRef() ) ); +} + +// ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +CatenateArrayItems ( const TXMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr separator, + XMP_StringPtr quotes, + XMP_OptionBits options, + tStringObj * catedStr ) +{ + XMP_StringPtr catedPtr = 0; + XMP_StringLen catedLen = 0; + WrapCheckVoid ( zXMPUtils_CatenateArrayItems_1 ( xmpObj.GetInternalRef(), schemaNS, arrayName, + separator, quotes, options, &catedPtr, &catedLen ) ); + if ( catedStr != 0 ) catedStr->assign ( catedPtr, catedLen ); + WXMPUtils_Unlock_1 ( 0 ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +SeparateArrayItems ( TXMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + XMP_StringPtr catedStr ) +{ + if ( xmpObj == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); + WrapCheckVoid ( zXMPUtils_SeparateArrayItems_1 ( xmpObj->GetInternalRef(), schemaNS, arrayName, options, catedStr ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +SeparateArrayItems ( TXMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + const tStringObj & catedStr ) +{ + TXMPUtils::SeparateArrayItems ( xmpObj, schemaNS, arrayName, options, catedStr.c_str() ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +RemoveProperties ( TXMPMeta * xmpObj, + XMP_StringPtr schemaNS /* = 0 */, + XMP_StringPtr propName /* = 0 */, + XMP_OptionBits options /* = 0 */ ) +{ + if ( xmpObj == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); + WrapCheckVoid ( zXMPUtils_RemoveProperties_1 ( xmpObj->GetInternalRef(), schemaNS, propName, options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +AppendProperties ( const TXMPMeta & source, + TXMPMeta * dest, + XMP_OptionBits options /* = 0 */ ) +{ + if ( dest == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); + WrapCheckVoid ( zXMPUtils_AppendProperties_1 ( source.GetInternalRef(), dest->GetInternalRef(), options ) ); +} + +// ------------------------------------------------------------------------------------------------- + +XMP_MethodIntro(TXMPUtils,void):: +DuplicateSubtree ( const TXMPMeta & source, + TXMPMeta * dest, + XMP_StringPtr sourceNS, + XMP_StringPtr sourceRoot, + XMP_StringPtr destNS /*= 0 */, + XMP_StringPtr destRoot /* = 0 */, + XMP_OptionBits options /* = 0 */ ) +{ + if ( dest == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" ); + WrapCheckVoid ( zXMPUtils_DuplicateSubtree_1 ( source.GetInternalRef(), dest->GetInternalRef(), + sourceNS, sourceRoot, destNS, destRoot, options ) ); +} + +// ================================================================================================= + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPFiles.hpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPFiles.hpp new file mode 100644 index 0000000..cdc510c --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPFiles.hpp @@ -0,0 +1,167 @@ +#ifndef __WXMPFiles_hpp__ +#define __WXMPFiles_hpp__ 1 + +// ================================================================================================= +// ADOBE SYSTEMS INCORPORATED +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "client-glue/WXMP_Common.hpp" + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= +/// \file WXMPFiles.h +/// \brief High level support to access metadata in files of interest to Adobe applications. +/// +/// This header ... +/// +// ================================================================================================= + +// ================================================================================================= + +#define WrapCheckXMPFilesRef(result,WCallProto) \ + WXMP_Result wResult; \ + WCallProto; \ + PropagateException ( wResult ); \ + XMPFilesRef result = XMPFilesRef(wResult.ptrResult) + +// ================================================================================================= + +#define zXMPFiles_GetVersionInfo_1(versionInfo) \ + WXMPFiles_GetVersionInfo_1 ( versionInfo /* no wResult */ ) + +#define zXMPFiles_Initialize_1() \ + WXMPFiles_Initialize_1 ( &wResult ) + +#define zXMPFiles_Initialize_2(options) \ + WXMPFiles_Initialize_2 ( options, &wResult ) + +#define zXMPFiles_Terminate_1() \ + WXMPFiles_Terminate_1 ( /* no wResult */ ) + +#define zXMPFiles_CTor_1() \ + WXMPFiles_CTor_1 ( &wResult ) + +#define zXMPFiles_GetFormatInfo_1(format,flags) \ + WXMPFiles_GetFormatInfo_1 ( format, flags, &wResult ) + +#define zXMPFiles_CheckFileFormat_1(filePath) \ + WXMPFiles_CheckFileFormat_1 ( filePath, &wResult ) + +#define zXMPFiles_CheckPackageFormat_1(folderPath) \ + WXMPFiles_CheckPackageFormat_1 ( folderPath, &wResult ) + +#define zXMPFiles_OpenFile_1(filePath,format,openFlags) \ + WXMPFiles_OpenFile_1 ( this->xmpFilesRef, filePath, format, openFlags, &wResult ) + +#define zXMPFiles_CloseFile_1(closeFlags) \ + WXMPFiles_CloseFile_1 ( this->xmpFilesRef, closeFlags, &wResult ) + +#define zXMPFiles_GetFileInfo_1(filePath,filePathLen,openFlags,format,handlerFlags) \ + WXMPFiles_GetFileInfo_1 ( this->xmpFilesRef, filePath, filePathLen, openFlags, format, handlerFlags, &wResult ) + +#define zXMPFiles_SetAbortProc_1(abortProc,abortArg) \ + WXMPFiles_SetAbortProc_1 ( this->xmpFilesRef, abortProc, abortArg, &wResult ) + +#define zXMPFiles_GetXMP_1(xmpRef,xmpPacket,xmpPacketLen,packetInfo) \ + WXMPFiles_GetXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, packetInfo, &wResult ) + +#define zXMPFiles_GetThumbnail_1(tnailInfo) \ + WXMPFiles_GetThumbnail_1 ( this->xmpFilesRef, tnailInfo, &wResult ) + +#define zXMPFiles_PutXMP_1(xmpRef,xmpPacket,xmpPacketLen) \ + WXMPFiles_PutXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, &wResult ) + +#define zXMPFiles_CanPutXMP_1(xmpRef,xmpPacket,xmpPacketLen) \ + WXMPFiles_CanPutXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, &wResult ) + +// ================================================================================================= + +extern void WXMPFiles_GetVersionInfo_1 ( XMP_VersionInfo * versionInfo ); + +extern void WXMPFiles_Initialize_1 ( WXMP_Result * result ); + +extern void WXMPFiles_Initialize_2 ( XMP_OptionBits options, WXMP_Result * result ); + +extern void WXMPFiles_Terminate_1(); + +extern void WXMPFiles_CTor_1 ( WXMP_Result * result ); + +extern void WXMPFiles_UnlockLib_1(); + +extern void WXMPFiles_UnlockObj_1 ( XMPFilesRef xmpFilesRef ); + +extern void WXMPFiles_IncrementRefCount_1 ( XMPFilesRef xmpFilesRef ); + +extern void WXMPFiles_DecrementRefCount_1 ( XMPFilesRef xmpFilesRef ); + +extern void WXMPFiles_GetFormatInfo_1 ( XMP_FileFormat format, + XMP_OptionBits * flags, // ! Can be null. + WXMP_Result * result ); + +extern void WXMPFiles_CheckFileFormat_1 ( XMP_StringPtr filePath, + WXMP_Result * result ); + +extern void WXMPFiles_CheckPackageFormat_1 ( XMP_StringPtr folderPath, + WXMP_Result * result ); + +extern void WXMPFiles_OpenFile_1 ( XMPFilesRef xmpFilesRef, + XMP_StringPtr filePath, + XMP_FileFormat format, + XMP_OptionBits openFlags, + WXMP_Result * result ); + +extern void WXMPFiles_CloseFile_1 ( XMPFilesRef xmpFilesRef, + XMP_OptionBits closeFlags, + WXMP_Result * result ); + +extern void WXMPFiles_GetFileInfo_1 ( XMPFilesRef xmpFilesRef, + XMP_StringPtr * filePath, + XMP_StringLen * filePathLen, + XMP_OptionBits * openFlags, // ! Can be null. + XMP_FileFormat * format, // ! Can be null. + XMP_OptionBits * handlerFlags, // ! Can be null. + WXMP_Result * result ); + +extern void WXMPFiles_SetAbortProc_1 ( XMPFilesRef xmpFilesRef, + XMP_AbortProc abortProc, + void * abortArg, + WXMP_Result * result ); + +extern void WXMPFiles_GetXMP_1 ( XMPFilesRef xmpFilesRef, + XMPMetaRef xmpRef, // ! Can be null. + XMP_StringPtr * xmpPacket, + XMP_StringLen * xmpPacketLen, + XMP_PacketInfo * packetInfo, // ! Can be null. + WXMP_Result * result ); + +extern void WXMPFiles_GetThumbnail_1 ( XMPFilesRef xmpFilesRef, + XMP_ThumbnailInfo * tnailInfo, // ! Can be null. + WXMP_Result * result ); + +extern void WXMPFiles_PutXMP_1 ( XMPFilesRef xmpFilesRef, + XMPMetaRef xmpRef, // ! Only one of the XMP object or packet are passed. + XMP_StringPtr xmpPacket, + XMP_StringLen xmpPacketLen, + WXMP_Result * result ); + +extern void WXMPFiles_CanPutXMP_1 ( XMPFilesRef xmpFilesRef, + XMPMetaRef xmpRef, // ! Only one of the XMP object or packet are passed. + XMP_StringPtr xmpPacket, + XMP_StringLen xmpPacketLen, + WXMP_Result * result ); + +// ================================================================================================= + +#if __cplusplus +} +#endif + +#endif // __WXMPFiles_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPIterator.hpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPIterator.hpp new file mode 100644 index 0000000..c5e9e26 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPIterator.hpp @@ -0,0 +1,83 @@ +#if ! __WXMPIterator_hpp__ +#define __WXMPIterator_hpp__ 1 + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "client-glue/WXMP_Common.hpp" + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= + +#define zXMPIterator_PropCTor_1(xmpRef,schemaNS,propName,options) \ + WXMPIterator_PropCTor_1 ( xmpRef, schemaNS, propName, options, &wResult ); + +#define zXMPIterator_TableCTor_1(schemaNS,propName,options) \ + WXMPIterator_TableCTor_1 ( schemaNS, propName, options, &wResult ); + + +#define zXMPIterator_Next_1(schemaNS,nsSize,propPath,pathSize,propValue,valueSize,options) \ + WXMPIterator_Next_1 ( this->iterRef, schemaNS, nsSize, propPath, pathSize, propValue, valueSize, options, &wResult ); + +#define zXMPIterator_Skip_1(options) \ + WXMPIterator_Skip_1 ( this->iterRef, options, &wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef ); + +extern void +WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef ); + +extern void +WXMPIterator_Unlock_1 ( XMP_OptionBits options ); + +extern void +WXMPIterator_Next_1 ( XMPIteratorRef iterRef, + XMP_StringPtr * schemaNS, + XMP_StringLen * nsSize, + XMP_StringPtr * propPath, + XMP_StringLen * pathSize, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ); + +extern void +WXMPIterator_Skip_1 ( XMPIteratorRef iterRef, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPUtils_UnlockIter_1 ( XMPIteratorRef iterRef, + XMP_OptionBits options ); + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif + +#endif // __WXMPIterator_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPMeta.hpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPMeta.hpp new file mode 100644 index 0000000..ca94374 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPMeta.hpp @@ -0,0 +1,622 @@ +#if ! __WXMPMeta_hpp__ +#define __WXMPMeta_hpp__ 1 + +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "client-glue/WXMP_Common.hpp" + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= +#define zXMPMeta_GetVersionInfo_1(info) \ + WXMPMeta_GetVersionInfo_1 ( info /* no wResult */ ) + +#define zXMPMeta_Initialize_1() \ + WXMPMeta_Initialize_1 ( &wResult ) +#define zXMPMeta_Terminate_1() \ + WXMPMeta_Terminate_1 ( /* no wResult */ ) + +#define zXMPMeta_CTor_1() \ + WXMPMeta_CTor_1 ( &wResult ) + +#define zXMPMeta_GetGlobalOptions_1() \ + WXMPMeta_GetGlobalOptions_1 ( &wResult ) + +#define zXMPMeta_SetGlobalOptions_1(options) \ + WXMPMeta_SetGlobalOptions_1 ( options, &wResult ) + +#define zXMPMeta_DumpNamespaces_1(outProc,refCon) \ + WXMPMeta_DumpNamespaces_1 ( outProc, refCon, &wResult ) + +#define zXMPMeta_DumpAliases_1(outProc,refCon) \ + WXMPMeta_DumpAliases_1 ( outProc, refCon, &wResult ) + +#define zXMPMeta_RegisterNamespace_1(namespaceURI,prefix) \ + WXMPMeta_RegisterNamespace_1 ( namespaceURI, prefix, &wResult ) + +#define zXMPMeta_GetNamespacePrefix_1(namespaceURI,namespacePrefix,prefixSize) \ + WXMPMeta_GetNamespacePrefix_1 ( namespaceURI, namespacePrefix, prefixSize, &wResult ) + +#define zXMPMeta_GetNamespaceURI_1(namespacePrefix,namespaceURI,uriSize) \ + WXMPMeta_GetNamespaceURI_1 ( namespacePrefix, namespaceURI, uriSize, &wResult ) + +#define zXMPMeta_DeleteNamespace_1(namespaceURI) \ + WXMPMeta_DeleteNamespace_1 ( namespaceURI, &wResult ) + +#define zXMPMeta_RegisterAlias_1(aliasNS,aliasProp,actualNS,actualProp,arrayForm) \ + WXMPMeta_RegisterAlias_1 ( aliasNS, aliasProp, actualNS, actualProp, arrayForm, &wResult ) + +#define zXMPMeta_ResolveAlias_1(aliasNS,aliasProp,actualNS,nsSize,actualProp,propSize,arrayForm) \ + WXMPMeta_ResolveAlias_1 ( aliasNS, aliasProp, actualNS, nsSize, actualProp, propSize, arrayForm, &wResult ) + +#define zXMPMeta_DeleteAlias_1(aliasNS,aliasProp) \ + WXMPMeta_DeleteAlias_1 ( aliasNS, aliasProp, &wResult ) + +#define zXMPMeta_RegisterStandardAliases_1(schemaNS) \ + WXMPMeta_RegisterStandardAliases_1 ( schemaNS, &wResult ) + +#define zXMPMeta_GetProperty_1(schemaNS,propName,propValue,valueSize,options) \ + WXMPMeta_GetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, valueSize, options, &wResult ) + +#define zXMPMeta_GetArrayItem_1(schemaNS,arrayName,itemIndex,itemValue,valueSize,options) \ + WXMPMeta_GetArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, itemValue, valueSize, options, &wResult ) + +#define zXMPMeta_GetStructField_1(schemaNS,structName,fieldNS,fieldName,fieldValue,valueSize,options) \ + WXMPMeta_GetStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, fieldValue, valueSize, options, &wResult ) + +#define zXMPMeta_GetQualifier_1(schemaNS,propName,qualNS,qualName,qualValue,valueSize,options) \ + WXMPMeta_GetQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, qualValue, valueSize, options, &wResult ) + +#define zXMPMeta_SetProperty_1(schemaNS,propName,propValue,options) \ + WXMPMeta_SetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_SetArrayItem_1(schemaNS,arrayName,itemIndex,itemValue,options) \ + WXMPMeta_SetArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, itemValue, options, &wResult ) + +#define zXMPMeta_AppendArrayItem_1(schemaNS,arrayName,arrayOptions,itemValue,options) \ + WXMPMeta_AppendArrayItem_1 ( this->xmpRef, schemaNS, arrayName, arrayOptions, itemValue, options, &wResult ) + +#define zXMPMeta_SetStructField_1(schemaNS,structName,fieldNS,fieldName,fieldValue,options) \ + WXMPMeta_SetStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, fieldValue, options, &wResult ) + +#define zXMPMeta_SetQualifier_1(schemaNS,propName,qualNS,qualName,qualValue,options) \ + WXMPMeta_SetQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, qualValue, options, &wResult ) + +#define zXMPMeta_DeleteProperty_1(schemaNS,propName) \ + WXMPMeta_DeleteProperty_1 ( this->xmpRef, schemaNS, propName, &wResult ) + +#define zXMPMeta_DeleteArrayItem_1(schemaNS,arrayName,itemIndex) \ + WXMPMeta_DeleteArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, &wResult ) + +#define zXMPMeta_DeleteStructField_1(schemaNS,structName,fieldNS,fieldName) \ + WXMPMeta_DeleteStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, &wResult ) + +#define zXMPMeta_DeleteQualifier_1(schemaNS,propName,qualNS,qualName) \ + WXMPMeta_DeleteQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, &wResult ) + +#define zXMPMeta_DoesPropertyExist_1(schemaNS,propName) \ + WXMPMeta_DoesPropertyExist_1 ( this->xmpRef, schemaNS, propName, &wResult ) + +#define zXMPMeta_DoesArrayItemExist_1(schemaNS,arrayName,itemIndex) \ + WXMPMeta_DoesArrayItemExist_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, &wResult ) + +#define zXMPMeta_DoesStructFieldExist_1(schemaNS,structName,fieldNS,fieldName) \ + WXMPMeta_DoesStructFieldExist_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, &wResult ) + +#define zXMPMeta_DoesQualifierExist_1(schemaNS,propName,qualNS,qualName) \ + WXMPMeta_DoesQualifierExist_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, &wResult ) + +#define zXMPMeta_GetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,actualLang,langSize,itemValue,valueSize,options) \ + WXMPMeta_GetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, actualLang, langSize, itemValue, valueSize, options, &wResult ) + +#define zXMPMeta_SetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,itemValue,options) \ + WXMPMeta_SetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, itemValue, options, &wResult ) + +#define zXMPMeta_GetProperty_Bool_1(schemaNS,propName,propValue,options) \ + WXMPMeta_GetProperty_Bool_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_GetProperty_Int_1(schemaNS,propName,propValue,options) \ + WXMPMeta_GetProperty_Int_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_GetProperty_Int64_1(schemaNS,propName,propValue,options) \ + WXMPMeta_GetProperty_Int64_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_GetProperty_Float_1(schemaNS,propName,propValue,options) \ + WXMPMeta_GetProperty_Float_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_GetProperty_Date_1(schemaNS,propName,propValue,options) \ + WXMPMeta_GetProperty_Date_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_SetProperty_Bool_1(schemaNS,propName,propValue,options) \ + WXMPMeta_SetProperty_Bool_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_SetProperty_Int_1(schemaNS,propName,propValue,options) \ + WXMPMeta_SetProperty_Int_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_SetProperty_Int64_1(schemaNS,propName,propValue,options) \ + WXMPMeta_SetProperty_Int64_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_SetProperty_Float_1(schemaNS,propName,propValue,options) \ + WXMPMeta_SetProperty_Float_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_SetProperty_Date_1(schemaNS,propName,propValue,options) \ + WXMPMeta_SetProperty_Date_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult ) + +#define zXMPMeta_GetObjectName_1(namePtr,nameLen) \ + WXMPMeta_GetObjectName_1 ( this->xmpRef, namePtr, nameLen, &wResult ) + +#define zXMPMeta_SetObjectName_1(name) \ + WXMPMeta_SetObjectName_1 ( this->xmpRef, name, &wResult ) + +#define zXMPMeta_GetObjectOptions_1() \ + WXMPMeta_GetObjectOptions_1 ( this->xmpRef, &wResult ) + +#define zXMPMeta_SetObjectOptions_1(options) \ + WXMPMeta_SetObjectOptions_1 ( this->xmpRef, options, &wResult ) + +#define zXMPMeta_Sort_1() \ + WXMPMeta_Sort_1 ( this->xmpRef, &wResult ) + +#define zXMPMeta_Erase_1() \ + WXMPMeta_Erase_1 ( this->xmpRef, &wResult ) + +#define zXMPMeta_Clone_1(options) \ + WXMPMeta_Clone_1 ( this->xmpRef, options, &wResult ) + +#define zXMPMeta_CountArrayItems_1(schemaNS,arrayName) \ + WXMPMeta_CountArrayItems_1 ( this->xmpRef, schemaNS, arrayName, &wResult ) + +#define zXMPMeta_DumpObject_1(outProc,refCon) \ + WXMPMeta_DumpObject_1 ( this->xmpRef, outProc, refCon, &wResult ) + +#define zXMPMeta_ParseFromBuffer_1(buffer,bufferSize,options) \ + WXMPMeta_ParseFromBuffer_1 ( this->xmpRef, buffer, bufferSize, options, &wResult ) + +#define zXMPMeta_SerializeToBuffer_1(pktString,pktSize,options,padding,newline,indent,baseIndent) \ + WXMPMeta_SerializeToBuffer_1 ( this->xmpRef, pktString, pktSize, options, padding, newline, indent, baseIndent, &wResult ) + +// ================================================================================================= + +extern void +WXMPMeta_GetVersionInfo_1 ( XMP_VersionInfo * info ); + +extern void +WXMPMeta_Initialize_1 ( WXMP_Result * wResult ); +extern void +WXMPMeta_Terminate_1(); + +extern void +WXMPMeta_Unlock_1 ( XMP_OptionBits options ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_CTor_1 ( WXMP_Result * wResult ); + +extern void +WXMPMeta_IncrementRefCount_1 ( XMPMetaRef xmpRef ); + +extern void +WXMPMeta_DecrementRefCount_1 ( XMPMetaRef xmpRef ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_GetGlobalOptions_1 ( WXMP_Result * wResult ); + +extern void +WXMPMeta_SetGlobalOptions_1 ( XMP_OptionBits options, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_DumpNamespaces_1 ( XMP_TextOutputProc outProc, + void * refCon, + WXMP_Result * wResult ); + +extern void +WXMPMeta_DumpAliases_1 ( XMP_TextOutputProc outProc, + void * refCon, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_RegisterNamespace_1 ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix, + WXMP_Result * wResult ); + +extern void +WXMPMeta_GetNamespacePrefix_1 ( XMP_StringPtr namespaceURI, + XMP_StringPtr * namespacePrefix, + XMP_StringLen * prefixSize, + WXMP_Result * wResult ); + +extern void +WXMPMeta_GetNamespaceURI_1 ( XMP_StringPtr namespacePrefix, + XMP_StringPtr * namespaceURI, + XMP_StringLen * uriSize, + WXMP_Result * wResult ); + +extern void +WXMPMeta_DeleteNamespace_1 ( XMP_StringPtr namespaceURI, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_RegisterAlias_1 ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm, + WXMP_Result * wResult ); + +extern void +WXMPMeta_ResolveAlias_1 ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr * actualNS, + XMP_StringLen * nsSize, + XMP_StringPtr * actualProp, + XMP_StringLen * propSize, + XMP_OptionBits * arrayForm, + WXMP_Result * wResult ); + +extern void +WXMPMeta_DeleteAlias_1 ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + WXMP_Result * wResult ); + +extern void +WXMPMeta_RegisterStandardAliases_1 ( XMP_StringPtr schemaNS, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_UnlockObject_1 ( XMPMetaRef xmpRef, + XMP_OptionBits options ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_GetProperty_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetStructField_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fieldValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetQualifier_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * qualValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr propValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + XMP_StringPtr itemValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr qualValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_DeleteProperty_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + WXMP_Result * wResult ); + +extern void +WXMPMeta_DeleteArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + WXMP_Result * wResult ); + +extern void +WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + WXMP_Result * wResult ); + +extern void +WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_DoesPropertyExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_DoesArrayItemExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + WXMP_Result * wResult ) /* const */ ; + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_GetLocalizedText_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr * actualLang, + XMP_StringLen * langSize, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr itemValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Bool * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_DateTime * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Bool propValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 propValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 propValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double propValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const XMP_DateTime & propValue, + XMP_OptionBits options, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_GetObjectName_1 ( XMPMetaRef xmpRef, + XMP_StringPtr * namePtr, + XMP_StringLen * nameLen, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_SetObjectName_1 ( XMPMetaRef xmpRef, + XMP_StringPtr name, + WXMP_Result * wResult ); + +extern void +WXMPMeta_GetObjectOptions_1 ( XMPMetaRef xmpRef, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_SetObjectOptions_1 ( XMPMetaRef xmpRef, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_Sort_1 ( XMPMetaRef xmpRef, + WXMP_Result * wResult ); + +extern void +WXMPMeta_Erase_1 ( XMPMetaRef xmpRef, + WXMP_Result * wResult ); + +extern void +WXMPMeta_Clone_1 ( XMPMetaRef xmpRef, + XMP_OptionBits options, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_CountArrayItems_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + WXMP_Result * wResult ) /* const */ ; + +extern void +WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef, + XMP_TextOutputProc outProc, + void * refCon, + WXMP_Result * wResult ) /* const */ ; + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPMeta_ParseFromBuffer_1 ( XMPMetaRef xmpRef, + XMP_StringPtr buffer, + XMP_StringLen bufferSize, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPMeta_SerializeToBuffer_1 ( XMPMetaRef xmpRef, + XMP_StringPtr * pktString, + XMP_StringLen * pktSize, + XMP_OptionBits options, + XMP_StringLen padding, + XMP_StringPtr newline, + XMP_StringPtr indent, + XMP_Index baseIndent, + WXMP_Result * wResult ) /* const */ ; + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif + +#endif // __WXMPMeta_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPUtils.hpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPUtils.hpp new file mode 100644 index 0000000..55890fc --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMPUtils.hpp @@ -0,0 +1,322 @@ +#if ! __WXMPUtils_hpp__ +#define __WXMPUtils_hpp__ 1 + +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "client-glue/WXMP_Common.hpp" + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= + +#define zXMPUtils_ComposeArrayItemPath_1(schemaNS,arrayName,itemIndex,fullPath,pathSize) \ + WXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, fullPath, pathSize, &wResult ); + +#define zXMPUtils_ComposeStructFieldPath_1(schemaNS,structName,fieldNS,fieldName,fullPath,pathSize) \ + WXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, fullPath, pathSize, &wResult ); + +#define zXMPUtils_ComposeQualifierPath_1(schemaNS,propName,qualNS,qualName,fullPath,pathSize) \ + WXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, fullPath, pathSize, &wResult ); + +#define zXMPUtils_ComposeLangSelector_1(schemaNS,arrayName,langName,fullPath,pathSize) \ + WXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, fullPath, pathSize, &wResult ); + +#define zXMPUtils_ComposeFieldSelector_1(schemaNS,arrayName,fieldNS,fieldName,fieldValue,fullPath,pathSize) \ + WXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, pathSize, &wResult ); + +#define zXMPUtils_ConvertFromBool_1(binValue,strValue,strSize) \ + WXMPUtils_ConvertFromBool_1 ( binValue, strValue, strSize, &wResult ); + +#define zXMPUtils_ConvertFromInt_1(binValue,format,strValue,strSize) \ + WXMPUtils_ConvertFromInt_1 ( binValue, format, strValue, strSize, &wResult ); + +#define zXMPUtils_ConvertFromInt64_1(binValue,format,strValue,strSize) \ + WXMPUtils_ConvertFromInt64_1 ( binValue, format, strValue, strSize, &wResult ); + +#define zXMPUtils_ConvertFromFloat_1(binValue,format,strValue,strSize) \ + WXMPUtils_ConvertFromFloat_1 ( binValue, format, strValue, strSize, &wResult ); + +#define zXMPUtils_ConvertFromDate_1(binValue,strValue,strSize) \ + WXMPUtils_ConvertFromDate_1 ( binValue, strValue, strSize, &wResult ); + +#define zXMPUtils_ConvertToBool_1(strValue) \ + WXMPUtils_ConvertToBool_1 ( strValue, &wResult ); + +#define zXMPUtils_ConvertToInt_1(strValue) \ + WXMPUtils_ConvertToInt_1 ( strValue, &wResult ); + +#define zXMPUtils_ConvertToInt64_1(strValue) \ + WXMPUtils_ConvertToInt64_1 ( strValue, &wResult ); + +#define zXMPUtils_ConvertToFloat_1(strValue) \ + WXMPUtils_ConvertToFloat_1 ( strValue, &wResult ); + +#define zXMPUtils_ConvertToDate_1(strValue,binValue) \ + WXMPUtils_ConvertToDate_1 ( strValue, binValue, &wResult ); + +#define zXMPUtils_CurrentDateTime_1(time) \ + WXMPUtils_CurrentDateTime_1 ( time, &wResult ); + +#define zXMPUtils_SetTimeZone_1(time) \ + WXMPUtils_SetTimeZone_1 ( time, &wResult ); + +#define zXMPUtils_ConvertToUTCTime_1(time) \ + WXMPUtils_ConvertToUTCTime_1 ( time, &wResult ); + +#define zXMPUtils_ConvertToLocalTime_1(time) \ + WXMPUtils_ConvertToLocalTime_1 ( time, &wResult ); + +#define zXMPUtils_CompareDateTime_1(left,right) \ + WXMPUtils_CompareDateTime_1 ( left, right, &wResult ); + +#define zXMPUtils_EncodeToBase64_1(rawStr,rawLen,encodedStr,encodedLen) \ + WXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, encodedStr, encodedLen, &wResult ); + +#define zXMPUtils_DecodeFromBase64_1(encodedStr,encodedLen,rawStr,rawLen) \ + WXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, rawStr, rawLen, &wResult ); + +#define zXMPUtils_PackageForJPEG_1(xmpObj,stdStr,stdLen,extStr,extLen,digestStr,digestLen) \ + WXMPUtils_PackageForJPEG_1 ( xmpObj, stdStr, stdLen, extStr, extLen, digestStr, digestLen, &wResult ); + +#define zXMPUtils_MergeFromJPEG_1(fullXMP,extendedXMP) \ + WXMPUtils_MergeFromJPEG_1 ( fullXMP, extendedXMP, &wResult ); + +#define zXMPUtils_CatenateArrayItems_1(xmpObj,schemaNS,arrayName,separator,quotes,options,catedPtr,catedLen) \ + WXMPUtils_CatenateArrayItems_1 ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedPtr, catedLen, &wResult ); + +#define zXMPUtils_SeparateArrayItems_1(xmpObj,schemaNS,arrayName,options,catedStr) \ + WXMPUtils_SeparateArrayItems_1 ( xmpObj, schemaNS, arrayName, options, catedStr, &wResult ); + +#define zXMPUtils_RemoveProperties_1(xmpObj,schemaNS,propName,options) \ + WXMPUtils_RemoveProperties_1 ( xmpObj, schemaNS, propName, options, &wResult ); + +#define zXMPUtils_AppendProperties_1(source,dest,options) \ + WXMPUtils_AppendProperties_1 ( source, dest, options, &wResult ); + +#define zXMPUtils_DuplicateSubtree_1(source,dest,sourceNS,sourceRoot,destNS,destRoot,options) \ + WXMPUtils_DuplicateSubtree_1 ( source, dest, sourceNS, sourceRoot, destNS, destRoot, options, &wResult ); + +// ================================================================================================= + +extern void +WXMPUtils_Unlock_1 ( XMP_OptionBits options ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr langName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertFromFloat_1 ( double binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue, + XMP_DateTime * binValue, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time, + WXMP_Result * wResult ); + +extern void +WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time, + WXMP_Result * wResult ); + +extern void +WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time, + WXMP_Result * wResult ); + +extern void +WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left, + const XMP_DateTime & right, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr, + XMP_StringLen rawLen, + XMP_StringPtr * encodedStr, + XMP_StringLen * encodedLen, + WXMP_Result * wResult ); + +extern void +WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr, + XMP_StringLen encodedLen, + XMP_StringPtr * rawStr, + XMP_StringLen * rawLen, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_PackageForJPEG_1 ( XMPMetaRef xmpObj, + XMP_StringPtr * stdStr, + XMP_StringLen * stdLen, + XMP_StringPtr * extStr, + XMP_StringLen * extLen, + XMP_StringPtr * digestStr, + XMP_StringLen * digestLen, + WXMP_Result * wResult ); + +extern void +WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef fullXMP, + XMPMetaRef extendedXMP, + WXMP_Result * wResult ); + +// ------------------------------------------------------------------------------------------------- + +extern void +WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr separator, + XMP_StringPtr quotes, + XMP_OptionBits options, + XMP_StringPtr * catedStr, + XMP_StringLen * catedLen, + WXMP_Result * wResult ); + +extern void +WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + XMP_StringPtr catedStr, + WXMP_Result * wResult ); + +extern void +WXMPUtils_RemoveProperties_1 ( XMPMetaRef xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPUtils_AppendProperties_1 ( XMPMetaRef source, + XMPMetaRef dest, + XMP_OptionBits options, + WXMP_Result * wResult ); + +extern void +WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef source, + XMPMetaRef dest, + XMP_StringPtr sourceNS, + XMP_StringPtr sourceRoot, + XMP_StringPtr destNS, + XMP_StringPtr destRoot, + XMP_OptionBits options, + WXMP_Result * wResult ); + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif + +#endif // __WXMPUtils_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMP_Common.hpp b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMP_Common.hpp new file mode 100644 index 0000000..4d6eaab --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/include/client-glue/WXMP_Common.hpp @@ -0,0 +1,123 @@ +#if ! __WXMP_Common_hpp__ +#define __WXMP_Common_hpp__ 1 + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#ifndef XMP_Inline + #if TXMP_EXPAND_INLINE + #define XMP_Inline inline + #else + #define XMP_Inline /* not inline */ + #endif +#endif + +#define XMP_CTorDTorIntro(Class) template XMP_Inline Class +#define XMP_MethodIntro(Class,ResultType) template XMP_Inline ResultType Class + +struct WXMP_Result { + XMP_StringPtr errMessage; + void * ptrResult; + double floatResult; + XMP_Uns64 int64Result; + XMP_Uns32 int32Result; + WXMP_Result() : errMessage(0) {}; +}; + +#if __cplusplus +extern "C" { +#endif + +#define PropagateException(res) \ + if ( res.errMessage != 0 ) throw XMP_Error ( res.int32Result, res.errMessage ); + +#ifndef TraceXMPCalls + #define TraceXMPCalls 0 +#endif + +#if ! TraceXMPCalls + #define InvokeCheck(WCallProto) \ + WXMP_Result wResult; \ + WCallProto; \ + PropagateException ( wResult ) +#else + #define InvokeCheck(WCallProto) \ + WXMP_Result wResult; \ + fprintf ( stderr, "WXMP calling: %s\n", #WCallProto ); fflush ( stderr ); \ + WCallProto; \ + if ( wResult.errMessage == 0 ) { \ + fprintf ( stderr, "WXMP back, no error\n" ); fflush ( stderr ); \ + } else { \ + fprintf ( stderr, "WXMP back, error: %s\n", wResult.errMessage ); fflush ( stderr ); \ + } \ + PropagateException ( wResult ) +#endif + +// ------------------------------------------------------------------------------------------------- + +#define WrapNoCheckVoid(WCallProto) \ + WCallProto; + +#define WrapCheckVoid(WCallProto) \ + InvokeCheck(WCallProto) + +#define WrapCheckMetaRef(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMPMetaRef result = XMPMetaRef(wResult.ptrResult) + +#define WrapCheckIterRef(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMPIteratorRef result = XMPIteratorRef(wResult.ptrResult) + +#define WrapCheckDocOpsRef(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMPDocOpsRef result = XMPDocOpsRef(wResult.ptrResult) + +#define WrapCheckBool(result,WCallProto) \ + InvokeCheck(WCallProto); \ + bool result = bool(wResult.int32Result) + +#define WrapCheckTriState(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_TriState result = XMP_TriState(wResult.int32Result) + +#define WrapCheckOptions(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_OptionBits result = XMP_OptionBits(wResult.int32Result) + +#define WrapCheckStatus(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_Status result = XMP_Status(wResult.int32Result) + +#define WrapCheckIndex(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_Index result = XMP_Index(wResult.int32Result) + +#define WrapCheckInt32(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_Int32 result = wResult.int32Result + +#define WrapCheckInt64(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_Int64 result = wResult.int64Result + +#define WrapCheckFloat(result,WCallProto) \ + InvokeCheck(WCallProto); \ + double result = wResult.floatResult + +#define WrapCheckFormat(result,WCallProto) \ + InvokeCheck(WCallProto); \ + XMP_FileFormat result = wResult.int32Result + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif + +#endif // __WXMP_Common_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.cpp b/vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.cpp new file mode 100644 index 0000000..79669f5 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.cpp @@ -0,0 +1,504 @@ +// ================================================================================================= +// Copyright 2005-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! Must be the first #include! +#include "XMPCore_Impl.hpp" + +#include "ExpatAdapter.hpp" +#include "XMPMeta.hpp" + +#include "expat.h" + +#include + +using namespace std; + +#if XMP_WinBuild +# ifdef _MSC_VER + #pragma warning ( disable : 4996 ) // '...' was declared deprecated +# endif +#endif + +// *** Set memory handlers. + +#ifndef DumpXMLParseEvents + #define DumpXMLParseEvents 0 +#endif + +#define FullNameSeparator '@' + +// ================================================================================================= + +static void StartNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix, XMP_StringPtr uri ); +static void EndNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix ); + +static void StartElementHandler ( void * userData, XMP_StringPtr name, XMP_StringPtr* attrs ); +static void EndElementHandler ( void * userData, XMP_StringPtr name ); + +static void CharacterDataHandler ( void * userData, XMP_StringPtr cData, int len ); +static void StartCdataSectionHandler ( void * userData ); +static void EndCdataSectionHandler ( void * userData ); + +static void ProcessingInstructionHandler ( void * userData, XMP_StringPtr target, XMP_StringPtr data ); +static void CommentHandler ( void * userData, XMP_StringPtr comment ); + +#if BanAllEntityUsage + + // For now we do this by banning DOCTYPE entirely. This is easy and consistent with what is + // available in recent Java XML parsers. Another, somewhat less drastic, approach would be to + // ban all entity declarations. We can't allow declarations and ban references, Expat does not + // call the SkippedEntityHandler for references in attribute values. + + // ! Standard entities (&, <, >, ", ', and numeric character references) are + // ! not banned. Expat handles them transparently no matter what. + + static void StartDoctypeDeclHandler ( void * userData, XMP_StringPtr doctypeName, + XMP_StringPtr sysid, XMP_StringPtr pubid, int has_internal_subset ); + +#endif + +// ================================================================================================= + +extern "C" ExpatAdapter * XMP_NewExpatAdapter() +{ + return new ExpatAdapter; +} // XMP_NewExpatAdapter + +// ================================================================================================= + +ExpatAdapter::ExpatAdapter() : parser(0) +{ + + #if XMP_DebugBuild + this->elemNesting = 0; + #if DumpXMLParseEvents + if ( this->parseLog == 0 ) this->parseLog = stdout; + #endif + #endif + + this->parser = XML_ParserCreateNS ( 0, FullNameSeparator ); + if ( this->parser == 0 ) XMP_Throw ( "Failure creating Expat parser", kXMPErr_ExternalFailure ); + + XML_SetUserData ( this->parser, this ); + + XML_SetNamespaceDeclHandler ( this->parser, StartNamespaceDeclHandler, EndNamespaceDeclHandler ); + XML_SetElementHandler ( this->parser, StartElementHandler, EndElementHandler ); + + XML_SetCharacterDataHandler ( this->parser, CharacterDataHandler ); + XML_SetCdataSectionHandler ( this->parser, StartCdataSectionHandler, EndCdataSectionHandler ); + + XML_SetProcessingInstructionHandler ( this->parser, ProcessingInstructionHandler ); + XML_SetCommentHandler ( this->parser, CommentHandler ); + + #if BanAllEntityUsage + XML_SetStartDoctypeDeclHandler ( this->parser, StartDoctypeDeclHandler ); + isAborted = false; + #endif + + this->parseStack.push_back ( &this->tree ); // Push the XML root node. + +} // ExpatAdapter::ExpatAdapter + +// ================================================================================================= + +ExpatAdapter::~ExpatAdapter() +{ + + if ( this->parser != 0 ) XML_ParserFree ( this->parser ); + this->parser = 0; + +} // ExpatAdapter::~ExpatAdapter + +// ================================================================================================= + +#if XMP_DebugBuild + static XMP_VarString sExpatMessage; +#endif + +static const char * kOneSpace = " "; + +void ExpatAdapter::ParseBuffer ( const void * buffer, size_t length, bool last /* = true */ ) +{ + enum XML_Status status; + + if ( length == 0 ) { // Expat does not like empty buffers. + if ( ! last ) return; + buffer = kOneSpace; + length = 1; + } + + status = XML_Parse ( this->parser, (const char *)buffer, length, last ); + + #if BanAllEntityUsage + if ( this->isAborted ) XMP_Throw ( "DOCTYPE is not allowed", kXMPErr_BadXML ); + #endif + + if ( status != XML_STATUS_OK ) { + + XMP_StringPtr errMsg = "XML parsing failure"; + + #if 0 // XMP_DebugBuild // Disable for now to make test output uniform. Restore later with thread safety. + + // *** This is a good candidate for a callback error notification mechanism. + // *** This code is not thread safe, the sExpatMessage isn't locked. But that's OK for debug usage. + + enum XML_Error expatErr = XML_GetErrorCode ( this->parser ); + const char * expatMsg = XML_ErrorString ( expatErr ); + int errLine = XML_GetCurrentLineNumber ( this->parser ); + + char msgBuffer[1000]; + // AUDIT: Use of sizeof(msgBuffer) for snprintf length is safe. + snprintf ( msgBuffer, sizeof(msgBuffer), "# Expat error %d at line %d, \"%s\"", expatErr, errLine, expatMsg ); + sExpatMessage = msgBuffer; + errMsg = sExpatMessage.c_str(); + + #if DumpXMLParseEvents + if ( this->parseLog != 0 ) fprintf ( this->parseLog, "%s\n", errMsg, expatErr, errLine, expatMsg ); + #endif + + #endif + + XMP_Throw ( errMsg, kXMPErr_BadXML ); + + } + +} // ExpatAdapter::ParseBuffer + +// ================================================================================================= +// ================================================================================================= + +#if XMP_DebugBuild & DumpXMLParseEvents + + static inline void PrintIndent ( FILE * file, size_t count ) + { + for ( ; count > 0; --count ) fprintf ( file, " " ); + } + +#endif + +// ================================================================================================= + +static void SetQualName ( XMP_StringPtr fullName, XML_Node * node ) +{ + // Expat delivers the full name as a catenation of namespace URI, separator, and local name. + + // As a compatibility hack, an "about" or "ID" attribute of an rdf:Description element is + // changed to "rdf:about" or rdf:ID. Easier done here than in the RDF recognizer. + + // As a bug fix hack, change a URI of "http://purl.org/dc/1.1/" to ""http://purl.org/dc/elements/1.1/. + // Early versions of Flash that put XMP in SWF used a bad URI for the dc: namespace. + + // ! This code presumes the RDF namespace prefix is "rdf". + + size_t sepPos = strlen(fullName); + for ( --sepPos; sepPos > 0; --sepPos ) { + if ( fullName[sepPos] == FullNameSeparator ) break; + } + + if ( fullName[sepPos] == FullNameSeparator ) { + + XMP_StringPtr prefix; + XMP_StringLen prefixLen; + XMP_StringPtr localPart = fullName + sepPos + 1; + + node->ns.assign ( fullName, sepPos ); + if ( node->ns == "http://purl.org/dc/1.1/" ) node->ns = "http://purl.org/dc/elements/1.1/"; + + bool found = XMPMeta::GetNamespacePrefix ( node->ns.c_str(), &prefix, &prefixLen ); + if ( ! found ) XMP_Throw ( "Unknown URI in Expat full name", kXMPErr_ExternalFailure ); + node->nsPrefixLen = prefixLen; // ! Includes the ':'. + + node->name = prefix; + node->name += localPart; + + } else { + + node->name = fullName; // The name is not in a namespace. + + if ( node->parent->name == "rdf:Description" ) { + if ( node->name == "about" ) { + node->ns = kXMP_NS_RDF; + node->name = "rdf:about"; + node->nsPrefixLen = 4; // ! Include the ':'. + } else if ( node->name == "ID" ) { + node->ns = kXMP_NS_RDF; + node->name = "rdf:ID"; + node->nsPrefixLen = 4; // ! Include the ':'. + } + } + + } + +} // SetQualName + +// ================================================================================================= + +static void StartNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix, XMP_StringPtr uri ) +{ + IgnoreParam(userData); + + // As a bug fix hack, change a URI of "http://purl.org/dc/1.1/" to ""http://purl.org/dc/elements/1.1/. + // Early versions of Flash that put XMP in SWF used a bad URI for the dc: namespace. + + #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. + ExpatAdapter * thiz = (ExpatAdapter*)userData; + #endif + + if ( prefix == 0 ) prefix = "_dflt_"; // Have default namespace. + if ( uri == 0 ) return; // Ignore, have xmlns:pre="", no URI to register. + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "StartNamespace: %s - \"%s\"\n", prefix, uri ); + } + #endif + + if ( XMP_LitMatch ( uri, "http://purl.org/dc/1.1/" ) ) uri = "http://purl.org/dc/elements/1.1/"; + XMPMeta::RegisterNamespace ( uri, prefix ); + +} // StartNamespaceDeclHandler + +// ================================================================================================= + +static void EndNamespaceDeclHandler ( void * userData, XMP_StringPtr prefix ) +{ + IgnoreParam(userData); + + #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. + ExpatAdapter * thiz = (ExpatAdapter*)userData; + #endif + + if ( prefix == 0 ) prefix = "_dflt_"; // Have default namespace. + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "EndNamespace: %s\n", prefix ); + } + #endif + + // ! Nothing to do, Expat has done all of the XML processing. + +} // EndNamespaceDeclHandler + +// ================================================================================================= + +static void StartElementHandler ( void * userData, XMP_StringPtr name, XMP_StringPtr* attrs ) +{ + XMP_Assert ( attrs != 0 ); + ExpatAdapter * thiz = (ExpatAdapter*)userData; + + size_t attrCount = 0; + for ( XMP_StringPtr* a = attrs; *a != 0; ++a ) ++attrCount; + if ( (attrCount & 1) != 0 ) XMP_Throw ( "Expat attribute info has odd length", kXMPErr_ExternalFailure ); + attrCount = attrCount/2; // They are name/value pairs. + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "StartElement: %s, %d attrs", name, attrCount ); + for ( XMP_StringPtr* attr = attrs; *attr != 0; attr += 2 ) { + XMP_StringPtr attrName = *attr; + XMP_StringPtr attrValue = *(attr+1); + fprintf ( thiz->parseLog, ", %s = \"%s\"", attrName, attrValue ); + } + fprintf ( thiz->parseLog, "\n" ); + } + #endif + + XML_Node * parentNode = thiz->parseStack.back(); + XML_Node * elemNode = new XML_Node ( parentNode, "", kElemNode ); + + SetQualName ( name, elemNode ); + + for ( XMP_StringPtr* attr = attrs; *attr != 0; attr += 2 ) { + + XMP_StringPtr attrName = *attr; + XMP_StringPtr attrValue = *(attr+1); + XML_Node * attrNode = new XML_Node ( elemNode, "", kAttrNode ); + + SetQualName ( attrName, attrNode ); + attrNode->value = attrValue; + if ( attrNode->name == "xml:lang" ) NormalizeLangValue ( &attrNode->value ); + elemNode->attrs.push_back ( attrNode ); + + } + + parentNode->content.push_back ( elemNode ); + thiz->parseStack.push_back ( elemNode ); + + if ( elemNode->name == "rdf:RDF" ) { + thiz->rootNode = elemNode; + ++thiz->rootCount; + } + #if XMP_DebugBuild + ++thiz->elemNesting; + #endif + +} // StartElementHandler + +// ================================================================================================= + +static void EndElementHandler ( void * userData, XMP_StringPtr name ) +{ + IgnoreParam(name); + + ExpatAdapter * thiz = (ExpatAdapter*)userData; + + #if XMP_DebugBuild + --thiz->elemNesting; + #endif + (void) thiz->parseStack.pop_back(); + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "EndElement: %s\n", name ); + } + #endif + +} // EndElementHandler + +// ================================================================================================= + +static void CharacterDataHandler ( void * userData, XMP_StringPtr cData, int len ) +{ + ExpatAdapter * thiz = (ExpatAdapter*)userData; + + if ( (cData == 0) || (len == 0) ) { cData = ""; len = 0; } + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "CharContent: \"" ); + for ( int i = 0; i < len; ++i ) fprintf ( thiz->parseLog, "%c", cData[i] ); + fprintf ( thiz->parseLog, "\"\n" ); + } + #endif + + XML_Node * parentNode = thiz->parseStack.back(); + XML_Node * cDataNode = new XML_Node ( parentNode, "", kCDataNode ); + + cDataNode->value.assign ( cData, len ); + parentNode->content.push_back ( cDataNode ); + +} // CharacterDataHandler + +// ================================================================================================= + +static void StartCdataSectionHandler ( void * userData ) +{ + IgnoreParam(userData); + + #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. + ExpatAdapter * thiz = (ExpatAdapter*)userData; + #endif + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "StartCDATA\n" ); + } + #endif + + // *** Since markup isn't recognized inside CDATA, this affects XMP's double escaping. + +} // StartCdataSectionHandler + +// ================================================================================================= + +static void EndCdataSectionHandler ( void * userData ) +{ + IgnoreParam(userData); + + #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. + ExpatAdapter * thiz = (ExpatAdapter*)userData; + #endif + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "EndCDATA\n" ); + } + #endif + +} // EndCdataSectionHandler + +// ================================================================================================= + +static void ProcessingInstructionHandler ( void * userData, XMP_StringPtr target, XMP_StringPtr data ) +{ + XMP_Assert ( target != 0 ); + ExpatAdapter * thiz = (ExpatAdapter*)userData; + + if ( ! XMP_LitMatch ( target, "xpacket" ) ) return; // Ignore all PIs except the XMP packet wrapper. + if ( data == 0 ) data = ""; + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "PI: %s - \"%s\"\n", target, data ); + } + #endif + + XML_Node * parentNode = thiz->parseStack.back(); + XML_Node * piNode = new XML_Node ( parentNode, target, kPINode ); + + piNode->value.assign ( data ); + parentNode->content.push_back ( piNode ); + +} // ProcessingInstructionHandler + +// ================================================================================================= + +static void CommentHandler ( void * userData, XMP_StringPtr comment ) +{ + IgnoreParam(userData); + + #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. + ExpatAdapter * thiz = (ExpatAdapter*)userData; + #endif + + if ( comment == 0 ) comment = ""; + + #if XMP_DebugBuild & DumpXMLParseEvents + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "Comment: \"%s\"\n", comment ); + } + #endif + + // ! Comments are ignored. + +} // CommentHandler + +// ================================================================================================= + +#if BanAllEntityUsage +static void StartDoctypeDeclHandler ( void * userData, XMP_StringPtr doctypeName, + XMP_StringPtr sysid, XMP_StringPtr pubid, int has_internal_subset ) +{ + IgnoreParam(userData); + + ExpatAdapter * thiz = (ExpatAdapter*)userData; + + #if XMP_DebugBuild & DumpXMLParseEvents // Avoid unused variable warning. + if ( thiz->parseLog != 0 ) { + PrintIndent ( thiz->parseLog, thiz->elemNesting ); + fprintf ( thiz->parseLog, "DocType: \"%s\"\n", doctypeName ); + } + #endif + + thiz->isAborted = true; // ! Can't throw an exception across the plain C Expat frames. + (void) XML_StopParser ( thiz->parser, XML_FALSE /* not resumable */ ); + +} // StartDoctypeDeclHandler +#endif + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.hpp b/vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.hpp new file mode 100644 index 0000000..9d6c9ec --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/ExpatAdapter.hpp @@ -0,0 +1,50 @@ +#ifndef __ExpatAdapter_hpp__ +#define __ExpatAdapter_hpp__ + +// ================================================================================================= +// Copyright 2005-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! Must be the first #include! +#include "XMLParserAdapter.hpp" + +// ================================================================================================= +// Derived XML parser adapter for Expat. +// ================================================================================================= + +#ifndef BanAllEntityUsage + #define BanAllEntityUsage 0 +#endif + +struct XML_ParserStruct; // ! Hack to avoid exposing expat.h to all clients. +typedef struct XML_ParserStruct *XML_Parser; + +class ExpatAdapter : public XMLParserAdapter { +public: + + XML_Parser parser; + + #if BanAllEntityUsage + bool isAborted; + #endif + + #if XMP_DebugBuild + size_t elemNesting; + #endif + + ExpatAdapter(); + virtual ~ExpatAdapter(); + + void ParseBuffer ( const void * buffer, size_t length, bool last = true ); + +}; + +extern "C" ExpatAdapter * XMP_NewExpatAdapter(); + +// ================================================================================================= + +#endif // __ExpatAdapter_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/MD5.cpp b/vendor/exiv2-0.25/xmpsdk/src/MD5.cpp new file mode 100644 index 0000000..f162b72 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/MD5.cpp @@ -0,0 +1,235 @@ +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5_CTX structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + * + * Changed so as no longer to depend on Colin Plumb's `usual.h' header + * definitions; now uses stuff from dpkg's config.h. + * - Ian Jackson . + * Still in the public domain. + */ + +#include + +#include "MD5.h" + +using namespace std; + +static void +byteSwap(UWORD32 *buf, unsigned words) +{ + const uint32_t byteOrderTest = 0x1; + if (((char *)&byteOrderTest)[0] == 0) { + md5byte *p = (md5byte *)buf; + + do { + *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | + ((unsigned)p[1] << 8 | p[0]); + p += 4; + } while (--words); + } +} + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void +MD5Init(struct MD5_CTX *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bytes[0] = 0; + ctx->bytes[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void +MD5Update(struct MD5_CTX *ctx, md5byte const *buf, unsigned len) +{ + UWORD32 t; + + /* Update byte count */ + + t = ctx->bytes[0]; + if ((ctx->bytes[0] = t + len) < t) + ctx->bytes[1]++; /* Carry from low to high */ + + t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ + if (t > len) { + memcpy((md5byte *)ctx->in + 64 - t, buf, len); + return; + } + /* First chunk is an odd size */ + memcpy((md5byte *)ctx->in + 64 - t, buf, t); + byteSwap(ctx->in, 16); + MD5Transform(ctx->buf, ctx->in); + buf += t; + len -= t; + + /* Process data in 64-byte chunks */ + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteSwap(ctx->in, 16); + MD5Transform(ctx->buf, ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void +MD5Final(md5byte digest[16], struct MD5_CTX *ctx) +{ + int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ + md5byte *p = (md5byte *)ctx->in + count; + + /* Set the first char of padding to 0x80. There is always room. */ + *p++ = 0x80; + + /* Bytes of padding needed to make 56 bytes (-8..55) */ + count = 56 - 1 - count; + + if (count < 0) { /* Padding forces an extra block */ + memset(p, 0, count + 8); + byteSwap(ctx->in, 16); + MD5Transform(ctx->buf, ctx->in); + p = (md5byte *)ctx->in; + count = 56; + } + memset(p, 0, count); + byteSwap(ctx->in, 14); + + /* Append length in bits and transform */ + ctx->in[14] = ctx->bytes[0] << 3; + ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; + MD5Transform(ctx->buf, ctx->in); + + byteSwap(ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ +} + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f,w,x,y,z,in,s) \ + (w += f(x,y,z) + in, w = (w<>(32-s)) + x) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void +MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) +{ + register UWORD32 a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} diff --git a/vendor/exiv2-0.25/xmpsdk/src/Makefile b/vendor/exiv2-0.25/xmpsdk/src/Makefile new file mode 100644 index 0000000..073c18f --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/Makefile @@ -0,0 +1,153 @@ +# ************************************************************* -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile +# Version: $Rev: 3777 $ +# Author(s): Andreas Huggel (ahu) +# History: 30-Sep-07, ahu: created +# +# Description: +# Makefile to build the Adobe XMP Toolkit integrated and distributed with +# Exiv2. Adapted from the main Exiv2 src/Makefile. This builds what the +# libtool manual calls a "convenience library". +# +# Restrictions: +# Requires GNU make. +# + +# Default make target +all: xmpsdk + +# Include system configuration +top_srcdir = ../.. +include $(top_srcdir)/config/config.mk + +# ****************************************************************************** +# Source files + +# Add library C++ source files to this list +CCSRC = XML_Node.cpp \ + XMPMeta.cpp \ + XMPMeta-GetSet.cpp \ + XMPMeta-Parse.cpp \ + XMPMeta-Serialize.cpp \ + XMPIterator.cpp \ + XMPUtils.cpp \ + XMPUtils-FileInfo.cpp \ + XMPCore_Impl.cpp \ + ExpatAdapter.cpp \ + ParseRDF.cpp \ + UnicodeConversions.cpp \ + MD5.cpp \ + WXMPMeta.cpp \ + WXMPIterator.cpp \ + WXMPUtils.cpp + +# ****************************************************************************** +# Library +LIBRARY := lib$(XMPSDK_LIBRARY).la + +# ****************************************************************************** +# Initialisations +SHELL = /bin/sh + +.SUFFIXES: +.SUFFIXES: .c .cpp .o .so + +.PRECIOUS: %.cpp + +# For a debug build, replace -DNDEBUG=1 with -DDEBUG=1 -D_DEBUG=1 +CPPFLAGS += -I../include -funsigned-char -DNDEBUG=1 $(EXPAT_CPPFLAGS) +ifdef HAVE_STDINT + CPPFLAGS += -DEXV_HAVE_STDINT_H=1 +endif + +LDFLAGS += $(EXPAT_LDFLAGS) +LIBS += $(EXPAT_LIBS) + +# Generic variables +CCOBJ = $(CCSRC:.cpp=.o) +LOBJ = $(CCSRC:.cpp=.lo) + +ifdef DEP_TRACKING +DEP = $(CCSRC:%.cpp=$(DEPDIR)/%.d) +endif + +# ****************************************************************************** +# Rules +$(CCOBJ): %.o: %.cpp + @$(LIBTOOL) --mode=compile $(COMPILE.cc) -o $@ $< + @$(MAKEDEPEND) + @$(POSTDEPEND) + +%.ii: %.cpp + set -e; \ + $(CXXCPP) $(CPPFLAGS) $< | sed '/^[ ]*$$/d' > $@ + +# ****************************************************************************** +# Targets +.PHONY: all mostlyclean clean distclean maintainer-clean + +ifdef DEP_TRACKING +# Include targets from dependency files +-include $(DEP) +endif + +$(LIBTOOL): $(LIBTOOL_DEPS) + $(SHELL) $(top_srcdir)/config.status --recheck + +xmpsdk: $(LIBRARY) + +$(LIBRARY): $(CCOBJ) + $(LIBTOOL) --mode=link $(LINK.cc) -o $(LIBRARY) $(LOBJ) + +mostlyclean: + $(RM) core + $(RM) $(CCSRC:.cpp=.ii) + $(RM) $(CCSRC:%.cpp=.libs/%.d) + @$(LIBTOOL) --mode=clean $(RM) $(LOBJ) + +clean: mostlyclean + @$(LIBTOOL) --mode=clean $(RM) $(LIBRARY) + +# Run `make distclean' from the top source directory to also remove +# files created by configuring the program. +distclean: clean +ifdef DEP_TRACKING + $(RM) $(DEP) + -rmdir $(DEPDIR) +endif + $(RM) *~ *.bak *# + +# This command is intended for maintainers to use; it deletes files +# that may need special tools to rebuild. +maintainer-clean: distclean diff --git a/vendor/exiv2-0.25/xmpsdk/src/ParseRDF.cpp b/vendor/exiv2-0.25/xmpsdk/src/ParseRDF.cpp new file mode 100644 index 0000000..c47ffd7 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/ParseRDF.cpp @@ -0,0 +1,1296 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" +#include "ExpatAdapter.hpp" + +#include + +#if DEBUG + #include +#endif + +using namespace std; + +#if XMP_WinBuild +# ifdef _MSC_VER + #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced + #pragma warning ( disable : 4505 ) // unreferenced local function has been removed +# endif +#endif + +// ================================================================================================= + +// *** This might be faster and use less memory as a state machine. A big advantage of building an +// *** XML tree though is easy lookahead during the recursive descent processing. + +// *** It would be nice to give a line number or byte offset in the exception messages. + + +// 7 RDF/XML Grammar (from http://www.w3.org/TR/rdf-syntax-grammar/#section-Infoset-Grammar) +// +// 7.1 Grammar summary +// +// 7.2.2 coreSyntaxTerms +// rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype +// +// 7.2.3 syntaxTerms +// coreSyntaxTerms | rdf:Description | rdf:li +// +// 7.2.4 oldTerms +// rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID +// +// 7.2.5 nodeElementURIs +// anyURI - ( coreSyntaxTerms | rdf:li | oldTerms ) +// +// 7.2.6 propertyElementURIs +// anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms ) +// +// 7.2.7 propertyAttributeURIs +// anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms ) +// +// 7.2.8 doc +// root ( document-element == RDF, children == list ( RDF ) ) +// +// 7.2.9 RDF +// start-element ( URI == rdf:RDF, attributes == set() ) +// nodeElementList +// end-element() +// +// 7.2.10 nodeElementList +// ws* ( nodeElement ws* )* +// +// 7.2.11 nodeElement +// start-element ( URI == nodeElementURIs, +// attributes == set ( ( idAttr | nodeIdAttr | aboutAttr )?, propertyAttr* ) ) +// propertyEltList +// end-element() +// +// 7.2.12 ws +// A text event matching white space defined by [XML] definition White Space Rule [3] S in section Common Syntactic Constructs. +// +// 7.2.13 propertyEltList +// ws* ( propertyElt ws* )* +// +// 7.2.14 propertyElt +// resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | +// parseTypeResourcePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt +// +// 7.2.15 resourcePropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr? ) ) +// ws* nodeElement ws* +// end-element() +// +// 7.2.16 literalPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, datatypeAttr?) ) +// text() +// end-element() +// +// 7.2.17 parseTypeLiteralPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseLiteral ) ) +// literal +// end-element() +// +// 7.2.18 parseTypeResourcePropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseResource ) ) +// propertyEltList +// end-element() +// +// 7.2.19 parseTypeCollectionPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseCollection ) ) +// nodeElementList +// end-element() +// +// 7.2.20 parseTypeOtherPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseOther ) ) +// propertyEltList +// end-element() +// +// 7.2.21 emptyPropertyElt +// start-element ( URI == propertyElementURIs, +// attributes == set ( idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr* ) ) +// end-element() +// +// 7.2.22 idAttr +// attribute ( URI == rdf:ID, string-value == rdf-id ) +// +// 7.2.23 nodeIdAttr +// attribute ( URI == rdf:nodeID, string-value == rdf-id ) +// +// 7.2.24 aboutAttr +// attribute ( URI == rdf:about, string-value == URI-reference ) +// +// 7.2.25 propertyAttr +// attribute ( URI == propertyAttributeURIs, string-value == anyString ) +// +// 7.2.26 resourceAttr +// attribute ( URI == rdf:resource, string-value == URI-reference ) +// +// 7.2.27 datatypeAttr +// attribute ( URI == rdf:datatype, string-value == URI-reference ) +// +// 7.2.28 parseLiteral +// attribute ( URI == rdf:parseType, string-value == "Literal") +// +// 7.2.29 parseResource +// attribute ( URI == rdf:parseType, string-value == "Resource") +// +// 7.2.30 parseCollection +// attribute ( URI == rdf:parseType, string-value == "Collection") +// +// 7.2.31 parseOther +// attribute ( URI == rdf:parseType, string-value == anyString - ("Resource" | "Literal" | "Collection") ) +// +// 7.2.32 URI-reference +// An RDF URI Reference. +// +// 7.2.33 literal +// Any XML element content that is allowed according to [XML] definition Content of Elements Rule [43] content +// in section 3.1 Start-Tags, End-Tags, and Empty-Element Tags. +// +// 7.2.34 rdf-id +// An attribute string-value matching any legal [XML-NS] token NCName. + + +// ================================================================================================= +// Primary Parsing Functions +// ========================= +// +// Each of these is responsible for recognizing an RDF syntax production and adding the appropriate +// structure to the XMP tree. They simply return for success, failures will throw an exception. + +static void +RDF_RDF ( XMP_Node * xmpTree, const XML_Node & xmlNode ); + +static void +RDF_NodeElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ); + +static void +RDF_NodeElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_NodeElementAttrs ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_PropertyElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ); +enum { kIsTopLevel = true, kNotTopLevel = false }; + +static void +RDF_PropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_ResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_LiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_ParseTypeLiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_ParseTypeResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_ParseTypeCollectionPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_ParseTypeOtherPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + +static void +RDF_EmptyPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ); + + +// ================================================================================================= + +typedef XMP_Uns8 RDFTermKind; + +// *** Logic might be safer with just masks. + +enum { + kRDFTerm_Other = 0, + kRDFTerm_RDF = 1, // Start of coreSyntaxTerms. + kRDFTerm_ID = 2, + kRDFTerm_about = 3, + kRDFTerm_parseType = 4, + kRDFTerm_resource = 5, + kRDFTerm_nodeID = 6, + kRDFTerm_datatype = 7, // End of coreSyntaxTerms. + kRDFTerm_Description = 8, // Start of additions for syntaxTerms. + kRDFTerm_li = 9, // End of of additions for syntaxTerms. + kRDFTerm_aboutEach = 10, // Start of oldTerms. + kRDFTerm_aboutEachPrefix = 11, + kRDFTerm_bagID = 12, // End of oldTerms. + + kRDFTerm_FirstCore = kRDFTerm_RDF, + kRDFTerm_LastCore = kRDFTerm_datatype, + kRDFTerm_FirstSyntax = kRDFTerm_FirstCore, // ! Yes, the syntax terms include the core terms. + kRDFTerm_LastSyntax = kRDFTerm_li, + kRDFTerm_FirstOld = kRDFTerm_aboutEach, + kRDFTerm_LastOld = kRDFTerm_bagID +}; + +enum { + kRDFMask_Other = 1 << kRDFTerm_Other, + kRDFMask_RDF = 1 << kRDFTerm_RDF, + kRDFMask_ID = 1 << kRDFTerm_ID, + kRDFMask_about = 1 << kRDFTerm_about, + kRDFMask_parseType = 1 << kRDFTerm_parseType, + kRDFMask_resource = 1 << kRDFTerm_resource, + kRDFMask_nodeID = 1 << kRDFTerm_nodeID, + kRDFMask_datatype = 1 << kRDFTerm_datatype, + kRDFMask_Description = 1 << kRDFTerm_Description, + kRDFMask_li = 1 << kRDFTerm_li, + kRDFMask_aboutEach = 1 << kRDFTerm_aboutEach, + kRDFMask_aboutEachPrefix = 1 << kRDFTerm_aboutEachPrefix, + kRDFMask_bagID = 1 << kRDFTerm_bagID +}; + +enum { + kRDF_HasValueElem = 0x10000000UL // ! Contains rdf:value child. Must fit within kXMP_ImplReservedMask! +}; + +// ------------------------------------------------------------------------------------------------- +// GetRDFTermKind +// -------------- + +static RDFTermKind +GetRDFTermKind ( const XMP_VarString & name ) +{ + RDFTermKind term = kRDFTerm_Other; + + // Arranged to hopefully minimize the parse time for large XMP. + + if ( (name.size() > 4) && (strncmp ( name.c_str(), "rdf:", 4 ) == 0) ) { + + if ( name == "rdf:li" ) { + term = kRDFTerm_li; + } else if ( name == "rdf:parseType" ) { + term = kRDFTerm_parseType; + } else if ( name == "rdf:Description" ) { + term = kRDFTerm_Description; + } else if ( name == "rdf:about" ) { + term = kRDFTerm_about; + } else if ( name == "rdf:resource" ) { + term = kRDFTerm_resource; + } else if ( name == "rdf:RDF" ) { + term = kRDFTerm_RDF; + } else if ( name == "rdf:ID" ) { + term = kRDFTerm_ID; + } else if ( name == "rdf:nodeID" ) { + term = kRDFTerm_nodeID; + } else if ( name == "rdf:datatype" ) { + term = kRDFTerm_datatype; + } else if ( name == "rdf:aboutEach" ) { + term = kRDFTerm_aboutEach; + } else if ( name == "rdf:aboutEachPrefix" ) { + term = kRDFTerm_aboutEachPrefix; + } else if ( name == "rdf:bagID" ) { + term = kRDFTerm_bagID; + } + + } + + return term; + +} // GetRDFTermKind + + +// ================================================================================================= + + +// ------------------------------------------------------------------------------------------------- +// IsCoreSyntaxTerm +// ---------------- +// +// 7.2.2 coreSyntaxTerms +// rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype + +static bool +IsCoreSyntaxTerm ( RDFTermKind term ) +{ + + if ( (kRDFTerm_FirstCore <= term) && (term <= kRDFTerm_LastCore) ) return true; + return false; + +} // IsCoreSyntaxTerm + + +// ------------------------------------------------------------------------------------------------- +// IsOldTerm +// --------- +// +// 7.2.4 oldTerms +// rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID + +static bool +IsOldTerm ( RDFTermKind term ) +{ + + if ( (kRDFTerm_FirstOld <= term) && (term <= kRDFTerm_LastOld) ) return true; + return false; + +} // IsOldTerm + +// ------------------------------------------------------------------------------------------------- +// IsPropertyElementName +// --------------------- +// +// 7.2.6 propertyElementURIs +// anyURI - ( coreSyntaxTerms | rdf:Description | oldTerms ) + +static bool +IsPropertyElementName ( RDFTermKind term ) +{ + + if ( (term == kRDFTerm_Description) || IsOldTerm ( term ) ) return false; + return (! IsCoreSyntaxTerm ( term )); + +} // IsPropertyElementName + +// ================================================================================================= +// AddChildNode +// ============ + +static XMP_Node * +AddChildNode ( XMP_Node * xmpParent, const XML_Node & xmlNode, const XMP_StringPtr value, bool isTopLevel ) +{ + #if 0 + cout << "AddChildNode, parent = " << xmpParent->name << ", child = " << xmlNode.name; + cout << ", value = \"" << value << '"'; + if ( isTopLevel ) cout << ", top level"; + cout << endl; + #endif + + if ( xmlNode.ns.empty() ) { + XMP_Throw ( "XML namespace required for all elements and attributes", kXMPErr_BadRDF ); + } + + XMP_StringPtr childName = xmlNode.name.c_str(); + const bool isArrayItem = (xmlNode.name == "rdf:li"); + const bool isValueNode = (xmlNode.name == "rdf:value"); + XMP_OptionBits childOptions = 0; + + if ( isTopLevel ) { + + // Lookup the schema node, adjust the XMP parent pointer. + XMP_Assert ( xmpParent->parent == 0 ); // Incoming parent must be the tree root. + XMP_Node * schemaNode = FindSchemaNode ( xmpParent, xmlNode.ns.c_str(), kXMP_CreateNodes ); + if ( schemaNode->options & kXMP_NewImplicitNode ) schemaNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. + // *** Should use "opt &= ~flag" (no conditional), need runtime check for proper 32 bit code. + xmpParent = schemaNode; + + // If this is an alias set the isAlias flag in the node and the hasAliases flag in the tree. + if ( sRegisteredAliasMap->find ( xmlNode.name ) != sRegisteredAliasMap->end() ) { + childOptions |= kXMP_PropIsAlias; + schemaNode->parent->options |= kXMP_PropHasAliases; + } + + } + + // Make sure that this is not a duplicate of a named node. + if ( ! (isArrayItem | isValueNode) ) { + if ( FindChildNode ( xmpParent, childName, kXMP_ExistingOnly ) != 0 ) { + XMP_Throw ( "Duplicate property or field node", kXMPErr_BadXMP ); + } + + } + + // Add the new child to the XMP parent node. + XMP_Node * newChild = new XMP_Node ( xmpParent, childName, value, childOptions ); + if ( (! isValueNode) || xmpParent->children.empty() ) { + xmpParent->children.push_back ( newChild ); + } else { + xmpParent->children.insert ( xmpParent->children.begin(), newChild ); + } + if ( isValueNode ) { + if ( isTopLevel || (! (xmpParent->options & kXMP_PropValueIsStruct)) ) XMP_Throw ( "Misplaced rdf:value element", kXMPErr_BadRDF ); + xmpParent->options |= kRDF_HasValueElem; + } + + if ( isArrayItem ) { + if ( ! (xmpParent->options & kXMP_PropValueIsArray) ) XMP_Throw ( "Misplaced rdf:li element", kXMPErr_BadRDF ); + newChild->name = kXMP_ArrayItemName; + #if 0 // *** XMP_DebugBuild + newChild->_namePtr = newChild->name.c_str(); + #endif + } + + return newChild; + +} // AddChildNode + + +// ================================================================================================= +// AddQualifierNode +// ================ + +static XMP_Node * +AddQualifierNode ( XMP_Node * xmpParent, const XMP_VarString & name, const XMP_VarString & value ) +{ + + #if 0 + cout << "AddQualifierNode, parent = " << xmpParent->name << ", name = " << name; + cout << ", value = \"" << value << '"' << endl; + #endif + + const bool isLang = (name == "xml:lang"); + const bool isType = (name == "rdf:type"); + + XMP_Node * newQual = 0; + + newQual = new XMP_Node ( xmpParent, name, value, kXMP_PropIsQualifier ); + + if ( ! (isLang | isType) ) { + xmpParent->qualifiers.push_back ( newQual ); + } else if ( isLang ) { + if ( xmpParent->qualifiers.empty() ) { + xmpParent->qualifiers.push_back ( newQual ); + } else { + xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin(), newQual ); + } + xmpParent->options |= kXMP_PropHasLang; + } else { + XMP_Assert ( isType ); + if ( xmpParent->qualifiers.empty() ) { + xmpParent->qualifiers.push_back ( newQual ); + } else { + size_t offset = 0; + if ( XMP_PropHasLang ( xmpParent->options ) ) offset = 1; + xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin()+offset, newQual ); + } + xmpParent->options |= kXMP_PropHasType; + } + + xmpParent->options |= kXMP_PropHasQualifiers; + + return newQual; + +} // AddQualifierNode + + +// ================================================================================================= +// AddQualifierNode +// ================ + +static XMP_Node * +AddQualifierNode ( XMP_Node * xmpParent, const XML_Node & attr ) +{ + if ( attr.ns.empty() ) { + XMP_Throw ( "XML namespace required for all elements and attributes", kXMPErr_BadRDF ); + } + + return AddQualifierNode ( xmpParent, attr.name, attr.value ); + +} // AddQualifierNode + + +// ================================================================================================= +// FixupQualifiedNode +// ================== +// +// The parent is an RDF pseudo-struct containing an rdf:value field. Fix the XMP data model. The +// rdf:value node must be the first child, the other children are qualifiers. The form, value, and +// children of the rdf:value node are the real ones. The rdf:value node's qualifiers must be added +// to the others. + +static void +FixupQualifiedNode ( XMP_Node * xmpParent ) +{ + size_t qualNum, qualLim; + size_t childNum, childLim; + + XMP_Enforce ( (xmpParent->options & kXMP_PropValueIsStruct) && (! xmpParent->children.empty()) ); + + XMP_Node * valueNode = xmpParent->children[0]; + XMP_Enforce ( valueNode->name == "rdf:value" ); + + xmpParent->qualifiers.reserve ( xmpParent->qualifiers.size() + xmpParent->children.size() + valueNode->qualifiers.size() ); + + // Move the qualifiers on the value node to the parent. Make sure an xml:lang qualifier stays at + // the front. Check for duplicate names between the value node's qualifiers and the parent's + // children. The parent's children are about to become qualifiers. Check here, between the + // groups. Intra-group duplicates are caught by AddChildNode. + + qualNum = 0; + qualLim = valueNode->qualifiers.size(); + + if ( valueNode->options & kXMP_PropHasLang ) { + + if ( xmpParent->options & kXMP_PropHasLang ) XMP_Throw ( "Redundant xml:lang for rdf:value element", kXMPErr_BadXMP ); + + XMP_Node * langQual = valueNode->qualifiers[0]; + + XMP_Assert ( langQual->name == "xml:lang" ); + langQual->parent = xmpParent; + xmpParent->options |= kXMP_PropHasLang; + + if ( xmpParent->qualifiers.empty() ) { + xmpParent->qualifiers.push_back ( langQual ); // *** Should use utilities to add qual & set parent. + } else { + xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin(), langQual ); + } + valueNode->qualifiers[0] = 0; // We just moved it to the parent. + + qualNum = 1; // Start the remaining copy after the xml:lang qualifier. + + } + + for ( ; qualNum != qualLim; ++qualNum ) { + + XMP_Node * currQual = valueNode->qualifiers[qualNum]; + if ( FindChildNode ( xmpParent, currQual->name.c_str(), kXMP_ExistingOnly ) != 0 ) { + XMP_Throw ( "Duplicate qualifier node", kXMPErr_BadXMP ); + } + + currQual->parent = xmpParent; + xmpParent->qualifiers.push_back ( currQual ); + valueNode->qualifiers[qualNum] = 0; // We just moved it to the parent. + + } + + valueNode->qualifiers.clear(); // ! There should be nothing but null pointers. + + // Change the parent's other children into qualifiers. This loop starts at 1, child 0 is the + // rdf:value node. Put xml:lang at the front, append all others. + + for ( childNum = 1, childLim = xmpParent->children.size(); childNum != childLim; ++childNum ) { + + XMP_Node * currQual = xmpParent->children[childNum]; + + bool isLang = (currQual->name == "xml:lang"); + + currQual->options |= kXMP_PropIsQualifier; + currQual->parent = xmpParent; + + if ( isLang ) { + if ( xmpParent->options & kXMP_PropHasLang ) XMP_Throw ( "Duplicate xml:lang qualifier", kXMPErr_BadXMP ); + xmpParent->options |= kXMP_PropHasLang; + } else if ( currQual->name == "rdf:type" ) { + xmpParent->options |= kXMP_PropHasType; + } + + if ( (! isLang) || xmpParent->qualifiers.empty() ) { + xmpParent->qualifiers.push_back ( currQual ); + } else { + xmpParent->qualifiers.insert ( xmpParent->qualifiers.begin(), currQual ); + } + xmpParent->children[childNum] = 0; // We just moved it to the qualifers. + + } + + if ( ! xmpParent->qualifiers.empty() ) xmpParent->options |= kXMP_PropHasQualifiers; + + // Move the options and value last, other checks need the parent's original options. Move the + // value node's children to be the parent's children. Delete the now useless value node. + + XMP_Assert ( xmpParent->options & (kXMP_PropValueIsStruct | kRDF_HasValueElem) ); + xmpParent->options &= ~ (kXMP_PropValueIsStruct | kRDF_HasValueElem); + xmpParent->options |= valueNode->options; + + xmpParent->value.swap ( valueNode->value ); + #if 0 // *** XMP_DebugBuild + xmpParent->_valuePtr = xmpParent->value.c_str(); + #endif + + xmpParent->children[0] = 0; // ! Remove the value node itself before the swap. + xmpParent->children.swap ( valueNode->children ); + + for ( size_t childNum = 0, childLim = xmpParent->children.size(); childNum != childLim; ++childNum ) { + XMP_Node * currChild = xmpParent->children[childNum]; + currChild->parent = xmpParent; + } + + delete valueNode; + +} // FixupQualifiedNode + + +// ================================================================================================= +// ProcessRDF +// ========== +// +// Parse the XML tree of the RDF and build the corresponding XMP tree. + +// *** Throw an exception if no XMP is found? By option? +// *** Do parsing exceptions cause the partial tree to be deleted? + +void ProcessRDF ( XMP_Node * xmpTree, const XML_Node & rdfNode, XMP_OptionBits options ) +{ + IgnoreParam(options); + + RDF_RDF ( xmpTree, rdfNode ); + +} // ProcessRDF + + +// ================================================================================================= +// RDF_RDF +// ======= +// +// 7.2.9 RDF +// start-element ( URI == rdf:RDF, attributes == set() ) +// nodeElementList +// end-element() +// +// The top level rdf:RDF node. It can only have xmlns attributes, which have already been removed +// during construction of the XML tree. + +static void +RDF_RDF ( XMP_Node * xmpTree, const XML_Node & xmlNode ) +{ + + if ( ! xmlNode.attrs.empty() ) XMP_Throw ( "Invalid attributes of rdf:RDF element", kXMPErr_BadRDF ); + RDF_NodeElementList ( xmpTree, xmlNode, kIsTopLevel ); + +} // RDF_RDF + + +// ================================================================================================= +// RDF_NodeElementList +// =================== +// +// 7.2.10 nodeElementList +// ws* ( nodeElement ws* )* + +static void +RDF_NodeElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ) +{ + XMP_Assert ( isTopLevel ); + + XML_cNodePos currChild = xmlParent.content.begin(); // *** Change these loops to the indexed pattern. + XML_cNodePos endChild = xmlParent.content.end(); + + for ( ; currChild != endChild; ++currChild ) { + if ( (*currChild)->IsWhitespaceNode() ) continue; + RDF_NodeElement ( xmpParent, **currChild, isTopLevel ); + } + +} // RDF_NodeElementList + + +// ================================================================================================= +// RDF_NodeElement +// =============== +// +// 7.2.5 nodeElementURIs +// anyURI - ( coreSyntaxTerms | rdf:li | oldTerms ) +// +// 7.2.11 nodeElement +// start-element ( URI == nodeElementURIs, +// attributes == set ( ( idAttr | nodeIdAttr | aboutAttr )?, propertyAttr* ) ) +// propertyEltList +// end-element() +// +// A node element URI is rdf:Description or anything else that is not an RDF term. + +static void +RDF_NodeElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + RDFTermKind nodeTerm = GetRDFTermKind ( xmlNode.name ); + if ( (nodeTerm != kRDFTerm_Description) && (nodeTerm != kRDFTerm_Other) ) { + XMP_Throw ( "Node element must be rdf:Description or typedNode", kXMPErr_BadRDF ); + } + + if ( isTopLevel && (nodeTerm == kRDFTerm_Other) ) { + XMP_Throw ( "Top level typedNode not allowed", kXMPErr_BadXMP ); + } else { + RDF_NodeElementAttrs ( xmpParent, xmlNode, isTopLevel ); + RDF_PropertyElementList ( xmpParent, xmlNode, isTopLevel ); + } + +} // RDF_NodeElement + + +// ================================================================================================= +// RDF_NodeElementAttrs +// ==================== +// +// 7.2.7 propertyAttributeURIs +// anyURI - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms ) +// +// 7.2.11 nodeElement +// start-element ( URI == nodeElementURIs, +// attributes == set ( ( idAttr | nodeIdAttr | aboutAttr )?, propertyAttr* ) ) +// propertyEltList +// end-element() +// +// Process the attribute list for an RDF node element. A property attribute URI is anything other +// than an RDF term. The rdf:ID and rdf:nodeID attributes are simply ignored, as are rdf:about +// attributes on inner nodes. + +static const XMP_OptionBits kExclusiveAttrMask = (kRDFMask_ID | kRDFMask_nodeID | kRDFMask_about); + +static void +RDF_NodeElementAttrs ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + XMP_OptionBits exclusiveAttrs = 0; // Used to detect attributes that are mutually exclusive. + + XML_cNodePos currAttr = xmlNode.attrs.begin(); + XML_cNodePos endAttr = xmlNode.attrs.end(); + + for ( ; currAttr != endAttr; ++currAttr ) { + + RDFTermKind attrTerm = GetRDFTermKind ( (*currAttr)->name ); + + switch ( attrTerm ) { + + case kRDFTerm_ID : + case kRDFTerm_nodeID : + case kRDFTerm_about : + + if ( exclusiveAttrs & kExclusiveAttrMask ) XMP_Throw ( "Mutally exclusive about, ID, nodeID attributes", kXMPErr_BadRDF ); + exclusiveAttrs |= (1 << attrTerm); + + if ( isTopLevel && (attrTerm == kRDFTerm_about) ) { + // This is the rdf:about attribute on a top level node. Set the XMP tree name if + // it doesn't have a name yet. Make sure this name matches the XMP tree name. + XMP_Assert ( xmpParent->parent == 0 ); // Must be the tree root node. + if ( xmpParent->name.empty() ) { + xmpParent->name = (*currAttr)->value; + } else if ( ! (*currAttr)->value.empty() ) { + if ( xmpParent->name != (*currAttr)->value ) XMP_Throw ( "Mismatched top level rdf:about values", kXMPErr_BadXMP ); + } + } + + break; + + case kRDFTerm_Other : + AddChildNode ( xmpParent, **currAttr, (*currAttr)->value.c_str(), isTopLevel ); + break; + + default : + XMP_Throw ( "Invalid nodeElement attribute", kXMPErr_BadRDF ); + + } + + } + +} // RDF_NodeElementAttrs + + +// ================================================================================================= +// RDF_PropertyElementList +// ======================= +// +// 7.2.13 propertyEltList +// ws* ( propertyElt ws* )* + +static void +RDF_PropertyElementList ( XMP_Node * xmpParent, const XML_Node & xmlParent, bool isTopLevel ) +{ + XML_cNodePos currChild = xmlParent.content.begin(); + XML_cNodePos endChild = xmlParent.content.end(); + + for ( ; currChild != endChild; ++currChild ) { + if ( (*currChild)->IsWhitespaceNode() ) continue; + if ( (*currChild)->kind != kElemNode ) { + XMP_Throw ( "Expected property element node not found", kXMPErr_BadRDF ); + } + RDF_PropertyElement ( xmpParent, **currChild, isTopLevel ); + } + +} // RDF_PropertyElementList + + +// ================================================================================================= +// RDF_PropertyElement +// =================== +// +// 7.2.14 propertyElt +// resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | +// parseTypeResourcePropertyElt | parseTypeCollectionPropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt +// +// 7.2.15 resourcePropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr? ) ) +// ws* nodeElement ws* +// end-element() +// +// 7.2.16 literalPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, datatypeAttr?) ) +// text() +// end-element() +// +// 7.2.17 parseTypeLiteralPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseLiteral ) ) +// literal +// end-element() +// +// 7.2.18 parseTypeResourcePropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseResource ) ) +// propertyEltList +// end-element() +// +// 7.2.19 parseTypeCollectionPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseCollection ) ) +// nodeElementList +// end-element() +// +// 7.2.20 parseTypeOtherPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseOther ) ) +// propertyEltList +// end-element() +// +// 7.2.21 emptyPropertyElt +// start-element ( URI == propertyElementURIs, +// attributes == set ( idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr* ) ) +// end-element() +// +// The various property element forms are not distinguished by the XML element name, but by their +// attributes for the most part. The exceptions are resourcePropertyElt and literalPropertyElt. They +// are distinguished by their XML element content. +// +// NOTE: The RDF syntax does not explicitly include the xml:lang attribute although it can appear in +// many of these. We have to allow for it in the attribute counts below. + +static void +RDF_PropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + RDFTermKind nodeTerm = GetRDFTermKind ( xmlNode.name ); + if ( ! IsPropertyElementName ( nodeTerm ) ) XMP_Throw ( "Invalid property element name", kXMPErr_BadRDF ); + + if ( xmlNode.attrs.size() > 3 ) { + + // Only an emptyPropertyElt can have more than 3 attributes. + RDF_EmptyPropertyElement ( xmpParent, xmlNode, isTopLevel ); + + } else { + + // Look through the attributes for one that isn't rdf:ID or xml:lang, it will usually tell + // what we should be dealing with. The called routines must verify their specific syntax! + + XML_cNodePos currAttr = xmlNode.attrs.begin(); + XML_cNodePos endAttr = xmlNode.attrs.end(); + XMP_VarString * attrName = 0; + + for ( ; currAttr != endAttr; ++currAttr ) { + attrName = &((*currAttr)->name); + if ( (*attrName != "xml:lang") && (*attrName != "rdf:ID") ) break; + } + + if ( currAttr != endAttr ) { + + XMP_Assert ( attrName != 0 ); + XMP_VarString& attrValue = (*currAttr)->value; + + if ( *attrName == "rdf:datatype" ) { + RDF_LiteralPropertyElement ( xmpParent, xmlNode, isTopLevel ); + } else if ( *attrName != "rdf:parseType" ) { + RDF_EmptyPropertyElement ( xmpParent, xmlNode, isTopLevel ); + } else if ( attrValue == "Literal" ) { + RDF_ParseTypeLiteralPropertyElement ( xmpParent, xmlNode, isTopLevel ); + } else if ( attrValue == "Resource" ) { + RDF_ParseTypeResourcePropertyElement ( xmpParent, xmlNode, isTopLevel ); + } else if ( attrValue == "Collection" ) { + RDF_ParseTypeCollectionPropertyElement ( xmpParent, xmlNode, isTopLevel ); + } else { + RDF_ParseTypeOtherPropertyElement ( xmpParent, xmlNode, isTopLevel ); + } + + } else { + + // Only rdf:ID and xml:lang, could be a resourcePropertyElt, a literalPropertyElt, or an. + // emptyPropertyElt. Look at the child XML nodes to decide which. + + if ( xmlNode.content.empty() ) { + + RDF_EmptyPropertyElement ( xmpParent, xmlNode, isTopLevel ); + + } else { + + XML_cNodePos currChild = xmlNode.content.begin(); + XML_cNodePos endChild = xmlNode.content.end(); + + for ( ; currChild != endChild; ++currChild ) { + if ( (*currChild)->kind != kCDataNode ) break; + } + + if ( currChild == endChild ) { + RDF_LiteralPropertyElement ( xmpParent, xmlNode, isTopLevel ); + } else { + RDF_ResourcePropertyElement ( xmpParent, xmlNode, isTopLevel ); + } + + } + + } + + } + +} // RDF_PropertyElement + + +// ================================================================================================= +// RDF_ResourcePropertyElement +// =========================== +// +// 7.2.15 resourcePropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr? ) ) +// ws* nodeElement ws* +// end-element() +// +// This handles structs using an rdf:Description node, arrays using rdf:Bag/Seq/Alt, and typedNodes. +// It also catches and cleans up qualified properties written with rdf:Description and rdf:value. + +static void +RDF_ResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + if ( isTopLevel && (xmlNode.name == "iX:changes") ) return; // Strip old "punchcard" chaff. + + XMP_Node * newCompound = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); + + XML_cNodePos currAttr = xmlNode.attrs.begin(); + XML_cNodePos endAttr = xmlNode.attrs.end(); + + for ( ; currAttr != endAttr; ++currAttr ) { + XMP_VarString & attrName = (*currAttr)->name; + if ( attrName == "xml:lang" ) { + AddQualifierNode ( newCompound, **currAttr ); + } else if ( attrName == "rdf:ID" ) { + continue; // Ignore all rdf:ID attributes. + } else { + XMP_Throw ( "Invalid attribute for resource property element", kXMPErr_BadRDF ); + } + } + + XML_cNodePos currChild = xmlNode.content.begin(); + XML_cNodePos endChild = xmlNode.content.end(); + + for ( ; currChild != endChild; ++currChild ) { + if ( ! (*currChild)->IsWhitespaceNode() ) break; + } + if ( currChild == endChild ) XMP_Throw ( "Missing child of resource property element", kXMPErr_BadRDF ); + if ( (*currChild)->kind != kElemNode ) XMP_Throw ( "Children of resource property element must be XML elements", kXMPErr_BadRDF ); + + if ( (*currChild)->name == "rdf:Bag" ) { + newCompound->options |= kXMP_PropValueIsArray; + } else if ( (*currChild)->name == "rdf:Seq" ) { + newCompound->options |= kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered; + } else if ( (*currChild)->name == "rdf:Alt" ) { + newCompound->options |= kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate; + } else { + newCompound->options |= kXMP_PropValueIsStruct; + if ( (*currChild)->name != "rdf:Description" ) { + XMP_VarString typeName ( (*currChild)->ns ); + size_t colonPos = (*currChild)->name.find_first_of(':'); + if ( colonPos == XMP_VarString::npos ) XMP_Throw ( "All XML elements must be in a namespace", kXMPErr_BadXMP ); + typeName.append ( (*currChild)->name, colonPos, XMP_VarString::npos ); + AddQualifierNode ( newCompound, XMP_VarString("rdf:type"), typeName ); + } + } + + RDF_NodeElement ( newCompound, **currChild, kNotTopLevel ); + if ( newCompound->options & kRDF_HasValueElem ) { + FixupQualifiedNode ( newCompound ); + } else if ( newCompound->options & kXMP_PropArrayIsAlternate ) { + DetectAltText ( newCompound ); + } + + for ( ++currChild; currChild != endChild; ++currChild ) { + if ( ! (*currChild)->IsWhitespaceNode() ) XMP_Throw ( "Invalid child of resource property element", kXMPErr_BadRDF ); + } + +} // RDF_ResourcePropertyElement + + +// ================================================================================================= +// RDF_LiteralPropertyElement +// ========================== +// +// 7.2.16 literalPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, datatypeAttr?) ) +// text() +// end-element() +// +// Add a leaf node with the text value and qualifiers for the attributes. + +static void +RDF_LiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + XMP_Node * newChild = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); + + XML_cNodePos currAttr = xmlNode.attrs.begin(); + XML_cNodePos endAttr = xmlNode.attrs.end(); + + for ( ; currAttr != endAttr; ++currAttr ) { + XMP_VarString & attrName = (*currAttr)->name; + if ( attrName == "xml:lang" ) { + AddQualifierNode ( newChild, **currAttr ); + } else if ( (attrName == "rdf:ID") || (attrName == "rdf:datatype") ) { + continue; // Ignore all rdf:ID and rdf:datatype attributes. + } else { + XMP_Throw ( "Invalid attribute for literal property element", kXMPErr_BadRDF ); + } + } + + XML_cNodePos currChild = xmlNode.content.begin(); + XML_cNodePos endChild = xmlNode.content.end(); + size_t textSize = 0; + + for ( ; currChild != endChild; ++currChild ) { + if ( (*currChild)->kind != kCDataNode ) XMP_Throw ( "Invalid child of literal property element", kXMPErr_BadRDF ); + textSize += (*currChild)->value.size(); + } + + newChild->value.reserve ( textSize ); + + for ( currChild = xmlNode.content.begin(); currChild != endChild; ++currChild ) { + newChild->value += (*currChild)->value; + } + + #if 0 // *** XMP_DebugBuild + newChild->_valuePtr = newChild->value.c_str(); + #endif + +} // RDF_LiteralPropertyElement + + +// ================================================================================================= +// RDF_ParseTypeLiteralPropertyElement +// =================================== +// +// 7.2.17 parseTypeLiteralPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseLiteral ) ) +// literal +// end-element() + +static void +RDF_ParseTypeLiteralPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + IgnoreParam(xmpParent); IgnoreParam(xmlNode); IgnoreParam(isTopLevel); + + XMP_Throw ( "ParseTypeLiteral property element not allowed", kXMPErr_BadXMP ); + +} // RDF_ParseTypeLiteralPropertyElement + + +// ================================================================================================= +// RDF_ParseTypeResourcePropertyElement +// ==================================== +// +// 7.2.18 parseTypeResourcePropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseResource ) ) +// propertyEltList +// end-element() +// +// Add a new struct node with a qualifier for the possible rdf:ID attribute. Then process the XML +// child nodes to get the struct fields. + +static void +RDF_ParseTypeResourcePropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + + XMP_Node * newStruct = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); + newStruct->options |= kXMP_PropValueIsStruct; + + XML_cNodePos currAttr = xmlNode.attrs.begin(); + XML_cNodePos endAttr = xmlNode.attrs.end(); + + for ( ; currAttr != endAttr; ++currAttr ) { + XMP_VarString & attrName = (*currAttr)->name; + if ( attrName == "rdf:parseType" ) { + continue; // ! The caller ensured the value is "Resource". + } else if ( attrName == "xml:lang" ) { + AddQualifierNode ( newStruct, **currAttr ); + } else if ( attrName == "rdf:ID" ) { + continue; // Ignore all rdf:ID attributes. + } else { + XMP_Throw ( "Invalid attribute for ParseTypeResource property element", kXMPErr_BadRDF ); + } + } + + RDF_PropertyElementList ( newStruct, xmlNode, kNotTopLevel ); + + if ( newStruct->options & kRDF_HasValueElem ) FixupQualifiedNode ( newStruct ); + + // *** Need to look for arrays using rdf:Description and rdf:type. + +} // RDF_ParseTypeResourcePropertyElement + + +// ================================================================================================= +// RDF_ParseTypeCollectionPropertyElement +// ====================================== +// +// 7.2.19 parseTypeCollectionPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseCollection ) ) +// nodeElementList +// end-element() + +static void +RDF_ParseTypeCollectionPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + IgnoreParam(xmpParent); IgnoreParam(xmlNode); IgnoreParam(isTopLevel); + + XMP_Throw ( "ParseTypeCollection property element not allowed", kXMPErr_BadXMP ); + +} // RDF_ParseTypeCollectionPropertyElement + + +// ================================================================================================= +// RDF_ParseTypeOtherPropertyElement +// ================================= +// +// 7.2.20 parseTypeOtherPropertyElt +// start-element ( URI == propertyElementURIs, attributes == set ( idAttr?, parseOther ) ) +// propertyEltList +// end-element() + +static void +RDF_ParseTypeOtherPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + IgnoreParam(xmpParent); IgnoreParam(xmlNode); IgnoreParam(isTopLevel); + + XMP_Throw ( "ParseTypeOther property element not allowed", kXMPErr_BadXMP ); + +} // RDF_ParseTypeOtherPropertyElement + + +// ================================================================================================= +// RDF_EmptyPropertyElement +// ======================== +// +// 7.2.21 emptyPropertyElt +// start-element ( URI == propertyElementURIs, +// attributes == set ( idAttr?, ( resourceAttr | nodeIdAttr )?, propertyAttr* ) ) +// end-element() +// +// +// +// +// +// +// An emptyPropertyElt is an element with no contained content, just a possibly empty set of +// attributes. An emptyPropertyElt can represent three special cases of simple XMP properties: a +// simple property with an empty value (ns:Prop1), a simple property whose value is a URI +// (ns:Prop2), or a simple property with simple qualifiers (ns:Prop3). An emptyPropertyElt can also +// represent an XMP struct whose fields are all simple and unqualified (ns:Prop4). +// +// It is an error to use both rdf:value and rdf:resource - that can lead to invalid RDF in the +// verbose form written using a literalPropertyElt. +// +// The XMP mapping for an emptyPropertyElt is a bit different from generic RDF, partly for +// design reasons and partly for historical reasons. The XMP mapping rules are: +// 1. If there is an rdf:value attribute then this is a simple property with a text value. +// All other attributes are qualifiers. +// 2. If there is an rdf:resource attribute then this is a simple property with a URI value. +// All other attributes are qualifiers. +// 3. If there are no attributes other than xml:lang, rdf:ID, or rdf:nodeID then this is a simple +// property with an empty value. +// 4. Otherwise this is a struct, the attributes other than xml:lang, rdf:ID, or rdf:nodeID are fields. + +static void +RDF_EmptyPropertyElement ( XMP_Node * xmpParent, const XML_Node & xmlNode, bool isTopLevel ) +{ + bool hasPropertyAttrs = false; + bool hasResourceAttr = false; + bool hasNodeIDAttr = false; + bool hasValueAttr = false; + + const XML_Node * valueNode = 0; // ! Can come from rdf:value or rdf:resource. + + if ( ! xmlNode.content.empty() ) XMP_Throw ( "Nested content not allowed with rdf:resource or property attributes", kXMPErr_BadRDF ); + + // First figure out what XMP this maps to and remember the XML node for a simple value. + + XML_cNodePos currAttr = xmlNode.attrs.begin(); + XML_cNodePos endAttr = xmlNode.attrs.end(); + + for ( ; currAttr != endAttr; ++currAttr ) { + + RDFTermKind attrTerm = GetRDFTermKind ( (*currAttr)->name ); + + switch ( attrTerm ) { + + case kRDFTerm_ID : + // Nothing to do. + break; + + case kRDFTerm_resource : + if ( hasNodeIDAttr ) XMP_Throw ( "Empty property element can't have both rdf:resource and rdf:nodeID", kXMPErr_BadRDF ); + if ( hasValueAttr ) XMP_Throw ( "Empty property element can't have both rdf:value and rdf:resource", kXMPErr_BadXMP ); + hasResourceAttr = true; + if ( ! hasValueAttr ) valueNode = *currAttr; + break; + + case kRDFTerm_nodeID : + if ( hasResourceAttr ) XMP_Throw ( "Empty property element can't have both rdf:resource and rdf:nodeID", kXMPErr_BadRDF ); + hasNodeIDAttr = true; + break; + + case kRDFTerm_Other : + if ( (*currAttr)->name == "rdf:value" ) { + if ( hasResourceAttr ) XMP_Throw ( "Empty property element can't have both rdf:value and rdf:resource", kXMPErr_BadXMP ); + hasValueAttr = true; + valueNode = *currAttr; + } else if ( (*currAttr)->name != "xml:lang" ) { + hasPropertyAttrs = true; + } + break; + + default : + XMP_Throw ( "Unrecognized attribute of empty property element", kXMPErr_BadRDF ); + break; + + } + + } + + // Create the right kind of child node and visit the attributes again to add the fields or qualifiers. + // ! Because of implementation vagaries, the xmpParent is the tree root for top level properties. + // ! The schema is found, created if necessary, by AddChildNode. + + XMP_Node * childNode = AddChildNode ( xmpParent, xmlNode, "", isTopLevel ); + bool childIsStruct = false; + + if ( hasValueAttr | hasResourceAttr ) { + childNode->value = valueNode->value; + if ( ! hasValueAttr ) childNode->options |= kXMP_PropValueIsURI; // ! Might have both rdf:value and rdf:resource. + } else if ( hasPropertyAttrs ) { + childNode->options |= kXMP_PropValueIsStruct; + childIsStruct = true; + } + + currAttr = xmlNode.attrs.begin(); + endAttr = xmlNode.attrs.end(); + + for ( ; currAttr != endAttr; ++currAttr ) { + + if ( *currAttr == valueNode ) continue; // Skip the rdf:value or rdf:resource attribute holding the value. + RDFTermKind attrTerm = GetRDFTermKind ( (*currAttr)->name ); + + switch ( attrTerm ) { + + case kRDFTerm_ID : + case kRDFTerm_nodeID : + break; // Ignore all rdf:ID and rdf:nodeID attributes.w + + case kRDFTerm_resource : + AddQualifierNode ( childNode, **currAttr ); + break; + + case kRDFTerm_Other : + if ( (! childIsStruct) || (*currAttr)->name == "xml:lang" ) { + AddQualifierNode ( childNode, **currAttr ); + } else { + AddChildNode ( childNode, **currAttr, (*currAttr)->value.c_str(), false ); + } + break; + + default : + XMP_Throw ( "Unrecognized attribute of empty property element", kXMPErr_BadRDF ); + break; + + } + + } + +} // RDF_EmptyPropertyElement + + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.cpp b/vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.cpp new file mode 100644 index 0000000..123c502 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.cpp @@ -0,0 +1,1665 @@ +// ================================================================================================= +// Copyright 2004-2007 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. +// ================================================================================================= + +#include "XMP_Const.h" + +#if UnicodeTestBuild + #include + #include + #define UC_Assert assert + #define UC_Throw(m,k) throw std::logic_error ( m ) +#else + #define UC_Assert(cond) /* Nothing for now, should be XMP_Assert. */ + #define UC_Throw(msg,id) throw XMP_Error ( id, msg ) +#endif + +#include "UnicodeConversions.hpp" + +using namespace std; + +// ================================================================================================= + +// *** Look into using asm inlines, e.g. count-leading bits for multi-byte UTF-8. + +CodePoint_to_UTF16_Proc CodePoint_to_UTF16BE = 0; +CodePoint_to_UTF16_Proc CodePoint_to_UTF16LE = 0; + +CodePoint_from_UTF16_Proc CodePoint_from_UTF16BE = 0; +CodePoint_from_UTF16_Proc CodePoint_from_UTF16LE = 0; + +UTF8_to_UTF16_Proc UTF8_to_UTF16BE = 0; +UTF8_to_UTF16_Proc UTF8_to_UTF16LE = 0; +UTF8_to_UTF32_Proc UTF8_to_UTF32BE = 0; +UTF8_to_UTF32_Proc UTF8_to_UTF32LE = 0; + +UTF16_to_UTF8_Proc UTF16BE_to_UTF8 = 0; +UTF16_to_UTF8_Proc UTF16LE_to_UTF8 = 0; +UTF32_to_UTF8_Proc UTF32BE_to_UTF8 = 0; +UTF32_to_UTF8_Proc UTF32LE_to_UTF8 = 0; + +UTF8_to_UTF16_Proc UTF8_to_UTF16Native = 0; +UTF8_to_UTF32_Proc UTF8_to_UTF32Native = 0; +UTF16_to_UTF8_Proc UTF16Native_to_UTF8 = 0; +UTF32_to_UTF8_Proc UTF32Native_to_UTF8 = 0; + +UTF16_to_UTF32_Proc UTF16BE_to_UTF32BE = 0; +UTF16_to_UTF32_Proc UTF16BE_to_UTF32LE = 0; +UTF16_to_UTF32_Proc UTF16LE_to_UTF32BE = 0; +UTF16_to_UTF32_Proc UTF16LE_to_UTF32LE = 0; + +UTF32_to_UTF16_Proc UTF32BE_to_UTF16BE = 0; +UTF32_to_UTF16_Proc UTF32BE_to_UTF16LE = 0; +UTF32_to_UTF16_Proc UTF32LE_to_UTF16BE = 0; +UTF32_to_UTF16_Proc UTF32LE_to_UTF16LE = 0; + +// ------------------------------------------------------------------------------------------------- + +static size_t swap32to16Offset = 0; // Offset to "convert" a swapped UTF32 pointer into a swapped UTF16 pointer. + +// ------------------------------------------------------------------------------------------------- + +static void CodePoint_to_UTF16Nat ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ); +static void CodePoint_to_UTF16Swp ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ); + +static void CodePoint_from_UTF16Nat ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ); +static void CodePoint_from_UTF16Swp ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ); + +// ------------------------------------------------------------------------------------------------- + +static void UTF8_to_UTF16Nat ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf8Read, size_t * utf16Written ); + +static void UTF8_to_UTF16Swp ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf8Read, size_t * utf16Written ); + +static void UTF8_to_UTF32Nat ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf8Read, size_t * utf32Written ); + +static void UTF8_to_UTF32Swp ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf8Read, size_t * utf32Written ); + +// ------------------------------------------------------------------------------------------------- + +static void UTF16Nat_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf16Read, size_t * utf8Written ); + +static void UTF16Swp_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf16Read, size_t * utf8Written ); + +static void UTF32Nat_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf32Read, size_t * utf8Written ); + +static void UTF32Swp_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf32Read, size_t * utf8Written ); + +// ------------------------------------------------------------------------------------------------- + +static void UTF16Nat_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ); + +static void UTF16Nat_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ); + +static void UTF16Swp_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ); + +static void UTF16Swp_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ); + +// ------------------------------------------------------------------------------------------------- + +static void UTF32Nat_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ); + +static void UTF32Nat_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ); + +static void UTF32Swp_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ); + +static void UTF32Swp_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ); + +// ================================================================================================= + +void InitializeUnicodeConversions() +{ + UC_Assert ( (sizeof(UTF8Unit) == 1) && (sizeof(UTF16Unit) == 2) && (sizeof(UTF32Unit) == 4) ); + + UTF16Unit u16 = 0x00FF; + bool bigEndian = (*((UTF8Unit*)&u16) == 0); + + UTF8_to_UTF16Native = UTF8_to_UTF16Nat; + UTF8_to_UTF32Native = UTF8_to_UTF32Nat; + UTF16Native_to_UTF8 = UTF16Nat_to_UTF8; + UTF32Native_to_UTF8 = UTF32Nat_to_UTF8; + + if ( bigEndian ) { + + swap32to16Offset = 0; + + CodePoint_to_UTF16BE = CodePoint_to_UTF16Nat; + CodePoint_to_UTF16LE = CodePoint_to_UTF16Swp; + + CodePoint_from_UTF16BE = CodePoint_from_UTF16Nat; + CodePoint_from_UTF16LE = CodePoint_from_UTF16Swp; + + UTF8_to_UTF16BE = UTF8_to_UTF16Nat; + UTF8_to_UTF16LE = UTF8_to_UTF16Swp; + UTF8_to_UTF32BE = UTF8_to_UTF32Nat; + UTF8_to_UTF32LE = UTF8_to_UTF32Swp; + + UTF16BE_to_UTF8 = UTF16Nat_to_UTF8; + UTF16LE_to_UTF8 = UTF16Swp_to_UTF8; + UTF32BE_to_UTF8 = UTF32Nat_to_UTF8; + UTF32LE_to_UTF8 = UTF32Swp_to_UTF8; + + UTF16BE_to_UTF32BE = UTF16Nat_to_UTF32Nat; + UTF16BE_to_UTF32LE = UTF16Nat_to_UTF32Swp; + UTF16LE_to_UTF32BE = UTF16Swp_to_UTF32Nat; + UTF16LE_to_UTF32LE = UTF16Swp_to_UTF32Swp; + + UTF32BE_to_UTF16BE = UTF32Nat_to_UTF16Nat; + UTF32BE_to_UTF16LE = UTF32Nat_to_UTF16Swp; + UTF32LE_to_UTF16BE = UTF32Swp_to_UTF16Nat; + UTF32LE_to_UTF16LE = UTF32Swp_to_UTF16Swp; + + } else { + + swap32to16Offset = 1; // ! Offset in UTF16 units! + + CodePoint_to_UTF16BE = CodePoint_to_UTF16Swp; + CodePoint_to_UTF16LE = CodePoint_to_UTF16Nat; + + CodePoint_from_UTF16BE = CodePoint_from_UTF16Swp; + CodePoint_from_UTF16LE = CodePoint_from_UTF16Nat; + + UTF8_to_UTF16BE = UTF8_to_UTF16Swp; + UTF8_to_UTF16LE = UTF8_to_UTF16Nat; + UTF8_to_UTF32BE = UTF8_to_UTF32Swp; + UTF8_to_UTF32LE = UTF8_to_UTF32Nat; + + UTF16BE_to_UTF8 = UTF16Swp_to_UTF8; + UTF16LE_to_UTF8 = UTF16Nat_to_UTF8; + UTF32BE_to_UTF8 = UTF32Swp_to_UTF8; + UTF32LE_to_UTF8 = UTF32Nat_to_UTF8; + + UTF16BE_to_UTF32BE = UTF16Swp_to_UTF32Swp; + UTF16BE_to_UTF32LE = UTF16Swp_to_UTF32Nat; + UTF16LE_to_UTF32BE = UTF16Nat_to_UTF32Swp; + UTF16LE_to_UTF32LE = UTF16Nat_to_UTF32Nat; + + UTF32BE_to_UTF16BE = UTF32Swp_to_UTF16Swp; + UTF32BE_to_UTF16LE = UTF32Swp_to_UTF16Nat; + UTF32LE_to_UTF16BE = UTF32Nat_to_UTF16Swp; + UTF32LE_to_UTF16LE = UTF32Nat_to_UTF16Nat; + + } + +} // InitializeUnicodeConversions + +// ================================================================================================= + +#if XMP_MacBuild && __MWERKS__ + + #define UTF16InSwap(inPtr) UTF16Unit ( __lhbrx ( (void*)(inPtr), 0 ) ) + #define UTF32InSwap(inPtr) UTF32Unit ( __lwbrx ( (void*)(inPtr), 0 ) ) + + #define UTF16OutSwap(outPtr,value) __sthbrx ( value, (void*)(outPtr), 0 ) + #define UTF32OutSwap(outPtr,value) __stwbrx ( value, (void*)(outPtr), 0 ) + +#else + + static inline UTF16Unit UTF16InSwap ( const UTF16Unit * inPtr ) + { + UTF16Unit inUnit = *inPtr; + return (inUnit << 8) | (inUnit >> 8); + } + + static inline UTF32Unit UTF32InSwap ( const UTF32Unit * inPtr ) + { + UTF32Unit inUnit = *inPtr; + return (inUnit << 24) | ((inUnit << 8) & 0x00FF0000) | ((inUnit >> 8) & 0x0000FF00) | (inUnit >> 24); + } + + static inline void UTF16OutSwap ( UTF16Unit * outPtr, const UTF16Unit value ) + { + UTF16Unit outUnit = (value << 8) | (value >> 8); + *outPtr = outUnit; + } + + static inline void UTF32OutSwap ( UTF32Unit * outPtr, const UTF32Unit value ) + { + UTF32Unit outUnit = (value << 24) | ((value << 8) & 0x00FF0000) | ((value >> 8) & 0x0000FF00) | (value >> 24); + *outPtr = outUnit; + } + +#endif + +// ================================================================================================= + +void SwapUTF16 ( const UTF16Unit * utf16In, UTF16Unit * utf16Out, const size_t utf16Len ) +{ + for ( size_t i = 0; i < utf16Len; ++i ) utf16Out[i] = UTF16InSwap(utf16In+i); +} + +void SwapUTF32 ( const UTF32Unit * utf32In, UTF32Unit * utf32Out, const size_t utf32Len ) { + for ( size_t i = 0; i < utf32Len; ++i ) utf32Out[i] = UTF32InSwap(utf32In+i); +} + +// ================================================================================================= + +extern void ToUTF16 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str, bool bigEndian ) +{ + UTF8_to_UTF16_Proc Converter = UTF8_to_UTF16LE; + if ( bigEndian ) Converter = UTF8_to_UTF16BE; + + enum { kBufferSize = 8*1024 }; + UTF16Unit u16Buffer[kBufferSize]; // 16K bytes + size_t readCount, writeCount; + + utf16Str->erase(); + utf16Str->reserve ( 2*utf8Len ); // As good a guess as any. + + while ( utf8Len > 0 ) { + Converter ( utf8In, utf8Len, u16Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf16Str->append ( (const char *)u16Buffer, writeCount*2 ); + utf8In += readCount; + utf8Len -= readCount; + } + +} // ToUTF16 + +// ================================================================================================= + +extern void ToUTF16Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str ) +{ + enum { kBufferSize = 8*1024 }; + UTF16Unit u16Buffer[kBufferSize]; // 16K bytes + size_t readCount, writeCount; + + utf16Str->erase(); + utf16Str->reserve ( 2*utf8Len ); // As good a guess as any. + + while ( utf8Len > 0 ) { + UTF8_to_UTF16Nat ( utf8In, utf8Len, u16Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf16Str->append ( (const char *)u16Buffer, writeCount*2 ); + utf8In += readCount; + utf8Len -= readCount; + } + +} // ToUTF16Native + +// ================================================================================================= + +extern void ToUTF32 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str, bool bigEndian ) +{ + UTF8_to_UTF32_Proc Converter = UTF8_to_UTF32LE; + if ( bigEndian ) Converter = UTF8_to_UTF32BE; + + enum { kBufferSize = 4*1024 }; + UTF32Unit u32Buffer[kBufferSize]; // 16K bytes + size_t readCount, writeCount; + + utf32Str->erase(); + utf32Str->reserve ( 4*utf8Len ); // As good a guess as any. + + while ( utf8Len > 0 ) { + Converter ( utf8In, utf8Len, u32Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf32Str->append ( (const char *)u32Buffer, writeCount*4 ); + utf8In += readCount; + utf8Len -= readCount; + } + +} // ToUTF32 + +// ================================================================================================= + +extern void ToUTF32Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str ) +{ + enum { kBufferSize = 4*1024 }; + UTF32Unit u32Buffer[kBufferSize]; // 16K bytes + size_t readCount, writeCount; + + utf32Str->erase(); + utf32Str->reserve ( 4*utf8Len ); // As good a guess as any. + + while ( utf8Len > 0 ) { + UTF8_to_UTF32Nat ( utf8In, utf8Len, u32Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf32Str->append ( (const char *)u32Buffer, writeCount*4 ); + utf8In += readCount; + utf8Len -= readCount; + } + +} // ToUTF32Native + +// ================================================================================================= + +extern void FromUTF16 ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str, bool bigEndian ) +{ + UTF16_to_UTF8_Proc Converter = UTF16LE_to_UTF8; + if ( bigEndian ) Converter = UTF16BE_to_UTF8; + + enum { kBufferSize = 16*1024 }; + UTF8Unit u8Buffer[kBufferSize]; + size_t readCount, writeCount; + + utf8Str->erase(); + utf8Str->reserve ( 2*utf16Len ); // As good a guess as any. + + while ( utf16Len > 0 ) { + Converter ( utf16In, utf16Len, u8Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf8Str->append ( (const char *)u8Buffer, writeCount ); + utf16In += readCount; + utf16Len -= readCount; + } + +} // FromUTF16 + +// ================================================================================================= + +extern void FromUTF16Native ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str ) +{ + enum { kBufferSize = 16*1024 }; + UTF8Unit u8Buffer[kBufferSize]; + size_t readCount, writeCount; + + utf8Str->erase(); + utf8Str->reserve ( 2*utf16Len ); // As good a guess as any. + + while ( utf16Len > 0 ) { + UTF16Nat_to_UTF8 ( utf16In, utf16Len, u8Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf8Str->append ( (const char *)u8Buffer, writeCount ); + utf16In += readCount; + utf16Len -= readCount; + } + +} // FromUTF16Native + +// ================================================================================================= + +extern void FromUTF32 ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str, bool bigEndian ) +{ + UTF32_to_UTF8_Proc Converter = UTF32LE_to_UTF8; + if ( bigEndian ) Converter = UTF32BE_to_UTF8; + + enum { kBufferSize = 16*1024 }; + UTF8Unit u8Buffer[kBufferSize]; + size_t readCount, writeCount; + + utf8Str->erase(); + utf8Str->reserve ( 2*utf32Len ); // As good a guess as any. + + while ( utf32Len > 0 ) { + Converter ( utf32In, utf32Len, u8Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf8Str->append ( (const char *)u8Buffer, writeCount ); + utf32In += readCount; + utf32Len -= readCount; + } + +} // FromUTF32 + +// ================================================================================================= + +extern void FromUTF32Native ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str ) +{ + enum { kBufferSize = 16*1024 }; + UTF8Unit u8Buffer[kBufferSize]; + size_t readCount, writeCount; + + utf8Str->erase(); + utf8Str->reserve ( 2*utf32Len ); // As good a guess as any. + + while ( utf32Len > 0 ) { + UTF32Nat_to_UTF8 ( utf32In, utf32Len, u8Buffer, kBufferSize, &readCount, &writeCount ); + if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); + utf8Str->append ( (const char *)u8Buffer, writeCount ); + utf32In += readCount; + utf32Len -= readCount; + } + +} // FromUTF32Native + +// ================================================================================================= + +static void CodePoint_to_UTF8_Multi ( const UTF32Unit cpIn, UTF8Unit * utf8Out, const size_t utf8Len, size_t * utf8Written ) +{ + size_t unitCount = 0; + + if ( cpIn > 0x10FFFF ) UC_Throw ( "Bad UTF-32 - out of range", kXMPErr_BadParam ); + if ( (0xD800 <= cpIn) && (cpIn <= 0xDFFF) ) UC_Throw ( "Bad UTF-32 - surrogate code point", kXMPErr_BadParam ); + + // Compute the number of bytes using 6 data bits each. Then see if the highest order bits will + // fit into the leading byte. Write the UTF-8 sequence if there is enough room. + + UTF32Unit temp, mask; + size_t bytesNeeded = 0; + for ( temp = cpIn; temp != 0; temp = temp >> 6 ) ++bytesNeeded; + + temp = cpIn >> ((bytesNeeded-1)*6); // The highest order data bits. + mask = (0x80 >> bytesNeeded) - 1; // Available data bits in the leading byte. + if ( temp > mask ) ++bytesNeeded; + + if ( bytesNeeded > utf8Len ) goto Done; // Not enough room for the output. + unitCount = bytesNeeded; + + temp = cpIn; + for ( --bytesNeeded; bytesNeeded > 0; --bytesNeeded ) { + utf8Out[bytesNeeded] = 0x80 | UTF8Unit ( temp & 0x3F ); + temp = temp >> 6; + } + + mask = ~((1 << (8-unitCount)) - 1); + utf8Out[0] = UTF8Unit ( mask | temp ); + +Done: + *utf8Written = unitCount; + return; + +} // CodePoint_to_UTF8_Multi + +// ================================================================================================= + +void CodePoint_to_UTF8 ( const UTF32Unit cpIn, UTF8Unit * utf8Out, const size_t utf8Len, size_t * utf8Written ) +{ + size_t unitCount = 0; + + UC_Assert ( (utf8Out != 0) && (utf8Written != 0) ); + if ( utf8Len == 0 ) goto Done; + if ( cpIn > 0x7F ) goto MultiByte; // ! Force linear execution path for ASCII. + + if ( utf8Len == 0 ) goto Done; + unitCount = 1; + *utf8Out = UTF8Unit(cpIn); + +Done: + *utf8Written = unitCount; + return; + +MultiByte: + CodePoint_to_UTF8_Multi( cpIn, utf8Out, utf8Len, utf8Written ); + return; + +} // CodePoint_to_UTF8 + +// ================================================================================================= + +static void CodePoint_from_UTF8_Multi ( const UTF8Unit * utf8In, const size_t utf8Len, UTF32Unit * cpOut, size_t * utf8Read ) +{ + UTF8Unit inUnit = *utf8In; + size_t unitCount = 0; + UTF32Unit cp; // ! Avoid gcc complaints about declarations after goto's. + const UTF8Unit * utf8Pos; + + // ------------------------------------------------------------------------------------- + // We've got a multibyte UTF-8 character. The first byte has the number of bytes and the + // highest order data bits. The other bytes each add 6 more data bits. + + #if 0 // This might be a more effcient way to count the bytes. + static XMP_Uns8 kByteCounts[16] = { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 3, 4 }; + size_t bytesNeeded = kByteCounts [ inUnit >> 4 ]; + if ( (bytesNeeded < 2) || ((bytesNeeded == 4) && ((inUnit & 0x08) != 0)) ) { + UC_Throw ( "Invalid UTF-8 sequence length", kXMPErr_BadParam ); + } + #endif + + size_t bytesNeeded = 0; // Count the leading 1 bits in the first byte. + for ( UTF8Unit temp = inUnit; temp > 0x7F; temp = temp << 1 ) ++bytesNeeded; + // *** Consider CPU-specific assembly inline, e.g. cntlzw on PowerPC. + + if ( (bytesNeeded < 2) || (bytesNeeded > 4) ) UC_Throw ( "Invalid UTF-8 sequence length", kXMPErr_BadParam ); + if ( bytesNeeded > utf8Len ) goto Done; // Not enough input in this buffer. + unitCount = bytesNeeded; + + cp = inUnit & ((1 << (7-unitCount)) - 1); // Isolate the initial data bits in the bottom of cp. + + utf8Pos = utf8In + 1; // We've absorbed the first byte. + for ( --bytesNeeded; bytesNeeded > 0; --bytesNeeded, ++utf8Pos ) { + inUnit = *utf8Pos; + if ( (inUnit & UTF8Unit(0xC0)) != UTF8Unit(0x80) ) UC_Throw ( "Invalid UTF-8 data byte", kXMPErr_BadParam ); + cp = (cp << 6) | (inUnit & 0x3F); + } + + if ( cp >= 0xD800 ) { // Skip the next comparisons most of the time. + if ( (0xD800 <= cp) && (cp <= 0xDFFF) ) UC_Throw ( "Bad UTF-8 - surrogate code point", kXMPErr_BadParam ); + if ( cp > 0x10FFFF ) UC_Throw ( "Bad UTF-8 - out of range", kXMPErr_BadParam ); + } + + *cpOut = cp; // ! Don't put after Done, don't write if no input. + +Done: + *utf8Read = unitCount; + return; + +} // CodePoint_from_UTF8_Multi + +// ================================================================================================= + +void CodePoint_from_UTF8 ( const UTF8Unit * utf8In, const size_t utf8Len, UTF32Unit * cpOut, size_t * utf8Read ) +{ + UTF8Unit inUnit; // ! Don't read until we know there is input. + size_t unitCount = 0; + + UC_Assert ( (utf8In != 0) && (cpOut != 0) && (utf8Read != 0) ); + if ( utf8Len == 0 ) goto Done; + inUnit = *utf8In; + if ( inUnit >= 0x80 ) goto MultiByte; // ! Force linear execution path for ASCII. + + unitCount = 1; + *cpOut = inUnit; // ! Don't put after Done, don't write if no input. + +Done: + *utf8Read = unitCount; + return; + +MultiByte: + CodePoint_from_UTF8_Multi ( utf8In, utf8Len, cpOut, utf8Read ); + return; + +} // CodePoint_from_UTF8 + +// ================================================================================================= + +static void CodePoint_to_UTF16Nat_Surrogate ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) +{ + size_t unitCount = 0; + UTF32Unit temp; // ! Avoid gcc complaints about declarations after goto's. + + if ( cpIn > 0x10FFFF ) UC_Throw ( "Bad UTF-32 - out of range", kXMPErr_BadParam ); + if ( utf16Len < 2 ) goto Done; // Not enough room for the output. + + unitCount = 2; + temp = cpIn - 0x10000; + utf16Out[0] = 0xD800 | UTF16Unit ( temp >> 10 ); + utf16Out[1] = 0xDC00 | UTF16Unit ( temp & 0x3FF ); + +Done: + *utf16Written = unitCount; + return; + +} // CodePoint_to_UTF16Nat_Surrogate + +// ================================================================================================= + +static void CodePoint_to_UTF16Nat ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) +{ + size_t unitCount = 0; + + UC_Assert ( (utf16Out != 0) && (utf16Written != 0) ); + if ( utf16Len == 0 ) goto Done; + if ( cpIn >= 0xD800 ) goto CheckSurrogate; // ! Force linear execution path for the BMP. + +InBMP: + unitCount = 1; + *utf16Out = UTF16Unit(cpIn); + +Done: + *utf16Written = unitCount; + return; + +CheckSurrogate: + if ( cpIn > 0xFFFF ) goto SurrogatePair; + if ( cpIn > 0xDFFF ) goto InBMP; + UC_Throw ( "Bad UTF-32 - surrogate code point", kXMPErr_BadParam ); + +SurrogatePair: + CodePoint_to_UTF16Nat_Surrogate ( cpIn, utf16Out, utf16Len, utf16Written ); + return; + +} // CodePoint_to_UTF16Nat + +// ================================================================================================= + +static void CodePoint_from_UTF16Nat_Surrogate ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) +{ + UTF16Unit hiUnit = *utf16In; + size_t unitCount = 0; + UTF16Unit loUnit; // ! Avoid gcc complaints about declarations after goto's. + UTF32Unit cp; + + // ---------------------------------- + // We've got a UTF-16 surrogate pair. + + if ( hiUnit > 0xDBFF ) UC_Throw ( "Bad UTF-16 - leading low surrogate", kXMPErr_BadParam ); + if ( utf16Len < 2 ) goto Done; // Not enough input in this buffer. + + loUnit = *(utf16In+1); + if ( (loUnit < 0xDC00) || (0xDFFF < loUnit) ) UC_Throw ( "Bad UTF-16 - missing low surrogate", kXMPErr_BadParam ); + + unitCount = 2; + cp = (((hiUnit & 0x3FF) << 10) | (loUnit & 0x3FF)) + 0x10000; + + *cpOut = cp; // ! Don't put after Done, don't write if no input. + +Done: + *utf16Read = unitCount; + return; + +} // CodePoint_from_UTF16Nat_Surrogate + +// ================================================================================================= + +static void CodePoint_from_UTF16Nat ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) +{ + UTF16Unit inUnit; // ! Don't read until we know there is input. + size_t unitCount = 0; + + UC_Assert ( (utf16In != 0) && (cpOut != 0) && (utf16Read != 0) ); + if ( utf16Len == 0 ) goto Done; + inUnit = *utf16In; + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) goto SurrogatePair; // ! Force linear execution path for the BMP. + + unitCount = 1; + *cpOut = inUnit; // ! Don't put after Done, don't write if no input. + +Done: + *utf16Read = unitCount; + return; + +SurrogatePair: + CodePoint_from_UTF16Nat_Surrogate ( utf16In, utf16Len, cpOut, utf16Read ); + return; + +} // CodePoint_from_UTF16Nat + +// ================================================================================================= + +static void UTF8_to_UTF16Nat ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf8Read, size_t * utf16Written ) +{ + const UTF8Unit * utf8Pos = utf8In; + UTF16Unit * utf16Pos = utf16Out; + + size_t utf8Left = utf8Len; + size_t utf16Left = utf16Len; + + UC_Assert ( (utf8In != 0) && (utf16Out != 0) && (utf8Read != 0) && (utf16Written != 0) ); + + while ( (utf8Left > 0) && (utf16Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf8Left; + if ( limit > utf16Left ) limit = utf16Left; + for ( i = 0; i < limit; ++i ) { + UTF8Unit inUnit = *utf8Pos; + if ( inUnit > 0x7F ) break; + *utf16Pos = inUnit; + ++utf8Pos; + ++utf16Pos; + } + utf8Left -= i; + utf16Left -= i; + + // Do a run of non-ASCII, it copies multiple input units into 1 or 2 output units. + while ( (utf8Left > 0) && (utf16Left > 0) ) { + UTF32Unit cp; + size_t len8, len16; + UTF8Unit inUnit = *utf8Pos; + if ( inUnit <= 0x7F ) break; + CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, &cp, &len8 ); + if ( len8 == 0 ) goto Done; // The input buffer ends in the middle of a character. + if ( cp <= 0xFFFF ) { + *utf16Pos = UTF16Unit(cp); + len16 = 1; + } else { + CodePoint_to_UTF16Nat_Surrogate ( cp, utf16Pos, utf16Left, &len16 ); + if ( len16 == 0 ) goto Done; // Not enough room in the output buffer. + } + utf8Left -= len8; + utf8Pos += len8; + utf16Left -= len16; + utf16Pos += len16; + } + + } + +Done: // Set the output lengths. + *utf8Read = utf8Len - utf8Left; + *utf16Written = utf16Len - utf16Left; + +} // UTF8_to_UTF16Nat + +// ================================================================================================= + +static void UTF8_to_UTF32Nat ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf8Read, size_t * utf32Written ) +{ + const UTF8Unit * utf8Pos = utf8In; + UTF32Unit * utf32Pos = utf32Out; + + size_t utf8Left = utf8Len; + size_t utf32Left = utf32Len; + + UC_Assert ( (utf8In != 0) && (utf32Out != 0) && (utf8Read != 0) && (utf32Written != 0) ); + + while ( (utf8Left > 0) && (utf32Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf8Left; + if ( limit > utf32Left ) limit = utf32Left; + for ( i = 0; i < limit; ++i ) { + UTF8Unit inUnit = *utf8Pos; + if ( inUnit > 0x7F ) break; + *utf32Pos = inUnit; + ++utf8Pos; + ++utf32Pos; + } + utf8Left -= i; + utf32Left -= i; + + // Do a run of non-ASCII, it copies variable input into 1 output unit. + while ( (utf8Left > 0) && (utf32Left > 0) ) { + size_t len; + UTF8Unit inUnit = *utf8Pos; + if ( inUnit <= 0x7F ) break; + CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, utf32Pos, &len ); + if ( len == 0 ) goto Done; // The input buffer ends in the middle of a character. + utf8Left -= len; + utf8Pos += len; + utf32Left -= 1; + utf32Pos += 1; + } + + } + +Done: // Set the output lengths. + *utf8Read = utf8Len - utf8Left; + *utf32Written = utf32Len - utf32Left; + +} // UTF8_to_UTF32Nat + +// ================================================================================================= + +static void UTF16Nat_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf16Read, size_t * utf8Written ) +{ + const UTF16Unit * utf16Pos = utf16In; + UTF8Unit * utf8Pos = utf8Out; + + size_t utf16Left = utf16Len; + size_t utf8Left = utf8Len; + + UC_Assert ( (utf16In != 0) && (utf8Out != 0) && (utf16Read != 0) && (utf8Written != 0) ); + + while ( (utf16Left > 0) && (utf8Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf16Left; + if ( limit > utf8Left ) limit = utf8Left; + for ( i = 0; i < limit; ++i ) { + UTF16Unit inUnit = *utf16Pos; + if ( inUnit > 0x7F ) break; + *utf8Pos = UTF8Unit(inUnit); + ++utf16Pos; + ++utf8Pos; + } + utf16Left -= i; + utf8Left -= i; + + // Do a run of non-ASCII inside the BMP, it copies 1 input unit into multiple output units. + while ( (utf16Left > 0) && (utf8Left > 0) ) { + size_t len8; + UTF16Unit inUnit = *utf16Pos; + if ( inUnit <= 0x7F ) break; + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; + CodePoint_to_UTF8_Multi ( inUnit, utf8Pos, utf8Left, &len8 ); + if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. + utf16Left -= 1; + utf16Pos += 1; + utf8Left -= len8; + utf8Pos += len8; + } + + // Do a run of surrogate pairs, it copies 2 input units into multiple output units. + while ( (utf16Left > 0) && (utf8Left > 0) ) { + UTF32Unit cp; + size_t len16, len8; + UTF16Unit inUnit = *utf16Pos; + if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; + CodePoint_from_UTF16Nat_Surrogate ( utf16Pos, utf16Left, &cp, &len16 ); + if ( len16 == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. + UC_Assert ( len16 == 2 ); + CodePoint_to_UTF8_Multi ( cp, utf8Pos, utf8Left, &len8 ); + if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. + utf16Left -= len16; + utf16Pos += len16; + utf8Left -= len8; + utf8Pos += len8; + } + + } + +Done: // Set the output lengths. + *utf16Read = utf16Len - utf16Left; + *utf8Written = utf8Len - utf8Left; + +} // UTF16Nat_to_UTF8 + +// ================================================================================================= + +static void UTF32Nat_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf32Read, size_t * utf8Written ) +{ + const UTF32Unit * utf32Pos = utf32In; + UTF8Unit * utf8Pos = utf8Out; + + size_t utf32Left = utf32Len; + size_t utf8Left = utf8Len; + + UC_Assert ( (utf32In != 0) && (utf8Out != 0) && (utf32Read != 0) && (utf8Written != 0) ); + + while ( (utf32Left > 0) && (utf8Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf32Left; + if ( limit > utf8Left ) limit = utf8Left; + for ( i = 0; i < limit; ++i ) { + UTF32Unit inUnit = *utf32Pos; + if ( inUnit > 0x7F ) break; + *utf8Pos = UTF8Unit(inUnit); + ++utf32Pos; + ++utf8Pos; + } + utf32Left -= i; + utf8Left -= i; + + // Do a run of non-ASCII, it copies 1 input unit into multiple output units. + while ( (utf32Left > 0) && (utf8Left > 0) ) { + size_t len; + UTF32Unit inUnit = *utf32Pos; + if ( inUnit <= 0x7F ) break; + CodePoint_to_UTF8_Multi ( inUnit, utf8Pos, utf8Left, &len ); + if ( len == 0 ) goto Done; // Not enough room in the output buffer. + utf32Left -= 1; + utf32Pos += 1; + utf8Left -= len; + utf8Pos += len; + } + + } + +Done: // Set the output lengths. + *utf32Read = utf32Len - utf32Left; + *utf8Written = utf8Len - utf8Left; + +} // UTF32Nat_to_UTF8 + +// ================================================================================================= + +static void UTF16Nat_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ) +{ + const UTF16Unit * utf16Pos = utf16In; + UTF32Unit * utf32Pos = utf32Out; + + size_t utf16Left = utf16Len; + size_t utf32Left = utf32Len; + + UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); + + while ( (utf16Left > 0) && (utf32Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf16Left; + if ( limit > utf32Left ) limit = utf32Left; + for ( i = 0; i < limit; ++i ) { + UTF16Unit inUnit = *utf16Pos; + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; + *utf32Pos = inUnit; + ++utf16Pos; + ++utf32Pos; + } + utf16Left -= i; + utf32Left -= i; + + // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. + while ( (utf16Left > 0) && (utf32Left > 0) ) { + size_t len; + UTF16Unit inUnit = *utf16Pos; + if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; + CodePoint_from_UTF16Nat_Surrogate ( utf16Pos, utf16Left, utf32Pos, &len ); + if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. + UC_Assert ( len == 2 ); + utf16Left -= len; + utf16Pos += len; + utf32Left -= 1; + utf32Pos += 1; + } + + } + +Done: // Set the output lengths. + *utf16Read = utf16Len - utf16Left; + *utf32Written = utf32Len - utf32Left; + +} // UTF16Nat_to_UTF32Nat + +// ================================================================================================= + +static void UTF32Nat_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ) +{ + const UTF32Unit * utf32Pos = utf32In; + UTF16Unit * utf16Pos = utf16Out; + + size_t utf32Left = utf32Len; + size_t utf16Left = utf16Len; + + UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); + + while ( (utf32Left > 0) && (utf16Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf32Left; + if ( limit > utf16Left ) limit = utf16Left; + for ( i = 0; i < limit; ++i ) { + UTF32Unit inUnit = *utf32Pos; + if ( inUnit > 0xFFFF ) break; + *utf16Pos = UTF16Unit(inUnit); + ++utf32Pos; + ++utf16Pos; + } + utf32Left -= i; + utf16Left -= i; + + // Do a run of non-BMP, it copies 1 input unit into 2 output units. + while ( (utf32Left > 0) && (utf16Left > 0) ) { + size_t len; + UTF32Unit inUnit = *utf32Pos; + if ( inUnit <= 0xFFFF ) break; + CodePoint_to_UTF16Nat_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); + if ( len == 0 ) goto Done; // Not enough room in the output buffer. + UC_Assert ( len == 2 ); + utf32Left -= 1; + utf32Pos += 1; + utf16Left -= 2; + utf16Pos += 2; + } + + } + +Done: // Set the output lengths. + *utf32Read = utf32Len - utf32Left; + *utf16Written = utf16Len - utf16Left; + +} // UTF32Nat_to_UTF16Nat + +// ================================================================================================= + +static void CodePoint_to_UTF16Swp_Surrogate ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) +{ + size_t unitCount = 0; + UTF32Unit temp; // ! Avoid gcc complaints about declarations after goto's. + + if ( cpIn > 0x10FFFF ) UC_Throw ( "Bad UTF-32 - out of range", kXMPErr_BadParam ); + if ( utf16Len < 2 ) goto Done; // Not enough room for the output. + + unitCount = 2; + temp = cpIn - 0x10000; + UTF16OutSwap ( &utf16Out[0], (0xD800 | UTF16Unit ( temp >> 10 )) ); + UTF16OutSwap ( &utf16Out[1], (0xDC00 | UTF16Unit ( temp & 0x3FF)) ); + +Done: + *utf16Written = unitCount; + return; + +} // CodePoint_to_UTF16Swp_Surrogate + +// ================================================================================================= + +static void CodePoint_to_UTF16Swp ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ) +{ + size_t unitCount = 0; + + UC_Assert ( (utf16Out != 0) && (utf16Written != 0) ); + if ( utf16Len == 0 ) goto Done; + if ( cpIn >= 0xD800 ) goto CheckSurrogate; // ! Force linear execution path for the BMP. + +InBMP: + unitCount = 1; + UTF16OutSwap ( utf16Out, UTF16Unit(cpIn) ); + +Done: + *utf16Written = unitCount; + return; + +CheckSurrogate: + if ( cpIn > 0xFFFF ) goto SurrogatePair; + if ( cpIn > 0xDFFF ) goto InBMP; + UC_Throw ( "Bad UTF-32 - surrogate code point", kXMPErr_BadParam ); + +SurrogatePair: + CodePoint_to_UTF16Swp_Surrogate ( cpIn, utf16Out, utf16Len, utf16Written ); + return; + +} // CodePoint_to_UTF16Swp + +// ================================================================================================= + +static void CodePoint_from_UTF16Swp_Surrogate ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) +{ + UTF16Unit hiUnit = UTF16InSwap(utf16In); + size_t unitCount = 0; + UTF16Unit loUnit; // ! Avoid gcc complaints about declarations after goto's. + UTF32Unit cp; + + // ---------------------------------- + // We've got a UTF-16 surrogate pair. + + if ( hiUnit > 0xDBFF ) UC_Throw ( "Bad UTF-16 - leading low surrogate", kXMPErr_BadParam ); + if ( utf16Len < 2 ) goto Done; // Not enough input in this buffer. + + loUnit = UTF16InSwap(utf16In+1); + if ( (loUnit < 0xDC00) || (0xDFFF < loUnit) ) UC_Throw ( "Bad UTF-16 - missing low surrogate", kXMPErr_BadParam ); + + unitCount = 2; + cp = (((hiUnit & 0x3FF) << 10) | (loUnit & 0x3FF)) + 0x10000; + + *cpOut = cp; // ! Don't put after Done, don't write if no input. + +Done: + *utf16Read = unitCount; + return; + +} // CodePoint_from_UTF16Swp_Surrogate + +// ================================================================================================= + +static void CodePoint_from_UTF16Swp ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ) +{ + UTF16Unit inUnit; // ! Don't read until we know there is input. + size_t unitCount = 0; + + UC_Assert ( (utf16In != 0) && (cpOut != 0) && (utf16Read != 0) ); + if ( utf16Len == 0 ) goto Done; + inUnit = UTF16InSwap(utf16In); + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) goto SurrogatePair; // ! Force linear execution path for the BMP. + + unitCount = 1; + *cpOut = inUnit; // ! Don't put after Done, don't write if no input. + +Done: + *utf16Read = unitCount; + return; + +SurrogatePair: + CodePoint_from_UTF16Swp_Surrogate ( utf16In, utf16Len, cpOut, utf16Read ); + return; + +} // CodePoint_from_UTF16Swp + +// ================================================================================================= + +static void UTF8_to_UTF16Swp ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf8Read, size_t * utf16Written ) +{ + const UTF8Unit * utf8Pos = utf8In; + UTF16Unit * utf16Pos = utf16Out; + + size_t utf8Left = utf8Len; + size_t utf16Left = utf16Len; + + UC_Assert ( (utf8In != 0) && (utf16Out != 0) && (utf8Read != 0) && (utf16Written != 0) ); + + while ( (utf8Left > 0) && (utf16Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf8Left; + if ( limit > utf16Left ) limit = utf16Left; + for ( i = 0; i < limit; ++i ) { + UTF8Unit inUnit = *utf8Pos; + if ( inUnit > 0x7F ) break; + *utf16Pos = UTF16Unit(inUnit) << 8; // Better than: UTF16OutSwap ( utf16Pos, inUnit ); + ++utf8Pos; + ++utf16Pos; + } + utf8Left -= i; + utf16Left -= i; + + // Do a run of non-ASCII, it copies multiple input units into 1 or 2 output units. + while ( (utf8Left > 0) && (utf16Left > 0) ) { + UTF32Unit cp; + size_t len8, len16; + UTF8Unit inUnit = *utf8Pos; + if ( inUnit <= 0x7F ) break; + CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, &cp, &len8 ); + if ( len8 == 0 ) goto Done; // The input buffer ends in the middle of a character. + if ( cp <= 0xFFFF ) { + UTF16OutSwap ( utf16Pos, UTF16Unit(cp) ); + len16 = 1; + } else { + CodePoint_to_UTF16Swp_Surrogate ( cp, utf16Pos, utf16Left, &len16 ); + if ( len16 == 0 ) goto Done; // Not enough room in the output buffer. + } + utf8Left -= len8; + utf8Pos += len8; + utf16Left -= len16; + utf16Pos += len16; + } + + } + +Done: // Set the output lengths. + *utf8Read = utf8Len - utf8Left; + *utf16Written = utf16Len - utf16Left; + +} // UTF8_to_UTF16Swp + +// ================================================================================================= + +static void UTF8_to_UTF32Swp ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf8Read, size_t * utf32Written ) +{ + const UTF8Unit * utf8Pos = utf8In; + UTF32Unit * utf32Pos = utf32Out; + + size_t utf8Left = utf8Len; + size_t utf32Left = utf32Len; + + UC_Assert ( (utf8In != 0) && (utf32Out != 0) && (utf8Read != 0) && (utf32Written != 0) ); + + while ( (utf8Left > 0) && (utf32Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf8Left; + if ( limit > utf32Left ) limit = utf32Left; + for ( i = 0; i < limit; ++i ) { + UTF8Unit inUnit = *utf8Pos; + if ( inUnit > 0x7F ) break; + *utf32Pos = UTF32Unit(inUnit) << 24; // Better than: UTF32OutSwap ( utf32Pos, inUnit ); + ++utf8Pos; + ++utf32Pos; + } + utf8Left -= i; + utf32Left -= i; + + // Do a run of non-ASCII, it copies variable input into 1 output unit. + while ( (utf8Left > 0) && (utf32Left > 0) ) { + size_t len; + UTF32Unit cp; + UTF8Unit inUnit = *utf8Pos; + if ( inUnit <= 0x7F ) break; + CodePoint_from_UTF8_Multi ( utf8Pos, utf8Left, &cp, &len ); + if ( len == 0 ) goto Done; // The input buffer ends in the middle of a character. + UTF32OutSwap ( utf32Pos, cp ); + utf8Left -= len; + utf8Pos += len; + utf32Left -= 1; + utf32Pos += 1; + } + + } + +Done: // Set the output lengths. + *utf8Read = utf8Len - utf8Left; + *utf32Written = utf32Len - utf32Left; + +} // UTF8_to_UTF32Swp + +// ================================================================================================= + +static void UTF16Swp_to_UTF8 ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf16Read, size_t * utf8Written ) +{ + const UTF16Unit * utf16Pos = utf16In; + UTF8Unit * utf8Pos = utf8Out; + + size_t utf16Left = utf16Len; + size_t utf8Left = utf8Len; + + UC_Assert ( (utf16In != 0) && (utf8Out != 0) && (utf16Read != 0) && (utf8Written != 0) ); + + while ( (utf16Left > 0) && (utf8Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf16Left; + if ( limit > utf8Left ) limit = utf8Left; + for ( i = 0; i < limit; ++i ) { + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( inUnit > 0x7F ) break; + *utf8Pos = UTF8Unit(inUnit); + ++utf16Pos; + ++utf8Pos; + } + utf16Left -= i; + utf8Left -= i; + + // Do a run of non-ASCII inside the BMP, it copies 1 input unit into multiple output units. + while ( (utf16Left > 0) && (utf8Left > 0) ) { + size_t len8; + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( inUnit <= 0x7F ) break; + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; + CodePoint_to_UTF8_Multi ( inUnit, utf8Pos, utf8Left, &len8 ); + if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. + utf16Left -= 1; + utf16Pos += 1; + utf8Left -= len8; + utf8Pos += len8; + } + + // Do a run of surrogate pairs, it copies 2 input units into multiple output units. + while ( (utf16Left > 0) && (utf8Left > 0) ) { + UTF32Unit cp; + size_t len16, len8; + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; + CodePoint_from_UTF16Swp_Surrogate ( utf16Pos, utf16Left, &cp, &len16 ); + if ( len16 == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. + UC_Assert ( len16 == 2 ); + CodePoint_to_UTF8_Multi ( cp, utf8Pos, utf8Left, &len8 ); + if ( len8 == 0 ) goto Done; // Not enough room in the output buffer. + utf16Left -= len16; + utf16Pos += len16; + utf8Left -= len8; + utf8Pos += len8; + } + + } + +Done: // Set the output lengths. + *utf16Read = utf16Len - utf16Left; + *utf8Written = utf8Len - utf8Left; + +} // UTF16Swp_to_UTF8 + +// ================================================================================================= + +static void UTF32Swp_to_UTF8 ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf32Read, size_t * utf8Written ) +{ + const UTF32Unit * utf32Pos = utf32In; + UTF8Unit * utf8Pos = utf8Out; + + size_t utf32Left = utf32Len; + size_t utf8Left = utf8Len; + + UC_Assert ( (utf32In != 0) && (utf8Out != 0) && (utf32Read != 0) && (utf8Written != 0) ); + + while ( (utf32Left > 0) && (utf8Left > 0) ) { + + // Do a run of ASCII, it copies 1 input unit into 1 output unit. + size_t i, limit = utf32Left; + if ( limit > utf8Left ) limit = utf8Left; + for ( i = 0; i < limit; ++i ) { + UTF32Unit cp = UTF32InSwap(utf32Pos); + if ( cp > 0x7F ) break; + *utf8Pos = UTF8Unit(cp); + ++utf32Pos; + ++utf8Pos; + } + utf32Left -= i; + utf8Left -= i; + + // Do a run of non-ASCII, it copies 1 input unit into multiple output units. + while ( (utf32Left > 0) && (utf8Left > 0) ) { + size_t len; + UTF32Unit cp = UTF32InSwap(utf32Pos); + if ( cp <= 0x7F ) break; + CodePoint_to_UTF8_Multi ( cp, utf8Pos, utf8Left, &len ); + if ( len == 0 ) goto Done; // Not enough room in the output buffer. + utf32Left -= 1; + utf32Pos += 1; + utf8Left -= len; + utf8Pos += len; + } + + } + +Done: // Set the output lengths. + *utf32Read = utf32Len - utf32Left; + *utf8Written = utf8Len - utf8Left; + +} // UTF32Swp_to_UTF8 + +// ================================================================================================= + +static void UTF16Swp_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ) +{ + const UTF16Unit * utf16Pos = utf16In; + UTF32Unit * utf32Pos = utf32Out; + + size_t utf16Left = utf16Len; + size_t utf32Left = utf32Len; + + UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); + + while ( (utf16Left > 0) && (utf32Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf16Left; + if ( limit > utf32Left ) limit = utf32Left; + for ( i = 0; i < limit; ++i ) { + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; + *utf32Pos = UTF32Unit(*utf16Pos) << 16; // Better than: UTF32OutSwap ( utf32Pos, inUnit ); + ++utf16Pos; + ++utf32Pos; + } + utf16Left -= i; + utf32Left -= i; + + // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. + while ( (utf16Left > 0) && (utf32Left > 0) ) { + size_t len; + UTF32Unit cp; + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; + CodePoint_from_UTF16Swp_Surrogate ( utf16Pos, utf16Left, &cp, &len ); + if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. + UTF32OutSwap ( utf32Pos, cp ); + UC_Assert ( len == 2 ); + utf16Left -= len; + utf16Pos += len; + utf32Left -= 1; + utf32Pos += 1; + } + + } + +Done: // Set the output lengths. + *utf16Read = utf16Len - utf16Left; + *utf32Written = utf32Len - utf32Left; + +} // UTF16Swp_to_UTF32Swp + +// ================================================================================================= + +static void UTF32Swp_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ) +{ + const UTF32Unit * utf32Pos = utf32In; + UTF16Unit * utf16Pos = utf16Out; + + size_t utf32Left = utf32Len; + size_t utf16Left = utf16Len; + + const size_t k32to16Offset = swap32to16Offset; // ! Make sure compiler treats as an invariant. + + UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); + + while ( (utf32Left > 0) && (utf16Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf32Left; + if ( limit > utf16Left ) limit = utf16Left; + for ( i = 0; i < limit; ++i ) { + UTF32Unit inUnit = UTF32InSwap(utf32Pos); + if ( inUnit > 0xFFFF ) break; + *utf16Pos = *(((UTF16Unit*)utf32Pos) + k32to16Offset); // Better than: UTF16OutSwap ( utf16Pos, UTF16Unit(inUnit) ); + ++utf32Pos; + ++utf16Pos; + } + utf32Left -= i; + utf16Left -= i; + + // Do a run of non-BMP, it copies 1 input unit into 2 output units. + while ( (utf32Left > 0) && (utf16Left > 0) ) { + size_t len; + UTF32Unit inUnit = UTF32InSwap(utf32Pos); + if ( inUnit <= 0xFFFF ) break; + CodePoint_to_UTF16Swp_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); + if ( len == 0 ) goto Done; // Not enough room in the output buffer. + UC_Assert ( len == 2 ); + utf32Left -= 1; + utf32Pos += 1; + utf16Left -= 2; + utf16Pos += 2; + } + + } + +Done: // Set the output lengths. + *utf32Read = utf32Len - utf32Left; + *utf16Written = utf16Len - utf16Left; + +} // UTF32Swp_to_UTF16Swp + +// ================================================================================================= + +static void UTF16Nat_to_UTF32Swp ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ) +{ + const UTF16Unit * utf16Pos = utf16In; + UTF32Unit * utf32Pos = utf32Out; + + size_t utf16Left = utf16Len; + size_t utf32Left = utf32Len; + + UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); + + while ( (utf16Left > 0) && (utf32Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf16Left; + if ( limit > utf32Left ) limit = utf32Left; + for ( i = 0; i < limit; ++i ) { + UTF16Unit inUnit = *utf16Pos; + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; + UTF32OutSwap ( utf32Pos, inUnit ); + ++utf16Pos; + ++utf32Pos; + } + utf16Left -= i; + utf32Left -= i; + + // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. + while ( (utf16Left > 0) && (utf32Left > 0) ) { + size_t len; + UTF32Unit cp; + UTF16Unit inUnit = *utf16Pos; + if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; + CodePoint_from_UTF16Nat_Surrogate ( utf16Pos, utf16Left, &cp, &len ); + if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. + UC_Assert ( len == 2 ); + UTF32OutSwap ( utf32Pos, cp ); + utf16Left -= len; + utf16Pos += len; + utf32Left -= 1; + utf32Pos += 1; + } + + } + +Done: // Set the output lengths. + *utf16Read = utf16Len - utf16Left; + *utf32Written = utf32Len - utf32Left; + +} // UTF16Nat_to_UTF32Swp + +// ================================================================================================= + +static void UTF16Swp_to_UTF32Nat ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ) +{ + const UTF16Unit * utf16Pos = utf16In; + UTF32Unit * utf32Pos = utf32Out; + + size_t utf16Left = utf16Len; + size_t utf32Left = utf32Len; + + UC_Assert ( (utf16In != 0) && (utf32Out != 0) && (utf16Read != 0) && (utf32Written != 0) ); + + while ( (utf16Left > 0) && (utf32Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf16Left; + if ( limit > utf32Left ) limit = utf32Left; + for ( i = 0; i < limit; ++i ) { + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( (0xD800 <= inUnit) && (inUnit <= 0xDFFF) ) break; + *utf32Pos = inUnit; + ++utf16Pos; + ++utf32Pos; + } + utf16Left -= i; + utf32Left -= i; + + // Do a run of surrogate pairs, it copies 2 input units into 1 output unit. + while ( (utf16Left > 0) && (utf32Left > 0) ) { + size_t len; + UTF16Unit inUnit = UTF16InSwap(utf16Pos); + if ( (inUnit < 0xD800) || (0xDFFF < inUnit) ) break; + CodePoint_from_UTF16Swp_Surrogate ( utf16Pos, utf16Left, utf32Pos, &len ); + if ( len == 0 ) goto Done; // The input buffer ends in the middle of a surrogate pair. + UC_Assert ( len == 2 ); + utf16Left -= len; + utf16Pos += len; + utf32Left -= 1; + utf32Pos += 1; + } + + } + +Done: // Set the output lengths. + *utf16Read = utf16Len - utf16Left; + *utf32Written = utf32Len - utf32Left; + +} // UTF16Swp_to_UTF32Nat + +// ================================================================================================= + +static void UTF32Nat_to_UTF16Swp ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ) +{ + const UTF32Unit * utf32Pos = utf32In; + UTF16Unit * utf16Pos = utf16Out; + + size_t utf32Left = utf32Len; + size_t utf16Left = utf16Len; + + UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); + + while ( (utf32Left > 0) && (utf16Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf32Left; + if ( limit > utf16Left ) limit = utf16Left; + for ( i = 0; i < limit; ++i ) { + UTF32Unit inUnit = *utf32Pos; + if ( inUnit > 0xFFFF ) break; + UTF16OutSwap ( utf16Pos, UTF16Unit(inUnit) ); + ++utf32Pos; + ++utf16Pos; + } + utf32Left -= i; + utf16Left -= i; + + // Do a run of non-BMP, it copies 1 input unit into 2 output units. + while ( (utf32Left > 0) && (utf16Left > 0) ) { + size_t len; + UTF32Unit inUnit = *utf32Pos; + if ( inUnit <= 0xFFFF ) break; + CodePoint_to_UTF16Swp_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); + if ( len == 0 ) goto Done; // Not enough room in the output buffer. + UC_Assert ( len == 2 ); + utf32Left -= 1; + utf32Pos += 1; + utf16Left -= 2; + utf16Pos += 2; + } + + } + +Done: // Set the output lengths. + *utf32Read = utf32Len - utf32Left; + *utf16Written = utf16Len - utf16Left; + +} // UTF32Nat_to_UTF16Swp + +// ================================================================================================= + +static void UTF32Swp_to_UTF16Nat ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ) +{ + const UTF32Unit * utf32Pos = utf32In; + UTF16Unit * utf16Pos = utf16Out; + + size_t utf32Left = utf32Len; + size_t utf16Left = utf16Len; + + UC_Assert ( (utf32In != 0) && (utf16Out != 0) && (utf32Read != 0) && (utf16Written != 0) ); + + while ( (utf32Left > 0) && (utf16Left > 0) ) { + + // Do a run of BMP, it copies 1 input unit into 1 output unit. + size_t i, limit = utf32Left; + if ( limit > utf16Left ) limit = utf16Left; + for ( i = 0; i < limit; ++i ) { + UTF32Unit inUnit = UTF32InSwap(utf32Pos); + if ( inUnit > 0xFFFF ) break; + *utf16Pos = UTF16Unit(inUnit); + ++utf32Pos; + ++utf16Pos; + } + utf32Left -= i; + utf16Left -= i; + + // Do a run of non-BMP, it copies 1 input unit into 2 output units. + while ( (utf32Left > 0) && (utf16Left > 0) ) { + size_t len; + UTF32Unit inUnit = UTF32InSwap(utf32Pos); + if ( inUnit <= 0xFFFF ) break; + CodePoint_to_UTF16Nat_Surrogate ( inUnit, utf16Pos, utf16Left, &len ); + if ( len == 0 ) goto Done; // Not enough room in the output buffer. + UC_Assert ( len == 2 ); + utf32Left -= 1; + utf32Pos += 1; + utf16Left -= 2; + utf16Pos += 2; + } + + } + +Done: // Set the output lengths. + *utf32Read = utf32Len - utf32Left; + *utf16Written = utf16Len - utf16Left; + +} // UTF32Swp_to_UTF16Nat + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.hpp b/vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.hpp new file mode 100644 index 0000000..0888300 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/UnicodeConversions.hpp @@ -0,0 +1,121 @@ +#ifndef __UnicodeConversions_h__ +#define __UnicodeConversions_h__ + +// ================================================================================================= +// Copyright 2004-2007 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. +// ================================================================================================= + +#include + +// ================================================================================================= + +#if UnicodeTestBuild + typedef unsigned char UTF8Unit; + typedef unsigned short UTF16Unit; + typedef unsigned long UTF32Unit; +#else + typedef XMP_Uns8 UTF8Unit; + typedef XMP_Uns16 UTF16Unit; + typedef XMP_Uns32 UTF32Unit; +#endif + +// ------------------------------------------------------------------------------------------------- + +// ! The UTF16 and UTF32 counts are in storage units, not bytes! CodePoint values are always native. + +// *** MIght be better to return a status than throw an exception for errors? + +typedef void (*CodePoint_to_UTF16_Proc) ( const UTF32Unit cpIn, UTF16Unit * utf16Out, const size_t utf16Len, size_t * utf16Written ); + +typedef void (*CodePoint_from_UTF16_Proc) ( const UTF16Unit * utf16In, const size_t utf16Len, UTF32Unit * cpOut, size_t * utf16Read ); + +typedef void (*UTF8_to_UTF16_Proc) ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf8Read, size_t * utf16Written ); + +typedef void (*UTF8_to_UTF32_Proc) ( const UTF8Unit * utf8In, const size_t utf8Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf8Read, size_t * utf32Written ); + +typedef void (*UTF16_to_UTF8_Proc) ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf16Read, size_t * utf8Written ); + +typedef void (*UTF32_to_UTF8_Proc) ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF8Unit * utf8Out, const size_t utf8Len, + size_t * utf32Read, size_t * utf8Written ); + +typedef void (*UTF16_to_UTF32_Proc) ( const UTF16Unit * utf16In, const size_t utf16Len, + UTF32Unit * utf32Out, const size_t utf32Len, + size_t * utf16Read, size_t * utf32Written ); + +typedef void (*UTF32_to_UTF16_Proc) ( const UTF32Unit * utf32In, const size_t utf32Len, + UTF16Unit * utf16Out, const size_t utf16Len, + size_t * utf32Read, size_t * utf16Written ); + +// ------------------------------------------------------------------------------------------------- + +extern void CodePoint_to_UTF8 ( const UTF32Unit cpIn, UTF8Unit * utf8Out, const size_t utf8Len, size_t * utf8Written ); + +extern void CodePoint_from_UTF8 ( const UTF8Unit * utf8In, const size_t utf8Len, UTF32Unit * cpOut, size_t * utf8Read ); + +extern CodePoint_to_UTF16_Proc CodePoint_to_UTF16BE; +extern CodePoint_to_UTF16_Proc CodePoint_to_UTF16LE; + +extern CodePoint_from_UTF16_Proc CodePoint_from_UTF16BE; +extern CodePoint_from_UTF16_Proc CodePoint_from_UTF16LE; + +extern UTF8_to_UTF16_Proc UTF8_to_UTF16BE; +extern UTF8_to_UTF16_Proc UTF8_to_UTF16LE; + +extern UTF8_to_UTF32_Proc UTF8_to_UTF32BE; +extern UTF8_to_UTF32_Proc UTF8_to_UTF32LE; + +extern UTF16_to_UTF8_Proc UTF16BE_to_UTF8; +extern UTF16_to_UTF8_Proc UTF16LE_to_UTF8; + +extern UTF32_to_UTF8_Proc UTF32BE_to_UTF8; +extern UTF32_to_UTF8_Proc UTF32LE_to_UTF8; + +extern UTF8_to_UTF16_Proc UTF8_to_UTF16Native; +extern UTF8_to_UTF32_Proc UTF8_to_UTF32Native; + +extern UTF16_to_UTF8_Proc UTF16Native_to_UTF8; +extern UTF32_to_UTF8_Proc UTF32Native_to_UTF8; + +extern UTF16_to_UTF32_Proc UTF16BE_to_UTF32BE; +extern UTF16_to_UTF32_Proc UTF16BE_to_UTF32LE; + +extern UTF16_to_UTF32_Proc UTF16LE_to_UTF32BE; +extern UTF16_to_UTF32_Proc UTF16LE_to_UTF32LE; + +extern UTF32_to_UTF16_Proc UTF32BE_to_UTF16BE; +extern UTF32_to_UTF16_Proc UTF32BE_to_UTF16LE; + +extern UTF32_to_UTF16_Proc UTF32LE_to_UTF16BE; +extern UTF32_to_UTF16_Proc UTF32LE_to_UTF16LE; + +extern void SwapUTF16 ( const UTF16Unit * utf16In, UTF16Unit * utf16Out, const size_t utf16Len ); +extern void SwapUTF32 ( const UTF32Unit * utf32In, UTF32Unit * utf32Out, const size_t utf32Len ); + +extern void ToUTF16 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str, bool bigEndian ); +extern void ToUTF32 ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str, bool bigEndian ); + +extern void FromUTF16 ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str, bool bigEndian ); +extern void FromUTF32 ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str, bool bigEndian ); + +extern void ToUTF16Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str ); +extern void ToUTF32Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf32Str ); + +extern void FromUTF16Native ( const UTF16Unit * utf16In, size_t utf16Len, std::string * utf8Str ); +extern void FromUTF32Native ( const UTF32Unit * utf32In, size_t utf32Len, std::string * utf8Str ); + +extern void InitializeUnicodeConversions(); + +// ================================================================================================= + +#endif // __UnicodeConversions_h__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/UnicodeInlines.incl_cpp b/vendor/exiv2-0.25/xmpsdk/src/UnicodeInlines.incl_cpp new file mode 100644 index 0000000..8d55bad --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/UnicodeInlines.incl_cpp @@ -0,0 +1,129 @@ +#ifndef __UnicodeInlines_incl_cpp__ +#define __UnicodeInlines_incl_cpp__ + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "UnicodeConversions.hpp" + +// ================================================================================================= +// Inner loop utilities that need to be inlined. +// ================================================================================================= + +static inline XMP_Uns32 GetCodePoint ( const XMP_Uns8 ** utf8Str_io ) +{ + const XMP_Uns8 * u8Ptr = *utf8Str_io; + XMP_Uns32 cp; + size_t u8Len; + CodePoint_from_UTF8 ( u8Ptr, 4, &cp, &u8Len ); // Throws an exception for errors. + *utf8Str_io = u8Ptr + u8Len; + return cp; +} + +// ================================================================================================= + +static inline bool IsStartChar_ASCII ( XMP_Uns32 cp ) +{ + // ASCII starting characters for an XML name. + if ( (('a' <= cp) && (cp <= 'z')) || (('A' <= cp) && (cp <= 'Z')) || (cp == '_') ) return true; + return false; +} + +// ------------------------------------------------------------------------------------------------- + +static inline bool IsStartChar_NonASCII ( XMP_Uns32 cp ) +{ + // Non-ASCII starting characters for an XML name. + + if ( ((0xC0 <= cp) && (cp <= 0xD6)) || ((0xD8 <= cp) && (cp <= 0xF6)) ) return true; + if ( ((0xF8 <= cp) && (cp <= 0x2FF)) || ((0x370 <= cp) && (cp <= 0x37D)) ) return true; + + if ( ((0x37F <= cp) && (cp <= 0x1FFF)) || ((0x200C <= cp) && (cp <= 0x200D)) ) return true; + if ( ((0x2070 <= cp) && (cp <= 0x218F)) || ((0x2C00 <= cp) && (cp <= 0x2FEF)) ) return true; + if ( ((0x3001 <= cp) && (cp <= 0xD7FF)) || ((0xF900 <= cp) && (cp <= 0xFDCF)) ) return true; + if ( ((0xFDF0 <= cp) && (cp <= 0xFFFD)) || ((0x10000 <= cp) && (cp <= 0xEFFFF)) ) return true; + + return false; + +} + +// ------------------------------------------------------------------------------------------------- + +static inline bool IsOtherChar_ASCII ( XMP_Uns32 cp ) +{ + // ASCII following characters for an XML name. + if ( (('0' <= cp) && (cp <= '9')) || (cp == '-') || (cp == '.') ) return true; + return false; +} + +// ------------------------------------------------------------------------------------------------- + +static inline bool IsOtherChar_NonASCII ( XMP_Uns32 cp ) +{ + // Non-ASCII following characters for an XML name. + if ( (cp == 0xB7) || ((0x300 <= cp) && (cp <= 0x36F)) || ((0x203F <= cp) && (cp <= 0x2040)) ) return true; + return false; +} + +// ------------------------------------------------------------------------------------------------- + +static inline void VerifyUTF8 ( XMP_StringPtr str ) +{ + const XMP_Uns8 * utf8Str = (XMP_Uns8*)str; + while ( *utf8Str != 0 ) { + while ( (*utf8Str != 0) && (*utf8Str < 0x80) ) ++utf8Str; + if ( *utf8Str >= 0x80 ) (void) GetCodePoint ( &utf8Str ); // Throws for bad UTF-8. + } +} + +// ------------------------------------------------------------------------------------------------- + +static inline void VerifySimpleXMLName ( XMP_StringPtr _nameStart, XMP_StringPtr _nameEnd ) +{ + + const XMP_Uns8 * nameStart = (const XMP_Uns8 *) _nameStart; + const XMP_Uns8 * nameEnd = (const XMP_Uns8 *) _nameEnd; + const XMP_Uns8 * namePos = nameStart; + XMP_Uns32 cp; + + // The first character is more restricted. + + if ( nameStart >= nameEnd ) XMP_Throw ( "Empty XML name", kXMPErr_BadXPath ); + + cp = *namePos; + if ( cp < 0x80 ) { + ++namePos; + if ( ! IsStartChar_ASCII(cp) ) goto NameError; + } else { + cp = GetCodePoint ( &namePos ); + if ( ! IsStartChar_NonASCII(cp) ) goto NameError; + } + + // Check the rest of the name. + + while ( namePos < nameEnd ) { + cp = *namePos; + if ( cp < 0x80 ) { + ++namePos; + if ( (! IsStartChar_ASCII(cp)) && (! IsOtherChar_ASCII(cp)) ) goto NameError; + } else { + cp = GetCodePoint ( &namePos ); + if ( (! IsStartChar_NonASCII(cp)) && (! IsOtherChar_NonASCII(cp)) ) goto NameError; + } + } + + return; + +NameError: + XMP_Throw ( "Bad XML name", kXMPErr_BadXPath ); + +} // VerifySimpleXMLName + +// ================================================================================================= + +#endif // __UnicodeInlines_incl_cpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/WXMPIterator.cpp b/vendor/exiv2-0.25/xmpsdk/src/WXMPIterator.cpp new file mode 100644 index 0000000..4c47b0d --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/WXMPIterator.cpp @@ -0,0 +1,188 @@ +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPIterator.hpp" +#include "client-glue/WXMPIterator.hpp" + +#if XMP_WinBuild +# ifdef _MSC_VER + #pragma warning ( disable : 4101 ) // unreferenced local variable + #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #if XMP_DebugBuild + #pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does +# endif +# endif +#endif + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= +// CTor/DTor Wrappers +// ================== + +void +WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPIterator_PropCTor_1" ) + + if ( schemaNS == 0 ) schemaNS = ""; + if ( propName == 0 ) propName = ""; + + const XMPMeta & xmpObj = WtoXMPMeta_Ref ( xmpRef ); + XMPIterator * iter = new XMPIterator ( xmpObj, schemaNS, propName, options ); + ++iter->clientRefs; + XMP_Assert ( iter->clientRefs == 1 ); + wResult->ptrResult = XMPIteratorRef ( iter ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPIterator_TableCTor_1" ) + + if ( schemaNS == 0 ) schemaNS = ""; + if ( propName == 0 ) propName = ""; + + XMPIterator * iter = new XMPIterator ( schemaNS, propName, options ); + ++iter->clientRefs; + XMP_Assert ( iter->clientRefs == 1 ); + wResult->ptrResult = XMPIteratorRef ( iter ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER ( "WXMPIterator_IncrementRefCount_1" ) + + XMPIterator * thiz = (XMPIterator*)iterRef; + + ++thiz->clientRefs; + XMP_Assert ( thiz->clientRefs > 1 ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER ( "WXMPIterator_DecrementRefCount_1" ) + + XMPIterator * thiz = (XMPIterator*)iterRef; + + XMP_Assert ( thiz->clientRefs > 0 ); + --thiz->clientRefs; + if ( thiz->clientRefs <= 0 ) delete ( thiz ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPIterator_Unlock_1 ( XMP_OptionBits options ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPIterator_Unlock_1" ) + + XMPIterator::Unlock ( options ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ================================================================================================= +// Class Method Wrappers +// ===================== + +void +WXMPIterator_Next_1 ( XMPIteratorRef iterRef, + XMP_StringPtr * schemaNS, + XMP_StringLen * nsSize, + XMP_StringPtr * propPath, + XMP_StringLen * pathSize, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * propOptions, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPIterator_Next_1" ) + + if ( schemaNS == 0 ) schemaNS = &voidStringPtr; + if ( nsSize == 0 ) nsSize = &voidStringLen; + if ( propPath == 0 ) propPath = &voidStringPtr; + if ( pathSize == 0 ) pathSize = &voidStringLen; + if ( propValue == 0 ) propValue = &voidStringPtr; + if ( valueSize == 0 ) valueSize = &voidStringLen; + if ( propOptions == 0 ) propOptions = &voidOptionBits; + + XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef ); + XMP_Bool found = iter->Next ( schemaNS, nsSize, propPath, pathSize, propValue, valueSize, propOptions ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPIterator_Skip_1 ( XMPIteratorRef iterRef, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPIterator_Skip_1" ) + + XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef ); + iter->Skip ( options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_UnlockIter_1 ( XMPIteratorRef iterRef, + XMP_OptionBits options ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_UnlockIter_1" ) + + XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef ); + iter->UnlockIter ( options ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif diff --git a/vendor/exiv2-0.25/xmpsdk/src/WXMPMeta.cpp b/vendor/exiv2-0.25/xmpsdk/src/WXMPMeta.cpp new file mode 100644 index 0000000..7969233 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/WXMPMeta.cpp @@ -0,0 +1,1310 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPMeta.hpp" +#include "client-glue/WXMPMeta.hpp" + +#if XMP_WinBuild + #ifdef _MSC_VER + #pragma warning ( disable : 4101 ) // unreferenced local variable + #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #if XMP_DebugBuild + #pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does + #endif + #endif +#endif + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= +// Init/Term Wrappers +// ================== + +/* class static */ void +WXMPMeta_GetVersionInfo_1 ( XMP_VersionInfo * info ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_GetVersionInfo_1" ) + + XMPMeta::GetVersionInfo ( info ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_Initialize_1 ( WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_Initialize_1" ) + + bool ok = XMPMeta::Initialize(); + wResult->int32Result = ok; + + XMP_EXIT_WRAPPER +} +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_Terminate_1() +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_Terminate_1" ) + + XMPMeta::Terminate(); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ================================================================================================= +// CTor/DTor Wrappers +// ================== + +void +WXMPMeta_CTor_1 ( WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_CTor_1" ) + + XMPMeta * xmpObj = new XMPMeta(); + ++xmpObj->clientRefs; + XMP_Assert ( xmpObj->clientRefs == 1 ); + wResult->ptrResult = XMPMetaRef ( xmpObj ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_IncrementRefCount_1 ( XMPMetaRef xmpRef ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER ( "WXMPMeta_IncrementRefCount_1" ) + + XMPMeta * thiz = (XMPMeta*)xmpRef; + + ++thiz->clientRefs; + XMP_Assert ( thiz->clientRefs > 0 ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DecrementRefCount_1 ( XMPMetaRef xmpRef ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER ( "WXMPMeta_DecrementRefCount_1" ) + + XMPMeta * thiz = (XMPMeta*)xmpRef; + + XMP_Assert ( thiz->clientRefs > 0 ); + --thiz->clientRefs; + if ( thiz->clientRefs <= 0 ) delete ( thiz ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ================================================================================================= +// Class Static Wrappers +// ===================== +// +// These are DLL-entry wrappers for class-static functions. They all follow a simple pattern: +// +// try +// acquire toolbox lock +// validate parameters +// call through to the implementation +// retain toolbox lock if necessary +// catch anything and return an appropriate XMP_Error object +// return null (no error if we get to here) +// +// The toolbox lock is acquired through a local wrapper object that automatically unlocks when the +// try-block is exited. The lock must be retained if the function is returning a string result. The +// output string is owned by the toolkit, the client must copy the string then release the lock. +// The lock used here is the overall toolkit lock. For simplicity at this time the lock is a simple +// mutual exclusion lock, we do not allow multiple concurrent readers. +// +// The one exception to this model is UnlockToolkit. It does not acquire the toolkit lock since this +// is the function the client calls to release the lock after copying an output string! +// +// ================================================================================================= + +/* class static */ void +WXMPMeta_GetGlobalOptions_1 ( WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetGlobalOptions_1" ) + + XMP_OptionBits options = XMPMeta::GetGlobalOptions(); + wResult->int32Result = options; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_SetGlobalOptions_1 ( XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetGlobalOptions_1" ) + + XMPMeta::SetGlobalOptions ( options ); + + XMP_EXIT_WRAPPER +} +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_DumpNamespaces_1 ( XMP_TextOutputProc outProc, + void * refCon, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DumpNamespaces_1" ) + + if ( outProc == 0 ) XMP_Throw ( "Null client output routine", kXMPErr_BadParam ); + + XMP_Status status = XMPMeta::DumpNamespaces ( outProc, refCon ); + wResult->int32Result = status; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_DumpAliases_1 ( XMP_TextOutputProc outProc, + void * refCon, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DumpAliases_1" ) + + if ( outProc == 0 ) XMP_Throw ( "Null client output routine", kXMPErr_BadParam ); + + XMP_Status status = XMPMeta::DumpAliases ( outProc, refCon ); + wResult->int32Result = status; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_Unlock_1 ( XMP_OptionBits options ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_Unlock_1" ) + + XMPMeta::Unlock ( options ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_RegisterNamespace_1 ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_RegisterNamespace_1" ) + + if ( (namespaceURI == 0) || (*namespaceURI == 0) ) XMP_Throw ( "Empty namespace URI", kXMPErr_BadSchema ); + if ( (prefix == 0) || (*prefix == 0) ) XMP_Throw ( "Empty prefix", kXMPErr_BadSchema ); + + XMPMeta::RegisterNamespace ( namespaceURI, prefix ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_GetNamespacePrefix_1 ( XMP_StringPtr namespaceURI, + XMP_StringPtr * namespacePrefix, + XMP_StringLen * prefixSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetNamespacePrefix_1" ) + + if ( (namespaceURI == 0) || (*namespaceURI == 0) ) XMP_Throw ( "Empty namespace URI", kXMPErr_BadSchema ); + + if ( namespacePrefix == 0 ) namespacePrefix = &voidStringPtr; + if ( prefixSize == 0 ) prefixSize = &voidStringLen; + + bool found = XMPMeta::GetNamespacePrefix ( namespaceURI, namespacePrefix, prefixSize ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_GetNamespaceURI_1 ( XMP_StringPtr namespacePrefix, + XMP_StringPtr * namespaceURI, + XMP_StringLen * uriSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetNamespaceURI_1" ) + + if ( (namespacePrefix == 0) || (*namespacePrefix == 0) ) XMP_Throw ( "Empty namespace prefix", kXMPErr_BadSchema ); + + if ( namespaceURI == 0 ) namespaceURI = &voidStringPtr; + if ( uriSize == 0 ) uriSize = &voidStringLen; + + bool found = XMPMeta::GetNamespaceURI ( namespacePrefix, namespaceURI, uriSize ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_DeleteNamespace_1 ( XMP_StringPtr namespaceURI, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteNamespace_1" ) + + if ( (namespaceURI == 0) || (*namespaceURI == 0) ) XMP_Throw ( "Empty namespace URI", kXMPErr_BadSchema ); + + XMPMeta::DeleteNamespace ( namespaceURI ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_RegisterAlias_1 ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_RegisterAlias_1" ) + + if ( (aliasNS == 0) || (*aliasNS == 0) ) XMP_Throw ( "Empty alias namespace URI", kXMPErr_BadSchema ); + if ( (aliasProp == 0) || (*aliasProp == 0) ) XMP_Throw ( "Empty alias property name", kXMPErr_BadXPath ); + if ( (actualNS == 0) || (*actualNS == 0) ) XMP_Throw ( "Empty actual namespace URI", kXMPErr_BadSchema ); + if ( (actualProp == 0) || (*actualProp == 0) ) XMP_Throw ( "Empty actual property name", kXMPErr_BadXPath ); + + XMPMeta::RegisterAlias ( aliasNS, aliasProp, actualNS, actualProp, arrayForm ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_ResolveAlias_1 ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr * actualNS, + XMP_StringLen * nsSize, + XMP_StringPtr * actualProp, + XMP_StringLen * propSize, + XMP_OptionBits * arrayForm, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_ResolveAlias_1" ) + + if ( (aliasNS == 0) || (*aliasNS == 0) ) XMP_Throw ( "Empty alias namespace URI", kXMPErr_BadSchema ); + if ( (aliasProp == 0) || (*aliasProp == 0) ) XMP_Throw ( "Empty alias property name", kXMPErr_BadXPath ); + + if ( actualNS == 0 ) actualNS = &voidStringPtr; + if ( nsSize == 0 ) nsSize = &voidStringLen; + if ( actualProp == 0 ) actualProp = &voidStringPtr; + if ( propSize == 0 ) propSize = &voidStringLen; + if ( arrayForm == 0 ) arrayForm = &voidOptionBits; + + bool found = XMPMeta::ResolveAlias ( aliasNS, aliasProp, actualNS, nsSize, actualProp, propSize, arrayForm ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_DeleteAlias_1 ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteAlias_1" ) + + if ( (aliasNS == 0) || (*aliasNS == 0) ) XMP_Throw ( "Empty alias namespace URI", kXMPErr_BadSchema ); + if ( (aliasProp == 0) || (*aliasProp == 0) ) XMP_Throw ( "Empty alias property name", kXMPErr_BadXPath ); + + XMPMeta::DeleteAlias ( aliasNS, aliasProp ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +/* class static */ void +WXMPMeta_RegisterStandardAliases_1 ( XMP_StringPtr schemaNS, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_RegisterStandardAliases_1" ) + + if ( schemaNS == 0 ) schemaNS = ""; + + XMPMeta::RegisterStandardAliases ( schemaNS ); + + XMP_EXIT_WRAPPER +} + +// ================================================================================================= +// Class Method Wrappers +// ===================== +// +// These are DLL-entry wrappers for the methods. They all follow a simple pattern: +// +// validate parameters +// try +// acquire object lock +// call through to the implementation +// retain object lock if necessary +// catch anything and return an appropriate XMP_Error object +// return null (no error if we get to here) +// +// The object lock is acquired through a local wrapper object that automatically unlocks when the +// try-block is exited. The lock must be retained if the function is returning a string result. The +// output string is owned by the object, the client must copy the string then release the lock. The +// lock used here is the per-object lock. For simplicity at this time the lock is a simple mutual +// exclusion lock, we do not allow multiple concurrent readers. +// +// The one exception to this model is UnlockObject. It does not acquire the object lock since this +// is the function the client calls to release the lock after copying an output string! +// +// ================================================================================================= + +void +WXMPMeta_GetProperty_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + if ( propValue == 0 ) propValue = &voidStringPtr; + if ( valueSize == 0 ) valueSize = &voidStringLen; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetProperty ( schemaNS, propName, propValue, valueSize, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetArrayItem_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + if ( itemValue == 0 ) itemValue = &voidStringPtr; + if ( valueSize == 0 ) valueSize = &voidStringLen; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetArrayItem ( schemaNS, arrayName, itemIndex, itemValue, valueSize, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetStructField_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fieldValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetStructField_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); + if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); + if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); + + if ( fieldValue == 0 ) fieldValue = &voidStringPtr; + if ( valueSize == 0 ) valueSize = &voidStringLen; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetStructField ( schemaNS, structName, fieldNS, fieldName, fieldValue, valueSize, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetQualifier_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * qualValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetQualifier_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); + if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); + + if ( qualValue == 0 ) qualValue = &voidStringPtr; + if ( valueSize == 0 ) valueSize = &voidStringLen; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetQualifier ( schemaNS, propName, qualNS, qualName, qualValue, valueSize, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr propValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetProperty ( schemaNS, propName, propValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetArrayItem_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetArrayItem ( schemaNS, arrayName, itemIndex, itemValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + XMP_StringPtr itemValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_AppendArrayItem_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->AppendArrayItem ( schemaNS, arrayName, arrayOptions, itemValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetStructField_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); + if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); + if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetStructField ( schemaNS, structName, fieldNS, fieldName, fieldValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr qualValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetQualifier_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); + if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetQualifier ( schemaNS, propName, qualNS, qualName, qualValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DeleteProperty_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteProperty_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->DeleteProperty ( schemaNS, propName ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DeleteArrayItem_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteArrayItem_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->DeleteArrayItem ( schemaNS, arrayName, itemIndex ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteStructField_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); + if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); + if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->DeleteStructField ( schemaNS, structName, fieldNS, fieldName ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DeleteQualifier_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); + if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->DeleteQualifier ( schemaNS, propName, qualNS, qualName ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DoesPropertyExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DoesPropertyExist_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.DoesPropertyExist ( schemaNS, propName ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DoesArrayItemExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DoesArrayItemExist_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.DoesArrayItemExist ( schemaNS, arrayName, itemIndex ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DoesStructFieldExist_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); + if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); + if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.DoesStructFieldExist ( schemaNS, structName, fieldNS, fieldName ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DoesQualifierExist_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); + if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.DoesQualifierExist ( schemaNS, propName, qualNS, qualName ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetLocalizedText_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr * actualLang, + XMP_StringLen * langSize, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetLocalizedText_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + if ( genericLang == 0 ) genericLang = ""; + if ( (specificLang == 0) ||(*specificLang == 0) ) XMP_Throw ( "Empty specific language", kXMPErr_BadParam ); + + if ( actualLang == 0 ) actualLang = &voidStringPtr; + if ( langSize == 0 ) langSize = &voidStringLen; + if ( itemValue == 0 ) itemValue = &voidStringPtr; + if ( valueSize == 0 ) valueSize = &voidStringLen; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetLocalizedText ( schemaNS, arrayName, genericLang, specificLang, + actualLang, langSize, itemValue, valueSize, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER_KEEP_LOCK ( found ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr itemValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetLocalizedText_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + if ( genericLang == 0 ) genericLang = ""; + if ( (specificLang == 0) ||(*specificLang == 0) ) XMP_Throw ( "Empty specific language", kXMPErr_BadParam ); + if ( itemValue == 0 ) itemValue = ""; + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetLocalizedText ( schemaNS, arrayName, genericLang, specificLang, itemValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Bool * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Bool_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + if ( propValue == 0 ) propValue = &voidByte; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool value; + bool found = meta.GetProperty_Bool ( schemaNS, propName, &value, options ); + if ( propValue != 0 ) *propValue = value; + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Int_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + if ( propValue == 0 ) propValue = &voidInt32; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetProperty_Int ( schemaNS, propName, propValue, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Int64_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + if ( propValue == 0 ) propValue = &voidInt64; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetProperty_Int64 ( schemaNS, propName, propValue, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Float_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + if ( propValue == 0 ) propValue = &voidDouble; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetProperty_Float ( schemaNS, propName, propValue, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_DateTime * propValue, + XMP_OptionBits * options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetProperty_Date_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + if ( propValue == 0 ) propValue = &voidDateTime; + if ( options == 0 ) options = &voidOptionBits; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + bool found = meta.GetProperty_Date ( schemaNS, propName, propValue, options ); + wResult->int32Result = found; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Bool propValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Bool_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetProperty_Bool ( schemaNS, propName, propValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 propValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Int_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetProperty_Int ( schemaNS, propName, propValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 propValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Int64_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetProperty_Int64 ( schemaNS, propName, propValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double propValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Float_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetProperty_Float ( schemaNS, propName, propValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const XMP_DateTime & propValue, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetProperty_Date_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetProperty_Date ( schemaNS, propName, propValue, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef, + XMP_TextOutputProc outProc, + void * refCon, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_DumpObject_1" ) + + if ( outProc == 0 ) XMP_Throw ( "Null client output routine", kXMPErr_BadParam ); + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + XMP_Status status = meta.DumpObject ( outProc, refCon ); + wResult->int32Result = status; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_Sort_1 ( XMPMetaRef xmpRef, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_Sort_1" ) + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->Sort(); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_Erase_1 ( XMPMetaRef xmpRef, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_Erase_1" ) + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->Erase(); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_Clone_1 ( XMPMetaRef xmpRef, + XMP_OptionBits options, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_Clone_1" ) + + const XMPMeta & xOriginal = WtoXMPMeta_Ref ( xmpRef ); + XMPMeta * xClone = new XMPMeta; + xOriginal.Clone ( xClone, options ); + XMP_Assert ( xClone->clientRefs == 0 ); // ! Gets incremented in TXMPMeta::Clone. + wResult->ptrResult = xClone; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_CountArrayItems_1 ( XMPMetaRef xmpRef, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_CountArrayItems_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + XMP_Index count = meta.CountArrayItems ( schemaNS, arrayName ); + wResult->int32Result = count; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_UnlockObject_1 ( XMPMetaRef xmpRef, + XMP_OptionBits options ) /* const */ +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPMeta_UnlockObject_1" ) + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + meta.UnlockObject ( options ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetObjectName_1 ( XMPMetaRef xmpRef, + XMP_StringPtr * namePtr, + XMP_StringLen * nameLen, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetObjectName_1" ) + + if ( namePtr == 0 ) namePtr = &voidStringPtr; + if ( nameLen == 0 ) nameLen = &voidStringLen; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + meta.GetObjectName ( namePtr, nameLen ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) // ! Always keep the lock, a string is always returned! +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetObjectName_1 ( XMPMetaRef xmpRef, + XMP_StringPtr name, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetObjectName_1" ) + + if ( name == 0 ) name = ""; + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetObjectName ( name ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_GetObjectOptions_1 ( XMPMetaRef xmpRef, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_GetObjectOptions_1" ) + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + XMP_OptionBits options = meta.GetObjectOptions(); + wResult->int32Result = options; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SetObjectOptions_1 ( XMPMetaRef xmpRef, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SetObjectOptions_1" ) + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->SetObjectOptions ( options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_ParseFromBuffer_1 ( XMPMetaRef xmpRef, + XMP_StringPtr buffer, + XMP_StringLen bufferSize, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_ParseFromBuffer_1" ) + + XMPMeta * meta = WtoXMPMeta_Ptr ( xmpRef ); + meta->ParseFromBuffer ( buffer, bufferSize, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPMeta_SerializeToBuffer_1 ( XMPMetaRef xmpRef, + XMP_StringPtr * rdfString, + XMP_StringLen * rdfSize, + XMP_OptionBits options, + XMP_StringLen padding, + XMP_StringPtr newline, + XMP_StringPtr indent, + XMP_Index baseIndent, + WXMP_Result * wResult ) /* const */ +{ + XMP_ENTER_WRAPPER ( "WXMPMeta_SerializeToBuffer_1" ) + + if ( rdfString == 0 ) rdfString = &voidStringPtr; + if ( rdfSize == 0 ) rdfSize = &voidStringLen; + + if ( newline == 0 ) newline = ""; + if ( indent == 0 ) indent = ""; + + const XMPMeta & meta = WtoXMPMeta_Ref ( xmpRef ); + meta.SerializeToBuffer ( rdfString, rdfSize, options, padding, newline, indent, baseIndent ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) // ! Always keep the lock, a string is always returned! +} + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif diff --git a/vendor/exiv2-0.25/xmpsdk/src/WXMPUtils.cpp b/vendor/exiv2-0.25/xmpsdk/src/WXMPUtils.cpp new file mode 100644 index 0000000..e3ce437 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/WXMPUtils.cpp @@ -0,0 +1,626 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +// *** Should change "type * inParam" to "type & inParam" + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPUtils.hpp" +#include "client-glue/WXMPUtils.hpp" + +#if XMP_WinBuild + #ifdef _MSC_VER + #pragma warning ( disable : 4101 ) // unreferenced local variable + #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #if XMP_DebugBuild + #pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does + #endif + #endif +#endif + +#if __cplusplus +extern "C" { +#endif + +// ================================================================================================= +// Class Static Wrappers +// ===================== + +void +WXMPUtils_Unlock_1 ( XMP_OptionBits options ) +{ + WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro. + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_Unlock_1" ) + + XMPUtils::Unlock ( options ); + + XMP_EXIT_WRAPPER_NO_THROW +} + +// ================================================================================================= + +void +WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeArrayItemPath_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + if ( fullPath == 0 ) fullPath = &voidStringPtr; + if ( pathSize == 0 ) pathSize = &voidStringLen; + + XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, fullPath, pathSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeStructFieldPath_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath ); + if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); + if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); + + if ( fullPath == 0 ) fullPath = &voidStringPtr; + if ( pathSize == 0 ) pathSize = &voidStringLen; + + XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, fullPath, pathSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeQualifierPath_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath ); + if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema ); + if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath ); + + if ( fullPath == 0 ) fullPath = &voidStringPtr; + if ( pathSize == 0 ) pathSize = &voidStringLen; + + XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, fullPath, pathSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr langName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeLangSelector_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + if ( (langName == 0) || (*langName == 0) ) XMP_Throw ( "Empty language name", kXMPErr_BadParam ); + + if ( fullPath == 0 ) fullPath = &voidStringPtr; + if ( pathSize == 0 ) pathSize = &voidStringLen; + + XMPUtils::ComposeLangSelector ( schemaNS, arrayName, langName, fullPath, pathSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeFieldSelector_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema ); + if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath ); + if ( fieldValue == 0 ) fieldValue = ""; + + if ( fullPath == 0 ) fullPath = &voidStringPtr; + if ( pathSize == 0 ) pathSize = &voidStringLen; + + XMPUtils::ComposeFieldSelector ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, pathSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ================================================================================================= + +void +WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromBool_1" ) + + if ( strValue == 0 ) strValue = &voidStringPtr; + if ( strSize == 0 ) strSize = &voidStringLen; + + XMPUtils::ConvertFromBool ( binValue, strValue, strSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromInt_1" ) + + if ( format == 0 ) format = ""; + + if ( strValue == 0 ) strValue = &voidStringPtr; + if ( strSize == 0 ) strSize = &voidStringLen; + + XMPUtils::ConvertFromInt ( binValue, format, strValue, strSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromInt64_1" ) + + if ( format == 0 ) format = ""; + + if ( strValue == 0 ) strValue = &voidStringPtr; + if ( strSize == 0 ) strSize = &voidStringLen; + + XMPUtils::ConvertFromInt64 ( binValue, format, strValue, strSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertFromFloat_1 ( double binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromFloat_1" ) + + if ( format == 0 ) format = ""; + + if ( strValue == 0 ) strValue = &voidStringPtr; + if ( strSize == 0 ) strSize = &voidStringLen; + + XMPUtils::ConvertFromFloat ( binValue, format, strValue, strSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromDate_1" ) + + if ( strValue == 0 ) strValue = &voidStringPtr; + if ( strSize == 0 ) strSize = &voidStringLen; + + XMPUtils::ConvertFromDate( binValue, strValue, strSize ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ================================================================================================= + +void +WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToBool_1" ) + + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); + XMP_Bool result = XMPUtils::ConvertToBool ( strValue ); + wResult->int32Result = result; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToInt_1" ) + + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); + XMP_Int32 result = XMPUtils::ConvertToInt ( strValue ); + wResult->int32Result = result; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToInt64_1" ) + + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); + XMP_Int64 result = XMPUtils::ConvertToInt64 ( strValue ); + wResult->int64Result = result; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToFloat_1") + + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam); + double result = XMPUtils::ConvertToFloat ( strValue ); + wResult->floatResult = result; + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue, + XMP_DateTime * binValue, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToDate_1" ) + + if ( binValue == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); // ! Pointer is from the client. + XMPUtils::ConvertToDate ( strValue, binValue ); + + XMP_EXIT_WRAPPER +} + +// ================================================================================================= + +void +WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_CurrentDateTime_1" ) + + if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); + XMPUtils::CurrentDateTime ( time ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_SetTimeZone_1" ) + + if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); + XMPUtils::SetTimeZone ( time ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToUTCTime_1" ) + + if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); + XMPUtils::ConvertToUTCTime ( time ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToLocalTime_1" ) + + if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); + XMPUtils::ConvertToLocalTime ( time ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left, + const XMP_DateTime & right, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_CompareDateTime_1" ) + + int result = XMPUtils::CompareDateTime ( left, right ); + wResult->int32Result = result; + + XMP_EXIT_WRAPPER +} + +// ================================================================================================= + +void +WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr, + XMP_StringLen rawLen, + XMP_StringPtr * encodedStr, + XMP_StringLen * encodedLen, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_EncodeToBase64_1" ) + + if ( encodedStr == 0 ) encodedStr = &voidStringPtr; + if ( encodedLen == 0 ) encodedLen = &voidStringLen; + + XMPUtils::EncodeToBase64 ( rawStr, rawLen, encodedStr, encodedLen ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr, + XMP_StringLen encodedLen, + XMP_StringPtr * rawStr, + XMP_StringLen * rawLen, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_DecodeFromBase64_1" ) + + if ( rawStr == 0 ) rawStr = &voidStringPtr; + if ( rawLen == 0 ) rawLen = &voidStringLen; + + XMPUtils::DecodeFromBase64 ( encodedStr, encodedLen, rawStr, rawLen ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ================================================================================================= + +void +WXMPUtils_PackageForJPEG_1 ( XMPMetaRef wxmpObj, + XMP_StringPtr * stdStr, + XMP_StringLen * stdLen, + XMP_StringPtr * extStr, + XMP_StringLen * extLen, + XMP_StringPtr * digestStr, + XMP_StringLen * digestLen, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_PackageForJPEG_1" ) + + if ( stdStr == 0 ) stdStr = &voidStringPtr; + if ( stdLen == 0 ) stdLen = &voidStringLen; + if ( extStr == 0 ) extStr = &voidStringPtr; + if ( extLen == 0 ) extLen = &voidStringLen; + if ( digestStr == 0 ) digestStr = &voidStringPtr; + if ( digestLen == 0 ) digestLen = &voidStringLen; + + const XMPMeta & xmpObj = WtoXMPMeta_Ref ( wxmpObj ); + XMPUtils::PackageForJPEG ( xmpObj, stdStr, stdLen, extStr, extLen, digestStr, digestLen ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef wfullXMP, + XMPMetaRef wextendedXMP, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_MergeFromJPEG_1" ) + + if ( wfullXMP == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); + + XMPMeta * fullXMP = WtoXMPMeta_Ptr ( wfullXMP ); + const XMPMeta & extendedXMP = WtoXMPMeta_Ref ( wextendedXMP ); + XMPUtils::MergeFromJPEG ( fullXMP, extendedXMP ); + + XMP_EXIT_WRAPPER +} + +// ================================================================================================= + +void +WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef wxmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr separator, + XMP_StringPtr quotes, + XMP_OptionBits options, + XMP_StringPtr * catedStr, + XMP_StringLen * catedLen, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_CatenateArrayItems_1" ) + + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + + if ( separator == 0 ) separator = "; "; + if ( quotes == 0 ) quotes = "\""; + + if ( catedStr == 0 ) catedStr = &voidStringPtr; + if ( catedLen == 0 ) catedLen = &voidStringLen; + + const XMPMeta & xmpObj = WtoXMPMeta_Ref ( wxmpObj ); + XMPUtils::CatenateArrayItems ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedStr, catedLen ); + + XMP_EXIT_WRAPPER_KEEP_LOCK ( true ) +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef wxmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + XMP_StringPtr catedStr, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_SeparateArrayItems_1" ) + + if ( wxmpObj == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); + if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema ); + if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath ); + if ( catedStr == 0 ) catedStr = ""; + + XMPMeta * xmpObj = WtoXMPMeta_Ptr ( wxmpObj ); + XMPUtils::SeparateArrayItems ( xmpObj, schemaNS, arrayName, options, catedStr ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_RemoveProperties_1 ( XMPMetaRef wxmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_RemoveProperties_1" ) + + if ( wxmpObj == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); + if ( schemaNS == 0 ) schemaNS = ""; + if ( propName == 0 ) propName = ""; + + XMPMeta * xmpObj = WtoXMPMeta_Ptr ( wxmpObj ); + XMPUtils::RemoveProperties ( xmpObj, schemaNS, propName, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_AppendProperties_1 ( XMPMetaRef wSource, + XMPMetaRef wDest, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_AppendProperties_1" ) + + if ( wDest == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); + + const XMPMeta & source = WtoXMPMeta_Ref ( wSource ); + XMPMeta * dest = WtoXMPMeta_Ptr ( wDest ); + XMPUtils::AppendProperties ( source, dest, options ); + + XMP_EXIT_WRAPPER +} + +// ------------------------------------------------------------------------------------------------- + +void +WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef wSource, + XMPMetaRef wDest, + XMP_StringPtr sourceNS, + XMP_StringPtr sourceRoot, + XMP_StringPtr destNS, + XMP_StringPtr destRoot, + XMP_OptionBits options, + WXMP_Result * wResult ) +{ + XMP_ENTER_WRAPPER ( "WXMPUtils_DuplicateSubtree_1" ) + + if ( wDest == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam ); + if ( (sourceNS == 0) || (*sourceNS == 0) ) XMP_Throw ( "Empty source schema URI", kXMPErr_BadSchema ); + if ( (sourceRoot == 0) || (*sourceRoot == 0) ) XMP_Throw ( "Empty source root name", kXMPErr_BadXPath ); + if ( destNS == 0 ) destNS = sourceNS; + if ( destRoot == 0 ) destRoot = sourceRoot; + + const XMPMeta & source = WtoXMPMeta_Ref ( wSource ); + XMPMeta * dest = WtoXMPMeta_Ptr ( wDest ); + XMPUtils::DuplicateSubtree ( source, dest, sourceNS, sourceRoot, destNS, destRoot, options ); + + XMP_EXIT_WRAPPER +} + +// ================================================================================================= + +#if __cplusplus +} /* extern "C" */ +#endif diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMLParserAdapter.hpp b/vendor/exiv2-0.25/xmpsdk/src/XMLParserAdapter.hpp new file mode 100644 index 0000000..55d53ca --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMLParserAdapter.hpp @@ -0,0 +1,140 @@ +#ifndef __XMLParserAdapter_hpp__ +#define __XMLParserAdapter_hpp__ + +// ================================================================================================= +// Copyright 2005-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! Must be the first #include! +#include "XMP_Const.h" + +#include +#include + +// ================================================================================================= +// XML_Node details +// +// The XML_Nodes are used only during the XML/RDF parsing process. This presently uses an XML parser +// to create an XML tree, then a recursive descent RDF recognizer to build the corresponding XMP. +// This makes it easier to swap XML parsers and provides a clean separation of XML and RDF issues. +// The overall parsing would be faster and use less memory if the RDF recognition were done on the +// fly using a state machine. But it was much easier to write the recursive descent version. The +// current implementation is pretty fast in absolute terms, so being faster might not be crucial. +// +// Like the XMP tree, the XML tree contains vectors of pointers for down links, and offspring have +// a pointer to their parent. Unlike the XMP tree, this is an exact XML document tree. There are no +// introduced top level namespace nodes or rearrangement of the nodes.. +// +// The exact state of namespaces can vary during the XML parsing, depending on the parser in use. +// By the time the RDF recognition is done though, the namespaces must be normalized. All of the +// used namespaces must be registered, this is done automatically if necessary. All of the "live" +// namespace prefixes will be unique. The ns field of an XML_Node is the namespace URI, the name +// field contains a qualified name (prefix:local). This includes default namespace mapping, the +// URI and prefix will be missing only for elements and attributes in no namespace. + +class XML_Node; + +typedef XML_Node * XML_NodePtr; // Handy for things like: XML_Node * a, b; - b is XML_Node, not XML_Node*! + +enum { kRootNode = 0, kElemNode = 1, kAttrNode = 2, kCDataNode = 3, kPINode = 4 }; + +#define IsWhitespaceChar(ch) ( ((ch) == ' ') || ((ch) == 0x09) || ((ch) == 0x0A) || ((ch) == 0x0D) ) + +typedef std::vector XML_NodeVector; +typedef XML_NodeVector::iterator XML_NodePos; +typedef XML_NodeVector::const_iterator XML_cNodePos; + +#if 0 // Pattern for iterating over the children or attributes: + for ( size_t xxNum = 0, xxLim = _node_->_offspring_.size(); xxNum < xxLim; ++xxNum ) { + const XML_NodePtr _curr_ = _node_->_offspring_[xxNum]; + } +#endif + +class XML_Node { +public: + + // Intended for lightweight internal use. Clients are expected to use the data directly. + + XMP_Uns8 kind; + std::string ns, name, value; + size_t nsPrefixLen; + XML_NodePtr parent; + XML_NodeVector attrs; + XML_NodeVector content; + + bool IsWhitespaceNode() const; + bool IsLeafContentNode() const; // An empty element or one with a single character data child node. + bool IsEmptyLeafNode() const; + + XMP_StringPtr GetAttrValue ( XMP_StringPtr attrName ) const; + void SetAttrValue ( XMP_StringPtr attrName, XMP_StringPtr attrValue ); + + XMP_StringPtr GetLeafContentValue() const; + void SetLeafContentValue ( XMP_StringPtr value ); + + size_t CountNamedElements ( XMP_StringPtr nsURI, XMP_StringPtr localName ) const; // Number of child elements with this name. + XML_NodePtr GetNamedElement ( XMP_StringPtr nsURI, XMP_StringPtr localName, size_t which = 0 ); + + void Dump ( std::string * buffer ); + void Serialize ( std::string * buffer ); + + void RemoveAttrs(); + void RemoveContent(); + void ClearNode(); + + XML_Node ( XML_NodePtr _parent, XMP_StringPtr _name, XMP_Uns8 _kind ) + : kind(_kind), name(_name), nsPrefixLen(0), parent(_parent) {}; + + XML_Node ( XML_NodePtr _parent, const std::string & _name, XMP_Uns8 _kind ) + : kind(_kind), name(_name), nsPrefixLen(0), parent(_parent) {}; + + virtual ~XML_Node() { RemoveAttrs(); RemoveContent(); }; + +private: + + XML_Node() : kind(0), parent(0) {}; // ! Hidden to make sure parent pointer is always set. + +}; + +// ================================================================================================= +// Abstract base class for XML parser adapters used by the XMP toolkit. + +enum { kXMLPendingInputMax = 16 }; + +class XMLParserAdapter { +public: + + XMLParserAdapter() + : tree(0,"",kRootNode), rootNode(0), rootCount(0), charEncoding(XMP_OptionBits(-1)), pendingCount(0) + { + #if XMP_DebugBuild + parseLog = 0; + #endif + }; + + virtual ~XMLParserAdapter() {}; + + virtual void ParseBuffer ( const void * buffer, size_t length, bool last ) = 0; + + XML_Node tree; + XML_NodeVector parseStack; + XML_NodePtr rootNode; + size_t rootCount; + + XMP_OptionBits charEncoding; + size_t pendingCount; + unsigned char pendingInput[kXMLPendingInputMax]; // Buffered input for character encoding checks. + + #if XMP_DebugBuild + FILE * parseLog; + #endif + +}; + +// ================================================================================================= + +#endif // __XMLParserAdapter_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/XML_Node.cpp b/vendor/exiv2-0.25/xmpsdk/src/XML_Node.cpp new file mode 100644 index 0000000..5f20358 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XML_Node.cpp @@ -0,0 +1,463 @@ +// ================================================================================================= +// Copyright 2005-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! Must be the first #include! +#include "XMLParserAdapter.hpp" + +#include +#include +#include + +// ! Can't include XMP..._Impl.hpp - used by both Core and Files. +#define XMP_LitNMatch(s,l,n) (std::strncmp((s),(l),(n)) == 0) + +#if XMP_WinBuild +#ifdef _MSC_VER + #define snprintf _snprintf + #pragma warning ( disable : 4996 ) // snprintf is safe +#endif +#endif + +// ================================================================================================= + +#if 0 // Pattern for iterating over the children or attributes: + for ( size_t xxNum = 0, xxLim = _node_->_offspring_->size(); xxNum < xxLim; ++xxNum ) { + const XML_NodePtr _curr_ = _node_->_offspring_[xxNum]; + } +#endif + +// ================================================================================================= +// XML_Node::IsWhitespaceNode +//=========================== + +bool XML_Node::IsWhitespaceNode() const +{ + if ( this->kind != kCDataNode ) return false; + + for ( size_t i = 0; i < this->value.size(); ++i ) { + unsigned char ch = this->value[i]; + if ( IsWhitespaceChar ( ch ) ) continue; + // *** Add checks for other whitespace characters. + return false; // All the checks failed, this isn't whitespace. + } + + return true; + +} // XML_Node::IsWhitespaceNode + +// ================================================================================================= +// XML_Node::IsLeafContentNode +//============================ + +bool XML_Node::IsLeafContentNode() const +{ + if ( this->kind != kElemNode ) return false; + if ( this->content.size() == 0 ) return true; + if ( this->content.size() > 1 ) return false; + if ( this->content[0]->kind != kCDataNode ) return false; + + return true; + +} // XML_Node::IsLeafContentNode + +// ================================================================================================= +// XML_Node::IsEmptyLeafNode +//========================== + +bool XML_Node::IsEmptyLeafNode() const +{ + + if ( (this->kind != kElemNode) || (this->content.size() != 0) ) return false; + return true; + +} // XML_Node::IsEmptyLeafNode + +// ================================================================================================= +// XML_Node::GetAttrValue +//======================= + +XMP_StringPtr XML_Node::GetAttrValue ( XMP_StringPtr attrName ) const +{ + + for ( size_t i = 0, aLim = this->attrs.size(); i < aLim; ++i ) { + XML_Node * attrPtr = this->attrs[i]; + if ( ! attrPtr->ns.empty() ) continue; // This form of GetAttrValue is for attrs in no namespace. + if ( attrPtr->name == attrName ) return attrPtr->value.c_str(); + } + + return 0; // Not found. + +} // XML_Node::GetAttrValue + +// ================================================================================================= +// XML_Node::SetAttrValue +//======================= + +void XML_Node::SetAttrValue ( XMP_StringPtr attrName, XMP_StringPtr attrValue ) +{ + + for ( size_t i = 0, aLim = this->attrs.size(); i < aLim; ++i ) { + XML_Node * attrPtr = this->attrs[i]; + if ( ! attrPtr->ns.empty() ) continue; // This form of SetAttrValue is for attrs in no namespace. + if ( attrPtr->name == attrName ) { + attrPtr->value = attrValue; + return; + } + } + +} // XML_Node::SetAttrValue + +// ================================================================================================= +// XML_Node::GetLeafContentValue +//============================== + +XMP_StringPtr XML_Node::GetLeafContentValue() const +{ + if ( (! this->IsLeafContentNode()) || this->content.empty() ) return ""; + + return this->content[0]->value.c_str(); + +} // XML_Node::GetLeafContentValue + +// ================================================================================================= +// XML_Node::SetLeafContentValue +//============================== + +void XML_Node::SetLeafContentValue ( XMP_StringPtr newValue ) +{ + XML_Node * valueNode; + + if ( ! this->content.empty() ) { + valueNode = this->content[0]; + } else { + valueNode = new XML_Node ( this, "", kCDataNode ); + this->content.push_back ( valueNode ); + } + + valueNode->value = newValue; + +} // XML_Node::SetLeafContentValue + +// ================================================================================================= +// XML_Node::CountNamedElements +//============================= + +size_t XML_Node::CountNamedElements ( XMP_StringPtr nsURI, XMP_StringPtr localName ) const +{ + size_t count = 0; + + for ( size_t i = 0, vLim = this->content.size(); i < vLim; ++i ) { + const XML_Node & child = *this->content[i]; + if ( child.ns != nsURI ) continue; + if ( strcmp ( localName, child.name.c_str()+child.nsPrefixLen ) != 0 ) continue; + ++count; + } + + return count; + +} // XML_Node::CountNamedElements + +// ================================================================================================= +// XML_Node::GetNamedElement +//========================== + +XML_NodePtr XML_Node::GetNamedElement ( XMP_StringPtr nsURI, XMP_StringPtr localName, size_t which /* = 0 */ ) +{ + + for ( size_t i = 0, vLim = this->content.size(); i < vLim; ++i ) { + XML_Node * childPtr = this->content[i]; + if ( childPtr->ns != nsURI ) continue; + if ( strcmp ( localName, childPtr->name.c_str()+childPtr->nsPrefixLen ) != 0 ) continue; + if ( which == 0 ) return childPtr; + --which; + } + + return 0; /// Not found. + +} // XML_Node::GetNamedElement + +// ================================================================================================= +// DumpNodeList +// ============ + +static const char * kNodeKinds[] = { "root", "elem", "attr", "cdata", "pi" }; + +static void DumpNodeList ( std::string * buffer, const XML_NodeVector & list, int indent ) +{ + + for ( size_t i = 0, limit = list.size(); i < limit; ++i ) { + + const XML_Node * node = list[i]; + + for ( int t = indent; t > 0; --t ) *buffer += " "; + if ( node->IsWhitespaceNode() ) { + *buffer += "-- whitespace --\n"; + continue; + } + + *buffer += node->name; + *buffer += " - "; + *buffer += kNodeKinds[node->kind]; + if ( ! node->value.empty() ) { + *buffer += ", value=\""; + *buffer += node->value; + *buffer += "\""; + } + if ( ! node->ns.empty() ) { + *buffer += ", ns=\""; + *buffer += node->ns; + *buffer += "\""; + } + if ( node->nsPrefixLen != 0 ) { + *buffer += ", prefixLen="; + char numBuf [20]; + snprintf ( numBuf, sizeof(numBuf), "%lu", (unsigned long)node->nsPrefixLen ); + *buffer += numBuf; + } + *buffer += "\n"; + + if ( ! node->attrs.empty() ) { + for ( int t = indent+1; t > 0; --t ) *buffer += " "; + *buffer += "attrs:\n"; + DumpNodeList ( buffer, node->attrs, indent+2 ); + } + + if ( ! node->content.empty() ) { + DumpNodeList ( buffer, node->content, indent+1 ); + } + + } + +} // DumpNodeList + +// ================================================================================================= +// XML_Node::Dump +//=============== + +void XML_Node::Dump ( std::string * buffer ) +{ + + *buffer = "Dump of XML_Node tree\n"; + + *buffer += "Root info: name=\""; + *buffer += this->name; + *buffer += "\", value=\""; + *buffer += this->value; + *buffer += "\", ns=\""; + *buffer += this->ns; + *buffer += "\", kind="; + *buffer += kNodeKinds[this->kind]; + *buffer += "\n"; + + if ( ! this->attrs.empty() ) { + *buffer += " attrs:\n"; + DumpNodeList ( buffer, this->attrs, 2 ); + } + *buffer += "\n"; + + DumpNodeList ( buffer, this->content, 0 ); + +} // XML_Node::Dump + +// ================================================================================================= +// SerializeOneNode +// ================ + +static void SerializeOneNode ( std::string * buffer, const XML_Node & node ) +{ + size_t i, limit; + XMP_StringPtr namePtr = node.name.c_str(); + if ( XMP_LitNMatch ( namePtr, "_dflt_:", 7 ) ) namePtr += 7; // Hack for default namespaces. + + switch ( node.kind ) { + + case kElemNode: + *buffer += '<'; + *buffer += namePtr; + for ( i = 0, limit = node.attrs.size(); i < limit; ++i ) { + SerializeOneNode ( buffer, *node.attrs[i] ); + } + if ( node.content.empty() ) { + *buffer += "/>"; + } else { + *buffer += '>'; + for ( i = 0, limit = node.content.size(); i < limit; ++i ) { + SerializeOneNode ( buffer, *node.content[i] ); + } + *buffer += "'; + } + break; + + case kAttrNode: + *buffer += ' '; + *buffer += namePtr; + *buffer += "=\""; + *buffer += node.value; + *buffer += '"'; + break; + + case kCDataNode: + *buffer += node.value; + break; + + case kPINode: + *buffer += node.value; // *** Note that we're dropping PIs during the Expat parse. + break; + + } + +} // SerializeOneNode + +// ================================================================================================= +// CollectNamespaceDecls +// ===================== + +typedef std::map < std::string, std::string > NamespaceMap; + +static void CollectNamespaceDecls ( NamespaceMap * nsMap, const XML_Node & node ) +{ + size_t i, limit; + + if ( ! node.ns.empty() ) { + size_t nameMid = 0; + while ( node.name[nameMid] != ':' ) ++nameMid; + std::string prefix = node.name.substr ( 0, nameMid ); + (*nsMap)[prefix] = node.ns; + } + + if ( node.kind == kElemNode ) { + + for ( i = 0, limit = node.attrs.size(); i < limit; ++i ) { + CollectNamespaceDecls ( nsMap, *node.attrs[i] ); + } + + for ( i = 0, limit = node.content.size(); i < limit; ++i ) { + const XML_Node & content = *node.content[i]; + if ( content.kind == kElemNode ) CollectNamespaceDecls ( nsMap, content ); + } + + } + +} // CollectNamespaceDecls + +// ================================================================================================= +// XML_Node::Serialize +//==================== + +void XML_Node::Serialize ( std::string * buffer ) +{ + buffer->erase(); + + if ( this->kind != kRootNode ) { + + SerializeOneNode ( buffer, *this ); + + } else { + + // Do the outermost level here, in order to add the XML version and namespace declarations. + + *buffer += "\n"; + + for ( size_t outer = 0, oLimit = this->content.size(); outer < oLimit; ++outer ) { + + const XML_Node & node = *this->content[outer]; + + if ( node.kind != kElemNode ) { + + SerializeOneNode ( buffer, node ); + + } else { + + XMP_StringPtr namePtr = node.name.c_str(); + if ( XMP_LitNMatch ( namePtr, "_dflt_:", 7 ) ) namePtr += 7; // Hack for default namespaces. + + *buffer += '<'; + *buffer += namePtr; + + NamespaceMap nsMap; + CollectNamespaceDecls ( &nsMap, node ); + NamespaceMap::iterator nsDecl = nsMap.begin(); + NamespaceMap::iterator nsEnd = nsMap.end(); + for ( ; nsDecl != nsEnd; ++nsDecl ) { + const std::string & prefix = nsDecl->first; + *buffer += " xmlns"; + if ( prefix != "_dflt_" ) { *buffer += ':'; *buffer += prefix; } + *buffer += "=\""; + *buffer += nsDecl->second; + *buffer += '"'; + } + + for ( size_t attr = 0, aLimit = node.attrs.size(); attr < aLimit; ++attr ) { + SerializeOneNode ( buffer, *node.attrs[attr] ); + } + + if ( node.content.empty() ) { + *buffer += "/>"; + } else { + *buffer += '>'; + for ( size_t child = 0, cLimit = node.content.size(); child < cLimit; ++child ) { + SerializeOneNode ( buffer, *node.content[child] ); + } + *buffer += "'; + } + + } + + } + + } + + +} // XML_Node::Serialize + +// ================================================================================================= +// XML_Node::RemoveAttrs +//====================== + +void XML_Node::RemoveAttrs() +{ + + for ( size_t i = 0, vLim = this->attrs.size(); i < vLim; ++i ) delete this->attrs[i]; + this->attrs.clear(); + +} // XML_Node::RemoveAttrs + +// ================================================================================================= +// XML_Node::RemoveContent +//======================== + +void XML_Node::RemoveContent() +{ + + for ( size_t i = 0, vLim = this->content.size(); i < vLim; ++i ) delete this->content[i]; + this->content.clear(); + +} // XML_Node::RemoveContent + +// ================================================================================================= +// XML_Node::ClearNode +//==================== + +void XML_Node::ClearNode() +{ + + this->kind = 0; + this->ns.erase(); + this->name.erase(); + this->value.erase(); + + this->RemoveAttrs(); + this->RemoveContent(); + +} // XML_Node::ClearNode + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.cpp new file mode 100644 index 0000000..e3632b9 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.cpp @@ -0,0 +1,1468 @@ +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMP_Version.h" +#include "XMPCore_Impl.hpp" +#include "XMPMeta.hpp" // *** For use of GetNamespacePrefix in FindSchemaNode. + +#include "UnicodeInlines.incl_cpp" + +#include + +using namespace std; + +#if XMP_WinBuild + #ifdef _MSC_VER + #pragma warning ( disable : 4290 ) // C++ exception specification ignored except ... not __declspec(nothrow) + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #endif +#endif + +// *** Add debug codegen checks, e.g. that typical masking operations really work +// *** Make option constants 0x...UL. + +// Internal code should be using #if with XMP_MacBuild, XMP_WinBuild, or XMP_UNIXBuild. +// This is a sanity check in case of accidental use of *_ENV. Some clients use the poor +// practice of defining the *_ENV macro with an empty value. +#if defined ( MAC_ENV ) + #if ! MAC_ENV + #error "MAC_ENV must be defined so that \"#if MAC_ENV\" is true" + #endif +#elif defined ( WIN_ENV ) + #if ! WIN_ENV + #error "WIN_ENV must be defined so that \"#if WIN_ENV\" is true" + #endif +#elif defined ( UNIX_ENV ) + #if ! UNIX_ENV + #error "UNIX_ENV must be defined so that \"#if UNIX_ENV\" is true" + #endif +#endif + +// ================================================================================================= +// Static Variables +// ================ + +XMP_Int32 sXMP_InitCount = 0; + +XMP_StringMap * sNamespaceURIToPrefixMap = 0; +XMP_StringMap * sNamespacePrefixToURIMap = 0; + +XMP_AliasMap * sRegisteredAliasMap = 0; // Needed by XMPIterator. + +XMP_VarString * sOutputNS = 0; +XMP_VarString * sOutputStr = 0; +XMP_VarString * sExceptionMessage = 0; + +XMP_Mutex sXMPCoreLock; +int sLockCount = 0; + +#if TraceXMPCalls + FILE * xmpOut = stderr; +#endif + +void * voidVoidPtr = 0; // Used to backfill null output parameters. +XMP_StringPtr voidStringPtr = 0; +XMP_StringLen voidStringLen = 0; +XMP_OptionBits voidOptionBits = 0; +XMP_Uns8 voidByte = 0; +bool voidBool = 0; +XMP_Int32 voidInt32 = 0; +XMP_Int64 voidInt64 = 0; +double voidDouble = 0.0; +XMP_DateTime voidDateTime; +WXMP_Result void_wResult; + +// ================================================================================================= +// Mutex Utilities +// =============== + +// ! Note that the mutex need not be "recursive", allowing the same thread to acquire it multiple +// ! times. There is a single XMP lock which is acquired in the wrapper classes. Internal calls +// ! never go back out to the wrappers. + +#if XMP_WinBuild + + bool XMP_InitMutex ( XMP_Mutex * mutex ) { + InitializeCriticalSection ( mutex ); + return true; + } + + void XMP_TermMutex ( XMP_Mutex & mutex ) { + DeleteCriticalSection ( &mutex ); + } + + void XMP_EnterCriticalRegion ( XMP_Mutex & mutex ) { + EnterCriticalSection ( &mutex ); + } + + void XMP_ExitCriticalRegion ( XMP_Mutex & mutex ) { + LeaveCriticalSection ( &mutex ); + } + +#else + + // Use pthread for both Mac and generic UNIX. + // ! Would be nice to specify PTHREAD_MUTEX_ERRORCHECK, but the POSIX documentation is useless. + // ! Would be OK but overkill to specify PTHREAD_MUTEX_RECURSIVE. + + bool XMP_InitMutex ( XMP_Mutex * mutex ) { + int err = pthread_mutex_init ( mutex, 0 ); + return (err == 0 ); + } + + void XMP_TermMutex ( XMP_Mutex & mutex ) { + (void) pthread_mutex_destroy ( &mutex ); + } + + void XMP_EnterCriticalRegion ( XMP_Mutex & mutex ) { + int err = pthread_mutex_lock ( &mutex ); + if ( err != 0 ) XMP_Throw ( "XMP_EnterCriticalRegion - pthread_mutex_lock failure", kXMPErr_ExternalFailure ); + } + + void XMP_ExitCriticalRegion ( XMP_Mutex & mutex ) { + int err = pthread_mutex_unlock ( &mutex ); + if ( err != 0 ) XMP_Throw ( "XMP_ExitCriticalRegion - pthread_mutex_unlock failure", kXMPErr_ExternalFailure ); + } + +#endif + +// ================================================================================================= +// Local Utilities +// =============== + +// ------------------------------------------------------------------------------------------------- +// VerifyXPathRoot +// --------------- +// +// Set up the first 2 components of the expanded XPath. Normalizes the various cases of using the +// full schema URI and/or a qualified root property name. Returns true for normal processing. If +// allowUnknownSchemaNS is true and the schema namespace is not registered, false is returned. If +// allowUnknownSchemaNS is false and the schema namespace is not registered, an exception is thrown. + +// *** Should someday check the full syntax. + +static void +VerifyXPathRoot ( XMP_StringPtr schemaURI, + XMP_StringPtr propName, + XMP_ExpandedXPath * expandedXPath ) +{ + // Do some basic checks on the URI and name. Try to lookup the URI. See if the name is qualified. + + XMP_Assert ( (schemaURI != 0) && (propName != 0) && (*propName != 0) ); + XMP_Assert ( (expandedXPath != 0) && (expandedXPath->empty()) ); + + if ( *schemaURI == 0 ) XMP_Throw ( "Schema namespace URI is required", kXMPErr_BadSchema ); + + if ( (*propName == '?') || (*propName == '@') ) { + XMP_Throw ( "Top level name must not be a qualifier", kXMPErr_BadXPath ); + } + for ( XMP_StringPtr ch = propName; *ch != 0; ++ch ) { + if ( (*ch == '/') || (*ch == '[') ) { + XMP_Throw ( "Top level name must be simple", kXMPErr_BadXPath ); + } + } + + XMP_StringMapPos uriPos = sNamespaceURIToPrefixMap->find ( XMP_VarString ( schemaURI ) ); + if ( uriPos == sNamespaceURIToPrefixMap->end() ) { + XMP_Throw ( "Unregistered schema namespace URI", kXMPErr_BadSchema ); + } + + XMP_StringPtr colonPos = propName; + while ( (*colonPos != 0) && (*colonPos != ':') ) ++colonPos; + VerifySimpleXMLName ( propName, colonPos ); // Verify the part before any colon. + + // Verify the various URI and prefix combinations. Initialize the expanded XPath. + + if ( *colonPos == 0 ) { + + // The propName is unqualified, use the schemaURI and associated prefix. + + expandedXPath->push_back ( XPathStepInfo ( schemaURI, kXMP_SchemaNode ) ); + expandedXPath->push_back ( XPathStepInfo ( uriPos->second, 0 ) ); + (*expandedXPath)[kRootPropStep].step += propName; + + } else { + + // The propName is qualified. Make sure the prefix is legit. Use the associated URI and qualified name. + + size_t prefixLen = colonPos - propName + 1; // ! Include the colon. + VerifySimpleXMLName ( colonPos+1, colonPos+strlen(colonPos) ); + + XMP_VarString prefix ( propName, prefixLen ); + XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( prefix ); + if ( prefixPos == sNamespacePrefixToURIMap->end() ) { + XMP_Throw ( "Unknown schema namespace prefix", kXMPErr_BadSchema ); + } + if ( prefix != uriPos->second ) { + XMP_Throw ( "Schema namespace URI and prefix mismatch", kXMPErr_BadSchema ); + } + + expandedXPath->push_back ( XPathStepInfo ( schemaURI, kXMP_SchemaNode ) ); + expandedXPath->push_back ( XPathStepInfo ( propName, 0 ) ); + + } + +} // VerifyXPathRoot + +// ------------------------------------------------------------------------------------------------- +// VerifyQualName +// -------------- + +static void +VerifyQualName ( XMP_StringPtr qualName, XMP_StringPtr nameEnd ) +{ + if ( qualName >= nameEnd ) XMP_Throw ( "Empty qualified name", kXMPErr_BadXPath ); + + XMP_StringPtr colonPos = qualName; + while ( (colonPos < nameEnd) && (*colonPos != ':') ) ++colonPos; + if ( (colonPos == qualName) || (colonPos >= nameEnd) ) XMP_Throw ( "Ill-formed qualified name", kXMPErr_BadXPath ); + + VerifySimpleXMLName ( qualName, colonPos ); + VerifySimpleXMLName ( colonPos+1, nameEnd ); + + size_t prefixLen = colonPos - qualName + 1; // ! Include the colon. + XMP_VarString prefix ( qualName, prefixLen ); + XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( prefix ); + if ( prefixPos == sNamespacePrefixToURIMap->end() ) { + XMP_Throw ( "Unknown namespace prefix for qualified name", kXMPErr_BadXPath ); + } + +} // VerifyQualName + +// ------------------------------------------------------------------------------------------------- +// FindIndexedItem +// --------------- +// +// [index] An element of an array. +// +// Support the implicit creation of a new last item. + +static XMP_Index +FindIndexedItem ( XMP_Node * arrayNode, const XMP_VarString & indexStep, bool createNodes ) +{ + XMP_Index index = 0; + size_t chLim = indexStep.size() - 1; + + XMP_Assert ( (chLim >= 2) && (indexStep[0] == '[') && (indexStep[chLim] == ']') ); + + for ( size_t chNum = 1; chNum != chLim; ++chNum ) { + XMP_Assert ( ('0' <= indexStep[chNum]) && (indexStep[chNum] <= '9') ); + index = (index * 10) + (indexStep[chNum] - '0'); + if ( index < 0 ) { + XMP_Throw ( "Array index overflow", kXMPErr_BadXPath ); // ! Overflow, not truly negative. + } + } + + --index; // Change to a C-style, zero based index. + if ( index < 0 ) XMP_Throw ( "Array index must be larger than zero", kXMPErr_BadXPath ); + + if ( (index == (XMP_Index)arrayNode->children.size()) && createNodes ) { // Append a new last+1 node. + XMP_Node * newItem = new XMP_Node ( arrayNode, kXMP_ArrayItemName, kXMP_NewImplicitNode ); + arrayNode->children.push_back ( newItem ); + } + + // ! Don't throw here for a too large index. SetProperty will throw, GetProperty will not. + if ( index >= (XMP_Index)arrayNode->children.size() ) index = -1; + return index; + +} // FindIndexedItem + +// ------------------------------------------------------------------------------------------------- +// SplitNameAndValue +// ----------------- +// +// Split the name and value parts for field and qualifier selectors: +// +// [qualName="value"] An element in an array of structs, chosen by a field value. +// [?qualName="value"] An element in an array, chosen by a qualifier value. +// +// The value portion is a string quoted by ''' or '"'. The value may contain any character including +// a doubled quoting character. The value may be empty. + +static void +SplitNameAndValue ( const XMP_VarString & selStep, XMP_VarString * nameStr, XMP_VarString * valueStr ) +{ + XMP_StringPtr partBegin = selStep.c_str(); + XMP_StringPtr partEnd; + + const XMP_StringPtr valueEnd = partBegin + (selStep.size() - 2); + const char quote = *valueEnd; + + XMP_Assert ( (*partBegin == '[') && (*(valueEnd+1) == ']') ); + XMP_Assert ( (selStep.size() >= 6) && ((quote == '"') || (quote == '\'')) ); + + // Extract the name part. + + ++partBegin; // Skip the opening '['. + if ( *partBegin == '?' ) ++partBegin; + for ( partEnd = partBegin+1; *partEnd != '='; ++partEnd ) {}; + + nameStr->assign ( partBegin, (partEnd - partBegin) ); + + // Extract the value part, reducing doubled quotes. + + XMP_Assert ( *(partEnd+1) == quote ); + + partBegin = partEnd + 2; + valueStr->erase(); + valueStr->reserve ( valueEnd - partBegin ); // Maximum length, don't optimize doubled quotes. + + for ( partEnd = partBegin; partEnd < valueEnd; ++partEnd ) { + if ( (*partEnd == quote) && (*(partEnd+1) == quote) ) { + ++partEnd; + valueStr->append ( partBegin, (partEnd - partBegin) ); + partBegin = partEnd+1; // ! Loop will increment partEnd again. + } + } + + valueStr->append ( partBegin, (partEnd - partBegin) ); // ! The loop does not add the last part. + +} // SplitNameAndValue + +// ------------------------------------------------------------------------------------------------- +// LookupQualSelector +// ------------------ +// +// [?qualName="value"] An element in an array, chosen by a qualifier value. +// +// Note that we don't create implicit nodes for qualifier selectors, so no CreateNodes parameter. + +static XMP_Index +LookupQualSelector ( XMP_Node * arrayNode, const XMP_VarString & qualName, XMP_VarString & qualValue ) +{ + XMP_Index index; + + if ( qualName == "xml:lang" ) { + + // *** Should check that the value is legit RFC 1766/3066. + NormalizeLangValue ( &qualValue ); + index = LookupLangItem ( arrayNode, qualValue ) ; + + } else { + + XMP_Index itemLim; + for ( index = 0, itemLim = arrayNode->children.size(); index != itemLim; ++index ) { + + const XMP_Node * currItem = arrayNode->children[index]; + XMP_Assert ( currItem->parent == arrayNode ); + + size_t q, qualLim; + for ( q = 0, qualLim = currItem->qualifiers.size(); q != qualLim; ++q ) { + const XMP_Node * currQual = currItem->qualifiers[q]; + XMP_Assert ( currQual->parent == currItem ); + if ( currQual->name != qualName ) continue; + if ( currQual->value == qualValue ) break; // Exit qual loop. + } + if ( q != qualLim ) break; // Exit child loop, found an item with a matching qualifier. + + } + if ( index == itemLim ) index = -1; + + } + + return index; + +} // LookupQualSelector + +// ------------------------------------------------------------------------------------------------- +// FollowXPathStep +// --------------- +// +// After processing by ExpandXPath, a step can be of these forms: +// qualName A top level property or struct field. +// [index] An element of an array. +// [last()] The last element of an array. +// [qualName="value"] An element in an array of structs, chosen by a field value. +// [?qualName="value"] An element in an array, chosen by a qualifier value. +// ?qualName A general qualifier. +// +// Find the appropriate child node, resolving aliases, and optionally creating nodes. + +static XMP_Node * +FollowXPathStep ( XMP_Node * parentNode, + const XMP_ExpandedXPath & fullPath, + size_t stepNum, + bool createNodes, + XMP_NodePtrPos * ptrPos, + bool aliasedArrayItem = false ) +{ + XMP_Node * nextNode = 0; + const XPathStepInfo & nextStep = fullPath[stepNum]; + XMP_Index index = 0; + XMP_OptionBits stepKind = nextStep.options & kXMP_StepKindMask; + + XMP_Assert ( (kXMP_StructFieldStep <= stepKind) && (stepKind <= kXMP_FieldSelectorStep) ); + + if ( stepKind == kXMP_StructFieldStep ) { + + nextNode = FindChildNode ( parentNode, nextStep.step.c_str(), createNodes, ptrPos ); + + } else if ( stepKind == kXMP_QualifierStep ) { + + XMP_StringPtr qualStep = nextStep.step.c_str(); + XMP_Assert ( *qualStep == '?' ); + ++qualStep; + nextNode = FindQualifierNode ( parentNode, qualStep, createNodes, ptrPos ); + + } else { + + // This is an array indexing step. First get the index, then get the node. + + if ( ! (parentNode->options & kXMP_PropValueIsArray) ) { + XMP_Throw ( "Indexing applied to non-array", kXMPErr_BadXPath ); + } + + if ( stepKind == kXMP_ArrayIndexStep ) { + index = FindIndexedItem ( parentNode, nextStep.step, createNodes ); + } else if ( stepKind == kXMP_ArrayLastStep ) { + index = parentNode->children.size() - 1; + } else if ( stepKind == kXMP_FieldSelectorStep ) { + XMP_VarString fieldName, fieldValue; + SplitNameAndValue ( nextStep.step, &fieldName, &fieldValue ); + index = LookupFieldSelector ( parentNode, fieldName.c_str(), fieldValue.c_str() ); + } else if ( stepKind == kXMP_QualSelectorStep ) { + XMP_VarString qualName, qualValue; + SplitNameAndValue ( nextStep.step, &qualName, &qualValue ); + index = LookupQualSelector ( parentNode, qualName, qualValue ); + } else { + XMP_Throw ( "Unknown array indexing step in FollowXPathStep", kXMPErr_InternalFailure ); + } + + if ( (0 <= index) && (index <= (XMP_Index)parentNode->children.size()) ) nextNode = parentNode->children[index]; + + if ( (index == -1) && createNodes && aliasedArrayItem && (stepKind == kXMP_QualSelectorStep) ) { + + // An ugly special case without an obvious better place to be. We have an alias to the + // x-default item of an alt-text array. A simple reference via SetProperty must create + // the x-default item if it does not yet exist. + + XMP_Assert ( parentNode->options & kXMP_PropArrayIsAltText ); + XMP_Assert ( (stepNum == 2) && (nextStep.step == "[?xml:lang=\"x-default\"]") ); + + nextNode = new XMP_Node ( parentNode, kXMP_ArrayItemName, + (kXMP_PropHasQualifiers | kXMP_PropHasLang | kXMP_NewImplicitNode) ); + + XMP_Node * langQual = new XMP_Node ( nextNode, "xml:lang", "x-default", kXMP_PropIsQualifier ); + nextNode->qualifiers.push_back ( langQual ); + + if ( parentNode->children.empty() ) { + parentNode->children.push_back ( nextNode ); + } else { + parentNode->children.insert ( parentNode->children.begin(), nextNode ); + } + + index = 0; // ! C-style index! The x-default item is always first. + + } + + if ( (nextNode != 0) && (ptrPos != 0) ) *ptrPos = parentNode->children.begin() + index; + + } + + if ( (nextNode != 0) && (nextNode->options & kXMP_NewImplicitNode) ) { + nextNode->options |= (nextStep.options & kXMP_PropArrayFormMask); + } + + XMP_Assert ( (ptrPos == 0) || (nextNode == 0) || (nextNode == **ptrPos) ); + XMP_Assert ( (nextNode != 0) || (! createNodes) ); + return nextNode; + +} // FollowXPathStep + +// ------------------------------------------------------------------------------------------------- +// CheckImplicitStruct +// ------------------- + +static inline void +CheckImplicitStruct ( XMP_Node * node, + const XMP_ExpandedXPath & expandedXPath, + size_t stepNum, + size_t stepLim ) +{ + + if ( (stepNum < stepLim) && + ((node->options & kXMP_PropCompositeMask) == 0) && + (GetStepKind ( expandedXPath[stepNum].options ) == kXMP_StructFieldStep) ) { + + node->options |= kXMP_PropValueIsStruct; + + } + +} // CheckImplicitStruct + +// ------------------------------------------------------------------------------------------------- +// DeleteSubtree +// ------------- + +// *** Might be useful elsewhere? + +static void +DeleteSubtree ( XMP_NodePtrPos rootNodePos ) +{ + XMP_Node * rootNode = *rootNodePos; + XMP_Node * rootParent = rootNode->parent; + + if ( ! (rootNode->options & kXMP_PropIsQualifier) ) { + + rootParent->children.erase ( rootNodePos ); + + } else { + + rootParent->qualifiers.erase ( rootNodePos ); + + XMP_Assert ( rootParent->options & kXMP_PropHasQualifiers); + if ( rootParent->qualifiers.empty() ) rootParent->options ^= kXMP_PropHasQualifiers; + + if ( rootNode->name == "xml:lang" ) { + XMP_Assert ( rootParent->options & kXMP_PropHasLang); + rootParent->options ^= kXMP_PropHasLang; + } else if ( rootNode->name == "rdf:type" ) { + XMP_Assert ( rootParent->options & kXMP_PropHasType); + rootParent->options ^= kXMP_PropHasType; + } + + } + + delete rootNode; + +} // DeleteSubtree + +// ================================================================================================= +// ================================================================================================= + +// ================================================================================================= +// VerifySetOptions +// ================ +// +// Normalize and verify the option flags for SetProperty and similar functions. The allowed options +// here are just those that apply to the property, that would be kept in the XMP_Node. Others that +// affect the selection of the node or other processing must be removed by now. These are: +// kXMP_InsertBeforeItem +// kXMP_InsertAfterItem +// kXMP_KeepQualifiers +// kXMPUtil_AllowCommas + +enum { + kXMP_AllSetOptionsMask = (kXMP_PropValueIsURI | + kXMP_PropValueIsStruct | + kXMP_PropValueIsArray | + kXMP_PropArrayIsOrdered | + kXMP_PropArrayIsAlternate | + kXMP_PropArrayIsAltText | + kXMP_DeleteExisting) +}; + +XMP_OptionBits +VerifySetOptions ( XMP_OptionBits options, XMP_StringPtr propValue ) +{ + + if ( options & kXMP_PropArrayIsAltText ) options |= kXMP_PropArrayIsAlternate; + if ( options & kXMP_PropArrayIsAlternate ) options |= kXMP_PropArrayIsOrdered; + if ( options & kXMP_PropArrayIsOrdered ) options |= kXMP_PropValueIsArray; + + if ( options & ~kXMP_AllSetOptionsMask ) { + XMP_Throw ( "Unrecognized option flags", kXMPErr_BadOptions ); + } + + if ( (options & kXMP_PropValueIsStruct) && (options & kXMP_PropValueIsArray) ) { + XMP_Throw ( "IsStruct and IsArray options are mutually exclusive", kXMPErr_BadOptions ); + } + + if ( (options & kXMP_PropValueOptionsMask) && (options & kXMP_PropCompositeMask) ) { + XMP_Throw ( "Structs and arrays can't have \"value\" options", kXMPErr_BadOptions ); + } + + if ( (propValue != 0) && (options & kXMP_PropCompositeMask) ) { + XMP_Throw ( "Structs and arrays can't have string values", kXMPErr_BadOptions ); + } + + return options; + +} // VerifySetOptions + +// ================================================================================================= +// ComposeXPath +// ============ +// +// Compose the canonical string form of an expanded XPath expression. + +extern void +ComposeXPath ( const XMP_ExpandedXPath & expandedXPath, + XMP_VarString * stringXPath ) +{ + *stringXPath = expandedXPath[kRootPropStep].step; + + for ( size_t index = kRootPropStep+1; index < expandedXPath.size(); ++index ) { + const XPathStepInfo & currStep = expandedXPath[index]; + + switch ( currStep.options & kXMP_StepKindMask ) { + + case kXMP_StructFieldStep : + case kXMP_QualifierStep : + *stringXPath += '/'; + *stringXPath += currStep.step; + break; + + case kXMP_ArrayIndexStep : + case kXMP_ArrayLastStep : + case kXMP_QualSelectorStep : + case kXMP_FieldSelectorStep : + *stringXPath += currStep.step; + break; + + default: + XMP_Throw ( "Unexpected", kXMPErr_InternalFailure ); + + } + + } + +} // ComposeXPath + +// ================================================================================================= +// ExpandXPath +// =========== +// +// Split an XPath expression apart at the conceptual steps, adding the root namespace prefix to the +// first property component. The schema URI is put in the first (0th) slot in the expanded XPath. +// Check if the top level component is an alias, but don't resolve it. +// +// In the most verbose case steps are separated by '/', and each step can be of these forms: +// +// qualName A top level property or struct field. +// *[index] An element of an array. +// *[last()] The last element of an array. +// *[fieldName="value"] An element in an array of structs, chosen by a field value. +// *[@xml:lang="value"] An element in an alt-text array, chosen by the xml:lang qualifier. +// *[?qualName="value"] An element in an array, chosen by a qualifier value. +// @xml:lang An xml:lang qualifier. +// ?qualName A general qualifier. +// +// The logic is complicated though by shorthand for arrays, the separating '/' and leading '*' +// are optional. These are all equivalent: array/*[2] array/[2] array*[2] array[2] +// All of these are broken into the 2 steps "array" and "[2]". +// +// The value portion in the array selector forms is a string quoted by ''' or '"'. The value +// may contain any character including a doubled quoting character. The value may be empty. +// +// The syntax isn't checked, but an XML name begins with a letter or '_', and contains letters, +// digits, '.', '-', '_', and a bunch of special non-ASCII Unicode characters. An XML qualified +// name is a pair of names separated by a colon. + +void +ExpandXPath ( XMP_StringPtr schemaNS, + XMP_StringPtr propPath, + XMP_ExpandedXPath * expandedXPath ) +{ + XMP_Assert ( (schemaNS != 0) && (propPath != 0) && (*propPath != 0) && (expandedXPath != 0) ); + + XMP_StringPtr stepBegin, stepEnd; + XMP_StringPtr qualName, nameEnd; + XMP_VarString currStep; + + qualName = nameEnd = NULL; + size_t resCount = 2; // Guess at the number of steps. At least 2, plus 1 for each '/' or '['. + for ( stepEnd = propPath; *stepEnd != 0; ++stepEnd ) { + if ( (*stepEnd == '/') || (*stepEnd == '[') ) ++resCount; + } + + expandedXPath->clear(); + expandedXPath->reserve ( resCount ); + + // ------------------------------------------------------------------------------------------- + // Pull out the first component and do some special processing on it: add the schema namespace + // prefix and see if it is an alias. The start must be a qualName. + + stepBegin = propPath; + stepEnd = stepBegin; + while ( (*stepEnd != 0) && (*stepEnd != '/') && (*stepEnd != '[') && (*stepEnd != '*') ) ++stepEnd; + if ( stepEnd == stepBegin ) XMP_Throw ( "Empty initial XPath step", kXMPErr_BadXPath ); + currStep.assign ( stepBegin, (stepEnd - stepBegin) ); + + VerifyXPathRoot ( schemaNS, currStep.c_str(), expandedXPath ); + + XMP_OptionBits stepFlags = kXMP_StructFieldStep; + if ( sRegisteredAliasMap->find ( (*expandedXPath)[kRootPropStep].step ) != sRegisteredAliasMap->end() ) { + stepFlags |= kXMP_StepIsAlias; + } + (*expandedXPath)[kRootPropStep].options |= stepFlags; + + // ----------------------------------------------------- + // Now continue to process the rest of the XPath string. + + while ( *stepEnd != 0 ) { + + stepBegin = stepEnd; + if ( *stepBegin == '/' ) ++stepBegin; + if ( *stepBegin == '*' ) { + ++stepBegin; + if ( *stepBegin != '[' ) XMP_Throw ( "Missing '[' after '*'", kXMPErr_BadXPath ); + } + stepEnd = stepBegin; + + if ( *stepBegin != '[' ) { + + // A struct field or qualifier. + qualName = stepBegin; + while ( (*stepEnd != 0) && (*stepEnd != '/') && (*stepEnd != '[') && (*stepEnd != '*') ) ++stepEnd; + nameEnd = stepEnd; + stepFlags = kXMP_StructFieldStep; // ! Touch up later, also changing '@' to '?'. + + } else { + + // One of the array forms. + + ++stepEnd; // Look at the character after the leading '['. + + if ( ('0' <= *stepEnd) && (*stepEnd <= '9') ) { + + // A numeric (decimal integer) array index. + while ( (*stepEnd != 0) && ('0' <= *stepEnd) && (*stepEnd <= '9') ) ++stepEnd; + if ( *stepEnd != ']' ) XMP_Throw ( "Missing ']' for integer array index", kXMPErr_BadXPath ); + stepFlags = kXMP_ArrayIndexStep; + + } else { + + // Could be "[last()]" or one of the selector forms. Find the ']' or '='. + + while ( (*stepEnd != 0) && (*stepEnd != ']') && (*stepEnd != '=') ) ++stepEnd; + if ( *stepEnd == 0 ) XMP_Throw ( "Missing ']' or '=' for array index", kXMPErr_BadXPath ); + + if ( *stepEnd == ']' ) { + + if ( strncmp ( "[last()", stepBegin, (stepEnd - stepBegin) ) != 0 ) { + XMP_Throw ( "Invalid non-numeric array index", kXMPErr_BadXPath ); + } + stepFlags = kXMP_ArrayLastStep; + + } else { + + qualName = stepBegin+1; + nameEnd = stepEnd; + ++stepEnd; // Absorb the '=', remember the quote. + const char quote = *stepEnd; + if ( (quote != '\'') && (quote != '"') ) { + XMP_Throw ( "Invalid quote in array selector", kXMPErr_BadXPath ); + } + + ++stepEnd; // Absorb the leading quote. + while ( *stepEnd != 0 ) { + if ( *stepEnd == quote ) { + if ( *(stepEnd+1) != quote ) break; + ++stepEnd; + } + ++stepEnd; + } + if ( *stepEnd == 0 ) { + XMP_Throw ( "No terminating quote for array selector", kXMPErr_BadXPath ); + } + ++stepEnd; // Absorb the trailing quote. + + stepFlags = kXMP_FieldSelectorStep; // ! Touch up later, also changing '@' to '?'. + + } + + } + + if ( *stepEnd != ']' ) XMP_Throw ( "Missing ']' for array index", kXMPErr_BadXPath ); + ++stepEnd; + + } + + if ( stepEnd == stepBegin ) XMP_Throw ( "Empty XPath step", kXMPErr_BadXPath ); + currStep.assign ( stepBegin, (stepEnd - stepBegin) ); + + if ( GetStepKind ( stepFlags ) == kXMP_StructFieldStep ) { + + if ( currStep[0] == '@' ) { + currStep[0] = '?'; + if ( currStep != "?xml:lang" ) XMP_Throw ( "Only xml:lang allowed with '@'", kXMPErr_BadXPath ); + } + if ( currStep[0] == '?' ) { + ++qualName; + stepFlags = kXMP_QualifierStep; + } + VerifyQualName ( qualName, nameEnd ); + + } else if ( GetStepKind ( stepFlags ) == kXMP_FieldSelectorStep ) { + + if ( currStep[1] == '@' ) { + currStep[1] = '?'; + if ( strncmp ( currStep.c_str(), "[?xml:lang=", 11 ) != 0 ) { + XMP_Throw ( "Only xml:lang allowed with '@'", kXMPErr_BadXPath ); + } + } + if ( currStep[1] == '?' ) { + ++qualName; + stepFlags = kXMP_QualSelectorStep; + } + VerifyQualName ( qualName, nameEnd ); + + } + + expandedXPath->push_back ( XPathStepInfo ( currStep, stepFlags ) ); + + } + +} // ExpandXPath + +// ================================================================================================= +// FindSchemaNode +// ============== +// +// Find or create a schema node. Returns a pointer to the node, and optionally an iterator for the +// node's position in the top level vector of schema nodes. The iterator is unchanged if no schema +// node (null) is returned. + +XMP_Node * +FindSchemaNode ( XMP_Node * xmpTree, + XMP_StringPtr nsURI, + bool createNodes, + XMP_NodePtrPos * ptrPos /* = 0 */ ) +{ + XMP_Node * schemaNode = 0; + + XMP_Assert ( xmpTree->parent == 0 ); + + for ( size_t schemaNum = 0, schemaLim = xmpTree->children.size(); schemaNum != schemaLim; ++schemaNum ) { + XMP_Node * currSchema = xmpTree->children[schemaNum]; + XMP_Assert ( currSchema->parent == xmpTree ); + if ( currSchema->name == nsURI ) { + schemaNode = currSchema; + if ( ptrPos != 0 ) *ptrPos = xmpTree->children.begin() + schemaNum; + break; + } + } + + if ( (schemaNode == 0) && createNodes ) { + + schemaNode = new XMP_Node ( xmpTree, nsURI, (kXMP_SchemaNode | kXMP_NewImplicitNode) ); + XMP_StringPtr prefixPtr; + XMP_StringLen prefixLen; + bool found = XMPMeta::GetNamespacePrefix ( nsURI, &prefixPtr, &prefixLen ); // *** Use map directly? + XMP_Assert ( found ); + UNUSED(found); + + schemaNode->value.assign ( prefixPtr, prefixLen ); + xmpTree->children.push_back ( schemaNode ); + if ( ptrPos != 0 ) *ptrPos = xmpTree->children.end() - 1; + + #if 0 // *** XMP_DebugBuild + schemaNode->_valuePtr = schemaNode->value.c_str(); + #endif + + } + + XMP_Assert ( (ptrPos == 0) || (schemaNode == 0) || (schemaNode == **ptrPos) ); + XMP_Assert ( (schemaNode != 0) || (! createNodes) ); + return schemaNode; + +} // FindSchemaNode + +// ================================================================================================= +// FindChildNode +// ============= +// +// Find or create a child node under a given parent node. Returns a pointer to the child node, and +// optionally an iterator for the node's position in the parent's vector of children. The iterator +// is unchanged if no child node (null) is returned. + +XMP_Node * +FindChildNode ( XMP_Node * parent, + XMP_StringPtr childName, + bool createNodes, + XMP_NodePtrPos * ptrPos /* = 0 */ ) +{ + XMP_Node * childNode = 0; + + if ( ! (parent->options & (kXMP_SchemaNode | kXMP_PropValueIsStruct)) ) { + if ( ! (parent->options & kXMP_NewImplicitNode) ) { + XMP_Throw ( "Named children only allowed for schemas and structs", kXMPErr_BadXPath ); + } + if ( parent->options & kXMP_PropValueIsArray ) { + XMP_Throw ( "Named children not allowed for arrays", kXMPErr_BadXPath ); + } + if ( ! createNodes ) { // *** Should be assert? If !createNodes, why is the parent a new implicit node? + XMP_Throw ( "Parent is new implicit node, but createNodes is false", kXMPErr_InternalFailure ); + } + parent->options |= kXMP_PropValueIsStruct; + } + + for ( size_t childNum = 0, childLim = parent->children.size(); childNum != childLim; ++childNum ) { + XMP_Node * currChild = parent->children[childNum]; + XMP_Assert ( currChild->parent == parent ); + if ( currChild->name == childName ) { + childNode = currChild; + if ( ptrPos != 0 ) *ptrPos = parent->children.begin() + childNum; + break; + } + } + + if ( (childNode == 0) && createNodes ) { + childNode = new XMP_Node ( parent, childName, kXMP_NewImplicitNode ); + parent->children.push_back ( childNode ); + if ( ptrPos != 0 ) *ptrPos = parent->children.end() - 1; + } + + XMP_Assert ( (ptrPos == 0) || (childNode == 0) || (childNode == **ptrPos) ); + XMP_Assert ( (childNode != 0) || (! createNodes) ); + return childNode; + +} // FindChildNode + +// ================================================================================================= +// FindQualifierNode +// ================= +// +// Find or create a qualifier node under a given parent node. Returns a pointer to the qualifier node, +// and optionally an iterator for the node's position in the parent's vector of qualifiers. The iterator +// is unchanged if no qualifier node (null) is returned. +// +// ! On entry, the qualName parameter must not have the leading '?' from the XPath step. + +XMP_Node * +FindQualifierNode ( XMP_Node * parent, + XMP_StringPtr qualName, + bool createNodes, + XMP_NodePtrPos * ptrPos /* = 0 */ ) // *** Require ptrPos internally & remove checks? +{ + XMP_Node * qualNode = 0; + + XMP_Assert ( *qualName != '?' ); + + for ( size_t qualNum = 0, qualLim = parent->qualifiers.size(); qualNum != qualLim; ++qualNum ) { + XMP_Node * currQual = parent->qualifiers[qualNum]; + XMP_Assert ( currQual->parent == parent ); + if ( currQual->name == qualName ) { + qualNode = currQual; + if ( ptrPos != 0 ) *ptrPos = parent->qualifiers.begin() + qualNum; + break; + } + } + + if ( (qualNode == 0) && createNodes ) { + + qualNode = new XMP_Node ( parent, qualName, (kXMP_PropIsQualifier | kXMP_NewImplicitNode) ); + parent->options |= kXMP_PropHasQualifiers; + + const bool isLang = XMP_LitMatch ( qualName, "xml:lang" ); + const bool isType = XMP_LitMatch ( qualName, "rdf:type" ); + const bool isSpecial = isLang | isType; + + if ( isLang ) { + parent->options |= kXMP_PropHasLang; + } else if ( isType ) { + parent->options |= kXMP_PropHasType; + } + + if ( parent->qualifiers.empty() || (! isSpecial) ) { + parent->qualifiers.push_back ( qualNode ); + if ( ptrPos != 0 ) *ptrPos = parent->qualifiers.end() - 1; + } else { + XMP_NodePtrPos insertPos = parent->qualifiers.begin(); // ! Lang goes first, type after. + if ( isType && (parent->options & kXMP_PropHasLang) ) ++insertPos; // *** Does insert at end() work? + insertPos = parent->qualifiers.insert ( insertPos, qualNode ); + if ( ptrPos != 0 ) *ptrPos = insertPos; + } + + } + + XMP_Assert ( (ptrPos == 0) || (qualNode == 0) || (qualNode == **ptrPos) ); + XMP_Assert ( (qualNode != 0) || (! createNodes) ); + return qualNode; + +} // FindQualifierNode + +// ================================================================================================= +// LookupFieldSelector +// =================== +// +// [fieldName="value"] An element in an array of structs, chosen by a field value. +// +// Note that we don't create implicit nodes for field selectors, so no CreateNodes parameter. + +XMP_Index +LookupFieldSelector ( const XMP_Node * arrayNode, XMP_StringPtr fieldName, XMP_StringPtr fieldValue ) +{ + XMP_Index index, itemLim; + + for ( index = 0, itemLim = arrayNode->children.size(); index != itemLim; ++index ) { + + const XMP_Node * currItem = arrayNode->children[index]; + XMP_Assert ( currItem->parent == arrayNode ); + + if ( ! (currItem->options & kXMP_PropValueIsStruct) ) { + XMP_Throw ( "Field selector must be used on array of struct", kXMPErr_BadXPath ); + } + + size_t f, fieldLim; + for ( f = 0, fieldLim = currItem->children.size(); f != fieldLim; ++f ) { + const XMP_Node * currField = currItem->children[f]; + XMP_Assert ( currField->parent == currItem ); + if ( currField->name != fieldName ) continue; + if ( currField->value == fieldValue ) break; // Exit qual loop. + } + if ( f != fieldLim ) break; // Exit child loop, found an item with a matching qualifier. + + } + + if ( index == itemLim ) index = -1; + return index; + +} // LookupFieldSelector + +// ================================================================================================= +// LookupLangItem +// ============== +// +// ! Assumes that the language value is already normalized. + +XMP_Index +LookupLangItem ( const XMP_Node * arrayNode, XMP_VarString & lang ) +{ + if ( ! (arrayNode->options & kXMP_PropValueIsArray) ) { // *** Check for alt-text? + XMP_Throw ( "Language item must be used on array", kXMPErr_BadXPath ); + } + + XMP_Index index = 0; + XMP_Index itemLim = arrayNode->children.size(); + + for ( ; index != itemLim; ++index ) { + const XMP_Node * currItem = arrayNode->children[index]; + XMP_Assert ( currItem->parent == arrayNode ); + if ( currItem->qualifiers.empty() || (currItem->qualifiers[0]->name != "xml:lang") ) continue; + if ( currItem->qualifiers[0]->value == lang ) break; + } + + if ( index == itemLim ) index = -1; + return index; + +} // LookupLangItem + +// ================================================================================================= +// FindNode +// ======== +// +// Follow an expanded path expression to find or create a node. Returns a pointer to the node, and +// optionally an iterator for the node's position in the parent's vector of children or qualifiers. +// The iterator is unchanged if no child node (null) is returned. + +XMP_Node * +FindNode ( XMP_Node * xmpTree, + const XMP_ExpandedXPath & expandedXPath, + bool createNodes, + XMP_OptionBits leafOptions /* = 0 */, + XMP_NodePtrPos * ptrPos /* = 0 */ ) +{ + XMP_Node * currNode = 0; + XMP_NodePtrPos currPos; + XMP_NodePtrPos newSubPos; // Root of implicitly created subtree. Valid only if leaf is new. + bool leafIsNew = false; + + XMP_Assert ( (leafOptions == 0) || createNodes ); + + if ( expandedXPath.empty() ) XMP_Throw ( "Empty XPath", kXMPErr_BadXPath ); + + size_t stepNum = 1; // By default start calling FollowXPathStep for the top level property step. + size_t stepLim = expandedXPath.size(); + + // The start of processing deals with the schema node and top level alias. If the top level step + // is not an alias, lookup the expanded path's schema URI. Otherwise, lookup the expanded path + // for the actual. While tempting, don't substitute the actual's path into the local one, don't + // risk messing with the caller's use of that. Also don't call FindNode recursively, we need to + // keep track of the root of the implicitly created subtree as we move down the path. + + if ( ! (expandedXPath[kRootPropStep].options & kXMP_StepIsAlias) ) { + + currNode = FindSchemaNode ( xmpTree, expandedXPath[kSchemaStep].step.c_str(), createNodes, &currPos ); + if ( currNode == 0 ) return 0; + + if ( currNode->options & kXMP_NewImplicitNode ) { + currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. + if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. + leafIsNew = true; // If any parent is new, the leaf will be new also. + } + + } else { + + stepNum = 2; // ! Continue processing the original path at the second level step. + + XMP_AliasMapPos aliasPos = sRegisteredAliasMap->find ( expandedXPath[kRootPropStep].step ); + XMP_Assert ( aliasPos != sRegisteredAliasMap->end() ); + + currNode = FindSchemaNode ( xmpTree, aliasPos->second[kSchemaStep].step.c_str(), createNodes, &currPos ); + if ( currNode == 0 ) goto EXIT; + if ( currNode->options & kXMP_NewImplicitNode ) { + currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. + if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. + leafIsNew = true; // If any parent is new, the leaf will be new also. + } + + currNode = FollowXPathStep ( currNode, aliasPos->second, 1, createNodes, &currPos ); + if ( currNode == 0 ) goto EXIT; + if ( currNode->options & kXMP_NewImplicitNode ) { + currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. + CheckImplicitStruct ( currNode, expandedXPath, 2, stepLim ); + if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. + leafIsNew = true; // If any parent is new, the leaf will be new also. + } + + XMP_OptionBits arrayForm = aliasPos->second[kRootPropStep].options & kXMP_PropArrayFormMask; + XMP_Assert ( (arrayForm == 0) || (arrayForm & kXMP_PropValueIsArray) ); + XMP_Assert ( (arrayForm == 0) ? (aliasPos->second.size() == 2) : (aliasPos->second.size() == 3) ); + + if ( arrayForm != 0 ) { + currNode = FollowXPathStep ( currNode, aliasPos->second, 2, createNodes, &currPos, true ); + if ( currNode == 0 ) goto EXIT; + if ( currNode->options & kXMP_NewImplicitNode ) { + currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. + CheckImplicitStruct ( currNode, expandedXPath, 2, stepLim ); + if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. + leafIsNew = true; // If any parent is new, the leaf will be new also. + } + } + + } + + // Now follow the remaining steps of the original XPath. + + // *** ??? Change all the num/lim loops back to numoptions & kXMP_NewImplicitNode ) { + currNode->options ^= kXMP_NewImplicitNode; // Clear the implicit node bit. + CheckImplicitStruct ( currNode, expandedXPath, stepNum+1, stepLim ); + if ( ! leafIsNew ) newSubPos = currPos; // Save the top most implicit node. + leafIsNew = true; // If any parent is new, the leaf will be new also. + } + } + } catch ( ... ) { + if ( leafIsNew ) DeleteSubtree ( newSubPos ); + throw; + } + + // Done. Delete the implicitly created subtree if the eventual node was not found. + +EXIT: + + XMP_Assert ( (currNode == 0) || (currNode == *currPos) ); + XMP_Assert ( (currNode != 0) || (! createNodes) ); + + if ( leafIsNew ) { + if ( currNode != 0 ) { + currNode->options |= leafOptions; + } else { + DeleteSubtree ( newSubPos ); + } + } + + if ( (currNode != 0) && (ptrPos != 0) ) *ptrPos = currPos; + return currNode; + +} // FindNode + +// ================================================================================================= +// CloneOffspring +// ============== + +void +CloneOffspring ( const XMP_Node * origParent, XMP_Node * cloneParent ) +{ + size_t qualCount = origParent->qualifiers.size(); + size_t childCount = origParent->children.size(); + + if ( qualCount > 0 ) { + + cloneParent->qualifiers.reserve ( qualCount ); + + for ( size_t qualNum = 0, qualLim = qualCount; qualNum != qualLim; ++qualNum ) { + const XMP_Node * origQual = origParent->qualifiers[qualNum]; + XMP_Node * cloneQual = new XMP_Node ( cloneParent, origQual->name, origQual->value, origQual->options ); + CloneOffspring ( origQual, cloneQual ); + cloneParent->qualifiers.push_back ( cloneQual ); + } + + } + + if ( childCount > 0 ) { + + cloneParent->children.reserve ( childCount ); + + for ( size_t childNum = 0, childLim = childCount; childNum != childLim; ++childNum ) { + const XMP_Node * origChild = origParent->children[childNum]; + XMP_Node * cloneChild = new XMP_Node ( cloneParent, origChild->name, origChild->value, origChild->options ); + CloneOffspring ( origChild, cloneChild ); + cloneParent->children.push_back ( cloneChild ); + } + + } + +} // CloneOffspring + +// ================================================================================================= +// CloneSubtree +// ============ + +XMP_Node * +CloneSubtree ( const XMP_Node * origRoot, XMP_Node * cloneParent ) +{ + #if XMP_DebugBuild + if ( cloneParent->parent == 0 ) { + XMP_Assert ( origRoot->options & kXMP_SchemaNode ); + XMP_Assert ( FindConstSchema ( cloneParent, origRoot->name.c_str() ) == 0 ); + } else { + XMP_Assert ( ! (origRoot->options & kXMP_SchemaNode) ); + if ( cloneParent->options & kXMP_PropValueIsStruct ) { // Might be an array. + XMP_Assert ( FindConstChild ( cloneParent, origRoot->name.c_str() ) == 0 ); + } + } + #endif + + XMP_Node * cloneRoot = new XMP_Node ( cloneParent, origRoot->name, origRoot->value, origRoot->options ); + CloneOffspring ( origRoot, cloneRoot ) ; + cloneParent->children.push_back ( cloneRoot ); + + return cloneRoot; + +} // CloneSubtree + +// ================================================================================================= +// CompareSubtrees +// =============== +// +// Compare 2 subtrees for semantic equality. The comparison includes value, qualifiers, and form. +// Schemas, top level properties, struct fields, and qualifiers are allowed to have differing order, +// the appropriate right node is found from the left node's name. Alt-text arrays are allowed to be +// in differing language order, other arrays are compared in order. + +// *** Might someday consider sorting unordered arrays. +// *** Should expose this through XMPUtils. + +bool +CompareSubtrees ( const XMP_Node & leftNode, const XMP_Node & rightNode ) +{ + // Don't compare the names here, we want to allow the outermost roots to have different names. + if ( (leftNode.value != rightNode.value) || + (leftNode.options != rightNode.options) || + (leftNode.children.size() != rightNode.children.size()) || + (leftNode.qualifiers.size() != rightNode.qualifiers.size()) ) return false; + + // Compare the qualifiers, allowing them to be out of order. + for ( size_t qualNum = 0, qualLim = leftNode.qualifiers.size(); qualNum != qualLim; ++qualNum ) { + const XMP_Node * leftQual = leftNode.qualifiers[qualNum]; + const XMP_Node * rightQual = FindConstQualifier ( &rightNode, leftQual->name.c_str() ); + if ( (rightQual == 0) || (! CompareSubtrees ( *leftQual, *rightQual )) ) return false; + } + + if ( (leftNode.parent == 0) || (leftNode.options & (kXMP_SchemaNode | kXMP_PropValueIsStruct)) ) { + + // The parent node is a tree root, a schema, or a struct. + for ( size_t childNum = 0, childLim = leftNode.children.size(); childNum != childLim; ++childNum ) { + const XMP_Node * leftChild = leftNode.children[childNum]; + const XMP_Node * rightChild = FindConstChild ( &rightNode, leftChild->name.c_str() ); + if ( (rightChild == 0) || (! CompareSubtrees ( *leftChild, *rightChild )) ) return false; + } + + } else if ( leftNode.options & kXMP_PropArrayIsAltText ) { + + // The parent node is an alt-text array. + for ( size_t childNum = 0, childLim = leftNode.children.size(); childNum != childLim; ++childNum ) { + const XMP_Node * leftChild = leftNode.children[childNum]; + XMP_Assert ( (! leftChild->qualifiers.empty()) && (leftChild->qualifiers[0]->name == "xml:lang") ); + XMP_Index rightIndex = LookupLangItem ( &rightNode, leftChild->qualifiers[0]->value ); + if ( rightIndex == -1 ) return false; + const XMP_Node * rightChild = rightNode.children[rightIndex]; + if ( ! CompareSubtrees ( *leftChild, *rightChild ) ) return false; + } + + } else { + + // The parent must be simple or some other (not alt-text) kind of array. + XMP_Assert ( (! (leftNode.options & kXMP_PropCompositeMask)) || (leftNode.options & kXMP_PropValueIsArray) ); + for ( size_t childNum = 0, childLim = leftNode.children.size(); childNum != childLim; ++childNum ) { + const XMP_Node * leftChild = leftNode.children[childNum]; + const XMP_Node * rightChild = rightNode.children[childNum]; + if ( ! CompareSubtrees ( *leftChild, *rightChild ) ) return false; + } + + } + + return true; + +} // CompareSubtrees + +// ================================================================================================= +// DeleteEmptySchema +// ================= + +void +DeleteEmptySchema ( XMP_Node * schemaNode ) +{ + + if ( XMP_NodeIsSchema ( schemaNode->options ) && schemaNode->children.empty() ) { + + XMP_Node * xmpTree = schemaNode->parent; + + size_t schemaNum = 0; + size_t schemaLim = xmpTree->children.size(); + while ( (schemaNum < schemaLim) && (xmpTree->children[schemaNum] != schemaNode) ) ++schemaNum; + XMP_Assert ( schemaNum < schemaLim ); + + XMP_NodePtrPos schemaPos = xmpTree->children.begin() + schemaNum; + XMP_Assert ( *schemaPos == schemaNode ); + + xmpTree->children.erase ( schemaPos ); + delete schemaNode; + + } + +} // DeleteEmptySchema + +// ================================================================================================= +// NormalizeLangValue +// ================== +// +// Normalize an xml:lang value so that comparisons are effectively case insensitive as required by +// RFC 3066 (which superceeds RFC 1766). The normalization rules: +// +// - The primary subtag is lower case, the suggested practice of ISO 639. +// - All 2 letter secondary subtags are upper case, the suggested practice of ISO 3166. +// - All other subtags are lower case. + +void +NormalizeLangValue ( XMP_VarString * value ) +{ + char * tagStart; + char * tagEnd; + + // Find and process the primary subtag. + + tagStart = (char*) value->c_str(); + for ( tagEnd = tagStart; (*tagEnd != 0) && (*tagEnd != '-'); ++tagEnd ) { + if ( ('A' <= *tagEnd) && (*tagEnd <= 'Z') ) *tagEnd += 0x20; + } + + // Find and process the secondary subtag. + + tagStart = tagEnd; + if ( *tagStart == '-' ) ++tagStart; + for ( tagEnd = tagStart; (*tagEnd != 0) && (*tagEnd != '-'); ++tagEnd ) { + if ( ('A' <= *tagEnd) && (*tagEnd <= 'Z') ) *tagEnd += 0x20; + } + if ( tagEnd == tagStart+2 ) { + if ( ('a' <= *tagStart) && (*tagStart <= 'z') ) *tagStart -= 0x20; + ++tagStart; + if ( ('a' <= *tagStart) && (*tagStart <= 'z') ) *tagStart -= 0x20; + } + + // Find and process the remaining subtags. + + while ( true ) { + tagStart = tagEnd; + if ( *tagStart == '-' ) ++tagStart; + if ( *tagStart == 0 ) break; + for ( tagEnd = tagStart; (*tagEnd != 0) && (*tagEnd != '-'); ++tagEnd ) { + if ( ('A' <= *tagEnd) && (*tagEnd <= 'Z') ) *tagEnd += 0x20; + } + } + +} // NormalizeLangValue + +// ================================================================================================= +// NormalizeLangArray +// ================== +// +// Make sure the x-default item is first. Touch up "single value" arrays that have a default plus +// one real language. This case should have the same value for both items. Older Adobe apps were +// hardwired to only use the 'x-default' item, so we copy that value to the other item. + +void +NormalizeLangArray ( XMP_Node * array ) +{ + XMP_Assert ( XMP_ArrayIsAltText(array->options) ); + + size_t itemNum; + size_t itemLim = array->children.size(); + bool hasDefault = false; + + for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { + + if ( array->children[itemNum]->qualifiers.empty() || + (array->children[itemNum]->qualifiers[0]->name != "xml:lang") ) { + XMP_Throw ( "AltText array items must have an xml:lang qualifier", kXMPErr_BadXMP ); + } + + if ( array->children[itemNum]->qualifiers[0]->value == "x-default" ) { + hasDefault = true; + break; + } + + } + + if ( hasDefault ) { + + if ( itemNum != 0 ) { + XMP_Node * temp = array->children[0]; + array->children[0] = array->children[itemNum]; + array->children[itemNum] = temp; + } + +// 09-Oct-07, ahu: disabled to avoid unexpected behaviour +// if ( itemLim == 2 ) array->children[1]->value = array->children[0]->value; + + } + +} // NormalizeLangArray + +// ================================================================================================= +// DetectAltText +// ============= +// +// See if an array is an alt-text array. If so, make sure the x-default item is first. + +void +DetectAltText ( XMP_Node * xmpParent ) +{ + XMP_Assert ( XMP_ArrayIsAlternate(xmpParent->options) ); + + size_t itemNum, itemLim; + + for ( itemNum = 0, itemLim = xmpParent->children.size(); itemNum < itemLim; ++itemNum ) { + XMP_OptionBits currOptions = xmpParent->children[itemNum]->options; + if ( (currOptions & kXMP_PropCompositeMask) || (! (currOptions & kXMP_PropHasLang)) ) break; + } + + if ( (itemLim != 0) && (itemNum == itemLim) ) { + xmpParent->options |= kXMP_PropArrayIsAltText; + NormalizeLangArray ( xmpParent ); + } + +} // DetectAltText + +// ================================================================================================= +// SortNamedNodes +// ============== +// +// Sort the pointers in an XMP_NodeOffspring vector by name. + +static inline bool Compare ( const XMP_Node * left, const XMP_Node * right ) +{ + return (left->name < right->name); +} + +void +SortNamedNodes ( XMP_NodeOffspring & nodeVector ) +{ + sort ( nodeVector.begin(), nodeVector.end(), Compare ); +} // SortNamedNodes + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.hpp b/vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.hpp new file mode 100644 index 0000000..7d57de6 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPCore_Impl.hpp @@ -0,0 +1,534 @@ +#ifndef __XMPCore_Impl_hpp__ +#define __XMPCore_Impl_hpp__ + +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! Must be the first #include! +#include "XMP_Const.h" +#include "XMP_BuildInfo.h" + +#include "client-glue/WXMPMeta.hpp" + +#include +#include +#include + +#include +#include + +#if XMP_WinBuild + #include +#else + // Use pthread for both Mac and generic UNIX. + #include +#endif + +#if XMP_WinBuild +# ifdef _MSC_VER + #pragma warning ( disable : 4244 ) // possible loss of data (temporary for 64 bit builds) + #pragma warning ( disable : 4267 ) // possible loss of data (temporary for 64 bit builds) +# endif +#endif + +// ================================================================================================= +// Primary internal types + +class XMP_Node; +class XML_Node; +class XPathStepInfo; + +typedef XMP_Node * XMP_NodePtr; + +typedef std::vector XMP_NodeOffspring; +typedef XMP_NodeOffspring::iterator XMP_NodePtrPos; + +typedef std::string XMP_VarString; +typedef XMP_VarString::iterator XMP_VarStringPos; +typedef XMP_VarString::const_iterator XMP_cVarStringPos; + +typedef std::pair < XMP_VarString, XMP_VarString > XMP_StringPair; + +typedef std::map < XMP_VarString, XMP_VarString > XMP_StringMap; +typedef XMP_StringMap::iterator XMP_StringMapPos; +typedef XMP_StringMap::const_iterator XMP_cStringMapPos; + +typedef std::vector < XPathStepInfo > XMP_ExpandedXPath; +typedef XMP_ExpandedXPath::iterator XMP_ExpandedXPathPos; +typedef XMP_ExpandedXPath::const_iterator XMP_cExpandedXPathPos; + +typedef std::map < XMP_VarString, XMP_ExpandedXPath > XMP_AliasMap; // Alias name to actual path. +typedef XMP_AliasMap::iterator XMP_AliasMapPos; +typedef XMP_AliasMap::const_iterator XMP_cAliasMapPos; + +// ================================================================================================= +// General global variables and macros + +extern XMP_Int32 sXMP_InitCount; + +extern XMP_AliasMap * sRegisteredAliasMap; + +extern XMP_StringMap * sNamespaceURIToPrefixMap; +extern XMP_StringMap * sNamespacePrefixToURIMap; + +extern XMP_VarString * sOutputNS; +extern XMP_VarString * sOutputStr; + +extern void * voidVoidPtr; // Used to backfill null output parameters. +extern XMP_StringPtr voidStringPtr; +extern XMP_StringLen voidStringLen; +extern XMP_OptionBits voidOptionBits; +extern XMP_Bool voidByte; +extern bool voidBool; +extern XMP_Int32 voidInt32; +extern XMP_Int64 voidInt64; +extern double voidDouble; +extern XMP_DateTime voidDateTime; +extern WXMP_Result void_wResult; + +#define kHexDigits "0123456789ABCDEF" + +#define XMP_LitMatch(s,l) (std::strcmp((s),(l)) == 0) +#define XMP_LitNMatch(s,l,n) (std::strncmp((s),(l),(n)) == 0) + // *** Use the above macros! + +#define kTab ((char)0x09) +#define kLF ((char)0x0A) +#define kCR ((char)0x0D) + +#if XMP_WinBuild + #define snprintf _snprintf +#endif + +#define WtoXMPMeta_Ref(xmpRef) *((const XMPMeta *)(xmpRef)) +#define WtoXMPMeta_Ptr(xmpRef) (((xmpRef) == 0) ? 0 : (XMPMeta *)(xmpRef)) + +#define WtoXMPIterator_Ref(iterRef) *((const XMPIterator *)(iterRef)) +#define WtoXMPIterator_Ptr(iterRef) (((iterRef) == 0) ? 0 : (XMPIterator *)(iterRef)) + +#define WtoXMPDocOps_Ref(docRef) *((const XMPDocOps *)(docRef)) +#define WtoXMPDocOps_Ptr(docRef) (((docRef) == 0) ? 0 : (XMPDocOps *)(docRef)) + +#define IgnoreParam(p) voidVoidPtr = (void*)&p + +// ================================================================================================= +// Version info + +#if XMP_DebugBuild + #define kXMPCore_DebugFlag 1 +#else + #define kXMPCore_DebugFlag 0 +#endif + +#define kXMPCore_VersionNumber ( (kXMPCore_DebugFlag << 31) | \ + (XMP_API_VERSION_MAJOR << 24) | \ + (XMP_API_VERSION_MINOR << 16) | \ + (XMP_API_VERSION_MICRO << 8) ) + + #define kXMPCoreName "XMP Core" + #define kXMPCore_VersionMessage kXMPCoreName " " XMP_API_VERSION_STRING +// ================================================================================================= +// Support for asserts + +#define _MakeStr(p) #p +#define _NotifyMsg(n,c,f,l) #n " failed: " #c " in " f " at line " _MakeStr(l) + +#if ! XMP_DebugBuild + #define XMP_Assert(c) ((void) 0) +#else + #define XMP_Assert(c) assert ( c ) +#endif + + #define XMP_Enforce(c) \ + if ( ! (c) ) { \ + const char * assert_msg = _NotifyMsg ( XMP_Enforce, (c), __FILE__, __LINE__ ); \ + XMP_Throw ( assert_msg , kXMPErr_EnforceFailure ); \ + } +// ================================================================================================= +// Support for exceptions and thread locking + +#ifndef TraceXMPCalls + #define TraceXMPCalls 0 +#endif + +#if ! TraceXMPCalls + + #define AnnounceThrow(msg) /* Do nothing. */ + #define AnnounceCatch(msg) /* Do nothing. */ + + #define AnnounceEntry(proc) /* Do nothing. */ + #define AnnounceNoLock(proc) /* Do nothing. */ + #define AnnounceExit() /* Do nothing. */ + + #define ReportLock() ++sLockCount + #define ReportUnlock() --sLockCount + #define ReportKeepLock() /* Do nothing. */ + +#else + + extern FILE * xmpCoreOut; + + #define AnnounceThrow(msg) \ + fprintf ( xmpCoreOut, "XMP_Throw: %s\n", msg ); fflush ( xmpOut ) + #define AnnounceCatch(msg) \ + fprintf ( xmpCoreOut, "Catch in %s: %s\n", procName, msg ); fflush ( xmpOut ) + + #define AnnounceEntry(proc) \ + const char * procName = proc; \ + fprintf ( xmpCoreOut, "Entering %s\n", procName ); fflush ( xmpOut ) + #define AnnounceNoLock(proc) \ + const char * procName = proc; \ + fprintf ( xmpCoreOut, "Entering %s (no lock)\n", procName ); fflush ( xmpOut ) + #define AnnounceExit() \ + fprintf ( xmpCoreOut, "Exiting %s\n", procName ); fflush ( xmpOut ) + + #define ReportLock() \ + ++sLockCount; fprintf ( xmpCoreOut, " Auto lock, count = %d\n", sLockCount ); fflush ( xmpOut ) + #define ReportUnlock() \ + --sLockCount; fprintf ( xmpCoreOut, " Auto unlock, count = %d\n", sLockCount ); fflush ( xmpOut ) + #define ReportKeepLock() \ + fprintf ( xmpCoreOut, " Keeping lock, count = %d\n", sLockCount ); fflush ( xmpOut ) + +#endif + +#define XMP_Throw(msg,id) { AnnounceThrow ( msg ); throw XMP_Error ( id, msg ); } + +// ------------------------------------------------------------------------------------------------- + +#if XMP_WinBuild + typedef CRITICAL_SECTION XMP_Mutex; +#else + // Use pthread for both Mac and generic UNIX. + typedef pthread_mutex_t XMP_Mutex; +#endif + +extern XMP_Mutex sXMPCoreLock; +extern int sLockCount; // Keep signed to catch unlock errors. +extern XMP_VarString * sExceptionMessage; + +extern bool XMP_InitMutex ( XMP_Mutex * mutex ); +extern void XMP_TermMutex ( XMP_Mutex & mutex ); + +extern void XMP_EnterCriticalRegion ( XMP_Mutex & mutex ); +extern void XMP_ExitCriticalRegion ( XMP_Mutex & mutex ); + +class XMP_AutoMutex { +public: + XMP_AutoMutex() : mutex(&sXMPCoreLock) { XMP_EnterCriticalRegion ( *mutex ); ReportLock(); }; + ~XMP_AutoMutex() { if ( mutex != 0 ) { ReportUnlock(); XMP_ExitCriticalRegion ( *mutex ); mutex = 0; } }; + void KeepLock() { ReportKeepLock(); mutex = 0; }; +private: + XMP_Mutex * mutex; +}; + +// *** Switch to XMPEnterObjectWrapper & XMPEnterStaticWrapper, to allow for per-object locks. + +// ! Don't do the initialization check (sXMP_InitCount > 0) for the no-lock case. That macro is used +// ! by WXMPMeta_Initialize_1. + +#define XMP_ENTER_WRAPPER_NO_LOCK(proc) \ + AnnounceNoLock ( proc ); \ + XMP_Assert ( (0 <= sLockCount) && (sLockCount <= 1) ); \ + try { \ + wResult->errMessage = 0; + +#define XMP_ENTER_WRAPPER(proc) \ + AnnounceEntry ( proc ); \ + XMP_Assert ( sXMP_InitCount > 0 ); \ + XMP_Assert ( (0 <= sLockCount) && (sLockCount <= 1) ); \ + try { \ + XMP_AutoMutex mutex; \ + wResult->errMessage = 0; + +#define XMP_EXIT_WRAPPER \ + XMP_CATCH_EXCEPTIONS \ + AnnounceExit(); + +#define XMP_EXIT_WRAPPER_KEEP_LOCK(keep) \ + if ( keep ) mutex.KeepLock(); \ + XMP_CATCH_EXCEPTIONS \ + AnnounceExit(); + +#define XMP_EXIT_WRAPPER_NO_THROW \ + } catch ( ... ) { \ + AnnounceCatch ( "no-throw catch-all" ); \ + /* Do nothing. */ \ + } \ + AnnounceExit(); + +#define XMP_CATCH_EXCEPTIONS \ + } catch ( XMP_Error & xmpErr ) { \ + wResult->int32Result = xmpErr.GetID(); \ + wResult->ptrResult = (void*)"XMP"; \ + wResult->errMessage = xmpErr.GetErrMsg(); \ + if ( wResult->errMessage == 0 ) wResult->errMessage = ""; \ + AnnounceCatch ( wResult->errMessage ); \ + } catch ( std::exception & stdErr ) { \ + wResult->int32Result = kXMPErr_StdException; \ + wResult->errMessage = stdErr.what(); \ + if ( wResult->errMessage == 0 ) wResult->errMessage = ""; \ + AnnounceCatch ( wResult->errMessage ); \ + } catch ( ... ) { \ + wResult->int32Result = kXMPErr_UnknownException; \ + wResult->errMessage = "Caught unknown exception"; \ + AnnounceCatch ( wResult->errMessage ); \ + } + +#if XMP_DebugBuild + #define RELEASE_NO_THROW /* empty */ +#else + #define RELEASE_NO_THROW throw() +#endif + +// ================================================================================================= +// ExpandXPath, FindNode, and related support + +// *** Normalize the use of "const xx &" for input params + +#define kXMP_ArrayItemName "[]" + +#define kXMP_CreateNodes true +#define kXMP_ExistingOnly false + +#define FindConstSchema(t,u) FindSchemaNode ( const_cast(t), u, kXMP_ExistingOnly, 0 ) +#define FindConstChild(p,c) FindChildNode ( const_cast(p), c, kXMP_ExistingOnly, 0 ) +#define FindConstQualifier(p,c) FindQualifierNode ( const_cast(p), c, kXMP_ExistingOnly, 0 ) +#define FindConstNode(t,p) FindNode ( const_cast(t), p, kXMP_ExistingOnly, 0 ) + +extern XMP_OptionBits +VerifySetOptions ( XMP_OptionBits options, XMP_StringPtr propValue ); + +extern void +ComposeXPath ( const XMP_ExpandedXPath & expandedXPath, + XMP_VarString * stringXPath ); + +extern void +ExpandXPath ( XMP_StringPtr schemaNS, + XMP_StringPtr propPath, + XMP_ExpandedXPath * expandedXPath ); + +extern XMP_Node * +FindSchemaNode ( XMP_Node * xmpTree, + XMP_StringPtr nsURI, + bool createNodes, + XMP_NodePtrPos * ptrPos = 0 ); + +extern XMP_Node * +FindChildNode ( XMP_Node * parent, + XMP_StringPtr childName, + bool createNodes, + XMP_NodePtrPos * ptrPos = 0 ); + +extern XMP_Node * +FindQualifierNode ( XMP_Node * parent, + XMP_StringPtr qualName, + bool createNodes, + XMP_NodePtrPos * ptrPos = 0 ); + +extern XMP_Node * +FindNode ( XMP_Node * xmpTree, + const XMP_ExpandedXPath & expandedXPath, + bool createNodes, + XMP_OptionBits leafOptions = 0, + XMP_NodePtrPos * ptrPos = 0 ); + +extern XMP_Index +LookupLangItem ( const XMP_Node * arrayNode, XMP_VarString & lang ); // ! Lang must be normalized! + +extern XMP_Index +LookupFieldSelector ( const XMP_Node * arrayNode, XMP_StringPtr fieldName, XMP_StringPtr fieldValue ); + +extern void +CloneOffspring ( const XMP_Node * origParent, XMP_Node * cloneParent ); + +extern XMP_Node * +CloneSubtree ( const XMP_Node * origRoot, XMP_Node * cloneParent ); + +extern bool +CompareSubtrees ( const XMP_Node & leftNode, const XMP_Node & rightNode ); + +extern void +DeleteEmptySchema ( XMP_Node * schemaNode ); + +extern void +NormalizeLangValue ( XMP_VarString * value ); + +extern void +NormalizeLangArray ( XMP_Node * array ); + +extern void +DetectAltText ( XMP_Node * xmpParent ); + +extern void +SortNamedNodes ( XMP_NodeOffspring & nodeVector ); + +static inline bool +IsPathPrefix ( XMP_StringPtr fullPath, XMP_StringPtr prefix ) +{ + bool isPrefix = false; + XMP_StringLen prefixLen = std::strlen(prefix); + if ( XMP_LitNMatch ( prefix, fullPath, prefixLen ) ) { + char separator = fullPath[prefixLen]; + if ( (separator == 0) || (separator == '/') || + (separator == '[') || (separator == '*') ) isPrefix = true; + } + return isPrefix; +} + +// ------------------------------------------------------------------------------------------------- + +class XPathStepInfo { +public: + XMP_VarString step; + XMP_OptionBits options; + XPathStepInfo ( XMP_StringPtr _step, XMP_OptionBits _options ) : step(_step), options(_options) {}; + XPathStepInfo ( XMP_VarString _step, XMP_OptionBits _options ) : step(_step), options(_options) {}; +private: + XPathStepInfo() : options(0) {}; // ! Hide the default constructor. +}; + +enum { kSchemaStep = 0, kRootPropStep = 1, kAliasIndexStep = 2 }; + +enum { // Bits for XPathStepInfo options. // *** Add mask check to init code. + kXMP_StepKindMask = 0x0F, // ! The step kinds are mutually exclusive numbers. + kXMP_StructFieldStep = 0x01, // Also for top level nodes (schema "fields"). + kXMP_QualifierStep = 0x02, // ! Order is significant to separate struct/qual from array kinds! + kXMP_ArrayIndexStep = 0x03, // ! The kinds must not overlay array form bits! + kXMP_ArrayLastStep = 0x04, + kXMP_QualSelectorStep = 0x05, + kXMP_FieldSelectorStep = 0x06, + kXMP_StepIsAlias = 0x10 +}; + +#define GetStepKind(f) ((f) & kXMP_StepKindMask) + +#define kXMP_NewImplicitNode kXMP_InsertAfterItem + +// ================================================================================================= +// XMP_Node details + +#if 0 // Pattern for iterating over the children or qualifiers: + for ( size_t xxNum = 0, xxLim = _node_->_offspring_.size(); xxNum < xxLim; ++xxNum ) { + const XMP_Node * _curr_ = _node_->_offspring_[xxNum]; + } +#endif + +class XMP_Node { +public: + + XMP_OptionBits options; + XMP_VarString name, value; + XMP_Node * parent; + XMP_NodeOffspring children; + XMP_NodeOffspring qualifiers; + #if XMP_DebugBuild + // *** XMP_StringPtr _namePtr, _valuePtr; // *** Not working, need operator=? + #endif + + XMP_Node ( XMP_Node * _parent, XMP_StringPtr _name, XMP_OptionBits _options ) + : options(_options), name(_name), parent(_parent) + { + #if XMP_DebugBuild + XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || + (options & kXMP_SchemaNode) || (parent == 0) ); + // *** _namePtr = name.c_str(); + // *** _valuePtr = value.c_str(); + #endif + }; + + XMP_Node ( XMP_Node * _parent, const XMP_VarString & _name, XMP_OptionBits _options ) + : options(_options), name(_name), parent(_parent) + { + #if XMP_DebugBuild + XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || + (options & kXMP_SchemaNode) || (parent == 0) ); + // *** _namePtr = name.c_str(); + // *** _valuePtr = value.c_str(); + #endif + }; + + XMP_Node ( XMP_Node * _parent, XMP_StringPtr _name, XMP_StringPtr _value, XMP_OptionBits _options ) + : options(_options), name(_name), value(_value), parent(_parent) + { + #if XMP_DebugBuild + XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || + (options & kXMP_SchemaNode) || (parent == 0) ); + // *** _namePtr = name.c_str(); + // *** _valuePtr = value.c_str(); + #endif + }; + + XMP_Node ( XMP_Node * _parent, const XMP_VarString & _name, const XMP_VarString & _value, XMP_OptionBits _options ) + : options(_options), name(_name), value(_value), parent(_parent) + { + #if XMP_DebugBuild + XMP_Assert ( (name.find ( ':' ) != XMP_VarString::npos) || (name == kXMP_ArrayItemName) || + (options & kXMP_SchemaNode) || (parent == 0) ); + // *** _namePtr = name.c_str(); + // *** _valuePtr = value.c_str(); + #endif + }; + + void RemoveChildren() + { + for ( size_t i = 0, vLim = children.size(); i < vLim; ++i ) { + if ( children[i] != 0 ) delete children[i]; + } + children.clear(); + } + + void RemoveQualifiers() + { + for ( size_t i = 0, vLim = qualifiers.size(); i < vLim; ++i ) { + if ( qualifiers[i] != 0 ) delete qualifiers[i]; + } + qualifiers.clear(); + } + + void ClearNode() + { + options = 0; + name.erase(); + value.erase(); + this->RemoveChildren(); + this->RemoveQualifiers(); + } + + virtual ~XMP_Node() { RemoveChildren(); RemoveQualifiers(); }; + +private: + XMP_Node() : options(0), parent(0) // ! Make sure parent pointer is always set. + { + #if XMP_DebugBuild + // *** _namePtr = name.c_str(); + // *** _valuePtr = value.c_str(); + #endif + }; + +}; + +class XMP_AutoNode { // Used to hold a child during subtree construction. +public: + XMP_Node * nodePtr; + XMP_AutoNode() : nodePtr(0) {}; + ~XMP_AutoNode() { if ( nodePtr != 0 ) delete ( nodePtr ); nodePtr = 0; }; + XMP_AutoNode ( XMP_Node * _parent, XMP_StringPtr _name, XMP_OptionBits _options ) + : nodePtr ( new XMP_Node ( _parent, _name, _options ) ) {}; + XMP_AutoNode ( XMP_Node * _parent, const XMP_VarString & _name, XMP_OptionBits _options ) + : nodePtr ( new XMP_Node ( _parent, _name, _options ) ) {}; + XMP_AutoNode ( XMP_Node * _parent, XMP_StringPtr _name, XMP_StringPtr _value, XMP_OptionBits _options ) + : nodePtr ( new XMP_Node ( _parent, _name, _value, _options ) ) {}; + XMP_AutoNode ( XMP_Node * _parent, const XMP_VarString & _name, const XMP_VarString & _value, XMP_OptionBits _options ) + : nodePtr ( new XMP_Node ( _parent, _name, _value, _options ) ) {}; +}; + +extern void ProcessRDF ( XMP_Node * xmpTree, const XML_Node & xmlTree, XMP_OptionBits options ); + +// ================================================================================================= + +#endif // __XMPCore_Impl_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPIterator.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPIterator.cpp new file mode 100644 index 0000000..ea39602 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPIterator.cpp @@ -0,0 +1,736 @@ +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPIterator.hpp" + +#include +#include // For snprintf. + +#if XMP_WinBuild + #ifdef _MSC_VER + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #pragma warning ( disable : 4996 ) // '...' was declared deprecated + #endif +#endif + +// ================================================================================================= +// Support Routines +// ================================================================================================= + + +#ifndef TraceIterators + #define TraceIterators 0 +#endif + +#if TraceIterators + static const char * sStageNames[] = { "before", "self", "qualifiers", "children" }; +#endif + +static XMP_Node * sDummySchema = 0; // ! Used for some ugliness with aliases. + +// ------------------------------------------------------------------------------------------------- +// AddSchemaProps +// -------------- +// +// Add the top level properties to the IterNode for a schema. + +static void +AddSchemaProps ( IterInfo & info, IterNode & iterSchema, const XMP_Node * xmpSchema ) +{ + UNUSED(info); + #if TraceIterators + printf ( " Adding properties of %s\n", xmpSchema->name.c_str() ); + #endif + + for ( size_t propNum = 0, propLim = xmpSchema->children.size(); propNum != propLim; ++propNum ) { + const XMP_Node * xmpProp = xmpSchema->children[propNum]; + // *** set the has-aliases bit when appropriate + iterSchema.children.push_back ( IterNode ( xmpProp->options, xmpProp->name, 0 ) ); + #if TraceIterators + printf ( " %s\n", xmpProp->name.c_str() ); + #endif + } + +} // AddSchemaProps + +// ------------------------------------------------------------------------------------------------- +// AddSchemaAliases +// ---------------- +// +// Add the aliases to the IterNode for a schema, if the corresponding actual exists. + +static void +AddSchemaAliases ( IterInfo & info, IterNode & iterSchema, XMP_StringPtr schemaURI ) +{ + + // We're showing the aliases also. Look them up by their namespace prefix. Yes, the alias map is + // sorted so we could process just that portion. But that takes more code and the extra speed + // isn't worth it. (Plus this way we avoid a dependence on the map implementation.) Lookup the + // XMP node from the alias, to make sure the actual exists. + + #if TraceIterators + printf ( " Adding aliases\n", schemaURI ); + #endif + + XMP_StringPtr nsPrefix; + XMP_StringLen nsLen; + bool found = XMPMeta::GetNamespacePrefix ( schemaURI, &nsPrefix, &nsLen ); + if ( ! found ) XMP_Throw ( "Unknown iteration namespace", kXMPErr_BadSchema ); + + XMP_AliasMapPos currAlias = sRegisteredAliasMap->begin(); + XMP_AliasMapPos endAlias = sRegisteredAliasMap->end(); + + for ( ; currAlias != endAlias; ++currAlias ) { + if ( XMP_LitNMatch ( currAlias->first.c_str(), nsPrefix, nsLen ) ) { + const XMP_Node * actualProp = FindConstNode ( &info.xmpObj->tree, currAlias->second ); + if ( actualProp != 0 ) { + iterSchema.children.push_back ( IterNode ( (actualProp->options | kXMP_PropIsAlias), currAlias->first, 0 ) ); + #if TraceIterators + printf ( " %s => %s\n", currAlias->first.c_str(), actualProp->name.c_str() ); + #endif + } + } + } + +} // AddSchemaAliases + +// ------------------------------------------------------------------------------------------------- +// AddNodeOffspring +// ---------------- +// +// Add the immediate children and qualifiers to an IterNode. + +static void +AddNodeOffspring ( IterInfo & info, IterNode & iterParent, const XMP_Node * xmpParent ) +{ + XMP_VarString currPath ( iterParent.fullPath ); + size_t leafOffset = iterParent.fullPath.size(); + + if ( (! xmpParent->qualifiers.empty()) && (! (info.options & kXMP_IterOmitQualifiers)) ) { + + #if TraceIterators + printf ( " Adding qualifiers of %s\n", currPath.c_str() ); + #endif + + currPath += "/?"; // All qualifiers are named and use paths like "Prop/?Qual". + leafOffset += 2; + + for ( size_t qualNum = 0, qualLim = xmpParent->qualifiers.size(); qualNum != qualLim; ++qualNum ) { + const XMP_Node * xmpQual = xmpParent->qualifiers[qualNum]; + currPath += xmpQual->name; + iterParent.qualifiers.push_back ( IterNode ( xmpQual->options, currPath, leafOffset ) ); + currPath.erase ( leafOffset ); + #if TraceIterators + printf ( " %s\n", xmpQual->name.c_str() ); + #endif + } + + leafOffset -= 2; + currPath.erase ( leafOffset ); + + } + + if ( ! xmpParent->children.empty() ) { + + #if TraceIterators + printf ( " Adding children of %s\n", currPath.c_str() ); + #endif + + XMP_Assert ( xmpParent->options & kXMP_PropCompositeMask ); + + if ( xmpParent->options & kXMP_PropValueIsStruct ) { + currPath += '/'; + leafOffset += 1; + } + + for ( size_t childNum = 0, childLim = xmpParent->children.size(); childNum != childLim; ++childNum ) { + const XMP_Node * xmpChild = xmpParent->children[childNum]; + if ( ! (xmpParent->options & kXMP_PropValueIsArray) ) { + currPath += xmpChild->name; + } else { + char buffer [32]; // AUDIT: Using sizeof(buffer) below for snprintf length is safe. + snprintf ( buffer, sizeof(buffer), "[%lu]", static_cast(childNum+1) ); // ! XPath indices are one-based. + currPath += buffer; + } + iterParent.children.push_back ( IterNode ( xmpChild->options, currPath, leafOffset ) ); + currPath.erase ( leafOffset ); + #if TraceIterators + printf ( " %s\n", (iterParent.children.back().fullPath.c_str() + leafOffset) ); + #endif + } + + } + +} // AddNodeOffspring + +// ------------------------------------------------------------------------------------------------- +// SetCurrSchema +// ------------- + +static inline void +SetCurrSchema ( IterInfo & info, XMP_StringPtr schemaName ) +{ + + info.currSchema = schemaName; + #if 0 // *** XMP_DebugBuild + info._schemaPtr = info.currSchema.c_str(); + #endif + +} // SetCurrSchema + +static inline void +SetCurrSchema ( IterInfo & info, XMP_VarString & schemaName ) +{ + + info.currSchema = schemaName; + #if 0 // *** XMP_DebugBuild + info._schemaPtr = info.currSchema.c_str(); + #endif + +} // SetCurrSchema + +// ------------------------------------------------------------------------------------------------- +// AdvanceIterPos +// -------------- +// +// Adjust currPos and possibly endPos for the next step in a pre-order depth-first traversal. The +// current node has just been visited, move on to its qualifiers, children, then siblings, or back +// up to an ancestor. AdvanceIterPos either moves to a property or qualifier node that can be +// visited, or to the end of the entire iteration. + +static void +AdvanceIterPos ( IterInfo & info ) +{ + // ------------------------------------------------------------------------------------------- + // Keep looking until we find a node to visit or the end of everything. The first time through + // the current node will exist, we just visited it. But we have to keep looking if the current + // node was the last of its siblings or is an empty schema. + + // ! It is possible that info.currPos == info.endPos on entry. Don't dereference info.currPos yet! + + while ( true ) { + + if ( info.currPos == info.endPos ) { + + // ------------------------------------------------------------------------------------ + // At the end of a set of siblings, move up to an ancestor. We've either just finished + // the qualifiers and will move to the children, or have just finished the children and + // will move on to the next sibling. + + if ( info.ancestors.empty() ) break; // We're at the end of the schema list. + + IterPosPair & parent = info.ancestors.back(); + info.currPos = parent.first; + info.endPos = parent.second; + info.ancestors.pop_back(); + + #if TraceIterators + printf ( " Moved up to %s, stage = %s\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); + #endif + + } else { + + // ------------------------------------------------------------------------------------------- + // Decide what to do with this iteration node based on its state. Don't use a switch statement, + // some of the cases want to break from the loop. A break in a switch just exits the case. + + #if TraceIterators + printf ( " Moving from %s, stage = %s\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); + #endif + + if ( info.currPos->visitStage == kIter_BeforeVisit ) { // Visit this node now. + if ( info.currPos->options & kXMP_SchemaNode ) SetCurrSchema ( info, info.currPos->fullPath ); + break; + } + + if ( info.currPos->visitStage == kIter_VisitSelf ) { // Just finished visiting the value portion. + info.currPos->visitStage = kIter_VisitQualifiers; // Start visiting the qualifiers. + if ( ! info.currPos->qualifiers.empty() ) { + info.ancestors.push_back ( IterPosPair ( info.currPos, info.endPos ) ); + info.endPos = info.currPos->qualifiers.end(); // ! Set the parent's endPos before changing currPos! + info.currPos = info.currPos->qualifiers.begin(); + break; + } + } + + if ( info.currPos->visitStage == kIter_VisitQualifiers ) { // Just finished visiting the qualifiers. + info.currPos->qualifiers.clear(); + info.currPos->visitStage = kIter_VisitChildren; // Start visiting the children. + if ( ! info.currPos->children.empty() ) { + info.ancestors.push_back ( IterPosPair ( info.currPos, info.endPos ) ); + info.endPos = info.currPos->children.end(); // ! Set the parent's endPos before changing currPos! + info.currPos = info.currPos->children.begin(); + break; + } + } + + if ( info.currPos->visitStage == kIter_VisitChildren ) { // Just finished visiting the children. + info.currPos->children.clear(); + ++info.currPos; // Move to the next sibling. + continue; + } + + #if TraceIterators + if ( info.currPos != info.endPos ) { + printf ( " Moved to %s, stage = %s\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); + } + #endif + + } + + } // Loop to find the next node. + + XMP_Assert ( (info.currPos == info.endPos) || (info.currPos->visitStage == kIter_BeforeVisit) ); + +} // AdvanceIterPos + +// ------------------------------------------------------------------------------------------------- +// GetNextXMPNode +// -------------- +// +// Used by XMPIterator::Next to obtain the next XMP node, ignoring the kXMP_IterJustLeafNodes flag. +// This isolates some messy code, allowing a clean loop in Next if kXMP_IterJustLeafNodes is set. + +static const XMP_Node * +GetNextXMPNode ( IterInfo & info ) +{ + const XMP_Node * xmpNode = 0; + + // ---------------------------------------------------------------------------------------------- + // On entry currPos points to an iteration node whose state is either before-visit or visit-self. + // If it is before-visit then we will return that node's value part now. If it is visit-self it + // means the previous iteration returned the value portion of that node, so we can advance to the + // next node in the iteration tree. Then we find the corresponding XMP node, allowing for the XMP + // tree to have been modified since that part of the iteration tree was constructed. + + // ! NOTE: Supporting aliases throws in some nastiness with schemas. There might not be any XMP + // ! node for the schema, but we still have to visit it because of possible aliases. The static + // ! sDummySchema is returned if there is no real schema node. + + if ( info.currPos->visitStage != kIter_BeforeVisit ) AdvanceIterPos ( info ); + + bool isSchemaNode = false; + XMP_ExpandedXPath expPath; // Keep outside the loop to avoid constant construct/destruct. + + while ( info.currPos != info.endPos ) { + + isSchemaNode = XMP_NodeIsSchema ( info.currPos->options ); + if ( isSchemaNode ) { + SetCurrSchema ( info, info.currPos->fullPath ); + xmpNode = FindConstSchema ( &info.xmpObj->tree, info.currPos->fullPath.c_str() ); + if ( xmpNode == 0 ) xmpNode = sDummySchema; + } else { + ExpandXPath ( info.currSchema.c_str(), info.currPos->fullPath.c_str(), &expPath ); + xmpNode = FindConstNode ( &info.xmpObj->tree, expPath ); + } + if ( xmpNode != 0 ) break; // Exit the loop, we found a live XMP node. + + info.currPos->visitStage = kIter_VisitChildren; // Make AdvanceIterPos move to the next sibling. + info.currPos->children.clear(); + info.currPos->qualifiers.clear(); + AdvanceIterPos ( info ); + + } + + if ( info.currPos == info.endPos ) return 0; + + // ------------------------------------------------------------------------------------------- + // Now we've got the iteration node and corresponding XMP node. Add the iteration children for + // structs and arrays. The children of schema were added when the iterator was constructed. + + XMP_Assert ( info.currPos->visitStage == kIter_BeforeVisit ); + + if ( info.currPos->visitStage == kIter_BeforeVisit ) { + if ( (! isSchemaNode) && (! (info.options & kXMP_IterJustChildren)) ) { + AddNodeOffspring ( info, *info.currPos, xmpNode ); + } + info.currPos->visitStage = kIter_VisitSelf; + } + + return xmpNode; + +} // GetNextXMPNode + +// ================================================================================================= +// Init/Term +// ================================================================================================= + +// ------------------------------------------------------------------------------------------------- +// Initialize +// ---------- + +/* class static */ bool +XMPIterator::Initialize() +{ + sDummySchema = new XMP_Node ( 0, "dummy:schema/", kXMP_SchemaNode); + return true; + +} // Initialize + +// ------------------------------------------------------------------------------------------------- +// Terminate +// ---------- + +/* class static */ void +XMPIterator::Terminate() RELEASE_NO_THROW +{ + delete ( sDummySchema ); + sDummySchema = 0; + return; + +} // Terminate + +// ------------------------------------------------------------------------------------------------- +// Unlock +// ------ + +void +XMPIterator::Unlock ( XMP_OptionBits options ) +{ + UNUSED(options); + + XMPMeta::Unlock ( 0 ); + +} // Unlock + +// ================================================================================================= +// Constructors +// ================================================================================================= + +// ------------------------------------------------------------------------------------------------- +// XMPIterator +// ----------- +// +// Constructor for iterations over the nodes in an XMPMeta object. This builds a tree of iteration +// nodes that caches the existing node names of the XMPMeta object. The iteration tree is a partial +// replica of the XMPMeta tree. The initial iteration tree normally has just the root node, all of +// the schema nodes for a full object iteration. Lower level nodes (children and qualifiers) are +// added when the parent is visited. If the kXMP_IterJustChildren option is passed then the initial +// iterator includes the children and the parent is marked as done. The iteration tree nodes are +// pruned when they are no longer needed. + +XMPIterator::XMPIterator ( const XMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options ) : clientRefs(0), info(IterInfo(options,&xmpObj)) +{ + if ( (options & kXMP_IterClassMask) != kXMP_IterProperties ) { + XMP_Throw ( "Unsupported iteration kind", kXMPErr_BadOptions ); + } + + // *** Lock the XMPMeta object if we ever stop using a full DLL lock. + + if ( *propName != 0 ) { + + // An iterator rooted at a specific node. + + #if TraceIterators + printf ( "\nNew XMP property iterator for \"%s\", options = %X\n Schema = %s, root = %s\n", + xmpObj.tree.name.c_str(), options, schemaNS, propName ); + #endif + + XMP_ExpandedXPath propPath; + ExpandXPath ( schemaNS, propName, &propPath ); + XMP_Node * propNode = FindConstNode ( &xmpObj.tree, propPath ); // If not found get empty iteration. + + if ( propNode != 0 ) { + + XMP_VarString rootName ( propPath[1].step ); // The schema is [0]. + for ( size_t i = 2; i < propPath.size(); ++i ) { + XMP_OptionBits stepKind = GetStepKind ( propPath[i].options ); + if ( stepKind <= kXMP_QualifierStep ) rootName += '/'; + rootName += propPath[i].step; + } + + propName = rootName.c_str(); + size_t leafOffset = rootName.size(); + while ( (leafOffset > 0) && (propName[leafOffset] != '/') && (propName[leafOffset] != '[') ) --leafOffset; + if ( propName[leafOffset] == '/' ) ++leafOffset; + + info.tree.children.push_back ( IterNode ( propNode->options, propName, leafOffset ) ); + SetCurrSchema ( info, propPath[kSchemaStep].step.c_str() ); + if ( info.options & kXMP_IterJustChildren ) { + AddNodeOffspring ( info, info.tree.children.back(), propNode ); + } + + } + + } else if ( *schemaNS != 0 ) { + + // An iterator for all properties in one schema. + + #if TraceIterators + printf ( "\nNew XMP schema iterator for \"%s\", options = %X\n Schema = %s\n", + xmpObj.tree.name.c_str(), options, schemaNS ); + #endif + + info.tree.children.push_back ( IterNode ( kXMP_SchemaNode, schemaNS, 0 ) ); + IterNode & iterSchema = info.tree.children.back(); + + XMP_Node * xmpSchema = FindConstSchema ( &xmpObj.tree, schemaNS ); + if ( xmpSchema != 0 ) AddSchemaProps ( info, iterSchema, xmpSchema ); + + if ( info.options & kXMP_IterIncludeAliases ) AddSchemaAliases ( info, iterSchema, schemaNS ); + + if ( iterSchema.children.empty() ) { + info.tree.children.pop_back(); // No properties, remove the schema node. + } else { + SetCurrSchema ( info, schemaNS ); + } + + } else { + + // An iterator for all properties in all schema. First add schema that exist (have children), + // adding aliases from them if appropriate. Then add schema that have no actual properties + // but do have aliases to existing properties, if we're including aliases in the iteration. + + #if TraceIterators + printf ( "\nNew XMP tree iterator for \"%s\", options = %X\n", + xmpObj.tree.name.c_str(), options ); + #endif + + // First pick up the schema that exist. + + for ( size_t schemaNum = 0, schemaLim = xmpObj.tree.children.size(); schemaNum != schemaLim; ++schemaNum ) { + + const XMP_Node * xmpSchema = xmpObj.tree.children[schemaNum]; + info.tree.children.push_back ( IterNode ( kXMP_SchemaNode, xmpSchema->name, 0 ) ); + IterNode & iterSchema = info.tree.children.back(); + + if ( ! (info.options & kXMP_IterJustChildren) ) { + AddSchemaProps ( info, iterSchema, xmpSchema ); + if ( info.options & kXMP_IterIncludeAliases ) AddSchemaAliases ( info, iterSchema, xmpSchema->name.c_str() ); + if ( iterSchema.children.empty() ) info.tree.children.pop_back(); // No properties, remove the schema node. + } + + } + + if ( info.options & kXMP_IterIncludeAliases ) { + + // Add the schema that only have aliases. The most convenient, and safest way, is to go + // through the registered namespaces, see if it exists, and let AddSchemaAliases do its + // thing if not. Don't combine with the above loop, it is nicer to have the "real" stuff + // be in storage order (not subject to the namespace map order). + + // ! We don't do the kXMP_IterJustChildren handing in the same way here as above. The + // ! existing schema (presumably) have actual children. We need to call AddSchemaAliases + // ! here to determine if the namespace has any aliases to existing properties. We then + // ! strip the children if necessary. + + XMP_cStringMapPos currNS = sNamespaceURIToPrefixMap->begin(); + XMP_cStringMapPos endNS = sNamespaceURIToPrefixMap->end(); + for ( ; currNS != endNS; ++currNS ) { + XMP_StringPtr schemaName = currNS->first.c_str(); + if ( FindConstSchema ( &xmpObj.tree, schemaName ) != 0 ) continue; + info.tree.children.push_back ( IterNode ( kXMP_SchemaNode, schemaName, 0 ) ); + IterNode & iterSchema = info.tree.children.back(); + AddSchemaAliases ( info, iterSchema, schemaName ); + if ( iterSchema.children.empty() ) { + info.tree.children.pop_back(); // No aliases, remove the schema node. + } else if ( info.options & kXMP_IterJustChildren ) { + iterSchema.children.clear(); // Get rid of the children. + } + } + + } + + } + + // Set the current iteration position to the first node to be visited. + + info.currPos = info.tree.children.begin(); + info.endPos = info.tree.children.end(); + + if ( (info.options & kXMP_IterJustChildren) && (info.currPos != info.endPos) && (*schemaNS != 0) ) { + info.currPos->visitStage = kIter_VisitSelf; + } + + #if TraceIterators + if ( info.currPos == info.endPos ) { + printf ( " ** Empty iteration **\n" ); + } else { + printf ( " Initial node %s, stage = %s, iterator @ %.8X\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage], this ); + } + #endif + +} // XMPIterator for XMPMeta objects + +// ------------------------------------------------------------------------------------------------- +// XMPIterator +// ----------- +// +// Constructor for iterations over global tables such as registered namespaces or aliases. + +XMPIterator::XMPIterator ( XMP_StringPtr /*schemaNS*/, + XMP_StringPtr /*propName*/, + XMP_OptionBits options ) : clientRefs(0), info(IterInfo(options,0)) +{ + + XMP_Throw ( "Unimplemented XMPIterator constructor for global tables", kXMPErr_Unimplemented ); + +} // XMPIterator for global tables + +// ------------------------------------------------------------------------------------------------- +// ~XMPIterator +// ----------- + +XMPIterator::~XMPIterator() RELEASE_NO_THROW +{ + XMP_Assert ( this->clientRefs <= 0 ); + // Let everything else default. + +} // ~XMPIterator + +// ================================================================================================= +// Iteration Methods +// ================================================================================================= + +// ------------------------------------------------------------------------------------------------- +// Next +// ---- +// +// Do a preorder traversal of the cached nodes. + +// *** Need to document the relationships between currPos, endPos, and visitStage. + +bool +XMPIterator::Next ( XMP_StringPtr * schemaNS, + XMP_StringLen * nsSize, + XMP_StringPtr * propPath, + XMP_StringLen * pathSize, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * propOptions ) +{ + // *** Lock the XMPMeta object if we ever stop using a full DLL lock. + + // ! NOTE: Supporting aliases throws in some nastiness with schemas. There might not be any XMP + // ! node for the schema, but we still have to visit it because of possible aliases. + + if ( info.currPos == info.endPos ) return false; // Happens at the start of an empty iteration. + + #if TraceIterators + printf ( "Next iteration from %s, stage = %s, iterator @ %.8X\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage], this ); + #endif + + const XMP_Node * xmpNode = GetNextXMPNode ( info ); + if ( xmpNode == 0 ) return false; + bool isSchemaNode = XMP_NodeIsSchema ( info.currPos->options ); + + if ( info.options & kXMP_IterJustLeafNodes ) { + while ( isSchemaNode || (! xmpNode->children.empty()) ) { + info.currPos->visitStage = kIter_VisitQualifiers; // Skip to this node's children. + xmpNode = GetNextXMPNode ( info ); + if ( xmpNode == 0 ) return false; + isSchemaNode = XMP_NodeIsSchema ( info.currPos->options ); + } + } + + *schemaNS = info.currSchema.c_str(); + *nsSize = info.currSchema.size(); + + *propOptions = info.currPos->options; + + *propPath = ""; + *pathSize = 0; + *propValue = ""; + *valueSize = 0; + + if ( ! (*propOptions & kXMP_SchemaNode) ) { + + *propPath = info.currPos->fullPath.c_str(); + *pathSize = info.currPos->fullPath.size(); + if ( info.options & kXMP_IterJustLeafName ) { + *propPath += info.currPos->leafOffset; + *pathSize -= info.currPos->leafOffset; + } + + if ( ! (*propOptions & kXMP_PropCompositeMask) ) { + *propValue = xmpNode->value.c_str(); + *valueSize = xmpNode->value.size(); + } + + } + + #if TraceIterators + printf ( " Next node %s, stage = %s\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); + #endif + + return true; + +} // Next + +// ------------------------------------------------------------------------------------------------- +// Skip +// ---- +// +// Skip some portion of the traversal related to the last visited node. We skip either that node's +// children, or those children and the previous node's siblings. The implementation might look a bit +// awkward because info.currNode always points to the next node to be visited. We might already have +// moved past the things to skip, e.g. if the previous node was simple and the last of its siblings. + +enum { + kXMP_ValidIterSkipOptions = kXMP_IterSkipSubtree | kXMP_IterSkipSiblings +}; + +void +XMPIterator::Skip ( XMP_OptionBits iterOptions ) +{ +// if ( (info.currPos == kIter_NullPos) ) XMP_Throw ( "No prior postion to skip from", kXMPErr_BadIterPosition ); + if ( iterOptions == 0 ) XMP_Throw ( "Must specify what to skip", kXMPErr_BadOptions ); + if ( (iterOptions & ~kXMP_ValidIterSkipOptions) != 0 ) XMP_Throw ( "Undefined options", kXMPErr_BadOptions ); + + #if TraceIterators + printf ( "Skipping from %s, stage = %s, iterator @ %.8X", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage], this ); + #endif + + if ( iterOptions & kXMP_IterSkipSubtree ) { + #if TraceIterators + printf ( ", mode = subtree\n" ); + #endif + info.currPos->visitStage = kIter_VisitChildren; + } else if ( iterOptions & kXMP_IterSkipSiblings ) { + #if TraceIterators + printf ( ", mode = siblings\n" ); + #endif + info.currPos = info.endPos; + AdvanceIterPos ( info ); + } + #if TraceIterators + printf ( " Skipped to %s, stage = %s\n", + info.currPos->fullPath.c_str(), sStageNames[info.currPos->visitStage] ); + #endif + + +} // Skip + +// ------------------------------------------------------------------------------------------------- +// UnlockIter +// ---------- + +void +XMPIterator::UnlockIter ( XMP_OptionBits options ) +{ + UNUSED(options); + + XMPMeta::Unlock ( 0 ); + +} // UnlockIter + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPIterator.hpp b/vendor/exiv2-0.25/xmpsdk/src/XMPIterator.hpp new file mode 100644 index 0000000..b72b975 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPIterator.hpp @@ -0,0 +1,148 @@ +#ifndef __XMPIterator_hpp__ +#define __XMPIterator_hpp__ + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" +#include "XMP_Const.h" +#include "XMPMeta.hpp" + +// ================================================================================================= + +struct IterNode; +typedef std::vector < IterNode > IterOffspring; +typedef IterOffspring::iterator IterPos; + +typedef std::pair < IterPos, IterPos > IterPosPair; +typedef std::vector < IterPosPair > IterPosStack; + +enum { // Values for the visitStage field, used to decide how to proceed past a node. + kIter_BeforeVisit = 0, // Have not visited this node at all. + kIter_VisitSelf = 1, // Have visited this node and returned its value/options portion. + kIter_VisitQualifiers = 2, // In the midst of visiting this node's qualifiers. + kIter_VisitChildren = 3 // In the midst of visiting this node's children. +}; + +struct IterNode { + + XMP_OptionBits options; + XMP_VarString fullPath; + size_t leafOffset; + IterOffspring children, qualifiers; + XMP_Uns8 visitStage; + #if 0 // *** XMP_DebugBuild + XMP_StringPtr _pathPtr, _leafPtr; // *** Not working, need operator=? + #endif + + IterNode() : options(0), leafOffset(0), visitStage(kIter_BeforeVisit) + { + #if 0 // *** XMP_DebugBuild + _pathPtr = _leafPtr = 0; + #endif + }; + + IterNode ( XMP_OptionBits _options, const XMP_VarString& _fullPath, size_t _leafOffset ) + : options(_options), fullPath(_fullPath), leafOffset(_leafOffset), visitStage(kIter_BeforeVisit) + { + #if 0 // *** XMP_DebugBuild + _pathPtr = fullPath.c_str(); + _leafPtr = _pathPtr + leafOffset; + #endif + }; + +}; + +struct IterInfo { + + XMP_OptionBits options; + const XMPMeta * xmpObj; + XMP_VarString currSchema; + IterPos currPos, endPos; + IterPosStack ancestors; + IterNode tree; + #if 0 // *** XMP_DebugBuild + XMP_StringPtr _schemaPtr; // *** Not working, need operator=? + #endif + + IterInfo() : options(0), xmpObj(0) + { + #if 0 // *** XMP_DebugBuild + _schemaPtr = 0; + #endif + }; + + IterInfo ( XMP_OptionBits _options, const XMPMeta * _xmpObj ) : options(_options), xmpObj(_xmpObj) + { + #if 0 // *** XMP_DebugBuild + _schemaPtr = 0; + #endif + }; + +}; + +// ================================================================================================= + +class XMPIterator { +public: + + static bool + Initialize(); // ! For internal use only! + + static void + Terminate() RELEASE_NO_THROW; // ! For internal use only! + + static void + Unlock ( XMP_OptionBits options ); + + XMPIterator ( const XMPMeta & xmpObj, // Construct a property iterator. + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options ); + + XMPIterator ( XMP_StringPtr schemaNS, // Construct a table iterator. + XMP_StringPtr propName, + XMP_OptionBits options ); + + virtual ~XMPIterator() RELEASE_NO_THROW; + + bool + Next ( XMP_StringPtr * schemaNS, + XMP_StringLen * nsSize, + XMP_StringPtr * propPath, + XMP_StringLen * pathSize, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * propOptions ); + + void + Skip ( XMP_OptionBits options ); + + void + UnlockIter ( XMP_OptionBits options ); + + // ! Expose so that wrappers and file static functions can see the data. + + XMP_Int32 clientRefs; // ! Must be signed to allow decrement from 0. + IterInfo info; + +private: + + // ! These are hidden on purpose: + XMPIterator() : clientRefs(0) + { XMP_Throw ( "Call to hidden constructor", kXMPErr_InternalFailure ); }; + XMPIterator ( const XMPIterator & /* original */ ) : clientRefs(0) + { XMP_Throw ( "Call to hidden constructor", kXMPErr_InternalFailure ); }; + void operator= ( const XMPIterator & /* rhs */ ) + { XMP_Throw ( "Call to hidden operator=", kXMPErr_InternalFailure ); }; + +}; + +// ================================================================================================= + +#endif // __XMPIterator_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-GetSet.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-GetSet.cpp new file mode 100644 index 0000000..9972f9e --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-GetSet.cpp @@ -0,0 +1,1212 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// +// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of +// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPMeta.hpp" +#include "XMPIterator.hpp" +#include "XMPUtils.hpp" + +#include "XMP_Version.h" +#include "UnicodeInlines.incl_cpp" +#include "UnicodeConversions.hpp" +#include "ExpatAdapter.hpp" + +#if XMP_DebugBuild + #include +#endif + +using namespace std; + +#if XMP_WinBuild + #ifdef _MSC_VER + #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #endif +#endif + + +// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros +// *** Add debug codegen checks, e.g. that typical masking operations really work +// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch + + +// ================================================================================================= +// Local Types and Constants +// ========================= + +typedef unsigned char XMP_CLTMatch; + +enum { // Values for XMP_CLTMatch. + kXMP_CLT_NoValues, + kXMP_CLT_SpecificMatch, + kXMP_CLT_SingleGeneric, + kXMP_CLT_MultipleGeneric, + kXMP_CLT_XDefault, + kXMP_CLT_FirstItem +}; + + +// ================================================================================================= +// Static Variables +// ================ + + +// ================================================================================================= +// Local Utilities +// =============== + + +// ------------------------------------------------------------------------------------------------- +// SetNodeValue +// ------------ + +static inline void +SetNodeValue ( XMP_Node * node, XMP_StringPtr value ) +{ + + #if XMP_DebugBuild // ! Hack to force an assert. + if ( (node->name == "xmp:TestAssertNotify") && XMP_LitMatch ( value, "DoIt!" ) ) { + XMP_Assert ( node->name != "xmp:TestAssertNotify" ); + } + #endif + + node->value = value; + + XMP_Uns8* chPtr = (XMP_Uns8*) node->value.c_str(); // Check for valid UTF-8, replace ASCII controls with a space. + while ( *chPtr != 0 ) { + while ( (*chPtr != 0) && (*chPtr < 0x80) ) { + if ( *chPtr < 0x20 ) { + if ( (*chPtr != kTab) && (*chPtr != kLF) && (*chPtr != kCR) ) *chPtr = 0x20; + } else if (*chPtr == 0x7F ) { + *chPtr = 0x20; + } + ++chPtr; + } + XMP_Assert ( (*chPtr == 0) || (*chPtr >= 0x80) ); + if ( *chPtr != 0 ) (void) GetCodePoint ( (const XMP_Uns8 **) &chPtr ); // Throws for bad UTF-8. + } + + if ( XMP_PropIsQualifier(node->options) && (node->name == "xml:lang") ) NormalizeLangValue ( &node->value ); + + #if 0 // *** XMP_DebugBuild + node->_valuePtr = node->value.c_str(); + #endif + +} // SetNodeValue + + +// ------------------------------------------------------------------------------------------------- +// SetNode +// ------- +// +// The internals for SetProperty and related calls, used after the node is found or created. + +static void +SetNode ( XMP_Node * node, XMP_StringPtr value, XMP_OptionBits options ) +{ + if ( options & kXMP_DeleteExisting ) { + XMP_ClearOption ( options, kXMP_DeleteExisting ); + node->options = options; + node->value.erase(); + node->RemoveChildren(); + node->RemoveQualifiers(); + } + + node->options |= options; // Keep options set by FindNode when creating a new node. + + if ( value != 0 ) { + + // This is setting the value of a leaf node. + if ( node->options & kXMP_PropCompositeMask ) XMP_Throw ( "Composite nodes can't have values", kXMPErr_BadXPath ); + XMP_Assert ( node->children.empty() ); + SetNodeValue ( node, value ); + + } else { + + // This is setting up an array or struct. + if ( ! node->value.empty() ) XMP_Throw ( "Composite nodes can't have values", kXMPErr_BadXPath ); + if ( node->options & kXMP_PropCompositeMask ) { // Can't change an array to a struct, or vice versa. + if ( (options & kXMP_PropCompositeMask) != (node->options & kXMP_PropCompositeMask) ) { + XMP_Throw ( "Requested and existing composite form mismatch", kXMPErr_BadXPath ); + } + } + node->RemoveChildren(); + + } + +} // SetNode + + +// ------------------------------------------------------------------------------------------------- +// DoSetArrayItem +// -------------- + +static void +DoSetArrayItem ( XMP_Node * arrayNode, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options ) +{ + XMP_OptionBits itemLoc = options & kXMP_PropArrayLocationMask; + XMP_Index arraySize = arrayNode->children.size(); + + options &= ~kXMP_PropArrayLocationMask; + options = VerifySetOptions ( options, itemValue ); + + // Now locate or create the item node and set the value. Note the index parameter is one-based! + // The index can be in the range [0..size+1] or "last", normalize it and check the insert flags. + // The order of the normalization checks is important. If the array is empty we end up with an + // index and location to set item size+1. + + XMP_Node * itemNode = 0; + + if ( itemIndex == kXMP_ArrayLastItem ) itemIndex = arraySize; + if ( (itemIndex == 0) && (itemLoc == kXMP_InsertAfterItem) ) { + itemIndex = 1; + itemLoc = kXMP_InsertBeforeItem; + } + if ( (itemIndex == arraySize) && (itemLoc == kXMP_InsertAfterItem) ) { + itemIndex += 1; + itemLoc = 0; + } + if ( (itemIndex == arraySize+1) && (itemLoc == kXMP_InsertBeforeItem) ) itemLoc = 0; + + if ( itemIndex == arraySize+1 ) { + + if ( itemLoc != 0 ) XMP_Throw ( "Can't insert before or after implicit new item", kXMPErr_BadIndex ); + itemNode = new XMP_Node ( arrayNode, kXMP_ArrayItemName, 0 ); + arrayNode->children.push_back ( itemNode ); + + } else { + + if ( (itemIndex < 1) || (itemIndex > arraySize) ) XMP_Throw ( "Array index out of bounds", kXMPErr_BadIndex ); + --itemIndex; // ! Convert the index to a C zero-based value! + if ( itemLoc == 0 ) { + itemNode = arrayNode->children[itemIndex]; + } else { + XMP_NodePtrPos itemPos = arrayNode->children.begin() + itemIndex; + if ( itemLoc == kXMP_InsertAfterItem ) ++itemPos; + itemNode = new XMP_Node ( arrayNode, kXMP_ArrayItemName, 0 ); + itemPos = arrayNode->children.insert ( itemPos, itemNode ); + } + + } + + SetNode ( itemNode, itemValue, options ); + +} // DoSetArrayItem + + +// ------------------------------------------------------------------------------------------------- +// ChooseLocalizedText +// ------------------- +// +// 1. Look for an exact match with the specific language. +// 2. If a generic language is given, look for partial matches. +// 3. Look for an "x-default" item. +// 4. Choose the first item. + +static XMP_CLTMatch +ChooseLocalizedText ( const XMP_Node * arrayNode, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + const XMP_Node * * itemNode ) +{ + const XMP_Node * currItem = 0; + const size_t itemLim = arrayNode->children.size(); + size_t itemNum; + + // See if the array has the right form. Allow empty alt arrays, that is what parsing returns. + // *** Should check alt-text bit when that is reliably maintained. + + if ( ! ( XMP_ArrayIsAltText(arrayNode->options) || + (arrayNode->children.empty() && XMP_ArrayIsAlternate(arrayNode->options)) ) ) { + XMP_Throw ( "Localized text array is not alt-text", kXMPErr_BadXPath ); + } + if ( arrayNode->children.empty() ) { + *itemNode = 0; + return kXMP_CLT_NoValues; + } + + for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { + currItem = arrayNode->children[itemNum]; + if ( currItem->options & kXMP_PropCompositeMask ) { + XMP_Throw ( "Alt-text array item is not simple", kXMPErr_BadXPath ); + } + if ( currItem->qualifiers.empty() || (currItem->qualifiers[0]->name != "xml:lang") ) { + XMP_Throw ( "Alt-text array item has no language qualifier", kXMPErr_BadXPath ); + } + } + + // Look for an exact match with the specific language. + for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { + currItem = arrayNode->children[itemNum]; + if ( currItem->qualifiers[0]->value == specificLang ) { + *itemNode = currItem; + return kXMP_CLT_SpecificMatch; + } + } + + if ( *genericLang != 0 ) { + + // Look for the first partial match with the generic language. + const size_t genericLen = strlen ( genericLang ); + for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { + currItem = arrayNode->children[itemNum]; + XMP_StringPtr currLang = currItem->qualifiers[0]->value.c_str(); + const size_t currLangSize = currItem->qualifiers[0]->value.size(); + if ( (currLangSize >= genericLen) && + XMP_LitNMatch ( currLang, genericLang, genericLen ) && + ((currLangSize == genericLen) || (currLang[genericLen] == '-')) ) { + *itemNode = currItem; + break; // ! Don't return, need to look for other matches. + } + } + + if ( itemNum < itemLim ) { + + // Look for a second partial match with the generic language. + for ( ++itemNum; itemNum < itemLim; ++itemNum ) { + currItem = arrayNode->children[itemNum]; + XMP_StringPtr currLang = currItem->qualifiers[0]->value.c_str(); + const size_t currLangSize = currItem->qualifiers[0]->value.size(); + if ( (currLangSize >= genericLen) && + XMP_LitNMatch ( currLang, genericLang, genericLen ) && + ((currLangSize == genericLen) || (currLang[genericLen] == '-')) ) { + return kXMP_CLT_MultipleGeneric; // ! Leave itemNode with the first partial match. + } + } + return kXMP_CLT_SingleGeneric; // No second partial match was found. + + } + + } + + // Look for an 'x-default' item. + for ( itemNum = 0; itemNum < itemLim; ++itemNum ) { + currItem = arrayNode->children[itemNum]; + if ( currItem->qualifiers[0]->value == "x-default" ) { + *itemNode = currItem; + return kXMP_CLT_XDefault; + } + } + + // Everything failed, choose the first item. + *itemNode = arrayNode->children[0]; + return kXMP_CLT_FirstItem; + +} // ChooseLocalizedText + + +// ------------------------------------------------------------------------------------------------- +// AppendLangItem +// -------------- + +static void +AppendLangItem ( XMP_Node * arrayNode, XMP_StringPtr itemLang, XMP_StringPtr itemValue ) +{ + XMP_Node * newItem = new XMP_Node ( arrayNode, kXMP_ArrayItemName, itemValue, (kXMP_PropHasQualifiers | kXMP_PropHasLang) ); + XMP_Node * langQual = new XMP_Node ( newItem, "xml:lang", itemLang, kXMP_PropIsQualifier ); + newItem->qualifiers.push_back ( langQual ); + + if ( (arrayNode->children.empty()) || (langQual->value != "x-default") ) { + arrayNode->children.push_back ( newItem ); + } else { + arrayNode->children.insert ( arrayNode->children.begin(), newItem ); + } + +} // AppendLangItem + + +// ================================================================================================= +// Class Methods +// ============= +// +// +// ================================================================================================= + + +// ------------------------------------------------------------------------------------------------- +// GetProperty +// ----------- + +bool +XMPMeta::GetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + XMP_Assert ( (propValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, propName, &expPath ); + + XMP_Node * propNode = FindConstNode ( &tree, expPath ); + if ( propNode == 0 ) return false; + + *propValue = propNode->value.c_str(); + *valueSize = propNode->value.size(); + *options = propNode->options; + + return true; + +} // GetProperty + + +// ------------------------------------------------------------------------------------------------- +// GetArrayItem +// ------------ + +bool +XMPMeta::GetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. + XMP_Assert ( (itemValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr itemPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, &itemPath, &pathLen ); + return GetProperty ( schemaNS, itemPath, itemValue, valueSize, options ); + +} // GetArrayItem + + +// ------------------------------------------------------------------------------------------------- +// GetStructField +// -------------- + +bool +XMPMeta::GetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fieldValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. + XMP_Assert ( (fieldValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr fieldPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); + return GetProperty ( schemaNS, fieldPath, fieldValue, valueSize, options ); + +} // GetStructField + + +// ------------------------------------------------------------------------------------------------- +// GetQualifier +// ------------ + +bool +XMPMeta::GetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * qualValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. + XMP_Assert ( (qualValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr qualPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); + return GetProperty ( schemaNS, qualPath, qualValue, valueSize, options ); + +} // GetQualifier + + +// ------------------------------------------------------------------------------------------------- +// SetProperty +// ----------- + +// *** Should handle array items specially, calling SetArrayItem. + +void +XMPMeta::SetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr propValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + options = VerifySetOptions ( options, propValue ); + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, propName, &expPath ); + + XMP_Node * propNode = FindNode ( &tree, expPath, kXMP_CreateNodes, options ); + if ( propNode == 0 ) XMP_Throw ( "Specified property does not exist", kXMPErr_BadXPath ); + + SetNode ( propNode, propValue, options ); + +} // SetProperty + + +// ------------------------------------------------------------------------------------------------- +// SetArrayItem +// ------------ + +void +XMPMeta::SetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath arrayPath; + ExpandXPath ( schemaNS, arrayName, &arrayPath ); + XMP_Node * arrayNode = FindNode ( &tree, arrayPath, kXMP_ExistingOnly ); // Just lookup, don't try to create. + if ( arrayNode == 0 ) XMP_Throw ( "Specified array does not exist", kXMPErr_BadXPath ); + + DoSetArrayItem ( arrayNode, itemIndex, itemValue, options ); + +} // SetArrayItem + + +// ------------------------------------------------------------------------------------------------- +// AppendArrayItem +// --------------- + +void +XMPMeta::AppendArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + XMP_StringPtr itemValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. + + arrayOptions = VerifySetOptions ( arrayOptions, 0 ); + if ( (arrayOptions & ~kXMP_PropArrayFormMask) != 0 ) { + XMP_Throw ( "Only array form flags allowed for arrayOptions", kXMPErr_BadOptions ); + } + + // Locate or create the array. If it already exists, make sure the array form from the options + // parameter is compatible with the current state. + + XMP_ExpandedXPath arrayPath; + ExpandXPath ( schemaNS, arrayName, &arrayPath ); + XMP_Node * arrayNode = FindNode ( &tree, arrayPath, kXMP_ExistingOnly ); // Just lookup, don't try to create. + + if ( arrayNode != 0 ) { + // The array exists, make sure the form is compatible. Zero arrayForm means take what exists. + if ( ! (arrayNode->options & kXMP_PropValueIsArray) ) { + XMP_Throw ( "The named property is not an array", kXMPErr_BadXPath ); + } + #if 0 + // *** Disable for now. Need to do some general rethinking of semantic checks. + if ( (arrayOptions != 0) && (arrayOptions != (arrayNode->options & kXMP_PropArrayFormMask)) ) { + XMP_Throw ( "Mismatch of existing and specified array form", kXMPErr_BadOptions ); + } + #endif + } else { + // The array does not exist, try to create it. + if ( arrayOptions == 0 ) XMP_Throw ( "Explicit arrayOptions required to create new array", kXMPErr_BadOptions ); + arrayNode = FindNode ( &tree, arrayPath, kXMP_CreateNodes, arrayOptions ); + if ( arrayNode == 0 ) XMP_Throw ( "Failure creating array node", kXMPErr_BadXPath ); + } + + DoSetArrayItem ( arrayNode, kXMP_ArrayLastItem, itemValue, (options | kXMP_InsertAfterItem) ); + +} // AppendArrayItem + + +// ------------------------------------------------------------------------------------------------- +// SetStructField +// -------------- + +void +XMPMeta::SetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. + + XMP_StringPtr fieldPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); + SetProperty ( schemaNS, fieldPath, fieldValue, options ); + +} // SetStructField + + +// ------------------------------------------------------------------------------------------------- +// SetQualifier +// ------------ + +void +XMPMeta::SetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr qualValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. + + XMP_StringPtr qualPath; + XMP_StringLen pathLen; + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, propName, &expPath ); + XMP_Node * propNode = FindNode ( &tree, expPath, kXMP_ExistingOnly ); + if ( propNode == 0 ) XMP_Throw ( "Specified property does not exist", kXMPErr_BadXPath ); + + XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); + SetProperty ( schemaNS, qualPath, qualValue, options ); + +} // SetQualifier + + +// ------------------------------------------------------------------------------------------------- +// DeleteProperty +// -------------- + +void +XMPMeta::DeleteProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, propName, &expPath ); + + XMP_NodePtrPos ptrPos; + XMP_Node * propNode = FindNode ( &tree, expPath, kXMP_ExistingOnly, kXMP_NoOptions, &ptrPos ); + if ( propNode == 0 ) return; + XMP_Node * parentNode = propNode->parent; + + // Erase the pointer from the parent's vector, then delete the node and all below it. + + if ( ! (propNode->options & kXMP_PropIsQualifier) ) { + + parentNode->children.erase ( ptrPos ); + DeleteEmptySchema ( parentNode ); + + } else { + + if ( propNode->name == "xml:lang" ) { + XMP_Assert ( parentNode->options & kXMP_PropHasLang ); // *** &= ~flag would be safer + parentNode->options ^= kXMP_PropHasLang; + } else if ( propNode->name == "rdf:type" ) { + XMP_Assert ( parentNode->options & kXMP_PropHasType ); + parentNode->options ^= kXMP_PropHasType; + } + + parentNode->qualifiers.erase ( ptrPos ); + XMP_Assert ( parentNode->options & kXMP_PropHasQualifiers ); + if ( parentNode->qualifiers.empty() ) parentNode->options ^= kXMP_PropHasQualifiers; + + } + + delete propNode; // ! The destructor takes care of the whole subtree. + +} // DeleteProperty + + +// ------------------------------------------------------------------------------------------------- +// DeleteArrayItem +// --------------- + +void +XMPMeta::DeleteArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ) +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. + + XMP_StringPtr itemPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, &itemPath, &pathLen ); + DeleteProperty ( schemaNS, itemPath ); + +} // DeleteArrayItem + + +// ------------------------------------------------------------------------------------------------- +// DeleteStructField +// ----------------- + +void +XMPMeta::DeleteStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ) +{ + XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. + + XMP_StringPtr fieldPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); + DeleteProperty ( schemaNS, fieldPath ); + +} // DeleteStructField + + +// ------------------------------------------------------------------------------------------------- +// DeleteQualifier +// --------------- + +void +XMPMeta::DeleteQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. + + XMP_StringPtr qualPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); + DeleteProperty ( schemaNS, qualPath ); + +} // DeleteQualifier + + +// ------------------------------------------------------------------------------------------------- +// DoesPropertyExist +// ----------------- + +bool +XMPMeta::DoesPropertyExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, propName, &expPath ); + + XMP_Node * propNode = FindConstNode ( &tree, expPath ); + return (propNode != 0); + +} // DoesPropertyExist + + +// ------------------------------------------------------------------------------------------------- +// DoesArrayItemExist +// ------------------ + +bool +XMPMeta::DoesArrayItemExist ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ) const +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. + + XMP_StringPtr itemPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, &itemPath, &pathLen ); + return DoesPropertyExist ( schemaNS, itemPath ); + +} // DoesArrayItemExist + + +// ------------------------------------------------------------------------------------------------- +// DoesStructFieldExist +// -------------------- + +bool +XMPMeta::DoesStructFieldExist ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ) const +{ + XMP_Assert ( (schemaNS != 0) && (structName != 0) && (fieldNS != 0) && (fieldName != 0) ); // Enforced by wrapper. + + XMP_StringPtr fieldPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, &fieldPath, &pathLen ); + return DoesPropertyExist ( schemaNS, fieldPath ); + +} // DoesStructFieldExist + + +// ------------------------------------------------------------------------------------------------- +// DoesQualifierExist +// ------------------ + +bool +XMPMeta::DoesQualifierExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) && (qualNS != 0) && (qualName != 0) ); // Enforced by wrapper. + + XMP_StringPtr qualPath; + XMP_StringLen pathLen; + + XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, &qualPath, &pathLen ); + return DoesPropertyExist ( schemaNS, qualPath ); + +} // DoesQualifierExist + + +// ------------------------------------------------------------------------------------------------- +// GetLocalizedText +// ---------------- + +bool +XMPMeta::GetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr _genericLang, + XMP_StringPtr _specificLang, + XMP_StringPtr * actualLang, + XMP_StringLen * langSize, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) && (_genericLang != 0) && (_specificLang != 0) ); // Enforced by wrapper. + XMP_Assert ( (actualLang != 0) && (langSize != 0) ); // Enforced by wrapper. + XMP_Assert ( (itemValue != 0) && (valueSize != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_VarString zGenericLang ( _genericLang ); + XMP_VarString zSpecificLang ( _specificLang ); + NormalizeLangValue ( &zGenericLang ); + NormalizeLangValue ( &zSpecificLang ); + + XMP_StringPtr genericLang = zGenericLang.c_str(); + XMP_StringPtr specificLang = zSpecificLang.c_str(); + + XMP_ExpandedXPath arrayPath; + ExpandXPath ( schemaNS, arrayName, &arrayPath ); + + const XMP_Node * arrayNode = FindConstNode ( &tree, arrayPath ); // *** This expand/find idiom is used in 3 Getters. + if ( arrayNode == 0 ) return false; // *** Should extract it into a local utility. + + XMP_CLTMatch match; + const XMP_Node * itemNode; + + match = ChooseLocalizedText ( arrayNode, genericLang, specificLang, &itemNode ); + if ( match == kXMP_CLT_NoValues ) return false; + + *actualLang = itemNode->qualifiers[0]->value.c_str(); + *langSize = itemNode->qualifiers[0]->value.size(); + *itemValue = itemNode->value.c_str(); + *valueSize = itemNode->value.size(); + *options = itemNode->options; + + return true; + +} // GetLocalizedText + + +// ------------------------------------------------------------------------------------------------- +// SetLocalizedText +// ---------------- + +void +XMPMeta::SetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr _genericLang, + XMP_StringPtr _specificLang, + XMP_StringPtr itemValue, + XMP_OptionBits options ) +{ + UNUSED(options); // Avoid unused parameter warning. + + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) && (_genericLang != 0) && (_specificLang != 0) ); // Enforced by wrapper. + + XMP_VarString zGenericLang ( _genericLang ); + XMP_VarString zSpecificLang ( _specificLang ); + NormalizeLangValue ( &zGenericLang ); + NormalizeLangValue ( &zSpecificLang ); + + XMP_StringPtr genericLang = zGenericLang.c_str(); + XMP_StringPtr specificLang = zSpecificLang.c_str(); + + XMP_ExpandedXPath arrayPath; + ExpandXPath ( schemaNS, arrayName, &arrayPath ); + + // Find the array node and set the options if it was just created. + XMP_Node * arrayNode = FindNode ( &tree, arrayPath, kXMP_CreateNodes, + (kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate) ); + if ( arrayNode == 0 ) XMP_Throw ( "Failed to find or create array node", kXMPErr_BadXPath ); + if ( ! XMP_ArrayIsAltText(arrayNode->options) ) { + if ( arrayNode->children.empty() && XMP_ArrayIsAlternate(arrayNode->options) ) { + arrayNode->options |= kXMP_PropArrayIsAltText; + } else { + XMP_Throw ( "Localized text array is not alt-text", kXMPErr_BadXPath ); + } + } + + // Make sure the x-default item, if any, is first. + + size_t itemNum, itemLim; + XMP_Node * xdItem = 0; + bool haveXDefault = false; + + for ( itemNum = 0, itemLim = arrayNode->children.size(); itemNum < itemLim; ++itemNum ) { + XMP_Node * currItem = arrayNode->children[itemNum]; + XMP_Assert ( XMP_PropHasLang(currItem->options) ); + if ( currItem->qualifiers.empty() || (currItem->qualifiers[0]->name != "xml:lang") ) { + XMP_Throw ( "Language qualifier must be first", kXMPErr_BadXPath ); + } + if ( currItem->qualifiers[0]->value == "x-default" ) { + xdItem = currItem; + haveXDefault = true; + break; + } + } + + if ( haveXDefault && (itemNum != 0) ) { + XMP_Assert ( arrayNode->children[itemNum]->qualifiers[0]->value == "x-default" ); + XMP_Node * temp = arrayNode->children[0]; + arrayNode->children[0] = arrayNode->children[itemNum]; + arrayNode->children[itemNum] = temp; + } + + // Find the appropriate item. ChooseLocalizedText will make sure the array is a language alternative. + + const XMP_Node * cItemNode; // ! ChooseLocalizedText returns a pointer to a const node. + XMP_CLTMatch match = ChooseLocalizedText ( arrayNode, genericLang, specificLang, &cItemNode ); + XMP_Node * itemNode = const_cast ( cItemNode ); + + const bool specificXDefault = XMP_LitMatch ( specificLang, "x-default" ); + + switch ( match ) { + + case kXMP_CLT_NoValues : + + // Create the array items for the specificLang and x-default, with x-default first. + AppendLangItem ( arrayNode, "x-default", itemValue ); + haveXDefault = true; + if ( ! specificXDefault ) AppendLangItem ( arrayNode, specificLang, itemValue ); + break; + + case kXMP_CLT_SpecificMatch : + + if ( ! specificXDefault ) { + // Update the specific item, update x-default if it matches the old value. + if ( haveXDefault && (xdItem != itemNode) && (xdItem->value == itemNode->value) ) { + SetNodeValue ( xdItem, itemValue ); + } + SetNodeValue ( itemNode, itemValue ); // ! Do this after the x-default check! + } else { + // Update all items whose values match the old x-default value. + XMP_Assert ( haveXDefault && (xdItem == itemNode) ); + for ( itemNum = 0, itemLim = arrayNode->children.size(); itemNum < itemLim; ++itemNum ) { + XMP_Node * currItem = arrayNode->children[itemNum]; + if ( (currItem == xdItem) || (currItem->value != xdItem->value) ) continue; + SetNodeValue ( currItem, itemValue ); + } + SetNodeValue ( xdItem, itemValue ); // And finally do the x-default item. + } + break; + + case kXMP_CLT_SingleGeneric : + + // Update the generic item, update x-default if it matches the old value. + if ( haveXDefault && (xdItem != itemNode) && (xdItem->value == itemNode->value) ) { + SetNodeValue ( xdItem, itemValue ); + } + SetNodeValue ( itemNode, itemValue ); // ! Do this after the x-default check! + break; + + case kXMP_CLT_MultipleGeneric : + + // Create the specific language, ignore x-default. + AppendLangItem ( arrayNode, specificLang, itemValue ); + if ( specificXDefault ) haveXDefault = true; + break; + + case kXMP_CLT_XDefault : + + // Create the specific language, update x-default if it was the only item. + if ( arrayNode->children.size() == 1 ) SetNodeValue ( xdItem, itemValue ); + AppendLangItem ( arrayNode, specificLang, itemValue ); + break; + + case kXMP_CLT_FirstItem : + + // Create the specific language, don't add an x-default item. + AppendLangItem ( arrayNode, specificLang, itemValue ); + if ( specificXDefault ) haveXDefault = true; + break; + + default : + XMP_Throw ( "Unexpected result from ChooseLocalizedText", kXMPErr_InternalFailure ); + + } + + // Add an x-default at the front if needed. + if ( (! haveXDefault) && (arrayNode->children.size() == 1) ) { + AppendLangItem ( arrayNode, "x-default", itemValue ); + } + +} // SetLocalizedText + + +// ------------------------------------------------------------------------------------------------- +// GetProperty_Bool +// ---------------- + +bool +XMPMeta::GetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool * propValue, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); + if ( found ) { + if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); + *propValue = XMPUtils::ConvertToBool ( valueStr ); + } + return found; + +} // GetProperty_Bool + + +// ------------------------------------------------------------------------------------------------- +// GetProperty_Int +// --------------- + +bool +XMPMeta::GetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 * propValue, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); + if ( found ) { + if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); + *propValue = XMPUtils::ConvertToInt ( valueStr ); + } + return found; + +} // GetProperty_Int + + +// ------------------------------------------------------------------------------------------------- +// GetProperty_Int64 +// ----------------- + +bool +XMPMeta::GetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 * propValue, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); + if ( found ) { + if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); + *propValue = XMPUtils::ConvertToInt64 ( valueStr ); + } + return found; + +} // GetProperty_Int64 + + +// ------------------------------------------------------------------------------------------------- +// GetProperty_Float +// ----------------- + +bool +XMPMeta::GetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double * propValue, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); + if ( found ) { + if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); + *propValue = XMPUtils::ConvertToFloat ( valueStr ); + } + return found; + +} // GetProperty_Float + + +// ------------------------------------------------------------------------------------------------- +// GetProperty_Date +// ---------------- + +bool +XMPMeta::GetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_DateTime * propValue, + XMP_OptionBits * options ) const +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + XMP_Assert ( (propValue != 0) && (options != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + bool found = GetProperty ( schemaNS, propName, &valueStr, &valueLen, options ); + if ( found ) { + if ( ! XMP_PropIsSimple ( *options ) ) XMP_Throw ( "Property must be simple", kXMPErr_BadXPath ); + XMPUtils::ConvertToDate ( valueStr, propValue ); + } + return found; + +} // GetProperty_Date + + +// ------------------------------------------------------------------------------------------------- +// SetProperty_Bool +// ---------------- + +void +XMPMeta::SetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool propValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + XMPUtils::ConvertFromBool ( propValue, &valueStr, &valueLen ); + SetProperty ( schemaNS, propName, valueStr, options ); + +} // SetProperty_Bool + + +// ------------------------------------------------------------------------------------------------- +// SetProperty_Int +// --------------- + +void +XMPMeta::SetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 propValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + XMPUtils::ConvertFromInt ( propValue, "", &valueStr, &valueLen ); + SetProperty ( schemaNS, propName, valueStr, options ); + +} // SetProperty_Int + + +// ------------------------------------------------------------------------------------------------- +// SetProperty_Int64 +// ----------------- + +void +XMPMeta::SetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 propValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + XMPUtils::ConvertFromInt64 ( propValue, "", &valueStr, &valueLen ); + SetProperty ( schemaNS, propName, valueStr, options ); + +} // SetProperty_Int64 + + +// ------------------------------------------------------------------------------------------------- +// SetProperty_Float +// ----------------- + +void +XMPMeta::SetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double propValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + XMPUtils::ConvertFromFloat ( propValue, "", &valueStr, &valueLen ); + SetProperty ( schemaNS, propName, valueStr, options ); + +} // SetProperty_Float + + +// ------------------------------------------------------------------------------------------------- +// SetProperty_Date +// ---------------- + +void +XMPMeta::SetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const XMP_DateTime & propValue, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // Enforced by wrapper. + + XMP_StringPtr valueStr; + XMP_StringLen valueLen; + + XMPUtils::ConvertFromDate ( propValue, &valueStr, &valueLen ); + SetProperty ( schemaNS, propName, valueStr, options ); + +} // SetProperty_Date + +// ================================================================================================= + diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Parse.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Parse.cpp new file mode 100644 index 0000000..9f66fe8 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Parse.cpp @@ -0,0 +1,1291 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// +// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of +// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPMeta.hpp" +#include "XMPUtils.hpp" + +#include "UnicodeInlines.incl_cpp" +#include "UnicodeConversions.hpp" +#include "ExpatAdapter.hpp" + +#if XMP_DebugBuild + #include +#endif + +using namespace std; + +#if XMP_WinBuild +#ifdef _MSC_VER + #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #pragma warning ( disable : 4996 ) // '...' was declared deprecated +#endif +#endif + + +// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros +// *** Add debug codegen checks, e.g. that typical masking operations really work +// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch + + +// ================================================================================================= +// Local Types and Constants +// ========================= + + +// ================================================================================================= +// Static Variables +// ================ + +#ifndef Trace_ParsingHackery + #define Trace_ParsingHackery 0 +#endif + +static const char * kReplaceLatin1[128] = + { + + // The 0x80..0x9F range is undefined in Latin-1, but is defined in Windows code page 1252. + // The bytes 0x81, 0x8D, 0x8F, 0x90, and 0x9D are formally undefined by Windows 1252, but + // their conversion API maps them to U+0081, etc. These are in XML's RestrictedChar set, so + // we map them to a space. + + "\xE2\x82\xAC", " ", "\xE2\x80\x9A", "\xC6\x92", // 0x80 .. 0x83 + "\xE2\x80\x9E", "\xE2\x80\xA6", "\xE2\x80\xA0", "\xE2\x80\xA1", // 0x84 .. 0x87 + "\xCB\x86", "\xE2\x80\xB0", "\xC5\xA0", "\xE2\x80\xB9", // 0x88 .. 0x8B + "\xC5\x92", " ", "\xC5\xBD", " ", // 0x8C .. 0x8F + + " ", "\xE2\x80\x98", "\xE2\x80\x99", "\xE2\x80\x9C", // 0x90 .. 0x93 + "\xE2\x80\x9D", "\xE2\x80\xA2", "\xE2\x80\x93", "\xE2\x80\x94", // 0x94 .. 0x97 + "\xCB\x9C", "\xE2\x84\xA2", "\xC5\xA1", "\xE2\x80\xBA", // 0x98 .. 0x9B + "\xC5\x93", " ", "\xC5\xBE", "\xC5\xB8", // 0x9C .. 0x9F + + // These are the UTF-8 forms of the official Latin-1 characters in the range 0xA0..0xFF. Not + // too surprisingly these map to U+00A0, etc. Which is the Unicode Latin Supplement range. + + "\xC2\xA0", "\xC2\xA1", "\xC2\xA2", "\xC2\xA3", "\xC2\xA4", "\xC2\xA5", "\xC2\xA6", "\xC2\xA7", // 0xA0 .. 0xA7 + "\xC2\xA8", "\xC2\xA9", "\xC2\xAA", "\xC2\xAB", "\xC2\xAC", "\xC2\xAD", "\xC2\xAE", "\xC2\xAF", // 0xA8 .. 0xAF + + "\xC2\xB0", "\xC2\xB1", "\xC2\xB2", "\xC2\xB3", "\xC2\xB4", "\xC2\xB5", "\xC2\xB6", "\xC2\xB7", // 0xB0 .. 0xB7 + "\xC2\xB8", "\xC2\xB9", "\xC2\xBA", "\xC2\xBB", "\xC2\xBC", "\xC2\xBD", "\xC2\xBE", "\xC2\xBF", // 0xB8 .. 0xBF + + "\xC3\x80", "\xC3\x81", "\xC3\x82", "\xC3\x83", "\xC3\x84", "\xC3\x85", "\xC3\x86", "\xC3\x87", // 0xC0 .. 0xC7 + "\xC3\x88", "\xC3\x89", "\xC3\x8A", "\xC3\x8B", "\xC3\x8C", "\xC3\x8D", "\xC3\x8E", "\xC3\x8F", // 0xC8 .. 0xCF + + "\xC3\x90", "\xC3\x91", "\xC3\x92", "\xC3\x93", "\xC3\x94", "\xC3\x95", "\xC3\x96", "\xC3\x97", // 0xD0 .. 0xD7 + "\xC3\x98", "\xC3\x99", "\xC3\x9A", "\xC3\x9B", "\xC3\x9C", "\xC3\x9D", "\xC3\x9E", "\xC3\x9F", // 0xD8 .. 0xDF + + "\xC3\xA0", "\xC3\xA1", "\xC3\xA2", "\xC3\xA3", "\xC3\xA4", "\xC3\xA5", "\xC3\xA6", "\xC3\xA7", // 0xE0 .. 0xE7 + "\xC3\xA8", "\xC3\xA9", "\xC3\xAA", "\xC3\xAB", "\xC3\xAC", "\xC3\xAD", "\xC3\xAE", "\xC3\xAF", // 0xE8 .. 0xEF + + "\xC3\xB0", "\xC3\xB1", "\xC3\xB2", "\xC3\xB3", "\xC3\xB4", "\xC3\xB5", "\xC3\xB6", "\xC3\xB7", // 0xF0 .. 0xF7 + "\xC3\xB8", "\xC3\xB9", "\xC3\xBA", "\xC3\xBB", "\xC3\xBC", "\xC3\xBD", "\xC3\xBE", "\xC3\xBF", // 0xF8 .. 0xFF + + }; + + +// ================================================================================================= +// Local Utilities +// =============== + + +#define IsHexDigit(ch) ( (('0' <= (ch)) && ((ch) <= '9')) || (('A' <= (ch)) && ((ch) <= 'F')) ) +#define HexDigitValue(ch) ( (((ch) - '0') < 10) ? ((ch) - '0') : ((ch) - 'A' + 10) ) + + +// ------------------------------------------------------------------------------------------------- +// PickBestRoot +// ------------ +static const XML_Node * PickBestRoot ( const XML_Node & xmlParent, XMP_OptionBits options ) +{ + + // Look among this parent's content for x:xmpmeta. The recursion for x:xmpmeta is broader than + // the strictly defined choice, but gives us smaller code. + for ( size_t childNum = 0, childLim = xmlParent.content.size(); childNum < childLim; ++childNum ) { + const XML_Node * childNode = xmlParent.content[childNum]; + if ( childNode->kind != kElemNode ) continue; + if ( (childNode->name == "x:xmpmeta") || (childNode->name == "x:xapmeta") ) return PickBestRoot ( *childNode, 0 ); + } + // Look among this parent's content for a bare rdf:RDF if that is allowed. + if ( ! (options & kXMP_RequireXMPMeta) ) { + for ( size_t childNum = 0, childLim = xmlParent.content.size(); childNum < childLim; ++childNum ) { + const XML_Node * childNode = xmlParent.content[childNum]; + if ( childNode->kind != kElemNode ) continue; + if ( childNode->name == "rdf:RDF" ) return childNode; + } + } + + // Recurse into the content. + for ( size_t childNum = 0, childLim = xmlParent.content.size(); childNum < childLim; ++childNum ) { + const XML_Node * foundRoot = PickBestRoot ( *xmlParent.content[childNum], options ); + if ( foundRoot != 0 ) return foundRoot; + } + + return 0; + +} // PickBestRoot + +// ------------------------------------------------------------------------------------------------- +// FindRootNode +// ------------ +// +// Find the XML node that is the root of the XMP data tree. Generally this will be an outer node, +// but it could be anywhere if a general XML document is parsed (e.g. SVG). The XML parser counted +// all possible root nodes, and kept a pointer to the last one. If there is more than one possible +// root use PickBestRoot to choose among them. +// +// If there is a root node, try to extract the version of the previous XMP toolkit. + +static const XML_Node * FindRootNode ( XMPMeta * thiz, const XMLParserAdapter & xmlParser, XMP_OptionBits options ) +{ + const XML_Node * rootNode = xmlParser.rootNode; + + if ( xmlParser.rootCount > 1 ) rootNode = PickBestRoot ( xmlParser.tree, options ); + if ( rootNode == 0 ) return 0; + + // We have a root node. Try to extract previous toolkit version number. + + XMP_StringPtr verStr = ""; + + XMP_Assert ( rootNode->name == "rdf:RDF" ); + + if ( (options & kXMP_RequireXMPMeta) && + ((rootNode->parent == 0) || + ((rootNode->parent->name != "x:xmpmeta") && (rootNode->parent->name != "x:xapmeta"))) ) return 0; + + for ( size_t attrNum = 0, attrLim = rootNode->parent->attrs.size(); attrNum < attrLim; ++attrNum ) { + const XML_Node * currAttr =rootNode->parent->attrs[attrNum]; + if ( (currAttr->name == "x:xmptk") || (currAttr->name == "x:xaptk") ) { + verStr = currAttr->value.c_str(); + break; + } + } + + // Decode the version number into MMmmuubbb digits. If any part is too big, peg it at 99 or 999. + + unsigned long part; + while ( (*verStr != 0) && ((*verStr < '0') || (*verStr > '9')) ) ++verStr; + + part = 0; + while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { + part = (part * 10) + (*verStr - '0'); + ++verStr; + } + if ( part > 99 ) part = 99; + thiz->prevTkVer = part * 100*100*1000; + + part = 0; + if ( *verStr == '.' ) ++verStr; + while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { + part = (part * 10) + (*verStr - '0'); + ++verStr; + } + if ( part > 99 ) part = 99; + thiz->prevTkVer += part * 100*1000; + + part = 0; + if ( *verStr == '.' ) ++verStr; + while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { + part = (part * 10) + (*verStr - '0'); + ++verStr; + } + if ( part > 99 ) part = 99; + thiz->prevTkVer += part * 1000; + + part = 0; + if ( *verStr == '-' ) ++verStr; + while ( (*verStr != 0) && ('0' <= *verStr) && (*verStr <= '9') ) { + part = (part * 10) + (*verStr - '0'); + ++verStr; + } + if ( part > 999 ) part = 999; + thiz->prevTkVer += part; + + return rootNode; + +} // FindRootNode + +// ------------------------------------------------------------------------------------------------- +// NormalizeDCArrays +// ----------------- +// +// Undo the denormalization performed by the XMP used in Acrobat 5. If a Dublin Core array had only +// one item, it was serialized as a simple property. The xml:lang attribute was dropped from an +// alt-text item if the language was x-default. + +// *** This depends on the dc: namespace prefix. + +static void +NormalizeDCArrays ( XMP_Node * xmpTree ) +{ + XMP_Node * dcSchema = FindSchemaNode ( xmpTree, kXMP_NS_DC, kXMP_ExistingOnly ); + if ( dcSchema == 0 ) return; + + for ( size_t propNum = 0, propLimit = dcSchema->children.size(); propNum < propLimit; ++propNum ) { + XMP_Node * currProp = dcSchema->children[propNum]; + XMP_OptionBits arrayForm = 0; + + if ( ! XMP_PropIsSimple ( currProp->options ) ) continue; // Nothing to do if not simple. + + if ( (currProp->name == "dc:creator" ) || // See if it is supposed to be an array. + (currProp->name == "dc:date" ) ) { // *** Think about an array of char* and a loop. + arrayForm = kXMP_PropArrayIsOrdered; + } else if ( + (currProp->name == "dc:description" ) || + (currProp->name == "dc:rights" ) || + (currProp->name == "dc:title" ) ) { + arrayForm = kXMP_PropArrayIsAltText; + } else if ( + (currProp->name == "dc:contributor" ) || + (currProp->name == "dc:language" ) || + (currProp->name == "dc:publisher" ) || + (currProp->name == "dc:relation" ) || + (currProp->name == "dc:subject" ) || + (currProp->name == "dc:type" ) ) { + arrayForm = kXMP_PropValueIsArray; + } + if ( arrayForm == 0 ) continue; // Nothing to do if it isn't supposed to be an array. + + arrayForm = VerifySetOptions ( arrayForm, 0 ); // Set the implicit array bits. + XMP_Node * newArray = new XMP_Node ( dcSchema, currProp->name.c_str(), arrayForm ); + dcSchema->children[propNum] = newArray; + newArray->children.push_back ( currProp ); + currProp->parent = newArray; + currProp->name = kXMP_ArrayItemName; + + if ( XMP_ArrayIsAltText ( arrayForm ) && (! (currProp->options & kXMP_PropHasLang)) ) { + XMP_Node * newLang = new XMP_Node ( currProp, "xml:lang", "x-default", kXMP_PropIsQualifier ); + currProp->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); + if ( currProp->qualifiers.empty() ) { // *** Need a util? + currProp->qualifiers.push_back ( newLang ); + } else { + currProp->qualifiers.insert ( currProp->qualifiers.begin(), newLang ); + } + } + + } + +} // NormalizeDCArrays + + +// ------------------------------------------------------------------------------------------------- +// CompareAliasedSubtrees +// ---------------------- + +// *** Change to do some alias-specific setup, then use CompareSubtrees. One special case for +// *** aliases is a simple to x-default alias, the options and qualifiers obviously differ. + +static void +CompareAliasedSubtrees ( XMP_Node * aliasNode, XMP_Node * baseNode, bool outerCall = true ) +{ + // ! The outermost call is special. The names almost certainly differ. The qualifiers (and + // ! hence options) will differ for an alias to the x-default item of a langAlt array. + if ( (aliasNode->value != baseNode->value) || + (aliasNode->children.size() != baseNode->children.size()) ) { + XMP_Throw ( "Mismatch between alias and base nodes", kXMPErr_BadXMP ); + } + if ( ! outerCall ) { + if ( (aliasNode->name != baseNode->name) || + (aliasNode->options != baseNode->options) || + (aliasNode->qualifiers.size() != baseNode->qualifiers.size()) ) { + XMP_Throw ( "Mismatch between alias and base nodes", kXMPErr_BadXMP ); + } + } + + for ( size_t childNum = 0, childLim = aliasNode->children.size(); childNum < childLim; ++childNum ) { + XMP_Node * aliasChild = aliasNode->children[childNum]; + XMP_Node * baseChild = baseNode->children[childNum]; + CompareAliasedSubtrees ( aliasChild, baseChild, false ); + } + + for ( size_t qualNum = 0, qualLim = aliasNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + XMP_Node * aliasQual = aliasNode->qualifiers[qualNum]; + XMP_Node * baseQual = baseNode->qualifiers[qualNum]; + CompareAliasedSubtrees ( aliasQual, baseQual, false ); + } + +} // CompareAliasedSubtrees + + +// ------------------------------------------------------------------------------------------------- +// TransplantArrayItemAlias +// ------------------------ + +static void +TransplantArrayItemAlias ( XMP_Node * oldParent, size_t oldNum, XMP_Node * newParent ) +{ + XMP_Node * childNode = oldParent->children[oldNum]; + + if ( newParent->options & kXMP_PropArrayIsAltText ) { + if ( childNode->options & kXMP_PropHasLang ) { + XMP_Throw ( "Alias to x-default already has a language qualifier", kXMPErr_BadXMP ); // *** Allow x-default. + } + childNode->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); + XMP_Node * langQual = new XMP_Node ( childNode, "xml:lang", "x-default", kXMP_PropIsQualifier ); // *** AddLangQual util? + if ( childNode->qualifiers.empty() ) { + childNode->qualifiers.push_back ( langQual ); + } else { + childNode->qualifiers.insert ( childNode->qualifiers.begin(), langQual ); + } + } + + oldParent->children.erase ( oldParent->children.begin() + oldNum ); + childNode->name = kXMP_ArrayItemName; + childNode->parent = newParent; + if ( newParent->children.empty() ) { + newParent->children.push_back ( childNode ); + } else { + newParent->children.insert ( newParent->children.begin(), childNode ); + } + +} // TransplantArrayItemAlias + + +// ------------------------------------------------------------------------------------------------- +// TransplantNamedAlias +// -------------------- + +static void +TransplantNamedAlias ( XMP_Node * oldParent, size_t oldNum, XMP_Node * newParent, XMP_VarString & newName ) +{ + XMP_Node * childNode = oldParent->children[oldNum]; + + oldParent->children.erase ( oldParent->children.begin() + oldNum ); + childNode->name = newName; + childNode->parent = newParent; + newParent->children.push_back ( childNode ); + +} // TransplantNamedAlias + + +// ------------------------------------------------------------------------------------------------- +// MoveExplicitAliases +// ------------------- + +static void +MoveExplicitAliases ( XMP_Node * tree, XMP_OptionBits parseOptions ) +{ + tree->options ^= kXMP_PropHasAliases; + const bool strictAliasing = ((parseOptions & kXMP_StrictAliasing) != 0); + + // Visit all of the top level nodes looking for aliases. If there is no base, transplant the + // alias subtree. If there is a base and strict aliasing is on, make sure the alias and base + // subtrees match. + + // ! Use "while" loops not "for" loops since both the schema and property loops can remove the + // ! current item from the vector being traversed. And don't increment the counter for a delete. + + size_t schemaNum = 0; + while ( schemaNum < tree->children.size() ) { + XMP_Node * currSchema = tree->children[schemaNum]; + + size_t propNum = 0; + while ( propNum < currSchema->children.size() ) { + XMP_Node * currProp = currSchema->children[propNum]; + if ( ! (currProp->options & kXMP_PropIsAlias) ) { + ++propNum; + continue; + } + currProp->options ^= kXMP_PropIsAlias; + + // Find the base path, look for the base schema and root node. + + XMP_AliasMapPos aliasPos = sRegisteredAliasMap->find ( currProp->name ); + XMP_Assert ( aliasPos != sRegisteredAliasMap->end() ); + XMP_ExpandedXPath & basePath = aliasPos->second; + XMP_OptionBits arrayOptions = (basePath[kRootPropStep].options & kXMP_PropArrayFormMask); + + XMP_Node * baseSchema = FindSchemaNode ( tree, basePath[kSchemaStep].step.c_str(), kXMP_CreateNodes ); + if ( baseSchema->options & kXMP_NewImplicitNode ) baseSchema->options ^= kXMP_NewImplicitNode; + XMP_Node * baseNode = FindChildNode ( baseSchema, basePath[kRootPropStep].step.c_str(), kXMP_ExistingOnly ); + + if ( baseNode == 0 ) { + + if ( basePath.size() == 2 ) { + // A top-to-top alias, transplant the property. + TransplantNamedAlias ( currSchema, propNum, baseSchema, basePath[kRootPropStep].step ); + } else { + // An alias to an array item, create the array and transplant the property. + baseNode = new XMP_Node ( baseSchema, basePath[kRootPropStep].step.c_str(), arrayOptions ); + baseSchema->children.push_back ( baseNode ); + TransplantArrayItemAlias ( currSchema, propNum, baseNode ); + } + + } else if ( basePath.size() == 2 ) { + + // The base node does exist and this is a top-to-top alias. Check for conflicts if + // strict aliasing is on. Remove and delete the alias subtree. + if ( strictAliasing ) CompareAliasedSubtrees ( currProp, baseNode ); + currSchema->children.erase ( currSchema->children.begin() + propNum ); + delete currProp; + + } else { + + // This is an alias to an array item and the array exists. Look for the aliased item. + // Then transplant or check & delete as appropriate. + + XMP_Node * itemNode = 0; + if ( arrayOptions & kXMP_PropArrayIsAltText ) { + XMP_Index xdIndex = LookupLangItem ( baseNode, *xdefaultName ); + if ( xdIndex != -1 ) itemNode = baseNode->children[xdIndex]; + } else if ( ! baseNode->children.empty() ) { + itemNode = baseNode->children[0]; + } + + if ( itemNode == 0 ) { + TransplantArrayItemAlias ( currSchema, propNum, baseNode ); + } else { + if ( strictAliasing ) CompareAliasedSubtrees ( currProp, itemNode ); + currSchema->children.erase ( currSchema->children.begin() + propNum ); + delete currProp; + } + + } + + } // Property loop + + // Increment the counter or remove an empty schema node. + if ( currSchema->children.size() > 0 ) { + ++schemaNum; + } else { + delete tree->children[schemaNum]; // ! Delete the schema node itself. + tree->children.erase ( tree->children.begin() + schemaNum ); + } + + } // Schema loop + +} // MoveExplicitAliases + + +// ------------------------------------------------------------------------------------------------- +// FixGPSTimeStamp +// --------------- + +static void +FixGPSTimeStamp ( XMP_Node * exifSchema, XMP_Node * gpsDateTime ) +{ + XMP_DateTime binGPSStamp; + try { + XMPUtils::ConvertToDate ( gpsDateTime->value.c_str(), &binGPSStamp ); + } catch ( ... ) { + return; // Don't let a bad date stop other things. + } + if ( (binGPSStamp.year != 0) || (binGPSStamp.month != 0) || (binGPSStamp.day != 0) ) return; + + XMP_Node * otherDate = FindChildNode ( exifSchema, "exif:DateTimeOriginal", kXMP_ExistingOnly ); + if ( otherDate == 0 ) otherDate = FindChildNode ( exifSchema, "exif:DateTimeDigitized", kXMP_ExistingOnly ); + if ( otherDate == 0 ) return; + + XMP_DateTime binOtherDate; + try { + XMPUtils::ConvertToDate ( otherDate->value.c_str(), &binOtherDate ); + } catch ( ... ) { + return; // Don't let a bad date stop other things. + } + + binGPSStamp.year = binOtherDate.year; + binGPSStamp.month = binOtherDate.month; + binGPSStamp.day = binOtherDate.day; + + XMP_StringPtr goodStr; + XMP_StringLen goodLen; + XMPUtils::ConvertFromDate ( binGPSStamp, &goodStr, &goodLen ); + + gpsDateTime->value.assign ( goodStr, goodLen ); + +} // FixGPSTimeStamp + + +// ------------------------------------------------------------------------------------------------- +// MigrateAudioCopyright +// --------------------- +// +// The initial support for WAV files mapped a legacy ID3 audio copyright into a new xmpDM:copyright +// property. This is special case code to migrate that into dc:rights['x-default']. The rules: +// +// 1. If there is no dc:rights array, or an empty array - +// Create one with dc:rights['x-default'] set from double linefeed and xmpDM:copyright. +// +// 2. If there is a dc:rights array but it has no x-default item - +// Create an x-default item as a copy of the first item then apply rule #3. +// +// 3. If there is a dc:rights array with an x-default item, look for a double linefeed in the value. +// A. If no double linefeed, compare the x-default value to the xmpDM:copyright value. +// A1. If they match then leave the x-default value alone. +// A2. Otherwise, append a double linefeed and the xmpDM:copyright value to the x-default value. +// B. If there is a double linefeed, compare the trailing text to the xmpDM:copyright value. +// B1. If they match then leave the x-default value alone. +// B2. Otherwise, replace the trailing x-default text with the xmpDM:copyright value. +// +// 4. In all cases, delete the xmpDM:copyright property. + +static void +MigrateAudioCopyright ( XMPMeta * xmp, XMP_Node * dmCopyright ) +{ + + try { + + std::string & dmValue = dmCopyright->value; + static const char * kDoubleLF = "\xA\xA"; + + XMP_Node * dcSchema = FindSchemaNode ( &xmp->tree, kXMP_NS_DC, kXMP_CreateNodes ); + XMP_Node * dcRightsArray = FindChildNode ( dcSchema, "dc:rights", kXMP_ExistingOnly ); + + if ( (dcRightsArray == 0) || dcRightsArray->children.empty() ) { + + // 1. No dc:rights array, create from double linefeed and xmpDM:copyright. + dmValue.insert ( 0, kDoubleLF ); + xmp->SetLocalizedText ( kXMP_NS_DC, "rights", "", "x-default", dmValue.c_str(), 0 ); + + } else { + + std::string xdefaultStr ( "x-default" ); + + XMP_Index xdIndex = LookupLangItem ( dcRightsArray, xdefaultStr ); + + if ( xdIndex < 0 ) { + // 2. No x-default item, create from the first item. + XMP_StringPtr firstValue = dcRightsArray->children[0]->value.c_str(); + xmp->SetLocalizedText ( kXMP_NS_DC, "rights", "", "x-default", firstValue, 0 ); + xdIndex = LookupLangItem ( dcRightsArray, xdefaultStr ); + } + + // 3. Look for a double linefeed in the x-default value. + XMP_Assert ( xdIndex == 0 ); + std::string & defaultValue = dcRightsArray->children[xdIndex]->value; + XMP_Index lfPos = defaultValue.find ( kDoubleLF ); + + if ( lfPos < 0 ) { + + // 3A. No double LF, compare whole values. + if ( dmValue != defaultValue ) { + // 3A2. Append the xmpDM:copyright to the x-default item. + defaultValue += kDoubleLF; + defaultValue += dmValue; + } + + } else { + + // 3B. Has double LF, compare the tail. + if ( defaultValue.compare ( lfPos+2, std::string::npos, dmValue ) != 0 ) { + // 3B2. Replace the x-default tail. + defaultValue.replace ( lfPos+2, std::string::npos, dmValue ); + } + + } + + } + + // 4. Get rid of the xmpDM:copyright. + xmp->DeleteProperty ( kXMP_NS_DM, "copyright" ); + + } catch ( ... ) { + // Don't let failures (like a bad dc:rights form) stop other cleanup. + } + +} // MigrateAudioCopyright + + +// ------------------------------------------------------------------------------------------------- +// RepairAltText +// ------------- +// +// Make sure that the array is well-formed AltText. Each item must be simple and have an xml:lang +// qualifier. If repairs are needed, keep simple non-empty items by adding the xml:lang. + +static void +RepairAltText ( XMP_Node & tree, XMP_StringPtr schemaNS, XMP_StringPtr arrayName ) +{ + XMP_Node * schemaNode = FindSchemaNode ( &tree, schemaNS, kXMP_ExistingOnly ); + if ( schemaNode == 0 ) return; + + XMP_Node * arrayNode = FindChildNode ( schemaNode, arrayName, kXMP_ExistingOnly ); + if ( (arrayNode == 0) || XMP_ArrayIsAltText ( arrayNode->options ) ) return; // Already OK. + + if ( ! XMP_PropIsArray ( arrayNode->options ) ) return; // ! Not even an array, leave it alone. + // *** Should probably change simple values to LangAlt with 'x-default' item. + + arrayNode->options |= (kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText); + + for ( int i = arrayNode->children.size()-1; i >= 0; --i ) { // ! Need a signed index type. + + XMP_Node * currChild = arrayNode->children[i]; + + if ( ! XMP_PropIsSimple ( currChild->options ) ) { + + // Delete non-simple children. + delete ( currChild ); + arrayNode->children.erase ( arrayNode->children.begin() + i ); + + } else if ( ! XMP_PropHasLang ( currChild->options ) ) { + + if ( currChild->value.empty() ) { + + // Delete empty valued children that have no xml:lang. + delete ( currChild ); + arrayNode->children.erase ( arrayNode->children.begin() + i ); + + } else { + + // Add an xml:lang qualifier with the value "x-repair". + XMP_Node * repairLang = new XMP_Node ( currChild, "xml:lang", "x-repair", kXMP_PropIsQualifier ); + if ( currChild->qualifiers.empty() ) { + currChild->qualifiers.push_back ( repairLang ); + } else { + currChild->qualifiers.insert ( currChild->qualifiers.begin(), repairLang ); + } + currChild->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); + + } + + } + + } + +} // RepairAltText + + +// ------------------------------------------------------------------------------------------------- +// TouchUpDataModel +// ---------------- + +static void +TouchUpDataModel ( XMPMeta * xmp ) +{ + XMP_Node & tree = xmp->tree; + + // Do special case touch ups for certain schema. + + XMP_Node * currSchema = 0; + + currSchema = FindSchemaNode ( &tree, kXMP_NS_EXIF, kXMP_ExistingOnly ); + if ( currSchema != 0 ) { + + // Do a special case fix for exif:GPSTimeStamp. + XMP_Node * gpsDateTime = FindChildNode ( currSchema, "exif:GPSTimeStamp", kXMP_ExistingOnly ); + if ( gpsDateTime != 0 ) FixGPSTimeStamp ( currSchema, gpsDateTime ); + + // *** Should probably have RepairAltText change simple values to LangAlt with 'x-default' item. + // *** For now just do this for exif:UserComment, the one case we know about, late in cycle fix. + XMP_Node * userComment = FindChildNode ( currSchema, "exif:UserComment", kXMP_ExistingOnly ); + if ( (userComment != 0) && XMP_PropIsSimple ( userComment->options ) ) { + XMP_Node * newChild = new XMP_Node ( userComment, kXMP_ArrayItemName, + userComment->value.c_str(), userComment->options ); + newChild->qualifiers.swap ( userComment->qualifiers ); + if ( ! XMP_PropHasLang ( newChild->options ) ) { + XMP_Node * langQual = new XMP_Node ( newChild, "xml:lang", "x-default", kXMP_PropIsQualifier ); + newChild->qualifiers.insert ( newChild->qualifiers.begin(), langQual ); + newChild->options |= (kXMP_PropHasQualifiers | kXMP_PropHasLang); + } + userComment->value.erase(); + userComment->options = kXMP_PropArrayFormMask; // ! Happens to have all the right bits. + userComment->children.push_back ( newChild ); + } + + } + + currSchema = FindSchemaNode ( &tree, kXMP_NS_DM, kXMP_ExistingOnly ); + if ( currSchema != 0 ) { + // Do a special case migration of xmpDM:copyright to dc:rights['x-default']. Do this before + // the dc: touch up since it can affect the dc: schema. + XMP_Node * dmCopyright = FindChildNode ( currSchema, "xmpDM:copyright", kXMP_ExistingOnly ); + if ( dmCopyright != 0 ) MigrateAudioCopyright ( xmp, dmCopyright ); + } + + currSchema = FindSchemaNode ( &tree, kXMP_NS_DC, kXMP_ExistingOnly ); + if ( currSchema != 0 ) { + // Do a special case fix for dc:subject, make sure it is an unordered array. + XMP_Node * dcSubject = FindChildNode ( currSchema, "dc:subject", kXMP_ExistingOnly ); + if ( dcSubject != 0 ) { + XMP_OptionBits keepMask = static_cast(~(kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText)); + dcSubject->options &= keepMask; // Make sure any ordered array bits are clear. + } + } + + // Fix any broken AltText arrays that we know about. + + RepairAltText ( tree, kXMP_NS_DC, "dc:description" ); // ! Note inclusion of prefixes for direct node lookup! + RepairAltText ( tree, kXMP_NS_DC, "dc:rights" ); + RepairAltText ( tree, kXMP_NS_DC, "dc:title" ); + RepairAltText ( tree, kXMP_NS_XMP_Rights, "xmpRights:UsageTerms" ); + RepairAltText ( tree, kXMP_NS_EXIF, "exif:UserComment" ); + + // Tweak old XMP: Move an instance ID from rdf:about to the xmpMM:InstanceID property. An old + // instance ID usually looks like "uuid:bac965c4-9d87-11d9-9a30-000d936b79c4", plus InDesign + // 3.0 wrote them like "bac965c4-9d87-11d9-9a30-000d936b79c4". If the name looks like a UUID + // simply move it to xmpMM:InstanceID, don't worry about any existing xmpMM:InstanceID. Both + // will only be present when a newer file with the xmpMM:InstanceID property is updated by an + // old app that uses rdf:about. + + if ( ! tree.name.empty() ) { + + bool nameIsUUID = false; + XMP_StringPtr nameStr = tree.name.c_str(); + + if ( XMP_LitNMatch ( nameStr, "uuid:", 5 ) ) { + + nameIsUUID = true; + + } else if ( tree.name.size() == 36 ) { + + nameIsUUID = true; // ! Assume true, we'll set it to false below if not. + for ( int i = 0; i < 36; ++i ) { + char ch = nameStr[i]; + if ( ch == '-' ) { + if ( (i == 8) || (i == 13) || (i == 18) || (i == 23) ) continue; + nameIsUUID = false; + break; + } else { + if ( (('0' <= ch) && (ch <= '9')) || (('a' <= ch) && (ch <= 'z')) ) continue; + nameIsUUID = false; + break; + } + } + + } + + if ( nameIsUUID ) { + + XMP_ExpandedXPath expPath; + ExpandXPath ( kXMP_NS_XMP_MM, "InstanceID", &expPath ); + XMP_Node * idNode = FindNode ( &tree, expPath, kXMP_CreateNodes, 0 ); + if ( idNode == 0 ) XMP_Throw ( "Failure creating xmpMM:InstanceID", kXMPErr_InternalFailure ); + + idNode->options = 0; // Clobber any existing xmpMM:InstanceID. + idNode->value = tree.name; + idNode->RemoveChildren(); + idNode->RemoveQualifiers(); + + tree.name.erase(); + + } + + } + +} // TouchUpDataModel + + +// ------------------------------------------------------------------------------------------------- +// DetermineInputEncoding +// ---------------------- +// +// Try to determine the character encoding, making a guess if the input is too short. We make some +// simplifying assumtions: the first character must be U+FEFF or ASCII, U+0000 is not allowed. The +// XML 1.1 spec is even more strict, UTF-16 XML documents must begin with U+FEFF, and the first +// "real" character must be '<'. Ignoring the XML declaration, the first XML character could be '<', +// space, tab, CR, or LF. +// +// The possible input sequences are: +// +// Cases with U+FEFF +// EF BB BF -- - UTF-8 +// FE FF -- -- - Big endian UTF-16 +// 00 00 FE FF - Big endian UTF 32 +// FF FE 00 00 - Little endian UTF-32 +// FF FE -- -- - Little endian UTF-16 +// +// Cases with ASCII +// nn mm -- -- - UTF-8 - +// 00 00 00 nn - Big endian UTF-32 +// 00 nn -- -- - Big endian UTF-16 +// nn 00 00 00 - Little endian UTF-32 +// nn 00 -- -- - Little endian UTF-16 +// +// ! We don't check for full patterns, or for errors. We just check enough to determine what the +// ! only possible (or reasonable) case would be. + +static XMP_OptionBits +DetermineInputEncoding ( const XMP_Uns8 * buffer, size_t length ) +{ + if ( length < 2 ) return kXMP_EncodeUTF8; + + XMP_Uns8 * uniChar = (XMP_Uns8*)buffer; // ! Make sure comparisons are unsigned. + + if ( uniChar[0] == 0 ) { + + // These cases are: + // 00 nn -- -- - Big endian UTF-16 + // 00 00 00 nn - Big endian UTF-32 + // 00 00 FE FF - Big endian UTF 32 + + if ( (length < 4) || (uniChar[1] != 0) ) return kXMP_EncodeUTF16Big; + return kXMP_EncodeUTF32Big; + + } else if ( uniChar[0] < 0x80 ) { + + // These cases are: + // nn mm -- -- - UTF-8, includes EF BB BF case + // nn 00 00 00 - Little endian UTF-32 + // nn 00 -- -- - Little endian UTF-16 + + if ( uniChar[1] != 0 ) return kXMP_EncodeUTF8; + if ( (length < 4) || (uniChar[2] != 0) ) return kXMP_EncodeUTF16Little; + return kXMP_EncodeUTF32Little; + + } else { + + // These cases are: + // EF BB BF -- - UTF-8 + // FE FF -- -- - Big endian UTF-16 + // FF FE 00 00 - Little endian UTF-32 + // FF FE -- -- - Little endian UTF-16 + + if ( uniChar[0] == 0xEF ) return kXMP_EncodeUTF8; + if ( uniChar[0] == 0xFE ) return kXMP_EncodeUTF16Big; + if ( (length < 4) || (uniChar[2] != 0) ) return kXMP_EncodeUTF16Little; + return kXMP_EncodeUTF32Little; + + } + +} // DetermineInputEncoding + + +// ------------------------------------------------------------------------------------------------- +// CountUTF8 +// --------- +// +// Look for a valid multi-byte UTF-8 sequence and return its length. Returns 0 for an invalid UTF-8 +// sequence. Returns a negative value for a partial valid sequence at the end of the buffer. +// +// The checking is not strict. We simply count the number of high order 1 bits in the first byte, +// then look for n-1 following bytes whose high order 2 bits are 1 and 0. We do not check for a +// minimal length representation of the codepoint, or that the codepoint is defined by Unicode. + +static int +CountUTF8 ( const XMP_Uns8 * charStart, const XMP_Uns8 * bufEnd ) +{ + XMP_Assert ( charStart < bufEnd ); // Catch this in debug builds. + if ( charStart >= bufEnd ) return 0; // Don't run-on in release builds. + if ( (*charStart & 0xC0) != 0xC0 ) return 0; // Must have at least 2 high bits set. + + int byteCount = 2; + XMP_Uns8 firstByte = *charStart; + for ( firstByte = firstByte << 2; (firstByte & 0x80) != 0; firstByte = firstByte << 1 ) ++byteCount; + + if ( (charStart + byteCount) > bufEnd ) return -byteCount; + + for ( int i = 1; i < byteCount; ++i ) { + if ( (charStart[i] & 0xC0) != 0x80 ) return 0; + } + + return byteCount; + +} // CountUTF8 + + +// ------------------------------------------------------------------------------------------------- +// CountControlEscape +// ------------------ +// +// Look for a numeric escape sequence for a "prohibited" ASCII control character. These are 0x7F, +// and the range 0x00..0x1F except for tab/LF/CR. Return 0 if this is definitely not a numeric +// escape, the length of the escape if found, or a negative value for a partial escape. + +static int +CountControlEscape ( const XMP_Uns8 * escStart, const XMP_Uns8 * bufEnd ) +{ + XMP_Assert ( escStart < bufEnd ); // Catch this in debug builds. + if ( escStart >= bufEnd ) return 0; // Don't run-on in release builds. + XMP_Assert ( *escStart == '&' ); + + size_t tailLen = bufEnd - escStart; + if ( tailLen < 5 ) return -1; // Don't need a more thorough check, we'll catch it on the next pass. + + if ( strncmp ( (char*)escStart, "&#x", 3 ) != 0 ) return 0; + + XMP_Uns8 escValue = 0; + const XMP_Uns8 * escPos = escStart + 3; + + if ( ('0' <= *escPos) && (*escPos <= '9') ) { + escValue = *escPos - '0'; + ++escPos; + } else if ( ('A' <= *escPos) && (*escPos <= 'F') ) { + escValue = *escPos - 'A' + 10; + ++escPos; + } else if ( ('a' <= *escPos) && (*escPos <= 'f') ) { + escValue = *escPos - 'a' + 10; + ++escPos; + } + + if ( ('0' <= *escPos) && (*escPos <= '9') ) { + escValue = (escValue << 4) + (*escPos - '0'); + ++escPos; + } else if ( ('A' <= *escPos) && (*escPos <= 'F') ) { + escValue = (escValue << 4) + (*escPos - 'A' + 10); + ++escPos; + } else if ( ('a' <= *escPos) && (*escPos <= 'f') ) { + escValue = (escValue << 4) + (*escPos - 'a' + 10); + ++escPos; + } + + if ( escPos == bufEnd ) return -1; // Partial escape. + if ( *escPos != ';' ) return 0; + + size_t escLen = escPos - escStart + 1; + if ( escLen < 5 ) return 0; // ! Catch "&#x;". + + if ( (escValue == kTab) || (escValue == kLF) || (escValue == kCR) ) return 0; // An allowed escape. + + return escLen; // Found a full "prohibited" numeric escape. + +} // CountControlEscape + + +// ------------------------------------------------------------------------------------------------- +// ProcessUTF8Portion +// ------------------ +// +// Early versions of the XMP spec mentioned allowing ISO Latin-1 input. There are also problems with +// some clients placing ASCII control characters within XMP values. This is an XML problem, the XML +// spec only allows tab (0x09), LF (0x0A), and CR (0x0D) from the 0x00..0x1F range. As a concession +// to this we scan 8-bit input for byte sequences that are not valid UTF-8 or in the 0x00..0x1F +// range and replace each byte as follows: +// 0x00..0x1F - Replace with a space, except for tab, CR, and LF. +// 0x7F - Replace with a space. This is ASCII Delete, not allowed by ISO Latin-1. +// 0x80..0x9F - Replace with the UTF-8 for a corresponding Unicode character. +// 0xA0..0XFF - Replace with the UTF-8 for a corresponding Unicode character. +// +// The 0x80..0x9F range is not defined by Latin-1. But the Windows 1252 code page defines these and +// is otherwise the same as Latin-1. +// +// For at least historical compatibility reasons we also find and replace singly escaped ASCII +// control characters. The Expat parser we're using does not allow numeric escapes like "". +// The XML spec is clear that raw controls are not allowed (in the RestrictedChar set), but it isn't +// as clear about numeric escapes for them. At any rate, Expat complains, so we treat the numeric +// escapes like raw characters and replace them with a space. +// +// We check for 1 or 2 hex digits (" " or " ") and upper or lower case (" " or " "). +// The full escape sequence is 5 or 6 bytes. + +static size_t +ProcessUTF8Portion ( XMLParserAdapter * xmlParser, + const XMP_Uns8 * buffer, + size_t length, + bool last ) +{ + const XMP_Uns8 * bufEnd = buffer + length; + + const XMP_Uns8 * spanStart = buffer; + const XMP_Uns8 * spanEnd; + + for ( spanEnd = spanStart; spanEnd < bufEnd; ++spanEnd ) { + + if ( (0x20 <= *spanEnd) && (*spanEnd <= 0x7E) && (*spanEnd != '&') ) continue; // A regular ASCII character. + + if ( *spanEnd >= 0x80 ) { + + // See if this is a multi-byte UTF-8 sequence, or a Latin-1 character to replace. + + int uniLen = CountUTF8 ( spanEnd, bufEnd ); + + if ( uniLen > 0 ) { + + // A valid UTF-8 character, keep it as-is. + spanEnd += uniLen - 1; // ! The loop increment will put back the +1. + + } else if ( (uniLen < 0) && (! last) ) { + + // Have a partial UTF-8 character at the end of the buffer and more input coming. + xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); + return (spanEnd - buffer); + + } else { + + // Not a valid UTF-8 sequence. Replace the first byte with the Latin-1 equivalent. + xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); + const char * replacement = kReplaceLatin1 [ *spanEnd - 0x80 ]; + xmlParser->ParseBuffer ( replacement, strlen ( replacement ), false ); + spanStart = spanEnd + 1; // ! The loop increment will do "spanEnd = spanStart". + + } + + } else if ( (*spanEnd < 0x20) || (*spanEnd == 0x7F) ) { + + // Replace ASCII controls other than tab, LF, and CR with a space. + + if ( (*spanEnd == kTab) || (*spanEnd == kLF) || (*spanEnd == kCR) ) continue; + + xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); + xmlParser->ParseBuffer ( " ", 1, false ); + spanStart = spanEnd + 1; // ! The loop increment will do "spanEnd = spanStart". + + } else { + + // See if this is a numeric escape sequence for a prohibited ASCII control. + + XMP_Assert ( *spanEnd == '&' ); + int escLen = CountControlEscape ( spanEnd, bufEnd ); + + if ( escLen < 0 ) { + + // Have a partial numeric escape in this buffer, wait for more input. + if ( last ) continue; // No more buffers, not an escape, absorb as normal input. + xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); + return (spanEnd - buffer); + + } else if ( escLen > 0 ) { + + // Have a complete numeric escape to replace. + xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); + xmlParser->ParseBuffer ( " ", 1, false ); + spanStart = spanEnd + escLen; + spanEnd = spanStart - 1; // ! The loop continuation will increment spanEnd! + + } + + } + + } + + XMP_Assert ( spanEnd == bufEnd ); + + if ( spanStart < bufEnd ) xmlParser->ParseBuffer ( spanStart, (spanEnd - spanStart), false ); + if ( last ) xmlParser->ParseBuffer ( " ", 1, true ); + + return length; + +} // ProcessUTF8Portion + + +// ------------------------------------------------------------------------------------------------- +// ParseFromBuffer +// --------------- +// +// Although most clients will probably parse everything in one call, we have a buffered API model +// and need to support even the extreme case of 1 byte at a time parsing. This is considerably +// complicated by some special cases for 8-bit input. Because of this, the first thing we do is +// determine whether the input is 8-bit, UTF-16, or UTF-32. +// +// Both the 8-bit special cases and the encoding determination are easier to do with 8 bytes or more +// of input. The XMLParserAdapter class has a pending-input buffer for this. At the start of parsing +// we (moght) try to fill this buffer before determining the input character encoding. After that, +// we (might) use this buffer with the current input to simplify the logic in Process8BitInput. The +// "(might)" part means that we don't actually use the pending-input buffer unless we have to. In +// particular, the common case of single-buffer parsing won't use it. + +void +XMPMeta::ParseFromBuffer ( XMP_StringPtr buffer, + XMP_StringLen xmpSize, + XMP_OptionBits options ) +{ + if ( (buffer == 0) && (xmpSize != 0) ) XMP_Throw ( "Null parse buffer", kXMPErr_BadParam ); + if ( xmpSize == kXMP_UseNullTermination ) xmpSize = strlen ( buffer ); + + const bool lastClientCall = ((options & kXMP_ParseMoreBuffers) == 0); // *** Could use FlagIsSet & FlagIsClear macros. + + this->tree.ClearNode(); // Make sure the target XMP object is totally empty. + + if ( this->xmlParser == 0 ) { + if ( (xmpSize == 0) && lastClientCall ) return; // Tolerate empty parse. Expat complains if there are no XML elements. + this->xmlParser = XMP_NewExpatAdapter(); + } + + XMLParserAdapter& parser = *this->xmlParser; + + #if 0 // XMP_DebugBuild + if ( parser.parseLog != 0 ) { + char message [200]; // AUDIT: Using sizeof(message) below for snprintf length is safe. + snprintf ( message, sizeof(message), "", // AUDIT: See above. + xmpSize, options, (lastClientCall ? " (last)" : "") ); + fwrite ( message, 1, strlen(message), parser.parseLog ); + fflush ( parser.parseLog ); + } + #endif + + try { // Cleanup the tree and xmlParser if anything fails. + + // Determine the character encoding before doing any real parsing. This is needed to do the + // 8-bit special processing. + + if ( parser.charEncoding == XMP_OptionBits(-1) ) { + + if ( (parser.pendingCount == 0) && (xmpSize >= kXMLPendingInputMax) ) { + + // This ought to be the common case, the first buffer is big enough. + parser.charEncoding = DetermineInputEncoding ( (XMP_Uns8*)buffer, xmpSize ); + + } else { + + // Try to fill the pendingInput buffer before calling DetermineInputEncoding. + + size_t pendingOverlap = kXMLPendingInputMax - parser.pendingCount; + if ( pendingOverlap > xmpSize ) pendingOverlap = xmpSize; + + memcpy ( &parser.pendingInput[parser.pendingCount], buffer, pendingOverlap ); // AUDIT: Count is safe. + buffer += pendingOverlap; + xmpSize -= pendingOverlap; + parser.pendingCount += pendingOverlap; + + if ( (! lastClientCall) && (parser.pendingCount < kXMLPendingInputMax) ) return; + parser.charEncoding = DetermineInputEncoding ( parser.pendingInput, parser.pendingCount ); + + #if Trace_ParsingHackery + fprintf ( stderr, "XMP Character encoding is %d\n", parser.charEncoding ); + #endif + + } + + } + + // We have the character encoding. Process UTF-16 and UTF-32 as is. UTF-8 needs special + // handling to take care of things like ISO Latin-1 or unescaped ASCII controls. + + XMP_Assert ( parser.charEncoding != XMP_OptionBits(-1) ); + + if ( parser.charEncoding != kXMP_EncodeUTF8 ) { + + if ( parser.pendingCount > 0 ) { + // Might have pendingInput from the above portion to determine the character encoding. + parser.ParseBuffer ( parser.pendingInput, parser.pendingCount, false ); + } + parser.ParseBuffer ( buffer, xmpSize, lastClientCall ); + + } else { + + #if Trace_ParsingHackery + fprintf ( stderr, "Parsing %d bytes @ %.8X, %s, %d pending, context: %.8s\n", + xmpSize, buffer, (lastClientCall ? "last" : "not last"), parser.pendingCount, buffer ); + #endif + + // The UTF-8 processing is a bit complex due to the need to tolerate ISO Latin-1 input. + // This is done by scanning the input for byte sequences that are not valid UTF-8, + // assuming they are Latin-1 characters in the range 0x80..0xFF. This requires saving a + // pending input buffer to handle partial UTF-8 sequences at the end of a buffer. + + while ( parser.pendingCount > 0 ) { + + // We've got some leftover input, process it first then continue with the current + // buffer. Try to fill the pendingInput buffer before parsing further. We use a loop + // for weird edge cases like a 2 byte input buffer, using 1 byte for pendingInput, + // then having a partial UTF-8 end and need to absorb more. + + size_t pendingOverlap = kXMLPendingInputMax - parser.pendingCount; + if ( pendingOverlap > xmpSize ) pendingOverlap = xmpSize; + + memcpy ( &parser.pendingInput[parser.pendingCount], buffer, pendingOverlap ); // AUDIT: Count is safe. + parser.pendingCount += pendingOverlap; + buffer += pendingOverlap; + xmpSize -= pendingOverlap; + + if ( (! lastClientCall) && (parser.pendingCount < kXMLPendingInputMax) ) return; + size_t bytesDone = ProcessUTF8Portion ( &parser, parser.pendingInput, parser.pendingCount, lastClientCall ); + size_t bytesLeft = parser.pendingCount - bytesDone; + + #if Trace_ParsingHackery + fprintf ( stderr, " ProcessUTF8Portion handled %d pending bytes\n", bytesDone ); + #endif + + if ( bytesDone == parser.pendingCount ) { + + // Done with all of the pending input, move on to the current buffer. + parser.pendingCount = 0; + + } else if ( bytesLeft <= pendingOverlap ) { + + // The leftover pending input all came from the current buffer. Exit this loop. + buffer -= bytesLeft; + xmpSize += bytesLeft; + parser.pendingCount = 0; + + } else if ( xmpSize > 0 ) { + + // Pull more of the current buffer into the pending input and try again. + // Backup by this pass's overlap so the loop entry code runs OK. + parser.pendingCount -= pendingOverlap; + buffer -= pendingOverlap; + xmpSize += pendingOverlap; + + } else { + + // There is no more of the current buffer. Wait for more. Partial sequences at + // the end of the last buffer should be treated as Latin-1 by ProcessUTF8Portion. + XMP_Assert ( ! lastClientCall ); + parser.pendingCount = bytesLeft; + memcpy ( &parser.pendingInput[0], &parser.pendingInput[bytesDone], bytesLeft ); // AUDIT: Count is safe. + return; + + } + + } + + // Done with the pending input, process the current buffer. + + size_t bytesDone = ProcessUTF8Portion ( &parser, (XMP_Uns8*)buffer, xmpSize, lastClientCall ); + + #if Trace_ParsingHackery + fprintf ( stderr, " ProcessUTF8Portion handled %d additional bytes\n", bytesDone ); + #endif + + if ( bytesDone < xmpSize ) { + + XMP_Assert ( ! lastClientCall ); + size_t bytesLeft = xmpSize - bytesDone; + if ( bytesLeft > kXMLPendingInputMax ) XMP_Throw ( "Parser bytesLeft too large", kXMPErr_InternalFailure ); + + memcpy ( parser.pendingInput, &buffer[bytesDone], bytesLeft ); // AUDIT: Count is safe. + parser.pendingCount = bytesLeft; + return; // Wait for the next buffer. + + } + + } + + if ( lastClientCall ) { + + #if XMP_DebugBuild && DumpXMLParseTree + if ( parser.parseLog == 0 ) parser.parseLog = stdout; + DumpXMLTree ( parser.parseLog, parser.tree, 0 ); + #endif + + const XML_Node * xmlRoot = FindRootNode ( this, *this->xmlParser, options ); + + if ( xmlRoot != 0 ) { + + ProcessRDF ( &this->tree, *xmlRoot, options ); + NormalizeDCArrays ( &this->tree ); + if ( this->tree.options & kXMP_PropHasAliases ) MoveExplicitAliases ( &this->tree, options ); + TouchUpDataModel ( this ); + + // Delete empty schema nodes. Do this last, other cleanup can make empty schema. + size_t schemaNum = 0; + while ( schemaNum < this->tree.children.size() ) { + XMP_Node * currSchema = this->tree.children[schemaNum]; + if ( currSchema->children.size() > 0 ) { + ++schemaNum; + } else { + delete this->tree.children[schemaNum]; // ! Delete the schema node itself. + this->tree.children.erase ( this->tree.children.begin() + schemaNum ); + } + } + + } + + delete this->xmlParser; + this->xmlParser = 0; + + } + + } catch ( ... ) { + + delete this->xmlParser; + this->xmlParser = 0; + prevTkVer = 0; + this->tree.ClearNode(); + throw; + + } + +} // ParseFromBuffer + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Serialize.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Serialize.cpp new file mode 100644 index 0000000..8cc96ae --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta-Serialize.cpp @@ -0,0 +1,1343 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// +// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of +// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPMeta.hpp" + +#include "XMP_Version.h" +#include "UnicodeInlines.incl_cpp" +#include "UnicodeConversions.hpp" + +#if XMP_DebugBuild + #include +#endif + +using namespace std; + +#if XMP_WinBuild +#ifdef _MSC_VER + #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) +#endif +#endif + +// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros +// *** Add debug codegen checks, e.g. that typical masking operations really work +// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch + + +// ================================================================================================= +// Local Types and Constants +// ========================= + +static const char * kPacketHeader = ""; +static const char * kPacketTrailer = ""; // ! The w/r is at [size-4]. + +static const char * kRDF_XMPMetaStart = ""; +static const char * kRDF_RDFEnd = ""; + +static const char * kRDF_SchemaStart = ""; + +static const char * kRDF_StructStart = ""; +static const char * kRDF_StructEnd = ""; + +static const char * kRDF_BagStart = ""; + +static const char * kRDF_ItemStart = ""; + +static const char * kRDF_ValueStart = ""; + + +// ================================================================================================= +// Static Variables +// ================ + + +// ================================================================================================= +// Local Utilities +// =============== + + +// ------------------------------------------------------------------------------------------------- +// EstimateRDFSize +// --------------- + +// *** Pull the strlen(kXyz) calls into constants. + +static size_t +EstimateRDFSize ( const XMP_Node * currNode, XMP_Index indent, size_t indentLen ) +{ + size_t outputLen = 2 * (indent*indentLen + currNode->name.size() + 4); // The property element tags. + + if ( ! currNode->qualifiers.empty() ) { + // This node has qualifiers, assume it is written using rdf:value and estimate the qualifiers. + + indent += 2; // Everything else is indented inside the rdf:Description element. + outputLen += 2 * ((indent-1)*indentLen + strlen(kRDF_StructStart) + 2); // The rdf:Description tags. + outputLen += 2 * (indent*indentLen + strlen(kRDF_ValueStart) + 2); // The rdf:value tags. + + for ( size_t qualNum = 0, qualLim = currNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + const XMP_Node * currQual = currNode->qualifiers[qualNum]; + outputLen += EstimateRDFSize ( currQual, indent, indentLen ); + } + + } + + if ( currNode->options & kXMP_PropValueIsStruct ) { + indent += 1; + outputLen += 2 * (indent*indentLen + strlen(kRDF_StructStart) + 2); // The rdf:Description tags. + } else if ( currNode->options & kXMP_PropValueIsArray ) { + indent += 2; + outputLen += 2 * ((indent-1)*indentLen + strlen(kRDF_BagStart) + 2); // The rdf:Bag/Seq/Alt tags. + outputLen += 2 * currNode->children.size() * (strlen(kRDF_ItemStart) + 2); // The rdf:li tags, indent counted in children. + } else if ( ! (currNode->options & kXMP_SchemaNode) ) { + outputLen += currNode->value.size(); // This is a leaf value node. + } + + for ( size_t childNum = 0, childLim = currNode->children.size(); childNum < childLim; ++childNum ) { + const XMP_Node * currChild = currNode->children[childNum]; + outputLen += EstimateRDFSize ( currChild, indent+1, indentLen ); + } + + return outputLen; + +} // EstimateRDFSize + + +// ------------------------------------------------------------------------------------------------- +// DeclareOneNamespace +// ------------------- + +static void +DeclareOneNamespace ( const XMP_VarString & nsPrefix, + const XMP_VarString & nsURI, + XMP_VarString & usedNS, // ! A catenation of the prefixes with colons. + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent ) +{ + size_t nsPos = usedNS.find ( nsPrefix ); + + if ( nsPos == XMP_VarString::npos ) { + + outputStr += newline; + for ( ; indent > 0; --indent ) outputStr += indentStr; + outputStr += "xmlns:"; + outputStr += nsPrefix; + outputStr[outputStr.size()-1] = '='; // Change the colon to =. + outputStr += '"'; + outputStr += nsURI; + outputStr += '"'; + + usedNS += nsPrefix; + + } + +} // DeclareOneNamespace + + +// ------------------------------------------------------------------------------------------------- +// DeclareElemNamespace +// -------------------- + +static void +DeclareElemNamespace ( const XMP_VarString & elemName, + XMP_VarString & usedNS, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent ) +{ + size_t colonPos = elemName.find ( ':' ); + + if ( colonPos != XMP_VarString::npos ) { + XMP_VarString nsPrefix ( elemName.substr ( 0, colonPos+1 ) ); + XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( nsPrefix ); + XMP_Enforce ( prefixPos != sNamespacePrefixToURIMap->end() ); + DeclareOneNamespace ( nsPrefix, prefixPos->second, usedNS, outputStr, newline, indentStr, indent ); + } + +} // DeclareElemNamespace + + +// ------------------------------------------------------------------------------------------------- +// DeclareUsedNamespaces +// --------------------- + +// ??? Should iterators be passed by reference to avoid temp copies? + +static void +DeclareUsedNamespaces ( const XMP_Node * currNode, + XMP_VarString & usedNS, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent ) +{ + + if ( currNode->options & kXMP_SchemaNode ) { + // The schema node name is the URI, the value is the prefix. + DeclareOneNamespace ( currNode->value, currNode->name, usedNS, outputStr, newline, indentStr, indent ); + } else if ( currNode->options & kXMP_PropValueIsStruct ) { + for ( size_t fieldNum = 0, fieldLim = currNode->children.size(); fieldNum < fieldLim; ++fieldNum ) { + const XMP_Node * currField = currNode->children[fieldNum]; + DeclareElemNamespace ( currField->name, usedNS, outputStr, newline, indentStr, indent ); + } + } + + for ( size_t childNum = 0, childLim = currNode->children.size(); childNum < childLim; ++childNum ) { + const XMP_Node * currChild = currNode->children[childNum]; + DeclareUsedNamespaces ( currChild, usedNS, outputStr, newline, indentStr, indent ); + } + + for ( size_t qualNum = 0, qualLim = currNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + const XMP_Node * currQual = currNode->qualifiers[qualNum]; + DeclareElemNamespace ( currQual->name, usedNS, outputStr, newline, indentStr, indent ); + DeclareUsedNamespaces ( currQual, usedNS, outputStr, newline, indentStr, indent ); + } + +} // DeclareUsedNamespaces + +// ------------------------------------------------------------------------------------------------- +// EmitRDFArrayTag +// --------------- + +// ??? Should iterators be passed by reference to avoid temp copies? + +enum { + kIsStartTag = true, + kIsEndTag = false +}; + +static void +EmitRDFArrayTag ( XMP_OptionBits arrayForm, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent, + XMP_Index arraySize, + bool isStartTag ) +{ + if ( (! isStartTag) && (arraySize == 0) ) return; + + for ( XMP_Index level = indent; level > 0; --level ) outputStr += indentStr; + if ( isStartTag ) { + outputStr += "', and ASCII controls (tab, LF, CR). In +// addition, '"' is escaped for attributes. For efficiency, this is done in a double loop. The outer +// loop makes sure the whole value is processed. The inner loop does a contiguous unescaped run +// followed by one escaped character (if we're not at the end). +// +// We depend on parsing and SetProperty logic to make sure there are no invalid ASCII controls in +// the XMP values. The XML spec only allows tab, LF, and CR. Others are not even allowed as +// numeric escape sequences. + +enum { + kForAttribute = true, + kForElement = false +}; + +static void +AppendNodeValue ( XMP_VarString & outputStr, const XMP_VarString & value, bool forAttribute ) +{ + + unsigned char * runStart = (unsigned char *) value.c_str(); + unsigned char * runLimit = runStart + value.size(); + unsigned char * runEnd; + unsigned char ch; + + while ( runStart < runLimit ) { + + for ( runEnd = runStart; runEnd < runLimit; ++runEnd ) { + ch = *runEnd; + if ( forAttribute && (ch == '"') ) break; + if ( (ch < 0x20) || (ch == '&') || (ch == '<') || (ch == '>') ) break; + } + + outputStr.append ( (char *) runStart, (runEnd - runStart) ); + + if ( runEnd < runLimit ) { + + if ( ch < 0x20 ) { + + XMP_Assert ( (ch == kTab) || (ch == kLF) || (ch == kCR) ); + + char hexBuf[16]; + memcpy ( hexBuf, "&#xn;", 5 ); + hexBuf[3] = kHexDigits[ch&0xF]; + outputStr.append ( hexBuf, 5 ); + + } else { + + if ( ch == '"' ) { + outputStr += """; + } else if ( ch == '<' ) { + outputStr += "<"; + } else if ( ch == '>' ) { + outputStr += ">"; + } else { + XMP_Assert ( ch == '&' ); + outputStr += "&"; + } + + } + + ++runEnd; + + } + + runStart = runEnd; + + } + +} // AppendNodeValue + + +// ------------------------------------------------------------------------------------------------- +// CanBeRDFAttrProp +// ---------------- + +static bool +CanBeRDFAttrProp ( const XMP_Node * propNode ) +{ + + if ( propNode->name[0] == '[' ) return false; + if ( ! propNode->qualifiers.empty() ) return false; + if ( propNode->options & kXMP_PropValueIsURI ) return false; + if ( propNode->options & kXMP_PropCompositeMask ) return false; + + return true; + +} // CanBeRDFAttrProp + + +// ------------------------------------------------------------------------------------------------- +// IsRDFAttrQualifier +// ------------------ + +static XMP_StringPtr sAttrQualifiers[] = { "xml:lang", "rdf:resource", "rdf:ID", "rdf:bagID", "rdf:nodeID", "" }; + +static bool +IsRDFAttrQualifier ( XMP_VarString qualName ) +{ + + for ( size_t i = 0; *sAttrQualifiers[i] != 0; ++i ) { + if ( qualName == sAttrQualifiers[i] ) return true; + } + + return false; + +} // IsRDFAttrQualifier + + +// ------------------------------------------------------------------------------------------------- +// SerializePrettyRDFProperty +// -------------------------- +// +// Recursively handles the "value" for a node. It does not matter if it is a top level property, a +// field of a struct, or an item of an array. The indent is that for the property element. An +// xml:lang qualifier is written as an attribute of the property start tag, not by itself forcing +// the qualified property form. The patterns below mostly ignore attribute qualifiers like xml:lang. +// Except for the one struct case, attribute qualifiers don't affect the output form. +// +// value +// +// (If no rdf:resource qualifier) +// ... Fields, same forms as top level properties +// +// +// +// +// +// or Seq or Alt +// ... Array items as rdf:li elements, same forms as top level properties +// +// +// +// +// ... Property "value" following the unqualified forms ... +// ... Qualifiers looking like named struct fields +// + +static void +SerializePrettyRDFProperty ( const XMP_Node * propNode, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent, + bool emitAsRDFValue = false ) +{ + XMP_Index level; + bool emitEndTag = true; + bool indentEndTag = true; + + XMP_OptionBits propForm = propNode->options & kXMP_PropCompositeMask; + + // ------------------------------------------------------------------------------------------ + // Determine the XML element name. Open the start tag with the name and attribute qualifiers. + + XMP_StringPtr elemName = propNode->name.c_str(); + if ( emitAsRDFValue ) { + elemName= "rdf:value"; + } else if ( *elemName == '[' ) { + elemName = "rdf:li"; + } + + for ( level = indent; level > 0; --level ) outputStr += indentStr; + outputStr += '<'; + outputStr += elemName; + + #define isCompact false + bool hasGeneralQualifiers = isCompact; // Might also become true later. + bool hasRDFResourceQual = false; + + for ( size_t qualNum = 0, qualLim = propNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + const XMP_Node * currQual = propNode->qualifiers[qualNum]; + if ( ! IsRDFAttrQualifier ( currQual->name ) ) { + hasGeneralQualifiers = true; + } else { + if ( currQual->name == "rdf:resource" ) hasRDFResourceQual = true; + if ( ! emitAsRDFValue ) { + outputStr += ' '; + outputStr += currQual->name; + outputStr += "=\""; + AppendNodeValue ( outputStr, currQual->value, kForAttribute ); + outputStr += '"'; + } + } + } + + // -------------------------------------------------------- + // Process the property according to the standard patterns. + + if ( hasGeneralQualifiers && (! emitAsRDFValue) ) { + + // ----------------------------------------------------------------------------------------- + // This node has general, non-attribute, qualifiers. Emit using the qualified property form. + // ! The value is output by a recursive call ON THE SAME NODE with emitAsRDFValue set. + + if ( hasRDFResourceQual ) { + XMP_Throw ( "Can't mix rdf:resource and general qualifiers", kXMPErr_BadRDF ); + } + + outputStr += " rdf:parseType=\"Resource\">"; + outputStr += newline; + + SerializePrettyRDFProperty ( propNode, outputStr, newline, indentStr, indent+1, true ); + + for ( size_t qualNum = 0, qualLim = propNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + const XMP_Node * currQual = propNode->qualifiers[qualNum]; + if ( IsRDFAttrQualifier ( currQual->name ) ) continue; + SerializePrettyRDFProperty ( currQual, outputStr, newline, indentStr, indent+1 ); + } + + } else { + + // -------------------------------------------------------------------- + // This node has no general qualifiers. Emit using an unqualified form. + + if ( propForm == 0 ) { + + // -------------------------- + // This is a simple property. + + if ( propNode->options & kXMP_PropValueIsURI ) { + outputStr += " rdf:resource=\""; + AppendNodeValue ( outputStr, propNode->value, kForAttribute ); + outputStr += "\"/>"; + outputStr += newline; + emitEndTag = false; + } else if ( propNode->value.empty() ) { + outputStr += "/>"; + outputStr += newline; + emitEndTag = false; + } else { + outputStr += '>'; + AppendNodeValue ( outputStr, propNode->value, kForElement ); + indentEndTag = false; + } + + } else if ( propForm & kXMP_PropValueIsArray ) { + + // This is an array. + outputStr += '>'; + outputStr += newline; + EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsStartTag ); + if ( XMP_ArrayIsAltText(propNode->options) ) NormalizeLangArray ( (XMP_Node*)propNode ); + for ( size_t childNum = 0, childLim = propNode->children.size(); childNum < childLim; ++childNum ) { + const XMP_Node * currChild = propNode->children[childNum]; + SerializePrettyRDFProperty ( currChild, outputStr, newline, indentStr, indent+2 ); + } + EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsEndTag ); + + + } else if ( ! hasRDFResourceQual ) { + + // This is a "normal" struct, use the rdf:parseType="Resource" form. + XMP_Assert ( propForm & kXMP_PropValueIsStruct ); + if ( propNode->children.size() == 0 ) { + outputStr += " rdf:parseType=\"Resource\"/>"; + outputStr += newline; + emitEndTag = false; + } else { + outputStr += " rdf:parseType=\"Resource\">"; + outputStr += newline; + for ( size_t childNum = 0, childLim = propNode->children.size(); childNum < childLim; ++childNum ) { + const XMP_Node * currChild = propNode->children[childNum]; + SerializePrettyRDFProperty ( currChild, outputStr, newline, indentStr, indent+1 ); + } + } + + } else { + + // This is a struct with an rdf:resource attribute, use the "empty property element" form. + XMP_Assert ( propForm & kXMP_PropValueIsStruct ); + for ( size_t childNum = 0, childLim = propNode->children.size(); childNum < childLim; ++childNum ) { + const XMP_Node * currChild = propNode->children[childNum]; + if ( ! CanBeRDFAttrProp ( currChild ) ) { + XMP_Throw ( "Can't mix rdf:resource and complex fields", kXMPErr_BadRDF ); + } + outputStr += newline; + for ( level = indent+1; level > 0; --level ) outputStr += indentStr; + outputStr += ' '; + outputStr += currChild->name; + outputStr += "=\""; + outputStr += currChild->value; + outputStr += '"'; + } + outputStr += "/>"; + outputStr += newline; + emitEndTag = false; + + } + + } + + // ---------------------------------- + // Emit the property element end tag. + + if ( emitEndTag ) { + if ( indentEndTag ) for ( level = indent; level > 0; --level ) outputStr += indentStr; + outputStr += "'; + outputStr += newline; + } + +} // SerializePrettyRDFProperty + + +// ------------------------------------------------------------------------------------------------- +// SerializePrettyRDFSchema +// ------------------------ +// +// Each schema's properties are written in a separate rdf:Description element. All of the necessary +// namespaces are declared in the rdf:Description element. The baseIndent is the base level for the +// entire serialization, that of the x:xmpmeta element. An xml:lang qualifier is written as an +// attribute of the property start tag, not by itself forcing the qualified property form. +// +// +// +// ... The actual properties of the schema, see SerializePrettyRDFProperty +// +// ... If alias comments are wanted +// +// + +static void +SerializePrettyRDFSchema ( const XMP_VarString & treeName, + const XMP_Node * schemaNode, + XMP_VarString & outputStr, + XMP_OptionBits options, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index baseIndent ) +{ + XMP_Assert ( schemaNode->options & kXMP_SchemaNode ); + XMP_Assert ( schemaNode->qualifiers.empty() ); + + // Write the rdf:Description start tag with the namespace declarations. + + XMP_Index level; + for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; + outputStr += kRDF_SchemaStart; + outputStr += '"'; + outputStr += treeName; + outputStr += '"'; + + size_t totalLen = 8; // Start at 8 for "xml:rdf:". + XMP_cStringMapPos currPos = sNamespacePrefixToURIMap->begin(); + XMP_cStringMapPos endPos = sNamespacePrefixToURIMap->end(); + for ( ; currPos != endPos; ++currPos ) totalLen += currPos->first.size(); + + XMP_VarString usedNS; + usedNS.reserve ( totalLen ); + usedNS = "xml:rdf:"; + DeclareUsedNamespaces ( schemaNode, usedNS, outputStr, newline, indentStr, baseIndent+4 ); + + outputStr += ">"; + outputStr += newline; + + // Write alias comments, if wanted. + + if ( options & kXMP_WriteAliasComments ) { // *** Hoist into a routine, used for Plain XMP also. + + #if 0 // *** Buggy, disable for now. + + XMP_cAliasMapPos aliasPos = sRegisteredAliasMap->begin(); + XMP_cAliasMapPos aliasEnd = sRegisteredAliasMap->end(); + + for ( ; aliasPos != aliasEnd; ++aliasPos ) { + + size_t nsPos = aliasPos->first.find ( schemaNode->value ); + if ( nsPos == XMP_VarString::npos ) continue; + XMP_Assert ( nsPos == 0 ); + + for ( level = baseIndent+3; level > 0; --level ) outputStr += indentStr; + + outputStr += ""; + outputStr += newline; + + } + + #endif + + } + + // Write each of the schema's actual properties. + for ( size_t propNum = 0, propLim = schemaNode->children.size(); propNum < propLim; ++propNum ) { + const XMP_Node * currProp = schemaNode->children[propNum]; + SerializePrettyRDFProperty ( currProp, outputStr, newline, indentStr, baseIndent+3 ); + } + + // Write the rdf:Description end tag. + for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; + outputStr += kRDF_SchemaEnd; + outputStr += newline; + +} // SerializePrettyRDFSchema + + +// ------------------------------------------------------------------------------------------------- +// SerializeCompactRDFAttrProps +// ---------------------------- +// +// Write each of the parent's simple unqualified properties as an attribute. Returns true if all +// of the properties are written as attributes. + +static bool +SerializeCompactRDFAttrProps ( const XMP_Node * parentNode, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent ) +{ + size_t prop, propLim; + bool allAreAttrs = true; + + for ( prop = 0, propLim = parentNode->children.size(); prop != propLim; ++prop ) { + + const XMP_Node * currProp = parentNode->children[prop]; + if ( ! CanBeRDFAttrProp ( currProp ) ) { + allAreAttrs = false; + continue; + } + + outputStr += newline; + for ( XMP_Index level = indent; level > 0; --level ) outputStr += indentStr; + outputStr += currProp->name; + outputStr += "=\""; + AppendNodeValue ( outputStr, currProp->value, kForAttribute ); + outputStr += '"'; + + } + + return allAreAttrs; + +} // SerializeCompactRDFAttrProps + + +// ------------------------------------------------------------------------------------------------- +// SerializeCompactRDFElemProps +// ---------------------------- +// +// Recursively handles the "value" for a node that must be written as an RDF property element. It +// does not matter if it is a top level property, a field of a struct, or an item of an array. The +// indent is that for the property element. The patterns bwlow ignore attribute qualifiers such as +// xml:lang, they don't affect the output form. +// +// +// +// +// ... The fields as elements, if none are simple and unqualified +// +// +// +// +// ... The compound or qualified fields as elements +// +// +// +// +// or Seq or Alt +// ... Array items as rdf:li elements, same forms as top level properties +// +// +// +// +// ... Property "value" following the unqualified forms ... +// ... Qualifiers looking like named struct fields +// + +// *** Consider numbered array items, but has compatibility problems. +// *** Consider qualified form with rdf:Description and attributes. + +static void +SerializeCompactRDFElemProps ( const XMP_Node * parentNode, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index indent ) +{ + XMP_Index level; + + for ( size_t prop = 0, propLim = parentNode->children.size(); prop != propLim; ++prop ) { + + const XMP_Node * propNode = parentNode->children[prop]; + if ( CanBeRDFAttrProp ( propNode ) ) continue; + + bool emitEndTag = true; + bool indentEndTag = true; + + XMP_OptionBits propForm = propNode->options & kXMP_PropCompositeMask; + + // ----------------------------------------------------------------------------------- + // Determine the XML element name, write the name part of the start tag. Look over the + // qualifiers to decide on "normal" versus "rdf:value" form. Emit the attribute + // qualifiers at the same time. + + XMP_StringPtr elemName = propNode->name.c_str(); + if ( *elemName == '[' ) elemName = "rdf:li"; + + for ( level = indent; level > 0; --level ) outputStr += indentStr; + outputStr += '<'; + outputStr += elemName; + + #define isCompact false + bool hasGeneralQualifiers = isCompact; // Might also become true later. + bool hasRDFResourceQual = false; + + for ( size_t qualNum = 0, qualLim = propNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + const XMP_Node * currQual = propNode->qualifiers[qualNum]; + if ( ! IsRDFAttrQualifier ( currQual->name ) ) { + hasGeneralQualifiers = true; + } else { + if ( currQual->name == "rdf:resource" ) hasRDFResourceQual = true; + outputStr += ' '; + outputStr += currQual->name; + outputStr += "=\""; + AppendNodeValue ( outputStr, currQual->value, kForAttribute ); + outputStr += '"'; + } + } + + // -------------------------------------------------------- + // Process the property according to the standard patterns. + + if ( hasGeneralQualifiers ) { + + // ------------------------------------------------------------------------------------- + // The node has general qualifiers, ones that can't be attributes on a property element. + // Emit using the qualified property pseudo-struct form. The value is output by a call + // to SerializePrettyRDFProperty with emitAsRDFValue set. + + // *** We're losing compactness in the calls to SerializePrettyRDFProperty. + // *** Should refactor to have SerializeCompactRDFProperty that does one node. + + outputStr += " rdf:parseType=\"Resource\">"; + outputStr += newline; + + SerializePrettyRDFProperty ( propNode, outputStr, newline, indentStr, indent+1, true ); + + size_t qualNum = 0; + size_t qualLim = propNode->qualifiers.size(); + if ( propNode->options & kXMP_PropHasLang ) ++qualNum; + + for ( ; qualNum < qualLim; ++qualNum ) { + const XMP_Node * currQual = propNode->qualifiers[qualNum]; + SerializePrettyRDFProperty ( currQual, outputStr, newline, indentStr, indent+1 ); + } + + } else { + + // -------------------------------------------------------------------- + // This node has only attribute qualifiers. Emit as a property element. + + if ( propForm == 0 ) { + + // -------------------------- + // This is a simple property. + + if ( propNode->options & kXMP_PropValueIsURI ) { + outputStr += " rdf:resource=\""; + AppendNodeValue ( outputStr, propNode->value, kForAttribute ); + outputStr += "\"/>"; + outputStr += newline; + emitEndTag = false; + } else if ( propNode->value.empty() ) { + outputStr += "/>"; + outputStr += newline; + emitEndTag = false; + } else { + outputStr += '>'; + AppendNodeValue ( outputStr, propNode->value, kForElement ); + indentEndTag = false; + } + + } else if ( propForm & kXMP_PropValueIsArray ) { + + // ----------------- + // This is an array. + + outputStr += '>'; + outputStr += newline; + EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsStartTag ); + + if ( XMP_ArrayIsAltText(propNode->options) ) NormalizeLangArray ( (XMP_Node*)propNode ); + SerializeCompactRDFElemProps ( propNode, outputStr, newline, indentStr, indent+2 ); + + EmitRDFArrayTag ( propForm, outputStr, newline, indentStr, indent+1, propNode->children.size(), kIsEndTag ); + + } else { + + // ---------------------- + // This must be a struct. + + XMP_Assert ( propForm & kXMP_PropValueIsStruct ); + + bool hasAttrFields = false; + bool hasElemFields = false; + + size_t field, fieldLim; + for ( field = 0, fieldLim = propNode->children.size(); field != fieldLim; ++field ) { + XMP_Node * currField = propNode->children[field]; + if ( CanBeRDFAttrProp ( currField ) ) { + hasAttrFields = true; + if ( hasElemFields ) break; // No sense looking further. + } else { + hasElemFields = true; + if ( hasAttrFields ) break; // No sense looking further. + } + } + + if ( hasRDFResourceQual && hasElemFields ) { + XMP_Throw ( "Can't mix rdf:resource qualifier and element fields", kXMPErr_BadRDF ); + } + + if ( propNode->children.size() == 0 ) { + + // Catch an empty struct as a special case. The case below would emit an empty + // XML element, which gets reparsed as a simple property with an empty value. + outputStr += " rdf:parseType=\"Resource\"/>"; + outputStr += newline; + emitEndTag = false; + + } else if ( ! hasElemFields ) { + + // All fields can be attributes, use the emptyPropertyElt form. + SerializeCompactRDFAttrProps ( propNode, outputStr, newline, indentStr, indent+1 ); + outputStr += "/>"; + outputStr += newline; + emitEndTag = false; + + } else if ( ! hasAttrFields ) { + + // All fields must be elements, use the parseTypeResourcePropertyElt form. + outputStr += " rdf:parseType=\"Resource\">"; + outputStr += newline; + SerializeCompactRDFElemProps ( propNode, outputStr, newline, indentStr, indent+1 ); + + } else { + + // Have a mix of attributes and elements, use an inner rdf:Description. + outputStr += '>'; + outputStr += newline; + for ( level = indent+1; level > 0; --level ) outputStr += indentStr; + outputStr += " 0; --level ) outputStr += indentStr; + outputStr += kRDF_StructEnd; + outputStr += newline; + + } + + } + + } + + // ---------------------------------- + // Emit the property element end tag. + + if ( emitEndTag ) { + if ( indentEndTag ) for ( level = indent; level > 0; --level ) outputStr += indentStr; + outputStr += "'; + outputStr += newline; + } + + } + +} // SerializeCompactRDFElemProps + + +// ------------------------------------------------------------------------------------------------- +// SerializeCompactRDFSchemas +// -------------------------- +// +// All properties from all schema are written in a single rdf:Description element, as are all of the +// necessary namespace declarations. The baseIndent is the base level for the entire serialization, +// that of the x:xmpmeta element. The x:xmpmeta and rdf:RDF elements have already been written. +// +// Top level simple unqualified properties are written as attributes of the (only) rdf:Description +// element. Structs, arrays, and qualified properties are written by SerializeCompactRDFElemProp. An +// xml:lang qualifier on a simple property prevents the attribute form. +// +// +// ... The remaining properties of the schema, see SerializeCompactRDFElemProps +// + +static void +SerializeCompactRDFSchemas ( const XMP_Node & xmpTree, + XMP_VarString & outputStr, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index baseIndent ) +{ + XMP_Index level; + size_t schema, schemaLim; + + // Begin the rdf:Description start tag. + for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; + outputStr += kRDF_SchemaStart; + outputStr += '"'; + outputStr += xmpTree.name; + outputStr += '"'; + + // Write all necessary xmlns attributes. + + size_t totalLen = 8; // Start at 8 for "xml:rdf:". + XMP_cStringMapPos currPos = sNamespacePrefixToURIMap->begin(); + XMP_cStringMapPos endPos = sNamespacePrefixToURIMap->end(); + for ( ; currPos != endPos; ++currPos ) totalLen += currPos->first.size(); + + XMP_VarString usedNS; + usedNS.reserve ( totalLen ); + usedNS = "xml:rdf:"; + + for ( schema = 0, schemaLim = xmpTree.children.size(); schema != schemaLim; ++schema ) { + const XMP_Node * currSchema = xmpTree.children[schema]; + DeclareUsedNamespaces ( currSchema, usedNS, outputStr, newline, indentStr, baseIndent+4 ); + } + + // Write the top level "attrProps" and close the rdf:Description start tag. + bool allAreAttrs = true; + for ( schema = 0, schemaLim = xmpTree.children.size(); schema != schemaLim; ++schema ) { + const XMP_Node * currSchema = xmpTree.children[schema]; + allAreAttrs &= SerializeCompactRDFAttrProps ( currSchema, outputStr, newline, indentStr, baseIndent+3 ); + } + if ( ! allAreAttrs ) { + outputStr += ">"; + outputStr += newline; + } else { + outputStr += "/>"; + outputStr += newline; + return; // ! Done if all properties in all schema are written as attributes. + } + + // Write the remaining properties for each schema. + for ( schema = 0, schemaLim = xmpTree.children.size(); schema != schemaLim; ++schema ) { + const XMP_Node * currSchema = xmpTree.children[schema]; + SerializeCompactRDFElemProps ( currSchema, outputStr, newline, indentStr, baseIndent+3 ); + } + + // Write the rdf:Description end tag. + // *** Elide the end tag if everything (all props in all schema) is an attr. + for ( level = baseIndent+2; level > 0; --level ) outputStr += indentStr; + outputStr += kRDF_SchemaEnd; + outputStr += newline; + +} // SerializeCompactRDFSchemas + + +// ------------------------------------------------------------------------------------------------- +// SerializeAsRDF +// -------------- +// +// +// +// +// +// ... The properties, see SerializePrettyRDFSchema or SerializeCompactRDFSchemas +// +// +// +// + +// *** Need to strip empty arrays? +// *** Option to strip/keep empty structs? +// *** Need to verify handling of rdf:type qualifiers in pretty and compact. +// *** Need to verify round tripping of rdf:ID and similar qualifiers, see RDF 7.2.21. +// *** Check cases of rdf:resource plus explicit attr qualifiers (like xml:lang). + +static void +SerializeAsRDF ( const XMPMeta & xmpObj, + XMP_VarString & headStr, // Everything up to the padding. + XMP_VarString & tailStr, // Everything after the padding. + XMP_OptionBits options, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index baseIndent ) +{ + const size_t treeNameLen = xmpObj.tree.name.size(); + const size_t indentLen = strlen ( indentStr ); + + // First estimate the worst case space and reserve room in the output string. This optimization + // avoids reallocating and copying the output as it grows. The initial count does not look at + // the values of properties, so it does not account for character entities, e.g. for newline. + // Since there can be a lot of these in things like the base 64 encoding of a large thumbnail, + // inflate the count by 1/4 (easy to do) to accommodate. + + // *** Need to include estimate for alias comments. + + size_t outputLen = 2 * (strlen(kPacketHeader) + strlen(kRDF_XMPMetaStart) + strlen(kRDF_RDFStart) + 3*baseIndent*indentLen); + + for ( size_t schemaNum = 0, schemaLim = xmpObj.tree.children.size(); schemaNum < schemaLim; ++schemaNum ) { + const XMP_Node * currSchema = xmpObj.tree.children[schemaNum]; + outputLen += 2*(baseIndent+2)*indentLen + strlen(kRDF_SchemaStart) + treeNameLen + strlen(kRDF_SchemaEnd) + 2; + outputLen += EstimateRDFSize ( currSchema, baseIndent+2, indentLen ); + } + + outputLen += (outputLen >> 2); // Inflate by 1/4, an empirical fudge factor. + + // Now generate the RDF into the head string as UTF-8. + + XMP_Index level; + + headStr.erase(); + headStr.reserve ( outputLen ); + + // Write the packet header PI. + if ( ! (options & kXMP_OmitPacketWrapper) ) { + for ( level = baseIndent; level > 0; --level ) headStr += indentStr; + headStr += kPacketHeader; + headStr += newline; + } + + // Write the xmpmeta element's start tag. + if ( ! (options & kXMP_OmitXMPMetaElement) ) { + for ( level = baseIndent; level > 0; --level ) headStr += indentStr; + headStr += kRDF_XMPMetaStart; + headStr += kXMPCore_VersionMessage "\">"; + headStr += newline; + } + + // Write the rdf:RDF start tag. + for ( level = baseIndent+1; level > 0; --level ) headStr += indentStr; + headStr += kRDF_RDFStart; + headStr += newline; + + // Write all of the properties. + if ( options & kXMP_UseCompactFormat ) { + SerializeCompactRDFSchemas ( xmpObj.tree, headStr, newline, indentStr, baseIndent ); + } else { + if ( xmpObj.tree.children.size() > 0 ) { + for ( size_t schemaNum = 0, schemaLim = xmpObj.tree.children.size(); schemaNum < schemaLim; ++schemaNum ) { + const XMP_Node * currSchema = xmpObj.tree.children[schemaNum]; + SerializePrettyRDFSchema ( xmpObj.tree.name, currSchema, headStr, options, newline, indentStr, baseIndent ); + } + } else { + for ( XMP_Index level = baseIndent+2; level > 0; --level ) headStr += indentStr; + headStr += kRDF_SchemaStart; // Special case an empty XMP object. + headStr += '"'; + headStr += xmpObj.tree.name; + headStr += "\"/>"; + headStr += newline; + } + } + + // Write the rdf:RDF end tag. + for ( level = baseIndent+1; level > 0; --level ) headStr += indentStr; + headStr += kRDF_RDFEnd; + headStr += newline; + + // Write the xmpmeta end tag. + if ( ! (options & kXMP_OmitXMPMetaElement) ) { + for ( level = baseIndent; level > 0; --level ) headStr += indentStr; + headStr += kRDF_XMPMetaEnd; + headStr += newline; + } + + // Write the packet trailer PI into the tail string as UTF-8. + tailStr.erase(); + if ( ! (options & kXMP_OmitPacketWrapper) ) { + tailStr.reserve ( strlen(kPacketTrailer) + (strlen(indentStr) * baseIndent) ); + for ( level = baseIndent; level > 0; --level ) tailStr += indentStr; + tailStr += kPacketTrailer; + if ( options & kXMP_ReadOnlyPacket ) tailStr[tailStr.size()-4] = 'r'; + } + + // ! This assert is just a performance check, to see if the reserve was enough. + // *** XMP_Assert ( headStr.size() <= outputLen ); + // *** Don't use an assert. Think of some way to track this without risk of aborting the client. + +} // SerializeAsRDF + +// ------------------------------------------------------------------------------------------------- +// SerializeToBuffer +// ----------------- + +void +XMPMeta::SerializeToBuffer ( XMP_StringPtr * rdfString, + XMP_StringLen * rdfSize, + XMP_OptionBits options, + XMP_StringLen padding, + XMP_StringPtr newline, + XMP_StringPtr indentStr, + XMP_Index baseIndent ) const +{ + XMP_Assert ( (rdfString != 0) && (rdfSize != 0) && (newline != 0) && (indentStr != 0) ); + + // Fix up some default parameters. + + enum { kDefaultPad = 2048 }; + size_t unicodeUnitSize = 1; + XMP_OptionBits charEncoding = options & kXMP_EncodingMask; + + if ( charEncoding != kXMP_EncodeUTF8 ) { + if ( options & _XMP_UTF16_Bit ) { + if ( options & _XMP_UTF32_Bit ) XMP_Throw ( "Can't use both _XMP_UTF16_Bit and _XMP_UTF32_Bit", kXMPErr_BadOptions ); + unicodeUnitSize = 2; + } else if ( options & _XMP_UTF32_Bit ) { + unicodeUnitSize = 4; + } else { + XMP_Throw ( "Can't use _XMP_LittleEndian_Bit by itself", kXMPErr_BadOptions ); + } + } + + if ( options & kXMP_OmitAllFormatting ) { + newline = " "; // ! Yes, a space for "newline". This ensures token separation. + indentStr = ""; + } else { + if ( *newline == 0 ) newline = "\xA"; // Linefeed + if ( *indentStr == 0 ) { + indentStr = " "; + if ( ! (options & kXMP_UseCompactFormat) ) indentStr = " "; + } + } + + if ( options & kXMP_ExactPacketLength ) { + if ( options & (kXMP_OmitPacketWrapper | kXMP_IncludeThumbnailPad) ) { + XMP_Throw ( "Inconsistent options for exact size serialize", kXMPErr_BadOptions ); + } + if ( (padding & (unicodeUnitSize-1)) != 0 ) { + XMP_Throw ( "Exact size must be a multiple of the Unicode element", kXMPErr_BadOptions ); + } + } else if ( options & kXMP_ReadOnlyPacket ) { + if ( options & (kXMP_OmitPacketWrapper | kXMP_IncludeThumbnailPad) ) { + XMP_Throw ( "Inconsistent options for read-only packet", kXMPErr_BadOptions ); + } + padding = 0; + } else if ( options & kXMP_OmitPacketWrapper ) { + if ( options & kXMP_IncludeThumbnailPad ) { + XMP_Throw ( "Inconsistent options for non-packet serialize", kXMPErr_BadOptions ); + } + padding = 0; + } else { + if ( padding == 0 ) padding = kDefaultPad * unicodeUnitSize; + if ( options & kXMP_IncludeThumbnailPad ) { + if ( ! this->DoesPropertyExist ( kXMP_NS_XMP, "Thumbnails" ) ) padding += (10000 * unicodeUnitSize); // *** Need a better estimate. + } + } + + // Serialize as UTF-8, then convert to UTF-16 or UTF-32 if necessary, and assemble with the padding and tail. + + std::string tailStr; + + SerializeAsRDF ( *this, *sOutputStr, tailStr, options, newline, indentStr, baseIndent ); + if ( charEncoding == kXMP_EncodeUTF8 ) { + + if ( options & kXMP_ExactPacketLength ) { + size_t minSize = sOutputStr->size() + tailStr.size(); + if ( minSize > padding ) XMP_Throw ( "Can't fit into specified packet size", kXMPErr_BadSerialize ); + padding -= minSize; // Now the actual amount of padding to add. + } + + size_t newlineLen = strlen ( newline ); + + if ( padding < newlineLen ) { + sOutputStr->append ( padding, ' ' ); + } else { + padding -= newlineLen; // Write this newline last. + while ( padding >= (100 + newlineLen) ) { + sOutputStr->append ( 100, ' ' ); + *sOutputStr += newline; + padding -= (100 + newlineLen); + } + sOutputStr->append ( padding, ' ' ); + *sOutputStr += newline; + } + + *sOutputStr += tailStr; + + } else { + + // Need to convert the encoding. Swap the UTF-8 into a local string and convert back. Assemble everything. + + XMP_VarString utf8Str, newlineStr; + bool bigEndian = ((charEncoding & _XMP_LittleEndian_Bit) == 0); + + if ( charEncoding & _XMP_UTF16_Bit ) { + + std::string padStr ( " " ); padStr[0] = 0; // Assume big endian. + + utf8Str.swap ( *sOutputStr ); + ToUTF16 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), sOutputStr, bigEndian ); + utf8Str.swap ( tailStr ); + ToUTF16 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &tailStr, bigEndian ); + + if ( options & kXMP_ExactPacketLength ) { + size_t minSize = sOutputStr->size() + tailStr.size(); + if ( minSize > padding ) XMP_Throw ( "Can't fit into specified packet size", kXMPErr_BadSerialize ); + padding -= minSize; // Now the actual amount of padding to add (in bytes). + } + + utf8Str.assign ( newline ); + ToUTF16 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &newlineStr, bigEndian ); + size_t newlineLen = newlineStr.size(); + + if ( padding < newlineLen ) { + for ( int i = padding/2; i > 0; --i ) *sOutputStr += padStr; + } else { + padding -= newlineLen; // Write this newline last. + while ( padding >= (200 + newlineLen) ) { + for ( int i = 100; i > 0; --i ) *sOutputStr += padStr; + *sOutputStr += newlineStr; + padding -= (200 + newlineLen); + } + for ( int i = padding/2; i > 0; --i ) *sOutputStr += padStr; + *sOutputStr += newlineStr; + } + + *sOutputStr += tailStr; + + } else { + + std::string padStr ( " " ); padStr[0] = padStr[1] = padStr[2] = 0; // Assume big endian. +// UTF8_to_UTF32_Proc Converter = UTF8_to_UTF32BE; + + if ( charEncoding & _XMP_LittleEndian_Bit ) { + padStr[0] = ' '; padStr[1] = padStr[2] = padStr[3] = 0; +// Converter = UTF8_to_UTF32LE; + } + + utf8Str.swap ( *sOutputStr ); + ToUTF32 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), sOutputStr, bigEndian ); + utf8Str.swap ( tailStr ); + ToUTF32 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &tailStr, bigEndian ); + + if ( options & kXMP_ExactPacketLength ) { + size_t minSize = sOutputStr->size() + tailStr.size(); + if ( minSize > padding ) XMP_Throw ( "Can't fit into specified packet size", kXMPErr_BadSerialize ); + padding -= minSize; // Now the actual amount of padding to add (in bytes). + } + + utf8Str.assign ( newline ); + ToUTF32 ( (UTF8Unit*)utf8Str.c_str(), utf8Str.size(), &newlineStr, bigEndian ); + size_t newlineLen = newlineStr.size(); + + if ( padding < newlineLen ) { + for ( int i = padding/4; i > 0; --i ) *sOutputStr += padStr; + } else { + padding -= newlineLen; // Write this newline last. + while ( padding >= (400 + newlineLen) ) { + for ( int i = 100; i > 0; --i ) *sOutputStr += padStr; + *sOutputStr += newlineStr; + padding -= (400 + newlineLen); + } + for ( int i = padding/4; i > 0; --i ) *sOutputStr += padStr; + *sOutputStr += newlineStr; + } + + *sOutputStr += tailStr; + + } + + } + + // Return the finished string. + + *rdfString = sOutputStr->c_str(); + *rdfSize = sOutputStr->size(); + +} // SerializeToBuffer + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPMeta.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta.cpp new file mode 100644 index 0000000..2720cf2 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta.cpp @@ -0,0 +1,1649 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// +// Adobe patent application tracking #P435, entitled 'Unique markers to simplify embedding data of +// one format in a file with a different format', inventors: Sean Parent, Greg Gilley. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include + +#include "XMPMeta.hpp" +#include "XMPIterator.hpp" +#include "XMPUtils.hpp" +#include "XMP_Version.h" +#include "UnicodeInlines.incl_cpp" +#include "UnicodeConversions.hpp" + +#include // For sort and stable_sort. + +#if XMP_DebugBuild + #include +#endif + +using namespace std; + +#if XMP_WinBuild +#ifdef _MSC_VER + #pragma warning ( disable : 4533 ) // initialization of '...' is skipped by 'goto ...' + #pragma warning ( disable : 4702 ) // unreachable code + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #pragma warning ( disable : 4996 ) // '...' was declared deprecated +#endif +#endif + + +// *** Use the XMP_PropIsXyz (Schema, Simple, Struct, Array, ...) macros +// *** Add debug codegen checks, e.g. that typical masking operations really work +// *** Change all uses of strcmp and strncmp to XMP_LitMatch and XMP_LitNMatch + + +// ================================================================================================= +// Local Types and Constants +// ========================= + + +// ================================================================================================= +// Static Variables +// ================ + +XMP_VarString * xdefaultName = 0; + +// These are embedded version strings. + +const char * kXMPCore_EmbeddedVersion = kXMPCore_VersionMessage; +const char * kXMPCore_EmbeddedCopyright = kXMPCoreName " " kXMP_CopyrightStr; + +// ================================================================================================= +// Local Utilities +// =============== + +#define IsHexDigit(ch) ( (('0' <= (ch)) && ((ch) <= '9')) || (('A' <= (ch)) && ((ch) <= 'F')) ) +#define HexDigitValue(ch) ( (((ch) - '0') < 10) ? ((ch) - '0') : ((ch) - 'A' + 10) ) + +static const char * kTenSpaces = " "; +#define OutProcPadding(pad) { size_t padLen = (pad); \ + for ( ; padLen >= 10; padLen -= 10 ) OutProcNChars ( kTenSpaces, 10 ); \ + for ( ; padLen > 0; padLen -= 1 ) OutProcNChars ( " ", 1 ); } + + +#define OutProcNewline() { status = (*outProc) ( refCon, "\n", 1 ); if ( status != 0 ) goto EXIT; } + +#define OutProcNChars(p,n) { status = (*outProc) ( refCon, (p), (n) ); if ( status != 0 ) goto EXIT; } + +#define OutProcLiteral(lit) { status = (*outProc) ( refCon, (lit), strlen(lit) ); if ( status != 0 ) goto EXIT; } + +#define OutProcString(str) { status = (*outProc) ( refCon, (str).c_str(), (str).size() ); if ( status != 0 ) goto EXIT; } + +#define OutProcULong(num) { snprintf ( buffer, sizeof(buffer), "%lu", (num) ); /* AUDIT: Using sizeof for snprintf length is safe */ \ + status = (*outProc) ( refCon, buffer, strlen(buffer) ); if ( status != 0 ) goto EXIT; } + +#define OutProcHexInt(num) { snprintf ( buffer, sizeof(buffer), "%lX", (num) ); /* AUDIT: Using sizeof for snprintf length is safe */ \ + status = (*outProc) ( refCon, buffer, strlen(buffer) ); if ( status != 0 ) goto EXIT; } + +#define OutProcHexByte(num) { snprintf ( buffer, sizeof(buffer), "%.2X", (num) ); /* AUDIT: Using sizeof for snprintf length is safe */ \ + status = (*outProc) ( refCon, buffer, strlen(buffer) ); if ( status != 0 ) goto EXIT; } + +static const char * kIndent = " "; +#define OutProcIndent(lev) { for ( size_t i = 0; i < (lev); ++i ) OutProcNChars ( kIndent, 3 ); } + + +// ------------------------------------------------------------------------------------------------- +// DumpClearString +// --------------- + +static XMP_Status +DumpClearString ( const XMP_VarString & value, XMP_TextOutputProc outProc, void * refCon ) +{ + + char buffer [20]; + bool prevNormal; + XMP_Status status = 0; + + XMP_StringPtr spanStart, spanEnd; + XMP_StringPtr valueEnd = &value[0] + value.size(); + + spanStart = &value[0]; + while ( spanStart < valueEnd ) { + + // Output the next span of regular characters. + for ( spanEnd = spanStart; spanEnd < valueEnd; ++spanEnd ) { + if ( (unsigned char)(*spanEnd) > 0x7F ) break; + if ( (*spanEnd < 0x20) && (*spanEnd != kTab) && (*spanEnd != kLF) ) break; + } + if ( spanStart != spanEnd ) status = (*outProc) ( refCon, spanStart, (spanEnd-spanStart) ); + if ( status != 0 ) break; + spanStart = spanEnd; + + // Output the next span of irregular characters. + prevNormal = true; + for ( spanEnd = spanStart; spanEnd < valueEnd; ++spanEnd ) { + if ( ((0x20 <= *spanEnd) && ((unsigned char)(*spanEnd) <= 0x7F)) || (*spanEnd == kTab) || (*spanEnd == kLF) ) break; + char space = ' '; + if ( prevNormal ) space = '<'; + status = (*outProc) ( refCon, &space, 1 ); + if ( status != 0 ) break; + OutProcHexByte ( *spanEnd ); + prevNormal = false; + } + if ( ! prevNormal ) { + status = (*outProc) ( refCon, ">", 1 ); + if ( status != 0 ) return status; + } + spanStart = spanEnd; + + } + +EXIT: + return status; + +} // DumpClearString + + +// ------------------------------------------------------------------------------------------------- +// DumpStringMap +// ------------- + +static XMP_Status +DumpStringMap ( const XMP_StringMap & map, XMP_StringPtr label, XMP_TextOutputProc outProc, void * refCon ) +{ + XMP_Status status; + XMP_cStringMapPos currPos; + XMP_cStringMapPos endPos = map.end(); + + size_t maxLen = 0; + for ( currPos = map.begin(); currPos != endPos; ++currPos ) { + size_t currLen = currPos->first.size(); + if ( currLen > maxLen ) maxLen = currLen; + } + + OutProcNewline(); + OutProcLiteral ( label ); + OutProcNewline(); + + for ( currPos = map.begin(); currPos != endPos; ++currPos ) { + OutProcNChars ( " ", 2 ); + DumpClearString ( currPos->first, outProc, refCon ); + OutProcPadding ( maxLen - currPos->first.size() ); + OutProcNChars ( " => ", 4 ); + DumpClearString ( currPos->second, outProc, refCon ); + OutProcNewline(); + } + +EXIT: + return status; + +} // DumpStringMap + + +// ------------------------------------------------------------------------------------------------- +// DumpNodeOptions +// --------------- + +static XMP_Status +DumpNodeOptions ( XMP_OptionBits options, + XMP_TextOutputProc outProc, + void * refCon ) +{ + XMP_Status status; + char buffer [32]; // Decimal of a 64 bit int is at most about 20 digits. + + static const char * optNames[] = { " schema", // 0x8000_0000 + " ?30", + " ?29", + " -COMMAS-", + " ?27", // 0x0800_0000 + " ?26", + " ?25", + " ?24", + " ?23", // 0x0080_0000 + " isStale", + " isDerived", + " isStable", + " ?19", // 0x0008_0000 + " isInternal", + " hasAliases", + " isAlias", + " -AFTER-", // 0x0000_8000 + " -BEFORE-", + " isCompact", + " isLangAlt", + " isAlt", // 0x0000_0800 + " isOrdered", + " isArray", + " isStruct", + " hasType", // 0x0000_0080 + " hasLang", + " isQual", + " hasQual", + " ?3", // 0x0000_0008 + " ?2", + " URI", + " ?0" }; + + if ( options == 0 ) { + + OutProcNChars ( "(0x0)", 5 ); + + } else { + + OutProcNChars ( "(0x", 3 ); + OutProcHexInt ( options ); + OutProcNChars ( " :", 2 ); + + XMP_OptionBits mask = 0x80000000; + for ( int b = 0; b < 32; ++b ) { + if ( options & mask ) OutProcLiteral ( optNames[b] ); + mask = mask >> 1; + } + OutProcNChars ( ")", 1 ); + + } + +EXIT: + return status; + +} // DumpNodeOptions + + +// ------------------------------------------------------------------------------------------------- +// DumpPropertyTree +// ---------------- + +// *** Extract the validation code into a separate routine to call on exit in debug builds. + +static XMP_Status +DumpPropertyTree ( const XMP_Node * currNode, + int indent, + size_t itemIndex, + XMP_TextOutputProc outProc, + void * refCon ) +{ + XMP_Status status; + char buffer [32]; // Decimal of a 64 bit int is at most about 20 digits. + + OutProcIndent ( (size_t)indent ); + if ( itemIndex == 0 ) { + if ( currNode->options & kXMP_PropIsQualifier ) OutProcNChars ( "? ", 2 ); + DumpClearString ( currNode->name, outProc, refCon ); + } else { + OutProcNChars ( "[", 1 ); + OutProcULong ( static_cast(itemIndex) ); + OutProcNChars ( "]", 1 ); + } + + if ( ! (currNode->options & kXMP_PropCompositeMask) ) { + OutProcNChars ( " = \"", 4 ); + DumpClearString ( currNode->value, outProc, refCon ); + OutProcNChars ( "\"", 1 ); + } + + if ( currNode->options != 0 ) { + OutProcNChars ( " ", 2 ); + status = DumpNodeOptions ( currNode->options, outProc, refCon ); + if ( status != 0 ) goto EXIT; + } + + if ( currNode->options & kXMP_PropHasLang ) { + if ( currNode->qualifiers.empty() || (currNode->qualifiers[0]->name != "xml:lang") ) { + OutProcLiteral ( " ** bad lang flag **" ); + } + } + // *** Check rdf:type also. + + if ( ! (currNode->options & kXMP_PropCompositeMask) ) { + if ( ! currNode->children.empty() ) OutProcLiteral ( " ** bad children **" ); + } else if ( currNode->options & kXMP_PropValueIsArray ) { + if ( currNode->options & kXMP_PropValueIsStruct ) OutProcLiteral ( " ** bad comp flags **" ); + } else if ( (currNode->options & kXMP_PropCompositeMask) != kXMP_PropValueIsStruct ) { + OutProcLiteral ( " ** bad comp flags **" ); + } + + #if 0 // *** XMP_DebugBuild + if ( (currNode->_namePtr != currNode->name.c_str()) || + (currNode->_valuePtr != currNode->value.c_str()) ) OutProcLiteral ( " ** bad debug string **" ); + #endif + + OutProcNewline(); + + for ( size_t qualNum = 0, qualLim = currNode->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + + const XMP_Node * currQual = currNode->qualifiers[qualNum]; + + if ( currQual->parent != currNode ) OutProcLiteral ( "** bad parent link => " ); + if ( currQual->name == kXMP_ArrayItemName ) OutProcLiteral ( "** bad qual name => " ); + if ( ! (currQual->options & kXMP_PropIsQualifier) ) OutProcLiteral ( "** bad qual flag => " ); + if ( currQual->name == "xml:lang" ) { + if ( (qualNum != 0) || (! (currNode->options & kXMP_PropHasLang)) ) OutProcLiteral ( "** bad lang qual => " ); + } + + status = DumpPropertyTree ( currQual, indent+2, 0, outProc, refCon ); + if ( status != 0 ) goto EXIT; + + } + + for ( size_t childNum = 0, childLim = currNode->children.size(); childNum < childLim; ++childNum ) { + + const XMP_Node * currChild = currNode->children[childNum]; + + if ( currChild->parent != currNode ) OutProcLiteral ( "** bad parent link => " ); + if ( currChild->options & kXMP_PropIsQualifier ) OutProcLiteral ( "** bad qual flag => " ); + + if ( currNode->options & kXMP_PropValueIsArray ) { + itemIndex = childNum+1; + if ( currChild->name != kXMP_ArrayItemName ) OutProcLiteral ( "** bad item name => " ); + } else { + itemIndex = 0; + if ( currChild->name == kXMP_ArrayItemName ) OutProcLiteral ( "** bad field name => " ); + } + + status = DumpPropertyTree ( currChild, indent+1, itemIndex, outProc, refCon ); + if ( status != 0 ) goto EXIT; + + } + +EXIT: + return status; + +} // DumpPropertyTree + + +// ------------------------------------------------------------------------------------------------- +// DumpXMLTree +// ----------- + +#if DumpXMLParseTree + +static inline void PutHexByte ( FILE * log, unsigned char ch ) +{ + + fprintf ( log, "\\x" ); + if ( ch < 0x10 ) { + fprintf ( log, "%c", kHexDigits[ch] ); + } else { + fprintf ( log, "%c%c", kHexDigits[ch>>4], kHexDigits[ch&0xF] ); + } + +} // PutHexByte + +// ------------------------------------------------------------------------------------------------- + +static void PutClearString ( FILE * log, const std::string & str ) +{ + + for ( size_t i = 0; i != str.size(); ++i ) { + unsigned char ch = str[i]; + if ( (0x20 <= ch) && (ch <= 0x7F) ) { + fprintf ( log, "%c", ch ); + } else { + PutHexByte ( log, ch ); + } + } + +} // PutClearString + +// ------------------------------------------------------------------------------------------------- + +static void DumpXMLTree ( FILE * log, const XML_Node & node, int indent ) +{ + size_t i; + + #if 0 // *** XMP_DebugBuild + if ( (node._namePtr != node.name.c_str()) || + (node._valuePtr != node.value.c_str()) ) fprintf ( log, "*** bad debug string ***\n" ); + #endif + + for ( i = 0; i != (size_t)indent; ++i ) fprintf ( log, " " ); + + switch ( node.kind ) { + + case kRootNode : + fprintf ( log, "\nStart of XML tree dump\n\n" ); + if ( (indent != 0) || (! node.attrs.empty()) || + (! node.ns.empty()) || (! node.name.empty()) || (!node.value.empty()) ) fprintf ( log, " ** invalid root ** \n" ); + for ( i = 0; i < node.children.size(); ++i ) { + XMP_Uns8 kind = node.children[i]->kind; + if ( (kind == kRootNode) || (kind == kAttrNode) ) fprintf ( log, " ** invalid child ** \n" ); + DumpXMLTree ( log, *node.children[i], indent+1 ); + } + fprintf ( log, "\nEnd of XML tree dump\n" ); + break; + + case kElemNode : + fprintf ( log, "Elem %s", node.name.c_str() ); + if ( indent == 0 ) fprintf ( log, " ** invalid elem ** " ); + if ( ! node.ns.empty() ) fprintf ( log, " @ %s", node.ns.c_str() ); + fprintf ( log, "\n" ); + for ( i = 0; i < node.attrs.size(); ++i ) { + XMP_Uns8 kind = node.attrs[i]->kind; + if ( kind != kAttrNode ) fprintf ( log, " ** invalid attr ** \n" ); + DumpXMLTree ( log, *node.attrs[i], indent+2 ); + } + for ( i = 0; i < node.children.size(); ++i ) { + XMP_Uns8 kind = node.children[i]->kind; + if ( (kind == kRootNode) || (kind == kAttrNode) ) fprintf ( log, " ** invalid child ** \n" ); + DumpXMLTree ( log, *node.children[i], indent+1 ); + } + break; + + case kAttrNode : + fprintf ( log, "Attr %s", node.name.c_str() ); + if ( (indent == 0) || node.name.empty() || (! node.attrs.empty()) || (! node.children.empty()) ) fprintf ( log, " ** invalid attr ** " ); + fprintf ( log, " = \"" ); + PutClearString ( log, node.value ); + fprintf ( log, "\"" ); + if ( ! node.ns.empty() ) fprintf ( log, " @ %s", node.ns.c_str() ); + fprintf ( log, "\n" ); + break; + + case kCDataNode : + if ( (indent == 0) || (! node.ns.empty()) || (! node.name.empty()) || + (! node.attrs.empty()) || (! node.children.empty()) ) fprintf ( log, " ** invalid cdata ** \n" ); + fprintf ( log, "\"" ); + PutClearString ( log, node.value ); + fprintf ( log, "\"\n" ); + break; + + case kPINode : + fprintf ( log, "PI %s", node.name.c_str() ); + if ( (indent == 0) || node.name.empty() || (! node.children.empty()) ) fprintf ( log, " ** invalid pi ** \n" ); + if ( ! node.value.empty() ) { + fprintf ( log, " " ); + } + fprintf ( log, "\n" ); + break; + + } + +} // DumpXMLTree + +#endif // DumpXMLParseTree + + +// ------------------------------------------------------------------------------------------------- +// CompareNodeNames +// ---------------- +// +// Comparison routine for sorting XMP nodes by name. The name "xml:lang" is less than anything else, +// and "rdf:type" is less than anything except "xml:lang". This preserves special rules for qualifiers. + +static bool +CompareNodeNames ( XMP_Node * left, XMP_Node * right ) +{ + + if ( left->name == "xml:lang" ) return true; + if ( right->name == "xml:lang" ) return false; + + if ( left->name == "rdf:type" ) return true; + if ( right->name == "rdf:type" ) return false; + + return ( left->name < right->name ); + +} // CompareNodeNames + + +// ------------------------------------------------------------------------------------------------- +// CompareNodeValues +// ----------------- +// +// Comparison routine for sorting XMP nodes by value. + +static bool +CompareNodeValues ( XMP_Node * left, XMP_Node * right ) +{ + + if ( XMP_PropIsSimple ( left->options ) && XMP_PropIsSimple ( right->options ) ) { + return ( left->value < right->value ); + } + + XMP_OptionBits leftForm = left->options & kXMP_PropCompositeMask; + XMP_OptionBits rightForm = right->options & kXMP_PropCompositeMask; + + return ( leftForm < rightForm ); + +} // CompareNodeValues + + +// ------------------------------------------------------------------------------------------------- +// CompareNodeLangs +// ---------------- +// +// Comparison routine for sorting XMP nodes by xml:lang qualifier. An "x-default" value is less than +// any other language. + +static bool +CompareNodeLangs ( XMP_Node * left, XMP_Node * right ) +{ + + if ( left->qualifiers.empty() || (left->qualifiers[0]->name != "xml:lang") ) return false; + if ( right->qualifiers.empty() || (right->qualifiers[0]->name != "xml:lang") ) return false; + + if ( left->qualifiers[0]->value == "x-default" ) return true; + if ( right->qualifiers[0]->value == "x-default" ) return false; + + return ( left->qualifiers[0]->value < right->qualifiers[0]->value ); + +} // CompareNodeLangs + + +// ------------------------------------------------------------------------------------------------- +// SortWithinOffspring +// ------------------- +// +// Sort one level down, within the elements of a node vector. This sorts the qualifiers of each +// node. If the node is a struct it sorts the fields by names. If the node is an unordered array it +// sorts the elements by value. If the node is an AltText array it sorts the elements by language. + +static void +SortWithinOffspring ( XMP_NodeOffspring & nodeVec ) +{ + + for ( size_t i = 0, limit = nodeVec.size(); i < limit; ++i ) { + + XMP_Node * currPos = nodeVec[i]; + + if ( ! currPos->qualifiers.empty() ) { + sort ( currPos->qualifiers.begin(), currPos->qualifiers.end(), CompareNodeNames ); + SortWithinOffspring ( currPos->qualifiers ); + } + + if ( ! currPos->children.empty() ) { + + if ( XMP_PropIsStruct ( currPos->options ) || XMP_NodeIsSchema ( currPos->options ) ) { + sort ( currPos->children.begin(), currPos->children.end(), CompareNodeNames ); + } else if ( XMP_PropIsArray ( currPos->options ) ) { + if ( XMP_ArrayIsUnordered ( currPos->options ) ) { + stable_sort ( currPos->children.begin(), currPos->children.end(), CompareNodeValues ); + } else if ( XMP_ArrayIsAltText ( currPos->options ) ) { + sort ( currPos->children.begin(), currPos->children.end(), CompareNodeLangs ); + } + } + + SortWithinOffspring ( currPos->children ); + + } + + } + +} // SortWithinOffspring + + +// ================================================================================================= +// Constructors +// ============ + + +XMPMeta::XMPMeta() : clientRefs(0), prevTkVer(0), tree(XMP_Node(0,"",0)), xmlParser(0) +{ + // Nothing more to do, clientRefs is incremented in wrapper. + #if XMP_TraceCTorDTor + printf ( "Default construct XMPMeta @ %.8X\n", this ); + #endif +} // XMPMeta + +// ------------------------------------------------------------------------------------------------- + +XMPMeta::~XMPMeta() RELEASE_NO_THROW +{ + #if XMP_TraceCTorDTor + printf ( "Destruct XMPMeta @ %.8X\n", this ); + #endif + + XMP_Assert ( this->clientRefs <= 0 ); + if ( xmlParser != 0 ) delete ( xmlParser ); + xmlParser = 0; + +} // ~XMPMeta + + +// ================================================================================================= +// Class Static Functions +// ====================== +// +// +// ================================================================================================= + +// ------------------------------------------------------------------------------------------------- +// GetVersionInfo +// -------------- + +/* class-static */ void +XMPMeta::GetVersionInfo ( XMP_VersionInfo * info ) +{ + + memset ( info, 0, sizeof(*info) ); // AUDIT: Safe, using sizeof the destination. + XMP_Assert ( sizeof(*info) == sizeof(XMP_VersionInfo) ); + + info->major = XMP_API_VERSION_MAJOR; + info->minor = XMP_API_VERSION_MINOR; + info->micro = XMP_API_VERSION_MICRO; + info->isDebug = kXMPCore_DebugFlag; + info->flags = 0; // ! None defined yet. + info->message = kXMPCore_VersionMessage; + +} // GetVersionInfo + +// ------------------------------------------------------------------------------------------------- +// Initialize +// ---------- + +/* class-static */ bool +XMPMeta::Initialize() +{ + // Allocate and initialize static objects. + + ++sXMP_InitCount; + if ( sXMP_InitCount > 1 ) return true; + + #if TraceXMPCalls + // xmpOut = fopen ( "xmp.out", "w" ); // Coordinate with client glue in WXMP_Common.hpp + fprintf ( xmpOut, "XMP initializing\n" ); fflush ( xmpOut ); + #endif + + sExceptionMessage = new XMP_VarString(); + XMP_InitMutex ( &sXMPCoreLock ); + sOutputNS = new XMP_VarString; + sOutputStr = new XMP_VarString; + + xdefaultName = new XMP_VarString ( "x-default" ); + + sNamespaceURIToPrefixMap = new XMP_StringMap; + sNamespacePrefixToURIMap = new XMP_StringMap; + sRegisteredAliasMap = new XMP_AliasMap; + + InitializeUnicodeConversions(); + + // Register standard namespaces and aliases. + RegisterNamespace ( kXMP_NS_XML, "xml" ); + RegisterNamespace ( kXMP_NS_RDF, "rdf" ); + RegisterNamespace ( kXMP_NS_DC, "dc" ); + + RegisterNamespace ( kXMP_NS_XMP, "xmp" ); + RegisterNamespace ( kXMP_NS_PDF, "pdf" ); + RegisterNamespace ( kXMP_NS_Photoshop, "photoshop" ); + RegisterNamespace ( kXMP_NS_PSAlbum, "album" ); + RegisterNamespace ( kXMP_NS_EXIF, "exif" ); + RegisterNamespace ( kXMP_NS_EXIF_Aux, "aux" ); + RegisterNamespace ( kXMP_NS_TIFF, "tiff" ); + RegisterNamespace ( kXMP_NS_PNG, "png" ); + RegisterNamespace ( kXMP_NS_JPEG, "jpeg" ); + RegisterNamespace ( kXMP_NS_JP2K, "jp2k" ); + RegisterNamespace ( kXMP_NS_CameraRaw, "crs" ); + RegisterNamespace ( kXMP_NS_ASF, "asf" ); + RegisterNamespace ( kXMP_NS_WAV, "wav" ); + + RegisterNamespace ( kXMP_NS_AdobeStockPhoto, "bmsp" ); + RegisterNamespace ( kXMP_NS_CreatorAtom, "creatorAtom" ); + + RegisterNamespace ( kXMP_NS_XMP_Rights, "xmpRights" ); + RegisterNamespace ( kXMP_NS_XMP_MM, "xmpMM" ); + RegisterNamespace ( kXMP_NS_XMP_BJ, "xmpBJ" ); + RegisterNamespace ( kXMP_NS_XMP_Note, "xmpNote" ); + + RegisterNamespace ( kXMP_NS_DM, "xmpDM" ); + RegisterNamespace ( kXMP_NS_XMP_Text, "xmpT" ); + RegisterNamespace ( kXMP_NS_XMP_PagedFile, "xmpTPg" ); + RegisterNamespace ( kXMP_NS_XMP_Graphics, "xmpG" ); + RegisterNamespace ( kXMP_NS_XMP_Image, "xmpGImg" ); + + RegisterNamespace ( kXMP_NS_XMP_Font, "stFnt" ); + RegisterNamespace ( kXMP_NS_XMP_Dimensions, "stDim" ); + RegisterNamespace ( kXMP_NS_XMP_ResourceEvent, "stEvt" ); + RegisterNamespace ( kXMP_NS_XMP_ResourceRef, "stRef" ); + RegisterNamespace ( kXMP_NS_XMP_ST_Version, "stVer" ); + RegisterNamespace ( kXMP_NS_XMP_ST_Job, "stJob" ); + RegisterNamespace ( kXMP_NS_XMP_ManifestItem, "stMfs" ); + + RegisterNamespace ( kXMP_NS_XMP_IdentifierQual, "xmpidq" ); + + RegisterNamespace ( kXMP_NS_IPTCCore, "Iptc4xmpCore" ); + RegisterNamespace ( kXMP_NS_DICOM, "DICOM" ); + + RegisterNamespace ( kXMP_NS_PDFA_Schema, "pdfaSchema" ); + RegisterNamespace ( kXMP_NS_PDFA_Property, "pdfaProperty" ); + RegisterNamespace ( kXMP_NS_PDFA_Type, "pdfaType" ); + RegisterNamespace ( kXMP_NS_PDFA_Field, "pdfaField" ); + RegisterNamespace ( kXMP_NS_PDFA_ID, "pdfaid" ); + RegisterNamespace ( kXMP_NS_PDFA_Extension, "pdfaExtension" ); + + RegisterNamespace ( kXMP_NS_PDFX, "pdfx" ); + RegisterNamespace ( kXMP_NS_PDFX_ID, "pdfxid" ); + + RegisterNamespace ( "adobe:ns:meta/", "x" ); + RegisterNamespace ( "http://ns.adobe.com/iX/1.0/", "iX" ); + +// 06-Oct-07, ahu: Do not use aliases. They result in unexpected behaviour. +// XMPMeta::RegisterStandardAliases ( "" ); + + // Initialize the other core classes. + + if ( ! XMPIterator::Initialize() ) XMP_Throw ( "Failure from XMPIterator::Initialize", kXMPErr_InternalFailure ); + if ( ! XMPUtils::Initialize() ) XMP_Throw ( "Failure from XMPUtils::Initialize", kXMPErr_InternalFailure ); + // Do miscelaneous semantic checks of types and arithmetic. + + XMP_Assert ( sizeof(XMP_Int8) == 1 ); + XMP_Assert ( sizeof(XMP_Int16) == 2 ); + XMP_Assert ( sizeof(XMP_Int32) == 4 ); + XMP_Assert ( sizeof(XMP_Int64) == 8 ); + XMP_Assert ( sizeof(XMP_Uns8) == 1 ); + XMP_Assert ( sizeof(XMP_Uns16) == 2 ); + XMP_Assert ( sizeof(XMP_Uns32) == 4 ); + XMP_Assert ( sizeof(XMP_Uns64) == 8 ); + + XMP_Assert ( sizeof(XMP_OptionBits) == 4 ); // Check that option masking work on all 32 bits. + XMP_OptionBits flag = ~0UL; + + XMP_Assert ( flag == (XMP_OptionBits)(-1L) ); + XMP_Assert ( (flag ^ kXMP_PropHasLang) == 0xFFFFFFBFUL ); + XMP_Assert ( (flag & ~kXMP_PropHasLang) == 0xFFFFFFBFUL ); + + XMP_OptionBits opt1 = 0; // Check the general option bit macros. + XMP_OptionBits opt2 = flag; + XMP_SetOption ( opt1, kXMP_PropValueIsArray ); + XMP_ClearOption ( opt2, kXMP_PropValueIsArray ); + XMP_Assert ( opt1 == ~opt2 ); + XMP_Assert ( XMP_TestOption ( opt1, kXMP_PropValueIsArray ) ); + XMP_Assert ( ! XMP_TestOption ( opt2, kXMP_PropValueIsArray ) ); + + XMP_Assert ( XMP_PropIsSimple ( ~kXMP_PropCompositeMask ) ); // Check the special option bit macros. + XMP_Assert ( ! XMP_PropIsSimple ( kXMP_PropValueIsStruct ) ); + XMP_Assert ( ! XMP_PropIsSimple ( kXMP_PropValueIsArray ) ); + + XMP_Assert ( XMP_PropIsStruct ( kXMP_PropValueIsStruct ) ); + XMP_Assert ( XMP_PropIsArray ( kXMP_PropValueIsArray ) ); + XMP_Assert ( ! XMP_PropIsStruct ( ~kXMP_PropValueIsStruct ) ); + XMP_Assert ( ! XMP_PropIsArray ( ~kXMP_PropValueIsArray ) ); + + XMP_Assert ( XMP_ArrayIsUnordered ( ~kXMP_PropArrayIsOrdered ) ); + XMP_Assert ( XMP_ArrayIsOrdered ( kXMP_PropArrayIsOrdered ) ); + XMP_Assert ( XMP_ArrayIsAlternate ( kXMP_PropArrayIsAlternate ) ); + XMP_Assert ( XMP_ArrayIsAltText ( kXMP_PropArrayIsAltText ) ); + XMP_Assert ( ! XMP_ArrayIsUnordered ( kXMP_PropArrayIsOrdered ) ); + XMP_Assert ( ! XMP_ArrayIsOrdered ( ~kXMP_PropArrayIsOrdered ) ); + XMP_Assert ( ! XMP_ArrayIsAlternate ( ~kXMP_PropArrayIsAlternate ) ); + XMP_Assert ( ! XMP_ArrayIsAltText ( ~kXMP_PropArrayIsAltText ) ); + + XMP_Assert ( XMP_PropHasQualifiers ( kXMP_PropHasQualifiers ) ); + XMP_Assert ( XMP_PropIsQualifier ( kXMP_PropIsQualifier ) ); + XMP_Assert ( XMP_PropHasLang ( kXMP_PropHasLang ) ); + XMP_Assert ( ! XMP_PropHasQualifiers ( ~kXMP_PropHasQualifiers ) ); + XMP_Assert ( ! XMP_PropIsQualifier ( ~kXMP_PropIsQualifier ) ); + XMP_Assert ( ! XMP_PropHasLang ( ~kXMP_PropHasLang ) ); + + XMP_Assert ( XMP_NodeIsSchema ( kXMP_SchemaNode ) ); + XMP_Assert ( XMP_PropIsAlias ( kXMP_PropIsAlias ) ); + XMP_Assert ( ! XMP_NodeIsSchema ( ~kXMP_SchemaNode ) ); + XMP_Assert ( ! XMP_PropIsAlias ( ~kXMP_PropIsAlias ) ); + + #if 0 // Generally off, enable to hand check generated code. + extern XMP_OptionBits opt3, opt4; + if ( XMP_TestOption ( opt3, kXMP_PropValueIsArray ) ) opt4 = opt3; + if ( ! XMP_TestOption ( opt3, kXMP_PropValueIsStruct ) ) opt4 = opt3; + static bool ok1 = XMP_TestOption ( opt4, kXMP_PropValueIsArray ); + static bool ok2 = ! XMP_TestOption ( opt4, kXMP_PropValueIsStruct ); + #endif + + // Make sure the embedded info strings are referenced and kept. + if ( (kXMPCore_EmbeddedVersion[0] == 0) || (kXMPCore_EmbeddedCopyright[0] == 0) ) return false; + return true; + +} // Initialize + + +// ------------------------------------------------------------------------------------------------- +// Terminate +// --------- + +#define EliminateGlobal(g) delete ( g ); g = 0 + +/* class-static */ void +XMPMeta::Terminate() RELEASE_NO_THROW +{ + --sXMP_InitCount; + if ( sXMP_InitCount > 0 ) return; + + #if TraceXMPCalls + fprintf ( xmpOut, "XMP terminating\n" ); fflush ( xmpOut ); + // fclose ( xmpOut ); // Coordinate with fopen in XMPMeta::Initialize. + #endif + + XMPIterator::Terminate(); + XMPUtils::Terminate(); + EliminateGlobal ( sNamespaceURIToPrefixMap ); + EliminateGlobal ( sNamespacePrefixToURIMap ); + EliminateGlobal ( sRegisteredAliasMap ); + + EliminateGlobal ( xdefaultName ); + EliminateGlobal ( sOutputNS ); + EliminateGlobal ( sOutputStr ); + EliminateGlobal ( sExceptionMessage ); + + XMP_TermMutex ( sXMPCoreLock ); + +} // Terminate + + +// ------------------------------------------------------------------------------------------------- +// Unlock +// ------ + +/* class-static */ void +XMPMeta::Unlock ( XMP_OptionBits options ) +{ + UNUSED(options); + + #if TraceXMPLocking + fprintf ( xmpOut, " Unlocking XMP toolkit, count = %d\n", sLockCount ); fflush ( xmpOut ); + #endif + --sLockCount; + XMP_Assert ( sLockCount == 0 ); + XMP_ExitCriticalRegion ( sXMPCoreLock ); + +} // Unlock + + +// ------------------------------------------------------------------------------------------------- +// UnlockObject +// ------------ + +void +XMPMeta::UnlockObject ( XMP_OptionBits options ) const +{ + UNUSED(options); + + XMPMeta::Unlock ( 0 ); + +} // UnlockObject + + +// ------------------------------------------------------------------------------------------------- +// DumpNamespaces +// -------------- +// +// Dump the prefix to URI map (easier to read) and verify that both are consistent and legit. + +// *** Should put checks in a separate routine for regular calling in debug builds. + +/* class-static */ XMP_Status +XMPMeta::DumpNamespaces ( XMP_TextOutputProc outProc, + void * refCon ) +{ + XMP_Assert ( outProc != 0 ); // ! Enforced by wrapper. + XMP_Status status = 0; + + XMP_StringMapPos p2uEnd = sNamespacePrefixToURIMap->end(); // ! Move up to avoid gcc complaints. + XMP_StringMapPos u2pEnd = sNamespaceURIToPrefixMap->end(); + + status = DumpStringMap ( *sNamespacePrefixToURIMap, "Dumping namespace prefix to URI map", outProc, refCon ); + if ( status != 0 ) goto EXIT; + + if ( sNamespacePrefixToURIMap->size() != sNamespaceURIToPrefixMap->size() ) { + OutProcLiteral ( "** bad namespace map sizes **" ); + XMP_Throw ( "Fatal namespace map problem", kXMPErr_InternalFailure ); + } + + for ( XMP_StringMapPos nsLeft = sNamespacePrefixToURIMap->begin(); nsLeft != p2uEnd; ++nsLeft ) { + + XMP_StringMapPos nsOther = sNamespaceURIToPrefixMap->find ( nsLeft->second ); + if ( (nsOther == u2pEnd) || (nsLeft != sNamespacePrefixToURIMap->find ( nsOther->second )) ) { + OutProcLiteral ( " ** bad namespace URI ** " ); + DumpClearString ( nsLeft->second, outProc, refCon ); + goto FAILURE; + } + + for ( XMP_StringMapPos nsRight = nsLeft; nsRight != p2uEnd; ++nsRight ) { + if ( nsRight == nsLeft ) continue; // ! Can't start at nsLeft+1, no operator+! + if ( nsLeft->second == nsRight->second ) { + OutProcLiteral ( " ** duplicate namespace URI ** " ); + DumpClearString ( nsLeft->second, outProc, refCon ); + goto FAILURE; + } + } + + } + + for ( XMP_StringMapPos nsLeft = sNamespaceURIToPrefixMap->begin(); nsLeft != u2pEnd; ++nsLeft ) { + + XMP_StringMapPos nsOther = sNamespacePrefixToURIMap->find ( nsLeft->second ); + if ( (nsOther == p2uEnd) || (nsLeft != sNamespaceURIToPrefixMap->find ( nsOther->second )) ) { + OutProcLiteral ( " ** bad namespace prefix ** " ); + DumpClearString ( nsLeft->second, outProc, refCon ); + goto FAILURE; + } + + for ( XMP_StringMapPos nsRight = nsLeft; nsRight != u2pEnd; ++nsRight ) { + if ( nsRight == nsLeft ) continue; // ! Can't start at nsLeft+1, no operator+! + if ( nsLeft->second == nsRight->second ) { + OutProcLiteral ( " ** duplicate namespace prefix ** " ); + DumpClearString ( nsLeft->second, outProc, refCon ); + goto FAILURE; + } + } + + } + +EXIT: + return status; + +FAILURE: + OutProcNewline(); + (void) DumpStringMap ( *sNamespaceURIToPrefixMap, "Dumping namespace URI to prefix map", outProc, refCon ); + XMP_Throw ( "Fatal namespace map problem", kXMPErr_InternalFailure ); + return 0; + +} // DumpNamespaces + + +// ------------------------------------------------------------------------------------------------- +// DumpAliases +// ----------- + +/* class-static */ XMP_Status +XMPMeta::DumpAliases ( XMP_TextOutputProc outProc, + void * refCon ) +{ + XMP_Assert ( outProc != 0 ); // ! Enforced by wrapper. + XMP_Status status = 0; + + XMP_Assert ( sRegisteredAliasMap != 0 ); + + XMP_cAliasMapPos aliasPos; + XMP_cAliasMapPos aliasEnd = sRegisteredAliasMap->end(); + + size_t maxLen = 0; + for ( aliasPos = sRegisteredAliasMap->begin(); aliasPos != aliasEnd; ++aliasPos ) { + size_t currLen = aliasPos->first.size(); + if ( currLen > maxLen ) maxLen = currLen; + } + + OutProcLiteral ( "Dumping alias name to actual path map" ); + OutProcNewline(); + + for ( aliasPos = sRegisteredAliasMap->begin(); aliasPos != aliasEnd; ++aliasPos ) { + + OutProcNChars ( " ", 3 ); + DumpClearString ( aliasPos->first, outProc, refCon ); + OutProcPadding ( maxLen - aliasPos->first.size() ); + OutProcNChars ( " => ", 4 ); + + size_t actualPathSize = aliasPos->second.size(); + for ( size_t stepNum = 1; stepNum < actualPathSize; ++stepNum ) OutProcString ( aliasPos->second[stepNum].step ); + + XMP_OptionBits arrayForm = aliasPos->second[1].options & kXMP_PropArrayFormMask; + + if ( arrayForm == 0 ) { + if ( actualPathSize != 2 ) OutProcLiteral ( " ** bad actual path **" ); + } else { + OutProcNChars ( " ", 2 ); + DumpNodeOptions ( arrayForm, outProc, refCon ); + if ( ! (arrayForm & kXMP_PropValueIsArray) ) OutProcLiteral ( " ** bad array form **" ); + if ( actualPathSize != 3 ) OutProcLiteral ( " ** bad actual path **" ); + } + + if ( aliasPos->second[0].options != kXMP_SchemaNode ) OutProcLiteral ( " ** bad schema form **" ); + + OutProcNewline(); + + } + +EXIT: + return status; + +} // DumpAliases + + +// ------------------------------------------------------------------------------------------------- +// GetGlobalOptions +// ---------------- + +/* class-static */ XMP_OptionBits +XMPMeta::GetGlobalOptions() +{ + XMP_OptionBits options = 0; + + return options; + +} // GetGlobalOptions + + +// ------------------------------------------------------------------------------------------------- +// SetGlobalOptions +// ---------------- + +/* class-static */ void +XMPMeta::SetGlobalOptions ( XMP_OptionBits /*options*/ ) +{ + + XMP_Throw ( "Unimplemented method XMPMeta::SetGlobalOptions", kXMPErr_Unimplemented ); + +} // SetGlobalOptions + + +// ------------------------------------------------------------------------------------------------- +// RegisterNamespace +// ----------------- + +/* class-static */ void +XMPMeta::RegisterNamespace ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix ) +{ + if ( (*namespaceURI == 0) || (*prefix == 0) ) { + XMP_Throw ( "Empty namespace URI or prefix", kXMPErr_BadParam ); + } + + XMP_VarString nsURI ( namespaceURI ); + XMP_VarString prfix ( prefix ); + if ( prfix[prfix.size()-1] != ':' ) prfix += ':'; + VerifySimpleXMLName ( prefix, prefix+prfix.size()-1 ); // Exclude the colon. + + // Set the new namespace in both maps. + (*sNamespaceURIToPrefixMap)[nsURI] = prfix; + (*sNamespacePrefixToURIMap)[prfix] = nsURI; + +} // RegisterNamespace + + +// ------------------------------------------------------------------------------------------------- +// GetNamespacePrefix +// ------------------ + +/* class-static */ bool +XMPMeta::GetNamespacePrefix ( XMP_StringPtr namespaceURI, + XMP_StringPtr * namespacePrefix, + XMP_StringLen * prefixSize ) +{ + bool found = false; + + XMP_Assert ( *namespaceURI != 0 ); // ! Enforced by wrapper. + XMP_Assert ( (namespacePrefix != 0) && (prefixSize != 0) ); // ! Enforced by wrapper. + + XMP_VarString nsURI ( namespaceURI ); + XMP_StringMapPos uriPos = sNamespaceURIToPrefixMap->find ( nsURI ); + + if ( uriPos != sNamespaceURIToPrefixMap->end() ) { + *namespacePrefix = uriPos->second.c_str(); + *prefixSize = uriPos->second.size(); + found = true; + } + + return found; + +} // GetNamespacePrefix + + +// ------------------------------------------------------------------------------------------------- +// GetNamespaceURI +// --------------- + +/* class-static */ bool +XMPMeta::GetNamespaceURI ( XMP_StringPtr namespacePrefix, + XMP_StringPtr * namespaceURI, + XMP_StringLen * uriSize ) +{ + bool found = false; + + XMP_Assert ( *namespacePrefix != 0 ); // ! Enforced by wrapper. + XMP_Assert ( (namespacePrefix != 0) && (namespaceURI != 0) ); // ! Enforced by wrapper. + + XMP_VarString nsPrefix ( namespacePrefix ); + if ( nsPrefix[nsPrefix.size()-1] != ':' ) nsPrefix += ':'; + + XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( nsPrefix ); + + if ( prefixPos != sNamespacePrefixToURIMap->end() ) { + *namespaceURI = prefixPos->second.c_str(); + *uriSize = prefixPos->second.size(); + found = true; + } + + return found; + +} // GetNamespaceURI + + +// ------------------------------------------------------------------------------------------------- +// DeleteNamespace +// --------------- + +// *** Don't allow standard namespaces to be deleted. +// *** We would be better off not having this. Instead, have local namespaces from parsing be +// *** restricted to the object that introduced them. + +/* class-static */ void +XMPMeta::DeleteNamespace ( XMP_StringPtr namespaceURI ) +{ + XMP_StringMapPos uriPos = sNamespaceURIToPrefixMap->find ( namespaceURI ); + if ( uriPos == sNamespaceURIToPrefixMap->end() ) return; + + XMP_StringMapPos prefixPos = sNamespacePrefixToURIMap->find ( uriPos->second ); + XMP_Assert ( prefixPos != sNamespacePrefixToURIMap->end() ); + + sNamespaceURIToPrefixMap->erase ( uriPos ); + sNamespacePrefixToURIMap->erase ( prefixPos ); + +} // DeleteNamespace + + +// ------------------------------------------------------------------------------------------------- +// RegisterAlias +// ------------- +// +// Allow 3 kinds of alias: +// TopProp => TopProp +// TopProp => TopArray[1] +// TopProp => TopArray[@xml:lang='x-default'] +// +// A new alias can be made to something that is already aliased, as long as the net result is one of +// the legitimate forms. The new alias can already have aliases to it, also as long as result of +// adjusting all of the exiting aliases leaves them legal. +// +// ! The caller assumes all risk that new aliases do not invalidate existing XMPMeta objects. Any +// ! conflicts will result in later references throwing bad XPath exceptions. + +/* class-static */ void +XMPMeta::RegisterAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm ) +{ + XMP_ExpandedXPath expAlias, expActual; + XMP_AliasMapPos mapPos; + XMP_ExpandedXPath * regActual = 0; + + XMP_Assert ( (aliasNS != 0) && (aliasProp != 0) && (actualNS != 0) && (actualProp != 0) ); // Enforced by wrapper. + + // Expand the alias and actual names, make sure they are one of the basic 3 forms. When counting + // the expanded XPath size remember that the schema URI is the first component. We don't have to + // compare the schema URIs though, the (unique) prefix is part of the top property name. + + ExpandXPath ( aliasNS, aliasProp, &expAlias ); + ExpandXPath ( actualNS, actualProp, &expActual ); + if ( (expAlias.size() != 2) || (expActual.size() != 2) ) { + XMP_Throw ( "Alias and actual property names must be simple", kXMPErr_BadXPath ); + } + + arrayForm = VerifySetOptions ( arrayForm, 0 ); + if ( arrayForm != 0 ) { + if ( (arrayForm & ~kXMP_PropArrayFormMask) != 0 ) XMP_Throw ( "Only array form flags are allowed", kXMPErr_BadOptions ); + expActual[1].options |= arrayForm; // Set the array form for the top level step. + if ( ! (arrayForm & kXMP_PropArrayIsAltText) ) { + expActual.push_back ( XPathStepInfo ( "[1]", kXMP_ArrayIndexStep ) ); + } else { + expActual.push_back ( XPathStepInfo ( "[?xml:lang=\"x-default\"]", kXMP_QualSelectorStep ) ); + } + } + + // See if there are any conflicts with existing aliases. A couple of the checks are easy. If the + // alias is already aliased it is only OK to reregister an identical alias. If the actual is + // already aliased to something else and the new chain is legal, just swap in the old base. + + mapPos = sRegisteredAliasMap->find ( expAlias[kRootPropStep].step ); + if ( mapPos != sRegisteredAliasMap->end() ) { + + // This alias is already registered to something, make sure it is the same something. + + regActual = &mapPos->second; + if ( arrayForm != (mapPos->second[1].options & kXMP_PropArrayFormMask) ) { + XMP_Throw ( "Mismatch with existing alias array form", kXMPErr_BadParam ); + } + if ( expActual.size() != regActual->size() ) { + XMP_Throw ( "Mismatch with existing actual path", kXMPErr_BadParam ); + } + if ( expActual[kRootPropStep].step != (*regActual)[kRootPropStep].step ) { + XMP_Throw ( "Mismatch with existing actual name", kXMPErr_BadParam ); + } + if ( (expActual.size() == 3) && (expActual[kAliasIndexStep].step != (*regActual)[kAliasIndexStep].step) ) { + XMP_Throw ( "Mismatch with existing actual array item", kXMPErr_BadParam ); + } + return; + + } + + mapPos = sRegisteredAliasMap->find ( expActual[kRootPropStep].step ); + if ( mapPos != sRegisteredAliasMap->end() ) { + + // The actual is already aliased to something else. + + regActual = &mapPos->second; + if ( expActual.size() == 2 ) { + expActual = *regActual; // TopProp => TopProp => anything : substitute the entire old base. + } else if ( regActual->size() != 2 ) { + XMP_Throw ( "Can't alias an array item to an array item", kXMPErr_BadParam ); // TopProp => TopArray[] => TopArray[] : nope. + } else { + expActual[kSchemaStep].step = (*regActual)[kSchemaStep].step; // TopProp => TopArray[] => TopProp : + expActual[kRootPropStep].step = (*regActual)[kRootPropStep].step; // substitute the old base name. + } + + } + + // Checking for existing aliases to this one is touchier. This involves updating the alias map, + // which must not be done unless all of the changes are legal. So we need 2 loops, one to verify + // that everything is OK, and one to make the changes. The bad case is: + // TopProp => TopArray[] => TopArray[] + // In the valid cases we back substitute the new base. + + for ( mapPos = sRegisteredAliasMap->begin(); mapPos != sRegisteredAliasMap->end(); ++mapPos ) { + regActual = &mapPos->second; + if ( expAlias[kRootPropStep].step == (*regActual)[kRootPropStep].step ) { + if ( (regActual->size() == 2) && (expAlias.size() == 2) ) { + XMP_Throw ( "Can't alias an array item to an array item", kXMPErr_BadParam ); + } + } + } + + for ( mapPos = sRegisteredAliasMap->begin(); mapPos != sRegisteredAliasMap->end(); ++mapPos ) { + regActual = &mapPos->second; + if ( expAlias[kRootPropStep].step == (*regActual)[kRootPropStep].step ) { + + if ( regActual->size() == 1 ) { + *regActual = expActual; // TopProp => TopProp => anything : substitute the entire new base. + } else { + (*regActual)[kSchemaStep].step = expActual[kSchemaStep].step; // TopProp => TopArray[] => TopProp : + (*regActual)[kRootPropStep].step = expActual[kRootPropStep].step; // substitute the new base name. + } + + } + } + + // Finally, all is OK to register the new alias. + + (void) sRegisteredAliasMap->insert ( XMP_AliasMap::value_type ( expAlias[kRootPropStep].step, expActual ) ); + +} // RegisterAlias + + +// ------------------------------------------------------------------------------------------------- +// ResolveAlias +// ------------ + +/* class-static */ bool +XMPMeta::ResolveAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr * actualNS, + XMP_StringLen * nsSize, + XMP_StringPtr * actualProp, + XMP_StringLen * propSize, + XMP_OptionBits * arrayForm ) +{ + XMP_Assert ( (aliasNS != 0) && (aliasProp != 0) ); // Enforced by wrapper. + XMP_Assert ( (actualNS != 0) && (nsSize != 0) && (actualProp != 0) && (propSize != 0) && (arrayForm != 0) ); // Enforced by wrapper. + + // Expand the input path and look up the first component in the alias table. Return if not an alias. + + XMP_ExpandedXPath fullPath, minPath; + ExpandXPath ( aliasNS, aliasProp, &fullPath ); + XMP_Assert ( fullPath.size() >= 2 ); + + minPath.push_back ( fullPath[kSchemaStep] ); + minPath.push_back ( fullPath[kRootPropStep] ); + XMP_AliasMapPos mapPos = sRegisteredAliasMap->find ( minPath[kRootPropStep].step ); + if ( mapPos == sRegisteredAliasMap->end() ) return false; + + // Replace the alias portion of the full expanded path. Compose the output path string. + + const XMP_ExpandedXPath & actualPath = mapPos->second; + + fullPath[kSchemaStep] = actualPath[kSchemaStep]; + fullPath[kRootPropStep] = actualPath[kRootPropStep]; + if ( actualPath.size() > 2 ) { // This is an alias to an array item. + XMP_ExpandedXPathPos insertPos = fullPath.begin() + kAliasIndexStep; + fullPath.insert ( insertPos, actualPath[kAliasIndexStep] ); + } + + *sOutputNS = fullPath[kSchemaStep].step; + *actualNS = sOutputNS->c_str(); + *nsSize = sOutputNS->size(); + + ComposeXPath ( fullPath, sOutputStr ); + *actualProp = sOutputStr->c_str(); + *propSize = sOutputStr->size(); + + *arrayForm = actualPath[kRootPropStep].options & kXMP_PropArrayFormMask; + + #if XMP_DebugBuild // Test that the output string is valid and unchanged by round trip expand/compose. + XMP_ExpandedXPath rtPath; + ExpandXPath ( *actualNS, *actualProp, &rtPath ); + std::string rtString; + ComposeXPath ( rtPath, &rtString ); + XMP_Assert ( rtString == *sOutputStr ); + #endif + + return true; + +} // ResolveAlias + + +// ------------------------------------------------------------------------------------------------- +// DeleteAlias +// ----------- + +/* class-static */ void +XMPMeta::DeleteAlias ( XMP_StringPtr /*aliasNS*/, + XMP_StringPtr /*aliasProp*/ ) +{ + +// Todo: XMP_Assert ( (aliasNS != 0) && (aliasProp != 0) ); / / Enforced by wrapper. + XMP_Throw ( "Unimplemented method XMPMeta::DeleteAlias", kXMPErr_Unimplemented ); // *** #error "write me" + +} // DeleteAlias + + +// ------------------------------------------------------------------------------------------------- +// RegisterStandardAliases +// ----------------------- + +/* class-static */ void +XMPMeta::RegisterStandardAliases ( XMP_StringPtr schemaNS ) +{ + XMP_Assert ( schemaNS != 0 ); // Enforced by wrapper. + + const bool doAll = (*schemaNS == 0); + + if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_XMP ) ) { + // Aliases from XMP to DC. + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Authors", kXMP_NS_DC, "creator", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Description", kXMP_NS_DC, "description", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Format", kXMP_NS_DC, "format", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Keywords", kXMP_NS_DC, "subject", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Locale", kXMP_NS_DC, "language", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP, "Title", kXMP_NS_DC, "title", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_XMP_Rights, "Copyright", kXMP_NS_DC, "rights", 0 ); + } + + if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_PDF ) ) { + // Aliases from PDF to DC and XMP. + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered ); + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "BaseURL", kXMP_NS_XMP, "BaseURL", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "CreationDate", kXMP_NS_XMP, "CreateDate", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Creator", kXMP_NS_XMP, "CreatorTool", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "ModDate", kXMP_NS_XMP, "ModifyDate", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Subject", kXMP_NS_DC, "description", kXMP_PropArrayIsAltText ); + XMPMeta::RegisterAlias ( kXMP_NS_PDF, "Title", kXMP_NS_DC, "title", kXMP_PropArrayIsAltText ); + } + + if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_Photoshop ) ) { + // Aliases from PHOTOSHOP to DC and XMP. + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered ); + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Caption", kXMP_NS_DC, "description", kXMP_PropArrayIsAltText ); + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Copyright", kXMP_NS_DC, "rights", kXMP_PropArrayIsAltText ); + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Keywords", kXMP_NS_DC, "subject", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Marked", kXMP_NS_XMP_Rights, "Marked", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "Title", kXMP_NS_DC, "title", kXMP_PropArrayIsAltText ); + XMPMeta::RegisterAlias ( kXMP_NS_Photoshop, "WebStatement", kXMP_NS_XMP_Rights, "WebStatement", 0 ); + } + + if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_TIFF ) || XMP_LitMatch ( schemaNS, kXMP_NS_EXIF ) ) { + // Aliases from TIFF and EXIF to DC and XMP. + XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "Artist", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered); + XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "Copyright", kXMP_NS_DC, "rights", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "DateTime", kXMP_NS_XMP, "ModifyDate", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "ImageDescription", kXMP_NS_DC, "description", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_TIFF, "Software", kXMP_NS_XMP, "CreatorTool", 0 ); + } + + if ( doAll || XMP_LitMatch ( schemaNS, kXMP_NS_PNG ) ) { // ! From Acrobat ImageCapture: + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Author", kXMP_NS_DC, "creator", kXMP_PropArrayIsOrdered); + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Copyright", kXMP_NS_DC, "rights", kXMP_PropArrayIsAltText); + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "CreationTime", kXMP_NS_XMP, "CreateDate", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Description", kXMP_NS_DC, "description", kXMP_PropArrayIsAltText); + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "ModificationTime", kXMP_NS_XMP, "ModifyDate", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Software", kXMP_NS_XMP, "CreatorTool", 0 ); + XMPMeta::RegisterAlias ( kXMP_NS_PNG, "Title", kXMP_NS_DC, "title", kXMP_PropArrayIsAltText); + } + +} // RegisterStandardAliases + + +// ================================================================================================= +// Class Methods +// ============= +// +// +// ================================================================================================= + + +// ------------------------------------------------------------------------------------------------- +// DumpObject +// ---------- + +XMP_Status +XMPMeta::DumpObject ( XMP_TextOutputProc outProc, + void * refCon ) const +{ + XMP_Assert ( outProc != 0 ); // ! Enforced by wrapper. + XMP_Status status = 0; + + OutProcLiteral ( "Dumping XMPMeta object \"" ); + DumpClearString ( tree.name, outProc, refCon ); + OutProcNChars ( "\" ", 3 ); + status = DumpNodeOptions ( tree.options, outProc, refCon ); + if ( status != 0 ) goto EXIT; + #if 0 // *** XMP_DebugBuild + if ( (tree._namePtr != tree.name.c_str()) || + (tree._valuePtr != tree.value.c_str()) ) OutProcLiteral ( " ** bad debug string **" ); + #endif + OutProcNewline(); + + if ( ! tree.value.empty() ) { + OutProcLiteral ( "** bad root value ** \"" ); + DumpClearString ( tree.value, outProc, refCon ); + OutProcNChars ( "\"", 1 ); + OutProcNewline(); + } + + if ( ! tree.qualifiers.empty() ) { + OutProcLiteral ( "** bad root qualifiers **" ); + OutProcNewline(); + for ( size_t qualNum = 0, qualLim = tree.qualifiers.size(); qualNum < qualLim; ++qualNum ) { + status = DumpPropertyTree ( tree.qualifiers[qualNum], 3, 0, outProc, refCon ); + } + } + + if ( ! tree.children.empty() ) { + + for ( size_t childNum = 0, childLim = tree.children.size(); childNum < childLim; ++childNum ) { + + const XMP_Node * currSchema = tree.children[childNum]; + + OutProcNewline(); + OutProcIndent ( 1 ); + DumpClearString ( currSchema->value, outProc, refCon ); + OutProcNChars ( " ", 2 ); + DumpClearString ( currSchema->name, outProc, refCon ); + OutProcNChars ( " ", 2 ); + status = DumpNodeOptions ( currSchema->options, outProc, refCon ); + if ( status != 0 ) goto EXIT; + #if 0 // *** XMP_DebugBuild + if ( (currSchema->_namePtr != currSchema->name.c_str()) || + (currSchema->_valuePtr != currSchema->value.c_str()) ) OutProcLiteral ( " ** bad debug string **" ); + #endif + OutProcNewline(); + + if ( ! (currSchema->options & kXMP_SchemaNode) ) { + OutProcLiteral ( "** bad schema options **" ); + OutProcNewline(); + } + + if ( ! currSchema->qualifiers.empty() ) { + OutProcLiteral ( "** bad schema qualifiers **" ); + OutProcNewline(); + for ( size_t qualNum = 0, qualLim = currSchema->qualifiers.size(); qualNum < qualLim; ++qualNum ) { + DumpPropertyTree ( currSchema->qualifiers[qualNum], 3, 0, outProc, refCon ); + } + } + + for ( size_t childNum = 0, childLim = currSchema->children.size(); childNum < childLim; ++childNum ) { + DumpPropertyTree ( currSchema->children[childNum], 2, 0, outProc, refCon ); + } + + } + + } + +EXIT: + return status; + +} // DumpObject + + +// ------------------------------------------------------------------------------------------------- +// CountArrayItems +// --------------- + +XMP_Index +XMPMeta::CountArrayItems ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName ) const +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, arrayName, &expPath ); + + const XMP_Node * arrayNode = FindConstNode ( &tree, expPath ); + + if ( arrayNode == 0 ) return 0; + if ( ! (arrayNode->options & kXMP_PropValueIsArray) ) XMP_Throw ( "The named property is not an array", kXMPErr_BadXPath ); + return arrayNode->children.size(); + +} // CountArrayItems + + +// ------------------------------------------------------------------------------------------------- +// GetObjectName +// ------------- + +void +XMPMeta::GetObjectName ( XMP_StringPtr * namePtr, + XMP_StringLen * nameLen ) const +{ + + *namePtr = tree.name.c_str(); + *nameLen = tree.name.size(); + +} // GetObjectName + + +// ------------------------------------------------------------------------------------------------- +// SetObjectName +// ------------- + +void +XMPMeta::SetObjectName ( XMP_StringPtr name ) +{ + VerifyUTF8 ( name ); // Throws if the string is not legit UTF-8. + tree.name = name; + +} // SetObjectName + + +// ------------------------------------------------------------------------------------------------- +// GetObjectOptions +// ---------------- + +XMP_OptionBits +XMPMeta::GetObjectOptions() const +{ + XMP_OptionBits options = 0; + + return options; + +} // GetObjectOptions + + +// ------------------------------------------------------------------------------------------------- +// SetObjectOptions +// ---------------- + +void +XMPMeta::SetObjectOptions ( XMP_OptionBits /*options*/ ) +{ + + XMP_Throw ( "Unimplemented method XMPMeta::SetObjectOptions", kXMPErr_Unimplemented ); + +} // SetObjectOptions + + +// ------------------------------------------------------------------------------------------------- +// Sort +// ---- +// +// At the top level the namespaces are sorted by their prefixes. Within a namespace, the top level +// properties are sorted by name. Within a struct, the fields are sorted by their qualified name, +// i.e. their XML prefix:local form. Unordered arrays of simple items are sorted by value. Language +// Alternative arrays are sorted by the xml:lang qualifiers, with the "x-default" item placed first. + +void +XMPMeta::Sort() +{ + + if ( ! this->tree.qualifiers.empty() ) { + sort ( this->tree.qualifiers.begin(), this->tree.qualifiers.end(), CompareNodeNames ); + SortWithinOffspring ( this->tree.qualifiers ); + } + + if ( ! this->tree.children.empty() ) { + // The schema prefixes are the node's value, the name is the URI, so we sort schemas by value. + sort ( this->tree.children.begin(), this->tree.children.end(), CompareNodeValues ); + SortWithinOffspring ( this->tree.children ); + } + +} // Sort + + +// ------------------------------------------------------------------------------------------------- +// Erase +// ----- +// +// Clear everything except for clientRefs. + +void +XMPMeta::Erase() +{ + + this->prevTkVer = 0; + if ( this->xmlParser != 0 ) { + delete ( this->xmlParser ); + this->xmlParser = 0; + } + this->tree.ClearNode(); + +} // Erase + + +// ------------------------------------------------------------------------------------------------- +// Clone +// ----- + +void +XMPMeta::Clone ( XMPMeta * clone, XMP_OptionBits options ) const +{ + if ( clone == 0 ) XMP_Throw ( "Null clone pointer", kXMPErr_BadParam ); + if ( options != 0 ) XMP_Throw ( "No options are defined yet", kXMPErr_BadOptions ); + XMP_Assert ( this->tree.parent == 0 ); + + clone->tree.ClearNode(); + + clone->tree.options = this->tree.options; + clone->tree.name = this->tree.name; + clone->tree.value = this->tree.value; + + #if 0 // *** XMP_DebugBuild + clone->tree._namePtr = clone->tree.name.c_str(); + clone->tree._valuePtr = clone->tree.value.c_str(); + #endif + + CloneOffspring ( &this->tree, &clone->tree ); + +} // Clone + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPMeta.hpp b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta.hpp new file mode 100644 index 0000000..68462dc --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPMeta.hpp @@ -0,0 +1,418 @@ +#ifndef __XMPMeta_hpp__ +#define __XMPMeta_hpp__ + +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" +#include "XMP_Const.h" +#include "XMPCore_Impl.hpp" +#include "XMLParserAdapter.hpp" + +// ------------------------------------------------------------------------------------------------- + +#ifndef DumpXMLParseTree + #define DumpXMLParseTree 0 +#endif + +extern XMP_VarString * xdefaultName; + +class XMPIterator; +class XMPUtils; + +// ------------------------------------------------------------------------------------------------- + +class XMPMeta { +public: + + static void + GetVersionInfo ( XMP_VersionInfo * info ); + + static bool + Initialize(); + static void + Terminate() RELEASE_NO_THROW; + + static void + Unlock ( XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + + XMPMeta(); + + virtual ~XMPMeta() RELEASE_NO_THROW; + + // --------------------------------------------------------------------------------------------- + + static XMP_OptionBits + GetGlobalOptions(); + + static void + SetGlobalOptions ( XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + + static XMP_Status + DumpNamespaces ( XMP_TextOutputProc outProc, + void * refCon ); + + static XMP_Status + DumpAliases ( XMP_TextOutputProc outProc, + void * refCon ); + + // --------------------------------------------------------------------------------------------- + + static void + RegisterNamespace ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix ); + + static bool + GetNamespacePrefix ( XMP_StringPtr namespaceURI, + XMP_StringPtr * namespacePrefix, + XMP_StringLen * prefixSize ); + + static bool + GetNamespaceURI ( XMP_StringPtr namespacePrefix, + XMP_StringPtr * namespaceURI, + XMP_StringLen * uriSize ); + + static void + DeleteNamespace ( XMP_StringPtr namespaceURI ); + + // --------------------------------------------------------------------------------------------- + + static void + RegisterAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm ); + + static bool + ResolveAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr * actualNS, + XMP_StringLen * nsSize, + XMP_StringPtr * actualProp, + XMP_StringLen * propSize, + XMP_OptionBits * arrayForm ); + + static void + DeleteAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp ); + + static void + RegisterStandardAliases ( XMP_StringPtr schemaNS ); + + // --------------------------------------------------------------------------------------------- + + void + UnlockObject ( XMP_OptionBits options ) const; + + // --------------------------------------------------------------------------------------------- + + bool + GetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr * propValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const; + + bool + GetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const; + + bool + GetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fieldValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const; + + bool + GetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * qualValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + + void + SetProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr propValue, + XMP_OptionBits options ); + + void + SetArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr itemValue, + XMP_OptionBits options ); + + void + AppendArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits arrayOptions, + XMP_StringPtr itemValue, + XMP_OptionBits options ); + + void + SetStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_OptionBits options ); + + void + SetQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr qualValue, + XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + + void + DeleteProperty ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ); + + void + DeleteArrayItem ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ); + + void + DeleteStructField ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ); + + void + DeleteQualifier ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ); + + // --------------------------------------------------------------------------------------------- + + bool + DoesPropertyExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName ) const; + + bool + DoesArrayItemExist ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex ) const; + + bool + DoesStructFieldExist ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName ) const; + + bool + DoesQualifierExist ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName ) const; + + // --------------------------------------------------------------------------------------------- + + bool + GetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr * actualLang, + XMP_StringLen * langSize, + XMP_StringPtr * itemValue, + XMP_StringLen * valueSize, + XMP_OptionBits * options ) const; + + void + SetLocalizedText ( XMP_StringPtr schemaNS, + XMP_StringPtr altTextName, + XMP_StringPtr genericLang, + XMP_StringPtr specificLang, + XMP_StringPtr itemValue, + XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + + bool + GetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool * propValue, + XMP_OptionBits * options ) const; + + bool + GetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 * propValue, + XMP_OptionBits * options ) const; + + bool + GetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 * propValue, + XMP_OptionBits * options ) const; + + bool + GetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double * propValue, + XMP_OptionBits * options ) const; + + bool + GetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_DateTime * propValue, + XMP_OptionBits * options ) const; + + // --------------------------------------------------------------------------------------------- + + void + SetProperty_Bool ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + bool propValue, + XMP_OptionBits options ); + + void + SetProperty_Int ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int32 propValue, + XMP_OptionBits options ); + + void + SetProperty_Int64 ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_Int64 propValue, + XMP_OptionBits options ); + + void + SetProperty_Float ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + double propValue, + XMP_OptionBits options ); + + void + SetProperty_Date ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + const XMP_DateTime & propValue, + XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + + void + GetObjectName ( XMP_StringPtr * namePtr, + XMP_StringLen * nameLen ) const; + + void + SetObjectName ( XMP_StringPtr name ); + + XMP_OptionBits + GetObjectOptions() const; + + void + SetObjectOptions ( XMP_OptionBits options ); + + void + Sort(); + + void + Erase(); + + void + Clone ( XMPMeta * clone, XMP_OptionBits options ) const; + + XMP_Index + CountArrayItems ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName ) const; + + XMP_Status + DumpObject ( XMP_TextOutputProc outProc, + void * refCon ) const; + + // --------------------------------------------------------------------------------------------- + + void + ParseFromBuffer ( XMP_StringPtr buffer, + XMP_StringLen bufferSize, + XMP_OptionBits options ); + + void + SerializeToBuffer ( XMP_StringPtr * rdfString, + XMP_StringLen * rdfSize, + XMP_OptionBits options, + XMP_StringLen padding, + XMP_StringPtr newline, + XMP_StringPtr indent, + XMP_Index baseIndent ) const; + + // ============================================================================================= + + // --------------------------------------------------------------------------------------------- + // - Everything is built out of standard nodes. Each node has a name, value, option flags, a + // vector of child nodes, and a vector of qualifier nodes. + // + // - The option flags are those passed to SetProperty and returned from GetProperty. They tell + // if the node is simple, a struct or an array; whether it has qualifiers, etc. + // + // - The name of the node is an XML qualified name, of the form "prefix:simple-name". Since we + // force all namespaces to be known and to have unique prefixes, this is semantically equivalent + // to using a URI and simple name pair. + // + // - Although the value part is only for leaf properties and the children part is only for + // structs and arrays, it is easier to simply have them in every node. This keeps things visible + // so that debugging is easier + // + // - The top level node children are the namespaces that contain properties, the next level are + // the top level properties, lower levels are the fields of structs or items of arrays. The name + // of the top level nodes is just the namespace prefix, with the colon terminator. The name of + // top level properties includes the namespace prefix. + // + // - Any property node, at any level, can have qualifiers. These are themselves general property + // nodes. And could in fact themselves have qualifiers! + + // ! Expose the implementation so that file static functions can see the data. + + XMP_Int32 clientRefs; // ! Must be signed to allow decrement from 0. + XMP_Int32 prevTkVer; // Previous toolkit version as MMmmuubbb (major, minor, micro, build). + XMP_Node tree; + + XMLParserAdapter * xmlParser; + + friend class XMPIterator; + friend class XMPUtils; + +private: + + // ! These are hidden on purpose: + XMPMeta ( const XMPMeta & /* original */ ) : clientRefs(0), prevTkVer(0), tree(XMP_Node(0,"",0)), xmlParser(0) + { XMP_Throw ( "Call to hidden constructor", kXMPErr_InternalFailure ); }; + void operator= ( const XMPMeta & /* rhs */ ) + { XMP_Throw ( "Call to hidden operator=", kXMPErr_InternalFailure ); }; + +}; // class XMPMeta + + +// ================================================================================================= + +#endif // __XMPMeta_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPUtils-FileInfo.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPUtils-FileInfo.cpp new file mode 100644 index 0000000..6a79a2b --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPUtils-FileInfo.cpp @@ -0,0 +1,1346 @@ +// ================================================================================================= +// Copyright 2002-2008 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPUtils.hpp" + +#include +#include +#include +#include +#include + +#include // For snprintf. + +#if XMP_WinBuild +#ifdef _MSC_VER + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) +#endif +#endif + +// ================================================================================================= +// Local Types and Constants +// ========================= + +typedef unsigned long UniCodePoint; + +enum UniCharKind { + UCK_normal, + UCK_space, + UCK_comma, + UCK_semicolon, + UCK_quote, + UCK_control +}; +typedef enum UniCharKind UniCharKind; + +#define UnsByte(c) ((unsigned char)(c)) +#define UCP(u) ((UniCodePoint)(u)) + // ! Needed on Windows (& PC Linux?) for inequalities with literals ito avoid sign extension. + +#ifndef TraceMultiFile + #define TraceMultiFile 0 +#endif + +// ================================================================================================= +// Static Variables +// ================ + +// ================================================================================================= +// Local Utilities +// =============== + +// ------------------------------------------------------------------------------------------------- +// ClassifyCharacter +// ----------------- + +static void +ClassifyCharacter ( XMP_StringPtr fullString, size_t offset, + UniCharKind * charKind, size_t * charSize, UniCodePoint * uniChar ) +{ + *charKind = UCK_normal; // Assume typical case. + + unsigned char currByte = UnsByte ( fullString[offset] ); + + if ( currByte < UnsByte(0x80) ) { + + // ---------------------------------------- + // We've got a single byte ASCII character. + + *charSize = 1; + *uniChar = currByte; + + if ( currByte > UnsByte(0x22) ) { + + if ( currByte == UnsByte(0x2C) ) { + *charKind = UCK_comma; + } else if ( currByte == UnsByte(0x3B) ) { + *charKind = UCK_semicolon; + } else if ( (currByte == UnsByte(0x5B)) || (currByte == UnsByte(0x5D)) ) { + *charKind = UCK_quote; // ! ASCII '[' and ']' are used as quotes in Chinese and Korean. + } + + } else { // currByte <= 0x22 + + if ( currByte == UnsByte(0x22) ) { + *charKind = UCK_quote; + } else if ( currByte == UnsByte(0x21) ) { + *charKind = UCK_normal; + } else if ( currByte == UnsByte(0x20) ) { + *charKind = UCK_space; + } else { + *charKind = UCK_control; + } + + } + + } else { // currByte >= 0x80 + + // --------------------------------------------------------------------------------------- + // We've got a multibyte Unicode character. The first byte has the number of bytes and the + // highest order bits. The other bytes each add 6 more bits. Compose the UTF-32 form so we + // can classify directly with the Unicode code points. Order the upperBits tests to be + // fastest for Japan, probably the most common non-ASCII usage. + + *charSize = 0; + *uniChar = currByte; + while ( (*uniChar & 0x80) != 0 ) { // Count the leading 1 bits in the byte. + ++(*charSize); + *uniChar = *uniChar << 1; + } + XMP_Assert ( (offset + *charSize) <= strlen(fullString) ); + + *uniChar = *uniChar & 0x7F; // Put the character bits in the bottom of uniChar. + *uniChar = *uniChar >> *charSize; + + for ( size_t i = (offset + 1); i < (offset + *charSize); ++i ) { + *uniChar = (*uniChar << 6) | (UnsByte(fullString[i]) & 0x3F); + } + + XMP_Uns32 upperBits = *uniChar >> 8; // First filter on just the high order 24 bits. + + if ( upperBits == 0xFF ) { // U+FFxx + + if ( *uniChar == UCP(0xFF0C) ) { + *charKind = UCK_comma; // U+FF0C, full width comma. + } else if ( *uniChar == UCP(0xFF1B) ) { + *charKind = UCK_semicolon; // U+FF1B, full width semicolon. + } else if ( *uniChar == UCP(0xFF64) ) { + *charKind = UCK_comma; // U+FF64, half width ideographic comma. + } + + } else if ( upperBits == 0xFE ) { // U+FE-- + + if ( *uniChar == UCP(0xFE50) ) { + *charKind = UCK_comma; // U+FE50, small comma. + } else if ( *uniChar == UCP(0xFE51) ) { + *charKind = UCK_comma; // U+FE51, small ideographic comma. + } else if ( *uniChar == UCP(0xFE54) ) { + *charKind = UCK_semicolon; // U+FE54, small semicolon. + } + + } else if ( upperBits == 0x30 ) { // U+30-- + + if ( *uniChar == UCP(0x3000) ) { + *charKind = UCK_space; // U+3000, ideographic space. + } else if ( *uniChar == UCP(0x3001) ) { + *charKind = UCK_comma; // U+3001, ideographic comma. + } else if ( (UCP(0x3008) <= *uniChar) && (*uniChar <= UCP(0x300F)) ) { + *charKind = UCK_quote; // U+3008..U+300F, various quotes. + } else if ( *uniChar == UCP(0x303F) ) { + *charKind = UCK_space; // U+303F, ideographic half fill space. + } else if ( (UCP(0x301D) <= *uniChar) && (*uniChar <= UCP(0x301F)) ) { + *charKind = UCK_quote; // U+301D..U+301F, double prime quotes. + } + + } else if ( upperBits == 0x20 ) { // U+20-- + + if ( (UCP(0x2000) <= *uniChar) && (*uniChar <= UCP(0x200B)) ) { + *charKind = UCK_space; // U+2000..U+200B, en quad through zero width space. + } else if ( *uniChar == UCP(0x2015) ) { + *charKind = UCK_quote; // U+2015, dash quote. + } else if ( (UCP(0x2018) <= *uniChar) && (*uniChar <= UCP(0x201F)) ) { + *charKind = UCK_quote; // U+2018..U+201F, various quotes. + } else if ( *uniChar == UCP(0x2028) ) { + *charKind = UCK_control; // U+2028, line separator. + } else if ( *uniChar == UCP(0x2029) ) { + *charKind = UCK_control; // U+2029, paragraph separator. + } else if ( (*uniChar == UCP(0x2039)) || (*uniChar == UCP(0x203A)) ) { + *charKind = UCK_quote; // U+2039 and U+203A, guillemet quotes. + } + + } else if ( upperBits == 0x06 ) { // U+06-- + + if ( *uniChar == UCP(0x060C) ) { + *charKind = UCK_comma; // U+060C, Arabic comma. + } else if ( *uniChar == UCP(0x061B) ) { + *charKind = UCK_semicolon; // U+061B, Arabic semicolon. + } + + } else if ( upperBits == 0x05 ) { // U+05-- + + if ( *uniChar == UCP(0x055D) ) { + *charKind = UCK_comma; // U+055D, Armenian comma. + } + + } else if ( upperBits == 0x03 ) { // U+03-- + + if ( *uniChar == UCP(0x037E) ) { + *charKind = UCK_semicolon; // U+037E, Greek "semicolon" (really a question mark). + } + + } else if ( upperBits == 0x00 ) { // U+00-- + + if ( (*uniChar == UCP(0x00AB)) || (*uniChar == UCP(0x00BB)) ) { + *charKind = UCK_quote; // U+00AB and U+00BB, guillemet quotes. + } + + } + + } + +} // ClassifyCharacter + + +// ------------------------------------------------------------------------------------------------- +// IsClosingingQuote +// ----------------- + +static inline bool +IsClosingingQuote ( UniCodePoint uniChar, UniCodePoint openQuote, UniCodePoint closeQuote ) +{ + + if ( (uniChar == closeQuote) || + ( (openQuote == UCP(0x301D)) && ((uniChar == UCP(0x301E)) || (uniChar == UCP(0x301F))) ) ) { + return true; + } else { + return false; + } + +} // IsClosingingQuote + + +// ------------------------------------------------------------------------------------------------- +// IsSurroundingQuote +// ------------------ + +static inline bool +IsSurroundingQuote ( UniCodePoint uniChar, UniCodePoint openQuote, UniCodePoint closeQuote ) +{ + + if ( (uniChar == openQuote) || IsClosingingQuote ( uniChar, openQuote, closeQuote ) ) { + return true; + } else { + return false; + } + +} // IsSurroundingQuote + + +// ------------------------------------------------------------------------------------------------- +// GetClosingQuote +// --------------- + +static UniCodePoint +GetClosingQuote ( UniCodePoint openQuote ) +{ + UniCodePoint closeQuote; + + switch ( openQuote ) { + + case UCP(0x0022) : closeQuote = UCP(0x0022); // ! U+0022 is both opening and closing. + break; + case UCP(0x005B) : closeQuote = UCP(0x005D); + break; + case UCP(0x00AB) : closeQuote = UCP(0x00BB); // ! U+00AB and U+00BB are reversible. + break; + case UCP(0x00BB) : closeQuote = UCP(0x00AB); + break; + case UCP(0x2015) : closeQuote = UCP(0x2015); // ! U+2015 is both opening and closing. + break; + case UCP(0x2018) : closeQuote = UCP(0x2019); + break; + case UCP(0x201A) : closeQuote = UCP(0x201B); + break; + case UCP(0x201C) : closeQuote = UCP(0x201D); + break; + case UCP(0x201E) : closeQuote = UCP(0x201F); + break; + case UCP(0x2039) : closeQuote = UCP(0x203A); // ! U+2039 and U+203A are reversible. + break; + case UCP(0x203A) : closeQuote = UCP(0x2039); + break; + case UCP(0x3008) : closeQuote = UCP(0x3009); + break; + case UCP(0x300A) : closeQuote = UCP(0x300B); + break; + case UCP(0x300C) : closeQuote = UCP(0x300D); + break; + case UCP(0x300E) : closeQuote = UCP(0x300F); + break; + case UCP(0x301D) : closeQuote = UCP(0x301F); // ! U+301E also closes U+301D. + break; + default : closeQuote = 0; + break; + + } + + return closeQuote; + +} // GetClosingQuote + + +// ------------------------------------------------------------------------------------------------- +// CodePointToUTF8 +// --------------- + +static void +CodePointToUTF8 ( UniCodePoint uniChar, XMP_VarString & utf8Str ) +{ + size_t i, byteCount; + XMP_Uns8 buffer [8]; + UniCodePoint cpTemp; + + if ( uniChar <= 0x7F ) { + + i = 7; + byteCount = 1; + buffer[7] = char(uniChar); + + } else { + + // --------------------------------------------------------------------------------------- + // Copy the data bits from the low order end to the high order end, include the 0x80 mask. + + i = 8; + cpTemp = uniChar; + while ( cpTemp != 0 ) { + -- i; // Exit with i pointing to the last byte stored. + buffer[i] = UnsByte(0x80) | (UnsByte(cpTemp) & 0x3F); + cpTemp = cpTemp >> 6; + } + byteCount = 8 - i; // The total number of bytes needed. + XMP_Assert ( (2 <= byteCount) && (byteCount <= 6) ); + + // ------------------------------------------------------------------------------------- + // Make sure the high order byte can hold the byte count mask, compute and set the mask. + + size_t bitCount = 0; // The number of data bits in the first byte. + for ( cpTemp = (buffer[i] & UnsByte(0x3F)); cpTemp != 0; cpTemp = cpTemp >> 1 ) bitCount += 1; + if ( bitCount > (8 - (byteCount + 1)) ) byteCount += 1; + + i = 8 - byteCount; // First byte index and mask shift count. + XMP_Assert ( (0 <= i) && (i <= 6) ); + buffer[i] |= (UnsByte(0xFF) << i) & UnsByte(0xFF); // AUDIT: Safe, i is between 0 and 6. + + } + + utf8Str.assign ( (char*)(&buffer[i]), byteCount ); + +} // CodePointToUTF8 + + +// ------------------------------------------------------------------------------------------------- +// ApplyQuotes +// ----------- + +static void +ApplyQuotes ( XMP_VarString * item, UniCodePoint openQuote, UniCodePoint closeQuote, bool allowCommas ) +{ + bool prevSpace = false; + size_t charOffset, charLen; + UniCharKind charKind; + UniCodePoint uniChar; + + // ----------------------------------------------------------------------------------------- + // See if there are any separators in the value. Stop at the first occurrance. This is a bit + // tricky in order to make typical typing work conveniently. The purpose of applying quotes + // is to preserve the values when splitting them back apart. That is CatenateContainerItems + // and SeparateContainerItems must round trip properly. For the most part we only look for + // separators here. Internal quotes, as in -- Irving "Bud" Jones -- won't cause problems in + // the separation. An initial quote will though, it will make the value look quoted. + + charOffset = 0; + ClassifyCharacter ( item->c_str(), charOffset, &charKind, &charLen, &uniChar ); + + if ( charKind != UCK_quote ) { + + for ( charOffset = 0; size_t(charOffset) < item->size(); charOffset += charLen ) { + + ClassifyCharacter ( item->c_str(), charOffset, &charKind, &charLen, &uniChar ); + + if ( charKind == UCK_space ) { + if ( prevSpace ) break; // Multiple spaces are a separator. + prevSpace = true; + } else { + prevSpace = false; + if ( (charKind == UCK_semicolon) || (charKind == UCK_control) ) break; + if ( (charKind == UCK_comma) && (! allowCommas) ) break; + } + + } + + } + + if ( size_t(charOffset) < item->size() ) { + + // -------------------------------------------------------------------------------------- + // Create a quoted copy, doubling any internal quotes that match the outer ones. Internal + // quotes did not stop the "needs quoting" search, but they do need doubling. So we have + // to rescan the front of the string for quotes. Handle the special case of U+301D being + // closed by either U+301E or U+301F. + + XMP_VarString newItem; + size_t splitPoint; + + for ( splitPoint = 0; splitPoint <= charOffset; ++splitPoint ) { + ClassifyCharacter ( item->c_str(), splitPoint, &charKind, &charLen, &uniChar ); + if ( charKind == UCK_quote ) break; + } + + CodePointToUTF8 ( openQuote, newItem ); + newItem.append ( *item, 0, splitPoint ); // Copy the leading "normal" portion. + + for ( charOffset = splitPoint; size_t(charOffset) < item->size(); charOffset += charLen ) { + ClassifyCharacter ( item->c_str(), charOffset, &charKind, &charLen, &uniChar ); + newItem.append ( *item, charOffset, charLen ); + if ( (charKind == UCK_quote) && IsSurroundingQuote ( uniChar, openQuote, closeQuote ) ) { + newItem.append ( *item, charOffset, charLen ); + } + } + + XMP_VarString closeStr; + CodePointToUTF8 ( closeQuote, closeStr ); + newItem.append ( closeStr ); + + *item = newItem; + + } + +} // ApplyQuotes + + +// ------------------------------------------------------------------------------------------------- +// IsInternalProperty +// ------------------ + +// *** Need static checks of the schema prefixes! + +#define IsExternalProperty(s,p) (! IsInternalProperty ( s, p )) + +static bool +IsInternalProperty ( const XMP_VarString & schema, const XMP_VarString & prop ) +{ + bool isInternal = false; + + if ( schema == kXMP_NS_DC ) { + + if ( (prop == "dc:format") || + (prop == "dc:language") ) { + isInternal = true; + } + + } else if ( schema == kXMP_NS_XMP ) { + + if ( (prop == "xmp:BaseURL") || + (prop == "xmp:CreatorTool") || + (prop == "xmp:Format") || + (prop == "xmp:Locale") || + (prop == "xmp:MetadataDate") || + (prop == "xmp:ModifyDate") ) { + isInternal = true; + } + + } else if ( schema == kXMP_NS_PDF ) { + + if ( (prop == "pdf:BaseURL") || + (prop == "pdf:Creator") || + (prop == "pdf:ModDate") || + (prop == "pdf:PDFVersion") || + (prop == "pdf:Producer") ) { + isInternal = true; + } + + } else if ( schema == kXMP_NS_TIFF ) { + + isInternal = true; // ! The TIFF properties are internal by default. + if ( (prop == "tiff:ImageDescription") || // ! ImageDescription, Artist, and Copyright are aliased. + (prop == "tiff:Artist") || + (prop == "tiff:Copyright") ) { + isInternal = false; + } + + } else if ( schema == kXMP_NS_EXIF ) { + + isInternal = true; // ! The EXIF properties are internal by default. + if ( prop == "exif:UserComment" ) isInternal = false; + + } else if ( schema == kXMP_NS_EXIF_Aux ) { + + isInternal = true; // ! The EXIF Aux properties are internal by default. + + } else if ( schema == kXMP_NS_Photoshop ) { + + if ( prop == "photoshop:ICCProfile" ) isInternal = true; + + } else if ( schema == kXMP_NS_CameraRaw ) { + + if ( (prop == "crs:Version") || + (prop == "crs:RawFileName") || + (prop == "crs:ToneCurveName") ) { + isInternal = true; + } + + } else if ( schema == kXMP_NS_AdobeStockPhoto ) { + + isInternal = true; // ! The bmsp schema has only internal properties. + + } else if ( schema == kXMP_NS_XMP_MM ) { + + isInternal = true; // ! The xmpMM schema has only internal properties. + + } else if ( schema == kXMP_NS_XMP_Text ) { + + isInternal = true; // ! The xmpT schema has only internal properties. + + } else if ( schema == kXMP_NS_XMP_PagedFile ) { + + isInternal = true; // ! The xmpTPg schema has only internal properties. + + } else if ( schema == kXMP_NS_XMP_Graphics ) { + + isInternal = true; // ! The xmpG schema has only internal properties. + + } else if ( schema == kXMP_NS_XMP_Image ) { + + isInternal = true; // ! The xmpGImg schema has only internal properties. + + } else if ( schema == kXMP_NS_XMP_Font ) { + + isInternal = true; // ! The stFNT schema has only internal properties. + + } + + return isInternal; + +} // IsInternalProperty + + +// ------------------------------------------------------------------------------------------------- +// RemoveSchemaChildren +// -------------------- + +static void +RemoveSchemaChildren ( XMP_NodePtrPos schemaPos, bool doAll ) +{ + XMP_Node * schemaNode = *schemaPos; + XMP_Assert ( XMP_NodeIsSchema ( schemaNode->options ) ); + + // ! Iterate backwards to reduce shuffling as children are erased and to simplify the logic for + // ! denoting the current child. (Erasing child n makes the old n+1 now be n.) + + size_t propCount = schemaNode->children.size(); + XMP_NodePtrPos beginPos = schemaNode->children.begin(); + + for ( size_t propNum = propCount-1, propLim = (size_t)(-1); propNum != propLim; --propNum ) { + XMP_NodePtrPos currProp = beginPos + propNum; + if ( doAll || IsExternalProperty ( schemaNode->name, (*currProp)->name ) ) { + delete *currProp; // ! Both delete the node and erase the pointer from the parent. + schemaNode->children.erase ( currProp ); + } + } + + if ( schemaNode->children.empty() ) { + XMP_Node * tree = schemaNode->parent; + tree->children.erase ( schemaPos ); + delete schemaNode; + } + +} // RemoveSchemaChildren + + +// ------------------------------------------------------------------------------------------------- +// ItemValuesMatch +// --------------- +// +// Does the value comparisons for array merging as part of XMPUtils::AppendProperties. + +static bool +ItemValuesMatch ( const XMP_Node * leftNode, const XMP_Node * rightNode ) +{ + const XMP_OptionBits leftForm = leftNode->options & kXMP_PropCompositeMask; + const XMP_OptionBits rightForm = leftNode->options & kXMP_PropCompositeMask; + + if ( leftForm != rightForm ) return false; + + if ( leftForm == 0 ) { + + // Simple nodes, check the values and xml:lang qualifiers. + + if ( leftNode->value != rightNode->value ) return false; + if ( (leftNode->options & kXMP_PropHasLang) != (rightNode->options & kXMP_PropHasLang) ) return false; + if ( leftNode->options & kXMP_PropHasLang ) { + if ( leftNode->qualifiers[0]->value != rightNode->qualifiers[0]->value ) return false; + } + + } else if ( leftForm == kXMP_PropValueIsStruct ) { + + // Struct nodes, see if all fields match, ignoring order. + + if ( leftNode->children.size() != rightNode->children.size() ) return false; + + for ( size_t leftNum = 0, leftLim = leftNode->children.size(); leftNum != leftLim; ++leftNum ) { + const XMP_Node * leftField = leftNode->children[leftNum]; + const XMP_Node * rightField = FindConstChild ( rightNode, leftField->name.c_str() ); + if ( (rightField == 0) || (! ItemValuesMatch ( leftField, rightField )) ) return false; + } + + } else { + + // Array nodes, see if the "leftNode" values are present in the "rightNode", ignoring order, duplicates, + // and extra values in the rightNode-> The rightNode is the destination for AppendProperties. + + XMP_Assert ( leftForm & kXMP_PropValueIsArray ); + + for ( size_t leftNum = 0, leftLim = leftNode->children.size(); leftNum != leftLim; ++leftNum ) { + + const XMP_Node * leftItem = leftNode->children[leftNum]; + + size_t rightNum, rightLim; + for ( rightNum = 0, rightLim = rightNode->children.size(); rightNum != rightLim; ++rightNum ) { + const XMP_Node * rightItem = rightNode->children[rightNum]; + if ( ItemValuesMatch ( leftItem, rightItem ) ) break; + } + if ( rightNum == rightLim ) return false; + + } + + } + + return true; // All of the checks passed. + +} // ItemValuesMatch + + +// ------------------------------------------------------------------------------------------------- +// AppendSubtree +// ------------- +// +// The main implementation of XMPUtils::AppendProperties. See the description in TXMPMeta.hpp. + +static void +AppendSubtree ( const XMP_Node * sourceNode, XMP_Node * destParent, const bool replaceOld, const bool deleteEmpty ) +{ + XMP_NodePtrPos destPos; + XMP_Node * destNode = FindChildNode ( destParent, sourceNode->name.c_str(), kXMP_ExistingOnly, &destPos ); + + bool valueIsEmpty = false; + if ( deleteEmpty ) { + if ( XMP_PropIsSimple ( sourceNode->options ) ) { + valueIsEmpty = sourceNode->value.empty(); + } else { + valueIsEmpty = sourceNode->children.empty(); + } + } + + if ( deleteEmpty & valueIsEmpty ) { + + if ( destNode != 0 ) { + delete ( destNode ); + destParent->children.erase ( destPos ); + } + + } else if ( destNode == 0 ) { + + // The one easy case, the destination does not exist. + CloneSubtree ( sourceNode, destParent ); + + } else if ( replaceOld ) { + + // The destination exists and should be replaced. + + destNode->value = sourceNode->value; // *** Should use SetNode. + destNode->options = sourceNode->options; + destNode->RemoveChildren(); + destNode->RemoveQualifiers(); + CloneOffspring ( sourceNode, destNode ); + + #if 0 // *** XMP_DebugBuild + destNode->_valuePtr = destNode->value.c_str(); + #endif + + } else { + + // The destination exists and is not totally replaced. Structs and arrays are merged. + + XMP_OptionBits sourceForm = sourceNode->options & kXMP_PropCompositeMask; + XMP_OptionBits destForm = destNode->options & kXMP_PropCompositeMask; + if ( sourceForm != destForm ) return; + + if ( sourceForm == kXMP_PropValueIsStruct ) { + + // To merge a struct process the fields recursively. E.g. add simple missing fields. The + // recursive call to AppendSubtree will handle deletion for fields with empty values. + + for ( size_t sourceNum = 0, sourceLim = sourceNode->children.size(); sourceNum != sourceLim; ++sourceNum ) { + const XMP_Node * sourceField = sourceNode->children[sourceNum]; + AppendSubtree ( sourceField, destNode, replaceOld, deleteEmpty ); + if ( deleteEmpty && destNode->children.empty() ) { + delete ( destNode ); + destParent->children.erase ( destPos ); + } + } + + } else if ( sourceForm & kXMP_PropArrayIsAltText ) { + + // Merge AltText arrays by the xml:lang qualifiers. Make sure x-default is first. Make a + // special check for deletion of empty values. Meaningful in AltText arrays because the + // xml:lang qualifier provides unambiguous source/dest correspondence. + + for ( size_t sourceNum = 0, sourceLim = sourceNode->children.size(); sourceNum != sourceLim; ++sourceNum ) { + + const XMP_Node * sourceItem = sourceNode->children[sourceNum]; + if ( sourceItem->qualifiers.empty() || (sourceItem->qualifiers[0]->name != "xml:lang") ) continue; + + XMP_Index destIndex = LookupLangItem ( destNode, sourceItem->qualifiers[0]->value ); + + if ( deleteEmpty && sourceItem->value.empty() ) { + + if ( destIndex != -1 ) { + delete ( destNode->children[destIndex] ); + destNode->children.erase ( destNode->children.begin() + destIndex ); + if ( destNode->children.empty() ) { + delete ( destNode ); + destParent->children.erase ( destPos ); + } + } + + } else { + + if ( destIndex != -1 ) continue; // Not replacing, keep the existing item. + + if ( (sourceItem->qualifiers[0]->value != "x-default") || destNode->children.empty() ) { + CloneSubtree ( sourceItem, destNode ); + } else { + XMP_Node * destItem = new XMP_Node ( destNode, sourceItem->name, sourceItem->value, sourceItem->options ); + CloneOffspring ( sourceItem, destItem ); + destNode->children.insert ( destNode->children.begin(), destItem ); + } + + } + + } + + } else if ( sourceForm & kXMP_PropValueIsArray ) { + + // Merge other arrays by item values. Don't worry about order or duplicates. Source + // items with empty values do not cause deletion, that conflicts horribly with merging. + + for ( size_t sourceNum = 0, sourceLim = sourceNode->children.size(); sourceNum != sourceLim; ++sourceNum ) { + const XMP_Node * sourceItem = sourceNode->children[sourceNum]; + + size_t destNum, destLim; + for ( destNum = 0, destLim = destNode->children.size(); destNum != destLim; ++destNum ) { + const XMP_Node * destItem = destNode->children[destNum]; + if ( ItemValuesMatch ( sourceItem, destItem ) ) break; + } + if ( destNum == destLim ) CloneSubtree ( sourceItem, destNode ); + + } + + } + + } + +} // AppendSubtree + + +// ================================================================================================= +// Class Static Functions +// ====================== + +// ------------------------------------------------------------------------------------------------- +// CatenateArrayItems +// ------------------ + +/* class static */ void +XMPUtils::CatenateArrayItems ( const XMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr separator, + XMP_StringPtr quotes, + XMP_OptionBits options, + XMP_StringPtr * catedStr, + XMP_StringLen * catedLen ) +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) ); // ! Enforced by wrapper. + XMP_Assert ( (separator != 0) && (quotes != 0) && (catedStr != 0) && (catedLen != 0) ); // ! Enforced by wrapper. + + size_t strLen, strPos, charLen; + UniCharKind charKind; + UniCodePoint currUCP, openQuote, closeQuote; + + const bool allowCommas = ((options & kXMPUtil_AllowCommas) != 0); + + const XMP_Node * arrayNode = 0; // ! Move up to avoid gcc complaints. + XMP_OptionBits arrayForm = 0; + const XMP_Node * currItem = 0; + + // Make sure the separator is OK. It must be one semicolon surrounded by zero or more spaces. + // Any of the recognized semicolons or spaces are allowed. + + strPos = 0; + strLen = strlen ( separator ); + bool haveSemicolon = false; + + while ( strPos < strLen ) { + ClassifyCharacter ( separator, strPos, &charKind, &charLen, &currUCP ); + strPos += charLen; + if ( charKind == UCK_semicolon ) { + if ( haveSemicolon ) XMP_Throw ( "Separator can have only one semicolon", kXMPErr_BadParam ); + haveSemicolon = true; + } else if ( charKind != UCK_space ) { + XMP_Throw ( "Separator can have only spaces and one semicolon", kXMPErr_BadParam ); + } + }; + if ( ! haveSemicolon ) XMP_Throw ( "Separator must have one semicolon", kXMPErr_BadParam ); + + // Make sure the open and close quotes are a legitimate pair. + + strLen = strlen ( quotes ); + ClassifyCharacter ( quotes, 0, &charKind, &charLen, &openQuote ); + if ( charKind != UCK_quote ) XMP_Throw ( "Invalid quoting character", kXMPErr_BadParam ); + + if ( charLen == strLen ) { + closeQuote = openQuote; + } else { + strPos = charLen; + ClassifyCharacter ( quotes, strPos, &charKind, &charLen, &closeQuote ); + if ( charKind != UCK_quote ) XMP_Throw ( "Invalid quoting character", kXMPErr_BadParam ); + if ( (strPos + charLen) != strLen ) XMP_Throw ( "Quoting string too long", kXMPErr_BadParam ); + } + if ( closeQuote != GetClosingQuote ( openQuote ) ) XMP_Throw ( "Mismatched quote pair", kXMPErr_BadParam ); + + // Return an empty result if the array does not exist, hurl if it isn't the right form. + + sCatenatedItems->erase(); + + XMP_ExpandedXPath arrayPath; + ExpandXPath ( schemaNS, arrayName, &arrayPath ); + + arrayNode = FindConstNode ( &xmpObj.tree, arrayPath ); + if ( arrayNode == 0 ) goto EXIT; // ! Need to set the output pointer and length. + + arrayForm = arrayNode->options & kXMP_PropCompositeMask; + if ( (! (arrayForm & kXMP_PropValueIsArray)) || (arrayForm & kXMP_PropArrayIsAlternate) ) { + XMP_Throw ( "Named property must be non-alternate array", kXMPErr_BadParam ); + } + if ( arrayNode->children.empty() ) goto EXIT; // ! Need to set the output pointer and length. + + // Build the result, quoting the array items, adding separators. Hurl if any item isn't simple. + // Start the result with the first value, then add the rest with a preceding separator. + + currItem = arrayNode->children[0]; + + if ( (currItem->options & kXMP_PropCompositeMask) != 0 ) XMP_Throw ( "Array items must be simple", kXMPErr_BadParam ); + *sCatenatedItems = currItem->value; + ApplyQuotes ( sCatenatedItems, openQuote, closeQuote, allowCommas ); + + for ( size_t itemNum = 1, itemLim = arrayNode->children.size(); itemNum != itemLim; ++itemNum ) { + const XMP_Node * currItem = arrayNode->children[itemNum]; + if ( (currItem->options & kXMP_PropCompositeMask) != 0 ) XMP_Throw ( "Array items must be simple", kXMPErr_BadParam ); + XMP_VarString tempStr ( currItem->value ); + ApplyQuotes ( &tempStr, openQuote, closeQuote, allowCommas ); + *sCatenatedItems += separator; + *sCatenatedItems += tempStr; + } + +EXIT: + *catedStr = sCatenatedItems->c_str(); + *catedLen = sCatenatedItems->size(); + +} // CatenateArrayItems + + +// ------------------------------------------------------------------------------------------------- +// SeparateArrayItems +// ------------------ + +/* class static */ void +XMPUtils::SeparateArrayItems ( XMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + XMP_StringPtr catedStr ) +{ + XMP_Assert ( (schemaNS != 0) && (arrayName != 0) && (catedStr != 0) ); // ! Enforced by wrapper. + + XMP_VarString itemValue; + size_t itemStart, itemEnd; + size_t nextSize, charSize = 0; // Avoid VS uninit var warnings. + UniCharKind nextKind, charKind = UCK_normal; + UniCodePoint nextChar, uniChar = 0; + + // Extract "special" option bits, verify and normalize the others. + + bool preserveCommas = false; + if ( options & kXMPUtil_AllowCommas ) { + preserveCommas = true; + options ^= kXMPUtil_AllowCommas; + } + + options = VerifySetOptions ( options, 0 ); // Keep a zero value, has special meaning below. + if ( options & ~kXMP_PropArrayFormMask ) XMP_Throw ( "Options can only provide array form", kXMPErr_BadOptions ); + + // Find the array node, make sure it is OK. Move the current children aside, to be readded later if kept. + + XMP_ExpandedXPath arrayPath; + ExpandXPath ( schemaNS, arrayName, &arrayPath ); + XMP_Node * arrayNode = FindNode ( &xmpObj->tree, arrayPath, kXMP_ExistingOnly ); + + if ( arrayNode != 0 ) { + // The array exists, make sure the form is compatible. Zero arrayForm means take what exists. + XMP_OptionBits arrayForm = arrayNode->options & kXMP_PropArrayFormMask; + if ( (arrayForm == 0) || (arrayForm & kXMP_PropArrayIsAlternate) ) { + XMP_Throw ( "Named property must be non-alternate array", kXMPErr_BadXPath ); + } + if ( (options != 0) && (options != arrayForm) ) XMP_Throw ( "Mismatch of specified and existing array form", kXMPErr_BadXPath ); // *** Right error? + } else { + // The array does not exist, try to create it. + arrayNode = FindNode ( &xmpObj->tree, arrayPath, kXMP_CreateNodes, (options | kXMP_PropValueIsArray) ); + if ( arrayNode == 0 ) XMP_Throw ( "Failed to create named array", kXMPErr_BadXPath ); + } + + XMP_NodeOffspring oldChildren ( arrayNode->children ); + size_t oldChildCount = oldChildren.size(); + arrayNode->children.clear(); + + // Extract the item values one at a time, until the whole input string is done. Be very careful + // in the extraction about the string positions. They are essentially byte pointers, while the + // contents are UTF-8. Adding or subtracting 1 does not necessarily move 1 Unicode character! + + size_t endPos = strlen ( catedStr ); + + itemEnd = 0; + while ( itemEnd < endPos ) { + + // Skip any leading spaces and separation characters. Always skip commas here. They can be + // kept when within a value, but not when alone between values. + + for ( itemStart = itemEnd; itemStart < endPos; itemStart += charSize ) { + ClassifyCharacter ( catedStr, itemStart, &charKind, &charSize, &uniChar ); + if ( (charKind == UCK_normal) || (charKind == UCK_quote) ) break; + } + if ( itemStart >= endPos ) break; + + if ( charKind != UCK_quote ) { + + // This is not a quoted value. Scan for the end, create an array item from the substring. + + for ( itemEnd = itemStart; itemEnd < endPos; itemEnd += charSize ) { + + ClassifyCharacter ( catedStr, itemEnd, &charKind, &charSize, &uniChar ); + + if ( (charKind == UCK_normal) || (charKind == UCK_quote) ) continue; + if ( (charKind == UCK_comma) && preserveCommas ) continue; + if ( charKind != UCK_space ) break; + + if ( (itemEnd + charSize) >= endPos ) break; // Anything left? + ClassifyCharacter ( catedStr, (itemEnd+charSize), &nextKind, &nextSize, &nextChar ); + if ( (nextKind == UCK_normal) || (nextKind == UCK_quote) ) continue; + if ( (nextKind == UCK_comma) && preserveCommas ) continue; + break; // Have multiple spaces, or a space followed by a separator. + + } + + itemValue.assign ( catedStr, itemStart, (itemEnd - itemStart) ); + + } else { + + // Accumulate quoted values into a local string, undoubling internal quotes that + // match the surrounding quotes. Do not undouble "unmatching" quotes. + + UniCodePoint openQuote = uniChar; + UniCodePoint closeQuote = GetClosingQuote ( openQuote ); + + itemStart += charSize; // Skip the opening quote; + itemValue.erase(); + + for ( itemEnd = itemStart; itemEnd < endPos; itemEnd += charSize ) { + + ClassifyCharacter ( catedStr, itemEnd, &charKind, &charSize, &uniChar ); + + if ( (charKind != UCK_quote) || (! IsSurroundingQuote ( uniChar, openQuote, closeQuote)) ) { + + // This is not a matching quote, just append it to the item value. + itemValue.append ( catedStr, itemEnd, charSize ); + + } else { + + // This is a "matching" quote. Is it doubled, or the final closing quote? Tolerate + // various edge cases like undoubled opening (non-closing) quotes, or end of input. + + if ( (itemEnd + charSize) < endPos ) { + ClassifyCharacter ( catedStr, itemEnd+charSize, &nextKind, &nextSize, &nextChar ); + } else { + nextKind = UCK_semicolon; nextSize = 0; nextChar = 0x3B; + } + + if ( uniChar == nextChar ) { + // This is doubled, copy it and skip the double. + itemValue.append ( catedStr, itemEnd, charSize ); + itemEnd += nextSize; // Loop will add in charSize. + } else if ( ! IsClosingingQuote ( uniChar, openQuote, closeQuote ) ) { + // This is an undoubled, non-closing quote, copy it. + itemValue.append ( catedStr, itemEnd, charSize ); + } else { + // This is an undoubled closing quote, skip it and exit the loop. + itemEnd += charSize; + break; + } + + } + + } // Loop to accumulate the quoted value. + + } + + // Add the separated item to the array. Keep a matching old value in case it had separators. + + size_t oldChild; + for ( oldChild = 0; oldChild < oldChildCount; ++oldChild ) { + if ( (oldChildren[oldChild] != 0) && (itemValue == oldChildren[oldChild]->value) ) break; + } + + XMP_Node * newItem = 0; + if ( oldChild == oldChildCount ) { + newItem = new XMP_Node ( arrayNode, kXMP_ArrayItemName, itemValue.c_str(), 0 ); + } else { + newItem = oldChildren[oldChild]; + oldChildren[oldChild] = 0; // ! Don't match again, let duplicates be seen. + } + arrayNode->children.push_back ( newItem ); + + } // Loop through all of the returned items. + + // Delete any of the old children that were not kept. + for ( size_t i = 0; i < oldChildCount; ++i ) { + if ( oldChildren[i] != 0 ) delete oldChildren[i]; + } + +} // SeparateArrayItems + + +// ------------------------------------------------------------------------------------------------- +// RemoveProperties +// ---------------- + +/* class static */ void +XMPUtils::RemoveProperties ( XMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options ) +{ + XMP_Assert ( (schemaNS != 0) && (propName != 0) ); // ! Enforced by wrapper. + + const bool doAll = XMP_TestOption (options, kXMPUtil_DoAllProperties ); + const bool includeAliases = XMP_TestOption ( options, kXMPUtil_IncludeAliases ); + + if ( *propName != 0 ) { + + // Remove just the one indicated property. This might be an alias, the named schema might + // not actually exist. So don't lookup the schema node. + + if ( *schemaNS == 0 ) XMP_Throw ( "Property name requires schema namespace", kXMPErr_BadParam ); + + XMP_ExpandedXPath expPath; + ExpandXPath ( schemaNS, propName, &expPath ); + + XMP_NodePtrPos propPos; + XMP_Node * propNode = FindNode ( &(xmpObj->tree), expPath, kXMP_ExistingOnly, kXMP_NoOptions, &propPos ); + if ( propNode != 0 ) { + if ( doAll || IsExternalProperty ( expPath[kSchemaStep].step, expPath[kRootPropStep].step ) ) { + XMP_Node * parent = propNode->parent; // *** Should have XMP_Node::RemoveChild(pos). + delete propNode; // ! Both delete the node and erase the pointer from the parent. + parent->children.erase ( propPos ); + DeleteEmptySchema ( parent ); + } + } + + } else if ( *schemaNS != 0 ) { + + // Remove all properties from the named schema. Optionally include aliases, in which case + // there might not be an actual schema node. + + XMP_NodePtrPos schemaPos; + XMP_Node * schemaNode = FindSchemaNode ( &xmpObj->tree, schemaNS, kXMP_ExistingOnly, &schemaPos ); + if ( schemaNode != 0 ) RemoveSchemaChildren ( schemaPos, doAll ); + + if ( includeAliases ) { + + // We're removing the aliases also. Look them up by their namespace prefix. Yes, the + // alias map is sorted so we could process just that portion. But that takes more code + // and the extra speed isn't worth it. (Plus this way we avoid a dependence on the map + // implementation.) Lookup the XMP node from the alias, to make sure the actual exists. + + XMP_StringPtr nsPrefix; + XMP_StringLen nsLen; + (void) XMPMeta::GetNamespacePrefix ( schemaNS, &nsPrefix, &nsLen ); + + XMP_AliasMapPos currAlias = sRegisteredAliasMap->begin(); + XMP_AliasMapPos endAlias = sRegisteredAliasMap->end(); + + for ( ; currAlias != endAlias; ++currAlias ) { + if ( strncmp ( currAlias->first.c_str(), nsPrefix, nsLen ) == 0 ) { + XMP_NodePtrPos actualPos; + XMP_Node * actualProp = FindNode ( &xmpObj->tree, currAlias->second, kXMP_ExistingOnly, kXMP_NoOptions, &actualPos ); + if ( actualProp != 0 ) { + XMP_Node * rootProp = actualProp; + while ( ! XMP_NodeIsSchema ( rootProp->parent->options ) ) rootProp = rootProp->parent; + if ( doAll || IsExternalProperty ( rootProp->parent->name, rootProp->name ) ) { + XMP_Node * parent = actualProp->parent; + delete actualProp; // ! Both delete the node and erase the pointer from the parent. + parent->children.erase ( actualPos ); + DeleteEmptySchema ( parent ); + } + } + } + } + + } + + } else { + + // Remove all appropriate properties from all schema. In this case we don't have to be + // concerned with aliases, they are handled implicitly from the actual properties. + + // ! Iterate backwards to reduce shuffling if schema are erased and to simplify the logic + // ! for denoting the current schema. (Erasing schema n makes the old n+1 now be n.) + + size_t schemaCount = xmpObj->tree.children.size(); + XMP_NodePtrPos beginPos = xmpObj->tree.children.begin(); + + for ( size_t schemaNum = schemaCount-1, schemaLim = (size_t)(-1); schemaNum != schemaLim; --schemaNum ) { + XMP_NodePtrPos currSchema = beginPos + schemaNum; + RemoveSchemaChildren ( currSchema, doAll ); + } + + } + +} // RemoveProperties + + +// ------------------------------------------------------------------------------------------------- +// AppendProperties +// ---------------- + +/* class static */ void +XMPUtils::AppendProperties ( const XMPMeta & source, + XMPMeta * dest, + XMP_OptionBits options ) +{ + XMP_Assert ( dest != 0 ); // ! Enforced by wrapper. + + const bool doAll = ((options & kXMPUtil_DoAllProperties) != 0); + const bool replaceOld = ((options & kXMPUtil_ReplaceOldValues) != 0); + const bool deleteEmpty = ((options & kXMPUtil_DeleteEmptyValues) != 0); + + for ( size_t schemaNum = 0, schemaLim = source.tree.children.size(); schemaNum != schemaLim; ++schemaNum ) { + + const XMP_Node * sourceSchema = source.tree.children[schemaNum]; + + // Make sure we have a destination schema node. Remember if it is newly created. + + XMP_Node * destSchema = FindSchemaNode ( &dest->tree, sourceSchema->name.c_str(), kXMP_ExistingOnly ); + const bool newDestSchema = (destSchema == 0); + if ( newDestSchema ) { + destSchema = new XMP_Node ( &dest->tree, sourceSchema->name, sourceSchema->value, kXMP_SchemaNode ); + dest->tree.children.push_back ( destSchema ); + } + + // Process the source schema's children. Do this backwards in case deleteEmpty is set. + + for ( long propNum = ((long)sourceSchema->children.size() - 1); propNum >= 0; --propNum ) { + const XMP_Node * sourceProp = sourceSchema->children[propNum]; + if ( doAll || IsExternalProperty ( sourceSchema->name, sourceProp->name ) ) { + AppendSubtree ( sourceProp, destSchema, replaceOld, deleteEmpty ); +// *** RemoveMultiValueInfo ( dest, sourceSchema->name.c_str(), sourceProp->name.c_str() ); + } + } + + if ( destSchema->children.empty() ) { + if ( newDestSchema ) { + delete ( destSchema ); + dest->tree.children.pop_back(); + } else if ( deleteEmpty ) { + DeleteEmptySchema ( destSchema ); + } + } + + } + +} // AppendProperties + + +// ------------------------------------------------------------------------------------------------- +// DuplicateSubtree +// ---------------- + +/* class static */ void +XMPUtils::DuplicateSubtree ( const XMPMeta & source, + XMPMeta * dest, + XMP_StringPtr sourceNS, + XMP_StringPtr sourceRoot, + XMP_StringPtr destNS, + XMP_StringPtr destRoot, + XMP_OptionBits options ) +{ + UNUSED(options); + + bool fullSourceTree = false; + bool fullDestTree = false; + + XMP_ExpandedXPath sourcePath, destPath; + + const XMP_Node * sourceNode = 0; + XMP_Node * destNode = 0; + + XMP_Assert ( (sourceNS != 0) && (*sourceNS != 0) ); + XMP_Assert ( (sourceRoot != 0) && (*sourceRoot != 0) ); + XMP_Assert ( (dest != 0) && (destNS != 0) && (destRoot != 0) ); + + if ( *destNS == 0 ) destNS = sourceNS; + if ( *destRoot == 0 ) destRoot = sourceRoot; + + if ( XMP_LitMatch ( sourceNS, "*" ) ) fullSourceTree = true; + if ( XMP_LitMatch ( destNS, "*" ) ) fullDestTree = true; + + if ( (&source == dest) && (fullSourceTree | fullDestTree) ) { + XMP_Throw ( "Can't duplicate tree onto itself", kXMPErr_BadParam ); + } + + if ( fullSourceTree & fullDestTree ) XMP_Throw ( "Use Clone for full tree to full tree", kXMPErr_BadParam ); + + if ( fullSourceTree ) { + + // The destination must be an existing empty struct, copy all of the source top level as fields. + + ExpandXPath ( destNS, destRoot, &destPath ); + destNode = FindNode ( &dest->tree, destPath, kXMP_ExistingOnly ); + + if ( (destNode == 0) || (! XMP_PropIsStruct ( destNode->options )) ) { + XMP_Throw ( "Destination must be an existing struct", kXMPErr_BadXPath ); + } + + if ( ! destNode->children.empty() ) { + if ( options & kXMP_DeleteExisting ) { + destNode->RemoveChildren(); + } else { + XMP_Throw ( "Destination must be an empty struct", kXMPErr_BadXPath ); + } + } + + for ( size_t schemaNum = 0, schemaLim = source.tree.children.size(); schemaNum < schemaLim; ++schemaNum ) { + + const XMP_Node * currSchema = source.tree.children[schemaNum]; + + for ( size_t propNum = 0, propLim = currSchema->children.size(); propNum < propLim; ++propNum ) { + sourceNode = currSchema->children[propNum]; + XMP_Node * copyNode = new XMP_Node ( destNode, sourceNode->name, sourceNode->value, sourceNode->options ); + destNode->children.push_back ( copyNode ); + CloneOffspring ( sourceNode, copyNode ); + } + + } + + } else if ( fullDestTree ) { + + // The source node must be an existing struct, copy all of the fields to the dest top level. + + XMP_ExpandedXPath sourcePath; + ExpandXPath ( sourceNS, sourceRoot, &sourcePath ); + sourceNode = FindConstNode ( &source.tree, sourcePath ); + + if ( (sourceNode == 0) || (! XMP_PropIsStruct ( sourceNode->options )) ) { + XMP_Throw ( "Source must be an existing struct", kXMPErr_BadXPath ); + } + + destNode = &dest->tree; + + if ( ! destNode->children.empty() ) { + if ( options & kXMP_DeleteExisting ) { + destNode->RemoveChildren(); + } else { + XMP_Throw ( "Destination tree must be empty", kXMPErr_BadXPath ); + } + } + + std::string nsPrefix; + XMP_StringPtr nsURI; + XMP_StringLen nsLen; + + for ( size_t fieldNum = 0, fieldLim = sourceNode->children.size(); fieldNum < fieldLim; ++fieldNum ) { + + const XMP_Node * currField = sourceNode->children[fieldNum]; + + size_t colonPos = currField->name.find ( ':' ); + nsPrefix.assign ( currField->name.c_str(), colonPos ); + bool nsOK = XMPMeta::GetNamespaceURI ( nsPrefix.c_str(), &nsURI, &nsLen ); + if ( ! nsOK ) XMP_Throw ( "Source field namespace is not global", kXMPErr_BadSchema ); + + XMP_Node * destSchema = FindSchemaNode ( &dest->tree, nsURI, kXMP_CreateNodes ); + if ( destSchema == 0 ) XMP_Throw ( "Failed to find destination schema", kXMPErr_BadSchema ); + + XMP_Node * copyNode = new XMP_Node ( destSchema, currField->name, currField->value, currField->options ); + destSchema->children.push_back ( copyNode ); + CloneOffspring ( currField, copyNode ); + + } + + } else { + + // Find the root nodes for the source and destination subtrees. + + ExpandXPath ( sourceNS, sourceRoot, &sourcePath ); + ExpandXPath ( destNS, destRoot, &destPath ); + + sourceNode = FindConstNode ( &source.tree, sourcePath ); + if ( sourceNode == 0 ) XMP_Throw ( "Can't find source subtree", kXMPErr_BadXPath ); + + destNode = FindNode ( &dest->tree, destPath, kXMP_ExistingOnly ); // Dest must not yet exist. + if ( destNode != 0 ) XMP_Throw ( "Destination subtree must not exist", kXMPErr_BadXPath ); + + destNode = FindNode ( &dest->tree, destPath, kXMP_CreateNodes ); // Now create the dest. + if ( destNode == 0 ) XMP_Throw ( "Can't create destination root node", kXMPErr_BadXPath ); + + // Make sure the destination is not within the source! The source can't be inside the destination + // because the source already existed and the destination was just created. + + if ( &source == dest ) { + for ( XMP_Node * testNode = destNode; testNode != 0; testNode = testNode->parent ) { + if ( testNode == sourceNode ) { + // *** delete the just-created dest root node + XMP_Throw ( "Destination subtree is within the source subtree", kXMPErr_BadXPath ); + } + } + } + + // *** Could use a CloneTree util here and maybe elsewhere. + + destNode->value = sourceNode->value; // *** Should use SetNode. + destNode->options = sourceNode->options; + CloneOffspring ( sourceNode, destNode ); + + } + +} // DuplicateSubtree + + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPUtils.cpp b/vendor/exiv2-0.25/xmpsdk/src/XMPUtils.cpp new file mode 100644 index 0000000..dd0d2ce --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPUtils.cpp @@ -0,0 +1,2135 @@ +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" // ! This must be the first include! +#include "XMPCore_Impl.hpp" + +#include "XMPUtils.hpp" + +#include "MD5.h" + +#include + +#include +#include +#include +#include +#include + +#include // For snprintf. + +#if XMP_WinBuild +#ifdef _MSC_VER + #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) + #pragma warning ( disable : 4996 ) // '...' was declared deprecated +#endif +#endif + +// ================================================================================================= +// Local Types and Constants +// ========================= + +static const char * sBase64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +// ================================================================================================= +// Static Variables +// ================ + +XMP_VarString * sComposedPath = 0; // *** Only really need 1 string. Shrink periodically? +XMP_VarString * sConvertedValue = 0; +XMP_VarString * sBase64Str = 0; +XMP_VarString * sCatenatedItems = 0; +XMP_VarString * sStandardXMP = 0; +XMP_VarString * sExtendedXMP = 0; +XMP_VarString * sExtendedDigest = 0; + +// ================================================================================================= +// Local Utilities +// =============== + + +// ------------------------------------------------------------------------------------------------- +// ANSI Time Functions +// ------------------- +// +// A bit of hackery to use the best available time functions. Mac and UNIX have thread safe versions +// of gmtime and localtime. On Mac the CodeWarrior functions are buggy, use Apple's. + +#if XMP_UNIXBuild + + typedef time_t ansi_tt; + typedef struct tm ansi_tm; + + #define ansi_time time + #define ansi_mktime mktime + #define ansi_difftime difftime + + #define ansi_gmtime gmtime_r + #define ansi_localtime localtime_r + +#elif XMP_WinBuild + + // ! VS.Net 2003 (VC7) does not provide thread safe versions of gmtime and localtime. + // ! VS.Net 2005 (VC8) inverts the parameters for the safe versions of gmtime and localtime. + + typedef time_t ansi_tt; + typedef struct tm ansi_tm; + + #define ansi_time time + #define ansi_mktime mktime + #define ansi_difftime difftime + + #if defined(_MSC_VER) && (_MSC_VER >= 1400) + #define ansi_gmtime(tt,tm) gmtime_s ( tm, tt ) + #define ansi_localtime(tt,tm) localtime_s ( tm, tt ) + #else + static inline void ansi_gmtime ( const ansi_tt * ttTime, ansi_tm * tmTime ) + { + ansi_tm * tmx = gmtime ( ttTime ); // ! Hope that there is no race! + if ( tmx == 0 ) XMP_Throw ( "Failure from ANSI C gmtime function", kXMPErr_ExternalFailure ); + *tmTime = *tmx; + } + static inline void ansi_localtime ( const ansi_tt * ttTime, ansi_tm * tmTime ) + { + ansi_tm * tmx = localtime ( ttTime ); // ! Hope that there is no race! + if ( tmx == 0 ) XMP_Throw ( "Failure from ANSI C localtime function", kXMPErr_ExternalFailure ); + *tmTime = *tmx; + } + #endif + +#elif XMP_MacBuild + + #if ! __MWERKS__ + + typedef time_t ansi_tt; + typedef struct tm ansi_tm; + + #define ansi_time time + #define ansi_mktime mktime + #define ansi_difftime difftime + + #define ansi_gmtime gmtime_r + #define ansi_localtime localtime_r + + #else + + // ! The CW versions are buggy. Use Apple's code, time_t, and "struct tm". + + #include + + typedef _BSD_TIME_T_ ansi_tt; + + typedef struct apple_tm { + int tm_sec; /* seconds after the minute [0-60] */ + int tm_min; /* minutes after the hour [0-59] */ + int tm_hour; /* hours since midnight [0-23] */ + int tm_mday; /* day of the month [1-31] */ + int tm_mon; /* months since January [0-11] */ + int tm_year; /* years since 1900 */ + int tm_wday; /* days since Sunday [0-6] */ + int tm_yday; /* days since January 1 [0-365] */ + int tm_isdst; /* Daylight Savings Time flag */ + long tm_gmtoff; /* offset from CUT in seconds */ + char *tm_zone; /* timezone abbreviation */ + } ansi_tm; + + + typedef ansi_tt (* GetTimeProc) ( ansi_tt * ttTime ); + typedef ansi_tt (* MakeTimeProc) ( ansi_tm * tmTime ); + typedef double (* DiffTimeProc) ( ansi_tt t1, ansi_tt t0 ); + + typedef void (* ConvertTimeProc) ( const ansi_tt * ttTime, ansi_tm * tmTime ); + + static GetTimeProc ansi_time = 0; + static MakeTimeProc ansi_mktime = 0; + static DiffTimeProc ansi_difftime = 0; + + static ConvertTimeProc ansi_gmtime = 0; + static ConvertTimeProc ansi_localtime = 0; + + static void LookupTimeProcs() + { + _dyld_lookup_and_bind_with_hint ( "_time", "libSystem", (XMP_Uns32*)&ansi_time, 0 ); + _dyld_lookup_and_bind_with_hint ( "_mktime", "libSystem", (XMP_Uns32*)&ansi_mktime, 0 ); + _dyld_lookup_and_bind_with_hint ( "_difftime", "libSystem", (XMP_Uns32*)&ansi_difftime, 0 ); + _dyld_lookup_and_bind_with_hint ( "_gmtime_r", "libSystem", (XMP_Uns32*)&ansi_gmtime, 0 ); + _dyld_lookup_and_bind_with_hint ( "_localtime_r", "libSystem", (XMP_Uns32*)&ansi_localtime, 0 ); + } + + #endif + +#endif + + +// ------------------------------------------------------------------------------------------------- +// IsLeapYear +// ---------- + +static bool +IsLeapYear ( long year ) +{ + + if ( year < 0 ) year = -year + 1; // Fold the negative years, assuming there is a year 0. + + if ( (year % 4) != 0 ) return false; // Not a multiple of 4. + if ( (year % 100) != 0 ) return true; // A multiple of 4 but not a multiple of 100. + if ( (year % 400) == 0 ) return true; // A multiple of 400. + + return false; // A multiple of 100 but not a multiple of 400. + +} // IsLeapYear + + +// ------------------------------------------------------------------------------------------------- +// DaysInMonth +// ----------- + +static int +DaysInMonth ( XMP_Int32 year, XMP_Int32 month ) +{ + + static short daysInMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + // Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec + + int days = daysInMonth [ month ]; + if ( (month == 2) && IsLeapYear ( year ) ) days += 1; + + return days; + +} // DaysInMonth + + +// ------------------------------------------------------------------------------------------------- +// AdjustTimeOverflow +// ------------------ + +static void +AdjustTimeOverflow ( XMP_DateTime * time ) +{ + enum { kBillion = 1000*1000*1000L }; + + // ---------------------------------------------------------------------------------------------- + // To be safe against pathalogical overflow we first adjust from month to second, then from + // nanosecond back up to month. This leaves each value closer to zero before propagating into it. + // For example if the hour and minute are both near max, adjusting minutes first can cause the + // hour to overflow. + + // ! Photoshop 8 creates "time only" values with zeros for year, month, and day. + + if ( (time->year != 0) || (time->month != 0) || (time->day != 0) ) { + + while ( time->month < 1 ) { + time->year -= 1; + time->month += 12; + } + + while ( time->month > 12 ) { + time->year += 1; + time->month -= 12; + } + + while ( time->day < 1 ) { + time->month -= 1; + if ( time->month < 1 ) { // ! Keep the months in range for indexing daysInMonth! + time->year -= 1; + time->month += 12; + } + time->day += DaysInMonth ( time->year, time->month ); // ! Decrement month before so index here is right! + } + + while ( time->day > DaysInMonth ( time->year, time->month ) ) { + time->day -= DaysInMonth ( time->year, time->month ); // ! Increment month after so index here is right! + time->month += 1; + if ( time->month > 12 ) { + time->year += 1; + time->month -= 12; + } + } + + } + + while ( time->hour < 0 ) { + time->day -= 1; + time->hour += 24; + } + + while ( time->hour >= 24 ) { + time->day += 1; + time->hour -= 24; + } + + while ( time->minute < 0 ) { + time->hour -= 1; + time->minute += 60; + } + + while ( time->minute >= 60 ) { + time->hour += 1; + time->minute -= 60; + } + + while ( time->second < 0 ) { + time->minute -= 1; + time->second += 60; + } + + while ( time->second >= 60 ) { + time->minute += 1; + time->second -= 60; + } + + while ( time->nanoSecond < 0 ) { + time->second -= 1; + time->nanoSecond += kBillion; + } + + while ( time->nanoSecond >= kBillion ) { + time->second += 1; + time->nanoSecond -= kBillion; + } + + while ( time->second < 0 ) { + time->minute -= 1; + time->second += 60; + } + + while ( time->second >= 60 ) { + time->minute += 1; + time->second -= 60; + } + + while ( time->minute < 0 ) { + time->hour -= 1; + time->minute += 60; + } + + while ( time->minute >= 60 ) { + time->hour += 1; + time->minute -= 60; + } + + while ( time->hour < 0 ) { + time->day -= 1; + time->hour += 24; + } + + while ( time->hour >= 24 ) { + time->day += 1; + time->hour -= 24; + } + + if ( (time->year != 0) || (time->month != 0) || (time->day != 0) ) { + + while ( time->month < 1 ) { // Make sure the months are OK first, for DaysInMonth. + time->year -= 1; + time->month += 12; + } + + while ( time->month > 12 ) { + time->year += 1; + time->month -= 12; + } + + while ( time->day < 1 ) { + time->month -= 1; + if ( time->month < 1 ) { + time->year -= 1; + time->month += 12; + } + time->day += DaysInMonth ( time->year, time->month ); + } + + while ( time->day > DaysInMonth ( time->year, time->month ) ) { + time->day -= DaysInMonth ( time->year, time->month ); + time->month += 1; + if ( time->month > 12 ) { + time->year += 1; + time->month -= 12; + } + } + + } + +} // AdjustTimeOverflow + + +// ------------------------------------------------------------------------------------------------- +// GatherInt +// --------- + +static XMP_Int32 +GatherInt ( XMP_StringPtr strValue, size_t * _pos, const char * errMsg ) +{ + size_t pos = *_pos; + XMP_Int32 value = 0; + + for ( char ch = strValue[pos]; ('0' <= ch) && (ch <= '9'); ++pos, ch = strValue[pos] ) { + value = (value * 10) + (ch - '0'); + } + + if ( pos == *_pos ) XMP_Throw ( errMsg, kXMPErr_BadParam ); + *_pos = pos; + return value; + +} // GatherInt + + +// ------------------------------------------------------------------------------------------------- + +static void FormatFullDateTime ( XMP_DateTime & tempDate, char * buffer, size_t bufferLen ) +{ + + AdjustTimeOverflow ( &tempDate ); // Make sure all time parts are in range. + + if ( (tempDate.second == 0) && (tempDate.nanoSecond == 0) ) { + + // Output YYYY-MM-DDThh:mmTZD. + snprintf ( buffer, bufferLen, "%.4d-%02d-%02dT%02d:%02d", // AUDIT: Callers pass sizeof(buffer). + static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day), static_cast(tempDate.hour), static_cast(tempDate.minute) ); + + } else if ( tempDate.nanoSecond == 0 ) { + + // Output YYYY-MM-DDThh:mm:ssTZD. + snprintf ( buffer, bufferLen, "%.4d-%02d-%02dT%02d:%02d:%02d", // AUDIT: Callers pass sizeof(buffer). + static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day), + static_cast(tempDate.hour), static_cast(tempDate.minute), static_cast(tempDate.second) ); + + } else { + + // Output YYYY-MM-DDThh:mm:ss.sTZD. + snprintf ( buffer, bufferLen, "%.4d-%02d-%02dT%02d:%02d:%02d.%09d", // AUDIT: Callers pass sizeof(buffer). + static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day), + static_cast(tempDate.hour), static_cast(tempDate.minute), static_cast(tempDate.second), static_cast(tempDate.nanoSecond) ); + for ( size_t i = strlen(buffer)-1; buffer[i] == '0'; --i ) buffer[i] = 0; // Trim excess digits. + + } + +} // FormatFullDateTime + + +// ------------------------------------------------------------------------------------------------- +// DecodeBase64Char +// ---------------- + +// The decode mapping: +// +// encoded encoded raw +// char value value +// ------- ------- ----- +// A .. Z 0x41 .. 0x5A 0 .. 25 +// a .. z 0x61 .. 0x7A 26 .. 51 +// 0 .. 9 0x30 .. 0x39 52 .. 61 +// + 0x2B 62 +// / 0x2F 63 + +static unsigned char +DecodeBase64Char ( XMP_Uns8 ch ) +{ + + if ( ('A' <= ch) && (ch <= 'Z') ) { + ch = ch - 'A'; + } else if ( ('a' <= ch) && (ch <= 'z') ) { + ch = ch - 'a' + 26; + } else if ( ('0' <= ch) && (ch <= '9') ) { + ch = ch - '0' + 52; + } else if ( ch == '+' ) { + ch = 62; + } else if ( ch == '/' ) { + ch = 63; + } else if ( (ch == ' ') || (ch == kTab) || (ch == kLF) || (ch == kCR) ) { + ch = 0xFF; // Will be ignored by the caller. + } else { + XMP_Throw ( "Invalid base-64 encoded character", kXMPErr_BadParam ); + } + + return ch; + +} // DecodeBase64Char (); + + +// ------------------------------------------------------------------------------------------------- +// EstimateSizeForJPEG +// ------------------- +// +// Estimate the serialized size for the subtree of an XMP_Node. Support for PackageForJPEG. + +static size_t +EstimateSizeForJPEG ( const XMP_Node * xmpNode ) +{ + + size_t estSize = 0; + size_t nameSize = xmpNode->name.size(); + bool includeName = (! XMP_PropIsArray ( xmpNode->parent->options )); + + if ( XMP_PropIsSimple ( xmpNode->options ) ) { + + if ( includeName ) estSize += (nameSize + 3); // Assume attribute form. + estSize += xmpNode->value.size(); + + } else if ( XMP_PropIsArray ( xmpNode->options ) ) { + + // The form of the value portion is: ...... + if ( includeName ) estSize += (2*nameSize + 5); + size_t arraySize = xmpNode->children.size(); + estSize += 9 + 10; // The rdf:Xyz tags. + estSize += arraySize * (8 + 9); // The rdf:li tags. + for ( size_t i = 0; i < arraySize; ++i ) { + estSize += EstimateSizeForJPEG ( xmpNode->children[i] ); + } + + } else { + + // The form is: ...fields... + if ( includeName ) estSize += (2*nameSize + 5); + estSize += 25; // The rdf:parseType="Resource" attribute. + size_t fieldCount = xmpNode->children.size(); + for ( size_t i = 0; i < fieldCount; ++i ) { + estSize += EstimateSizeForJPEG ( xmpNode->children[i] ); + } + + } + + return estSize; + +} // EstimateSizeForJPEG + + +// ------------------------------------------------------------------------------------------------- +// MoveOneProperty +// --------------- + +static bool MoveOneProperty ( XMPMeta & stdXMP, XMPMeta * extXMP, + XMP_StringPtr schemaURI, XMP_StringPtr propName ) +{ + + XMP_Node * propNode = 0; + XMP_NodePtrPos stdPropPos; + + XMP_Node * stdSchema = FindSchemaNode ( &stdXMP.tree, schemaURI, kXMP_ExistingOnly, 0 ); + if ( stdSchema != 0 ) { + propNode = FindChildNode ( stdSchema, propName, kXMP_ExistingOnly, &stdPropPos ); + } + if ( propNode == 0 ) return false; + + XMP_Node * extSchema = FindSchemaNode ( &extXMP->tree, schemaURI, kXMP_CreateNodes ); + + propNode->parent = extSchema; + + extSchema->options &= ~kXMP_NewImplicitNode; + extSchema->children.push_back ( propNode ); + + stdSchema->children.erase ( stdPropPos ); + DeleteEmptySchema ( stdSchema ); + + return true; + +} // MoveOneProperty + + +// ------------------------------------------------------------------------------------------------- +// CreateEstimatedSizeMap +// ---------------------- + +#ifndef Trace_PackageForJPEG + #define Trace_PackageForJPEG 0 +#endif + +typedef std::pair < XMP_VarString*, XMP_VarString* > StringPtrPair; +typedef std::multimap < size_t, StringPtrPair > PropSizeMap; + +static void CreateEstimatedSizeMap ( XMPMeta & stdXMP, PropSizeMap * propSizes ) +{ + #if Trace_PackageForJPEG + printf ( " Creating top level property map:\n" ); + #endif + + for ( size_t s = stdXMP.tree.children.size(); s > 0; --s ) { + + XMP_Node * stdSchema = stdXMP.tree.children[s-1]; + + for ( size_t p = stdSchema->children.size(); p > 0; --p ) { + + XMP_Node * stdProp = stdSchema->children[p-1]; + if ( (stdSchema->name == kXMP_NS_XMP_Note) && + (stdProp->name == "xmpNote:HasExtendedXMP") ) continue; // ! Don't move xmpNote:HasExtendedXMP. + + size_t propSize = EstimateSizeForJPEG ( stdProp ); + StringPtrPair namePair ( &stdSchema->name, &stdProp->name ); + PropSizeMap::value_type mapValue ( propSize, namePair ); + + (void) propSizes->insert ( propSizes->upper_bound ( propSize ), mapValue ); + #if Trace_PackageForJPEG + printf ( " %d bytes, %s in %s\n", propSize, stdProp->name.c_str(), stdSchema->name.c_str() ); + #endif + + } + + } + +} // CreateEstimatedSizeMap + + +// ------------------------------------------------------------------------------------------------- +// MoveLargestProperty +// ------------------- + +static size_t MoveLargestProperty ( XMPMeta & stdXMP, XMPMeta * extXMP, PropSizeMap & propSizes ) +{ + XMP_Assert ( ! propSizes.empty() ); + + #if 0 + // *** Xcode 2.3 on Mac OS X 10.4.7 seems to have a bug where this does not pick the last + // *** item in the map. We'll just avoid it on all platforms until thoroughly tested. + PropSizeMap::iterator lastPos = propSizes.end(); + --lastPos; // Move to the actual last item. + #else + PropSizeMap::iterator lastPos = propSizes.begin(); + PropSizeMap::iterator nextPos = lastPos; + for ( ++nextPos; nextPos != propSizes.end(); ++nextPos ) lastPos = nextPos; + #endif + + size_t propSize = lastPos->first; + const char * schemaURI = lastPos->second.first->c_str(); + const char * propName = lastPos->second.second->c_str(); + + #if Trace_PackageForJPEG + printf ( " Move %s, %d bytes\n", propName, propSize ); + #endif + + bool moved = MoveOneProperty ( stdXMP, extXMP, schemaURI, propName ); + XMP_Assert ( moved ); + UNUSED(moved); + + propSizes.erase ( lastPos ); + return propSize; + +} // MoveLargestProperty + + +// ================================================================================================= +// Class Static Functions +// ====================== + + +// ------------------------------------------------------------------------------------------------- +// Initialize +// ---------- + +/* class static */ bool +XMPUtils::Initialize() +{ + sComposedPath = new XMP_VarString(); + sConvertedValue = new XMP_VarString(); + sBase64Str = new XMP_VarString(); + sCatenatedItems = new XMP_VarString(); + sStandardXMP = new XMP_VarString(); + sExtendedXMP = new XMP_VarString(); + sExtendedDigest = new XMP_VarString(); + + #if XMP_MacBuild && __MWERKS__ + LookupTimeProcs(); + #endif + + return true; + +} // Initialize + + +// ------------------------------------------------------------------------------------------------- +// Terminate +// --------- + +#define EliminateGlobal(g) delete ( g ); g = 0 + +/* class static */ void +XMPUtils::Terminate() RELEASE_NO_THROW +{ + EliminateGlobal ( sComposedPath ); + EliminateGlobal ( sConvertedValue ); + EliminateGlobal ( sBase64Str ); + EliminateGlobal ( sCatenatedItems ); + EliminateGlobal ( sStandardXMP ); + EliminateGlobal ( sExtendedXMP ); + EliminateGlobal ( sExtendedDigest ); + + return; + +} // Terminate + + +// ------------------------------------------------------------------------------------------------- +// Unlock +// ------ + +/* class static */ void +XMPUtils::Unlock ( XMP_OptionBits options ) +{ + UNUSED(options); + + XMPMeta::Unlock ( 0 ); + +} // Unlock + +// ------------------------------------------------------------------------------------------------- +// ComposeArrayItemPath +// -------------------- +// +// Return "arrayName[index]". + +/* class static */ void +XMPUtils::ComposeArrayItemPath ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ) +{ + XMP_Assert ( schemaNS != 0 ); // Enforced by wrapper. + XMP_Assert ( *arrayName != 0 ); // Enforced by wrapper. + XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. + ExpandXPath ( schemaNS, arrayName, &expPath ); + + if ( (itemIndex < 0) && (itemIndex != kXMP_ArrayLastItem) ) XMP_Throw ( "Array index out of bounds", kXMPErr_BadParam ); + + XMP_StringLen reserveLen = strlen(arrayName) + 2 + 32; // Room plus padding. + + sComposedPath->erase(); + sComposedPath->reserve ( reserveLen ); + sComposedPath->append ( reserveLen, ' ' ); + + if ( itemIndex != kXMP_ArrayLastItem ) { + // AUDIT: Using string->size() for the snprintf length is safe. + snprintf ( const_cast(sComposedPath->c_str()), sComposedPath->size(), "%s[%d]", arrayName, static_cast(itemIndex) ); + } else { + *sComposedPath = arrayName; + *sComposedPath += "[last()] "; + (*sComposedPath)[sComposedPath->size()-1] = 0; // ! Final null is for the strlen at exit. + } + + *fullPath = sComposedPath->c_str(); + *pathSize = strlen ( *fullPath ); // ! Don't use sComposedPath->size()! + + XMP_Enforce ( *pathSize < sComposedPath->size() ); // Rather late, but complain about buffer overflow. + +} // ComposeArrayItemPath + + +// ------------------------------------------------------------------------------------------------- +// ComposeStructFieldPath +// ---------------------- +// +// Return "structName/ns:fieldName". + +/* class static */ void +XMPUtils::ComposeStructFieldPath ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ) +{ + XMP_Assert ( (schemaNS != 0) && (fieldNS != 0) ); // Enforced by wrapper. + XMP_Assert ( (*structName != 0) && (*fieldName != 0) ); // Enforced by wrapper. + XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. + ExpandXPath ( schemaNS, structName, &expPath ); + + XMP_ExpandedXPath fieldPath; + ExpandXPath ( fieldNS, fieldName, &fieldPath ); + if ( fieldPath.size() != 2 ) XMP_Throw ( "The fieldName must be simple", kXMPErr_BadXPath ); + + XMP_StringLen reserveLen = strlen(structName) + fieldPath[kRootPropStep].step.size() + 1; + + sComposedPath->erase(); + sComposedPath->reserve ( reserveLen ); + *sComposedPath = structName; + *sComposedPath += '/'; + *sComposedPath += fieldPath[kRootPropStep].step; + + *fullPath = sComposedPath->c_str(); + *pathSize = sComposedPath->size(); + +} // ComposeStructFieldPath + + +// ------------------------------------------------------------------------------------------------- +// ComposeQualifierPath +// -------------------- +// +// Return "propName/?ns:qualName". + +/* class static */ void +XMPUtils::ComposeQualifierPath ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ) +{ + XMP_Assert ( (schemaNS != 0) && (qualNS != 0) ); // Enforced by wrapper. + XMP_Assert ( (*propName != 0) && (*qualName != 0) ); // Enforced by wrapper. + XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. + ExpandXPath ( schemaNS, propName, &expPath ); + + XMP_ExpandedXPath qualPath; + ExpandXPath ( qualNS, qualName, &qualPath ); + if ( qualPath.size() != 2 ) XMP_Throw ( "The qualifier name must be simple", kXMPErr_BadXPath ); + + XMP_StringLen reserveLen = strlen(propName) + qualPath[kRootPropStep].step.size() + 2; + + sComposedPath->erase(); + sComposedPath->reserve ( reserveLen ); + *sComposedPath = propName; + *sComposedPath += "/?"; + *sComposedPath += qualPath[kRootPropStep].step; + + *fullPath = sComposedPath->c_str(); + *pathSize = sComposedPath->size(); + +} // ComposeQualifierPath + + +// ------------------------------------------------------------------------------------------------- +// ComposeLangSelector +// ------------------- +// +// Return "arrayName[?xml:lang="lang"]". + +// *** #error "handle quotes in the lang - or verify format" + +/* class static */ void +XMPUtils::ComposeLangSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr _langName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ) +{ + XMP_Assert ( schemaNS != 0 ); // Enforced by wrapper. + XMP_Assert ( (*arrayName != 0) && (*_langName != 0) ); // Enforced by wrapper. + XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. + ExpandXPath ( schemaNS, arrayName, &expPath ); + + XMP_VarString langName ( _langName ); + NormalizeLangValue ( &langName ); + + XMP_StringLen reserveLen = strlen(arrayName) + langName.size() + 14; + + sComposedPath->erase(); + sComposedPath->reserve ( reserveLen ); + *sComposedPath = arrayName; + *sComposedPath += "[?xml:lang=\""; + *sComposedPath += langName; + *sComposedPath += "\"]"; + + *fullPath = sComposedPath->c_str(); + *pathSize = sComposedPath->size(); + +} // ComposeLangSelector + + +// ------------------------------------------------------------------------------------------------- +// ComposeFieldSelector +// -------------------- +// +// Return "arrayName[ns:fieldName="fieldValue"]". + +// *** #error "handle quotes in the value" + +/* class static */ void +XMPUtils::ComposeFieldSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ) +{ + XMP_Assert ( (schemaNS != 0) && (fieldNS != 0) && (fieldValue != 0) ); // Enforced by wrapper. + XMP_Assert ( (*arrayName != 0) && (*fieldName != 0) ); // Enforced by wrapper. + XMP_Assert ( (fullPath != 0) && (pathSize != 0) ); // Enforced by wrapper. + + XMP_ExpandedXPath expPath; // Just for side effects to check namespace and basic path. + ExpandXPath ( schemaNS, arrayName, &expPath ); + + XMP_ExpandedXPath fieldPath; + ExpandXPath ( fieldNS, fieldName, &fieldPath ); + if ( fieldPath.size() != 2 ) XMP_Throw ( "The fieldName must be simple", kXMPErr_BadXPath ); + + XMP_StringLen reserveLen = strlen(arrayName) + fieldPath[kRootPropStep].step.size() + strlen(fieldValue) + 5; + + sComposedPath->erase(); + sComposedPath->reserve ( reserveLen ); + *sComposedPath = arrayName; + *sComposedPath += '['; + *sComposedPath += fieldPath[kRootPropStep].step; + *sComposedPath += "=\""; + *sComposedPath += fieldValue; + *sComposedPath += "\"]"; + + *fullPath = sComposedPath->c_str(); + *pathSize = sComposedPath->size(); + +} // ComposeFieldSelector + + +// ------------------------------------------------------------------------------------------------- +// ConvertFromBool +// --------------- + +/* class static */ void +XMPUtils::ConvertFromBool ( bool binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ) +{ + XMP_Assert ( (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. + + if ( binValue ) { + *strValue = kXMP_TrueStr; + *strSize = strlen ( kXMP_TrueStr ); + } else { + *strValue = kXMP_FalseStr; + *strSize = strlen ( kXMP_FalseStr ); + } + +} // ConvertFromBool + + +// ------------------------------------------------------------------------------------------------- +// ConvertFromInt +// -------------- + +/* class static */ void +XMPUtils::ConvertFromInt ( XMP_Int32 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ) +{ + XMP_Assert ( (format != 0) && (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. + + if ( *format == 0 ) format = "%d"; + + sConvertedValue->erase(); + sConvertedValue->reserve ( 100 ); // More than enough for any reasonable format and value. + sConvertedValue->append ( 100, ' ' ); + + // AUDIT: Using string->size() for the snprintf length is safe. + snprintf ( const_cast(sConvertedValue->c_str()), sConvertedValue->size(), format, binValue ); + + *strValue = sConvertedValue->c_str(); + *strSize = strlen ( *strValue ); // ! Don't use sConvertedValue->size()! + + XMP_Enforce ( *strSize < sConvertedValue->size() ); // Rather late, but complain about buffer overflow. + +} // ConvertFromInt + + +// ------------------------------------------------------------------------------------------------- +// ConvertFromInt64 +// ---------------- + +/* class static */ void +XMPUtils::ConvertFromInt64 ( XMP_Int64 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ) +{ + XMP_Assert ( (format != 0) && (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. + + if ( *format == 0 ) format = "%lld"; + + sConvertedValue->erase(); + sConvertedValue->reserve ( 100 ); // More than enough for any reasonable format and value. + sConvertedValue->append ( 100, ' ' ); + + // AUDIT: Using string->size() for the snprintf length is safe. + snprintf ( const_cast(sConvertedValue->c_str()), sConvertedValue->size(), format, binValue ); + + *strValue = sConvertedValue->c_str(); + *strSize = strlen ( *strValue ); // ! Don't use sConvertedValue->size()! + + XMP_Enforce ( *strSize < sConvertedValue->size() ); // Rather late, but complain about buffer overflow. + +} // ConvertFromInt64 + + +// ------------------------------------------------------------------------------------------------- +// ConvertFromFloat +// ---------------- + +/* class static */ void +XMPUtils::ConvertFromFloat ( double binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ) +{ + XMP_Assert ( (format != 0) && (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. + + if ( *format == 0 ) format = "%f"; + + sConvertedValue->erase(); + sConvertedValue->reserve ( 1000 ); // More than enough for any reasonable format and value. + sConvertedValue->append ( 1000, ' ' ); + + // AUDIT: Using string->size() for the snprintf length is safe. + snprintf ( const_cast(sConvertedValue->c_str()), sConvertedValue->size(), format, binValue ); + + *strValue = sConvertedValue->c_str(); + *strSize = strlen ( *strValue ); // ! Don't use sConvertedValue->size()! + + XMP_Enforce ( *strSize < sConvertedValue->size() ); // Rather late, but complain about buffer overflow. + +} // ConvertFromFloat + + +// ------------------------------------------------------------------------------------------------- +// ConvertFromDate +// --------------- +// +// Format a date according to ISO 8601 and http://www.w3.org/TR/NOTE-datetime: +// YYYY +// YYYY-MM +// YYYY-MM-DD +// YYYY-MM-DDThh:mmTZD +// YYYY-MM-DDThh:mm:ssTZD +// YYYY-MM-DDThh:mm:ss.sTZD +// +// YYYY = four-digit year +// MM = two-digit month (01=January, etc.) +// DD = two-digit day of month (01 through 31) +// hh = two digits of hour (00 through 23) +// mm = two digits of minute (00 through 59) +// ss = two digits of second (00 through 59) +// s = one or more digits representing a decimal fraction of a second +// TZD = time zone designator (Z or +hh:mm or -hh:mm) +// +// Note that ISO 8601 does not seem to allow years less than 1000 or greater than 9999. We allow +// any year, even negative ones. The year is formatted as "%.4d". + +// *** Need to check backward compatibility for partial forms! + +/* class static */ void +XMPUtils::ConvertFromDate ( const XMP_DateTime & binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ) +{ + XMP_Assert ( (strValue != 0) && (strSize != 0) ); // Enforced by wrapper. + + bool addTimeZone = false; + char buffer [100]; // Plenty long enough. + + // Pick the format, use snprintf to format into a local buffer, assign to static output string. + // Don't use AdjustTimeOverflow at the start, that will wipe out zero month or day values. + + // ! Photoshop 8 creates "time only" values with zeros for year, month, and day. + + XMP_DateTime tempDate = binValue; + + // Temporary fix for bug 1269463, silently fix out of range month or day. + + bool haveDay = (tempDate.day != 0); + bool haveTime = ( (tempDate.hour != 0) || (tempDate.minute != 0) || + (tempDate.second != 0) || (tempDate.nanoSecond != 0) || + (tempDate.tzSign != 0) || (tempDate.tzHour != 0) || (tempDate.tzMinute != 0) ); + + if ( tempDate.month == 0 ) { + if ( haveDay || haveTime ) tempDate.month = 1; + } else { + if ( tempDate.month < 1 ) tempDate.month = 1; + if ( tempDate.month > 12 ) tempDate.month = 12; + } + + if ( tempDate.day == 0 ) { + if ( haveTime ) tempDate.day = 1; + } else { + if ( tempDate.day < 1 ) tempDate.day = 1; + if ( tempDate.day > 31 ) tempDate.day = 31; + } + + // Now carry on with the original logic. + + if ( tempDate.month == 0 ) { + + // Output YYYY if all else is zero, otherwise output a full string for the quasi-bogus + // "time only" values from Photoshop CS. + if ( (tempDate.day == 0) && (tempDate.hour == 0) && (tempDate.minute == 0) && + (tempDate.second == 0) && (tempDate.nanoSecond == 0) && + (tempDate.tzSign == 0) && (tempDate.tzHour == 0) && (tempDate.tzMinute == 0) ) { + snprintf ( buffer, sizeof(buffer), "%.4d", static_cast(tempDate.year) ); // AUDIT: Using sizeof for snprintf length is safe. + } else if ( (tempDate.year == 0) && (tempDate.day == 0) ) { + FormatFullDateTime ( tempDate, buffer, sizeof(buffer) ); + addTimeZone = true; + } else { + XMP_Throw ( "Invalid partial date", kXMPErr_BadParam); + } + + } else if ( tempDate.day == 0 ) { + + // Output YYYY-MM. + if ( (tempDate.month < 1) || (tempDate.month > 12) ) XMP_Throw ( "Month is out of range", kXMPErr_BadParam); + if ( (tempDate.hour != 0) || (tempDate.minute != 0) || + (tempDate.second != 0) || (tempDate.nanoSecond != 0) || + (tempDate.tzSign != 0) || (tempDate.tzHour != 0) || (tempDate.tzMinute != 0) ) { + XMP_Throw ( "Invalid partial date, non-zeros after zero month and day", kXMPErr_BadParam); + } + snprintf ( buffer, sizeof(buffer), "%.4d-%02d", static_cast(tempDate.year), static_cast(tempDate.month) ); // AUDIT: Using sizeof for snprintf length is safe. + + } else if ( (tempDate.hour == 0) && (tempDate.minute == 0) && + (tempDate.second == 0) && (tempDate.nanoSecond == 0) && + (tempDate.tzSign == 0) && (tempDate.tzHour == 0) && (tempDate.tzMinute == 0) ) { + + // Output YYYY-MM-DD. + if ( (tempDate.month < 1) || (tempDate.month > 12) ) XMP_Throw ( "Month is out of range", kXMPErr_BadParam); + if ( (tempDate.day < 1) || (tempDate.day > 31) ) XMP_Throw ( "Day is out of range", kXMPErr_BadParam); + snprintf ( buffer, sizeof(buffer), "%.4d-%02d-%02d", static_cast(tempDate.year), static_cast(tempDate.month), static_cast(tempDate.day) ); // AUDIT: Using sizeof for snprintf length is safe. + + } else { + + FormatFullDateTime ( tempDate, buffer, sizeof(buffer) ); + addTimeZone = true; + + } + + sConvertedValue->assign ( buffer ); + + if ( addTimeZone ) { + + if ( (tempDate.tzHour < 0) || (tempDate.tzHour > 23) || + (tempDate.tzMinute < 0 ) || (tempDate.tzMinute > 59) || + (tempDate.tzSign < -1) || (tempDate.tzSign > +1) || + ((tempDate.tzSign != 0) && (tempDate.tzHour == 0) && (tempDate.tzMinute == 0)) || + ((tempDate.tzSign == 0) && ((tempDate.tzHour != 0) || (tempDate.tzMinute != 0))) ) { + XMP_Throw ( "Invalid time zone values", kXMPErr_BadParam ); + } + + if ( tempDate.tzSign == 0 ) { + *sConvertedValue += 'Z'; + } else { + snprintf ( buffer, sizeof(buffer), "+%02d:%02d", static_cast(tempDate.tzHour), static_cast(tempDate.tzMinute) ); // AUDIT: Using sizeof for snprintf length is safe. + if ( tempDate.tzSign < 0 ) buffer[0] = '-'; + *sConvertedValue += buffer; + } + + } + + *strValue = sConvertedValue->c_str(); + *strSize = sConvertedValue->size(); + +} // ConvertFromDate + + +// ------------------------------------------------------------------------------------------------- +// ConvertToBool +// ------------- +// +// Formally the string value should be "True" or "False", but we should be more flexible here. Map +// the string to lower case. Allow any of "true", "false", "t", "f", "1", or "0". + +/* class static */ bool +XMPUtils::ConvertToBool ( XMP_StringPtr strValue ) +{ + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); + + bool result = false; + XMP_VarString strObj ( strValue ); + + for ( XMP_VarStringPos ch = strObj.begin(); ch != strObj.end(); ++ch ) { + if ( ('A' <= *ch) && (*ch <= 'Z') ) *ch += 0x20; + } + + if ( (strObj == "true") || (strObj == "t") || (strObj == "1") ) { + result = true; + } else if ( (strObj == "false") || (strObj == "f") || (strObj == "0") ) { + result = false; + } else { + XMP_Throw ( "Invalid Boolean string", kXMPErr_BadParam ); + } + + return result; + +} // ConvertToBool + + +// ------------------------------------------------------------------------------------------------- +// ConvertToInt +// ------------ + +/* class static */ XMP_Int32 +XMPUtils::ConvertToInt ( XMP_StringPtr strValue ) +{ + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); + + int count; + char nextCh; + XMP_Int32 result; + + if ( ! XMP_LitNMatch ( strValue, "0x", 2 ) ) { + count = sscanf ( strValue, "%d%c", (int*)&result, &nextCh ); + } else { + count = sscanf ( strValue, "%x%c", (unsigned int*)&result, &nextCh ); + } + + if ( count != 1 ) XMP_Throw ( "Invalid integer string", kXMPErr_BadParam ); + + return result; + +} // ConvertToInt + + +// ------------------------------------------------------------------------------------------------- +// ConvertToInt64 +// -------------- + +/* class static */ XMP_Int64 +XMPUtils::ConvertToInt64 ( XMP_StringPtr strValue ) +{ +#if defined(__MINGW32__)// || defined(__MINGW64__) + return ConvertToInt(strValue); +#else + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); + + int count; + char nextCh; + XMP_Int64 result; + + if ( ! XMP_LitNMatch ( strValue, "0x", 2 ) ) { + count = sscanf ( strValue, "%lld%c", &result, &nextCh ); + } else { + count = sscanf ( strValue, "%llx%c", &result, &nextCh ); + } + + if ( count != 1 ) XMP_Throw ( "Invalid integer string", kXMPErr_BadParam ); + + return result; +#endif +} // ConvertToInt64 + + +// ------------------------------------------------------------------------------------------------- +// ConvertToFloat +// -------------- + +/* class static */ double +XMPUtils::ConvertToFloat ( XMP_StringPtr strValue ) +{ + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue ); + + XMP_VarString oldLocale; // Try to make sure number conversion uses '.' as the decimal point. + XMP_StringPtr oldLocalePtr = setlocale ( LC_ALL, 0 ); + if ( oldLocalePtr != 0 ) { + oldLocale.assign ( oldLocalePtr ); + setlocale ( LC_ALL, "C" ); + } + + errno = 0; + char * numEnd; + double result = strtod ( strValue, &numEnd ); + + if ( oldLocalePtr != 0 ) setlocale ( LC_ALL, oldLocalePtr ); // ! Reset locale before possible throw! + if ( (errno != 0) || (*numEnd != 0) ) XMP_Throw ( "Invalid float string", kXMPErr_BadParam ); + + return result; + +} // ConvertToFloat + + +// ------------------------------------------------------------------------------------------------- +// ConvertToDate +// ------------- +// +// Parse a date according to ISO 8601 and http://www.w3.org/TR/NOTE-datetime: +// YYYY +// YYYY-MM +// YYYY-MM-DD +// YYYY-MM-DDThh:mmTZD +// YYYY-MM-DDThh:mm:ssTZD +// YYYY-MM-DDThh:mm:ss.sTZD +// +// YYYY = four-digit year +// MM = two-digit month (01=January, etc.) +// DD = two-digit day of month (01 through 31) +// hh = two digits of hour (00 through 23) +// mm = two digits of minute (00 through 59) +// ss = two digits of second (00 through 59) +// s = one or more digits representing a decimal fraction of a second +// TZD = time zone designator (Z or +hh:mm or -hh:mm) +// +// Note that ISO 8601 does not seem to allow years less than 1000 or greater than 9999. We allow +// any year, even negative ones. The year is formatted as "%.4d". + +// ! Tolerate missing TZD, assume the time is in local time +// ! Tolerate missing date portion, in case someone foolishly writes a time-only value that way. + +// *** Put the ISO format comments in the header documentation. + +/* class static */ void +XMPUtils::ConvertToDate ( XMP_StringPtr strValue, + XMP_DateTime * binValue ) +{ + if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty convert-from string", kXMPErr_BadValue); + + size_t pos = 0; + XMP_Int32 temp; + + XMP_Assert ( sizeof(*binValue) == sizeof(XMP_DateTime) ); + (void) memset ( binValue, 0, sizeof(*binValue) ); // AUDIT: Safe, using sizeof destination. + + bool timeOnly = ( (strValue[0] == 'T') || + ((strlen(strValue) >= 2) && (strValue[1] == ':')) || + ((strlen(strValue) >= 3) && (strValue[2] == ':')) ); + + if ( ! timeOnly ) { + + if ( strValue[0] == '-' ) pos = 1; + + temp = GatherInt ( strValue, &pos, "Invalid year in date string" ); // Extract the year. + if ( (strValue[pos] != 0) && (strValue[pos] != '-') ) XMP_Throw ( "Invalid date string, after year", kXMPErr_BadParam ); + if ( strValue[0] == '-' ) temp = -temp; + binValue->year = temp; + if ( strValue[pos] == 0 ) return; + + ++pos; + temp = GatherInt ( strValue, &pos, "Invalid month in date string" ); // Extract the month. + if ( (strValue[pos] != 0) && (strValue[pos] != '-') ) XMP_Throw ( "Invalid date string, after month", kXMPErr_BadParam ); + binValue->month = temp; + if ( strValue[pos] == 0 ) return; + + ++pos; + temp = GatherInt ( strValue, &pos, "Invalid day in date string" ); // Extract the day. + if ( (strValue[pos] != 0) && (strValue[pos] != 'T') ) XMP_Throw ( "Invalid date string, after day", kXMPErr_BadParam ); + binValue->day = temp; + if ( strValue[pos] == 0 ) return; + + // Allow year, month, and day to all be zero; implies the date portion is missing. + if ( (binValue->year != 0) || (binValue->month != 0) || (binValue->day != 0) ) { + // Temporary fix for bug 1269463, silently fix out of range month or day. + // if ( (binValue->month < 1) || (binValue->month > 12) ) XMP_Throw ( "Month is out of range", kXMPErr_BadParam ); + // if ( (binValue->day < 1) || (binValue->day > 31) ) XMP_Throw ( "Day is out of range", kXMPErr_BadParam ); + if ( binValue->month < 1 ) binValue->month = 1; + if ( binValue->month > 12 ) binValue->month = 12; + if ( binValue->day < 1 ) binValue->day = 1; + if ( binValue->day > 31 ) binValue->day = 31; + } + + } + + if ( strValue[pos] == 'T' ) { + ++pos; + } else if ( ! timeOnly ) { + XMP_Throw ( "Invalid date string, missing 'T' after date", kXMPErr_BadParam ); + } + + temp = GatherInt ( strValue, &pos, "Invalid hour in date string" ); // Extract the hour. + if ( strValue[pos] != ':' ) XMP_Throw ( "Invalid date string, after hour", kXMPErr_BadParam ); + if ( temp > 23 ) temp = 23; // *** 1269463: XMP_Throw ( "Hour is out of range", kXMPErr_BadParam ); + binValue->hour = temp; + // Don't check for done, we have to work up to the time zone. + + ++pos; + temp = GatherInt ( strValue, &pos, "Invalid minute in date string" ); // And the minute. + if ( (strValue[pos] != ':') && (strValue[pos] != 'Z') && + (strValue[pos] != '+') && (strValue[pos] != '-') && (strValue[pos] != 0) ) XMP_Throw ( "Invalid date string, after minute", kXMPErr_BadParam ); + if ( temp > 59 ) temp = 59; // *** 1269463: XMP_Throw ( "Minute is out of range", kXMPErr_BadParam ); + binValue->minute = temp; + // Don't check for done, we have to work up to the time zone. + + if ( strValue[pos] == ':' ) { + + ++pos; + temp = GatherInt ( strValue, &pos, "Invalid whole seconds in date string" ); // Extract the whole seconds. + if ( (strValue[pos] != '.') && (strValue[pos] != 'Z') && + (strValue[pos] != '+') && (strValue[pos] != '-') && (strValue[pos] != 0) ) { + XMP_Throw ( "Invalid date string, after whole seconds", kXMPErr_BadParam ); + } + if ( temp > 59 ) temp = 59; // *** 1269463: XMP_Throw ( "Whole second is out of range", kXMPErr_BadParam ); + binValue->second = temp; + // Don't check for done, we have to work up to the time zone. + + if ( strValue[pos] == '.' ) { + + ++pos; + size_t digits = pos; // Will be the number of digits later. + + temp = GatherInt ( strValue, &pos, "Invalid fractional seconds in date string" ); // Extract the fractional seconds. + if ( (strValue[pos] != 'Z') && (strValue[pos] != '+') && (strValue[pos] != '-') && (strValue[pos] != 0) ) { + XMP_Throw ( "Invalid date string, after fractional second", kXMPErr_BadParam ); + } + + digits = pos - digits; + for ( ; digits > 9; --digits ) temp = temp / 10; + for ( ; digits < 9; ++digits ) temp = temp * 10; + + if ( temp >= 1000*1000*1000 ) XMP_Throw ( "Fractional second is out of range", kXMPErr_BadParam ); + binValue->nanoSecond = temp; + // Don't check for done, we have to work up to the time zone. + + } + + } + + if ( strValue[pos] == 'Z' ) { + + ++pos; + + } else if ( strValue[pos] != 0 ) { + + if ( strValue[pos] == '+' ) { + binValue->tzSign = kXMP_TimeEastOfUTC; + } else if ( strValue[pos] == '-' ) { + binValue->tzSign = kXMP_TimeWestOfUTC; + } else { + XMP_Throw ( "Time zone must begin with 'Z', '+', or '-'", kXMPErr_BadParam ); + } + + ++pos; + temp = GatherInt ( strValue, &pos, "Invalid time zone hour in date string" ); // Extract the time zone hour. + if ( strValue[pos] != ':' ) XMP_Throw ( "Invalid date string, after time zone hour", kXMPErr_BadParam ); + if ( temp > 23 ) XMP_Throw ( "Time zone hour is out of range", kXMPErr_BadParam ); + binValue->tzHour = temp; + + ++pos; + temp = GatherInt ( strValue, &pos, "Invalid time zone minute in date string" ); // Extract the time zone minute. + if ( temp > 59 ) XMP_Throw ( "Time zone minute is out of range", kXMPErr_BadParam ); + binValue->tzMinute = temp; + + } else { + + XMPUtils::SetTimeZone( binValue ); + + } + + if ( strValue[pos] != 0 ) XMP_Throw ( "Invalid date string, extra chars at end", kXMPErr_BadParam ); + +} // ConvertToDate + + +// ------------------------------------------------------------------------------------------------- +// EncodeToBase64 +// -------------- +// +// Encode a string of raw data bytes in base 64 according to RFC 2045. For the encoding definition +// see section 6.8 in . Although it isn't needed for RDF, we +// do insert a linefeed character as a newline for every 76 characters of encoded output. + +/* class static */ void +XMPUtils::EncodeToBase64 ( XMP_StringPtr rawStr, + XMP_StringLen rawLen, + XMP_StringPtr * encodedStr, + XMP_StringLen * encodedLen ) +{ + if ( (rawStr == 0) && (rawLen != 0) ) XMP_Throw ( "Null raw data buffer", kXMPErr_BadParam ); + if ( rawLen == 0 ) { + *encodedStr = 0; + *encodedLen = 0; + return; + } + + char encChunk[4]; + + unsigned long in, out; + unsigned char c1, c2, c3; + unsigned long merge; + + const size_t outputSize = (rawLen / 3) * 4; // Approximate, might be small. + + sBase64Str->erase(); + sBase64Str->reserve ( outputSize ); + + // ---------------------------------------------------------------------------------------- + // Each 6 bits of input produces 8 bits of output, so 3 input bytes become 4 output bytes. + // Process the whole chunks of 3 bytes first, then deal with any remainder. Be careful with + // the loop comparison, size-2 could be negative! + + for ( in = 0, out = 0; (in+2) < rawLen; in += 3, out += 4 ) { + + c1 = rawStr[in]; + c2 = rawStr[in+1]; + c3 = rawStr[in+2]; + + merge = (c1 << 16) + (c2 << 8) + c3; + + encChunk[0] = sBase64Chars [ merge >> 18 ]; + encChunk[1] = sBase64Chars [ (merge >> 12) & 0x3F ]; + encChunk[2] = sBase64Chars [ (merge >> 6) & 0x3F ]; + encChunk[3] = sBase64Chars [ merge & 0x3F ]; + + if ( out >= 76 ) { + sBase64Str->append ( 1, kLF ); + out = 0; + } + sBase64Str->append ( encChunk, 4 ); + + } + + // ------------------------------------------------------------------------------------------ + // The output must always be a multiple of 4 bytes. If there is a 1 or 2 byte input remainder + // we need to create another chunk. Zero pad with bits to a 6 bit multiple, then add one or + // two '=' characters to pad out to 4 bytes. + + switch ( rawLen - in ) { + + case 0: // Done, no remainder. + break; + + case 1: // One input byte remains. + + c1 = rawStr[in]; + merge = c1 << 16; + + encChunk[0] = sBase64Chars [ merge >> 18 ]; + encChunk[1] = sBase64Chars [ (merge >> 12) & 0x3F ]; + encChunk[2] = encChunk[3] = '='; + + if ( out >= 76 ) sBase64Str->append ( 1, kLF ); + sBase64Str->append ( encChunk, 4 ); + break; + + case 2: // Two input bytes remain. + + c1 = rawStr[in]; + c2 = rawStr[in+1]; + merge = (c1 << 16) + (c2 << 8); + + encChunk[0] = sBase64Chars [ merge >> 18 ]; + encChunk[1] = sBase64Chars [ (merge >> 12) & 0x3F ]; + encChunk[2] = sBase64Chars [ (merge >> 6) & 0x3F ]; + encChunk[3] = '='; + + if ( out >= 76 ) sBase64Str->append ( 1, kLF ); + sBase64Str->append ( encChunk, 4 ); + break; + + } + + // ------------------------- + // Assign the output values. + + *encodedStr = sBase64Str->c_str(); + *encodedLen = sBase64Str->size(); + +} // EncodeToBase64 + + +// ------------------------------------------------------------------------------------------------- +// DecodeFromBase64 +// ---------------- +// +// Decode a string of raw data bytes from base 64 according to RFC 2045. For the encoding definition +// see section 6.8 in . RFC 2045 talks about ignoring all "bad" +// input but warning about non-whitespace. For XMP use we ignore space, tab, LF, and CR. Any other +// bad input is rejected. + +/* class static */ void +XMPUtils::DecodeFromBase64 ( XMP_StringPtr encodedStr, + XMP_StringLen encodedLen, + XMP_StringPtr * rawStr, + XMP_StringLen * rawLen ) +{ + if ( (encodedStr == 0) && (encodedLen != 0) ) XMP_Throw ( "Null encoded data buffer", kXMPErr_BadParam ); + if ( encodedLen == 0 ) { + *rawStr = 0; + *rawLen = 0; + return; + } + + unsigned char ch, rawChunk[3]; + unsigned long inStr, inChunk, inLimit, merge, padding; + + XMP_StringLen outputSize = (encodedLen / 4) * 3; // Only a close approximation. + + sBase64Str->erase(); + sBase64Str->reserve ( outputSize ); + + + // ---------------------------------------------------------------------------------------- + // Each 8 bits of input produces 6 bits of output, so 4 input bytes become 3 output bytes. + // Process all but the last 4 data bytes first, then deal with the final chunk. Whitespace + // in the input must be ignored. The first loop finds where the last 4 data bytes start and + // counts the number of padding equal signs. + + padding = 0; + for ( inStr = 0, inLimit = encodedLen; (inStr < 4) && (inLimit > 0); ) { + inLimit -= 1; // ! Don't do in the loop control, the decr/test order is wrong. + ch = encodedStr[inLimit]; + if ( ch == '=' ) { + padding += 1; // The equal sign padding is a data byte. + } else if ( DecodeBase64Char(ch) == 0xFF ) { + continue; // Ignore whitespace, don't increment inStr. + } else { + inStr += 1; + } + } + + // ! Be careful to count whitespace that is immediately before the final data. Otherwise + // ! middle portion will absorb the final data and mess up the final chunk processing. + + while ( (inLimit > 0) && (DecodeBase64Char(encodedStr[inLimit-1]) == 0xFF) ) --inLimit; + + if ( inStr == 0 ) return; // Nothing but whitespace. + if ( padding > 2 ) XMP_Throw ( "Invalid encoded string", kXMPErr_BadParam ); + + // ------------------------------------------------------------------------------------------- + // Now process all but the last chunk. The limit ensures that we have at least 4 data bytes + // left when entering the output loop, so the inner loop will succeed without overrunning the + // end of the data. At the end of the outer loop we might be past inLimit though. + + inStr = 0; + while ( inStr < inLimit ) { + + merge = 0; + for ( inChunk = 0; inChunk < 4; ++inStr ) { // ! Yes, increment inStr on each pass. + ch = DecodeBase64Char ( encodedStr [inStr] ); + if ( ch == 0xFF ) continue; // Ignore whitespace. + merge = (merge << 6) + ch; + inChunk += 1; + } + + rawChunk[0] = (unsigned char) (merge >> 16); + rawChunk[1] = (unsigned char) ((merge >> 8) & 0xFF); + rawChunk[2] = (unsigned char) (merge & 0xFF); + + sBase64Str->append ( (char*)rawChunk, 3 ); + + } + + // ------------------------------------------------------------------------------------------- + // Process the final, possibly partial, chunk of data. The input is always a multiple 4 bytes, + // but the raw data can be any length. The number of padding '=' characters determines if the + // final chunk has 1, 2, or 3 raw data bytes. + + XMP_Assert ( inStr < encodedLen ); + + merge = 0; + for ( inChunk = 0; inChunk < 4-padding; ++inStr ) { // ! Yes, increment inStr on each pass. + ch = DecodeBase64Char ( encodedStr[inStr] ); + if ( ch == 0xFF ) continue; // Ignore whitespace. + merge = (merge << 6) + ch; + inChunk += 1; + } + + if ( padding == 2 ) { + + rawChunk[0] = (unsigned char) (merge >> 4); + sBase64Str->append ( (char*)rawChunk, 1 ); + + } else if ( padding == 1 ) { + + rawChunk[0] = (unsigned char) (merge >> 10); + rawChunk[1] = (unsigned char) ((merge >> 2) & 0xFF); + sBase64Str->append ( (char*)rawChunk, 2 ); + + } else { + + rawChunk[0] = (unsigned char) (merge >> 16); + rawChunk[1] = (unsigned char) ((merge >> 8) & 0xFF); + rawChunk[2] = (unsigned char) (merge & 0xFF); + sBase64Str->append ( (char*)rawChunk, 3 ); + + } + + // ------------------------- + // Assign the output values. + + *rawStr = sBase64Str->c_str(); + *rawLen = sBase64Str->size(); + +} // DecodeFromBase64 + + +// ------------------------------------------------------------------------------------------------- +// PackageForJPEG +// -------------- + +/* class static */ void +XMPUtils::PackageForJPEG ( const XMPMeta & origXMP, + XMP_StringPtr * stdStr, + XMP_StringLen * stdLen, + XMP_StringPtr * extStr, + XMP_StringLen * extLen, + XMP_StringPtr * digestStr, + XMP_StringLen * digestLen ) +{ + enum { kStdXMPLimit = 65000 }; + static const char * kPacketTrailer = ""; + static size_t kTrailerLen = strlen ( kPacketTrailer ); + + XMP_StringPtr tempStr; + XMP_StringLen tempLen; + + XMPMeta stdXMP, extXMP; + + sStandardXMP->clear(); // Clear the static strings that get returned to the client. + sExtendedXMP->clear(); + sExtendedDigest->clear(); + + XMP_OptionBits keepItSmall = kXMP_UseCompactFormat | kXMP_OmitAllFormatting; + + // Try to serialize everything. Note that we're making internal calls to SerializeToBuffer, so + // we'll be getting back the pointer and length for its internal string. + + origXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); + #if Trace_PackageForJPEG + printf ( "\nXMPUtils::PackageForJPEG - Full serialize %d bytes\n", tempLen ); + #endif + + if ( tempLen > kStdXMPLimit ) { + + // Couldn't fit everything, make a copy of the input XMP and make sure there is no xmp:Thumbnails property. + + stdXMP.tree.options = origXMP.tree.options; + stdXMP.tree.name = origXMP.tree.name; + stdXMP.tree.value = origXMP.tree.value; + CloneOffspring ( &origXMP.tree, &stdXMP.tree ); + + if ( stdXMP.DoesPropertyExist ( kXMP_NS_XMP, "Thumbnails" ) ) { + stdXMP.DeleteProperty ( kXMP_NS_XMP, "Thumbnails" ); + stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); + #if Trace_PackageForJPEG + printf ( " Delete xmp:Thumbnails, %d bytes left\n", tempLen ); + #endif + } + + } + + if ( tempLen > kStdXMPLimit ) { + + // Still doesn't fit, move all of the Camera Raw namespace. Add a dummy value for xmpNote:HasExtendedXMP. + + stdXMP.SetProperty ( kXMP_NS_XMP_Note, "HasExtendedXMP", "123456789-123456789-123456789-12", 0 ); + + XMP_NodePtrPos crSchemaPos; + XMP_Node * crSchema = FindSchemaNode ( &stdXMP.tree, kXMP_NS_CameraRaw, kXMP_ExistingOnly, &crSchemaPos ); + + if ( crSchema != 0 ) { + crSchema->parent = &extXMP.tree; + extXMP.tree.children.push_back ( crSchema ); + stdXMP.tree.children.erase ( crSchemaPos ); + stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); + #if Trace_PackageForJPEG + printf ( " Move Camera Raw schema, %d bytes left\n", tempLen ); + #endif + } + + } + + if ( tempLen > kStdXMPLimit ) { + + // Still doesn't fit, move photoshop:History. + + bool moved = MoveOneProperty ( stdXMP, &extXMP, kXMP_NS_Photoshop, "photoshop:History" ); + + if ( moved ) { + stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); + #if Trace_PackageForJPEG + printf ( " Move photoshop:History, %d bytes left\n", tempLen ); + #endif + } + + } + + if ( tempLen > kStdXMPLimit ) { + + // Still doesn't fit, move top level properties in order of estimated size. This is done by + // creating a multi-map that maps the serialized size to the string pair for the schema URI + // and top level property name. Since maps are inherently ordered, a reverse iteration of + // the map can be done to move the largest things first. We use a double loop to keep going + // until the serialization actually fits, in case the estimates are off. + + PropSizeMap propSizes; + CreateEstimatedSizeMap ( stdXMP, &propSizes ); + + #if Trace_PackageForJPEG + if ( ! propSizes.empty() ) { + printf ( " Top level property map, smallest to largest:\n" ); + PropSizeMap::iterator mapPos = propSizes.begin(); + PropSizeMap::iterator mapEnd = propSizes.end(); + for ( ; mapPos != mapEnd; ++mapPos ) { + size_t propSize = mapPos->first; + const char * schemaName = mapPos->second.first->c_str(); + const char * propName = mapPos->second.second->c_str(); + printf ( " %d bytes, %s in %s\n", propSize, propName, schemaName ); + } + } + #endif + + #if 0 // Trace_PackageForJPEG *** Xcode 2.3 on 10.4.7 has bugs in backwards iteration + if ( ! propSizes.empty() ) { + printf ( " Top level property map, largest to smallest:\n" ); + PropSizeMap::iterator mapPos = propSizes.end(); + PropSizeMap::iterator mapBegin = propSizes.begin(); + for ( --mapPos; true; --mapPos ) { + size_t propSize = mapPos->first; + const char * schemaName = mapPos->second.first->c_str(); + const char * propName = mapPos->second.second->c_str(); + printf ( " %d bytes, %s in %s\n", propSize, propName, schemaName ); + if ( mapPos == mapBegin ) break; + } + } + #endif + + // Outer loop to make sure enough is actually moved. + + while ( (tempLen > kStdXMPLimit) && (! propSizes.empty()) ) { + + // Inner loop, move what seems to be enough according to the estimates. + + while ( (tempLen > kStdXMPLimit) && (! propSizes.empty()) ) { + + size_t propSize = MoveLargestProperty ( stdXMP, &extXMP, propSizes ); + XMP_Assert ( propSize > 0 ); + + if ( propSize > tempLen ) propSize = tempLen; // ! Don't go negative. + tempLen -= propSize; + + } + + // Reserialize the remaining standard XMP. + + stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); + + } + + } + + if ( tempLen > kStdXMPLimit ) { + // Still doesn't fit, throw an exception and let the client decide what to do. + // ! This should never happen with the policy of moving any and all top level properties. + XMP_Throw ( "Can't reduce XMP enough for JPEG file", kXMPErr_TooLargeForJPEG ); + } + + // Set the static output strings. + + if ( extXMP.tree.children.empty() ) { + + // Just have the standard XMP. + sStandardXMP->assign ( tempStr, tempLen ); + + } else { + + // Have extended XMP. Serialize it, compute the digest, reset xmpNote:HasExtendedXMP, and + // reserialize the standard XMP. + + extXMP.SerializeToBuffer ( &tempStr, &tempLen, (keepItSmall | kXMP_OmitPacketWrapper), 0, "", "", 0 ); + sExtendedXMP->assign ( tempStr, tempLen ); + + MD5_CTX context; + XMP_Uns8 digest [16]; + MD5Init ( &context ); + MD5Update ( &context, (XMP_Uns8*)tempStr, tempLen ); + MD5Final ( digest, &context ); + + sExtendedDigest->reserve ( 32 ); + for ( size_t i = 0; i < 16; ++i ) { + XMP_Uns8 byte = digest[i]; + sExtendedDigest->push_back ( kHexDigits [ byte>>4 ] ); + sExtendedDigest->push_back ( kHexDigits [ byte&0xF ] ); + } + + stdXMP.SetProperty ( kXMP_NS_XMP_Note, "HasExtendedXMP", sExtendedDigest->c_str(), 0 ); + stdXMP.SerializeToBuffer ( &tempStr, &tempLen, keepItSmall, 1, "", "", 0 ); + sStandardXMP->assign ( tempStr, tempLen ); + + } + + // Adjust the standard XMP padding to be up to 2KB. + + XMP_Assert ( (sStandardXMP->size() > kTrailerLen) && (sStandardXMP->size() <= kStdXMPLimit) ); + const char * packetEnd = 0; + packetEnd = sStandardXMP->c_str() + sStandardXMP->size() - kTrailerLen; + XMP_Assert ( XMP_LitMatch ( packetEnd, kPacketTrailer ) ); + UNUSED(packetEnd); + + size_t extraPadding = kStdXMPLimit - sStandardXMP->size(); // ! Do this before erasing the trailer. + if ( extraPadding > 2047 ) extraPadding = 2047; + sStandardXMP->erase ( sStandardXMP->size() - kTrailerLen ); + sStandardXMP->append ( extraPadding, ' ' ); + sStandardXMP->append ( kPacketTrailer ); + + // Assign the output pointer and sizes. + + *stdStr = sStandardXMP->c_str(); + *stdLen = sStandardXMP->size(); + *extStr = sExtendedXMP->c_str(); + *extLen = sExtendedXMP->size(); + *digestStr = sExtendedDigest->c_str(); + *digestLen = sExtendedDigest->size(); + +} // PackageForJPEG + + +// ------------------------------------------------------------------------------------------------- +// MergeFromJPEG +// ------------- +// +// Copy all of the top level properties from extendedXMP to fullXMP, replacing any duplicates. +// Delete the xmpNote:HasExtendedXMP property from fullXMP. + +/* class static */ void +XMPUtils::MergeFromJPEG ( XMPMeta * fullXMP, + const XMPMeta & extendedXMP ) +{ + + XMPUtils::AppendProperties ( extendedXMP, fullXMP, kXMPUtil_DoAllProperties ); + fullXMP->DeleteProperty ( kXMP_NS_XMP_Note, "HasExtendedXMP" ); + +} // MergeFromJPEG + + +// ------------------------------------------------------------------------------------------------- +// CurrentDateTime +// --------------- + +/* class static */ void +XMPUtils::CurrentDateTime ( XMP_DateTime * xmpTime ) +{ + XMP_Assert ( xmpTime != 0 ); // ! Enforced by wrapper. + + ansi_tt binTime = ansi_time(0); + if ( binTime == -1 ) XMP_Throw ( "Failure from ANSI C time function", kXMPErr_ExternalFailure ); + ansi_tm currTime; + ansi_localtime ( &binTime, &currTime ); + + xmpTime->year = currTime.tm_year + 1900; + xmpTime->month = currTime.tm_mon + 1; + xmpTime->day = currTime.tm_mday; + xmpTime->hour = currTime.tm_hour; + xmpTime->minute = currTime.tm_min; + xmpTime->second = currTime.tm_sec; + + xmpTime->nanoSecond = 0; + xmpTime->tzSign = 0; + xmpTime->tzHour = 0; + xmpTime->tzMinute = 0; + + XMPUtils::SetTimeZone ( xmpTime ); + +} // CurrentDateTime + + +// ------------------------------------------------------------------------------------------------- +// SetTimeZone +// ----------- +// +// Sets just the time zone part of the time. Useful for determining the local time zone or for +// converting a "zone-less" time to a proper local time. The ANSI C time functions are smart enough +// to do all the right stuff, as long as we call them properly! + +/* class static */ void +XMPUtils::SetTimeZone ( XMP_DateTime * xmpTime ) +{ + XMP_Assert ( xmpTime != 0 ); // ! Enforced by wrapper. + + if ( (xmpTime->tzSign != 0) || (xmpTime->tzHour != 0) || (xmpTime->tzMinute != 0) ) { + XMP_Throw ( "SetTimeZone can only be used on \"zoneless\" times", kXMPErr_BadParam ); + } + + // Create ansi_tt form of the input time. Need the ansi_tm form to make the ansi_tt form. + + ansi_tt ttTime; + ansi_tm tmLocal, tmUTC; + + if ( (xmpTime->year == 0) && (xmpTime->month == 0) && (xmpTime->day == 0) ) { + ansi_tt now = ansi_time(0); + if ( now == -1 ) XMP_Throw ( "Failure from ANSI C time function", kXMPErr_ExternalFailure ); + ansi_localtime ( &now, &tmLocal ); + } else { + tmLocal.tm_year = xmpTime->year - 1900; + while ( tmLocal.tm_year < 70 ) tmLocal.tm_year += 4; // ! Some versions of mktime barf on years before 1970. + tmLocal.tm_mon = xmpTime->month - 1; + tmLocal.tm_mday = xmpTime->day; + } + + tmLocal.tm_hour = xmpTime->hour; + tmLocal.tm_min = xmpTime->minute; + tmLocal.tm_sec = xmpTime->second; + tmLocal.tm_isdst = -1; // Don't know if daylight time is in effect. + + ttTime = ansi_mktime ( &tmLocal ); + if ( ttTime == -1 ) XMP_Throw ( "Failure from ANSI C mktime function", kXMPErr_ExternalFailure ); + + // Convert back to a localized ansi_tm time and get the corresponding UTC ansi_tm time. + + ansi_localtime ( &ttTime, &tmLocal ); + ansi_gmtime ( &ttTime, &tmUTC ); + + // Get the offset direction and amount. + + ansi_tm tmx = tmLocal; // ! Note that mktime updates the ansi_tm parameter, messing up difftime! + ansi_tm tmy = tmUTC; + tmx.tm_isdst = tmy.tm_isdst = 0; + ansi_tt ttx = ansi_mktime ( &tmx ); + ansi_tt tty = ansi_mktime ( &tmy ); + double diffSecs; + + if ( (ttx != -1) && (tty != -1) ) { + diffSecs = ansi_difftime ( ttx, tty ); + } else { + #if XMP_MacBuild + // Looks like Apple's mktime is buggy - see W1140533. But the offset is visible. + diffSecs = tmLocal.tm_gmtoff; + #else + // Win and UNIX don't have a visible offset. Make sure we know about the failure, + // then try using the current date/time as a close fallback. + ttTime = ansi_time(0); + if ( ttTime == -1 ) XMP_Throw ( "Failure from ANSI C time function", kXMPErr_ExternalFailure ); + ansi_localtime ( &ttTime, &tmx ); + ansi_gmtime ( &ttTime, &tmy ); + tmx.tm_isdst = tmy.tm_isdst = 0; + ttx = ansi_mktime ( &tmx ); + tty = ansi_mktime ( &tmy ); + if ( (ttx == -1) || (tty == -1) ) XMP_Throw ( "Failure from ANSI C mktime function", kXMPErr_ExternalFailure ); + diffSecs = ansi_difftime ( ttx, tty ); + #endif + } + + if ( diffSecs > 0.0 ) { + xmpTime->tzSign = kXMP_TimeEastOfUTC; + } else if ( diffSecs == 0.0 ) { + xmpTime->tzSign = kXMP_TimeIsUTC; + } else { + xmpTime->tzSign = kXMP_TimeWestOfUTC; + diffSecs = -diffSecs; + } + xmpTime->tzHour = XMP_Int32 ( diffSecs / 3600.0 ); + xmpTime->tzMinute = XMP_Int32 ( (diffSecs / 60.0) - (xmpTime->tzHour * 60.0) ); + + // *** Save the tm_isdst flag in a qualifier? + + XMP_Assert ( (0 <= xmpTime->tzHour) && (xmpTime->tzHour <= 23) ); + XMP_Assert ( (0 <= xmpTime->tzMinute) && (xmpTime->tzMinute <= 59) ); + XMP_Assert ( (-1 <= xmpTime->tzSign) && (xmpTime->tzSign <= +1) ); + XMP_Assert ( (xmpTime->tzSign == 0) ? ((xmpTime->tzHour == 0) && (xmpTime->tzMinute == 0)) : + ((xmpTime->tzHour != 0) || (xmpTime->tzMinute != 0)) ); + +} // SetTimeZone + + +// ------------------------------------------------------------------------------------------------- +// ConvertToUTCTime +// ---------------- + +/* class static */ void +XMPUtils::ConvertToUTCTime ( XMP_DateTime * time ) +{ + XMP_Assert ( time != 0 ); // ! Enforced by wrapper. + + XMP_Assert ( (0 <= time->tzHour) && (time->tzHour <= 23) ); + XMP_Assert ( (0 <= time->tzMinute) && (time->tzMinute <= 59) ); + XMP_Assert ( (-1 <= time->tzSign) && (time->tzSign <= +1) ); + XMP_Assert ( (time->tzSign == 0) ? ((time->tzHour == 0) && (time->tzMinute == 0)) : + ((time->tzHour != 0) || (time->tzMinute != 0)) ); + + if ( time->tzSign == kXMP_TimeEastOfUTC ) { + // We are before (east of) GMT, subtract the offset from the time. + time->hour -= time->tzHour; + time->minute -= time->tzMinute; + } else if ( time->tzSign == kXMP_TimeWestOfUTC ) { + // We are behind (west of) GMT, add the offset to the time. + time->hour += time->tzHour; + time->minute += time->tzMinute; + } + + AdjustTimeOverflow ( time ); + time->tzSign = time->tzHour = time->tzMinute = 0; + +} // ConvertToUTCTime + + +// ------------------------------------------------------------------------------------------------- +// ConvertToLocalTime +// ------------------ + +/* class static */ void +XMPUtils::ConvertToLocalTime ( XMP_DateTime * time ) +{ + XMP_Assert ( time != 0 ); // ! Enforced by wrapper. + + XMP_Assert ( (0 <= time->tzHour) && (time->tzHour <= 23) ); + XMP_Assert ( (0 <= time->tzMinute) && (time->tzMinute <= 59) ); + XMP_Assert ( (-1 <= time->tzSign) && (time->tzSign <= +1) ); + XMP_Assert ( (time->tzSign == 0) ? ((time->tzHour == 0) && (time->tzMinute == 0)) : + ((time->tzHour != 0) || (time->tzMinute != 0)) ); + + ConvertToUTCTime ( time ); // The existing time zone might not be the local one. + SetTimeZone ( time ); // Fill in the local timezone offset, then adjust the time. + + if ( time->tzSign > 0 ) { + // We are before (east of) GMT, add the offset to the time. + time->hour += time->tzHour; + time->minute += time->tzMinute; + } else if ( time->tzSign < 0 ) { + // We are behind (west of) GMT, subtract the offset from the time. + time->hour -= time->tzHour; + time->minute -= time->tzMinute; + } + + AdjustTimeOverflow ( time ); + +} // ConvertToLocalTime + + +// ------------------------------------------------------------------------------------------------- +// CompareDateTime +// --------------- + +/* class static */ int +XMPUtils::CompareDateTime ( const XMP_DateTime & _in_left, + const XMP_DateTime & _in_right ) +{ + int result; + + XMP_DateTime left = _in_left; + XMP_DateTime right = _in_right; + + ConvertToUTCTime ( &left ); + ConvertToUTCTime ( &right ); + + // *** We could use memcmp if the XMP_DateTime stuct has no holes. + + if ( left.year < right.year ) { + result = -1; + } else if ( left.year > right.year ) { + result = +1; + } else if ( left.month < right.month ) { + result = -1; + } else if ( left.month > right.month ) { + result = +1; + } else if ( left.day < right.day ) { + result = -1; + } else if ( left.day > right.day ) { + result = +1; + } else if ( left.hour < right.hour ) { + result = -1; + } else if ( left.hour > right.hour ) { + result = +1; + } else if ( left.minute < right.minute ) { + result = -1; + } else if ( left.minute > right.minute ) { + result = +1; + } else if ( left.second < right.second ) { + result = -1; + } else if ( left.second > right.second ) { + result = +1; + } else if ( left.nanoSecond < right.nanoSecond ) { + result = -1; + } else if ( left.nanoSecond > right.nanoSecond ) { + result = +1; + } else { + result = 0; + } + + return result; + +} // CompareDateTime + +// ================================================================================================= diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMPUtils.hpp b/vendor/exiv2-0.25/xmpsdk/src/XMPUtils.hpp new file mode 100644 index 0000000..e1c7e78 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMPUtils.hpp @@ -0,0 +1,221 @@ +#ifndef __XMPUtils_hpp__ +#define __XMPUtils_hpp__ + +// ================================================================================================= +// Copyright 2002-2007 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. +// ================================================================================================= + +#include "XMP_Environment.h" +#include "XMP_Const.h" + +#include "XMPMeta.hpp" +#include "XMPCore_Impl.hpp" +#include "client-glue/WXMPUtils.hpp" + +// ------------------------------------------------------------------------------------------------- + +extern XMP_VarString * sComposedPath; // *** Only really need 1 string. Shrink periodically? +extern XMP_VarString * sConvertedValue; +extern XMP_VarString * sBase64Str; +extern XMP_VarString * sCatenatedItems; +extern XMP_VarString * sStandardXMP; +extern XMP_VarString * sExtendedXMP; +extern XMP_VarString * sExtendedDigest; + +// ------------------------------------------------------------------------------------------------- + +class XMPUtils { +public: + + static bool + Initialize(); // ! For internal use only! + + static void + Terminate() RELEASE_NO_THROW; // ! For internal use only! + + static void + Unlock ( XMP_OptionBits options ); + + // --------------------------------------------------------------------------------------------- + + static void + ComposeArrayItemPath ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_Index itemIndex, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ); + + static void + ComposeStructFieldPath ( XMP_StringPtr schemaNS, + XMP_StringPtr structName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ); + + static void + ComposeQualifierPath ( XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_StringPtr qualNS, + XMP_StringPtr qualName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ); + + static void + ComposeLangSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr langName, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ); + + static void + ComposeFieldSelector ( XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr fieldNS, + XMP_StringPtr fieldName, + XMP_StringPtr fieldValue, + XMP_StringPtr * fullPath, + XMP_StringLen * pathSize ); + + // --------------------------------------------------------------------------------------------- + + static void + ConvertFromBool ( bool binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ); + + static void + ConvertFromInt ( XMP_Int32 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ); + + static void + ConvertFromInt64 ( XMP_Int64 binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ); + + static void + ConvertFromFloat ( double binValue, + XMP_StringPtr format, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ); + + static void + ConvertFromDate ( const XMP_DateTime & binValue, + XMP_StringPtr * strValue, + XMP_StringLen * strSize ); + + // --------------------------------------------------------------------------------------------- + + static bool + ConvertToBool ( XMP_StringPtr strValue ); + + static XMP_Int32 + ConvertToInt ( XMP_StringPtr strValue ); + + static XMP_Int64 + ConvertToInt64 ( XMP_StringPtr strValue ); + + static double + ConvertToFloat ( XMP_StringPtr strValue ); + + static void + ConvertToDate ( XMP_StringPtr strValue, + XMP_DateTime * binValue ); + + // --------------------------------------------------------------------------------------------- + + static void + CurrentDateTime ( XMP_DateTime * time ); + + static void + SetTimeZone ( XMP_DateTime * time ); + + static void + ConvertToUTCTime ( XMP_DateTime * time ); + + static void + ConvertToLocalTime ( XMP_DateTime * time ); + + static int + CompareDateTime ( const XMP_DateTime & left, + const XMP_DateTime & right ); + // --------------------------------------------------------------------------------------------- + + static void + EncodeToBase64 ( XMP_StringPtr rawStr, + XMP_StringLen rawLen, + XMP_StringPtr * encodedStr, + XMP_StringLen * encodedLen ); + + static void + DecodeFromBase64 ( XMP_StringPtr encodedStr, + XMP_StringLen encodedLen, + XMP_StringPtr * rawStr, + XMP_StringLen * rawLen ); + + // --------------------------------------------------------------------------------------------- + + static void + PackageForJPEG ( const XMPMeta & xmpObj, + XMP_StringPtr * stdStr, + XMP_StringLen * stdLen, + XMP_StringPtr * extStr, + XMP_StringLen * extLen, + XMP_StringPtr * digestStr, + XMP_StringLen * digestLen ); + + static void + MergeFromJPEG ( XMPMeta * fullXMP, + const XMPMeta & extendedXMP ); + + // --------------------------------------------------------------------------------------------- + + static void + CatenateArrayItems ( const XMPMeta & xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_StringPtr separator, + XMP_StringPtr quotes, + XMP_OptionBits options, + XMP_StringPtr * catedStr, + XMP_StringLen * catedLen ); + + static void + SeparateArrayItems ( XMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr arrayName, + XMP_OptionBits options, + XMP_StringPtr catedStr ); + + static void + RemoveProperties ( XMPMeta * xmpObj, + XMP_StringPtr schemaNS, + XMP_StringPtr propName, + XMP_OptionBits options ); + + static void + AppendProperties ( const XMPMeta & source, + XMPMeta * dest, + XMP_OptionBits options ); + + static void + DuplicateSubtree ( const XMPMeta & source, + XMPMeta * dest, + XMP_StringPtr sourceNS, + XMP_StringPtr sourceRoot, + XMP_StringPtr destNS, + XMP_StringPtr destRoot, + XMP_OptionBits options ); + +}; // XMPUtils + +// ================================================================================================= + +#endif // __XMPUtils_hpp__ diff --git a/vendor/exiv2-0.25/xmpsdk/src/XMP_BuildInfo.h b/vendor/exiv2-0.25/xmpsdk/src/XMP_BuildInfo.h new file mode 100644 index 0000000..2b387c8 --- /dev/null +++ b/vendor/exiv2-0.25/xmpsdk/src/XMP_BuildInfo.h @@ -0,0 +1,22 @@ +#ifndef __XMP_BuildInfo_h__ +#define __XMP_BuildInfo_h__ 1 + +/* --------------------------------------------------------------------------------------------- */ +/* ** IMPORTANT ** This file must be usable by strict ANSI C compilers. No "//" comments, etc. */ +/* --------------------------------------------------------------------------------------------- */ + +/* +// ================================================================================================= +// Copyright 2002-2008 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 kXMP_Copyright Copyright (c) 2002-2008, Adobe Systems Incorporated +#define kXMP_CopyrightStr "Copyright (c) 2002-2008, Adobe Systems Incorporated" +#define kXMP_AdobeIPStr "" + +#endif /* __XMP_BuildInfo_h__ */ From 8735d9b55eba8a65c4f1be328706189ecb63da8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Sun, 3 Apr 2016 15:11:02 +0200 Subject: [PATCH 02/13] WIP --- .gitignore | 4 + binding.gyp | 8 +- vendor/exiv2-0.25/Makefile | 147 + vendor/exiv2-0.25/config.log | 1594 +++++ vendor/exiv2-0.25/config.status | 2290 +++++++ vendor/exiv2-0.25/config/config.h | 294 + vendor/exiv2-0.25/config/config.mk | 203 + vendor/exiv2-0.25/config/exiv2.pc | 11 + vendor/exiv2-0.25/libtool | 9063 ++++++++++++++++++++++++++++ vendor/exiv2-0.25/po/Makefile | 491 ++ vendor/exiv2-0.25/po/Makefile.in | 385 ++ vendor/exiv2-0.25/po/POTFILES | 18 + vendor/exiv2-0.25/src/doxygen.hpp | 145 + vendor/exiv2.gyp | 70 + 14 files changed, 14719 insertions(+), 4 deletions(-) create mode 100644 vendor/exiv2-0.25/Makefile create mode 100644 vendor/exiv2-0.25/config.log create mode 100755 vendor/exiv2-0.25/config.status create mode 100644 vendor/exiv2-0.25/config/config.h create mode 100644 vendor/exiv2-0.25/config/config.mk create mode 100644 vendor/exiv2-0.25/config/exiv2.pc create mode 100755 vendor/exiv2-0.25/libtool create mode 100644 vendor/exiv2-0.25/po/Makefile create mode 100644 vendor/exiv2-0.25/po/Makefile.in create mode 100644 vendor/exiv2-0.25/po/POTFILES create mode 100644 vendor/exiv2-0.25/src/doxygen.hpp create mode 100644 vendor/exiv2.gyp diff --git a/.gitignore b/.gitignore index fb8b673..69cad6d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,7 @@ build/ node_modules/ test/copy.jpg *~ +npm-debug.log +*.swp +.vagrant +Vagrantfile diff --git a/binding.gyp b/binding.gyp index 99be6bf..bd29c27 100644 --- a/binding.gyp +++ b/binding.gyp @@ -6,7 +6,7 @@ 'exiv2node.cc' ], 'include_dirs' : [ - ' +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: Makefile.in +# Version: $Rev: 3782 $ +# Author(s): Andreas Huggel (ahu) +# History: 15-Jan-04, ahu: created +# +# Description: +# Simple top-level makefile that mainly forwards to makefiles in +# subdirectories. +# +# Restrictions: +# Requires GNU make. +# + +######################################################################## +# Makefile is a generated file. Do NOT change any settings in this file. +# Run ./configure with the appropriate options to regenerate the file +# and possibly others. +######################################################################## + +SHELL = /bin/sh +ENABLE_XMP = 1 + +.PHONY: all doc config samples xmpsdk \ + mostlyclean clean distclean maintainer-clean \ + install uninstall tests teste testv + +all install: config/config.mk xmpsdk + cd src && $(MAKE) $(MAKECMDGOALS) + cd po && $(MAKE) $(MAKECMDGOALS) + +uninstall: config/config.mk + cd src && $(MAKE) $(MAKECMDGOALS) + cd po && $(MAKE) $(MAKECMDGOALS) + +doc: config/config.mk + cd doc && $(MAKE) $(MAKECMDGOALS) + +samples: config/config.mk + cd samples && $(MAKE) $(MAKECMDGOALS) + +tests: + cd test && $(MAKE) test + +teste testx testv: + cd test && $(MAKE) $@ + +exiv2 conntest exifprint remotetest: + cd src && $(MAKE) $0 + +MAJOR=$(shell grep "define.*EXIV2_.*_VERSION .*\\d*" src/version.hpp | grep MAJOR | sed -e 's/EXIV2//g' | tr -dC [:digit:]) +MINOR=$(shell grep "define.*EXIV2_.*_VERSION .*\\d*" src/version.hpp | grep MINOR | sed -e 's/EXIV2//g' | tr -dC [:digit:]) +VERSION=exiv2-$(MAJOR).$(MINOR) +tarball: + @rm -rf /tmp/$(VERSION) + @rm -rf /tmp/$(VERSION).tar + @rm -rf /tmp/$(VERSION).tar.gz + @rm -rf $(VERSION).tar.gz + svn export -q . /tmp/$(VERSION) + @cd /tmp/$(VERSION) ;\ + make config ;\ + cd - ; cd /tmp ;\ + tar cf $(VERSION).tar $(VERSION)/ ;\ + gzip $(VERSION).tar ;\ + cd - ;\ + mv /tmp/$(VERSION).tar.gz . ;\ + ls -alt $(VERSION).tar.gz + +configure: + make config + +config: + cd config && $(MAKE) -f config.make $(MAKECMDGOALS) + +xmpsdk: src/svn_version.h config/config.mk + if test "x$(ENABLE_XMP)" = "x1"; then cd xmpsdk/src && $(MAKE) $@; fi; + +src/svn_version.h: + cd src && $(MAKE) svn_version.h + +mostlyclean clean: config/config.mk + cd src && $(MAKE) $(MAKECMDGOALS) + cd doc && $(MAKE) $(MAKECMDGOALS) + cd samples && $(MAKE) $(MAKECMDGOALS) + cd test && $(MAKE) $(MAKECMDGOALS) + cd xmpsdk/src && $(MAKE) $(MAKECMDGOALS) + cd config && $(MAKE) -f config.make $(MAKECMDGOALS) + cd po && $(MAKE) $(MAKECMDGOALS) + rm -f include/exiv2/exv_conf.h src/svn_version.h + +# `make distclean' also removes files created by configuring +# the program. Running `make all distclean' prepares the project +# for packaging. +distclean: clean + rm -f config.log config.status libtool + rm -f *~ *.bak + if [ -e bin ]; then rm -rf bin ; fi + +# This removes almost everything, including the configure script! +maintainer-clean: distclean + rm -f configure + -cd test && $(MAKE) $(MAKECMDGOALS) + +config/config.mk: + $(error File config/config.mk does not exist. Did you run ./configure?) + +rebuild: + make distclean + make config + ./configure + make -j + sudo make install + make -j samples + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/config.log b/vendor/exiv2-0.25/config.log new file mode 100644 index 0000000..888d402 --- /dev/null +++ b/vendor/exiv2-0.25/config.log @@ -0,0 +1,1594 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by exiv2 configure 0.25, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = vagrant-base-trusty-amd64 +uname -m = x86_64 +uname -r = 3.19.0-56-generic +uname -s = Linux +uname -v = #62~14.04.1-Ubuntu SMP Fri Mar 11 11:03:15 UTC 2016 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/sbin +PATH: /usr/bin +PATH: /sbin +PATH: /bin +PATH: /usr/games +PATH: /usr/local/games + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2711: checking for g++ +configure:2727: found /usr/bin/g++ +configure:2738: result: g++ +configure:2765: checking for C++ compiler version +configure:2774: g++ --version >&5 +g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4 +Copyright (C) 2013 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2785: $? = 0 +configure:2774: g++ -v >&5 +Using built-in specs. +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) +configure:2785: $? = 0 +configure:2774: g++ -V >&5 +g++: error: unrecognized command line option '-V' +g++: fatal error: no input files +compilation terminated. +configure:2785: $? = 4 +configure:2774: g++ -qversion >&5 +g++: error: unrecognized command line option '-qversion' +g++: fatal error: no input files +compilation terminated. +configure:2785: $? = 4 +configure:2805: checking whether the C++ compiler works +configure:2827: g++ conftest.cpp >&5 +configure:2831: $? = 0 +configure:2879: result: yes +configure:2882: checking for C++ compiler default output file name +configure:2884: result: a.out +configure:2890: checking for suffix of executables +configure:2897: g++ -o conftest conftest.cpp >&5 +configure:2901: $? = 0 +configure:2923: result: +configure:2945: checking whether we are cross compiling +configure:2953: g++ -o conftest conftest.cpp >&5 +configure:2957: $? = 0 +configure:2964: ./conftest +configure:2968: $? = 0 +configure:2983: result: no +configure:2988: checking for suffix of object files +configure:3010: g++ -c conftest.cpp >&5 +configure:3014: $? = 0 +configure:3035: result: o +configure:3039: checking whether we are using the GNU C++ compiler +configure:3058: g++ -c conftest.cpp >&5 +configure:3058: $? = 0 +configure:3067: result: yes +configure:3076: checking whether g++ accepts -g +configure:3137: result: no +configure:3165: checking how to run the C++ preprocessor +configure:3192: g++ -E conftest.cpp +configure:3192: $? = 0 +configure:3206: g++ -E conftest.cpp +conftest.cpp:11:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:3206: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| /* end confdefs.h. */ +| #include +configure:3231: result: g++ -E +configure:3251: g++ -E conftest.cpp +configure:3251: $? = 0 +configure:3265: g++ -E conftest.cpp +conftest.cpp:11:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:3265: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| /* end confdefs.h. */ +| #include +configure:3343: checking for gcc +configure:3359: found /usr/bin/gcc +configure:3370: result: gcc +configure:3599: checking for C compiler version +configure:3608: gcc --version >&5 +gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4 +Copyright (C) 2013 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3619: $? = 0 +configure:3608: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) +configure:3619: $? = 0 +configure:3608: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3619: $? = 4 +configure:3608: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion' +gcc: fatal error: no input files +compilation terminated. +configure:3619: $? = 4 +configure:3623: checking whether we are using the GNU C compiler +configure:3642: gcc -c conftest.c >&5 +configure:3642: $? = 0 +configure:3651: result: yes +configure:3660: checking whether gcc accepts -g +configure:3721: result: no +configure:3738: checking for gcc option to accept ISO C89 +configure:3801: gcc -c -O2 conftest.c >&5 +configure:3801: $? = 0 +configure:3814: result: none needed +configure:3839: checking how to run the C preprocessor +configure:3870: gcc -E conftest.c +configure:3870: $? = 0 +configure:3884: gcc -E conftest.c +conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:3884: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| /* end confdefs.h. */ +| #include +configure:3909: result: gcc -E +configure:3929: gcc -E conftest.c +configure:3929: $? = 0 +configure:3943: gcc -E conftest.c +conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:3943: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| /* end confdefs.h. */ +| #include +configure:3985: checking for a BSD-compatible install +configure:4053: result: /usr/bin/install -c +configure:4064: checking whether ln -s works +configure:4068: result: yes +configure:4075: checking whether make sets $(MAKE) +configure:4097: result: yes +configure:4110: checking build system type +configure:4124: result: x86_64-unknown-linux-gnu +configure:4144: checking host system type +configure:4157: result: x86_64-unknown-linux-gnu +configure:4196: checking whether NLS is requested +configure:4205: result: yes +configure:4243: checking for msgfmt +configure:4278: result: no +configure:4284: checking for gmsgfmt +configure:4315: result: : +configure:4355: checking for xgettext +configure:4390: result: no +configure:4427: checking for msgmerge +configure:4461: result: no +configure:4533: checking for ld used by GCC +configure:4597: result: /usr/bin/ld +configure:4604: checking if the linker (/usr/bin/ld) is GNU ld +configure:4617: result: yes +configure:4624: checking for shared library run path origin +configure:4637: result: done +configure:5054: checking for CFPreferencesCopyAppValue +configure:5074: gcc -o conftest -O2 -I/System/Library/Frameworks/CoreFoundation.framework/Headers conftest.c -framework CoreFoundation >&5 +gcc: error: CoreFoundation: No such file or directory +gcc: error: unrecognized command line option '-framework' +configure:5074: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| CFPreferencesCopyAppValue(NULL, NULL) +| ; +| return 0; +| } +configure:5084: result: no +configure:5091: checking for CFLocaleCopyCurrent +configure:5111: gcc -o conftest -O2 -I/System/Library/Frameworks/CoreFoundation.framework/Headers conftest.c -framework CoreFoundation >&5 +gcc: error: CoreFoundation: No such file or directory +gcc: error: unrecognized command line option '-framework' +configure:5111: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| CFLocaleCopyCurrent(); +| ; +| return 0; +| } +configure:5121: result: no +configure:5136: checking whether NLS is requested +configure:5145: result: yes +configure:5163: checking for GNU gettext in libc +configure:5182: gcc -o conftest -O2 conftest.c >&5 +configure:5182: $? = 0 +configure:5190: result: yes +configure:5778: checking whether to use NLS +configure:5780: result: yes +configure:5783: checking where the gettext function comes from +configure:5794: result: libc +configure:5880: checking for a sed that does not truncate output +configure:5944: result: /bin/sed +configure:5962: checking for grep that handles long lines and -e +configure:6020: result: /bin/grep +configure:6025: checking for egrep +configure:6087: result: /bin/grep -E +configure:6092: checking for fgrep +configure:6154: result: /bin/grep -F +configure:6189: checking for ld used by gcc +configure:6256: result: /usr/bin/ld +configure:6263: checking if the linker (/usr/bin/ld) is GNU ld +configure:6278: result: yes +configure:6290: checking for BSD- or MS-compatible name lister (nm) +configure:6339: result: /usr/bin/nm -B +configure:6457: checking the name lister (/usr/bin/nm -B) interface +configure:6464: gcc -c -O2 conftest.c >&5 +configure:6467: /usr/bin/nm -B "conftest.o" +configure:6470: output +0000000000000000 B some_variable +configure:6477: result: BSD nm +configure:6481: checking the maximum length of command line arguments +configure:6601: result: 1572864 +configure:6618: checking whether the shell understands some XSI constructs +configure:6628: result: yes +configure:6632: checking whether the shell understands "+=" +configure:6638: result: yes +configure:6673: checking for /usr/bin/ld option to reload object files +configure:6680: result: -r +configure:6749: checking for objdump +configure:6765: found /usr/bin/objdump +configure:6776: result: objdump +configure:6808: checking how to recognize dependent libraries +configure:7004: result: pass_all +configure:7064: checking for ar +configure:7080: found /usr/bin/ar +configure:7091: result: ar +configure:7169: checking for strip +configure:7185: found /usr/bin/strip +configure:7196: result: strip +configure:7268: checking for ranlib +configure:7284: found /usr/bin/ranlib +configure:7295: result: ranlib +configure:7385: checking command to parse /usr/bin/nm -B output from gcc object +configure:7503: gcc -c -O2 conftest.c >&5 +configure:7506: $? = 0 +configure:7510: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm +configure:7513: $? = 0 +configure:7567: gcc -o conftest -O2 conftest.c conftstm.o >&5 +configure:7570: $? = 0 +configure:7608: result: ok +configure:7703: gcc -c -O2 conftest.c >&5 +configure:7706: $? = 0 +configure:8412: checking for ANSI C header files +configure:8432: gcc -c -O2 conftest.c >&5 +configure:8432: $? = 0 +configure:8505: gcc -o conftest -O2 conftest.c >&5 +configure:8505: $? = 0 +configure:8505: ./conftest +configure:8505: $? = 0 +configure:8516: result: yes +configure:8529: checking for sys/types.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for sys/stat.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for stdlib.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for string.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for memory.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for strings.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for inttypes.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for stdint.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8529: checking for unistd.h +configure:8529: gcc -c -O2 conftest.c >&5 +configure:8529: $? = 0 +configure:8529: result: yes +configure:8543: checking for dlfcn.h +configure:8543: gcc -c -O2 conftest.c >&5 +configure:8543: $? = 0 +configure:8543: result: yes +configure:8668: checking for C++ compiler version +configure:8677: g++ --version >&5 +g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4 +Copyright (C) 2013 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:8688: $? = 0 +configure:8677: g++ -v >&5 +Using built-in specs. +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04.1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) +configure:8688: $? = 0 +configure:8677: g++ -V >&5 +g++: error: unrecognized command line option '-V' +g++: fatal error: no input files +compilation terminated. +configure:8688: $? = 4 +configure:8677: g++ -qversion >&5 +g++: error: unrecognized command line option '-qversion' +g++: fatal error: no input files +compilation terminated. +configure:8688: $? = 4 +configure:8692: checking whether we are using the GNU C++ compiler +configure:8720: result: yes +configure:8729: checking whether g++ accepts -g +configure:8790: result: no +configure:8821: checking how to run the C++ preprocessor +configure:8887: result: g++ -E +configure:8907: g++ -E conftest.cpp +configure:8907: $? = 0 +configure:8921: g++ -E conftest.cpp +conftest.cpp:25:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:8921: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| /* end confdefs.h. */ +| #include +configure:9127: checking for objdir +configure:9142: result: .libs +configure:9438: checking if gcc supports -fno-rtti -fno-exceptions +configure:9456: gcc -c -O2 -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default] +configure:9460: $? = 0 +configure:9473: result: no +configure:9493: checking for gcc option to produce PIC +configure:9765: result: -fPIC -DPIC +configure:9777: checking if gcc PIC flag -fPIC -DPIC works +configure:9795: gcc -c -O2 -fPIC -DPIC -DPIC conftest.c >&5 +configure:9799: $? = 0 +configure:9812: result: yes +configure:9836: checking if gcc static flag -static works +configure:9864: result: yes +configure:9879: checking if gcc supports -c -o file.o +configure:9900: gcc -c -O2 -o out/conftest2.o conftest.c >&5 +configure:9904: $? = 0 +configure:9926: result: yes +configure:9934: checking if gcc supports -c -o file.o +configure:9981: result: yes +configure:10014: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:11004: result: yes +configure:11041: checking whether -lc should be explicitly linked in +configure:11046: gcc -c -O2 conftest.c >&5 +configure:11049: $? = 0 +configure:11064: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 +configure:11067: $? = 0 +configure:11079: result: no +configure:11243: checking dynamic linker characteristics +configure:11676: gcc -o conftest -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 +configure:11676: $? = 0 +configure:11906: result: GNU/Linux ld.so +configure:12008: checking how to hardcode library paths into programs +configure:12033: result: immediate +configure:12553: checking whether stripping libraries is possible +configure:12558: result: yes +configure:12593: checking if libtool supports shared libraries +configure:12595: result: yes +configure:12598: checking whether to build shared libraries +configure:12619: result: yes +configure:12622: checking whether to build static libraries +configure:12626: result: yes +configure:12776: checking for ld used by g++ +configure:12843: result: /usr/bin/ld -m elf_x86_64 +configure:12850: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld +configure:12865: result: yes +configure:12920: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:13833: result: yes +configure:13861: g++ -c -O2 conftest.cpp >&5 +configure:13864: $? = 0 +configure:14046: checking for g++ option to produce PIC +configure:14363: result: -fPIC -DPIC +configure:14372: checking if g++ PIC flag -fPIC -DPIC works +configure:14390: g++ -c -O2 -fPIC -DPIC -DPIC conftest.cpp >&5 +configure:14394: $? = 0 +configure:14407: result: yes +configure:14428: checking if g++ static flag -static works +configure:14456: result: yes +configure:14468: checking if g++ supports -c -o file.o +configure:14489: g++ -c -O2 -o out/conftest2.o conftest.cpp >&5 +configure:14493: $? = 0 +configure:14515: result: yes +configure:14520: checking if g++ supports -c -o file.o +configure:14567: result: yes +configure:14597: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:14626: result: yes +configure:14763: checking dynamic linker characteristics +configure:15144: g++ -o conftest -O2 -Wl,-rpath -Wl,/foo conftest.cpp >&5 +configure:15144: $? = 0 +configure:15374: result: GNU/Linux ld.so +configure:15425: checking how to hardcode library paths into programs +configure:15450: result: immediate +configure:15601: checking for cos in -lm +configure:15626: gcc -o conftest -O2 conftest.c -lm >&5 +conftest.c:33:6: warning: conflicting types for built-in function 'cos' [enabled by default] + char cos (); + ^ +configure:15626: $? = 0 +configure:15635: result: yes +configure:15649: checking if zlib is wanted +configure:15664: result: yes +configure:15698: checking for inflateEnd in -lz +configure:15723: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:15723: $? = 0 +configure:15732: result: yes +configure:15740: checking zlib.h usability +configure:15740: gcc -c -O2 conftest.c >&5 +configure:15740: $? = 0 +configure:15740: result: yes +configure:15740: checking zlib.h presence +configure:15740: gcc -E conftest.c +configure:15740: $? = 0 +configure:15740: result: yes +configure:15740: checking for zlib.h +configure:15740: result: yes +configure:15759: checking for inflateEnd in -lz +configure:15793: result: yes +configure:15804: checking zlib in /usr +configure:15806: result: ok +configure:15856: checking for iconv +configure:15878: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:15878: $? = 0 +configure:15910: result: yes +configure:15931: checking for iconv declaration +configure:15960: gcc -c -O2 conftest.c >&5 +configure:15960: $? = 0 +configure:15971: result: + extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +configure:15985: checking for ANSI C header files +configure:16089: result: yes +configure:16100: checking libintl.h usability +configure:16100: gcc -c -O2 conftest.c >&5 +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking libintl.h presence +configure:16100: gcc -E conftest.c +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking for libintl.h +configure:16100: result: yes +configure:16100: checking locale.h usability +configure:16100: gcc -c -O2 conftest.c >&5 +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking locale.h presence +configure:16100: gcc -E conftest.c +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking for locale.h +configure:16100: result: yes +configure:16100: checking malloc.h usability +configure:16100: gcc -c -O2 conftest.c >&5 +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking malloc.h presence +configure:16100: gcc -E conftest.c +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking for malloc.h +configure:16100: result: yes +configure:16100: checking for stdint.h +configure:16100: result: yes +configure:16100: checking for stdlib.h +configure:16100: result: yes +configure:16100: checking for string.h +configure:16100: result: yes +configure:16100: checking for unistd.h +configure:16100: result: yes +configure:16100: checking sys/mman.h usability +configure:16100: gcc -c -O2 conftest.c >&5 +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking sys/mman.h presence +configure:16100: gcc -E conftest.c +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking for sys/mman.h +configure:16100: result: yes +configure:16100: checking utime.h usability +configure:16100: gcc -c -O2 conftest.c >&5 +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking utime.h presence +configure:16100: gcc -E conftest.c +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking for utime.h +configure:16100: result: yes +configure:16100: checking regex.h usability +configure:16100: gcc -c -O2 conftest.c >&5 +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking regex.h presence +configure:16100: gcc -E conftest.c +configure:16100: $? = 0 +configure:16100: result: yes +configure:16100: checking for regex.h +configure:16100: result: yes +configure:16114: checking for stdbool.h that conforms to C99 +configure:16181: gcc -c -O2 conftest.c >&5 +configure:16181: $? = 0 +configure:16188: result: yes +configure:16190: checking for _Bool +configure:16190: gcc -c -O2 conftest.c >&5 +configure:16190: $? = 0 +configure:16190: gcc -c -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:76:20: error: expected expression before ')' token + if (sizeof ((_Bool))) + ^ +configure:16190: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_LIBZ 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define STDC_HEADERS 1 +| #define HAVE_LIBINTL_H 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_MALLOC_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_MMAN_H 1 +| #define HAVE_UTIME_H 1 +| #define HAVE_REGEX_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((_Bool))) +| return 0; +| ; +| return 0; +| } +configure:16190: result: yes +configure:16207: checking for an ANSI C-conforming const +configure:16273: gcc -c -O2 conftest.c >&5 +configure:16273: $? = 0 +configure:16280: result: yes +configure:16288: checking for inline +configure:16304: gcc -c -O2 conftest.c >&5 +configure:16304: $? = 0 +configure:16312: result: inline +configure:16330: checking for pid_t +configure:16330: gcc -c -O2 conftest.c >&5 +configure:16330: $? = 0 +configure:16330: gcc -c -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:78:20: error: expected expression before ')' token + if (sizeof ((pid_t))) + ^ +configure:16330: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_LIBZ 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define STDC_HEADERS 1 +| #define HAVE_LIBINTL_H 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_MALLOC_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_MMAN_H 1 +| #define HAVE_UTIME_H 1 +| #define HAVE_REGEX_H 1 +| #define HAVE__BOOL 1 +| #define HAVE_STDBOOL_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((pid_t))) +| return 0; +| ; +| return 0; +| } +configure:16330: result: yes +configure:16341: checking for size_t +configure:16341: gcc -c -O2 conftest.c >&5 +configure:16341: $? = 0 +configure:16341: gcc -c -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:78:21: error: expected expression before ')' token + if (sizeof ((size_t))) + ^ +configure:16341: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_LIBZ 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define STDC_HEADERS 1 +| #define HAVE_LIBINTL_H 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_MALLOC_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_MMAN_H 1 +| #define HAVE_UTIME_H 1 +| #define HAVE_REGEX_H 1 +| #define HAVE__BOOL 1 +| #define HAVE_STDBOOL_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((size_t))) +| return 0; +| ; +| return 0; +| } +configure:16341: result: yes +configure:16352: checking whether struct tm is in sys/time.h or time.h +configure:16372: gcc -c -O2 conftest.c >&5 +configure:16372: $? = 0 +configure:16379: result: time.h +configure:16407: checking for stdlib.h +configure:16407: result: yes +configure:16407: checking for unistd.h +configure:16407: result: yes +configure:16407: checking for sys/param.h +configure:16407: gcc -c -O2 conftest.c >&5 +configure:16407: $? = 0 +configure:16407: result: yes +configure:16427: checking for getpagesize +configure:16427: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16427: $? = 0 +configure:16427: result: yes +configure:16436: checking for working mmap +configure:16583: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16583: $? = 0 +configure:16583: ./conftest +configure:16583: $? = 0 +configure:16593: result: yes +configure:16602: checking whether strerror_r is declared +configure:16602: gcc -c -O2 conftest.c >&5 +configure:16602: $? = 0 +configure:16602: result: yes +configure:16615: checking for strerror_r +configure:16615: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16615: $? = 0 +configure:16615: result: yes +configure:16624: checking whether strerror_r returns char * +configure:16648: gcc -c -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:87:13: error: invalid type argument of unary '*' (have 'int') + char x = *strerror_r (0, buf, sizeof buf); + ^ +conftest.c:88:14: warning: initialization makes pointer from integer without a cast [enabled by default] + char *p = strerror_r (0, buf, sizeof buf); + ^ +configure:16648: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_LIBZ 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define STDC_HEADERS 1 +| #define HAVE_LIBINTL_H 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_MALLOC_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_MMAN_H 1 +| #define HAVE_UTIME_H 1 +| #define HAVE_REGEX_H 1 +| #define HAVE__BOOL 1 +| #define HAVE_STDBOOL_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define HAVE_DECL_STRERROR_R 1 +| #define HAVE_STRERROR_R 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| +| char buf[100]; +| char x = *strerror_r (0, buf, sizeof buf); +| char *p = strerror_r (0, buf, sizeof buf); +| return !p || x; +| +| ; +| return 0; +| } +configure:16686: result: no +configure:16697: checking for gmtime_r +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for lstat +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for memset +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +conftest.c:74:6: warning: conflicting types for built-in function 'memset' [enabled by default] + char memset (); + ^ +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for mmap +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for munmap +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for strchr +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +conftest.c:77:6: warning: conflicting types for built-in function 'strchr' [enabled by default] + char strchr (); + ^ +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for strerror +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16697: $? = 0 +configure:16697: result: yes +configure:16697: checking for strtol +configure:16697: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16697: $? = 0 +configure:16697: result: yes +configure:16708: checking for timegm +configure:16708: gcc -o conftest -O2 conftest.c -lz -lm >&5 +configure:16708: $? = 0 +configure:16708: result: yes +configure:16723: checking whether to enable dependency tracking +configure:16732: result: yes +configure:16741: checking whether to enable symbol visibility support +configure:16755: result: yes +configure:16766: checking whether the C++ compiler accepts the -xldscope=hidden flag +configure:16795: g++ -c -O2 -xldscope=hidden conftest.cpp >&5 +g++: error: language ldscope=hidden not recognized +g++: error: language ldscope=hidden not recognized +configure:16795: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "exiv2" +| #define PACKAGE_TARNAME "exiv2" +| #define PACKAGE_VERSION "0.25" +| #define PACKAGE_STRING "exiv2 0.25" +| #define PACKAGE_BUGREPORT "ahuggel@gmx.net" +| #define PACKAGE_URL "" +| #define PACKAGE "exiv2" +| #define VERSION "0.25" +| #define ENABLE_NLS 1 +| #define HAVE_GETTEXT 1 +| #define HAVE_DCGETTEXT 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define HAVE_LIBZ 1 +| #define HAVE_ICONV 1 +| #define ICONV_CONST +| #define STDC_HEADERS 1 +| #define HAVE_LIBINTL_H 1 +| #define HAVE_LOCALE_H 1 +| #define HAVE_MALLOC_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_MMAN_H 1 +| #define HAVE_UTIME_H 1 +| #define HAVE_REGEX_H 1 +| #define HAVE__BOOL 1 +| #define HAVE_STDBOOL_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_PARAM_H 1 +| #define HAVE_GETPAGESIZE 1 +| #define HAVE_MMAP 1 +| #define HAVE_DECL_STRERROR_R 1 +| #define HAVE_STRERROR_R 1 +| #define HAVE_GMTIME_R 1 +| #define HAVE_LSTAT 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MMAP 1 +| #define HAVE_MUNMAP 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_TIMEGM 1 +| /* end confdefs.h. */ +| +| +| int +| main () +| { +| +| ; +| return 0; +| } +| +configure:16818: result: no +configure:16844: checking whether the C++ compiler accepts the -fvisibility-inlines-hidden flag +configure:16873: g++ -c -O2 -fvisibility-inlines-hidden conftest.cpp >&5 +configure:16873: $? = 0 +configure:16896: result: yes +configure:16925: checking whether to use the lens database for Nikon lens names +configure:16934: result: yes +configure:16941: checking whether to compile a commercial version of the Exiv2 library +configure:16950: result: no +configure:16955: checking whether to enable XMP support (requires expat) +configure:16964: result: yes +configure:16967: checking whether to compile with video support +configure:16976: result: no +configure:16987: checking whether to compile with webready support +configure:16996: result: no +configure:17230: checking expat.h usability +configure:17230: gcc -c -O2 conftest.c >&5 +configure:17230: $? = 0 +configure:17230: result: yes +configure:17230: checking expat.h presence +configure:17230: gcc -E conftest.c +configure:17230: $? = 0 +configure:17230: result: yes +configure:17230: checking for expat.h +configure:17230: result: yes +configure:17235: checking for XML_ParserCreate in -lexpat +configure:17260: gcc -o conftest -O2 conftest.c -lexpat -lz -lm >&5 +configure:17260: $? = 0 +configure:17269: result: yes +configure:17455: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by exiv2 config.status 0.25, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on vagrant-base-trusty-amd64 + +config.status:1175: creating ./Makefile +config.status:1175: creating ./config/config.mk +config.status:1175: creating ./config/exiv2.pc +config.status:1175: creating ./po/Makefile.in +config.status:1175: creating ./src/doxygen.hpp +config.status:1175: creating ./config/config.h +config.status:1364: executing default-1 commands +config.status:1364: executing libtool commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_c_const=yes +ac_cv_c_inline=inline +ac_cv_cxx_compiler_gnu=yes +ac_cv_env_CCC_set= +ac_cv_env_CCC_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_CXXCPP_set= +ac_cv_env_CXXCPP_value= +ac_cv_env_CXXFLAGS_set= +ac_cv_env_CXXFLAGS_value= +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func_getpagesize=yes +ac_cv_func_gmtime_r=yes +ac_cv_func_lstat=yes +ac_cv_func_memset=yes +ac_cv_func_mmap=yes +ac_cv_func_mmap_fixed_mapped=yes +ac_cv_func_munmap=yes +ac_cv_func_strchr=yes +ac_cv_func_strerror=yes +ac_cv_func_strerror_r=yes +ac_cv_func_strerror_r_char_p=no +ac_cv_func_strtol=yes +ac_cv_func_timegm=yes +ac_cv_have_decl_strerror_r=yes +ac_cv_header_dlfcn_h=yes +ac_cv_header_expat_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_libintl_h=yes +ac_cv_header_locale_h=yes +ac_cv_header_malloc_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_regex_h=yes +ac_cv_header_stdbool_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_mman_h=yes +ac_cv_header_sys_param_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_header_utime_h=yes +ac_cv_header_zlib_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_lib_expat_XML_ParserCreate=yes +ac_cv_lib_m_cos=yes +ac_cv_lib_z_inflateEnd=yes +ac_cv_objext=o +ac_cv_path_EGREP='/bin/grep -E' +ac_cv_path_FGREP='/bin/grep -F' +ac_cv_path_GMSGFMT=: +ac_cv_path_GREP=/bin/grep +ac_cv_path_MSGFMT=: +ac_cv_path_MSGMERGE=: +ac_cv_path_SED=/bin/sed +ac_cv_path_XGETTEXT=: +ac_cv_path_install='/usr/bin/install -c' +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_CXXCPP='g++ -E' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_CXX=g++ +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=no +ac_cv_prog_cxx_g=no +ac_cv_prog_make_make_set=yes +ac_cv_struct_tm=time.h +ac_cv_type__Bool=yes +ac_cv_type_pid_t=yes +ac_cv_type_size_t=yes +acl_cv_hardcode_direct=no +acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +acl_cv_hardcode_libdir_separator= +acl_cv_hardcode_minus_L=no +acl_cv_libext=a +acl_cv_libname_spec='lib$name' +acl_cv_library_names_spec='$libname$shrext' +acl_cv_path_LD=/usr/bin/ld +acl_cv_prog_gnu_ld=yes +acl_cv_rpath=done +acl_cv_shlibext=so +acl_cv_wl=-Wl, +am_cv_func_iconv=yes +am_cv_lib_iconv=no +am_cv_proto_iconv='extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);' +am_cv_proto_iconv_arg1= +ax_cv_cxx_check_flag__fvisibility_inlines_hidden=yes +ax_cv_cxx_check_flag__xldscope_hidden=no +gt_cv_func_CFLocaleCopyCurrent=no +gt_cv_func_CFPreferencesCopyAppValue=no +gt_cv_func_gnugettext1_libc=yes +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/usr/bin/ld +lt_cv_path_LDCXX='/usr/bin/ld -m elf_x86_64' +lt_cv_path_NM='/usr/bin/nm -B' +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_c_o_CXX=yes +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_pic_works_CXX=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=yes +lt_cv_prog_compiler_static_works_CXX=yes +lt_cv_prog_gnu_ld=yes +lt_cv_prog_gnu_ldcxx=yes +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_max_cmd_len=1572864 +zlib_cv_libz=yes +zlib_cv_zlib_h=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +AR='ar' +CC='gcc' +CFLAGS='-O2' +COMMERCIAL_VERSION='no' +CPP='gcc -E' +CPPFLAGS='' +CURL_CPPFLAGS='' +CURL_LDFLAGS='' +CURL_LIBS='' +CXX='g++' +CXXCPP='g++ -E' +CXXFLAGS='-O2 -fvisibility=hidden -fvisibility-inlines-hidden' +DEFS='-DHAVE_CONFIG_H' +DEP_TRACKING='1' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/bin/grep -E' +ENABLE_VIDEO='' +ENABLE_XMP='1' +EXEEXT='' +EXIV2_LTVERSION='14:0:0' +EXPAT_CPPFLAGS='' +EXPAT_LDFLAGS='' +EXPAT_LIBS='-lexpat' +EXV_LIB_STATIC='' +FGREP='/bin/grep -F' +GCC='yes' +GMSGFMT=':' +GREP='/bin/grep' +GXX='yes' +HAVE_LIBZ='1' +HAVE_TIMEGM='1' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INTLLIBS='' +INTL_MACOSX_LIBS='' +LD='/usr/bin/ld -m elf_x86_64' +LDFLAGS=' -ldl' +LIBICONV='' +LIBINTL='' +LIBM='-lm' +LIBOBJS='' +LIBS='-lz -lm' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIBTOOL_DEPS='./config/ltmain.sh' +LIPO='' +LN_S='ln -s' +LTLIBICONV='' +LTLIBINTL='' +LTLIBOBJS='' +MKINSTALLDIRS='$(top_builddir)/./config/mkinstalldirs' +MSGFMT=':' +MSGMERGE=':' +NM='/usr/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OTOOL64='' +OTOOL='' +PACKAGE='exiv2' +PACKAGE_BUGREPORT='ahuggel@gmx.net' +PACKAGE_NAME='exiv2' +PACKAGE_STRING='exiv2 0.25' +PACKAGE_TARNAME='exiv2' +PACKAGE_URL='' +PACKAGE_VERSION='0.25' +PATH_SEPARATOR=':' +POSUB='po' +RANLIB='ranlib' +SED='/bin/sed' +SET_MAKE='' +SHELL='/bin/bash' +SSH_CPPFLAGS='' +SSH_LDFLAGS='' +SSH_LIBS='' +STRIP='strip' +USE_NLS='yes' +USE_SSH='' +VERSION='0.25' +XGETTEXT=':' +ac_ct_CC='gcc' +ac_ct_CXX='g++' +ac_ct_DUMPBIN='' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +lt_ECHO='echo' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "exiv2" +#define PACKAGE_TARNAME "exiv2" +#define PACKAGE_VERSION "0.25" +#define PACKAGE_STRING "exiv2 0.25" +#define PACKAGE_BUGREPORT "ahuggel@gmx.net" +#define PACKAGE_URL "" +#define PACKAGE "exiv2" +#define VERSION "0.25" +#define ENABLE_NLS 1 +#define HAVE_GETTEXT 1 +#define HAVE_DCGETTEXT 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define HAVE_LIBZ 1 +#define HAVE_ICONV 1 +#define ICONV_CONST +#define STDC_HEADERS 1 +#define HAVE_LIBINTL_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_SYS_MMAN_H 1 +#define HAVE_UTIME_H 1 +#define HAVE_REGEX_H 1 +#define HAVE__BOOL 1 +#define HAVE_STDBOOL_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_GETPAGESIZE 1 +#define HAVE_MMAP 1 +#define HAVE_DECL_STRERROR_R 1 +#define HAVE_STRERROR_R 1 +#define HAVE_GMTIME_R 1 +#define HAVE_LSTAT 1 +#define HAVE_MEMSET 1 +#define HAVE_MMAP 1 +#define HAVE_MUNMAP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRERROR 1 +#define HAVE_STRTOL 1 +#define HAVE_TIMEGM 1 +#define WANT_VISIBILITY_SUPPORT 1 +#define HAVE_DLL 1 +#define HAVE_LENSDATA 1 +#define HAVE_EXPAT_H 1 +#define HAVE_EXPAT /**/ +#define HAVE_XMP_TOOLKIT 1 + +configure: exit 0 diff --git a/vendor/exiv2-0.25/config.status b/vendor/exiv2-0.25/config.status new file mode 100755 index 0000000..5a96ee6 --- /dev/null +++ b/vendor/exiv2-0.25/config.status @@ -0,0 +1,2290 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by exiv2 $as_me 0.25, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" ./Makefile:./config/Makefile.in ./config/config.mk ./config/exiv2.pc ./po/Makefile.in ./src/doxygen.hpp" +config_headers=" ./config/config.h" +config_commands=" default-1 libtool" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +ac_cs_config="" +ac_cs_version="\ +exiv2 config.status 0.25 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/exiv2node/vendor/exiv2-0.25' +srcdir='.' +INSTALL='/usr/bin/install -c' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''=""' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="%UNSET%" + + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +macro_version='2.2.6' +macro_revision='1.3012' +enable_shared='yes' +enable_static='yes' +pic_mode='default' +enable_fast_install='yes' +host_alias='' +host='x86_64-unknown-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-unknown-linux-gnu' +build_os='linux-gnu' +SED='/bin/sed' +Xsed='/bin/sed -e 1s/^X//' +GREP='/bin/grep' +EGREP='/bin/grep -E' +FGREP='/bin/grep -F' +LD='/usr/bin/ld -m elf_x86_64' +NM='/usr/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1572864' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +OBJDUMP='objdump' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +AR='ar' +AR_FLAGS='cru' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $oldlib' +CC='gcc' +CFLAGS='-O2' +compiler='g++' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +objdir='.libs' +SHELL='/bin/bash' +ECHO='echo' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_static='-static' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='${wl}--export-dynamic' +whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +hardcode_libdir_flag_spec_ld='' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='no' +fix_srcfile_path='' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='no' +libname_spec='lib$name' +library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +soname_spec='${libname}${release}${shared_ext}$major' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-linux-gnu/4.8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib' +sys_lib_dlsearch_path_spec='/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu ' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' +compiler_lib_search_dirs='' +predep_objects='' +postdep_objects='' +predeps='' +postdeps='' +compiler_lib_search_path='' +LD_CXX='/usr/bin/ld -m elf_x86_64' +old_archive_cmds_CXX='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $oldlib' +compiler_CXX='g++' +GCC_CXX='yes' +lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +lt_prog_compiler_wl_CXX='-Wl,' +lt_prog_compiler_pic_CXX=' -fPIC -DPIC' +lt_prog_compiler_static_CXX='-static' +lt_cv_prog_compiler_c_o_CXX='yes' +archive_cmds_need_lc_CXX='no' +enable_shared_with_static_runtimes_CXX='no' +export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +compiler_needs_object_CXX='no' +old_archive_from_new_cmds_CXX='' +old_archive_from_expsyms_cmds_CXX='' +archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +module_cmds_CXX='' +module_expsym_cmds_CXX='' +with_gnu_ld_CXX='yes' +allow_undefined_flag_CXX='' +no_undefined_flag_CXX='' +hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' +hardcode_libdir_flag_spec_ld_CXX='' +hardcode_libdir_separator_CXX='' +hardcode_direct_CXX='no' +hardcode_direct_absolute_CXX='no' +hardcode_minus_L_CXX='no' +hardcode_shlibpath_var_CXX='unsupported' +hardcode_automatic_CXX='no' +inherit_rpath_CXX='no' +link_all_deplibs_CXX='no' +fix_srcfile_path_CXX='' +always_export_symbols_CXX='no' +export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms_CXX='' +prelink_cmds_CXX='' +file_list_spec_CXX='' +hardcode_action_CXX='immediate' +compiler_lib_search_dirs_CXX='/usr/lib/gcc/x86_64-linux-gnu/4.8 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/4.8/../../..' +predep_objects_CXX='/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginS.o' +postdep_objects_CXX='/usr/lib/gcc/x86_64-linux-gnu/4.8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o' +predeps_CXX='' +postdeps_CXX='-lstdc++ -lm -lgcc_s -lc -lgcc_s' +compiler_lib_search_path_CXX='-L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..' + +LTCC='gcc' +LTCFLAGS='-O2' +compiler='gcc' + +# Quote evaled strings. +for var in SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd AR AR_FLAGS STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix SHELL ECHO lt_prog_compiler_no_builtin_flag lt_prog_compiler_wl lt_prog_compiler_pic lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_flag_spec_ld hardcode_libdir_separator fix_srcfile_path exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec finish_eval old_striplib striplib compiler_lib_search_dirs predep_objects postdep_objects predeps postdeps compiler_lib_search_path LD_CXX compiler_CXX lt_prog_compiler_no_builtin_flag_CXX lt_prog_compiler_wl_CXX lt_prog_compiler_pic_CXX lt_prog_compiler_static_CXX lt_cv_prog_compiler_c_o_CXX export_dynamic_flag_spec_CXX whole_archive_flag_spec_CXX compiler_needs_object_CXX with_gnu_ld_CXX allow_undefined_flag_CXX no_undefined_flag_CXX hardcode_libdir_flag_spec_CXX hardcode_libdir_flag_spec_ld_CXX hardcode_libdir_separator_CXX fix_srcfile_path_CXX exclude_expsyms_CXX include_expsyms_CXX file_list_spec_CXX compiler_lib_search_dirs_CXX predep_objects_CXX postdep_objects_CXX predeps_CXX postdeps_CXX compiler_lib_search_path_CXX; do + case `eval \\$ECHO "X\\$$var"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec old_archive_cmds_CXX old_archive_from_new_cmds_CXX old_archive_from_expsyms_cmds_CXX archive_cmds_CXX archive_expsym_cmds_CXX module_cmds_CXX module_expsym_cmds_CXX export_symbols_cmds_CXX prelink_cmds_CXX; do + case `eval \\$ECHO "X\\$$var"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case $lt_ECHO in +*'\$0 --fallback-echo"') lt_ECHO=`$ECHO "X$lt_ECHO" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; +esac + +ac_aux_dir='./config' +xsi_shell='yes' +lt_shell_append='yes' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='exiv2' + VERSION='0.25' + TIMESTAMP='' + RM='rm -f' + ofile='libtool' + + + + + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "./config/config.h") CONFIG_HEADERS="$CONFIG_HEADERS ./config/config.h" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "./Makefile") CONFIG_FILES="$CONFIG_FILES ./Makefile:./config/Makefile.in" ;; + "./config/config.mk") CONFIG_FILES="$CONFIG_FILES ./config/config.mk" ;; + "./config/exiv2.pc") CONFIG_FILES="$CONFIG_FILES ./config/exiv2.pc" ;; + "./po/Makefile.in") CONFIG_FILES="$CONFIG_FILES ./po/Makefile.in" ;; + "./src/doxygen.hpp") CONFIG_FILES="$CONFIG_FILES ./src/doxygen.hpp" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["EXV_LIB_STATIC"]="" +S["ENABLE_XMP"]="1" +S["EXPAT_LIBS"]="-lexpat" +S["EXPAT_LDFLAGS"]="" +S["EXPAT_CPPFLAGS"]="" +S["USE_SSH"]="" +S["SSH_LIBS"]="" +S["SSH_LDFLAGS"]="" +S["SSH_CPPFLAGS"]="" +S["CURL_LIBS"]="" +S["CURL_LDFLAGS"]="" +S["CURL_CPPFLAGS"]="" +S["ENABLE_VIDEO"]="" +S["COMMERCIAL_VERSION"]="no" +S["DEP_TRACKING"]="1" +S["HAVE_TIMEGM"]="1" +S["GCC"]="yes" +S["GXX"]="yes" +S["HAVE_LIBZ"]="1" +S["LIBM"]="-lm" +S["LIBTOOL_DEPS"]="./config/ltmain.sh" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["lt_ECHO"]="echo" +S["RANLIB"]="ranlib" +S["STRIP"]="strip" +S["AR"]="ar" +S["OBJDUMP"]="objdump" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/bin/grep -F" +S["EGREP"]="/bin/grep -E" +S["GREP"]="/bin/grep" +S["SED"]="/bin/sed" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["POSUB"]="po" +S["LTLIBINTL"]="" +S["LIBINTL"]="" +S["INTLLIBS"]="" +S["LTLIBICONV"]="" +S["LIBICONV"]="" +S["INTL_MACOSX_LIBS"]="" +S["MSGMERGE"]=":" +S["XGETTEXT"]=":" +S["GMSGFMT"]=":" +S["MSGFMT"]=":" +S["USE_NLS"]="yes" +S["MKINSTALLDIRS"]="$(top_builddir)/./config/mkinstalldirs" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="x86_64" +S["host"]="x86_64-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["SET_MAKE"]="" +S["LN_S"]="ln -s" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["CPP"]="gcc -E" +S["ac_ct_CC"]="gcc" +S["CFLAGS"]="-O2" +S["CC"]="gcc" +S["CXXCPP"]="g++ -E" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CXX"]="g++" +S["CPPFLAGS"]="" +S["LDFLAGS"]=" -ldl" +S["CXXFLAGS"]="-O2 -fvisibility=hidden -fvisibility-inlines-hidden" +S["CXX"]="g++" +S["VERSION"]="0.25" +S["PACKAGE"]="exiv2" +S["EXIV2_LTVERSION"]="14:0:0" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lz -lm" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="ahuggel@gmx.net" +S["PACKAGE_STRING"]="exiv2 0.25" +S["PACKAGE_VERSION"]="0.25" +S["PACKAGE_TARNAME"]="exiv2" +S["PACKAGE_NAME"]="exiv2" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"exiv2\"" +D["PACKAGE_TARNAME"]=" \"exiv2\"" +D["PACKAGE_VERSION"]=" \"0.25\"" +D["PACKAGE_STRING"]=" \"exiv2 0.25\"" +D["PACKAGE_BUGREPORT"]=" \"ahuggel@gmx.net\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"exiv2\"" +D["VERSION"]=" \"0.25\"" +D["ENABLE_NLS"]=" 1" +D["HAVE_GETTEXT"]=" 1" +D["HAVE_DCGETTEXT"]=" 1" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["HAVE_LIBZ"]=" 1" +D["HAVE_ICONV"]=" 1" +D["ICONV_CONST"]=" " +D["STDC_HEADERS"]=" 1" +D["HAVE_LIBINTL_H"]=" 1" +D["HAVE_LOCALE_H"]=" 1" +D["HAVE_MALLOC_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SYS_MMAN_H"]=" 1" +D["HAVE_UTIME_H"]=" 1" +D["HAVE_REGEX_H"]=" 1" +D["HAVE__BOOL"]=" 1" +D["HAVE_STDBOOL_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SYS_PARAM_H"]=" 1" +D["HAVE_GETPAGESIZE"]=" 1" +D["HAVE_MMAP"]=" 1" +D["HAVE_DECL_STRERROR_R"]=" 1" +D["HAVE_STRERROR_R"]=" 1" +D["HAVE_GMTIME_R"]=" 1" +D["HAVE_LSTAT"]=" 1" +D["HAVE_MEMSET"]=" 1" +D["HAVE_MMAP"]=" 1" +D["HAVE_MUNMAP"]=" 1" +D["HAVE_STRCHR"]=" 1" +D["HAVE_STRERROR"]=" 1" +D["HAVE_STRTOL"]=" 1" +D["HAVE_TIMEGM"]=" 1" +D["WANT_VISIBILITY_SUPPORT"]=" 1" +D["HAVE_DLL"]=" 1" +D["HAVE_LENSDATA"]=" 1" +D["HAVE_EXPAT_H"]=" 1" +D["HAVE_EXPAT"]=" /**/" +D["HAVE_XMP_TOOLKIT"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default-1":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF + ;; + esac + + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/vendor/exiv2-0.25/config/config.h b/vendor/exiv2-0.25/config/config.h new file mode 100644 index 0000000..ea29804 --- /dev/null +++ b/vendor/exiv2-0.25/config/config.h @@ -0,0 +1,294 @@ +/* ./config/config.h. Generated from config.h.in by configure. */ +#ifndef __CONFIG__H__ +#define __CONFIG__H__ + +#ifdef _MSC_VER +# include "exv_msvc.h" +#else + +/* Define to 1 if you want to use libssh */ +/* #undef USE_SSH */ + +/* Define to 1 if you want to use libcurl in httpIo */ +/* #undef USE_CURL */ + +/* Define to 1 if you have the `alarm' function. */ +/* #undef HAVE_ALARM */ + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the `gmtime_r' function. */ +#define HAVE_GMTIME_R 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIBINTL_H 1 + +#ifndef EXV_COMMERCIAL_VERSION + +/* Define to 1 to enable translation of Nikon lens names. */ +#define HAVE_LENSDATA 1 + +/* Define to 1 if translation of program messages to the user's + native language is requested. */ +#define ENABLE_NLS 1 + +#endif /* !EXV_COMMERCIAL_VERSION */ + +/* Define to 1 to include video code in the library */ +/* #undef ENABLE_VIDEO */ + +/* Define to 1 to include webready code in the library */ +/* #undef ENABLE_WEBREADY */ + +/* Define to 1 if you have the `iconv' function. */ +#define HAVE_ICONV 1 + +/* Define to `const' or to empty, depending on the second argument of `iconv'. */ +#define ICONV_CONST + +/* Define to 1 if you have the header file. */ +#define HAVE_LIBINTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_REGEX 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +/* #undef HAVE_MALLOC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `lstat' function. */ +#define HAVE_LSTAT 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +/* #undef HAVE_REALLOC */ + +/* Define to 1 if stdbool.h conforms to C99. */ +#define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#define HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `munmap' function. */ +#define HAVE_MUNMAP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TIME_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `timegm' function. */ +#define HAVE_TIMEGM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vprintf' function. */ +/* #undef HAVE_VPRINTF */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the `zlib' library. */ +#define HAVE_LIBZ 1 + +/* Define to 1 if you have the Adobe XMP Toolkit. */ +#define HAVE_XMP_TOOLKIT 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#define HAVE__BOOL 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ + +/* Define if C++ visibility support is enabled */ +#define WANT_VISIBILITY_SUPPORT 1 + +/* Define if we have / are building a shared library (DLL) */ +#define HAVE_DLL 1 + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "ahuggel@gmx.net" + +/* Define to the name of this package. */ +#define PACKAGE "exiv2" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "exiv2" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "exiv2 0.25" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "exiv2" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.25" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if strerror_r returns char *. */ +/* #undef STRERROR_R_CHAR_P */ + +/* Define to 1 if you can safely include both and . */ +/* #undef TIME_WITH_SYS_TIME */ + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +#if defined __CYGWIN32__ && !defined __CYGWIN__ + /* For backwards compatibility with Cygwin b19 and + earlier, we define __CYGWIN__ here, so that + we can rely on checking just for that macro. */ +#define __CYGWIN__ __CYGWIN32__ +#endif + +#if defined __MINGW32__ || defined __MINGW64__ +#ifndef __MINGW__ +#define __MINGW__ 1 +#endif +#endif + +/* File path separator */ +#if defined WIN32 && !defined __CYGWIN__ +#define SEPARATOR_STR "\\" +#define SEPARATOR_CHR '\\' +#else +#define SEPARATOR_STR "/" +#define SEPARATOR_CHR '/' +#endif + +/* Windows unicode path support */ +#if defined WIN32 && !defined __CYGWIN__ && !defined __MINGW__ +# define EXV_UNICODE_PATH +#endif + +/* Symbol visibility support */ +#ifdef WIN32 +# define EXV_IMPORT __declspec(dllimport) +# define EXV_EXPORT __declspec(dllexport) +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +#else +# ifdef EXV_WANT_VISIBILITY_SUPPORT +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define EXV_IMPORT __attribute__ ((visibility("default"))) +# define EXV_EXPORT __attribute__ ((visibility("default"))) +# define EXV_DLLLOCAL __attribute__ ((visibility("hidden"))) +# define EXV_DLLPUBLIC __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +# define EXV_IMPORT __global +# define EXV_EXPORT __global +# define EXV_DLLLOCAL __hidden +# define EXV_DLLPUBLIC __global +# else +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif +# else /* ! EXV_WANT_VISIBILITY_SUPPORT */ +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif /* ! EXV_WANT_VISIBILITY_SUPPORT */ +#endif /* ! WIN32 */ + +/* Define EXIV2API for DLL builds */ +#ifdef EXV_HAVE_DLL +# ifdef EXV_BUILDING_LIB +# define EXIV2API EXV_EXPORT +# else +# define EXIV2API EXV_IMPORT +# endif /* ! EXV_BUILDING_LIB */ +#else +# define EXIV2API +#endif /* ! EXV_HAVE_DLL */ + +/* + If you're using Solaris and the Solaris Studio compiler, then you really + do need to use -library=stdcxx4 along with these inclusions below +*/ +#if defined(OS_SOLARIS) +#include +#include +#include +#include +#include +#if defined(__cplusplus) +#include +#include +#endif +#endif + +#endif +#endif diff --git a/vendor/exiv2-0.25/config/config.mk b/vendor/exiv2-0.25/config/config.mk new file mode 100644 index 0000000..b4246b1 --- /dev/null +++ b/vendor/exiv2-0.25/config/config.mk @@ -0,0 +1,203 @@ +# ***************************************************** -*- Makefile -*- +# +# Copyright (C) 2004-2015 Andreas Huggel +# +# This Makefile is part of the Exiv2 distribution. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# File: config.mk.in +# Version: $Rev: 3866 $ +# Author(s): Andreas Huggel (ahu) +# History: 10-Dec-03, ahu: created +# +# Description: +# Exiv2 system configuration file. +# + +# ********************************************************************** +# Exiv2 version for use with libtool (-version-info argument) +EXIV2_LTVERSION = 14:0:0 +# Compile for use with a commercial license +COMMERCIAL_VERSION = no + +# ********************************************************************** +# Libtool +LIBTOOL = $(top_srcdir)/libtool +LIBTOOL_DEPS = $(top_srcdir)/./config/ltmain.sh + +# ********************************************************************** +# C++ Compiler and precompiler +CXX = g++ +GXX = yes + +# Common compiler flags (warnings, symbols [-ggdb], optimization [-O2], etc) +CXXFLAGS = -O2 -fvisibility=hidden -fvisibility-inlines-hidden +ifeq ($(GXX),yes) + CXXFLAGS += -Wall -Wcast-align -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Woverloaded-virtual -W +endif + +# Command to run only the preprocessor +CXXCPP = g++ -E + +# Preprocessor flags +CPPFLAGS = -I../src -I../include/ -I../include/exiv2 -DEXV_LOCALEDIR=\"$(localedir)\" +ifeq ($(COMMERCIAL_VERSION),yes) + CPPFLAGS += -DEXV_COMMERCIAL_VERSION=1 +endif + +# Linker flags and libraries +LDFLAGS = -ldl +LIBS = -lz -lm + +# Suffix of executables +EXEEXT := + +# ********************************************************************** +# C Compiler +CC = gcc +GCC = yes + +CFLAGS = -O2 +ifeq ($(GCC),yes) + CFLAGS += -Wall +endif + +# ********************************************************************** +# XMP support +ENABLE_XMP = 1 + +ifdef ENABLE_XMP + XMPSDK_LIBRARY = xmpsdk + XMPSDK_DIR = $(top_srcdir)/xmpsdk + XMPSDK_CPPFLAGS = -I$(XMPSDK_DIR)/include + XMPSDK_LDFLAGS = -L$(XMPSDK_DIR)/src + XMPSDK_LIBS = -l$(XMPSDK_LIBRARY) +else + # Enable additional warnings. XMP Toolkit doesn't compile + # with these. + ifeq ($(GXX),yes) + CXXFLAGS += -Wundef -pedantic + endif +endif + +# Libcurl need for httpIO if it's selected +CURL_CPPFLAGS = +CURL_LDFLAGS = +CURL_LIBS = + +# Libssh need for SshIO if it's selected +USE_SSH = +SSH_CPPFLAGS = +SSH_LDFLAGS = +SSH_LIBS = + +# Expat library needed to compile the XMP Toolkit +EXPAT_LDFLAGS = +EXPAT_CPPFLAGS = +EXPAT_LIBS = -lexpat + +# ********************************************************************** +# Video support +ENABLE_VIDEO = + +# ********************************************************************** +# Libraries, include files, functions +HAVE_LIBZ = 1 +HAVE_STDINT = @HAVE_STDINT@ +HAVE_TIMEGM = 1 + +# ********************************************************************** +# Advanced auto-dependency generation +# http://make.paulandlesley.org/autodep.html +DEP_TRACKING = 1 + +ifdef DEP_TRACKING + # Directory for dependency files + DEPDIR = .deps + + # Command to run the compiler or preprocessor to produce + # dependencies. If you're not using gcc, you may need to change + # this to something suitable for your compiler or simply unset + # the variable. See the link above for suggestions. + MAKEDEPEND = $(CXX) -MM $(CPPFLAGS) -o $*.d $< + + # Dependency files post-process commands + POSTDEPEND = if test ! -d $(DEPDIR); then mkdir $(DEPDIR); fi; \ + if test -e $*.d; then cp $*.d $(DEPDIR)/$*.d; \ + sed -e 's/^\#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ + -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $(DEPDIR)/$*.d; \ + $(RM) $*.d; fi + + # Compiler flags to generate dependency files at the same time + # as object files (for gcc) + ifeq ($(GXX),yes) + CXXFLAGS += -MMD + CFLAGS += -MMD + MAKEDEPEND = + endif +endif + +# ********************************************************************** +# Compilation shortcuts +COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c +COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c +# LINK.cc does not need $(LIBS), libtool's dark magic takes care of that +# when linking a binary with a libtool library. +LINK.cc = $(CXX) $(LDFLAGS) + +# ********************************************************************** +# Installation programs +INSTALL_EXE = /usr/bin/install -c +INSTALL_PROGRAM = $(INSTALL_EXE) +INSTALL_DATA = $(INSTALL_EXE) -m 644 +INSTALL_DIRS = $(top_srcdir)/config/mkinstalldirs + +# ********************************************************************** +# Other programs +RM = rm -f + +# ********************************************************************** +# Directories +prefix = /usr/local +exec_prefix = ${prefix} + +# Source directory +srcdir = . + +# Installation directories +bindir = ${exec_prefix}/bin +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = $(datadir)/locale +incdir = ${prefix}/include/exiv2 +libdir = ${exec_prefix}/lib +mandir = ${datarootdir}/man +man1dir = $(mandir)/man1 + +# That's all Folks! +## diff --git a/vendor/exiv2-0.25/config/exiv2.pc b/vendor/exiv2-0.25/config/exiv2.pc new file mode 100644 index 0000000..d6159b4 --- /dev/null +++ b/vendor/exiv2-0.25/config/exiv2.pc @@ -0,0 +1,11 @@ +prefix=/usr/local +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: exiv2 +Description: Image metadata library and tools +Version: 0.25 +Libs: -L${libdir} -lexiv2 +Libs.private: -lz -lm -lexpat +Cflags: -I${includedir} diff --git a/vendor/exiv2-0.25/libtool b/vendor/exiv2-0.25/libtool new file mode 100755 index 0000000..47b1a58 --- /dev/null +++ b/vendor/exiv2-0.25/libtool @@ -0,0 +1,9063 @@ +#! /bin/bash + +# libtool - Provide generalized library-building support services. +# Generated automatically by config.status (exiv2) 0.25 +# Libtool was configured on host vagrant-base-trusty-amd64: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=2.2.6 +macro_revision=1.3012 + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# What type of objects to build. +pic_mode=default + +# Whether or not to optimize for fast installation. +fast_install=yes + +# The host system. +host_alias= +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# A sed program that does not truncate output. +SED="/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP="/bin/grep" + +# An ERE matcher. +EGREP="/bin/grep -E" + +# A literal string matcher. +FGREP="/bin/grep -F" + +# A BSD- or MS-compatible name lister. +NM="/usr/bin/nm -B" + +# Whether we need soft or hard links. +LN_S="ln -s" + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Object file suffix (normally "o"). +objext=o + +# Executable file suffix (normally ""). +exeext= + +# whether the shell understands "unset". +lt_unset=unset + +# turn spaces into newlines. +SP2NL="tr \\040 \\012" + +# turn newlines into spaces. +NL2SP="tr \\015\\012 \\040\\040" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# An object symbol dumper. +OBJDUMP="objdump" + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd="\$MAGIC_CMD" + +# The archiver. +AR="ar" +AR_FLAGS="cru" + +# A symbol stripping program. +STRIP="strip" + +# Commands used to install an old-style archive. +RANLIB="ranlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" +old_postuninstall_cmds="" + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-O2" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# An echo program that does not interpret backslashes. +ECHO="echo" + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=file + +# Must we lock files when doing compilation? +need_locks="no" + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL="" + +# Tool to change global to local symbols on Mac OS X. +NMEDIT="" + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO="" + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL="" + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64="" + +# Old archive suffix (normally "a"). +libext=a + +# Shared library suffix (normally ".so"). +shrext_cmds=".so" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Do we need the "lib" prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Library versioning type. +version_type=linux + +# Shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# Shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Command to use after installation of a shared archive. +postinstall_cmds="" + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval="" + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Compile-time system search path for libraries. +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/4.8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib" + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu " + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" + +# A language specific compiler. +CC="gcc" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into a binary +# during linking. This must work even if $libdir does not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=no + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs="" + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects="" +postdep_objects="" +predeps="" +postdeps="" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="" + +# ### END LIBTOOL CONFIG + +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION="2.2.6 Debian-2.2.6a-4" +TIMESTAMP="" +package_revision=1.3012 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/bin/sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +# Generated shell functions inserted here. + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} + +exit_cmd=: + + + + + +# Check that we have a working $ECHO. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell, and then maybe $ECHO will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done + case "$@ " in + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T <?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { +test "$mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac + + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." + + exit $? +} + + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + $ECHO "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + $ECHO "X----------------------------------------------------------------------" | $Xsed + $ECHO "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + $ECHO + $ECHO "If you ever happen to want to link against installed libraries" + $ECHO "in a given directory, LIBDIR, you must either use libtool, and" + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" + $ECHO "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" + $ECHO " during execution" + fi + if test -n "$runpath_var"; then + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" + $ECHO " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $ECHO + + $ECHO "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} + +test "$mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + $ECHO >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac + + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + + +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 + fi + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + ECHO=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$ECHO works! + : + else + # Restart under the correct shell, and then maybe \$ECHO will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $ECHO "\ + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done +" +} +# end: func_emit_wrapper_part1 + +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} +# end: func_emit_wrapper_part2 + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 + fi + + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} + + +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +# define setmode _setmode +#else +# include +# include +# ifdef __CYGWIN__ +# include +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : ""), + (value ? value : ""))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done + fi + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | + $GREP . >/dev/null; then + $ECHO + if test "X$deplibs_check_method" = "Xnone"; then + $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + else + $ECHO "*** Warning: inter-library dependencies are not known to be supported." + fi + $ECHO "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $ECHO + $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + $ECHO "*** a static module, that should work as long as the dlopening" + $ECHO "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $ECHO "*** The inter-library dependencies that have been dropped here will be" + $ECHO "*** automatically added whenever a program is linked with this library" + $ECHO "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; + *) files="$files $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib" + +# A language specific compiler. +CC="g++" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into a binary +# during linking. This must work even if $libdir does not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=no + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/4.8 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/4.8/../../.." + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbeginS.o" +postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crtn.o" +predeps="" +postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.." + +# ### END LIBTOOL TAG CONFIG: CXX diff --git a/vendor/exiv2-0.25/po/Makefile b/vendor/exiv2-0.25/po/Makefile new file mode 100644 index 0000000..ff8e940 --- /dev/null +++ b/vendor/exiv2-0.25/po/Makefile @@ -0,0 +1,491 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.14.4 + +PACKAGE = exiv2 +VERSION = 0.25 +PACKAGE_BUGREPORT = ahuggel@gmx.net + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr/local +exec_prefix = ${prefix} +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +MKINSTALLDIRS = $(top_builddir)/./config/mkinstalldirs +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + +GMSGFMT = : +MSGFMT = : +XGETTEXT = : +MSGMERGE = msgmerge +MSGMERGE_UPDATE = : --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = bs.po de.po es.po fi.po fr.po gl.po ms.po pl.po pt.po ru.po sk.po sv.po ug.po uk.po vi.po +GMOFILES = bs.gmo de.gmo es.gmo fi.gmo fr.gmo gl.gmo ms.gmo pl.gmo pt.gmo ru.gmo sk.gmo sv.gmo ug.gmo uk.gmo vi.gmo +UPDATEPOFILES = bs.po-update de.po-update es.po-update fi.po-update fr.po-update gl.po-update ms.po-update pl.po-update pt.po-update ru.po-update sk.po-update sv.po-update ug.po-update uk.po-update vi.po-update +DUMMYPOFILES = bs.nop de.nop es.nop fi.nop fr.nop gl.nop ms.nop pl.nop pt.nop ru.nop sk.nop sv.nop ug.nop uk.nop vi.nop +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + ../src/actions.cpp \ + ../src/canonmn.cpp \ + ../src/crwimage.cpp \ + ../src/datasets.cpp \ + ../src/error.cpp \ + ../src/exiv2.cpp \ + ../src/fujimn.cpp \ + ../src/minoltamn.cpp \ + ../src/nikonmn.cpp \ + ../src/olympusmn.cpp \ + ../src/panasonicmn.cpp \ + ../src/pentaxmn.cpp \ + ../src/properties.cpp \ + ../src/sigmamn.cpp \ + ../src/sonymn.cpp \ + ../src/tags.cpp \ + ../src/tiffimage.cpp \ + ../src/tiffvisitor.cpp + +CATALOGS = bs.gmo de.gmo es.gmo fi.gmo fr.gmo gl.gmo ms.gmo pl.gmo pt.gmo ru.gmo sk.gmo sv.gmo ug.gmo uk.gmo vi.gmo + +# Makevars gets inserted here. (Don't remove this line!) +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Andreas Huggel + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = ahuggel@gmx.net + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-yes + +all-yes: stamp-po +all-no: + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT stamp-po + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po *.gmo + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status POTFILES.in LINGUAS + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/vendor/exiv2-0.25/po/Makefile.in b/vendor/exiv2-0.25/po/Makefile.in new file mode 100644 index 0000000..e6cd7c3 --- /dev/null +++ b/vendor/exiv2-0.25/po/Makefile.in @@ -0,0 +1,385 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.14.4 + +PACKAGE = exiv2 +VERSION = 0.25 +PACKAGE_BUGREPORT = ahuggel@gmx.net + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr/local +exec_prefix = ${prefix} +datarootdir = ${prefix}/share +datadir = ${datarootdir} +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +MKINSTALLDIRS = $(top_builddir)/./config/mkinstalldirs +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + +GMSGFMT = : +MSGFMT = : +XGETTEXT = : +MSGMERGE = msgmerge +MSGMERGE_UPDATE = : --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-yes + +all-yes: stamp-po +all-no: + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-yes + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT stamp-po + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po *.gmo + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/vendor/exiv2-0.25/po/POTFILES b/vendor/exiv2-0.25/po/POTFILES new file mode 100644 index 0000000..fdfa269 --- /dev/null +++ b/vendor/exiv2-0.25/po/POTFILES @@ -0,0 +1,18 @@ + ../src/actions.cpp \ + ../src/canonmn.cpp \ + ../src/crwimage.cpp \ + ../src/datasets.cpp \ + ../src/error.cpp \ + ../src/exiv2.cpp \ + ../src/fujimn.cpp \ + ../src/minoltamn.cpp \ + ../src/nikonmn.cpp \ + ../src/olympusmn.cpp \ + ../src/panasonicmn.cpp \ + ../src/pentaxmn.cpp \ + ../src/properties.cpp \ + ../src/sigmamn.cpp \ + ../src/sonymn.cpp \ + ../src/tags.cpp \ + ../src/tiffimage.cpp \ + ../src/tiffvisitor.cpp diff --git a/vendor/exiv2-0.25/src/doxygen.hpp b/vendor/exiv2-0.25/src/doxygen.hpp new file mode 100644 index 0000000..0d1d7f4 --- /dev/null +++ b/vendor/exiv2-0.25/src/doxygen.hpp @@ -0,0 +1,145 @@ +// ***************************************************************** -*- C++ -*- +/*! + @file doxygen.hpp + @brief Additional documentation, this file contains no source code + @version $Rev: 3860 $ + @author Andreas Huggel (ahu) + ahuggel@gmx.net + @date 07-Feb-04, ahu: created + */ +// ***************************************************************************** +// *** NOTE: doxygen.hpp is a generated file! Only edit doxygen.hpp.in *** +// ***************************************************************************** +/*! + @mainpage Image metadata library and tools v0.25 + + @section overview Exiv2 Overview + + %Exiv2 comprises of a C++ library and a command line utility to access image + metadata. %Exiv2 is free software. The homepage of %Exiv2 is at + http://www.exiv2.org/. + + The %Exiv2 library provides + - fast read and write access to the Exif, IPTC and XMP metadata of an image + through %Exiv2 keys and standard C++ iterators + - conversion of Exif and IPTC metadata to and from XMP + - a smart IPTC implementation that does not affect data that programs like + Photoshop store in the same image segment + - Exif MakerNote support: + - %MakerNote tags can be accessed just like any other Exif metadata + - a sophisticated write algorithm avoids corrupting the %MakerNote + - extract and delete methods for Exif thumbnails (both, JPEG and TIFF thumbnails) + - set methods for Exif thumbnails (JPEG only, TIFF thumbnails can be set from + individual tags) + - an easy to use and well documented API + + @section getting-started Getting started + + A few pointers to get you started with + the %Exiv2 library without delay. + + @section metadata Metadata reference tables + + Exif and MakerNote tags + - Standard Exif tags + - Canon MakerNote tags + - Fujifilm MakerNote tags + - Minolta MakerNote tags + - Nikon MakerNote tags + - Olympus MakerNote tags + - Panasonic MakerNote tags + - Pentax MakerNote tags + - Samsung MakerNote tags + - Sigma/Foveon MakerNote tags + - Sony MakerNote tags + + IPTC datasets + - IPTC datasets + + XMP properties + - dc schema + - DwC schema + - xmp schema + - xmpRights schema + - xmpMM schema + - xmpBJ schema + - xmpTPg schema + - xmpDM schema + - pdf schema + - photoshop schema + - crs schema + - tiff schema + - exif schema + - aux schema + - Iptc4xmpCore schema + - Iptc4xmpExt schema + - PLUS schema + - digiKam schema + - KDE Image Program Interface schema + - MicrosoftPhoto schema + - iView Media Pro schema + - Microsoft Expression Media schema + - Microsoft Photo 1.2 schema + - Microsoft Photo RegionInfo schema + - Microsoft Photo Region schema + - Metadata Working Group Regions schema + + @section formats File Formats + +

See the list of supported image formats + in the Wiki and the Canon CRW mapping.

+ + @section supp Support + +

All project resources are accessible from the + project website.

+ +

Please send feedback or queries to the %Exiv2 forum. For new bug reports + and feature requests, please open an issue.

+ + @section license License + +

Copyright (C) 2004-2015 Andreas Huggel

+ +

%Exiv2 is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version.

+ +

Alternatively, %Exiv2 is also available with a commercial license, which + allows it to be used in closed-source projects. + Contact me for more information.

+ +

%Exiv2 is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more + details.

+ +

You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.

+*/ +/*! + @example addmoddel.cpp + Sample usage of high-level metadata operations. + */ +/*! + @example exifprint.cpp + Sample program to print Exif data from an image. + */ +/*! + @example exifcomment.cpp + Sample program showing how to set the Exif comment of an image. + */ +/*! + @example iptcprint.cpp + Sample program to print the IPTC metadata of an image + */ +/*! + @example iptceasy.cpp + The quickest way to access, set or modify IPTC metadata + */ +/*! + @example xmpsample.cpp + Sample usage of high-level XMP classes. + */ diff --git a/vendor/exiv2.gyp b/vendor/exiv2.gyp new file mode 100644 index 0000000..0e2f897 --- /dev/null +++ b/vendor/exiv2.gyp @@ -0,0 +1,70 @@ +{ + 'targets': [ + { + 'target_name': 'libexiv2', + "type": "static_library", + "include_dirs": [ + 'exiv2-0.25/include/exiv2', + 'exiv2-0.25/config' + ], + "sources": [ + "exiv2-0.25/src/basicio.cpp", + "exiv2-0.25/src/bmpimage.cpp", + "exiv2-0.25/src/canonmn.cpp", + "exiv2-0.25/src/casiomn.cpp", + "exiv2-0.25/src/convert.cpp", + "exiv2-0.25/src/cr2image.cpp", + "exiv2-0.25/src/crwimage.cpp", + "exiv2-0.25/src/datasets.cpp", + "exiv2-0.25/src/easyaccess.cpp", + "exiv2-0.25/src/epsimage.cpp", + "exiv2-0.25/src/error.cpp", + "exiv2-0.25/src/exif.cpp", + "exiv2-0.25/src/futils.cpp", + "exiv2-0.25/src/fujimn.cpp", + "exiv2-0.25/src/gifimage.cpp", + "exiv2-0.25/src/http.cpp", + "exiv2-0.25/src/image.cpp", + "exiv2-0.25/src/iptc.cpp", + "exiv2-0.25/src/jp2image.cpp", + "exiv2-0.25/src/jpgimage.cpp", + "exiv2-0.25/src/makernote.cpp", + "exiv2-0.25/src/metadatum.cpp", + "exiv2-0.25/src/minoltamn.cpp", + "exiv2-0.25/src/mrwimage.cpp", + "exiv2-0.25/src/nikonmn.cpp", + "exiv2-0.25/src/olympusmn.cpp", + "exiv2-0.25/src/orfimage.cpp", + "exiv2-0.25/src/panasonicmn.cpp", + "exiv2-0.25/src/pentaxmn.cpp", + "exiv2-0.25/src/pgfimage.cpp", + "exiv2-0.25/src/pngimage.cpp", + "exiv2-0.25/src/pngchunk.cpp", + "exiv2-0.25/src/preview.cpp", + "exiv2-0.25/src/properties.cpp", + "exiv2-0.25/src/psdimage.cpp", + "exiv2-0.25/src/rafimage.cpp", + "exiv2-0.25/src/rw2image.cpp", + "exiv2-0.25/src/samsungmn.cpp", + "exiv2-0.25/src/ssh.cpp", + "exiv2-0.25/src/sigmamn.cpp", + "exiv2-0.25/src/sonymn.cpp", + "exiv2-0.25/src/tags.cpp", + "exiv2-0.25/src/tgaimage.cpp", + "exiv2-0.25/src/tiffcomposite.cpp", + "exiv2-0.25/src/tiffimage.cpp", + "exiv2-0.25/src/tiffvisitor.cpp", + "exiv2-0.25/src/types.cpp", + "exiv2-0.25/src/value.cpp", + "exiv2-0.25/src/version.cpp", + "exiv2-0.25/src/xmp.cpp", + "exiv2-0.25/src/xmpsidecar.cpp", + "exiv2-0.25/src/asfvideo.cpp", + "exiv2-0.25/src/matroskavideo.cpp", + "exiv2-0.25/src/quicktimevideo.cpp", + "exiv2-0.25/src/riffvideo.cpp", + "exiv2-0.25/src/utilsvideo.cpp" + ] + } + ] +} From 1adb3d0143ea11ae137f9a65fdce1a3e956da1e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Sun, 3 Apr 2016 15:14:39 +0200 Subject: [PATCH 03/13] Added generated exv_conf --- vendor/exiv2-0.25/include/exiv2/exv_conf.h | 294 +++++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 vendor/exiv2-0.25/include/exiv2/exv_conf.h diff --git a/vendor/exiv2-0.25/include/exiv2/exv_conf.h b/vendor/exiv2-0.25/include/exiv2/exv_conf.h new file mode 100644 index 0000000..5969e28 --- /dev/null +++ b/vendor/exiv2-0.25/include/exiv2/exv_conf.h @@ -0,0 +1,294 @@ +/* ./config/config.h. Generated from config.h.in by configure. */ +#ifndef __CONFIG__H__ +#define __CONFIG__H__ + +#ifdef _MSC_VER +# include "exv_msvc.h" +#else + +/* Define to 1 if you want to use libssh */ +/* #undef EXV_USE_SSH */ + +/* Define to 1 if you want to use libcurl in httpIo */ +/* #undef EXV_USE_CURL */ + +/* Define to 1 if you have the `alarm' function. */ +/* #undef EXV_HAVE_ALARM */ + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#define EXV_HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the `gmtime_r' function. */ +#define EXV_HAVE_GMTIME_R 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_LIBINTL_H 1 + +#ifndef EXV_COMMERCIAL_VERSION + +/* Define to 1 to enable translation of Nikon lens names. */ +#define EXV_HAVE_LENSDATA 1 + +/* Define to 1 if translation of program messages to the user's + native language is requested. */ +#define EXV_ENABLE_NLS 1 + +#endif /* !EXV_COMMERCIAL_VERSION */ + +/* Define to 1 to include video code in the library */ +/* #undef EXV_ENABLE_VIDEO */ + +/* Define to 1 to include webready code in the library */ +/* #undef EXV_ENABLE_WEBREADY */ + +/* Define to 1 if you have the `iconv' function. */ +#define EXV_HAVE_ICONV 1 + +/* Define to `const' or to empty, depending on the second argument of `iconv'. */ +#define EXV_ICONV_CONST + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_LIBINTL_H 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_REGEX 1 + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +/* #undef EXV_HAVE_MALLOC */ + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_MALLOC_H 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define EXV_HAVE_MEMSET 1 + +/* Define to 1 if you have the `lstat' function. */ +#define EXV_HAVE_LSTAT 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +/* #undef EXV_HAVE_REALLOC */ + +/* Define to 1 if stdbool.h conforms to C99. */ +#define EXV_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define EXV_HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define EXV_HAVE_STRERROR 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#define EXV_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#define EXV_HAVE_STRTOL 1 + +/* Define to 1 if you have the `mmap' function. */ +#define EXV_HAVE_MMAP 1 + +/* Define to 1 if you have the `munmap' function. */ +#define EXV_HAVE_MUNMAP 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef EXV_HAVE_SYS_TIME_H */ + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the `timegm' function. */ +#define EXV_HAVE_TIMEGM 1 + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `vprintf' function. */ +/* #undef EXV_HAVE_VPRINTF */ + +/* Define to 1 if you have the header file. */ +/* #undef EXV_HAVE_WCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define EXV_HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the `zlib' library. */ +#define EXV_HAVE_LIBZ 1 + +/* Define to 1 if you have the Adobe XMP Toolkit. */ +#define EXV_HAVE_XMP_TOOLKIT 1 + +/* Define to 1 if the system has the type `_Bool'. */ +#define EXV_HAVE__BOOL 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +/* #undef EXV_LSTAT_FOLLOWS_SLASHED_SYMLINK */ + +/* Define if C++ visibility support is enabled */ +#define EXV_WANT_VISIBILITY_SUPPORT 1 + +/* Define if we have / are building a shared library (DLL) */ +#define EXV_HAVE_DLL 1 + +/* Define to the address where bug reports for this package should be sent. */ +#define EXV_PACKAGE_BUGREPORT "ahuggel@gmx.net" + +/* Define to the name of this package. */ +#define EXV_PACKAGE "exiv2" + +/* Define to the full name of this package. */ +#define EXV_PACKAGE_NAME "exiv2" + +/* Define to the full name and version of this package. */ +#define EXV_PACKAGE_STRING "exiv2 0.25" + +/* Define to the one symbol short name of this package. */ +#define EXV_PACKAGE_TARNAME "exiv2" + +/* Define to the version of this package. */ +#define EXV_PACKAGE_VERSION "0.25" + +/* Define to 1 if you have the ANSI C header files. */ +#define EXV_STDC_HEADERS 1 + +/* Define to 1 if strerror_r returns char *. */ +/* #undef EXV_STRERROR_R_CHAR_P */ + +/* Define to 1 if you can safely include both and . */ +/* #undef EXV_TIME_WITH_SYS_TIME */ + +/* Define to 1 if your declares `struct tm'. */ +/* #undef EXV_TM_IN_SYS_TIME */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +#if defined __CYGWIN32__ && !defined __CYGWIN__ + /* For backwards compatibility with Cygwin b19 and + earlier, we define __CYGWIN__ here, so that + we can rely on checking just for that macro. */ +#define __CYGWIN__ __CYGWIN32__ +#endif + +#if defined __MINGW32__ || defined __MINGW64__ +#ifndef __MINGW__ +#define __MINGW__ 1 +#endif +#endif + +/* File path separator */ +#if defined WIN32 && !defined __CYGWIN__ +#define EXV_SEPARATOR_STR "\\" +#define EXV_SEPARATOR_CHR '\\' +#else +#define EXV_SEPARATOR_STR "/" +#define EXV_SEPARATOR_CHR '/' +#endif + +/* Windows unicode path support */ +#if defined WIN32 && !defined __CYGWIN__ && !defined __MINGW__ +# define EXV_UNICODE_PATH +#endif + +/* Symbol visibility support */ +#ifdef WIN32 +# define EXV_IMPORT __declspec(dllimport) +# define EXV_EXPORT __declspec(dllexport) +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +#else +# ifdef EXV_WANT_VISIBILITY_SUPPORT +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define EXV_IMPORT __attribute__ ((visibility("default"))) +# define EXV_EXPORT __attribute__ ((visibility("default"))) +# define EXV_DLLLOCAL __attribute__ ((visibility("hidden"))) +# define EXV_DLLPUBLIC __attribute__ ((visibility("default"))) +# elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) +# define EXV_IMPORT __global +# define EXV_EXPORT __global +# define EXV_DLLLOCAL __hidden +# define EXV_DLLPUBLIC __global +# else +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif +# else /* ! EXV_WANT_VISIBILITY_SUPPORT */ +# define EXV_IMPORT +# define EXV_EXPORT +# define EXV_DLLLOCAL +# define EXV_DLLPUBLIC +# endif /* ! EXV_WANT_VISIBILITY_SUPPORT */ +#endif /* ! WIN32 */ + +/* Define EXIV2API for DLL builds */ +#ifdef EXV_HAVE_DLL +# ifdef EXV_BUILDING_LIB +# define EXIV2API EXV_EXPORT +# else +# define EXIV2API EXV_IMPORT +# endif /* ! EXV_BUILDING_LIB */ +#else +# define EXIV2API +#endif /* ! EXV_HAVE_DLL */ + +/* + If you're using Solaris and the Solaris Studio compiler, then you really + do need to use -library=stdcxx4 along with these inclusions below +*/ +#if defined(OS_SOLARIS) +#include +#include +#include +#include +#include +#if defined(__cplusplus) +#include +#include +#endif +#endif + +#endif +#endif From 63128027e08b12b7640446e171e3ac4b422ea439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Sun, 3 Apr 2016 15:44:20 +0200 Subject: [PATCH 04/13] Successfully compiling xmpsdk --- binding.gyp | 1 + vendor/exiv2.gyp | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/binding.gyp b/binding.gyp index bd29c27..1484429 100644 --- a/binding.gyp +++ b/binding.gyp @@ -18,6 +18,7 @@ '-fexceptions' ], "dependencies": [ + "vendor/exiv2.gyp:XMPSDK", "vendor/exiv2.gyp:libexiv2" ] } diff --git a/vendor/exiv2.gyp b/vendor/exiv2.gyp index 0e2f897..d6799b8 100644 --- a/vendor/exiv2.gyp +++ b/vendor/exiv2.gyp @@ -1,5 +1,35 @@ { 'targets': [ + { + 'target_name': 'XMPSDK', + "type": "static_library", + "include_dirs": [ + 'exiv2-0.25/xmpsdk/include/' + ], + "sources": [ + "exiv2-0.25/xmpsdk/src/XML_Node.cpp", + "exiv2-0.25/xmpsdk/src/XMPMeta.cpp", + "exiv2-0.25/xmpsdk/src/XMPMeta-GetSet.cpp", + "exiv2-0.25/xmpsdk/src/XMPMeta-Parse.cpp", + "exiv2-0.25/xmpsdk/src/XMPMeta-Serialize.cpp", + "exiv2-0.25/xmpsdk/src/XMPIterator.cpp", + "exiv2-0.25/xmpsdk/src/XMPUtils.cpp", + "exiv2-0.25/xmpsdk/src/XMPUtils-FileInfo.cpp", + "exiv2-0.25/xmpsdk/src/XMPCore_Impl.cpp", + "exiv2-0.25/xmpsdk/src/ExpatAdapter.cpp", + "exiv2-0.25/xmpsdk/src/ParseRDF.cpp", + "exiv2-0.25/xmpsdk/src/UnicodeConversions.cpp", + "exiv2-0.25/xmpsdk/src/MD5.cpp", + "exiv2-0.25/xmpsdk/src/WXMPMeta.cpp", + "exiv2-0.25/xmpsdk/src/WXMPIterator.cpp", + "exiv2-0.25/xmpsdk/src/WXMPUtils.cpp" + ], + "cflags_cc": [ + "-fexceptions", + "-funsigned-char", + "-DEXV_HAVE_STDINT_H=1" + ] + }, { 'target_name': 'libexiv2', "type": "static_library", @@ -64,6 +94,13 @@ "exiv2-0.25/src/quicktimevideo.cpp", "exiv2-0.25/src/riffvideo.cpp", "exiv2-0.25/src/utilsvideo.cpp" + ], + "cflags_cc": [ + "-fexceptions", + "-frtti" + ], + "dependencies": [ + "XMPSDK" ] } ] From 4efe461112ce92a7b424fd077d31b7dd8b7cf739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Sun, 3 Apr 2016 16:30:00 +0200 Subject: [PATCH 05/13] Compilation success --- binding.gyp | 3 ++- vendor/exiv2.gyp | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/binding.gyp b/binding.gyp index 1484429..5a30657 100644 --- a/binding.gyp +++ b/binding.gyp @@ -6,9 +6,10 @@ 'exiv2node.cc' ], 'include_dirs' : [ - "vendor/exiv2-0.25", + "vendor/exiv2-0.25/include", " Date: Sun, 3 Apr 2016 19:44:17 +0200 Subject: [PATCH 06/13] Updated readme and gitignore --- .gitignore | 5 +++++ README.md | 2 +- binding.gyp | 3 +++ vendor/exiv2.gyp | 4 +++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 69cad6d..49398b9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,8 @@ npm-debug.log *.swp .vagrant Vagrantfile + +*.o +*.lo +*.a +*.la diff --git a/README.md b/README.md index cc55a6c..87c901f 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ a package manager you might need to install an additional "-dev" packages. ### Debian - apt-get install libexiv2 libexiv2-dev + apt-get install zlib1g-dev ### OS X diff --git a/binding.gyp b/binding.gyp index 5a30657..3960b95 100644 --- a/binding.gyp +++ b/binding.gyp @@ -15,6 +15,9 @@ 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', 'OTHER_CPLUSPLUSFLAGS': ['-stdlib=libc++','-fcxx-exceptions', '-frtti'], }, + "cflags": [ + "-Wdeprecated-declarations" + ], 'cflags_cc': [ '-fexceptions' ], diff --git a/vendor/exiv2.gyp b/vendor/exiv2.gyp index 4317b1c..fe0fcab 100644 --- a/vendor/exiv2.gyp +++ b/vendor/exiv2.gyp @@ -24,6 +24,9 @@ "exiv2-0.25/xmpsdk/src/WXMPIterator.cpp", "exiv2-0.25/xmpsdk/src/WXMPUtils.cpp" ], + "cflags": [ + "-Wdeprecated-declarations" + ], "cflags_cc": [ "-fexceptions", "-funsigned-char", @@ -99,7 +102,6 @@ "cflags_cc": [ "-fexceptions", "-frtti", - "-Wdeprecated-declarations", "-DEXV_LOCALEDIR=\"/usr/local/share/locale\"" ], "libraries": [ "-Wl,-rpath,./build/Release/XMPSDK.a" ], From 555d34473356e6cdfd176223ec2df7d217149c38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Wed, 6 Apr 2016 18:45:57 +0200 Subject: [PATCH 07/13] Updated package.json --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 6de93f7..44cc379 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,8 @@ }, "main": "exiv2", "scripts": { - "preuninstall": "rm -rf build/*", "test": "mocha", - "install": "node-gyp rebuild" + "build": "node-gyp configure build" }, "gypfile": true, "contributors": [ From 4a177be08ae982780a232a63b98d3bbc977ac0bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Wed, 6 Apr 2016 18:47:24 +0200 Subject: [PATCH 08/13] Updated node engine --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 44cc379..d81ae27 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "optionalDependencies": {}, "engines": { - "node": "~0.8.0" + "node" : ">4.0" }, "main": "exiv2", "scripts": { From 4bddae3da0c5ccc1a6b9250dfdc0911f9e388522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Wed, 6 Apr 2016 19:11:42 +0200 Subject: [PATCH 09/13] Updated nan --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d81ae27..781906e 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "url": "git://github.com/dberesford/exiv2node.git" }, "dependencies": { - "nan": "~2.0" + "nan": "~2.2.1" }, "devDependencies": { "should": "*", From aac973b84a51dd2f253abd3fb960a4ce35f07e9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Mon, 23 May 2016 10:32:35 +0200 Subject: [PATCH 10/13] Updated nan --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 781906e..fd1c70d 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "url": "git://github.com/dberesford/exiv2node.git" }, "dependencies": { - "nan": "~2.2.1" + "nan": "~2.3.3" }, "devDependencies": { "should": "*", From 5228711948f00e7dac15cdd7f0cabf84a40f5fb2 Mon Sep 17 00:00:00 2001 From: m0g Date: Wed, 21 Dec 2016 10:52:50 +0100 Subject: [PATCH 11/13] Added libexpat and windows support --- exiv2node.cc | 8 +- vendor/exiv2.gyp | 21 +- vendor/libexpat/CMake.README | 42 + vendor/libexpat/CMakeLists.txt | 134 + vendor/libexpat/COPYING | 21 + vendor/libexpat/Changes | 269 + vendor/libexpat/ConfigureChecks.cmake | 44 + vendor/libexpat/MANIFEST | 141 + vendor/libexpat/Makefile.in | 212 + vendor/libexpat/README | 139 + vendor/libexpat/aclocal.m4 | 8460 +++++++ vendor/libexpat/amiga/Makefile | 336 + vendor/libexpat/amiga/README.txt | 98 + vendor/libexpat/amiga/expat.xml | 264 + vendor/libexpat/amiga/expat_68k.c | 939 + vendor/libexpat/amiga/expat_68k.h | 94 + .../libexpat/amiga/expat_68k_handler_stubs.c | 185 + vendor/libexpat/amiga/expat_base.h | 40 + vendor/libexpat/amiga/expat_lib.c | 247 + vendor/libexpat/amiga/expat_vectors.c | 505 + vendor/libexpat/amiga/include/inline4/expat.h | 94 + .../libexpat/amiga/include/interfaces/expat.h | 98 + .../libexpat/amiga/include/libraries/expat.h | 566 + vendor/libexpat/amiga/include/proto/expat.h | 52 + vendor/libexpat/amiga/launch.c | 57 + vendor/libexpat/bcb5/README.txt | 87 + vendor/libexpat/bcb5/all_projects.bpg | 49 + vendor/libexpat/bcb5/elements.bpf | 4 + vendor/libexpat/bcb5/elements.bpr | 149 + vendor/libexpat/bcb5/elements.mak | 186 + vendor/libexpat/bcb5/expat.bpf | 6 + vendor/libexpat/bcb5/expat.bpr | 140 + vendor/libexpat/bcb5/expat.mak | 187 + vendor/libexpat/bcb5/expat_static.bpf | 5 + vendor/libexpat/bcb5/expat_static.bpr | 143 + vendor/libexpat/bcb5/expat_static.mak | 189 + vendor/libexpat/bcb5/expatw.bpf | 6 + vendor/libexpat/bcb5/expatw.bpr | 146 + vendor/libexpat/bcb5/expatw.mak | 187 + vendor/libexpat/bcb5/expatw_static.bpf | 5 + vendor/libexpat/bcb5/expatw_static.bpr | 152 + vendor/libexpat/bcb5/expatw_static.mak | 190 + vendor/libexpat/bcb5/libexpat_mtd.def | 141 + vendor/libexpat/bcb5/libexpatw_mtd.def | 140 + vendor/libexpat/bcb5/makefile.mak | 37 + vendor/libexpat/bcb5/outline.bpf | 4 + vendor/libexpat/bcb5/outline.bpr | 132 + vendor/libexpat/bcb5/outline.mak | 186 + vendor/libexpat/bcb5/setup.bat | 9 + vendor/libexpat/bcb5/xmlwf.bpf | 7 + vendor/libexpat/bcb5/xmlwf.bpr | 136 + vendor/libexpat/bcb5/xmlwf.mak | 187 + vendor/libexpat/configure | 18632 ++++++++++++++++ vendor/libexpat/configure.in | 155 + vendor/libexpat/conftools/PrintPath | 116 + .../conftools/ac_c_bigendian_cross.m4 | 81 + vendor/libexpat/conftools/config.guess | 1517 ++ vendor/libexpat/conftools/config.sub | 1760 ++ vendor/libexpat/conftools/expat.m4 | 43 + vendor/libexpat/conftools/get-version.sh | 46 + vendor/libexpat/conftools/install-sh | 520 + vendor/libexpat/conftools/ltmain.sh | 9642 ++++++++ vendor/libexpat/conftools/mkinstalldirs | 40 + vendor/libexpat/doc/expat.png | Bin 0 -> 1029 bytes vendor/libexpat/doc/reference.html | 2394 ++ vendor/libexpat/doc/style.css | 101 + vendor/libexpat/doc/valid-xhtml10.png | Bin 0 -> 2370 bytes vendor/libexpat/doc/xmlwf.1 | 251 + vendor/libexpat/doc/xmlwf.sgml | 468 + vendor/libexpat/examples/elements.c | 72 + vendor/libexpat/examples/elements.dsp | 103 + vendor/libexpat/examples/outline.c | 113 + vendor/libexpat/examples/outline.dsp | 103 + vendor/libexpat/expat.dsw | 110 + vendor/libexpat/expat.pc.in | 11 + vendor/libexpat/expat_config.h | 103 + vendor/libexpat/expat_config.h.cmake | 91 + vendor/libexpat/expat_config.h.in | 102 + vendor/libexpat/lib/Makefile.MPW | 206 + vendor/libexpat/lib/amigaconfig.h | 29 + vendor/libexpat/lib/ascii.h | 92 + vendor/libexpat/lib/asciitab.h | 36 + vendor/libexpat/lib/expat.dsp | 185 + vendor/libexpat/lib/expat.h | 1048 + vendor/libexpat/lib/expat_external.h | 129 + vendor/libexpat/lib/expat_static.dsp | 162 + vendor/libexpat/lib/expatw.dsp | 185 + vendor/libexpat/lib/expatw_static.dsp | 162 + vendor/libexpat/lib/iasciitab.h | 37 + vendor/libexpat/lib/internal.h | 95 + vendor/libexpat/lib/latin1tab.h | 36 + vendor/libexpat/lib/libexpat.def | 76 + vendor/libexpat/lib/libexpatw.def | 76 + vendor/libexpat/lib/macconfig.h | 53 + vendor/libexpat/lib/nametab.h | 150 + vendor/libexpat/lib/utf8tab.h | 37 + vendor/libexpat/lib/winconfig.h | 30 + vendor/libexpat/lib/xmlparse.c | 6466 ++++++ vendor/libexpat/lib/xmlrole.c | 1336 ++ vendor/libexpat/lib/xmlrole.h | 114 + vendor/libexpat/lib/xmltok.c | 1751 ++ vendor/libexpat/lib/xmltok.h | 322 + vendor/libexpat/lib/xmltok_impl.c | 1779 ++ vendor/libexpat/lib/xmltok_impl.h | 46 + vendor/libexpat/lib/xmltok_ns.c | 115 + vendor/libexpat/libexpat.gyp | 92 + vendor/libexpat/m4/libtool.m4 | 7851 +++++++ vendor/libexpat/m4/ltoptions.m4 | 369 + vendor/libexpat/m4/ltsugar.m4 | 123 + vendor/libexpat/m4/ltversion.m4 | 23 + vendor/libexpat/m4/lt~obsolete.m4 | 98 + vendor/libexpat/tests/README.txt | 13 + vendor/libexpat/tests/benchmark/README.txt | 16 + vendor/libexpat/tests/benchmark/benchmark.c | 114 + vendor/libexpat/tests/benchmark/benchmark.dsp | 88 + vendor/libexpat/tests/benchmark/benchmark.dsw | 44 + vendor/libexpat/tests/chardata.c | 127 + vendor/libexpat/tests/chardata.h | 40 + vendor/libexpat/tests/minicheck.c | 183 + vendor/libexpat/tests/minicheck.h | 95 + vendor/libexpat/tests/runtests.c | 1702 ++ vendor/libexpat/tests/runtestspp.cpp | 6 + vendor/libexpat/tests/xmltest.sh | 144 + vendor/libexpat/version.c | 9 + vendor/libexpat/vms/README.vms | 23 + vendor/libexpat/vms/descrip.mms | 70 + vendor/libexpat/vms/expat_config.h | 52 + vendor/libexpat/win32/MANIFEST.txt | 27 + vendor/libexpat/win32/README.txt | 88 + vendor/libexpat/win32/expat.iss | 82 + vendor/libexpat/xmlwf/codepage.c | 69 + vendor/libexpat/xmlwf/codepage.h | 6 + vendor/libexpat/xmlwf/ct.c | 147 + vendor/libexpat/xmlwf/filemap.h | 17 + vendor/libexpat/xmlwf/readfilemap.c | 101 + vendor/libexpat/xmlwf/unixfilemap.c | 65 + vendor/libexpat/xmlwf/win32filemap.c | 96 + vendor/libexpat/xmlwf/xmlfile.c | 245 + vendor/libexpat/xmlwf/xmlfile.h | 20 + vendor/libexpat/xmlwf/xmlmime.c | 163 + vendor/libexpat/xmlwf/xmlmime.h | 19 + vendor/libexpat/xmlwf/xmltchar.h | 36 + vendor/libexpat/xmlwf/xmlurl.h | 13 + vendor/libexpat/xmlwf/xmlwf.c | 867 + vendor/libexpat/xmlwf/xmlwf.dsp | 139 + vendor/libexpat/xmlwf/xmlwin32url.cxx | 395 + 146 files changed, 81075 insertions(+), 5 deletions(-) create mode 100644 vendor/libexpat/CMake.README create mode 100644 vendor/libexpat/CMakeLists.txt create mode 100644 vendor/libexpat/COPYING create mode 100644 vendor/libexpat/Changes create mode 100644 vendor/libexpat/ConfigureChecks.cmake create mode 100644 vendor/libexpat/MANIFEST create mode 100644 vendor/libexpat/Makefile.in create mode 100644 vendor/libexpat/README create mode 100644 vendor/libexpat/aclocal.m4 create mode 100644 vendor/libexpat/amiga/Makefile create mode 100644 vendor/libexpat/amiga/README.txt create mode 100644 vendor/libexpat/amiga/expat.xml create mode 100644 vendor/libexpat/amiga/expat_68k.c create mode 100644 vendor/libexpat/amiga/expat_68k.h create mode 100644 vendor/libexpat/amiga/expat_68k_handler_stubs.c create mode 100644 vendor/libexpat/amiga/expat_base.h create mode 100644 vendor/libexpat/amiga/expat_lib.c create mode 100644 vendor/libexpat/amiga/expat_vectors.c create mode 100644 vendor/libexpat/amiga/include/inline4/expat.h create mode 100644 vendor/libexpat/amiga/include/interfaces/expat.h create mode 100644 vendor/libexpat/amiga/include/libraries/expat.h create mode 100644 vendor/libexpat/amiga/include/proto/expat.h create mode 100644 vendor/libexpat/amiga/launch.c create mode 100644 vendor/libexpat/bcb5/README.txt create mode 100644 vendor/libexpat/bcb5/all_projects.bpg create mode 100644 vendor/libexpat/bcb5/elements.bpf create mode 100644 vendor/libexpat/bcb5/elements.bpr create mode 100644 vendor/libexpat/bcb5/elements.mak create mode 100644 vendor/libexpat/bcb5/expat.bpf create mode 100644 vendor/libexpat/bcb5/expat.bpr create mode 100644 vendor/libexpat/bcb5/expat.mak create mode 100644 vendor/libexpat/bcb5/expat_static.bpf create mode 100644 vendor/libexpat/bcb5/expat_static.bpr create mode 100644 vendor/libexpat/bcb5/expat_static.mak create mode 100644 vendor/libexpat/bcb5/expatw.bpf create mode 100644 vendor/libexpat/bcb5/expatw.bpr create mode 100644 vendor/libexpat/bcb5/expatw.mak create mode 100644 vendor/libexpat/bcb5/expatw_static.bpf create mode 100644 vendor/libexpat/bcb5/expatw_static.bpr create mode 100644 vendor/libexpat/bcb5/expatw_static.mak create mode 100644 vendor/libexpat/bcb5/libexpat_mtd.def create mode 100644 vendor/libexpat/bcb5/libexpatw_mtd.def create mode 100644 vendor/libexpat/bcb5/makefile.mak create mode 100644 vendor/libexpat/bcb5/outline.bpf create mode 100644 vendor/libexpat/bcb5/outline.bpr create mode 100644 vendor/libexpat/bcb5/outline.mak create mode 100644 vendor/libexpat/bcb5/setup.bat create mode 100644 vendor/libexpat/bcb5/xmlwf.bpf create mode 100644 vendor/libexpat/bcb5/xmlwf.bpr create mode 100644 vendor/libexpat/bcb5/xmlwf.mak create mode 100644 vendor/libexpat/configure create mode 100644 vendor/libexpat/configure.in create mode 100644 vendor/libexpat/conftools/PrintPath create mode 100644 vendor/libexpat/conftools/ac_c_bigendian_cross.m4 create mode 100644 vendor/libexpat/conftools/config.guess create mode 100644 vendor/libexpat/conftools/config.sub create mode 100644 vendor/libexpat/conftools/expat.m4 create mode 100644 vendor/libexpat/conftools/get-version.sh create mode 100644 vendor/libexpat/conftools/install-sh create mode 100644 vendor/libexpat/conftools/ltmain.sh create mode 100644 vendor/libexpat/conftools/mkinstalldirs create mode 100644 vendor/libexpat/doc/expat.png create mode 100644 vendor/libexpat/doc/reference.html create mode 100644 vendor/libexpat/doc/style.css create mode 100644 vendor/libexpat/doc/valid-xhtml10.png create mode 100644 vendor/libexpat/doc/xmlwf.1 create mode 100644 vendor/libexpat/doc/xmlwf.sgml create mode 100644 vendor/libexpat/examples/elements.c create mode 100644 vendor/libexpat/examples/elements.dsp create mode 100644 vendor/libexpat/examples/outline.c create mode 100644 vendor/libexpat/examples/outline.dsp create mode 100644 vendor/libexpat/expat.dsw create mode 100644 vendor/libexpat/expat.pc.in create mode 100644 vendor/libexpat/expat_config.h create mode 100644 vendor/libexpat/expat_config.h.cmake create mode 100644 vendor/libexpat/expat_config.h.in create mode 100644 vendor/libexpat/lib/Makefile.MPW create mode 100644 vendor/libexpat/lib/amigaconfig.h create mode 100644 vendor/libexpat/lib/ascii.h create mode 100644 vendor/libexpat/lib/asciitab.h create mode 100644 vendor/libexpat/lib/expat.dsp create mode 100644 vendor/libexpat/lib/expat.h create mode 100644 vendor/libexpat/lib/expat_external.h create mode 100644 vendor/libexpat/lib/expat_static.dsp create mode 100644 vendor/libexpat/lib/expatw.dsp create mode 100644 vendor/libexpat/lib/expatw_static.dsp create mode 100644 vendor/libexpat/lib/iasciitab.h create mode 100644 vendor/libexpat/lib/internal.h create mode 100644 vendor/libexpat/lib/latin1tab.h create mode 100644 vendor/libexpat/lib/libexpat.def create mode 100644 vendor/libexpat/lib/libexpatw.def create mode 100644 vendor/libexpat/lib/macconfig.h create mode 100644 vendor/libexpat/lib/nametab.h create mode 100644 vendor/libexpat/lib/utf8tab.h create mode 100644 vendor/libexpat/lib/winconfig.h create mode 100644 vendor/libexpat/lib/xmlparse.c create mode 100644 vendor/libexpat/lib/xmlrole.c create mode 100644 vendor/libexpat/lib/xmlrole.h create mode 100644 vendor/libexpat/lib/xmltok.c create mode 100644 vendor/libexpat/lib/xmltok.h create mode 100644 vendor/libexpat/lib/xmltok_impl.c create mode 100644 vendor/libexpat/lib/xmltok_impl.h create mode 100644 vendor/libexpat/lib/xmltok_ns.c create mode 100644 vendor/libexpat/libexpat.gyp create mode 100644 vendor/libexpat/m4/libtool.m4 create mode 100644 vendor/libexpat/m4/ltoptions.m4 create mode 100644 vendor/libexpat/m4/ltsugar.m4 create mode 100644 vendor/libexpat/m4/ltversion.m4 create mode 100644 vendor/libexpat/m4/lt~obsolete.m4 create mode 100644 vendor/libexpat/tests/README.txt create mode 100644 vendor/libexpat/tests/benchmark/README.txt create mode 100644 vendor/libexpat/tests/benchmark/benchmark.c create mode 100644 vendor/libexpat/tests/benchmark/benchmark.dsp create mode 100644 vendor/libexpat/tests/benchmark/benchmark.dsw create mode 100644 vendor/libexpat/tests/chardata.c create mode 100644 vendor/libexpat/tests/chardata.h create mode 100644 vendor/libexpat/tests/minicheck.c create mode 100644 vendor/libexpat/tests/minicheck.h create mode 100644 vendor/libexpat/tests/runtests.c create mode 100644 vendor/libexpat/tests/runtestspp.cpp create mode 100644 vendor/libexpat/tests/xmltest.sh create mode 100644 vendor/libexpat/version.c create mode 100644 vendor/libexpat/vms/README.vms create mode 100644 vendor/libexpat/vms/descrip.mms create mode 100644 vendor/libexpat/vms/expat_config.h create mode 100644 vendor/libexpat/win32/MANIFEST.txt create mode 100644 vendor/libexpat/win32/README.txt create mode 100644 vendor/libexpat/win32/expat.iss create mode 100644 vendor/libexpat/xmlwf/codepage.c create mode 100644 vendor/libexpat/xmlwf/codepage.h create mode 100644 vendor/libexpat/xmlwf/ct.c create mode 100644 vendor/libexpat/xmlwf/filemap.h create mode 100644 vendor/libexpat/xmlwf/readfilemap.c create mode 100644 vendor/libexpat/xmlwf/unixfilemap.c create mode 100644 vendor/libexpat/xmlwf/win32filemap.c create mode 100644 vendor/libexpat/xmlwf/xmlfile.c create mode 100644 vendor/libexpat/xmlwf/xmlfile.h create mode 100644 vendor/libexpat/xmlwf/xmlmime.c create mode 100644 vendor/libexpat/xmlwf/xmlmime.h create mode 100644 vendor/libexpat/xmlwf/xmltchar.h create mode 100644 vendor/libexpat/xmlwf/xmlurl.h create mode 100644 vendor/libexpat/xmlwf/xmlwf.c create mode 100644 vendor/libexpat/xmlwf/xmlwf.dsp create mode 100644 vendor/libexpat/xmlwf/xmlwin32url.cxx diff --git a/exiv2node.cc b/exiv2node.cc index b947328..532eb6d 100644 --- a/exiv2node.cc +++ b/exiv2node.cc @@ -2,7 +2,13 @@ #include #include #include -#include +#ifdef _MSC_VER +# include +# include +#else +# include +# include +#endif #include #include #include diff --git a/vendor/exiv2.gyp b/vendor/exiv2.gyp index fe0fcab..18d65a6 100644 --- a/vendor/exiv2.gyp +++ b/vendor/exiv2.gyp @@ -24,13 +24,20 @@ "exiv2-0.25/xmpsdk/src/WXMPIterator.cpp", "exiv2-0.25/xmpsdk/src/WXMPUtils.cpp" ], + "conditions": [ [ "OS!='win'", {"libraries+":[ + "-L./build/Release/libexpat.a" + ]} ] ], "cflags": [ "-Wdeprecated-declarations" ], "cflags_cc": [ "-fexceptions", - "-funsigned-char", - "-DEXV_HAVE_STDINT_H=1" + "-funsigned-char" + ], + "conditions": [ [ "OS=='linux'", {"cflags_cc+": ["-DEXV_HAVE_STDINT_H=1"]} ] ], + "conditions": [ [ "OS=='win'", {"cflags_cc+": ["-DEXV_HAVE_STDINT_H=0"]} ] ], + "dependencies": [ + "libexpat/libexpat.gyp:expat" ] }, { @@ -99,12 +106,18 @@ "exiv2-0.25/src/riffvideo.cpp", "exiv2-0.25/src/utilsvideo.cpp" ], + "cflags": ["-DEXV_HAVE_UNISTD_H=0"], "cflags_cc": [ "-fexceptions", "-frtti", - "-DEXV_LOCALEDIR=\"/usr/local/share/locale\"" + "-DEXV_HAVE_UNISTD_H=0", + "-DEXV_MSC_VER=2000" ], - "libraries": [ "-Wl,-rpath,./build/Release/XMPSDK.a" ], + "conditions": [ [ "OS=='linux'", {"libraries+":["-Wl,-rpath,./build/Release/XMPSDK.a"]} ] ], + "conditions": [ [ "OS=='win'", {"libraries+":[ + "-L./build/Release/XMPSDK.a", + "-L./build/Release/libexpat.a" + ]} ] ], "dependencies": [ "XMPSDK" ] diff --git a/vendor/libexpat/CMake.README b/vendor/libexpat/CMake.README new file mode 100644 index 0000000..0340c68 --- /dev/null +++ b/vendor/libexpat/CMake.README @@ -0,0 +1,42 @@ +== How to build expat with cmake (experimental) == + +The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual +Studio) and should work on all other platform cmake supports. + +Assuming ~/expat-2.2.0 is the source directory of expat, add a subdirectory +build and change into that directory: +~/expat-2.2.0$ mkdir build && cd build +~/expat-2.2.0/build$ + +From that directory, call cmake first, then call make, make test and +make install in the usual way: +~/expat-2.2.0/build$ cmake .. +-- The C compiler identification is GNU +-- The CXX compiler identification is GNU +.... +-- Configuring done +-- Generating done +-- Build files have been written to: /home/patrick/expat-2.2.0/build + +If you want to specify the install location for your files, append +-DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call. + +~/expat-2.2.0/build$ make && make test && make install +Scanning dependencies of target expat +[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o +[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o +.... +-- Installing: /usr/local/lib/pkgconfig/expat.pc +-- Installing: /usr/local/bin/xmlwf +-- Installing: /usr/local/share/man/man1/xmlwf.1 + +For Windows builds, you must make sure to call cmake from an environment where +your compiler is reachable, that means either you call it from the +Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and +make sure that gcc can be called. On Windows, you also might want to specify a +special Generator for CMake: +for Visual Studio builds do: +cmake .. -G "Visual Studio 10" && vcexpress expat.sln +for mingw builds do: +cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install + && gmake && gmake install diff --git a/vendor/libexpat/CMakeLists.txt b/vendor/libexpat/CMakeLists.txt new file mode 100644 index 0000000..8180408 --- /dev/null +++ b/vendor/libexpat/CMakeLists.txt @@ -0,0 +1,134 @@ +# This file is copyrighted under the BSD-license for buildsystem files of KDE +# copyright 2010, Patrick Spendrin + +project(expat) + +cmake_minimum_required(VERSION 2.6) +set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") +set(PACKAGE_NAME "expat") +set(PACKAGE_VERSION "2.2.0") +set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") +set(PACKAGE_TARNAME "${PACKAGE_NAME}") + +option(BUILD_tools "build the xmlwf tool for expat library" ON) +option(BUILD_examples "build the examples for expat library" ON) +option(BUILD_tests "build the tests for expat library" ON) +option(BUILD_shared "build a shared expat library" ON) + +# configuration options +set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") +option(XML_DTD "Define to make parameter entity parsing functionality available" ON) +option(XML_NS "Define to make XML Namespaces functionality available" ON) + +if(XML_DTD) + set(XML_DTD 1) +else(XML_DTD) + set(XML_DTD 0) +endif(XML_DTD) +if(XML_NS) + set(XML_NS 1) +else(XML_NS) + set(XML_NS 0) +endif(XML_NS) + +if(BUILD_tests) + enable_testing() +endif(BUILD_tests) + +include(ConfigureChecks.cmake) + +include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib) +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) +endif(MSVC) +if(WIN32) + add_definitions(-DWIN32) + set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows") +endif(WIN32) + +set(expat_SRCS + lib/xmlparse.c + lib/xmlrole.c + lib/xmltok.c + lib/xmltok_impl.c + lib/xmltok_ns.c +) + +if(BUILD_shared) + set(_SHARED SHARED) + if(WIN32) + set(expat_SRCS ${expat_SRCS} lib/libexpat.def) + endif(WIN32) +else(BUILD_shared) + set(_SHARED STATIC) + if(WIN32) + add_definitions(-DXML_STATIC) + endif(WIN32) +endif(BUILD_shared) + +add_library(expat ${_SHARED} ${expat_SRCS}) + +set(LIBCURRENT 7) # sync +set(LIBREVISION 2) # with +set(LIBAGE 6) # configure.ac! +math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") + +if(NOT WIN32) + set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION}) + set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE}) + set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME}) +endif(NOT WIN32) + +install(TARGETS expat RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) + +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix "\${prefix}/bin") +set(libdir "\${prefix}/lib") +set(includedir "\${prefix}/include") +configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc) + +install(FILES lib/expat.h lib/expat_external.h DESTINATION include) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig) + + +add_custom_command(TARGET expat PRE_BUILD COMMAND $(MAKE) -C doc xmlwf.1) + +if(BUILD_tools AND NOT WINCE) + set(xmlwf_SRCS + xmlwf/xmlwf.c + xmlwf/xmlfile.c + xmlwf/codepage.c + xmlwf/readfilemap.c + ) + + add_executable(xmlwf ${xmlwf_SRCS}) + set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) + target_link_libraries(xmlwf expat) + install(TARGETS xmlwf DESTINATION bin) + install(FILES doc/xmlwf.1 DESTINATION share/man/man1) +endif(BUILD_tools AND NOT WINCE) + +if(BUILD_examples) + add_executable(elements examples/elements.c) + set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) + target_link_libraries(elements expat) + + add_executable(outline examples/outline.c) + set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) + target_link_libraries(outline expat) +endif(BUILD_examples) + +if(BUILD_tests) + ## these are unittests that can be run on any platform + add_executable(runtests tests/runtests.c tests/chardata.c tests/minicheck.c) + set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) + target_link_libraries(runtests expat) + add_test(runtests tests/runtests) + + add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/minicheck.c) + set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) + target_link_libraries(runtestspp expat) + add_test(runtestspp tests/runtestspp) +endif(BUILD_tests) diff --git a/vendor/libexpat/COPYING b/vendor/libexpat/COPYING new file mode 100644 index 0000000..092c83b --- /dev/null +++ b/vendor/libexpat/COPYING @@ -0,0 +1,21 @@ +Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper +Copyright (c) 2001-2016 Expat maintainers + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/libexpat/Changes b/vendor/libexpat/Changes new file mode 100644 index 0000000..583c868 --- /dev/null +++ b/vendor/libexpat/Changes @@ -0,0 +1,269 @@ +Release 2.2.0 Tue June 21 2016 + Security fixes: + #537 CVE-2016-0718 -- Fix crash on malformed input + CVE-2016-4472 -- Improve insufficient fix to CVE-2015-1283 / + CVE-2015-2716 introduced with Expat 2.1.1 + #499 CVE-2016-5300 -- Use more entropy for hash initialization + than the original fix to CVE-2012-0876 + #519 CVE-2012-6702 -- Resolve troublesome internal call to srand + that was introduced with Expat 2.1.0 + when addressing CVE-2012-0876 (issue #496) + + Bug fixes: + Fix uninitialized reads of size 1 + (e.g. in little2_updatePosition) + Fix detection of UTF-8 character boundaries + + Other changes: + #532 Fix compilation for Visual Studio 2010 (keyword "C99") + Autotools: Resolve use of "$<" to better support bmake + Autotools: Add QA script "qa.sh" (and make target "qa") + Autotools: Respect CXXFLAGS if given + Autotools: Fix "make run-xmltest" + Autotools: Have "make run-xmltest" check for expected output + p90 CMake: Fix static build (BUILD_shared=OFF) on Windows + #536 CMake: Add soversion, support -DNO_SONAME=yes to bypass + #323 CMake: Add suffix "d" to differentiate debug from release + CMake: Define WIN32 with CMake on Windows + Annotate memory allocators for GCC + Address all currently known compile warnings + Make sure that API symbols remain visible despite + -fvisibility=hidden + Remove executable flag from source files + Resolve COMPILED_FROM_DSP in favor of WIN32 + + Special thanks to: + Björn Lindahl + Christian Heimes + Cristian Rodríguez + Daniel Krügler + Gustavo Grieco + Karl Waclawek + László Böszörményi + Marco Grassi + Pascal Cuoq + Sergei Nikulov + Thomas Beutlich + Warren Young + Yann Droneaud + +Release 2.1.1 Sat March 12 2016 + Security fixes: + #582: CVE-2015-1283 - Multiple integer overflows in XML_GetBuffer + + Bug fixes: + #502: Fix potential null pointer dereference + #520: Symbol XML_SetHashSalt was not exported + Output of "xmlwf -h" was incomplete + + Other changes: + #503: Document behavior of calling XML_SetHashSalt with salt 0 + Minor improvements to man page xmlwf(1) + Improvements to the experimental CMake build system + libtool now invoked with --verbose + +Release 2.1.0 Sat March 24 2012 + - Bug Fixes: + #1742315: Harmful XML_ParserCreateNS suggestion. + #2895533: CVE-2012-1147 - Resource leak in readfilemap.c. + #1785430: Expat build fails on linux-amd64 with gcc version>=4.1 -O3. + #1983953, 2517952, 2517962, 2649838: + Build modifications using autoreconf instead of buildconf.sh. + #2815947, #2884086: OBJEXT and EXEEXT support while building. + #1990430: CVE-2009-3720 - Parser crash with special UTF-8 sequences. + #2517938: xmlwf should return non-zero exit status if not well-formed. + #2517946: Wrong statement about XMLDecl in xmlwf.1 and xmlwf.sgml. + #2855609: Dangling positionPtr after error. + #2894085: CVE-2009-3560 - Buffer over-read and crash in big2_toUtf8(). + #2958794: CVE-2012-1148 - Memory leak in poolGrow. + #2990652: CMake support. + #3010819: UNEXPECTED_STATE with a trailing "%" in entity value. + #3206497: Unitialized memory returned from XML_Parse. + #3287849: make check fails on mingw-w64. + #3496608: CVE-2012-0876 - Hash DOS attack. + - Patches: + #1749198: pkg-config support. + #3010222: Fix for bug #3010819. + #3312568: CMake support. + #3446384: Report byte offsets for attr names and values. + - New Features / API changes: + Added new API member XML_SetHashSalt() that allows setting an initial + value (salt) for hash calculations. This is part of the fix for + bug #3496608 to randomize hash parameters. + When compiled with XML_ATTR_INFO defined, adds new API member + XML_GetAttributeInfo() that allows retrieving the byte + offsets for attribute names and values (patch #3446384). + Added CMake build system. + See bug #2990652 and patch #3312568. + Added run-benchmark target to Makefile.in - relies on testdata module + present in the same relative location as in the repository. + +Release 2.0.1 Tue June 5 2007 + - Fixed bugs #1515266, #1515600: The character data handler's calling + of XML_StopParser() was not handled properly; if the parser was + stopped and the handler set to NULL, the parser would segfault. + - Fixed bug #1690883: Expat failed on EBCDIC systems as it assumed + some character constants to be ASCII encoded. + - Minor cleanups of the test harness. + - Fixed xmlwf bug #1513566: "out of memory" error on file size zero. + - Fixed outline.c bug #1543233: missing a final XML_ParserFree() call. + - Fixes and improvements for Windows platform: + bugs #1409451, #1476160, #1548182, #1602769, #1717322. + - Build fixes for various platforms: + HP-UX, Tru64, Solaris 9: patch #1437840, bug #1196180. + All Unix: #1554618 (refreshed config.sub/config.guess). + #1490371, #1613457: support both, DESTDIR and INSTALL_ROOT, + without relying on GNU-Make specific features. + #1647805: Patched configure.in to work better with Intel compiler. + - Fixes to Makefile.in to have make check work correctly: + bugs #1408143, #1535603, #1536684. + - Added Open Watcom support: patch #1523242. + +Release 2.0.0 Wed Jan 11 2006 + - We no longer use the "check" library for C unit testing; we + always use the (partial) internal implementation of the API. + - Report XML_NS setting via XML_GetFeatureList(). + - Fixed headers for use from C++. + - XML_GetCurrentLineNumber() and XML_GetCurrentColumnNumber() + now return unsigned integers. + - Added XML_LARGE_SIZE switch to enable 64-bit integers for + byte indexes and line/column numbers. + - Updated to use libtool 1.5.22 (the most recent). + - Added support for AmigaOS. + - Some mostly minor bug fixes. SF issues include: #1006708, + #1021776, #1023646, #1114960, #1156398, #1221160, #1271642. + +Release 1.95.8 Fri Jul 23 2004 + - Major new feature: suspend/resume. Handlers can now request + that a parse be suspended for later resumption or aborted + altogether. See "Temporarily Stopping Parsing" in the + documentation for more details. + - Some mostly minor bug fixes, but compilation should no + longer generate warnings on most platforms. SF issues + include: #827319, #840173, #846309, #888329, #896188, #923913, + #928113, #961698, #985192. + +Release 1.95.7 Mon Oct 20 2003 + - Fixed enum XML_Status issue (reported on SourceForge many + times), so compilers that are properly picky will be happy. + - Introduced an XMLCALL macro to control the calling + convention used by the Expat API; this macro should be used + to annotate prototypes and definitions of callback + implementations in code compiled with a calling convention + other than the default convention for the host platform. + - Improved ability to build without the configure-generated + expat_config.h header. This is useful for applications + which embed Expat rather than linking in the library. + - Fixed a variety of bugs: see SF issues #458907, #609603, + #676844, #679754, #692878, #692964, #695401, #699323, #699487, + #820946. + - Improved hash table lookups. + - Added more regression tests and improved documentation. + +Release 1.95.6 Tue Jan 28 2003 + - Added XML_FreeContentModel(). + - Added XML_MemMalloc(), XML_MemRealloc(), XML_MemFree(). + - Fixed a variety of bugs: see SF issues #615606, #616863, + #618199, #653180, #673791. + - Enhanced the regression test suite. + - Man page improvements: includes SF issue #632146. + +Release 1.95.5 Fri Sep 6 2002 + - Added XML_UseForeignDTD() for improved SAX2 support. + - Added XML_GetFeatureList(). + - Defined XML_Bool type and the values XML_TRUE and XML_FALSE. + - Use an incomplete struct instead of a void* for the parser + (may not retain). + - Fixed UTF-8 decoding bug that caused legal UTF-8 to be rejected. + - Finally fixed bug where default handler would report DTD + events that were already handled by another handler. + Initial patch contributed by Darryl Miles. + - Removed unnecessary DllMain() function that caused static + linking into a DLL to be difficult. + - Added VC++ projects for building static libraries. + - Reduced line-length for all source code and headers to be + no longer than 80 characters, to help with AS/400 support. + - Reduced memory copying during parsing (SF patch #600964). + - Fixed a variety of bugs: see SF issues #580793, #434664, + #483514, #580503, #581069, #584041, #584183, #584832, #585537, + #596555, #596678, #598352, #598944, #599715, #600479, #600971. + +Release 1.95.4 Fri Jul 12 2002 + - Added support for VMS, contributed by Craig Berry. See + vms/README.vms for more information. + - Added Mac OS (classic) support, with a makefile for MPW, + contributed by Thomas Wegner and Daryle Walker. + - Added Borland C++ Builder 5 / BCC 5.5 support, contributed + by Patrick McConnell (SF patch #538032). + - Fixed a variety of bugs: see SF issues #441449, #563184, + #564342, #566334, #566901, #569461, #570263, #575168, #579196. + - Made skippedEntityHandler conform to SAX2 (see source comment) + - Re-implemented WFC: Entity Declared from XML 1.0 spec and + added a new error "entity declared in parameter entity": + see SF bug report #569461 and SF patch #578161 + - Re-implemented section 5.1 from XML 1.0 spec: + see SF bug report #570263 and SF patch #578161 + +Release 1.95.3 Mon Jun 3 2002 + - Added a project to the MSVC workspace to create a wchar_t + version of the library; the DLLs are named libexpatw.dll. + - Changed the name of the Windows DLLs from expat.dll to + libexpat.dll; this fixes SF bug #432456. + - Added the XML_ParserReset() API function. + - Fixed XML_SetReturnNSTriplet() to work for element names. + - Made the XML_UNICODE builds usable (thanks, Karl!). + - Allow xmlwf to read from standard input. + - Install a man page for xmlwf on Unix systems. + - Fixed many bugs; see SF bug reports #231864, #461380, #464837, + #466885, #469226, #477667, #484419, #487840, #494749, #496505, + #547350. Other bugs which we can't test as easily may also + have been fixed, especially in the area of build support. + +Release 1.95.2 Fri Jul 27 2001 + - More changes to make MSVC happy with the build; add a single + workspace to support both the library and xmlwf application. + - Added a Windows installer for Windows users; includes + xmlwf.exe. + - Added compile-time constants that can be used to determine the + Expat version + - Removed a lot of GNU-specific dependencies to aide portability + among the various Unix flavors. + - Fix the UTF-8 BOM bug. + - Cleaned up warning messages for several compilers. + - Added the -Wall, -Wstrict-prototypes options for GCC. + +Release 1.95.1 Sun Oct 22 15:11:36 EDT 2000 + - Changes to get expat to build under Microsoft compiler + - Removed all aborts and instead return an UNEXPECTED_STATE error. + - Fixed a bug where a stray '%' in an entity value would cause an + abort. + - Defined XML_SetEndNamespaceDeclHandler. Thanks to Darryl Miles for + finding this oversight. + - Changed default patterns in lib/Makefile.in to fit non-GNU makes + Thanks to robin@unrated.net for reporting and providing an + account to test on. + - The reference had the wrong label for XML_SetStartNamespaceDecl. + Reported by an anonymous user. + +Release 1.95.0 Fri Sep 29 2000 + - XML_ParserCreate_MM + Allows you to set a memory management suite to replace the + standard malloc,realloc, and free. + - XML_SetReturnNSTriplet + If you turn this feature on when namespace processing is in + effect, then qualified, prefixed element and attribute names + are returned as "uri|name|prefix" where '|' is whatever + separator character is used in namespace processing. + - Merged in features from perl-expat + o XML_SetElementDeclHandler + o XML_SetAttlistDeclHandler + o XML_SetXmlDeclHandler + o XML_SetEntityDeclHandler + o StartDoctypeDeclHandler takes 3 additional parameters: + sysid, pubid, has_internal_subset + o Many paired handler setters (like XML_SetElementHandler) + now have corresponding individual handler setters + o XML_GetInputContext for getting the input context of + the current parse position. + - Added reference material + - Packaged into a distribution that builds a sharable library diff --git a/vendor/libexpat/ConfigureChecks.cmake b/vendor/libexpat/ConfigureChecks.cmake new file mode 100644 index 0000000..f03faa6 --- /dev/null +++ b/vendor/libexpat/ConfigureChecks.cmake @@ -0,0 +1,44 @@ +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckFunctionExists) +include(CheckSymbolExists) +include(TestBigEndian) + +check_include_file("dlfcn.h" HAVE_DLFCN_H) +check_include_file("fcntl.h" HAVE_FCNTL_H) +check_include_file("inttypes.h" HAVE_INTTYPES_H) +check_include_file("memory.h" HAVE_MEMORY_H) +check_include_file("stdint.h" HAVE_STDINT_H) +check_include_file("stdlib.h" HAVE_STDLIB_H) +check_include_file("strings.h" HAVE_STRINGS_H) +check_include_file("string.h" HAVE_STRING_H) +check_include_file("sys/stat.h" HAVE_SYS_STAT_H) +check_include_file("sys/types.h" HAVE_SYS_TYPES_H) +check_include_file("unistd.h" HAVE_UNISTD_H) + +check_function_exists("getpagesize" HAVE_GETPAGESIZE) +check_function_exists("bcopy" HAVE_BCOPY) +check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE) +check_function_exists("mmap" HAVE_MMAP) + +#/* Define to 1 if you have the ANSI C header files. */ +check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) + +test_big_endian(WORDS_BIGENDIAN) +#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +if(WORDS_BIGENDIAN) + set(BYTEORDER 4321) +else(WORDS_BIGENDIAN) + set(BYTEORDER 1234) +endif(WORDS_BIGENDIAN) + +if(HAVE_SYS_TYPES_H) + check_symbol_exists("off_t" "sys/types.h" OFF_T) + check_symbol_exists("size_t" "sys/types.h" SIZE_T) +else(HAVE_SYS_TYPES_H) + set(OFF_T "long") + set(SIZE_T "unsigned") +endif(HAVE_SYS_TYPES_H) + +configure_file(expat_config.h.cmake expat_config.h) +add_definitions(-DHAVE_EXPAT_CONFIG_H) diff --git a/vendor/libexpat/MANIFEST b/vendor/libexpat/MANIFEST new file mode 100644 index 0000000..afb9aca --- /dev/null +++ b/vendor/libexpat/MANIFEST @@ -0,0 +1,141 @@ +amiga/launch.c +amiga/expat_68k.c +amiga/expat_68k.h +amiga/expat_68k_handler_stubs.c +amiga/expat_base.h +amiga/expat_vectors.c +amiga/expat_lib.c +amiga/expat.xml +amiga/README.txt +amiga/Makefile +amiga/include/proto/expat.h +amiga/include/libraries/expat.h +amiga/include/interfaces/expat.h +amiga/include/inline4/expat.h +bcb5/README.txt +bcb5/all_projects.bpg +bcb5/elements.bpf +bcb5/elements.bpr +bcb5/elements.mak +bcb5/expat.bpf +bcb5/expat.bpr +bcb5/expat.mak +bcb5/expat_static.bpf +bcb5/expat_static.bpr +bcb5/expat_static.mak +bcb5/expatw.bpf +bcb5/expatw.bpr +bcb5/expatw.mak +bcb5/expatw_static.bpf +bcb5/expatw_static.bpr +bcb5/expatw_static.mak +bcb5/libexpat_mtd.def +bcb5/libexpatw_mtd.def +bcb5/makefile.mak +bcb5/outline.bpf +bcb5/outline.bpr +bcb5/outline.mak +bcb5/setup.bat +bcb5/xmlwf.bpf +bcb5/xmlwf.bpr +bcb5/xmlwf.mak +doc/expat.png +doc/reference.html +doc/style.css +doc/valid-xhtml10.png +doc/xmlwf.1 +doc/xmlwf.xml +CMakeLists.txt +CMake.README +COPYING +Changes +ConfigureChecks.cmake +MANIFEST +Makefile.in +README +configure +configure.ac +expat_config.h.in +expat_config.h.cmake +expat.pc.in +expat.dsw +aclocal.m4 +conftools/PrintPath +conftools/ac_c_bigendian_cross.m4 +conftools/expat.m4 +conftools/get-version.sh +conftools/mkinstalldirs +conftools/config.guess +conftools/config.sub +conftools/install-sh +conftools/ltmain.sh +m4/libtool.m4 +m4/ltversion.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/lt~obsolete.m4 +examples/elements.c +examples/elements.dsp +examples/outline.c +examples/outline.dsp +lib/Makefile.MPW +lib/amigaconfig.h +lib/ascii.h +lib/asciitab.h +lib/expat.dsp +lib/expat.h +lib/expat_external.h +lib/expat_static.dsp +lib/expatw.dsp +lib/expatw_static.dsp +lib/iasciitab.h +lib/internal.h +lib/latin1tab.h +lib/libexpat.def +lib/libexpatw.def +lib/macconfig.h +lib/nametab.h +lib/utf8tab.h +lib/winconfig.h +lib/xmlparse.c +lib/xmlrole.c +lib/xmlrole.h +lib/xmltok.c +lib/xmltok.h +lib/xmltok_impl.c +lib/xmltok_impl.h +lib/xmltok_ns.c +tests/benchmark/README.txt +tests/benchmark/benchmark.c +tests/benchmark/benchmark.dsp +tests/benchmark/benchmark.dsw +tests/README.txt +tests/chardata.c +tests/chardata.h +tests/minicheck.c +tests/minicheck.h +tests/runtests.c +tests/runtestspp.cpp +tests/xmltest.sh +vms/README.vms +vms/descrip.mms +vms/expat_config.h +win32/MANIFEST.txt +win32/README.txt +win32/expat.iss +xmlwf/codepage.c +xmlwf/codepage.h +xmlwf/ct.c +xmlwf/filemap.h +xmlwf/readfilemap.c +xmlwf/unixfilemap.c +xmlwf/win32filemap.c +xmlwf/xmlfile.c +xmlwf/xmlfile.h +xmlwf/xmlmime.c +xmlwf/xmlmime.h +xmlwf/xmltchar.h +xmlwf/xmlurl.h +xmlwf/xmlwf.c +xmlwf/xmlwf.dsp +xmlwf/xmlwin32url.cxx diff --git a/vendor/libexpat/Makefile.in b/vendor/libexpat/Makefile.in new file mode 100644 index 0000000..3310aa9 --- /dev/null +++ b/vendor/libexpat/Makefile.in @@ -0,0 +1,212 @@ +################################################################ +# Process this file with top-level configure script to produce Makefile +# +# Copyright 2000 Clark Cooper +# +# This file is part of EXPAT. +# +# EXPAT is free software; you can redistribute it and/or modify it +# under the terms of the License (based on the MIT/X license) contained +# in the file COPYING that comes with this distribution. +# +# EXPAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN EXPAT. +# + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +man1dir = @mandir@/man1 +pkgconfigdir = $(libdir)/pkgconfig + +top_builddir = . + + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +mkinstalldirs = $(SHELL) $(top_srcdir)/conftools/mkinstalldirs + +MANFILE = $(srcdir)/doc/xmlwf.1 +APIHEADER = $(srcdir)/lib/expat.h $(srcdir)/lib/expat_external.h expat_config.h +LIBRARY = libexpat.la + +DESTDIR = $(INSTALL_ROOT) + +default: buildlib xmlwf/xmlwf@EXEEXT@ + +buildlib: $(LIBRARY) expat.pc + +all: $(LIBRARY) expat.pc xmlwf/xmlwf@EXEEXT@ examples/elements examples/outline $(MANFILE) + +clean: + cd lib && rm -f $(LIBRARY) *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd xmlwf && rm -f xmlwf *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd examples && rm -f elements outline *.@OBJEXT@ *.lo && rm -rf .libs _libs + cd tests && rm -rf .libs runtests runtests.@OBJEXT@ runtestspp runtestspp.@OBJEXT@ + cd tests && rm -f chardata.@OBJEXT@ minicheck.@OBJEXT@ + rm -rf .libs libexpat.la + rm -f examples/core tests/core xmlwf/core + +clobber: clean + +distclean: clean + rm -f expat_config.h config.status config.log config.cache libtool + rm -f Makefile expat.pc + +extraclean: distclean + rm -f expat_config.h.in configure + rm -f aclocal.m4 m4/* + rm -f conftools/ltmain.sh conftools/install-sh conftools/config.guess conftools/config.sub + +check: tests/runtests tests/runtestspp + tests/runtests + tests/runtestspp + +$(MANFILE): + $(MAKE) -C doc xmlwf.1 + +install: xmlwf/xmlwf@EXEEXT@ installlib $(MANFILE) + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) xmlwf/xmlwf@EXEEXT@ $(DESTDIR)$(bindir)/xmlwf + $(INSTALL_DATA) $(MANFILE) $(DESTDIR)$(man1dir) + +installlib: $(LIBRARY) $(APIHEADER) expat.pc + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(pkgconfigdir) + $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) + for FN in $(APIHEADER) ; do $(INSTALL_DATA) $$FN $(DESTDIR)$(includedir) ; done + $(INSTALL_DATA) expat.pc $(DESTDIR)$(pkgconfigdir)/expat.pc + +uninstall: uninstalllib + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(bindir)/xmlwf@EXEEXT@ + rm -f $(DESTDIR)$(man1dir)/xmlwf.1 + +uninstalllib: + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY) + rm -f $(DESTDIR)$(includedir)/expat.h + rm -f $(DESTDIR)$(includedir)/expat_external.h + rm -f $(DESTDIR)$(pkgconfigdir)/expat.pc + +# for VPATH builds (invoked by configure) +mkdir-init: + @for d in lib xmlwf examples tests ; do \ + (mkdir $$d 2> /dev/null || test 1) ; \ + done + +CC = @CC@ +CXX = @CXX@ +LIBTOOL = @LIBTOOL@ + +INCLUDES = -I$(srcdir)/lib -I. +LDFLAGS = @LDFLAGS@ +CPPFLAGS = @CPPFLAGS@ -DHAVE_EXPAT_CONFIG_H +CFLAGS = @CFLAGS@ +CXXFLAGS = @CXXFLAGS@ +VSNFLAG = -version-info @LIBCURRENT@:@LIBREVISION@:@LIBAGE@ + +### autoconf this? +LTFLAGS = --verbose + +COMPILE = $(CC) $(INCLUDES) $(CFLAGS) $(DEFS) $(CPPFLAGS) +CXXCOMPILE = $(CXX) $(INCLUDES) $(CXXFLAGS) $(DEFS) $(CPPFLAGS) +LTCOMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) +LINK_LIB = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) -no-undefined $(VSNFLAG) -rpath $(libdir) $(LDFLAGS) -o $@ +LINK_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(COMPILE) $(LDFLAGS) -o $@ +LINK_CXX_EXE = $(LIBTOOL) $(LTFLAGS) --mode=link $(CXXCOMPILE) $(LDFLAGS) -o $@ + +LIB_OBJS = lib/xmlparse.lo lib/xmltok.lo lib/xmlrole.lo +$(LIBRARY): $(LIB_OBJS) + $(LINK_LIB) $(LIB_OBJS) + +expat.pc: $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ + +lib/xmlparse.lo: lib/xmlparse.c lib/expat.h lib/xmlrole.h lib/xmltok.h \ + $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h + +lib/xmlrole.lo: lib/xmlrole.c lib/ascii.h lib/xmlrole.h \ + $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h + +lib/xmltok.lo: lib/xmltok.c lib/xmltok_impl.c lib/xmltok_ns.c \ + lib/ascii.h lib/asciitab.h lib/iasciitab.h lib/latin1tab.h \ + lib/nametab.h lib/utf8tab.h lib/xmltok.h lib/xmltok_impl.h \ + $(top_builddir)/expat_config.h lib/expat_external.h lib/internal.h + + +XMLWF_OBJS = xmlwf/xmlwf.@OBJEXT@ xmlwf/xmlfile.@OBJEXT@ xmlwf/codepage.@OBJEXT@ xmlwf/@FILEMAP@.@OBJEXT@ +xmlwf/xmlwf.@OBJEXT@: xmlwf/xmlwf.c +xmlwf/xmlfile.@OBJEXT@: xmlwf/xmlfile.c +xmlwf/codepage.@OBJEXT@: xmlwf/codepage.c +xmlwf/@FILEMAP@.@OBJEXT@: xmlwf/@FILEMAP@.c +xmlwf/xmlwf@EXEEXT@: $(XMLWF_OBJS) $(LIBRARY) + $(LINK_EXE) $(XMLWF_OBJS) $(LIBRARY) + +examples/elements.@OBJEXT@: examples/elements.c +examples/elements: examples/elements.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) examples/elements.@OBJEXT@ $(LIBRARY) + +examples/outline.@OBJEXT@: examples/outline.c +examples/outline: examples/outline.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) examples/outline.@OBJEXT@ $(LIBRARY) + +tests/chardata.@OBJEXT@: tests/chardata.c tests/chardata.h +tests/minicheck.@OBJEXT@: tests/minicheck.c tests/minicheck.h +tests/runtests.@OBJEXT@: tests/runtests.c tests/chardata.h +tests/runtests: tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/runtests.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) +tests/runtestspp.@OBJEXT@: tests/runtestspp.cpp tests/runtests.c tests/chardata.h +tests/runtestspp: tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + $(LINK_CXX_EXE) tests/runtestspp.@OBJEXT@ tests/chardata.@OBJEXT@ tests/minicheck.@OBJEXT@ $(LIBRARY) + +tests/benchmark/benchmark.@OBJEXT@: tests/benchmark/benchmark.c +tests/benchmark/benchmark: tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + $(LINK_EXE) tests/benchmark/benchmark.@OBJEXT@ $(LIBRARY) + +run-benchmark: tests/benchmark/benchmark + tests/benchmark/benchmark@EXEEXT@ -n $(top_srcdir)/../testdata/largefiles/recset.xml 65535 3 + +tests/xmlts.zip: + wget --output-document=tests/xmlts.zip \ + http://www.w3.org/XML/Test/xmlts20080827.zip + +tests/xmlconf: tests/xmlts.zip + cd tests && unzip -q xmlts.zip + +run-xmltest: xmlwf/xmlwf@EXEEXT@ tests/xmlconf + tests/xmltest.sh 2>&1 | tee tests/xmltest.log + diff -u tests/xmltest.log.expected tests/xmltest.log + +.PHONY: qa +qa: + ./qa.sh address + ./qa.sh memory + ./qa.sh undefined + ./qa.sh coverage + +.SUFFIXES: .c .cpp .lo .@OBJEXT@ + +.cpp.@OBJEXT@: + $(CXXCOMPILE) -o $@ -c $< +.c.@OBJEXT@: + $(COMPILE) -o $@ -c $< +.c.lo: + $(LTCOMPILE) -o $@ -c $< + +.PHONY: buildlib all \ + clean distclean extraclean maintainer-clean \ + dist distdir \ + install uninstall diff --git a/vendor/libexpat/README b/vendor/libexpat/README new file mode 100644 index 0000000..a7d2845 --- /dev/null +++ b/vendor/libexpat/README @@ -0,0 +1,139 @@ + + Expat, Release 2.2.0 + +This is Expat, a C library for parsing XML, written by James Clark. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + +Windows users should use the expat_win32bin package, which includes +both precompiled libraries and executables, and source code for +developers. + +Expat is free software. You may copy, distribute, and modify it under +the terms of the License contained in the file COPYING distributed +with this package. This license is the same as the MIT/X Consortium +license. + +Versions of Expat that have an odd minor version (the middle number in +the release above), are development releases and should be considered +as beta software. Releases with even minor version numbers are +intended to be production grade software. + +If you are building Expat from a check-out from the CVS repository, +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.58 or newer. Run the script like this: + + ./buildconf.sh + +Once this has been done, follow the same instructions as for building +from a source distribution. + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + + ./configure + +There are many options which you may provide to configure (which you +can discover by running configure with the --help option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into /usr/local/lib, expat.h into /usr/local/include, and +xmlwf into /usr/local/bin. If, for example, you'd prefer to install +into /home/me/mystuff/lib, /home/me/mystuff/include, and +/home/me/mystuff/bin, you can tell configure about that with: + + ./configure --prefix=/home/me/mystuff + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + + ./configure CPPFLAGS=-DXML_LARGE_SIZE + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use - e.g. as part of +a Linux distribution - but rather for builds with special requirements. + +After running the configure script, the "make" command will build +things and "make install" will install things into their proper +location. Have a look at the "Makefile" to learn about additional +"make" options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run "make distclean"): + + 1. For UTF-16 output as unsigned short (and version/error + strings as char), run: + + ./configure CPPFLAGS=-DXML_UNICODE + + For UTF-16 output as wchar_t (incl. version/error strings), + run: + + ./configure CFLAGS="-g -O2 -fshort-wchar" \ + CPPFLAGS=-DXML_UNICODE_WCHAR_T + + 2. Edit the MakeFile, changing: + + LIBRARY = libexpat.la + + to: + + LIBRARY = libexpatw.la + + (Note the additional "w" in the library name.) + + 3. Run "make buildlib" (which builds the library only). + Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la". + + 4. Run "make installlib" (which installs the library only). + Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la". + +Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default +value for DESTDIR, and the rest of the make file using only DESTDIR. +It works as follows: + $ make install DESTDIR=/path/to/image +overrides the in-makefile set DESTDIR, while both + $ INSTALL_ROOT=/path/to/image make install + $ make install INSTALL_ROOT=/path/to/image +use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the +environment, because variable-setting priority is +1) commandline +2) in-makefile +3) environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. + +Note for Solaris users: The "ar" command is usually located in +"/usr/ccs/bin", which is not in the default PATH. You will need to +add this to your path for the "make" command, and probably also switch +to GNU make (the "make" found in /usr/ccs/bin does not seem to work +properly -- apparently it does not understand .PHONY directives). If +you're using ksh or bash, use this command to build: + + PATH=/usr/ccs/bin:$PATH make + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in conftools/expat.m4 to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file doc/reference.html in this +distribution. + +The homepage for this project is http://www.libexpat.org/. There +are links there to connect you to the bug reports page. If you need +to report a bug when you don't have access to a browser, you may also +send a bug report by email to expat-bugs@mail.libexpat.org. + +Discussion related to the direction of future expat development takes +place on expat-discuss@mail.libexpat.org. Archives of this list and +other Expat-related lists may be found at: + + http://mail.libexpat.org/mailman/listinfo/ diff --git a/vendor/libexpat/aclocal.m4 b/vendor/libexpat/aclocal.m4 new file mode 100644 index 0000000..6fe5ffd --- /dev/null +++ b/vendor/libexpat/aclocal.m4 @@ -0,0 +1,8460 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3293 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4]) +m4_define([LT_PACKAGE_REVISION], [1.3293]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4' +macro_revision='1.3293' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + diff --git a/vendor/libexpat/amiga/Makefile b/vendor/libexpat/amiga/Makefile new file mode 100644 index 0000000..c6d1261 --- /dev/null +++ b/vendor/libexpat/amiga/Makefile @@ -0,0 +1,336 @@ +# +# Makefile for AmigaOS +# + +.PHONY: help all check clean package +.PHONY: clib2 newlib library so + +vpath %.c ../lib ../examples ../xmlwf ../tests ../tests/benchmark +vpath %.h ../lib ../tests + +############################################################################# + +help: + @echo "Requires:" + @echo " AmigaOS 4.x" + @echo " SDK 53.13" + @echo "" + @echo "Targets:" + @echo " all - make libraries, xmlwf, examples and runs tests" + @echo " install - install expat libraries and tools into SDK" + @echo " clean - clean object files" + @echo " check - run all the tests" + @echo " package - prepare distribution archive" + +all: clib2 newlib library so check + +clib2: clib2/libexpat.a clib2/xmlwf clib2/elements clib2/outline clib2/runtests clib2/benchmark + +newlib: newlib/libexpat.a newlib/xmlwf newlib/elements newlib/outline newlib/runtests newlib/benchmark + +library: libs/expat.library libs/xmlwf libs/elements libs/outline libs/runtests libs/benchmark + +so: so/libexpat.so so/xmlwf so/elements so/outline so/runtests so/benchmark + +check: clib2/runtests newlib/runtests libs/runtests so/runtests + clib2/runtests + newlib/runtests + libs/runtests + so/runtests + +clean: + -delete clib2/#?.o quiet + -delete newlib/#?.o quiet + -delete libs/#?.o quiet + -delete so/#?.o quiet + +package: + $(MAKE) all + -delete T:expat all force quiet + makedir all T:expat/Workbench/Libs + copy clone libs/expat.library T:expat/Workbench/Libs + makedir all T:expat/Workbench/SObjs + copy clone so/libexpat.so T:expat/Workbench/SObjs + makedir all T:expat/SDK/Local/C + copy clone libs/xmlwf T:expat/SDK/Local/C + makedir all T:expat/SDK/Local/clib2/lib + copy clone clib2/libexpat.a T:expat/SDK/Local/clib2/lib + makedir all T:expat/SDK/Local/newlib/lib + copy clone newlib/libexpat.a T:expat/SDK/Local/newlib/lib + makedir all T:expat/SDK/Local/common/include + copy clone /lib/expat.h /lib/expat_external.h T:expat/SDK/Local/common/include + makedir all T:expat/SDK/Include/include_h/inline4 + copy clone include/inline4/expat.h T:expat/SDK/Include/include_h/inline4 + makedir all T:expat/SDK/Include/include_h/interfaces + copy clone include/interfaces/expat.h T:expat/SDK/Include/include_h/interfaces + makedir all T:expat/SDK/Include/include_h/libraries + copy clone include/libraries/expat.h T:expat/SDK/Include/include_h/libraries + makedir all T:expat/SDK/Include/include_h/proto + copy clone include/proto/expat.h T:expat/SDK/Include/include_h/proto + makedir all T:expat/SDK/Documentation/Libs/Expat + copy clone /COPYING T:expat/SDK/Documentation/Libs/Expat + copy clone /README T:expat/SDK/Documentation/Libs/Expat + copy clone README.txt T:expat/SDK/Documentation/Libs/Expat/README.AmigaOS + -delete expat.lha + lha -r a expat.lha T:expat + +############################################################################# + +CC := gcc +LIBTOOL := ar +STRIP := strip + +CFLAGS := -DNDEBUG -O3 +LTFLAGS := -crs +STRIPFLAGS := -R.comment + +############################################################################# + +clib2/libexpat.a: clib2/xmlparse.o clib2/xmltok.o clib2/xmlrole.o + $(LIBTOOL) $(LTFLAGS) $@ $^ + protect $@ -e + +clib2/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \ + expat_external.h internal.h amigaconfig.h + +clib2/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \ + internal.h amigaconfig.h + +clib2/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \ + iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \ + expat_external.h internal.h amigaconfig.h + +############################################################################# + +clib2/xmlwf: clib2/xmlwf.o clib2/xmlfile.o clib2/codepage.o clib2/readfilemap.o + $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a + $(STRIP) $(STRIPFLAGS) $@ + +clib2/xmlwf.o: xmlwf.c + +clib2/xmlfile.o: xmlfile.c + +clib2/codepage.o: codepage.c + +clib2/readfilemap.o: readfilemap.c + +############################################################################# + +clib2/elements: clib2/elements.o + $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a + $(STRIP) $(STRIPFLAGS) $@ + +clib2/elements.o: elements.c + +############################################################################# + +clib2/outline: clib2/outline.o + $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a + $(STRIP) $(STRIPFLAGS) $@ + +clib2/outline.o: outline.c + +############################################################################# + +clib2/runtests: clib2/runtests.o clib2/chardata.o clib2/minicheck.o + $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a + +clib2/chardata.o: chardata.c chardata.h + +clib2/minicheck.o: minicheck.c minicheck.h + +clib2/runtests.o: runtests.c chardata.h + +############################################################################# + +clib2/benchmark: clib2/benchmark.o + $(CC) -mcrt=clib2 $^ -o $@ clib2/libexpat.a -lm + +clib2/benchmark.o: benchmark.c + +############################################################################# + +newlib/libexpat.a: newlib/xmlparse.o newlib/xmltok.o newlib/xmlrole.o + $(LIBTOOL) $(LTFLAGS) $@ $^ + protect $@ -e + +newlib/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \ + expat_external.h internal.h amigaconfig.h + +newlib/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \ + internal.h amigaconfig.h + +newlib/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \ + iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \ + expat_external.h internal.h amigaconfig.h + +############################################################################# + +newlib/xmlwf: newlib/xmlwf.o newlib/xmlfile.o newlib/codepage.o newlib/readfilemap.o + $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a + $(STRIP) $(STRIPFLAGS) $@ + +newlib/xmlwf.o: xmlwf.c + +newlib/xmlfile.o: xmlfile.c + +newlib/codepage.o: codepage.c + +newlib/readfilemap.o: readfilemap.c + +############################################################################# + +newlib/elements: newlib/elements.o + $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a + $(STRIP) $(STRIPFLAGS) $@ + +newlib/elements.o: elements.c + +############################################################################# + +newlib/outline: newlib/outline.o + $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a + $(STRIP) $(STRIPFLAGS) $@ + +newlib/outline.o: outline.c + +############################################################################# + +newlib/runtests: newlib/runtests.o newlib/chardata.o newlib/minicheck.o + $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a + +newlib/chardata.o: chardata.c chardata.h + +newlib/minicheck.o: minicheck.c minicheck.h + +newlib/runtests.o: runtests.c chardata.h + +############################################################################# + +newlib/benchmark: newlib/benchmark.o + $(CC) -mcrt=newlib $^ -o $@ newlib/libexpat.a + +newlib/benchmark.o: benchmark.c + +############################################################################# + +libs/expat.library: libs/expat_lib.o libs/expat_68k.o libs/expat_68k_handler_stubs.o libs/expat_vectors.o newlib/libexpat.a + $(CC) -mcrt=newlib -nostartfiles $^ -o $@ newlib/libexpat.a -Wl,--cref,-M,-Map=$@.map + protect $@ -e + $(STRIP) $(STRIPFLAGS) $@ + +libs/expat_lib.o: expat_lib.c expat_base.h + +libs/expat_68k.o: expat_68k.c expat_68k.h expat_base.h + +libs/expat_68k_handler_stubs.o: expat_68k_handler_stubs.c expat_68k.h + +libs/expat_vectors.o: expat_vectors.c + +libs/launch.o: launch.c + +############################################################################# + +libs/xmlwf: libs/xmlwf.o libs/xmlfile.o libs/codepage.o libs/readfilemap.o libs/launch.o + $(CC) -mcrt=newlib $^ -o $@ + $(STRIP) $(STRIPFLAGS) $@ + +libs/xmlwf.o: xmlwf.c + +libs/xmlfile.o: xmlfile.c + +libs/codepage.o: codepage.c + +libs/readfilemap.o: readfilemap.c + +############################################################################# + +libs/elements: libs/elements.o libs/launch.o + $(CC) -mcrt=newlib $^ -o $@ + $(STRIP) $(STRIPFLAGS) $@ + +libs/elements.o: elements.c + +############################################################################# + +libs/outline: libs/outline.o libs/launch.o + $(CC) -mcrt=newlib $^ -o $@ + $(STRIP) $(STRIPFLAGS) $@ + +libs/outline.o: outline.c + +############################################################################# + +libs/runtests: libs/runtests.o libs/chardata.o libs/minicheck.o libs/launch.o + $(CC) -mcrt=newlib $^ -o $@ + +libs/chardata.o: chardata.c chardata.h + +libs/minicheck.o: minicheck.c minicheck.h + +libs/runtests.o: runtests.c chardata.h + +############################################################################# + +libs/benchmark: libs/benchmark.o libs/launch.o + $(CC) -mcrt=newlib $^ -o $@ + +libs/benchmark.o: benchmark.c + +############################################################################# + +so/libexpat.so: so/xmlparse.o so/xmltok.o so/xmlrole.o + $(CC) -mcrt=newlib -shared -o $@ $^ + protect $@ -e + +so/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \ + expat_external.h internal.h amigaconfig.h + +so/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \ + internal.h amigaconfig.h + +so/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \ + iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \ + expat_external.h internal.h amigaconfig.h + +############################################################################# + +so/xmlwf: newlib/xmlwf.o newlib/xmlfile.o newlib/codepage.o newlib/readfilemap.o + $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat + $(STRIP) $(STRIPFLAGS) $@ + +############################################################################# + +so/elements: newlib/elements.o + $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat + $(STRIP) $(STRIPFLAGS) $@ + +############################################################################# + +so/outline: newlib/outline.o + $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat + $(STRIP) $(STRIPFLAGS) $@ + +############################################################################# + +so/runtests: newlib/runtests.o newlib/chardata.o newlib/minicheck.o + $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat + +############################################################################# + +so/benchmark: newlib/benchmark.o + $(CC) -mcrt=newlib -use-dynld $^ -o $@ -Lso -lexpat + +############################################################################# + +clib2/%.o: %.c + $(CC) -mcrt=clib2 $(CFLAGS) -I../lib -c $< -o $@ + +newlib/%.o: %.c + $(CC) -mcrt=newlib $(CFLAGS) -I../lib -c $< -o $@ + +libs/%.o: %.c + $(CC) -mcrt=newlib $(CFLAGS) -D__USE_INLINE__ -I. -Iinclude -Iinclude/libraries -I../lib -c $< -o $@ + +so/%.o: %.c + $(CC) -mcrt=newlib $(CFLAGS) -fPIC -I../lib -c $< -o $@ diff --git a/vendor/libexpat/amiga/README.txt b/vendor/libexpat/amiga/README.txt new file mode 100644 index 0000000..3ba9267 --- /dev/null +++ b/vendor/libexpat/amiga/README.txt @@ -0,0 +1,98 @@ +SUMMARY +======= +This is a port of expat for AmigaOS 4.x which includes the +SDK, some XML tools and the libraries. + +Four library flavours are supported: +1. static clib2 (libexpat.a) +2. static newlib (libexpat.a) +3. AmigaOS library (expat.library) +4. AmigaOS shared object library (libexpat.so) + +The AmigaOS library version is based on the work of Fredrik Wikstrom. + + +BUILDING +======== +To build all the library flavours, all the tools, examples and run the +test suite, simply type 'make all' in the amiga subdirectory. + + +INSTALLATION +============ +To install expat into the standard AmigaOS SDK type 'make install' +in the amiga subdirectory. + + +CONFIGURATION +============= +You may want to edit the lib/amigaconfig.h file to remove +DTD and/or XML namespace support if they are not required by your +specific application for a smaller and faster implementation. + + +SOURCE CODE +=========== +The source code is actively maintained and merged with the official +Expat repository available at http://expat.sourceforge.net/ + + +HISTORY +======= +53.1 - bumped version to match AmigaOS streaming + - modified to remove all global variables (except INewLib) + - removed replacements for malloc(), etc. which are now + handled by the respective C library + - compiled with the latest binutils which bumps the + AMIGAOS_DYNVERSION to 2 for the libexpat.so target + - now strips the expat.library binary + +5.2 - fixed XML_Parse 68k stub which enables xmlviewer to work + without crashing + - added some new functions to the 68k jump table available + in the latest expat.library for AmigaOS 3.x + - patches provided by Fredrik Wikstrom + +5.1 - fixed package archive which was missing libexpat.so + - fixed library protection bits + - fixed up copyright notices + +5.0 - integrated 68k patches from Fredrik Wikstrom which means + expat.library is now callable from 68k code + - bumped version for the addition of the 68k interface so + executables can explicitly ask for version 5 and know + it includes the 68k interface + - refactored Makefile to avoid recursive make calls and + build all the library flavours + - added static newlib version + - added shared objects version + - added package target to Makefile + - compiled with SDK 53.13 (GCC 4.2.4) at -O3 + +4.2 - updated to correspond to Expat 2.0.1 release + - bumped copyright banners and versions + - simplified amigaconfig.h + - updated include/libraries/expat.h file + - modified launch.c to use contructor/deconstructor + - removed need for amiga_main() from expat utilities + +4.1 - fixed memory freeing bug in shared library version + - now allocates shared memory + +4.0 - updated for corresponding Expat 2.0 release + - some minor CVS related changes + +3.1 - removed obsolete sfd file + - added library description xml file + - refactored Makefile + - removed extraneous VARARGS68K keywords + - reworked default memory handling functions in shared lib + - updated amigaconfig.h + +3.0 - initial release + - based on expat 1.95.8 + + +TO DO +===== +- wide character support (UTF-16) diff --git a/vendor/libexpat/amiga/expat.xml b/vendor/libexpat/amiga/expat.xml new file mode 100644 index 0000000..d6aeae2 --- /dev/null +++ b/vendor/libexpat/amiga/expat.xml @@ -0,0 +1,264 @@ + + + + + libraries/expat.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/libexpat/amiga/expat_68k.c b/vendor/libexpat/amiga/expat_68k.c new file mode 100644 index 0000000..aa4c6e2 --- /dev/null +++ b/vendor/libexpat/amiga/expat_68k.c @@ -0,0 +1,939 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* +** Note: This file was originally automatically generated by fdtrans. +*/ + +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + +#include +#include +#include +#include +#include +#include "expat_68k.h" +#include "expat_base.h" + + +STATIC ULONG stub_OpenPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct LibraryManagerInterface *Self = (struct LibraryManagerInterface *) ExtLib->ILibrary; + + return (ULONG) Self->Open(0); +} +struct EmuTrap stub_Open = { TRAPINST, TRAPTYPE, stub_OpenPPC }; + +STATIC ULONG stub_ClosePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct LibraryManagerInterface *Self = (struct LibraryManagerInterface *) ExtLib->ILibrary; + + return (ULONG) Self->Close(); +} +struct EmuTrap stub_Close = { TRAPINST, TRAPTYPE, stub_ClosePPC }; + +STATIC ULONG stub_ExpungePPC(ULONG *regarray) +{ + return 0UL; +} +struct EmuTrap stub_Expunge = { TRAPINST, TRAPTYPE, stub_ExpungePPC }; + +STATIC ULONG stub_ReservedPPC(ULONG *regarray) +{ + return 0UL; +} +struct EmuTrap stub_Reserved = { TRAPINST, TRAPTYPE, stub_ReservedPPC }; + +static M68kXML_Parser stub_XML_ParserCreatePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; + + M68kXML_Parser p; + p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); + if (p) { + p->p = Self->XML_ParserCreate((const XML_Char *)regarray[8]); + if (p->p) { + p->IExec = IExec; + Self->XML_SetUserData(p->p, p); + return p; + } + IExec->FreeVec(p); + } + return NULL; +} +struct EmuTrap stub_XML_ParserCreate = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserCreatePPC }; + +static M68kXML_Parser stub_XML_ParserCreateNSPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; + + M68kXML_Parser p; + p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); + if (p) { + p->p = Self->XML_ParserCreateNS((const XML_Char *)regarray[8], (XML_Char)regarray[0]); + if (p->p) { + p->IExec = IExec; + Self->XML_SetUserData(p->p, p); + return p; + } + IExec->FreeVec(p); + } + return NULL; +} +struct EmuTrap stub_XML_ParserCreateNS = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserCreateNSPPC }; + +static M68kXML_Parser stub_XML_ParserCreate_MMPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; + + M68kXML_Parser p; + p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); + if (p) { + p->p = Self->XML_ParserCreate_MM((const XML_Char *)regarray[8], + (const XML_Memory_Handling_Suite *)regarray[9], + (const XML_Char *)regarray[10]); + if (p->p) { + p->IExec = IExec; + Self->XML_SetUserData(p->p, p); + return p; + } + IExec->FreeVec(p); + } + return NULL; +} +struct EmuTrap stub_XML_ParserCreate_MM = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserCreate_MMPPC }; + +static M68kXML_Parser stub_XML_ExternalEntityParserCreatePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; + + M68kXML_Parser p; + p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); + if (p) { + p->p = Self->XML_ExternalEntityParserCreate((XML_Parser)regarray[8], + (const XML_Char *)regarray[9], (const XML_Char *)regarray[10]); + if (p->p) { + p->IExec = IExec; + Self->XML_SetUserData(p->p, p); + return p; + } + IExec->FreeVec(p); + } + return NULL; +} +struct EmuTrap stub_XML_ExternalEntityParserCreate = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ExternalEntityParserCreatePPC }; + +static void stub_XML_ParserFreePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + if (p) { + Self->XML_ParserFree(p->p); + IExec->FreeVec(p); + } +} +struct EmuTrap stub_XML_ParserFree = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserFreePPC }; + +static int stub_XML_ParsePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + Self->XML_SetUserData(p->p, p); + return Self->XML_Parse(p->p, (const char *)regarray[9], (int)regarray[0], (int)regarray[1]); +} +struct EmuTrap stub_XML_Parse = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParsePPC }; + +static int stub_XML_ParseBufferPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_ParseBuffer(p->p, (int)regarray[0], (int)regarray[1]); +} +struct EmuTrap stub_XML_ParseBuffer = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParseBufferPPC }; + +static void * stub_XML_GetBufferPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetBuffer(p->p, (int)regarray[0]); +} +struct EmuTrap stub_XML_GetBuffer = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetBufferPPC }; + +static void stub_XML_SetStartElementHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startelementhandler = (void *)regarray[9]; + Self->XML_SetStartElementHandler(p->p, _68k_startelementhandler); +} +struct EmuTrap stub_XML_SetStartElementHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartElementHandlerPPC }; + +static void stub_XML_SetEndElementHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->endelementhandler = (void *)regarray[9]; + Self->XML_SetEndElementHandler(p->p, _68k_endelementhandler); +} +struct EmuTrap stub_XML_SetEndElementHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndElementHandlerPPC }; + +static void stub_XML_SetElementHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startelementhandler = (void *)regarray[9]; + p->endelementhandler = (void *)regarray[10]; + Self->XML_SetElementHandler(p->p, _68k_startelementhandler, _68k_endelementhandler); +} +struct EmuTrap stub_XML_SetElementHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetElementHandlerPPC }; + +static void stub_XML_SetCharacterDataHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->chardatahandler = (void *)regarray[9]; + Self->XML_SetCharacterDataHandler(p->p, _68k_chardatahandler); +} +struct EmuTrap stub_XML_SetCharacterDataHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetCharacterDataHandlerPPC }; + +static void stub_XML_SetProcessingInstructionHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->procinsthandler = (void *)regarray[9]; + Self->XML_SetProcessingInstructionHandler(p->p, _68k_procinsthandler); +} +struct EmuTrap stub_XML_SetProcessingInstructionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetProcessingInstructionHandlerPPC }; + +static void stub_XML_SetCommentHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->commenthandler = (void *)regarray[9]; + Self->XML_SetCommentHandler(p->p, _68k_commenthandler); +} +struct EmuTrap stub_XML_SetCommentHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetCommentHandlerPPC }; + +static void stub_XML_SetStartCdataSectionHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startcdatahandler = (void *)regarray[9]; + Self->XML_SetStartCdataSectionHandler(p->p, _68k_startcdatahandler); +} +struct EmuTrap stub_XML_SetStartCdataSectionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartCdataSectionHandlerPPC }; + +static void stub_XML_SetEndCdataSectionHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->endcdatahandler = (void *)regarray[9]; + Self->XML_SetEndCdataSectionHandler(p->p, _68k_endcdatahandler); +} +struct EmuTrap stub_XML_SetEndCdataSectionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndCdataSectionHandlerPPC }; + +static void stub_XML_SetCdataSectionHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startcdatahandler = (void *)regarray[9]; + p->endcdatahandler = (void *)regarray[10]; + Self->XML_SetCdataSectionHandler(p->p, _68k_startcdatahandler, _68k_endcdatahandler); +} +struct EmuTrap stub_XML_SetCdataSectionHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetCdataSectionHandlerPPC }; + +static void stub_XML_SetDefaultHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->defaulthandler = (void *)regarray[9]; + Self->XML_SetDefaultHandler(p->p, _68k_defaulthandler); +} +struct EmuTrap stub_XML_SetDefaultHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetDefaultHandlerPPC }; + +static void stub_XML_SetDefaultHandlerExpandPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->defaulthandlerexp = (void *)regarray[9]; + Self->XML_SetDefaultHandlerExpand(p->p, _68k_defaulthandlerexp); +} +struct EmuTrap stub_XML_SetDefaultHandlerExpand = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetDefaultHandlerExpandPPC }; + +static void stub_XML_SetExternalEntityRefHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->extentrefhandler = (void *)regarray[9]; + Self->XML_SetExternalEntityRefHandler(p->p, _68k_extentrefhandler); +} +struct EmuTrap stub_XML_SetExternalEntityRefHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetExternalEntityRefHandlerPPC }; + +static void stub_XML_SetExternalEntityRefHandlerArgPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->extenthandlerarg = (void *)regarray[9]; +} +struct EmuTrap stub_XML_SetExternalEntityRefHandlerArg = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetExternalEntityRefHandlerArgPPC }; + +static void stub_XML_SetUnknownEncodingHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->unknownenchandler = (void *)regarray[9]; + p->enchandlerarg = (void *)regarray[10]; + Self->XML_SetUnknownEncodingHandler(p->p, _68k_unknownenchandler, p); +} +struct EmuTrap stub_XML_SetUnknownEncodingHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetUnknownEncodingHandlerPPC }; + +static void stub_XML_SetStartNamespaceDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startnamespacehandler = (void *)regarray[9]; + Self->XML_SetStartNamespaceDeclHandler(p->p, _68k_startnamespacehandler); +} +struct EmuTrap stub_XML_SetStartNamespaceDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartNamespaceDeclHandlerPPC }; + +static void stub_XML_SetEndNamespaceDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->endnamespacehandler = (void *)regarray[9]; + Self->XML_SetEndNamespaceDeclHandler(p->p, _68k_endnamespacehandler); +} +struct EmuTrap stub_XML_SetEndNamespaceDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndNamespaceDeclHandlerPPC }; + +static void stub_XML_SetNamespaceDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startnamespacehandler = (void *)regarray[9]; + p->endnamespacehandler = (void *)regarray[10]; + Self->XML_SetNamespaceDeclHandler(p->p, _68k_startnamespacehandler, _68k_endnamespacehandler); +} +struct EmuTrap stub_XML_SetNamespaceDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetNamespaceDeclHandlerPPC }; + +static void stub_XML_SetXmlDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->xmldeclhandler = (void *)regarray[9]; + Self->XML_SetXmlDeclHandler(p->p, _68k_xmldeclhandler); +} +struct EmuTrap stub_XML_SetXmlDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetXmlDeclHandlerPPC }; + +static void stub_XML_SetStartDoctypeDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startdoctypehandler = (void *)regarray[9]; + Self->XML_SetStartDoctypeDeclHandler(p->p, _68k_startdoctypehandler); +} +struct EmuTrap stub_XML_SetStartDoctypeDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetStartDoctypeDeclHandlerPPC }; + +static void stub_XML_SetEndDoctypeDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->enddoctypehandler = (void *)regarray[9]; + Self->XML_SetEndDoctypeDeclHandler(p->p, _68k_enddoctypehandler); +} +struct EmuTrap stub_XML_SetEndDoctypeDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEndDoctypeDeclHandlerPPC }; + +static void stub_XML_SetDoctypeDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->startdoctypehandler = (void *)regarray[9]; + p->enddoctypehandler = (void *)regarray[10]; + Self->XML_SetDoctypeDeclHandler(p->p, _68k_startdoctypehandler, _68k_enddoctypehandler); +} +struct EmuTrap stub_XML_SetDoctypeDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetDoctypeDeclHandlerPPC }; + +static void stub_XML_SetElementDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->elementdeclhandler = (void *)regarray[9]; + Self->XML_SetElementDeclHandler(p->p, _68k_elementdeclhandler); +} +struct EmuTrap stub_XML_SetElementDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetElementDeclHandlerPPC }; + +static void stub_XML_SetAttlistDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->attlistdeclhandler = (void *)regarray[9]; + Self->XML_SetAttlistDeclHandler(p->p, _68k_attlistdeclhandler); +} +struct EmuTrap stub_XML_SetAttlistDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetAttlistDeclHandlerPPC }; + +static void stub_XML_SetEntityDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->entitydeclhandler = (void *)regarray[9]; + Self->XML_SetEntityDeclHandler(p->p, _68k_entitydeclhandler); +} +struct EmuTrap stub_XML_SetEntityDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEntityDeclHandlerPPC }; + +static void stub_XML_SetUnparsedEntityDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->unparseddeclhandler = (void *)regarray[9]; + Self->XML_SetUnparsedEntityDeclHandler(p->p, _68k_unparseddeclhandler); +} +struct EmuTrap stub_XML_SetUnparsedEntityDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetUnparsedEntityDeclHandlerPPC }; + +static void stub_XML_SetNotationDeclHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->notationdeclhandler = (void *)regarray[9]; + Self->XML_SetNotationDeclHandler(p->p, _68k_notationdeclhandler); +} +struct EmuTrap stub_XML_SetNotationDeclHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetNotationDeclHandlerPPC }; + +static void stub_XML_SetNotStandaloneHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->notstandalonehandler = (void *)regarray[9]; + Self->XML_SetNotStandaloneHandler(p->p, _68k_notstandalonehandler); +} +struct EmuTrap stub_XML_SetNotStandaloneHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetNotStandaloneHandlerPPC }; + +static int stub_XML_GetErrorCodePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetErrorCode(p->p); +} +struct EmuTrap stub_XML_GetErrorCode = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetErrorCodePPC }; + +static const XML_LChar * stub_XML_ErrorStringPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + return Self->XML_ErrorString((int)regarray[0]); +} +struct EmuTrap stub_XML_ErrorString = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ErrorStringPPC }; + +static long stub_XML_GetCurrentByteIndexPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetCurrentByteIndex(p->p); +} +struct EmuTrap stub_XML_GetCurrentByteIndex = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentByteIndexPPC }; + +static int stub_XML_GetCurrentLineNumberPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetCurrentLineNumber(p->p); +} +struct EmuTrap stub_XML_GetCurrentLineNumber = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentLineNumberPPC }; + +static int stub_XML_GetCurrentColumnNumberPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetCurrentColumnNumber(p->p); +} +struct EmuTrap stub_XML_GetCurrentColumnNumber = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentColumnNumberPPC }; + +static int stub_XML_GetCurrentByteCountPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetCurrentByteCount(p->p); +} +struct EmuTrap stub_XML_GetCurrentByteCount = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetCurrentByteCountPPC }; + +static const char * stub_XML_GetInputContextPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetInputContext(p->p, (int *)regarray[9], (int *)regarray[10]); +} +struct EmuTrap stub_XML_GetInputContext = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetInputContextPPC }; + +static void stub_XML_SetUserDataPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->handlerarg = (void *)regarray[9]; +} +struct EmuTrap stub_XML_SetUserData = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetUserDataPPC }; + +static void stub_XML_DefaultCurrentPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + Self->XML_DefaultCurrent(p->p); +} +struct EmuTrap stub_XML_DefaultCurrent = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_DefaultCurrentPPC }; + +static void stub_XML_UseParserAsHandlerArgPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->handlerarg = p; +} +struct EmuTrap stub_XML_UseParserAsHandlerArg = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_UseParserAsHandlerArgPPC }; + +static int stub_XML_SetBasePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_SetBase(p->p, (const XML_Char *)regarray[9]); +} +struct EmuTrap stub_XML_SetBase = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetBasePPC }; + +static const XML_Char * stub_XML_GetBasePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetBase(p->p); +} +struct EmuTrap stub_XML_GetBase = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetBasePPC }; + +static int stub_XML_GetSpecifiedAttributeCountPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetSpecifiedAttributeCount(p->p); +} +struct EmuTrap stub_XML_GetSpecifiedAttributeCount = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetSpecifiedAttributeCountPPC }; + +static int stub_XML_GetIdAttributeIndexPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_GetIdAttributeIndex(p->p); +} +struct EmuTrap stub_XML_GetIdAttributeIndex = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetIdAttributeIndexPPC }; + +static int stub_XML_SetEncodingPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_SetEncoding(p->p, (const XML_Char *)regarray[9]); +} +struct EmuTrap stub_XML_SetEncoding = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetEncodingPPC }; + +static int stub_XML_SetParamEntityParsingPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_SetParamEntityParsing(p->p, (enum XML_ParamEntityParsing)regarray[9]); +} +struct EmuTrap stub_XML_SetParamEntityParsing = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetParamEntityParsingPPC }; + +static void stub_XML_SetReturnNSTripletPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + Self->XML_SetReturnNSTriplet(p->p, (int)regarray[0]); +} +struct EmuTrap stub_XML_SetReturnNSTriplet = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetReturnNSTripletPPC }; + +static const XML_LChar * stub_XML_ExpatVersionPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + return Self->XML_ExpatVersion(); +} +struct EmuTrap stub_XML_ExpatVersion = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ExpatVersionPPC }; + +static XML_Expat_Version stub_XML_ExpatVersionInfoPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + return Self->XML_ExpatVersionInfo(); +} +struct EmuTrap stub_XML_ExpatVersionInfo = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ExpatVersionInfoPPC }; + +static int stub_XML_ParserResetPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_ParserReset(p->p, (const XML_Char *)regarray[9]); +} +struct EmuTrap stub_XML_ParserReset = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ParserResetPPC }; + +static void stub_XML_SetSkippedEntityHandlerPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + p->skippedentityhandler = (void *)regarray[9]; + Self->XML_SetSkippedEntityHandler(p->p, _68k_skippedentityhandler); +} +struct EmuTrap stub_XML_SetSkippedEntityHandler = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_SetSkippedEntityHandlerPPC }; + +static int stub_XML_UseForeignDTDPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_UseForeignDTD(p->p, (XML_Bool)regarray[0]); +} +struct EmuTrap stub_XML_UseForeignDTD = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_UseForeignDTDPPC }; + +static const XML_Feature * stub_XML_GetFeatureListPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + return Self->XML_GetFeatureList(); +} +struct EmuTrap stub_XML_GetFeatureList = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetFeatureListPPC }; + +static int stub_XML_StopParserPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_StopParser(p->p, (XML_Bool)regarray[0]); +} +struct EmuTrap stub_XML_StopParser = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_StopParserPPC }; + +static int stub_XML_ResumeParserPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_ResumeParser(p->p); +} +struct EmuTrap stub_XML_ResumeParser = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_ResumeParserPPC }; + +static void stub_XML_GetParsingStatusPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + Self->XML_GetParsingStatus(p->p, (XML_ParsingStatus *)regarray[9]); +} +struct EmuTrap stub_XML_GetParsingStatus = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_GetParsingStatusPPC }; + +static void stub_XML_FreeContentModelPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + Self->XML_FreeContentModel(p->p, (XML_Content *)regarray[9]); +} +struct EmuTrap stub_XML_FreeContentModel = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_FreeContentModelPPC }; + +static void *stub_XML_MemMallocPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_MemMalloc(p->p, (size_t)regarray[0]); +} +struct EmuTrap stub_XML_MemMalloc = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_MemMallocPPC }; + +static void *stub_XML_MemReallocPPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + return Self->XML_MemRealloc(p->p, (void *)regarray[9], (size_t)regarray[0]); +} +struct EmuTrap stub_XML_MemRealloc = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_MemReallocPPC }; + +static void stub_XML_MemFreePPC(ULONG *regarray) +{ + struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; + struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); + struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + + M68kXML_Parser p = (M68kXML_Parser)regarray[8]; + Self->XML_MemFree(p->p, (void *)regarray[9]); +} +struct EmuTrap stub_XML_MemFree = { TRAPINST, TRAPTYPE, (ULONG (*)(ULONG *))stub_XML_MemFreePPC }; + +ULONG VecTable68K[] = { + (ULONG)&stub_Open, + (ULONG)&stub_Close, + (ULONG)&stub_Expunge, + (ULONG)&stub_Reserved, + (ULONG)&stub_XML_ParserCreate, + (ULONG)&stub_XML_ParserCreateNS, + (ULONG)&stub_XML_ParserCreate_MM, + (ULONG)&stub_XML_ExternalEntityParserCreate, + (ULONG)&stub_XML_ParserFree, + (ULONG)&stub_XML_Parse, + (ULONG)&stub_XML_ParseBuffer, + (ULONG)&stub_XML_GetBuffer, + (ULONG)&stub_XML_SetStartElementHandler, + (ULONG)&stub_XML_SetEndElementHandler, + (ULONG)&stub_XML_SetElementHandler, + (ULONG)&stub_XML_SetCharacterDataHandler, + (ULONG)&stub_XML_SetProcessingInstructionHandler, + (ULONG)&stub_XML_SetCommentHandler, + (ULONG)&stub_XML_SetStartCdataSectionHandler, + (ULONG)&stub_XML_SetEndCdataSectionHandler, + (ULONG)&stub_XML_SetCdataSectionHandler, + (ULONG)&stub_XML_SetDefaultHandler, + (ULONG)&stub_XML_SetDefaultHandlerExpand, + (ULONG)&stub_XML_SetExternalEntityRefHandler, + (ULONG)&stub_XML_SetExternalEntityRefHandlerArg, + (ULONG)&stub_XML_SetUnknownEncodingHandler, + (ULONG)&stub_XML_SetStartNamespaceDeclHandler, + (ULONG)&stub_XML_SetEndNamespaceDeclHandler, + (ULONG)&stub_XML_SetNamespaceDeclHandler, + (ULONG)&stub_XML_SetXmlDeclHandler, + (ULONG)&stub_XML_SetStartDoctypeDeclHandler, + (ULONG)&stub_XML_SetEndDoctypeDeclHandler, + (ULONG)&stub_XML_SetDoctypeDeclHandler, + (ULONG)&stub_XML_SetElementDeclHandler, + (ULONG)&stub_XML_SetAttlistDeclHandler, + (ULONG)&stub_XML_SetEntityDeclHandler, + (ULONG)&stub_XML_SetUnparsedEntityDeclHandler, + (ULONG)&stub_XML_SetNotationDeclHandler, + (ULONG)&stub_XML_SetNotStandaloneHandler, + (ULONG)&stub_XML_GetErrorCode, + (ULONG)&stub_XML_ErrorString, + (ULONG)&stub_XML_GetCurrentByteIndex, + (ULONG)&stub_XML_GetCurrentLineNumber, + (ULONG)&stub_XML_GetCurrentColumnNumber, + (ULONG)&stub_XML_GetCurrentByteCount, + (ULONG)&stub_XML_GetInputContext, + (ULONG)&stub_XML_SetUserData, + (ULONG)&stub_XML_DefaultCurrent, + (ULONG)&stub_XML_UseParserAsHandlerArg, + (ULONG)&stub_XML_SetBase, + (ULONG)&stub_XML_GetBase, + (ULONG)&stub_XML_GetSpecifiedAttributeCount, + (ULONG)&stub_XML_GetIdAttributeIndex, + (ULONG)&stub_XML_SetEncoding, + (ULONG)&stub_XML_SetParamEntityParsing, + (ULONG)&stub_XML_SetReturnNSTriplet, + (ULONG)&stub_XML_ExpatVersion, + (ULONG)&stub_XML_ExpatVersionInfo, + (ULONG)&stub_XML_ParserReset, + (ULONG)&stub_XML_SetSkippedEntityHandler, + (ULONG)&stub_XML_UseForeignDTD, + (ULONG)&stub_XML_GetFeatureList, + (ULONG)&stub_XML_StopParser, + (ULONG)&stub_XML_ResumeParser, + (ULONG)&stub_XML_GetParsingStatus, + (ULONG)&stub_XML_FreeContentModel, + (ULONG)&stub_XML_MemMalloc, + (ULONG)&stub_XML_MemRealloc, + (ULONG)&stub_XML_MemFree, + (ULONG)-1 +}; diff --git a/vendor/libexpat/amiga/expat_68k.h b/vendor/libexpat/amiga/expat_68k.h new file mode 100644 index 0000000..6f1aac5 --- /dev/null +++ b/vendor/libexpat/amiga/expat_68k.h @@ -0,0 +1,94 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef EXPAT_68K_H +#define EXPAT_68K_H + +#ifndef LIBRARIES_EXPAT_H +#include +#endif + +typedef struct M68kXML_ParserStruct { + XML_Parser p; + struct ExecIFace *IExec; + void *handlerarg; + void *extenthandlerarg; + void *enchandlerarg; + void *startelementhandler; + void *endelementhandler; + void *chardatahandler; + void *procinsthandler; + void *commenthandler; + void *startcdatahandler; + void *endcdatahandler; + void *defaulthandler; + void *defaulthandlerexp; + void *extentrefhandler; + void *unknownenchandler; + void *startnamespacehandler; + void *endnamespacehandler; + void *xmldeclhandler; + void *startdoctypehandler; + void *enddoctypehandler; + void *elementdeclhandler; + void *attlistdeclhandler; + void *entitydeclhandler; + void *unparseddeclhandler; + void *notationdeclhandler; + void *notstandalonehandler; + void *skippedentityhandler; +} *M68kXML_Parser; + +/* expat_68k_handler_stubs.c */ +void _68k_startelementhandler(void *userdata, const char *name, const char **attrs); +void _68k_endelementhandler(void *userdata, const char *name); +void _68k_chardatahandler(void *userdata, const char *s, int len); +void _68k_procinsthandler(void *userdata, const char *target, const char *data); +void _68k_commenthandler(void *userdata, const char *data); +void _68k_startcdatahandler(void *userdata); +void _68k_endcdatahandler(void *userdata); +void _68k_defaulthandler(void *userdata, const char *s, int len); +void _68k_defaulthandlerexp(void *userdata, const char *s, int len); +int _68k_extentrefhandler(XML_Parser parser, const char *context, const char *base, + const char *sysid, const char *pubid); +int _68k_unknownenchandler(void *enchandlerdata, const char *name, XML_Encoding *info); +void _68k_startnamespacehandler(void *userdata, const char *prefix, const char *uri); +void _68k_endnamespacehandler(void *userdata, const char *prefix); +void _68k_xmldeclhandler(void *userdata, const char *version, const char *encoding, int standalone); +void _68k_startdoctypehandler(void *userdata, const char *doctypename, + const char *sysid, const char *pubid, int has_internal_subset); +void _68k_enddoctypehandler(void *userdata); +void _68k_elementdeclhandler(void *userdata, const char *name, XML_Content *model); +void _68k_attlistdeclhandler(void *userdata, const char *elname, const char *attname, + const char *att_type, const char *dflt, int isrequired); +void _68k_entitydeclhandler(void *userdata, const char *entityname, int is_param_entity, + const char *value, int value_length, const char *base, const char *sysid, const char *pubid, + const char *notationname); +void _68k_unparseddeclhandler(void *userdata, const char *entityname, const char *base, + const char *sysid, const char *pubid, const char *notationname); +void _68k_notationdeclhandler(void *userdata, const char *notationname, const char *base, + const char *sysid, const char *pubid); +int _68k_notstandalonehandler(void *userdata); +void _68k_skippedentityhandler(void *userdata, const char *entityname, int is_param_entity); + +#endif diff --git a/vendor/libexpat/amiga/expat_68k_handler_stubs.c b/vendor/libexpat/amiga/expat_68k_handler_stubs.c new file mode 100644 index 0000000..aca33c6 --- /dev/null +++ b/vendor/libexpat/amiga/expat_68k_handler_stubs.c @@ -0,0 +1,185 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + +#include "expat_68k.h" +#include +#include +#include + +static uint32 VARARGS68K call_68k_code (struct ExecIFace *IExec, void *code, int num_args, ...) { + uint32 res = 0; + + va_list vargs; + va_startlinear(vargs, num_args); + uint32 *args = va_getlinearva(vargs, uint32 *); + + uint8 *stack = IExec->AllocVec(4096, MEMF_SHARED); + if (stack) { + uint32 *sp = (uint32 *)(stack + 4096); + args += num_args; + while (num_args--) { + *--sp = *--args; + } + + res = IExec->EmulateTags(code, ET_StackPtr, sp, TAG_END); + IExec->FreeVec(stack); + } + + va_end(vargs); + + return res; +} + +void _68k_startelementhandler(void *userdata, const char *name, const char **attrs) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->startelementhandler, 3, p->handlerarg, name, attrs); +} + +void _68k_endelementhandler(void *userdata, const char *name) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->endelementhandler, 2, p->handlerarg, name); +} + +void _68k_chardatahandler(void *userdata, const char *s, int len) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->chardatahandler, 3, p->handlerarg, s, len); +} + +void _68k_procinsthandler(void *userdata, const char *target, const char *data) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->procinsthandler, 3, p->handlerarg, target, data); +} + +void _68k_commenthandler(void *userdata, const char *data) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->commenthandler, 2, p->handlerarg, data); +} + +void _68k_startcdatahandler(void *userdata) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->startcdatahandler, 1, p->handlerarg); +} + +void _68k_endcdatahandler(void *userdata) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->endcdatahandler, 1, p->handlerarg); +} + +void _68k_defaulthandler(void *userdata, const char *s, int len) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->defaulthandler, 3, p->handlerarg, s, len); +} + +void _68k_defaulthandlerexp(void *userdata, const char *s, int len) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->defaulthandlerexp, 3, p->handlerarg, s, len); +} + +int _68k_extentrefhandler(XML_Parser parser, const char *context, const char *base, + const char *sysid, const char *pubid) +{ + M68kXML_Parser p = XML_GetUserData(parser); + void *arg = p->extenthandlerarg; + return (int)call_68k_code(p->IExec, p->extentrefhandler, 5, arg ? arg : p, context, base, sysid, pubid); +} + +int _68k_unknownenchandler(void *enchandlerdata, const char *name, XML_Encoding *info) { + M68kXML_Parser p = enchandlerdata; + return (int)call_68k_code(p->IExec, p->unknownenchandler, 3, p->enchandlerarg, name, info); +} + +void _68k_startnamespacehandler(void *userdata, const char *prefix, const char *uri) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->startnamespacehandler, 3, p->handlerarg, prefix, uri); +} + +void _68k_endnamespacehandler(void *userdata, const char *prefix) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->endnamespacehandler, 2, p->handlerarg, prefix); +} + +void _68k_xmldeclhandler(void *userdata, const char *version, const char *encoding, int standalone) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->xmldeclhandler, 4, p->handlerarg, version, encoding, standalone); +} + +void _68k_startdoctypehandler(void *userdata, const char *doctypename, + const char *sysid, const char *pubid, int has_internal_subset) +{ + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->startdoctypehandler, 5, p->handlerarg, doctypename, sysid, pubid, has_internal_subset); +} + +void _68k_enddoctypehandler(void *userdata) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->enddoctypehandler, 1, p->handlerarg); +} + +void _68k_elementdeclhandler(void *userdata, const char *name, XML_Content *model) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->elementdeclhandler, 3, p->handlerarg, name, model); +} + +void _68k_attlistdeclhandler(void *userdata, const char *elname, const char *attname, + const char *att_type, const char *dflt, int isrequired) +{ + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->attlistdeclhandler, 6, p->handlerarg, elname, attname, att_type, dflt, isrequired); +} + +void _68k_entitydeclhandler(void *userdata, const char *entityname, int is_param_entity, + const char *value, int value_length, const char *base, const char *sysid, const char *pubid, + const char *notationname) +{ + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->entitydeclhandler, 9, p->handlerarg, entityname, is_param_entity, + value, value_length, base, sysid, pubid, notationname); +} + +void _68k_unparseddeclhandler(void *userdata, const char *entityname, const char *base, + const char *sysid, const char *pubid, const char *notationname) +{ + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->unparseddeclhandler, 6, p->handlerarg, entityname, base, sysid, pubid, notationname); +} + +void _68k_notationdeclhandler(void *userdata, const char *notationname, const char *base, + const char *sysid, const char *pubid) +{ + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->notationdeclhandler, 5, p->handlerarg, notationname, base, sysid, pubid); +} + +int _68k_notstandalonehandler(void *userdata) { + M68kXML_Parser p = userdata; + return (int)call_68k_code(p->IExec, p->notstandalonehandler, 1, p->handlerarg); +} + +void _68k_skippedentityhandler(void *userdata, const char *entityname, int is_param_entity) { + M68kXML_Parser p = userdata; + call_68k_code(p->IExec, p->skippedentityhandler, 3, p->handlerarg, entityname, is_param_entity); +} diff --git a/vendor/libexpat/amiga/expat_base.h b/vendor/libexpat/amiga/expat_base.h new file mode 100644 index 0000000..2663639 --- /dev/null +++ b/vendor/libexpat/amiga/expat_base.h @@ -0,0 +1,40 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef EXPAT_BASE_H +#define EXPAT_BASE_H + +#include +#include +#include +#include + + +struct ExpatBase { + struct Library libNode; + uint16 pad; + BPTR SegList; + struct ExecIFace *IExec; +}; + +#endif diff --git a/vendor/libexpat/amiga/expat_lib.c b/vendor/libexpat/amiga/expat_lib.c new file mode 100644 index 0000000..70e91b1 --- /dev/null +++ b/vendor/libexpat/amiga/expat_lib.c @@ -0,0 +1,247 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + +#define __NOLIBBASE__ +#define __NOGLOBALIFACE__ + +#include +#include + +#include "expat_base.h" + + +#define LIBNAME "expat.library" +#define LIBPRI 0 +#define VERSION 53 +#define REVISION 1 +#define VSTRING "expat.library 53.1 (7.8.2009)" /* dd.mm.yyyy */ + + +static const char* __attribute__((used)) verstag = "\0$VER: " VSTRING; + + +struct Interface *INewlib = 0; + + +struct ExpatBase * libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys); +uint32 libObtain (struct LibraryManagerInterface *Self); +uint32 libRelease (struct LibraryManagerInterface *Self); +struct ExpatBase *libOpen (struct LibraryManagerInterface *Self, uint32 version); +BPTR libClose (struct LibraryManagerInterface *Self); +BPTR libExpunge (struct LibraryManagerInterface *Self); +struct Interface *openInterface(struct ExecIFace *IExec, CONST_STRPTR libName, uint32 libVer); +void closeInterface(struct ExecIFace *IExec, struct Interface *iface); + + +static APTR lib_manager_vectors[] = { + libObtain, + libRelease, + NULL, + NULL, + libOpen, + libClose, + libExpunge, + NULL, + (APTR)-1, +}; + + +static struct TagItem lib_managerTags[] = { + { MIT_Name, (uint32)"__library" }, + { MIT_VectorTable, (uint32)lib_manager_vectors }, + { MIT_Version, 1 }, + { TAG_END, 0 } +}; + + +extern void *main_vectors[]; + +static struct TagItem lib_mainTags[] = { + { MIT_Name, (uint32)"main" }, + { MIT_VectorTable, (uint32)main_vectors }, + { MIT_Version, 1 }, + { TAG_END, 0 } +}; + + +static APTR libInterfaces[] = { + lib_managerTags, + lib_mainTags, + NULL +}; + + +extern void *VecTable68K[]; + +static struct TagItem libCreateTags[] = { + { CLT_DataSize, sizeof(struct ExpatBase) }, + { CLT_InitFunc, (uint32)libInit }, + { CLT_Interfaces, (uint32)libInterfaces }, + { CLT_Vector68K, (uint32)VecTable68K }, + { TAG_END, 0 } +}; + + +static struct Resident __attribute__((used)) lib_res = { + RTC_MATCHWORD, // rt_MatchWord + &lib_res, // rt_MatchTag + &lib_res+1, // rt_EndSkip + RTF_NATIVE | RTF_AUTOINIT, // rt_Flags + VERSION, // rt_Version + NT_LIBRARY, // rt_Type + LIBPRI, // rt_Pri + LIBNAME, // rt_Name + VSTRING, // rt_IdString + libCreateTags // rt_Init +}; + + +int32 _start() +{ + return RETURN_FAIL; +} + + +struct ExpatBase *libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *iexec) +{ + libBase->libNode.lib_Node.ln_Type = NT_LIBRARY; + libBase->libNode.lib_Node.ln_Pri = LIBPRI; + libBase->libNode.lib_Node.ln_Name = LIBNAME; + libBase->libNode.lib_Flags = LIBF_SUMUSED|LIBF_CHANGED; + libBase->libNode.lib_Version = VERSION; + libBase->libNode.lib_Revision = REVISION; + libBase->libNode.lib_IdString = VSTRING; + + libBase->SegList = seglist; + + libBase->IExec = iexec; + INewlib = openInterface(iexec, "newlib.library", 0); + + if ( INewlib != 0 ) { + return libBase; + } + + closeInterface(iexec, INewlib); + INewlib = 0; + + iexec->DeleteLibrary(&libBase->libNode); + + return NULL; +} + + +uint32 libObtain( struct LibraryManagerInterface *Self ) +{ + ++Self->Data.RefCount; + return Self->Data.RefCount; +} + + +uint32 libRelease( struct LibraryManagerInterface *Self ) +{ + --Self->Data.RefCount; + return Self->Data.RefCount; +} + + +struct ExpatBase *libOpen( struct LibraryManagerInterface *Self, uint32 version ) +{ + struct ExpatBase *libBase; + + libBase = (struct ExpatBase *)Self->Data.LibBase; + + ++libBase->libNode.lib_OpenCnt; + libBase->libNode.lib_Flags &= ~LIBF_DELEXP; + + return libBase; +} + + +BPTR libClose( struct LibraryManagerInterface *Self ) +{ + struct ExpatBase *libBase; + + libBase = (struct ExpatBase *)Self->Data.LibBase; + + --libBase->libNode.lib_OpenCnt; + if ( libBase->libNode.lib_OpenCnt ) { + return 0; + } + + if ( libBase->libNode.lib_Flags & LIBF_DELEXP ) { + return (BPTR)Self->LibExpunge(); + } + else { + return ZERO; + } +} + + +BPTR libExpunge( struct LibraryManagerInterface *Self ) +{ + struct ExpatBase *libBase = (struct ExpatBase *)Self->Data.LibBase; + BPTR result = ZERO; + + if (libBase->libNode.lib_OpenCnt == 0) { + libBase->IExec->Remove(&libBase->libNode.lib_Node); + + result = libBase->SegList; + + closeInterface(libBase->IExec, INewlib); + INewlib = 0; + + libBase->IExec->DeleteLibrary(&libBase->libNode); + } + else { + libBase->libNode.lib_Flags |= LIBF_DELEXP; + } + + return result; +} + + +struct Interface *openInterface(struct ExecIFace *IExec, CONST_STRPTR libName, uint32 libVer) +{ + struct Library *base = IExec->OpenLibrary(libName, libVer); + struct Interface *iface = IExec->GetInterface(base, "main", 1, 0); + if (iface == 0) { + IExec->CloseLibrary(base); + } + + return iface; +} + + +void closeInterface(struct ExecIFace *IExec, struct Interface *iface) +{ + if (iface != 0) + { + struct Library *base = iface->Data.LibBase; + IExec->DropInterface(iface); + IExec->CloseLibrary(base); + } +} diff --git a/vendor/libexpat/amiga/expat_vectors.c b/vendor/libexpat/amiga/expat_vectors.c new file mode 100644 index 0000000..cf48950 --- /dev/null +++ b/vendor/libexpat/amiga/expat_vectors.c @@ -0,0 +1,505 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#include +#include +#include +#include + +extern uint32 _Expat_Obtain(struct ExpatIFace *); +extern uint32 _Expat_Release(struct ExpatIFace *); +extern XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace *, const XML_Char * encodingName); +extern XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace *, const XML_Char * encodingName, XML_Char nsSep); +extern XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace *, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator); +extern XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace *, XML_Parser parser, const XML_Char * context, const XML_Char * encoding); +extern void _Expat_XML_ParserFree(struct ExpatIFace *, XML_Parser parser); +extern enum XML_Status _Expat_XML_Parse(struct ExpatIFace *, XML_Parser parser, const char * s, int len, int isFinal); +extern enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace *, XML_Parser parser, int len, int isFinal); +extern void * _Expat_XML_GetBuffer(struct ExpatIFace *, XML_Parser parser, int len); +extern void _Expat_XML_SetStartElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start); +extern void _Expat_XML_SetEndElementHandler(struct ExpatIFace *, XML_Parser parser, XML_EndElementHandler end); +extern void _Expat_XML_SetElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); +extern void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace *, XML_Parser parser, XML_CharacterDataHandler handler); +extern void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace *, XML_Parser parser, XML_ProcessingInstructionHandler handler); +extern void _Expat_XML_SetCommentHandler(struct ExpatIFace *, XML_Parser parser, XML_CommentHandler handler); +extern void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start); +extern void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_EndCdataSectionHandler end); +extern void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end); +extern void _Expat_XML_SetDefaultHandler(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler); +extern void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler); +extern void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace *, XML_Parser parser, XML_ExternalEntityRefHandler handler); +extern void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace *, XML_Parser parser, void * arg); +extern void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace *, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data); +extern void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start); +extern void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndNamespaceDeclHandler end); +extern void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end); +extern void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_XmlDeclHandler handler); +extern void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start); +extern void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndDoctypeDeclHandler end); +extern void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); +extern void _Expat_XML_SetElementDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_ElementDeclHandler eldecl); +extern void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_AttlistDeclHandler attdecl); +extern void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EntityDeclHandler handler); +extern void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_UnparsedEntityDeclHandler handler); +extern void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_NotationDeclHandler handler); +extern void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace *, XML_Parser parser, XML_NotStandaloneHandler handler); +extern enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace *, XML_Parser parser); +extern const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace *, enum XML_Error code); +extern long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace *, XML_Parser parser); +extern int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace *, XML_Parser parser); +extern int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace *, XML_Parser parser); +extern int _Expat_XML_GetCurrentByteCount(struct ExpatIFace *, XML_Parser parser); +extern const char * _Expat_XML_GetInputContext(struct ExpatIFace *, XML_Parser parser, int * offset, int * size); +extern void _Expat_XML_SetUserData(struct ExpatIFace *, XML_Parser parser, void * userData); +extern void _Expat_XML_DefaultCurrent(struct ExpatIFace *, XML_Parser parser); +extern void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace *, XML_Parser parser); +extern enum XML_Status _Expat_XML_SetBase(struct ExpatIFace *, XML_Parser parser, const XML_Char * base); +extern const XML_Char * _Expat_XML_GetBase(struct ExpatIFace *, XML_Parser parser); +extern int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace *, XML_Parser parser); +extern int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace *, XML_Parser parser); +extern enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding); +extern int _Expat_XML_SetParamEntityParsing(struct ExpatIFace *, XML_Parser parser, enum XML_ParamEntityParsing parsing); +extern void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace *, XML_Parser parser, int do_nst); +extern const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace *); +extern XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace *); +extern XML_Bool _Expat_XML_ParserReset(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding); +extern void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace *, XML_Parser parser, XML_SkippedEntityHandler handler); +extern enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace *, XML_Parser parser, XML_Bool useDTD); +extern const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace *); +extern enum XML_Status _Expat_XML_StopParser(struct ExpatIFace *, XML_Parser parser, XML_Bool resumable); +extern enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace *, XML_Parser parser); +extern void _Expat_XML_GetParsingStatus(struct ExpatIFace *, XML_Parser parser, XML_ParsingStatus * status); +extern void _Expat_XML_FreeContentModel(struct ExpatIFace *, XML_Parser parser, XML_Content * model); +extern void * _Expat_XML_MemMalloc(struct ExpatIFace *, XML_Parser parser, size_t size); +extern void * _Expat_XML_MemRealloc(struct ExpatIFace *, XML_Parser parser, void * ptr, size_t size); +extern void _Expat_XML_MemFree(struct ExpatIFace *, XML_Parser parser, void * ptr); + + +CONST APTR main_vectors[] = +{ + _Expat_Obtain, + _Expat_Release, + NULL, + NULL, + _Expat_XML_ParserCreate, + _Expat_XML_ParserCreateNS, + _Expat_XML_ParserCreate_MM, + _Expat_XML_ExternalEntityParserCreate, + _Expat_XML_ParserFree, + _Expat_XML_Parse, + _Expat_XML_ParseBuffer, + _Expat_XML_GetBuffer, + _Expat_XML_SetStartElementHandler, + _Expat_XML_SetEndElementHandler, + _Expat_XML_SetElementHandler, + _Expat_XML_SetCharacterDataHandler, + _Expat_XML_SetProcessingInstructionHandler, + _Expat_XML_SetCommentHandler, + _Expat_XML_SetStartCdataSectionHandler, + _Expat_XML_SetEndCdataSectionHandler, + _Expat_XML_SetCdataSectionHandler, + _Expat_XML_SetDefaultHandler, + _Expat_XML_SetDefaultHandlerExpand, + _Expat_XML_SetExternalEntityRefHandler, + _Expat_XML_SetExternalEntityRefHandlerArg, + _Expat_XML_SetUnknownEncodingHandler, + _Expat_XML_SetStartNamespaceDeclHandler, + _Expat_XML_SetEndNamespaceDeclHandler, + _Expat_XML_SetNamespaceDeclHandler, + _Expat_XML_SetXmlDeclHandler, + _Expat_XML_SetStartDoctypeDeclHandler, + _Expat_XML_SetEndDoctypeDeclHandler, + _Expat_XML_SetDoctypeDeclHandler, + _Expat_XML_SetElementDeclHandler, + _Expat_XML_SetAttlistDeclHandler, + _Expat_XML_SetEntityDeclHandler, + _Expat_XML_SetUnparsedEntityDeclHandler, + _Expat_XML_SetNotationDeclHandler, + _Expat_XML_SetNotStandaloneHandler, + _Expat_XML_GetErrorCode, + _Expat_XML_ErrorString, + _Expat_XML_GetCurrentByteIndex, + _Expat_XML_GetCurrentLineNumber, + _Expat_XML_GetCurrentColumnNumber, + _Expat_XML_GetCurrentByteCount, + _Expat_XML_GetInputContext, + _Expat_XML_SetUserData, + _Expat_XML_DefaultCurrent, + _Expat_XML_UseParserAsHandlerArg, + _Expat_XML_SetBase, + _Expat_XML_GetBase, + _Expat_XML_GetSpecifiedAttributeCount, + _Expat_XML_GetIdAttributeIndex, + _Expat_XML_SetEncoding, + _Expat_XML_SetParamEntityParsing, + _Expat_XML_SetReturnNSTriplet, + _Expat_XML_ExpatVersion, + _Expat_XML_ExpatVersionInfo, + _Expat_XML_ParserReset, + _Expat_XML_SetSkippedEntityHandler, + _Expat_XML_UseForeignDTD, + _Expat_XML_GetFeatureList, + _Expat_XML_StopParser, + _Expat_XML_ResumeParser, + _Expat_XML_GetParsingStatus, + _Expat_XML_FreeContentModel, + _Expat_XML_MemMalloc, + _Expat_XML_MemRealloc, + _Expat_XML_MemFree, + (APTR)-1 +}; + +uint32 _Expat_Obtain(struct ExpatIFace *Self) +{ + return ++Self->Data.RefCount; +} + +uint32 _Expat_Release(struct ExpatIFace *Self) +{ + return --Self->Data.RefCount; +} + +XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace * Self, const XML_Char *encoding) +{ + return XML_ParserCreate(encoding); +} + +XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace * Self, const XML_Char *encoding, XML_Char nsSep) +{ + return XML_ParserCreateNS(encoding, nsSep); +} + +XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace * Self, const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator) +{ + return XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator); +} + +XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *context, const XML_Char *encoding) +{ + return XML_ExternalEntityParserCreate(parser, context, encoding); +} + +void _Expat_XML_ParserFree(struct ExpatIFace *Self, XML_Parser parser) +{ + XML_ParserFree(parser); +} + +enum XML_Status _Expat_XML_Parse(struct ExpatIFace * Self, XML_Parser parser, const char * s, int len, int isFinal) +{ + return XML_Parse(parser, s, len, isFinal); +} + +enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace * Self, XML_Parser parser, int len, int isFinal) +{ + return XML_ParseBuffer(parser, len, isFinal); +} + +void * _Expat_XML_GetBuffer(struct ExpatIFace * Self, XML_Parser parser, int len) +{ + return XML_GetBuffer(parser, len); +} + +void _Expat_XML_SetStartElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start) +{ + XML_SetStartElementHandler(parser, start); +} + +void _Expat_XML_SetEndElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndElementHandler end) +{ + XML_SetEndElementHandler(parser, end); +} + +void _Expat_XML_SetElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end) +{ + XML_SetElementHandler(parser, start, end); +} + +void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CharacterDataHandler handler) +{ + XML_SetCharacterDataHandler(parser, handler); +} + +void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ProcessingInstructionHandler handler) +{ + XML_SetProcessingInstructionHandler(parser, handler); +} + +void _Expat_XML_SetCommentHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CommentHandler handler) +{ + XML_SetCommentHandler(parser, handler); +} + +void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start) +{ + XML_SetStartCdataSectionHandler(parser, start); +} + +void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndCdataSectionHandler end) +{ + XML_SetEndCdataSectionHandler(parser, end); +} + +void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end) +{ + XML_SetCdataSectionHandler(parser, start, end); +} + +void _Expat_XML_SetDefaultHandler(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler) +{ + XML_SetDefaultHandler(parser, handler); +} + +void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler) +{ + XML_SetDefaultHandlerExpand(parser, handler); +} + +void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ExternalEntityRefHandler handler) +{ + XML_SetExternalEntityRefHandler(parser, handler); +} + +void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace * Self, XML_Parser parser, void * arg) +{ + XML_SetExternalEntityRefHandlerArg(parser, arg); +} + +void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data) +{ + XML_SetUnknownEncodingHandler(parser, handler, data); +} + +void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start) +{ + XML_SetStartNamespaceDeclHandler(parser, start); +} + +void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndNamespaceDeclHandler end) +{ + XML_SetEndNamespaceDeclHandler(parser, end); +} + +void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end) +{ + XML_SetNamespaceDeclHandler(parser, start, end); +} + +void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_XmlDeclHandler handler) +{ + XML_SetXmlDeclHandler(parser, handler); +} + +void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start) +{ + XML_SetStartDoctypeDeclHandler(parser, start); +} + +void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndDoctypeDeclHandler end) +{ + XML_SetEndDoctypeDeclHandler(parser, end); +} + +void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end) +{ + XML_SetDoctypeDeclHandler(parser, start, end); +} + +void _Expat_XML_SetElementDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ElementDeclHandler eldecl) +{ + XML_SetElementDeclHandler(parser, eldecl); +} + +void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_AttlistDeclHandler attdecl) +{ + XML_SetAttlistDeclHandler(parser, attdecl); +} + +void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EntityDeclHandler handler) +{ + XML_SetEntityDeclHandler(parser, handler); +} + +void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler) +{ + XML_SetUnparsedEntityDeclHandler(parser, handler); +} + +void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotationDeclHandler handler) +{ + XML_SetNotationDeclHandler(parser, handler); +} + +void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotStandaloneHandler handler) +{ + XML_SetNotStandaloneHandler(parser, handler); +} + +enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetErrorCode(parser); +} + +const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace * Self, enum XML_Error code) +{ + return XML_ErrorString(code); +} + +long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetCurrentByteIndex(parser); +} + +int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetCurrentLineNumber(parser); +} + +int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetCurrentColumnNumber(parser); +} + +int _Expat_XML_GetCurrentByteCount(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetCurrentByteCount(parser); +} + +const char * _Expat_XML_GetInputContext(struct ExpatIFace * Self, XML_Parser parser, int * offset, int * size) +{ + return XML_GetInputContext(parser, offset, size); +} + +void _Expat_XML_SetUserData(struct ExpatIFace * Self, XML_Parser parser, void * userData) +{ + XML_SetUserData(parser, userData); +} + +void _Expat_XML_DefaultCurrent(struct ExpatIFace * Self, XML_Parser parser) +{ + XML_DefaultCurrent(parser); +} + +void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace * Self, XML_Parser parser) +{ + XML_UseParserAsHandlerArg(parser); +} + +enum XML_Status _Expat_XML_SetBase(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *p) +{ + return XML_SetBase(parser, p); +} + +const XML_Char * _Expat_XML_GetBase(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetBase(parser); +} + +int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetSpecifiedAttributeCount(parser); +} + +int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_GetIdAttributeIndex(parser); +} + +enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding) +{ + return XML_SetEncoding(parser, encoding); +} + +int _Expat_XML_SetParamEntityParsing(struct ExpatIFace * Self, XML_Parser parser, enum XML_ParamEntityParsing parsing) +{ + return XML_SetParamEntityParsing(parser, parsing); +} + +void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace * Self, XML_Parser parser, int do_nst) +{ + XML_SetReturnNSTriplet(parser, do_nst); +} + +const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace * Self) +{ + return XML_ExpatVersion(); +} + +XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace * Self) +{ + return XML_ExpatVersionInfo(); +} + +XML_Bool _Expat_XML_ParserReset(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding) +{ + return XML_ParserReset(parser, encoding); +} + +void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace * Self, XML_Parser parser, XML_SkippedEntityHandler handler) +{ + XML_SetSkippedEntityHandler(parser, handler); +} + +enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace * Self, XML_Parser parser, XML_Bool useDTD) +{ + return XML_UseForeignDTD(parser, useDTD); +} + +const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace * Self) +{ + return XML_GetFeatureList(); +} + +enum XML_Status _Expat_XML_StopParser(struct ExpatIFace * Self, XML_Parser parser, XML_Bool resumable) +{ + return XML_StopParser(parser, resumable); +} + +enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace * Self, XML_Parser parser) +{ + return XML_ResumeParser(parser); +} + +void _Expat_XML_GetParsingStatus(struct ExpatIFace * Self, XML_Parser parser, XML_ParsingStatus * status) +{ + XML_GetParsingStatus(parser, status); +} + +void _Expat_XML_FreeContentModel(struct ExpatIFace * Self, XML_Parser parser, XML_Content * model) +{ + XML_FreeContentModel(parser, model); +} + +void * _Expat_XML_MemMalloc(struct ExpatIFace * Self, XML_Parser parser, size_t size) +{ + return XML_MemMalloc(parser, size); +} + +void * _Expat_XML_MemRealloc(struct ExpatIFace * Self, XML_Parser parser, void * ptr, size_t size) +{ + XML_MemRealloc(parser, ptr, size); +} + +void _Expat_XML_MemFree(struct ExpatIFace * Self, XML_Parser parser, void * ptr) +{ + XML_MemFree(parser, ptr); +} diff --git a/vendor/libexpat/amiga/include/inline4/expat.h b/vendor/libexpat/amiga/include/inline4/expat.h new file mode 100644 index 0000000..1e3105d --- /dev/null +++ b/vendor/libexpat/amiga/include/inline4/expat.h @@ -0,0 +1,94 @@ +#ifndef INLINE4_EXPAT_H +#define INLINE4_EXPAT_H + +/* +** This file was auto generated by idltool 51.6. +** +** It provides compatibility to OS3 style library +** calls by substituting functions. +** +** Do not edit manually. +*/ + +#ifndef EXEC_TYPES_H +#include +#endif +#ifndef EXEC_EXEC_H +#include +#endif +#ifndef EXEC_INTERFACES_H +#include +#endif + +#ifndef LIBRARIES_EXPAT_H +#include +#endif + +/* Inline macros for Interface "main" */ +#define XML_ParserCreate(encodingName) IExpat->XML_ParserCreate(encodingName) +#define XML_ParserCreateNS(encodingName, nsSep) IExpat->XML_ParserCreateNS(encodingName, nsSep) +#define XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator) IExpat->XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator) +#define XML_ExternalEntityParserCreate(parser, context, encoding) IExpat->XML_ExternalEntityParserCreate(parser, context, encoding) +#define XML_ParserFree(parser) IExpat->XML_ParserFree(parser) +#define XML_Parse(parser, s, len, isFinal) IExpat->XML_Parse(parser, s, len, isFinal) +#define XML_ParseBuffer(parser, len, isFinal) IExpat->XML_ParseBuffer(parser, len, isFinal) +#define XML_GetBuffer(parser, len) IExpat->XML_GetBuffer(parser, len) +#define XML_SetStartElementHandler(parser, start) IExpat->XML_SetStartElementHandler(parser, start) +#define XML_SetEndElementHandler(parser, end) IExpat->XML_SetEndElementHandler(parser, end) +#define XML_SetElementHandler(parser, start, end) IExpat->XML_SetElementHandler(parser, start, end) +#define XML_SetCharacterDataHandler(parser, handler) IExpat->XML_SetCharacterDataHandler(parser, handler) +#define XML_SetProcessingInstructionHandler(parser, handler) IExpat->XML_SetProcessingInstructionHandler(parser, handler) +#define XML_SetCommentHandler(parser, handler) IExpat->XML_SetCommentHandler(parser, handler) +#define XML_SetStartCdataSectionHandler(parser, start) IExpat->XML_SetStartCdataSectionHandler(parser, start) +#define XML_SetEndCdataSectionHandler(parser, end) IExpat->XML_SetEndCdataSectionHandler(parser, end) +#define XML_SetCdataSectionHandler(parser, start, end) IExpat->XML_SetCdataSectionHandler(parser, start, end) +#define XML_SetDefaultHandler(parser, handler) IExpat->XML_SetDefaultHandler(parser, handler) +#define XML_SetDefaultHandlerExpand(parser, handler) IExpat->XML_SetDefaultHandlerExpand(parser, handler) +#define XML_SetExternalEntityRefHandler(parser, handler) IExpat->XML_SetExternalEntityRefHandler(parser, handler) +#define XML_SetExternalEntityRefHandlerArg(parser, arg) IExpat->XML_SetExternalEntityRefHandlerArg(parser, arg) +#define XML_SetUnknownEncodingHandler(parser, handler, data) IExpat->XML_SetUnknownEncodingHandler(parser, handler, data) +#define XML_SetStartNamespaceDeclHandler(parser, start) IExpat->XML_SetStartNamespaceDeclHandler(parser, start) +#define XML_SetEndNamespaceDeclHandler(parser, end) IExpat->XML_SetEndNamespaceDeclHandler(parser, end) +#define XML_SetNamespaceDeclHandler(parser, start, end) IExpat->XML_SetNamespaceDeclHandler(parser, start, end) +#define XML_SetXmlDeclHandler(parser, handler) IExpat->XML_SetXmlDeclHandler(parser, handler) +#define XML_SetStartDoctypeDeclHandler(parser, start) IExpat->XML_SetStartDoctypeDeclHandler(parser, start) +#define XML_SetEndDoctypeDeclHandler(parser, end) IExpat->XML_SetEndDoctypeDeclHandler(parser, end) +#define XML_SetDoctypeDeclHandler(parser, start, end) IExpat->XML_SetDoctypeDeclHandler(parser, start, end) +#define XML_SetElementDeclHandler(parser, eldecl) IExpat->XML_SetElementDeclHandler(parser, eldecl) +#define XML_SetAttlistDeclHandler(parser, attdecl) IExpat->XML_SetAttlistDeclHandler(parser, attdecl) +#define XML_SetEntityDeclHandler(parser, handler) IExpat->XML_SetEntityDeclHandler(parser, handler) +#define XML_SetUnparsedEntityDeclHandler(parser, handler) IExpat->XML_SetUnparsedEntityDeclHandler(parser, handler) +#define XML_SetNotationDeclHandler(parser, handler) IExpat->XML_SetNotationDeclHandler(parser, handler) +#define XML_SetNotStandaloneHandler(parser, handler) IExpat->XML_SetNotStandaloneHandler(parser, handler) +#define XML_GetErrorCode(parser) IExpat->XML_GetErrorCode(parser) +#define XML_ErrorString(code) IExpat->XML_ErrorString(code) +#define XML_GetCurrentByteIndex(parser) IExpat->XML_GetCurrentByteIndex(parser) +#define XML_GetCurrentLineNumber(parser) IExpat->XML_GetCurrentLineNumber(parser) +#define XML_GetCurrentColumnNumber(parser) IExpat->XML_GetCurrentColumnNumber(parser) +#define XML_GetCurrentByteCount(parser) IExpat->XML_GetCurrentByteCount(parser) +#define XML_GetInputContext(parser, offset, size) IExpat->XML_GetInputContext(parser, offset, size) +#define XML_SetUserData(parser, userData) IExpat->XML_SetUserData(parser, userData) +#define XML_DefaultCurrent(parser) IExpat->XML_DefaultCurrent(parser) +#define XML_UseParserAsHandlerArg(parser) IExpat->XML_UseParserAsHandlerArg(parser) +#define XML_SetBase(parser, base) IExpat->XML_SetBase(parser, base) +#define XML_GetBase(parser) IExpat->XML_GetBase(parser) +#define XML_GetSpecifiedAttributeCount(parser) IExpat->XML_GetSpecifiedAttributeCount(parser) +#define XML_GetIdAttributeIndex(parser) IExpat->XML_GetIdAttributeIndex(parser) +#define XML_SetEncoding(parser, encoding) IExpat->XML_SetEncoding(parser, encoding) +#define XML_SetParamEntityParsing(parser, parsing) IExpat->XML_SetParamEntityParsing(parser, parsing) +#define XML_SetReturnNSTriplet(parser, do_nst) IExpat->XML_SetReturnNSTriplet(parser, do_nst) +#define XML_ExpatVersion() IExpat->XML_ExpatVersion() +#define XML_ExpatVersionInfo() IExpat->XML_ExpatVersionInfo() +#define XML_ParserReset(parser, encoding) IExpat->XML_ParserReset(parser, encoding) +#define XML_SetSkippedEntityHandler(parser, handler) IExpat->XML_SetSkippedEntityHandler(parser, handler) +#define XML_UseForeignDTD(parser, useDTD) IExpat->XML_UseForeignDTD(parser, useDTD) +#define XML_GetFeatureList() IExpat->XML_GetFeatureList() +#define XML_StopParser(parser, resumable) IExpat->XML_StopParser(parser, resumable) +#define XML_ResumeParser(parser) IExpat->XML_ResumeParser(parser) +#define XML_GetParsingStatus(parser, status) IExpat->XML_GetParsingStatus(parser, status) +#define XML_FreeContentModel(parser, model) IExpat->XML_FreeContentModel(parser, model) +#define XML_MemMalloc(parser, size) IExpat->XML_MemMalloc(parser, size) +#define XML_MemRealloc(parser, ptr, size) IExpat->XML_MemRealloc(parser, ptr, size) +#define XML_MemFree(parser, ptr) IExpat->XML_MemFree(parser, ptr) + +#endif /* INLINE4_EXPAT_H */ diff --git a/vendor/libexpat/amiga/include/interfaces/expat.h b/vendor/libexpat/amiga/include/interfaces/expat.h new file mode 100644 index 0000000..e9bdf4a --- /dev/null +++ b/vendor/libexpat/amiga/include/interfaces/expat.h @@ -0,0 +1,98 @@ +#ifndef EXPAT_INTERFACE_DEF_H +#define EXPAT_INTERFACE_DEF_H + +/* +** This file was machine generated by idltool 51.6. +** Do not edit +*/ + +#ifndef EXEC_TYPES_H +#include +#endif +#ifndef EXEC_EXEC_H +#include +#endif +#ifndef EXEC_INTERFACES_H +#include +#endif + +#ifndef LIBRARIES_EXPAT_H +#include +#endif + +struct ExpatIFace +{ + struct InterfaceData Data; + + uint32 APICALL (*Obtain)(struct ExpatIFace *Self); + uint32 APICALL (*Release)(struct ExpatIFace *Self); + void APICALL (*Expunge)(struct ExpatIFace *Self); + struct Interface * APICALL (*Clone)(struct ExpatIFace *Self); + XML_Parser APICALL (*XML_ParserCreate)(struct ExpatIFace *Self, const XML_Char * encodingName); + XML_Parser APICALL (*XML_ParserCreateNS)(struct ExpatIFace *Self, const XML_Char * encodingName, XML_Char nsSep); + XML_Parser APICALL (*XML_ParserCreate_MM)(struct ExpatIFace *Self, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator); + XML_Parser APICALL (*XML_ExternalEntityParserCreate)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * context, const XML_Char * encoding); + void APICALL (*XML_ParserFree)(struct ExpatIFace *Self, XML_Parser parser); + enum XML_Status APICALL (*XML_Parse)(struct ExpatIFace *Self, XML_Parser parser, const char * s, int len, int isFinal); + enum XML_Status APICALL (*XML_ParseBuffer)(struct ExpatIFace *Self, XML_Parser parser, int len, int isFinal); + void * APICALL (*XML_GetBuffer)(struct ExpatIFace *Self, XML_Parser parser, int len); + void APICALL (*XML_SetStartElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartElementHandler start); + void APICALL (*XML_SetEndElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndElementHandler end); + void APICALL (*XML_SetElementHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); + void APICALL (*XML_SetCharacterDataHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_CharacterDataHandler handler); + void APICALL (*XML_SetProcessingInstructionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ProcessingInstructionHandler handler); + void APICALL (*XML_SetCommentHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_CommentHandler handler); + void APICALL (*XML_SetStartCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartCdataSectionHandler start); + void APICALL (*XML_SetEndCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndCdataSectionHandler end); + void APICALL (*XML_SetCdataSectionHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end); + void APICALL (*XML_SetDefaultHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_DefaultHandler handler); + void APICALL (*XML_SetDefaultHandlerExpand)(struct ExpatIFace *Self, XML_Parser parser, XML_DefaultHandler handler); + void APICALL (*XML_SetExternalEntityRefHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ExternalEntityRefHandler handler); + void APICALL (*XML_SetExternalEntityRefHandlerArg)(struct ExpatIFace *Self, XML_Parser parser, void * arg); + void APICALL (*XML_SetUnknownEncodingHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data); + void APICALL (*XML_SetStartNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartNamespaceDeclHandler start); + void APICALL (*XML_SetEndNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndNamespaceDeclHandler end); + void APICALL (*XML_SetNamespaceDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end); + void APICALL (*XML_SetXmlDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_XmlDeclHandler handler); + void APICALL (*XML_SetStartDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartDoctypeDeclHandler start); + void APICALL (*XML_SetEndDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EndDoctypeDeclHandler end); + void APICALL (*XML_SetDoctypeDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); + void APICALL (*XML_SetElementDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_ElementDeclHandler eldecl); + void APICALL (*XML_SetAttlistDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_AttlistDeclHandler attdecl); + void APICALL (*XML_SetEntityDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_EntityDeclHandler handler); + void APICALL (*XML_SetUnparsedEntityDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler); + void APICALL (*XML_SetNotationDeclHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_NotationDeclHandler handler); + void APICALL (*XML_SetNotStandaloneHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_NotStandaloneHandler handler); + enum XML_Error APICALL (*XML_GetErrorCode)(struct ExpatIFace *Self, XML_Parser parser); + const XML_LChar * APICALL (*XML_ErrorString)(struct ExpatIFace *Self, enum XML_Error code); + long APICALL (*XML_GetCurrentByteIndex)(struct ExpatIFace *Self, XML_Parser parser); + int APICALL (*XML_GetCurrentLineNumber)(struct ExpatIFace *Self, XML_Parser parser); + int APICALL (*XML_GetCurrentColumnNumber)(struct ExpatIFace *Self, XML_Parser parser); + int APICALL (*XML_GetCurrentByteCount)(struct ExpatIFace *Self, XML_Parser parser); + const char * APICALL (*XML_GetInputContext)(struct ExpatIFace *Self, XML_Parser parser, int * offset, int * size); + void APICALL (*XML_SetUserData)(struct ExpatIFace *Self, XML_Parser parser, void * userData); + void APICALL (*XML_DefaultCurrent)(struct ExpatIFace *Self, XML_Parser parser); + void APICALL (*XML_UseParserAsHandlerArg)(struct ExpatIFace *Self, XML_Parser parser); + enum XML_Status APICALL (*XML_SetBase)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * base); + const XML_Char * APICALL (*XML_GetBase)(struct ExpatIFace *Self, XML_Parser parser); + int APICALL (*XML_GetSpecifiedAttributeCount)(struct ExpatIFace *Self, XML_Parser parser); + int APICALL (*XML_GetIdAttributeIndex)(struct ExpatIFace *Self, XML_Parser parser); + enum XML_Status APICALL (*XML_SetEncoding)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * encoding); + int APICALL (*XML_SetParamEntityParsing)(struct ExpatIFace *Self, XML_Parser parser, enum XML_ParamEntityParsing parsing); + void APICALL (*XML_SetReturnNSTriplet)(struct ExpatIFace *Self, XML_Parser parser, int do_nst); + const XML_LChar * APICALL (*XML_ExpatVersion)(struct ExpatIFace *Self); + XML_Expat_Version APICALL (*XML_ExpatVersionInfo)(struct ExpatIFace *Self); + XML_Bool APICALL (*XML_ParserReset)(struct ExpatIFace *Self, XML_Parser parser, const XML_Char * encoding); + void APICALL (*XML_SetSkippedEntityHandler)(struct ExpatIFace *Self, XML_Parser parser, XML_SkippedEntityHandler handler); + enum XML_Error APICALL (*XML_UseForeignDTD)(struct ExpatIFace *Self, XML_Parser parser, XML_Bool useDTD); + const XML_Feature * APICALL (*XML_GetFeatureList)(struct ExpatIFace *Self); + enum XML_Status APICALL (*XML_StopParser)(struct ExpatIFace *Self, XML_Parser parser, XML_Bool resumable); + enum XML_Status APICALL (*XML_ResumeParser)(struct ExpatIFace *Self, XML_Parser parser); + void APICALL (*XML_GetParsingStatus)(struct ExpatIFace *Self, XML_Parser parser, XML_ParsingStatus * status); + void APICALL (*XML_FreeContentModel)(struct ExpatIFace *Self, XML_Parser parser, XML_Content * model); + void * APICALL (*XML_MemMalloc)(struct ExpatIFace *Self, XML_Parser parser, size_t size); + void * APICALL (*XML_MemRealloc)(struct ExpatIFace *Self, XML_Parser parser, void * ptr, size_t size); + void APICALL (*XML_MemFree)(struct ExpatIFace *Self, XML_Parser parser, void * ptr); +}; + +#endif /* EXPAT_INTERFACE_DEF_H */ diff --git a/vendor/libexpat/amiga/include/libraries/expat.h b/vendor/libexpat/amiga/include/libraries/expat.h new file mode 100644 index 0000000..1b57387 --- /dev/null +++ b/vendor/libexpat/amiga/include/libraries/expat.h @@ -0,0 +1,566 @@ +#ifndef LIBRARIES_EXPAT_H +#define LIBRARIES_EXPAT_H + +/* +** Copyright (c) 2001-2007 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + + +/****************************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __GNUC__ + #ifdef __PPC__ + #pragma pack(2) + #endif +#elif defined(__VBCC__) + #pragma amiga-align +#endif + +/****************************************************************************/ + + +#include + +#ifndef XMLCALL +#define XMLCALL +#endif + +typedef char XML_Char; +typedef char XML_LChar; +typedef long XML_Index; +typedef unsigned long XML_Size; + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool) 1) +#define XML_FALSE ((XML_Bool) 0) + +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1, +#define XML_STATUS_OK XML_STATUS_OK + XML_STATUS_SUSPENDED = 2, +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + XML_ERROR_UNBOUND_PREFIX, + XML_ERROR_UNDECLARING_PREFIX, + XML_ERROR_INCOMPLETE_PE, + XML_ERROR_XML_DECL, + XML_ERROR_TEXT_DECL, + XML_ERROR_PUBLICID, + XML_ERROR_SUSPENDED, + XML_ERROR_NOT_SUSPENDED, + XML_ERROR_ABORTED, + XML_ERROR_FINISHED, + XML_ERROR_SUSPEND_PE, + XML_ERROR_RESERVED_PREFIX_XML, + XML_ERROR_RESERVED_PREFIX_XMLNS, + XML_ERROR_RESERVED_NAMESPACE_URI +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char * name; + unsigned int numchildren; + XML_Content * children; +}; + + +typedef void (*XML_ElementDeclHandler) (void *userData, + const XML_Char *name, + XML_Content *model); + +void +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl); + +typedef void (*XML_AttlistDeclHandler) ( + void *userData, + const XML_Char *elname, + const XML_Char *attname, + const XML_Char *att_type, + const XML_Char *dflt, + int isrequired); + +void +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl); + +typedef void (*XML_XmlDeclHandler) (void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +void +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl); + + +typedef struct { + void *(*malloc_fcn)(size_t size); + void *(*realloc_fcn)(void *ptr, size_t size); + void (*free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +XML_Parser +XML_ParserCreate(const XML_Char *encoding); + +XML_Parser +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + + +XML_Parser +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +XML_Bool +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +typedef void (*XML_StartElementHandler) (void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void (*XML_EndElementHandler) (void *userData, + const XML_Char *name); + + +typedef void (*XML_CharacterDataHandler) (void *userData, + const XML_Char *s, + int len); + +typedef void (*XML_ProcessingInstructionHandler) ( + void *userData, + const XML_Char *target, + const XML_Char *data); + +typedef void (*XML_CommentHandler) (void *userData, + const XML_Char *data); + +typedef void (*XML_StartCdataSectionHandler) (void *userData); +typedef void (*XML_EndCdataSectionHandler) (void *userData); + +typedef void (*XML_DefaultHandler) (void *userData, + const XML_Char *s, + int len); + +typedef void (*XML_StartDoctypeDeclHandler) ( + void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +typedef void (*XML_EndDoctypeDeclHandler)(void *userData); + +typedef void (*XML_EntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity, + const XML_Char *value, + int value_length, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +void +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler); + +typedef void (*XML_UnparsedEntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +typedef void (*XML_NotationDeclHandler) ( + void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +typedef void (*XML_StartNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void (*XML_EndNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix); + +typedef int (*XML_NotStandaloneHandler) (void *userData); + +typedef int (*XML_ExternalEntityRefHandler) ( + XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +typedef void (*XML_SkippedEntityHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +typedef struct { + int map[256]; + void *data; + int (*convert)(void *data, const char *s); + void (*release)(void *data); +} XML_Encoding; + +typedef int (*XML_UnknownEncodingHandler) ( + void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +void +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end); + +void +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler handler); + +void +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler handler); + +void +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +void +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +void +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler); + +void +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +void +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +void +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +void +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler); + +void +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler); + +void +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +void +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +void +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end); + +void +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +void +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler); + +void +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +void +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +void +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +void +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +void +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +void +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, + void *arg); + +void +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +void +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +void +XML_DefaultCurrent(XML_Parser parser); + +void +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +void +XML_SetUserData(XML_Parser parser, void *userData); + +#define XML_GetUserData(parser) (*(void **)(parser)) + +enum XML_Status +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +void +XML_UseParserAsHandlerArg(XML_Parser parser); + +enum XML_Error +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + + +enum XML_Status +XML_SetBase(XML_Parser parser, const XML_Char *base); + +const XML_Char * +XML_GetBase(XML_Parser parser); + +int +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +int +XML_GetIdAttributeIndex(XML_Parser parser); + +enum XML_Status +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +void * +XML_GetBuffer(XML_Parser parser, int len); + +enum XML_Status +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +enum XML_Status +XML_StopParser(XML_Parser parser, XML_Bool resumable); + +enum XML_Status +XML_ResumeParser(XML_Parser parser); + +enum XML_Parsing { + XML_INITIALIZED, + XML_PARSING, + XML_FINISHED, + XML_SUSPENDED +}; + +typedef struct { + enum XML_Parsing parsing; + XML_Bool finalBuffer; +} XML_ParsingStatus; + +void +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); + +XML_Parser +XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +int +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +enum XML_Error +XML_GetErrorCode(XML_Parser parser); + +int XML_GetCurrentLineNumber(XML_Parser parser); +int XML_GetCurrentColumnNumber(XML_Parser parser); +long XML_GetCurrentByteIndex(XML_Parser parser); + +int +XML_GetCurrentByteCount(XML_Parser parser); + +const char * +XML_GetInputContext(XML_Parser parser, + int *offset, + int *size); + +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +void +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +void * +XML_MemMalloc(XML_Parser parser, size_t size); + +void * +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +void +XML_MemFree(XML_Parser parser, void *ptr); + +void +XML_ParserFree(XML_Parser parser); + +const XML_LChar * +XML_ErrorString(enum XML_Error code); + +const XML_LChar * +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +XML_Expat_Version +XML_ExpatVersionInfo(void); + +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR, + XML_FEATURE_NS, + XML_FEATURE_LARGE_SIZE +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +const XML_Feature * +XML_GetFeatureList(void); + + +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 0 +#define XML_MICRO_VERSION 1 + + +/****************************************************************************/ + +#ifdef __GNUC__ + #ifdef __PPC__ + #pragma pack() + #endif +#elif defined(__VBCC__) + #pragma default-align +#endif + +#ifdef __cplusplus +} +#endif + +/****************************************************************************/ + +#endif /* EXPAT_EXPAT_H */ diff --git a/vendor/libexpat/amiga/include/proto/expat.h b/vendor/libexpat/amiga/include/proto/expat.h new file mode 100644 index 0000000..90bf62c --- /dev/null +++ b/vendor/libexpat/amiga/include/proto/expat.h @@ -0,0 +1,52 @@ +#ifndef PROTO_EXPAT_H +#define PROTO_EXPAT_H + +#ifndef LIBRARIES_EXPAT_H +#include +#endif + +/****************************************************************************/ + +#ifndef __NOLIBBASE__ + #ifndef __USE_BASETYPE__ + extern struct Library * ExpatBase; + #else + extern struct Library * ExpatBase; + #endif /* __USE_BASETYPE__ */ +#endif /* __NOLIBBASE__ */ + +/****************************************************************************/ + +#ifdef __amigaos4__ + #include + #ifdef __USE_INLINE__ + #include + #endif /* __USE_INLINE__ */ + #ifndef CLIB_EXPAT_PROTOS_H + #define CLIB_EXPAT_PROTOS_H 1 + #endif /* CLIB_EXPAT_PROTOS_H */ + #ifndef __NOGLOBALIFACE__ + extern struct ExpatIFace *IExpat; + #endif /* __NOGLOBALIFACE__ */ +#else /* __amigaos4__ */ + #ifndef CLIB_EXPAT_PROTOS_H + #include + #endif /* CLIB_EXPAT_PROTOS_H */ + #if defined(__GNUC__) + #ifndef __PPC__ + #include + #else + #include + #endif /* __PPC__ */ + #elif defined(__VBCC__) + #ifndef __PPC__ + #include + #endif /* __PPC__ */ + #else + #include + #endif /* __GNUC__ */ +#endif /* __amigaos4__ */ + +/****************************************************************************/ + +#endif /* PROTO_EXPAT_H */ diff --git a/vendor/libexpat/amiga/launch.c b/vendor/libexpat/amiga/launch.c new file mode 100644 index 0000000..20b069c --- /dev/null +++ b/vendor/libexpat/amiga/launch.c @@ -0,0 +1,57 @@ +/* +** Copyright (c) 2001-2009 Expat maintainers. +** +** Permission is hereby granted, free of charge, to any person obtaining +** a copy of this software and associated documentation files (the +** "Software"), to deal in the Software without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Software, and to +** permit persons to whom the Software is furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + +#include +#include + +struct Library* ExpatBase = 0; +struct ExpatIFace* IExpat = 0; + + +void setup() __attribute__((constructor)); +void cleanup() __attribute__((destructor)); + + +void setup() +{ + ExpatBase = IExec->OpenLibrary("expat.library", 53); + IExpat = (struct ExpatIFace*)IExec->GetInterface(ExpatBase, "main", 1, NULL); + + if ( IExpat == 0 ) { + IExec->DebugPrintF("Can't open expat.library\n"); + } +} + + +void cleanup() +{ + IExec->DropInterface((struct Interface*)IExpat); + IExpat = 0; + + IExec->CloseLibrary(ExpatBase); + ExpatBase = 0; +} diff --git a/vendor/libexpat/bcb5/README.txt b/vendor/libexpat/bcb5/README.txt new file mode 100644 index 0000000..486f1ca --- /dev/null +++ b/vendor/libexpat/bcb5/README.txt @@ -0,0 +1,87 @@ + + Using a Borland compiler product + +The files in this directory support using both the free Borland command-line +compiler tools and the Borland C++ Builder IDE. The project files have been +tested with both versions 5 and 6 of the C++ Builder product. + + Using the free BCC32 command line compiler + +After downloading and installing the free C++ Builder commandline version, +perform the following steps (assuming it was installed under C:\Borland\BCC55): + +1) Add "C:\Borland\BCC55\BIN" to your path +2) Set the environment variable BCB to "C:\Borland\BCC55". +3) edit makefile.mak: enable or comment out the appropriate commands under + clean & distclean, depending on whether your OS can use deltree /y or + del /s/f/q. + +After that, you should simply cd to the bcb5 directory in your Expat directory +tree (same structure as CVS) and run "make all" or just "make". + + Naming + +The libraries have the base name "libexpat" followed optionally by an "s" +(static) or a "w" (unicode version), then an underscore and optionally +"mt" (multi-threaded) and "d" (dynamic RTL). + +To change the name of the library a project file produces, edit the project +option source (see step 1 under Unicode below) and change the name contained in +the PROJECT tag. In a make file, change the value assigned to the PROJECT +variable. Also, the LIBRARY entry in the .def file has to be changed to +correspond to the new executable name. + + + Unicode Considerations + +There are no facilities in the BCB 5 GUI to create a unicode-enabled +application. Fortunately, it is not hard to do by hand. + +1. The startup .obj system file must be changed to the unicode version. + Go to Project|Edit Option Source, and scroll down to the ALLOBJ tag. Change + c0x32.obj to c0x32w.obj. Editing this file can be quirky, but usually the + following kludge will make the change stick. Close and save the file + (CTRL-F4) then open the options dialog (CTRL-Shift-F11), then click OK on + the dialog immediately without changing anything in it. If this doesn't work, + you will have to close the project completely and edit the .bpr file by hand. + + If you are using a make file, just change the startup .obj file assigned + to the ALLOBJ variable. + +2. Add the macro define XML_UNICODE_WCHAR_T. In the GUI that goes in the options + dialog, Directories/Conditionals tab, in the Conditional define box. In a + make file, put it in the USERDEFINES variable. + +3. Of course, your code has to be written for unicode. As a start, the "main" + function is called "wmain". The tchar macros are an interesting way to + write code that can easily switch between unicode and utf-8. If these macros + are used, then simply adding the conditional define _UNICODE as well as + XML_UNICODE_WCHAR_T will bring in the unicode versions of the tchar macros. + Otherwise the utf-8 versions are used. xmlwf uses its own versions of the + tchar macros which are switched on and off by the XML_UNICODE macro, which + itself is set by the XML_UNICODE_WCHAR_T define. + + Threading + +The libexpat libraries are all built to link with the multi-threaded dynamic RTL's. +That means they require CC32xxMT.DLL present on the installation target. +To create single-threaded libs, do the following: + +1. The compiler option for multi-threading must be turned off. Following the + instructions above to edit the option source, remove the -tWM option from + the CFLAG1 tag. In a make file, remove it from the CFLAG1 variable. + +2. The single threaded RTL must be called. change the RTL in the ALLLIB tag or + variable (GUI or makefile repectively) to the version without the "mt" in the + name. For example, change cw32mti.lib to cw32i.lib. + + Static RTL's + +To build the libs with static RTL's do the following, + +1. For the static expatlibs, in the Tlib tab on the options dialog, uncheck the + "Use dynamic RTL" box. For the dynamic expatlibs, in the Linker tab on the + options dialog, uncheck "Use dynamic RTL". If you are using a make file, + remove the _RTLDLL assignment to the SYSDEFINES variable, and change the RTL + to the version without an "i" in the ALLLIB variable. For example, + cw32mti.lib would become cw32mt.lib. diff --git a/vendor/libexpat/bcb5/all_projects.bpg b/vendor/libexpat/bcb5/all_projects.bpg new file mode 100644 index 0000000..27c9a1c --- /dev/null +++ b/vendor/libexpat/bcb5/all_projects.bpg @@ -0,0 +1,49 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = setup libexpat_mtd.dll libexpats_mtd.lib libexpatw_mtd.dll \ + libexpatws_mtd.lib elements.exe outline.exe xmlwf.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +libexpat_mtd.dll: expat.bpr + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +libexpats_mtd.lib: expat_static.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +libexpatw_mtd.dll: expatw.bpr + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +libexpatws_mtd.lib: expatw_static.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +elements.exe: elements.bpr + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +outline.exe: outline.bpr + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +xmlwf.exe: xmlwf.bpr + $(ROOT)\bin\bpr2mak $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +setup: setup.bat + call $** + + diff --git a/vendor/libexpat/bcb5/elements.bpf b/vendor/libexpat/bcb5/elements.bpf new file mode 100644 index 0000000..5c1e878 --- /dev/null +++ b/vendor/libexpat/bcb5/elements.bpf @@ -0,0 +1,4 @@ +USEUNIT("..\examples\elements.c"); +USELIB("Release\libexpats_mtd.lib"); +//--------------------------------------------------------------------------- +main diff --git a/vendor/libexpat/bcb5/elements.bpr b/vendor/libexpat/bcb5/elements.bpr new file mode 100644 index 0000000..e6e260f --- /dev/null +++ b/vendor/libexpat/bcb5/elements.bpr @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=4 +Item0=..\examples;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl +Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=8 +Item0=..\examples;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\examples;$(BCB)\lib;..\examples\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);..\lib\Release-w_static +Item4=$(BCB)\lib;$(RELEASELIBPATH);..\lib\Release_static +Item5=$(BCB)\lib;$(RELEASELIBPATH);C:\src\expat\lib\Release_static +Item6=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk +Item7=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=17 +Item0=WIN32;NDEBUG;_CONSOLE;XML_STATIC +Item1=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_STATIC +Item2=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE;XML_STATIC +Item3=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE +Item4=WIN32;NDEBUG;_CONSOLE;_DEBUG +Item5=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG +Item6=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG;_UNICODE +Item7=WIN32;NDEBUG;_CONSOLE;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T +Item8=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T +Item9=WIN32;NDEBUG;_CONSOLE;_UNICODE;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T +Item10=WIN32;NDEBUG;_CONSOLE;_UNICODE;XML_STATIC;_DEBUG;XML_UNICODE +Item11=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T;__WCHAR_T +Item12=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE +Item13=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE;_UNICODE +Item14=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG;XML_UNICODE +Item15=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC;_DEBUG +Item16=WIN32;NDEBUG;_CONSOLE;_MBCS;XML_STATIC + +[HistoryLists\hlIntOutputDir] +Count=5 +Item0=Release\obj\examples +Item1=Release\obj\elements +Item2=Release\obj\mts +Item3=..\examples\Release +Item4=Release + +[HistoryLists\hlFinalOutputDir] +Count=1 +Item0=Release\ + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/elements.mak b/vendor/libexpat/bcb5/elements.mak new file mode 100644 index 0000000..d4427fd --- /dev/null +++ b/vendor/libexpat/bcb5/elements.mak @@ -0,0 +1,186 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\elements.exe +OBJFILES = Release\obj\examples\elements.obj +RESFILES = +MAINSOURCE = elements.bpf +RESDEPEN = $(RESFILES) +LIBFILES = Release\libexpats_mtd.lib +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ + ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ + VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ + dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi +SPARELIBS = +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\examples +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = WIN32;NDEBUG;_CONSOLE;XML_STATIC +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\examples;$(BCB)\include +LIBPATH = ..\examples;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS= -w-par -w-8027 -w-8026 +# --------------------------------------------------------------------------- +CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -I..\lib -c +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = -IRelease\obj\examples -D"" -ap -Tpe -x -Gn -q -L..\LIB\RELEASE_STATIC +# --------------------------------------------------------------------------- +ALLOBJ = c0x32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) -L$(LIBPATH) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/bcb5/expat.bpf b/vendor/libexpat/bcb5/expat.bpf new file mode 100644 index 0000000..2c42328 --- /dev/null +++ b/vendor/libexpat/bcb5/expat.bpf @@ -0,0 +1,6 @@ +USEUNIT("..\lib\xmlparse.c"); +USEUNIT("..\lib\xmlrole.c"); +USEUNIT("..\lib\xmltok.c"); +USEDEF("libexpat_mtd.def"); +//--------------------------------------------------------------------------- +#define DllEntryPoint diff --git a/vendor/libexpat/bcb5/expat.bpr b/vendor/libexpat/bcb5/expat.bpr new file mode 100644 index 0000000..826f024 --- /dev/null +++ b/vendor/libexpat/bcb5/expat.bpr @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=4 +Item0=..\lib;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl +Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk +Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=8 +Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;EXPAT_EXPORTS +Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS +Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS +Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS +Item4=NDEBUG;WIN32;_WINDOWS;_USRDLL;_DEBUG;EXPAT_EXPORTS +Item5=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;_DEBUG +Item6=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;_DEBUG +Item7=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS + +[HistoryLists\hlIntOutputDir] +Count=7 +Item0=Release\obj\libexpat +Item1=Release\obj\libexpat_static +Item2=Release\obj\mtd +Item3=Release\obj\mt +Item4=Release\obj +Item5=Release +Item6=..\lib\Release + +[HistoryLists\hlFinalOutputDir] +Count=1 +Item0=Release\ + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/expat.mak b/vendor/libexpat/bcb5/expat.mak new file mode 100644 index 0000000..08b3f1b --- /dev/null +++ b/vendor/libexpat/bcb5/expat.mak @@ -0,0 +1,187 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\libexpat_mtd.dll +OBJFILES = Release\obj\libexpat\xmlparse.obj Release\obj\libexpat\xmlrole.obj \ + Release\obj\libexpat\xmltok.obj +RESFILES = +MAINSOURCE = expat.bpf +RESDEPEN = $(RESFILES) +LIBFILES = +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ + ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ + VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ + dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi +SPARELIBS = +DEFFILE = libexpat_mtd.def +# --------------------------------------------------------------------------- +PATHCPP = .;..\lib +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\lib;$(BCB)\include +LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS= -w-rch -w-par -w-8027 -w-8026 -w-ccc +# --------------------------------------------------------------------------- +CFLAG1 = -WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\libexpat -N0Release\obj\libexpat -$Y- -$L- -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = -IRelease\obj\libexpat -D"" -aa -Tpd -x -Gn -Gi -q +# --------------------------------------------------------------------------- +ALLOBJ = c0d32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) -L$(LIBPATH) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/bcb5/expat_static.bpf b/vendor/libexpat/bcb5/expat_static.bpf new file mode 100644 index 0000000..5ca458e --- /dev/null +++ b/vendor/libexpat/bcb5/expat_static.bpf @@ -0,0 +1,5 @@ +USEUNIT("..\lib\xmlparse.c"); +USEUNIT("..\lib\xmlrole.c"); +USEUNIT("..\lib\xmltok.c"); +//--------------------------------------------------------------------------- +#define Library diff --git a/vendor/libexpat/bcb5/expat_static.bpr b/vendor/libexpat/bcb5/expat_static.bpr new file mode 100644 index 0000000..26c2502 --- /dev/null +++ b/vendor/libexpat/bcb5/expat_static.bpr @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=4 +Item0=..\lib;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl +Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk +Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=7 +Item0=_WINDOWS;WIN32;NDEBUG;_LIB;XML_STATIC +Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;XML_STATIC +Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC +Item3=WIN32;_WINDOWS;NDEBUG;_LIB;_DEBUG +Item4=WIN32;_WINDOWS;NDEBUG;_LIB +Item5=WIN32;_WINDOWS;NDEBUG;_LIB;_MBCS +Item6=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB + +[HistoryLists\hlIntOutputDir] +Count=6 +Item0=Release\obj\libexpat_static +Item1=Release\obj\mts +Item2=Release\obj\mt +Item3=Release +Item4=..\lib\Release_static +Item5=Release_static + +[HistoryLists\hlFinalOutputDir] +Count=3 +Item0=Release\ +Item1=Release +Item2=Release_static\ + +[HistoryLists\hlTlibPageSize] +Count=1 +Item0=0x0010 + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/expat_static.mak b/vendor/libexpat/bcb5/expat_static.mak new file mode 100644 index 0000000..9322c49 --- /dev/null +++ b/vendor/libexpat/bcb5/expat_static.mak @@ -0,0 +1,189 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\libexpats_mtd.lib +OBJFILES = Release\obj\libexpat_static\xmlparse.obj \ + Release\obj\libexpat_static\xmlrole.obj \ + Release\obj\libexpat_static\xmltok.obj +RESFILES = +MAINSOURCE = expat_static.bpf +RESDEPEN = $(RESFILES) +LIBFILES = +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = +SPARELIBS = +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\lib +PATHASM = .; +PATHPAS = .; +PATHRC = .; +LINKER = TLib +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;XML_STATIC +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\lib;$(BCB)\include +LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS = -w-rch -w-par -w-8027 -w-8026 -w-ccc +LISTFILE = +# --------------------------------------------------------------------------- +CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -c +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\libexpat_static -N0Release\obj\libexpat_static -$Y- -$L- -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = TLib +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +!if "$(LISTFILE)" == "" +COMMA = +!else +COMMA = , +!endif + +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) /u $@ @&&! + $(LFLAGS) $? $(COMMA) $(LISTFILE) + +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/bcb5/expatw.bpf b/vendor/libexpat/bcb5/expatw.bpf new file mode 100644 index 0000000..188a6d5 --- /dev/null +++ b/vendor/libexpat/bcb5/expatw.bpf @@ -0,0 +1,6 @@ +USEUNIT("..\lib\xmlparse.c"); +USEUNIT("..\lib\xmlrole.c"); +USEUNIT("..\lib\xmltok.c"); +USEDEF("libexpatw_mtd.def"); +//--------------------------------------------------------------------------- +#define DllEntryPoint diff --git a/vendor/libexpat/bcb5/expatw.bpr b/vendor/libexpat/bcb5/expatw.bpr new file mode 100644 index 0000000..1085933 --- /dev/null +++ b/vendor/libexpat/bcb5/expatw.bpr @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=4 +Item0=..\lib;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl +Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk +Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=9 +Item0=_WINDOWS;WIN32;NDEBUG;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T +Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T +Item2=_WINDOWS;WIN32;NDEBUG;_DEBUG;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T +Item3=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;_DEBUG;XML_UNICODE_WCHAR_T +Item4=NDEBUG;WIN32;_WINDOWS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG +Item5=NDEBUG;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;_DEBUG +Item6=NDEBUG;WIN32;_WINDOWS;_UNICODE;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T +Item7=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T;XML_UNICODE +Item8=NDEBUG;WIN32;_WINDOWS;_MBCS;_USRDLL;EXPAT_EXPORTS;XML_UNICODE_WCHAR_T + +[HistoryLists\hlIntOutputDir] +Count=8 +Item0=Release\obj\libexpatw +Item1=Release\obj\libexpat +Item2=Release\obj\mtd +Item3=Release\obj\mt +Item4=Release_w\obj +Item5=Release-w\obj +Item6=Release-w +Item7=..\lib\Release-w + +[HistoryLists\hlFinalOutputDir] +Count=5 +Item0=Release\ +Item1=Release +Item2=Release_w\ +Item3=Release-w\ +Item4=Release-w + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/expatw.mak b/vendor/libexpat/bcb5/expatw.mak new file mode 100644 index 0000000..848d814 --- /dev/null +++ b/vendor/libexpat/bcb5/expatw.mak @@ -0,0 +1,187 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\libexpatw_mtd.dll +OBJFILES = Release\obj\libexpatw\xmlparse.obj Release\obj\libexpatw\xmlrole.obj \ + Release\obj\libexpatw\xmltok.obj +RESFILES = +MAINSOURCE = expatw.bpf +RESDEPEN = $(RESFILES) +LIBFILES = +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ + ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ + VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ + dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi +SPARELIBS = +DEFFILE = libexpatw_mtd.def +# --------------------------------------------------------------------------- +PATHCPP = .;..\lib +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = _WINDOWS;WIN32;NDEBUG;_USRDLL;XML_UNICODE_WCHAR_T +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\lib;$(BCB)\include +LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS= -w-rch -w-par -w-8027 -w-8026 -w-ccc +# --------------------------------------------------------------------------- +CFLAG1 = -WD -O2 -X- -a8 -b -k- -vi -q -tWM -c -tWD +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\libexpatw -N0Release\obj\libexpatw -$Y- -$L- -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = -IRelease\obj\libexpatw -D"" -aa -Tpd -x -Gn -Gi -w -q +# --------------------------------------------------------------------------- +ALLOBJ = c0d32w.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) -L$(LIBPATH) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/bcb5/expatw_static.bpf b/vendor/libexpat/bcb5/expatw_static.bpf new file mode 100644 index 0000000..5ca458e --- /dev/null +++ b/vendor/libexpat/bcb5/expatw_static.bpf @@ -0,0 +1,5 @@ +USEUNIT("..\lib\xmlparse.c"); +USEUNIT("..\lib\xmlrole.c"); +USEUNIT("..\lib\xmltok.c"); +//--------------------------------------------------------------------------- +#define Library diff --git a/vendor/libexpat/bcb5/expatw_static.bpr b/vendor/libexpat/bcb5/expatw_static.bpr new file mode 100644 index 0000000..f73dca2 --- /dev/null +++ b/vendor/libexpat/bcb5/expatw_static.bpr @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=4 +Item0=..\lib;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl +Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=..\lib;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\lib;$(BCB)\lib;..\lib\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk +Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=15 +Item0=_WINDOWS;WIN32;NDEBUG;_LIB;XML_STATIC;XML_UNICODE_WCHAR_T +Item1=_WINDOWS;WIN32;NDEBUG;_DEBUG;_LIB;XML_STATIC;XML_UNICODE_WCHAR_T +Item2=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC;XML_UNICODE_WCHAR_T +Item3=WIN32;_WINDOWS;NDEBUG;_DEBUG;_LIB;XML_STATIC;XML_UNICODE_WCHAR_T +Item4=WIN32;_WINDOWS;NDEBUG;_LIB;_DEBUG;XML_UNICODE_WCHAR_T +Item5=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;XML_UNICODE_WCHAR_T;_DEBUG +Item6=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;XML_UNICODE_WCHAR_T;_DEBUG;__cplusplus +Item7=WIN32;_WINDOWS;NDEBUG;_UNICODE;_LIB;XML_UNICODE;_DEBUG +Item8=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE;_DEBUG +Item9=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE_WCHAR_T;_DEBUG;__WCHAR_T +Item10=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE_WCHAR_T;_DEBUG;_UNICODE +Item11=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE;_DEBUG;_UNICODE +Item12=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE_WCHAR_T;_DEBUG +Item13=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE_WCHAR_T +Item14=WIN32;_WINDOWS;NDEBUG;_MBCS;_LIB;XML_UNICODE_WCHAR_T;XML_UNICODE + +[HistoryLists\hlIntOutputDir] +Count=6 +Item0=Release\obj\libexpatw_static +Item1=Release\obj\libexpat_static +Item2=Release\obj\mts +Item3=Release\obj\mt +Item4=..\lib\Release-w_static +Item5=Release-w_static + +[HistoryLists\hlFinalOutputDir] +Count=3 +Item0=Release\ +Item1=Release +Item2=Release-w_static\ + +[HistoryLists\hlTlibPageSize] +Count=1 +Item0=0x0010 + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/expatw_static.mak b/vendor/libexpat/bcb5/expatw_static.mak new file mode 100644 index 0000000..49944c7 --- /dev/null +++ b/vendor/libexpat/bcb5/expatw_static.mak @@ -0,0 +1,190 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\libexpatws_mtd.lib +OBJFILES = Release\obj\libexpatw_static\xmlparse.obj \ + Release\obj\libexpatw_static\xmlrole.obj \ + Release\obj\libexpatw_static\xmltok.obj +RESFILES = +MAINSOURCE = expatw_static.bpf +RESDEPEN = $(RESFILES) +LIBFILES = +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = +SPARELIBS = +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\lib +PATHASM = .; +PATHPAS = .; +PATHRC = .; +LINKER = TLib +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = _WINDOWS;WIN32;NDEBUG;_LIB;XML_STATIC;XML_UNICODE_WCHAR_T +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\lib;$(BCB)\include +LIBPATH = ..\lib;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS = -w-rch -w-par -w-8027 -w-8026 -w-ccc +LISTFILE = +# --------------------------------------------------------------------------- +CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -c +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\libexpatw_static -N0Release\obj\libexpatw_static -$Y- -$L- \ + -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = TLib +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +!if "$(LISTFILE)" == "" +COMMA = +!else +COMMA = , +!endif + +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) /u $@ @&&! + $(LFLAGS) $? $(COMMA) $(LISTFILE) + +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/bcb5/libexpat_mtd.def b/vendor/libexpat/bcb5/libexpat_mtd.def new file mode 100644 index 0000000..fc1cb95 --- /dev/null +++ b/vendor/libexpat/bcb5/libexpat_mtd.def @@ -0,0 +1,141 @@ +; DEF file for BCB5 +LIBRARY LIBEXPAT_MTD +DESCRIPTION "Implements an XML parser." +EXPORTS + _XML_DefaultCurrent @1 + _XML_ErrorString @2 + _XML_ExpatVersion @3 + _XML_ExpatVersionInfo @4 + _XML_ExternalEntityParserCreate @5 + _XML_GetBase @6 + _XML_GetBuffer @7 + _XML_GetCurrentByteCount @8 + _XML_GetCurrentByteIndex @9 + _XML_GetCurrentColumnNumber @10 + _XML_GetCurrentLineNumber @11 + _XML_GetErrorCode @12 + _XML_GetIdAttributeIndex @13 + _XML_GetInputContext @14 + _XML_GetSpecifiedAttributeCount @15 + _XML_Parse @16 + _XML_ParseBuffer @17 + _XML_ParserCreate @18 + _XML_ParserCreateNS @19 + _XML_ParserCreate_MM @20 + _XML_ParserFree @21 + _XML_SetAttlistDeclHandler @22 + _XML_SetBase @23 + _XML_SetCdataSectionHandler @24 + _XML_SetCharacterDataHandler @25 + _XML_SetCommentHandler @26 + _XML_SetDefaultHandler @27 + _XML_SetDefaultHandlerExpand @28 + _XML_SetDoctypeDeclHandler @29 + _XML_SetElementDeclHandler @30 + _XML_SetElementHandler @31 + _XML_SetEncoding @32 + _XML_SetEndCdataSectionHandler @33 + _XML_SetEndDoctypeDeclHandler @34 + _XML_SetEndElementHandler @35 + _XML_SetEndNamespaceDeclHandler @36 + _XML_SetEntityDeclHandler @37 + _XML_SetExternalEntityRefHandler @38 + _XML_SetExternalEntityRefHandlerArg @39 + _XML_SetNamespaceDeclHandler @40 + _XML_SetNotStandaloneHandler @41 + _XML_SetNotationDeclHandler @42 + _XML_SetParamEntityParsing @43 + _XML_SetProcessingInstructionHandler @44 + _XML_SetReturnNSTriplet @45 + _XML_SetStartCdataSectionHandler @46 + _XML_SetStartDoctypeDeclHandler @47 + _XML_SetStartElementHandler @48 + _XML_SetStartNamespaceDeclHandler @49 + _XML_SetUnknownEncodingHandler @50 + _XML_SetUnparsedEntityDeclHandler @51 + _XML_SetUserData @52 + _XML_SetXmlDeclHandler @53 + _XML_UseParserAsHandlerArg @54 +; added with version 1.95.3 + _XML_ParserReset @55 + _XML_SetSkippedEntityHandler @56 +; added with version 1.95.5 + _XML_GetFeatureList @57 + _XML_UseForeignDTD @58 +; added with version 1.95.6 + _XML_FreeContentModel @59 + _XML_MemMalloc @60 + _XML_MemRealloc @61 + _XML_MemFree @62 +; added with version 1.95.8 + _XML_StopParser @63 + _XML_ResumeParser @64 + _XML_GetParsingStatus @65 + +; Aliases for MS compatible names + XML_DefaultCurrent = _XML_DefaultCurrent + XML_ErrorString = _XML_ErrorString + XML_ExpatVersion = _XML_ExpatVersion + XML_ExpatVersionInfo = _XML_ExpatVersionInfo + XML_ExternalEntityParserCreate = _XML_ExternalEntityParserCreate + XML_GetBase = _XML_GetBase + XML_GetBuffer = _XML_GetBuffer + XML_GetCurrentByteCount = _XML_GetCurrentByteCount + XML_GetCurrentByteIndex = _XML_GetCurrentByteIndex + XML_GetCurrentColumnNumber = _XML_GetCurrentColumnNumber + XML_GetCurrentLineNumber = _XML_GetCurrentLineNumber + XML_GetErrorCode = _XML_GetErrorCode + XML_GetIdAttributeIndex = _XML_GetIdAttributeIndex + XML_GetInputContext = _XML_GetInputContext + XML_GetSpecifiedAttributeCount = _XML_GetSpecifiedAttributeCount + XML_Parse = _XML_Parse + XML_ParseBuffer = _XML_ParseBuffer + XML_ParserCreate = _XML_ParserCreate + XML_ParserCreateNS = _XML_ParserCreateNS + XML_ParserCreate_MM = _XML_ParserCreate_MM + XML_ParserFree = _XML_ParserFree + XML_SetAttlistDeclHandler = _XML_SetAttlistDeclHandler + XML_SetBase = _XML_SetBase + XML_SetCdataSectionHandler = _XML_SetCdataSectionHandler + XML_SetCharacterDataHandler = _XML_SetCharacterDataHandler + XML_SetCommentHandler = _XML_SetCommentHandler + XML_SetDefaultHandler = _XML_SetDefaultHandler + XML_SetDefaultHandlerExpand = _XML_SetDefaultHandlerExpand + XML_SetDoctypeDeclHandler = _XML_SetDoctypeDeclHandler + XML_SetElementDeclHandler = _XML_SetElementDeclHandler + XML_SetElementHandler = _XML_SetElementHandler + XML_SetEncoding = _XML_SetEncoding + XML_SetEndCdataSectionHandler = _XML_SetEndCdataSectionHandler + XML_SetEndDoctypeDeclHandler = _XML_SetEndDoctypeDeclHandler + XML_SetEndElementHandler = _XML_SetEndElementHandler + XML_SetEndNamespaceDeclHandler = _XML_SetEndNamespaceDeclHandler + XML_SetEntityDeclHandler = _XML_SetEntityDeclHandler + XML_SetExternalEntityRefHandler = _XML_SetExternalEntityRefHandler + XML_SetExternalEntityRefHandlerArg = _XML_SetExternalEntityRefHandlerArg + XML_SetNamespaceDeclHandler = _XML_SetNamespaceDeclHandler + XML_SetNotStandaloneHandler = _XML_SetNotStandaloneHandler + XML_SetNotationDeclHandler = _XML_SetNotationDeclHandler + XML_SetParamEntityParsing = _XML_SetParamEntityParsing + XML_SetProcessingInstructionHandler = _XML_SetProcessingInstructionHandler + XML_SetReturnNSTriplet = _XML_SetReturnNSTriplet + XML_SetStartCdataSectionHandler = _XML_SetStartCdataSectionHandler + XML_SetStartDoctypeDeclHandler = _XML_SetStartDoctypeDeclHandler + XML_SetStartElementHandler = _XML_SetStartElementHandler + XML_SetStartNamespaceDeclHandler = _XML_SetStartNamespaceDeclHandler + XML_SetUnknownEncodingHandler = _XML_SetUnknownEncodingHandler + XML_SetUnparsedEntityDeclHandler = _XML_SetUnparsedEntityDeclHandler + XML_SetUserData = _XML_SetUserData + XML_SetXmlDeclHandler = _XML_SetXmlDeclHandler + XML_UseParserAsHandlerArg = _XML_UseParserAsHandlerArg + XML_ParserReset = _XML_ParserReset + XML_SetSkippedEntityHandler = _XML_SetSkippedEntityHandler + XML_GetFeatureList = _XML_GetFeatureList + XML_UseForeignDTD = _XML_UseForeignDTD + XML_FreeContentModel = _XML_FreeContentModel + XML_MemMalloc = _XML_MemMalloc + XML_MemRealloc = _XML_MemRealloc + XML_MemFree = _XML_MemFree + XML_StopParser = _XML_StopParser + XML_ResumeParser = _XML_ResumeParser + XML_GetParsingStatus = _XML_GetParsingStatus + diff --git a/vendor/libexpat/bcb5/libexpatw_mtd.def b/vendor/libexpat/bcb5/libexpatw_mtd.def new file mode 100644 index 0000000..418462d --- /dev/null +++ b/vendor/libexpat/bcb5/libexpatw_mtd.def @@ -0,0 +1,140 @@ +; DEF file for BCB5 +LIBRARY LIBEXPATW_MTD +DESCRIPTION "Implements an XML parser." +EXPORTS + _XML_DefaultCurrent @1 + _XML_ErrorString @2 + _XML_ExpatVersion @3 + _XML_ExpatVersionInfo @4 + _XML_ExternalEntityParserCreate @5 + _XML_GetBase @6 + _XML_GetBuffer @7 + _XML_GetCurrentByteCount @8 + _XML_GetCurrentByteIndex @9 + _XML_GetCurrentColumnNumber @10 + _XML_GetCurrentLineNumber @11 + _XML_GetErrorCode @12 + _XML_GetIdAttributeIndex @13 + _XML_GetInputContext @14 + _XML_GetSpecifiedAttributeCount @15 + _XML_Parse @16 + _XML_ParseBuffer @17 + _XML_ParserCreate @18 + _XML_ParserCreateNS @19 + _XML_ParserCreate_MM @20 + _XML_ParserFree @21 + _XML_SetAttlistDeclHandler @22 + _XML_SetBase @23 + _XML_SetCdataSectionHandler @24 + _XML_SetCharacterDataHandler @25 + _XML_SetCommentHandler @26 + _XML_SetDefaultHandler @27 + _XML_SetDefaultHandlerExpand @28 + _XML_SetDoctypeDeclHandler @29 + _XML_SetElementDeclHandler @30 + _XML_SetElementHandler @31 + _XML_SetEncoding @32 + _XML_SetEndCdataSectionHandler @33 + _XML_SetEndDoctypeDeclHandler @34 + _XML_SetEndElementHandler @35 + _XML_SetEndNamespaceDeclHandler @36 + _XML_SetEntityDeclHandler @37 + _XML_SetExternalEntityRefHandler @38 + _XML_SetExternalEntityRefHandlerArg @39 + _XML_SetNamespaceDeclHandler @40 + _XML_SetNotStandaloneHandler @41 + _XML_SetNotationDeclHandler @42 + _XML_SetParamEntityParsing @43 + _XML_SetProcessingInstructionHandler @44 + _XML_SetReturnNSTriplet @45 + _XML_SetStartCdataSectionHandler @46 + _XML_SetStartDoctypeDeclHandler @47 + _XML_SetStartElementHandler @48 + _XML_SetStartNamespaceDeclHandler @49 + _XML_SetUnknownEncodingHandler @50 + _XML_SetUnparsedEntityDeclHandler @51 + _XML_SetUserData @52 + _XML_SetXmlDeclHandler @53 + _XML_UseParserAsHandlerArg @54 +; added with version 1.95.3 + _XML_ParserReset @55 + _XML_SetSkippedEntityHandler @56 +; added with version 1.95.5 + _XML_GetFeatureList @57 + _XML_UseForeignDTD @58 +; added with version 1.95.6 + _XML_FreeContentModel @59 + _XML_MemMalloc @60 + _XML_MemRealloc @61 + _XML_MemFree @62 +; added with version 1.95.8 + _XML_StopParser @63 + _XML_ResumeParser @64 + _XML_GetParsingStatus @65 + +; Aliases for MS compatible names + XML_DefaultCurrent = _XML_DefaultCurrent + XML_ErrorString = _XML_ErrorString + XML_ExpatVersion = _XML_ExpatVersion + XML_ExpatVersionInfo = _XML_ExpatVersionInfo + XML_ExternalEntityParserCreate = _XML_ExternalEntityParserCreate + XML_GetBase = _XML_GetBase + XML_GetBuffer = _XML_GetBuffer + XML_GetCurrentByteCount = _XML_GetCurrentByteCount + XML_GetCurrentByteIndex = _XML_GetCurrentByteIndex + XML_GetCurrentColumnNumber = _XML_GetCurrentColumnNumber + XML_GetCurrentLineNumber = _XML_GetCurrentLineNumber + XML_GetErrorCode = _XML_GetErrorCode + XML_GetIdAttributeIndex = _XML_GetIdAttributeIndex + XML_GetInputContext = _XML_GetInputContext + XML_GetSpecifiedAttributeCount = _XML_GetSpecifiedAttributeCount + XML_Parse = _XML_Parse + XML_ParseBuffer = _XML_ParseBuffer + XML_ParserCreate = _XML_ParserCreate + XML_ParserCreateNS = _XML_ParserCreateNS + XML_ParserCreate_MM = _XML_ParserCreate_MM + XML_ParserFree = _XML_ParserFree + XML_SetAttlistDeclHandler = _XML_SetAttlistDeclHandler + XML_SetBase = _XML_SetBase + XML_SetCdataSectionHandler = _XML_SetCdataSectionHandler + XML_SetCharacterDataHandler = _XML_SetCharacterDataHandler + XML_SetCommentHandler = _XML_SetCommentHandler + XML_SetDefaultHandler = _XML_SetDefaultHandler + XML_SetDefaultHandlerExpand = _XML_SetDefaultHandlerExpand + XML_SetDoctypeDeclHandler = _XML_SetDoctypeDeclHandler + XML_SetElementDeclHandler = _XML_SetElementDeclHandler + XML_SetElementHandler = _XML_SetElementHandler + XML_SetEncoding = _XML_SetEncoding + XML_SetEndCdataSectionHandler = _XML_SetEndCdataSectionHandler + XML_SetEndDoctypeDeclHandler = _XML_SetEndDoctypeDeclHandler + XML_SetEndElementHandler = _XML_SetEndElementHandler + XML_SetEndNamespaceDeclHandler = _XML_SetEndNamespaceDeclHandler + XML_SetEntityDeclHandler = _XML_SetEntityDeclHandler + XML_SetExternalEntityRefHandler = _XML_SetExternalEntityRefHandler + XML_SetExternalEntityRefHandlerArg = _XML_SetExternalEntityRefHandlerArg + XML_SetNamespaceDeclHandler = _XML_SetNamespaceDeclHandler + XML_SetNotStandaloneHandler = _XML_SetNotStandaloneHandler + XML_SetNotationDeclHandler = _XML_SetNotationDeclHandler + XML_SetParamEntityParsing = _XML_SetParamEntityParsing + XML_SetProcessingInstructionHandler = _XML_SetProcessingInstructionHandler + XML_SetReturnNSTriplet = _XML_SetReturnNSTriplet + XML_SetStartCdataSectionHandler = _XML_SetStartCdataSectionHandler + XML_SetStartDoctypeDeclHandler = _XML_SetStartDoctypeDeclHandler + XML_SetStartElementHandler = _XML_SetStartElementHandler + XML_SetStartNamespaceDeclHandler = _XML_SetStartNamespaceDeclHandler + XML_SetUnknownEncodingHandler = _XML_SetUnknownEncodingHandler + XML_SetUnparsedEntityDeclHandler = _XML_SetUnparsedEntityDeclHandler + XML_SetUserData = _XML_SetUserData + XML_SetXmlDeclHandler = _XML_SetXmlDeclHandler + XML_UseParserAsHandlerArg = _XML_UseParserAsHandlerArg + XML_ParserReset = _XML_ParserReset + XML_SetSkippedEntityHandler = _XML_SetSkippedEntityHandler + XML_GetFeatureList = _XML_GetFeatureList + XML_UseForeignDTD = _XML_UseForeignDTD + XML_FreeContentModel = _XML_FreeContentModel + XML_MemMalloc = _XML_MemMalloc + XML_MemRealloc = _XML_MemRealloc + XML_MemFree = _XML_MemFree + XML_StopParser = _XML_StopParser + XML_ResumeParser = _XML_ResumeParser + XML_GetParsingStatus = _XML_GetParsingStatus diff --git a/vendor/libexpat/bcb5/makefile.mak b/vendor/libexpat/bcb5/makefile.mak new file mode 100644 index 0000000..548815e --- /dev/null +++ b/vendor/libexpat/bcb5/makefile.mak @@ -0,0 +1,37 @@ +all: setup expat expatw expat_static expatw_static elements outline xmlwf + +setup: + setup + +expat: + make -l -fexpat.mak + +expatw: + make -l -fexpatw.mak + +expat_static: + make -l -fexpat_static.mak + +expatw_static: + make -l -fexpatw_static.mak + +elements: + make -l -felements.mak + +outline: + make -l -foutline.mak + +xmlwf: + make -l -fxmlwf.mak + +clean: +# works on Win98/ME +# deltree /y release\obj +# works on WinNT/2000 + del /s/f/q release\obj + +distclean: +# works on Win98/ME +# deltree /y release\*.* +# works on WinNT/2000 + del /s/f/q release\* diff --git a/vendor/libexpat/bcb5/outline.bpf b/vendor/libexpat/bcb5/outline.bpf new file mode 100644 index 0000000..52dce83 --- /dev/null +++ b/vendor/libexpat/bcb5/outline.bpf @@ -0,0 +1,4 @@ +USEUNIT("..\examples\outline.c"); +USELIB("Release\libexpat_mtd.lib"); +//--------------------------------------------------------------------------- +main diff --git a/vendor/libexpat/bcb5/outline.bpr b/vendor/libexpat/bcb5/outline.bpr new file mode 100644 index 0000000..9ad8bed --- /dev/null +++ b/vendor/libexpat/bcb5/outline.bpr @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\examples;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=4 +Item0=..\examples;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\examples;$(BCB)\lib;..\examples\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=6 +Item0=WIN32;NDEBUG;_CONSOLE +Item1=WIN32;NDEBUG;_CONSOLE;XML_STATIC +Item2=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_STATIC +Item3=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE;XML_STATIC +Item4=WIN32;NDEBUG;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE +Item5=WIN32;NDEBUG;_CONSOLE;_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=4 +Item0=Release\obj\examples +Item1=Release\obj\outline +Item2=..\examples\Release +Item3=Release + +[HistoryLists\hlFinalOutputDir] +Count=1 +Item0=Release\ + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/outline.mak b/vendor/libexpat/bcb5/outline.mak new file mode 100644 index 0000000..510b541 --- /dev/null +++ b/vendor/libexpat/bcb5/outline.mak @@ -0,0 +1,186 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\outline.exe +OBJFILES = Release\obj\examples\outline.obj +RESFILES = +MAINSOURCE = outline.bpf +RESDEPEN = $(RESFILES) +LIBFILES = Release\libexpat_mtd.lib +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ + ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ + VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ + dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi +SPARELIBS = +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\examples +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = WIN32;NDEBUG;_CONSOLE +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\examples;$(BCB)\include +LIBPATH = ..\examples;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS= -w-par -w-8027 -w-8026 +# --------------------------------------------------------------------------- +CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\examples -N0Release\obj\examples -$Y- -$L- -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = -IRelease\obj\examples -D"" -ap -Tpe -x -Gn -q +# --------------------------------------------------------------------------- +ALLOBJ = c0x32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) -L$(LIBPATH) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/bcb5/setup.bat b/vendor/libexpat/bcb5/setup.bat new file mode 100644 index 0000000..6f4b573 --- /dev/null +++ b/vendor/libexpat/bcb5/setup.bat @@ -0,0 +1,9 @@ +REM CommandInterpreter: $(COMSPEC) +if not exist .\release\nul mkdir release +if not exist .\release\obj\nul mkdir release\obj +if not exist .\release\obj\libexpat\nul mkdir release\obj\libexpat +if not exist .\release\obj\libexpatw\nul mkdir release\obj\libexpatw +if not exist .\release\obj\libexpat_static\nul mkdir release\obj\libexpat_static +if not exist .\release\obj\libexpatw_static\nul mkdir release\obj\libexpatw_static +if not exist .\release\obj\examples\nul mkdir release\obj\examples +if not exist .\release\obj\xmlwf\nul mkdir release\obj\xmlwf diff --git a/vendor/libexpat/bcb5/xmlwf.bpf b/vendor/libexpat/bcb5/xmlwf.bpf new file mode 100644 index 0000000..d06208e --- /dev/null +++ b/vendor/libexpat/bcb5/xmlwf.bpf @@ -0,0 +1,7 @@ +USEUNIT("..\xmlwf\codepage.c"); +USEUNIT("..\xmlwf\win32filemap.c"); +USEUNIT("..\xmlwf\xmlfile.c"); +USEUNIT("..\xmlwf\xmlwf.c"); +USELIB("Release\libexpat_mtd.lib"); +//--------------------------------------------------------------------------- +main diff --git a/vendor/libexpat/bcb5/xmlwf.bpr b/vendor/libexpat/bcb5/xmlwf.bpr new file mode 100644 index 0000000..825878a --- /dev/null +++ b/vendor/libexpat/bcb5/xmlwf.bpr @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=4 +Item0=..\xmlwf;$(BCB)\include +Item1=$(BCB)\include +Item2=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl +Item3=$(BCB)\include;$(BCB)\include\mfc;$(BCB)\include\atl; + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH) +Item1=..\xmlwf;$(BCB)\lib;..\xmlwf\$(RELEASELIBPATH) +Item2=$(BCB)\lib;$(RELEASELIBPATH) +Item3=$(BCB)\lib;$(RELEASELIBPATH);$(BCB)\lib\psdk +Item4=$(BCB)\lib;$(RELEASELIBPATH);;$(BCB)\lib\psdk; + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=6 +Item0=NDEBUG;WIN32;_CONSOLE +Item1=NDEBUG;WIN32;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T;_UNICODE +Item2=NDEBUG;WIN32;_CONSOLE;_DEBUG;XML_UNICODE_WCHAR_T +Item3=NDEBUG;WIN32;_CONSOLE;_DEBUG +Item4=NDEBUG;WIN32;_CONSOLE;_DEBUG;_UNICODE;XML_UNICODE_WCHAR_T +Item5=NDEBUG;WIN32;_CONSOLE;_DEBUG;_UNICODE + +[HistoryLists\hlIntOutputDir] +Count=3 +Item0=Release\obj\xmlwf +Item1=..\xmlwf\Release +Item2=Release + +[HistoryLists\hlFinalOutputDir] +Count=3 +Item0=Release\ +Item1=Release +Item2=.\Release\ + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams=sample.xml +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + +@ diff --git a/vendor/libexpat/bcb5/xmlwf.mak b/vendor/libexpat/bcb5/xmlwf.mak new file mode 100644 index 0000000..c72c9cc --- /dev/null +++ b/vendor/libexpat/bcb5/xmlwf.mak @@ -0,0 +1,187 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.05.03 +# --------------------------------------------------------------------------- +PROJECT = Release\xmlwf.exe +OBJFILES = Release\obj\xmlwf\codepage.obj Release\obj\xmlwf\win32filemap.obj \ + Release\obj\xmlwf\xmlfile.obj Release\obj\xmlwf\xmlwf.obj +RESFILES = +MAINSOURCE = xmlwf.bpf +RESDEPEN = $(RESFILES) +LIBFILES = Release\libexpat_mtd.lib +IDLFILES = +IDLGENFILES = +LIBRARIES = +PACKAGES = VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \ + ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \ + VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi \ + dclocx50.bpi bcb2kaxserver50.bpi dclusr50.bpi +SPARELIBS = +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\xmlwf +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = NDEBUG;WIN32;_CONSOLE +SYSDEFINES = _NO_VCL;_ASSERTE;NO_STRICT;_RTLDLL +INCLUDEPATH = ..\xmlwf;$(BCB)\include +LIBPATH = ..\xmlwf;$(BCB)\lib;$(RELEASELIBPATH) +WARNINGS= -w-8065 -w-par -w-8027 -w-8026 +# --------------------------------------------------------------------------- +CFLAG1 = -O2 -X- -a8 -b -k- -vi -q -tWM -I..\lib -c +IDLCFLAGS = -I$(BCB)\include +PFLAGS = -N2Release\obj\xmlwf -N0Release\obj\xmlwf -$Y- -$L- -$D- +RFLAGS = /l 0x409 /d "NDEBUG" /i$(BCB)\include +AFLAGS = /mx /w2 /zn +LFLAGS = -IRelease\obj\xmlwf -D"" -ap -Tpe -x -Gn -q +# --------------------------------------------------------------------------- +ALLOBJ = c0x32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +!endif + + + + + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if "$(USERDEFINES)" != "" +AUSERDEFINES = -d$(USERDEFINES:;= -d) +!else +AUSERDEFINES = +!endif + +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) -L$(LIBPATH) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< +# --------------------------------------------------------------------------- + + + + diff --git a/vendor/libexpat/configure b/vendor/libexpat/configure new file mode 100644 index 0000000..247d0ef --- /dev/null +++ b/vendor/libexpat/configure @@ -0,0 +1,18632 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.68 for expat 2.1.0. +# +# Report bugs to . +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: expat-bugs@libexpat.org about your system, including +$0: any error possibly output before this message. Then +$0: install a modern shell, or manually run the script +$0: under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='expat' +PACKAGE_TARNAME='expat' +PACKAGE_VERSION='2.1.0' +PACKAGE_STRING='expat 2.1.0' +PACKAGE_BUGREPORT='expat-bugs@libexpat.org' +PACKAGE_URL='' + +ac_unique_file="Makefile.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_list= +ac_subst_vars='LTLIBOBJS +LIBOBJS +FILEMAP +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +CXXCPP +ac_ct_CXX +CXXFLAGS +CXX +LIBAGE +LIBREVISION +LIBCURRENT +CPP +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +AWK +RANLIB +STRIP +ac_ct_AR +AR +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +LIBTOOL +OBJDUMP +DLLTOOL +AS +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures expat 2.1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/expat] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of expat 2.1.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +expat configure 2.1.0 +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## -------------------------------------- ## +## Report this to expat-bugs@libexpat.org ## +## -------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by expat $as_me 2.1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_list " stdlib.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_header_list " sys/param.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +ac_aux_dir= +for ac_dir in conftools "$srcdir"/conftools; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in conftools \"$srcdir\"/conftools" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + + + + +LIBCURRENT=7 +LIBREVISION=0 +LIBAGE=6 + +ac_config_headers="$ac_config_headers expat_config.h" + + + + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4' +macro_revision='1.3293' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + +# Set options + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + lt_prog_compiler_pic='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + link_all_deplibs=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf + + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + +if test "$GCC" = yes ; then + OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes" + CFLAGS="$OLDCFLAGS -fexceptions" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fexceptions" >&5 +$as_echo_n "checking whether $CC accepts -fexceptions... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; CFLAGS="$OLDCFLAGS" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'` +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown +# See if sys/param.h defines the BYTE_ORDER macro. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ + +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ + +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if test $ac_cv_c_bigendian = unknown; then +if test "$cross_compiling" = yes; then : + echo $ac_n "cross-compiling... " 2>&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +main () { + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } +if test $ac_cv_c_bigendian = unknown; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to probe for byte ordering" >&5 +$as_echo_n "checking to probe for byte ordering... " >&6; } + +cat >conftest.c <&6 + ac_cv_c_bigendian=yes + fi + if test `grep -l LiTTleEnDian conftest.o` ; then + echo $ac_n ' little endian probe OK, ' 1>&6 + if test $ac_cv_c_bigendian = yes ; then + ac_cv_c_bigendian=unknown; + else + ac_cv_c_bigendian=no + fi + fi + echo $ac_n 'guessing bigendian ... ' >&6 + fi + fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } +fi +if test $ac_cv_c_bigendian = yes; then + +$as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h + + BYTEORDER=4321 +else + BYTEORDER=1234 +fi + +cat >>confdefs.h <<_ACEOF +#define BYTEORDER $BYTEORDER +_ACEOF + +if test $ac_cv_c_bigendian = unknown; then + as_fn_error please pre-set ac_cv_c_bigendian "unknown endianess - sorry" "$LINENO" 5 +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +for ac_func in memmove bcopy +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_header in fcntl.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in getpagesize +do : + ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" +if test "x$ac_cv_func_getpagesize" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETPAGESIZE 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +$as_echo_n "checking for working mmap... " >&6; } +if ${ac_cv_func_mmap_fixed_mapped+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_mmap_fixed_mapped=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + const char *cdata2; + int i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + if (munmap (data2, pagesize)) + return 8; + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_mmap_fixed_mapped=yes +else + ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +$as_echo "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + +if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FILEMAP=unixfilemap +else + FILEMAP=readfilemap +fi + + + +# AC_CPP_FUNC +# ------------------ # +# Checks to see if ANSI C99 CPP variable __func__ works. +# If not, perhaps __FUNCTION__ works instead. +# If not, we'll just define __func__ to "". +# AC_CPP_FUNC + + case $ac_cv_prog_cc_stdc in #( + no) : + ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 +else + ac_cv_prog_cc_stdc=no +fi + +fi + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 +$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } + if ${ac_cv_prog_cc_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +fi + + case $ac_cv_prog_cc_stdc in #( + no) : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; #( + '') : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 +$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C99-conforming __func__" >&5 +$as_echo_n "checking for an ANSI C99-conforming __func__... " >&6; } +if ${ac_cv_cpp_func+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +char *foo = __func__; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_cpp_func=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +char *foo = __FUNCTION__; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_cpp_func=__FUNCTION__ +else + ac_cv_cpp_func=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cpp_func" >&5 +$as_echo "$ac_cv_cpp_func" >&6; } +if test $ac_cv_cpp_func = __FUNCTION__; then + +$as_echo "#define __func__ __FUNCTION__" >>confdefs.h + +elif test $ac_cv_cpp_func = no; then + +$as_echo "#define __func__ \"\"" >>confdefs.h + +fi + + + + +$as_echo "#define XML_NS 1" >>confdefs.h + + +$as_echo "#define XML_DTD 1" >>confdefs.h + + +$as_echo "#define XML_CONTEXT_BYTES 1024" >>confdefs.h + + +ac_config_files="$ac_config_files Makefile expat.pc" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by expat $as_me 2.1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +expat config.status 2.1.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "expat_config.h") CONFIG_HEADERS="$CONFIG_HEADERS expat_config.h" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "expat.pc") CONFIG_FILES="$CONFIG_FILES expat.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +abs_srcdir="`cd $srcdir && pwd`" +abs_builddir="`pwd`" +if test "$abs_srcdir" != "$abs_builddir"; then + make mkdir-init +fi diff --git a/vendor/libexpat/configure.in b/vendor/libexpat/configure.in new file mode 100644 index 0000000..7e968c4 --- /dev/null +++ b/vendor/libexpat/configure.in @@ -0,0 +1,155 @@ +dnl configuration script for expat +dnl Process this file with autoconf to produce a configure script. +dnl +dnl Copyright 2000 Clark Cooper +dnl +dnl This file is part of EXPAT. +dnl +dnl EXPAT is free software; you can redistribute it and/or modify it +dnl under the terms of the License (based on the MIT/X license) contained +dnl in the file COPYING that comes with this distribution. +dnl + +dnl Ensure that Expat is configured with autoconf 2.58 or newer +AC_PREREQ(2.58) + +dnl Get the version number of Expat, using m4's esyscmd() command to run +dnl the command at m4-generation time. This allows us to create an m4 +dnl symbol holding the correct version number. AC_INIT() requires the +dnl version number at m4-time, rather than when ./configure is run, so +dnl all this must happen as part of m4, not as part of the shell code +dnl contained in ./configure. +dnl +dnl NOTE: esyscmd() is a GNU M4 extension. Thus, we wrap it in an appropriate +dnl test. I believe this test will work, but I don't have a place with non- +dnl GNU M4 to test it right now. +define([expat_version], ifdef([__gnu__], + [esyscmd(conftools/get-version.sh lib/expat.h)], + [2.1.x])) +AC_INIT(expat, expat_version, expat-bugs@libexpat.org) +undefine([expat_version]) + +AC_CONFIG_SRCDIR(Makefile.in) +AC_CONFIG_AUX_DIR(conftools) +AC_CONFIG_MACRO_DIR([m4]) + + +dnl +dnl Increment LIBREVISION if source code has changed at all +dnl +dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0 +dnl +dnl If the API changes compatibly (i.e. simply adding a new function +dnl without changing or removing earlier interfaces), then increment LIBAGE. +dnl +dnl If the API changes incompatibly set LIBAGE back to 0 +dnl + +LIBCURRENT=7 +LIBREVISION=0 +LIBAGE=6 + +AC_CONFIG_HEADER(expat_config.h) + +sinclude(conftools/ac_c_bigendian_cross.m4) + +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +AC_SUBST(LIBCURRENT) +AC_SUBST(LIBREVISION) +AC_SUBST(LIBAGE) + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_CXX +AC_PROG_INSTALL + +if test "$GCC" = yes ; then + dnl + dnl Be careful about adding the -fexceptions option; some versions of + dnl GCC don't support it and it causes extra warnings that are only + dnl distracting; avoid. + dnl + OLDCFLAGS="$CFLAGS -Wall -Wmissing-prototypes -Wstrict-prototypes" + CFLAGS="$OLDCFLAGS -fexceptions" + AC_MSG_CHECKING(whether $CC accepts -fexceptions) + AC_TRY_LINK( , , + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS") + CXXFLAGS=`echo "$CFLAGS" | sed 's/ -Wmissing-prototypes -Wstrict-prototypes//'` +fi + +dnl Checks for header files. +AC_HEADER_STDC + +dnl Checks for typedefs, structures, and compiler characteristics. + +dnl Note: Avoid using AC_C_BIGENDIAN because it does not +dnl work in a cross compile. +AC_C_BIGENDIAN_CROSS + +AC_C_CONST +AC_TYPE_SIZE_T +AC_CHECK_FUNCS(memmove bcopy) + +dnl Only needed for xmlwf: +AC_CHECK_HEADERS(fcntl.h unistd.h) +AC_TYPE_OFF_T +AC_FUNC_MMAP + +if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FILEMAP=unixfilemap +else + FILEMAP=readfilemap +fi +AC_SUBST(FILEMAP) + +dnl Needed for the test support code; this was found at +dnl http://lists.gnu.org/archive/html/bug-autoconf/2002-07/msg00028.html + +# AC_CPP_FUNC +# ------------------ # +# Checks to see if ANSI C99 CPP variable __func__ works. +# If not, perhaps __FUNCTION__ works instead. +# If not, we'll just define __func__ to "". +AC_DEFUN([AC_CPP_FUNC], +[AC_REQUIRE([AC_PROG_CC_STDC])dnl +AC_CACHE_CHECK([for an ANSI C99-conforming __func__], ac_cv_cpp_func, +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], +[[char *foo = __func__;]])], + [ac_cv_cpp_func=yes], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], +[[char *foo = __FUNCTION__;]])], + [ac_cv_cpp_func=__FUNCTION__], + [ac_cv_cpp_func=no])])]) +if test $ac_cv_cpp_func = __FUNCTION__; then + AC_DEFINE(__func__,__FUNCTION__, + [Define to __FUNCTION__ or "" if `__func__' does not conform to +ANSI C.]) +elif test $ac_cv_cpp_func = no; then + AC_DEFINE(__func__,"", + [Define to __FUNCTION__ or "" if `__func__' does not conform to +ANSI C.]) +fi +])# AC_CPP_FUNC + +AC_CPP_FUNC + + +dnl Some basic configuration: +AC_DEFINE([XML_NS], 1, + [Define to make XML Namespaces functionality available.]) +AC_DEFINE([XML_DTD], 1, + [Define to make parameter entity parsing functionality available.]) +AC_DEFINE([XML_CONTEXT_BYTES], 1024, + [Define to specify how much context to retain around the current parse point.]) + +AC_CONFIG_FILES([Makefile expat.pc]) +AC_OUTPUT + +abs_srcdir="`cd $srcdir && pwd`" +abs_builddir="`pwd`" +if test "$abs_srcdir" != "$abs_builddir"; then + make mkdir-init +fi diff --git a/vendor/libexpat/conftools/PrintPath b/vendor/libexpat/conftools/PrintPath new file mode 100644 index 0000000..e8559a3 --- /dev/null +++ b/vendor/libexpat/conftools/PrintPath @@ -0,0 +1,116 @@ +#!/bin/sh +# Look for program[s] somewhere in $PATH. +# +# Options: +# -s +# Do not print out full pathname. (silent) +# -pPATHNAME +# Look in PATHNAME instead of $PATH +# +# Usage: +# PrintPath [-s] [-pPATHNAME] program [program ...] +# +# Initially written by Jim Jagielski for the Apache configuration mechanism +# (with kudos to Kernighan/Pike) +# +# This script falls under the Apache License. +# See http://www.apache.org/licenses/LICENSE + +## +# Some "constants" +## +pathname=$PATH +echo="yes" + +## +# Find out what OS we are running for later on +## +os=`(uname) 2>/dev/null` + +## +# Parse command line +## +for args in $* +do + case $args in + -s ) echo="no" ;; + -p* ) pathname="`echo $args | sed 's/^..//'`" ;; + * ) programs="$programs $args" ;; + esac +done + +## +# Now we make the adjustments required for OS/2 and everyone +# else :) +# +# First of all, all OS/2 programs have the '.exe' extension. +# Next, we adjust PATH (or what was given to us as PATH) to +# be whitespace separated directories. +# Finally, we try to determine the best flag to use for +# test/[] to look for an executable file. OS/2 just has '-r' +# but with other OSs, we do some funny stuff to check to see +# if test/[] knows about -x, which is the preferred flag. +## + +if [ "x$os" = "xOS/2" ] +then + ext=".exe" + pathname=`echo -E $pathname | + sed 's/^;/.;/ + s/;;/;.;/g + s/;$/;./ + s/;/ /g + s/\\\\/\\//g' ` + test_exec_flag="-r" +else + ext="" # No default extensions + pathname=`echo $pathname | + sed 's/^:/.:/ + s/::/:.:/g + s/:$/:./ + s/:/ /g' ` + # Here is how we test to see if test/[] can handle -x + testfile="pp.t.$$" + + cat > $testfile </dev/null`; then + test_exec_flag="-x" + else + test_exec_flag="-r" + fi + rm -f $testfile +fi + +for program in $programs +do + for path in $pathname + do + if [ $test_exec_flag $path/${program}${ext} ] && \ + [ ! -d $path/${program}${ext} ]; then + if [ "x$echo" = "xyes" ]; then + echo $path/${program}${ext} + fi + exit 0 + fi + +# Next try without extension (if one was used above) + if [ "x$ext" != "x" ]; then + if [ $test_exec_flag $path/${program} ] && \ + [ ! -d $path/${program} ]; then + if [ "x$echo" = "xyes" ]; then + echo $path/${program} + fi + exit 0 + fi + fi + done +done +exit 1 + diff --git a/vendor/libexpat/conftools/ac_c_bigendian_cross.m4 b/vendor/libexpat/conftools/ac_c_bigendian_cross.m4 new file mode 100644 index 0000000..e95ffb6 --- /dev/null +++ b/vendor/libexpat/conftools/ac_c_bigendian_cross.m4 @@ -0,0 +1,81 @@ +dnl @synopsis AC_C_BIGENDIAN_CROSS +dnl +dnl Check endianess even when crosscompiling +dnl (partially based on the original AC_C_BIGENDIAN). +dnl +dnl The implementation will create a binary, and instead of running +dnl the binary it will be grep'ed for some symbols that will look +dnl different for different endianess of the binary. +dnl +dnl @version $Id: ac_c_bigendian_cross.m4,v 1.1 2001/07/24 19:51:35 fdrake Exp $ +dnl @author Guido Draheim +dnl +AC_DEFUN([AC_C_BIGENDIAN_CROSS], +[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian, +[ac_cv_c_bigendian=unknown +# See if sys/param.h defines the BYTE_ORDER macro. +AC_TRY_COMPILE([#include +#include ], [ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif], [# It does; now see whether it defined to BIG_ENDIAN or not. +AC_TRY_COMPILE([#include +#include ], [ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)]) +if test $ac_cv_c_bigendian = unknown; then +AC_TRY_RUN([main () { + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes, +[ echo $ac_n "cross-compiling... " 2>&AC_FD_MSG ]) +fi]) +if test $ac_cv_c_bigendian = unknown; then +AC_MSG_CHECKING(to probe for byte ordering) +[ +cat >conftest.c <&AC_FD_MSG + ac_cv_c_bigendian=yes + fi + if test `grep -l LiTTleEnDian conftest.o` ; then + echo $ac_n ' little endian probe OK, ' 1>&AC_FD_MSG + if test $ac_cv_c_bigendian = yes ; then + ac_cv_c_bigendian=unknown; + else + ac_cv_c_bigendian=no + fi + fi + echo $ac_n 'guessing bigendian ... ' >&AC_FD_MSG + fi + fi +AC_MSG_RESULT($ac_cv_c_bigendian) +fi +if test $ac_cv_c_bigendian = yes; then + AC_DEFINE(WORDS_BIGENDIAN, 1, [whether byteorder is bigendian]) + BYTEORDER=4321 +else + BYTEORDER=1234 +fi +AC_DEFINE_UNQUOTED(BYTEORDER, $BYTEORDER, [1234 = LIL_ENDIAN, 4321 = BIGENDIAN]) +if test $ac_cv_c_bigendian = unknown; then + AC_MSG_ERROR(unknown endianess - sorry, please pre-set ac_cv_c_bigendian) +fi +]) diff --git a/vendor/libexpat/conftools/config.guess b/vendor/libexpat/conftools/config.guess new file mode 100644 index 0000000..40eaed4 --- /dev/null +++ b/vendor/libexpat/conftools/config.guess @@ -0,0 +1,1517 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-05-11' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-tilera-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/libexpat/conftools/config.sub b/vendor/libexpat/conftools/config.sub new file mode 100644 index 0000000..30fdca8 --- /dev/null +++ b/vendor/libexpat/conftools/config.sub @@ -0,0 +1,1760 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-03-23' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | open8 \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile-* | tilegx-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/vendor/libexpat/conftools/expat.m4 b/vendor/libexpat/conftools/expat.m4 new file mode 100644 index 0000000..57e579b --- /dev/null +++ b/vendor/libexpat/conftools/expat.m4 @@ -0,0 +1,43 @@ +dnl Check if --with-expat[=PREFIX] is specified and +dnl Expat >= 1.95.0 is installed in the system. +dnl If yes, substitute EXPAT_CFLAGS, EXPAT_LIBS with regard to +dnl the specified PREFIX and set with_expat to PREFIX, or 'yes' if PREFIX +dnl has not been specified. Also HAVE_LIBEXPAT, HAVE_EXPAT_H are defined. +dnl If --with-expat has not been specified, set with_expat to 'no'. +dnl In addition, an Automake conditional EXPAT_INSTALLED is set accordingly. +dnl This is necessary to adapt a whole lot of packages that have expat +dnl bundled as a static library. +AC_DEFUN([AM_WITH_EXPAT], +[ AC_ARG_WITH(expat, + [ --with-expat=PREFIX Use system Expat library], + , with_expat=no) + + AM_CONDITIONAL(EXPAT_INSTALLED, test $with_expat != no) + + EXPAT_CFLAGS= + EXPAT_LIBS= + if test $with_expat != no; then + if test $with_expat != yes; then + EXPAT_CFLAGS="-I$with_expat/include" + EXPAT_LIBS="-L$with_expat/lib" + fi + AC_CHECK_LIB(expat, XML_ParserCreate, + [ EXPAT_LIBS="$EXPAT_LIBS -lexpat" + expat_found=yes ], + [ expat_found=no ], + "$EXPAT_LIBS") + if test $expat_found = no; then + AC_MSG_ERROR([Could not find the Expat library]) + fi + expat_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $EXPAT_CFLAGS" + AC_CHECK_HEADERS(expat.h, , expat_found=no) + if test $expat_found = no; then + AC_MSG_ERROR([Could not find expat.h]) + fi + CFLAGS="$expat_save_CFLAGS" + fi + + AC_SUBST(EXPAT_CFLAGS) + AC_SUBST(EXPAT_LIBS) +]) diff --git a/vendor/libexpat/conftools/get-version.sh b/vendor/libexpat/conftools/get-version.sh new file mode 100644 index 0000000..a70e0fb --- /dev/null +++ b/vendor/libexpat/conftools/get-version.sh @@ -0,0 +1,46 @@ +#!/bin/sh +# +# USAGE: get-version.sh path/to/expat.h +# +# This script will print Expat's version number on stdout. For example: +# +# $ ./conftools/get-version.sh ./lib/expat.h +# 1.95.3 +# $ +# + +if test $# = 0; then + echo "ERROR: pathname for expat.h was not provided." + echo "" + echo "USAGE: $0 path/to/expat.h" + exit 1 +fi +if test $# != 1; then + echo "ERROR: too many arguments were provided." + echo "" + echo "USAGE: $0 path/to/expat.h" + exit 1 +fi + +hdr="$1" +if test ! -r "$hdr"; then + echo "ERROR: '$hdr' does not exist, or is not readable." + exit 1 +fi + +MAJOR_VERSION="`sed -n -e '/MAJOR_VERSION/s/[^0-9]*//gp' $hdr`" +MINOR_VERSION="`sed -n -e '/MINOR_VERSION/s/[^0-9]*//gp' $hdr`" +MICRO_VERSION="`sed -n -e '/MICRO_VERSION/s/[^0-9]*//gp' $hdr`" + +# Determine how to tell echo not to print the trailing \n. This is +# similar to Autoconf's @ECHO_C@ and @ECHO_N@; however, we don't +# generate this file via autoconf (in fact, get-version.sh is used +# to *create* ./configure), so we just do something similar inline. +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ;; + *c*,* ) ECHO_N=-n ECHO_C= ;; + *) ECHO_N= ECHO_C='\c' ;; +esac + +echo $ECHO_N "$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$ECHO_C" diff --git a/vendor/libexpat/conftools/install-sh b/vendor/libexpat/conftools/install-sh new file mode 100644 index 0000000..6781b98 --- /dev/null +++ b/vendor/libexpat/conftools/install-sh @@ -0,0 +1,520 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/vendor/libexpat/conftools/ltmain.sh b/vendor/libexpat/conftools/ltmain.sh new file mode 100644 index 0000000..b4a3231 --- /dev/null +++ b/vendor/libexpat/conftools/ltmain.sh @@ -0,0 +1,9642 @@ + +# libtool (GNU libtool) 2.4 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4 Debian-2.4-2ubuntu1 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4 Debian-2.4-2ubuntu1" +TIMESTAMP="" +package_revision=1.3293 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${EGREP="/bin/grep -E"} +: ${FGREP="/bin/grep -F"} +: ${GREP="/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/bin/sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' + + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_apped perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/vendor/libexpat/conftools/mkinstalldirs b/vendor/libexpat/conftools/mkinstalldirs new file mode 100644 index 0000000..4f58503 --- /dev/null +++ b/vendor/libexpat/conftools/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/vendor/libexpat/doc/expat.png b/vendor/libexpat/doc/expat.png new file mode 100644 index 0000000000000000000000000000000000000000..3d88eac4a1339b2453d6d7be388ae61f658da0f7 GIT binary patch literal 1029 zcmV+g1p51lP)=T+4e4Js00002VoOIv z0RM-N%)bBt1B6LLK~!ko?U>t@>mUq8)d+=9h#H{~3Q;2}M1^oacv#|LJI>6kWL^9- zPA0}%;&3E@^wk$^{EffyH~z-o_#1!YZ~TqF@i+dTUID;=F}?$c-;2)xAis?t0001j zNt%-%z{k7Vc?VxI{*k8u0Q6v>*t5c2?Yt$PXw%PjDsGSBpo5^>+Idg=&ZOT1xQ8it zs-5@nP5R^goLSTX|Gswa;GZ!0BmMHiOV9CN(9ShJdpvizl70_>=|}LJc3hA*@uO2z zLWqbY!`nd;DbHjK5iuo30Ps=$p3nn;LpsB6(+B{8pW{n(01aP?QUJX4<{6R$U_JW) zX;SU{%D(ckm??#nEW+ z3XW&yX|=z!mNR^r^i4H@$tv#fdGSjnZ?aNtwTnA^*7%yJESEWc9BQ!gKqH75e#shWuW7Wm8RR|3FG{7K8MEuu4uR_# zIO{m=qZz|-nH=gjrMh+%n?(}|gI&XArp#V9+VyqWuwC@~LFu(Nx`=H{PAXZfYFBIY zQ3qA-5y2@Xwk09?Ct)b{@%e5`!m-=JzG#W*bQEdEk6k^Jw%aL2m93!;i=%cfH!C;x zy3t|V1A + + + + + Expat XML Parser + + + + + + + + + + + + + + +
(Expat logo)
Release 2.0.1
+
+ +

Expat is a library, written in C, for parsing XML documents. It's +the underlying XML parser for the open source Mozilla project, Perl's +XML::Parser, Python's xml.parsers.expat, and +other open-source XML parsers.

+ +

This library is the creation of James Clark, who's also given us +groff (an nroff look-alike), Jade (an implemention of ISO's DSSSL +stylesheet language for SGML), XP (a Java XML parser package), XT (a +Java XSL engine). James was also the technical lead on the XML +Working Group at W3C that produced the XML specification.

+ +

This is free software, licensed under the MIT/X Consortium license. You may download it +from the Expat home page. +

+ +

The bulk of this document was originally commissioned as an article +by XML.com. They graciously allowed +Clark Cooper to retain copyright and to distribute it with Expat. +This version has been substantially extended to include documentation +on features which have been added since the original article was +published, and additional information on using the original +interface.

+ +
+

Table of Contents

+ + +
+

Overview

+ +

Expat is a stream-oriented parser. You register callback (or +handler) functions with the parser and then start feeding it the +document. As the parser recognizes parts of the document, it will +call the appropriate handler for that part (if you've registered one.) +The document is fed to the parser in pieces, so you can start parsing +before you have all the document. This also allows you to parse really +huge documents that won't fit into memory.

+ +

Expat can be intimidating due to the many kinds of handlers and +options you can set. But you only need to learn four functions in +order to do 90% of what you'll want to do with it:

+ +
+ +
XML_ParserCreate
+
Create a new parser object.
+ +
XML_SetElementHandler
+
Set handlers for start and end tags.
+ +
XML_SetCharacterDataHandler
+
Set handler for text.
+ +
XML_Parse
+
Pass a buffer full of document to the parser
+
+ +

These functions and others are described in the reference part of this document. The reference +section also describes in detail the parameters passed to the +different types of handlers.

+ +

Let's look at a very simple example program that only uses 3 of the +above functions (it doesn't need to set a character handler.) The +program outline.c prints an +element outline, indenting child elements to distinguish them from the +parent element that contains them. The start handler does all the +work. It prints two indenting spaces for every level of ancestor +elements, then it prints the element and attribute +information. Finally it increments the global Depth +variable.

+ +
+int Depth;
+
+void XMLCALL
+start(void *data, const char *el, const char **attr) {
+  int i;
+
+  for (i = 0; i < Depth; i++)
+    printf("  ");
+
+  printf("%s", el);
+
+  for (i = 0; attr[i]; i += 2) {
+    printf(" %s='%s'", attr[i], attr[i + 1]);
+  }
+
+  printf("\n");
+  Depth++;
+}  /* End of start handler */
+
+ +

The end tag simply does the bookkeeping work of decrementing +Depth.

+
+void XMLCALL
+end(void *data, const char *el) {
+  Depth--;
+}  /* End of end handler */
+
+ +

Note the XMLCALL annotation used for the callbacks. +This is used to ensure that the Expat and the callbacks are using the +same calling convention in case the compiler options used for Expat +itself and the client code are different. Expat tries not to care +what the default calling convention is, though it may require that it +be compiled with a default convention of "cdecl" on some platforms. +For code which uses Expat, however, the calling convention is +specified by the XMLCALL annotation on most platforms; +callbacks should be defined using this annotation.

+ +

The XMLCALL annotation was added in Expat 1.95.7, but +existing working Expat applications don't need to add it (since they +are already using the "cdecl" calling convention, or they wouldn't be +working). The annotation is only needed if the default calling +convention may be something other than "cdecl". To use the annotation +safely with older versions of Expat, you can conditionally define it +after including Expat's header file:

+ +
+#include <expat.h>
+
+#ifndef XMLCALL
+#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
+#define XMLCALL __cdecl
+#elif defined(__GNUC__)
+#define XMLCALL __attribute__((cdecl))
+#else
+#define XMLCALL
+#endif
+#endif
+
+ +

After creating the parser, the main program just has the job of +shoveling the document to the parser so that it can do its work.

+ +
+

Building and Installing Expat

+ +

The Expat distribution comes as a compressed (with GNU gzip) tar +file. You may download the latest version from Source Forge. After +unpacking this, cd into the directory. Then follow either the Win32 +directions or Unix directions below.

+ +

Building under Win32

+ +

If you're using the GNU compiler under cygwin, follow the Unix +directions in the next section. Otherwise if you have Microsoft's +Developer Studio installed, then from Windows Explorer double-click on +"expat.dsp" in the lib directory and build and install in the usual +manner.

+ +

Alternatively, you may download the Win32 binary package that +contains the "expat.h" include file and a pre-built DLL.

+ +

Building under Unix (or GNU)

+ +

First you'll need to run the configure shell script in order to +configure the Makefiles and headers for your system.

+ +

If you're happy with all the defaults that configure picks for you, +and you have permission on your system to install into /usr/local, you +can install Expat with this sequence of commands:

+ +
+./configure
+make
+make install
+
+ +

There are some options that you can provide to this script, but the +only one we'll mention here is the --prefix option. You +can find out all the options available by running configure with just +the --help option.

+ +

By default, the configure script sets things up so that the library +gets installed in /usr/local/lib and the associated +header file in /usr/local/include. But if you were to +give the option, --prefix=/home/me/mystuff, then the +library and header would get installed in +/home/me/mystuff/lib and +/home/me/mystuff/include respectively.

+ +

Configuring Expat Using the Pre-Processor

+ +

Expat's feature set can be configured using a small number of +pre-processor definitions. The definition of this symbols does not +affect the set of entry points for Expat, only the behavior of the API +and the definition of character types in the case of +XML_UNICODE_WCHAR_T. The symbols are:

+ +
+
XML_DTD
+
Include support for using and reporting DTD-based content. If +this is defined, default attribute values from an external DTD subset +are reported and attribute value normalization occurs based on the +type of attributes defined in the external subset. Without +this, Expat has a smaller memory footprint and can be faster, but will +not load external entities or process conditional sections. This does +not affect the set of functions available in the API.
+ +
XML_NS
+
When defined, support for the Namespaces in XML +specification is included.
+ +
XML_UNICODE
+
When defined, character data reported to the application is +encoded in UTF-16 using wide characters of the type +XML_Char. This is implied if +XML_UNICODE_WCHAR_T is defined.
+ +
XML_UNICODE_WCHAR_T
+
If defined, causes the XML_Char character type to be +defined using the wchar_t type; otherwise, unsigned +short is used. Defining this implies +XML_UNICODE.
+ +
XML_LARGE_SIZE
+
If defined, causes the XML_Size and XML_Index +integer types to be at least 64 bits in size. This is intended to support +processing of very large input streams, where the return values of +XML_GetCurrentByteIndex, +XML_GetCurrentLineNumber and +XML_GetCurrentColumnNumber +could overflow. It may not be supported by all compilers, and is turned +off by default.
+ +
XML_CONTEXT_BYTES
+
The number of input bytes of markup context which the parser will +ensure are available for reporting via XML_GetInputContext. This is +normally set to 1024, and must be set to a positive interger. If this +is not defined, the input context will not be available and XML_GetInputContext will +always report NULL. Without this, Expat has a smaller memory +footprint and can be faster.
+ +
XML_STATIC
+
On Windows, this should be set if Expat is going to be linked +statically with the code that calls it; this is required to get all +the right MSVC magic annotations correct. This is ignored on other +platforms.
+ +
XML_ATTR_INFO
+
If defined, makes the the additional function XML_GetAttributeInfo available +for reporting attribute byte offsets.
+
+ +
+

Using Expat

+ +

Compiling and Linking Against Expat

+ +

Unless you installed Expat in a location not expected by your +compiler and linker, all you have to do to use Expat in your programs +is to include the Expat header (#include <expat.h>) +in your files that make calls to it and to tell the linker that it +needs to link against the Expat library. On Unix systems, this would +usually be done with the -lexpat argument. Otherwise, +you'll need to tell the compiler where to look for the Expat header +and the linker where to find the Expat library. You may also need to +take steps to tell the operating system where to find this library at +run time.

+ +

On a Unix-based system, here's what a Makefile might look like when +Expat is installed in a standard location:

+ +
+CC=cc
+LDFLAGS=
+LIBS= -lexpat
+xmlapp: xmlapp.o
+        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
+
+ +

If you installed Expat in, say, /home/me/mystuff, then +the Makefile would look like this:

+ +
+CC=cc
+CFLAGS= -I/home/me/mystuff/include
+LDFLAGS=
+LIBS= -L/home/me/mystuff/lib -lexpat
+xmlapp: xmlapp.o
+        $(CC) $(LDFLAGS) -o xmlapp xmlapp.o $(LIBS)
+
+ +

You'd also have to set the environment variable +LD_LIBRARY_PATH to /home/me/mystuff/lib (or +to ${LD_LIBRARY_PATH}:/home/me/mystuff/lib if +LD_LIBRARY_PATH already has some directories in it) in order to run +your application.

+ +

Expat Basics

+ +

As we saw in the example in the overview, the first step in parsing +an XML document with Expat is to create a parser object. There are three functions in the Expat API for creating a +parser object. However, only two of these (XML_ParserCreate and XML_ParserCreateNS) can be used for +constructing a parser for a top-level document. The object returned +by these functions is an opaque pointer (i.e. "expat.h" declares it as +void *) to data with further internal structure. In order to free the +memory associated with this object you must call XML_ParserFree. Note that if you have +provided any user data that gets stored in the +parser, then your application is responsible for freeing it prior to +calling XML_ParserFree.

+ +

The objects returned by the parser creation functions are good for +parsing only one XML document or external parsed entity. If your +application needs to parse many XML documents, then it needs to create +a parser object for each one. The best way to deal with this is to +create a higher level object that contains all the default +initialization you want for your parser objects.

+ +

Walking through a document hierarchy with a stream oriented parser +will require a good stack mechanism in order to keep track of current +context. For instance, to answer the simple question, "What element +does this text belong to?" requires a stack, since the parser may have +descended into other elements that are children of the current one and +has encountered this text on the way out.

+ +

The things you're likely to want to keep on a stack are the +currently opened element and it's attributes. You push this +information onto the stack in the start handler and you pop it off in +the end handler.

+ +

For some tasks, it is sufficient to just keep information on what +the depth of the stack is (or would be if you had one.) The outline +program shown above presents one example. Another such task would be +skipping over a complete element. When you see the start tag for the +element you want to skip, you set a skip flag and record the depth at +which the element started. When the end tag handler encounters the +same depth, the skipped element has ended and the flag may be +cleared. If you follow the convention that the root element starts at +1, then you can use the same variable for skip flag and skip +depth.

+ +
+void
+init_info(Parseinfo *info) {
+  info->skip = 0;
+  info->depth = 1;
+  /* Other initializations here */
+}  /* End of init_info */
+
+void XMLCALL
+rawstart(void *data, const char *el, const char **attr) {
+  Parseinfo *inf = (Parseinfo *) data;
+
+  if (! inf->skip) {
+    if (should_skip(inf, el, attr)) {
+      inf->skip = inf->depth;
+    }
+    else
+      start(inf, el, attr);     /* This does rest of start handling */
+  }
+
+  inf->depth++;
+}  /* End of rawstart */
+
+void XMLCALL
+rawend(void *data, const char *el) {
+  Parseinfo *inf = (Parseinfo *) data;
+
+  inf->depth--;
+
+  if (! inf->skip)
+    end(inf, el);              /* This does rest of end handling */
+
+  if (inf->skip == inf->depth)
+    inf->skip = 0;
+}  /* End rawend */
+
+ +

Notice in the above example the difference in how depth is +manipulated in the start and end handlers. The end tag handler should +be the mirror image of the start tag handler. This is necessary to +properly model containment. Since, in the start tag handler, we +incremented depth after the main body of start tag code, then +in the end handler, we need to manipulate it before the main +body. If we'd decided to increment it first thing in the start +handler, then we'd have had to decrement it last thing in the end +handler.

+ +

Communicating between handlers

+ +

In order to be able to pass information between different handlers +without using globals, you'll need to define a data structure to hold +the shared variables. You can then tell Expat (with the XML_SetUserData function) to pass a +pointer to this structure to the handlers. This is the first +argument received by most handlers. In the reference section, an argument to a callback function is named +userData and have type void * if the user +data is passed; it will have the type XML_Parser if the +parser itself is passed. When the parser is passed, the user data may +be retrieved using XML_GetUserData.

+ +

One common case where multiple calls to a single handler may need +to communicate using an application data structure is the case when +content passed to the character data handler (set by XML_SetCharacterDataHandler) needs to be accumulated. A +common first-time mistake with any of the event-oriented interfaces to +an XML parser is to expect all the text contained in an element to be +reported by a single call to the character data handler. Expat, like +many other XML parsers, reports such data as a sequence of calls; +there's no way to know when the end of the sequence is reached until a +different callback is made. A buffer referenced by the user data +structure proves both an effective and convenient place to accumulate +character data.

+ + + + +

XML Version

+ +

Expat is an XML 1.0 parser, and as such never complains based on +the value of the version pseudo-attribute in the XML +declaration, if present.

+ +

If an application needs to check the version number (to support +alternate processing), it should use the XML_SetXmlDeclHandler function to +set a handler that uses the information in the XML declaration to +determine what to do. This example shows how to check that only a +version number of "1.0" is accepted:

+ +
+static int wrong_version;
+static XML_Parser parser;
+
+static void XMLCALL
+xmldecl_handler(void            *userData,
+                const XML_Char  *version,
+                const XML_Char  *encoding,
+                int              standalone)
+{
+  static const XML_Char Version_1_0[] = {'1', '.', '0', 0};
+
+  int i;
+
+  for (i = 0; i < (sizeof(Version_1_0) / sizeof(Version_1_0[0])); ++i) {
+    if (version[i] != Version_1_0[i]) {
+      wrong_version = 1;
+      /* also clear all other handlers: */
+      XML_SetCharacterDataHandler(parser, NULL);
+      ...
+      return;
+    }
+  }
+  ...
+}
+
+ +

Namespace Processing

+ +

When the parser is created using the XML_ParserCreateNS, function, Expat +performs namespace processing. Under namespace processing, Expat +consumes xmlns and xmlns:... attributes, +which declare namespaces for the scope of the element in which they +occur. This means that your start handler will not see these +attributes. Your application can still be informed of these +declarations by setting namespace declaration handlers with XML_SetNamespaceDeclHandler.

+ +

Element type and attribute names that belong to a given namespace +are passed to the appropriate handler in expanded form. By default +this expanded form is a concatenation of the namespace URI, the +separator character (which is the 2nd argument to XML_ParserCreateNS), and the local +name (i.e. the part after the colon). Names with undeclared prefixes +are not well-formed when namespace processing is enabled, and will +trigger an error. Unprefixed attribute names are never expanded, +and unprefixed element names are only expanded when they are in the +scope of a default namespace.

+ +

However if XML_SetReturnNSTriplet has been called with a non-zero +do_nst parameter, then the expanded form for names with +an explicit prefix is a concatenation of: URI, separator, local name, +separator, prefix.

+ +

You can set handlers for the start of a namespace declaration and +for the end of a scope of a declaration with the XML_SetNamespaceDeclHandler +function. The StartNamespaceDeclHandler is called prior to the start +tag handler and the EndNamespaceDeclHandler is called after the +corresponding end tag that ends the namespace's scope. The namespace +start handler gets passed the prefix and URI for the namespace. For a +default namespace declaration (xmlns='...'), the prefix will be null. +The URI will be null for the case where the default namespace is being +unset. The namespace end handler just gets the prefix for the closing +scope.

+ +

These handlers are called for each declaration. So if, for +instance, a start tag had three namespace declarations, then the +StartNamespaceDeclHandler would be called three times before the start +tag handler is called, once for each declaration.

+ +

Character Encodings

+ +

While XML is based on Unicode, and every XML processor is required +to recognized UTF-8 and UTF-16 (1 and 2 byte encodings of Unicode), +other encodings may be declared in XML documents or entities. For the +main document, an XML declaration may contain an encoding +declaration:

+
+<?xml version="1.0" encoding="ISO-8859-2"?>
+
+ +

External parsed entities may begin with a text declaration, which +looks like an XML declaration with just an encoding declaration:

+
+<?xml encoding="Big5"?>
+
+ +

With Expat, you may also specify an encoding at the time of +creating a parser. This is useful when the encoding information may +come from a source outside the document itself (like a higher level +protocol.)

+ +

There are four built-in encodings +in Expat:

+
    +
  • UTF-8
  • +
  • UTF-16
  • +
  • ISO-8859-1
  • +
  • US-ASCII
  • +
+ +

Anything else discovered in an encoding declaration or in the +protocol encoding specified in the parser constructor, triggers a call +to the UnknownEncodingHandler. This handler gets passed +the encoding name and a pointer to an XML_Encoding data +structure. Your handler must fill in this structure and return +XML_STATUS_OK if it knows how to deal with the +encoding. Otherwise the handler should return +XML_STATUS_ERROR. The handler also gets passed a pointer +to an optional application data structure that you may indicate when +you set the handler.

+ +

Expat places restrictions on character encodings that it can +support by filling in the XML_Encoding structure. +include file:

+
    +
  1. Every ASCII character that can appear in a well-formed XML document +must be represented by a single byte, and that byte must correspond to +it's ASCII encoding (except for the characters $@\^'{}~)
  2. +
  3. Characters must be encoded in 4 bytes or less.
  4. +
  5. All characters encoded must have Unicode scalar values less than or +equal to 65535 (0xFFFF)This does not apply to the built-in support +for UTF-16 and UTF-8
  6. +
  7. No character may be encoded by more that one distinct sequence of +bytes
  8. +
+ +

XML_Encoding contains an array of integers that +correspond to the 1st byte of an encoding sequence. If the value in +the array for a byte is zero or positive, then the byte is a single +byte encoding that encodes the Unicode scalar value contained in the +array. A -1 in this array indicates a malformed byte. If the value is +-2, -3, or -4, then the byte is the beginning of a 2, 3, or 4 byte +sequence respectively. Multi-byte sequences are sent to the convert +function pointed at in the XML_Encoding structure. This +function should return the Unicode scalar value for the sequence or -1 +if the sequence is malformed.

+ +

One pitfall that novice Expat users are likely to fall into is that +although Expat may accept input in various encodings, the strings that +it passes to the handlers are always encoded in UTF-8 or UTF-16 +(depending on how Expat was compiled). Your application is responsible +for any translation of these strings into other encodings.

+ +

Handling External Entity References

+ +

Expat does not read or parse external entities directly. Note that +any external DTD is a special case of an external entity. If you've +set no ExternalEntityRefHandler, then external entity +references are silently ignored. Otherwise, it calls your handler with +the information needed to read and parse the external entity.

+ +

Your handler isn't actually responsible for parsing the entity, but +it is responsible for creating a subsidiary parser with XML_ExternalEntityParserCreate that will do the job. This +returns an instance of XML_Parser that has handlers and +other data structures initialized from the parent parser. You may then +use XML_Parse or XML_ParseBuffer calls against this +parser. Since external entities my refer to other external entities, +your handler should be prepared to be called recursively.

+ +

Parsing DTDs

+ +

In order to parse parameter entities, before starting the parse, +you must call XML_SetParamEntityParsing with one of the following +arguments:

+
+
XML_PARAM_ENTITY_PARSING_NEVER
+
Don't parse parameter entities or the external subset
+
XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
+
Parse parameter entites and the external subset unless +standalone was set to "yes" in the XML declaration.
+
XML_PARAM_ENTITY_PARSING_ALWAYS
+
Always parse parameter entities and the external subset
+
+ +

In order to read an external DTD, you also have to set an external +entity reference handler as described above.

+ +

Temporarily Stopping Parsing

+ +

Expat 1.95.8 introduces a new feature: its now possible to stop +parsing temporarily from within a handler function, even if more data +has already been passed into the parser. Applications for this +include

+ +
    +
  • Supporting the XInclude specification.
  • + +
  • Delaying further processing until additional information is + available from some other source.
  • + +
  • Adjusting processor load as task priorities shift within an + application.
  • + +
  • Stopping parsing completely (simply free or reset the parser + instead of resuming in the outer parsing loop). This can be useful + if a application-domain error is found in the XML being parsed or if + the result of the parse is determined not to be useful after + all.
  • +
+ +

To take advantage of this feature, the main parsing loop of an +application needs to support this specifically. It cannot be +supported with a parsing loop compatible with Expat 1.95.7 or +earlier (though existing loops will continue to work without +supporting the stop/resume feature).

+ +

An application that uses this feature for a single parser will have +the rough structure (in pseudo-code):

+ +
+fd = open_input()
+p = create_parser()
+
+if parse_xml(p, fd) {
+  /* suspended */
+
+  int suspended = 1;
+
+  while (suspended) {
+    do_something_else()
+    if ready_to_resume() {
+      suspended = continue_parsing(p, fd);
+    }
+  }
+}
+
+ +

An application that may resume any of several parsers based on +input (either from the XML being parsed or some other source) will +certainly have more interesting control structures.

+ +

This C function could be used for the parse_xml +function mentioned in the pseudo-code above:

+ +
+#define BUFF_SIZE 10240
+
+/* Parse a document from the open file descriptor 'fd' until the parse
+   is complete (the document has been completely parsed, or there's
+   been an error), or the parse is stopped.  Return non-zero when
+   the parse is merely suspended.
+*/
+int
+parse_xml(XML_Parser p, int fd)
+{
+  for (;;) {
+    int last_chunk;
+    int bytes_read;
+    enum XML_Status status;
+
+    void *buff = XML_GetBuffer(p, BUFF_SIZE);
+    if (buff == NULL) {
+      /* handle error... */
+      return 0;
+    }
+    bytes_read = read(fd, buff, BUFF_SIZE);
+    if (bytes_read < 0) {
+      /* handle error... */
+      return 0;
+    }
+    status = XML_ParseBuffer(p, bytes_read, bytes_read == 0);
+    switch (status) {
+      case XML_STATUS_ERROR:
+        /* handle error... */
+        return 0;
+      case XML_STATUS_SUSPENDED:
+        return 1;
+    }
+    if (bytes_read == 0)
+      return 0;
+  }
+}
+
+ +

The corresponding continue_parsing function is +somewhat simpler, since it only need deal with the return code from +XML_ResumeParser; it can +delegate the input handling to the parse_xml +function:

+ +
+/* Continue parsing a document which had been suspended.  The 'p' and
+   'fd' arguments are the same as passed to parse_xml().  Return
+   non-zero when the parse is suspended.
+*/
+int
+continue_parsing(XML_Parser p, int fd)
+{
+  enum XML_Status status = XML_ResumeParser(p);
+  switch (status) {
+    case XML_STATUS_ERROR:
+      /* handle error... */
+      return 0;
+    case XML_ERROR_NOT_SUSPENDED:
+      /* handle error... */
+      return 0;.
+    case XML_STATUS_SUSPENDED:
+      return 1;
+  }
+  return parse_xml(p, fd);
+}
+
+ +

Now that we've seen what a mess the top-level parsing loop can +become, what have we gained? Very simply, we can now use the XML_StopParser function to stop +parsing, without having to go to great lengths to avoid additional +processing that we're expecting to ignore. As a bonus, we get to stop +parsing temporarily, and come back to it when we're +ready.

+ +

To stop parsing from a handler function, use the XML_StopParser function. This function +takes two arguments; the parser being stopped and a flag indicating +whether the parse can be resumed in the future.

+ + + + +
+ + +

Expat Reference

+ +

Parser Creation

+ +
+XML_Parser XMLCALL
+XML_ParserCreate(const XML_Char *encoding);
+
+
+Construct a new parser. If encoding is non-null, it specifies a +character encoding to use for the document. This overrides the document +encoding declaration. There are four built-in encodings: +
    +
  • US-ASCII
  • +
  • UTF-8
  • +
  • UTF-16
  • +
  • ISO-8859-1
  • +
+Any other value will invoke a call to the UnknownEncodingHandler. +
+ +
+XML_Parser XMLCALL
+XML_ParserCreateNS(const XML_Char *encoding,
+                   XML_Char sep);
+
+
+Constructs a new parser that has namespace processing in effect. Namespace +expanded element names and attribute names are returned as a concatenation +of the namespace URI, sep, and the local part of the name. This +means that you should pick a character for sep that can't be part +of an URI. Since Expat does not check namespace URIs for conformance, the +only safe choice for a namespace separator is a character that is illegal +in XML. For instance, '\xFF' is not legal in UTF-8, and +'\xFFFF' is not legal in UTF-16. There is a special case when +sep is the null character '\0': the namespace URI and +the local part will be concatenated without any separator - this is intended +to support RDF processors. It is a programming error to use the null separator +with namespace triplets.
+ +
+XML_Parser XMLCALL
+XML_ParserCreate_MM(const XML_Char *encoding,
+                    const XML_Memory_Handling_Suite *ms,
+		    const XML_Char *sep);
+
+
+typedef struct {
+  void *(XMLCALL *malloc_fcn)(size_t size);
+  void *(XMLCALL *realloc_fcn)(void *ptr, size_t size);
+  void (XMLCALL *free_fcn)(void *ptr);
+} XML_Memory_Handling_Suite;
+
+
+

Construct a new parser using the suite of memory handling functions +specified in ms. If ms is NULL, then use the +standard set of memory management functions. If sep is +non NULL, then namespace processing is enabled in the created parser +and the character pointed at by sep is used as the separator between +the namespace URI and the local part of the name.

+
+ +
+XML_Parser XMLCALL
+XML_ExternalEntityParserCreate(XML_Parser p,
+                               const XML_Char *context,
+                               const XML_Char *encoding);
+
+
+Construct a new XML_Parser object for parsing an external +general entity. Context is the context argument passed in a call to a +ExternalEntityRefHandler. Other state information such as handlers, +user data, namespace processing is inherited from the parser passed as +the 1st argument. So you shouldn't need to call any of the behavior +changing functions on this parser (unless you want it to act +differently than the parent parser). +
+ +
+void XMLCALL
+XML_ParserFree(XML_Parser p);
+
+
+Free memory used by the parser. Your application is responsible for +freeing any memory associated with user data. +
+ +
+XML_Bool XMLCALL
+XML_ParserReset(XML_Parser p,
+                const XML_Char *encoding);
+
+
+Clean up the memory structures maintained by the parser so that it may +be used again. After this has been called, parser is +ready to start parsing a new document. All handlers are cleared from +the parser, except for the unknownEncodingHandler. The parser's external +state is re-initialized except for the values of ns and ns_triplets. +This function may not be used on a parser created using XML_ExternalEntityParserCreate; it will return XML_FALSE in that case. Returns +XML_TRUE on success. Your application is responsible for +dealing with any memory associated with user data. +
+ +

Parsing

+ +

To state the obvious: the three parsing functions XML_Parse, +XML_ParseBuffer and +XML_GetBuffer must not be called from within a handler +unless they operate on a separate parser instance, that is, one that +did not call the handler. For example, it is OK to call the parsing +functions from within an XML_ExternalEntityRefHandler, +if they apply to the parser created by +XML_ExternalEntityParserCreate.

+ +

Note: the len argument passed to these functions +should be considerably less than the maximum value for an integer, +as it could create an integer overflow situation if the added +lengths of a buffer and the unprocessed portion of the previous buffer +exceed the maximum integer value. Input data at the end of a buffer +will remain unprocessed if it is part of an XML token for which the +end is not part of that buffer.

+ +
+enum XML_Status XMLCALL
+XML_Parse(XML_Parser p,
+          const char *s,
+          int len,
+          int isFinal);
+
+
+enum XML_Status {
+  XML_STATUS_ERROR = 0,
+  XML_STATUS_OK = 1
+};
+
+
+Parse some more of the document. The string s is a buffer +containing part (or perhaps all) of the document. The number of bytes of s +that are part of the document is indicated by len. This means +that s doesn't have to be null terminated. It also means that +if len is larger than the number of bytes in the block of +memory that s points at, then a memory fault is likely. The +isFinal parameter informs the parser that this is the last +piece of the document. Frequently, the last piece is empty (i.e. +len is zero.) +If a parse error occurred, it returns XML_STATUS_ERROR. +Otherwise it returns XML_STATUS_OK value. +
+ +
+enum XML_Status XMLCALL
+XML_ParseBuffer(XML_Parser p,
+                int len,
+                int isFinal);
+
+
+This is just like XML_Parse, +except in this case Expat provides the buffer. By obtaining the +buffer from Expat with the XML_GetBuffer function, the application can avoid double +copying of the input. +
+ +
+void * XMLCALL
+XML_GetBuffer(XML_Parser p,
+              int len);
+
+
+Obtain a buffer of size len to read a piece of the document +into. A NULL value is returned if Expat can't allocate enough memory for +this buffer. This has to be called prior to every call to +XML_ParseBuffer. A +typical use would look like this: + +
+for (;;) {
+  int bytes_read;
+  void *buff = XML_GetBuffer(p, BUFF_SIZE);
+  if (buff == NULL) {
+    /* handle error */
+  }
+
+  bytes_read = read(docfd, buff, BUFF_SIZE);
+  if (bytes_read < 0) {
+    /* handle error */
+  }
+
+  if (! XML_ParseBuffer(p, bytes_read, bytes_read == 0)) {
+    /* handle parse error */
+  }
+
+  if (bytes_read == 0)
+    break;
+}
+
+
+ +
+enum XML_Status XMLCALL
+XML_StopParser(XML_Parser p,
+               XML_Bool resumable);
+
+
+ +

Stops parsing, causing XML_Parse or XML_ParseBuffer to return. Must be called from within a +call-back handler, except when aborting (when resumable +is XML_FALSE) an already suspended parser. Some +call-backs may still follow because they would otherwise get +lost, including +

    +
  • the end element handler for empty elements when stopped in the + start element handler,
  • +
  • the end namespace declaration handler when stopped in the end + element handler,
  • +
  • the character data handler when stopped in the character data handler + while making multiple call-backs on a contiguous chunk of characters,
  • +
+and possibly others.

+ +

This can be called from most handlers, including DTD related +call-backs, except when parsing an external parameter entity and +resumable is XML_TRUE. Returns +XML_STATUS_OK when successful, +XML_STATUS_ERROR otherwise. The possible error codes +are:

+
+
XML_ERROR_SUSPENDED
+
when suspending an already suspended parser.
+
XML_ERROR_FINISHED
+
when the parser has already finished.
+
XML_ERROR_SUSPEND_PE
+
when suspending while parsing an external PE.
+
+ +

Since the stop/resume feature requires application support in the +outer parsing loop, it is an error to call this function for a parser +not being handled appropriately; see Temporarily Stopping Parsing for more information.

+ +

When resumable is XML_TRUE then parsing +is suspended, that is, XML_Parse and XML_ParseBuffer return XML_STATUS_SUSPENDED. +Otherwise, parsing is aborted, that is, XML_Parse and XML_ParseBuffer return +XML_STATUS_ERROR with error code +XML_ERROR_ABORTED.

+ +

Note: +This will be applied to the current parser instance only, that is, if +there is a parent parser then it will continue parsing when the +external entity reference handler returns. It is up to the +implementation of that handler to call XML_StopParser on the parent parser +(recursively), if one wants to stop parsing altogether.

+ +

When suspended, parsing can be resumed by calling XML_ResumeParser.

+ +

New in Expat 1.95.8.

+
+ +
+enum XML_Status XMLCALL
+XML_ResumeParser(XML_Parser p);
+
+
+

Resumes parsing after it has been suspended with XML_StopParser. Must not be called from +within a handler call-back. Returns same status codes as XML_Parse or XML_ParseBuffer. An additional error +code, XML_ERROR_NOT_SUSPENDED, will be returned if the +parser was not currently suspended.

+ +

Note: +This must be called on the most deeply nested child parser instance +first, and on its parent parser only after the child parser has +finished, to be applied recursively until the document entity's parser +is restarted. That is, the parent parser will not resume by itself +and it is up to the application to call XML_ResumeParser on it at the +appropriate moment.

+ +

New in Expat 1.95.8.

+
+ +
+void XMLCALL
+XML_GetParsingStatus(XML_Parser p,
+                     XML_ParsingStatus *status);
+
+
+enum XML_Parsing {
+  XML_INITIALIZED,
+  XML_PARSING,
+  XML_FINISHED,
+  XML_SUSPENDED
+};
+
+typedef struct {
+  enum XML_Parsing parsing;
+  XML_Bool finalBuffer;
+} XML_ParsingStatus;
+
+
+

Returns status of parser with respect to being initialized, +parsing, finished, or suspended, and whether the final buffer is being +processed. The status parameter must not be +NULL.

+ +

New in Expat 1.95.8.

+
+ + +

Handler Setting

+ +

Although handlers are typically set prior to parsing and left alone, an +application may choose to set or change the handler for a parsing event +while the parse is in progress. For instance, your application may choose +to ignore all text not descended from a para element. One +way it could do this is to set the character handler when a para start tag +is seen, and unset it for the corresponding end tag.

+ +

A handler may be unset by providing a NULL pointer to the +appropriate handler setter. None of the handler setting functions have +a return value.

+ +

Your handlers will be receiving strings in arrays of type +XML_Char. This type is conditionally defined in expat.h as +either char, wchar_t or unsigned short. +The former implies UTF-8 encoding, the latter two imply UTF-16 encoding. +Note that you'll receive them in this form independent of the original +encoding of the document.

+ +
+
+void XMLCALL
+XML_SetStartElementHandler(XML_Parser p,
+                           XML_StartElementHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartElementHandler)(void *userData,
+                                   const XML_Char *name,
+                                   const XML_Char **atts);
+
+

Set handler for start (and empty) tags. Attributes are passed to the start +handler as a pointer to a vector of char pointers. Each attribute seen in +a start (or empty) tag occupies 2 consecutive places in this vector: the +attribute name followed by the attribute value. These pairs are terminated +by a null pointer.

+

Note that an empty tag generates a call to both start and end handlers +(in that order).

+
+ +
+
+void XMLCALL
+XML_SetEndElementHandler(XML_Parser p,
+                         XML_EndElementHandler);
+
+
+typedef void
+(XMLCALL *XML_EndElementHandler)(void *userData,
+                                 const XML_Char *name);
+
+

Set handler for end (and empty) tags. As noted above, an empty tag +generates a call to both start and end handlers.

+
+ +
+
+void XMLCALL
+XML_SetElementHandler(XML_Parser p,
+                      XML_StartElementHandler start,
+                      XML_EndElementHandler end);
+
+

Set handlers for start and end tags with one call.

+
+ +
+
+void XMLCALL
+XML_SetCharacterDataHandler(XML_Parser p,
+                            XML_CharacterDataHandler charhndl)
+
+
+typedef void
+(XMLCALL *XML_CharacterDataHandler)(void *userData,
+                                    const XML_Char *s,
+                                    int len);
+
+

Set a text handler. The string your handler receives +is NOT nul-terminated. You have to use the length argument +to deal with the end of the string. A single block of contiguous text +free of markup may still result in a sequence of calls to this handler. +In other words, if you're searching for a pattern in the text, it may +be split across calls to this handler. Note: Setting this handler to NULL +may NOT immediately terminate call-backs if the parser is currently +processing such a single block of contiguous markup-free text, as the parser +will continue calling back until the end of the block is reached.

+
+ +
+
+void XMLCALL
+XML_SetProcessingInstructionHandler(XML_Parser p,
+                                    XML_ProcessingInstructionHandler proc)
+
+
+typedef void
+(XMLCALL *XML_ProcessingInstructionHandler)(void *userData,
+                                            const XML_Char *target,
+                                            const XML_Char *data);
+
+
+

Set a handler for processing instructions. The target is the first word +in the processing instruction. The data is the rest of the characters in +it after skipping all whitespace after the initial word.

+
+ +
+
+void XMLCALL
+XML_SetCommentHandler(XML_Parser p,
+                      XML_CommentHandler cmnt)
+
+
+typedef void
+(XMLCALL *XML_CommentHandler)(void *userData,
+                              const XML_Char *data);
+
+

Set a handler for comments. The data is all text inside the comment +delimiters.

+
+ +
+
+void XMLCALL
+XML_SetStartCdataSectionHandler(XML_Parser p,
+                                XML_StartCdataSectionHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartCdataSectionHandler)(void *userData);
+
+

Set a handler that gets called at the beginning of a CDATA section.

+
+ +
+
+void XMLCALL
+XML_SetEndCdataSectionHandler(XML_Parser p,
+                              XML_EndCdataSectionHandler end);
+
+
+typedef void
+(XMLCALL *XML_EndCdataSectionHandler)(void *userData);
+
+

Set a handler that gets called at the end of a CDATA section.

+
+ +
+
+void XMLCALL
+XML_SetCdataSectionHandler(XML_Parser p,
+                           XML_StartCdataSectionHandler start,
+                           XML_EndCdataSectionHandler end)
+
+

Sets both CDATA section handlers with one call.

+
+ +
+
+void XMLCALL
+XML_SetDefaultHandler(XML_Parser p,
+                      XML_DefaultHandler hndl)
+
+
+typedef void
+(XMLCALL *XML_DefaultHandler)(void *userData,
+                              const XML_Char *s,
+                              int len);
+
+ +

Sets a handler for any characters in the document which wouldn't +otherwise be handled. This includes both data for which no handlers +can be set (like some kinds of DTD declarations) and data which could +be reported but which currently has no handler set. The characters +are passed exactly as they were present in the XML document except +that they will be encoded in UTF-8 or UTF-16. Line boundaries are not +normalized. Note that a byte order mark character is not passed to the +default handler. There are no guarantees about how characters are +divided between calls to the default handler: for example, a comment +might be split between multiple calls. Setting the handler with +this call has the side effect of turning off expansion of references +to internally defined general entities. Instead these references are +passed to the default handler.

+ +

See also XML_DefaultCurrent.

+
+ +
+
+void XMLCALL
+XML_SetDefaultHandlerExpand(XML_Parser p,
+                            XML_DefaultHandler hndl)
+
+
+typedef void
+(XMLCALL *XML_DefaultHandler)(void *userData,
+                              const XML_Char *s,
+                              int len);
+
+

This sets a default handler, but doesn't inhibit the expansion of +internal entity references. The entity reference will not be passed +to the default handler.

+ +

See also XML_DefaultCurrent.

+
+ +
+
+void XMLCALL
+XML_SetExternalEntityRefHandler(XML_Parser p,
+                                XML_ExternalEntityRefHandler hndl)
+
+
+typedef int
+(XMLCALL *XML_ExternalEntityRefHandler)(XML_Parser p,
+                                        const XML_Char *context,
+                                        const XML_Char *base,
+                                        const XML_Char *systemId,
+                                        const XML_Char *publicId);
+
+

Set an external entity reference handler. This handler is also +called for processing an external DTD subset if parameter entity parsing +is in effect. (See +XML_SetParamEntityParsing.)

+ +

The context parameter specifies the parsing context in +the format expected by the context argument to XML_ExternalEntityParserCreate. code is +valid only until the handler returns, so if the referenced entity is +to be parsed later, it must be copied. context is NULL +only when the entity is a parameter entity, which is how one can +differentiate between general and parameter entities.

+ +

The base parameter is the base to use for relative +system identifiers. It is set by XML_SetBase and may be NULL. The +publicId parameter is the public id given in the entity +declaration and may be NULL. systemId is the system +identifier specified in the entity declaration and is never NULL.

+ +

There are a couple of ways in which this handler differs from +others. First, this handler returns a status indicator (an +integer). XML_STATUS_OK should be returned for successful +handling of the external entity reference. Returning +XML_STATUS_ERROR indicates failure, and causes the +calling parser to return an +XML_ERROR_EXTERNAL_ENTITY_HANDLING error.

+ +

Second, instead of having the user data as its first argument, it +receives the parser that encountered the entity reference. This, along +with the context parameter, may be used as arguments to a call to +XML_ExternalEntityParserCreate. Using the returned +parser, the body of the external entity can be recursively parsed.

+ +

Since this handler may be called recursively, it should not be saving +information into global or static variables.

+
+ +
+void XMLCALL
+XML_SetExternalEntityRefHandlerArg(XML_Parser p,
+                                   void *arg)
+
+
+

Set the argument passed to the ExternalEntityRefHandler. If +arg is not NULL, it is the new value passed to the +handler set using XML_SetExternalEntityRefHandler; if arg is +NULL, the argument passed to the handler function will be the parser +object itself.

+ +

Note: +The type of arg and the type of the first argument to the +ExternalEntityRefHandler do not match. This function takes a +void * to be passed to the handler, while the handler +accepts an XML_Parser. This is a historical accident, +but will not be corrected before Expat 2.0 (at the earliest) to avoid +causing compiler warnings for code that's known to work with this +API. It is the responsibility of the application code to know the +actual type of the argument passed to the handler and to manage it +properly.

+
+ +
+
+void XMLCALL
+XML_SetSkippedEntityHandler(XML_Parser p,
+                            XML_SkippedEntityHandler handler)
+
+
+typedef void
+(XMLCALL *XML_SkippedEntityHandler)(void *userData,
+                                    const XML_Char *entityName,
+                                    int is_parameter_entity);
+
+

Set a skipped entity handler. This is called in two situations:

+
    +
  1. An entity reference is encountered for which no declaration + has been read and this is not an error.
  2. +
  3. An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler + has been called.
  4. +
+

The is_parameter_entity argument will be non-zero for +a parameter entity and zero for a general entity.

Note: skipped +parameter entities in declarations and skipped general entities in +attribute values cannot be reported, because the event would be out of +sync with the reporting of the declarations or attribute values

+
+ +
+
+void XMLCALL
+XML_SetUnknownEncodingHandler(XML_Parser p,
+                              XML_UnknownEncodingHandler enchandler,
+			      void *encodingHandlerData)
+
+
+typedef int
+(XMLCALL *XML_UnknownEncodingHandler)(void *encodingHandlerData,
+                                      const XML_Char *name,
+                                      XML_Encoding *info);
+
+typedef struct {
+  int map[256];
+  void *data;
+  int (XMLCALL *convert)(void *data, const char *s);
+  void (XMLCALL *release)(void *data);
+} XML_Encoding;
+
+

Set a handler to deal with encodings other than the built in set. This should be done before +XML_Parse or XML_ParseBuffer have been called on the +given parser.

If the handler knows how to deal with an encoding +with the given name, it should fill in the info data +structure and return XML_STATUS_OK. Otherwise it +should return XML_STATUS_ERROR. The handler will be called +at most once per parsed (external) entity. The optional application +data pointer encodingHandlerData will be passed back to +the handler.

+ +

The map array contains information for every possible possible leading +byte in a byte sequence. If the corresponding value is >= 0, then it's +a single byte sequence and the byte encodes that Unicode value. If the +value is -1, then that byte is invalid as the initial byte in a sequence. +If the value is -n, where n is an integer > 1, then n is the number of +bytes in the sequence and the actual conversion is accomplished by a +call to the function pointed at by convert. This function may return -1 +if the sequence itself is invalid. The convert pointer may be null if +there are only single byte codes. The data parameter passed to the convert +function is the data pointer from XML_Encoding. The +string s is NOT nul-terminated and points at the sequence of +bytes to be converted.

+ +

The function pointed at by release is called by the +parser when it is finished with the encoding. It may be NULL.

+
+ +
+
+void XMLCALL
+XML_SetStartNamespaceDeclHandler(XML_Parser p,
+			         XML_StartNamespaceDeclHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartNamespaceDeclHandler)(void *userData,
+                                         const XML_Char *prefix,
+                                         const XML_Char *uri);
+
+

Set a handler to be called when a namespace is declared. Namespace +declarations occur inside start tags. But the namespace declaration start +handler is called before the start tag handler for each namespace declared +in that start tag.

+
+ +
+
+void XMLCALL
+XML_SetEndNamespaceDeclHandler(XML_Parser p,
+			       XML_EndNamespaceDeclHandler end);
+
+
+typedef void
+(XMLCALL *XML_EndNamespaceDeclHandler)(void *userData,
+                                       const XML_Char *prefix);
+
+

Set a handler to be called when leaving the scope of a namespace +declaration. This will be called, for each namespace declaration, +after the handler for the end tag of the element in which the +namespace was declared.

+
+ +
+
+void XMLCALL
+XML_SetNamespaceDeclHandler(XML_Parser p,
+                            XML_StartNamespaceDeclHandler start,
+                            XML_EndNamespaceDeclHandler end)
+
+

Sets both namespace declaration handlers with a single call.

+
+ +
+
+void XMLCALL
+XML_SetXmlDeclHandler(XML_Parser p,
+		      XML_XmlDeclHandler xmldecl);
+
+
+typedef void
+(XMLCALL *XML_XmlDeclHandler)(void            *userData,
+                              const XML_Char  *version,
+                              const XML_Char  *encoding,
+                              int             standalone);
+
+

Sets a handler that is called for XML declarations and also for +text declarations discovered in external entities. The way to +distinguish is that the version parameter will be NULL +for text declarations. The encoding parameter may be NULL +for an XML declaration. The standalone argument will +contain -1, 0, or 1 indicating respectively that there was no +standalone parameter in the declaration, that it was given as no, or +that it was given as yes.

+
+ +
+
+void XMLCALL
+XML_SetStartDoctypeDeclHandler(XML_Parser p,
+			       XML_StartDoctypeDeclHandler start);
+
+
+typedef void
+(XMLCALL *XML_StartDoctypeDeclHandler)(void           *userData,
+                                       const XML_Char *doctypeName,
+                                       const XML_Char *sysid,
+                                       const XML_Char *pubid,
+                                       int            has_internal_subset);
+
+

Set a handler that is called at the start of a DOCTYPE declaration, +before any external or internal subset is parsed. Both sysid +and pubid may be NULL. The has_internal_subset +will be non-zero if the DOCTYPE declaration has an internal subset.

+
+ +
+
+void XMLCALL
+XML_SetEndDoctypeDeclHandler(XML_Parser p,
+			     XML_EndDoctypeDeclHandler end);
+
+
+typedef void
+(XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
+
+

Set a handler that is called at the end of a DOCTYPE declaration, +after parsing any external subset.

+
+ +
+
+void XMLCALL
+XML_SetDoctypeDeclHandler(XML_Parser p,
+			  XML_StartDoctypeDeclHandler start,
+			  XML_EndDoctypeDeclHandler end);
+
+

Set both doctype handlers with one call.

+
+ +
+
+void XMLCALL
+XML_SetElementDeclHandler(XML_Parser p,
+			  XML_ElementDeclHandler eldecl);
+
+
+typedef void
+(XMLCALL *XML_ElementDeclHandler)(void *userData,
+                                  const XML_Char *name,
+                                  XML_Content *model);
+
+
+enum XML_Content_Type {
+  XML_CTYPE_EMPTY = 1,
+  XML_CTYPE_ANY,
+  XML_CTYPE_MIXED,
+  XML_CTYPE_NAME,
+  XML_CTYPE_CHOICE,
+  XML_CTYPE_SEQ
+};
+
+enum XML_Content_Quant {
+  XML_CQUANT_NONE,
+  XML_CQUANT_OPT,
+  XML_CQUANT_REP,
+  XML_CQUANT_PLUS
+};
+
+typedef struct XML_cp XML_Content;
+
+struct XML_cp {
+  enum XML_Content_Type		type;
+  enum XML_Content_Quant	quant;
+  const XML_Char *		name;
+  unsigned int			numchildren;
+  XML_Content *			children;
+};
+
+

Sets a handler for element declarations in a DTD. The handler gets +called with the name of the element in the declaration and a pointer +to a structure that contains the element model. It is the +application's responsibility to free this data structure using +XML_FreeContentModel.

+ +

The model argument is the root of a tree of +XML_Content nodes. If type equals +XML_CTYPE_EMPTY or XML_CTYPE_ANY, then +quant will be XML_CQUANT_NONE, and the other +fields will be zero or NULL. If type is +XML_CTYPE_MIXED, then quant will be +XML_CQUANT_NONE or XML_CQUANT_REP and +numchildren will contain the number of elements that are +allowed to be mixed in and children points to an array of +XML_Content structures that will all have type +XML_CTYPE_NAME with no quantification. Only the root node can be type +XML_CTYPE_EMPTY, XML_CTYPE_ANY, or +XML_CTYPE_MIXED.

+ +

For type XML_CTYPE_NAME, the name field +points to the name and the numchildren and +children fields will be zero and NULL. The +quant field will indicate any quantifiers placed on the +name.

+ +

Types XML_CTYPE_CHOICE and XML_CTYPE_SEQ +indicate a choice or sequence respectively. The +numchildren field indicates how many nodes in the choice +or sequence and children points to the nodes.

+
+ +
+
+void XMLCALL
+XML_SetAttlistDeclHandler(XML_Parser p,
+                          XML_AttlistDeclHandler attdecl);
+
+
+typedef void
+(XMLCALL *XML_AttlistDeclHandler)(void           *userData,
+                                  const XML_Char *elname,
+                                  const XML_Char *attname,
+                                  const XML_Char *att_type,
+                                  const XML_Char *dflt,
+                                  int            isrequired);
+
+

Set a handler for attlist declarations in the DTD. This handler is +called for each attribute. So a single attlist declaration +with multiple attributes declared will generate multiple calls to this +handler. The elname parameter returns the name of the +element for which the attribute is being declared. The attribute name +is in the attname parameter. The attribute type is in the +att_type parameter. It is the string representing the +type in the declaration with whitespace removed.

+ +

The dflt parameter holds the default value. It will be +NULL in the case of "#IMPLIED" or "#REQUIRED" attributes. You can +distinguish these two cases by checking the isrequired +parameter, which will be true in the case of "#REQUIRED" attributes. +Attributes which are "#FIXED" will have also have a true +isrequired, but they will have the non-NULL fixed value +in the dflt parameter.

+
+ +
+
+void XMLCALL
+XML_SetEntityDeclHandler(XML_Parser p,
+			 XML_EntityDeclHandler handler);
+
+
+typedef void
+(XMLCALL *XML_EntityDeclHandler)(void           *userData,
+                                 const XML_Char *entityName,
+                                 int            is_parameter_entity,
+                                 const XML_Char *value,
+                                 int            value_length, 
+                                 const XML_Char *base,
+                                 const XML_Char *systemId,
+                                 const XML_Char *publicId,
+                                 const XML_Char *notationName);
+
+

Sets a handler that will be called for all entity declarations. +The is_parameter_entity argument will be non-zero in the +case of parameter entities and zero otherwise.

+ +

For internal entities (<!ENTITY foo "bar">), +value will be non-NULL and systemId, +publicId, and notationName will all be NULL. +The value string is not NULL terminated; the length is +provided in the value_length parameter. Do not use +value_length to test for internal entities, since it is +legal to have zero-length values. Instead check for whether or not +value is NULL.

The notationName +argument will have a non-NULL value only for unparsed entity +declarations.

+
+ +
+
+void XMLCALL
+XML_SetUnparsedEntityDeclHandler(XML_Parser p,
+                                 XML_UnparsedEntityDeclHandler h)
+
+
+typedef void
+(XMLCALL *XML_UnparsedEntityDeclHandler)(void *userData,
+                                         const XML_Char *entityName, 
+                                         const XML_Char *base,
+                                         const XML_Char *systemId,
+                                         const XML_Char *publicId,
+                                         const XML_Char *notationName);
+
+

Set a handler that receives declarations of unparsed entities. These +are entity declarations that have a notation (NDATA) field:

+ +
+<!ENTITY logo SYSTEM "images/logo.gif" NDATA gif>
+
+

This handler is obsolete and is provided for backwards +compatibility. Use instead XML_SetEntityDeclHandler.

+
+ +
+
+void XMLCALL
+XML_SetNotationDeclHandler(XML_Parser p,
+                           XML_NotationDeclHandler h)
+
+
+typedef void
+(XMLCALL *XML_NotationDeclHandler)(void *userData, 
+                                   const XML_Char *notationName,
+                                   const XML_Char *base,
+                                   const XML_Char *systemId,
+                                   const XML_Char *publicId);
+
+

Set a handler that receives notation declarations.

+
+ +
+
+void XMLCALL
+XML_SetNotStandaloneHandler(XML_Parser p,
+                            XML_NotStandaloneHandler h)
+
+
+typedef int 
+(XMLCALL *XML_NotStandaloneHandler)(void *userData);
+
+

Set a handler that is called if the document is not "standalone". +This happens when there is an external subset or a reference to a +parameter entity, but does not have standalone set to "yes" in an XML +declaration. If this handler returns XML_STATUS_ERROR, +then the parser will throw an XML_ERROR_NOT_STANDALONE +error.

+
+ +

Parse position and error reporting functions

+ +

These are the functions you'll want to call when the parse +functions return XML_STATUS_ERROR (a parse error has +occurred), although the position reporting functions are useful outside +of errors. The position reported is the byte position (in the original +document or entity encoding) of the first of the sequence of +characters that generated the current event (or the error that caused +the parse functions to return XML_STATUS_ERROR.) The +exceptions are callbacks trigged by declarations in the document +prologue, in which case they exact position reported is somewhere in the +relevant markup, but not necessarily as meaningful as for other +events.

+ +

The position reporting functions are accurate only outside of the +DTD. In other words, they usually return bogus information when +called from within a DTD declaration handler.

+ +
+enum XML_Error XMLCALL
+XML_GetErrorCode(XML_Parser p);
+
+
+Return what type of error has occurred. +
+ +
+const XML_LChar * XMLCALL
+XML_ErrorString(enum XML_Error code);
+
+
+Return a string describing the error corresponding to code. +The code should be one of the enums that can be returned from +XML_GetErrorCode. +
+ +
+XML_Index XMLCALL
+XML_GetCurrentByteIndex(XML_Parser p);
+
+
+Return the byte offset of the position. This always corresponds to +the values returned by XML_GetCurrentLineNumber and XML_GetCurrentColumnNumber. +
+ +
+XML_Size XMLCALL
+XML_GetCurrentLineNumber(XML_Parser p);
+
+
+Return the line number of the position. The first line is reported as +1. +
+ +
+XML_Size XMLCALL
+XML_GetCurrentColumnNumber(XML_Parser p);
+
+
+Return the offset, from the beginning of the current line, of +the position. +
+ +
+int XMLCALL
+XML_GetCurrentByteCount(XML_Parser p);
+
+
+Return the number of bytes in the current event. Returns +0 if the event is inside a reference to an internal +entity and for the end-tag event for empty element tags (the later can +be used to distinguish empty-element tags from empty elements using +separate start and end tags). +
+ +
+const char * XMLCALL
+XML_GetInputContext(XML_Parser p,
+                    int *offset,
+                    int *size);
+
+
+ +

Returns the parser's input buffer, sets the integer pointed at by +offset to the offset within this buffer of the current +parse position, and set the integer pointed at by size to +the size of the returned buffer.

+ +

This should only be called from within a handler during an active +parse and the returned buffer should only be referred to from within +the handler that made the call. This input buffer contains the +untranslated bytes of the input.

+ +

Only a limited amount of context is kept, so if the event +triggering a call spans over a very large amount of input, the actual +parse position may be before the beginning of the buffer.

+ +

If XML_CONTEXT_BYTES is not defined, this will always +return NULL.

+
+ +

Miscellaneous functions

+ +

The functions in this section either obtain state information from +the parser or can be used to dynamicly set parser options.

+ +
+void XMLCALL
+XML_SetUserData(XML_Parser p,
+                void *userData);
+
+
+This sets the user data pointer that gets passed to handlers. It +overwrites any previous value for this pointer. Note that the +application is responsible for freeing the memory associated with +userData when it is finished with the parser. So if you +call this when there's already a pointer there, and you haven't freed +the memory associated with it, then you've probably just leaked +memory. +
+ +
+void * XMLCALL
+XML_GetUserData(XML_Parser p);
+
+
+This returns the user data pointer that gets passed to handlers. +It is actually implemented as a macro. +
+ +
+void XMLCALL
+XML_UseParserAsHandlerArg(XML_Parser p);
+
+
+After this is called, handlers receive the parser in their +userData arguments. The user data can still be obtained +using the XML_GetUserData function. +
+ +
+enum XML_Status XMLCALL
+XML_SetBase(XML_Parser p,
+            const XML_Char *base);
+
+
+Set the base to be used for resolving relative URIs in system +identifiers. The return value is XML_STATUS_ERROR if +there's no memory to store base, otherwise it's +XML_STATUS_OK. +
+ +
+const XML_Char * XMLCALL
+XML_GetBase(XML_Parser p);
+
+
+Return the base for resolving relative URIs. +
+ +
+int XMLCALL
+XML_GetSpecifiedAttributeCount(XML_Parser p);
+
+
+When attributes are reported to the start handler in the atts vector, +attributes that were explicitly set in the element occur before any +attributes that receive their value from default information in an +ATTLIST declaration. This function returns the number of attributes +that were explicitly set times two, thus giving the offset in the +atts array passed to the start tag handler of the first +attribute set due to defaults. It supplies information for the last +call to a start handler. If called inside a start handler, then that +means the current call. +
+ +
+int XMLCALL
+XML_GetIdAttributeIndex(XML_Parser p);
+
+
+Returns the index of the ID attribute passed in the atts array in the +last call to XML_StartElementHandler, or -1 if there is no ID +attribute. If called inside a start handler, then that means the +current call. +
+ +
+const XML_AttrInfo * XMLCALL
+XML_GetAttributeInfo(XML_Parser parser);
+
+
+typedef struct {
+  XML_Index  nameStart;  /* Offset to beginning of the attribute name. */
+  XML_Index  nameEnd;    /* Offset after the attribute name's last byte. */
+  XML_Index  valueStart; /* Offset to beginning of the attribute value. */
+  XML_Index  valueEnd;   /* Offset after the attribute value's last byte. */
+} XML_AttrInfo;
+
+
+Returns an array of XML_AttrInfo structures for the +attribute/value pairs passed in the last call to the +XML_StartElementHandler that were specified +in the start-tag rather than defaulted. Each attribute/value pair counts +as 1; thus the number of entries in the array is +XML_GetSpecifiedAttributeCount(parser) / 2. +
+ +
+enum XML_Status XMLCALL
+XML_SetEncoding(XML_Parser p,
+                const XML_Char *encoding);
+
+
+Set the encoding to be used by the parser. It is equivalent to +passing a non-null encoding argument to the parser creation functions. +It must not be called after XML_Parse or XML_ParseBuffer have been called on the given parser. +Returns XML_STATUS_OK on success or +XML_STATUS_ERROR on error. +
+ +
+int XMLCALL
+XML_SetParamEntityParsing(XML_Parser p,
+                          enum XML_ParamEntityParsing code);
+
+
+This enables parsing of parameter entities, including the external +parameter entity that is the external DTD subset, according to +code. +The choices for code are: +
    +
  • XML_PARAM_ENTITY_PARSING_NEVER
  • +
  • XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
  • +
  • XML_PARAM_ENTITY_PARSING_ALWAYS
  • +
+Note: If XML_SetParamEntityParsing is called after +XML_Parse or XML_ParseBuffer, then it has +no effect and will always return 0. +
+ +
+int XMLCALL
+XML_SetHashSalt(XML_Parser p,
+                unsigned long hash_salt);
+
+
+Sets the hash salt to use for internal hash calculations. +Helps in preventing DoS attacks based on predicting hash +function behavior. In order to have an effect this must be called +before parsing has started. Returns 1 if successful, 0 when called +after XML_Parse or XML_ParseBuffer. +

Note:This call is optional, as the parser will auto-generate +a new random salt value if no value has been set at the start of parsing. +

Note:One should not call XML_SetHashSalt with a +hash salt value of 0, as this value is used as sentinel value to indicate +that XML_SetHashSalt has not been called. Consequently +such a call will have no effect, even if it returns 1.

+
+ +
+enum XML_Error XMLCALL
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+
+
+

This function allows an application to provide an external subset +for the document type declaration for documents which do not specify +an external subset of their own. For documents which specify an +external subset in their DOCTYPE declaration, the application-provided +subset will be ignored. If the document does not contain a DOCTYPE +declaration at all and useDTD is true, the +application-provided subset will be parsed, but the +startDoctypeDeclHandler and +endDoctypeDeclHandler functions, if set, will not be +called. The setting of parameter entity parsing, controlled using +XML_SetParamEntityParsing, will be honored.

+ +

The application-provided external subset is read by calling the +external entity reference handler set via XML_SetExternalEntityRefHandler with both +publicId and systemId set to NULL.

+ +

If this function is called after parsing has begun, it returns +XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING and ignores +useDTD. If called when Expat has been compiled without +DTD support, it returns +XML_ERROR_FEATURE_REQUIRES_XML_DTD. Otherwise, it +returns XML_ERROR_NONE.

+ +

Note: For the purpose of checking WFC: Entity Declared, passing +useDTD == XML_TRUE will make the parser behave as if +the document had a DTD with an external subset. This holds true even if +the external entity reference handler returns without action.

+
+ +
+void XMLCALL
+XML_SetReturnNSTriplet(XML_Parser parser,
+                       int        do_nst);
+
+
+

+This function only has an effect when using a parser created with +XML_ParserCreateNS, +i.e. when namespace processing is in effect. The do_nst +sets whether or not prefixes are returned with names qualified with a +namespace prefix. If this function is called with do_nst +non-zero, then afterwards namespace qualified names (that is qualified +with a prefix as opposed to belonging to a default namespace) are +returned as a triplet with the three parts separated by the namespace +separator specified when the parser was created. The order of +returned parts is URI, local name, and prefix.

If +do_nst is zero, then namespaces are reported in the +default manner, URI then local_name separated by the namespace +separator.

+
+ +
+void XMLCALL
+XML_DefaultCurrent(XML_Parser parser);
+
+
+This can be called within a handler for a start element, end element, +processing instruction or character data. It causes the corresponding +markup to be passed to the default handler set by XML_SetDefaultHandler or +XML_SetDefaultHandlerExpand. It does nothing if there is +not a default handler. +
+ +
+XML_LChar * XMLCALL
+XML_ExpatVersion();
+
+
+Return the library version as a string (e.g. "expat_1.95.1"). +
+ +
+struct XML_Expat_Version XMLCALL
+XML_ExpatVersionInfo();
+
+
+typedef struct {
+  int major;
+  int minor;
+  int micro;
+} XML_Expat_Version;
+
+
+Return the library version information as a structure. +Some macros are also defined that support compile-time tests of the +library version: +
    +
  • XML_MAJOR_VERSION
  • +
  • XML_MINOR_VERSION
  • +
  • XML_MICRO_VERSION
  • +
+Testing these constants is currently the best way to determine if +particular parts of the Expat API are available. +
+ +
+const XML_Feature * XMLCALL
+XML_GetFeatureList();
+
+
+enum XML_FeatureEnum {
+  XML_FEATURE_END = 0,
+  XML_FEATURE_UNICODE,
+  XML_FEATURE_UNICODE_WCHAR_T,
+  XML_FEATURE_DTD,
+  XML_FEATURE_CONTEXT_BYTES,
+  XML_FEATURE_MIN_SIZE,
+  XML_FEATURE_SIZEOF_XML_CHAR,
+  XML_FEATURE_SIZEOF_XML_LCHAR,
+  XML_FEATURE_NS,
+  XML_FEATURE_LARGE_SIZE
+};
+
+typedef struct {
+  enum XML_FeatureEnum  feature;
+  XML_LChar            *name;
+  long int              value;
+} XML_Feature;
+
+
+

Returns a list of "feature" records, providing details on how +Expat was configured at compile time. Most applications should not +need to worry about this, but this information is otherwise not +available from Expat. This function allows code that does need to +check these features to do so at runtime.

+ +

The return value is an array of XML_Feature, +terminated by a record with a feature of +XML_FEATURE_END and name of NULL, +identifying the feature-test macros Expat was compiled with. Since an +application that requires this kind of information needs to determine +the type of character the name points to, records for the +XML_FEATURE_SIZEOF_XML_CHAR and +XML_FEATURE_SIZEOF_XML_LCHAR will be located at the +beginning of the list, followed by XML_FEATURE_UNICODE +and XML_FEATURE_UNICODE_WCHAR_T, if they are present at +all.

+ +

Some features have an associated value. If there isn't an +associated value, the value field is set to 0. At this +time, the following features have been defined to have values:

+ +
+
XML_FEATURE_SIZEOF_XML_CHAR
+
The number of bytes occupied by one XML_Char + character.
+
XML_FEATURE_SIZEOF_XML_LCHAR
+
The number of bytes occupied by one XML_LChar + character.
+
XML_FEATURE_CONTEXT_BYTES
+
The maximum number of characters of context which can be + reported by XML_GetInputContext.
+
+
+ +
+void XMLCALL
+XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+
+
+Function to deallocate the model argument passed to the +XML_ElementDeclHandler callback set using XML_ElementDeclHandler. +This function should not be used for any other purpose. +
+ +

The following functions allow external code to share the memory +allocator an XML_Parser has been configured to use. This +is especially useful for third-party libraries that interact with a +parser object created by application code, or heavily layered +applications. This can be essential when using dynamically loaded +libraries which use different C standard libraries (this can happen on +Windows, at least).

+ +
+void * XMLCALL
+XML_MemMalloc(XML_Parser parser, size_t size);
+
+
+Allocate size bytes of memory using the allocator the +parser object has been configured to use. Returns a +pointer to the memory or NULL on failure. Memory allocated in this +way must be freed using XML_MemFree. +
+ +
+void * XMLCALL
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+
+
+Allocate size bytes of memory using the allocator the +parser object has been configured to use. +ptr must point to a block of memory allocated by XML_MemMalloc or +XML_MemRealloc, or be NULL. This function tries to +expand the block pointed to by ptr if possible. Returns +a pointer to the memory or NULL on failure. On success, the original +block has either been expanded or freed. On failure, the original +block has not been freed; the caller is responsible for freeing the +original block. Memory allocated in this way must be freed using +XML_MemFree. +
+ +
+void XMLCALL
+XML_MemFree(XML_Parser parser, void *ptr);
+
+
+Free a block of memory pointed to by ptr. The block must +have been allocated by XML_MemMalloc or XML_MemRealloc, or be NULL. +
+ +
+

Valid XHTML 1.0!

+
+ + diff --git a/vendor/libexpat/doc/style.css b/vendor/libexpat/doc/style.css new file mode 100644 index 0000000..69df30b --- /dev/null +++ b/vendor/libexpat/doc/style.css @@ -0,0 +1,101 @@ +body { + background-color: white; + border: 0px; + margin: 0px; + padding: 0px; +} + +.corner { + width: 200px; + height: 80px; + text-align: center; +} + +.banner { + background-color: rgb(110,139,61); + color: rgb(255,236,176); + padding-left: 2em; +} + +.banner h1 { + font-size: 200%; +} + +.content { + padding: 0em 2em 1em 2em; +} + +.releaseno { + background-color: rgb(110,139,61); + color: rgb(255,236,176); + padding-bottom: 0.3em; + padding-top: 0.5em; + text-align: center; + font-weight: bold; +} + +.noborder { + border-width: 0px; +} + +.eg { + padding-left: 1em; + padding-top: .5em; + padding-bottom: .5em; + border: solid thin; + margin: 1em 0; + background-color: tan; + margin-left: 2em; + margin-right: 10%; +} + +.pseudocode { + padding-left: 1em; + padding-top: .5em; + padding-bottom: .5em; + border: solid thin; + margin: 1em 0; + background-color: rgb(250,220,180); + margin-left: 2em; + margin-right: 10%; +} + +.handler { + width: 100%; + border-top-width: thin; + margin-bottom: 1em; +} + +.handler p { + margin-left: 2em; +} + +.setter { + font-weight: bold; +} + +.signature { + color: navy; +} + +.fcndec { + width: 100%; + border-top-width: thin; + font-weight: bold; +} + +.fcndef { + margin-left: 2em; + margin-bottom: 2em; +} + +dd { + margin-bottom: 2em; +} + +.cpp-symbols dt { + font-family: monospace; +} +.cpp-symbols dd { + margin-bottom: 1em; +} diff --git a/vendor/libexpat/doc/valid-xhtml10.png b/vendor/libexpat/doc/valid-xhtml10.png new file mode 100644 index 0000000000000000000000000000000000000000..2f755c62b526e1c2ee8f14db7bf6a8c52d431ced GIT binary patch literal 2370 zcmbVNX;2f{7H-8QAWIODU~n{oVqipj2Gj;zXrqu80b5jPMj^IDoQNom3%24y*rc6t zX-3qDxI`T^ZWu+eMFE4rqXpDnji1ny7irVzjNz+U)8C) zc~KFe4t7KA003~1hsjVY##r|-feirk@^r3~0YLBEsPO3N)=Q(w#FCIsr!!KpRt@tE z&S02P4YMR^)M_;}Y1E?zf-ve(jX+>#Fq$H062)l-gbx!)HtY8sdN;~5s*QH zSa=@CaaIMgIH*(Ms9LY083;l&dQKw%3@Vid01R4;*0Xv@1VNA%m5M|HnuJIk6bS`1 z0f8XMXb_!5XfzrDkYs2?C;%uG2uMk(RH~&gj^p$c%(ASBHyaEFMvJK-sT9``8ivtp zFtwi5Viq%JZEoQ?9F^jT6oAyc0S7>}hJ-X~j3z)Gjgf>^Hb&F5&R{fKEM~I>CUr1^ zFa`smF>odxCUg`)}(xk`CEUqR{vjN92%qk6n5d$XG)0hCEQ54m)MhT_?5X$mbfGRDmk^(S=kU9iG zNUH`tZZz>YhMNBhPKU!VY}DyY49@dB1d2@70=?A;3QC1EO(KwpRH2|mNK+(+NI0EU zp@6`oymc~QiG{;CElQDAow&t-t5Atr$BINE3r|?x3NhMZA{Y%OL}@)D5ekJ2Yh)M( zBD4a8LQw=#X$1lSiXakefnIOa;{dFtH%&QWoyC$gG-A$wTv&1~%j6bI+J8^~4EBH1 z>3?VcXR_cQ-U0u^2`m=b;;$Rq0H7};mxV-!)fCLjj~_JMV_1Fp8^w%=TZ?D+iOsc@ z^@~2{o+|rp>Al#Z^%8|SGv&XXhF-laDMJe_tU_G}`3#(9R9sQ;OL^K<*O zI$st48Rb;crM)@t&5Sf}tt$ogULSE4bbE_YX*o9T%bL}LJIq@Iw<~IuG3pD+vmOi-O_tq1=ONm+ z98!IGf&H+8kSN-Bdf*<)l2Ms*N)hNBeeU05aAdhX7V zpWQAMif`Ufq_(WTj6)syHldwEj`&VZU)5ZLG++P8)pO@=Fs)zT#$or@glxa=8S3F5 z7Jnh2bL-v^`$-jRs~0&#XRbAghWQ*!3qJm6+2qH)Is-1IkiV6$ZSP+gAaDMD)}Hr0 z+)$sx?*fOs*!-xEZOG*a>IJa-%IH`xd2@16rT7{YR=9{uUb^$0?QhBpi4pLlnHd$2 zmz(pIIjW3vpX08s5O?DxGO+kg$N1_x;d$xQs})Xrl9o!(&6?tZibv(&%(4lK&6g%` zEIs6Z4AZ$^s#<*fVRS=Ucc-U+M(+`=Z=;(=9)IVT_+j3_)g6|*BjdYkZ)#(DPVA~$ zywI<)BfMU+vc9Wk8f=&o*!8sOtde!V`#VrC1j=!N(rnU)9=EK zbLZb@I9C&AQpG_PX^w)RsS}3YGfrutj@vu6-L6hKCa&Dz6gxM7e><(OV56YhH`zS= z_VSy`av-uRzGcq5x{b5t-+5g9;{CX@|6rw)V|+(ej`O^+KEa6F-07QlADq)Cx})g# ztv-$`ie|69zCU$s`R9o5-K6bfT-q}G+}Ff}=O10ESPw}@HoSTmhEDP7wQSbVaeLU} z;M>L z$*ab%Q$IId3j+&A{g#$2Q_HmtI~pv>z^aiNc&`&*{w-piVW_tfG{+rve=^7JP) zC-kRo51u)bX?mKqyLWO`W6*}4;X9aJ>1%^AGsO)eR zN|OF~riXGu?%TVroV-LAoVqT;fm=XT>?#{S@tMPy?FBViHG};!_rHJrr;YvCpw8gS z{DCB|yx{$D`}}t0__lBDQYw->tGjOXE~=f?UTBeQ9Tc|X;s=8T|NQ=z-2m&d8!+Ib qBuWUm$qs}Z*rE6|%jKKfq1uv8zkZvQ*6#<9PmhqDf)ln(wfi@;k;w=E literal 0 HcmV?d00001 diff --git a/vendor/libexpat/doc/xmlwf.1 b/vendor/libexpat/doc/xmlwf.1 new file mode 100644 index 0000000..174719a --- /dev/null +++ b/vendor/libexpat/doc/xmlwf.1 @@ -0,0 +1,251 @@ +.\" This manpage has been automatically generated by docbook2man +.\" from a DocBook document. This tool can be found at: +.\" +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng . +.TH "XMLWF" "1" "24 January 2003" "" "" +.SH NAME +xmlwf \- Determines if an XML document is well-formed +.SH SYNOPSIS + +\fBxmlwf\fR [ \fB-s\fR] [ \fB-n\fR] [ \fB-p\fR] [ \fB-x\fR] [ \fB-e \fIencoding\fB\fR] [ \fB-w\fR] [ \fB-d \fIoutput-dir\fB\fR] [ \fB-c\fR] [ \fB-m\fR] [ \fB-r\fR] [ \fB-t\fR] [ \fB-v\fR] [ \fBfile ...\fR] + +.SH "DESCRIPTION" +.PP +\fBxmlwf\fR uses the Expat library to +determine if an XML document is well-formed. It is +non-validating. +.PP +If you do not specify any files on the command-line, and you +have a recent version of \fBxmlwf\fR, the +input file will be read from standard input. +.SH "WELL-FORMED DOCUMENTS" +.PP +A well-formed document must adhere to the +following rules: +.TP 0.2i +\(bu +The file begins with an XML declaration. For instance, +. +\fBNOTE:\fR +\fBxmlwf\fR does not currently +check for a valid XML declaration. +.TP 0.2i +\(bu +Every start tag is either empty () +or has a corresponding end tag. +.TP 0.2i +\(bu +There is exactly one root element. This element must contain +all other elements in the document. Only comments, white +space, and processing instructions may come after the close +of the root element. +.TP 0.2i +\(bu +All elements nest properly. +.TP 0.2i +\(bu +All attribute values are enclosed in quotes (either single +or double). +.PP +If the document has a DTD, and it strictly complies with that +DTD, then the document is also considered \fBvalid\fR. +\fBxmlwf\fR is a non-validating parser -- +it does not check the DTD. However, it does support +external entities (see the \fB-x\fR option). +.SH "OPTIONS" +.PP +When an option includes an argument, you may specify the argument either +separately ("\fB-d\fR output") or concatenated with the +option ("\fB-d\fRoutput"). \fBxmlwf\fR +supports both. +.TP +\fB-c\fR +If the input file is well-formed and \fBxmlwf\fR +doesn't encounter any errors, the input file is simply copied to +the output directory unchanged. +This implies no namespaces (turns off \fB-n\fR) and +requires \fB-d\fR to specify an output file. +.TP +\fB-d output-dir\fR +Specifies a directory to contain transformed +representations of the input files. +By default, \fB-d\fR outputs a canonical representation +(described below). +You can select different output formats using \fB-c\fR +and \fB-m\fR. + +The output filenames will +be exactly the same as the input filenames or "STDIN" if the input is +coming from standard input. Therefore, you must be careful that the +output file does not go into the same directory as the input +file. Otherwise, \fBxmlwf\fR will delete the +input file before it generates the output file (just like running +cat < file > file in most shells). + +Two structurally equivalent XML documents have a byte-for-byte +identical canonical XML representation. +Note that ignorable white space is considered significant and +is treated equivalently to data. +More on canonical XML can be found at +http://www.jclark.com/xml/canonxml.html . +.TP +\fB-e encoding\fR +Specifies the character encoding for the document, overriding +any document encoding declaration. \fBxmlwf\fR +supports four built-in encodings: +US-ASCII, +UTF-8, +UTF-16, and +ISO-8859-1. +Also see the \fB-w\fR option. +.TP +\fB-m\fR +Outputs some strange sort of XML file that completely +describes the input file, including character positions. +Requires \fB-d\fR to specify an output file. +.TP +\fB-n\fR +Turns on namespace processing. (describe namespaces) +\fB-c\fR disables namespaces. +.TP +\fB-p\fR +Tells xmlwf to process external DTDs and parameter +entities. + +Normally \fBxmlwf\fR never parses parameter +entities. \fB-p\fR tells it to always parse them. +\fB-p\fR implies \fB-x\fR. +.TP +\fB-r\fR +Normally \fBxmlwf\fR memory-maps the XML file +before parsing; this can result in faster parsing on many +platforms. +\fB-r\fR turns off memory-mapping and uses normal file +IO calls instead. +Of course, memory-mapping is automatically turned off +when reading from standard input. + +Use of memory-mapping can cause some platforms to report +substantially higher memory usage for +\fBxmlwf\fR, but this appears to be a matter of +the operating system reporting memory in a strange way; there is +not a leak in \fBxmlwf\fR. +.TP +\fB-s\fR +Prints an error if the document is not standalone. +A document is standalone if it has no external subset and no +references to parameter entities. +.TP +\fB-t\fR +Turns on timings. This tells Expat to parse the entire file, +but not perform any processing. +This gives a fairly accurate idea of the raw speed of Expat itself +without client overhead. +\fB-t\fR turns off most of the output options +(\fB-d\fR, \fB-m\fR, \fB-c\fR, +\&...). +.TP +\fB-v\fR +Prints the version of the Expat library being used, including some +information on the compile-time configuration of the library, and +then exits. +.TP +\fB-w\fR +Enables support for Windows code pages. +Normally, \fBxmlwf\fR will throw an error if it +runs across an encoding that it is not equipped to handle itself. With +\fB-w\fR, xmlwf will try to use a Windows code +page. See also \fB-e\fR. +.TP +\fB-x\fR +Turns on parsing external entities. + +Non-validating parsers are not required to resolve external +entities, or even expand entities at all. +Expat always expands internal entities (?), +but external entity parsing must be enabled explicitly. + +External entities are simply entities that obtain their +data from outside the XML file currently being parsed. + +This is an example of an internal entity: + +.nf + +.fi + +And here are some examples of external entities: + +.nf + (parsed) + (unparsed) +.fi +.TP +\fB--\fR +(Two hyphens.) +Terminates the list of options. This is only needed if a filename +starts with a hyphen. For example: + +.nf +xmlwf -- -myfile.xml +.fi + +will run \fBxmlwf\fR on the file +\fI-myfile.xml\fR. +.PP +Older versions of \fBxmlwf\fR do not support +reading from standard input. +.SH "OUTPUT" +.PP +If an input file is not well-formed, +\fBxmlwf\fR prints a single line describing +the problem to standard output. If a file is well formed, +\fBxmlwf\fR outputs nothing. +Note that the result code is \fBnot\fR set. +.SH "BUGS" +.PP +According to the W3C standard, an XML file without a +declaration at the beginning is not considered well-formed. +However, \fBxmlwf\fR allows this to pass. +.PP +\fBxmlwf\fR returns a 0 - noerr result, +even if the file is not well-formed. There is no good way for +a program to use \fBxmlwf\fR to quickly +check a file -- it must parse \fBxmlwf\fR's +standard output. +.PP +The errors should go to standard error, not standard output. +.PP +There should be a way to get \fB-d\fR to send its +output to standard output rather than forcing the user to send +it to a file. +.PP +I have no idea why anyone would want to use the +\fB-d\fR, \fB-c\fR, and +\fB-m\fR options. If someone could explain it to +me, I'd like to add this information to this manpage. +.SH "ALTERNATIVES" +.PP +Here are some XML validators on the web: + +.nf +http://www.hcrc.ed.ac.uk/~richard/xml-check.html +http://www.stg.brown.edu/service/xmlvalid/ +http://www.scripting.com/frontier5/xml/code/xmlValidator.html +http://www.xml.com/pub/a/tools/ruwf/check.html +.fi +.SH "SEE ALSO" +.PP + +.nf +The Expat home page: http://www.libexpat.org/ +The W3 XML specification: http://www.w3.org/TR/REC-xml +.fi +.SH "AUTHOR" +.PP +This manual page was written by Scott Bronson for +the Debian GNU/Linux system (but may be used by others). Permission is +granted to copy, distribute and/or modify this document under +the terms of the GNU Free Documentation +License, Version 1.1. diff --git a/vendor/libexpat/doc/xmlwf.sgml b/vendor/libexpat/doc/xmlwf.sgml new file mode 100644 index 0000000..313cfbc --- /dev/null +++ b/vendor/libexpat/doc/xmlwf.sgml @@ -0,0 +1,468 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + --> + + + Scott"> + Bronson"> + + December 5, 2001"> + + 1"> + bronson@rinspin.com"> + + XMLWF"> + + + Debian GNU/Linux"> + GNU"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + Determines if an XML document is well-formed + + + + &dhpackage; + + + + + + + + + + + + + + + + + + file ... + + + + + DESCRIPTION + + + &dhpackage; uses the Expat library to + determine if an XML document is well-formed. It is + non-validating. + + + + If you do not specify any files on the command-line, and you + have a recent version of &dhpackage;, the + input file will be read from standard input. + + + + + + WELL-FORMED DOCUMENTS + + + A well-formed document must adhere to the + following rules: + + + + + The file begins with an XML declaration. For instance, + <?xml version="1.0" standalone="yes"?>. + NOTE: + &dhpackage; does not currently + check for a valid XML declaration. + + + Every start tag is either empty (<tag/>) + or has a corresponding end tag. + + + There is exactly one root element. This element must contain + all other elements in the document. Only comments, white + space, and processing instructions may come after the close + of the root element. + + + All elements nest properly. + + + All attribute values are enclosed in quotes (either single + or double). + + + + + If the document has a DTD, and it strictly complies with that + DTD, then the document is also considered valid. + &dhpackage; is a non-validating parser -- + it does not check the DTD. However, it does support + external entities (see the option). + + + + + OPTIONS + + +When an option includes an argument, you may specify the argument either +separately (" output") or concatenated with the +option ("output"). &dhpackage; +supports both. + + + + + + + + + If the input file is well-formed and &dhpackage; + doesn't encounter any errors, the input file is simply copied to + the output directory unchanged. + This implies no namespaces (turns off ) and + requires to specify an output file. + + + + + + + + + Specifies a directory to contain transformed + representations of the input files. + By default, outputs a canonical representation + (described below). + You can select different output formats using + and . + + + The output filenames will + be exactly the same as the input filenames or "STDIN" if the input is + coming from standard input. Therefore, you must be careful that the + output file does not go into the same directory as the input + file. Otherwise, &dhpackage; will delete the + input file before it generates the output file (just like running + cat < file > file in most shells). + + + Two structurally equivalent XML documents have a byte-for-byte + identical canonical XML representation. + Note that ignorable white space is considered significant and + is treated equivalently to data. + More on canonical XML can be found at + http://www.jclark.com/xml/canonxml.html . + + + + + + + + + Specifies the character encoding for the document, overriding + any document encoding declaration. &dhpackage; + supports four built-in encodings: + US-ASCII, + UTF-8, + UTF-16, and + ISO-8859-1. + Also see the option. + + + + + + + + + Outputs some strange sort of XML file that completely + describes the the input file, including character postitions. + Requires to specify an output file. + + + + + + + + + Turns on namespace processing. (describe namespaces) + disables namespaces. + + + + + + + + + Tells xmlwf to process external DTDs and parameter + entities. + + + Normally &dhpackage; never parses parameter + entities. tells it to always parse them. + implies . + + + + + + + + + Normally &dhpackage; memory-maps the XML file + before parsing; this can result in faster parsing on many + platforms. + turns off memory-mapping and uses normal file + IO calls instead. + Of course, memory-mapping is automatically turned off + when reading from standard input. + + + Use of memory-mapping can cause some platforms to report + substantially higher memory usage for + &dhpackage;, but this appears to be a matter of + the operating system reporting memory in a strange way; there is + not a leak in &dhpackage;. + + + + + + + + + Prints an error if the document is not standalone. + A document is standalone if it has no external subset and no + references to parameter entities. + + + + + + + + + Turns on timings. This tells Expat to parse the entire file, + but not perform any processing. + This gives a fairly accurate idea of the raw speed of Expat itself + without client overhead. + turns off most of the output options + (, , , + ...). + + + + + + + + + Prints the version of the Expat library being used, including some + information on the compile-time configuration of the library, and + then exits. + + + + + + + + + Enables support for Windows code pages. + Normally, &dhpackage; will throw an error if it + runs across an encoding that it is not equipped to handle itself. With + , &dhpackage; will try to use a Windows code + page. See also . + + + + + + + + + Turns on parsing external entities. + + + Non-validating parsers are not required to resolve external + entities, or even expand entities at all. + Expat always expands internal entities (?), + but external entity parsing must be enabled explicitly. + + + External entities are simply entities that obtain their + data from outside the XML file currently being parsed. + + + This is an example of an internal entity: + +<!ENTITY vers '1.0.2'> + + + + And here are some examples of external entities: + + +<!ENTITY header SYSTEM "header-&vers;.xml"> (parsed) +<!ENTITY logo SYSTEM "logo.png" PNG> (unparsed) + + + + + + + + + + + (Two hyphens.) + Terminates the list of options. This is only needed if a filename + starts with a hyphen. For example: + + +&dhpackage; -- -myfile.xml + + + will run &dhpackage; on the file + -myfile.xml. + + + + + + + Older versions of &dhpackage; do not support + reading from standard input. + + + + + OUTPUT + + If an input file is not well-formed, + &dhpackage; prints a single line describing + the problem to standard output. If a file is well formed, + &dhpackage; outputs nothing. + Note that the result code is not set. + + + + + BUGS + + &dhpackage; returns a 0 - noerr result, + even if the file is not well-formed. There is no good way for + a program to use &dhpackage; to quickly + check a file -- it must parse &dhpackage;'s + standard output. + + + The errors should go to standard error, not standard output. + + + There should be a way to get to send its + output to standard output rather than forcing the user to send + it to a file. + + + I have no idea why anyone would want to use the + , , and + options. If someone could explain it to + me, I'd like to add this information to this manpage. + + + + + ALTERNATIVES + + Here are some XML validators on the web: + + +http://www.hcrc.ed.ac.uk/~richard/xml-check.html +http://www.stg.brown.edu/service/xmlvalid/ +http://www.scripting.com/frontier5/xml/code/xmlValidator.html +http://www.xml.com/pub/a/tools/ruwf/check.html + + + + + + + SEE ALSO + + + +The Expat home page: http://www.libexpat.org/ +The W3 XML specification: http://www.w3.org/TR/REC-xml + + + + + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the GNU Free Documentation + License, Version 1.1. + + +
+ + diff --git a/vendor/libexpat/examples/elements.c b/vendor/libexpat/examples/elements.c new file mode 100644 index 0000000..0ca1abd --- /dev/null +++ b/vendor/libexpat/examples/elements.c @@ -0,0 +1,72 @@ +/* This is simple demonstration of how to use expat. This program + reads an XML document from standard input and writes a line with + the name of each element to standard output indenting child + elements by one tab stop more than their parent element. + It must be used with Expat compiled for UTF-8 output. +*/ + +#include +#include "expat.h" + +#if defined(__amigaos__) && defined(__USE_INLINE__) +#include +#endif + +#ifdef XML_LARGE_SIZE +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +#define XML_FMT_INT_MOD "I64" +#else +#define XML_FMT_INT_MOD "ll" +#endif +#else +#define XML_FMT_INT_MOD "l" +#endif + +static void XMLCALL +startElement(void *userData, const char *name, const char **atts) +{ + int i; + int *depthPtr = (int *)userData; + (void)atts; + + for (i = 0; i < *depthPtr; i++) + putchar('\t'); + puts(name); + *depthPtr += 1; +} + +static void XMLCALL +endElement(void *userData, const char *name) +{ + int *depthPtr = (int *)userData; + (void)name; + + *depthPtr -= 1; +} + +int +main(int argc, char *argv[]) +{ + char buf[BUFSIZ]; + XML_Parser parser = XML_ParserCreate(NULL); + int done; + int depth = 0; + (void)argc; + (void)argv; + + XML_SetUserData(parser, &depth); + XML_SetElementHandler(parser, startElement, endElement); + do { + size_t len = fread(buf, 1, sizeof(buf), stdin); + done = len < sizeof(buf); + if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) { + fprintf(stderr, + "%s at line %" XML_FMT_INT_MOD "u\n", + XML_ErrorString(XML_GetErrorCode(parser)), + XML_GetCurrentLineNumber(parser)); + return 1; + } + } while (!done); + XML_ParserFree(parser); + return 0; +} diff --git a/vendor/libexpat/examples/elements.dsp b/vendor/libexpat/examples/elements.dsp new file mode 100644 index 0000000..5e750c4 --- /dev/null +++ b/vendor/libexpat/examples/elements.dsp @@ -0,0 +1,103 @@ +# Microsoft Developer Studio Project File - Name="elements" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=elements - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "elements.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "elements.mak" CFG="elements - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "elements - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "elements - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "elements - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release-elements" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "XML_STATIC" /FD /c +# SUBTRACT CPP /X /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 +# ADD LINK32 libexpatMT.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\elements.exe" + +!ELSEIF "$(CFG)" == "elements - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug-elements" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "XML_STATIC" /FR /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 libexpatMT.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\elements.exe" + +!ENDIF + +# Begin Target + +# Name "elements - Win32 Release" +# Name "elements - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\elements.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/examples/outline.c b/vendor/libexpat/examples/outline.c new file mode 100644 index 0000000..d9b0917 --- /dev/null +++ b/vendor/libexpat/examples/outline.c @@ -0,0 +1,113 @@ +/***************************************************************** + * outline.c + * + * Copyright 1999, Clark Cooper + * All rights reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the license contained in the + * COPYING file that comes with the expat distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Read an XML document from standard input and print an element + * outline on standard output. + * Must be used with Expat compiled for UTF-8 output. + */ + + +#include +#include + +#if defined(__amigaos__) && defined(__USE_INLINE__) +#include +#endif + +#ifdef XML_LARGE_SIZE +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +#define XML_FMT_INT_MOD "I64" +#else +#define XML_FMT_INT_MOD "ll" +#endif +#else +#define XML_FMT_INT_MOD "l" +#endif + +#define BUFFSIZE 8192 + +char Buff[BUFFSIZE]; + +int Depth; + +static void XMLCALL +start(void *data, const char *el, const char **attr) +{ + int i; + (void)data; + + for (i = 0; i < Depth; i++) + printf(" "); + + printf("%s", el); + + for (i = 0; attr[i]; i += 2) { + printf(" %s='%s'", attr[i], attr[i + 1]); + } + + printf("\n"); + Depth++; +} + +static void XMLCALL +end(void *data, const char *el) +{ + (void)data; + (void)el; + + Depth--; +} + +int +main(int argc, char *argv[]) +{ + XML_Parser p = XML_ParserCreate(NULL); + (void)argc; + (void)argv; + + if (! p) { + fprintf(stderr, "Couldn't allocate memory for parser\n"); + exit(-1); + } + + XML_SetElementHandler(p, start, end); + + for (;;) { + int done; + int len; + + len = (int)fread(Buff, 1, BUFFSIZE, stdin); + if (ferror(stdin)) { + fprintf(stderr, "Read error\n"); + exit(-1); + } + done = feof(stdin); + + if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) { + fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n", + XML_GetCurrentLineNumber(p), + XML_ErrorString(XML_GetErrorCode(p))); + exit(-1); + } + + if (done) + break; + } + XML_ParserFree(p); + return 0; +} diff --git a/vendor/libexpat/examples/outline.dsp b/vendor/libexpat/examples/outline.dsp new file mode 100644 index 0000000..acadf4b --- /dev/null +++ b/vendor/libexpat/examples/outline.dsp @@ -0,0 +1,103 @@ +# Microsoft Developer Studio Project File - Name="outline" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=outline - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "outline.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "outline.mak" CFG="outline - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "outline - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "outline - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "outline - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release-outline" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /X /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 +# ADD LINK32 libexpat.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\outline.exe" + +!ELSEIF "$(CFG)" == "outline - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug-outline" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 libexpat.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\outline.exe" + +!ENDIF + +# Begin Target + +# Name "outline - Win32 Release" +# Name "outline - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\outline.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/expat.dsw b/vendor/libexpat/expat.dsw new file mode 100644 index 0000000..2d62eec --- /dev/null +++ b/vendor/libexpat/expat.dsw @@ -0,0 +1,110 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "elements"=.\examples\elements.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name expat_static + End Project Dependency +}}} + +############################################################################### + +Project: "expat"=.\lib\expat.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "expat_static"=.\lib\expat_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "expatw"=.\lib\expatw.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "expatw_static"=.\lib\expatw_static.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "outline"=.\examples\outline.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name expat + End Project Dependency +}}} + +############################################################################### + +Project: "xmlwf"=.\xmlwf\xmlwf.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name expat + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/vendor/libexpat/expat.pc.in b/vendor/libexpat/expat.pc.in new file mode 100644 index 0000000..5207e3e --- /dev/null +++ b/vendor/libexpat/expat.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: expat +Version: @PACKAGE_VERSION@ +Description: expat XML parser +URL: http://www.libexpat.org +Libs: -L${libdir} -lexpat +Cflags: -I${includedir} diff --git a/vendor/libexpat/expat_config.h b/vendor/libexpat/expat_config.h new file mode 100644 index 0000000..724f47f --- /dev/null +++ b/vendor/libexpat/expat_config.h @@ -0,0 +1,103 @@ +/* expat_config.h. Generated from expat_config.h.in by configure. */ +/* expat_config.h.in. Generated from configure.in by autoheader. */ + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 1234 + +/* Define to 1 if you have the `bcopy' function. */ +#define HAVE_BCOPY 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have a working `mmap' system call. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "expat-bugs@libexpat.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "expat" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "expat 2.1.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "expat" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.1.0" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* whether byteorder is bigendian */ +/* #undef WORDS_BIGENDIAN */ + +/* Define to specify how much context to retain around the current parse + point. */ +#define XML_CONTEXT_BYTES 1024 + +/* Define to make parameter entity parsing functionality available. */ +#define XML_DTD 1 + +/* Define to make XML Namespaces functionality available. */ +#define XML_NS 1 + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +/* #undef __func__ */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ diff --git a/vendor/libexpat/expat_config.h.cmake b/vendor/libexpat/expat_config.h.cmake new file mode 100644 index 0000000..25d79a6 --- /dev/null +++ b/vendor/libexpat/expat_config.h.cmake @@ -0,0 +1,91 @@ +/* expat_config.h.in. Generated from configure.in by autoheader. */ + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#cmakedefine BYTEORDER @BYTEORDER@ + +/* Define to 1 if you have the `bcopy' function. */ +#cmakedefine HAVE_BCOPY + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the `memmove' function. */ +#cmakedefine HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#cmakedefine HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* whether byteorder is bigendian */ +#cmakedefine WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@ + +/* Define to make parameter entity parsing functionality available. */ +#cmakedefine XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#cmakedefine XML_NS + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +#ifdef _MSC_VER +# define __func__ __FUNCTION__ +#endif + +/* Define to `long' if does not define. */ +#cmakedefine off_t @OFF_T@ + +/* Define to `unsigned' if does not define. */ +#cmakedefine size_t @SIZE_T@ diff --git a/vendor/libexpat/expat_config.h.in b/vendor/libexpat/expat_config.h.in new file mode 100644 index 0000000..8c6e514 --- /dev/null +++ b/vendor/libexpat/expat_config.h.in @@ -0,0 +1,102 @@ +/* expat_config.h.in. Generated from configure.in by autoheader. */ + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#undef BYTEORDER + +/* Define to 1 if you have the `bcopy' function. */ +#undef HAVE_BCOPY + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* whether byteorder is bigendian */ +#undef WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#undef XML_CONTEXT_BYTES + +/* Define to make parameter entity parsing functionality available. */ +#undef XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#undef XML_NS + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +#undef __func__ + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t diff --git a/vendor/libexpat/lib/Makefile.MPW b/vendor/libexpat/lib/Makefile.MPW new file mode 100644 index 0000000..046af00 --- /dev/null +++ b/vendor/libexpat/lib/Makefile.MPW @@ -0,0 +1,206 @@ +# File: Makefile.MPW +# Targets: All, Dynamic, Static (and Clean, Clean-All) +# Created: Tuesday, July 02, 2002 +# +# MPW Makefile for building expat under the "classic" (i.e. pre-X) Mac OS +# Copyright © 2002 Daryle Walker +# Portions Copyright © 2002 Thomas Wegner +# See the COPYING file for distribution information +# +# Description: +# This Makefile lets you build static, dynamic (i.e. shared) and stub +# versions of the expat library as well as the elements.c and outline.c +# examples (built as tools for MPW). This is for PPC only; it should be +# no problem to build a 68K version of the expat library, though. +# +# Usage: +# Buildprogram All +# or Buildprogram Dynamic +# or Buildprogram Static +# +# Note: You first have to rename this file to "Makefile", or the Buildprogram +# commando will not recognize it. +# + +MAKEFILE = Makefile +¥MondoBuild¥ = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = : +SrcDir = : +HdrDir = : + +ToolDir = ::examples: + +Includes = -i {HdrDir} + +Sym-PPC = -sym off + +Defines = -d MACOS_CLASSIC + +PPCCOptions = {Includes} {Sym-PPC} -w 35 {Defines} + +FragName = libexpat + + +### Source Files ### + +SrcFiles = ¶ + "{SrcDir}xmlparse.c" ¶ + "{SrcDir}xmlrole.c" ¶ + "{SrcDir}xmltok.c" + +ToolSrcFiles = ¶ + "{ToolDir}elements.c" ¶ + "{ToolDir}outline.c" + + +### Object Files ### + +ObjFiles-PPC = ¶ + "{ObjDir}xmlparse.c.o" ¶ + "{ObjDir}xmlrole.c.o" ¶ + "{ObjDir}xmltok.c.o" + +ElementToolObjFile = "{ObjDir}elements.c.o" + +OutlineToolObjFile = "{ObjDir}outline.c.o" + + +### Libraries ### + +StLibFiles-PPC = ¶ + "{PPCLibraries}StdCRuntime.o" ¶ + "{PPCLibraries}PPCCRuntime.o" ¶ + "{PPCLibraries}PPCToolLibs.o" + +ShLibFiles-PPC = ¶ + "{SharedLibraries}InterfaceLib" ¶ + "{SharedLibraries}StdCLib" ¶ + "{SharedLibraries}MathLib" + +LibFiles-PPC = ¶ + {StLibFiles-PPC} ¶ + {ShLibFiles-PPC} + + +### Special Files ### + +ExportFile = "{ObjDir}{FragName}.exp" + +StLibFile = "{ObjDir}{FragName}.MrC.o" + +ShLibFile = "{ObjDir}{FragName}" + +StubFile = "{ObjDir}{FragName}.stub" + +ElementsTool = "{ToolDir}elements" + +OutlineTool = "{ToolDir}outline" + + +### Default Rules ### + +.c.o Ä .c {¥MondoBuild¥} + {PPCC} {depDir}{default}.c -o {targDir}{default}.c.o {PPCCOptions} + + +### Build Rules ### + +All Ä Dynamic {ElementsTool} {OutlineTool} + +Static Ä {StLibFile} + +Dynamic Ä Static {ShLibFile} {StubFile} + +{StLibFile} ÄÄ {ObjFiles-PPC} {StLibFiles-PPC} {¥MondoBuild¥} + PPCLink ¶ + -o {Targ} ¶ + {ObjFiles-PPC} ¶ + {StLibFiles-PPC} ¶ + {Sym-PPC} ¶ + -mf -d ¶ + -t 'XCOF' ¶ + -c 'MPS ' ¶ + -xm l + +{ShLibFile} ÄÄ {StLibFile} {ShLibFiles-PPC} {ExportFile} {¥MondoBuild¥} + PPCLink ¶ + -o {Targ} ¶ + {StLibFile} ¶ + {ShLibFiles-PPC} ¶ + {Sym-PPC} ¶ + -@export {ExportFile} ¶ + -fragname {FragName} ¶ + -mf -d ¶ + -t 'shlb' ¶ + -c '????' ¶ + -xm s + +{StubFile} ÄÄ {ShLibFile} {¥MondoBuild¥} + shlb2stub -o {Targ} {ShLibFile} + +{ElementsTool} ÄÄ {ElementToolObjFile} {StubFile} {LibFiles-PPC} {¥MondoBuild¥} + PPCLink ¶ + -o {Targ} ¶ + {ElementToolObjFile} ¶ + {StLibFile} ¶ + {LibFiles-PPC} ¶ + {Sym-PPC} ¶ + -mf -d ¶ + -t 'MPST' ¶ + -c 'MPS ' + +{OutlineTool} ÄÄ {OutlineToolObjFile} {StubFile} {LibFiles-PPC} {¥MondoBuild¥} + PPCLink ¶ + -o {Targ} ¶ + {OutlineToolObjFile} ¶ + {StLibFile} ¶ + {LibFiles-PPC} ¶ + {Sym-PPC} ¶ + -mf -d ¶ + -t 'MPST' ¶ + -c 'MPS ' + + +### Special Rules ### + +{ExportFile} ÄÄ "{HdrDir}expat.h" {¥MondoBuild¥} + StreamEdit -d ¶ + -e "/¥('XMLPARSEAPI('Å') ')Ç0,1È'XML_'([A-Za-z0-9_]+)¨1'('/ Print 'XML_' ¨1" ¶ + "{HdrDir}expat.h" > {Targ} + + +### Required Dependencies ### + +"{ObjDir}xmlparse.c.o" Ä "{SrcDir}xmlparse.c" +"{ObjDir}xmlrole.c.o" Ä "{SrcDir}xmlrole.c" +"{ObjDir}xmltok.c.o" Ä "{SrcDir}xmltok.c" + +"{ObjDir}elements.c.o" Ä "{ToolDir}elements.c" +"{ObjDir}outline.c.o" Ä "{ToolDir}outline.c" + + +### Optional Dependencies ### +### Build this target to clean out generated intermediate files. ### + +Clean Ä + Delete {ObjFiles-PPC} {ExportFile} {ElementToolObjFile} {OutlineToolObjFile} + +### Build this target to clean out all generated files. ### + +Clean-All Ä Clean + Delete {StLibFile} {ShLibFile} {StubFile} {ElementsTool} {OutlineTool} + +### Build this target to generate "include file" dependencies. ### + +Dependencies Ä $OutOfDate + MakeDepend ¶ + -append {MAKEFILE} ¶ + -ignore "{CIncludes}" ¶ + -objdir "{ObjDir}" ¶ + -objext .o ¶ + {Defines} ¶ + {Includes} ¶ + {SrcFiles} + + diff --git a/vendor/libexpat/lib/amigaconfig.h b/vendor/libexpat/lib/amigaconfig.h new file mode 100644 index 0000000..49c92c7 --- /dev/null +++ b/vendor/libexpat/lib/amigaconfig.h @@ -0,0 +1,29 @@ +#ifndef AMIGACONFIG_H +#define AMIGACONFIG_H + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 4321 + +/* Define to 1 if you have the `bcopy' function. */ +#define HAVE_BCOPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* whether byteorder is bigendian */ +#define WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#define XML_CONTEXT_BYTES 1024 + +/* Define to make parameter entity parsing functionality available. */ +#define XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#define XML_NS + +#endif /* AMIGACONFIG_H */ diff --git a/vendor/libexpat/lib/ascii.h b/vendor/libexpat/lib/ascii.h new file mode 100644 index 0000000..d10530b --- /dev/null +++ b/vendor/libexpat/lib/ascii.h @@ -0,0 +1,92 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#define ASCII_A 0x41 +#define ASCII_B 0x42 +#define ASCII_C 0x43 +#define ASCII_D 0x44 +#define ASCII_E 0x45 +#define ASCII_F 0x46 +#define ASCII_G 0x47 +#define ASCII_H 0x48 +#define ASCII_I 0x49 +#define ASCII_J 0x4A +#define ASCII_K 0x4B +#define ASCII_L 0x4C +#define ASCII_M 0x4D +#define ASCII_N 0x4E +#define ASCII_O 0x4F +#define ASCII_P 0x50 +#define ASCII_Q 0x51 +#define ASCII_R 0x52 +#define ASCII_S 0x53 +#define ASCII_T 0x54 +#define ASCII_U 0x55 +#define ASCII_V 0x56 +#define ASCII_W 0x57 +#define ASCII_X 0x58 +#define ASCII_Y 0x59 +#define ASCII_Z 0x5A + +#define ASCII_a 0x61 +#define ASCII_b 0x62 +#define ASCII_c 0x63 +#define ASCII_d 0x64 +#define ASCII_e 0x65 +#define ASCII_f 0x66 +#define ASCII_g 0x67 +#define ASCII_h 0x68 +#define ASCII_i 0x69 +#define ASCII_j 0x6A +#define ASCII_k 0x6B +#define ASCII_l 0x6C +#define ASCII_m 0x6D +#define ASCII_n 0x6E +#define ASCII_o 0x6F +#define ASCII_p 0x70 +#define ASCII_q 0x71 +#define ASCII_r 0x72 +#define ASCII_s 0x73 +#define ASCII_t 0x74 +#define ASCII_u 0x75 +#define ASCII_v 0x76 +#define ASCII_w 0x77 +#define ASCII_x 0x78 +#define ASCII_y 0x79 +#define ASCII_z 0x7A + +#define ASCII_0 0x30 +#define ASCII_1 0x31 +#define ASCII_2 0x32 +#define ASCII_3 0x33 +#define ASCII_4 0x34 +#define ASCII_5 0x35 +#define ASCII_6 0x36 +#define ASCII_7 0x37 +#define ASCII_8 0x38 +#define ASCII_9 0x39 + +#define ASCII_TAB 0x09 +#define ASCII_SPACE 0x20 +#define ASCII_EXCL 0x21 +#define ASCII_QUOT 0x22 +#define ASCII_AMP 0x26 +#define ASCII_APOS 0x27 +#define ASCII_MINUS 0x2D +#define ASCII_PERIOD 0x2E +#define ASCII_COLON 0x3A +#define ASCII_SEMI 0x3B +#define ASCII_LT 0x3C +#define ASCII_EQUALS 0x3D +#define ASCII_GT 0x3E +#define ASCII_LSQB 0x5B +#define ASCII_RSQB 0x5D +#define ASCII_UNDERSCORE 0x5F +#define ASCII_LPAREN 0x28 +#define ASCII_RPAREN 0x29 +#define ASCII_FF 0x0C +#define ASCII_SLASH 0x2F +#define ASCII_HASH 0x23 +#define ASCII_PIPE 0x7C +#define ASCII_COMMA 0x2C diff --git a/vendor/libexpat/lib/asciitab.h b/vendor/libexpat/lib/asciitab.h new file mode 100644 index 0000000..79a15c2 --- /dev/null +++ b/vendor/libexpat/lib/asciitab.h @@ -0,0 +1,36 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, +/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, +/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, +/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, +/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, +/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, +/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, +/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, +/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, +/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, +/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/vendor/libexpat/lib/expat.dsp b/vendor/libexpat/lib/expat.dsp new file mode 100644 index 0000000..e03cac5 --- /dev/null +++ b/vendor/libexpat/lib/expat.dsp @@ -0,0 +1,185 @@ +# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=expat - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "expat.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "expat - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /dll /machine:I386 +# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpat.dll" + +!ELSEIF "$(CFG)" == "expat - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpat.dll" + +!ENDIF + +# Begin Target + +# Name "expat - Win32 Release" +# Name "expat - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\libexpat.def +# End Source File +# Begin Source File + +SOURCE=.\xmlparse.c + +!IF "$(CFG)" == "expat - Win32 Release" + +!ELSEIF "$(CFG)" == "expat - Win32 Debug" + +# ADD CPP /GX- /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_ns.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ascii.h +# End Source File +# Begin Source File + +SOURCE=.\asciitab.h +# End Source File +# Begin Source File + +SOURCE=.\expat.h +# End Source File +# Begin Source File + +SOURCE=.\expat_external.h +# End Source File +# Begin Source File + +SOURCE=.\iasciitab.h +# End Source File +# Begin Source File + +SOURCE=.\internal.h +# End Source File +# Begin Source File + +SOURCE=.\latin1tab.h +# End Source File +# Begin Source File + +SOURCE=.\nametab.h +# End Source File +# Begin Source File + +SOURCE=.\utf8tab.h +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/lib/expat.h b/vendor/libexpat/lib/expat.h new file mode 100644 index 0000000..086e24b --- /dev/null +++ b/vendor/libexpat/lib/expat.h @@ -0,0 +1,1048 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef Expat_INCLUDED +#define Expat_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler +#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler +#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler +#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg +#endif + +#include +#include "expat_external.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +/* Should this be defined using stdbool.h when C99 is available? */ +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool) 1) +#define XML_FALSE ((XML_Bool) 0) + +/* The XML_Status enum gives the possible return values for several + API functions. The preprocessor #defines are included so this + stanza can be added to code that still needs to support older + versions of Expat 1.95.x: + + #ifndef XML_STATUS_OK + #define XML_STATUS_OK 1 + #define XML_STATUS_ERROR 0 + #endif + + Otherwise, the #define hackery is quite ugly and would have been + dropped. +*/ +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1, +#define XML_STATUS_OK XML_STATUS_OK + XML_STATUS_SUSPENDED = 2 +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + /* Added in 1.95.7. */ + XML_ERROR_UNBOUND_PREFIX, + /* Added in 1.95.8. */ + XML_ERROR_UNDECLARING_PREFIX, + XML_ERROR_INCOMPLETE_PE, + XML_ERROR_XML_DECL, + XML_ERROR_TEXT_DECL, + XML_ERROR_PUBLICID, + XML_ERROR_SUSPENDED, + XML_ERROR_NOT_SUSPENDED, + XML_ERROR_ABORTED, + XML_ERROR_FINISHED, + XML_ERROR_SUSPEND_PE, + /* Added in 2.0. */ + XML_ERROR_RESERVED_PREFIX_XML, + XML_ERROR_RESERVED_PREFIX_XMLNS, + XML_ERROR_RESERVED_NAMESPACE_URI +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be + XML_CQUANT_NONE, and the other fields will be zero or NULL. + If type == XML_CTYPE_MIXED, then quant will be NONE or REP and + numchildren will contain number of elements that may be mixed in + and children point to an array of XML_Content cells that will be + all of XML_CTYPE_NAME type with no quantification. + + If type == XML_CTYPE_NAME, then the name points to the name, and + the numchildren field will be zero and children will be NULL. The + quant fields indicates any quantifiers placed on the name. + + CHOICE and SEQ will have name NULL, the number of children in + numchildren and children will point, recursively, to an array + of XML_Content cells. + + The EMPTY, ANY, and MIXED types will only occur at top level. +*/ + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char * name; + unsigned int numchildren; + XML_Content * children; +}; + + +/* This is called for an element declaration. See above for + description of the model argument. It's the caller's responsibility + to free model when finished with it. +*/ +typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, + const XML_Char *name, + XML_Content *model); + +XMLPARSEAPI(void) +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl); + +/* The Attlist declaration handler is called for *each* attribute. So + a single Attlist declaration with multiple attributes declared will + generate multiple calls to this handler. The "default" parameter + may be NULL in the case of the "#IMPLIED" or "#REQUIRED" + keyword. The "isrequired" parameter will be true and the default + value will be NULL in the case of "#REQUIRED". If "isrequired" is + true and default is non-NULL, then this is a "#FIXED" default. +*/ +typedef void (XMLCALL *XML_AttlistDeclHandler) ( + void *userData, + const XML_Char *elname, + const XML_Char *attname, + const XML_Char *att_type, + const XML_Char *dflt, + int isrequired); + +XMLPARSEAPI(void) +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl); + +/* The XML declaration handler is called for *both* XML declarations + and text declarations. The way to distinguish is that the version + parameter will be NULL for text declarations. The encoding + parameter may be NULL for XML declarations. The standalone + parameter will be -1, 0, or 1 indicating respectively that there + was no standalone parameter in the declaration, that it was given + as no, or that it was given as yes. +*/ +typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +XMLPARSEAPI(void) +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl); + + +typedef struct { + void *(*malloc_fcn)(size_t size); + void *(*realloc_fcn)(void *ptr, size_t size); + void (*free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +/* Constructs a new parser; encoding is the encoding specified by the + external protocol or NULL if there is none specified. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate(const XML_Char *encoding); + +/* Constructs a new parser and namespace processor. Element type + names and attribute names that belong to a namespace will be + expanded; unprefixed attribute names are never expanded; unprefixed + element type names are expanded only if there is a default + namespace. The expanded name is the concatenation of the namespace + URI, the namespace separator character, and the local part of the + name. If the namespace separator is '\0' then the namespace URI + and the local part will be concatenated without any separator. + It is a programming error to use the separator '\0' with namespace + triplets (see XML_SetReturnNSTriplet). +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + + +/* Constructs a new parser using the memory management suite referred to + by memsuite. If memsuite is NULL, then use the standard library memory + suite. If namespaceSeparator is non-NULL it creates a parser with + namespace processing as described above. The character pointed at + will serve as the namespace separator. + + All further memory operations used for the created parser will come from + the given suite. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +/* Prepare a parser object to be re-used. This is particularly + valuable when memory allocation overhead is disproportionatly high, + such as when a large number of small documnents need to be parsed. + All handlers are cleared from the parser, except for the + unknownEncodingHandler. The parser's external state is re-initialized + except for the values of ns and ns_triplets. + + Added in Expat 1.95.3. +*/ +XMLPARSEAPI(XML_Bool) +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +/* atts is array of name/value pairs, terminated by 0; + names and values are 0 terminated. +*/ +typedef void (XMLCALL *XML_StartElementHandler) (void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void (XMLCALL *XML_EndElementHandler) (void *userData, + const XML_Char *name); + + +/* s is not 0 terminated. */ +typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, + const XML_Char *s, + int len); + +/* target and data are 0 terminated */ +typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( + void *userData, + const XML_Char *target, + const XML_Char *data); + +/* data is 0 terminated */ +typedef void (XMLCALL *XML_CommentHandler) (void *userData, + const XML_Char *data); + +typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); +typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); + +/* This is called for any characters in the XML document for which + there is no applicable handler. This includes both characters that + are part of markup which is of a kind that is not reported + (comments, markup declarations), or characters that are part of a + construct which could be reported but for which no handler has been + supplied. The characters are passed exactly as they were in the XML + document except that they will be encoded in UTF-8 or UTF-16. + Line boundaries are not normalized. Note that a byte order mark + character is not passed to the default handler. There are no + guarantees about how characters are divided between calls to the + default handler: for example, a comment might be split between + multiple calls. +*/ +typedef void (XMLCALL *XML_DefaultHandler) (void *userData, + const XML_Char *s, + int len); + +/* This is called for the start of the DOCTYPE declaration, before + any DTD or internal subset is parsed. +*/ +typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( + void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +/* This is called for the start of the DOCTYPE declaration when the + closing > is encountered, but after processing any external + subset. +*/ +typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); + +/* This is called for entity declarations. The is_parameter_entity + argument will be non-zero if the entity is a parameter entity, zero + otherwise. + + For internal entities (), value will + be non-NULL and systemId, publicID, and notationName will be NULL. + The value string is NOT nul-terminated; the length is provided in + the value_length argument. Since it is legal to have zero-length + values, do not use this argument to test for internal entities. + + For external entities, value will be NULL and systemId will be + non-NULL. The publicId argument will be NULL unless a public + identifier was provided. The notationName argument will have a + non-NULL value only for unparsed entity declarations. + + Note that is_parameter_entity can't be changed to XML_Bool, since + that would break binary compatibility. +*/ +typedef void (XMLCALL *XML_EntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity, + const XML_Char *value, + int value_length, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +XMLPARSEAPI(void) +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler); + +/* OBSOLETE -- OBSOLETE -- OBSOLETE + This handler has been superseded by the EntityDeclHandler above. + It is provided here for backward compatibility. + + This is called for a declaration of an unparsed (NDATA) entity. + The base argument is whatever was set by XML_SetBase. The + entityName, systemId and notationName arguments will never be + NULL. The other arguments may be. +*/ +typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +/* This is called for a declaration of notation. The base argument is + whatever was set by XML_SetBase. The notationName will never be + NULL. The other arguments can be. +*/ +typedef void (XMLCALL *XML_NotationDeclHandler) ( + void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* When namespace processing is enabled, these are called once for + each namespace declaration. The call to the start and end element + handlers occur between the calls to the start and end namespace + declaration handlers. For an xmlns attribute, prefix will be + NULL. For an xmlns="" attribute, uri will be NULL. +*/ +typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix); + +/* This is called if the document is not standalone, that is, it has an + external subset or a reference to a parameter entity, but does not + have standalone="yes". If this handler returns XML_STATUS_ERROR, + then processing will not continue, and the parser will return a + XML_ERROR_NOT_STANDALONE error. + If parameter entity parsing is enabled, then in addition to the + conditions above this handler will only be called if the referenced + entity was actually read. +*/ +typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); + +/* This is called for a reference to an external parsed general + entity. The referenced entity is not automatically parsed. The + application can parse it immediately or later using + XML_ExternalEntityParserCreate. + + The parser argument is the parser parsing the entity containing the + reference; it can be passed as the parser argument to + XML_ExternalEntityParserCreate. The systemId argument is the + system identifier as specified in the entity declaration; it will + not be NULL. + + The base argument is the system identifier that should be used as + the base for resolving systemId if systemId was relative; this is + set by XML_SetBase; it may be NULL. + + The publicId argument is the public identifier as specified in the + entity declaration, or NULL if none was specified; the whitespace + in the public identifier will have been normalized as required by + the XML spec. + + The context argument specifies the parsing context in the format + expected by the context argument to XML_ExternalEntityParserCreate; + context is valid only until the handler returns, so if the + referenced entity is to be parsed later, it must be copied. + context is NULL only when the entity is a parameter entity. + + The handler should return XML_STATUS_ERROR if processing should not + continue because of a fatal error in the handling of the external + entity. In this case the calling parser will return an + XML_ERROR_EXTERNAL_ENTITY_HANDLING error. + + Note that unlike other handlers the first argument is the parser, + not userData. +*/ +typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( + XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* This is called in two situations: + 1) An entity reference is encountered for which no declaration + has been read *and* this is not an error. + 2) An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler has been called. + Note: skipped parameter entities in declarations and skipped general + entities in attribute values cannot be reported, because + the event would be out of sync with the reporting of the + declarations or attribute values +*/ +typedef void (XMLCALL *XML_SkippedEntityHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +/* This structure is filled in by the XML_UnknownEncodingHandler to + provide information to the parser about encodings that are unknown + to the parser. + + The map[b] member gives information about byte sequences whose + first byte is b. + + If map[b] is c where c is >= 0, then b by itself encodes the + Unicode scalar value c. + + If map[b] is -1, then the byte sequence is malformed. + + If map[b] is -n, where n >= 2, then b is the first byte of an + n-byte sequence that encodes a single Unicode scalar value. + + The data member will be passed as the first argument to the convert + function. + + The convert function is used to convert multibyte sequences; s will + point to a n-byte sequence where map[(unsigned char)*s] == -n. The + convert function must return the Unicode scalar value represented + by this byte sequence or -1 if the byte sequence is malformed. + + The convert function may be NULL if the encoding is a single-byte + encoding, that is if map[b] >= -1 for all bytes b. + + When the parser is finished with the encoding, then if release is + not NULL, it will call release passing it the data member; once + release has been called, the convert function will not be called + again. + + Expat places certain restrictions on the encodings that are supported + using this mechanism. + + 1. Every ASCII character that can appear in a well-formed XML document, + other than the characters + + $@\^`{}~ + + must be represented by a single byte, and that byte must be the + same byte that represents that character in ASCII. + + 2. No character may require more than 4 bytes to encode. + + 3. All characters encoded must have Unicode scalar values <= + 0xFFFF, (i.e., characters that would be encoded by surrogates in + UTF-16 are not allowed). Note that this restriction doesn't + apply to the built-in support for UTF-8 and UTF-16. + + 4. No Unicode character may be encoded by more than one distinct + sequence of bytes. +*/ +typedef struct { + int map[256]; + void *data; + int (XMLCALL *convert)(void *data, const char *s); + void (XMLCALL *release)(void *data); +} XML_Encoding; + +/* This is called for an encoding that is unknown to the parser. + + The encodingHandlerData argument is that which was passed as the + second argument to XML_SetUnknownEncodingHandler. + + The name argument gives the name of the encoding as specified in + the encoding declaration. + + If the callback can provide information about the encoding, it must + fill in the XML_Encoding structure, and return XML_STATUS_OK. + Otherwise it must return XML_STATUS_ERROR. + + If info does not describe a suitable encoding, then the parser will + return an XML_UNKNOWN_ENCODING error. +*/ +typedef int (XMLCALL *XML_UnknownEncodingHandler) ( + void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +XMLPARSEAPI(void) +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end); + +XMLPARSEAPI(void) +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler handler); + +XMLPARSEAPI(void) +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler handler); + +XMLPARSEAPI(void) +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +XMLPARSEAPI(void) +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +XMLPARSEAPI(void) +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler); + +XMLPARSEAPI(void) +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +XMLPARSEAPI(void) +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +XMLPARSEAPI(void) +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +/* This sets the default handler and also inhibits expansion of + internal entities. These entity references will be passed to the + default handler, or to the skipped entity handler, if one is set. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler); + +/* This sets the default handler but does not inhibit expansion of + internal entities. The entity reference will not be passed to the + default handler. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler); + +XMLPARSEAPI(void) +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +/* If a non-NULL value for arg is specified here, then it will be + passed as the first argument to the external entity ref handler + instead of the parser object. +*/ +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, + void *arg); + +XMLPARSEAPI(void) +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +XMLPARSEAPI(void) +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +/* This can be called within a handler for a start element, end + element, processing instruction or character data. It causes the + corresponding markup to be passed to the default handler. +*/ +XMLPARSEAPI(void) +XML_DefaultCurrent(XML_Parser parser); + +/* If do_nst is non-zero, and namespace processing is in effect, and + a name has a prefix (i.e. an explicit namespace qualifier) then + that name is returned as a triplet in a single string separated by + the separator character specified when the parser was created: URI + + sep + local_name + sep + prefix. + + If do_nst is zero, then namespace information is returned in the + default manner (URI + sep + local_name) whether or not the name + has a prefix. + + Note: Calling XML_SetReturnNSTriplet after XML_Parse or + XML_ParseBuffer has no effect. +*/ + +XMLPARSEAPI(void) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +/* This value is passed as the userData argument to callbacks. */ +XMLPARSEAPI(void) +XML_SetUserData(XML_Parser parser, void *userData); + +/* Returns the last value set by XML_SetUserData or NULL. */ +#define XML_GetUserData(parser) (*(void **)(parser)) + +/* This is equivalent to supplying an encoding argument to + XML_ParserCreate. On success XML_SetEncoding returns non-zero, + zero otherwise. + Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer + has no effect and returns XML_STATUS_ERROR. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +/* If this function is called, then the parser will be passed as the + first argument to callbacks instead of userData. The userData will + still be accessible using XML_GetUserData. +*/ +XMLPARSEAPI(void) +XML_UseParserAsHandlerArg(XML_Parser parser); + +/* If useDTD == XML_TRUE is passed to this function, then the parser + will assume that there is an external subset, even if none is + specified in the document. In such a case the parser will call the + externalEntityRefHandler with a value of NULL for the systemId + argument (the publicId and context arguments will be NULL as well). + Note: For the purpose of checking WFC: Entity Declared, passing + useDTD == XML_TRUE will make the parser behave as if the document + had a DTD with an external subset. + Note: If this function is called, then this must be done before + the first call to XML_Parse or XML_ParseBuffer, since it will + have no effect after that. Returns + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. + Note: If the document does not have a DOCTYPE declaration at all, + then startDoctypeDeclHandler and endDoctypeDeclHandler will not + be called, despite an external subset being parsed. + Note: If XML_DTD is not defined when Expat is compiled, returns + XML_ERROR_FEATURE_REQUIRES_XML_DTD. +*/ +XMLPARSEAPI(enum XML_Error) +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + + +/* Sets the base to be used for resolving relative URIs in system + identifiers in declarations. Resolving relative identifiers is + left to the application: this value will be passed through as the + base argument to the XML_ExternalEntityRefHandler, + XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base + argument will be copied. Returns XML_STATUS_ERROR if out of memory, + XML_STATUS_OK otherwise. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetBase(XML_Parser parser, const XML_Char *base); + +XMLPARSEAPI(const XML_Char *) +XML_GetBase(XML_Parser parser); + +/* Returns the number of the attribute/value pairs passed in last call + to the XML_StartElementHandler that were specified in the start-tag + rather than defaulted. Each attribute/value pair counts as 2; thus + this correspondds to an index into the atts array passed to the + XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +/* Returns the index of the ID attribute passed in the last call to + XML_StartElementHandler, or -1 if there is no ID attribute. Each + attribute/value pair counts as 2; thus this correspondds to an + index into the atts array passed to the XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetIdAttributeIndex(XML_Parser parser); + +#ifdef XML_ATTR_INFO +/* Source file byte offsets for the start and end of attribute names and values. + The value indices are exclusive of surrounding quotes; thus in a UTF-8 source + file an attribute value of "blah" will yield: + info->valueEnd - info->valueStart = 4 bytes. +*/ +typedef struct { + XML_Index nameStart; /* Offset to beginning of the attribute name. */ + XML_Index nameEnd; /* Offset after the attribute name's last byte. */ + XML_Index valueStart; /* Offset to beginning of the attribute value. */ + XML_Index valueEnd; /* Offset after the attribute value's last byte. */ +} XML_AttrInfo; + +/* Returns an array of XML_AttrInfo structures for the attribute/value pairs + passed in last call to the XML_StartElementHandler that were specified + in the start-tag rather than defaulted. Each attribute/value pair counts + as 1; thus the number of entries in the array is + XML_GetSpecifiedAttributeCount(parser) / 2. +*/ +XMLPARSEAPI(const XML_AttrInfo *) +XML_GetAttributeInfo(XML_Parser parser); +#endif + +/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is + detected. The last call to XML_Parse must have isFinal true; len + may be zero for this call (or any other). + + Though the return values for these functions has always been + described as a Boolean value, the implementation, at least for the + 1.95.x series, has always returned exactly one of the XML_Status + values. +*/ +XMLPARSEAPI(enum XML_Status) +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +XMLPARSEAPI(void *) +XML_GetBuffer(XML_Parser parser, int len); + +XMLPARSEAPI(enum XML_Status) +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. + Must be called from within a call-back handler, except when aborting + (resumable = 0) an already suspended parser. Some call-backs may + still follow because they would otherwise get lost. Examples: + - endElementHandler() for empty elements when stopped in + startElementHandler(), + - endNameSpaceDeclHandler() when stopped in endElementHandler(), + and possibly others. + + Can be called from most handlers, including DTD related call-backs, + except when parsing an external parameter entity and resumable != 0. + Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. + Possible error codes: + - XML_ERROR_SUSPENDED: when suspending an already suspended parser. + - XML_ERROR_FINISHED: when the parser has already finished. + - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. + + When resumable != 0 (true) then parsing is suspended, that is, + XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. + Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() + return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. + + *Note*: + This will be applied to the current parser instance only, that is, if + there is a parent parser then it will continue parsing when the + externalEntityRefHandler() returns. It is up to the implementation of + the externalEntityRefHandler() to call XML_StopParser() on the parent + parser (recursively), if one wants to stop parsing altogether. + + When suspended, parsing can be resumed by calling XML_ResumeParser(). +*/ +XMLPARSEAPI(enum XML_Status) +XML_StopParser(XML_Parser parser, XML_Bool resumable); + +/* Resumes parsing after it has been suspended with XML_StopParser(). + Must not be called from within a handler call-back. Returns same + status codes as XML_Parse() or XML_ParseBuffer(). + Additional error code XML_ERROR_NOT_SUSPENDED possible. + + *Note*: + This must be called on the most deeply nested child parser instance + first, and on its parent parser only after the child parser has finished, + to be applied recursively until the document entity's parser is restarted. + That is, the parent parser will not resume by itself and it is up to the + application to call XML_ResumeParser() on it at the appropriate moment. +*/ +XMLPARSEAPI(enum XML_Status) +XML_ResumeParser(XML_Parser parser); + +enum XML_Parsing { + XML_INITIALIZED, + XML_PARSING, + XML_FINISHED, + XML_SUSPENDED +}; + +typedef struct { + enum XML_Parsing parsing; + XML_Bool finalBuffer; +} XML_ParsingStatus; + +/* Returns status of parser with respect to being initialized, parsing, + finished, or suspended and processing the final buffer. + XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, + XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED +*/ +XMLPARSEAPI(void) +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); + +/* Creates an XML_Parser object that can parse an external general + entity; context is a '\0'-terminated string specifying the parse + context; encoding is a '\0'-terminated string giving the name of + the externally specified encoding, or NULL if there is no + externally specified encoding. The context string consists of a + sequence of tokens separated by formfeeds (\f); a token consisting + of a name specifies that the general entity of the name is open; a + token of the form prefix=uri specifies the namespace for a + particular prefix; a token of the form =uri specifies the default + namespace. This can be called at any point after the first call to + an ExternalEntityRefHandler so longer as the parser has not yet + been freed. The new parser is completely independent and may + safely be used in a separate thread. The handlers and userData are + initialized from the parser argument. Returns NULL if out of memory. + Otherwise returns a new XML_Parser object. +*/ +XMLPARSEAPI(XML_Parser) +XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +/* Controls parsing of parameter entities (including the external DTD + subset). If parsing of parameter entities is enabled, then + references to external parameter entities (including the external + DTD subset) will be passed to the handler set with + XML_SetExternalEntityRefHandler. The context passed will be 0. + + Unlike external general entities, external parameter entities can + only be parsed synchronously. If the external parameter entity is + to be parsed, it must be parsed during the call to the external + entity ref handler: the complete sequence of + XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and + XML_ParserFree calls must be made during this call. After + XML_ExternalEntityParserCreate has been called to create the parser + for the external parameter entity (context must be 0 for this + call), it is illegal to make any calls on the old parser until + XML_ParserFree has been called on the newly created parser. + If the library has been compiled without support for parameter + entity parsing (ie without XML_DTD being defined), then + XML_SetParamEntityParsing will return 0 if parsing of parameter + entities is requested; otherwise it will return non-zero. + Note: If XML_SetParamEntityParsing is called after XML_Parse or + XML_ParseBuffer, then it has no effect and will always return 0. +*/ +XMLPARSEAPI(int) +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +/* Sets the hash salt to use for internal hash calculations. + Helps in preventing DoS attacks based on predicting hash + function behavior. This must be called before parsing is started. + Returns 1 if successful, 0 when called after parsing has started. +*/ +XMLPARSEAPI(int) +XML_SetHashSalt(XML_Parser parser, + unsigned long hash_salt); + +/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then + XML_GetErrorCode returns information about the error. +*/ +XMLPARSEAPI(enum XML_Error) +XML_GetErrorCode(XML_Parser parser); + +/* These functions return information about the current parse + location. They may be called from any callback called to report + some parse event; in this case the location is the location of the + first of the sequence of characters that generated the event. When + called from callbacks generated by declarations in the document + prologue, the location identified isn't as neatly defined, but will + be within the relevant markup. When called outside of the callback + functions, the position indicated will be just past the last parse + event (regardless of whether there was an associated callback). + + They may also be called after returning from a call to XML_Parse + or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then + the location is the location of the character at which the error + was detected; otherwise the location is the location of the last + parse event, as described above. +*/ +XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); + +/* Return the number of bytes in the current event. + Returns 0 if the event is in an internal entity. +*/ +XMLPARSEAPI(int) +XML_GetCurrentByteCount(XML_Parser parser); + +/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets + the integer pointed to by offset to the offset within this buffer + of the current parse position, and sets the integer pointed to by size + to the size of this buffer (the number of input bytes). Otherwise + returns a NULL pointer. Also returns a NULL pointer if a parse isn't + active. + + NOTE: The character pointer returned should not be used outside + the handler that makes the call. +*/ +XMLPARSEAPI(const char *) +XML_GetInputContext(XML_Parser parser, + int *offset, + int *size); + +/* For backwards compatibility with previous versions. */ +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +/* Frees the content model passed to the element declaration handler */ +XMLPARSEAPI(void) +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +/* Exposing the memory handling functions used in Expat */ +XMLPARSEAPI(void *) +XML_ATTR_MALLOC +XML_ATTR_ALLOC_SIZE(2) +XML_MemMalloc(XML_Parser parser, size_t size); + +XMLPARSEAPI(void *) +XML_ATTR_ALLOC_SIZE(3) +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +XMLPARSEAPI(void) +XML_MemFree(XML_Parser parser, void *ptr); + +/* Frees memory used by the parser. */ +XMLPARSEAPI(void) +XML_ParserFree(XML_Parser parser); + +/* Returns a string describing the error. */ +XMLPARSEAPI(const XML_LChar *) +XML_ErrorString(enum XML_Error code); + +/* Return a string containing the version number of this expat */ +XMLPARSEAPI(const XML_LChar *) +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +/* Return an XML_Expat_Version structure containing numeric version + number information for this version of expat. +*/ +XMLPARSEAPI(XML_Expat_Version) +XML_ExpatVersionInfo(void); + +/* Added in Expat 1.95.5. */ +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR, + XML_FEATURE_NS, + XML_FEATURE_LARGE_SIZE, + XML_FEATURE_ATTR_INFO + /* Additional features must be added to the end of this enum. */ +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +XMLPARSEAPI(const XML_Feature *) +XML_GetFeatureList(void); + + +/* Expat follows the semantic versioning convention. + See http://semver.org. +*/ +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 2 +#define XML_MICRO_VERSION 0 + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_INCLUDED */ diff --git a/vendor/libexpat/lib/expat_external.h b/vendor/libexpat/lib/expat_external.h new file mode 100644 index 0000000..aa08a2f --- /dev/null +++ b/vendor/libexpat/lib/expat_external.h @@ -0,0 +1,129 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef Expat_External_INCLUDED +#define Expat_External_INCLUDED 1 + +/* External API definitions */ + +#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) +#define XML_USE_MSC_EXTENSIONS 1 +#endif + +/* Expat tries very hard to make the API boundary very specifically + defined. There are two macros defined to control this boundary; + each of these can be defined before including this header to + achieve some different behavior, but doing so it not recommended or + tested frequently. + + XMLCALL - The calling convention to use for all calls across the + "library boundary." This will default to cdecl, and + try really hard to tell the compiler that's what we + want. + + XMLIMPORT - Whatever magic is needed to note that a function is + to be imported from a dynamically loaded library + (.dll, .so, or .sl, depending on your platform). + + The XMLCALL macro was added in Expat 1.95.7. The only one which is + expected to be directly useful in client code is XMLCALL. + + Note that on at least some Unix versions, the Expat library must be + compiled with the cdecl calling convention as the default since + system headers may assume the cdecl convention. +*/ +#ifndef XMLCALL +#if defined(_MSC_VER) +#define XMLCALL __cdecl +#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) +#define XMLCALL __attribute__((cdecl)) +#else +/* For any platform which uses this definition and supports more than + one calling convention, we need to extend this definition to + declare the convention used on that platform, if it's possible to + do so. + + If this is the case for your platform, please file a bug report + with information on how to identify your platform via the C + pre-processor and how to specify the same calling convention as the + platform's malloc() implementation. +*/ +#define XMLCALL +#endif +#endif /* not defined XMLCALL */ + + +#if !defined(XML_STATIC) && !defined(XMLIMPORT) +#ifndef XML_BUILDING_EXPAT +/* using Expat from an application */ + +#ifdef XML_USE_MSC_EXTENSIONS +#define XMLIMPORT __declspec(dllimport) +#endif + +#endif +#endif /* not defined XML_STATIC */ + +#if !defined(XMLIMPORT) && defined(__GNUC__) && (__GNUC__ >= 4) +#define XMLIMPORT __attribute__ ((visibility ("default"))) +#endif + +/* If we didn't define it above, define it away: */ +#ifndef XMLIMPORT +#define XMLIMPORT +#endif + +#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) +#define XML_ATTR_MALLOC __attribute__((__malloc__)) +#else +#define XML_ATTR_MALLOC +#endif + +#if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +#define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) +#else +#define XML_ATTR_ALLOC_SIZE(x) +#endif + +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_UNICODE_WCHAR_T +#define XML_UNICODE +#endif + +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +#ifdef XML_UNICODE_WCHAR_T +typedef wchar_t XML_Char; +typedef wchar_t XML_LChar; +#else +typedef unsigned short XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ +typedef char XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE */ + +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +typedef __int64 XML_Index; +typedef unsigned __int64 XML_Size; +#else +typedef long long XML_Index; +typedef unsigned long long XML_Size; +#endif +#else +typedef long XML_Index; +typedef unsigned long XML_Size; +#endif /* XML_LARGE_SIZE */ + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_External_INCLUDED */ diff --git a/vendor/libexpat/lib/expat_static.dsp b/vendor/libexpat/lib/expat_static.dsp new file mode 100644 index 0000000..dcd150a --- /dev/null +++ b/vendor/libexpat/lib/expat_static.dsp @@ -0,0 +1,162 @@ +# Microsoft Developer Studio Project File - Name="expat_static" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=expat_static - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "expat_static.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "expat_static.mak" CFG="expat_static - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "expat_static - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "expat_static - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "expat_static - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "expat_static___Win32_Release" +# PROP BASE Intermediate_Dir "expat_static___Win32_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release_static" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatMT.lib" + +!ELSEIF "$(CFG)" == "expat_static - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "expat_static___Win32_Debug" +# PROP BASE Intermediate_Dir "expat_static___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug_static" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatMT.lib" + +!ENDIF + +# Begin Target + +# Name "expat_static - Win32 Release" +# Name "expat_static - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlparse.c +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_ns.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ascii.h +# End Source File +# Begin Source File + +SOURCE=.\asciitab.h +# End Source File +# Begin Source File + +SOURCE=.\expat.h +# End Source File +# Begin Source File + +SOURCE=.\expat_external.h +# End Source File +# Begin Source File + +SOURCE=.\iasciitab.h +# End Source File +# Begin Source File + +SOURCE=.\internal.h +# End Source File +# Begin Source File + +SOURCE=.\latin1tab.h +# End Source File +# Begin Source File + +SOURCE=.\nametab.h +# End Source File +# Begin Source File + +SOURCE=.\utf8tab.h +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.h +# End Source File +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/lib/expatw.dsp b/vendor/libexpat/lib/expatw.dsp new file mode 100644 index 0000000..4fc80a0 --- /dev/null +++ b/vendor/libexpat/lib/expatw.dsp @@ -0,0 +1,185 @@ +# Microsoft Developer Studio Project File - Name="expatw" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=expatw - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "expatw.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "expatw.mak" CFG="expatw - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "expatw - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "expatw - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "expatw - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release-w" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /dll /machine:I386 +# ADD LINK32 /nologo /dll /pdb:none /machine:I386 /out:"..\win32\bin\Release\libexpatw.dll" + +!ELSEIF "$(CFG)" == "expatw - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug-w" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"..\win32\bin\Debug\libexpatw.dll" + +!ENDIF + +# Begin Target + +# Name "expatw - Win32 Release" +# Name "expatw - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\libexpatw.def +# End Source File +# Begin Source File + +SOURCE=.\xmlparse.c + +!IF "$(CFG)" == "expatw - Win32 Release" + +!ELSEIF "$(CFG)" == "expatw - Win32 Debug" + +# ADD CPP /GX- /Od + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_ns.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ascii.h +# End Source File +# Begin Source File + +SOURCE=.\asciitab.h +# End Source File +# Begin Source File + +SOURCE=.\expat.h +# End Source File +# Begin Source File + +SOURCE=.\expat_external.h +# End Source File +# Begin Source File + +SOURCE=.\iasciitab.h +# End Source File +# Begin Source File + +SOURCE=.\internal.h +# End Source File +# Begin Source File + +SOURCE=.\latin1tab.h +# End Source File +# Begin Source File + +SOURCE=.\nametab.h +# End Source File +# Begin Source File + +SOURCE=.\utf8tab.h +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/lib/expatw_static.dsp b/vendor/libexpat/lib/expatw_static.dsp new file mode 100644 index 0000000..f9fadfa --- /dev/null +++ b/vendor/libexpat/lib/expatw_static.dsp @@ -0,0 +1,162 @@ +# Microsoft Developer Studio Project File - Name="expatw_static" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=expatw_static - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "expatw_static.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "expatw_static.mak" CFG="expatw_static - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "expatw_static - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "expatw_static - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "expatw_static - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "expatw_static___Win32_Release" +# PROP BASE Intermediate_Dir "expatw_static___Win32_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release-w_static" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "XML_UNICODE_WCHAR_T" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"..\win32\bin\Release\libexpatwMT.lib" + +!ELSEIF "$(CFG)" == "expatw_static - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "expatw_static___Win32_Debug" +# PROP BASE Intermediate_Dir "expatw_static___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug-w_static" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_LIB" /D "XML_UNICODE_WCHAR_T" /FR /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"..\win32\bin\Debug\libexpatwMT.lib" + +!ENDIF + +# Begin Target + +# Name "expatw_static - Win32 Release" +# Name "expatw_static - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlparse.c +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.c +# End Source File +# Begin Source File + +SOURCE=.\xmltok_ns.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ascii.h +# End Source File +# Begin Source File + +SOURCE=.\asciitab.h +# End Source File +# Begin Source File + +SOURCE=.\expat.h +# End Source File +# Begin Source File + +SOURCE=.\expat_external.h +# End Source File +# Begin Source File + +SOURCE=.\iasciitab.h +# End Source File +# Begin Source File + +SOURCE=.\internal.h +# End Source File +# Begin Source File + +SOURCE=.\latin1tab.h +# End Source File +# Begin Source File + +SOURCE=.\nametab.h +# End Source File +# Begin Source File + +SOURCE=.\utf8tab.h +# End Source File +# Begin Source File + +SOURCE=.\xmlrole.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok.h +# End Source File +# Begin Source File + +SOURCE=.\xmltok_impl.h +# End Source File +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/lib/iasciitab.h b/vendor/libexpat/lib/iasciitab.h new file mode 100644 index 0000000..24a1d5c --- /dev/null +++ b/vendor/libexpat/lib/iasciitab.h @@ -0,0 +1,37 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ +/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, +/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, +/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, +/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, +/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, +/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, +/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, +/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, +/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, +/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, +/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, +/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, +/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, +/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/vendor/libexpat/lib/internal.h b/vendor/libexpat/lib/internal.h new file mode 100644 index 0000000..94cb98e --- /dev/null +++ b/vendor/libexpat/lib/internal.h @@ -0,0 +1,95 @@ +/* internal.h + + Internal definitions used by Expat. This is not needed to compile + client code. + + The following calling convention macros are defined for frequently + called functions: + + FASTCALL - Used for those internal functions that have a simple + body and a low number of arguments and local variables. + + PTRCALL - Used for functions called though function pointers. + + PTRFASTCALL - Like PTRCALL, but for low number of arguments. + + inline - Used for selected internal functions for which inlining + may improve performance on some platforms. + + Note: Use of these macros is based on judgement, not hard rules, + and therefore subject to change. +*/ + +#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) +/* We'll use this version by default only where we know it helps. + + regparm() generates warnings on Solaris boxes. See SF bug #692878. + + Instability reported with egcs on a RedHat Linux 7.3. + Let's comment out: + #define FASTCALL __attribute__((stdcall, regparm(3))) + and let's try this: +*/ +#define FASTCALL __attribute__((regparm(3))) +#define PTRFASTCALL __attribute__((regparm(3))) +#endif + +/* Using __fastcall seems to have an unexpected negative effect under + MS VC++, especially for function pointers, so we won't use it for + now on that platform. It may be reconsidered for a future release + if it can be made more effective. + Likely reason: __fastcall on Windows is like stdcall, therefore + the compiler cannot perform stack optimizations for call clusters. +*/ + +/* Make sure all of these are defined if they aren't already. */ + +#ifndef FASTCALL +#define FASTCALL +#endif + +#ifndef PTRCALL +#define PTRCALL +#endif + +#ifndef PTRFASTCALL +#define PTRFASTCALL +#endif + +#ifndef XML_MIN_SIZE +#if !defined(__cplusplus) && !defined(inline) +#ifdef __GNUC__ +#define inline __inline +#endif /* __GNUC__ */ +#endif +#endif /* XML_MIN_SIZE */ + +#ifdef __cplusplus +#define inline inline +#else +#ifndef inline +#define inline +#endif +#endif + +#ifndef UNUSED_P +# ifdef __GNUC__ +# define UNUSED_P(p) UNUSED_ ## p __attribute__((__unused__)) +# else +# define UNUSED_P(p) UNUSED_ ## p +# endif +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + + +void +align_limit_to_full_utf8_characters(const char * from, const char ** fromLimRef); + + +#ifdef __cplusplus +} +#endif diff --git a/vendor/libexpat/lib/latin1tab.h b/vendor/libexpat/lib/latin1tab.h new file mode 100644 index 0000000..53c25d7 --- /dev/null +++ b/vendor/libexpat/lib/latin1tab.h @@ -0,0 +1,36 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, +/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, +/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, +/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, +/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, +/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, +/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/vendor/libexpat/lib/libexpat.def b/vendor/libexpat/lib/libexpat.def new file mode 100644 index 0000000..79b0491 --- /dev/null +++ b/vendor/libexpat/lib/libexpat.def @@ -0,0 +1,76 @@ +; DEF file for MS VC++ + +LIBRARY +EXPORTS + XML_DefaultCurrent @1 + XML_ErrorString @2 + XML_ExpatVersion @3 + XML_ExpatVersionInfo @4 + XML_ExternalEntityParserCreate @5 + XML_GetBase @6 + XML_GetBuffer @7 + XML_GetCurrentByteCount @8 + XML_GetCurrentByteIndex @9 + XML_GetCurrentColumnNumber @10 + XML_GetCurrentLineNumber @11 + XML_GetErrorCode @12 + XML_GetIdAttributeIndex @13 + XML_GetInputContext @14 + XML_GetSpecifiedAttributeCount @15 + XML_Parse @16 + XML_ParseBuffer @17 + XML_ParserCreate @18 + XML_ParserCreateNS @19 + XML_ParserCreate_MM @20 + XML_ParserFree @21 + XML_SetAttlistDeclHandler @22 + XML_SetBase @23 + XML_SetCdataSectionHandler @24 + XML_SetCharacterDataHandler @25 + XML_SetCommentHandler @26 + XML_SetDefaultHandler @27 + XML_SetDefaultHandlerExpand @28 + XML_SetDoctypeDeclHandler @29 + XML_SetElementDeclHandler @30 + XML_SetElementHandler @31 + XML_SetEncoding @32 + XML_SetEndCdataSectionHandler @33 + XML_SetEndDoctypeDeclHandler @34 + XML_SetEndElementHandler @35 + XML_SetEndNamespaceDeclHandler @36 + XML_SetEntityDeclHandler @37 + XML_SetExternalEntityRefHandler @38 + XML_SetExternalEntityRefHandlerArg @39 + XML_SetNamespaceDeclHandler @40 + XML_SetNotStandaloneHandler @41 + XML_SetNotationDeclHandler @42 + XML_SetParamEntityParsing @43 + XML_SetProcessingInstructionHandler @44 + XML_SetReturnNSTriplet @45 + XML_SetStartCdataSectionHandler @46 + XML_SetStartDoctypeDeclHandler @47 + XML_SetStartElementHandler @48 + XML_SetStartNamespaceDeclHandler @49 + XML_SetUnknownEncodingHandler @50 + XML_SetUnparsedEntityDeclHandler @51 + XML_SetUserData @52 + XML_SetXmlDeclHandler @53 + XML_UseParserAsHandlerArg @54 +; added with version 1.95.3 + XML_ParserReset @55 + XML_SetSkippedEntityHandler @56 +; added with version 1.95.5 + XML_GetFeatureList @57 + XML_UseForeignDTD @58 +; added with version 1.95.6 + XML_FreeContentModel @59 + XML_MemMalloc @60 + XML_MemRealloc @61 + XML_MemFree @62 +; added with version 1.95.8 + XML_StopParser @63 + XML_ResumeParser @64 + XML_GetParsingStatus @65 +; added with version 2.1.1 +; XML_GetAttributeInfo @66 + XML_SetHashSalt @67@ diff --git a/vendor/libexpat/lib/libexpatw.def b/vendor/libexpat/lib/libexpatw.def new file mode 100644 index 0000000..79b0491 --- /dev/null +++ b/vendor/libexpat/lib/libexpatw.def @@ -0,0 +1,76 @@ +; DEF file for MS VC++ + +LIBRARY +EXPORTS + XML_DefaultCurrent @1 + XML_ErrorString @2 + XML_ExpatVersion @3 + XML_ExpatVersionInfo @4 + XML_ExternalEntityParserCreate @5 + XML_GetBase @6 + XML_GetBuffer @7 + XML_GetCurrentByteCount @8 + XML_GetCurrentByteIndex @9 + XML_GetCurrentColumnNumber @10 + XML_GetCurrentLineNumber @11 + XML_GetErrorCode @12 + XML_GetIdAttributeIndex @13 + XML_GetInputContext @14 + XML_GetSpecifiedAttributeCount @15 + XML_Parse @16 + XML_ParseBuffer @17 + XML_ParserCreate @18 + XML_ParserCreateNS @19 + XML_ParserCreate_MM @20 + XML_ParserFree @21 + XML_SetAttlistDeclHandler @22 + XML_SetBase @23 + XML_SetCdataSectionHandler @24 + XML_SetCharacterDataHandler @25 + XML_SetCommentHandler @26 + XML_SetDefaultHandler @27 + XML_SetDefaultHandlerExpand @28 + XML_SetDoctypeDeclHandler @29 + XML_SetElementDeclHandler @30 + XML_SetElementHandler @31 + XML_SetEncoding @32 + XML_SetEndCdataSectionHandler @33 + XML_SetEndDoctypeDeclHandler @34 + XML_SetEndElementHandler @35 + XML_SetEndNamespaceDeclHandler @36 + XML_SetEntityDeclHandler @37 + XML_SetExternalEntityRefHandler @38 + XML_SetExternalEntityRefHandlerArg @39 + XML_SetNamespaceDeclHandler @40 + XML_SetNotStandaloneHandler @41 + XML_SetNotationDeclHandler @42 + XML_SetParamEntityParsing @43 + XML_SetProcessingInstructionHandler @44 + XML_SetReturnNSTriplet @45 + XML_SetStartCdataSectionHandler @46 + XML_SetStartDoctypeDeclHandler @47 + XML_SetStartElementHandler @48 + XML_SetStartNamespaceDeclHandler @49 + XML_SetUnknownEncodingHandler @50 + XML_SetUnparsedEntityDeclHandler @51 + XML_SetUserData @52 + XML_SetXmlDeclHandler @53 + XML_UseParserAsHandlerArg @54 +; added with version 1.95.3 + XML_ParserReset @55 + XML_SetSkippedEntityHandler @56 +; added with version 1.95.5 + XML_GetFeatureList @57 + XML_UseForeignDTD @58 +; added with version 1.95.6 + XML_FreeContentModel @59 + XML_MemMalloc @60 + XML_MemRealloc @61 + XML_MemFree @62 +; added with version 1.95.8 + XML_StopParser @63 + XML_ResumeParser @64 + XML_GetParsingStatus @65 +; added with version 2.1.1 +; XML_GetAttributeInfo @66 + XML_SetHashSalt @67@ diff --git a/vendor/libexpat/lib/macconfig.h b/vendor/libexpat/lib/macconfig.h new file mode 100644 index 0000000..2725caa --- /dev/null +++ b/vendor/libexpat/lib/macconfig.h @@ -0,0 +1,53 @@ +/*================================================================ +** Copyright 2000, Clark Cooper +** All rights reserved. +** +** This is free software. You are permitted to copy, distribute, or modify +** it under the terms of the MIT/X license (contained in the COPYING file +** with this distribution.) +** +*/ + +#ifndef MACCONFIG_H +#define MACCONFIG_H + + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 4321 + +/* Define to 1 if you have the `bcopy' function. */ +#undef HAVE_BCOPY + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* whether byteorder is bigendian */ +#define WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#undef XML_CONTEXT_BYTES + +/* Define to make parameter entity parsing functionality available. */ +#define XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#define XML_NS + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `long' if does not define. */ +#define off_t long + +/* Define to `unsigned' if does not define. */ +#undef size_t + + +#endif /* ifndef MACCONFIG_H */ diff --git a/vendor/libexpat/lib/nametab.h b/vendor/libexpat/lib/nametab.h new file mode 100644 index 0000000..b05e62c --- /dev/null +++ b/vendor/libexpat/lib/nametab.h @@ -0,0 +1,150 @@ +static const unsigned namingBitmap[] = { +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, +0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, +0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, +0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, +0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, +0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, +0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, +0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, +0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, +0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, +0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, +0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, +0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, +0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, +0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, +0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, +0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, +0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, +0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, +0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, +0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, +0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, +0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, +0x40000000, 0xF580C900, 0x00000007, 0x02010800, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, +0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, +0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, +0x00000000, 0x00004C40, 0x00000000, 0x00000000, +0x00000007, 0x00000000, 0x00000000, 0x00000000, +0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, +0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, +0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, +0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, +0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, +0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, +0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, +0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, +0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, +0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, +0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, +0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, +0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, +0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, +0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, +0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, +0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, +0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, +0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, +0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, +0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, +0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, +0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, +0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, +0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, +0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, +0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, +0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, +0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, +0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, +0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, +}; +static const unsigned char nmstrtPages[] = { +0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, +0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, +0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, +0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +static const unsigned char namePages[] = { +0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, +0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, +0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, +0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, +0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/vendor/libexpat/lib/utf8tab.h b/vendor/libexpat/lib/utf8tab.h new file mode 100644 index 0000000..7bb3e77 --- /dev/null +++ b/vendor/libexpat/lib/utf8tab.h @@ -0,0 +1,37 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + + +/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, +/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, +/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, +/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, +/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, +/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/vendor/libexpat/lib/winconfig.h b/vendor/libexpat/lib/winconfig.h new file mode 100644 index 0000000..c1b791d --- /dev/null +++ b/vendor/libexpat/lib/winconfig.h @@ -0,0 +1,30 @@ +/*================================================================ +** Copyright 2000, Clark Cooper +** All rights reserved. +** +** This is free software. You are permitted to copy, distribute, or modify +** it under the terms of the MIT/X license (contained in the COPYING file +** with this distribution.) +*/ + +#ifndef WINCONFIG_H +#define WINCONFIG_H + +#define WIN32_LEAN_AND_MEAN +#include +#undef WIN32_LEAN_AND_MEAN + +#include +#include + +#define XML_NS 1 +#define XML_DTD 1 +#define XML_CONTEXT_BYTES 1024 + +/* we will assume all Windows platforms are little endian */ +#define BYTEORDER 1234 + +/* Windows has memmove() available. */ +#define HAVE_MEMMOVE + +#endif /* ndef WINCONFIG_H */ diff --git a/vendor/libexpat/lib/xmlparse.c b/vendor/libexpat/lib/xmlparse.c new file mode 100644 index 0000000..b308e67 --- /dev/null +++ b/vendor/libexpat/lib/xmlparse.c @@ -0,0 +1,6466 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include +#include /* memset(), memcpy() */ +#include +#include /* UINT_MAX */ + +#ifdef WIN32 +#define getpid GetCurrentProcessId +#else +#include /* gettimeofday() */ +#include /* getpid() */ +#include /* getpid() */ +#endif + +#define XML_BUILDING_EXPAT 1 + +#ifdef WIN32 +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#elif defined(HAVE_EXPAT_CONFIG_H) +#include +#endif /* ndef WIN32 */ + +#include "ascii.h" +#include "expat.h" + +#ifdef XML_UNICODE +#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX +#define XmlConvert XmlUtf16Convert +#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding +#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS +#define XmlEncode XmlUtf16Encode +/* Using pointer subtraction to convert to integer type. */ +#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) +typedef unsigned short ICHAR; +#else +#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX +#define XmlConvert XmlUtf8Convert +#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding +#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS +#define XmlEncode XmlUtf8Encode +#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) +typedef char ICHAR; +#endif + + +#ifndef XML_NS + +#define XmlInitEncodingNS XmlInitEncoding +#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding +#undef XmlGetInternalEncodingNS +#define XmlGetInternalEncodingNS XmlGetInternalEncoding +#define XmlParseXmlDeclNS XmlParseXmlDecl + +#endif + +#ifdef XML_UNICODE + +#ifdef XML_UNICODE_WCHAR_T +#define XML_T(x) (const wchar_t)x +#define XML_L(x) L ## x +#else +#define XML_T(x) (const unsigned short)x +#define XML_L(x) x +#endif + +#else + +#define XML_T(x) x +#define XML_L(x) x + +#endif + +/* Round up n to be a multiple of sz, where sz is a power of 2. */ +#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) + +/* Handle the case where memmove() doesn't exist. */ +#ifndef HAVE_MEMMOVE +#ifdef HAVE_BCOPY +#define memmove(d,s,l) bcopy((s),(d),(l)) +#else +#error memmove does not exist on this platform, nor is a substitute available +#endif /* HAVE_BCOPY */ +#endif /* HAVE_MEMMOVE */ + +#include "internal.h" +#include "xmltok.h" +#include "xmlrole.h" + +typedef const XML_Char *KEY; + +typedef struct { + KEY name; +} NAMED; + +typedef struct { + NAMED **v; + unsigned char power; + size_t size; + size_t used; + const XML_Memory_Handling_Suite *mem; +} HASH_TABLE; + +/* Basic character hash algorithm, taken from Python's string hash: + h = h * 1000003 ^ character, the constant being a prime number. + +*/ +#ifdef XML_UNICODE +#define CHAR_HASH(h, c) \ + (((h) * 0xF4243) ^ (unsigned short)(c)) +#else +#define CHAR_HASH(h, c) \ + (((h) * 0xF4243) ^ (unsigned char)(c)) +#endif + +/* For probing (after a collision) we need a step size relative prime + to the hash table size, which is a power of 2. We use double-hashing, + since we can calculate a second hash value cheaply by taking those bits + of the first hash value that were discarded (masked out) when the table + index was calculated: index = hash & mask, where mask = table->size - 1. + We limit the maximum step size to table->size / 4 (mask >> 2) and make + it odd, since odd numbers are always relative prime to a power of 2. +*/ +#define SECOND_HASH(hash, mask, power) \ + ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) +#define PROBE_STEP(hash, mask, power) \ + ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) + +typedef struct { + NAMED **p; + NAMED **end; +} HASH_TABLE_ITER; + +#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ +#define INIT_DATA_BUF_SIZE 1024 +#define INIT_ATTS_SIZE 16 +#define INIT_ATTS_VERSION 0xFFFFFFFF +#define INIT_BLOCK_SIZE 1024 +#define INIT_BUFFER_SIZE 1024 + +#define EXPAND_SPARE 24 + +typedef struct binding { + struct prefix *prefix; + struct binding *nextTagBinding; + struct binding *prevPrefixBinding; + const struct attribute_id *attId; + XML_Char *uri; + int uriLen; + int uriAlloc; +} BINDING; + +typedef struct prefix { + const XML_Char *name; + BINDING *binding; +} PREFIX; + +typedef struct { + const XML_Char *str; + const XML_Char *localPart; + const XML_Char *prefix; + int strLen; + int uriLen; + int prefixLen; +} TAG_NAME; + +/* TAG represents an open element. + The name of the element is stored in both the document and API + encodings. The memory buffer 'buf' is a separately-allocated + memory area which stores the name. During the XML_Parse()/ + XMLParseBuffer() when the element is open, the memory for the 'raw' + version of the name (in the document encoding) is shared with the + document buffer. If the element is open across calls to + XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to + contain the 'raw' name as well. + + A parser re-uses these structures, maintaining a list of allocated + TAG objects in a free list. +*/ +typedef struct tag { + struct tag *parent; /* parent of this element */ + const char *rawName; /* tagName in the original encoding */ + int rawNameLength; + TAG_NAME name; /* tagName in the API encoding */ + char *buf; /* buffer for name components */ + char *bufEnd; /* end of the buffer */ + BINDING *bindings; +} TAG; + +typedef struct { + const XML_Char *name; + const XML_Char *textPtr; + int textLen; /* length in XML_Chars */ + int processed; /* # of processed bytes - when suspended */ + const XML_Char *systemId; + const XML_Char *base; + const XML_Char *publicId; + const XML_Char *notation; + XML_Bool open; + XML_Bool is_param; + XML_Bool is_internal; /* true if declared in internal subset outside PE */ +} ENTITY; + +typedef struct { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + const XML_Char * name; + int firstchild; + int lastchild; + int childcnt; + int nextsib; +} CONTENT_SCAFFOLD; + +#define INIT_SCAFFOLD_ELEMENTS 32 + +typedef struct block { + struct block *next; + int size; + XML_Char s[1]; +} BLOCK; + +typedef struct { + BLOCK *blocks; + BLOCK *freeBlocks; + const XML_Char *end; + XML_Char *ptr; + XML_Char *start; + const XML_Memory_Handling_Suite *mem; +} STRING_POOL; + +/* The XML_Char before the name is used to determine whether + an attribute has been specified. */ +typedef struct attribute_id { + XML_Char *name; + PREFIX *prefix; + XML_Bool maybeTokenized; + XML_Bool xmlns; +} ATTRIBUTE_ID; + +typedef struct { + const ATTRIBUTE_ID *id; + XML_Bool isCdata; + const XML_Char *value; +} DEFAULT_ATTRIBUTE; + +typedef struct { + unsigned long version; + unsigned long hash; + const XML_Char *uriName; +} NS_ATT; + +typedef struct { + const XML_Char *name; + PREFIX *prefix; + const ATTRIBUTE_ID *idAtt; + int nDefaultAtts; + int allocDefaultAtts; + DEFAULT_ATTRIBUTE *defaultAtts; +} ELEMENT_TYPE; + +typedef struct { + HASH_TABLE generalEntities; + HASH_TABLE elementTypes; + HASH_TABLE attributeIds; + HASH_TABLE prefixes; + STRING_POOL pool; + STRING_POOL entityValuePool; + /* false once a parameter entity reference has been skipped */ + XML_Bool keepProcessing; + /* true once an internal or external PE reference has been encountered; + this includes the reference to an external subset */ + XML_Bool hasParamEntityRefs; + XML_Bool standalone; +#ifdef XML_DTD + /* indicates if external PE has been read */ + XML_Bool paramEntityRead; + HASH_TABLE paramEntities; +#endif /* XML_DTD */ + PREFIX defaultPrefix; + /* === scaffolding for building content model === */ + XML_Bool in_eldecl; + CONTENT_SCAFFOLD *scaffold; + unsigned contentStringLen; + unsigned scaffSize; + unsigned scaffCount; + int scaffLevel; + int *scaffIndex; +} DTD; + +typedef struct open_internal_entity { + const char *internalEventPtr; + const char *internalEventEndPtr; + struct open_internal_entity *next; + ENTITY *entity; + int startTagLevel; + XML_Bool betweenDecl; /* WFC: PE Between Declarations */ +} OPEN_INTERNAL_ENTITY; + +typedef enum XML_Error PTRCALL Processor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr); + +static Processor prologProcessor; +static Processor prologInitProcessor; +static Processor contentProcessor; +static Processor cdataSectionProcessor; +#ifdef XML_DTD +static Processor ignoreSectionProcessor; +static Processor externalParEntProcessor; +static Processor externalParEntInitProcessor; +static Processor entityValueProcessor; +static Processor entityValueInitProcessor; +#endif /* XML_DTD */ +static Processor epilogProcessor; +static Processor errorProcessor; +static Processor externalEntityInitProcessor; +static Processor externalEntityInitProcessor2; +static Processor externalEntityInitProcessor3; +static Processor externalEntityContentProcessor; +static Processor internalEntityProcessor; + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next); +static enum XML_Error +initializeEncoding(XML_Parser parser); +static enum XML_Error +doProlog(XML_Parser parser, const ENCODING *enc, const char *s, + const char *end, int tok, const char *next, const char **nextPtr, + XML_Bool haveMore); +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); +static enum XML_Error +doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, + const char *start, const char *end, const char **endPtr, + XML_Bool haveMore); +static enum XML_Error +doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore); +#ifdef XML_DTD +static enum XML_Error +doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore); +#endif /* XML_DTD */ + +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *, const char *s, + TAG_NAME *tagNamePtr, BINDING **bindingsPtr); +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr); +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, + XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, + const char *, const char *, STRING_POOL *); +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, + const char *, const char *, STRING_POOL *); +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); +static enum XML_Error +storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int +reportComment(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static void +reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); + +static const XML_Char * getContext(XML_Parser parser); +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context); + +static void FASTCALL normalizePublicId(XML_Char *s); + +static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); +/* do not call if parentParser != NULL */ +static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); +static int +dtdCopy(XML_Parser oldParser, + DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); +static int +copyEntityTable(XML_Parser oldParser, + HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); +static NAMED * +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); +static void FASTCALL +hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL hashTableClear(HASH_TABLE *); +static void FASTCALL hashTableDestroy(HASH_TABLE *); +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); +static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); + +static void FASTCALL +poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL poolClear(STRING_POOL *); +static void FASTCALL poolDestroy(STRING_POOL *); +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); +static const XML_Char * FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s); +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); +static const XML_Char * FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s); + +static int FASTCALL nextScaffoldPart(XML_Parser parser); +static XML_Content * build_model(XML_Parser parser); +static ELEMENT_TYPE * +getElementType(XML_Parser parser, const ENCODING *enc, + const char *ptr, const char *end); + +static unsigned long generate_hash_secret_salt(XML_Parser parser); +static XML_Bool startParsing(XML_Parser parser); + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, + DTD *dtd); + +static void +parserInit(XML_Parser parser, const XML_Char *encodingName); + +#define poolStart(pool) ((pool)->start) +#define poolEnd(pool) ((pool)->ptr) +#define poolLength(pool) ((pool)->ptr - (pool)->start) +#define poolChop(pool) ((void)--(pool->ptr)) +#define poolLastChar(pool) (((pool)->ptr)[-1]) +#define poolDiscard(pool) ((pool)->ptr = (pool)->start) +#define poolFinish(pool) ((pool)->start = (pool)->ptr) +#define poolAppendChar(pool, c) \ + (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ + ? 0 \ + : ((*((pool)->ptr)++ = c), 1)) + +struct XML_ParserStruct { + /* The first member must be userData so that the XML_GetUserData + macro works. */ + void *m_userData; + void *m_handlerArg; + char *m_buffer; + const XML_Memory_Handling_Suite m_mem; + /* first character to be parsed */ + const char *m_bufferPtr; + /* past last character to be parsed */ + char *m_bufferEnd; + /* allocated end of buffer */ + const char *m_bufferLim; + XML_Index m_parseEndByteIndex; + const char *m_parseEndPtr; + XML_Char *m_dataBuf; + XML_Char *m_dataBufEnd; + XML_StartElementHandler m_startElementHandler; + XML_EndElementHandler m_endElementHandler; + XML_CharacterDataHandler m_characterDataHandler; + XML_ProcessingInstructionHandler m_processingInstructionHandler; + XML_CommentHandler m_commentHandler; + XML_StartCdataSectionHandler m_startCdataSectionHandler; + XML_EndCdataSectionHandler m_endCdataSectionHandler; + XML_DefaultHandler m_defaultHandler; + XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; + XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; + XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; + XML_NotationDeclHandler m_notationDeclHandler; + XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; + XML_NotStandaloneHandler m_notStandaloneHandler; + XML_ExternalEntityRefHandler m_externalEntityRefHandler; + XML_Parser m_externalEntityRefHandlerArg; + XML_SkippedEntityHandler m_skippedEntityHandler; + XML_UnknownEncodingHandler m_unknownEncodingHandler; + XML_ElementDeclHandler m_elementDeclHandler; + XML_AttlistDeclHandler m_attlistDeclHandler; + XML_EntityDeclHandler m_entityDeclHandler; + XML_XmlDeclHandler m_xmlDeclHandler; + const ENCODING *m_encoding; + INIT_ENCODING m_initEncoding; + const ENCODING *m_internalEncoding; + const XML_Char *m_protocolEncodingName; + XML_Bool m_ns; + XML_Bool m_ns_triplets; + void *m_unknownEncodingMem; + void *m_unknownEncodingData; + void *m_unknownEncodingHandlerData; + void (XMLCALL *m_unknownEncodingRelease)(void *); + PROLOG_STATE m_prologState; + Processor *m_processor; + enum XML_Error m_errorCode; + const char *m_eventPtr; + const char *m_eventEndPtr; + const char *m_positionPtr; + OPEN_INTERNAL_ENTITY *m_openInternalEntities; + OPEN_INTERNAL_ENTITY *m_freeInternalEntities; + XML_Bool m_defaultExpandInternalEntities; + int m_tagLevel; + ENTITY *m_declEntity; + const XML_Char *m_doctypeName; + const XML_Char *m_doctypeSysid; + const XML_Char *m_doctypePubid; + const XML_Char *m_declAttributeType; + const XML_Char *m_declNotationName; + const XML_Char *m_declNotationPublicId; + ELEMENT_TYPE *m_declElementType; + ATTRIBUTE_ID *m_declAttributeId; + XML_Bool m_declAttributeIsCdata; + XML_Bool m_declAttributeIsId; + DTD *m_dtd; + const XML_Char *m_curBase; + TAG *m_tagStack; + TAG *m_freeTagList; + BINDING *m_inheritedBindings; + BINDING *m_freeBindingList; + int m_attsSize; + int m_nSpecifiedAtts; + int m_idAttIndex; + ATTRIBUTE *m_atts; + NS_ATT *m_nsAtts; + unsigned long m_nsAttsVersion; + unsigned char m_nsAttsPower; +#ifdef XML_ATTR_INFO + XML_AttrInfo *m_attInfo; +#endif + POSITION m_position; + STRING_POOL m_tempPool; + STRING_POOL m_temp2Pool; + char *m_groupConnector; + unsigned int m_groupSize; + XML_Char m_namespaceSeparator; + XML_Parser m_parentParser; + XML_ParsingStatus m_parsingStatus; +#ifdef XML_DTD + XML_Bool m_isParamEntity; + XML_Bool m_useForeignDTD; + enum XML_ParamEntityParsing m_paramEntityParsing; +#endif + unsigned long m_hash_secret_salt; +}; + +#define MALLOC(s) (parser->m_mem.malloc_fcn((s))) +#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) +#define FREE(p) (parser->m_mem.free_fcn((p))) + +#define userData (parser->m_userData) +#define handlerArg (parser->m_handlerArg) +#define startElementHandler (parser->m_startElementHandler) +#define endElementHandler (parser->m_endElementHandler) +#define characterDataHandler (parser->m_characterDataHandler) +#define processingInstructionHandler \ + (parser->m_processingInstructionHandler) +#define commentHandler (parser->m_commentHandler) +#define startCdataSectionHandler \ + (parser->m_startCdataSectionHandler) +#define endCdataSectionHandler (parser->m_endCdataSectionHandler) +#define defaultHandler (parser->m_defaultHandler) +#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) +#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) +#define unparsedEntityDeclHandler \ + (parser->m_unparsedEntityDeclHandler) +#define notationDeclHandler (parser->m_notationDeclHandler) +#define startNamespaceDeclHandler \ + (parser->m_startNamespaceDeclHandler) +#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) +#define notStandaloneHandler (parser->m_notStandaloneHandler) +#define externalEntityRefHandler \ + (parser->m_externalEntityRefHandler) +#define externalEntityRefHandlerArg \ + (parser->m_externalEntityRefHandlerArg) +#define internalEntityRefHandler \ + (parser->m_internalEntityRefHandler) +#define skippedEntityHandler (parser->m_skippedEntityHandler) +#define unknownEncodingHandler (parser->m_unknownEncodingHandler) +#define elementDeclHandler (parser->m_elementDeclHandler) +#define attlistDeclHandler (parser->m_attlistDeclHandler) +#define entityDeclHandler (parser->m_entityDeclHandler) +#define xmlDeclHandler (parser->m_xmlDeclHandler) +#define encoding (parser->m_encoding) +#define initEncoding (parser->m_initEncoding) +#define internalEncoding (parser->m_internalEncoding) +#define unknownEncodingMem (parser->m_unknownEncodingMem) +#define unknownEncodingData (parser->m_unknownEncodingData) +#define unknownEncodingHandlerData \ + (parser->m_unknownEncodingHandlerData) +#define unknownEncodingRelease (parser->m_unknownEncodingRelease) +#define protocolEncodingName (parser->m_protocolEncodingName) +#define ns (parser->m_ns) +#define ns_triplets (parser->m_ns_triplets) +#define prologState (parser->m_prologState) +#define processor (parser->m_processor) +#define errorCode (parser->m_errorCode) +#define eventPtr (parser->m_eventPtr) +#define eventEndPtr (parser->m_eventEndPtr) +#define positionPtr (parser->m_positionPtr) +#define position (parser->m_position) +#define openInternalEntities (parser->m_openInternalEntities) +#define freeInternalEntities (parser->m_freeInternalEntities) +#define defaultExpandInternalEntities \ + (parser->m_defaultExpandInternalEntities) +#define tagLevel (parser->m_tagLevel) +#define buffer (parser->m_buffer) +#define bufferPtr (parser->m_bufferPtr) +#define bufferEnd (parser->m_bufferEnd) +#define parseEndByteIndex (parser->m_parseEndByteIndex) +#define parseEndPtr (parser->m_parseEndPtr) +#define bufferLim (parser->m_bufferLim) +#define dataBuf (parser->m_dataBuf) +#define dataBufEnd (parser->m_dataBufEnd) +#define _dtd (parser->m_dtd) +#define curBase (parser->m_curBase) +#define declEntity (parser->m_declEntity) +#define doctypeName (parser->m_doctypeName) +#define doctypeSysid (parser->m_doctypeSysid) +#define doctypePubid (parser->m_doctypePubid) +#define declAttributeType (parser->m_declAttributeType) +#define declNotationName (parser->m_declNotationName) +#define declNotationPublicId (parser->m_declNotationPublicId) +#define declElementType (parser->m_declElementType) +#define declAttributeId (parser->m_declAttributeId) +#define declAttributeIsCdata (parser->m_declAttributeIsCdata) +#define declAttributeIsId (parser->m_declAttributeIsId) +#define freeTagList (parser->m_freeTagList) +#define freeBindingList (parser->m_freeBindingList) +#define inheritedBindings (parser->m_inheritedBindings) +#define tagStack (parser->m_tagStack) +#define atts (parser->m_atts) +#define attsSize (parser->m_attsSize) +#define nSpecifiedAtts (parser->m_nSpecifiedAtts) +#define idAttIndex (parser->m_idAttIndex) +#define nsAtts (parser->m_nsAtts) +#define nsAttsVersion (parser->m_nsAttsVersion) +#define nsAttsPower (parser->m_nsAttsPower) +#define attInfo (parser->m_attInfo) +#define tempPool (parser->m_tempPool) +#define temp2Pool (parser->m_temp2Pool) +#define groupConnector (parser->m_groupConnector) +#define groupSize (parser->m_groupSize) +#define namespaceSeparator (parser->m_namespaceSeparator) +#define parentParser (parser->m_parentParser) +#define ps_parsing (parser->m_parsingStatus.parsing) +#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) +#ifdef XML_DTD +#define isParamEntity (parser->m_isParamEntity) +#define useForeignDTD (parser->m_useForeignDTD) +#define paramEntityParsing (parser->m_paramEntityParsing) +#endif /* XML_DTD */ +#define hash_secret_salt (parser->m_hash_secret_salt) + +XML_Parser XMLCALL +XML_ParserCreate(const XML_Char *encodingName) +{ + return XML_ParserCreate_MM(encodingName, NULL, NULL); +} + +XML_Parser XMLCALL +XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) +{ + XML_Char tmp[2]; + *tmp = nsSep; + return XML_ParserCreate_MM(encodingName, NULL, tmp); +} + +static const XML_Char implicitContext[] = { + ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, + ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, + ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, + ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, + ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, + ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' +}; + +static unsigned long +gather_time_entropy(void) +{ +#ifdef WIN32 + FILETIME ft; + GetSystemTimeAsFileTime(&ft); /* never fails */ + return ft.dwHighDateTime ^ ft.dwLowDateTime; +#else + struct timeval tv; + int gettimeofday_res; + + gettimeofday_res = gettimeofday(&tv, NULL); + assert (gettimeofday_res == 0); + + /* Microseconds time is <20 bits entropy */ + return tv.tv_usec; +#endif +} + +static unsigned long +generate_hash_secret_salt(XML_Parser parser) +{ + /* Process ID is 0 bits entropy if attacker has local access + * XML_Parser address is few bits of entropy if attacker has local access */ + const unsigned long entropy = + gather_time_entropy() ^ getpid() ^ (unsigned long)parser; + + /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ + if (sizeof(unsigned long) == 4) { + return entropy * 2147483647; + } else { + return entropy * (unsigned long)2305843009213693951; + } +} + +static XML_Bool /* only valid for root parser */ +startParsing(XML_Parser parser) +{ + /* hash functions must be initialized before setContext() is called */ + if (hash_secret_salt == 0) + hash_secret_salt = generate_hash_secret_salt(parser); + if (ns) { + /* implicit context only set for root parser, since child + parsers (i.e. external entity parsers) will inherit it + */ + return setContext(parser, implicitContext); + } + return XML_TRUE; +} + +XML_Parser XMLCALL +XML_ParserCreate_MM(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep) +{ + return parserCreate(encodingName, memsuite, nameSep, NULL); +} + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, + DTD *dtd) +{ + XML_Parser parser; + + if (memsuite) { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser) + memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = memsuite->malloc_fcn; + mtemp->realloc_fcn = memsuite->realloc_fcn; + mtemp->free_fcn = memsuite->free_fcn; + } + } + else { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = malloc; + mtemp->realloc_fcn = realloc; + mtemp->free_fcn = free; + } + } + + if (!parser) + return parser; + + buffer = NULL; + bufferLim = NULL; + + attsSize = INIT_ATTS_SIZE; + atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); + if (atts == NULL) { + FREE(parser); + return NULL; + } +#ifdef XML_ATTR_INFO + attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo)); + if (attInfo == NULL) { + FREE(atts); + FREE(parser); + return NULL; + } +#endif + dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + if (dataBuf == NULL) { + FREE(atts); +#ifdef XML_ATTR_INFO + FREE(attInfo); +#endif + FREE(parser); + return NULL; + } + dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; + + if (dtd) + _dtd = dtd; + else { + _dtd = dtdCreate(&parser->m_mem); + if (_dtd == NULL) { + FREE(dataBuf); + FREE(atts); +#ifdef XML_ATTR_INFO + FREE(attInfo); +#endif + FREE(parser); + return NULL; + } + } + + freeBindingList = NULL; + freeTagList = NULL; + freeInternalEntities = NULL; + + groupSize = 0; + groupConnector = NULL; + + unknownEncodingHandler = NULL; + unknownEncodingHandlerData = NULL; + + namespaceSeparator = ASCII_EXCL; + ns = XML_FALSE; + ns_triplets = XML_FALSE; + + nsAtts = NULL; + nsAttsVersion = 0; + nsAttsPower = 0; + + poolInit(&tempPool, &(parser->m_mem)); + poolInit(&temp2Pool, &(parser->m_mem)); + parserInit(parser, encodingName); + + if (encodingName && !protocolEncodingName) { + XML_ParserFree(parser); + return NULL; + } + + if (nameSep) { + ns = XML_TRUE; + internalEncoding = XmlGetInternalEncodingNS(); + namespaceSeparator = *nameSep; + } + else { + internalEncoding = XmlGetInternalEncoding(); + } + + return parser; +} + +static void +parserInit(XML_Parser parser, const XML_Char *encodingName) +{ + processor = prologInitProcessor; + XmlPrologStateInit(&prologState); + protocolEncodingName = (encodingName != NULL + ? poolCopyString(&tempPool, encodingName) + : NULL); + curBase = NULL; + XmlInitEncoding(&initEncoding, &encoding, 0); + userData = NULL; + handlerArg = NULL; + startElementHandler = NULL; + endElementHandler = NULL; + characterDataHandler = NULL; + processingInstructionHandler = NULL; + commentHandler = NULL; + startCdataSectionHandler = NULL; + endCdataSectionHandler = NULL; + defaultHandler = NULL; + startDoctypeDeclHandler = NULL; + endDoctypeDeclHandler = NULL; + unparsedEntityDeclHandler = NULL; + notationDeclHandler = NULL; + startNamespaceDeclHandler = NULL; + endNamespaceDeclHandler = NULL; + notStandaloneHandler = NULL; + externalEntityRefHandler = NULL; + externalEntityRefHandlerArg = parser; + skippedEntityHandler = NULL; + elementDeclHandler = NULL; + attlistDeclHandler = NULL; + entityDeclHandler = NULL; + xmlDeclHandler = NULL; + bufferPtr = buffer; + bufferEnd = buffer; + parseEndByteIndex = 0; + parseEndPtr = NULL; + declElementType = NULL; + declAttributeId = NULL; + declEntity = NULL; + doctypeName = NULL; + doctypeSysid = NULL; + doctypePubid = NULL; + declAttributeType = NULL; + declNotationName = NULL; + declNotationPublicId = NULL; + declAttributeIsCdata = XML_FALSE; + declAttributeIsId = XML_FALSE; + memset(&position, 0, sizeof(POSITION)); + errorCode = XML_ERROR_NONE; + eventPtr = NULL; + eventEndPtr = NULL; + positionPtr = NULL; + openInternalEntities = NULL; + defaultExpandInternalEntities = XML_TRUE; + tagLevel = 0; + tagStack = NULL; + inheritedBindings = NULL; + nSpecifiedAtts = 0; + unknownEncodingMem = NULL; + unknownEncodingRelease = NULL; + unknownEncodingData = NULL; + parentParser = NULL; + ps_parsing = XML_INITIALIZED; +#ifdef XML_DTD + isParamEntity = XML_FALSE; + useForeignDTD = XML_FALSE; + paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif + hash_secret_salt = 0; +} + +/* moves list of bindings to freeBindingList */ +static void FASTCALL +moveToFreeBindingList(XML_Parser parser, BINDING *bindings) +{ + while (bindings) { + BINDING *b = bindings; + bindings = bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + } +} + +XML_Bool XMLCALL +XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) +{ + TAG *tStk; + OPEN_INTERNAL_ENTITY *openEntityList; + if (parentParser) + return XML_FALSE; + /* move tagStack to freeTagList */ + tStk = tagStack; + while (tStk) { + TAG *tag = tStk; + tStk = tStk->parent; + tag->parent = freeTagList; + moveToFreeBindingList(parser, tag->bindings); + tag->bindings = NULL; + freeTagList = tag; + } + /* move openInternalEntities to freeInternalEntities */ + openEntityList = openInternalEntities; + while (openEntityList) { + OPEN_INTERNAL_ENTITY *openEntity = openEntityList; + openEntityList = openEntity->next; + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + moveToFreeBindingList(parser, inheritedBindings); + FREE(unknownEncodingMem); + if (unknownEncodingRelease) + unknownEncodingRelease(unknownEncodingData); + poolClear(&tempPool); + poolClear(&temp2Pool); + parserInit(parser, encodingName); + dtdReset(_dtd, &parser->m_mem); + return XML_TRUE; +} + +enum XML_Status XMLCALL +XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) +{ + /* Block after XML_Parse()/XML_ParseBuffer() has been called. + XXX There's no way for the caller to determine which of the + XXX possible error cases caused the XML_STATUS_ERROR return. + */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return XML_STATUS_ERROR; + if (encodingName == NULL) + protocolEncodingName = NULL; + else { + protocolEncodingName = poolCopyString(&tempPool, encodingName); + if (!protocolEncodingName) + return XML_STATUS_ERROR; + } + return XML_STATUS_OK; +} + +XML_Parser XMLCALL +XML_ExternalEntityParserCreate(XML_Parser oldParser, + const XML_Char *context, + const XML_Char *encodingName) +{ + XML_Parser parser = oldParser; + DTD *newDtd = NULL; + DTD *oldDtd = _dtd; + XML_StartElementHandler oldStartElementHandler = startElementHandler; + XML_EndElementHandler oldEndElementHandler = endElementHandler; + XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; + XML_ProcessingInstructionHandler oldProcessingInstructionHandler + = processingInstructionHandler; + XML_CommentHandler oldCommentHandler = commentHandler; + XML_StartCdataSectionHandler oldStartCdataSectionHandler + = startCdataSectionHandler; + XML_EndCdataSectionHandler oldEndCdataSectionHandler + = endCdataSectionHandler; + XML_DefaultHandler oldDefaultHandler = defaultHandler; + XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler + = unparsedEntityDeclHandler; + XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; + XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler + = startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler + = endNamespaceDeclHandler; + XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; + XML_ExternalEntityRefHandler oldExternalEntityRefHandler + = externalEntityRefHandler; + XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; + XML_UnknownEncodingHandler oldUnknownEncodingHandler + = unknownEncodingHandler; + XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; + XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; + XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; + XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; + ELEMENT_TYPE * oldDeclElementType = declElementType; + + void *oldUserData = userData; + void *oldHandlerArg = handlerArg; + XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; + XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; +#ifdef XML_DTD + enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; + int oldInEntityValue = prologState.inEntityValue; +#endif + XML_Bool oldns_triplets = ns_triplets; + /* Note that the new parser shares the same hash secret as the old + parser, so that dtdCopy and copyEntityTable can lookup values + from hash tables associated with either parser without us having + to worry which hash secrets each table has. + */ + unsigned long oldhash_secret_salt = hash_secret_salt; + +#ifdef XML_DTD + if (!context) + newDtd = oldDtd; +#endif /* XML_DTD */ + + /* Note that the magical uses of the pre-processor to make field + access look more like C++ require that `parser' be overwritten + here. This makes this function more painful to follow than it + would be otherwise. + */ + if (ns) { + XML_Char tmp[2]; + *tmp = namespaceSeparator; + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); + } + else { + parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); + } + + if (!parser) + return NULL; + + startElementHandler = oldStartElementHandler; + endElementHandler = oldEndElementHandler; + characterDataHandler = oldCharacterDataHandler; + processingInstructionHandler = oldProcessingInstructionHandler; + commentHandler = oldCommentHandler; + startCdataSectionHandler = oldStartCdataSectionHandler; + endCdataSectionHandler = oldEndCdataSectionHandler; + defaultHandler = oldDefaultHandler; + unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; + notationDeclHandler = oldNotationDeclHandler; + startNamespaceDeclHandler = oldStartNamespaceDeclHandler; + endNamespaceDeclHandler = oldEndNamespaceDeclHandler; + notStandaloneHandler = oldNotStandaloneHandler; + externalEntityRefHandler = oldExternalEntityRefHandler; + skippedEntityHandler = oldSkippedEntityHandler; + unknownEncodingHandler = oldUnknownEncodingHandler; + elementDeclHandler = oldElementDeclHandler; + attlistDeclHandler = oldAttlistDeclHandler; + entityDeclHandler = oldEntityDeclHandler; + xmlDeclHandler = oldXmlDeclHandler; + declElementType = oldDeclElementType; + userData = oldUserData; + if (oldUserData == oldHandlerArg) + handlerArg = userData; + else + handlerArg = parser; + if (oldExternalEntityRefHandlerArg != oldParser) + externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; + defaultExpandInternalEntities = oldDefaultExpandInternalEntities; + ns_triplets = oldns_triplets; + hash_secret_salt = oldhash_secret_salt; + parentParser = oldParser; +#ifdef XML_DTD + paramEntityParsing = oldParamEntityParsing; + prologState.inEntityValue = oldInEntityValue; + if (context) { +#endif /* XML_DTD */ + if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem) + || !setContext(parser, context)) { + XML_ParserFree(parser); + return NULL; + } + processor = externalEntityInitProcessor; +#ifdef XML_DTD + } + else { + /* The DTD instance referenced by _dtd is shared between the document's + root parser and external PE parsers, therefore one does not need to + call setContext. In addition, one also *must* not call setContext, + because this would overwrite existing prefix->binding pointers in + _dtd with ones that get destroyed with the external PE parser. + This would leave those prefixes with dangling pointers. + */ + isParamEntity = XML_TRUE; + XmlPrologStateInitExternalEntity(&prologState); + processor = externalParEntInitProcessor; + } +#endif /* XML_DTD */ + return parser; +} + +static void FASTCALL +destroyBindings(BINDING *bindings, XML_Parser parser) +{ + for (;;) { + BINDING *b = bindings; + if (!b) + break; + bindings = b->nextTagBinding; + FREE(b->uri); + FREE(b); + } +} + +void XMLCALL +XML_ParserFree(XML_Parser parser) +{ + TAG *tagList; + OPEN_INTERNAL_ENTITY *entityList; + if (parser == NULL) + return; + /* free tagStack and freeTagList */ + tagList = tagStack; + for (;;) { + TAG *p; + if (tagList == NULL) { + if (freeTagList == NULL) + break; + tagList = freeTagList; + freeTagList = NULL; + } + p = tagList; + tagList = tagList->parent; + FREE(p->buf); + destroyBindings(p->bindings, parser); + FREE(p); + } + /* free openInternalEntities and freeInternalEntities */ + entityList = openInternalEntities; + for (;;) { + OPEN_INTERNAL_ENTITY *openEntity; + if (entityList == NULL) { + if (freeInternalEntities == NULL) + break; + entityList = freeInternalEntities; + freeInternalEntities = NULL; + } + openEntity = entityList; + entityList = entityList->next; + FREE(openEntity); + } + + destroyBindings(freeBindingList, parser); + destroyBindings(inheritedBindings, parser); + poolDestroy(&tempPool); + poolDestroy(&temp2Pool); +#ifdef XML_DTD + /* external parameter entity parsers share the DTD structure + parser->m_dtd with the root parser, so we must not destroy it + */ + if (!isParamEntity && _dtd) +#else + if (_dtd) +#endif /* XML_DTD */ + dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); + FREE((void *)atts); +#ifdef XML_ATTR_INFO + FREE((void *)attInfo); +#endif + FREE(groupConnector); + FREE(buffer); + FREE(dataBuf); + FREE(nsAtts); + FREE(unknownEncodingMem); + if (unknownEncodingRelease) + unknownEncodingRelease(unknownEncodingData); + FREE(parser); +} + +void XMLCALL +XML_UseParserAsHandlerArg(XML_Parser parser) +{ + handlerArg = parser; +} + +enum XML_Error XMLCALL +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) +{ +#ifdef XML_DTD + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; + useForeignDTD = useDTD; + return XML_ERROR_NONE; +#else + return XML_ERROR_FEATURE_REQUIRES_XML_DTD; +#endif +} + +void XMLCALL +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return; + ns_triplets = do_nst ? XML_TRUE : XML_FALSE; +} + +void XMLCALL +XML_SetUserData(XML_Parser parser, void *p) +{ + if (handlerArg == userData) + handlerArg = userData = p; + else + userData = p; +} + +enum XML_Status XMLCALL +XML_SetBase(XML_Parser parser, const XML_Char *p) +{ + if (p) { + p = poolCopyString(&_dtd->pool, p); + if (!p) + return XML_STATUS_ERROR; + curBase = p; + } + else + curBase = NULL; + return XML_STATUS_OK; +} + +const XML_Char * XMLCALL +XML_GetBase(XML_Parser parser) +{ + return curBase; +} + +int XMLCALL +XML_GetSpecifiedAttributeCount(XML_Parser parser) +{ + return nSpecifiedAtts; +} + +int XMLCALL +XML_GetIdAttributeIndex(XML_Parser parser) +{ + return idAttIndex; +} + +#ifdef XML_ATTR_INFO +const XML_AttrInfo * XMLCALL +XML_GetAttributeInfo(XML_Parser parser) +{ + return attInfo; +} +#endif + +void XMLCALL +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end) +{ + startElementHandler = start; + endElementHandler = end; +} + +void XMLCALL +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler start) { + startElementHandler = start; +} + +void XMLCALL +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler end) { + endElementHandler = end; +} + +void XMLCALL +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler) +{ + characterDataHandler = handler; +} + +void XMLCALL +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler) +{ + processingInstructionHandler = handler; +} + +void XMLCALL +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler) +{ + commentHandler = handler; +} + +void XMLCALL +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end) +{ + startCdataSectionHandler = start; + endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start) { + startCdataSectionHandler = start; +} + +void XMLCALL +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end) { + endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler) +{ + defaultHandler = handler; + defaultExpandInternalEntities = XML_FALSE; +} + +void XMLCALL +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler) +{ + defaultHandler = handler; + defaultExpandInternalEntities = XML_TRUE; +} + +void XMLCALL +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end) +{ + startDoctypeDeclHandler = start; + endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start) { + startDoctypeDeclHandler = start; +} + +void XMLCALL +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end) { + endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler) +{ + unparsedEntityDeclHandler = handler; +} + +void XMLCALL +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler) +{ + notationDeclHandler = handler; +} + +void XMLCALL +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end) +{ + startNamespaceDeclHandler = start; + endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start) { + startNamespaceDeclHandler = start; +} + +void XMLCALL +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end) { + endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler) +{ + notStandaloneHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler) +{ + externalEntityRefHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) +{ + if (arg) + externalEntityRefHandlerArg = (XML_Parser)arg; + else + externalEntityRefHandlerArg = parser; +} + +void XMLCALL +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler) +{ + skippedEntityHandler = handler; +} + +void XMLCALL +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *data) +{ + unknownEncodingHandler = handler; + unknownEncodingHandlerData = data; +} + +void XMLCALL +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl) +{ + elementDeclHandler = eldecl; +} + +void XMLCALL +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl) +{ + attlistDeclHandler = attdecl; +} + +void XMLCALL +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler) +{ + entityDeclHandler = handler; +} + +void XMLCALL +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler handler) { + xmlDeclHandler = handler; +} + +int XMLCALL +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing peParsing) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return 0; +#ifdef XML_DTD + paramEntityParsing = peParsing; + return 1; +#else + return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; +#endif +} + +int XMLCALL +XML_SetHashSalt(XML_Parser parser, + unsigned long hash_salt) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return 0; + hash_secret_salt = hash_salt; + return 1; +} + +enum XML_Status XMLCALL +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + case XML_INITIALIZED: + if (parentParser == NULL && !startParsing(parser)) { + errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + default: + ps_parsing = XML_PARSING; + } + + if (len == 0) { + ps_finalBuffer = (XML_Bool)isFinal; + if (!isFinal) + return XML_STATUS_OK; + positionPtr = bufferPtr; + parseEndPtr = bufferEnd; + + /* If data are left over from last buffer, and we now know that these + data are the final chunk of input, then we have to check them again + to detect errors based on that fact. + */ + errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + + if (errorCode == XML_ERROR_NONE) { + switch (ps_parsing) { + case XML_SUSPENDED: + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return XML_STATUS_SUSPENDED; + case XML_INITIALIZED: + case XML_PARSING: + ps_parsing = XML_FINISHED; + /* fall through */ + default: + return XML_STATUS_OK; + } + } + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } +#ifndef XML_CONTEXT_BYTES + else if (bufferPtr == bufferEnd) { + const char *end; + int nLeftOver; + enum XML_Status result; + parseEndByteIndex += len; + positionPtr = s; + ps_finalBuffer = (XML_Bool)isFinal; + + errorCode = processor(parser, s, parseEndPtr = s + len, &end); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + ps_parsing = XML_FINISHED; + return XML_STATUS_OK; + } + /* fall through */ + default: + result = XML_STATUS_OK; + } + } + + XmlUpdatePosition(encoding, positionPtr, end, &position); + nLeftOver = s + len - end; + if (nLeftOver) { + if (buffer == NULL || nLeftOver > bufferLim - buffer) { + /* FIXME avoid integer overflow */ + char *temp; + temp = (buffer == NULL + ? (char *)MALLOC(len * 2) + : (char *)REALLOC(buffer, len * 2)); + if (temp == NULL) { + errorCode = XML_ERROR_NO_MEMORY; + eventPtr = eventEndPtr = NULL; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + buffer = temp; + bufferLim = buffer + len * 2; + } + memcpy(buffer, end, nLeftOver); + } + bufferPtr = buffer; + bufferEnd = buffer + nLeftOver; + positionPtr = bufferPtr; + parseEndPtr = bufferEnd; + eventPtr = bufferPtr; + eventEndPtr = bufferPtr; + return result; + } +#endif /* not defined XML_CONTEXT_BYTES */ + else { + void *buff = XML_GetBuffer(parser, len); + if (buff == NULL) + return XML_STATUS_ERROR; + else { + memcpy(buff, s, len); + return XML_ParseBuffer(parser, len, isFinal); + } + } +} + +enum XML_Status XMLCALL +XML_ParseBuffer(XML_Parser parser, int len, int isFinal) +{ + const char *start; + enum XML_Status result = XML_STATUS_OK; + + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + case XML_INITIALIZED: + if (parentParser == NULL && !startParsing(parser)) { + errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + default: + ps_parsing = XML_PARSING; + } + + start = bufferPtr; + positionPtr = start; + bufferEnd += len; + parseEndPtr = bufferEnd; + parseEndByteIndex += len; + ps_finalBuffer = (XML_Bool)isFinal; + + errorCode = processor(parser, start, parseEndPtr, &bufferPtr); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + ps_parsing = XML_FINISHED; + return result; + } + default: ; /* should not happen */ + } + } + + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return result; +} + +void * XMLCALL +XML_GetBuffer(XML_Parser parser, int len) +{ + if (len < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return NULL; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return NULL; + default: ; + } + + if (len > bufferLim - bufferEnd) { +#ifdef XML_CONTEXT_BYTES + int keep; +#endif /* defined XML_CONTEXT_BYTES */ + /* Do not invoke signed arithmetic overflow: */ + int neededSize = (int) ((unsigned)len + (unsigned)(bufferEnd - bufferPtr)); + if (neededSize < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +#ifdef XML_CONTEXT_BYTES + keep = (int)(bufferPtr - buffer); + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + neededSize += keep; +#endif /* defined XML_CONTEXT_BYTES */ + if (neededSize <= bufferLim - buffer) { +#ifdef XML_CONTEXT_BYTES + if (keep < bufferPtr - buffer) { + int offset = (int)(bufferPtr - buffer) - keep; + memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); + bufferEnd -= offset; + bufferPtr -= offset; + } +#else + memmove(buffer, bufferPtr, bufferEnd - bufferPtr); + bufferEnd = buffer + (bufferEnd - bufferPtr); + bufferPtr = buffer; +#endif /* not defined XML_CONTEXT_BYTES */ + } + else { + char *newBuf; + int bufferSize = (int)(bufferLim - bufferPtr); + if (bufferSize == 0) + bufferSize = INIT_BUFFER_SIZE; + do { + /* Do not invoke signed arithmetic overflow: */ + bufferSize = (int) (2U * (unsigned) bufferSize); + } while (bufferSize < neededSize && bufferSize > 0); + if (bufferSize <= 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + newBuf = (char *)MALLOC(bufferSize); + if (newBuf == 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + bufferLim = newBuf + bufferSize; +#ifdef XML_CONTEXT_BYTES + if (bufferPtr) { + int keep = (int)(bufferPtr - buffer); + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); + FREE(buffer); + buffer = newBuf; + bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; + bufferPtr = buffer + keep; + } + else { + bufferEnd = newBuf + (bufferEnd - bufferPtr); + bufferPtr = buffer = newBuf; + } +#else + if (bufferPtr) { + memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); + FREE(buffer); + } + bufferEnd = newBuf + (bufferEnd - bufferPtr); + bufferPtr = buffer = newBuf; +#endif /* not defined XML_CONTEXT_BYTES */ + } + eventPtr = eventEndPtr = NULL; + positionPtr = NULL; + } + return bufferEnd; +} + +enum XML_Status XMLCALL +XML_StopParser(XML_Parser parser, XML_Bool resumable) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + if (resumable) { + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + } + ps_parsing = XML_FINISHED; + break; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + default: + if (resumable) { +#ifdef XML_DTD + if (isParamEntity) { + errorCode = XML_ERROR_SUSPEND_PE; + return XML_STATUS_ERROR; + } +#endif + ps_parsing = XML_SUSPENDED; + } + else + ps_parsing = XML_FINISHED; + } + return XML_STATUS_OK; +} + +enum XML_Status XMLCALL +XML_ResumeParser(XML_Parser parser) +{ + enum XML_Status result = XML_STATUS_OK; + + if (ps_parsing != XML_SUSPENDED) { + errorCode = XML_ERROR_NOT_SUSPENDED; + return XML_STATUS_ERROR; + } + ps_parsing = XML_PARSING; + + errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (ps_finalBuffer) { + ps_parsing = XML_FINISHED; + return result; + } + default: ; + } + } + + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return result; +} + +void XMLCALL +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) +{ + assert(status != NULL); + *status = parser->m_parsingStatus; +} + +enum XML_Error XMLCALL +XML_GetErrorCode(XML_Parser parser) +{ + return errorCode; +} + +XML_Index XMLCALL +XML_GetCurrentByteIndex(XML_Parser parser) +{ + if (eventPtr) + return (XML_Index)(parseEndByteIndex - (parseEndPtr - eventPtr)); + return -1; +} + +int XMLCALL +XML_GetCurrentByteCount(XML_Parser parser) +{ + if (eventEndPtr && eventPtr) + return (int)(eventEndPtr - eventPtr); + return 0; +} + +const char * XMLCALL +XML_GetInputContext(XML_Parser parser, int *offset, int *size) +{ +#ifdef XML_CONTEXT_BYTES + if (eventPtr && buffer) { + *offset = (int)(eventPtr - buffer); + *size = (int)(bufferEnd - buffer); + return buffer; + } +#endif /* defined XML_CONTEXT_BYTES */ + return (char *) 0; +} + +XML_Size XMLCALL +XML_GetCurrentLineNumber(XML_Parser parser) +{ + if (eventPtr && eventPtr >= positionPtr) { + XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); + positionPtr = eventPtr; + } + return position.lineNumber + 1; +} + +XML_Size XMLCALL +XML_GetCurrentColumnNumber(XML_Parser parser) +{ + if (eventPtr && eventPtr >= positionPtr) { + XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); + positionPtr = eventPtr; + } + return position.columnNumber; +} + +void XMLCALL +XML_FreeContentModel(XML_Parser parser, XML_Content *model) +{ + FREE(model); +} + +void * XMLCALL +XML_MemMalloc(XML_Parser parser, size_t size) +{ + return MALLOC(size); +} + +void * XMLCALL +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) +{ + return REALLOC(ptr, size); +} + +void XMLCALL +XML_MemFree(XML_Parser parser, void *ptr) +{ + FREE(ptr); +} + +void XMLCALL +XML_DefaultCurrent(XML_Parser parser) +{ + if (defaultHandler) { + if (openInternalEntities) + reportDefault(parser, + internalEncoding, + openInternalEntities->internalEventPtr, + openInternalEntities->internalEventEndPtr); + else + reportDefault(parser, encoding, eventPtr, eventEndPtr); + } +} + +const XML_LChar * XMLCALL +XML_ErrorString(enum XML_Error code) +{ + static const XML_LChar* const message[] = { + 0, + XML_L("out of memory"), + XML_L("syntax error"), + XML_L("no element found"), + XML_L("not well-formed (invalid token)"), + XML_L("unclosed token"), + XML_L("partial character"), + XML_L("mismatched tag"), + XML_L("duplicate attribute"), + XML_L("junk after document element"), + XML_L("illegal parameter entity reference"), + XML_L("undefined entity"), + XML_L("recursive entity reference"), + XML_L("asynchronous entity"), + XML_L("reference to invalid character number"), + XML_L("reference to binary entity"), + XML_L("reference to external entity in attribute"), + XML_L("XML or text declaration not at start of entity"), + XML_L("unknown encoding"), + XML_L("encoding specified in XML declaration is incorrect"), + XML_L("unclosed CDATA section"), + XML_L("error in processing external entity reference"), + XML_L("document is not standalone"), + XML_L("unexpected parser state - please send a bug report"), + XML_L("entity declared in parameter entity"), + XML_L("requested feature requires XML_DTD support in Expat"), + XML_L("cannot change setting once parsing has begun"), + XML_L("unbound prefix"), + XML_L("must not undeclare prefix"), + XML_L("incomplete markup in parameter entity"), + XML_L("XML declaration not well-formed"), + XML_L("text declaration not well-formed"), + XML_L("illegal character(s) in public id"), + XML_L("parser suspended"), + XML_L("parser not suspended"), + XML_L("parsing aborted"), + XML_L("parsing finished"), + XML_L("cannot suspend in external parameter entity"), + XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), + XML_L("reserved prefix (xmlns) must not be declared or undeclared"), + XML_L("prefix must not be bound to one of the reserved namespace names") + }; + if (code > 0 && code < sizeof(message)/sizeof(message[0])) + return message[code]; + return NULL; +} + +const XML_LChar * XMLCALL +XML_ExpatVersion(void) { + + /* V1 is used to string-ize the version number. However, it would + string-ize the actual version macro *names* unless we get them + substituted before being passed to V1. CPP is defined to expand + a macro, then rescan for more expansions. Thus, we use V2 to expand + the version macros, then CPP will expand the resulting V1() macro + with the correct numerals. */ + /* ### I'm assuming cpp is portable in this respect... */ + +#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) +#define V2(a,b,c) XML_L("expat_")V1(a,b,c) + + return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); + +#undef V1 +#undef V2 +} + +XML_Expat_Version XMLCALL +XML_ExpatVersionInfo(void) +{ + XML_Expat_Version version; + + version.major = XML_MAJOR_VERSION; + version.minor = XML_MINOR_VERSION; + version.micro = XML_MICRO_VERSION; + + return version; +} + +const XML_Feature * XMLCALL +XML_GetFeatureList(void) +{ + static const XML_Feature features[] = { + {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), + sizeof(XML_Char)}, + {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), + sizeof(XML_LChar)}, +#ifdef XML_UNICODE + {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, +#endif +#ifdef XML_UNICODE_WCHAR_T + {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, +#endif +#ifdef XML_DTD + {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, +#endif +#ifdef XML_CONTEXT_BYTES + {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), + XML_CONTEXT_BYTES}, +#endif +#ifdef XML_MIN_SIZE + {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, +#endif +#ifdef XML_NS + {XML_FEATURE_NS, XML_L("XML_NS"), 0}, +#endif +#ifdef XML_LARGE_SIZE + {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, +#endif +#ifdef XML_ATTR_INFO + {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, +#endif + {XML_FEATURE_END, NULL, 0} + }; + + return features; +} + +/* Initially tag->rawName always points into the parse buffer; + for those TAG instances opened while the current parse buffer was + processed, and not yet closed, we need to store tag->rawName in a more + permanent location, since the parse buffer is about to be discarded. +*/ +static XML_Bool +storeRawNames(XML_Parser parser) +{ + TAG *tag = tagStack; + while (tag) { + int bufSize; + int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + char *rawNameBuf = tag->buf + nameLen; + /* Stop if already stored. Since tagStack is a stack, we can stop + at the first entry that has already been copied; everything + below it in the stack is already been accounted for in a + previous call to this function. + */ + if (tag->rawName == rawNameBuf) + break; + /* For re-use purposes we need to ensure that the + size of tag->buf is a multiple of sizeof(XML_Char). + */ + bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); + if (bufSize > tag->bufEnd - tag->buf) { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) + return XML_FALSE; + /* if tag->name.str points to tag->buf (only when namespace + processing is off) then we have to update it + */ + if (tag->name.str == (XML_Char *)tag->buf) + tag->name.str = (XML_Char *)temp; + /* if tag->name.localPart is set (when namespace processing is on) + then update it as well, since it will always point into tag->buf + */ + if (tag->name.localPart) + tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - + (XML_Char *)tag->buf); + tag->buf = temp; + tag->bufEnd = temp + bufSize; + rawNameBuf = temp + nameLen; + } + memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); + tag->rawName = rawNameBuf; + tag = tag->parent; + } + return XML_TRUE; +} + +static enum XML_Error PTRCALL +contentProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doContent(parser, 0, encoding, start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result == XML_ERROR_NONE) { + if (!storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + processor = externalEntityInitProcessor2; + return externalEntityInitProcessor2(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor2(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(encoding, start, end, &next); + switch (tok) { + case XML_TOK_BOM: + /* If we are at the end of the buffer, this would cause the next stage, + i.e. externalEntityInitProcessor3, to pass control directly to + doContent (by detecting XML_TOK_NONE) without processing any xml text + declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. + */ + if (next == end && !ps_finalBuffer) { + *endPtr = next; + return XML_ERROR_NONE; + } + start = next; + break; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + eventPtr = start; + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + eventPtr = start; + return XML_ERROR_PARTIAL_CHAR; + } + processor = externalEntityInitProcessor3; + return externalEntityInitProcessor3(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor3(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + int tok; + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + eventPtr = start; + tok = XmlContentTok(encoding, start, end, &next); + eventEndPtr = next; + + switch (tok) { + case XML_TOK_XML_DECL: + { + enum XML_Error result; + result = processXmlDecl(parser, 1, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (ps_parsing) { + case XML_SUSPENDED: + *endPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + start = next; + } + } + break; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + } + processor = externalEntityContentProcessor; + tagLevel = 1; + return externalEntityContentProcessor(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityContentProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doContent(parser, 1, encoding, start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result == XML_ERROR_NONE) { + if (!storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error +doContent(XML_Parser parser, + int startTagLevel, + const ENCODING *enc, + const char *s, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + /* save one level of indirection */ + DTD * const dtd = _dtd; + + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + + for (;;) { + const char *next = s; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_TRAILING_CR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + *eventEndPP = end; + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) + return XML_ERROR_NO_ELEMENTS; + if (tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (startTagLevel > 0) { + if (tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_NO_ELEMENTS; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_ENTITY_REF: + { + const XML_Char *name; + ENTITY *entity; + XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (ch) { + if (characterDataHandler) + characterDataHandler(handlerArg, &ch, 1); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + name = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&dtd->pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity or default handler. + */ + if (!dtd->hasParamEntityRefs || dtd->standalone) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->notation) + return XML_ERROR_BINARY_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + if (!defaultExpandInternalEntities) { + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, entity->name, 0); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + result = processInternalEntity(parser, entity, XML_FALSE); + if (result != XML_ERROR_NONE) + return result; + } + else if (externalEntityRefHandler) { + const XML_Char *context; + entity->open = XML_TRUE; + context = getContext(parser); + entity->open = XML_FALSE; + if (!context) + return XML_ERROR_NO_MEMORY; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + context, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + poolDiscard(&tempPool); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + case XML_TOK_START_TAG_NO_ATTS: + /* fall through */ + case XML_TOK_START_TAG_WITH_ATTS: + { + TAG *tag; + enum XML_Error result; + XML_Char *toPtr; + if (freeTagList) { + tag = freeTagList; + freeTagList = freeTagList->parent; + } + else { + tag = (TAG *)MALLOC(sizeof(TAG)); + if (!tag) + return XML_ERROR_NO_MEMORY; + tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); + if (!tag->buf) { + FREE(tag); + return XML_ERROR_NO_MEMORY; + } + tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; + } + tag->bindings = NULL; + tag->parent = tagStack; + tagStack = tag; + tag->name.localPart = NULL; + tag->name.prefix = NULL; + tag->rawName = s + enc->minBytesPerChar; + tag->rawNameLength = XmlNameLength(enc, tag->rawName); + ++tagLevel; + { + const char *rawNameEnd = tag->rawName + tag->rawNameLength; + const char *fromPtr = tag->rawName; + toPtr = (XML_Char *)tag->buf; + for (;;) { + int bufSize; + int convLen; + const enum XML_Convert_Result convert_res = XmlConvert(enc, + &fromPtr, rawNameEnd, + (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); + convLen = (int)(toPtr - (XML_Char *)tag->buf); + if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { + tag->name.strLen = convLen; + break; + } + bufSize = (int)(tag->bufEnd - tag->buf) << 1; + { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + tag->buf = temp; + tag->bufEnd = temp + bufSize; + toPtr = (XML_Char *)temp + convLen; + } + } + } + tag->name.str = (XML_Char *)tag->buf; + *toPtr = XML_T('\0'); + result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); + if (result) + return result; + if (startElementHandler) + startElementHandler(handlerArg, tag->name.str, + (const XML_Char **)atts); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&tempPool); + break; + } + case XML_TOK_EMPTY_ELEMENT_NO_ATTS: + /* fall through */ + case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: + { + const char *rawName = s + enc->minBytesPerChar; + enum XML_Error result; + BINDING *bindings = NULL; + XML_Bool noElmHandlers = XML_TRUE; + TAG_NAME name; + name.str = poolStoreString(&tempPool, enc, rawName, + rawName + XmlNameLength(enc, rawName)); + if (!name.str) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + result = storeAtts(parser, enc, s, &name, &bindings); + if (result) + return result; + poolFinish(&tempPool); + if (startElementHandler) { + startElementHandler(handlerArg, name.str, (const XML_Char **)atts); + noElmHandlers = XML_FALSE; + } + if (endElementHandler) { + if (startElementHandler) + *eventPP = *eventEndPP; + endElementHandler(handlerArg, name.str); + noElmHandlers = XML_FALSE; + } + if (noElmHandlers && defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&tempPool); + while (bindings) { + BINDING *b = bindings; + if (endNamespaceDeclHandler) + endNamespaceDeclHandler(handlerArg, b->prefix->name); + bindings = bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + } + if (tagLevel == 0) + return epilogProcessor(parser, next, end, nextPtr); + break; + case XML_TOK_END_TAG: + if (tagLevel == startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + else { + int len; + const char *rawName; + TAG *tag = tagStack; + tagStack = tag->parent; + tag->parent = freeTagList; + freeTagList = tag; + rawName = s + enc->minBytesPerChar*2; + len = XmlNameLength(enc, rawName); + if (len != tag->rawNameLength + || memcmp(tag->rawName, rawName, len) != 0) { + *eventPP = rawName; + return XML_ERROR_TAG_MISMATCH; + } + --tagLevel; + if (endElementHandler) { + const XML_Char *localPart; + const XML_Char *prefix; + XML_Char *uri; + localPart = tag->name.localPart; + if (ns && localPart) { + /* localPart and prefix may have been overwritten in + tag->name.str, since this points to the binding->uri + buffer which gets re-used; so we have to add them again + */ + uri = (XML_Char *)tag->name.str + tag->name.uriLen; + /* don't need to check for space - already done in storeAtts() */ + while (*localPart) *uri++ = *localPart++; + prefix = (XML_Char *)tag->name.prefix; + if (ns_triplets && prefix) { + *uri++ = namespaceSeparator; + while (*prefix) *uri++ = *prefix++; + } + *uri = XML_T('\0'); + } + endElementHandler(handlerArg, tag->name.str); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + while (tag->bindings) { + BINDING *b = tag->bindings; + if (endNamespaceDeclHandler) + endNamespaceDeclHandler(handlerArg, b->prefix->name); + tag->bindings = tag->bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + if (tagLevel == 0) + return epilogProcessor(parser, next, end, nextPtr); + } + break; + case XML_TOK_CHAR_REF: + { + int n = XmlCharRefNumber(enc, s); + if (n < 0) + return XML_ERROR_BAD_CHAR_REF; + if (characterDataHandler) { + XML_Char buf[XML_ENCODE_MAX]; + characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + case XML_TOK_DATA_NEWLINE: + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_CDATA_SECT_OPEN: + { + enum XML_Error result; + if (startCdataSectionHandler) + startCdataSectionHandler(handlerArg); +#if 0 + /* Suppose you doing a transformation on a document that involves + changing only the character data. You set up a defaultHandler + and a characterDataHandler. The defaultHandler simply copies + characters through. The characterDataHandler does the + transformation and writes the characters out escaping them as + necessary. This case will fail to work if we leave out the + following two lines (because & and < inside CDATA sections will + be incorrectly escaped). + + However, now we have a start/endCdataSectionHandler, so it seems + easier to let the user deal with this. + */ + else if (characterDataHandler) + characterDataHandler(handlerArg, dataBuf, 0); +#endif + else if (defaultHandler) + reportDefault(parser, enc, s, next); + result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (!next) { + processor = cdataSectionProcessor; + return result; + } + } + break; + case XML_TOK_TRAILING_RSQB: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (characterDataHandler) { + if (MUST_CONVERT(enc, s)) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + characterDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + } + else + characterDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) { + *eventPP = end; + return XML_ERROR_NO_ELEMENTS; + } + if (tagLevel != startTagLevel) { + *eventPP = end; + return XML_ERROR_ASYNC_ENTITY; + } + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_DATA_CHARS: + { + XML_CharacterDataHandler charDataHandler = characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + const enum XML_Convert_Result convert_res = XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; + } + } + else + charDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_PI: + if (!reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (!reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + default: + if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + *eventPP = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } + /* not reached */ +} + +/* Precondition: all arguments must be non-NULL; + Purpose: + - normalize attributes + - check attributes for well-formedness + - generate namespace aware attribute names (URI, prefix) + - build list of attributes for startElementHandler + - default attributes + - process namespace declarations (check and report them) + - generate namespace aware element name (URI, prefix) +*/ +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *enc, + const char *attStr, TAG_NAME *tagNamePtr, + BINDING **bindingsPtr) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + ELEMENT_TYPE *elementType; + int nDefaultAtts; + const XML_Char **appAtts; /* the attribute list for the application */ + int attIndex = 0; + int prefixLen; + int i; + int n; + XML_Char *uri; + int nPrefixes = 0; + BINDING *binding; + const XML_Char *localPart; + + /* lookup the element type name */ + elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); + if (!elementType) { + const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); + if (!name) + return XML_ERROR_NO_MEMORY; + elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, + sizeof(ELEMENT_TYPE)); + if (!elementType) + return XML_ERROR_NO_MEMORY; + if (ns && !setElementTypePrefix(parser, elementType)) + return XML_ERROR_NO_MEMORY; + } + nDefaultAtts = elementType->nDefaultAtts; + + /* get the attributes from the tokenizer */ + n = XmlGetAttributes(enc, attStr, attsSize, atts); + if (n + nDefaultAtts > attsSize) { + int oldAttsSize = attsSize; + ATTRIBUTE *temp; +#ifdef XML_ATTR_INFO + XML_AttrInfo *temp2; +#endif + attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; + temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + atts = temp; +#ifdef XML_ATTR_INFO + temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo)); + if (temp2 == NULL) + return XML_ERROR_NO_MEMORY; + attInfo = temp2; +#endif + if (n > oldAttsSize) + XmlGetAttributes(enc, attStr, n, atts); + } + + appAtts = (const XML_Char **)atts; + for (i = 0; i < n; i++) { + ATTRIBUTE *currAtt = &atts[i]; +#ifdef XML_ATTR_INFO + XML_AttrInfo *currAttInfo = &attInfo[i]; +#endif + /* add the name and value to the attribute list */ + ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name, + currAtt->name + + XmlNameLength(enc, currAtt->name)); + if (!attId) + return XML_ERROR_NO_MEMORY; +#ifdef XML_ATTR_INFO + currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name); + currAttInfo->nameEnd = currAttInfo->nameStart + + XmlNameLength(enc, currAtt->name); + currAttInfo->valueStart = parseEndByteIndex - + (parseEndPtr - currAtt->valuePtr); + currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd); +#endif + /* Detect duplicate attributes by their QNames. This does not work when + namespace processing is turned on and different prefixes for the same + namespace are used. For this case we have a check further down. + */ + if ((attId->name)[-1]) { + if (enc == encoding) + eventPtr = atts[i].name; + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + (attId->name)[-1] = 1; + appAtts[attIndex++] = attId->name; + if (!atts[i].normalized) { + enum XML_Error result; + XML_Bool isCdata = XML_TRUE; + + /* figure out whether declared as other than CDATA */ + if (attId->maybeTokenized) { + int j; + for (j = 0; j < nDefaultAtts; j++) { + if (attId == elementType->defaultAtts[j].id) { + isCdata = elementType->defaultAtts[j].isCdata; + break; + } + } + } + + /* normalize the attribute value */ + result = storeAttributeValue(parser, enc, isCdata, + atts[i].valuePtr, atts[i].valueEnd, + &tempPool); + if (result) + return result; + appAtts[attIndex] = poolStart(&tempPool); + poolFinish(&tempPool); + } + else { + /* the value did not need normalizing */ + appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, + atts[i].valueEnd); + if (appAtts[attIndex] == 0) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + } + /* handle prefixed attribute names */ + if (attId->prefix) { + if (attId->xmlns) { + /* deal with namespace declarations here */ + enum XML_Error result = addBinding(parser, attId->prefix, attId, + appAtts[attIndex], bindingsPtr); + if (result) + return result; + --attIndex; + } + else { + /* deal with other prefixed names later */ + attIndex++; + nPrefixes++; + (attId->name)[-1] = 2; + } + } + else + attIndex++; + } + + /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ + nSpecifiedAtts = attIndex; + if (elementType->idAtt && (elementType->idAtt->name)[-1]) { + for (i = 0; i < attIndex; i += 2) + if (appAtts[i] == elementType->idAtt->name) { + idAttIndex = i; + break; + } + } + else + idAttIndex = -1; + + /* do attribute defaulting */ + for (i = 0; i < nDefaultAtts; i++) { + const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; + if (!(da->id->name)[-1] && da->value) { + if (da->id->prefix) { + if (da->id->xmlns) { + enum XML_Error result = addBinding(parser, da->id->prefix, da->id, + da->value, bindingsPtr); + if (result) + return result; + } + else { + (da->id->name)[-1] = 2; + nPrefixes++; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + else { + (da->id->name)[-1] = 1; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + } + appAtts[attIndex] = 0; + + /* expand prefixed attribute names, check for duplicates, + and clear flags that say whether attributes were specified */ + i = 0; + if (nPrefixes) { + int j; /* hash table index */ + unsigned long version = nsAttsVersion; + int nsAttsSize = (int)1 << nsAttsPower; + /* size of hash table must be at least 2 * (# of prefixed attributes) */ + if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ + NS_ATT *temp; + /* hash table size must also be a power of 2 and >= 8 */ + while (nPrefixes >> nsAttsPower++); + if (nsAttsPower < 3) + nsAttsPower = 3; + nsAttsSize = (int)1 << nsAttsPower; + temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); + if (!temp) + return XML_ERROR_NO_MEMORY; + nsAtts = temp; + version = 0; /* force re-initialization of nsAtts hash table */ + } + /* using a version flag saves us from initializing nsAtts every time */ + if (!version) { /* initialize version flags when version wraps around */ + version = INIT_ATTS_VERSION; + for (j = nsAttsSize; j != 0; ) + nsAtts[--j].version = version; + } + nsAttsVersion = --version; + + /* expand prefixed names and check for duplicates */ + for (; i < attIndex; i += 2) { + const XML_Char *s = appAtts[i]; + if (s[-1] == 2) { /* prefixed */ + ATTRIBUTE_ID *id; + const BINDING *b; + unsigned long uriHash = hash_secret_salt; + ((XML_Char *)s)[-1] = 0; /* clear flag */ + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); + if (!id || !id->prefix) + return XML_ERROR_NO_MEMORY; + b = id->prefix->binding; + if (!b) + return XML_ERROR_UNBOUND_PREFIX; + + /* as we expand the name we also calculate its hash value */ + for (j = 0; j < b->uriLen; j++) { + const XML_Char c = b->uri[j]; + if (!poolAppendChar(&tempPool, c)) + return XML_ERROR_NO_MEMORY; + uriHash = CHAR_HASH(uriHash, c); + } + while (*s++ != XML_T(ASCII_COLON)) + ; + do { /* copies null terminator */ + const XML_Char c = *s; + if (!poolAppendChar(&tempPool, *s)) + return XML_ERROR_NO_MEMORY; + uriHash = CHAR_HASH(uriHash, c); + } while (*s++); + + { /* Check hash table for duplicate of expanded name (uriName). + Derived from code in lookup(parser, HASH_TABLE *table, ...). + */ + unsigned char step = 0; + unsigned long mask = nsAttsSize - 1; + j = uriHash & mask; /* index into hash table */ + while (nsAtts[j].version == version) { + /* for speed we compare stored hash values first */ + if (uriHash == nsAtts[j].hash) { + const XML_Char *s1 = poolStart(&tempPool); + const XML_Char *s2 = nsAtts[j].uriName; + /* s1 is null terminated, but not s2 */ + for (; *s1 == *s2 && *s1 != 0; s1++, s2++); + if (*s1 == 0) + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + if (!step) + step = PROBE_STEP(uriHash, mask, nsAttsPower); + j < step ? (j += nsAttsSize - step) : (j -= step); + } + } + + if (ns_triplets) { /* append namespace separator and prefix */ + tempPool.ptr[-1] = namespaceSeparator; + s = b->prefix->name; + do { + if (!poolAppendChar(&tempPool, *s)) + return XML_ERROR_NO_MEMORY; + } while (*s++); + } + + /* store expanded name in attribute list */ + s = poolStart(&tempPool); + poolFinish(&tempPool); + appAtts[i] = s; + + /* fill empty slot with new version, uriName and hash value */ + nsAtts[j].version = version; + nsAtts[j].hash = uriHash; + nsAtts[j].uriName = s; + + if (!--nPrefixes) { + i += 2; + break; + } + } + else /* not prefixed */ + ((XML_Char *)s)[-1] = 0; /* clear flag */ + } + } + /* clear flags for the remaining attributes */ + for (; i < attIndex; i += 2) + ((XML_Char *)(appAtts[i]))[-1] = 0; + for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) + binding->attId->name[-1] = 0; + + if (!ns) + return XML_ERROR_NONE; + + /* expand the element type name */ + if (elementType->prefix) { + binding = elementType->prefix->binding; + if (!binding) + return XML_ERROR_UNBOUND_PREFIX; + localPart = tagNamePtr->str; + while (*localPart++ != XML_T(ASCII_COLON)) + ; + } + else if (dtd->defaultPrefix.binding) { + binding = dtd->defaultPrefix.binding; + localPart = tagNamePtr->str; + } + else + return XML_ERROR_NONE; + prefixLen = 0; + if (ns_triplets && binding->prefix->name) { + for (; binding->prefix->name[prefixLen++];) + ; /* prefixLen includes null terminator */ + } + tagNamePtr->localPart = localPart; + tagNamePtr->uriLen = binding->uriLen; + tagNamePtr->prefix = binding->prefix->name; + tagNamePtr->prefixLen = prefixLen; + for (i = 0; localPart[i++];) + ; /* i includes null terminator */ + n = i + binding->uriLen + prefixLen; + if (n > binding->uriAlloc) { + TAG *p; + uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); + if (!uri) + return XML_ERROR_NO_MEMORY; + binding->uriAlloc = n + EXPAND_SPARE; + memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); + for (p = tagStack; p; p = p->parent) + if (p->name.str == binding->uri) + p->name.str = uri; + FREE(binding->uri); + binding->uri = uri; + } + /* if namespaceSeparator != '\0' then uri includes it already */ + uri = binding->uri + binding->uriLen; + memcpy(uri, localPart, i * sizeof(XML_Char)); + /* we always have a namespace separator between localPart and prefix */ + if (prefixLen) { + uri += i - 1; + *uri = namespaceSeparator; /* replace null terminator */ + memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); + } + tagNamePtr->str = binding->uri; + return XML_ERROR_NONE; +} + +/* addBinding() overwrites the value of prefix->binding without checking. + Therefore one must keep track of the old value outside of addBinding(). +*/ +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr) +{ + static const XML_Char xmlNamespace[] = { + ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, + ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, + ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, + ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, + ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, + ASCII_e, '\0' + }; + static const int xmlLen = + (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; + static const XML_Char xmlnsNamespace[] = { + ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, + ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, + ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, + ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, + ASCII_SLASH, '\0' + }; + static const int xmlnsLen = + (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; + + XML_Bool mustBeXML = XML_FALSE; + XML_Bool isXML = XML_TRUE; + XML_Bool isXMLNS = XML_TRUE; + + BINDING *b; + int len; + + /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ + if (*uri == XML_T('\0') && prefix->name) + return XML_ERROR_UNDECLARING_PREFIX; + + if (prefix->name + && prefix->name[0] == XML_T(ASCII_x) + && prefix->name[1] == XML_T(ASCII_m) + && prefix->name[2] == XML_T(ASCII_l)) { + + /* Not allowed to bind xmlns */ + if (prefix->name[3] == XML_T(ASCII_n) + && prefix->name[4] == XML_T(ASCII_s) + && prefix->name[5] == XML_T('\0')) + return XML_ERROR_RESERVED_PREFIX_XMLNS; + + if (prefix->name[3] == XML_T('\0')) + mustBeXML = XML_TRUE; + } + + for (len = 0; uri[len]; len++) { + if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) + isXML = XML_FALSE; + + if (!mustBeXML && isXMLNS + && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) + isXMLNS = XML_FALSE; + } + isXML = isXML && len == xmlLen; + isXMLNS = isXMLNS && len == xmlnsLen; + + if (mustBeXML != isXML) + return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML + : XML_ERROR_RESERVED_NAMESPACE_URI; + + if (isXMLNS) + return XML_ERROR_RESERVED_NAMESPACE_URI; + + if (namespaceSeparator) + len++; + if (freeBindingList) { + b = freeBindingList; + if (len > b->uriAlloc) { + XML_Char *temp = (XML_Char *)REALLOC(b->uri, + sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + b->uri = temp; + b->uriAlloc = len + EXPAND_SPARE; + } + freeBindingList = b->nextTagBinding; + } + else { + b = (BINDING *)MALLOC(sizeof(BINDING)); + if (!b) + return XML_ERROR_NO_MEMORY; + b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (!b->uri) { + FREE(b); + return XML_ERROR_NO_MEMORY; + } + b->uriAlloc = len + EXPAND_SPARE; + } + b->uriLen = len; + memcpy(b->uri, uri, len * sizeof(XML_Char)); + if (namespaceSeparator) + b->uri[len - 1] = namespaceSeparator; + b->prefix = prefix; + b->attId = attId; + b->prevPrefixBinding = prefix->binding; + /* NULL binding when default namespace undeclared */ + if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) + prefix->binding = NULL; + else + prefix->binding = b; + b->nextTagBinding = *bindingsPtr; + *bindingsPtr = b; + /* if attId == NULL then we are not starting a namespace scope */ + if (attId && startNamespaceDeclHandler) + startNamespaceDeclHandler(handlerArg, prefix->name, + prefix->binding ? uri : 0); + return XML_ERROR_NONE; +} + +/* The idea here is to avoid using stack for each CDATA section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +cdataSectionProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doCdataSection(parser, encoding, &start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + if (parentParser) { /* we are parsing an external entity */ + processor = externalEntityContentProcessor; + return externalEntityContentProcessor(parser, start, end, endPtr); + } + else { + processor = contentProcessor; + return contentProcessor(parser, start, end, endPtr); + } + } + return result; +} + +/* startPtr gets set to non-null if the section is closed, and to null if + the section is not yet closed. +*/ +static enum XML_Error +doCdataSection(XML_Parser parser, + const ENCODING *enc, + const char **startPtr, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + *eventPP = s; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + + for (;;) { + const char *next; + int tok = XmlCdataSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_CDATA_SECT_CLOSE: + if (endCdataSectionHandler) + endCdataSectionHandler(handlerArg); +#if 0 + /* see comment under XML_TOK_CDATA_SECT_OPEN */ + else if (characterDataHandler) + characterDataHandler(handlerArg, dataBuf, 0); +#endif + else if (defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_DATA_NEWLINE: + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_DATA_CHARS: + { + XML_CharacterDataHandler charDataHandler = characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + const enum XML_Convert_Result convert_res = XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = next; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + *eventPP = s; + } + } + else + charDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_CDATA_SECTION; + default: + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + } + + *eventPP = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } + /* not reached */ +} + +#ifdef XML_DTD + +/* The idea here is to avoid using stack for each IGNORE section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +ignoreSectionProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + processor = prologProcessor; + return prologProcessor(parser, start, end, endPtr); + } + return result; +} + +/* startPtr gets set to non-null is the section is closed, and to null + if the section is not yet closed. +*/ +static enum XML_Error +doIgnoreSection(XML_Parser parser, + const ENCODING *enc, + const char **startPtr, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + const char *next; + int tok; + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + *eventPP = s; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + tok = XmlIgnoreSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_IGNORE_SECT: + if (defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ + default: + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + } + /* not reached */ +} + +#endif /* XML_DTD */ + +static enum XML_Error +initializeEncoding(XML_Parser parser) +{ + const char *s; +#ifdef XML_UNICODE + char encodingBuf[128]; + if (!protocolEncodingName) + s = NULL; + else { + int i; + for (i = 0; protocolEncodingName[i]; i++) { + if (i == sizeof(encodingBuf) - 1 + || (protocolEncodingName[i] & ~0x7f) != 0) { + encodingBuf[0] = '\0'; + break; + } + encodingBuf[i] = (char)protocolEncodingName[i]; + } + encodingBuf[i] = '\0'; + s = encodingBuf; + } +#else + s = protocolEncodingName; +#endif + if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) + return XML_ERROR_NONE; + return handleUnknownEncoding(parser, protocolEncodingName); +} + +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next) +{ + const char *encodingName = NULL; + const XML_Char *storedEncName = NULL; + const ENCODING *newEncoding = NULL; + const char *version = NULL; + const char *versionend; + const XML_Char *storedversion = NULL; + int standalone = -1; + if (!(ns + ? XmlParseXmlDeclNS + : XmlParseXmlDecl)(isGeneralTextEntity, + encoding, + s, + next, + &eventPtr, + &version, + &versionend, + &encodingName, + &newEncoding, + &standalone)) { + if (isGeneralTextEntity) + return XML_ERROR_TEXT_DECL; + else + return XML_ERROR_XML_DECL; + } + if (!isGeneralTextEntity && standalone == 1) { + _dtd->standalone = XML_TRUE; +#ifdef XML_DTD + if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) + paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif /* XML_DTD */ + } + if (xmlDeclHandler) { + if (encodingName != NULL) { + storedEncName = poolStoreString(&temp2Pool, + encoding, + encodingName, + encodingName + + XmlNameLength(encoding, encodingName)); + if (!storedEncName) + return XML_ERROR_NO_MEMORY; + poolFinish(&temp2Pool); + } + if (version) { + storedversion = poolStoreString(&temp2Pool, + encoding, + version, + versionend - encoding->minBytesPerChar); + if (!storedversion) + return XML_ERROR_NO_MEMORY; + } + xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); + } + else if (defaultHandler) + reportDefault(parser, encoding, s, next); + if (protocolEncodingName == NULL) { + if (newEncoding) { + if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { + eventPtr = encodingName; + return XML_ERROR_INCORRECT_ENCODING; + } + encoding = newEncoding; + } + else if (encodingName) { + enum XML_Error result; + if (!storedEncName) { + storedEncName = poolStoreString( + &temp2Pool, encoding, encodingName, + encodingName + XmlNameLength(encoding, encodingName)); + if (!storedEncName) + return XML_ERROR_NO_MEMORY; + } + result = handleUnknownEncoding(parser, storedEncName); + poolClear(&temp2Pool); + if (result == XML_ERROR_UNKNOWN_ENCODING) + eventPtr = encodingName; + return result; + } + } + + if (storedEncName || storedversion) + poolClear(&temp2Pool); + + return XML_ERROR_NONE; +} + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) +{ + if (unknownEncodingHandler) { + XML_Encoding info; + int i; + for (i = 0; i < 256; i++) + info.map[i] = -1; + info.convert = NULL; + info.data = NULL; + info.release = NULL; + if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, + &info)) { + ENCODING *enc; + unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); + if (!unknownEncodingMem) { + if (info.release) + info.release(info.data); + return XML_ERROR_NO_MEMORY; + } + enc = (ns + ? XmlInitUnknownEncodingNS + : XmlInitUnknownEncoding)(unknownEncodingMem, + info.map, + info.convert, + info.data); + if (enc) { + unknownEncodingData = info.data; + unknownEncodingRelease = info.release; + encoding = enc; + return XML_ERROR_NONE; + } + } + if (info.release != NULL) + info.release(info.data); + } + return XML_ERROR_UNKNOWN_ENCODING; +} + +static enum XML_Error PTRCALL +prologInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + processor = prologProcessor; + return prologProcessor(parser, s, end, nextPtr); +} + +#ifdef XML_DTD + +static enum XML_Error PTRCALL +externalParEntInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + + /* we know now that XML_Parse(Buffer) has been called, + so we consider the external parameter entity read */ + _dtd->paramEntityRead = XML_TRUE; + + if (prologState.inEntityValue) { + processor = entityValueInitProcessor; + return entityValueInitProcessor(parser, s, end, nextPtr); + } + else { + processor = externalParEntProcessor; + return externalParEntProcessor(parser, s, end, nextPtr); + } +} + +static enum XML_Error PTRCALL +entityValueInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + int tok; + const char *start = s; + const char *next = start; + eventPtr = start; + + for (;;) { + tok = XmlPrologTok(encoding, start, end, &next); + eventEndPtr = next; + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, encoding, s, end); + } + else if (tok == XML_TOK_XML_DECL) { + enum XML_Error result; + result = processXmlDecl(parser, 0, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + *nextPtr = next; + } + /* stop scanning for text declaration - we found one */ + processor = entityValueProcessor; + return entityValueProcessor(parser, next, end, nextPtr); + } + /* If we are at the end of the buffer, this would cause XmlPrologTok to + return XML_TOK_NONE on the next call, which would then cause the + function to exit with *nextPtr set to s - that is what we want for other + tokens, but not for the BOM - we would rather like to skip it; + then, when this routine is entered the next time, XmlPrologTok will + return XML_TOK_INVALID, since the BOM is still in the buffer + */ + else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { + *nextPtr = next; + return XML_ERROR_NONE; + } + start = next; + eventPtr = start; + } +} + +static enum XML_Error PTRCALL +externalParEntProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *next = s; + int tok; + + tok = XmlPrologTok(encoding, s, end, &next); + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + } + /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. + However, when parsing an external subset, doProlog will not accept a BOM + as valid, and report a syntax error, so we have to skip the BOM + */ + else if (tok == XML_TOK_BOM) { + s = next; + tok = XmlPrologTok(encoding, s, end, &next); + } + + processor = prologProcessor; + return doProlog(parser, encoding, s, end, tok, next, + nextPtr, (XML_Bool)!ps_finalBuffer); +} + +static enum XML_Error PTRCALL +entityValueProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *start = s; + const char *next = s; + const ENCODING *enc = encoding; + int tok; + + for (;;) { + tok = XmlPrologTok(enc, start, end, &next); + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, enc, s, end); + } + start = next; + } +} + +#endif /* XML_DTD */ + +static enum XML_Error PTRCALL +prologProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *next = s; + int tok = XmlPrologTok(encoding, s, end, &next); + return doProlog(parser, encoding, s, end, tok, next, + nextPtr, (XML_Bool)!ps_finalBuffer); +} + +static enum XML_Error +doProlog(XML_Parser parser, + const ENCODING *enc, + const char *s, + const char *end, + int tok, + const char *next, + const char **nextPtr, + XML_Bool haveMore) +{ +#ifdef XML_DTD + static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; +#endif /* XML_DTD */ + static const XML_Char atypeCDATA[] = + { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; + static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; + static const XML_Char atypeIDREF[] = + { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; + static const XML_Char atypeIDREFS[] = + { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; + static const XML_Char atypeENTITY[] = + { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; + static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, + ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; + static const XML_Char atypeNMTOKEN[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; + static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, + ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; + static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, + ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; + static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; + static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; + + /* save one level of indirection */ + DTD * const dtd = _dtd; + + const char **eventPP; + const char **eventEndPP; + enum XML_Content_Quant quant; + + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + + for (;;) { + int role; + XML_Bool handleDefault = XML_TRUE; + *eventPP = s; + *eventEndPP = next; + if (tok <= 0) { + if (haveMore && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; + case XML_TOK_NONE: +#ifdef XML_DTD + /* for internal PE NOT referenced between declarations */ + if (enc != encoding && !openInternalEntities->betweenDecl) { + *nextPtr = s; + return XML_ERROR_NONE; + } + /* WFC: PE Between Declarations - must check that PE contains + complete markup, not only for external PEs, but also for + internal PEs if the reference occurs between declarations. + */ + if (isParamEntity || enc != encoding) { + if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) + == XML_ROLE_ERROR) + return XML_ERROR_INCOMPLETE_PE; + *nextPtr = s; + return XML_ERROR_NONE; + } +#endif /* XML_DTD */ + return XML_ERROR_NO_ELEMENTS; + default: + tok = -tok; + next = end; + break; + } + } + role = XmlTokenRole(&prologState, tok, s, next, enc); + switch (role) { + case XML_ROLE_XML_DECL: + { + enum XML_Error result = processXmlDecl(parser, 0, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = encoding; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_NAME: + if (startDoctypeDeclHandler) { + doctypeName = poolStoreString(&tempPool, enc, s, next); + if (!doctypeName) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + doctypePubid = NULL; + handleDefault = XML_FALSE; + } + doctypeSysid = NULL; /* always initialize to NULL */ + break; + case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: + if (startDoctypeDeclHandler) { + startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, + doctypePubid, 1); + doctypeName = NULL; + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + break; +#ifdef XML_DTD + case XML_ROLE_TEXT_DECL: + { + enum XML_Error result = processXmlDecl(parser, 1, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = encoding; + handleDefault = XML_FALSE; + } + break; +#endif /* XML_DTD */ + case XML_ROLE_DOCTYPE_PUBLIC_ID: +#ifdef XML_DTD + useForeignDTD = XML_FALSE; + declEntity = (ENTITY *)lookup(parser, + &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (startDoctypeDeclHandler) { + XML_Char *pubId; + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + pubId = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!pubId) + return XML_ERROR_NO_MEMORY; + normalizePublicId(pubId); + poolFinish(&tempPool); + doctypePubid = pubId; + handleDefault = XML_FALSE; + goto alreadyChecked; + } + /* fall through */ + case XML_ROLE_ENTITY_PUBLIC_ID: + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + alreadyChecked: + if (dtd->keepProcessing && declEntity) { + XML_Char *tem = poolStoreString(&dtd->pool, + enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + declEntity->publicId = tem; + poolFinish(&dtd->pool); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_CLOSE: + if (doctypeName) { + startDoctypeDeclHandler(handlerArg, doctypeName, + doctypeSysid, doctypePubid, 0); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + /* doctypeSysid will be non-NULL in the case of a previous + XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler + was not set, indicating an external subset + */ +#ifdef XML_DTD + if (doctypeSysid || useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (paramEntityParsing && externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, + &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!entity) + return XML_ERROR_NO_MEMORY; + if (useForeignDTD) + entity->base = curBase; + dtd->paramEntityRead = XML_FALSE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else if (!doctypeSysid) + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + useForeignDTD = XML_FALSE; + } +#endif /* XML_DTD */ + if (endDoctypeDeclHandler) { + endDoctypeDeclHandler(handlerArg); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_INSTANCE_START: +#ifdef XML_DTD + /* if there is no DOCTYPE declaration then now is the + last chance to read the foreign DTD + */ + if (useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (paramEntityParsing && externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!entity) + return XML_ERROR_NO_MEMORY; + entity->base = curBase; + dtd->paramEntityRead = XML_FALSE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + } +#endif /* XML_DTD */ + processor = contentProcessor; + return contentProcessor(parser, s, end, nextPtr); + case XML_ROLE_ATTLIST_ELEMENT_NAME: + declElementType = getElementType(parser, enc, s, next); + if (!declElementType) + return XML_ERROR_NO_MEMORY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_NAME: + declAttributeId = getAttributeId(parser, enc, s, next); + if (!declAttributeId) + return XML_ERROR_NO_MEMORY; + declAttributeIsCdata = XML_FALSE; + declAttributeType = NULL; + declAttributeIsId = XML_FALSE; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_CDATA: + declAttributeIsCdata = XML_TRUE; + declAttributeType = atypeCDATA; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ID: + declAttributeIsId = XML_TRUE; + declAttributeType = atypeID; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREF: + declAttributeType = atypeIDREF; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: + declAttributeType = atypeIDREFS; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: + declAttributeType = atypeENTITY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: + declAttributeType = atypeENTITIES; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: + declAttributeType = atypeNMTOKEN; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: + declAttributeType = atypeNMTOKENS; + checkAttListDeclHandler: + if (dtd->keepProcessing && attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTRIBUTE_ENUM_VALUE: + case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: + if (dtd->keepProcessing && attlistDeclHandler) { + const XML_Char *prefix; + if (declAttributeType) { + prefix = enumValueSep; + } + else { + prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE + ? notationPrefix + : enumValueStart); + } + if (!poolAppendString(&tempPool, prefix)) + return XML_ERROR_NO_MEMORY; + if (!poolAppend(&tempPool, enc, s, next)) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: + case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + if (!defineAttribute(declElementType, declAttributeId, + declAttributeIsCdata, declAttributeIsId, + 0, parser)) + return XML_ERROR_NO_MEMORY; + if (attlistDeclHandler && declAttributeType) { + if (*declAttributeType == XML_T(ASCII_LPAREN) + || (*declAttributeType == XML_T(ASCII_N) + && declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) + || !poolAppendChar(&tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + poolFinish(&tempPool); + } + *eventEndPP = s; + attlistDeclHandler(handlerArg, declElementType->name, + declAttributeId->name, declAttributeType, + 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: + case XML_ROLE_FIXED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + const XML_Char *attVal; + enum XML_Error result = + storeAttributeValue(parser, enc, declAttributeIsCdata, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar, + &dtd->pool); + if (result) + return result; + attVal = poolStart(&dtd->pool); + poolFinish(&dtd->pool); + /* ID attributes aren't allowed to have a default */ + if (!defineAttribute(declElementType, declAttributeId, + declAttributeIsCdata, XML_FALSE, attVal, parser)) + return XML_ERROR_NO_MEMORY; + if (attlistDeclHandler && declAttributeType) { + if (*declAttributeType == XML_T(ASCII_LPAREN) + || (*declAttributeType == XML_T(ASCII_N) + && declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) + || !poolAppendChar(&tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + poolFinish(&tempPool); + } + *eventEndPP = s; + attlistDeclHandler(handlerArg, declElementType->name, + declAttributeId->name, declAttributeType, + attVal, + role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_ENTITY_VALUE: + if (dtd->keepProcessing) { + enum XML_Error result = storeEntityValue(parser, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (declEntity) { + declEntity->textPtr = poolStart(&dtd->entityValuePool); + declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); + poolFinish(&dtd->entityValuePool); + if (entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + declEntity->is_param, + declEntity->textPtr, + declEntity->textLen, + curBase, 0, 0, 0); + handleDefault = XML_FALSE; + } + } + else + poolDiscard(&dtd->entityValuePool); + if (result != XML_ERROR_NONE) + return result; + } + break; + case XML_ROLE_DOCTYPE_SYSTEM_ID: +#ifdef XML_DTD + useForeignDTD = XML_FALSE; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (startDoctypeDeclHandler) { + doctypeSysid = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (doctypeSysid == NULL) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } +#ifdef XML_DTD + else + /* use externalSubsetName to make doctypeSysid non-NULL + for the case where no startDoctypeDeclHandler is set */ + doctypeSysid = externalSubsetName; +#endif /* XML_DTD */ + if (!dtd->standalone +#ifdef XML_DTD + && !paramEntityParsing +#endif /* XML_DTD */ + && notStandaloneHandler + && !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; +#ifndef XML_DTD + break; +#else /* XML_DTD */ + if (!declEntity) { + declEntity = (ENTITY *)lookup(parser, + &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + declEntity->publicId = NULL; + } + /* fall through */ +#endif /* XML_DTD */ + case XML_ROLE_ENTITY_SYSTEM_ID: + if (dtd->keepProcessing && declEntity) { + declEntity->systemId = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!declEntity->systemId) + return XML_ERROR_NO_MEMORY; + declEntity->base = curBase; + poolFinish(&dtd->pool); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_COMPLETE: + if (dtd->keepProcessing && declEntity && entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + declEntity->is_param, + 0,0, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + 0); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_NOTATION_NAME: + if (dtd->keepProcessing && declEntity) { + declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); + if (!declEntity->notation) + return XML_ERROR_NO_MEMORY; + poolFinish(&dtd->pool); + if (unparsedEntityDeclHandler) { + *eventEndPP = s; + unparsedEntityDeclHandler(handlerArg, + declEntity->name, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + declEntity->notation); + handleDefault = XML_FALSE; + } + else if (entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + 0,0,0, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + declEntity->notation); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_GENERAL_ENTITY_NAME: + { + if (XmlPredefinedEntityName(enc, s, next)) { + declEntity = NULL; + break; + } + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (!name) + return XML_ERROR_NO_MEMORY; + declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + if (declEntity->name != name) { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + else { + poolFinish(&dtd->pool); + declEntity->publicId = NULL; + declEntity->is_param = XML_FALSE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + declEntity->is_internal = !(parentParser || openInternalEntities); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + } + else { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + } + break; + case XML_ROLE_PARAM_ENTITY_NAME: +#ifdef XML_DTD + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (!name) + return XML_ERROR_NO_MEMORY; + declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, + name, sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + if (declEntity->name != name) { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + else { + poolFinish(&dtd->pool); + declEntity->publicId = NULL; + declEntity->is_param = XML_TRUE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + declEntity->is_internal = !(parentParser || openInternalEntities); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + } + else { + poolDiscard(&dtd->pool); + declEntity = NULL; + } +#else /* not XML_DTD */ + declEntity = NULL; +#endif /* XML_DTD */ + break; + case XML_ROLE_NOTATION_NAME: + declNotationPublicId = NULL; + declNotationName = NULL; + if (notationDeclHandler) { + declNotationName = poolStoreString(&tempPool, enc, s, next); + if (!declNotationName) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_PUBLIC_ID: + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + if (declNotationName) { /* means notationDeclHandler != NULL */ + XML_Char *tem = poolStoreString(&tempPool, + enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + declNotationPublicId = tem; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_SYSTEM_ID: + if (declNotationName && notationDeclHandler) { + const XML_Char *systemId + = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!systemId) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + notationDeclHandler(handlerArg, + declNotationName, + curBase, + systemId, + declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&tempPool); + break; + case XML_ROLE_NOTATION_NO_SYSTEM_ID: + if (declNotationPublicId && notationDeclHandler) { + *eventEndPP = s; + notationDeclHandler(handlerArg, + declNotationName, + curBase, + 0, + declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&tempPool); + break; + case XML_ROLE_ERROR: + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: + /* PE references in internal subset are + not allowed within declarations. */ + return XML_ERROR_PARAM_ENTITY_REF; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + default: + return XML_ERROR_SYNTAX; + } +#ifdef XML_DTD + case XML_ROLE_IGNORE_SECT: + { + enum XML_Error result; + if (defaultHandler) + reportDefault(parser, enc, s, next); + handleDefault = XML_FALSE; + result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (!next) { + processor = ignoreSectionProcessor; + return result; + } + } + break; +#endif /* XML_DTD */ + case XML_ROLE_GROUP_OPEN: + if (prologState.level >= groupSize) { + if (groupSize) { + char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + groupConnector = temp; + if (dtd->scaffIndex) { + int *temp = (int *)REALLOC(dtd->scaffIndex, + groupSize * sizeof(int)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex = temp; + } + } + else { + groupConnector = (char *)MALLOC(groupSize = 32); + if (!groupConnector) + return XML_ERROR_NO_MEMORY; + } + } + groupConnector[prologState.level] = 0; + if (dtd->in_eldecl) { + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex[dtd->scaffLevel] = myindex; + dtd->scaffLevel++; + dtd->scaffold[myindex].type = XML_CTYPE_SEQ; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_GROUP_SEQUENCE: + if (groupConnector[prologState.level] == ASCII_PIPE) + return XML_ERROR_SYNTAX; + groupConnector[prologState.level] = ASCII_COMMA; + if (dtd->in_eldecl && elementDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_GROUP_CHOICE: + if (groupConnector[prologState.level] == ASCII_COMMA) + return XML_ERROR_SYNTAX; + if (dtd->in_eldecl + && !groupConnector[prologState.level] + && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + != XML_CTYPE_MIXED) + ) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_CHOICE; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + groupConnector[prologState.level] = ASCII_PIPE; + break; + case XML_ROLE_PARAM_ENTITY_REF: +#ifdef XML_DTD + case XML_ROLE_INNER_PARAM_ENTITY_REF: + dtd->hasParamEntityRefs = XML_TRUE; + if (!paramEntityParsing) + dtd->keepProcessing = dtd->standalone; + else { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); + poolDiscard(&dtd->pool); + /* first, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity handler + */ + if (prologState.documentEntity && + (dtd->standalone + ? !openInternalEntities + : !dtd->hasParamEntityRefs)) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + dtd->keepProcessing = dtd->standalone; + /* cannot report skipped entities in declarations */ + if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { + skippedEntityHandler(handlerArg, name, 1); + handleDefault = XML_FALSE; + } + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + XML_Bool betweenDecl = + (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); + result = processInternalEntity(parser, entity, betweenDecl); + if (result != XML_ERROR_NONE) + return result; + handleDefault = XML_FALSE; + break; + } + if (externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) { + entity->open = XML_FALSE; + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + } + entity->open = XML_FALSE; + handleDefault = XML_FALSE; + if (!dtd->paramEntityRead) { + dtd->keepProcessing = dtd->standalone; + break; + } + } + else { + dtd->keepProcessing = dtd->standalone; + break; + } + } +#endif /* XML_DTD */ + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + break; + + /* Element declaration stuff */ + + case XML_ROLE_ELEMENT_NAME: + if (elementDeclHandler) { + declElementType = getElementType(parser, enc, s, next); + if (!declElementType) + return XML_ERROR_NO_MEMORY; + dtd->scaffLevel = 0; + dtd->scaffCount = 0; + dtd->in_eldecl = XML_TRUE; + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ANY: + case XML_ROLE_CONTENT_EMPTY: + if (dtd->in_eldecl) { + if (elementDeclHandler) { + XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); + if (!content) + return XML_ERROR_NO_MEMORY; + content->quant = XML_CQUANT_NONE; + content->name = NULL; + content->numchildren = 0; + content->children = NULL; + content->type = ((role == XML_ROLE_CONTENT_ANY) ? + XML_CTYPE_ANY : + XML_CTYPE_EMPTY); + *eventEndPP = s; + elementDeclHandler(handlerArg, declElementType->name, content); + handleDefault = XML_FALSE; + } + dtd->in_eldecl = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_PCDATA: + if (dtd->in_eldecl) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_MIXED; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ELEMENT: + quant = XML_CQUANT_NONE; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_OPT: + quant = XML_CQUANT_OPT; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_REP: + quant = XML_CQUANT_REP; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_PLUS: + quant = XML_CQUANT_PLUS; + elementContent: + if (dtd->in_eldecl) { + ELEMENT_TYPE *el; + const XML_Char *name; + int nameLen; + const char *nxt = (quant == XML_CQUANT_NONE + ? next + : next - enc->minBytesPerChar); + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffold[myindex].type = XML_CTYPE_NAME; + dtd->scaffold[myindex].quant = quant; + el = getElementType(parser, enc, s, nxt); + if (!el) + return XML_ERROR_NO_MEMORY; + name = el->name; + dtd->scaffold[myindex].name = name; + nameLen = 0; + for (; name[nameLen++]; ); + dtd->contentStringLen += nameLen; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_GROUP_CLOSE: + quant = XML_CQUANT_NONE; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_OPT: + quant = XML_CQUANT_OPT; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_REP: + quant = XML_CQUANT_REP; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_PLUS: + quant = XML_CQUANT_PLUS; + closeGroup: + if (dtd->in_eldecl) { + if (elementDeclHandler) + handleDefault = XML_FALSE; + dtd->scaffLevel--; + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; + if (dtd->scaffLevel == 0) { + if (!handleDefault) { + XML_Content *model = build_model(parser); + if (!model) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + elementDeclHandler(handlerArg, declElementType->name, model); + } + dtd->in_eldecl = XML_FALSE; + dtd->contentStringLen = 0; + } + } + break; + /* End element declaration stuff */ + + case XML_ROLE_PI: + if (!reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_COMMENT: + if (!reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_NONE: + switch (tok) { + case XML_TOK_BOM: + handleDefault = XML_FALSE; + break; + } + break; + case XML_ROLE_DOCTYPE_NONE: + if (startDoctypeDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ENTITY_NONE: + if (dtd->keepProcessing && entityDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_NOTATION_NONE: + if (notationDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTLIST_NONE: + if (dtd->keepProcessing && attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ELEMENT_NONE: + if (elementDeclHandler) + handleDefault = XML_FALSE; + break; + } /* end of big switch */ + + if (handleDefault && defaultHandler) + reportDefault(parser, enc, s, next); + + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + s = next; + tok = XmlPrologTok(enc, s, end, &next); + } + } + /* not reached */ +} + +static enum XML_Error PTRCALL +epilogProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + processor = epilogProcessor; + eventPtr = s; + for (;;) { + const char *next = NULL; + int tok = XmlPrologTok(encoding, s, end, &next); + eventEndPtr = next; + switch (tok) { + /* report partial linebreak - it might be the last token */ + case -XML_TOK_PROLOG_S: + if (defaultHandler) { + reportDefault(parser, encoding, s, next); + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + } + *nextPtr = next; + return XML_ERROR_NONE; + case XML_TOK_NONE: + *nextPtr = s; + return XML_ERROR_NONE; + case XML_TOK_PROLOG_S: + if (defaultHandler) + reportDefault(parser, encoding, s, next); + break; + case XML_TOK_PI: + if (!reportProcessingInstruction(parser, encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (!reportComment(parser, encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_INVALID: + eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + default: + return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; + } + eventPtr = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } +} + +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl) +{ + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity; + + if (freeInternalEntities) { + openEntity = freeInternalEntities; + freeInternalEntities = openEntity->next; + } + else { + openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); + if (!openEntity) + return XML_ERROR_NO_MEMORY; + } + entity->open = XML_TRUE; + entity->processed = 0; + openEntity->next = openInternalEntities; + openInternalEntities = openEntity; + openEntity->entity = entity; + openEntity->startTagLevel = tagLevel; + openEntity->betweenDecl = betweenDecl; + openEntity->internalEventPtr = NULL; + openEntity->internalEventEndPtr = NULL; + textStart = (char *)entity->textPtr; + textEnd = (char *)(entity->textPtr + entity->textLen); + +#ifdef XML_DTD + if (entity->is_param) { + int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, internalEncoding, textStart, textEnd, tok, + next, &next, XML_FALSE); + } + else +#endif /* XML_DTD */ + result = doContent(parser, tagLevel, internalEncoding, textStart, + textEnd, &next, XML_FALSE); + + if (result == XML_ERROR_NONE) { + if (textEnd != next && ps_parsing == XML_SUSPENDED) { + entity->processed = (int)(next - textStart); + processor = internalEntityProcessor; + } + else { + entity->open = XML_FALSE; + openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + } + return result; +} + +static enum XML_Error PTRCALL +internalEntityProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + ENTITY *entity; + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; + if (!openEntity) + return XML_ERROR_UNEXPECTED_STATE; + + entity = openEntity->entity; + textStart = ((char *)entity->textPtr) + entity->processed; + textEnd = (char *)(entity->textPtr + entity->textLen); + +#ifdef XML_DTD + if (entity->is_param) { + int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, internalEncoding, textStart, textEnd, tok, + next, &next, XML_FALSE); + } + else +#endif /* XML_DTD */ + result = doContent(parser, openEntity->startTagLevel, internalEncoding, + textStart, textEnd, &next, XML_FALSE); + + if (result != XML_ERROR_NONE) + return result; + else if (textEnd != next && ps_parsing == XML_SUSPENDED) { + entity->processed = (int)(next - (char *)entity->textPtr); + return result; + } + else { + entity->open = XML_FALSE; + openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + +#ifdef XML_DTD + if (entity->is_param) { + int tok; + processor = prologProcessor; + tok = XmlPrologTok(encoding, s, end, &next); + return doProlog(parser, encoding, s, end, tok, next, nextPtr, + (XML_Bool)!ps_finalBuffer); + } + else +#endif /* XML_DTD */ + { + processor = contentProcessor; + /* see externalEntityContentProcessor vs contentProcessor */ + return doContent(parser, parentParser ? 1 : 0, encoding, s, end, + nextPtr, (XML_Bool)!ps_finalBuffer); + } +} + +static enum XML_Error PTRCALL +errorProcessor(XML_Parser parser, + const char *UNUSED_P(s), + const char *UNUSED_P(end), + const char **UNUSED_P(nextPtr)) +{ + return errorCode; +} + +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, + STRING_POOL *pool) +{ + enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, + end, pool); + if (result) + return result; + if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) + poolChop(pool); + if (!poolAppendChar(pool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + return XML_ERROR_NONE; +} + +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, + STRING_POOL *pool) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + for (;;) { + const char *next; + int tok = XmlAttributeValueTok(enc, ptr, end, &next); + switch (tok) { + case XML_TOK_NONE: + return XML_ERROR_NONE; + case XML_TOK_INVALID: + if (enc == encoding) + eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_CHAR_REF: + { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, ptr); + if (n < 0) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + if (!isCdata + && n == 0x20 /* space */ + && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + n = XmlEncode(n, (ICHAR *)buf); + if (!n) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + for (i = 0; i < n; i++) { + if (!poolAppendChar(pool, buf[i])) + return XML_ERROR_NO_MEMORY; + } + } + break; + case XML_TOK_DATA_CHARS: + if (!poolAppend(pool, enc, ptr, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_TRAILING_CR: + next = ptr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_ATTRIBUTE_VALUE_S: + case XML_TOK_DATA_NEWLINE: + if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + if (!poolAppendChar(pool, 0x20)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_ENTITY_REF: + { + const XML_Char *name; + ENTITY *entity; + char checkEntityDecl; + XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (ch) { + if (!poolAppendChar(pool, ch)) + return XML_ERROR_NO_MEMORY; + break; + } + name = poolStoreString(&temp2Pool, enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&temp2Pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal. + */ + if (pool == &dtd->pool) /* are we called from prolog? */ + checkEntityDecl = +#ifdef XML_DTD + prologState.documentEntity && +#endif /* XML_DTD */ + (dtd->standalone + ? !openInternalEntities + : !dtd->hasParamEntityRefs); + else /* if (pool == &tempPool): we are called from content */ + checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; + if (checkEntityDecl) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + /* Cannot report skipped entity here - see comments on + skippedEntityHandler. + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + */ + /* Cannot call the default handler because this would be + out of sync with the call to the startElementHandler. + if ((pool == &tempPool) && defaultHandler) + reportDefault(parser, enc, ptr, next); + */ + break; + } + if (entity->open) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_RECURSIVE_ENTITY_REF; + } + if (entity->notation) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BINARY_ENTITY_REF; + } + if (!entity->textPtr) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; + } + else { + enum XML_Error result; + const XML_Char *textEnd = entity->textPtr + entity->textLen; + entity->open = XML_TRUE; + result = appendAttributeValue(parser, internalEncoding, isCdata, + (char *)entity->textPtr, + (char *)textEnd, pool); + entity->open = XML_FALSE; + if (result) + return result; + } + } + break; + default: + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_UNEXPECTED_STATE; + } + ptr = next; + } + /* not reached */ +} + +static enum XML_Error +storeEntityValue(XML_Parser parser, + const ENCODING *enc, + const char *entityTextPtr, + const char *entityTextEnd) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + STRING_POOL *pool = &(dtd->entityValuePool); + enum XML_Error result = XML_ERROR_NONE; +#ifdef XML_DTD + int oldInEntityValue = prologState.inEntityValue; + prologState.inEntityValue = 1; +#endif /* XML_DTD */ + /* never return Null for the value argument in EntityDeclHandler, + since this would indicate an external entity; therefore we + have to make sure that entityValuePool.start is not null */ + if (!pool->blocks) { + if (!poolGrow(pool)) + return XML_ERROR_NO_MEMORY; + } + + for (;;) { + const char *next; + int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: +#ifdef XML_DTD + if (isParamEntity || enc != encoding) { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&tempPool, enc, + entityTextPtr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); + poolDiscard(&tempPool); + if (!entity) { + /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ + /* cannot report skipped entity here - see comments on + skippedEntityHandler + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + */ + dtd->keepProcessing = dtd->standalone; + goto endEntityValue; + } + if (entity->open) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_RECURSIVE_ENTITY_REF; + goto endEntityValue; + } + if (entity->systemId) { + if (externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) { + entity->open = XML_FALSE; + result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; + goto endEntityValue; + } + entity->open = XML_FALSE; + if (!dtd->paramEntityRead) + dtd->keepProcessing = dtd->standalone; + } + else + dtd->keepProcessing = dtd->standalone; + } + else { + entity->open = XML_TRUE; + result = storeEntityValue(parser, + internalEncoding, + (char *)entity->textPtr, + (char *)(entity->textPtr + + entity->textLen)); + entity->open = XML_FALSE; + if (result) + goto endEntityValue; + } + break; + } +#endif /* XML_DTD */ + /* In the internal subset, PE references are not legal + within markup declarations, e.g entity values in this case. */ + eventPtr = entityTextPtr; + result = XML_ERROR_PARAM_ENTITY_REF; + goto endEntityValue; + case XML_TOK_NONE: + result = XML_ERROR_NONE; + goto endEntityValue; + case XML_TOK_ENTITY_REF: + case XML_TOK_DATA_CHARS: + if (!poolAppend(pool, enc, entityTextPtr, next)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + break; + case XML_TOK_TRAILING_CR: + next = entityTextPtr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_DATA_NEWLINE: + if (pool->end == pool->ptr && !poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = 0xA; + break; + case XML_TOK_CHAR_REF: + { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, entityTextPtr); + if (n < 0) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + n = XmlEncode(n, (ICHAR *)buf); + if (!n) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + for (i = 0; i < n; i++) { + if (pool->end == pool->ptr && !poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = buf[i]; + } + } + break; + case XML_TOK_PARTIAL: + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + case XML_TOK_INVALID: + if (enc == encoding) + eventPtr = next; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + default: + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_UNEXPECTED_STATE; + goto endEntityValue; + } + entityTextPtr = next; + } +endEntityValue: +#ifdef XML_DTD + prologState.inEntityValue = oldInEntityValue; +#endif /* XML_DTD */ + return result; +} + +static void FASTCALL +normalizeLines(XML_Char *s) +{ + XML_Char *p; + for (;; s++) { + if (*s == XML_T('\0')) + return; + if (*s == 0xD) + break; + } + p = s; + do { + if (*s == 0xD) { + *p++ = 0xA; + if (*++s == 0xA) + s++; + } + else + *p++ = *s++; + } while (*s); + *p = XML_T('\0'); +} + +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + const XML_Char *target; + XML_Char *data; + const char *tem; + if (!processingInstructionHandler) { + if (defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + start += enc->minBytesPerChar * 2; + tem = start + XmlNameLength(enc, start); + target = poolStoreString(&tempPool, enc, start, tem); + if (!target) + return 0; + poolFinish(&tempPool); + data = poolStoreString(&tempPool, enc, + XmlSkipS(enc, tem), + end - enc->minBytesPerChar*2); + if (!data) + return 0; + normalizeLines(data); + processingInstructionHandler(handlerArg, target, data); + poolClear(&tempPool); + return 1; +} + +static int +reportComment(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + XML_Char *data; + if (!commentHandler) { + if (defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + data = poolStoreString(&tempPool, + enc, + start + enc->minBytesPerChar * 4, + end - enc->minBytesPerChar * 3); + if (!data) + return 0; + normalizeLines(data); + commentHandler(handlerArg, data); + poolClear(&tempPool); + return 1; +} + +static void +reportDefault(XML_Parser parser, const ENCODING *enc, + const char *s, const char *end) +{ + if (MUST_CONVERT(enc, s)) { + enum XML_Convert_Result convert_res; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + do { + ICHAR *dataPtr = (ICHAR *)dataBuf; + convert_res = XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); + *eventPP = s; + } while ((convert_res != XML_CONVERT_COMPLETED) && (convert_res != XML_CONVERT_INPUT_INCOMPLETE)); + } + else + defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); +} + + +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, + XML_Bool isId, const XML_Char *value, XML_Parser parser) +{ + DEFAULT_ATTRIBUTE *att; + if (value || isId) { + /* The handling of default attributes gets messed up if we have + a default which duplicates a non-default. */ + int i; + for (i = 0; i < type->nDefaultAtts; i++) + if (attId == type->defaultAtts[i].id) + return 1; + if (isId && !type->idAtt && !attId->xmlns) + type->idAtt = attId; + } + if (type->nDefaultAtts == type->allocDefaultAtts) { + if (type->allocDefaultAtts == 0) { + type->allocDefaultAtts = 8; + type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts + * sizeof(DEFAULT_ATTRIBUTE)); + if (!type->defaultAtts) + return 0; + } + else { + DEFAULT_ATTRIBUTE *temp; + int count = type->allocDefaultAtts * 2; + temp = (DEFAULT_ATTRIBUTE *) + REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); + if (temp == NULL) + return 0; + type->allocDefaultAtts = count; + type->defaultAtts = temp; + } + } + att = type->defaultAtts + type->nDefaultAtts; + att->id = attId; + att->value = value; + att->isCdata = isCdata; + if (!isCdata) + attId->maybeTokenized = XML_TRUE; + type->nDefaultAtts += 1; + return 1; +} + +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name; + for (name = elementType->name; *name; name++) { + if (*name == XML_T(ASCII_COLON)) { + PREFIX *prefix; + const XML_Char *s; + for (s = elementType->name; s != name; s++) { + if (!poolAppendChar(&dtd->pool, *s)) + return 0; + } + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return 0; + prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (!prefix) + return 0; + if (prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + elementType->prefix = prefix; + + } + } + return 1; +} + +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + ATTRIBUTE_ID *id; + const XML_Char *name; + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + name = poolStoreString(&dtd->pool, enc, start, end); + if (!name) + return NULL; + /* skip quotation mark - its storage will be re-used (like in name[-1]) */ + ++name; + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); + if (!id) + return NULL; + if (id->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (!ns) + ; + else if (name[0] == XML_T(ASCII_x) + && name[1] == XML_T(ASCII_m) + && name[2] == XML_T(ASCII_l) + && name[3] == XML_T(ASCII_n) + && name[4] == XML_T(ASCII_s) + && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { + if (name[5] == XML_T('\0')) + id->prefix = &dtd->defaultPrefix; + else + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX)); + id->xmlns = XML_TRUE; + } + else { + int i; + for (i = 0; name[i]; i++) { + /* attributes without prefix are *not* in the default namespace */ + if (name[i] == XML_T(ASCII_COLON)) { + int j; + for (j = 0; j < i; j++) { + if (!poolAppendChar(&dtd->pool, name[j])) + return NULL; + } + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (!id->prefix) + return NULL; + if (id->prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + break; + } + } + } + } + return id; +} + +#define CONTEXT_SEP XML_T(ASCII_FF) + +static const XML_Char * +getContext(XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + HASH_TABLE_ITER iter; + XML_Bool needSep = XML_FALSE; + + if (dtd->defaultPrefix.binding) { + int i; + int len; + if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = dtd->defaultPrefix.binding->uriLen; + if (namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + hashTableIterInit(&iter, &(dtd->prefixes)); + for (;;) { + int i; + int len; + const XML_Char *s; + PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); + if (!prefix) + break; + if (!prefix->binding) + continue; + if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + return NULL; + for (s = prefix->name; *s; s++) + if (!poolAppendChar(&tempPool, *s)) + return NULL; + if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = prefix->binding->uriLen; + if (namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + + hashTableIterInit(&iter, &(dtd->generalEntities)); + for (;;) { + const XML_Char *s; + ENTITY *e = (ENTITY *)hashTableIterNext(&iter); + if (!e) + break; + if (!e->open) + continue; + if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + return NULL; + for (s = e->name; *s; s++) + if (!poolAppendChar(&tempPool, *s)) + return 0; + needSep = XML_TRUE; + } + + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return NULL; + return tempPool.start; +} + +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *s = context; + + while (*context != XML_T('\0')) { + if (*s == CONTEXT_SEP || *s == XML_T('\0')) { + ENTITY *e; + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0); + if (e) + e->open = XML_TRUE; + if (*s != XML_T('\0')) + s++; + context = s; + poolDiscard(&tempPool); + } + else if (*s == XML_T(ASCII_EQUALS)) { + PREFIX *prefix; + if (poolLength(&tempPool) == 0) + prefix = &dtd->defaultPrefix; + else { + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool), + sizeof(PREFIX)); + if (!prefix) + return XML_FALSE; + if (prefix->name == poolStart(&tempPool)) { + prefix->name = poolCopyString(&dtd->pool, prefix->name); + if (!prefix->name) + return XML_FALSE; + } + poolDiscard(&tempPool); + } + for (context = s + 1; + *context != CONTEXT_SEP && *context != XML_T('\0'); + context++) + if (!poolAppendChar(&tempPool, *context)) + return XML_FALSE; + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + if (addBinding(parser, prefix, NULL, poolStart(&tempPool), + &inheritedBindings) != XML_ERROR_NONE) + return XML_FALSE; + poolDiscard(&tempPool); + if (*context != XML_T('\0')) + ++context; + s = context; + } + else { + if (!poolAppendChar(&tempPool, *s)) + return XML_FALSE; + s++; + } + } + return XML_TRUE; +} + +static void FASTCALL +normalizePublicId(XML_Char *publicId) +{ + XML_Char *p = publicId; + XML_Char *s; + for (s = publicId; *s; s++) { + switch (*s) { + case 0x20: + case 0xD: + case 0xA: + if (p != publicId && p[-1] != 0x20) + *p++ = 0x20; + break; + default: + *p++ = *s; + } + } + if (p != publicId && p[-1] == 0x20) + --p; + *p = XML_T('\0'); +} + +static DTD * +dtdCreate(const XML_Memory_Handling_Suite *ms) +{ + DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); + if (p == NULL) + return p; + poolInit(&(p->pool), ms); + poolInit(&(p->entityValuePool), ms); + hashTableInit(&(p->generalEntities), ms); + hashTableInit(&(p->elementTypes), ms); + hashTableInit(&(p->attributeIds), ms); + hashTableInit(&(p->prefixes), ms); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableInit(&(p->paramEntities), ms); +#endif /* XML_DTD */ + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + p->scaffIndex = NULL; + p->scaffold = NULL; + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; + return p; +} + +static void +dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableClear(&(p->generalEntities)); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableClear(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableClear(&(p->elementTypes)); + hashTableClear(&(p->attributeIds)); + hashTableClear(&(p->prefixes)); + poolClear(&(p->pool)); + poolClear(&(p->entityValuePool)); + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + + ms->free_fcn(p->scaffIndex); + p->scaffIndex = NULL; + ms->free_fcn(p->scaffold); + p->scaffold = NULL; + + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; +} + +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableDestroy(&(p->generalEntities)); +#ifdef XML_DTD + hashTableDestroy(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableDestroy(&(p->elementTypes)); + hashTableDestroy(&(p->attributeIds)); + hashTableDestroy(&(p->prefixes)); + poolDestroy(&(p->pool)); + poolDestroy(&(p->entityValuePool)); + if (isDocEntity) { + ms->free_fcn(p->scaffIndex); + ms->free_fcn(p->scaffold); + } + ms->free_fcn(p); +} + +/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. + The new DTD has already been initialized. +*/ +static int +dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + + /* Copy the prefix table. */ + + hashTableIterInit(&iter, &(oldDtd->prefixes)); + for (;;) { + const XML_Char *name; + const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); + if (!oldP) + break; + name = poolCopyString(&(newDtd->pool), oldP->name); + if (!name) + return 0; + if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) + return 0; + } + + hashTableIterInit(&iter, &(oldDtd->attributeIds)); + + /* Copy the attribute id table. */ + + for (;;) { + ATTRIBUTE_ID *newA; + const XML_Char *name; + const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); + + if (!oldA) + break; + /* Remember to allocate the scratch byte before the name. */ + if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) + return 0; + name = poolCopyString(&(newDtd->pool), oldA->name); + if (!name) + return 0; + ++name; + newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, + sizeof(ATTRIBUTE_ID)); + if (!newA) + return 0; + newA->maybeTokenized = oldA->maybeTokenized; + if (oldA->prefix) { + newA->xmlns = oldA->xmlns; + if (oldA->prefix == &oldDtd->defaultPrefix) + newA->prefix = &newDtd->defaultPrefix; + else + newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), + oldA->prefix->name, 0); + } + } + + /* Copy the element type table. */ + + hashTableIterInit(&iter, &(oldDtd->elementTypes)); + + for (;;) { + int i; + ELEMENT_TYPE *newE; + const XML_Char *name; + const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(&(newDtd->pool), oldE->name); + if (!name) + return 0; + newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, + sizeof(ELEMENT_TYPE)); + if (!newE) + return 0; + if (oldE->nDefaultAtts) { + newE->defaultAtts = (DEFAULT_ATTRIBUTE *) + ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (!newE->defaultAtts) { + ms->free_fcn(newE); + return 0; + } + } + if (oldE->idAtt) + newE->idAtt = (ATTRIBUTE_ID *) + lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0); + newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; + if (oldE->prefix) + newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), + oldE->prefix->name, 0); + for (i = 0; i < newE->nDefaultAtts; i++) { + newE->defaultAtts[i].id = (ATTRIBUTE_ID *) + lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); + newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; + if (oldE->defaultAtts[i].value) { + newE->defaultAtts[i].value + = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); + if (!newE->defaultAtts[i].value) + return 0; + } + else + newE->defaultAtts[i].value = NULL; + } + } + + /* Copy the entity tables. */ + if (!copyEntityTable(oldParser, + &(newDtd->generalEntities), + &(newDtd->pool), + &(oldDtd->generalEntities))) + return 0; + +#ifdef XML_DTD + if (!copyEntityTable(oldParser, + &(newDtd->paramEntities), + &(newDtd->pool), + &(oldDtd->paramEntities))) + return 0; + newDtd->paramEntityRead = oldDtd->paramEntityRead; +#endif /* XML_DTD */ + + newDtd->keepProcessing = oldDtd->keepProcessing; + newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; + newDtd->standalone = oldDtd->standalone; + + /* Don't want deep copying for scaffolding */ + newDtd->in_eldecl = oldDtd->in_eldecl; + newDtd->scaffold = oldDtd->scaffold; + newDtd->contentStringLen = oldDtd->contentStringLen; + newDtd->scaffSize = oldDtd->scaffSize; + newDtd->scaffLevel = oldDtd->scaffLevel; + newDtd->scaffIndex = oldDtd->scaffIndex; + + return 1; +} /* End dtdCopy */ + +static int +copyEntityTable(XML_Parser oldParser, + HASH_TABLE *newTable, + STRING_POOL *newPool, + const HASH_TABLE *oldTable) +{ + HASH_TABLE_ITER iter; + const XML_Char *cachedOldBase = NULL; + const XML_Char *cachedNewBase = NULL; + + hashTableIterInit(&iter, oldTable); + + for (;;) { + ENTITY *newE; + const XML_Char *name; + const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(newPool, oldE->name); + if (!name) + return 0; + newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); + if (!newE) + return 0; + if (oldE->systemId) { + const XML_Char *tem = poolCopyString(newPool, oldE->systemId); + if (!tem) + return 0; + newE->systemId = tem; + if (oldE->base) { + if (oldE->base == cachedOldBase) + newE->base = cachedNewBase; + else { + cachedOldBase = oldE->base; + tem = poolCopyString(newPool, cachedOldBase); + if (!tem) + return 0; + cachedNewBase = newE->base = tem; + } + } + if (oldE->publicId) { + tem = poolCopyString(newPool, oldE->publicId); + if (!tem) + return 0; + newE->publicId = tem; + } + } + else { + const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, + oldE->textLen); + if (!tem) + return 0; + newE->textPtr = tem; + newE->textLen = oldE->textLen; + } + if (oldE->notation) { + const XML_Char *tem = poolCopyString(newPool, oldE->notation); + if (!tem) + return 0; + newE->notation = tem; + } + newE->is_param = oldE->is_param; + newE->is_internal = oldE->is_internal; + } + return 1; +} + +#define INIT_POWER 6 + +static XML_Bool FASTCALL +keyeq(KEY s1, KEY s2) +{ + for (; *s1 == *s2; s1++, s2++) + if (*s1 == 0) + return XML_TRUE; + return XML_FALSE; +} + +static unsigned long FASTCALL +hash(XML_Parser parser, KEY s) +{ + unsigned long h = hash_secret_salt; + while (*s) + h = CHAR_HASH(h, *s++); + return h; +} + +static NAMED * +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) +{ + size_t i; + if (table->size == 0) { + size_t tsize; + if (!createSize) + return NULL; + table->power = INIT_POWER; + /* table->size is a power of 2 */ + table->size = (size_t)1 << INIT_POWER; + tsize = table->size * sizeof(NAMED *); + table->v = (NAMED **)table->mem->malloc_fcn(tsize); + if (!table->v) { + table->size = 0; + return NULL; + } + memset(table->v, 0, tsize); + i = hash(parser, name) & ((unsigned long)table->size - 1); + } + else { + unsigned long h = hash(parser, name); + unsigned long mask = (unsigned long)table->size - 1; + unsigned char step = 0; + i = h & mask; + while (table->v[i]) { + if (keyeq(name, table->v[i]->name)) + return table->v[i]; + if (!step) + step = PROBE_STEP(h, mask, table->power); + i < step ? (i += table->size - step) : (i -= step); + } + if (!createSize) + return NULL; + + /* check for overflow (table is half full) */ + if (table->used >> (table->power - 1)) { + unsigned char newPower = table->power + 1; + size_t newSize = (size_t)1 << newPower; + unsigned long newMask = (unsigned long)newSize - 1; + size_t tsize = newSize * sizeof(NAMED *); + NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); + if (!newV) + return NULL; + memset(newV, 0, tsize); + for (i = 0; i < table->size; i++) + if (table->v[i]) { + unsigned long newHash = hash(parser, table->v[i]->name); + size_t j = newHash & newMask; + step = 0; + while (newV[j]) { + if (!step) + step = PROBE_STEP(newHash, newMask, newPower); + j < step ? (j += newSize - step) : (j -= step); + } + newV[j] = table->v[i]; + } + table->mem->free_fcn(table->v); + table->v = newV; + table->power = newPower; + table->size = newSize; + i = h & newMask; + step = 0; + while (table->v[i]) { + if (!step) + step = PROBE_STEP(h, newMask, newPower); + i < step ? (i += newSize - step) : (i -= step); + } + } + } + table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); + if (!table->v[i]) + return NULL; + memset(table->v[i], 0, createSize); + table->v[i]->name = name; + (table->used)++; + return table->v[i]; +} + +static void FASTCALL +hashTableClear(HASH_TABLE *table) +{ + size_t i; + for (i = 0; i < table->size; i++) { + table->mem->free_fcn(table->v[i]); + table->v[i] = NULL; + } + table->used = 0; +} + +static void FASTCALL +hashTableDestroy(HASH_TABLE *table) +{ + size_t i; + for (i = 0; i < table->size; i++) + table->mem->free_fcn(table->v[i]); + table->mem->free_fcn(table->v); +} + +static void FASTCALL +hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) +{ + p->power = 0; + p->size = 0; + p->used = 0; + p->v = NULL; + p->mem = ms; +} + +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) +{ + iter->p = table->v; + iter->end = iter->p + table->size; +} + +static NAMED * FASTCALL +hashTableIterNext(HASH_TABLE_ITER *iter) +{ + while (iter->p != iter->end) { + NAMED *tem = *(iter->p)++; + if (tem) + return tem; + } + return NULL; +} + +static void FASTCALL +poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) +{ + pool->blocks = NULL; + pool->freeBlocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; + pool->mem = ms; +} + +static void FASTCALL +poolClear(STRING_POOL *pool) +{ + if (!pool->freeBlocks) + pool->freeBlocks = pool->blocks; + else { + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + p->next = pool->freeBlocks; + pool->freeBlocks = p; + p = tem; + } + } + pool->blocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; +} + +static void FASTCALL +poolDestroy(STRING_POOL *pool) +{ + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } + p = pool->freeBlocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } +} + +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end) +{ + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (;;) { + const enum XML_Convert_Result convert_res = XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); + if ((convert_res == XML_CONVERT_COMPLETED) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) + break; + if (!poolGrow(pool)) + return NULL; + } + return pool->start; +} + +static const XML_Char * FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s) +{ + do { + if (!poolAppendChar(pool, *s)) + return NULL; + } while (*s++); + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) +{ + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (; n > 0; --n, s++) { + if (!poolAppendChar(pool, *s)) + return NULL; + } + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s) +{ + while (*s) { + if (!poolAppendChar(pool, *s)) + return NULL; + s++; + } + return pool->start; +} + +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end) +{ + if (!poolAppend(pool, enc, ptr, end)) + return NULL; + if (pool->ptr == pool->end && !poolGrow(pool)) + return NULL; + *(pool->ptr)++ = 0; + return pool->start; +} + +static XML_Bool FASTCALL +poolGrow(STRING_POOL *pool) +{ + if (pool->freeBlocks) { + if (pool->start == 0) { + pool->blocks = pool->freeBlocks; + pool->freeBlocks = pool->freeBlocks->next; + pool->blocks->next = NULL; + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + pool->ptr = pool->start; + return XML_TRUE; + } + if (pool->end - pool->start < pool->freeBlocks->size) { + BLOCK *tem = pool->freeBlocks->next; + pool->freeBlocks->next = pool->blocks; + pool->blocks = pool->freeBlocks; + pool->freeBlocks = tem; + memcpy(pool->blocks->s, pool->start, + (pool->end - pool->start) * sizeof(XML_Char)); + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + return XML_TRUE; + } + } + if (pool->blocks && pool->start == pool->blocks->s) { + BLOCK *temp; + int blockSize = (int)((unsigned)(pool->end - pool->start)*2U); + + if (blockSize < 0) + return XML_FALSE; + + temp = (BLOCK *) + pool->mem->realloc_fcn(pool->blocks, + (offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char))); + if (temp == NULL) + return XML_FALSE; + pool->blocks = temp; + pool->blocks->size = blockSize; + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + blockSize; + } + else { + BLOCK *tem; + int blockSize = (int)(pool->end - pool->start); + + if (blockSize < 0) + return XML_FALSE; + + if (blockSize < INIT_BLOCK_SIZE) + blockSize = INIT_BLOCK_SIZE; + else + blockSize *= 2; + tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char)); + if (!tem) + return XML_FALSE; + tem->size = blockSize; + tem->next = pool->blocks; + pool->blocks = tem; + if (pool->ptr != pool->start) + memcpy(tem->s, pool->start, + (pool->ptr - pool->start) * sizeof(XML_Char)); + pool->ptr = tem->s + (pool->ptr - pool->start); + pool->start = tem->s; + pool->end = tem->s + blockSize; + } + return XML_TRUE; +} + +static int FASTCALL +nextScaffoldPart(XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + CONTENT_SCAFFOLD * me; + int next; + + if (!dtd->scaffIndex) { + dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); + if (!dtd->scaffIndex) + return -1; + dtd->scaffIndex[0] = 0; + } + + if (dtd->scaffCount >= dtd->scaffSize) { + CONTENT_SCAFFOLD *temp; + if (dtd->scaffold) { + temp = (CONTENT_SCAFFOLD *) + REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize *= 2; + } + else { + temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS + * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; + } + dtd->scaffold = temp; + } + next = dtd->scaffCount++; + me = &dtd->scaffold[next]; + if (dtd->scaffLevel) { + CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; + if (parent->lastchild) { + dtd->scaffold[parent->lastchild].nextsib = next; + } + if (!parent->childcnt) + parent->firstchild = next; + parent->lastchild = next; + parent->childcnt++; + } + me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; + return next; +} + +static void +build_node(XML_Parser parser, + int src_node, + XML_Content *dest, + XML_Content **contpos, + XML_Char **strpos) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + dest->type = dtd->scaffold[src_node].type; + dest->quant = dtd->scaffold[src_node].quant; + if (dest->type == XML_CTYPE_NAME) { + const XML_Char *src; + dest->name = *strpos; + src = dtd->scaffold[src_node].name; + for (;;) { + *(*strpos)++ = *src; + if (!*src) + break; + src++; + } + dest->numchildren = 0; + dest->children = NULL; + } + else { + unsigned int i; + int cn; + dest->numchildren = dtd->scaffold[src_node].childcnt; + dest->children = *contpos; + *contpos += dest->numchildren; + for (i = 0, cn = dtd->scaffold[src_node].firstchild; + i < dest->numchildren; + i++, cn = dtd->scaffold[cn].nextsib) { + build_node(parser, cn, &(dest->children[i]), contpos, strpos); + } + dest->name = NULL; + } +} + +static XML_Content * +build_model (XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + XML_Content *ret; + XML_Content *cpos; + XML_Char * str; + int allocsize = (dtd->scaffCount * sizeof(XML_Content) + + (dtd->contentStringLen * sizeof(XML_Char))); + + ret = (XML_Content *)MALLOC(allocsize); + if (!ret) + return NULL; + + str = (XML_Char *) (&ret[dtd->scaffCount]); + cpos = &ret[1]; + + build_node(parser, 0, ret, &cpos, &str); + return ret; +} + +static ELEMENT_TYPE * +getElementType(XML_Parser parser, + const ENCODING *enc, + const char *ptr, + const char *end) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); + ELEMENT_TYPE *ret; + + if (!name) + return NULL; + ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); + if (!ret) + return NULL; + if (ret->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (!setElementTypePrefix(parser, ret)) + return NULL; + } + return ret; +} diff --git a/vendor/libexpat/lib/xmlrole.c b/vendor/libexpat/lib/xmlrole.c new file mode 100644 index 0000000..fcd0dc6 --- /dev/null +++ b/vendor/libexpat/lib/xmlrole.c @@ -0,0 +1,1336 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include + +#ifdef WIN32 +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include +#endif +#endif /* ndef WIN32 */ + +#include "expat_external.h" +#include "internal.h" +#include "xmlrole.h" +#include "ascii.h" + +/* Doesn't check: + + that ,| are not mixed in a model group + content of literals + +*/ + +static const char KW_ANY[] = { + ASCII_A, ASCII_N, ASCII_Y, '\0' }; +static const char KW_ATTLIST[] = { + ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; +static const char KW_CDATA[] = { + ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_DOCTYPE[] = { + ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; +static const char KW_ELEMENT[] = { + ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; +static const char KW_EMPTY[] = { + ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; +static const char KW_ENTITIES[] = { + ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, + '\0' }; +static const char KW_ENTITY[] = { + ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; +static const char KW_FIXED[] = { + ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; +static const char KW_ID[] = { + ASCII_I, ASCII_D, '\0' }; +static const char KW_IDREF[] = { + ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; +static const char KW_IDREFS[] = { + ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; +#ifdef XML_DTD +static const char KW_IGNORE[] = { + ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; +#endif +static const char KW_IMPLIED[] = { + ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; +#ifdef XML_DTD +static const char KW_INCLUDE[] = { + ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; +#endif +static const char KW_NDATA[] = { + ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_NMTOKEN[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; +static const char KW_NMTOKENS[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, + '\0' }; +static const char KW_NOTATION[] = + { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, + '\0' }; +static const char KW_PCDATA[] = { + ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_PUBLIC[] = { + ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; +static const char KW_REQUIRED[] = { + ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, + '\0' }; +static const char KW_SYSTEM[] = { + ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; + +#ifndef MIN_BYTES_PER_CHAR +#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) +#endif + +#ifdef XML_DTD +#define setTopLevel(state) \ + ((state)->handler = ((state)->documentEntity \ + ? internalSubset \ + : externalSubset1)) +#else /* not XML_DTD */ +#define setTopLevel(state) ((state)->handler = internalSubset) +#endif /* not XML_DTD */ + +typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc); + +static PROLOG_HANDLER + prolog0, prolog1, prolog2, + doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, + internalSubset, + entity0, entity1, entity2, entity3, entity4, entity5, entity6, + entity7, entity8, entity9, entity10, + notation0, notation1, notation2, notation3, notation4, + attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, + attlist7, attlist8, attlist9, + element0, element1, element2, element3, element4, element5, element6, + element7, +#ifdef XML_DTD + externalSubset0, externalSubset1, + condSect0, condSect1, condSect2, +#endif /* XML_DTD */ + declClose, + error; + +static int FASTCALL common(PROLOG_STATE *state, int tok); + +static int PTRCALL +prolog0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + state->handler = prolog1; + return XML_ROLE_NONE; + case XML_TOK_XML_DECL: + state->handler = prolog1; + return XML_ROLE_XML_DECL; + case XML_TOK_PI: + state->handler = prolog1; + return XML_ROLE_PI; + case XML_TOK_COMMENT: + state->handler = prolog1; + return XML_ROLE_COMMENT; + case XML_TOK_BOM: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (!XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_DOCTYPE)) + break; + state->handler = doctype0; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +prolog1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_BOM: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (!XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_DOCTYPE)) + break; + state->handler = doctype0; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +prolog2(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_INSTANCE_START: + state->handler = error; + return XML_ROLE_INSTANCE_START; + } + return common(state, tok); +} + +static int PTRCALL +doctype0(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = doctype1; + return XML_ROLE_DOCTYPE_NAME; + } + return common(state, tok); +} + +static int PTRCALL +doctype1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = internalSubset; + return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = doctype3; + return XML_ROLE_DOCTYPE_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = doctype2; + return XML_ROLE_DOCTYPE_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +doctype2(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_LITERAL: + state->handler = doctype3; + return XML_ROLE_DOCTYPE_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +doctype3(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_LITERAL: + state->handler = doctype4; + return XML_ROLE_DOCTYPE_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +doctype4(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = internalSubset; + return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + } + return common(state, tok); +} + +static int PTRCALL +doctype5(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_DECL_CLOSE: + state->handler = prolog2; + return XML_ROLE_DOCTYPE_CLOSE; + } + return common(state, tok); +} + +static int PTRCALL +internalSubset(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_DECL_OPEN: + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_ENTITY)) { + state->handler = entity0; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_ATTLIST)) { + state->handler = attlist0; + return XML_ROLE_ATTLIST_NONE; + } + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_ELEMENT)) { + state->handler = element0; + return XML_ROLE_ELEMENT_NONE; + } + if (XmlNameMatchesAscii(enc, + ptr + 2 * MIN_BYTES_PER_CHAR(enc), + end, + KW_NOTATION)) { + state->handler = notation0; + return XML_ROLE_NOTATION_NONE; + } + break; + case XML_TOK_PI: + return XML_ROLE_PI; + case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; + case XML_TOK_PARAM_ENTITY_REF: + return XML_ROLE_PARAM_ENTITY_REF; + case XML_TOK_CLOSE_BRACKET: + state->handler = doctype5; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NONE: + return XML_ROLE_NONE; + } + return common(state, tok); +} + +#ifdef XML_DTD + +static int PTRCALL +externalSubset0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + state->handler = externalSubset1; + if (tok == XML_TOK_XML_DECL) + return XML_ROLE_TEXT_DECL; + return externalSubset1(state, tok, ptr, end, enc); +} + +static int PTRCALL +externalSubset1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_COND_SECT_OPEN: + state->handler = condSect0; + return XML_ROLE_NONE; + case XML_TOK_COND_SECT_CLOSE: + if (state->includeLevel == 0) + break; + state->includeLevel -= 1; + return XML_ROLE_NONE; + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_CLOSE_BRACKET: + break; + case XML_TOK_NONE: + if (state->includeLevel) + break; + return XML_ROLE_NONE; + default: + return internalSubset(state, tok, ptr, end, enc); + } + return common(state, tok); +} + +#endif /* XML_DTD */ + +static int PTRCALL +entity0(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_PERCENT: + state->handler = entity1; + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = entity2; + return XML_ROLE_GENERAL_ENTITY_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity1(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = entity7; + return XML_ROLE_PARAM_ENTITY_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = entity4; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = entity3; + return XML_ROLE_ENTITY_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +entity3(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity4; + return XML_ROLE_ENTITY_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity4(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity5; + return XML_ROLE_ENTITY_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { + state->handler = entity6; + return XML_ROLE_ENTITY_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +entity6(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_NOTATION_NAME; + } + return common(state, tok); +} + +static int PTRCALL +entity7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = entity9; + return XML_ROLE_ENTITY_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = entity8; + return XML_ROLE_ENTITY_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; + return XML_ROLE_ENTITY_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +entity8(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity9; + return XML_ROLE_ENTITY_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity9(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_LITERAL: + state->handler = entity10; + return XML_ROLE_ENTITY_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +entity10(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + } + return common(state, tok); +} + +static int PTRCALL +notation0(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_NAME: + state->handler = notation1; + return XML_ROLE_NOTATION_NAME; + } + return common(state, tok); +} + +static int PTRCALL +notation1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { + state->handler = notation3; + return XML_ROLE_NOTATION_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { + state->handler = notation2; + return XML_ROLE_NOTATION_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +notation2(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = notation4; + return XML_ROLE_NOTATION_PUBLIC_ID; + } + return common(state, tok); +} + +static int PTRCALL +notation3(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; + return XML_ROLE_NOTATION_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +notation4(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; + case XML_TOK_LITERAL: + state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; + return XML_ROLE_NOTATION_SYSTEM_ID; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_NOTATION_NO_SYSTEM_ID; + } + return common(state, tok); +} + +static int PTRCALL +attlist0(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist1; + return XML_ROLE_ATTLIST_ELEMENT_NAME; + } + return common(state, tok); +} + +static int PTRCALL +attlist1(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist2; + return XML_ROLE_ATTRIBUTE_NAME; + } + return common(state, tok); +} + +static int PTRCALL +attlist2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + { + static const char * const types[] = { + KW_CDATA, + KW_ID, + KW_IDREF, + KW_IDREFS, + KW_ENTITY, + KW_ENTITIES, + KW_NMTOKEN, + KW_NMTOKENS, + }; + int i; + for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) + if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { + state->handler = attlist8; + return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; + } + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { + state->handler = attlist5; + return XML_ROLE_ATTLIST_NONE; + } + break; + case XML_TOK_OPEN_PAREN: + state->handler = attlist3; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist3(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NMTOKEN: + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = attlist4; + return XML_ROLE_ATTRIBUTE_ENUM_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist4(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = attlist8; + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OR: + state->handler = attlist3; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist5(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OPEN_PAREN: + state->handler = attlist6; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +static int PTRCALL +attlist6(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_NAME: + state->handler = attlist7; + return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist7(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = attlist8; + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_OR: + state->handler = attlist6; + return XML_ROLE_ATTLIST_NONE; + } + return common(state, tok); +} + +/* default value */ +static int PTRCALL +attlist8(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_POUND_NAME: + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_IMPLIED)) { + state->handler = attlist1; + return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; + } + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_REQUIRED)) { + state->handler = attlist1; + return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; + } + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_FIXED)) { + state->handler = attlist9; + return XML_ROLE_ATTLIST_NONE; + } + break; + case XML_TOK_LITERAL: + state->handler = attlist1; + return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +attlist9(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ATTLIST_NONE; + case XML_TOK_LITERAL: + state->handler = attlist1; + return XML_ROLE_FIXED_ATTRIBUTE_VALUE; + } + return common(state, tok); +} + +static int PTRCALL +element0(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element1; + return XML_ROLE_ELEMENT_NAME; + } + return common(state, tok); +} + +static int PTRCALL +element1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_CONTENT_EMPTY; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_CONTENT_ANY; + } + break; + case XML_TOK_OPEN_PAREN: + state->handler = element2; + state->level = 1; + return XML_ROLE_GROUP_OPEN; + } + return common(state, tok); +} + +static int PTRCALL +element2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_POUND_NAME: + if (XmlNameMatchesAscii(enc, + ptr + MIN_BYTES_PER_CHAR(enc), + end, + KW_PCDATA)) { + state->handler = element3; + return XML_ROLE_CONTENT_PCDATA; + } + break; + case XML_TOK_OPEN_PAREN: + state->level = 2; + state->handler = element6; + return XML_ROLE_GROUP_OPEN; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT; + case XML_TOK_NAME_QUESTION: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_OPT; + case XML_TOK_NAME_ASTERISK: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_REP; + case XML_TOK_NAME_PLUS: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_PLUS; + } + return common(state, tok); +} + +static int PTRCALL +element3(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_OR: + state->handler = element4; + return XML_ROLE_ELEMENT_NONE; + } + return common(state, tok); +} + +static int PTRCALL +element4(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element5; + return XML_ROLE_CONTENT_ELEMENT; + } + return common(state, tok); +} + +static int PTRCALL +element5(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_OR: + state->handler = element4; + return XML_ROLE_ELEMENT_NONE; + } + return common(state, tok); +} + +static int PTRCALL +element6(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_OPEN_PAREN: + state->level += 1; + return XML_ROLE_GROUP_OPEN; + case XML_TOK_NAME: + case XML_TOK_PREFIXED_NAME: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT; + case XML_TOK_NAME_QUESTION: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_OPT; + case XML_TOK_NAME_ASTERISK: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_REP; + case XML_TOK_NAME_PLUS: + state->handler = element7; + return XML_ROLE_CONTENT_ELEMENT_PLUS; + } + return common(state, tok); +} + +static int PTRCALL +element7(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_ELEMENT_NONE; + case XML_TOK_CLOSE_PAREN: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE; + case XML_TOK_CLOSE_PAREN_ASTERISK: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_REP; + case XML_TOK_CLOSE_PAREN_QUESTION: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_OPT; + case XML_TOK_CLOSE_PAREN_PLUS: + state->level -= 1; + if (state->level == 0) { + state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } + return XML_ROLE_GROUP_CLOSE_PLUS; + case XML_TOK_COMMA: + state->handler = element6; + return XML_ROLE_GROUP_SEQUENCE; + case XML_TOK_OR: + state->handler = element6; + return XML_ROLE_GROUP_CHOICE; + } + return common(state, tok); +} + +#ifdef XML_DTD + +static int PTRCALL +condSect0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_NAME: + if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { + state->handler = condSect1; + return XML_ROLE_NONE; + } + if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { + state->handler = condSect2; + return XML_ROLE_NONE; + } + break; + } + return common(state, tok); +} + +static int PTRCALL +condSect1(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = externalSubset1; + state->includeLevel += 1; + return XML_ROLE_NONE; + } + return common(state, tok); +} + +static int PTRCALL +condSect2(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NONE; + case XML_TOK_OPEN_BRACKET: + state->handler = externalSubset1; + return XML_ROLE_IGNORE_SECT; + } + return common(state, tok); +} + +#endif /* XML_DTD */ + +static int PTRCALL +declClose(PROLOG_STATE *state, + int tok, + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return state->role_none; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return state->role_none; + } + return common(state, tok); +} + +static int PTRCALL +error(PROLOG_STATE *UNUSED_P(state), + int UNUSED_P(tok), + const char *UNUSED_P(ptr), + const char *UNUSED_P(end), + const ENCODING *UNUSED_P(enc)) +{ + return XML_ROLE_NONE; +} + +static int FASTCALL +common(PROLOG_STATE *state, int tok) +{ +#ifdef XML_DTD + if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) + return XML_ROLE_INNER_PARAM_ENTITY_REF; +#endif + state->handler = error; + return XML_ROLE_ERROR; +} + +void +XmlPrologStateInit(PROLOG_STATE *state) +{ + state->handler = prolog0; +#ifdef XML_DTD + state->documentEntity = 1; + state->includeLevel = 0; + state->inEntityValue = 0; +#endif /* XML_DTD */ +} + +#ifdef XML_DTD + +void +XmlPrologStateInitExternalEntity(PROLOG_STATE *state) +{ + state->handler = externalSubset0; + state->documentEntity = 0; + state->includeLevel = 0; +} + +#endif /* XML_DTD */ diff --git a/vendor/libexpat/lib/xmlrole.h b/vendor/libexpat/lib/xmlrole.h new file mode 100644 index 0000000..4dd9f06 --- /dev/null +++ b/vendor/libexpat/lib/xmlrole.h @@ -0,0 +1,114 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef XmlRole_INCLUDED +#define XmlRole_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt +#endif + +#include "xmltok.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + XML_ROLE_ERROR = -1, + XML_ROLE_NONE = 0, + XML_ROLE_XML_DECL, + XML_ROLE_INSTANCE_START, + XML_ROLE_DOCTYPE_NONE, + XML_ROLE_DOCTYPE_NAME, + XML_ROLE_DOCTYPE_SYSTEM_ID, + XML_ROLE_DOCTYPE_PUBLIC_ID, + XML_ROLE_DOCTYPE_INTERNAL_SUBSET, + XML_ROLE_DOCTYPE_CLOSE, + XML_ROLE_GENERAL_ENTITY_NAME, + XML_ROLE_PARAM_ENTITY_NAME, + XML_ROLE_ENTITY_NONE, + XML_ROLE_ENTITY_VALUE, + XML_ROLE_ENTITY_SYSTEM_ID, + XML_ROLE_ENTITY_PUBLIC_ID, + XML_ROLE_ENTITY_COMPLETE, + XML_ROLE_ENTITY_NOTATION_NAME, + XML_ROLE_NOTATION_NONE, + XML_ROLE_NOTATION_NAME, + XML_ROLE_NOTATION_SYSTEM_ID, + XML_ROLE_NOTATION_NO_SYSTEM_ID, + XML_ROLE_NOTATION_PUBLIC_ID, + XML_ROLE_ATTRIBUTE_NAME, + XML_ROLE_ATTRIBUTE_TYPE_CDATA, + XML_ROLE_ATTRIBUTE_TYPE_ID, + XML_ROLE_ATTRIBUTE_TYPE_IDREF, + XML_ROLE_ATTRIBUTE_TYPE_IDREFS, + XML_ROLE_ATTRIBUTE_TYPE_ENTITY, + XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, + XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, + XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, + XML_ROLE_ATTRIBUTE_ENUM_VALUE, + XML_ROLE_ATTRIBUTE_NOTATION_VALUE, + XML_ROLE_ATTLIST_NONE, + XML_ROLE_ATTLIST_ELEMENT_NAME, + XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, + XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, + XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, + XML_ROLE_FIXED_ATTRIBUTE_VALUE, + XML_ROLE_ELEMENT_NONE, + XML_ROLE_ELEMENT_NAME, + XML_ROLE_CONTENT_ANY, + XML_ROLE_CONTENT_EMPTY, + XML_ROLE_CONTENT_PCDATA, + XML_ROLE_GROUP_OPEN, + XML_ROLE_GROUP_CLOSE, + XML_ROLE_GROUP_CLOSE_REP, + XML_ROLE_GROUP_CLOSE_OPT, + XML_ROLE_GROUP_CLOSE_PLUS, + XML_ROLE_GROUP_CHOICE, + XML_ROLE_GROUP_SEQUENCE, + XML_ROLE_CONTENT_ELEMENT, + XML_ROLE_CONTENT_ELEMENT_REP, + XML_ROLE_CONTENT_ELEMENT_OPT, + XML_ROLE_CONTENT_ELEMENT_PLUS, + XML_ROLE_PI, + XML_ROLE_COMMENT, +#ifdef XML_DTD + XML_ROLE_TEXT_DECL, + XML_ROLE_IGNORE_SECT, + XML_ROLE_INNER_PARAM_ENTITY_REF, +#endif /* XML_DTD */ + XML_ROLE_PARAM_ENTITY_REF +}; + +typedef struct prolog_state { + int (PTRCALL *handler) (struct prolog_state *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc); + unsigned level; + int role_none; +#ifdef XML_DTD + unsigned includeLevel; + int documentEntity; + int inEntityValue; +#endif /* XML_DTD */ +} PROLOG_STATE; + +void XmlPrologStateInit(PROLOG_STATE *); +#ifdef XML_DTD +void XmlPrologStateInitExternalEntity(PROLOG_STATE *); +#endif /* XML_DTD */ + +#define XmlTokenRole(state, tok, ptr, end, enc) \ + (((state)->handler)(state, tok, ptr, end, enc)) + +#ifdef __cplusplus +} +#endif + +#endif /* not XmlRole_INCLUDED */ diff --git a/vendor/libexpat/lib/xmltok.c b/vendor/libexpat/lib/xmltok.c new file mode 100644 index 0000000..a29d9e2 --- /dev/null +++ b/vendor/libexpat/lib/xmltok.c @@ -0,0 +1,1751 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include + +#ifdef WIN32 +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include +#endif +#endif /* ndef WIN32 */ + +#include "expat_external.h" +#include "internal.h" +#include "xmltok.h" +#include "nametab.h" + +#ifdef XML_DTD +#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) +#else +#define IGNORE_SECTION_TOK_VTABLE /* as nothing */ +#endif + +#define VTABLE1 \ + { PREFIX(prologTok), PREFIX(contentTok), \ + PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ + { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ + PREFIX(sameName), \ + PREFIX(nameMatchesAscii), \ + PREFIX(nameLength), \ + PREFIX(skipS), \ + PREFIX(getAtts), \ + PREFIX(charRefNumber), \ + PREFIX(predefinedEntityName), \ + PREFIX(updatePosition), \ + PREFIX(isPublicId) + +#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) + +#define UCS2_GET_NAMING(pages, hi, lo) \ + (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1u << ((lo) & 0x1F))) + +/* A 2 byte UTF-8 representation splits the characters 11 bits between + the bottom 5 and 6 bits of the bytes. We need 8 bits to index into + pages, 3 bits to add to that index and 5 bits to generate the mask. +*/ +#define UTF8_GET_NAMING2(pages, byte) \ + (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ + + ((((byte)[0]) & 3) << 1) \ + + ((((byte)[1]) >> 5) & 1)] \ + & (1u << (((byte)[1]) & 0x1F))) + +/* A 3 byte UTF-8 representation splits the characters 16 bits between + the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index + into pages, 3 bits to add to that index and 5 bits to generate the + mask. +*/ +#define UTF8_GET_NAMING3(pages, byte) \ + (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ + + ((((byte)[1]) >> 2) & 0xF)] \ + << 3) \ + + ((((byte)[1]) & 3) << 1) \ + + ((((byte)[2]) >> 5) & 1)] \ + & (1u << (((byte)[2]) & 0x1F))) + +#define UTF8_GET_NAMING(pages, p, n) \ + ((n) == 2 \ + ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ + : ((n) == 3 \ + ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ + : 0)) + +/* Detection of invalid UTF-8 sequences is based on Table 3.1B + of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ + with the additional restriction of not allowing the Unicode + code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). + Implementation details: + (A & 0x80) == 0 means A < 0x80 + and + (A & 0xC0) == 0xC0 means A > 0xBF +*/ + +#define UTF8_INVALID2(p) \ + ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) + +#define UTF8_INVALID3(p) \ + (((p)[2] & 0x80) == 0 \ + || \ + ((*p) == 0xEF && (p)[1] == 0xBF \ + ? \ + (p)[2] > 0xBD \ + : \ + ((p)[2] & 0xC0) == 0xC0) \ + || \ + ((*p) == 0xE0 \ + ? \ + (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ + : \ + ((p)[1] & 0x80) == 0 \ + || \ + ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) + +#define UTF8_INVALID4(p) \ + (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ + || \ + ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ + || \ + ((*p) == 0xF0 \ + ? \ + (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ + : \ + ((p)[1] & 0x80) == 0 \ + || \ + ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) + +static int PTRFASTCALL +isNever(const ENCODING *UNUSED_P(enc), const char *UNUSED_P(p)) +{ + return 0; +} + +static int PTRFASTCALL +utf8_isName2(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isName3(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); +} + +#define utf8_isName4 isNever + +static int PTRFASTCALL +utf8_isNmstrt2(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isNmstrt3(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); +} + +#define utf8_isNmstrt4 isNever + +static int PTRFASTCALL +utf8_isInvalid2(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_INVALID2((const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isInvalid3(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_INVALID3((const unsigned char *)p); +} + +static int PTRFASTCALL +utf8_isInvalid4(const ENCODING *UNUSED_P(enc), const char *p) +{ + return UTF8_INVALID4((const unsigned char *)p); +} + +struct normal_encoding { + ENCODING enc; + unsigned char type[256]; +#ifdef XML_MIN_SIZE + int (PTRFASTCALL *byteType)(const ENCODING *, const char *); + int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); + int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); + int (PTRCALL *charMatches)(const ENCODING *, const char *, int); +#endif /* XML_MIN_SIZE */ + int (PTRFASTCALL *isName2)(const ENCODING *, const char *); + int (PTRFASTCALL *isName3)(const ENCODING *, const char *); + int (PTRFASTCALL *isName4)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); +}; + +#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) + +#ifdef XML_MIN_SIZE + +#define STANDARD_VTABLE(E) \ + E ## byteType, \ + E ## isNameMin, \ + E ## isNmstrtMin, \ + E ## byteToAscii, \ + E ## charMatches, + +#else + +#define STANDARD_VTABLE(E) /* as nothing */ + +#endif + +#define NORMAL_VTABLE(E) \ + E ## isName2, \ + E ## isName3, \ + E ## isName4, \ + E ## isNmstrt2, \ + E ## isNmstrt3, \ + E ## isNmstrt4, \ + E ## isInvalid2, \ + E ## isInvalid3, \ + E ## isInvalid4 + +#define NULL_VTABLE \ + /* isName2 */ NULL, \ + /* isName3 */ NULL, \ + /* isName4 */ NULL, \ + /* isNmstrt2 */ NULL, \ + /* isNmstrt3 */ NULL, \ + /* isNmstrt4 */ NULL, \ + /* isInvalid2 */ NULL, \ + /* isInvalid3 */ NULL, \ + /* isInvalid4 */ NULL + +static int FASTCALL checkCharRefNumber(int); + +#include "xmltok_impl.h" +#include "ascii.h" + +#ifdef XML_MIN_SIZE +#define sb_isNameMin isNever +#define sb_isNmstrtMin isNever +#endif + +#ifdef XML_MIN_SIZE +#define MINBPC(enc) ((enc)->minBytesPerChar) +#else +/* minimum bytes per character */ +#define MINBPC(enc) 1 +#endif + +#define SB_BYTE_TYPE(enc, p) \ + (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) + +#ifdef XML_MIN_SIZE +static int PTRFASTCALL +sb_byteType(const ENCODING *enc, const char *p) +{ + return SB_BYTE_TYPE(enc, p); +} +#define BYTE_TYPE(enc, p) \ + (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) +#else +#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) +#endif + +#ifdef XML_MIN_SIZE +#define BYTE_TO_ASCII(enc, p) \ + (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) +static int PTRFASTCALL +sb_byteToAscii(const ENCODING *enc, const char *p) +{ + return *p; +} +#else +#define BYTE_TO_ASCII(enc, p) (*(p)) +#endif + +#define IS_NAME_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) +#define IS_NMSTRT_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) +#define IS_INVALID_CHAR(enc, p, n) \ + (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) + +#ifdef XML_MIN_SIZE +#define IS_NAME_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) \ + (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) +#else +#define IS_NAME_CHAR_MINBPC(enc, p) (0) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) +#endif + +#ifdef XML_MIN_SIZE +#define CHAR_MATCHES(enc, p, c) \ + (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) +static int PTRCALL +sb_charMatches(const ENCODING *enc, const char *p, int c) +{ + return *p == c; +} +#else +/* c is an ASCII character */ +#define CHAR_MATCHES(enc, p, c) (*(p) == c) +#endif + +#define PREFIX(ident) normal_ ## ident +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ + UTF8_cval1 = 0x00, + UTF8_cval2 = 0xc0, + UTF8_cval3 = 0xe0, + UTF8_cval4 = 0xf0 +}; + +void +align_limit_to_full_utf8_characters(const char * from, const char ** fromLimRef) +{ + const char * fromLim = *fromLimRef; + size_t walked = 0; + for (; fromLim > from; fromLim--, walked++) { + const unsigned char prev = (unsigned char)fromLim[-1]; + if ((prev & 0xf8u) == 0xf0u) { /* 4-byte character, lead by 0b11110xxx byte */ + if (walked + 1 >= 4) { + fromLim += 4 - 1; + break; + } else { + walked = 0; + } + } else if ((prev & 0xf0u) == 0xe0u) { /* 3-byte character, lead by 0b1110xxxx byte */ + if (walked + 1 >= 3) { + fromLim += 3 - 1; + break; + } else { + walked = 0; + } + } else if ((prev & 0xe0u) == 0xc0u) { /* 2-byte character, lead by 0b110xxxxx byte */ + if (walked + 1 >= 2) { + fromLim += 2 - 1; + break; + } else { + walked = 0; + } + } else if ((prev & 0x80u) == 0x00u) { /* 1-byte character, matching 0b0xxxxxxx */ + break; + } + } + *fromLimRef = fromLim; +} + +static enum XML_Convert_Result PTRCALL +utf8_toUtf8(const ENCODING *UNUSED_P(enc), + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + enum XML_Convert_Result res = XML_CONVERT_COMPLETED; + char *to; + const char *from; + if (fromLim - *fromP > toLim - *toP) { + /* Avoid copying partial characters. */ + res = XML_CONVERT_OUTPUT_EXHAUSTED; + fromLim = *fromP + (toLim - *toP); + align_limit_to_full_utf8_characters(*fromP, &fromLim); + } + for (to = *toP, from = *fromP; (from < fromLim) && (to < toLim); from++, to++) + *to = *from; + *fromP = from; + *toP = to; + + if ((to == toLim) && (from < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return res; +} + +static enum XML_Convert_Result PTRCALL +utf8_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) +{ + enum XML_Convert_Result res = XML_CONVERT_COMPLETED; + unsigned short *to = *toP; + const char *from = *fromP; + while (from < fromLim && to < toLim) { + switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { + case BT_LEAD2: + if (fromLim - from < 2) { + res = XML_CONVERT_INPUT_INCOMPLETE; + break; + } + *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); + from += 2; + break; + case BT_LEAD3: + if (fromLim - from < 3) { + res = XML_CONVERT_INPUT_INCOMPLETE; + break; + } + *to++ = (unsigned short)(((from[0] & 0xf) << 12) + | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); + from += 3; + break; + case BT_LEAD4: + { + unsigned long n; + if (toLim - to < 2) { + res = XML_CONVERT_OUTPUT_EXHAUSTED; + goto after; + } + if (fromLim - from < 4) { + res = XML_CONVERT_INPUT_INCOMPLETE; + goto after; + } + n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) + | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); + n -= 0x10000; + to[0] = (unsigned short)((n >> 10) | 0xD800); + to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); + to += 2; + from += 4; + } + break; + default: + *to++ = *from++; + break; + } + } +after: + *fromP = from; + *toP = to; + return res; +} + +#ifdef XML_NS +static const struct normal_encoding utf8_encoding_ns = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#include "asciitab.h" +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; +#endif + +static const struct normal_encoding utf8_encoding = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; + +#ifdef XML_NS + +static const struct normal_encoding internal_utf8_encoding_ns = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#include "iasciitab.h" +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; + +#endif + +static const struct normal_encoding internal_utf8_encoding = { + { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "utf8tab.h" + }, + STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) +}; + +static enum XML_Convert_Result PTRCALL +latin1_toUtf8(const ENCODING *UNUSED_P(enc), + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + for (;;) { + unsigned char c; + if (*fromP == fromLim) + return XML_CONVERT_COMPLETED; + c = (unsigned char)**fromP; + if (c & 0x80) { + if (toLim - *toP < 2) + return XML_CONVERT_OUTPUT_EXHAUSTED; + *(*toP)++ = (char)((c >> 6) | UTF8_cval2); + *(*toP)++ = (char)((c & 0x3f) | 0x80); + (*fromP)++; + } + else { + if (*toP == toLim) + return XML_CONVERT_OUTPUT_EXHAUSTED; + *(*toP)++ = *(*fromP)++; + } + } +} + +static enum XML_Convert_Result PTRCALL +latin1_toUtf16(const ENCODING *UNUSED_P(enc), + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) +{ + while (*fromP < fromLim && *toP < toLim) + *(*toP)++ = (unsigned char)*(*fromP)++; + + if ((*toP == toLim) && (*fromP < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return XML_CONVERT_COMPLETED; +} + +#ifdef XML_NS + +static const struct normal_encoding latin1_encoding_ns = { + { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, + { +#include "asciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) NULL_VTABLE +}; + +#endif + +static const struct normal_encoding latin1_encoding = { + { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(sb_) NULL_VTABLE +}; + +static enum XML_Convert_Result PTRCALL +ascii_toUtf8(const ENCODING *UNUSED_P(enc), + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + while (*fromP < fromLim && *toP < toLim) + *(*toP)++ = *(*fromP)++; + + if ((*toP == toLim) && (*fromP < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return XML_CONVERT_COMPLETED; +} + +#ifdef XML_NS + +static const struct normal_encoding ascii_encoding_ns = { + { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, + { +#include "asciitab.h" +/* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) NULL_VTABLE +}; + +#endif + +static const struct normal_encoding ascii_encoding = { + { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +/* BT_NONXML == 0 */ + }, + STANDARD_VTABLE(sb_) NULL_VTABLE +}; + +static int PTRFASTCALL +unicode_byte_type(char hi, char lo) +{ + switch ((unsigned char)hi) { + case 0xD8: case 0xD9: case 0xDA: case 0xDB: + return BT_LEAD4; + case 0xDC: case 0xDD: case 0xDE: case 0xDF: + return BT_TRAIL; + case 0xFF: + switch ((unsigned char)lo) { + case 0xFF: + case 0xFE: + return BT_NONXML; + } + break; + } + return BT_NONASCII; +} + +#define DEFINE_UTF16_TO_UTF8(E) \ +static enum XML_Convert_Result PTRCALL \ +E ## toUtf8(const ENCODING *UNUSED_P(enc), \ + const char **fromP, const char *fromLim, \ + char **toP, const char *toLim) \ +{ \ + const char *from = *fromP; \ + fromLim = from + (((fromLim - from) >> 1) << 1); /* shrink to even */ \ + for (; from < fromLim; from += 2) { \ + int plane; \ + unsigned char lo2; \ + unsigned char lo = GET_LO(from); \ + unsigned char hi = GET_HI(from); \ + switch (hi) { \ + case 0: \ + if (lo < 0x80) { \ + if (*toP == toLim) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = lo; \ + break; \ + } \ + /* fall through */ \ + case 0x1: case 0x2: case 0x3: \ + case 0x4: case 0x5: case 0x6: case 0x7: \ + if (toLim - *toP < 2) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + default: \ + if (toLim - *toP < 3) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ + *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ + *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ + *(*toP)++ = ((lo & 0x3f) | 0x80); \ + break; \ + case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ + if (toLim - *toP < 4) { \ + *fromP = from; \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + } \ + if (fromLim - from < 4) { \ + *fromP = from; \ + return XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ + *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ + *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ + from += 2; \ + lo2 = GET_LO(from); \ + *(*toP)++ = (((lo & 0x3) << 4) \ + | ((GET_HI(from) & 0x3) << 2) \ + | (lo2 >> 6) \ + | 0x80); \ + *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ + break; \ + } \ + } \ + *fromP = from; \ + if (from < fromLim) \ + return XML_CONVERT_INPUT_INCOMPLETE; \ + else \ + return XML_CONVERT_COMPLETED; \ +} + +#define DEFINE_UTF16_TO_UTF16(E) \ +static enum XML_Convert_Result PTRCALL \ +E ## toUtf16(const ENCODING *UNUSED_P(enc), \ + const char **fromP, const char *fromLim, \ + unsigned short **toP, const unsigned short *toLim) \ +{ \ + enum XML_Convert_Result res = XML_CONVERT_COMPLETED; \ + fromLim = *fromP + (((fromLim - *fromP) >> 1) << 1); /* shrink to even */ \ + /* Avoid copying first half only of surrogate */ \ + if (fromLim - *fromP > ((toLim - *toP) << 1) \ + && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) { \ + fromLim -= 2; \ + res = XML_CONVERT_INPUT_INCOMPLETE; \ + } \ + for (; *fromP < fromLim && *toP < toLim; *fromP += 2) \ + *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ + if ((*toP == toLim) && (*fromP < fromLim)) \ + return XML_CONVERT_OUTPUT_EXHAUSTED; \ + else \ + return res; \ +} + +#define SET2(ptr, ch) \ + (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) +#define GET_LO(ptr) ((unsigned char)(ptr)[0]) +#define GET_HI(ptr) ((unsigned char)(ptr)[1]) + +DEFINE_UTF16_TO_UTF8(little2_) +DEFINE_UTF16_TO_UTF16(little2_) + +#undef SET2 +#undef GET_LO +#undef GET_HI + +#define SET2(ptr, ch) \ + (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) +#define GET_LO(ptr) ((unsigned char)(ptr)[1]) +#define GET_HI(ptr) ((unsigned char)(ptr)[0]) + +DEFINE_UTF16_TO_UTF8(big2_) +DEFINE_UTF16_TO_UTF16(big2_) + +#undef SET2 +#undef GET_LO +#undef GET_HI + +#define LITTLE2_BYTE_TYPE(enc, p) \ + ((p)[1] == 0 \ + ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ + : unicode_byte_type((p)[1], (p)[0])) +#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) +#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) +#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) +#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) + +#ifdef XML_MIN_SIZE + +static int PTRFASTCALL +little2_byteType(const ENCODING *enc, const char *p) +{ + return LITTLE2_BYTE_TYPE(enc, p); +} + +static int PTRFASTCALL +little2_byteToAscii(const ENCODING *enc, const char *p) +{ + return LITTLE2_BYTE_TO_ASCII(enc, p); +} + +static int PTRCALL +little2_charMatches(const ENCODING *enc, const char *p, int c) +{ + return LITTLE2_CHAR_MATCHES(enc, p, c); +} + +static int PTRFASTCALL +little2_isNameMin(const ENCODING *enc, const char *p) +{ + return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); +} + +static int PTRFASTCALL +little2_isNmstrtMin(const ENCODING *enc, const char *p) +{ + return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); +} + +#undef VTABLE +#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 + +#else /* not XML_MIN_SIZE */ + +#undef PREFIX +#define PREFIX(ident) little2_ ## ident +#define MINBPC(enc) 2 +/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ +#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) +#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) +#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) +#define IS_NAME_CHAR(enc, p, n) 0 +#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) +#define IS_NMSTRT_CHAR(enc, p, n) (0) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) + +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +#endif /* not XML_MIN_SIZE */ + +#ifdef XML_NS + +static const struct normal_encoding little2_encoding_ns = { + { VTABLE, 2, 0, +#if BYTEORDER == 1234 + 1 +#else + 0 +#endif + }, + { +#include "asciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE +}; + +#endif + +static const struct normal_encoding little2_encoding = { + { VTABLE, 2, 0, +#if BYTEORDER == 1234 + 1 +#else + 0 +#endif + }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE +}; + +#if BYTEORDER != 4321 + +#ifdef XML_NS + +static const struct normal_encoding internal_little2_encoding_ns = { + { VTABLE, 2, 0, 1 }, + { +#include "iasciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE +}; + +#endif + +static const struct normal_encoding internal_little2_encoding = { + { VTABLE, 2, 0, 1 }, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(little2_) NULL_VTABLE +}; + +#endif + + +#define BIG2_BYTE_TYPE(enc, p) \ + ((p)[0] == 0 \ + ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ + : unicode_byte_type((p)[0], (p)[1])) +#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) +#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) +#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) +#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ + UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) + +#ifdef XML_MIN_SIZE + +static int PTRFASTCALL +big2_byteType(const ENCODING *enc, const char *p) +{ + return BIG2_BYTE_TYPE(enc, p); +} + +static int PTRFASTCALL +big2_byteToAscii(const ENCODING *enc, const char *p) +{ + return BIG2_BYTE_TO_ASCII(enc, p); +} + +static int PTRCALL +big2_charMatches(const ENCODING *enc, const char *p, int c) +{ + return BIG2_CHAR_MATCHES(enc, p, c); +} + +static int PTRFASTCALL +big2_isNameMin(const ENCODING *enc, const char *p) +{ + return BIG2_IS_NAME_CHAR_MINBPC(enc, p); +} + +static int PTRFASTCALL +big2_isNmstrtMin(const ENCODING *enc, const char *p) +{ + return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); +} + +#undef VTABLE +#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 + +#else /* not XML_MIN_SIZE */ + +#undef PREFIX +#define PREFIX(ident) big2_ ## ident +#define MINBPC(enc) 2 +/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ +#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) +#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) +#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) +#define IS_NAME_CHAR(enc, p, n) 0 +#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) +#define IS_NMSTRT_CHAR(enc, p, n) (0) +#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) + +#define XML_TOK_IMPL_C +#include "xmltok_impl.c" +#undef XML_TOK_IMPL_C + +#undef MINBPC +#undef BYTE_TYPE +#undef BYTE_TO_ASCII +#undef CHAR_MATCHES +#undef IS_NAME_CHAR +#undef IS_NAME_CHAR_MINBPC +#undef IS_NMSTRT_CHAR +#undef IS_NMSTRT_CHAR_MINBPC +#undef IS_INVALID_CHAR + +#endif /* not XML_MIN_SIZE */ + +#ifdef XML_NS + +static const struct normal_encoding big2_encoding_ns = { + { VTABLE, 2, 0, +#if BYTEORDER == 4321 + 1 +#else + 0 +#endif + }, + { +#include "asciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE +}; + +#endif + +static const struct normal_encoding big2_encoding = { + { VTABLE, 2, 0, +#if BYTEORDER == 4321 + 1 +#else + 0 +#endif + }, + { +#define BT_COLON BT_NMSTRT +#include "asciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE +}; + +#if BYTEORDER != 1234 + +#ifdef XML_NS + +static const struct normal_encoding internal_big2_encoding_ns = { + { VTABLE, 2, 0, 1 }, + { +#include "iasciitab.h" +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE +}; + +#endif + +static const struct normal_encoding internal_big2_encoding = { + { VTABLE, 2, 0, 1 }, + { +#define BT_COLON BT_NMSTRT +#include "iasciitab.h" +#undef BT_COLON +#include "latin1tab.h" + }, + STANDARD_VTABLE(big2_) NULL_VTABLE +}; + +#endif + +#undef PREFIX + +static int FASTCALL +streqci(const char *s1, const char *s2) +{ + for (;;) { + char c1 = *s1++; + char c2 = *s2++; + if (ASCII_a <= c1 && c1 <= ASCII_z) + c1 += ASCII_A - ASCII_a; + if (ASCII_a <= c2 && c2 <= ASCII_z) + c2 += ASCII_A - ASCII_a; + if (c1 != c2) + return 0; + if (!c1) + break; + } + return 1; +} + +static void PTRCALL +initUpdatePosition(const ENCODING *UNUSED_P(enc), const char *ptr, + const char *end, POSITION *pos) +{ + normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); +} + +static int +toAscii(const ENCODING *enc, const char *ptr, const char *end) +{ + char buf[1]; + char *p = buf; + XmlUtf8Convert(enc, &ptr, end, &p, p + 1); + if (p == buf) + return -1; + else + return buf[0]; +} + +static int FASTCALL +isSpace(int c) +{ + switch (c) { + case 0x20: + case 0xD: + case 0xA: + case 0x9: + return 1; + } + return 0; +} + +/* Return 1 if there's just optional white space or there's an S + followed by name=val. +*/ +static int +parsePseudoAttribute(const ENCODING *enc, + const char *ptr, + const char *end, + const char **namePtr, + const char **nameEndPtr, + const char **valPtr, + const char **nextTokPtr) +{ + int c; + char open; + if (ptr == end) { + *namePtr = NULL; + return 1; + } + if (!isSpace(toAscii(enc, ptr, end))) { + *nextTokPtr = ptr; + return 0; + } + do { + ptr += enc->minBytesPerChar; + } while (isSpace(toAscii(enc, ptr, end))); + if (ptr == end) { + *namePtr = NULL; + return 1; + } + *namePtr = ptr; + for (;;) { + c = toAscii(enc, ptr, end); + if (c == -1) { + *nextTokPtr = ptr; + return 0; + } + if (c == ASCII_EQUALS) { + *nameEndPtr = ptr; + break; + } + if (isSpace(c)) { + *nameEndPtr = ptr; + do { + ptr += enc->minBytesPerChar; + } while (isSpace(c = toAscii(enc, ptr, end))); + if (c != ASCII_EQUALS) { + *nextTokPtr = ptr; + return 0; + } + break; + } + ptr += enc->minBytesPerChar; + } + if (ptr == *namePtr) { + *nextTokPtr = ptr; + return 0; + } + ptr += enc->minBytesPerChar; + c = toAscii(enc, ptr, end); + while (isSpace(c)) { + ptr += enc->minBytesPerChar; + c = toAscii(enc, ptr, end); + } + if (c != ASCII_QUOT && c != ASCII_APOS) { + *nextTokPtr = ptr; + return 0; + } + open = (char)c; + ptr += enc->minBytesPerChar; + *valPtr = ptr; + for (;; ptr += enc->minBytesPerChar) { + c = toAscii(enc, ptr, end); + if (c == open) + break; + if (!(ASCII_a <= c && c <= ASCII_z) + && !(ASCII_A <= c && c <= ASCII_Z) + && !(ASCII_0 <= c && c <= ASCII_9) + && c != ASCII_PERIOD + && c != ASCII_MINUS + && c != ASCII_UNDERSCORE) { + *nextTokPtr = ptr; + return 0; + } + } + *nextTokPtr = ptr + enc->minBytesPerChar; + return 1; +} + +static const char KW_version[] = { + ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' +}; + +static const char KW_encoding[] = { + ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' +}; + +static const char KW_standalone[] = { + ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, + ASCII_n, ASCII_e, '\0' +}; + +static const char KW_yes[] = { + ASCII_y, ASCII_e, ASCII_s, '\0' +}; + +static const char KW_no[] = { + ASCII_n, ASCII_o, '\0' +}; + +static int +doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, + const char *, + const char *), + int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingName, + const ENCODING **encoding, + int *standalone) +{ + const char *val = NULL; + const char *name = NULL; + const char *nameEnd = NULL; + ptr += 5 * enc->minBytesPerChar; + end -= 2 * enc->minBytesPerChar; + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) + || !name) { + *badPtr = ptr; + return 0; + } + if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { + if (!isGeneralTextEntity) { + *badPtr = name; + return 0; + } + } + else { + if (versionPtr) + *versionPtr = val; + if (versionEndPtr) + *versionEndPtr = ptr; + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; + } + if (!name) { + if (isGeneralTextEntity) { + /* a TextDecl must have an EncodingDecl */ + *badPtr = ptr; + return 0; + } + return 1; + } + } + if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { + int c = toAscii(enc, val, end); + if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { + *badPtr = val; + return 0; + } + if (encodingName) + *encodingName = val; + if (encoding) + *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { + *badPtr = ptr; + return 0; + } + if (!name) + return 1; + } + if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) + || isGeneralTextEntity) { + *badPtr = name; + return 0; + } + if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { + if (standalone) + *standalone = 1; + } + else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { + if (standalone) + *standalone = 0; + } + else { + *badPtr = val; + return 0; + } + while (isSpace(toAscii(enc, ptr, end))) + ptr += enc->minBytesPerChar; + if (ptr != end) { + *badPtr = ptr; + return 0; + } + return 1; +} + +static int FASTCALL +checkCharRefNumber(int result) +{ + switch (result >> 8) { + case 0xD8: case 0xD9: case 0xDA: case 0xDB: + case 0xDC: case 0xDD: case 0xDE: case 0xDF: + return -1; + case 0: + if (latin1_encoding.type[result] == BT_NONXML) + return -1; + break; + case 0xFF: + if (result == 0xFFFE || result == 0xFFFF) + return -1; + break; + } + return result; +} + +int FASTCALL +XmlUtf8Encode(int c, char *buf) +{ + enum { + /* minN is minimum legal resulting value for N byte sequence */ + min2 = 0x80, + min3 = 0x800, + min4 = 0x10000 + }; + + if (c < 0) + return 0; + if (c < min2) { + buf[0] = (char)(c | UTF8_cval1); + return 1; + } + if (c < min3) { + buf[0] = (char)((c >> 6) | UTF8_cval2); + buf[1] = (char)((c & 0x3f) | 0x80); + return 2; + } + if (c < min4) { + buf[0] = (char)((c >> 12) | UTF8_cval3); + buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[2] = (char)((c & 0x3f) | 0x80); + return 3; + } + if (c < 0x110000) { + buf[0] = (char)((c >> 18) | UTF8_cval4); + buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); + buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[3] = (char)((c & 0x3f) | 0x80); + return 4; + } + return 0; +} + +int FASTCALL +XmlUtf16Encode(int charNum, unsigned short *buf) +{ + if (charNum < 0) + return 0; + if (charNum < 0x10000) { + buf[0] = (unsigned short)charNum; + return 1; + } + if (charNum < 0x110000) { + charNum -= 0x10000; + buf[0] = (unsigned short)((charNum >> 10) + 0xD800); + buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); + return 2; + } + return 0; +} + +struct unknown_encoding { + struct normal_encoding normal; + CONVERTER convert; + void *userData; + unsigned short utf16[256]; + char utf8[256][4]; +}; + +#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) + +int +XmlSizeOfUnknownEncoding(void) +{ + return sizeof(struct unknown_encoding); +} + +static int PTRFASTCALL +unknown_isName(const ENCODING *enc, const char *p) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + if (c & ~0xFFFF) + return 0; + return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); +} + +static int PTRFASTCALL +unknown_isNmstrt(const ENCODING *enc, const char *p) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + if (c & ~0xFFFF) + return 0; + return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); +} + +static int PTRFASTCALL +unknown_isInvalid(const ENCODING *enc, const char *p) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); + return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; +} + +static enum XML_Convert_Result PTRCALL +unknown_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + char buf[XML_UTF8_ENCODE_MAX]; + for (;;) { + const char *utf8; + int n; + if (*fromP == fromLim) + return XML_CONVERT_COMPLETED; + utf8 = uenc->utf8[(unsigned char)**fromP]; + n = *utf8++; + if (n == 0) { + int c = uenc->convert(uenc->userData, *fromP); + n = XmlUtf8Encode(c, buf); + if (n > toLim - *toP) + return XML_CONVERT_OUTPUT_EXHAUSTED; + utf8 = buf; + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } + else { + if (n > toLim - *toP) + return XML_CONVERT_OUTPUT_EXHAUSTED; + (*fromP)++; + } + do { + *(*toP)++ = *utf8++; + } while (--n != 0); + } +} + +static enum XML_Convert_Result PTRCALL +unknown_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) +{ + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + while (*fromP < fromLim && *toP < toLim) { + unsigned short c = uenc->utf16[(unsigned char)**fromP]; + if (c == 0) { + c = (unsigned short) + uenc->convert(uenc->userData, *fromP); + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); + } + else + (*fromP)++; + *(*toP)++ = c; + } + + if ((*toP == toLim) && (*fromP < fromLim)) + return XML_CONVERT_OUTPUT_EXHAUSTED; + else + return XML_CONVERT_COMPLETED; +} + +ENCODING * +XmlInitUnknownEncoding(void *mem, + int *table, + CONVERTER convert, + void *userData) +{ + int i; + struct unknown_encoding *e = (struct unknown_encoding *)mem; + for (i = 0; i < (int)sizeof(struct normal_encoding); i++) + ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; + for (i = 0; i < 128; i++) + if (latin1_encoding.type[i] != BT_OTHER + && latin1_encoding.type[i] != BT_NONXML + && table[i] != i) + return 0; + for (i = 0; i < 256; i++) { + int c = table[i]; + if (c == -1) { + e->normal.type[i] = BT_MALFORM; + /* This shouldn't really get used. */ + e->utf16[i] = 0xFFFF; + e->utf8[i][0] = 1; + e->utf8[i][1] = 0; + } + else if (c < 0) { + if (c < -4) + return 0; + e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); + e->utf8[i][0] = 0; + e->utf16[i] = 0; + } + else if (c < 0x80) { + if (latin1_encoding.type[c] != BT_OTHER + && latin1_encoding.type[c] != BT_NONXML + && c != i) + return 0; + e->normal.type[i] = latin1_encoding.type[c]; + e->utf8[i][0] = 1; + e->utf8[i][1] = (char)c; + e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); + } + else if (checkCharRefNumber(c) < 0) { + e->normal.type[i] = BT_NONXML; + /* This shouldn't really get used. */ + e->utf16[i] = 0xFFFF; + e->utf8[i][0] = 1; + e->utf8[i][1] = 0; + } + else { + if (c > 0xFFFF) + return 0; + if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) + e->normal.type[i] = BT_NMSTRT; + else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) + e->normal.type[i] = BT_NAME; + else + e->normal.type[i] = BT_OTHER; + e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); + e->utf16[i] = (unsigned short)c; + } + } + e->userData = userData; + e->convert = convert; + if (convert) { + e->normal.isName2 = unknown_isName; + e->normal.isName3 = unknown_isName; + e->normal.isName4 = unknown_isName; + e->normal.isNmstrt2 = unknown_isNmstrt; + e->normal.isNmstrt3 = unknown_isNmstrt; + e->normal.isNmstrt4 = unknown_isNmstrt; + e->normal.isInvalid2 = unknown_isInvalid; + e->normal.isInvalid3 = unknown_isInvalid; + e->normal.isInvalid4 = unknown_isInvalid; + } + e->normal.enc.utf8Convert = unknown_toUtf8; + e->normal.enc.utf16Convert = unknown_toUtf16; + return &(e->normal.enc); +} + +/* If this enumeration is changed, getEncodingIndex and encodings +must also be changed. */ +enum { + UNKNOWN_ENC = -1, + ISO_8859_1_ENC = 0, + US_ASCII_ENC, + UTF_8_ENC, + UTF_16_ENC, + UTF_16BE_ENC, + UTF_16LE_ENC, + /* must match encodingNames up to here */ + NO_ENC +}; + +static const char KW_ISO_8859_1[] = { + ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, + ASCII_MINUS, ASCII_1, '\0' +}; +static const char KW_US_ASCII[] = { + ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, + '\0' +}; +static const char KW_UTF_8[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' +}; +static const char KW_UTF_16[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' +}; +static const char KW_UTF_16BE[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, + '\0' +}; +static const char KW_UTF_16LE[] = { + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, + '\0' +}; + +static int FASTCALL +getEncodingIndex(const char *name) +{ + static const char * const encodingNames[] = { + KW_ISO_8859_1, + KW_US_ASCII, + KW_UTF_8, + KW_UTF_16, + KW_UTF_16BE, + KW_UTF_16LE, + }; + int i; + if (name == NULL) + return NO_ENC; + for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) + if (streqci(name, encodingNames[i])) + return i; + return UNKNOWN_ENC; +} + +/* For binary compatibility, we store the index of the encoding + specified at initialization in the isUtf16 member. +*/ + +#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) +#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) + +/* This is what detects the encoding. encodingTable maps from + encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of + the external (protocol) specified encoding; state is + XML_CONTENT_STATE if we're parsing an external text entity, and + XML_PROLOG_STATE otherwise. +*/ + + +static int +initScan(const ENCODING * const *encodingTable, + const INIT_ENCODING *enc, + int state, + const char *ptr, + const char *end, + const char **nextTokPtr) +{ + const ENCODING **encPtr; + + if (ptr >= end) + return XML_TOK_NONE; + encPtr = enc->encPtr; + if (ptr + 1 == end) { + /* only a single byte available for auto-detection */ +#ifndef XML_DTD /* FIXME */ + /* a well-formed document entity must have more than one byte */ + if (state != XML_CONTENT_STATE) + return XML_TOK_PARTIAL; +#endif + /* so we're parsing an external text entity... */ + /* if UTF-16 was externally specified, then we need at least 2 bytes */ + switch (INIT_ENC_INDEX(enc)) { + case UTF_16_ENC: + case UTF_16LE_ENC: + case UTF_16BE_ENC: + return XML_TOK_PARTIAL; + } + switch ((unsigned char)*ptr) { + case 0xFE: + case 0xFF: + case 0xEF: /* possibly first byte of UTF-8 BOM */ + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC + && state == XML_CONTENT_STATE) + break; + /* fall through */ + case 0x00: + case 0x3C: + return XML_TOK_PARTIAL; + } + } + else { + switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { + case 0xFEFF: + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC + && state == XML_CONTENT_STATE) + break; + *nextTokPtr = ptr + 2; + *encPtr = encodingTable[UTF_16BE_ENC]; + return XML_TOK_BOM; + /* 00 3C is handled in the default case */ + case 0x3C00: + if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC + || INIT_ENC_INDEX(enc) == UTF_16_ENC) + && state == XML_CONTENT_STATE) + break; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + case 0xFFFE: + if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC + && state == XML_CONTENT_STATE) + break; + *nextTokPtr = ptr + 2; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XML_TOK_BOM; + case 0xEFBB: + /* Maybe a UTF-8 BOM (EF BB BF) */ + /* If there's an explicitly specified (external) encoding + of ISO-8859-1 or some flavour of UTF-16 + and this is an external text entity, + don't look for the BOM, + because it might be a legal data. + */ + if (state == XML_CONTENT_STATE) { + int e = INIT_ENC_INDEX(enc); + if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC + || e == UTF_16LE_ENC || e == UTF_16_ENC) + break; + } + if (ptr + 2 == end) + return XML_TOK_PARTIAL; + if ((unsigned char)ptr[2] == 0xBF) { + *nextTokPtr = ptr + 3; + *encPtr = encodingTable[UTF_8_ENC]; + return XML_TOK_BOM; + } + break; + default: + if (ptr[0] == '\0') { + /* 0 isn't a legal data character. Furthermore a document + entity can only start with ASCII characters. So the only + way this can fail to be big-endian UTF-16 if it it's an + external parsed general entity that's labelled as + UTF-16LE. + */ + if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) + break; + *encPtr = encodingTable[UTF_16BE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + } + else if (ptr[1] == '\0') { + /* We could recover here in the case: + - parsing an external entity + - second byte is 0 + - no externally specified encoding + - no encoding declaration + by assuming UTF-16LE. But we don't, because this would mean when + presented just with a single byte, we couldn't reliably determine + whether we needed further bytes. + */ + if (state == XML_CONTENT_STATE) + break; + *encPtr = encodingTable[UTF_16LE_ENC]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); + } + break; + } + } + *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; + return XmlTok(*encPtr, state, ptr, end, nextTokPtr); +} + + +#define NS(x) x +#define ns(x) x +#define XML_TOK_NS_C +#include "xmltok_ns.c" +#undef XML_TOK_NS_C +#undef NS +#undef ns + +#ifdef XML_NS + +#define NS(x) x ## NS +#define ns(x) x ## _ns + +#define XML_TOK_NS_C +#include "xmltok_ns.c" +#undef XML_TOK_NS_C + +#undef NS +#undef ns + +ENCODING * +XmlInitUnknownEncodingNS(void *mem, + int *table, + CONVERTER convert, + void *userData) +{ + ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); + if (enc) + ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; + return enc; +} + +#endif /* XML_NS */ diff --git a/vendor/libexpat/lib/xmltok.h b/vendor/libexpat/lib/xmltok.h new file mode 100644 index 0000000..752007e --- /dev/null +++ b/vendor/libexpat/lib/xmltok.h @@ -0,0 +1,322 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef XmlTok_INCLUDED +#define XmlTok_INCLUDED 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* The following token may be returned by XmlContentTok */ +#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be + start of illegal ]]> sequence */ +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_NONE -4 /* The string to be scanned is empty */ +#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; + might be part of CRLF sequence */ +#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ +#define XML_TOK_PARTIAL -1 /* only part of a token */ +#define XML_TOK_INVALID 0 + +/* The following tokens are returned by XmlContentTok; some are also + returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. +*/ +#define XML_TOK_START_TAG_WITH_ATTS 1 +#define XML_TOK_START_TAG_NO_ATTS 2 +#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ +#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 +#define XML_TOK_END_TAG 5 +#define XML_TOK_DATA_CHARS 6 +#define XML_TOK_DATA_NEWLINE 7 +#define XML_TOK_CDATA_SECT_OPEN 8 +#define XML_TOK_ENTITY_REF 9 +#define XML_TOK_CHAR_REF 10 /* numeric character reference */ + +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_PI 11 /* processing instruction */ +#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ +#define XML_TOK_COMMENT 13 +#define XML_TOK_BOM 14 /* Byte order mark */ + +/* The following tokens are returned only by XmlPrologTok */ +#define XML_TOK_PROLOG_S 15 +#define XML_TOK_DECL_OPEN 16 /* */ +#define XML_TOK_NAME 18 +#define XML_TOK_NMTOKEN 19 +#define XML_TOK_POUND_NAME 20 /* #name */ +#define XML_TOK_OR 21 /* | */ +#define XML_TOK_PERCENT 22 +#define XML_TOK_OPEN_PAREN 23 +#define XML_TOK_CLOSE_PAREN 24 +#define XML_TOK_OPEN_BRACKET 25 +#define XML_TOK_CLOSE_BRACKET 26 +#define XML_TOK_LITERAL 27 +#define XML_TOK_PARAM_ENTITY_REF 28 +#define XML_TOK_INSTANCE_START 29 + +/* The following occur only in element type declarations */ +#define XML_TOK_NAME_QUESTION 30 /* name? */ +#define XML_TOK_NAME_ASTERISK 31 /* name* */ +#define XML_TOK_NAME_PLUS 32 /* name+ */ +#define XML_TOK_COND_SECT_OPEN 33 /* */ +#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ +#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ +#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ +#define XML_TOK_COMMA 38 + +/* The following token is returned only by XmlAttributeValueTok */ +#define XML_TOK_ATTRIBUTE_VALUE_S 39 + +/* The following token is returned only by XmlCdataSectionTok */ +#define XML_TOK_CDATA_SECT_CLOSE 40 + +/* With namespace processing this is returned by XmlPrologTok for a + name with a colon. +*/ +#define XML_TOK_PREFIXED_NAME 41 + +#ifdef XML_DTD +#define XML_TOK_IGNORE_SECT 42 +#endif /* XML_DTD */ + +#ifdef XML_DTD +#define XML_N_STATES 4 +#else /* not XML_DTD */ +#define XML_N_STATES 3 +#endif /* not XML_DTD */ + +#define XML_PROLOG_STATE 0 +#define XML_CONTENT_STATE 1 +#define XML_CDATA_SECTION_STATE 2 +#ifdef XML_DTD +#define XML_IGNORE_SECTION_STATE 3 +#endif /* XML_DTD */ + +#define XML_N_LITERAL_TYPES 2 +#define XML_ATTRIBUTE_VALUE_LITERAL 0 +#define XML_ENTITY_VALUE_LITERAL 1 + +/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ +#define XML_UTF8_ENCODE_MAX 4 +/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ +#define XML_UTF16_ENCODE_MAX 2 + +typedef struct position { + /* first line and first column are 0 not 1 */ + XML_Size lineNumber; + XML_Size columnNumber; +} POSITION; + +typedef struct { + const char *name; + const char *valuePtr; + const char *valueEnd; + char normalized; +} ATTRIBUTE; + +struct encoding; +typedef struct encoding ENCODING; + +typedef int (PTRCALL *SCANNER)(const ENCODING *, + const char *, + const char *, + const char **); + +enum XML_Convert_Result { + XML_CONVERT_COMPLETED = 0, + XML_CONVERT_INPUT_INCOMPLETE = 1, + XML_CONVERT_OUTPUT_EXHAUSTED = 2 /* and therefore potentially input remaining as well */ +}; + +struct encoding { + SCANNER scanners[XML_N_STATES]; + SCANNER literalScanners[XML_N_LITERAL_TYPES]; + int (PTRCALL *sameName)(const ENCODING *, + const char *, + const char *); + int (PTRCALL *nameMatchesAscii)(const ENCODING *, + const char *, + const char *, + const char *); + int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); + const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); + int (PTRCALL *getAtts)(const ENCODING *enc, + const char *ptr, + int attsMax, + ATTRIBUTE *atts); + int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); + int (PTRCALL *predefinedEntityName)(const ENCODING *, + const char *, + const char *); + void (PTRCALL *updatePosition)(const ENCODING *, + const char *ptr, + const char *end, + POSITION *); + int (PTRCALL *isPublicId)(const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr); + enum XML_Convert_Result (PTRCALL *utf8Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + char **toP, + const char *toLim); + enum XML_Convert_Result (PTRCALL *utf16Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + unsigned short **toP, + const unsigned short *toLim); + int minBytesPerChar; + char isUtf8; + char isUtf16; +}; + +/* Scan the string starting at ptr until the end of the next complete + token, but do not scan past eptr. Return an integer giving the + type of token. + + Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. + + Return XML_TOK_PARTIAL when the string does not contain a complete + token; nextTokPtr will not be set. + + Return XML_TOK_INVALID when the string does not start a valid + token; nextTokPtr will be set to point to the character which made + the token invalid. + + Otherwise the string starts with a valid token; nextTokPtr will be + set to point to the character following the end of that token. + + Each data character counts as a single token, but adjacent data + characters may be returned together. Similarly for characters in + the prolog outside literals, comments and processing instructions. +*/ + + +#define XmlTok(enc, state, ptr, end, nextTokPtr) \ + (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) + +#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) + +#define XmlContentTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) + +#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) + +#ifdef XML_DTD + +#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) + +#endif /* XML_DTD */ + +/* This is used for performing a 2nd-level tokenization on the content + of a literal that has already been returned by XmlTok. +*/ +#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ + (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) + +#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) + +#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ + (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) + +#define XmlNameLength(enc, ptr) \ + (((enc)->nameLength)(enc, ptr)) + +#define XmlSkipS(enc, ptr) \ + (((enc)->skipS)(enc, ptr)) + +#define XmlGetAttributes(enc, ptr, attsMax, atts) \ + (((enc)->getAtts)(enc, ptr, attsMax, atts)) + +#define XmlCharRefNumber(enc, ptr) \ + (((enc)->charRefNumber)(enc, ptr)) + +#define XmlPredefinedEntityName(enc, ptr, end) \ + (((enc)->predefinedEntityName)(enc, ptr, end)) + +#define XmlUpdatePosition(enc, ptr, end, pos) \ + (((enc)->updatePosition)(enc, ptr, end, pos)) + +#define XmlIsPublicId(enc, ptr, end, badPtr) \ + (((enc)->isPublicId)(enc, ptr, end, badPtr)) + +#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) + +#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) + +typedef struct { + ENCODING initEnc; + const ENCODING **encPtr; +} INIT_ENCODING; + +int XmlParseXmlDecl(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, + int *standalonePtr); + +int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncoding(void); +const ENCODING *XmlGetUtf16InternalEncoding(void); +int FASTCALL XmlUtf8Encode(int charNumber, char *buf); +int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); +int XmlSizeOfUnknownEncoding(void); + + +typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); + +ENCODING * +XmlInitUnknownEncoding(void *mem, + int *table, + CONVERTER convert, + void *userData); + +int XmlParseXmlDeclNS(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, + int *standalonePtr); + +int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncodingNS(void); +const ENCODING *XmlGetUtf16InternalEncodingNS(void); +ENCODING * +XmlInitUnknownEncodingNS(void *mem, + int *table, + CONVERTER convert, + void *userData); +#ifdef __cplusplus +} +#endif + +#endif /* not XmlTok_INCLUDED */ diff --git a/vendor/libexpat/lib/xmltok_impl.c b/vendor/libexpat/lib/xmltok_impl.c new file mode 100644 index 0000000..5f779c0 --- /dev/null +++ b/vendor/libexpat/lib/xmltok_impl.c @@ -0,0 +1,1779 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* This file is included! */ +#ifdef XML_TOK_IMPL_C + +#ifndef IS_INVALID_CHAR +#define IS_INVALID_CHAR(enc, ptr, n) (0) +#endif + +#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_INVALID_CHAR(enc, ptr, n)) { \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +#define INVALID_CASES(ptr, nextTokPtr) \ + INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ + INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ + case BT_NONXML: \ + case BT_MALFORM: \ + case BT_TRAIL: \ + *(nextTokPtr) = (ptr); \ + return XML_TOK_INVALID; + +#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (!IS_NAME_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + case BT_NMSTRT: \ + case BT_HEX: \ + case BT_DIGIT: \ + case BT_NAME: \ + case BT_MINUS: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) + +#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + ptr += n; \ + break; + +#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ + case BT_NONASCII: \ + if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ + case BT_NMSTRT: \ + case BT_HEX: \ + ptr += MINBPC(enc); \ + break; \ + CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ + CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) + +#ifndef PREFIX +#define PREFIX(ident) ident +#endif + + +#define HAS_CHARS(enc, ptr, end, count) \ + (end - ptr >= count * MINBPC(enc)) + +#define HAS_CHAR(enc, ptr, end) \ + HAS_CHARS(enc, ptr, end, 1) + +#define REQUIRE_CHARS(enc, ptr, end, count) \ + { \ + if (! HAS_CHARS(enc, ptr, end, count)) { \ + return XML_TOK_PARTIAL; \ + } \ + } + +#define REQUIRE_CHAR(enc, ptr, end) \ + REQUIRE_CHARS(enc, ptr, end, 1) + + +/* ptr points to character following " */ + switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { + case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + /* fall through */ + case BT_S: case BT_CR: case BT_LF: + *nextTokPtr = ptr; + return XML_TOK_DECL_OPEN; + case BT_NMSTRT: + case BT_HEX: + ptr += MINBPC(enc); + break; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(checkPiTarget)(const ENCODING *UNUSED_P(enc), const char *ptr, + const char *end, int *tokPtr) +{ + int upper = 0; + *tokPtr = XML_TOK_PI; + if (end - ptr != MINBPC(enc)*3) + return 1; + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_x: + break; + case ASCII_X: + upper = 1; + break; + default: + return 1; + } + ptr += MINBPC(enc); + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_m: + break; + case ASCII_M: + upper = 1; + break; + default: + return 1; + } + ptr += MINBPC(enc); + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_l: + break; + case ASCII_L: + upper = 1; + break; + default: + return 1; + } + if (upper) + return 0; + *tokPtr = XML_TOK_XML_DECL; + return 1; +} + +/* ptr points to character following "= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_RSQB: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + break; + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr -= MINBPC(enc); + break; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CDATA_SECT_CLOSE; + case BT_CR: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + case BT_LF: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + INVALID_CASES(ptr, nextTokPtr) + default: + ptr += MINBPC(enc); + break; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NONXML: + case BT_MALFORM: + case BT_TRAIL: + case BT_CR: + case BT_LF: + case BT_RSQB: + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +/* ptr points to character following "= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_LT: + return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_AMP: + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_CR: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + case BT_LF: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + case BT_RSQB: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_RSQB; + if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) + break; + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_RSQB; + if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr -= MINBPC(enc); + break; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + INVALID_CASES(ptr, nextTokPtr) + default: + ptr += MINBPC(enc); + break; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_DATA_CHARS; \ + } \ + ptr += n; \ + break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_RSQB: + if (HAS_CHARS(enc, ptr, end, 2)) { + if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { + ptr += MINBPC(enc); + break; + } + if (HAS_CHARS(enc, ptr, end, 3)) { + if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { + ptr += MINBPC(enc); + break; + } + *nextTokPtr = ptr + 2*MINBPC(enc); + return XML_TOK_INVALID; + } + } + /* fall through */ + case BT_AMP: + case BT_LT: + case BT_NONXML: + case BT_MALFORM: + case BT_TRAIL: + case BT_CR: + case BT_LF: + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +/* ptr points to character following "%" */ + +static int PTRCALL +PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: + *nextTokPtr = ptr; + return XML_TOK_PERCENT; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_SEMI: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_PARAM_ENTITY_REF; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_CR: case BT_LF: case BT_S: + case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: + *nextTokPtr = ptr; + return XML_TOK_POUND_NAME; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return -XML_TOK_POUND_NAME; +} + +static int PTRCALL +PREFIX(scanLit)(int open, const ENCODING *enc, + const char *ptr, const char *end, + const char **nextTokPtr) +{ + while (HAS_CHAR(enc, ptr, end)) { + int t = BYTE_TYPE(enc, ptr); + switch (t) { + INVALID_CASES(ptr, nextTokPtr) + case BT_QUOT: + case BT_APOS: + ptr += MINBPC(enc); + if (t != open) + break; + if (! HAS_CHAR(enc, ptr, end)) + return -XML_TOK_LITERAL; + *nextTokPtr = ptr; + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: case BT_CR: case BT_LF: + case BT_GT: case BT_PERCNT: case BT_LSQB: + return XML_TOK_LITERAL; + default: + return XML_TOK_INVALID; + } + default: + ptr += MINBPC(enc); + break; + } + } + return XML_TOK_PARTIAL; +} + +static int PTRCALL +PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + int tok; + if (ptr >= end) + return XML_TOK_NONE; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + if (n == 0) + return XML_TOK_PARTIAL; + end = ptr + n; + } + } + switch (BYTE_TYPE(enc, ptr)) { + case BT_QUOT: + return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_APOS: + return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_LT: + { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + switch (BYTE_TYPE(enc, ptr)) { + case BT_EXCL: + return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_QUEST: + return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_NMSTRT: + case BT_HEX: + case BT_NONASCII: + case BT_LEAD2: + case BT_LEAD3: + case BT_LEAD4: + *nextTokPtr = ptr - MINBPC(enc); + return XML_TOK_INSTANCE_START; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + case BT_CR: + if (ptr + MINBPC(enc) == end) { + *nextTokPtr = end; + /* indicate that this might be part of a CR/LF pair */ + return -XML_TOK_PROLOG_S; + } + /* fall through */ + case BT_S: case BT_LF: + for (;;) { + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + break; + switch (BYTE_TYPE(enc, ptr)) { + case BT_S: case BT_LF: + break; + case BT_CR: + /* don't split CR/LF pair */ + if (ptr + MINBPC(enc) != end) + break; + /* fall through */ + default: + *nextTokPtr = ptr; + return XML_TOK_PROLOG_S; + } + } + *nextTokPtr = ptr; + return XML_TOK_PROLOG_S; + case BT_PERCNT: + return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); + case BT_COMMA: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_COMMA; + case BT_LSQB: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OPEN_BRACKET; + case BT_RSQB: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return -XML_TOK_CLOSE_BRACKET; + if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { + REQUIRE_CHARS(enc, ptr, end, 2); + if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { + *nextTokPtr = ptr + 2*MINBPC(enc); + return XML_TOK_COND_SECT_CLOSE; + } + } + *nextTokPtr = ptr; + return XML_TOK_CLOSE_BRACKET; + case BT_LPAR: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OPEN_PAREN; + case BT_RPAR: + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return -XML_TOK_CLOSE_PAREN; + switch (BYTE_TYPE(enc, ptr)) { + case BT_AST: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_ASTERISK; + case BT_QUEST: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_QUESTION; + case BT_PLUS: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_CLOSE_PAREN_PLUS; + case BT_CR: case BT_LF: case BT_S: + case BT_GT: case BT_COMMA: case BT_VERBAR: + case BT_RPAR: + *nextTokPtr = ptr; + return XML_TOK_CLOSE_PAREN; + } + *nextTokPtr = ptr; + return XML_TOK_INVALID; + case BT_VERBAR: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_OR; + case BT_GT: + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DECL_CLOSE; + case BT_NUM: + return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ + if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NAME; \ + break; \ + } \ + if (IS_NAME_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NMTOKEN; \ + break; \ + } \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NMSTRT: + case BT_HEX: + tok = XML_TOK_NAME; + ptr += MINBPC(enc); + break; + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: +#ifdef XML_NS + case BT_COLON: +#endif + tok = XML_TOK_NMTOKEN; + ptr += MINBPC(enc); + break; + case BT_NONASCII: + if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { + ptr += MINBPC(enc); + tok = XML_TOK_NAME; + break; + } + if (IS_NAME_CHAR_MINBPC(enc, ptr)) { + ptr += MINBPC(enc); + tok = XML_TOK_NMTOKEN; + break; + } + /* fall through */ + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + case BT_GT: case BT_RPAR: case BT_COMMA: + case BT_VERBAR: case BT_LSQB: case BT_PERCNT: + case BT_S: case BT_CR: case BT_LF: + *nextTokPtr = ptr; + return tok; +#ifdef XML_NS + case BT_COLON: + ptr += MINBPC(enc); + switch (tok) { + case XML_TOK_NAME: + REQUIRE_CHAR(enc, ptr, end); + tok = XML_TOK_PREFIXED_NAME; + switch (BYTE_TYPE(enc, ptr)) { + CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) + default: + tok = XML_TOK_NMTOKEN; + break; + } + break; + case XML_TOK_PREFIXED_NAME: + tok = XML_TOK_NMTOKEN; + break; + } + break; +#endif + case BT_PLUS: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_PLUS; + case BT_AST: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_ASTERISK; + case BT_QUEST: + if (tok == XML_TOK_NMTOKEN) { + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_NAME_QUESTION; + default: + *nextTokPtr = ptr; + return XML_TOK_INVALID; + } + } + return -tok; +} + +static int PTRCALL +PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) +{ + const char *start; + if (ptr >= end) + return XML_TOK_NONE; + else if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_PARTIAL; + start = ptr; + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_AMP: + if (ptr == start) + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_LT: + /* this is for inside entity references */ + *nextTokPtr = ptr; + return XML_TOK_INVALID; + case BT_LF: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_CR: + if (ptr == start) { + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_S: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_ATTRIBUTE_VALUE_S; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +static int PTRCALL +PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) +{ + const char *start; + if (ptr >= end) + return XML_TOK_NONE; + else if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_PARTIAL; + start = ptr; + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_AMP: + if (ptr == start) + return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_PERCNT: + if (ptr == start) { + int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), + end, nextTokPtr); + return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_LF: + if (ptr == start) { + *nextTokPtr = ptr + MINBPC(enc); + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + case BT_CR: + if (ptr == start) { + ptr += MINBPC(enc); + if (! HAS_CHAR(enc, ptr, end)) + return XML_TOK_TRAILING_CR; + if (BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + *nextTokPtr = ptr; + return XML_TOK_DATA_NEWLINE; + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; + default: + ptr += MINBPC(enc); + break; + } + } + *nextTokPtr = ptr; + return XML_TOK_DATA_CHARS; +} + +#ifdef XML_DTD + +static int PTRCALL +PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) +{ + int level = 0; + if (MINBPC(enc) > 1) { + size_t n = end - ptr; + if (n & (MINBPC(enc) - 1)) { + n &= ~(MINBPC(enc) - 1); + end = ptr + n; + } + } + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { + INVALID_CASES(ptr, nextTokPtr) + case BT_LT: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { + ++level; + ptr += MINBPC(enc); + } + } + break; + case BT_RSQB: + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { + ptr += MINBPC(enc); + REQUIRE_CHAR(enc, ptr, end); + if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { + ptr += MINBPC(enc); + if (level == 0) { + *nextTokPtr = ptr; + return XML_TOK_IGNORE_SECT; + } + --level; + } + } + break; + default: + ptr += MINBPC(enc); + break; + } + } + return XML_TOK_PARTIAL; +} + +#endif /* XML_DTD */ + +static int PTRCALL +PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, + const char **badPtr) +{ + ptr += MINBPC(enc); + end -= MINBPC(enc); + for (; HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_DIGIT: + case BT_HEX: + case BT_MINUS: + case BT_APOS: + case BT_LPAR: + case BT_RPAR: + case BT_PLUS: + case BT_COMMA: + case BT_SOL: + case BT_EQUALS: + case BT_QUEST: + case BT_CR: + case BT_LF: + case BT_SEMI: + case BT_EXCL: + case BT_AST: + case BT_PERCNT: + case BT_NUM: +#ifdef XML_NS + case BT_COLON: +#endif + break; + case BT_S: + if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { + *badPtr = ptr; + return 0; + } + break; + case BT_NAME: + case BT_NMSTRT: + if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) + break; + default: + switch (BYTE_TO_ASCII(enc, ptr)) { + case 0x24: /* $ */ + case 0x40: /* @ */ + break; + default: + *badPtr = ptr; + return 0; + } + break; + } + } + return 1; +} + +/* This must only be called for a well-formed start-tag or empty + element tag. Returns the number of attributes. Pointers to the + first attsMax attributes are stored in atts. +*/ + +static int PTRCALL +PREFIX(getAtts)(const ENCODING *enc, const char *ptr, + int attsMax, ATTRIBUTE *atts) +{ + enum { other, inName, inValue } state = inName; + int nAtts = 0; + int open = 0; /* defined when state == inValue; + initialization just to shut up compilers */ + + for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { + switch (BYTE_TYPE(enc, ptr)) { +#define START_NAME \ + if (state == other) { \ + if (nAtts < attsMax) { \ + atts[nAtts].name = ptr; \ + atts[nAtts].normalized = 1; \ + } \ + state = inName; \ + } +#define LEAD_CASE(n) \ + case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NONASCII: + case BT_NMSTRT: + case BT_HEX: + START_NAME + break; +#undef START_NAME + case BT_QUOT: + if (state != inValue) { + if (nAtts < attsMax) + atts[nAtts].valuePtr = ptr + MINBPC(enc); + state = inValue; + open = BT_QUOT; + } + else if (open == BT_QUOT) { + state = other; + if (nAtts < attsMax) + atts[nAtts].valueEnd = ptr; + nAtts++; + } + break; + case BT_APOS: + if (state != inValue) { + if (nAtts < attsMax) + atts[nAtts].valuePtr = ptr + MINBPC(enc); + state = inValue; + open = BT_APOS; + } + else if (open == BT_APOS) { + state = other; + if (nAtts < attsMax) + atts[nAtts].valueEnd = ptr; + nAtts++; + } + break; + case BT_AMP: + if (nAtts < attsMax) + atts[nAtts].normalized = 0; + break; + case BT_S: + if (state == inName) + state = other; + else if (state == inValue + && nAtts < attsMax + && atts[nAtts].normalized + && (ptr == atts[nAtts].valuePtr + || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE + || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE + || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) + atts[nAtts].normalized = 0; + break; + case BT_CR: case BT_LF: + /* This case ensures that the first attribute name is counted + Apart from that we could just change state on the quote. */ + if (state == inName) + state = other; + else if (state == inValue && nAtts < attsMax) + atts[nAtts].normalized = 0; + break; + case BT_GT: + case BT_SOL: + if (state != inValue) + return nAtts; + break; + default: + break; + } + } + /* not reached */ +} + +static int PTRFASTCALL +PREFIX(charRefNumber)(const ENCODING *UNUSED_P(enc), const char *ptr) +{ + int result = 0; + /* skip &# */ + ptr += 2*MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_x)) { + for (ptr += MINBPC(enc); + !CHAR_MATCHES(enc, ptr, ASCII_SEMI); + ptr += MINBPC(enc)) { + int c = BYTE_TO_ASCII(enc, ptr); + switch (c) { + case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: + case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: + result <<= 4; + result |= (c - ASCII_0); + break; + case ASCII_A: case ASCII_B: case ASCII_C: + case ASCII_D: case ASCII_E: case ASCII_F: + result <<= 4; + result += 10 + (c - ASCII_A); + break; + case ASCII_a: case ASCII_b: case ASCII_c: + case ASCII_d: case ASCII_e: case ASCII_f: + result <<= 4; + result += 10 + (c - ASCII_a); + break; + } + if (result >= 0x110000) + return -1; + } + } + else { + for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { + int c = BYTE_TO_ASCII(enc, ptr); + result *= 10; + result += (c - ASCII_0); + if (result >= 0x110000) + return -1; + } + } + return checkCharRefNumber(result); +} + +static int PTRCALL +PREFIX(predefinedEntityName)(const ENCODING *UNUSED_P(enc), const char *ptr, + const char *end) +{ + switch ((end - ptr)/MINBPC(enc)) { + case 2: + if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_l: + return ASCII_LT; + case ASCII_g: + return ASCII_GT; + } + } + break; + case 3: + if (CHAR_MATCHES(enc, ptr, ASCII_a)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_m)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_p)) + return ASCII_AMP; + } + } + break; + case 4: + switch (BYTE_TO_ASCII(enc, ptr)) { + case ASCII_q: + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_u)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_o)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_t)) + return ASCII_QUOT; + } + } + break; + case ASCII_a: + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_p)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_o)) { + ptr += MINBPC(enc); + if (CHAR_MATCHES(enc, ptr, ASCII_s)) + return ASCII_APOS; + } + } + break; + } + } + return 0; +} + +static int PTRCALL +PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) +{ + for (;;) { + switch (BYTE_TYPE(enc, ptr1)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + if (*ptr1++ != *ptr2++) \ + return 0; + LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) +#undef LEAD_CASE + /* fall through */ + if (*ptr1++ != *ptr2++) + return 0; + break; + case BT_NONASCII: + case BT_NMSTRT: +#ifdef XML_NS + case BT_COLON: +#endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + if (*ptr2++ != *ptr1++) + return 0; + if (MINBPC(enc) > 1) { + if (*ptr2++ != *ptr1++) + return 0; + if (MINBPC(enc) > 2) { + if (*ptr2++ != *ptr1++) + return 0; + if (MINBPC(enc) > 3) { + if (*ptr2++ != *ptr1++) + return 0; + } + } + } + break; + default: + if (MINBPC(enc) == 1 && *ptr1 == *ptr2) + return 1; + switch (BYTE_TYPE(enc, ptr2)) { + case BT_LEAD2: + case BT_LEAD3: + case BT_LEAD4: + case BT_NONASCII: + case BT_NMSTRT: +#ifdef XML_NS + case BT_COLON: +#endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + return 0; + default: + return 1; + } + } + } + /* not reached */ +} + +static int PTRCALL +PREFIX(nameMatchesAscii)(const ENCODING *UNUSED_P(enc), const char *ptr1, + const char *end1, const char *ptr2) +{ + for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { + if (end1 - ptr1 < MINBPC(enc)) + return 0; + if (!CHAR_MATCHES(enc, ptr1, *ptr2)) + return 0; + } + return ptr1 == end1; +} + +static int PTRFASTCALL +PREFIX(nameLength)(const ENCODING *enc, const char *ptr) +{ + const char *start = ptr; + for (;;) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: ptr += n; break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_NONASCII: + case BT_NMSTRT: +#ifdef XML_NS + case BT_COLON: +#endif + case BT_HEX: + case BT_DIGIT: + case BT_NAME: + case BT_MINUS: + ptr += MINBPC(enc); + break; + default: + return (int)(ptr - start); + } + } +} + +static const char * PTRFASTCALL +PREFIX(skipS)(const ENCODING *enc, const char *ptr) +{ + for (;;) { + switch (BYTE_TYPE(enc, ptr)) { + case BT_LF: + case BT_CR: + case BT_S: + ptr += MINBPC(enc); + break; + default: + return ptr; + } + } +} + +static void PTRCALL +PREFIX(updatePosition)(const ENCODING *enc, + const char *ptr, + const char *end, + POSITION *pos) +{ + while (HAS_CHAR(enc, ptr, end)) { + switch (BYTE_TYPE(enc, ptr)) { +#define LEAD_CASE(n) \ + case BT_LEAD ## n: \ + ptr += n; \ + break; + LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) +#undef LEAD_CASE + case BT_LF: + pos->columnNumber = (XML_Size)-1; + pos->lineNumber++; + ptr += MINBPC(enc); + break; + case BT_CR: + pos->lineNumber++; + ptr += MINBPC(enc); + if (HAS_CHAR(enc, ptr, end) && BYTE_TYPE(enc, ptr) == BT_LF) + ptr += MINBPC(enc); + pos->columnNumber = (XML_Size)-1; + break; + default: + ptr += MINBPC(enc); + break; + } + pos->columnNumber++; + } +} + +#undef DO_LEAD_CASE +#undef MULTIBYTE_CASES +#undef INVALID_CASES +#undef CHECK_NAME_CASE +#undef CHECK_NAME_CASES +#undef CHECK_NMSTRT_CASE +#undef CHECK_NMSTRT_CASES + +#endif /* XML_TOK_IMPL_C */ diff --git a/vendor/libexpat/lib/xmltok_impl.h b/vendor/libexpat/lib/xmltok_impl.h new file mode 100644 index 0000000..da0ea60 --- /dev/null +++ b/vendor/libexpat/lib/xmltok_impl.h @@ -0,0 +1,46 @@ +/* +Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd +See the file COPYING for copying permission. +*/ + +enum { + BT_NONXML, + BT_MALFORM, + BT_LT, + BT_AMP, + BT_RSQB, + BT_LEAD2, + BT_LEAD3, + BT_LEAD4, + BT_TRAIL, + BT_CR, + BT_LF, + BT_GT, + BT_QUOT, + BT_APOS, + BT_EQUALS, + BT_QUEST, + BT_EXCL, + BT_SOL, + BT_SEMI, + BT_NUM, + BT_LSQB, + BT_S, + BT_NMSTRT, + BT_COLON, + BT_HEX, + BT_DIGIT, + BT_NAME, + BT_MINUS, + BT_OTHER, /* known not to be a name or name start character */ + BT_NONASCII, /* might be a name or name start character */ + BT_PERCNT, + BT_LPAR, + BT_RPAR, + BT_AST, + BT_PLUS, + BT_COMMA, + BT_VERBAR +}; + +#include diff --git a/vendor/libexpat/lib/xmltok_ns.c b/vendor/libexpat/lib/xmltok_ns.c new file mode 100644 index 0000000..c3b88fd --- /dev/null +++ b/vendor/libexpat/lib/xmltok_ns.c @@ -0,0 +1,115 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* This file is included! */ +#ifdef XML_TOK_NS_C + +const ENCODING * +NS(XmlGetUtf8InternalEncoding)(void) +{ + return &ns(internal_utf8_encoding).enc; +} + +const ENCODING * +NS(XmlGetUtf16InternalEncoding)(void) +{ +#if BYTEORDER == 1234 + return &ns(internal_little2_encoding).enc; +#elif BYTEORDER == 4321 + return &ns(internal_big2_encoding).enc; +#else + const short n = 1; + return (*(const char *)&n + ? &ns(internal_little2_encoding).enc + : &ns(internal_big2_encoding).enc); +#endif +} + +static const ENCODING * const NS(encodings)[] = { + &ns(latin1_encoding).enc, + &ns(ascii_encoding).enc, + &ns(utf8_encoding).enc, + &ns(big2_encoding).enc, + &ns(big2_encoding).enc, + &ns(little2_encoding).enc, + &ns(utf8_encoding).enc /* NO_ENC */ +}; + +static int PTRCALL +NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + return initScan(NS(encodings), (const INIT_ENCODING *)enc, + XML_PROLOG_STATE, ptr, end, nextTokPtr); +} + +static int PTRCALL +NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + return initScan(NS(encodings), (const INIT_ENCODING *)enc, + XML_CONTENT_STATE, ptr, end, nextTokPtr); +} + +int +NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, + const char *name) +{ + int i = getEncodingIndex(name); + if (i == UNKNOWN_ENC) + return 0; + SET_INIT_ENC_INDEX(p, i); + p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); + p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); + p->initEnc.updatePosition = initUpdatePosition; + p->encPtr = encPtr; + *encPtr = &(p->initEnc); + return 1; +} + +static const ENCODING * +NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) +{ +#define ENCODING_MAX 128 + char buf[ENCODING_MAX]; + char *p = buf; + int i; + XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); + if (ptr != end) + return 0; + *p = 0; + if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) + return enc; + i = getEncodingIndex(buf); + if (i == UNKNOWN_ENC) + return 0; + return NS(encodings)[i]; +} + +int +NS(XmlParseXmlDecl)(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingName, + const ENCODING **encoding, + int *standalone) +{ + return doParseXmlDecl(NS(findEncoding), + isGeneralTextEntity, + enc, + ptr, + end, + badPtr, + versionPtr, + versionEndPtr, + encodingName, + encoding, + standalone); +} + +#endif /* XML_TOK_NS_C */ diff --git a/vendor/libexpat/libexpat.gyp b/vendor/libexpat/libexpat.gyp new file mode 100644 index 0000000..d74e868 --- /dev/null +++ b/vendor/libexpat/libexpat.gyp @@ -0,0 +1,92 @@ +# This file is used with the GYP meta build system. +# http://code.google.com/p/gyp +# To build try this: +# svn co http://gyp.googlecode.com/svn/trunk gyp +# ./gyp/gyp -f make --depth=`pwd` libexpat.gyp +# make +# ./out/Debug/test + +{ + 'target_defaults': { + 'default_configuration': 'Debug', + 'configurations': { + # TODO: hoist these out and put them somewhere common, because + # RuntimeLibrary MUST MATCH across the entire project + 'Debug': { + 'defines': [ 'DEBUG', '_DEBUG' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 1, # static debug + }, + }, + }, + 'Release': { + 'defines': [ 'NDEBUG' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 0, # static release + }, + }, + } + }, + 'msvs_settings': { + 'VCCLCompilerTool': { + }, + 'VCLibrarianTool': { + }, + 'VCLinkerTool': { + 'GenerateDebugInformation': 'true', + }, + }, + }, + + 'targets': [ + { + 'variables': { 'target_arch%': 'ia32' }, # default for node v0.6.x + 'target_name': 'expat', + 'product_prefix': 'lib', + 'type': 'static_library', + 'sources': [ + 'lib/xmlparse.c', + 'lib/xmltok.c', + 'lib/xmlrole.c', + ], + 'defines': [ + 'PIC', + 'HAVE_EXPAT_CONFIG_H' + ], + 'cflags': [ + '-Wno-missing-field-initializers' + ], + 'xcode_settings': { + 'OTHER_CFLAGS': [ + '-Wno-missing-field-initializers' + ] + }, + 'include_dirs': [ + '.', + 'lib', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '.', + 'lib', + ], + 'conditions': [ + ['OS=="win"', { + 'defines': [ + 'XML_STATIC' + ] + }] + ], + }, + }, + + { + 'target_name': 'version', + 'type': 'executable', + 'dependencies': [ 'expat' ], + 'sources': [ 'version.c' ] + }, + ] +} diff --git a/vendor/libexpat/m4/libtool.m4 b/vendor/libexpat/m4/libtool.m4 new file mode 100644 index 0000000..8ff3c76 --- /dev/null +++ b/vendor/libexpat/m4/libtool.m4 @@ -0,0 +1,7851 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/vendor/libexpat/m4/ltoptions.m4 b/vendor/libexpat/m4/ltoptions.m4 new file mode 100644 index 0000000..17cfd51 --- /dev/null +++ b/vendor/libexpat/m4/ltoptions.m4 @@ -0,0 +1,369 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/vendor/libexpat/m4/ltsugar.m4 b/vendor/libexpat/m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/vendor/libexpat/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/vendor/libexpat/m4/ltversion.m4 b/vendor/libexpat/m4/ltversion.m4 new file mode 100644 index 0000000..9c7b5d4 --- /dev/null +++ b/vendor/libexpat/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3293 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4]) +m4_define([LT_PACKAGE_REVISION], [1.3293]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4' +macro_revision='1.3293' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/vendor/libexpat/m4/lt~obsolete.m4 b/vendor/libexpat/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c573da9 --- /dev/null +++ b/vendor/libexpat/m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/vendor/libexpat/tests/README.txt b/vendor/libexpat/tests/README.txt new file mode 100644 index 0000000..30e1d4d --- /dev/null +++ b/vendor/libexpat/tests/README.txt @@ -0,0 +1,13 @@ +This directory contains the (fledgling) test suite for Expat. The +tests provide general unit testing and regression coverage. The tests +are not expected to be useful examples of Expat usage; see the +examples/ directory for that. + +The Expat tests use a partial internal implementation of the "Check" +unit testing framework for C. More information on Check can be found at: + + http://check.sourceforge.net/ + +Expat must be built and, depending on platform, must be installed, before "make check" can be executed. + +This test suite can all change in a later version. diff --git a/vendor/libexpat/tests/benchmark/README.txt b/vendor/libexpat/tests/benchmark/README.txt new file mode 100644 index 0000000..86414d5 --- /dev/null +++ b/vendor/libexpat/tests/benchmark/README.txt @@ -0,0 +1,16 @@ +Use this benchmark command line utility as follows: + + benchmark [-n] <# iterations> + +The command line arguments are: + + -n ... optional; if supplied, namespace processing is turned on + ... name/path of test xml file + ... size of processing buffer; + the file is parsed in chunks of this size + <# iterations> ... how often will the file be parsed + +Returns: + + The time (in seconds) it takes to parse the test file, + averaged over the number of iterations.@ diff --git a/vendor/libexpat/tests/benchmark/benchmark.c b/vendor/libexpat/tests/benchmark/benchmark.c new file mode 100644 index 0000000..0f0fd18 --- /dev/null +++ b/vendor/libexpat/tests/benchmark/benchmark.c @@ -0,0 +1,114 @@ +#include +#include +#include +#include +#include "expat.h" + +#if defined(__amigaos__) && defined(__USE_INLINE__) +#include +#endif + +#ifdef XML_LARGE_SIZE +#define XML_FMT_INT_MOD "ll" +#else +#define XML_FMT_INT_MOD "l" +#endif + +static void +usage(const char *prog, int rc) +{ + fprintf(stderr, + "usage: %s [-n] filename bufferSize nr_of_loops\n", prog); + exit(rc); +} + +int main (int argc, char *argv[]) +{ + XML_Parser parser; + char *XMLBuf, *XMLBufEnd, *XMLBufPtr; + FILE *fd; + struct stat fileAttr; + int nrOfLoops, bufferSize, fileSize, i, isFinal; + int j = 0, ns = 0; + clock_t tstart, tend; + double cpuTime = 0.0; + + if (argc > 1) { + if (argv[1][0] == '-') { + if (argv[1][1] == 'n' && argv[1][2] == '\0') { + ns = 1; + j = 1; + } + else + usage(argv[0], 1); + } + } + + if (argc != j + 4) + usage(argv[0], 1); + + if (stat (argv[j + 1], &fileAttr) != 0) { + fprintf (stderr, "could not access file '%s'\n", argv[j + 1]); + return 2; + } + + fd = fopen (argv[j + 1], "r"); + if (!fd) { + fprintf (stderr, "could not open file '%s'\n", argv[j + 1]); + exit(2); + } + + bufferSize = atoi (argv[j + 2]); + nrOfLoops = atoi (argv[j + 3]); + if (bufferSize <= 0 || nrOfLoops <= 0) { + fprintf (stderr, + "buffer size and nr of loops must be greater than zero.\n"); + exit(3); + } + + XMLBuf = malloc (fileAttr.st_size); + fileSize = fread (XMLBuf, sizeof (char), fileAttr.st_size, fd); + fclose (fd); + + if (ns) + parser = XML_ParserCreateNS(NULL, '!'); + else + parser = XML_ParserCreate(NULL); + + i = 0; + XMLBufEnd = XMLBuf + fileSize; + while (i < nrOfLoops) { + XMLBufPtr = XMLBuf; + isFinal = 0; + tstart = clock(); + do { + int parseBufferSize = XMLBufEnd - XMLBufPtr; + if (parseBufferSize <= bufferSize) + isFinal = 1; + else + parseBufferSize = bufferSize; + if (!XML_Parse (parser, XMLBufPtr, parseBufferSize, isFinal)) { + fprintf (stderr, "error '%s' at line %" XML_FMT_INT_MOD \ + "u character %" XML_FMT_INT_MOD "u\n", + XML_ErrorString (XML_GetErrorCode (parser)), + XML_GetCurrentLineNumber (parser), + XML_GetCurrentColumnNumber (parser)); + free (XMLBuf); + XML_ParserFree (parser); + exit (4); + } + XMLBufPtr += bufferSize; + } while (!isFinal); + tend = clock(); + cpuTime += ((double) (tend - tstart)) / CLOCKS_PER_SEC; + XML_ParserReset(parser, NULL); + i++; + } + + XML_ParserFree (parser); + free (XMLBuf); + + printf ("%d loops, with buffer size %d. Average time per loop: %f\n", + nrOfLoops, bufferSize, cpuTime / (double) nrOfLoops); + return 0; +} diff --git a/vendor/libexpat/tests/benchmark/benchmark.dsp b/vendor/libexpat/tests/benchmark/benchmark.dsp new file mode 100644 index 0000000..b58a39b --- /dev/null +++ b/vendor/libexpat/tests/benchmark/benchmark.dsp @@ -0,0 +1,88 @@ +# Microsoft Developer Studio Project File - Name="benchmark" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=benchmark - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "benchmark.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "benchmark.mak" CFG="benchmark - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "benchmark - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "benchmark - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "benchmark - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "..\..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x1009 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 +# ADD LINK32 libexpat.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\win32\bin\Release" + +!ELSEIF "$(CFG)" == "benchmark - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\lib" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x1009 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 libexpat.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\win32\bin\Debug" + +!ENDIF + +# Begin Target + +# Name "benchmark - Win32 Release" +# Name "benchmark - Win32 Debug" +# Begin Source File + +SOURCE=.\benchmark.c +# End Source File +# End Target +# End Project diff --git a/vendor/libexpat/tests/benchmark/benchmark.dsw b/vendor/libexpat/tests/benchmark/benchmark.dsw new file mode 100644 index 0000000..db8504c --- /dev/null +++ b/vendor/libexpat/tests/benchmark/benchmark.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "benchmark"=.\benchmark.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name expat + End Project Dependency +}}} + +############################################################################### + +Project: "expat"=..\..\lib\expat.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/vendor/libexpat/tests/chardata.c b/vendor/libexpat/tests/chardata.c new file mode 100644 index 0000000..012499b --- /dev/null +++ b/vendor/libexpat/tests/chardata.c @@ -0,0 +1,127 @@ +/* Copyright (c) 1998-2003 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. + + chardata.c +*/ + +#ifdef HAVE_EXPAT_CONFIG_H +#include +#endif +#include "minicheck.h" + +#include +#include +#include + +#include "chardata.h" + + +static int +xmlstrlen(const XML_Char *s) +{ + int len = 0; + assert(s != NULL); + while (s[len] != 0) + ++len; + return len; +} + + +void +CharData_Init(CharData *storage) +{ + assert(storage != NULL); + storage->count = -1; +} + +void +CharData_AppendString(CharData *storage, const char *s) +{ + int maxchars = sizeof(storage->data) / sizeof(storage->data[0]); + int len; + + assert(s != NULL); + len = strlen(s); + if (storage->count < 0) + storage->count = 0; + if ((len + storage->count) > maxchars) { + len = (maxchars - storage->count); + } + if (len + storage->count < (int)sizeof(storage->data)) { + memcpy(storage->data + storage->count, s, len); + storage->count += len; + } +} + +void +CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len) +{ + int maxchars; + + assert(storage != NULL); + assert(s != NULL); + maxchars = sizeof(storage->data) / sizeof(storage->data[0]); + if (storage->count < 0) + storage->count = 0; + if (len < 0) + len = xmlstrlen(s); + if ((len + storage->count) > maxchars) { + len = (maxchars - storage->count); + } + if (len + storage->count < (int)sizeof(storage->data)) { + memcpy(storage->data + storage->count, s, + len * sizeof(storage->data[0])); + storage->count += len; + } +} + +int +CharData_CheckString(CharData *storage, const char *expected) +{ + char buffer[1280]; + int len; + int count; + + assert(storage != NULL); + assert(expected != NULL); + count = (storage->count < 0) ? 0 : storage->count; + len = strlen(expected); + if (len != count) { + if (sizeof(XML_Char) == 1) + sprintf(buffer, "wrong number of data characters:" + " got %d, expected %d:\n%s", count, len, storage->data); + else + sprintf(buffer, + "wrong number of data characters: got %d, expected %d", + count, len); + fail(buffer); + return 0; + } + if (memcmp(expected, storage->data, len) != 0) { + fail("got bad data bytes"); + return 0; + } + return 1; +} + +int +CharData_CheckXMLChars(CharData *storage, const XML_Char *expected) +{ + char buffer[1024]; + int len = xmlstrlen(expected); + int count; + + assert(storage != NULL); + count = (storage->count < 0) ? 0 : storage->count; + if (len != count) { + sprintf(buffer, "wrong number of data characters: got %d, expected %d", + count, len); + fail(buffer); + return 0; + } + if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) { + fail("got bad data bytes"); + return 0; + } + return 1; +} diff --git a/vendor/libexpat/tests/chardata.h b/vendor/libexpat/tests/chardata.h new file mode 100644 index 0000000..e8dc4ce --- /dev/null +++ b/vendor/libexpat/tests/chardata.h @@ -0,0 +1,40 @@ +/* chardata.h + + Interface to some helper routines used to accumulate and check text + and attribute content. +*/ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef XML_CHARDATA_H +#define XML_CHARDATA_H 1 + +#ifndef XML_VERSION +#include "expat.h" /* need XML_Char */ +#endif + + +typedef struct { + int count; /* # of chars, < 0 if not set */ + XML_Char data[1024]; +} CharData; + + +void CharData_Init(CharData *storage); + +void CharData_AppendString(CharData *storage, const char *s); + +void CharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len); + +int CharData_CheckString(CharData *storage, const char *s); + +int CharData_CheckXMLChars(CharData *storage, const XML_Char *s); + + +#endif /* XML_CHARDATA_H */ + +#ifdef __cplusplus +} +#endif diff --git a/vendor/libexpat/tests/minicheck.c b/vendor/libexpat/tests/minicheck.c new file mode 100644 index 0000000..5a1f5ed --- /dev/null +++ b/vendor/libexpat/tests/minicheck.c @@ -0,0 +1,183 @@ +/* Miniature re-implementation of the "check" library. + * + * This is intended to support just enough of check to run the Expat + * tests. This interface is based entirely on the portion of the + * check library being used. + */ + +#include +#include +#include +#include + +#include "internal.h" /* for UNUSED_P only */ +#include "minicheck.h" + +Suite * +suite_create(const char *name) +{ + Suite *suite = (Suite *) calloc(1, sizeof(Suite)); + if (suite != NULL) { + suite->name = name; + } + return suite; +} + +TCase * +tcase_create(const char *name) +{ + TCase *tc = (TCase *) calloc(1, sizeof(TCase)); + if (tc != NULL) { + tc->name = name; + } + return tc; +} + +void +suite_add_tcase(Suite *suite, TCase *tc) +{ + assert(suite != NULL); + assert(tc != NULL); + assert(tc->next_tcase == NULL); + + tc->next_tcase = suite->tests; + suite->tests = tc; +} + +void +tcase_add_checked_fixture(TCase *tc, + tcase_setup_function setup, + tcase_teardown_function teardown) +{ + assert(tc != NULL); + tc->setup = setup; + tc->teardown = teardown; +} + +void +tcase_add_test(TCase *tc, tcase_test_function test) +{ + assert(tc != NULL); + if (tc->allocated == tc->ntests) { + int nalloc = tc->allocated + 100; + size_t new_size = sizeof(tcase_test_function) * nalloc; + tcase_test_function *new_tests = realloc(tc->tests, new_size); + assert(new_tests != NULL); + if (new_tests != tc->tests) { + free(tc->tests); + tc->tests = new_tests; + } + tc->allocated = nalloc; + } + tc->tests[tc->ntests] = test; + tc->ntests++; +} + +SRunner * +srunner_create(Suite *suite) +{ + SRunner *runner = calloc(1, sizeof(SRunner)); + if (runner != NULL) { + runner->suite = suite; + } + return runner; +} + +static jmp_buf env; + +static char const *_check_current_function = NULL; +static int _check_current_lineno = -1; +static char const *_check_current_filename = NULL; + +void +_check_set_test_info(char const *function, char const *filename, int lineno) +{ + _check_current_function = function; + _check_current_lineno = lineno; + _check_current_filename = filename; +} + + +static void +add_failure(SRunner *runner, int verbosity) +{ + runner->nfailures++; + if (verbosity >= CK_VERBOSE) { + printf("%s:%d: %s\n", _check_current_filename, + _check_current_lineno, _check_current_function); + } +} + +void +srunner_run_all(SRunner *runner, int verbosity) +{ + Suite *suite; + TCase *tc; + assert(runner != NULL); + suite = runner->suite; + tc = suite->tests; + while (tc != NULL) { + int i; + for (i = 0; i < tc->ntests; ++i) { + runner->nchecks++; + + if (tc->setup != NULL) { + /* setup */ + if (setjmp(env)) { + add_failure(runner, verbosity); + continue; + } + tc->setup(); + } + /* test */ + if (setjmp(env)) { + add_failure(runner, verbosity); + continue; + } + (tc->tests[i])(); + + /* teardown */ + if (tc->teardown != NULL) { + if (setjmp(env)) { + add_failure(runner, verbosity); + continue; + } + tc->teardown(); + } + } + tc = tc->next_tcase; + } + if (verbosity) { + int passed = runner->nchecks - runner->nfailures; + double percentage = ((double) passed) / runner->nchecks; + int display = (int) (percentage * 100); + printf("%d%%: Checks: %d, Failed: %d\n", + display, runner->nchecks, runner->nfailures); + } +} + +void +_fail_unless(int UNUSED_P(condition), const char *UNUSED_P(file), int UNUSED_P(line), const char *msg) +{ + /* Always print the error message so it isn't lost. In this case, + we have a failure, so there's no reason to be quiet about what + it is. + */ + if (msg != NULL) + printf("%s", msg); + longjmp(env, 1); +} + +int +srunner_ntests_failed(SRunner *runner) +{ + assert(runner != NULL); + return runner->nfailures; +} + +void +srunner_free(SRunner *runner) +{ + free(runner->suite); + free(runner); +} diff --git a/vendor/libexpat/tests/minicheck.h b/vendor/libexpat/tests/minicheck.h new file mode 100644 index 0000000..9b06f51 --- /dev/null +++ b/vendor/libexpat/tests/minicheck.h @@ -0,0 +1,95 @@ +/* Miniature re-implementation of the "check" library. + * + * This is intended to support just enough of check to run the Expat + * tests. This interface is based entirely on the portion of the + * check library being used. + * + * This is *source* compatible, but not necessary *link* compatible. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define CK_NOFORK 0 +#define CK_FORK 1 + +#define CK_SILENT 0 +#define CK_NORMAL 1 +#define CK_VERBOSE 2 + +/* Workaround for Microsoft's compiler and Tru64 Unix systems where the + C compiler has a working __func__, but the C++ compiler only has a + working __FUNCTION__. This could be fixed in configure.in, but it's + not worth it right now. */ +#if defined (_MSC_VER) || (defined(__osf__) && defined(__cplusplus)) +#define __func__ __FUNCTION__ +#endif + +/* ISO C90 does not support '__func__' predefined identifier */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ < 199901) +# define __func__ "(unknown)" +#endif + +#define START_TEST(testname) static void testname(void) { \ + _check_set_test_info(__func__, __FILE__, __LINE__); \ + { +#define END_TEST } } + +#define fail(msg) _fail_unless(0, __FILE__, __LINE__, msg) + +typedef void (*tcase_setup_function)(void); +typedef void (*tcase_teardown_function)(void); +typedef void (*tcase_test_function)(void); + +typedef struct SRunner SRunner; +typedef struct Suite Suite; +typedef struct TCase TCase; + +struct SRunner { + Suite *suite; + int nchecks; + int nfailures; +}; + +struct Suite { + const char *name; + TCase *tests; +}; + +struct TCase { + const char *name; + tcase_setup_function setup; + tcase_teardown_function teardown; + tcase_test_function *tests; + int ntests; + int allocated; + TCase *next_tcase; +}; + + +/* Internal helper. */ +void _check_set_test_info(char const *function, + char const *filename, int lineno); + + +/* + * Prototypes for the actual implementation. + */ + +void _fail_unless(int condition, const char *file, int line, const char *msg); +Suite *suite_create(const char *name); +TCase *tcase_create(const char *name); +void suite_add_tcase(Suite *suite, TCase *tc); +void tcase_add_checked_fixture(TCase *, + tcase_setup_function, + tcase_teardown_function); +void tcase_add_test(TCase *tc, tcase_test_function test); +SRunner *srunner_create(Suite *suite); +void srunner_run_all(SRunner *runner, int verbosity); +int srunner_ntests_failed(SRunner *runner); +void srunner_free(SRunner *runner); + +#ifdef __cplusplus +} +#endif diff --git a/vendor/libexpat/tests/runtests.c b/vendor/libexpat/tests/runtests.c new file mode 100644 index 0000000..c0cdea9 --- /dev/null +++ b/vendor/libexpat/tests/runtests.c @@ -0,0 +1,1702 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. + + runtest.c : run the Expat test suite +*/ + +#ifdef HAVE_EXPAT_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include /* ptrdiff_t */ +#ifndef __cplusplus +# include +#endif + +#include "expat.h" +#include "chardata.h" +#include "internal.h" /* for UNUSED_P only */ +#include "minicheck.h" + +#if defined(__amigaos__) && defined(__USE_INLINE__) +#include +#endif + +#ifdef XML_LARGE_SIZE +#define XML_FMT_INT_MOD "ll" +#else +#define XML_FMT_INT_MOD "l" +#endif + +static XML_Parser parser; + + +static void +basic_setup(void) +{ + parser = XML_ParserCreate(NULL); + if (parser == NULL) + fail("Parser not created."); +} + +static void +basic_teardown(void) +{ + if (parser != NULL) + XML_ParserFree(parser); +} + +/* Generate a failure using the parser state to create an error message; + this should be used when the parser reports an error we weren't + expecting. +*/ +static void +_xml_failure(XML_Parser parser, const char *file, int line) +{ + char buffer[1024]; + enum XML_Error err = XML_GetErrorCode(parser); + sprintf(buffer, + " %d: %s (line %" XML_FMT_INT_MOD "u, offset %"\ + XML_FMT_INT_MOD "u)\n reported from %s, line %d\n", + err, + XML_ErrorString(err), + XML_GetCurrentLineNumber(parser), + XML_GetCurrentColumnNumber(parser), + file, line); + _fail_unless(0, file, line, buffer); +} + +static enum XML_Status +_XML_Parse_SINGLE_BYTES(XML_Parser parser, const char *s, int len, int isFinal) +{ + enum XML_Status res = XML_STATUS_ERROR; + int offset = 0; + + if (len == 0) { + return XML_Parse(parser, s, len, isFinal); + } + + for (; offset < len; offset++) { + const int innerIsFinal = (offset == len - 1) && isFinal; + const char c = s[offset]; /* to help out-of-bounds detection */ + res = XML_Parse(parser, &c, sizeof(char), innerIsFinal); + if (res != XML_STATUS_OK) { + return res; + } + } + return res; +} + +#define xml_failure(parser) _xml_failure((parser), __FILE__, __LINE__) + +static void +_expect_failure(const char *text, enum XML_Error errorCode, const char *errorMessage, + const char *file, int lineno) +{ + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK) + /* Hackish use of _fail_unless() macro, but let's us report + the right filename and line number. */ + _fail_unless(0, file, lineno, errorMessage); + if (XML_GetErrorCode(parser) != errorCode) + _xml_failure(parser, file, lineno); +} + +#define expect_failure(text, errorCode, errorMessage) \ + _expect_failure((text), (errorCode), (errorMessage), \ + __FILE__, __LINE__) + +/* Dummy handlers for when we need to set a handler to tickle a bug, + but it doesn't need to do anything. +*/ + +static void XMLCALL +dummy_start_doctype_handler(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(doctypeName), + const XML_Char *UNUSED_P(sysid), + const XML_Char *UNUSED_P(pubid), + int UNUSED_P(has_internal_subset)) +{} + +static void XMLCALL +dummy_end_doctype_handler(void *UNUSED_P(userData)) +{} + +static void XMLCALL +dummy_entity_decl_handler(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(entityName), + int UNUSED_P(is_parameter_entity), + const XML_Char *UNUSED_P(value), + int UNUSED_P(value_length), + const XML_Char *UNUSED_P(base), + const XML_Char *UNUSED_P(systemId), + const XML_Char *UNUSED_P(publicId), + const XML_Char *UNUSED_P(notationName)) +{} + +static void XMLCALL +dummy_notation_decl_handler(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(notationName), + const XML_Char *UNUSED_P(base), + const XML_Char *UNUSED_P(systemId), + const XML_Char *UNUSED_P(publicId)) +{} + +static void XMLCALL +dummy_element_decl_handler(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(name), + XML_Content *UNUSED_P(model)) +{} + +static void XMLCALL +dummy_attlist_decl_handler(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(elname), + const XML_Char *UNUSED_P(attname), + const XML_Char *UNUSED_P(att_type), + const XML_Char *UNUSED_P(dflt), + int UNUSED_P(isrequired)) +{} + +static void XMLCALL +dummy_comment_handler(void *UNUSED_P(userData), const XML_Char *UNUSED_P(data)) +{} + +static void XMLCALL +dummy_pi_handler(void *UNUSED_P(userData), const XML_Char *UNUSED_P(target), const XML_Char *UNUSED_P(data)) +{} + +static void XMLCALL +dummy_start_element(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(name), const XML_Char **UNUSED_P(atts)) +{} + + +/* + * Character & encoding tests. + */ + +START_TEST(test_nul_byte) +{ + char text[] = "\0"; + + /* test that a NUL byte (in US-ASCII data) is an error */ + if (_XML_Parse_SINGLE_BYTES(parser, text, sizeof(text) - 1, XML_TRUE) == XML_STATUS_OK) + fail("Parser did not report error on NUL-byte."); + if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(parser); +} +END_TEST + + +START_TEST(test_u0000_char) +{ + /* test that a NUL byte (in US-ASCII data) is an error */ + expect_failure("", + XML_ERROR_BAD_CHAR_REF, + "Parser did not report error on NUL-byte."); +} +END_TEST + +START_TEST(test_bom_utf8) +{ + /* This test is really just making sure we don't core on a UTF-8 BOM. */ + const char *text = "\357\273\277"; + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +START_TEST(test_bom_utf16_be) +{ + char text[] = "\376\377\0<\0e\0/\0>"; + + if (_XML_Parse_SINGLE_BYTES(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +START_TEST(test_bom_utf16_le) +{ + char text[] = "\377\376<\0e\0/\0>\0"; + + if (_XML_Parse_SINGLE_BYTES(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +static void XMLCALL +accumulate_characters(void *userData, const XML_Char *s, int len) +{ + CharData_AppendXMLChars((CharData *)userData, s, len); +} + +static void XMLCALL +accumulate_attribute(void *userData, const XML_Char *UNUSED_P(name), + const XML_Char **atts) +{ + CharData *storage = (CharData *)userData; + if (storage->count < 0 && atts != NULL && atts[0] != NULL) { + /* "accumulate" the value of the first attribute we see */ + CharData_AppendXMLChars(storage, atts[1], -1); + } +} + + +static void +_run_character_check(const XML_Char *text, const XML_Char *expected, + const char *file, int line) +{ + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetCharacterDataHandler(parser, accumulate_characters); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + _xml_failure(parser, file, line); + CharData_CheckXMLChars(&storage, expected); +} + +#define run_character_check(text, expected) \ + _run_character_check(text, expected, __FILE__, __LINE__) + +static void +_run_attribute_check(const XML_Char *text, const XML_Char *expected, + const char *file, int line) +{ + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetStartElementHandler(parser, accumulate_attribute); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + _xml_failure(parser, file, line); + CharData_CheckXMLChars(&storage, expected); +} + +#define run_attribute_check(text, expected) \ + _run_attribute_check(text, expected, __FILE__, __LINE__) + +/* Regression test for SF bug #491986. */ +START_TEST(test_danish_latin1) +{ + const char *text = + "\n" + "J\xF8rgen \xE6\xF8\xE5\xC6\xD8\xC5"; + run_character_check(text, + "J\xC3\xB8rgen \xC3\xA6\xC3\xB8\xC3\xA5\xC3\x86\xC3\x98\xC3\x85"); +} +END_TEST + + +/* Regression test for SF bug #514281. */ +START_TEST(test_french_charref_hexidecimal) +{ + const char *text = + "\n" + "éèàçêÈ"; + run_character_check(text, + "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); +} +END_TEST + +START_TEST(test_french_charref_decimal) +{ + const char *text = + "\n" + "éèàçêÈ"; + run_character_check(text, + "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); +} +END_TEST + +START_TEST(test_french_latin1) +{ + const char *text = + "\n" + "\xE9\xE8\xE0\xE7\xEa\xC8"; + run_character_check(text, + "\xC3\xA9\xC3\xA8\xC3\xA0\xC3\xA7\xC3\xAA\xC3\x88"); +} +END_TEST + +START_TEST(test_french_utf8) +{ + const char *text = + "\n" + "\xC3\xA9"; + run_character_check(text, "\xC3\xA9"); +} +END_TEST + +/* Regression test for SF bug #600479. + XXX There should be a test that exercises all legal XML Unicode + characters as PCDATA and attribute value content, and XML Name + characters as part of element and attribute names. +*/ +START_TEST(test_utf8_false_rejection) +{ + const char *text = "\xEF\xBA\xBF"; + run_character_check(text, "\xEF\xBA\xBF"); +} +END_TEST + +/* Regression test for SF bug #477667. + This test assures that any 8-bit character followed by a 7-bit + character will not be mistakenly interpreted as a valid UTF-8 + sequence. +*/ +START_TEST(test_illegal_utf8) +{ + char text[100]; + int i; + + for (i = 128; i <= 255; ++i) { + sprintf(text, "%ccd", i); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_OK) { + sprintf(text, + "expected token error for '%c' (ordinal %d) in UTF-8 text", + i, i); + fail(text); + } + else if (XML_GetErrorCode(parser) != XML_ERROR_INVALID_TOKEN) + xml_failure(parser); + /* Reset the parser since we use the same parser repeatedly. */ + XML_ParserReset(parser, NULL); + } +} +END_TEST + + +/* Examples, not masks: */ +#define UTF8_LEAD_1 "\x7f" /* 0b01111111 */ +#define UTF8_LEAD_2 "\xdf" /* 0b11011111 */ +#define UTF8_LEAD_3 "\xef" /* 0b11101111 */ +#define UTF8_LEAD_4 "\xf7" /* 0b11110111 */ +#define UTF8_FOLLOW "\xbf" /* 0b10111111 */ + +START_TEST(test_utf8_auto_align) +{ + struct TestCase { + ptrdiff_t expectedMovementInChars; + const char * input; + }; + + struct TestCase cases[] = { + {00, ""}, + + {00, UTF8_LEAD_1}, + + {-1, UTF8_LEAD_2}, + {00, UTF8_LEAD_2 UTF8_FOLLOW}, + + {-1, UTF8_LEAD_3}, + {-2, UTF8_LEAD_3 UTF8_FOLLOW}, + {00, UTF8_LEAD_3 UTF8_FOLLOW UTF8_FOLLOW}, + + {-1, UTF8_LEAD_4}, + {-2, UTF8_LEAD_4 UTF8_FOLLOW}, + {-3, UTF8_LEAD_4 UTF8_FOLLOW UTF8_FOLLOW}, + {00, UTF8_LEAD_4 UTF8_FOLLOW UTF8_FOLLOW UTF8_FOLLOW}, + }; + + size_t i = 0; + bool success = true; + for (; i < sizeof(cases) / sizeof(*cases); i++) { + const char * fromLim = cases[i].input + strlen(cases[i].input); + const char * const fromLimInitially = fromLim; + ptrdiff_t actualMovementInChars; + + align_limit_to_full_utf8_characters(cases[i].input, &fromLim); + + actualMovementInChars = (fromLim - fromLimInitially); + if (actualMovementInChars != cases[i].expectedMovementInChars) { + size_t j = 0; + success = false; + printf("[-] UTF-8 case %2lu: Expected movement by %2ld chars" + ", actually moved by %2ld chars: \"", + i + 1, cases[i].expectedMovementInChars, actualMovementInChars); + for (; j < strlen(cases[i].input); j++) { + printf("\\x%02x", (unsigned char)cases[i].input[j]); + } + printf("\"\n"); + } + } + + if (! success) { + fail("UTF-8 auto-alignment is not bullet-proof\n"); + } +} +END_TEST + +START_TEST(test_utf16) +{ + /* + some text + */ + char text[] = + "\000<\000?\000x\000m\000\154\000 \000v\000e\000r\000s\000i\000o" + "\000n\000=\000'\0001\000.\000\060\000'\000 \000e\000n\000c\000o" + "\000d\000i\000n\000g\000=\000'\000U\000T\000F\000-\0001\000\066" + "\000'\000?\000>\000\n" + "\000<\000d\000o\000c\000 \000a\000=\000'\0001\0002\0003\000'" + "\000>\000s\000o\000m\000e\000 \000t\000e\000x\000t\000<\000/" + "\000d\000o\000c\000>"; + if (_XML_Parse_SINGLE_BYTES(parser, text, sizeof(text)-1, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +START_TEST(test_utf16_le_epilog_newline) +{ + unsigned int first_chunk_bytes = 17; + char text[] = + "\xFF\xFE" /* BOM */ + "<\000e\000/\000>\000" /* document element */ + "\r\000\n\000\r\000\n\000"; /* epilog */ + + if (first_chunk_bytes >= sizeof(text) - 1) + fail("bad value of first_chunk_bytes"); + if ( _XML_Parse_SINGLE_BYTES(parser, text, first_chunk_bytes, XML_FALSE) + == XML_STATUS_ERROR) + xml_failure(parser); + else { + enum XML_Status rc; + rc = _XML_Parse_SINGLE_BYTES(parser, text + first_chunk_bytes, + sizeof(text) - first_chunk_bytes - 1, XML_TRUE); + if (rc == XML_STATUS_ERROR) + xml_failure(parser); + } +} +END_TEST + +/* Regression test for SF bug #481609, #774028. */ +START_TEST(test_latin1_umlauts) +{ + const char *text = + "\n" + "\xE4 \xF6 \xFC ä ö ü ä ö ü >"; + const char *utf8 = + "\xC3\xA4 \xC3\xB6 \xC3\xBC " + "\xC3\xA4 \xC3\xB6 \xC3\xBC " + "\xC3\xA4 \xC3\xB6 \xC3\xBC >"; + run_character_check(text, utf8); + XML_ParserReset(parser, NULL); + run_attribute_check(text, utf8); +} +END_TEST + +/* Regression test #1 for SF bug #653180. */ +START_TEST(test_line_number_after_parse) +{ + const char *text = + "\n" + "\n" + "\n"; + XML_Size lineno; + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR) + xml_failure(parser); + lineno = XML_GetCurrentLineNumber(parser); + if (lineno != 4) { + char buffer[100]; + sprintf(buffer, + "expected 4 lines, saw %" XML_FMT_INT_MOD "u", lineno); + fail(buffer); + } +} +END_TEST + +/* Regression test #2 for SF bug #653180. */ +START_TEST(test_column_number_after_parse) +{ + const char *text = ""; + XML_Size colno; + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_FALSE) == XML_STATUS_ERROR) + xml_failure(parser); + colno = XML_GetCurrentColumnNumber(parser); + if (colno != 11) { + char buffer[100]; + sprintf(buffer, + "expected 11 columns, saw %" XML_FMT_INT_MOD "u", colno); + fail(buffer); + } +} +END_TEST + +static void XMLCALL +start_element_event_handler2(void *userData, const XML_Char *name, + const XML_Char **UNUSED_P(attr)) +{ + CharData *storage = (CharData *) userData; + char buffer[100]; + + sprintf(buffer, + "<%s> at col:%" XML_FMT_INT_MOD "u line:%"\ + XML_FMT_INT_MOD "u\n", name, + XML_GetCurrentColumnNumber(parser), + XML_GetCurrentLineNumber(parser)); + CharData_AppendString(storage, buffer); +} + +static void XMLCALL +end_element_event_handler2(void *userData, const XML_Char *name) +{ + CharData *storage = (CharData *) userData; + char buffer[100]; + + sprintf(buffer, + " at col:%" XML_FMT_INT_MOD "u line:%"\ + XML_FMT_INT_MOD "u\n", name, + XML_GetCurrentColumnNumber(parser), + XML_GetCurrentLineNumber(parser)); + CharData_AppendString(storage, buffer); +} + +/* Regression test #3 for SF bug #653180. */ +START_TEST(test_line_and_column_numbers_inside_handlers) +{ + const char *text = + "\n" /* Unix end-of-line */ + " \r\n" /* Windows end-of-line */ + " \r" /* Mac OS end-of-line */ + " \n" + " \n" + " \n" + " \n" + ""; + const char *expected = + " at col:0 line:1\n" + " at col:2 line:2\n" + " at col:4 line:3\n" + " at col:8 line:3\n" + " at col:2 line:4\n" + " at col:2 line:5\n" + " at col:4 line:6\n" + " at col:8 line:6\n" + " at col:2 line:7\n" + " at col:0 line:8\n"; + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetStartElementHandler(parser, start_element_event_handler2); + XML_SetEndElementHandler(parser, end_element_event_handler2); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + + CharData_CheckString(&storage, expected); +} +END_TEST + +/* Regression test #4 for SF bug #653180. */ +START_TEST(test_line_number_after_error) +{ + const char *text = + "\n" + " \n" + " "; /* missing */ + XML_Size lineno; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR) + fail("Expected a parse error"); + + lineno = XML_GetCurrentLineNumber(parser); + if (lineno != 3) { + char buffer[100]; + sprintf(buffer, "expected 3 lines, saw %" XML_FMT_INT_MOD "u", lineno); + fail(buffer); + } +} +END_TEST + +/* Regression test #5 for SF bug #653180. */ +START_TEST(test_column_number_after_error) +{ + const char *text = + "\n" + " \n" + " "; /* missing */ + XML_Size colno; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_FALSE) != XML_STATUS_ERROR) + fail("Expected a parse error"); + + colno = XML_GetCurrentColumnNumber(parser); + if (colno != 4) { + char buffer[100]; + sprintf(buffer, + "expected 4 columns, saw %" XML_FMT_INT_MOD "u", colno); + fail(buffer); + } +} +END_TEST + +/* Regression test for SF bug #478332. */ +START_TEST(test_really_long_lines) +{ + /* This parses an input line longer than INIT_DATA_BUF_SIZE + characters long (defined to be 1024 in xmlparse.c). We take a + really cheesy approach to building the input buffer, because + this avoids writing bugs in buffer-filling code. + */ + const char *text = + "" + /* 64 chars */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + /* until we have at least 1024 characters on the line: */ + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-+" + ""; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + + +/* + * Element event tests. + */ + +static void XMLCALL +end_element_event_handler(void *userData, const XML_Char *name) +{ + CharData *storage = (CharData *) userData; + CharData_AppendString(storage, "/"); + CharData_AppendXMLChars(storage, name, -1); +} + +START_TEST(test_end_element_events) +{ + const char *text = ""; + const char *expected = "/c/b/f/d/a"; + CharData storage; + + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetEndElementHandler(parser, end_element_event_handler); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + CharData_CheckString(&storage, expected); +} +END_TEST + + +/* + * Attribute tests. + */ + +/* Helpers used by the following test; this checks any "attr" and "refs" + attributes to make sure whitespace has been normalized. + + Return true if whitespace has been normalized in a string, using + the rules for attribute value normalization. The 'is_cdata' flag + is needed since CDATA attributes don't need to have multiple + whitespace characters collapsed to a single space, while other + attribute data types do. (Section 3.3.3 of the recommendation.) +*/ +static int +is_whitespace_normalized(const XML_Char *s, int is_cdata) +{ + int blanks = 0; + int at_start = 1; + while (*s) { + if (*s == ' ') + ++blanks; + else if (*s == '\t' || *s == '\n' || *s == '\r') + return 0; + else { + if (at_start) { + at_start = 0; + if (blanks && !is_cdata) + /* illegal leading blanks */ + return 0; + } + else if (blanks > 1 && !is_cdata) + return 0; + blanks = 0; + } + ++s; + } + if (blanks && !is_cdata) + return 0; + return 1; +} + +/* Check the attribute whitespace checker: */ +static void +testhelper_is_whitespace_normalized(void) +{ + assert(is_whitespace_normalized("abc", 0)); + assert(is_whitespace_normalized("abc", 1)); + assert(is_whitespace_normalized("abc def ghi", 0)); + assert(is_whitespace_normalized("abc def ghi", 1)); + assert(!is_whitespace_normalized(" abc def ghi", 0)); + assert(is_whitespace_normalized(" abc def ghi", 1)); + assert(!is_whitespace_normalized("abc def ghi", 0)); + assert(is_whitespace_normalized("abc def ghi", 1)); + assert(!is_whitespace_normalized("abc def ghi ", 0)); + assert(is_whitespace_normalized("abc def ghi ", 1)); + assert(!is_whitespace_normalized(" ", 0)); + assert(is_whitespace_normalized(" ", 1)); + assert(!is_whitespace_normalized("\t", 0)); + assert(!is_whitespace_normalized("\t", 1)); + assert(!is_whitespace_normalized("\n", 0)); + assert(!is_whitespace_normalized("\n", 1)); + assert(!is_whitespace_normalized("\r", 0)); + assert(!is_whitespace_normalized("\r", 1)); + assert(!is_whitespace_normalized("abc\t def", 1)); +} + +static void XMLCALL +check_attr_contains_normalized_whitespace(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(name), + const XML_Char **atts) +{ + int i; + for (i = 0; atts[i] != NULL; i += 2) { + const XML_Char *attrname = atts[i]; + const XML_Char *value = atts[i + 1]; + if (strcmp("attr", attrname) == 0 + || strcmp("ents", attrname) == 0 + || strcmp("refs", attrname) == 0) { + if (!is_whitespace_normalized(value, 0)) { + char buffer[256]; + sprintf(buffer, "attribute value not normalized: %s='%s'", + attrname, value); + fail(buffer); + } + } + } +} + +START_TEST(test_attr_whitespace_normalization) +{ + const char *text = + "\n" + "]>\n" + "\n" + " \n" + " \n" + ""; + + XML_SetStartElementHandler(parser, + check_attr_contains_normalized_whitespace); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + + +/* + * XML declaration tests. + */ + +START_TEST(test_xmldecl_misplaced) +{ + expect_failure("\n" + "\n" + "", + XML_ERROR_MISPLACED_XML_PI, + "failed to report misplaced XML declaration"); +} +END_TEST + +/* Regression test for SF bug #584832. */ +static int XMLCALL +UnknownEncodingHandler(void *UNUSED_P(data),const XML_Char *encoding,XML_Encoding *info) +{ + if (strcmp(encoding,"unsupported-encoding") == 0) { + int i; + for (i = 0; i < 256; ++i) + info->map[i] = i; + info->data = NULL; + info->convert = NULL; + info->release = NULL; + return XML_STATUS_OK; + } + return XML_STATUS_ERROR; +} + +START_TEST(test_unknown_encoding_internal_entity) +{ + const char *text = + "\n" + "]>\n" + ""; + + XML_SetUnknownEncodingHandler(parser, UnknownEncodingHandler, NULL); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +/* Regression test for SF bug #620106. */ +static int XMLCALL +external_entity_loader_set_encoding(XML_Parser parser, + const XML_Char *context, + const XML_Char *UNUSED_P(base), + const XML_Char *UNUSED_P(systemId), + const XML_Char *UNUSED_P(publicId)) +{ + /* This text says it's an unsupported encoding, but it's really + UTF-8, which we tell Expat using XML_SetEncoding(). + */ + const char *text = + "" + "\xC3\xA9"; + XML_Parser extparser; + + extparser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (extparser == NULL) + fail("Could not create external entity parser."); + if (!XML_SetEncoding(extparser, "utf-8")) + fail("XML_SetEncoding() ignored for external entity"); + if ( _XML_Parse_SINGLE_BYTES(extparser, text, strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(parser); + return 0; + } + return 1; +} + +START_TEST(test_ext_entity_set_encoding) +{ + const char *text = + "\n" + "]>\n" + "&en;"; + + XML_SetExternalEntityRefHandler(parser, + external_entity_loader_set_encoding); + run_character_check(text, "\xC3\xA9"); +} +END_TEST + +/* Test that no error is reported for unknown entities if we don't + read an external subset. This was fixed in Expat 1.95.5. +*/ +START_TEST(test_wfc_undeclared_entity_unread_external_subset) { + const char *text = + "\n" + "&entity;"; + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +/* Test that an error is reported for unknown entities if we don't + have an external subset. +*/ +START_TEST(test_wfc_undeclared_entity_no_external_subset) { + expect_failure("&entity;", + XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity w/out a DTD."); +} +END_TEST + +/* Test that an error is reported for unknown entities if we don't + read an external subset, but have been declared standalone. +*/ +START_TEST(test_wfc_undeclared_entity_standalone) { + const char *text = + "\n" + "\n" + "&entity;"; + + expect_failure(text, + XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity (standalone)."); +} +END_TEST + +static int XMLCALL +external_entity_loader(XML_Parser parser, + const XML_Char *context, + const XML_Char *UNUSED_P(base), + const XML_Char *UNUSED_P(systemId), + const XML_Char *UNUSED_P(publicId)) +{ + char *text = (char *)XML_GetUserData(parser); + XML_Parser extparser; + + extparser = XML_ExternalEntityParserCreate(parser, context, NULL); + if (extparser == NULL) + fail("Could not create external entity parser."); + if ( _XML_Parse_SINGLE_BYTES(extparser, text, strlen(text), XML_TRUE) + == XML_STATUS_ERROR) { + xml_failure(parser); + return XML_STATUS_ERROR; + } + return XML_STATUS_OK; +} + +/* Test that an error is reported for unknown entities if we have read + an external subset, and standalone is true. +*/ +START_TEST(test_wfc_undeclared_entity_with_external_subset_standalone) { + const char *text = + "\n" + "\n" + "&entity;"; + char foo_text[] = + ""; + + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(parser, foo_text); + XML_SetExternalEntityRefHandler(parser, external_entity_loader); + expect_failure(text, + XML_ERROR_UNDEFINED_ENTITY, + "Parser did not report undefined entity (external DTD)."); +} +END_TEST + +/* Test that no error is reported for unknown entities if we have read + an external subset, and standalone is false. +*/ +START_TEST(test_wfc_undeclared_entity_with_external_subset) { + const char *text = + "\n" + "\n" + "&entity;"; + char foo_text[] = + ""; + + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetUserData(parser, foo_text); + XML_SetExternalEntityRefHandler(parser, external_entity_loader); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +START_TEST(test_wfc_no_recursive_entity_refs) +{ + const char *text = + "\n" + "]>\n" + "&entity;"; + + expect_failure(text, + XML_ERROR_RECURSIVE_ENTITY_REF, + "Parser did not report recursive entity reference."); +} +END_TEST + +/* Regression test for SF bug #483514. */ +START_TEST(test_dtd_default_handling) +{ + const char *text = + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "]>"; + + XML_SetDefaultHandler(parser, accumulate_characters); + XML_SetDoctypeDeclHandler(parser, + dummy_start_doctype_handler, + dummy_end_doctype_handler); + XML_SetEntityDeclHandler(parser, dummy_entity_decl_handler); + XML_SetNotationDeclHandler(parser, dummy_notation_decl_handler); + XML_SetElementDeclHandler(parser, dummy_element_decl_handler); + XML_SetAttlistDeclHandler(parser, dummy_attlist_decl_handler); + XML_SetProcessingInstructionHandler(parser, dummy_pi_handler); + XML_SetCommentHandler(parser, dummy_comment_handler); + run_character_check(text, "\n\n\n\n\n\n\n"); +} +END_TEST + +/* See related SF bug #673791. + When namespace processing is enabled, setting the namespace URI for + a prefix is not allowed; this test ensures that it *is* allowed + when namespace processing is not enabled. + (See Namespaces in XML, section 2.) +*/ +START_TEST(test_empty_ns_without_namespaces) +{ + const char *text = + "\n" + " \n" + ""; + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +/* Regression test for SF bug #824420. + Checks that an xmlns:prefix attribute set in an attribute's default + value isn't misinterpreted. +*/ +START_TEST(test_ns_in_attribute_default_without_namespaces) +{ + const char *text = + "\n" + " ]>\n" + ""; + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +static const char *long_character_data_text = + "" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + "012345678901234567890123456789012345678901234567890123456789" + ""; + +static XML_Bool resumable = XML_FALSE; + +static void +clearing_aborting_character_handler(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(s), int UNUSED_P(len)) +{ + XML_StopParser(parser, resumable); + XML_SetCharacterDataHandler(parser, NULL); +} + +/* Regression test for SF bug #1515266: missing check of stopped + parser in doContext() 'for' loop. */ +START_TEST(test_stop_parser_between_char_data_calls) +{ + /* The sample data must be big enough that there are two calls to + the character data handler from within the inner "for" loop of + the XML_TOK_DATA_CHARS case in doContent(), and the character + handler must stop the parser and clear the character data + handler. + */ + const char *text = long_character_data_text; + + XML_SetCharacterDataHandler(parser, clearing_aborting_character_handler); + resumable = XML_FALSE; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) != XML_STATUS_ERROR) + xml_failure(parser); + if (XML_GetErrorCode(parser) != XML_ERROR_ABORTED) + xml_failure(parser); +} +END_TEST + +/* Regression test for SF bug #1515266: missing check of stopped + parser in doContext() 'for' loop. */ +START_TEST(test_suspend_parser_between_char_data_calls) +{ + /* The sample data must be big enough that there are two calls to + the character data handler from within the inner "for" loop of + the XML_TOK_DATA_CHARS case in doContent(), and the character + handler must stop the parser and clear the character data + handler. + */ + const char *text = long_character_data_text; + + XML_SetCharacterDataHandler(parser, clearing_aborting_character_handler); + resumable = XML_TRUE; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) != XML_STATUS_SUSPENDED) + xml_failure(parser); + if (XML_GetErrorCode(parser) != XML_ERROR_NONE) + xml_failure(parser); +} +END_TEST + +START_TEST(test_good_cdata_ascii) +{ + const char *text = "Hello, world!]]>"; + const char *expected = "Hello, world!"; + + CharData storage; + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetCharacterDataHandler(parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_good_cdata_utf16) +{ + /* Test data is: + * + * + */ + const char text[] = + "\0<\0?\0x\0m\0l\0" + " \0v\0e\0r\0s\0i\0o\0n\0=\0'\0\x31\0.\0\x30\0'\0" + " \0e\0n\0c\0o\0d\0i\0n\0g\0=\0'\0u\0t\0f\0-\0""1\0""6\0'" + "\0?\0>\0\n" + "\0<\0a\0>\0<\0!\0[\0C\0D\0A\0T\0A\0[\0h\0e\0l\0l\0o\0]\0]\0>\0<\0/\0a\0>"; + const char *expected = "hello"; + + CharData storage; + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetCharacterDataHandler(parser, accumulate_characters); + + if (_XML_Parse_SINGLE_BYTES(parser, text, sizeof(text) - 1, XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + CharData_CheckXMLChars(&storage, expected); +} +END_TEST + +START_TEST(test_bad_cdata) +{ + struct CaseData { + const char *text; + enum XML_Error expectedError; + }; + + struct CaseData cases[] = { + {"<", XML_ERROR_UNCLOSED_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_UNCLOSED_TOKEN}, /* ?! */ + {"", XML_ERROR_UNCLOSED_TOKEN}, /* ?! */ + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + {"", XML_ERROR_INVALID_TOKEN}, + + {"", XML_ERROR_UNCLOSED_CDATA_SECTION}, + {"", XML_ERROR_UNCLOSED_CDATA_SECTION}, + {"", XML_ERROR_UNCLOSED_CDATA_SECTION} + }; + + size_t i = 0; + for (; i < sizeof(cases) / sizeof(struct CaseData); i++) { + const enum XML_Status actualStatus = _XML_Parse_SINGLE_BYTES( + parser, cases[i].text, strlen(cases[i].text), XML_TRUE); + const enum XML_Error actualError = XML_GetErrorCode(parser); + + assert(actualStatus == XML_STATUS_ERROR); + + if (actualError != cases[i].expectedError) { + char message[100]; + sprintf(message, "Expected error %d but got error %d for case %u: \"%s\"\n", + cases[i].expectedError, actualError, (unsigned int)i + 1, cases[i].text); + fail(message); + } + + XML_ParserReset(parser, NULL); + } +} +END_TEST + + +/* + * Namespaces tests. + */ + +static void +namespace_setup(void) +{ + parser = XML_ParserCreateNS(NULL, ' '); + if (parser == NULL) + fail("Parser not created."); +} + +static void +namespace_teardown(void) +{ + basic_teardown(); +} + +/* Check that an element name and attribute name match the expected values. + The expected values are passed as an array reference of string pointers + provided as the userData argument; the first is the expected + element name, and the second is the expected attribute name. +*/ +static void XMLCALL +triplet_start_checker(void *userData, const XML_Char *name, + const XML_Char **atts) +{ + char **elemstr = (char **)userData; + char buffer[1024]; + if (strcmp(elemstr[0], name) != 0) { + sprintf(buffer, "unexpected start string: '%s'", name); + fail(buffer); + } + if (strcmp(elemstr[1], atts[0]) != 0) { + sprintf(buffer, "unexpected attribute string: '%s'", atts[0]); + fail(buffer); + } +} + +/* Check that the element name passed to the end-element handler matches + the expected value. The expected value is passed as the first element + in an array of strings passed as the userData argument. +*/ +static void XMLCALL +triplet_end_checker(void *userData, const XML_Char *name) +{ + char **elemstr = (char **)userData; + if (strcmp(elemstr[0], name) != 0) { + char buffer[1024]; + sprintf(buffer, "unexpected end string: '%s'", name); + fail(buffer); + } +} + +START_TEST(test_return_ns_triplet) +{ + const char *text = + ""; + const char *elemstr[] = { + "http://expat.sf.net/ e foo", + "http://expat.sf.net/ a bar" + }; + XML_SetReturnNSTriplet(parser, XML_TRUE); + XML_SetUserData(parser, elemstr); + XML_SetElementHandler(parser, triplet_start_checker, triplet_end_checker); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +static void XMLCALL +overwrite_start_checker(void *userData, const XML_Char *name, + const XML_Char **atts) +{ + CharData *storage = (CharData *) userData; + CharData_AppendString(storage, "start "); + CharData_AppendXMLChars(storage, name, -1); + while (*atts != NULL) { + CharData_AppendString(storage, "\nattribute "); + CharData_AppendXMLChars(storage, *atts, -1); + atts += 2; + } + CharData_AppendString(storage, "\n"); +} + +static void XMLCALL +overwrite_end_checker(void *userData, const XML_Char *name) +{ + CharData *storage = (CharData *) userData; + CharData_AppendString(storage, "end "); + CharData_AppendXMLChars(storage, name, -1); + CharData_AppendString(storage, "\n"); +} + +static void +run_ns_tagname_overwrite_test(const char *text, const char *result) +{ + CharData storage; + CharData_Init(&storage); + XML_SetUserData(parser, &storage); + XML_SetElementHandler(parser, + overwrite_start_checker, overwrite_end_checker); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); + CharData_CheckString(&storage, result); +} + +/* Regression test for SF bug #566334. */ +START_TEST(test_ns_tagname_overwrite) +{ + const char *text = + "\n" + " \n" + " \n" + ""; + const char *result = + "start http://xml.libexpat.org/ e\n" + "start http://xml.libexpat.org/ f\n" + "attribute http://xml.libexpat.org/ attr\n" + "end http://xml.libexpat.org/ f\n" + "start http://xml.libexpat.org/ g\n" + "attribute http://xml.libexpat.org/ attr2\n" + "end http://xml.libexpat.org/ g\n" + "end http://xml.libexpat.org/ e\n"; + run_ns_tagname_overwrite_test(text, result); +} +END_TEST + +/* Regression test for SF bug #566334. */ +START_TEST(test_ns_tagname_overwrite_triplet) +{ + const char *text = + "\n" + " \n" + " \n" + ""; + const char *result = + "start http://xml.libexpat.org/ e n\n" + "start http://xml.libexpat.org/ f n\n" + "attribute http://xml.libexpat.org/ attr n\n" + "end http://xml.libexpat.org/ f n\n" + "start http://xml.libexpat.org/ g n\n" + "attribute http://xml.libexpat.org/ attr2 n\n" + "end http://xml.libexpat.org/ g n\n" + "end http://xml.libexpat.org/ e n\n"; + XML_SetReturnNSTriplet(parser, XML_TRUE); + run_ns_tagname_overwrite_test(text, result); +} +END_TEST + + +/* Regression test for SF bug #620343. */ +static void XMLCALL +start_element_fail(void *UNUSED_P(userData), + const XML_Char *UNUSED_P(name), const XML_Char **UNUSED_P(atts)) +{ + /* We should never get here. */ + fail("should never reach start_element_fail()"); +} + +static void XMLCALL +start_ns_clearing_start_element(void *userData, + const XML_Char *UNUSED_P(prefix), + const XML_Char *UNUSED_P(uri)) +{ + XML_SetStartElementHandler((XML_Parser) userData, NULL); +} + +START_TEST(test_start_ns_clears_start_element) +{ + /* This needs to use separate start/end tags; using the empty tag + syntax doesn't cause the problematic path through Expat to be + taken. + */ + const char *text = ""; + + XML_SetStartElementHandler(parser, start_element_fail); + XML_SetStartNamespaceDeclHandler(parser, start_ns_clearing_start_element); + XML_UseParserAsHandlerArg(parser); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +/* Regression test for SF bug #616863. */ +static int XMLCALL +external_entity_handler(XML_Parser parser, + const XML_Char *context, + const XML_Char *UNUSED_P(base), + const XML_Char *UNUSED_P(systemId), + const XML_Char *UNUSED_P(publicId)) +{ + intptr_t callno = 1 + (intptr_t)XML_GetUserData(parser); + const char *text; + XML_Parser p2; + + if (callno == 1) + text = ("\n" + "\n" + "\n"); + else + text = ("" + ""); + + XML_SetUserData(parser, (void *) callno); + p2 = XML_ExternalEntityParserCreate(parser, context, NULL); + if (_XML_Parse_SINGLE_BYTES(p2, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) { + xml_failure(p2); + return 0; + } + XML_ParserFree(p2); + return 1; +} + +START_TEST(test_default_ns_from_ext_subset_and_ext_ge) +{ + const char *text = + "\n" + "\n" + "]>\n" + "\n" + "&en;\n" + ""; + + XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS); + XML_SetExternalEntityRefHandler(parser, external_entity_handler); + /* We actually need to set this handler to tickle this bug. */ + XML_SetStartElementHandler(parser, dummy_start_element); + XML_SetUserData(parser, NULL); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +/* Regression test #1 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_1) +{ + const char *text = + "\n" + " \n" + ""; + + expect_failure(text, + XML_ERROR_UNDECLARING_PREFIX, + "Did not report re-setting namespace" + " URI with prefix to ''."); +} +END_TEST + +/* Regression test #2 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_2) +{ + const char *text = + "\n" + ""; + + expect_failure(text, + XML_ERROR_UNDECLARING_PREFIX, + "Did not report setting namespace URI with prefix to ''."); +} +END_TEST + +/* Regression test #3 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_3) +{ + const char *text = + "\n" + " \n" + "]>\n" + ""; + + expect_failure(text, + XML_ERROR_UNDECLARING_PREFIX, + "Didn't report attr default setting NS w/ prefix to ''."); +} +END_TEST + +/* Regression test #4 for SF bug #673791. */ +START_TEST(test_ns_prefix_with_empty_uri_4) +{ + const char *text = + "\n" + " \n" + "]>\n" + ""; + /* Packaged info expected by the end element handler; + the weird structuring lets us re-use the triplet_end_checker() + function also used for another test. */ + const char *elemstr[] = { + "http://xml.libexpat.org/ doc prefix" + }; + XML_SetReturnNSTriplet(parser, XML_TRUE); + XML_SetUserData(parser, elemstr); + XML_SetEndElementHandler(parser, triplet_end_checker); + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +START_TEST(test_ns_default_with_empty_uri) +{ + const char *text = + "\n" + " \n" + ""; + if (_XML_Parse_SINGLE_BYTES(parser, text, strlen(text), XML_TRUE) == XML_STATUS_ERROR) + xml_failure(parser); +} +END_TEST + +/* Regression test for SF bug #692964: two prefixes for one namespace. */ +START_TEST(test_ns_duplicate_attrs_diff_prefixes) +{ + const char *text = + ""; + expect_failure(text, + XML_ERROR_DUPLICATE_ATTRIBUTE, + "did not report multiple attributes with same URI+name"); +} +END_TEST + +/* Regression test for SF bug #695401: unbound prefix. */ +START_TEST(test_ns_unbound_prefix_on_attribute) +{ + const char *text = ""; + expect_failure(text, + XML_ERROR_UNBOUND_PREFIX, + "did not report unbound prefix on attribute"); +} +END_TEST + +/* Regression test for SF bug #695401: unbound prefix. */ +START_TEST(test_ns_unbound_prefix_on_element) +{ + const char *text = ""; + expect_failure(text, + XML_ERROR_UNBOUND_PREFIX, + "did not report unbound prefix on element"); +} +END_TEST + +static Suite * +make_suite(void) +{ + Suite *s = suite_create("basic"); + TCase *tc_basic = tcase_create("basic tests"); + TCase *tc_namespace = tcase_create("XML namespaces"); + + suite_add_tcase(s, tc_basic); + tcase_add_checked_fixture(tc_basic, basic_setup, basic_teardown); + tcase_add_test(tc_basic, test_nul_byte); + tcase_add_test(tc_basic, test_u0000_char); + tcase_add_test(tc_basic, test_bom_utf8); + tcase_add_test(tc_basic, test_bom_utf16_be); + tcase_add_test(tc_basic, test_bom_utf16_le); + tcase_add_test(tc_basic, test_illegal_utf8); + tcase_add_test(tc_basic, test_utf8_auto_align); + tcase_add_test(tc_basic, test_utf16); + tcase_add_test(tc_basic, test_utf16_le_epilog_newline); + tcase_add_test(tc_basic, test_latin1_umlauts); + /* Regression test for SF bug #491986. */ + tcase_add_test(tc_basic, test_danish_latin1); + /* Regression test for SF bug #514281. */ + tcase_add_test(tc_basic, test_french_charref_hexidecimal); + tcase_add_test(tc_basic, test_french_charref_decimal); + tcase_add_test(tc_basic, test_french_latin1); + tcase_add_test(tc_basic, test_french_utf8); + tcase_add_test(tc_basic, test_utf8_false_rejection); + tcase_add_test(tc_basic, test_line_number_after_parse); + tcase_add_test(tc_basic, test_column_number_after_parse); + tcase_add_test(tc_basic, test_line_and_column_numbers_inside_handlers); + tcase_add_test(tc_basic, test_line_number_after_error); + tcase_add_test(tc_basic, test_column_number_after_error); + tcase_add_test(tc_basic, test_really_long_lines); + tcase_add_test(tc_basic, test_end_element_events); + tcase_add_test(tc_basic, test_attr_whitespace_normalization); + tcase_add_test(tc_basic, test_xmldecl_misplaced); + tcase_add_test(tc_basic, test_unknown_encoding_internal_entity); + tcase_add_test(tc_basic, + test_wfc_undeclared_entity_unread_external_subset); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_no_external_subset); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_standalone); + tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset); + tcase_add_test(tc_basic, + test_wfc_undeclared_entity_with_external_subset_standalone); + tcase_add_test(tc_basic, test_wfc_no_recursive_entity_refs); + tcase_add_test(tc_basic, test_ext_entity_set_encoding); + tcase_add_test(tc_basic, test_dtd_default_handling); + tcase_add_test(tc_basic, test_empty_ns_without_namespaces); + tcase_add_test(tc_basic, test_ns_in_attribute_default_without_namespaces); + tcase_add_test(tc_basic, test_stop_parser_between_char_data_calls); + tcase_add_test(tc_basic, test_suspend_parser_between_char_data_calls); + tcase_add_test(tc_basic, test_good_cdata_ascii); + tcase_add_test(tc_basic, test_good_cdata_utf16); + tcase_add_test(tc_basic, test_bad_cdata); + + suite_add_tcase(s, tc_namespace); + tcase_add_checked_fixture(tc_namespace, + namespace_setup, namespace_teardown); + tcase_add_test(tc_namespace, test_return_ns_triplet); + tcase_add_test(tc_namespace, test_ns_tagname_overwrite); + tcase_add_test(tc_namespace, test_ns_tagname_overwrite_triplet); + tcase_add_test(tc_namespace, test_start_ns_clears_start_element); + tcase_add_test(tc_namespace, test_default_ns_from_ext_subset_and_ext_ge); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_1); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_2); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_3); + tcase_add_test(tc_namespace, test_ns_prefix_with_empty_uri_4); + tcase_add_test(tc_namespace, test_ns_default_with_empty_uri); + tcase_add_test(tc_namespace, test_ns_duplicate_attrs_diff_prefixes); + tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_attribute); + tcase_add_test(tc_namespace, test_ns_unbound_prefix_on_element); + + return s; +} + + +int +main(int argc, char *argv[]) +{ + int i, nf; + int verbosity = CK_NORMAL; + Suite *s = make_suite(); + SRunner *sr = srunner_create(s); + + /* run the tests for internal helper functions */ + testhelper_is_whitespace_normalized(); + + for (i = 1; i < argc; ++i) { + char *opt = argv[i]; + if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0) + verbosity = CK_VERBOSE; + else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0) + verbosity = CK_SILENT; + else { + fprintf(stderr, "runtests: unknown option '%s'\n", opt); + return 2; + } + } + if (verbosity != CK_SILENT) + printf("Expat version: %s\n", XML_ExpatVersion()); + srunner_run_all(sr, verbosity); + nf = srunner_ntests_failed(sr); + srunner_free(sr); + + return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/vendor/libexpat/tests/runtestspp.cpp b/vendor/libexpat/tests/runtestspp.cpp new file mode 100644 index 0000000..c35dc58 --- /dev/null +++ b/vendor/libexpat/tests/runtestspp.cpp @@ -0,0 +1,6 @@ +// C++ compilation harness for the test suite. +// +// This is used to ensure the Expat headers can be included from C++ +// and have everything work as expected. +// +#include "runtests.c" diff --git a/vendor/libexpat/tests/xmltest.sh b/vendor/libexpat/tests/xmltest.sh new file mode 100644 index 0000000..64a17ee --- /dev/null +++ b/vendor/libexpat/tests/xmltest.sh @@ -0,0 +1,144 @@ +#! /usr/bin/env bash + +# EXPAT TEST SCRIPT FOR W3C XML TEST SUITE + +# This script can be used to exercise Expat against the +# w3c.org xml test suite, available from +# http://www.w3.org/XML/Test/xmlts20020606.zip. + +# To run this script, first set XMLWF below so that xmlwf can be +# found, then set the output directory with OUTPUT. + +# The script lists all test cases where Expat shows a discrepancy +# from the expected result. Test cases where only the canonical +# output differs are prefixed with "Output differs:", and a diff file +# is generated in the appropriate subdirectory under $OUTPUT. + +# If there are output files provided, the script will use +# output from xmlwf and compare the desired output against it. +# However, one has to take into account that the canonical output +# produced by xmlwf conforms to an older definition of canonical XML +# and does not generate notation declarations. + +shopt -s nullglob + +MYDIR="`dirname \"$0\"`" +cd "$MYDIR" +MYDIR="`pwd`" +XMLWF="`dirname \"$MYDIR\"`/xmlwf/xmlwf" +# XMLWF=/usr/local/bin/xmlwf +TS="$MYDIR" +# OUTPUT must terminate with the directory separator. +OUTPUT="$TS/out/" +# OUTPUT=/home/tmp/xml-testsuite-out/ + + +# RunXmlwfNotWF file reldir +# reldir includes trailing slash +RunXmlwfNotWF() { + file="$1" + reldir="$2" + $XMLWF -p "$file" > outfile || return $? + read outdata < outfile + if test "$outdata" = "" ; then + echo "Expected not well-formed: $reldir$file" + return 1 + else + return 0 + fi +} + +# RunXmlwfWF file reldir +# reldir includes trailing slash +RunXmlwfWF() { + file="$1" + reldir="$2" + $XMLWF -p -d "$OUTPUT$reldir" "$file" > outfile || return $? + read outdata < outfile + if test "$outdata" = "" ; then + if [ -f "out/$file" ] ; then + diff -u "$OUTPUT$reldir$file" "out/$file" > outfile + if [ -s outfile ] ; then + cp outfile "$OUTPUT$reldir$file.diff" + echo "Output differs: $reldir$file" + return 1 + fi + fi + return 0 + else + echo "In $reldir: $outdata" + return 1 + fi +} + +SUCCESS=0 +ERROR=0 + +UpdateStatus() { + if [ "$1" -eq 0 ] ; then + SUCCESS=`expr $SUCCESS + 1` + else + ERROR=`expr $ERROR + 1` + fi +} + +########################## +# well-formed test cases # +########################## + +cd "$TS/xmlconf" +for xmldir in ibm/valid/P* \ + ibm/invalid/P* \ + xmltest/valid/ext-sa \ + xmltest/valid/not-sa \ + xmltest/invalid \ + xmltest/invalid/not-sa \ + xmltest/valid/sa \ + sun/valid \ + sun/invalid ; do + cd "$TS/xmlconf/$xmldir" + mkdir -p "$OUTPUT$xmldir" + for xmlfile in *.xml ; do + RunXmlwfWF "$xmlfile" "$xmldir/" + UpdateStatus $? + done + rm -f outfile +done + +cd "$TS/xmlconf/oasis" +mkdir -p "$OUTPUT"oasis +for xmlfile in *pass*.xml ; do + RunXmlwfWF "$xmlfile" "oasis/" + UpdateStatus $? +done +rm outfile + +############################## +# not well-formed test cases # +############################## + +cd "$TS/xmlconf" +for xmldir in ibm/not-wf/P* \ + ibm/not-wf/p28a \ + ibm/not-wf/misc \ + xmltest/not-wf/ext-sa \ + xmltest/not-wf/not-sa \ + xmltest/not-wf/sa \ + sun/not-wf ; do + cd "$TS/xmlconf/$xmldir" + for xmlfile in *.xml ; do + RunXmlwfNotWF "$xmlfile" "$xmldir/" + UpdateStatus $? + done + rm outfile +done + +cd "$TS/xmlconf/oasis" +for xmlfile in *fail*.xml ; do + RunXmlwfNotWF "$xmlfile" "oasis/" + UpdateStatus $? +done +rm outfile + +echo "Passed: $SUCCESS" +echo "Failed: $ERROR" diff --git a/vendor/libexpat/version.c b/vendor/libexpat/version.c new file mode 100644 index 0000000..6424eab --- /dev/null +++ b/vendor/libexpat/version.c @@ -0,0 +1,9 @@ +#include +#include + +int main () { + XML_Expat_Version v; + v = XML_ExpatVersionInfo(); + printf("Using libexpat v%d.%d.%d\n", v.major, v.minor, v.micro); + return 0; +} diff --git a/vendor/libexpat/vms/README.vms b/vendor/libexpat/vms/README.vms new file mode 100644 index 0000000..3dd2ca7 --- /dev/null +++ b/vendor/libexpat/vms/README.vms @@ -0,0 +1,23 @@ +4-jun-2002 Craig A. Berry + Added rudimentary build procedures for + OpenVMS based on work by Martin Vorlaender. + + +You'll need MMS or its freeware equivalent MMK. Just go to the +top-level directory and type + +$ MMS/DESCRIPTION=[.vms] + + or + +$ MMK/DESCRIPTION=[.vms] + +You'll end up with the object library expat.olb. For now, installation +consists merely of copying the object library, include files, and +documentation to a suitable location. + +To-do list: + + -- create a shareable image + -- build and run the tests and build the xmlwf utility + -- create an install target diff --git a/vendor/libexpat/vms/descrip.mms b/vendor/libexpat/vms/descrip.mms new file mode 100644 index 0000000..d9ee3d9 --- /dev/null +++ b/vendor/libexpat/vms/descrip.mms @@ -0,0 +1,70 @@ +# Bare bones description file (Makefile) for OpenVMS + +PACKAGE = expat +VERSION = 1.95.8 +EXPAT_MAJOR_VERSION=1 +EXPAT_MINOR_VERSION=95 +EXPAT_EDIT=8 + +O = .obj +OLB = .olb + +LIBRARY = expat$(OLB) +LIBDIR = [.lib] +SOURCES = $(LIBDIR)xmlparse.c $(LIBDIR)xmltok.c $(LIBDIR)xmlrole.c +OBJECTS = xmlparse$(O) xmltok$(O) xmlrole$(O) + +TEMPLATES = xmltok_impl.c xmltok_ns.c +APIHEADER = $(LIBDIR)expat.h +HEADERS = $(LIBDIR)ascii.h $(LIBDIR)iasciitab.h $(LIBDIR)utf8tab.h $(LIBDIR)xmltok.h \ + $(LIBDIR)asciitab.h $(LIBDIR)latin1tab.h \ + $(LIBDIR)nametab.h $(LIBDIR)xmldef.h $(LIBDIR)xmlrole.h $(LIBDIR)xmltok_impl.h + +CONFIG_HEADER = expat_config.h +INCLUDES = /INCLUDE=([],[.lib]) +DEFS = /DEFINE=(PACKAGE="""$(PACKAGE)""",VERSION="""$(PACKAGE)_$(VERSION)""",HAVE_EXPAT_CONFIG_H) +LIBREVISION = 0 +LIBCURRENT = 1 +LIBAGE = 0 +# +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +# +# DISTFILES = $(DIST_COMMON) $(SOURCES) $(TEMPLATES) $(APIHEADER) $(HEADERS) +# +# TAR = gtar +# GZIP_ENV = --best +# +.FIRST : + IF F$SEARCH("$(LIBRARY)") .EQS. "" THEN $(LIBR) /CREATE /OBJECT $(LIBRARY) + +all : $(LIBRARY) + @ write sys$output "All made." + +.SUFFIXES : +.SUFFIXES : $(OLB) $(O) .C .H + +.c$(O) : + $(COMPILE) $(MMS$SOURCE) + +$(O)$(OLB) : + @ IF F$SEARCH("$(MMS$TARGET)") .EQS. "" - + THEN LIBRARY/CREATE/LOG $(MMS$TARGET) + @ LIBRARY /REPLACE /LOG $(MMS$TARGET) $(MMS$SOURCE) + +clean : + DELETE $(LIBRARY);*,*$(O);* + +$(LIBRARY) : $(LIBRARY)( $(OBJECTS) ) + $(LIBR) /COMPRESS $(MMS$TARGET) + +$(CONFIG_HEADER) : [.vms]expat_config.h + COPY/LOG $(MMS$SOURCE) $(MMS$TARGET) + +xmlparse$(O) : $(LIBDIR)xmlparse.c $(LIBDIR)expat.h $(LIBDIR)xmlrole.h $(LIBDIR)xmltok.h $(CONFIG_HEADER) + +xmlrole$(O) : $(LIBDIR)xmlrole.c $(LIBDIR)ascii.h $(LIBDIR)xmlrole.h $(CONFIG_HEADER) + +xmltok$(O) : $(LIBDIR)xmltok.c $(LIBDIR)xmltok_impl.c $(LIBDIR)xmltok_ns.c \ + $(LIBDIR)ascii.h $(LIBDIR)asciitab.h $(LIBDIR)iasciitab.h $(LIBDIR)latin1tab.h \ + $(LIBDIR)nametab.h $(LIBDIR)utf8tab.h $(LIBDIR)xmltok.h $(LIBDIR)xmltok_impl.h $(CONFIG_HEADER) + diff --git a/vendor/libexpat/vms/expat_config.h b/vendor/libexpat/vms/expat_config.h new file mode 100644 index 0000000..d5db89e --- /dev/null +++ b/vendor/libexpat/vms/expat_config.h @@ -0,0 +1,52 @@ +/* Copyright 2000, Clark Cooper + All rights reserved. + + This is free software. You are permitted to copy, distribute, or modify + it under the terms of the MIT/X license (contained in the COPYING file + with this distribution.) +*/ + +/* Define to empty if the keyword does not work. */ +#undef const + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to `long' if doesn't define. */ +#undef off_t + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Define if you have the bcopy function. */ +#undef HAVE_BCOPY + +/* Define if you have the memmove function. */ +#define HAVE_MEMMOVE 1 + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +#define XML_NS +#define XML_DTD + +#ifdef WORDS_BIGENDIAN +#define XML_BYTE_ORDER 21 +#else +#define XML_BYTE_ORDER 12 +#endif + +#define XML_CONTEXT_BYTES 1024 + +#ifndef HAVE_MEMMOVE +#ifdef HAVE_BCOPY +#define memmove(d,s,l) bcopy((s),(d),(l)) +#else +#define memmove(d,s,l) ;punting on memmove; +#endif + +#endif diff --git a/vendor/libexpat/win32/MANIFEST.txt b/vendor/libexpat/win32/MANIFEST.txt new file mode 100644 index 0000000..b7cd395 --- /dev/null +++ b/vendor/libexpat/win32/MANIFEST.txt @@ -0,0 +1,27 @@ + Overview of the Expat distribution + +The Expat distribution creates several subdirectories on your system. +Some of these directories contain components of interest to all Expat +users, and some contain material of interest to developers who wish to +use Expat in their applications. In the list below, is the +directory you specified to the installer. + + Directory Contents + --------------------------------------------------------------------- + \ Some general information files. + + \Doc\ API documentation for developers. + + \Bin\ Pre-compiled dynamic libraries for developers. + Pre-compiled static libraries for developers (*MT.lib). + The XML well-formedness checker xmlwf. + + \Source\ Source code, which may interest some developers, + including a workspace for Microsft Visual C++. + The source code includes the parser, the well- + formedness checker, and a couple of small sample + applications. + + \Source\bcb5\ Project files for Borland C++ Builder 5 and BCC 5.5. + + diff --git a/vendor/libexpat/win32/README.txt b/vendor/libexpat/win32/README.txt new file mode 100644 index 0000000..c58d29a --- /dev/null +++ b/vendor/libexpat/win32/README.txt @@ -0,0 +1,88 @@ + +Expat can be built on Windows in three ways: + using MS Visual C++ (6.0 or .NET), Borland C++ Builder 5 or Cygwin. + +* Cygwin: + This follows the Unix build procedures. + +* C++ Builder 5: + Possible with make files in the BCB5 subdirectory. + Details can be found in the ReadMe file located there. + +* MS Visual C++ 6: + Based on the workspace file expat.dsw. The related project + files (.dsp) are located in the lib subdirectory. + +* MS Visual Studio .NET 2002, 2003, 2005, 2008, 2010: + The VC++ 6 workspace file (expat.dsw) and project files (.dsp) + can be opened and imported in VS.NET without problems. + Note: Tests have their own *.dsw files. + +* MS Visual Studio 2013 and 2015: + A solution file for Visual Studio 2013 is provided: expat.sln. + The associated project files (*.vcxproj) reside in the appropriate + project directories. This solution file can be opened in VS 2015 + and should be upgraded automatically if VS 2013 is not also installed. + Note: Tests have their own solution files. + +* All MS C/C++ compilers: + The output for all projects will be generated in the win32\bin + directory, intermediate files will be located in project-specific + subdirectories of win32\tmp. + +* Creating MinGW dynamic libraries from MS VC++ DLLs: + + On the command line, execute these steps: + pexports libexpat.dll > expat.def + pexports libexpatw.dll > expatw.def + dlltool -d expat.def -l libexpat.a + dlltool -d expatw.def -l libexpatw.a + + The *.a files are mingw libraries. + +* Special note about MS VC++ and runtime libraries: + + There are three possible configurations: using the + single threaded or multithreaded run-time library, + or using the multi-threaded run-time Dll. That is, + one can build three different Expat libraries depending + on the needs of the application. + + Dynamic Linking: + + By default the Expat Dlls are built to link statically + with the multi-threaded run-time library. + The libraries are named + - libexpat(w).dll + - libexpat(w).lib (import library) + The "w" indicates the UTF-16 version of the library. + + One rarely uses other versions of the Dll, but they can + be built easily by specifying a different RTL linkage in + the IDE on the C/C++ tab under the category Code Generation. + + Static Linking: + + The libraries should be named like this: + Single-theaded: libexpat(w)ML.lib + Multi-threaded: libexpat(w)MT.lib + Multi-threaded Dll: libexpat(w)MD.lib + The suffixes conform to the compiler switch settings + /ML, /MT and /MD for MS VC++. + + Note: In Visual Studio 2005 (Visual C++ 8.0) and later, the + single-threaded runtime library is not supported anymore. + + By default, the expat-static and expatw-static projects are set up + to link statically against the multithreaded run-time library, + so they will build libexpatMT.lib or libexpatwMT.lib files. + + To build the other versions of the static library, + go to Project - Settings: + - specify a different RTL linkage on the C/C++ tab + under the category Code Generation. + - then, on the Library tab, change the output file name + accordingly, as described above + + An application linking to the static libraries must + have the global macro XML_STATIC defined. diff --git a/vendor/libexpat/win32/expat.iss b/vendor/libexpat/win32/expat.iss new file mode 100644 index 0000000..add8445 --- /dev/null +++ b/vendor/libexpat/win32/expat.iss @@ -0,0 +1,82 @@ +; Basic setup script for the Inno Setup installer builder. For more +; information on the free installer builder, see www.jrsoftware.org. +; +; This script was contributed by Tim Peters. +; It was designed for Inno Setup 2.0.19 but works with later versions as well. + +[Setup] +AppName=Expat +AppId=expat +AppVersion=2.2.0 +AppVerName=Expat 2.2.0 +AppCopyright=Copyright © 1998-2016 Thai Open Source Software Center, Clark Cooper, and the Expat maintainers +AppPublisher=The Expat Developers +AppPublisherURL=http://www.libexpat.org/ +AppSupportURL=http://www.libexpat.org/ +AppUpdatesURL=http://www.libexpat.org/ +UninstallDisplayName=Expat XML Parser 2.2.0 +VersionInfoVersion=2.2.0 + +DefaultDirName={pf}\Expat 2.2.0 +UninstallFilesDir={app}\Uninstall + +Compression=lzma +SolidCompression=yes +SourceDir=.. +OutputDir=win32 +DisableStartupPrompt=yes +AllowNoIcons=yes +DisableProgramGroupPage=yes +DisableReadyPage=yes + +[Files] +Flags: ignoreversion; Source: win32\bin\Release\xmlwf.exe; DestDir: "{app}\Bin" +Flags: ignoreversion; Source: win32\MANIFEST.txt; DestDir: "{app}" +Flags: ignoreversion; Source: Changes; DestDir: "{app}"; DestName: Changes.txt +Flags: ignoreversion; Source: COPYING; DestDir: "{app}"; DestName: COPYING.txt +Flags: ignoreversion; Source: README; DestDir: "{app}"; DestName: README.txt +Flags: ignoreversion; Source: doc\*.html; DestDir: "{app}\Doc" +Flags: ignoreversion; Source: doc\*.css; DestDir: "{app}\Doc" +Flags: ignoreversion; Source: doc\*.png; DestDir: "{app}\Doc" +Flags: ignoreversion; Source: win32\bin\Release\*.dll; DestDir: "{app}\Bin" +Flags: ignoreversion; Source: win32\bin\Release\*.lib; DestDir: "{app}\Bin" +Flags: ignoreversion; Source: expat.dsw; DestDir: "{app}\Source" +Flags: ignoreversion; Source: expat.sln; DestDir: "{app}\Source" +Flags: ignoreversion; Source: win32\README.txt; DestDir: "{app}\Source" +Flags: ignoreversion; Source: bcb5\*.bp*; DestDir: "{app}\Source\bcb5" +Flags: ignoreversion; Source: bcb5\*.mak; DestDir: "{app}\Source\bcb5" +Flags: ignoreversion; Source: bcb5\*.def; DestDir: "{app}\Source\bcb5" +Flags: ignoreversion; Source: bcb5\*.txt; DestDir: "{app}\Source\bcb5" +Flags: ignoreversion; Source: bcb5\*.bat; DestDir: "{app}\Source\bcb5" +Flags: ignoreversion; Source: lib\*.c; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.h; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.def; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.dsp; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.vcxproj; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: lib\*.vcxproj.filters; DestDir: "{app}\Source\lib" +Flags: ignoreversion; Source: examples\*.c; DestDir: "{app}\Source\examples" +Flags: ignoreversion; Source: examples\*.dsp; DestDir: "{app}\Source\examples" +Flags: ignoreversion; Source: examples\*.vcxproj; DestDir: "{app}\Source\examples" +Flags: ignoreversion; Source: examples\*.vcxproj.filters; DestDir: "{app}\Source\examples" +Flags: ignoreversion; Source: tests\*.c; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.cpp; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.h; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.ds*; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.sln; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.vcxproj; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\*.vcxproj.filters; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\README.txt; DestDir: "{app}\Source\tests" +Flags: ignoreversion; Source: tests\benchmark\*.c; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: tests\benchmark\*.ds*; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: tests\benchmark\*.sln; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: tests\benchmark\*.vcxproj; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: tests\benchmark\README.txt; DestDir: "{app}\Source\tests\benchmark" +Flags: ignoreversion; Source: xmlwf\*.c*; DestDir: "{app}\Source\xmlwf" +Flags: ignoreversion; Source: xmlwf\*.h; DestDir: "{app}\Source\xmlwf" +Flags: ignoreversion; Source: xmlwf\*.dsp; DestDir: "{app}\Source\xmlwf" +Flags: ignoreversion; Source: xmlwf\*.vcxproj; DestDir: "{app}\Source\xmlwf" +Flags: ignoreversion; Source: xmlwf\*.vcxproj.filters; DestDir: "{app}\Source\xmlwf" + +[Messages] +WelcomeLabel1=Welcome to the Expat XML Parser Setup Wizard +WelcomeLabel2=This will install [name/ver] on your computer.%n%nExpat is an XML parser with a C-language API, and is primarily made available to allow developers to build applications which use XML using a portable API and fast implementation.%n%nIt is strongly recommended that you close all other applications you have running before continuing. This will help prevent any conflicts during the installation process. diff --git a/vendor/libexpat/xmlwf/codepage.c b/vendor/libexpat/xmlwf/codepage.c new file mode 100644 index 0000000..91bd15e --- /dev/null +++ b/vendor/libexpat/xmlwf/codepage.c @@ -0,0 +1,69 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include "codepage.h" +#include "internal.h" /* for UNUSED_P only */ + +#if (defined(WIN32) || (defined(__WATCOMC__) && defined(__NT__))) +#define STRICT 1 +#define WIN32_LEAN_AND_MEAN 1 + +#include + +int +codepageMap(int cp, int *map) +{ + int i; + CPINFO info; + if (!GetCPInfo(cp, &info) || info.MaxCharSize > 2) + return 0; + for (i = 0; i < 256; i++) + map[i] = -1; + if (info.MaxCharSize > 1) { + for (i = 0; i < MAX_LEADBYTES; i+=2) { + int j, lim; + if (info.LeadByte[i] == 0 && info.LeadByte[i + 1] == 0) + break; + lim = info.LeadByte[i + 1]; + for (j = info.LeadByte[i]; j <= lim; j++) + map[j] = -2; + } + } + for (i = 0; i < 256; i++) { + if (map[i] == -1) { + char c = (char)i; + unsigned short n; + if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS, + &c, 1, &n, 1) == 1) + map[i] = n; + } + } + return 1; +} + +int +codepageConvert(int cp, const char *p) +{ + unsigned short c; + if (MultiByteToWideChar(cp, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS, + p, 2, &c, 1) == 1) + return c; + return -1; +} + +#else /* not WIN32 */ + +int +codepageMap(int UNUSED_P(cp), int *UNUSED_P(map)) +{ + return 0; +} + +int +codepageConvert(int UNUSED_P(cp), const char *UNUSED_P(p)) +{ + return -1; +} + +#endif /* not WIN32 */ diff --git a/vendor/libexpat/xmlwf/codepage.h b/vendor/libexpat/xmlwf/codepage.h new file mode 100644 index 0000000..6a4df68 --- /dev/null +++ b/vendor/libexpat/xmlwf/codepage.h @@ -0,0 +1,6 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +int codepageMap(int cp, int *map); +int codepageConvert(int cp, const char *p); diff --git a/vendor/libexpat/xmlwf/ct.c b/vendor/libexpat/xmlwf/ct.c new file mode 100644 index 0000000..95903a3 --- /dev/null +++ b/vendor/libexpat/xmlwf/ct.c @@ -0,0 +1,147 @@ +#define CHARSET_MAX 41 + +static const char * +getTok(const char **pp) +{ + enum { inAtom, inString, init, inComment }; + int state = init; + const char *tokStart = 0; + for (;;) { + switch (**pp) { + case '\0': + return 0; + case ' ': + case '\r': + case '\t': + case '\n': + if (state == inAtom) + return tokStart; + break; + case '(': + if (state == inAtom) + return tokStart; + if (state != inString) + state++; + break; + case ')': + if (state > init) + --state; + else if (state != inString) + return 0; + break; + case ';': + case '/': + case '=': + if (state == inAtom) + return tokStart; + if (state == init) + return (*pp)++; + break; + case '\\': + ++*pp; + if (**pp == '\0') + return 0; + break; + case '"': + switch (state) { + case inString: + ++*pp; + return tokStart; + case inAtom: + return tokStart; + case init: + tokStart = *pp; + state = inString; + break; + } + break; + default: + if (state == init) { + tokStart = *pp; + state = inAtom; + } + break; + } + ++*pp; + } + /* not reached */ +} + +/* key must be lowercase ASCII */ + +static int +matchkey(const char *start, const char *end, const char *key) +{ + if (!start) + return 0; + for (; start != end; start++, key++) + if (*start != *key && *start != 'A' + (*key - 'a')) + return 0; + return *key == '\0'; +} + +void +getXMLCharset(const char *buf, char *charset) +{ + const char *next, *p; + + charset[0] = '\0'; + next = buf; + p = getTok(&next); + if (matchkey(p, next, "text")) + strcpy(charset, "us-ascii"); + else if (!matchkey(p, next, "application")) + return; + p = getTok(&next); + if (!p || *p != '/') + return; + p = getTok(&next); + if (matchkey(p, next, "xml")) + isXml = 1; + p = getTok(&next); + while (p) { + if (*p == ';') { + p = getTok(&next); + if (matchkey(p, next, "charset")) { + p = getTok(&next); + if (p && *p == '=') { + p = getTok(&next); + if (p) { + char *s = charset; + if (*p == '"') { + while (++p != next - 1) { + if (*p == '\\') + ++p; + if (s == charset + CHARSET_MAX - 1) { + charset[0] = '\0'; + break; + } + *s++ = *p; + } + *s++ = '\0'; + } + else { + if (next - p > CHARSET_MAX - 1) + break; + while (p != next) + *s++ = *p++; + *s = 0; + break; + } + } + } + } + } + else + p = getTok(&next); + } +} + +int +main(int argc, char **argv) +{ + char buf[CHARSET_MAX]; + getXMLCharset(argv[1], buf); + printf("charset = \"%s\"\n", buf); + return 0; +} diff --git a/vendor/libexpat/xmlwf/filemap.h b/vendor/libexpat/xmlwf/filemap.h new file mode 100644 index 0000000..814edec --- /dev/null +++ b/vendor/libexpat/xmlwf/filemap.h @@ -0,0 +1,17 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include + +#ifdef XML_UNICODE +int filemap(const wchar_t *name, + void (*processor)(const void *, size_t, + const wchar_t *, void *arg), + void *arg); +#else +int filemap(const char *name, + void (*processor)(const void *, size_t, + const char *, void *arg), + void *arg); +#endif diff --git a/vendor/libexpat/xmlwf/readfilemap.c b/vendor/libexpat/xmlwf/readfilemap.c new file mode 100644 index 0000000..d816b26 --- /dev/null +++ b/vendor/libexpat/xmlwf/readfilemap.c @@ -0,0 +1,101 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include +#include +#include +#include +#include + +/* Functions close(2) and read(2) */ +#ifdef __WATCOMC__ +#ifndef __LINUX__ +#include +#else +#include +#endif +#else +# if !defined(WIN32) && !defined(_WIN32) && !defined(_WIN64) +# include +# endif +#endif + +#ifndef S_ISREG +#ifndef S_IFREG +#define S_IFREG _S_IFREG +#endif +#ifndef S_IFMT +#define S_IFMT _S_IFMT +#endif +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif /* not S_ISREG */ + +#ifndef O_BINARY +#ifdef _O_BINARY +#define O_BINARY _O_BINARY +#else +#define O_BINARY 0 +#endif +#endif + +#include "filemap.h" + +int +filemap(const char *name, + void (*processor)(const void *, size_t, const char *, void *arg), + void *arg) +{ + size_t nbytes; + int fd; + int n; + struct stat sb; + void *p; + + fd = open(name, O_RDONLY|O_BINARY); + if (fd < 0) { + perror(name); + return 0; + } + if (fstat(fd, &sb) < 0) { + perror(name); + close(fd); + return 0; + } + if (!S_ISREG(sb.st_mode)) { + fprintf(stderr, "%s: not a regular file\n", name); + close(fd); + return 0; + } + nbytes = sb.st_size; + /* malloc will return NULL with nbytes == 0, handle files with size 0 */ + if (nbytes == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + close(fd); + return 1; + } + p = malloc(nbytes); + if (!p) { + fprintf(stderr, "%s: out of memory\n", name); + close(fd); + return 0; + } + n = read(fd, p, nbytes); + if (n < 0) { + perror(name); + free(p); + close(fd); + return 0; + } + if (n != nbytes) { + fprintf(stderr, "%s: read unexpected number of bytes\n", name); + free(p); + close(fd); + return 0; + } + processor(p, nbytes, name, arg); + free(p); + close(fd); + return 1; +} diff --git a/vendor/libexpat/xmlwf/unixfilemap.c b/vendor/libexpat/xmlwf/unixfilemap.c new file mode 100644 index 0000000..e13299d --- /dev/null +++ b/vendor/libexpat/xmlwf/unixfilemap.c @@ -0,0 +1,65 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MAP_FILE +#define MAP_FILE 0 +#endif + +#include "filemap.h" + +int +filemap(const char *name, + void (*processor)(const void *, size_t, const char *, void *arg), + void *arg) +{ + int fd; + size_t nbytes; + struct stat sb; + void *p; + + fd = open(name, O_RDONLY); + if (fd < 0) { + perror(name); + return 0; + } + if (fstat(fd, &sb) < 0) { + perror(name); + close(fd); + return 0; + } + if (!S_ISREG(sb.st_mode)) { + close(fd); + fprintf(stderr, "%s: not a regular file\n", name); + return 0; + } + + nbytes = sb.st_size; + /* mmap fails for zero length files */ + if (nbytes == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + close(fd); + return 1; + } + p = (void *)mmap((void *)0, (size_t)nbytes, PROT_READ, + MAP_FILE|MAP_PRIVATE, fd, (off_t)0); + if (p == (void *)-1) { + perror(name); + close(fd); + return 0; + } + processor(p, nbytes, name, arg); + munmap((void *)p, nbytes); + close(fd); + return 1; +} diff --git a/vendor/libexpat/xmlwf/win32filemap.c b/vendor/libexpat/xmlwf/win32filemap.c new file mode 100644 index 0000000..41dc35b --- /dev/null +++ b/vendor/libexpat/xmlwf/win32filemap.c @@ -0,0 +1,96 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#define STRICT 1 +#define WIN32_LEAN_AND_MEAN 1 + +#ifdef XML_UNICODE_WCHAR_T +#ifndef XML_UNICODE +#define XML_UNICODE +#endif +#endif + +#ifdef XML_UNICODE +#define UNICODE +#define _UNICODE +#endif /* XML_UNICODE */ +#include +#include +#include +#include "filemap.h" + +static void win32perror(const TCHAR *); + +int +filemap(const TCHAR *name, + void (*processor)(const void *, size_t, const TCHAR *, void *arg), + void *arg) +{ + HANDLE f; + HANDLE m; + DWORD size; + DWORD sizeHi; + void *p; + + f = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, NULL); + if (f == INVALID_HANDLE_VALUE) { + win32perror(name); + return 0; + } + size = GetFileSize(f, &sizeHi); + if (size == (DWORD)-1) { + win32perror(name); + return 0; + } + if (sizeHi) { + _ftprintf(stderr, _T("%s: bigger than 2Gb\n"), name); + return 0; + } + /* CreateFileMapping barfs on zero length files */ + if (size == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + CloseHandle(f); + return 1; + } + m = CreateFileMapping(f, NULL, PAGE_READONLY, 0, 0, NULL); + if (m == NULL) { + win32perror(name); + CloseHandle(f); + return 0; + } + p = MapViewOfFile(m, FILE_MAP_READ, 0, 0, 0); + if (p == NULL) { + win32perror(name); + CloseHandle(m); + CloseHandle(f); + return 0; + } + processor(p, size, name, arg); + UnmapViewOfFile(p); + CloseHandle(m); + CloseHandle(f); + return 1; +} + +static void +win32perror(const TCHAR *s) +{ + LPVOID buf; + if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &buf, + 0, + NULL)) { + _ftprintf(stderr, _T("%s: %s"), s, buf); + fflush(stderr); + LocalFree(buf); + } + else + _ftprintf(stderr, _T("%s: unknown Windows error\n"), s); +} diff --git a/vendor/libexpat/xmlwf/xmlfile.c b/vendor/libexpat/xmlwf/xmlfile.c new file mode 100644 index 0000000..2f769aa --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlfile.c @@ -0,0 +1,245 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include +#include +#include +#include +#include + +#ifdef WIN32 +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#elif defined(HAVE_EXPAT_CONFIG_H) +#include +#endif /* ndef WIN32 */ + +#include "expat.h" +#include "internal.h" /* for UNUSED_P only */ +#include "xmlfile.h" +#include "xmltchar.h" +#include "filemap.h" + +#if (defined(_MSC_VER) || (defined(__WATCOMC__) && !defined(__LINUX__))) +#include +#endif + +#if defined(__amigaos__) && defined(__USE_INLINE__) +#include +#endif + +#ifdef HAVE_UNISTD_H +#include +#endif + +#ifndef O_BINARY +#ifdef _O_BINARY +#define O_BINARY _O_BINARY +#else +#define O_BINARY 0 +#endif +#endif + +#ifdef _DEBUG +#define READ_SIZE 16 +#else +#define READ_SIZE (1024*8) +#endif + + +typedef struct { + XML_Parser parser; + int *retPtr; +} PROCESS_ARGS; + +static void +reportError(XML_Parser parser, const XML_Char *filename) +{ + enum XML_Error code = XML_GetErrorCode(parser); + const XML_Char *message = XML_ErrorString(code); + if (message) + ftprintf(stdout, T("%s:%" XML_FMT_INT_MOD "u:%" XML_FMT_INT_MOD "u: %s\n"), + filename, + XML_GetErrorLineNumber(parser), + XML_GetErrorColumnNumber(parser), + message); + else + ftprintf(stderr, T("%s: (unknown message %d)\n"), filename, code); +} + +/* This implementation will give problems on files larger than INT_MAX. */ +static void +processFile(const void *data, size_t size, + const XML_Char *filename, void *args) +{ + XML_Parser parser = ((PROCESS_ARGS *)args)->parser; + int *retPtr = ((PROCESS_ARGS *)args)->retPtr; + if (XML_Parse(parser, (const char *)data, (int)size, 1) == XML_STATUS_ERROR) { + reportError(parser, filename); + *retPtr = 0; + } + else + *retPtr = 1; +} + +#if (defined(WIN32) || defined(__WATCOMC__)) + +static int +isAsciiLetter(XML_Char c) +{ + return (T('a') <= c && c <= T('z')) || (T('A') <= c && c <= T('Z')); +} + +#endif /* WIN32 */ + +static const XML_Char * +resolveSystemId(const XML_Char *base, const XML_Char *systemId, + XML_Char **toFree) +{ + XML_Char *s; + *toFree = 0; + if (!base + || *systemId == T('/') +#if (defined(WIN32) || defined(__WATCOMC__)) + || *systemId == T('\\') + || (isAsciiLetter(systemId[0]) && systemId[1] == T(':')) +#endif + ) + return systemId; + *toFree = (XML_Char *)malloc((tcslen(base) + tcslen(systemId) + 2) + * sizeof(XML_Char)); + if (!*toFree) + return systemId; + tcscpy(*toFree, base); + s = *toFree; + if (tcsrchr(s, T('/'))) + s = tcsrchr(s, T('/')) + 1; +#if (defined(WIN32) || defined(__WATCOMC__)) + if (tcsrchr(s, T('\\'))) + s = tcsrchr(s, T('\\')) + 1; +#endif + tcscpy(s, systemId); + return *toFree; +} + +static int +externalEntityRefFilemap(XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *UNUSED_P(publicId)) +{ + int result; + XML_Char *s; + const XML_Char *filename; + XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); + PROCESS_ARGS args; + args.retPtr = &result; + args.parser = entParser; + filename = resolveSystemId(base, systemId, &s); + XML_SetBase(entParser, filename); + if (!filemap(filename, processFile, &args)) + result = 0; + free(s); + XML_ParserFree(entParser); + return result; +} + +static int +processStream(const XML_Char *filename, XML_Parser parser) +{ + /* passing NULL for filename means read intput from stdin */ + int fd = 0; /* 0 is the fileno for stdin */ + + if (filename != NULL) { + fd = topen(filename, O_BINARY|O_RDONLY); + if (fd < 0) { + tperror(filename); + return 0; + } + } + for (;;) { + int nread; + char *buf = (char *)XML_GetBuffer(parser, READ_SIZE); + if (!buf) { + if (filename != NULL) + close(fd); + ftprintf(stderr, T("%s: out of memory\n"), + filename != NULL ? filename : "xmlwf"); + return 0; + } + nread = read(fd, buf, READ_SIZE); + if (nread < 0) { + tperror(filename != NULL ? filename : "STDIN"); + if (filename != NULL) + close(fd); + return 0; + } + if (XML_ParseBuffer(parser, nread, nread == 0) == XML_STATUS_ERROR) { + reportError(parser, filename != NULL ? filename : "STDIN"); + if (filename != NULL) + close(fd); + return 0; + } + if (nread == 0) { + if (filename != NULL) + close(fd); + break;; + } + } + return 1; +} + +static int +externalEntityRefStream(XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *UNUSED_P(publicId)) +{ + XML_Char *s; + const XML_Char *filename; + int ret; + XML_Parser entParser = XML_ExternalEntityParserCreate(parser, context, 0); + filename = resolveSystemId(base, systemId, &s); + XML_SetBase(entParser, filename); + ret = processStream(filename, entParser); + free(s); + XML_ParserFree(entParser); + return ret; +} + +int +XML_ProcessFile(XML_Parser parser, + const XML_Char *filename, + unsigned flags) +{ + int result; + + if (!XML_SetBase(parser, filename)) { + ftprintf(stderr, T("%s: out of memory"), filename); + exit(1); + } + + if (flags & XML_EXTERNAL_ENTITIES) + XML_SetExternalEntityRefHandler(parser, + (flags & XML_MAP_FILE) + ? externalEntityRefFilemap + : externalEntityRefStream); + if (flags & XML_MAP_FILE) { + PROCESS_ARGS args; + args.retPtr = &result; + args.parser = parser; + if (!filemap(filename, processFile, &args)) + result = 0; + } + else + result = processStream(filename, parser); + return result; +} diff --git a/vendor/libexpat/xmlwf/xmlfile.h b/vendor/libexpat/xmlwf/xmlfile.h new file mode 100644 index 0000000..d093ecc --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlfile.h @@ -0,0 +1,20 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#define XML_MAP_FILE 01 +#define XML_EXTERNAL_ENTITIES 02 + +#ifdef XML_LARGE_SIZE +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +#define XML_FMT_INT_MOD "I64" +#else +#define XML_FMT_INT_MOD "ll" +#endif +#else +#define XML_FMT_INT_MOD "l" +#endif + +extern int XML_ProcessFile(XML_Parser parser, + const XML_Char *filename, + unsigned flags); diff --git a/vendor/libexpat/xmlwf/xmlmime.c b/vendor/libexpat/xmlwf/xmlmime.c new file mode 100644 index 0000000..56a0e7f --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlmime.c @@ -0,0 +1,163 @@ +#include +#include "xmlmime.h" + +static const char * +getTok(const char **pp) +{ + /* inComment means one level of nesting; inComment+1 means two levels etc */ + enum { inAtom, inString, init, inComment }; + int state = init; + const char *tokStart = 0; + for (;;) { + switch (**pp) { + case '\0': + if (state == inAtom) + return tokStart; + return 0; + case ' ': + case '\r': + case '\t': + case '\n': + if (state == inAtom) + return tokStart; + break; + case '(': + if (state == inAtom) + return tokStart; + if (state != inString) + state++; + break; + case ')': + if (state > init) + --state; + else if (state != inString) + return 0; + break; + case ';': + case '/': + case '=': + if (state == inAtom) + return tokStart; + if (state == init) + return (*pp)++; + break; + case '\\': + ++*pp; + if (**pp == '\0') + return 0; + break; + case '"': + switch (state) { + case inString: + ++*pp; + return tokStart; + case inAtom: + return tokStart; + case init: + tokStart = *pp; + state = inString; + break; + } + break; + default: + if (state == init) { + tokStart = *pp; + state = inAtom; + } + break; + } + ++*pp; + } + /* not reached */ +} + +/* key must be lowercase ASCII */ + +static int +matchkey(const char *start, const char *end, const char *key) +{ + if (!start) + return 0; + for (; start != end; start++, key++) + if (*start != *key && *start != 'A' + (*key - 'a')) + return 0; + return *key == '\0'; +} + +void +getXMLCharset(const char *buf, char *charset) +{ + const char *next, *p; + + charset[0] = '\0'; + next = buf; + p = getTok(&next); + if (matchkey(p, next, "text")) + strcpy(charset, "us-ascii"); + else if (!matchkey(p, next, "application")) + return; + p = getTok(&next); + if (!p || *p != '/') + return; + p = getTok(&next); +#if 0 + if (!matchkey(p, next, "xml") && charset[0] == '\0') + return; +#endif + p = getTok(&next); + while (p) { + if (*p == ';') { + p = getTok(&next); + if (matchkey(p, next, "charset")) { + p = getTok(&next); + if (p && *p == '=') { + p = getTok(&next); + if (p) { + char *s = charset; + if (*p == '"') { + while (++p != next - 1) { + if (*p == '\\') + ++p; + if (s == charset + CHARSET_MAX - 1) { + charset[0] = '\0'; + break; + } + *s++ = *p; + } + *s++ = '\0'; + } + else { + if (next - p > CHARSET_MAX - 1) + break; + while (p != next) + *s++ = *p++; + *s = 0; + break; + } + } + } + break; + } + } + else + p = getTok(&next); + } +} + +#ifdef TEST + +#include + +int +main(int argc, char *argv[]) +{ + char buf[CHARSET_MAX]; + if (argc <= 1) + return 1; + printf("%s\n", argv[1]); + getXMLCharset(argv[1], buf); + printf("charset=\"%s\"\n", buf); + return 0; +} + +#endif /* TEST */ diff --git a/vendor/libexpat/xmlwf/xmlmime.h b/vendor/libexpat/xmlwf/xmlmime.h new file mode 100644 index 0000000..bf0356d --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlmime.h @@ -0,0 +1,19 @@ +#ifdef __cplusplus +extern "C" { +#endif + +/* Registered charset names are at most 40 characters long. */ + +#define CHARSET_MAX 41 + +/* Figure out the charset to use from the ContentType. + buf contains the body of the header field (the part after "Content-Type:"). + charset gets the charset to use. It must be at least CHARSET_MAX chars + long. charset will be empty if the default charset should be used. +*/ + +void getXMLCharset(const char *buf, char *charset); + +#ifdef __cplusplus +} +#endif diff --git a/vendor/libexpat/xmlwf/xmltchar.h b/vendor/libexpat/xmlwf/xmltchar.h new file mode 100644 index 0000000..1088575 --- /dev/null +++ b/vendor/libexpat/xmlwf/xmltchar.h @@ -0,0 +1,36 @@ +#ifdef XML_UNICODE +#ifndef XML_UNICODE_WCHAR_T +#error xmlwf requires a 16-bit Unicode-compatible wchar_t +#endif +#define T(x) L ## x +#define ftprintf fwprintf +#define tfopen _wfopen +#define fputts fputws +#define puttc putwc +#define tcscmp wcscmp +#define tcscpy wcscpy +#define tcscat wcscat +#define tcschr wcschr +#define tcsrchr wcsrchr +#define tcslen wcslen +#define tperror _wperror +#define topen _wopen +#define tmain wmain +#define tremove _wremove +#else /* not XML_UNICODE */ +#define T(x) x +#define ftprintf fprintf +#define tfopen fopen +#define fputts fputs +#define puttc putc +#define tcscmp strcmp +#define tcscpy strcpy +#define tcscat strcat +#define tcschr strchr +#define tcsrchr strrchr +#define tcslen strlen +#define tperror perror +#define topen open +#define tmain main +#define tremove remove +#endif /* not XML_UNICODE */ diff --git a/vendor/libexpat/xmlwf/xmlurl.h b/vendor/libexpat/xmlwf/xmlurl.h new file mode 100644 index 0000000..d329913 --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlurl.h @@ -0,0 +1,13 @@ +#ifdef __cplusplus +extern "C" { +#endif + +int XML_URLInit(); +void XML_URLUninit(); +int XML_ProcessURL(XML_Parser parser, + const XML_Char *url, + unsigned flags); + +#ifdef __cplusplus +} +#endif diff --git a/vendor/libexpat/xmlwf/xmlwf.c b/vendor/libexpat/xmlwf/xmlwf.c new file mode 100644 index 0000000..66d6c9e --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlwf.c @@ -0,0 +1,867 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include +#include +#include +#include + +#include "expat.h" +#include "codepage.h" +#include "internal.h" /* for UNUSED_P only */ +#include "xmlfile.h" +#include "xmltchar.h" + +#ifdef _MSC_VER +#include +#endif + +#if defined(__amigaos__) && defined(__USE_INLINE__) +#include +#endif + +/* This ensures proper sorting. */ + +#define NSSEP T('\001') + +static void XMLCALL +characterData(void *userData, const XML_Char *s, int len) +{ + FILE *fp = (FILE *)userData; + for (; len > 0; --len, ++s) { + switch (*s) { + case T('&'): + fputts(T("&"), fp); + break; + case T('<'): + fputts(T("<"), fp); + break; + case T('>'): + fputts(T(">"), fp); + break; +#ifdef W3C14N + case 13: + fputts(T(" "), fp); + break; +#else + case T('"'): + fputts(T("""), fp); + break; + case 9: + case 10: + case 13: + ftprintf(fp, T("&#%d;"), *s); + break; +#endif + default: + puttc(*s, fp); + break; + } + } +} + +static void +attributeValue(FILE *fp, const XML_Char *s) +{ + puttc(T('='), fp); + puttc(T('"'), fp); + for (;;) { + switch (*s) { + case 0: + case NSSEP: + puttc(T('"'), fp); + return; + case T('&'): + fputts(T("&"), fp); + break; + case T('<'): + fputts(T("<"), fp); + break; + case T('"'): + fputts(T("""), fp); + break; +#ifdef W3C14N + case 9: + fputts(T(" "), fp); + break; + case 10: + fputts(T(" "), fp); + break; + case 13: + fputts(T(" "), fp); + break; +#else + case T('>'): + fputts(T(">"), fp); + break; + case 9: + case 10: + case 13: + ftprintf(fp, T("&#%d;"), *s); + break; +#endif + default: + puttc(*s, fp); + break; + } + s++; + } +} + +/* Lexicographically comparing UTF-8 encoded attribute values, +is equivalent to lexicographically comparing based on the character number. */ + +static int +attcmp(const void *att1, const void *att2) +{ + return tcscmp(*(const XML_Char **)att1, *(const XML_Char **)att2); +} + +static void XMLCALL +startElement(void *userData, const XML_Char *name, const XML_Char **atts) +{ + int nAtts; + const XML_Char **p; + FILE *fp = (FILE *)userData; + puttc(T('<'), fp); + fputts(name, fp); + + p = atts; + while (*p) + ++p; + nAtts = (int)((p - atts) >> 1); + if (nAtts > 1) + qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, attcmp); + while (*atts) { + puttc(T(' '), fp); + fputts(*atts++, fp); + attributeValue(fp, *atts); + atts++; + } + puttc(T('>'), fp); +} + +static void XMLCALL +endElement(void *userData, const XML_Char *name) +{ + FILE *fp = (FILE *)userData; + puttc(T('<'), fp); + puttc(T('/'), fp); + fputts(name, fp); + puttc(T('>'), fp); +} + +static int +nsattcmp(const void *p1, const void *p2) +{ + const XML_Char *att1 = *(const XML_Char **)p1; + const XML_Char *att2 = *(const XML_Char **)p2; + int sep1 = (tcsrchr(att1, NSSEP) != 0); + int sep2 = (tcsrchr(att1, NSSEP) != 0); + if (sep1 != sep2) + return sep1 - sep2; + return tcscmp(att1, att2); +} + +static void XMLCALL +startElementNS(void *userData, const XML_Char *name, const XML_Char **atts) +{ + int nAtts; + int nsi; + const XML_Char **p; + FILE *fp = (FILE *)userData; + const XML_Char *sep; + puttc(T('<'), fp); + + sep = tcsrchr(name, NSSEP); + if (sep) { + fputts(T("n1:"), fp); + fputts(sep + 1, fp); + fputts(T(" xmlns:n1"), fp); + attributeValue(fp, name); + nsi = 2; + } + else { + fputts(name, fp); + nsi = 1; + } + + p = atts; + while (*p) + ++p; + nAtts = (int)((p - atts) >> 1); + if (nAtts > 1) + qsort((void *)atts, nAtts, sizeof(XML_Char *) * 2, nsattcmp); + while (*atts) { + name = *atts++; + sep = tcsrchr(name, NSSEP); + puttc(T(' '), fp); + if (sep) { + ftprintf(fp, T("n%d:"), nsi); + fputts(sep + 1, fp); + } + else + fputts(name, fp); + attributeValue(fp, *atts); + if (sep) { + ftprintf(fp, T(" xmlns:n%d"), nsi++); + attributeValue(fp, name); + } + atts++; + } + puttc(T('>'), fp); +} + +static void XMLCALL +endElementNS(void *userData, const XML_Char *name) +{ + FILE *fp = (FILE *)userData; + const XML_Char *sep; + puttc(T('<'), fp); + puttc(T('/'), fp); + sep = tcsrchr(name, NSSEP); + if (sep) { + fputts(T("n1:"), fp); + fputts(sep + 1, fp); + } + else + fputts(name, fp); + puttc(T('>'), fp); +} + +#ifndef W3C14N + +static void XMLCALL +processingInstruction(void *userData, const XML_Char *target, + const XML_Char *data) +{ + FILE *fp = (FILE *)userData; + puttc(T('<'), fp); + puttc(T('?'), fp); + fputts(target, fp); + puttc(T(' '), fp); + fputts(data, fp); + puttc(T('?'), fp); + puttc(T('>'), fp); +} + +#endif /* not W3C14N */ + +static void XMLCALL +defaultCharacterData(void *userData, const XML_Char *UNUSED_P(s), int UNUSED_P(len)) +{ + XML_DefaultCurrent((XML_Parser) userData); +} + +static void XMLCALL +defaultStartElement(void *userData, const XML_Char *UNUSED_P(name), + const XML_Char **UNUSED_P(atts)) +{ + XML_DefaultCurrent((XML_Parser) userData); +} + +static void XMLCALL +defaultEndElement(void *userData, const XML_Char *UNUSED_P(name)) +{ + XML_DefaultCurrent((XML_Parser) userData); +} + +static void XMLCALL +defaultProcessingInstruction(void *userData, const XML_Char *UNUSED_P(target), + const XML_Char *UNUSED_P(data)) +{ + XML_DefaultCurrent((XML_Parser) userData); +} + +static void XMLCALL +nopCharacterData(void *UNUSED_P(userData), const XML_Char *UNUSED_P(s), int UNUSED_P(len)) +{ +} + +static void XMLCALL +nopStartElement(void *UNUSED_P(userData), const XML_Char *UNUSED_P(name), const XML_Char **UNUSED_P(atts)) +{ +} + +static void XMLCALL +nopEndElement(void *UNUSED_P(userData), const XML_Char *UNUSED_P(name)) +{ +} + +static void XMLCALL +nopProcessingInstruction(void *UNUSED_P(userData), const XML_Char *UNUSED_P(target), + const XML_Char *UNUSED_P(data)) +{ +} + +static void XMLCALL +markup(void *userData, const XML_Char *s, int len) +{ + FILE *fp = (FILE *)XML_GetUserData((XML_Parser) userData); + for (; len > 0; --len, ++s) + puttc(*s, fp); +} + +static void +metaLocation(XML_Parser parser) +{ + const XML_Char *uri = XML_GetBase(parser); + if (uri) + ftprintf((FILE *)XML_GetUserData(parser), T(" uri=\"%s\""), uri); + ftprintf((FILE *)XML_GetUserData(parser), + T(" byte=\"%" XML_FMT_INT_MOD "d\" nbytes=\"%d\" \ + line=\"%" XML_FMT_INT_MOD "u\" col=\"%" XML_FMT_INT_MOD "u\""), + XML_GetCurrentByteIndex(parser), + XML_GetCurrentByteCount(parser), + XML_GetCurrentLineNumber(parser), + XML_GetCurrentColumnNumber(parser)); +} + +static void +metaStartDocument(void *userData) +{ + fputts(T("\n"), (FILE *)XML_GetUserData((XML_Parser) userData)); +} + +static void +metaEndDocument(void *userData) +{ + fputts(T("\n"), (FILE *)XML_GetUserData((XML_Parser) userData)); +} + +static void XMLCALL +metaStartElement(void *userData, const XML_Char *name, + const XML_Char **atts) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + const XML_Char **specifiedAttsEnd + = atts + XML_GetSpecifiedAttributeCount(parser); + const XML_Char **idAttPtr; + int idAttIndex = XML_GetIdAttributeIndex(parser); + if (idAttIndex < 0) + idAttPtr = 0; + else + idAttPtr = atts + idAttIndex; + + ftprintf(fp, T("\n"), fp); + do { + ftprintf(fp, T("= specifiedAttsEnd) + fputts(T("\" defaulted=\"yes\"/>\n"), fp); + else if (atts == idAttPtr) + fputts(T("\" id=\"yes\"/>\n"), fp); + else + fputts(T("\"/>\n"), fp); + } while (*(atts += 2)); + fputts(T("\n"), fp); + } + else + fputts(T("/>\n"), fp); +} + +static void XMLCALL +metaEndElement(void *userData, const XML_Char *name) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaProcessingInstruction(void *userData, const XML_Char *target, + const XML_Char *data) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaComment(void *userData, const XML_Char *data) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + fputts(T("\n"), fp); +} + +static void XMLCALL +metaStartCdataSection(void *userData) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + fputts(T("\n"), fp); +} + +static void XMLCALL +metaEndCdataSection(void *userData) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + fputts(T("\n"), fp); +} + +static void XMLCALL +metaCharacterData(void *userData, const XML_Char *s, int len) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + fputts(T("\n"), fp); +} + +static void XMLCALL +metaStartDoctypeDecl(void *userData, + const XML_Char *doctypeName, + const XML_Char *UNUSED_P(sysid), + const XML_Char *UNUSED_P(pubid), + int UNUSED_P(has_internal_subset)) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + ftprintf(fp, T("\n"), fp); +} + +static void XMLCALL +metaEndDoctypeDecl(void *userData) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + fputts(T("\n"), fp); +} + +static void XMLCALL +metaNotationDecl(void *userData, + const XML_Char *notationName, + const XML_Char *UNUSED_P(base), + const XML_Char *systemId, + const XML_Char *publicId) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + ftprintf(fp, T("\n"), fp); +} + + +static void XMLCALL +metaEntityDecl(void *userData, + const XML_Char *entityName, + int UNUSED_P(is_param), + const XML_Char *value, + int value_length, + const XML_Char *UNUSED_P(base), + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + + if (value) { + ftprintf(fp, T("'), fp); + characterData(fp, value, value_length); + fputts(T("\n"), fp); + } + else if (notationName) { + ftprintf(fp, T("\n"), fp); + } + else { + ftprintf(fp, T("\n"), fp); + } +} + +static void XMLCALL +metaStartNamespaceDecl(void *userData, + const XML_Char *prefix, + const XML_Char *uri) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + fputts(T("\n"), fp); + } + else + fputts(T("/>\n"), fp); +} + +static void XMLCALL +metaEndNamespaceDecl(void *userData, const XML_Char *prefix) +{ + XML_Parser parser = (XML_Parser) userData; + FILE *fp = (FILE *)XML_GetUserData(parser); + if (!prefix) + fputts(T("\n"), fp); + else + ftprintf(fp, T("\n"), prefix); +} + +static int XMLCALL +unknownEncodingConvert(void *data, const char *p) +{ + return codepageConvert(*(int *)data, p); +} + +static int XMLCALL +unknownEncoding(void *UNUSED_P(userData), const XML_Char *name, XML_Encoding *info) +{ + int cp; + static const XML_Char prefixL[] = T("windows-"); + static const XML_Char prefixU[] = T("WINDOWS-"); + int i; + + for (i = 0; prefixU[i]; i++) + if (name[i] != prefixU[i] && name[i] != prefixL[i]) + return 0; + + cp = 0; + for (; name[i]; i++) { + static const XML_Char digits[] = T("0123456789"); + const XML_Char *s = tcschr(digits, name[i]); + if (!s) + return 0; + cp *= 10; + cp += (int)(s - digits); + if (cp >= 0x10000) + return 0; + } + if (!codepageMap(cp, info->map)) + return 0; + info->convert = unknownEncodingConvert; + /* We could just cast the code page integer to a void *, + and avoid the use of release. */ + info->release = free; + info->data = malloc(sizeof(int)); + if (!info->data) + return 0; + *(int *)info->data = cp; + return 1; +} + +static int XMLCALL +notStandalone(void *UNUSED_P(userData)) +{ + return 0; +} + +static void +showVersion(XML_Char *prog) +{ + XML_Char *s = prog; + XML_Char ch; + const XML_Feature *features = XML_GetFeatureList(); + while ((ch = *s) != 0) { + if (ch == '/' +#if (defined(WIN32) || defined(__WATCOMC__)) + || ch == '\\' +#endif + ) + prog = s + 1; + ++s; + } + ftprintf(stdout, T("%s using %s\n"), prog, XML_ExpatVersion()); + if (features != NULL && features[0].feature != XML_FEATURE_END) { + int i = 1; + ftprintf(stdout, T("%s"), features[0].name); + if (features[0].value) + ftprintf(stdout, T("=%ld"), features[0].value); + while (features[i].feature != XML_FEATURE_END) { + ftprintf(stdout, T(", %s"), features[i].name); + if (features[i].value) + ftprintf(stdout, T("=%ld"), features[i].value); + ++i; + } + ftprintf(stdout, T("\n")); + } +} + +static void +usage(const XML_Char *prog, int rc) +{ + ftprintf(stderr, + T("usage: %s [-s] [-n] [-p] [-x] [-e encoding] [-w] [-d output-dir] [-c] [-m] [-r] [-t] [file ...]\n"), prog); + exit(rc); +} + +int +tmain(int argc, XML_Char **argv) +{ + int i, j; + const XML_Char *outputDir = NULL; + const XML_Char *encoding = NULL; + unsigned processFlags = XML_MAP_FILE; + int windowsCodePages = 0; + int outputType = 0; + int useNamespaces = 0; + int requireStandalone = 0; + enum XML_ParamEntityParsing paramEntityParsing = + XML_PARAM_ENTITY_PARSING_NEVER; + int useStdin = 0; + +#ifdef _MSC_VER + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF); +#endif + + i = 1; + j = 0; + while (i < argc) { + if (j == 0) { + if (argv[i][0] != T('-')) + break; + if (argv[i][1] == T('-') && argv[i][2] == T('\0')) { + i++; + break; + } + j++; + } + switch (argv[i][j]) { + case T('r'): + processFlags &= ~XML_MAP_FILE; + j++; + break; + case T('s'): + requireStandalone = 1; + j++; + break; + case T('n'): + useNamespaces = 1; + j++; + break; + case T('p'): + paramEntityParsing = XML_PARAM_ENTITY_PARSING_ALWAYS; + /* fall through */ + case T('x'): + processFlags |= XML_EXTERNAL_ENTITIES; + j++; + break; + case T('w'): + windowsCodePages = 1; + j++; + break; + case T('m'): + outputType = 'm'; + j++; + break; + case T('c'): + outputType = 'c'; + useNamespaces = 0; + j++; + break; + case T('t'): + outputType = 't'; + j++; + break; + case T('d'): + if (argv[i][j + 1] == T('\0')) { + if (++i == argc) + usage(argv[0], 2); + outputDir = argv[i]; + } + else + outputDir = argv[i] + j + 1; + i++; + j = 0; + break; + case T('e'): + if (argv[i][j + 1] == T('\0')) { + if (++i == argc) + usage(argv[0], 2); + encoding = argv[i]; + } + else + encoding = argv[i] + j + 1; + i++; + j = 0; + break; + case T('h'): + usage(argv[0], 0); + return 0; + case T('v'): + showVersion(argv[0]); + return 0; + case T('\0'): + if (j > 1) { + i++; + j = 0; + break; + } + /* fall through */ + default: + usage(argv[0], 2); + } + } + if (i == argc) { + useStdin = 1; + processFlags &= ~XML_MAP_FILE; + i--; + } + for (; i < argc; i++) { + FILE *fp = 0; + XML_Char *outName = 0; + int result; + XML_Parser parser; + if (useNamespaces) + parser = XML_ParserCreateNS(encoding, NSSEP); + else + parser = XML_ParserCreate(encoding); + + if (! parser) { + tperror("Could not instantiate parser"); + exit(1); + } + + if (requireStandalone) + XML_SetNotStandaloneHandler(parser, notStandalone); + XML_SetParamEntityParsing(parser, paramEntityParsing); + if (outputType == 't') { + /* This is for doing timings; this gives a more realistic estimate of + the parsing time. */ + outputDir = 0; + XML_SetElementHandler(parser, nopStartElement, nopEndElement); + XML_SetCharacterDataHandler(parser, nopCharacterData); + XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction); + } + else if (outputDir) { + const XML_Char * delim = T("/"); + const XML_Char *file = useStdin ? T("STDIN") : argv[i]; + if (!useStdin) { + /* Jump after last (back)slash */ + const XML_Char * lastDelim = tcsrchr(file, delim[0]); + if (lastDelim) + file = lastDelim + 1; +#if (defined(WIN32) || defined(__WATCOMC__)) + else { + const XML_Char * winDelim = T("\\"); + lastDelim = tcsrchr(file, winDelim[0]); + if (lastDelim) { + file = lastDelim + 1; + delim = winDelim; + } + } +#endif + } + outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2) + * sizeof(XML_Char)); + tcscpy(outName, outputDir); + tcscat(outName, delim); + tcscat(outName, file); + fp = tfopen(outName, T("wb")); + if (!fp) { + tperror(outName); + exit(1); + } + setvbuf(fp, NULL, _IOFBF, 16384); +#ifdef XML_UNICODE + puttc(0xFEFF, fp); +#endif + XML_SetUserData(parser, fp); + switch (outputType) { + case 'm': + XML_UseParserAsHandlerArg(parser); + XML_SetElementHandler(parser, metaStartElement, metaEndElement); + XML_SetProcessingInstructionHandler(parser, metaProcessingInstruction); + XML_SetCommentHandler(parser, metaComment); + XML_SetCdataSectionHandler(parser, metaStartCdataSection, + metaEndCdataSection); + XML_SetCharacterDataHandler(parser, metaCharacterData); + XML_SetDoctypeDeclHandler(parser, metaStartDoctypeDecl, + metaEndDoctypeDecl); + XML_SetEntityDeclHandler(parser, metaEntityDecl); + XML_SetNotationDeclHandler(parser, metaNotationDecl); + XML_SetNamespaceDeclHandler(parser, metaStartNamespaceDecl, + metaEndNamespaceDecl); + metaStartDocument(parser); + break; + case 'c': + XML_UseParserAsHandlerArg(parser); + XML_SetDefaultHandler(parser, markup); + XML_SetElementHandler(parser, defaultStartElement, defaultEndElement); + XML_SetCharacterDataHandler(parser, defaultCharacterData); + XML_SetProcessingInstructionHandler(parser, + defaultProcessingInstruction); + break; + default: + if (useNamespaces) + XML_SetElementHandler(parser, startElementNS, endElementNS); + else + XML_SetElementHandler(parser, startElement, endElement); + XML_SetCharacterDataHandler(parser, characterData); +#ifndef W3C14N + XML_SetProcessingInstructionHandler(parser, processingInstruction); +#endif /* not W3C14N */ + break; + } + } + if (windowsCodePages) + XML_SetUnknownEncodingHandler(parser, unknownEncoding, 0); + result = XML_ProcessFile(parser, useStdin ? NULL : argv[i], processFlags); + if (outputDir) { + if (outputType == 'm') + metaEndDocument(parser); + fclose(fp); + if (!result) { + tremove(outName); + exit(2); + } + free(outName); + } + XML_ParserFree(parser); + } + return 0; +} diff --git a/vendor/libexpat/xmlwf/xmlwf.dsp b/vendor/libexpat/xmlwf/xmlwf.dsp new file mode 100644 index 0000000..4662b4f --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlwf.dsp @@ -0,0 +1,139 @@ +# Microsoft Developer Studio Project File - Name="xmlwf" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlwf - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlwf.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlwf.mak" CFG="xmlwf - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlwf - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlwf - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlwf - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir ".\Release" +# PROP BASE Intermediate_Dir ".\Release" +# PROP BASE Target_Dir "." +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\win32\bin\Release" +# PROP Intermediate_Dir "..\win32\tmp\Release-xmlwf" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "." +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\lib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /machine:I386 +# ADD LINK32 libexpat.lib setargv.obj /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"..\win32\bin\Release" /out:"..\win32\bin\Release\xmlwf.exe" +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "xmlwf - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir ".\Debug" +# PROP BASE Intermediate_Dir ".\Debug" +# PROP BASE Target_Dir "." +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\win32\bin\Debug" +# PROP Intermediate_Dir "..\win32\tmp\Debug-xmlwf" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "." +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c +# ADD CPP /nologo /MTd /W3 /GX /ZI /Od /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /c +# SUBTRACT CPP /Fr /YX +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:console /debug /machine:I386 +# ADD LINK32 libexpat.lib setargv.obj /nologo /subsystem:console /pdb:none /debug /machine:I386 /libpath:"..\win32\bin\Debug" /out:"..\win32\bin\Debug\xmlwf.exe" + +!ENDIF + +# Begin Target + +# Name "xmlwf - Win32 Release" +# Name "xmlwf - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\codepage.c +# End Source File +# Begin Source File + +SOURCE=.\readfilemap.c +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\unixfilemap.c +# PROP Exclude_From_Build 1 +# End Source File +# Begin Source File + +SOURCE=.\win32filemap.c +# End Source File +# Begin Source File + +SOURCE=.\xmlfile.c +# End Source File +# Begin Source File + +SOURCE=.\xmlwf.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" +# Begin Source File + +SOURCE=.\codepage.h +# End Source File +# Begin Source File + +SOURCE=.\xmlfile.h +# End Source File +# Begin Source File + +SOURCE=.\xmltchar.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/vendor/libexpat/xmlwf/xmlwin32url.cxx b/vendor/libexpat/xmlwf/xmlwin32url.cxx new file mode 100644 index 0000000..bbfcce2 --- /dev/null +++ b/vendor/libexpat/xmlwf/xmlwin32url.cxx @@ -0,0 +1,395 @@ +#include "expat.h" +#ifdef XML_UNICODE +#define UNICODE +#endif +#include +#include +#include +#include +#include +#include "xmlurl.h" +#include "xmlmime.h" + +static int +processURL(XML_Parser parser, IMoniker *baseMoniker, const XML_Char *url); + +typedef void (*StopHandler)(void *, HRESULT); + +class Callback : public IBindStatusCallback { +public: + // IUnknown methods + STDMETHODIMP QueryInterface(REFIID,void **); + STDMETHODIMP_(ULONG) AddRef(); + STDMETHODIMP_(ULONG) Release(); + // IBindStatusCallback methods + STDMETHODIMP OnStartBinding(DWORD, IBinding *); + STDMETHODIMP GetPriority(LONG *); + STDMETHODIMP OnLowResource(DWORD); + STDMETHODIMP OnProgress(ULONG, ULONG, ULONG, LPCWSTR); + STDMETHODIMP OnStopBinding(HRESULT, LPCWSTR); + STDMETHODIMP GetBindInfo(DWORD *, BINDINFO *); + STDMETHODIMP OnDataAvailable(DWORD, DWORD, FORMATETC *, STGMEDIUM *); + STDMETHODIMP OnObjectAvailable(REFIID, IUnknown *); + Callback(XML_Parser, IMoniker *, StopHandler, void *); + ~Callback(); + int externalEntityRef(const XML_Char *context, + const XML_Char *systemId, const XML_Char *publicId); +private: + XML_Parser parser_; + IMoniker *baseMoniker_; + DWORD totalRead_; + ULONG ref_; + IBinding *pBinding_; + StopHandler stopHandler_; + void *stopArg_; +}; + +STDMETHODIMP_(ULONG) +Callback::AddRef() +{ + return ref_++; +} + +STDMETHODIMP_(ULONG) +Callback::Release() +{ + if (--ref_ == 0) { + delete this; + return 0; + } + return ref_; +} + +STDMETHODIMP +Callback::QueryInterface(REFIID riid, void** ppv) +{ + if (IsEqualGUID(riid, IID_IUnknown)) + *ppv = (IUnknown *)this; + else if (IsEqualGUID(riid, IID_IBindStatusCallback)) + *ppv = (IBindStatusCallback *)this; + else + return E_NOINTERFACE; + ((LPUNKNOWN)*ppv)->AddRef(); + return S_OK; +} + +STDMETHODIMP +Callback::OnStartBinding(DWORD, IBinding* pBinding) +{ + pBinding_ = pBinding; + pBinding->AddRef(); + return S_OK; +} + +STDMETHODIMP +Callback::GetPriority(LONG *) +{ + return E_NOTIMPL; +} + +STDMETHODIMP +Callback::OnLowResource(DWORD) +{ + return E_NOTIMPL; +} + +STDMETHODIMP +Callback::OnProgress(ULONG, ULONG, ULONG, LPCWSTR) +{ + return S_OK; +} + +STDMETHODIMP +Callback::OnStopBinding(HRESULT hr, LPCWSTR szError) +{ + if (pBinding_) { + pBinding_->Release(); + pBinding_ = 0; + } + if (baseMoniker_) { + baseMoniker_->Release(); + baseMoniker_ = 0; + } + stopHandler_(stopArg_, hr); + return S_OK; +} + +STDMETHODIMP +Callback::GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindinfo) +{ + *pgrfBINDF = BINDF_ASYNCHRONOUS; + return S_OK; +} + +static void +reportError(XML_Parser parser) +{ + int code = XML_GetErrorCode(parser); + const XML_Char *message = XML_ErrorString(code); + if (message) + _ftprintf(stderr, _T("%s:%d:%ld: %s\n"), + XML_GetBase(parser), + XML_GetErrorLineNumber(parser), + XML_GetErrorColumnNumber(parser), + message); + else + _ftprintf(stderr, _T("%s: (unknown message %d)\n"), + XML_GetBase(parser), code); +} + +STDMETHODIMP +Callback::OnDataAvailable(DWORD grfBSCF, + DWORD dwSize, + FORMATETC *pfmtetc, + STGMEDIUM* pstgmed) +{ + if (grfBSCF & BSCF_FIRSTDATANOTIFICATION) { + IWinInetHttpInfo *hp; + HRESULT hr = pBinding_->QueryInterface(IID_IWinInetHttpInfo, + (void **)&hp); + if (SUCCEEDED(hr)) { + char contentType[1024]; + DWORD bufSize = sizeof(contentType); + DWORD flags = 0; + contentType[0] = 0; + hr = hp->QueryInfo(HTTP_QUERY_CONTENT_TYPE, contentType, + &bufSize, 0, NULL); + if (SUCCEEDED(hr)) { + char charset[CHARSET_MAX]; + getXMLCharset(contentType, charset); + if (charset[0]) { +#ifdef XML_UNICODE + XML_Char wcharset[CHARSET_MAX]; + XML_Char *p1 = wcharset; + const char *p2 = charset; + while ((*p1++ = (unsigned char)*p2++) != 0) + ; + XML_SetEncoding(parser_, wcharset); +#else + XML_SetEncoding(parser_, charset); +#endif + } + } + hp->Release(); + } + } + if (!parser_) + return E_ABORT; + if (pstgmed->tymed == TYMED_ISTREAM) { + while (totalRead_ < dwSize) { +#define READ_MAX (64*1024) + DWORD nToRead = dwSize - totalRead_; + if (nToRead > READ_MAX) + nToRead = READ_MAX; + void *buf = XML_GetBuffer(parser_, nToRead); + if (!buf) { + _ftprintf(stderr, _T("out of memory\n")); + return E_ABORT; + } + DWORD nRead; + HRESULT hr = pstgmed->pstm->Read(buf, nToRead, &nRead); + if (SUCCEEDED(hr)) { + totalRead_ += nRead; + if (!XML_ParseBuffer(parser_, + nRead, + (grfBSCF & BSCF_LASTDATANOTIFICATION) != 0 + && totalRead_ == dwSize)) { + reportError(parser_); + return E_ABORT; + } + } + } + } + return S_OK; +} + +STDMETHODIMP +Callback::OnObjectAvailable(REFIID, IUnknown *) +{ + return S_OK; +} + +int +Callback::externalEntityRef(const XML_Char *context, + const XML_Char *systemId, + const XML_Char *publicId) +{ + XML_Parser entParser = XML_ExternalEntityParserCreate(parser_, context, 0); + XML_SetBase(entParser, systemId); + int ret = processURL(entParser, baseMoniker_, systemId); + XML_ParserFree(entParser); + return ret; +} + +Callback::Callback(XML_Parser parser, IMoniker *baseMoniker, + StopHandler stopHandler, void *stopArg) +: parser_(parser), + baseMoniker_(baseMoniker), + ref_(0), + pBinding_(0), + totalRead_(0), + stopHandler_(stopHandler), + stopArg_(stopArg) +{ + if (baseMoniker_) + baseMoniker_->AddRef(); +} + +Callback::~Callback() +{ + if (pBinding_) + pBinding_->Release(); + if (baseMoniker_) + baseMoniker_->Release(); +} + +static int +externalEntityRef(void *arg, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId) +{ + return ((Callback *)arg)->externalEntityRef(context, systemId, publicId); +} + + +static HRESULT +openStream(XML_Parser parser, + IMoniker *baseMoniker, + const XML_Char *uri, + StopHandler stopHandler, void *stopArg) +{ + if (!XML_SetBase(parser, uri)) + return E_OUTOFMEMORY; + HRESULT hr; + IMoniker *m; +#ifdef XML_UNICODE + hr = CreateURLMoniker(0, uri, &m); +#else + LPWSTR uriw = new wchar_t[strlen(uri) + 1]; + for (int i = 0;; i++) { + uriw[i] = uri[i]; + if (uriw[i] == 0) + break; + } + hr = CreateURLMoniker(baseMoniker, uriw, &m); + delete [] uriw; +#endif + if (FAILED(hr)) + return hr; + IBindStatusCallback *cb = new Callback(parser, m, stopHandler, stopArg); + XML_SetExternalEntityRefHandler(parser, externalEntityRef); + XML_SetExternalEntityRefHandlerArg(parser, cb); + cb->AddRef(); + IBindCtx *b; + if (FAILED(hr = CreateAsyncBindCtx(0, cb, 0, &b))) { + cb->Release(); + m->Release(); + return hr; + } + cb->Release(); + IStream *pStream; + hr = m->BindToStorage(b, 0, IID_IStream, (void **)&pStream); + if (SUCCEEDED(hr)) { + if (pStream) + pStream->Release(); + } + if (hr == MK_S_ASYNCHRONOUS) + hr = S_OK; + m->Release(); + b->Release(); + return hr; +} + +struct QuitInfo { + const XML_Char *url; + HRESULT hr; + int stop; +}; + +static void +winPerror(const XML_Char *url, HRESULT hr) +{ + LPVOID buf; + if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_FROM_HMODULE, + GetModuleHandleA("urlmon.dll"), + hr, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &buf, + 0, + NULL) + || FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_FROM_SYSTEM, + 0, + hr, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &buf, + 0, + NULL)) { + /* The system error messages seem to end with a newline. */ + _ftprintf(stderr, _T("%s: %s"), url, buf); + fflush(stderr); + LocalFree(buf); + } + else + _ftprintf(stderr, _T("%s: error %x\n"), url, hr); +} + +static void +threadQuit(void *p, HRESULT hr) +{ + QuitInfo *qi = (QuitInfo *)p; + qi->hr = hr; + qi->stop = 1; +} + +extern "C" +int +XML_URLInit(void) +{ + return SUCCEEDED(CoInitialize(0)); +} + +extern "C" +void +XML_URLUninit(void) +{ + CoUninitialize(); +} + +static int +processURL(XML_Parser parser, IMoniker *baseMoniker, + const XML_Char *url) +{ + QuitInfo qi; + qi.stop = 0; + qi.url = url; + + XML_SetBase(parser, url); + HRESULT hr = openStream(parser, baseMoniker, url, threadQuit, &qi); + if (FAILED(hr)) { + winPerror(url, hr); + return 0; + } + else if (FAILED(qi.hr)) { + winPerror(url, qi.hr); + return 0; + } + MSG msg; + while (!qi.stop && GetMessage (&msg, NULL, 0, 0)) { + TranslateMessage (&msg); + DispatchMessage (&msg); + } + return 1; +} + +extern "C" +int +XML_ProcessURL(XML_Parser parser, + const XML_Char *url, + unsigned flags) +{ + return processURL(parser, 0, url); +} From b9459474e41abfe019e0dedbfb6451ea6021b84f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Nogues?= Date: Fri, 23 Dec 2016 12:32:25 +0100 Subject: [PATCH 12/13] Compile on linux --- vendor/exiv2.gyp | 50 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/vendor/exiv2.gyp b/vendor/exiv2.gyp index 18d65a6..ca4bd90 100644 --- a/vendor/exiv2.gyp +++ b/vendor/exiv2.gyp @@ -24,18 +24,21 @@ "exiv2-0.25/xmpsdk/src/WXMPIterator.cpp", "exiv2-0.25/xmpsdk/src/WXMPUtils.cpp" ], - "conditions": [ [ "OS!='win'", {"libraries+":[ - "-L./build/Release/libexpat.a" - ]} ] ], "cflags": [ "-Wdeprecated-declarations" ], "cflags_cc": [ "-fexceptions", - "-funsigned-char" + "-funsigned-char", + "-DEXV_HAVE_STDINT_H=1" + ], + "conditions": [ + [ "OS!='win'", { + "libraries+":["-L./build/Release/libexpat.a"], + "cflags_cc+": ["-DEXV_HAVE_STDINT_H=1"] + } ], + [ "OS=='win'", {"cflags_cc+": ["-DEXV_HAVE_STDINT_H=0"]} ] ], - "conditions": [ [ "OS=='linux'", {"cflags_cc+": ["-DEXV_HAVE_STDINT_H=1"]} ] ], - "conditions": [ [ "OS=='win'", {"cflags_cc+": ["-DEXV_HAVE_STDINT_H=0"]} ] ], "dependencies": [ "libexpat/libexpat.gyp:expat" ] @@ -106,18 +109,35 @@ "exiv2-0.25/src/riffvideo.cpp", "exiv2-0.25/src/utilsvideo.cpp" ], - "cflags": ["-DEXV_HAVE_UNISTD_H=0"], "cflags_cc": [ "-fexceptions", - "-frtti", - "-DEXV_HAVE_UNISTD_H=0", - "-DEXV_MSC_VER=2000" + "-frtti" + ], + "conditions": [ + [ "OS=='win'", { + "libraries+":[ + "-L./build/Release/XMPSDK.a", + "-L./build/Release/libexpat.a" + ], + "cflags_cc+": ["-DEXV_HAVE_STDINT_H=0", "-DEXV_MSC_VER=2000"] + } ], + [ "OS=='linux'", { + "libraries+":["-Wl,-rpath,./build/Release/XMPSDK.a"], + "cflags_cc+": [ + "-DEXV_HAVE_STDINT_H=1", + "-DEXV_LOCALEDIR=\"/usr/local/share/locale\"" + ] + }] ], - "conditions": [ [ "OS=='linux'", {"libraries+":["-Wl,-rpath,./build/Release/XMPSDK.a"]} ] ], - "conditions": [ [ "OS=='win'", {"libraries+":[ - "-L./build/Release/XMPSDK.a", - "-L./build/Release/libexpat.a" - ]} ] ], + #"conditions": [ [ "OS=='linux'", {"cflags_cc+": [ + # "-DEXV_HAVE_STDINT_H=1", + # "-DEXV_LOCALEDIR=\"/usr/local/share/locale\"" + #]} ] ], + #"conditions": [ [ "OS=='linux'", {"libraries+":["-Wl,-rpath,./build/Release/XMPSDK.a"]} ] ], + #"conditions": [ [ "OS=='win'", {"libraries+":[ + # "-L./build/Release/XMPSDK.a", + # "-L./build/Release/libexpat.a" + #]} ] ], "dependencies": [ "XMPSDK" ] From d52251e2359929238ae638680b5dcc8907b10822 Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 2 Mar 2017 13:29:27 +0100 Subject: [PATCH 13/13] Added osx support --- binding.gyp | 11 ++++++++--- vendor/exiv2.gyp | 41 ++++++++++++++++++++++++++++------------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/binding.gyp b/binding.gyp index 3960b95..5c29d00 100644 --- a/binding.gyp +++ b/binding.gyp @@ -11,11 +11,16 @@ ], "libraries": [ "-Wl,-rpath,./build/Release/exiv2.a" ], 'xcode_settings': { - 'MACOSX_DEPLOYMENT_TARGET': '10.7', + 'MACOSX_DEPLOYMENT_TARGET': '10.12', 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', - 'OTHER_CPLUSPLUSFLAGS': ['-stdlib=libc++','-fcxx-exceptions', '-frtti'], + 'OTHER_CPLUSPLUSFLAGS': [ + '-stdlib=libc++', + '-fcxx-exceptions', + '-frtti', + '-fexceptions' + ], }, - "cflags": [ + "cflags": [ "-Wdeprecated-declarations" ], 'cflags_cc': [ diff --git a/vendor/exiv2.gyp b/vendor/exiv2.gyp index ca4bd90..2e85271 100644 --- a/vendor/exiv2.gyp +++ b/vendor/exiv2.gyp @@ -24,7 +24,7 @@ "exiv2-0.25/xmpsdk/src/WXMPIterator.cpp", "exiv2-0.25/xmpsdk/src/WXMPUtils.cpp" ], - "cflags": [ + "cflags": [ "-Wdeprecated-declarations" ], "cflags_cc": [ @@ -32,13 +32,25 @@ "-funsigned-char", "-DEXV_HAVE_STDINT_H=1" ], - "conditions": [ + "conditions": [ [ "OS!='win'", { "libraries+":["-L./build/Release/libexpat.a"], "cflags_cc+": ["-DEXV_HAVE_STDINT_H=1"] } ], [ "OS=='win'", {"cflags_cc+": ["-DEXV_HAVE_STDINT_H=0"]} ] ], + 'xcode_settings': { + 'MACOSX_DEPLOYMENT_TARGET': '10.12', + 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', + 'OTHER_CPLUSPLUSFLAGS': [ + '-stdlib=libc++', + '-fcxx-exceptions', + '-frtti', + '-fexceptions', + "-funsigned-char", + "-DEXV_HAVE_STDINT_H=1" + ], + }, "dependencies": [ "libexpat/libexpat.gyp:expat" ] @@ -49,7 +61,7 @@ "include_dirs": [ 'exiv2-0.25/xmpsdk/include/', 'exiv2-0.25/include/exiv2', - 'exiv2-0.25/config' + 'exiv2-0.25/config' ], "sources": [ "exiv2-0.25/src/basicio.cpp", @@ -113,7 +125,7 @@ "-fexceptions", "-frtti" ], - "conditions": [ + "conditions": [ [ "OS=='win'", { "libraries+":[ "-L./build/Release/XMPSDK.a", @@ -129,15 +141,18 @@ ] }] ], - #"conditions": [ [ "OS=='linux'", {"cflags_cc+": [ - # "-DEXV_HAVE_STDINT_H=1", - # "-DEXV_LOCALEDIR=\"/usr/local/share/locale\"" - #]} ] ], - #"conditions": [ [ "OS=='linux'", {"libraries+":["-Wl,-rpath,./build/Release/XMPSDK.a"]} ] ], - #"conditions": [ [ "OS=='win'", {"libraries+":[ - # "-L./build/Release/XMPSDK.a", - # "-L./build/Release/libexpat.a" - #]} ] ], + 'xcode_settings': { + 'MACOSX_DEPLOYMENT_TARGET': '10.12', + 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES', + 'OTHER_CPLUSPLUSFLAGS': [ + '-stdlib=libc++', + '-fcxx-exceptions', + '-frtti', + '-fexceptions', + "-DEXV_HAVE_STDINT_H=1", + "-DEXV_LOCALEDIR=\"/usr/share/locale\"" + ], + }, "dependencies": [ "XMPSDK" ]